VIM基本介绍

vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。

VIM 内指命令

Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏;
Ctrl+f:向文件尾翻一屏;
Ctrl+b:向文件首翻一屏;
Esc:从编辑模式切换到命令模式;
ZZ:命令模式下保存当前文件所做的修改后退出vi;
:行号:光标跳转到指定行的行首;
:$:光标跳转到最后一行的行首;
x或X:删除一个字符,x删除光标后的,而X删除光标前的;
D:删除从当前光标到光标所在行尾的全部字符;
dd:删除光标行正行内容;
ndd:删除当前行及其后n-1行;
nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字;
p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方;
P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方;
/字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示;
?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;
a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作;
a:在当前字符后添加文本;
A:在行末添加文本;
i:在当前字符前插入文本;
I:在行首插入文本;
o:在当前行后面插入一空行;
O:在当前行前面插入一空行;
:wq:在命令模式下,执行存盘退出操作;
:w:在命令模式下,执行存盘操作;
:w!:在命令模式下,执行强制存盘操作;
:q:在命令模式下,执行退出vi操作;
:q!:在命令模式下,执行强制退出vi操作;
:e文件名:在命令模式下,打开并编辑指定名称的文件;
:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;
:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;
:set number:在命令模式下,用于在最左端显示行号;
:set nonumber:在命令模式下,用于在最左端不显示行号;

命令行模式

//命令光标跳转
G   跳转光标至末端
gg  跳转光标至顶端
Ngg 跳转光标至当前文件内的22行
$   将当前光标跳转至光标所在行的末端(尾部)
^   将当前光标跳转至光标所在行的头部  —> 数字0 可实现类似效果

//文件内容较多
ctrl+f  往下翻页(行比较多)  
ctrl+b  往上翻页

//复制    
yy复制当前光标所在的行
5yy复制当前光标以及光标向下4行

//粘贴  
p(小写) 粘贴至当前光标下一行   
P(大写) 粘贴至当前光标上一行

//删除   
dd  删除当前光标所在的行   
4dd 删除当前光标所在的行以及往下的3行
dG  删除当前光标以后的所有行
D   删除当前光标及光标以后的内容  
x   删除当前光标标记往后的字符
X   删除当前光标标记往前的字符

//剪贴
先删除dd(number dd),后粘贴p

//撤销
u   撤销上一次的操作(类似windows下的ctrl+z)

//替换    
r   替换当前光标标记的单个字符
R   进入REPLACE模式, 连续替换,ESC结束

VIM编辑模式

i   编辑模式(不做任何操作)
I   光标跳转至本行的头部
a   光标的后一位编辑
A   将光标移动到本行的尾部
o   在当前光标所在的行下添加空白的行
O   在当前光标位置的上一行添加空白行

VIM末行模式

末行模式主要用于搜索, 保存, 退出文件, 还可以让用户执行外部的Linux命令或跳转到所编写文档的特定行数

末行模式(必须退回到命令行模式)

:w      保存当前状态
:w!     强制保存当前状态
:q      退出当前文档(文档必须保存才能退出)
:q!     强制退出文档不会修改当前内容
:wq     先保存,在退出
:wq!    强制保存并退出
:x      先保存,在退出
ZZ      保存退出, shfit+zz
:number 跳转至对应的行号

末行模式(查找和替换)

查找  /string 需要搜索的内容(查找)
        n 按搜索到的内容依次往下进行查找
        N 按搜索到的内容依次往上进行查找
替换
    :1,5s#sbin#test#g   替换1-5行中包含sbin的内容为test
    :%s#sbin#test#g 替换整个文本文件中包含sbin的替换为test
    :%s#sbin#test#gc  替换内容时时提示是否需要替换

另存
:w /root/test  将文件所有内容另存为/root/test

读入
:r  /etc/hosts  读入/etc/hosts文件至当前光标下面
:5r /etc/hosts  指定/etc/hosts文件当前文件的哪行下面