VI/VIM 常用命令
===========
整理自鸟哥的私房菜
----------
- 移动光标
命令 | 描述
------------------------|------------------------------------------
h | 光标向左移动一个字符
j | 光标向下移动一个字符
k | 光标向上移动一个字符
l | 光标向右移动一个字符
ctrl+f | 向下移动一页
ctrl+b | 向上移动一页
ctrl+d | 向下移动半页
ctrl+u | 向上移动半页
+ | 光标移到下行的行首的非空字符处
- | 光标移到上行的行首的非空字符处
n<space> | 光标向右移动n个字符
0 | 光标移到到该行的行首
$ | 光标移到到该行的行尾
H | 光标移动到该屏首行的首字符处
M | 光标移动到该屏*的首字符处
L | 光标移动到该屏最后一行的首字符处
G | 光标移动到该文档最后一行的首字符处
nG | 光标移动到该文档第n行的首字符处
gg | 光标移动到该文档第1的首字符处,相当于1G
n<Enter> | 光标向下移动n行
- 搜索与替代
命令 | 描述
------------------------|------------------------------------------
/word | 从光标所在处向下搜索word
?word | 从光标所在处向上搜索word
n | 重复前一个搜索动作
N | 反向进行前一个搜索动作
:n1,n2s/word1/word2/g | 在第n1,n2行之间搜索word1,并将其替代为word2
:1,$s/word1/word2/g | 在第1,最后一行之间搜索word1,并将其替代为word2
:1,$s/word1/word2/gc | 在第1,最后一行之间搜索word1,并将其替代为word2,替代需要确认
- 删除、复制与粘贴
命令 | 描述
------------------------|------------------------------------------
x,X | x为向后删除一个字符,X为向前删除一个字符
nx | 向后删除n个字符
dd | 删除光标所在行
ndd | 向下删除n行
d1G | 删除光标所在行到第一行的所有内容
dG | 删除光标所在行到最后一行的所有内容
d$ | 删除光标所在处到该行行尾的所有内容
d0 | 删除光标所在处之前的内容
yy | 复制光标所在行
nyy | 向下复制n行
y1G | 复制光标所在行到第一行的所有内容
yG | 复制光标所在行到最后一行的所有内容
y$ | 复制光标所在处到该行行尾的所有内容
y0 | 复制光标所在处之前的内容
p,P | p为在下一行粘贴复制的内容,P为在上一行
J | 将光标所在行与下一行合并为同一行
c |
u | 撤销前一个动作
ctrl+r | 重做上一个动作
. | 重复前一个动作
- 模式切换
命令 | 描述
------------------------|------------------------------------------
i,I | i为在光标所在处插入,I为在光标所在行的第一个非空字符处插入
a,A | a为在光标所在处的下一个字符串插入,A为在光标所在行的最后一个字符串插入
o,O | o为在光标所在行的下一行插入新行,O为光标所在行的上一行插入新行
r,R | r为取代光标所在处的字符一次,R会一直取代光标所在处的字符直到ESC
esc | 退出编辑模式,回到一般指令模式
- 保存与离开
命令 | 描述
------------------------|------------------------------------------
:w,:w! | :w为保存,:w!为强制保存
:q,:q! | :q为离开,:q!为强制离开
:wq,:wq! | :wq为保存后离开,:wq!为强制保存离开
ZZ | 文档未改变,则不保存离开。有改变,则保存离开
:w filename | 另存为
:r filename | 将filename的内容添加到光标所在行的后面
:n1,n2 w filename | 将n1到n2行的内容保存到filename中
:! command | 暂时离开vi,执行command命令
- 设置环境变量
命令 | 描述
------------------------|------------------------------------------
:set nu | 显示行号
:set nonu | 不显示行号
----------