前言
vi编辑器是所有Unix及Linux系统下标准的编辑器,对Unix及Linux系统的任何版本,vi编辑器是完全相同的。vim是vi的升级版,增加了一些功能,对vi命令是完全兼容的。在一些基本命令上两者应该是一样的。
在Linux的终端输入vi (vim)命令即可进入vi(vim)编辑器界面,如果没有安装vi,可以通过sudo apt-get install vim命令进行下载安装。
?工作模式
一般模式:刚进入vi/vim编辑器的时,状态就为一般模式。该模式下可切换vi的工作状态,可以进行粘贴,复制,删除,移动光标等操作。在其它两种状态下按【Esc】可切换回一般模式。
编辑模式:在一般模式状态下按【i,I,o,O,a,A,r,R】中任一字母即可进行编辑。
命令模式:在一般模式下按【: / ?】中任一即可,此状态下可进行保存,退出等操作。
vi命令的使用
一般模式
模式切换:
i,I,o,O,a,A,r,R | 切换到编辑模式 | : / ? | 切换到命令模式 |
移动光标:
h/j/k/i | 控制光标向左/下/上右移动一格 | 0 | 移动到文章开头 | G | 移动到文章最末 | nG | 光标移动到第n行 | n<space> | 光标后移n个字符 | n<Enter> | 光标下移n行 | Ctrl+f/d | 屏幕向下/上移动一页 | Ctrl+d/u | 屏幕向下、上移动半页 | $ 或功能键[End] | 移动到这一行的最后面字符处(常用) | H | 光标移动到这个屏幕的最上方那一行的第一个字符 | M | 光标移动到这个屏幕的中央那一行的第一个字符 | L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
删除:
x, X | 在一行字当中,x 为向后删除一个字符, X 为向前删除一个字符 | nx | n 为数字,连续向后删除 n 个字符。 | dd | 删除游标所在的那一整行(常用) | ndd | n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用) | d1G | 删除光标所在到第一行的所有数据 | dG | 删除光标所在到最后一行的所有数据 | d$ | 删除游标所在处,到该行的最后一个字符 | d0 | 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符 |
复制,粘贴:
yy | 复制游标所在的那一行 | nyy | n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行 | y1G | 复制游标所在行到第一行的所有数据 | yG | 复制游标所在行到最后一行的所有数据 | y0 | 复制光标所在的那个字符到该行行首的所有数据 | y$ | 复制光标所在的那个字符到该行行尾的所有数据 | p, P | p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 | J | 将光标所在行与下一行的数据结合成同一行 | c | 重复删除多个数据,例如向下删除 10 行,[ 10cj ] | u | 复原前一个动作。(常用) | [Ctrl]+r | 重做上一个动作。(常用) | . | 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用) |
编辑模式
i, I | i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。? | a, A | a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。 | o, O | 这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一行! | r, R | r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止; | Esc | 退出编辑模式,回到一般模式 |
命令模式
?打开,保存,退出:
vi [fliename]/vim [filename] | [filename]是文件名,在vi/vim编辑器中打开该文件,若没有则会新建 | w | 保存修改 | :w! | 强制保存修改 | :q | 退出,若修改过会提示 | :q! | 不保存退出,强制退出 | : w [filename] q | 文件命名为[filename],并保存修改退出 | ZZ | 这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于(保存并退出) | ZQ | 不保存,强制退出。效果等同于?:q!。 | :w [filename] | 将编辑的数据储存成另一个档案(类似另存新档) | :r [filename] | 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面 | :n1,n2 w [filename] | 将 n1 到 n2 的内容储存成 filename 这个档案。 | Esc | 退出命令模式,回到一般模式 |
行号设置:
:set number | 显示行号,设定之后,会在每一行的前缀显示该行的行号 | :set number | 与 set nu 相反,为取消行号! |
|