vi vim常用操作
光标移动
命令 | 说明 |
---|---|
w | 移动光标到下一个单词开头. |
e | 移动光标到下一个单词结尾 |
b | 移动光标到上一个单词. |
0 | 移动光标到本行最开头. |
^ | 移动光标到本行最开头的字符处. |
$ | 移动光标到本行结尾处. |
A | 移动光标至行尾并处于“追加”状态,直接编辑 |
H | 移动光标到屏幕的首行. |
M | 移动光标到屏幕的中间一行. |
L | 移动光标到屏幕的尾行. |
gg | 移动光标到文档首行. |
G | 移动光标到文档尾行. |
:n | 跳至第n行 |
ctrl + f | 向下翻页 同 page down. |
ctrl + b | 向上翻页 同 page up. |
ctrl + d | 向下翻半页 此比较有用 |
ctrl + u | 向上翻半页 此比较有用 |
ctrl + e | 向下翻一行 |
ctrl + y | 向上一行 |
[[ | 转到上一个位于第一列的“{” |
]] | 转到下一个位于第一列的“}” |
{ | 转到上一个空行 |
} | 转到下一个空行 |
'' | 两个单引号 此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查找到某个单词后, 再输入此命令则回到上次停留的位置. |
'. | 一单一点 此命令相当好使, 它移动光标到上一次的修改行. |
`. | 一倒引一点 此命令相当强大, 它移动光标到上一次的修改点. |
替换、删除、复制、粘贴、撤销、重复
命令 | 说明 |
---|---|
rc | 用 c 替换光标所指向的当前字符; |
nrc | 用 c 替换光标所指向的前 n 个字符; |
5rA | 用 A 替换光标所指向的前 5 个字符; |
x | 删除光标所指向的当前字符; |
nx | 删除光标所指向的前 n 个字符; |
3x | 删除光标所指向的前 3 个字符; |
dw | 删除光标右侧的字; |
ndw | 删除光标右侧的 n 个字; |
3dw | 删除光标右侧的 3 个字; |
db | 删除光标左侧的字; |
ndb | 删除光标左侧的 n 个字; |
5db | 删除光标左侧的 5 个字; |
dd | 删除光标所在行,并去除空隙; |
ndd | 删除(剪切) n 行内容,并去除空隙; |
3dd | 删除(剪切) 3 行内容,并去除空隙; |
d$ | 从当前光标起删除字符直到行的结束; |
d0 | 从当前光标起删除字符直到行的开始; |
J | 删除本行的回车符(CR),并和下一行合并。 |
s | 用输入的正文替换光标所指向的字符; |
S | 删除当前行,并进入编辑模式; |
ns | 用输入的正文替换光标右侧 n 个字符; |
nS | 删除当前行在内的 n 行,并进入编辑模式; |
cw | 用输入的正文替换光标右侧的字; |
cW | 用输入的正文替换从光标到行尾的所有字符(同 c$ ); |
ncw | 用输入的正文替换光标右侧的 n 个字; |
cb | 用输入的正文替换光标左侧的字; |
ncb | 用输入的正文替换光标左侧的 n 个字; |
cd | 用输入的正文替换光标的所在行; |
ncd | 用输入的正文替换光标下面的 n 行; |
c$ | 用输入的正文替换从光标开始到本行末尾的所有字符; |
c0 | 用输入的正文替换从本行开头到光标的所有字符。 |
p | 小写字母 p,将缓冲区的内容粘贴到光标的后面; |
P | 大写字母 P,将缓冲区的内容粘贴到光标的前面。 |
yy | 复制当前行到内存缓冲区; |
nyy | 复制 n 行内容到内存缓冲区; |
5yy | 复制 5 行内容到内存缓冲区; |
“+y | 复制 1 行到操作系统的粘贴板; |
“+nyy | 复制 n 行到操作系统的粘贴板。 |
u | 撤消前一条命令的结果; |
. | 重复最后一条修改正文的命令。 |
插入模式
命令 | 说明 |
---|---|
i | 在光标左侧插入正文 |
a | 在光标右侧插入正文 |
o | 在光标所在行的下一行增添新行 |
O | 在光标所在行的上一行增添新行 |
I | 在光标所在行的开头插入 |
A | 在光标所在行的末尾插入 |
保存,退出,环境变量
命令 | 说明 |
---|---|
:w | 将编辑的数据写入硬盘档案中(常用) |
:w! | 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关 |
:q | 离开 vi (常用) |
:q! | 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 |
:wq | 储存后离开 |
:wq! | 强制储存后离开 |
ZZ | 若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开! |
:w [filename] | 另存为 |
:r [filename] | 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到光标所在行后面 |
:! command | 暂时离开 vi 到指令列模式下执行 command 的显示结果!例如 『:! cat ./test』即可在 vi 当中察看当前文件夹中的test文件中的内容 |
Esc | 退出插入模式,进入命令模式 |
:set nu | 显示行号,设定之后,会在每一行的前缀显示该行的行号,这一点,非常有用,当我们修改配置文件的时候,能知道多少行,就方便多了。 |
:set nonu | 与 set nu 相反,取消行号 |