vi(是 visual editor 简称)编辑器是 LinuxUnix 上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi 是效率很高的文本编辑器。尽管在 Linux 上也有很多图形界面的编辑器可用,但 vi 在系统和服务器管理中的功能,是那些图形编辑器所无法比拟的。Vimvi 的加强版,比 vi 更容易使用;这里整理下 Vim 常用快捷键命令,并按不同分类进行说明,希望可以给初用者带来方便。

移动

h,j,k,l: 左,下,上,右。
w: 下一个词的词首。
e: 下一个词的词尾。
b: 上一个词的词首。
<>: v 模式选中后进行缩进。

跳转

%: 可以匹配{},"",(),[]之间跳转。
H、M、L: 直接跳转到当前屏幕的顶部、中部、底部。
#H: 跳转到当前屏的第 # 行。
#L: 跳转到当前屏的倒数第 # 行。
zt: 当前编辑行置为屏顶。
zz: 当前编辑行置为屏中。
zb: 当前编辑行置为屏底。
G: 直接跳转到文件的底部。
gg: 跳转到文件首。
(): 跳转到当前的行首、行尾。
{}: 向上、向下跳转到最近的空行。
[{: 跳转到目前区块开头。
]}: 跳转到目前区块结尾。
0: 跳转到行首。
$: 跳转到行尾。
2$: 跳转到下一行的行尾。
#: 跳转到该行的第 # 个位置。
#G: 15G,跳转到15行。
:#: 跳转到 # 行。
f'n': 跳转到下一个"n"字母后。
ctrl+b: 向后翻一页。
ctrl+f: 向前翻一页。
ctrl+u: 向后翻半页。
ctrl+d: 向前翻半页。
ctry+e: 下滚一行。

选择

  1. V: 选择一行。
  2. ^V: 矩形选择。
  3. v3w: 选择三个字符。

编辑

1. 新增

i: 光标前插入。
I: 在当前行首插入。
a: 光标后插入。
A: 当前行尾插入。
O: 在当前行之前插入新行。
o: 在当前行之后插入新行。

2. 修改 c(change) 为主

r: 替换光标所在处的字符。
R: 替换光标所到之处的字符。
cw: 更改光标所在处的字到字尾处。
c#w: c3w 修改3个字符。
C: 修改到行尾。
ci': 修改配对标点符号中的文本内容。
di': 删除配对标点符号中的文本内容。
yi': 复制配对标点符号中的文本内容。
vi': 选中配对标点符号中的文本内容。
s: 替换当前一个光标所处字符。
#S: 删除 # 行,并以新文本代替。

3. 删除 d(delete) 为主

D: 删除到行尾。
X: 每按一次,删除光标所在位置的前面一个字符。
x: 每按一次,删除光标所在位置的后面一个字符。
#x: 删除光标所在位置后面 6 个字符。
d^: 删至行首。
d$: 删至行尾。
dd: (剪切)删除光标所
dw: 删除一个单词/光标之后的单词剩余部分。
d4w: 删除4个word。
#dd: 从光标所在行开始删除 # 行。
daB: 删除 {} 及其内的内容。
diB: 删除 {} 中的内容。
n1,n2 d: 将 n1, n2 行之间的内容删除。

4. 查找

/: 输入关键字,发现不是要找的,直接在按 n,向后查找直到找到为止。
?: 输入关键字,发现不是要找的,直接在按 n,向前查找直到找到为止。
*: 在当前页向后查找同一字。
#: 在当前页向前查找同一字。

5. 复制 y(yank)为主

yw: 将光标所在之处到字尾的字符复制到缓冲区中。
#yw: 复制 # 个字到缓冲区。
Y: 相当于yy, 复制整行。
#yy: 表示复制从光标所在的该行往下数 # 行文字。
p: 粘贴。所有与y相关的操作必用p来结合粘贴。
n1,n2 co n3: 复制第 n1 行到第 n2 行之间的内容到第 n3 行后面。

6. 大小写转换

gUU: 将当前行的字母改为大写。
guu: 将当前行的字母改为小写。
gUw: 将当前光标下的单词改为大写。
guw: 将当前光标下的单词改为小写。
gg: 光标到文件第一个字符。
gu: 把选择范围全部小写。
G: 到文件结束。
ggguG: 整篇小写。
gggUG: 整篇大写。

7. 其它

J: 当前行和下一行合并成一行。

8. 移动

n1,n2 m n3: 将 n1 行到 n2 行之间的内容移至 n3 行下。

退出

  1. w filename: 保存正在编辑的文件 filename
  2. wq filename: 保存后退出正在编辑的文件 filename
  3. q: 退出不保存。

窗口操作

  1. ctrl+w p: 在两个分割窗口之间来回切换。
  2. ctrl+w j: 跳到下面的分割窗
  3. ctrl+w h: 跳到左边的分割窗。
  4. ctrl+w k: 跳到上面的分割窗。
  5. ctrl+w l: 跳到右边的分割窗。