vi编辑器是所有Unix及Linux系统下标准的编辑器,对Unix及Linux系统的任何版本,vi编辑器是完全相同的。vim是vi的升级版,增加了一些功能,对vi命令是完全兼容的。在一些基本命令上两者应该是一样的。
一.vim撤销,重复命令
-
撤销,重复执行
命令 命令功能 使用度 [Esc]
由编辑模式或者命令行模式返回一般指令模式 高频 u
撤销上次操作 高频 .
重复上次操作 高频
二.vim查找文本
-
文本查询,在命令行模式(在一般模式下使用
/
,:
,?
,进入命令行模式)下可以快捷的将光标定位到我们需要编辑的文本处命令 命令功能 使用度 /word
从光标向下寻找一个名称为 word 的字符串 高频 /^word 从光标向下寻找一个以名称为 word开头的字符串 中频 /word$ 从光标向下寻找一个以名称为 word结尾的字符串 低频 ?word 从光标向上寻找一个名称为 word 的字符串 低频 n
重复上次的查找指令 高频 N
相反方向重复上次的查找指令 高频 -
若查询的字符串在文件中不存在,文件左下角会出现
Pattern not found:
字样 -
正常情况下查询字符串是严格区分大小写的,若想切换忽略大小写设置,输入如下
如果想忽略大小写,则输入命令 ":set ic";调整回来输入":set noic"
ic为ignore case缩写
- 若在查询的字符串中出现
\、*、?、$
等特殊符号,使用转义字符\
进行转义
三.vim替换文本
-
文本替换,我们可以快捷的替换单一字符,也可以批量替换字符串
命令 命令功能 使用度 r
替换光标所在位置的字符 高频 R
从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按“Esc”可以结束 高频 :n1,n2s/word1/word2/g
n1与n2为数字。在第n1与n2列之间将word1替换为word2 高频 :1,$s/word1/word2/g
从第一列到最后一列将word1替换为word2,全文替换 高频 :1,$s/word1/word2/gc g后加c,指令一行一行取代,且在取代前询问再确定(confirm) 低频 :s/word1/word2/g
当前光标所在行,进行行内取代 高频
四.vim删除文本
-
文本删除
命令 命令功能 使用度 (n)x/(n)X
x 为向后删除一个字符(相当于[del]按键),X为向前删除一个字符(相当于[backspace]倒退键),添加n表示向前向后删除n个字符(包含本字符) 高频 d0 那个是数字的 0 ,删除光标所在处,到该列的最前面一个字符 低频 d$ 或者 D 删除光标所在处,到该列的最后一个字符 低频 (n)dd
删除当前行,若添加n,表示向下删除n行(包含本行) 高频 d(n)G 若不添加n,则代表删除光标向下所有文本,若添加n,n为行号,删除光标到n行之间的文本(包括本行) 低频 d(n)gg 若不添加n,则代表删除光标向上所有文本,若添加n,n为行号,删除光标到n行之间的文本(包括本行) 同dnG 低频 :n1,n2d 删除n1到n2行之间的文本内容 低频 -
注意,被删除的内容并没有真正删除,都放在了剪贴板中。将光标移动到指定位置处,按下 “p” 键,就可以将刚才删除的内容又粘贴到此处。
五.vim复制粘贴文本
-
文本复制粘贴
命令 命令功能 使用度 (n)yy
复制光标所在的那一列,若添加n复制光标所在向下n列 高频 ygg 复制光标到第一行之间所有的文本 低频 yG 复制光标到最后一行之间所有的文本 低频 (n)dd
删除当前行,若添加n,表示向下删除n行(包含本行) 高频 y(n)G 或者 y(n)gg
n为行号,复制光标到n行之间的文本(包括本行) 高频 y0 复制光标所在的那个字符到该列行首的所有数据 低频 y$ 复制光标所在的那个字符到该列行尾的所有数据 低频 p/P
p为将已复制的数据在光标下一列贴上,P则为贴在光标上一列,若复制的是行内字符串,则粘贴的时候p为字符后,P为字符前 高频 J 将光标所在列与下一列的数据结合成同一列 低频