vim的使用

vim 一共分三种模式:

  • 命令模式(command mode)
  • 编辑模式(insert mode)
  • 命令行模式(command-line mode)

命令模式又被称为一般模式,进入 vim 时默认为命令模式。命令模式下按 i 可进入编辑模式,编辑模式下按 Esc 可进入命令模式。命令模式下输入“:”能进入命令行模式,命令行模式也能进入命令模式。但是命令行模式和编辑模式不能直接切换,必须经过命令模式才可。

每个模式都有其特有的命令和功能。

  • 命令模式可以做浏览,删除等操作
  • 编辑模式可以输入内容
  • 命令行模式可以保持,退出等操作
命令模式(command mode)
移动光标
命令 解释
h(或 left) 左移动
j(或 down) 下移动
k(或 top) 上移动
l(或 right) 下移动
n(数字)+h \ j \ k \ l 移动 n 个位置
PageDown 或^f 向下移一页
PageUp 或^b 向上移一页
^d 向上移半页
^u 向上移半页
+ 光标移动到非空白字符的下一列头部
- 光标移动到非空白字符的上一列头部
Home 或 0 到列的头部
End 或\$ 到列的尾部
^Home 到文件头部
^End 到文件尾部
H 到屏幕的首行
M 到屏幕的中间行
L 到屏幕的尾行
G 到文件的尾行类似^End
nG 到文件的第 n 行
gg 到文件的头部类似^Home
区块选择
命令 解释
v 以字符为单位选择区块
V 以列为单位选择区块
^v 以矩形的形式选择区块
y 复制区块
p 粘贴区块
d 删除区块
搜索与取代
命令 解释
/word 向下查找
?word 向上查找
n 下一个
N 前一个
:n1,n2s/word1/word2/g 将 n1 列到 n2 列的 word1 替换为 word2
:1,\$s/word1/word2/g 将第一列到最后一列的 word1 替换为 word2
:1,\$s/word1/word2/gc 将第一列到最后一列的 word1 替换为 word2,并提示使用者是否替代
删除、复制、粘贴、撤销、恢复
命令 解释
x 向后删除,类似编辑模式的 Del
X 向前删除,类似编辑模式的 backspace
nx \ nX n 为数字,表示删除 n 个
dd 删除光标所在行
ndd 删除光标所在行开始的 n 行
d1G 删除光标所在行到文件第一行间的所有内容
dG 删除光标所在行到文件最后一行间的所有内容
d\$ 删除光标到改行结尾间的内容
d0 删除光标到改行头部间的内容
yy 复制光标所在行
nyy 复制光标所在行开始的 n 行
y1G 复制光标所在行到文件第一行间的内容
yG 复制光标所在行到文件最后一行间的内容
y\$ 复制光标到行尾间的内容
y0 复制光标到行头间的内容
p(小写) 粘贴,如果复制的内容是一列,将粘贴到光标所在含的下一行
P(大写) 粘贴,如果复制的内容是一列,将粘贴到光标所在含的上一行
u 撤销
^r 恢复
. 重复刚才的操作
编辑模式(insert mode)
命令 解释
i 进入编辑模式,并在光标处开始编辑
I 进入编辑模式,并在光标所在行头部开始编辑
a 进入编辑模式,并在光标处的后一个位置开始编辑
A 进入编辑模式,并在光标所在尾部开始编辑
o 进入编辑模式,并在光标所在行的下一行开始编辑
O 进入编辑模式,并在光标所在行的上一行开始编辑
r 进入替换模式,替换当前光标上的那个字
R 进入替换模式,可一直替换,直到按下 Esc
命令行模式(command-line mode)
命令 解释
:w 将编辑的数据写入硬盘
:w! 强行写入硬盘,即使没有写入权限。前提是当前的用户有修改权限的能力
:q 离开
:q! 强制离开,不保存
:wq 保存后离开
:wq! 强制保存后离开
:wq! 强制保存后离开
ZZ 若文件没改动就不储存离开,如果有改动就储存再离开
:! command 可以输入命令行界面的命令
:w [filename] 将文件另存为
:n1,n2 w [filename] 将文件 n1 到 n2 行间的内容另存为
:r [filename] 读取其他文件并插入到当前光标的下一行
:set nu 设置行号
:set nonu 取消行号
多文件编辑功能

当用 vim file1 file2 …同时打开多个文件时,可使用多文件编辑功能。

命令 解释
:files 查看当前这个 vim 打开的所有文件
:n 查看下一个文件
:N 查看前一个文件
多窗口功能

多窗口功能非常的方便,能让我买在同一 bash 中并列查看多个文件。

命令 解释
:sp [filename] 在新窗口中打开文件,如果不加名字就将当前文件在新窗口中打开
^w+down 切到下一个窗口
^w+up 切到上一个窗口
文字补全功能

例如在 htm 的 style 标签内些 css 时忘记了背景颜色的 css 名字,就可以用文字补全功能了。

组合按钮 补齐的内容
^x->^n 通过目前正在编辑的这个“文件的内容文字”作为关键字,予以补齐
^x->^f 以当前目录内的“文件名”作为关键字,予以补齐
^x->^o 以扩展名作为语法补充,以 vim 内置的关键字,予以补齐