在看鸟哥私房菜,简单总结下常用vi的命令
Ctrl + f | 屏幕向下移动一页,等同于 Page Down |
Ctrl + b | 屏幕向上移动一页,等同于 Page Up |
Ctrl + d | 屏幕向下移动半页 |
Ctrl + u | 屏幕向上移动半页 |
+ | 光标向下移动一列 |
- | 光标向上移动一列 |
n + space | n为数字,20 + space ,光标向右移动20个字符 |
0 或 Home | 移动到当前列开头 |
$ 或 End | 移动到当前列结尾 |
H | 移动到屏幕最上方第一个字符 |
M | 移动到屏幕中间第一个字符 |
L | 移动到屏幕最下方第一个字符 |
G | 移动到文件的最后一列 |
n + G | n为数字,20G ,光标移动到文件的第20列 |
gg | 相当于1G,移动到文件的第一列 |
n + Enter | n为数字,20 + Enter,光标向下移动20列 |
/ + word | /funcid ,在文件内搜索funcid |
? + word | ?funcid 向光标上搜索funcid |
n | 继续向下搜索 funcid |
N | 继续向上搜索 funcid |
:n1,n2s/word1/word2/g | 在n1列和n2列之间寻找word1并替换成word2 |
:1,$s/word1/word2/g | 在第一列和最后一列之间寻找word1并替换成word2 |
:1,$s/word1/word2/gc | 在第一列和最后一列之间寻找word1并替换成word2,并给出提示,是否替换 |
x,X | x向后删除,X向前删除 |
dd | 删除一列 |
ndd | 20dd ,删除光标所在向下20列 |
d1G | 删除光标所在第一列的数据 |
dG | 删除光标所在到最后一列的数据 |
d$ | 删除光标所在位置到该列的最后一个字符 |
d0 | 删除光标所在位置到该列的最前面一个字符 |
yy | 复制光标所在列 |
nyy | 20yy,复制光标所在向下20列的数据 |
y1G | 复制光标所在列到第一列的数据 |
yG | 复制光标所在列到最后一列的数据 |
y0 | 复制光标所在字符到该列行首的数据 |
y$ | 复制光标所在字符到该列行尾的数据 |
p,P | p将数据粘贴在光标下一列,P将数据粘贴在光标上一列, |
J | 将光标所在列和下一列的数据合并为一行 |
c | 重复删除多个数据,如向下删除10列 10cj |
u | 撤销 |
Ctrl + r | 重复上一动作 |
. | 重复上一动作 |
:set nu | 显示行号 |
:set nonu | 取消显示行号 |
r,R | 进入取代模式 r只会取代光标所在字符一次,R会一直取代光标所在字符,ESC可停止 |
区块选择 | 区块选择 |
v | 字符选择,将光标经过的地方选中 |
V | 列选择,将光标经过的列选中 |
Ctrl + v | 区块选择,相当于UE的列模式 |
y | 将选中的地方复制 |
d | 将选中的地方删除 |
p | 将复制的区块,在光标处贴上 |