一、基本操作参考《鸟哥的 Linux 私房菜》总结了下vim的常规操作。
当我们用vim打开一个文件是处于一般模式状态下,这时输入文字文件内容并没有响应,但也可以对文件内容进行一些操作,例如可以通过键入Ctrl+v进行块选择,然后进行一些复制,粘贴,删除等操作。下面是更详细的操作方法。
| 移动光标的方法 | 描述 |
|---|---|
| [Ctr]+[f] | 屏幕向下移动一页,相当于[Page Down]按键 (常用) |
| [Ctr]+[b] | 屏幕向上移动一页,相当于[PageUp]按键(常用) |
| 0或功能键[Home] | 这是数字“0”,移动到这一行的最前面字符处(常用) |
| $或功能键[End] | 移动到这一行的最后面字符处(常用) |
| G | 移动到这个文件的最后一行(常用) |
| nG | n为数字。移动到这个文件的第n行。例如20G则会移动到这个文件的第20行(可配合:set nu,设置行号;:set nonu,取消行号)(常用) |
| gg | 移动到这个文件的第一行,相当于1G(常用) |
| N[Enter] | n为数字。光标向下移动n行(常用) |
| 查找与替换 | 描述 |
|---|---|
| /word | 向下寻找一个名称为Word的字符串。例如要在文件内查找vbird这个字符串,就输/vbird即可(常用) |
| :n1,n2s/word1/word2/g | n1与n2为数字。在第n1与n2行之间寻找word1这个字符串,并将该字符串替换为word2。举例来说,在100到200行之间查找vbird 并替换为VBIRD则用":100,200s/vbird/VBIRD/g"(常用) |
| :1,$s/word1/word2/g | 从第一行到最后一行查找 word1字符串,并将该字符串替换为word2(常用) |
| :1,$s/word1/word2/gc | 从第一行到最后一行查找word1字符串,并将该字符串替换为word2。且在替换前显示提示字符给用户确认(/confirm/i)是否需要替换(常用) |
| 删除复制粘贴 | 描述 |
|---|---|
| x,X | 在一行字当中,x为向后删除一个字符(相当于[Del]按键),X为向前删除一个字符(相当于[Backspace])(常用) |
| dd | 删除光标所在的那一整行(常用) |
| ndd | n为数字。删除光标所在的向下n行,例如20dd则是删除20行(常用) |
| yy | 复制光标所在的那一行(常用) |
| nyy | n为数字。复制光标所在的向下n行,例如20yy则是复制20行(常用) |
| p,P | p为将已复制的数据在光标下一行粘贴,P则为粘贴在光标上一行。举例来说,我目前光标在第20行,且已经复制了10行数据。则按下p后,那10行数据会粘贴在原本的20行之后,也即由21行开始粘贴。但如果是按下P呢?那么原本的第20行会被变成30行(常用) |
| u | 复原前一个操作(常用) |
| [Ctrl]+r | 重做上一个操作(常用)这个u与[Ctrl]+r是很常用的命令。一个是复原,另一个则是重做一次,利用它们,你的编辑会更加得心应手 |
| . | 不要怀疑。这就是小数点。意思是重复前一个操作的意思。如果你想要重复删除、重复粘贴等操作,按下小数点“.”就好了(常用) |
| 块选择 | 描述 |
|---|---|
| v | 字符选择,会将光标经过的地方反白选择(常用) |
| V | 行选择,会将光标经过的行反白选择(常用) |
| [Ctr]+v | 块选择,可以用长方形的方式选择数据(常用) |
| y | 将反白的地方复制起来(常用) |
| d | 将反白的地方删除(常用) |
如果想对文件内容进行输入编辑,可以输入i,a,o,r进入编辑模式。
| 插入替换编辑模式 | 描述 |
|---|---|
| i,I | 进入插入模式(Insert mode):i为从目前光标所在处插入,I为在目前所在行的第一个非空格符处开始插入(常用) |
| a,A | 进入插入模式(Insert mode):a为从目前光标所在的下一个字符处开始插入,A为从光标所在行的最后一个字符处开始插入(常用) |
| o,O | 进入插入模式(Insert mode):这是英文字母o的大小写。o为在目前光标所在的下一行处插入新的一行;O为在目前光标所在处的上一行插入新的一行(常用) |
| r,R | 进入替换模式(Replace mode):r只会替换光标所在的那一个字符一次;R会一直替换光标所在的文字,直到按下[Esc]键为止(常用) |
| 多文件编辑 | 描述 |
|---|---|
| :n | 编辑下一个文件 |
| :N | 编辑上一个文件 |
| :files | 列出目前这个vim的打开的所有文件 |
1.通过“vim hosts /etc/hosts”命令来使用一个vim打开两个文件
2.在vim中先使用“:files”查看一下编辑的文件数据有什么。
3.在vim的环境下输入“n”会来到第二个编辑的文件,即/etc/hosts内。
vim支持将一个或多个文件切割成多个窗口展现,在命令行模式输入“:sp{filename}”即可。那个filename可有可无,如果想要在新窗口启动另一个文件,就加入文件名,否则仅输入:sp时,出现的则是同一个文件在两个窗口间。
| 多窗口 | 描述 |
|---|---|
| :sp[filename] | 打开一个新窗口,如果有加filename,表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容(同步显示) |
| [ctrl]+w+j | 按键的按法是:先按下[ctrl]不放,再按下w后放开所有的按键,然后再按下j(或向下箭头键),则光标可移动到下方的窗口 |
| [ctrl]+w+k | 同上,不过光标移动到上面的窗口 |
| [ctrl]+w+q | 其实就是:q结束离开。举例来说,如果我想要结束下方的窗口,那么利用[Ctr]+w+q移动到下方窗口后,按下:q即可离开。 |
基本操作参考下面的图片,注意分清楚命令是在什么模式下使用的。
| 环境设置 | 描述 |
|---|---|
| :setnu,:set nonu | 就是设置与取消行号 |
| :set hlsearch,:set nohlsearch | hlsearch就是high light search(高亮度查找)。这个就是设置是否将查找的字符串反白的设置值。默认值是hlsearch |
| :set autoindent | 表示是否自动缩排,autoindent 就是自动缩排 |
| set backup | 表示是否自动保存备份文件,一般是nobackup的,如果设置backup的话,那么当你改动任何一个文件时,则原文件会被另存成一个文件名为filename~的文件。举例来说,我们编辑hosts,设置:set backup,那么当改动hosts时,在同目录下,就会产生hosts~文件名的文件,记录原始的hosts文件内容 |
| :set ruler | 还记得我们提到的右下角的一些状态栏说明吗?这个ruler就是在显示或不显示该设置值的 |
| :set showmode | 这个则是是否要显示–INSERT–之类的字眼在左下角的状态栏 |
| :set backspace=(012) | 一般来说,如果我们按下i进入编辑模式后,可以利用退格键(backspace)来删除任意字符的。但是,某些distrtbution则不许如此。此时,我们就可以通过backspace来设置。当backspace为2时,就是可以删除任意值;为0或1时,仅可删除刚才输入的字符,而无法删除原本就已经存在的文字了 |
| :set all | 显示目前所有的环境参数设置值 |
| :set | 显示与系统默认值不同的设置参数,一般来说就是你有自行变动过的设置参数 |
| :syntax on,:syntax off | |
| :set bg=dark,:set bg=light | 可用以显示不同的颜色色调,默认是light。如果你经常发现批注的字体深蓝色实在很不容易看,那么这里可以设置为dark,会有不同的样式 |
总之,这些设置值很有用处的。不需要每次使用vim都要重新设置一次各个参数值,我们可以通过配置文件来直接规定我们习惯的vim操作环境。整体vim的设置值一般是放置在/etc/vimrc这个文件中,不过,不建议你修改它。你可以修改~/.vimrc这个文件(默认不存在,请你自行手动创建),将你所希望的设置值写入。举例来说,可以是这样的一个文件,如下图所示。
[root@www~]#vim~/.vimrc #"这个文件的双引号(")是批注 set hlsearch "高亮度反白 set backspace=2 "可随时用退格键删除 set autoindent "自动缩排 set ruler "可显示最后一行的状态 set showmode "左下角那一行的状态 set nu "可以在每一行的最前面显示行号 set bg=dark "显示不同的底色色调 syntax on "进行语法检验,颜色显示
在这个文件中,使用“set hlsearch”或“:set hlsearch”,即最前面有没有冒号“:”效果都是一样的。至于双引号则是批注符号,不要用错批注符号,否则每次使用vim时都会发生警告信息。创建好这个文件后,当你下次重新以vim编辑某个文件时,该文件的默认环境设置就是这么设置的。这样是否很方便你的操作?所以多利用vim的环境设置功能吧!



