vi编辑器常用操作,vi编辑器列操作
Vim编辑器是一个高度可定制的编辑器。它将为我们提供相当多的选择。在这一节中,我们将讨论如何使用这些选项定制编辑器的外观和行为。
Vim editor有许多方法来设置选项。一般来说,要设置一个选项,我们可以使用以下命令:
:设置选项=值
这种设置方法在大多数情况下都很有效。真值选项的设置可通过以下命令完成:
:设置选项
要重置,我们可以使用以下命令:
:设置按钮
如果我们想检查一个选项的值,我们可以使用这样的命令:
:设置选项?
如果我们想将一个选项设置为其默认值,可以使用以下命令:
:设置选项
布尔选项:
我们可以对布尔选项执行以下操作:
:设置选项打开选项
:设置nooption关闭选项
:设置选项!转换选项
:设置发票选项转换选项
:set option将选项设置为默认值。
例如:
:设置列表
:设置列表?
目录
:设置nolist
:设置列表?
诺利斯特
:设置列表!
:设置列表?
目录
:设置列表
:设置列表?
诺利斯特
数字选项:
我们可以对数字选项执行以下一些操作:
:set option=value为选项添加一个值。
:set option -=value从选项中减去一个值。
:设置选项^=值将该值乘以选项。
:set option将选项设置为默认值。
例如:
:设置shiftwidth=4
:设置shiftwidth=2
:设置shiftwidth?
shiftwidth=6
:设置shiftwidth-=3
:设置shiftwidth
shiftwidth=3
:设置^=2的移动宽度
:设置shiftwidth
shiftwidth=6
:设置shiftwidth
:设置shiftwidth
shiftwidth=8
与字符串相关的命令:
我们可以对字符串选项执行以下操作:
:set option=value将值添加到选项的末尾
:set option -=value从选项中删除值或字符。
:设置选项^=值在选项开头添加值。
例如:
:设置cinwords=test
:设置cinwords?
cinwords=测试
:设置cinwords=end
:设置cinwords?
cinwords=测试,结束
:设置CIN words-=测试
:设置cinwords?
cinwords=end
:设置cinwords^=start
:设置cinwords?
cinwords=开始,结束
以下命令将设置一个布尔选项(如list或nolist),但它将显示其他类型选项的值:set option
但是,用这样的命令显示选项的值并不是一个好方法,因为如果我们不小心使用这种方法,就会导致错误。更好的方法是使用以下命令显示选项的值:
:设置选项?
相对于以下命令形式:
:设置选项=值
查看其值的方法是:
:设置选项:值
其他:设置参数:
以下命令打印出与默认值不同的所有选项:
:设置
以下命令打印出所有选项:
:设置全部
以下命令打印出终端控制代码:
:设置termcap
最后,如果我们想将所有选项重置为默认值,我们可以使用以下命令:
:设置全部
我们可以把几个放在一行:集合运算。例如,要设置三个不同的选项,我们可以使用以下命令:
:设置列表shiftwidth=4 incsearch
自动设置文件中的选项:
我们可以将Vim设置放在我们的文件中。当我们启动Vim编辑一个文件时,他将读取该文件的前几个位置,并查找以下格式的行:
vim:设置选项-命令选项-命令选项-命令.
这样一条线被称为模型线。
例如,在程序中,模式行如下:
/* vim:set shift width=4 auto indent:*/
相对格式如下:
Vim:选项命令:选项命令:
选项modeline可以打开或关闭此行为。选项modeline可以控制Vim在查找设置命令时读取前几行。
例如,如果我们设置以下选项,Vim不会寻找模式线:
:设置诺模线
如果我们设置以下选项,Vim将在每个文件的开头或结尾查找modeline选项指定的行数:
:设置模型线
例如,也许我们都会在Vim的帮助文件末尾看到下面几行:
vim:tw=79:ts=8:sw=8:
在此设置中,tw(textwidth)选项设置为78,78,ts(tabstop)选项设置为8,8,sw(shiftwidth)选项设置为8。这个设置使我们的帮助文件看起来更好。通过使用模式行,帮助文件的制造商将确保这些文本可以被正确格式化,而不管我们在其他文件中使用的本地设置。vimrc文件:
如果我们想对每个目录进行不同的设置,一种方法是将。Vimrc或者。每个目录中的gvimrc文件。然而,这还不够,因为默认的vim会忽略这些文件。
为了让Vim读取这些文件,我们必须执行以下命令:
:设置exrc
但是,这种设置存在安全问题。毕竟,一些不成功的命令很容易被添加到这些文件中,即使我们正在其他目录中编辑,这个设置也会影响我们。
为了避免安全问题,我们可以使用以下命令来设置安全选项:
:设置安全
此选项将阻止在当前目录的初始文件中执行:autocommand,write,shell命令。
自定义键盘的使用:
大多数运行在Windows平台上的程序都会使用Alt键来选择菜单内容。然后Vim希望使用所有的键来完成我们的命令。winaltkeys选项可以控制Alt键的使用。
例如,如果我们执行下面的命令,所有的Alt键都可以作为我们命令的一部分,通过:map命令:
:设置winaltkeys=否
执行Alt-F不会选择文件菜单,而是执行映射的Alt-F命令。这可以映射如下:
:映射M-f:写入
这里需要知道的是,Alt在Vim中会被称为M-Meta。
如果我们执行以下命令,所有Alt键盘将选择菜单内容,而不是执行映射命令:
:设置winaltkeys=是
第三个选项是“是”和“否”的组合:
:设置winaltkeys=menu
在此模式下,Alt键可用于选择菜单或地图命令。所以Alt-F可以选择文件菜单,我们可以用Alt-X映射命令.
当我们使用带有字符界面的Vim时,我们可以有两个选项来控制如何在键盘上读取。以下选项将告诉Vim通过控制台直接读取:
:设置conskey
如果我们希望Vim编辑器从标准输入中读取脚本文件,不要使用这个选项。
以下选项告诉Vim使用BIOS来读取键盘:
:设置bioskey
在这里,我们还想指出,如果我们想使用重定向脚本,我们不应该设置这个选项。通过指定Vim使用BIOS,我们将获得更快的CTRL-C响应和中断。
自定义键盘映射:
的大多数Unix功能键会发出以Esc开头的字符串。但是有一个问题,就是Esc键是用来结束插入模式的。那么我们如何在插入模式下处理功能键呢?
Vim的解决方法之一是按Esc后等待一段时间,看看是否会有其他字符输入。如果是,Vim将知道功能键已被按下,并将执行相应的操作。要打开此功能,我们可以执行以下命令:
:设置esckeys
但是如何处理其他键的顺序呢?我们可以通过以下两个选项来控制该区域:
:设置超时
:设置ttimeout
这些设置的作用如下:
超时超时结果
not time out not time out没有超时。
超时不适用所有代码键(F1.)和:map宏超时。
Notimeout ttimeout只有代码键超时。
选项timeoutlen确定在按Esc键以确定是否有任何输入后要等待多长时间。默认值为1秒:
:设置timeoutlen=1000
通常,timeoutlen选项控制功能键和键盘映射的等待时间。如果我们想要不同的键盘映射时间,我们可以使用ttimeout选项:
:设置ttimeout=500
这两个选项是告诉Vim在按下Esc后等待1/2秒,以决定我们是否将输入功能键,或者等待1秒,以决定是否有其他键盘映射输入。
确认:
一般情况下,我们会遇到一些Vim认为有问题的事情,比如从修改过的缓冲区退出,命令失败。如果我们设置了确认选项,Vim将在类似的情况下显示一个确认对话框:
:设置确认
这样,当我们试图在修改后的缓冲区中执行quit命令时,会显示一个对话框供我们确认。
自定义消息:
Vim通常使用屏幕的下部来显示消息。有时这样的消息会超过一行,我们会得到一个类似于按Enter键继续的提示。为了避免这样的提示,我们可以通过设置cmdheight选项来增加消息的行数。例如,我们可以使用以下命令将消息空间设置为3:
:设置cmdheight=3
显示状态:
当我们设置showmode选项时,Vim编辑器将在屏幕底部显示我们的当前状态。要将其设置为这种模式,我们可以使用以下命令:
:设置显示模式
显示一些命令:
如果我们设置了showcmd选项,当我们输入命令时,一些命令将显示在屏幕的下部。例如,我们执行以下命令:
:设置showcmd
现在我们输入fx命令来寻找x,当我们输入F时,F会显示在底部。
这对我们输入复杂的数据特别有用,即使显示出来。
通常,当我们执行:shell命令时,Vim会警告我们文件已经被修改。如果我们想关闭这个选项,我们可以执行下面的命令:
:设置nowarn
当Vim捕捉到一个错误时,它只是显示一条错误消息。如果我们想打开声音警告,我们可以执行以下命令:
:设置错误铃声
但是有时候这种设定会影响到我们其他同事。在这种情况下,我们可以设置visualbell选项。这样,当我们输入错误时,屏幕会闪烁,然后返回正常状态。要设置此选项,我们可以执行以下命令:
:设置visualbell
我们还可以自定义状态行。我们可以使用以下选项来定义我们的状态行:
:设置状态行=格式
%用于表示特殊区域。例如,%f告诉Vim在状态行中包含文件名。例如,以下命令:
:set status line=The/file/is// % f/
这时,国家行为:
该文件为“sample.txt”
我们可以指定内容的最大和最小宽度。例如,下面的命令告诉Vim editor文件应该至少有8个字符,最多19个字符。这些内容是右对齐的,如果我们希望它们是左对齐的,我们可以在%后面加上-来显示。如果需要,我们可以在%后面加一个0。例如,如果我们想显示列数,并且需要从0开始,我们可以使用下面的命令:
:设置statusline=.10c
格式、类型和描述如下:
% (.%)定义一个项目组。如果该组中的所有内容都为空,则不会显示整组的内容。
%{n}*
%对其余行使用突出显示组Usern,直到您看到另一个%n*。格式%0*将使这些行正常突出显示。如果突出显示组User1带有下划线(:set statusline=File:/%1*%f%0),则状态行中显示的文件名将带有下划线。
%定义状态行过长时的换行位置。
%=
定义一行中间的某个地方。所有左手弦都放在线的左边,而右手弦放在线的右边。
%字符%
光标下字符的%B十六进制形式
完整路径的%F文件名
如果是帮助缓冲区,则为%H HLP
%L缓冲区中的行数。
%M如果缓冲区已被修改,它将显示为
%O以十六进制显示文件中的字符偏移量。
文件中光标前的%P%
%R RO如果缓冲区是只读的。
%V列数。如果与%c相同,则为空字符串。
如果窗口是预览窗口,则为%W PRV
%Y文件类型
A% (string)如果我们正在编辑多行文本,则该字行字符串为({current} of)
{arguments})”。比如:(18个中的5个)。如果命令行中只有一行,则该字符串为空。
%b (number)光标下字符的十进制表示。
%c(数字)列号
%f (string)命令行上指定的文件名。
%h(已标记)如果是帮助,则缓冲区为[帮助]
%l(数字)行号
%m(标记)如果缓冲区已被修改,则意味着
%n(数字)缓冲区代码
%o (number)光标前的字符数,包括光标下的字符。
%p(数字)文件中该行的百分比
%r (tag)如果缓冲区是只读的,则表示为RO。
%t(字符串)文件名(无路径)
%v(数字)虚列数
如果是预览窗口,则%w(已标记)显示为预览。
%y(标记)我们输入的文件类型。
%{expr%}表达式的结果
标签的内容将被特殊对待。多行标签,如RO和PRV,将自动用逗号分隔。例如,和帮助将由空格分隔。例如:
:设置状态行=%h%m%r
如果我们不喜欢默认的状态行,我们可以打开标尺选项:
:设置标尺
这可以使Vim显示类似于下面的状态行:
help.txt [help][RO] 1,1顶
在文件名和标签之后,将显示当前列号、虚拟列号和我们在文件中的位置。
如果我们想定义自己的标尺格式,我们可以使用下面的命令:
:设置rulerformat=string
这里的字符串是我们在statusline选项中使用的。
当我们删除或修改一些文本行时,如果这些行超过了报告中指定的行数,Vim编辑器会告诉我们这一点。因此,如果我们希望Vim报告所有的更改,我们可以使用下面的命令:
:设置报告=0
相反,如果我们不想让Vim告诉我们这些变化,我们可以将这个值设置为一个相当大的值。
我们可以使用以下命令设置帮助窗口的最小大小:
:set helpheight={height}
我们在此设置的值将在打开帮助窗口时使用。
我们还可以使用以下命令设置预览窗口的大小:
:set previewheight={height}
通常,list命令使用I表示制表符,使用$表示行尾。我们也可以定制这个形状。我们可以使用listchars选项来定义列表模式的工作方式。该命令的格式如下:
:set listchars=key:string,key:string
key:string的值可以按如下方式使用:
Eol:{char}定义位于行尾的字符。
tab:{ char1 } { char2 } tab值是char 1和char 2的组合。
Trail:{char}用于表示尾随空格的字符。
扩展:{char}用于指示一行结束和下一行连接的字符。
我们可以使用高亮选项来改变许多对象的高亮显示。该选项的格式如下:
:set highlight=key:group,[key:group].
我们可以使用以下关键值:
关键默认含义
8特殊键用于高亮显示:map命令列出的特殊键。
当~和@用于表示不在缓冲区中的内容时,可以使用@ NonText Vim。
Modemsg在屏幕底部显示模式信息。
statusline NC中除当前窗口以外的每个窗口的状态行。
在visual nos可视化模式下选择的文本。
W WildMenu显示为通配符的一部分。
当我们按Ctrl-D时显示的目录。
错误消息错误消息。
I IncSearch显示为增量搜索的一部分。
I搜索显示为搜索的一部分。
m更多消息-更多提示
Linenr命令打印的行号:number
r质疑按回车键的提示等问题。
当前窗口的状态行
标题输入信息的命令标题。
v在可视模式下可视选择的文本
警告消息。
我们也可以使用缩写字符:
倒档
I斜体
粗体
非常突出
u下划线
没有
-没有
因此,我们可以通过以下命令使用ErrorMsg组来突出显示错误消息:
:set highlight=e:ErrorMsg
或者我们可以使用下面的命令以反向、粗体、斜体的方式显示错误:
:设置高亮显示=ervb
如果我们设置了更多选项,当一个命令的显示将超过一个屏幕时,将显示更多提示。如果没有设置,屏幕将只滚动。默认值如下:
:设置更多
以下命令定义了Ctrl-A与Ctrl-X可以识别得数字格式.
:设置nrformats=八进制,十六进制
(注:小数总是可以识别的)
如果我们设置以下选项,Vim将尝试重新加载终端屏幕的内容。
:设置恢复屏幕
换句话说,在我们运行这个程序之后,他会试着让屏幕看起来和他运行之前一样。
Xterm可以让我们在按下鼠标左键拉动时选择文本。该文本可以粘贴到其他窗口中。然后一些由于兼容性的问题会让我们在粘贴文字的时候出现问题。为了避免这样的问题,我们可以使用下面的命令来设置粘贴模式:
:设置粘贴
但是,有时候我们希望是粘贴模式,有时候不是。pastetoggle选项可以让我们定义一个键在这两种模式之间切换。例如,如果我们使用F12键进行切换,我们可以使用下面的命令:
:设置pastetoggle=F12
关闭粘贴模式后,所有选项都将恢复到以前的值。
当我们在ex模式下输入命令时,可以实现文件名的自动补全。例如,如果我们想读入文件input.txt,我们可以输入以下命令:
:读取输入标签
Vim会尝试猜测我们想要的文件。如果我们的当前目录中只有文件input.txt,它将显示如下形式:
:读取input.txt
如果当前目录中有多个输入文件名,将显示第一个。如果我们再按Tab,会显示第二个匹配结果,然后显示第三个。
我们可以通过以下命令定义密钥来完成通配符:
:设置wildchar=character
如果我们在宏中使用文件名,我们需要设置wildcharm。这是我们在宏中完成文件名自动补全的字符。例如,以下命令:
:设置wildcharm=F12
:映射F11:读入F12
这样,当我们按F11时,我们将读入文件命令。
也许我们不想匹配备份文件或其他类似的文件。我们可以使用下面的命令告诉Vim哪些文件是这样的:
:设置wildignore=pattern,pattern
这样,匹配指定类型的文件将被忽略。例如,如果我们想忽略目录文件和备份文件,我们可以使用以下命令:
:设置wildignore=*。o,*。备份文件
后缀选项将列出文件名的一系列前缀,当遇到这样的前缀时,它们将获得较低的优先级。换句话说,如果一个文件名有这样的前缀,匹配时就会显示一个。
通常,文件名的完成代码不会显示匹配列表。如果我们设置以下选项:
:设置通配符菜单
当我们试图完成一个文件名,一个可能的文件菜单将显示在窗口的状态行。
我们可以通过箭头键来完成选择。在一行的末尾,右边有更多的选择。按下键使编辑器进入一个目录。按向上键返回到父目录,然后按Enter键选择项目。
我们可以通过使用wildmode选项自定义文件完成功能的行为。以下命令使Vim只完成第一次匹配:
:设置wildmode=
如果我们一直按wildchar键,只会显示第一个匹配的结果。
以下命令将使用他能找到的第一个文件来完成文件名:
:设置wildmode=full
以后如果一直按wildchar键,其他匹配的文件会依次显示。
以下命令匹配最长的子字符串:
:设置wildmode=longest
当我们执行以下命令时,我们将完成相同的功能,但只显示位于wildmenu中的那些文件:
:设置wildmode=longest:full
以下命令显示可能文件的列表:
:set wildmode=list
这种模式不会匹配完成。如果我们想要这种情况,我们可以使用以下选项:
:set wildmode=list:full
最后,为了完成最长的子串并列出文件,我们可以使用以下选项:
:set wildmode=list:longest
当我们设置startofline选项时,屏幕移动命令与一些光标移动命令相同,如H,M,L与g .
如果我们设置write选项,我们可以让Vim保存文件。如果我们不设置这个选项,我们只能查看文件。如果我们想让Vim成为一个安全的查看器,这个设置非常有用。
一般来说,当我们试图保存一个不应该保存的文件时,Vim会提示我们使用覆盖选项(!).我们可以告诉Vim总是认为输入了这个选项:
:设置writeany
但是这个设置并不是一个好的选择,因为它会覆盖我们现有的文件。
如果我们想为一个缓冲区设置最大内存,我们可以使用下面的命令:
:set maxmem={size}
这里这个大小以千字节为单位。
要为所有缓冲区定义内存容量,我们可以使用以下命令:
:set maxmemtot={size}
maxfuncdepth选项可以定义嵌套函数的最大数量。同样,maxmapdepth参数可以定义嵌套映射的最大数量。
下面我们来谈谈一些终端选项:
我们使用的终端名存储在$ term选项中。一般情况下,我们不需要设置这个选项,因为它是由我们使用的Shell和操作环境定义的。也许有时我们需要读入它来允许特定的终端宏。
对于慢速终端,我们可以使用lazyredraw选项。他可以阻止Vim在宏的中间重绘屏幕。默认设置如下:
:设置nolazyredraw
这个选项已经由当前的终端技术实现。如果我们设置了这个选项,我们将看不到正在执行的宏。
在UNIX系统中,有一个名为termcap的终端控制代码数据库。Vim编辑器也有它的基本数据库。如果我们打开ttybuiltin选项,我们将首先搜索这个内部数据库。
如果我们设置ttyfast选项,Vim将认为我们有一个更快的终端连接,并将更改输出以产生相对平滑的更新,但这个有更多的功能。如果我们有一个缓慢的连接,我们将重置此选项。
Ttymouse选项控制终端鼠标代码。当试图用终端控制代码做一些有趣的事情时,这个选项非常有趣。例如,如果我们想在受控输入模式下使用鼠标左键和鼠标右键,我们应该允许这些选项。
ttyscroll选项可以控制当屏幕需要更新时滚动多少行。如果我们在一个慢速终端上,我们可以将这个选项设置为一个较小的值。
在下一节中,我们将讨论一些在Vim中很少使用的选项。这些选项可以与Vi保持兼容,并支持一些以前的设备。
以下选项可以使用Vim尽可能像Vi一样运行:
:设置兼容
同样,下面的命令可以使我们与Vi的兼容性保持一致:
:set cpoptions={characters}
下面的命令可以使:substitute命令中的g和c选项的用法类似于UNIX Editor ed:
:设置edcompatible
以下选项可以设置lisp模式。这个选项可以设置许多选项,使Lisp编辑更容易。
:设置lisp
选项tildeop可以使~类似于一个操作符。这个和Vi兼容。如果关闭此选项,则~命令将选择单字符大小写。使用以下命令,~命令的格式是~motion:
:设置平铺显示
helpfile选项可以定义主帮助文件的位置。如果我们要重置:help命令从哪里获取信息?例如:
:set helpfile=/usr/SDO/vim/my _ help . txt
以下命令可以提供向后兼容性:
:设置古怪反转
以下命令将导致每个字符的输出延迟(以毫秒计):
:set writedelay={time}