一、vim:是vi的增强版,Visual Interface iMproved,它是全屏编辑器,模式化编辑器,文本版处理工具。 vim编辑器的四种模式:编辑模式(命令行模式),输入模式,末行模式,可视化模式。
二、vim 打开文件,如:vim test.txt 如果test.txt存在,则打开此文件,不存在则创建此文件并打开,需要注意的是如果文件前面有目录,此目录必须要存在,如vim /my/test.txt那么/my必须存在。
vim +n test.txt打开test.txt并跳到第n行
vim + test.txt打开test.txt并跳到第最后一行
vim +/pattern test.txt 打开test.txt文件并且跳到第一次匹配到的pattern的行
三、模式之间的切换
vim打开文件时,是处于编辑模式下。
编辑模式--->输入模式,按:
i:在当前光标所在字符前,转为输入模式,I:跳到行首(非空白字符),进入输入模式
o:在当前光标所在行的下一行,新建下一行,进入输入模式,O:在当前光标所在行的上一行,新建上一行,进入输入模式
a:跳到当前光标所在字符的后面一个字符,进入输入模式,A:跳到行尾,进入输入模式
输入模式--->编辑模式
按ESC退出输入模式,进入编辑模式
编辑模式--->末行模式
按 : 进入末行模式
末行模式--->编辑模式
按 ESC ESC 两下
编辑模式--->可视化模式
v或V
可视化模式--->编辑模式
按 ESC ESC 两下
四、光标移动(在编辑模式下)
1.上下左右方向键单个字符移动
2.k、j、l、h 可以上下左右单个字符移动光标
(与数字件的组合,可以实现多个字符移动,如 3 加上 h 可以向右移动三个字符)
3.以单词为单位移动
w:跳到下一个单词的词首
e:跳到单词的行尾,或下一个单词的词尾
b:跳到单词的行首,或上一个单词的词首
(同样可以和数字组合)
4.行内跳转
0:跳到行首
^:跳到行首(非空白字符的行首)
$:跳到行尾
5.行间跳转
G:跳到文件的最后一行
gg:跳到文件的最上一行
(同样可以和数字组合,在末行模式下直接给出行号,然后按回车键即可)
五、翻屏跳转(编辑模式下)
ctrl+f :向下翻一屏
ctrl+b :向上翻一屏
ctrl+d :向下翻半屏
ctrl+u:向上翻半屏
六、删除字符(编辑模式下)
x:向后删除一个字符(可以和数字组合)
dd:删除光标所在的行
dw,de:删除光标所在的单词的后面那部分,db:删除光标所在的单词的前面那部分(w不删除单词后面的空格,e删除空格,b不删除空格)
和数字组合如:d2下(方向键下)删除当前光标所在的行以及下面的两行
在末行模式下:
.d回车,表示删除光标所在的那一行
$d回车,删除最后一行
+nd,删除当前光标所在行,以及下面的n行
n,md 删除第n行和第m行以及之间的行
需要注意:以上方式删除字符类似windows下的剪切,另外也可以直接在输入模式下按删除键删除。
七、复制字符,使用 y 的组合,方法同删除字符 八、粘贴(编辑模式下)
p:如果复制的某行的部分,那么粘贴在光标的行尾,否则粘贴在下一行
P:如果复制的某行的部分,那么粘贴在光标的行首,否则粘贴在上一行
九、替换(编辑模式下) r:替换光标选中的单个字符 R:进入替换模式
十、撤销(编辑模式下)
u:撤销前一次操作,可连续按u(可以和数字组合)
ctrl+r:可以取消上一次的撤销操作
十一、可视化模式(在编辑模式下)
v:一个字符一个字符的选取
V:矩形方式选取
(可以和y,d等组合,如选取之后按y,表示复制所选内容)
十二、查找(编辑模式) /string 或?string全文搜索string的字符,按n或N前后跳转到搜索到的内容 十三、查找并替换(末行模式下)
如:n,ms/string1/string2/gi 将n行至m行的string1替换成string2,g表示全部替换如果不加,则只替换第一个匹配到的,i 忽略大小写;
n,$s/string1/string2/gi 将n行至最后行的string1替换成string2,g表示全部替换如果不加,则只替换第一个匹配到的,i忽略大小写;
%s/string1/string2/g 全文替换,g表示全部替换如果不加,则只替换第一个匹配到的
十四、退出文件(末行模式下)
q 关闭文件不保存
q! 强制关闭文件,不保存(如果文件改动了,不想保存)
wq 或 x 保存并退出,wq!强制保存退出
w ,w! 保存,强制保存不退出
在编辑模式下:ZZ 保存并退出。
另外:
在末行模式下,使用 read!command命令,可以执行command,并且把执行结果输出到光标的下一行,如在 “末行模式下” :read!cat /etc/inittab 可以把/etc/inittab中的文件内容输出到光标的下一行。