Vim编辑器
Vim(Vi improved) 是从 Vi 发展出来的一个文本编辑器。Vim 在程序员中使用地非常广泛,和 Emacs 并称为类 Unix 系统用户最喜欢的文本编辑器。事实上,这两大编辑神器之间的圣战一直没停歇过。
在这个蔚蓝色的星球上,流传着两大神器的传说: 据说 Emacs 是神的编辑器,而
Vim 是编辑器之神…
学习 vim 之前,先知道其设计理念是很重要的:不仅有助于记忆,而且还能举一反三。
Vim 的设计理念是 Composability ( 组合 ):
例如在 Vim 中,”d” 表示删除,”j” 移动到下一行,组合 “dj” 表示删除当前行和下一行;”^” 代表行首,故组合 “d^” 表示删除到行首;”$” 代表行尾,”d$” 表示删除到行尾。而且我们还可以指定命令重复的次数:”dd” 表示删除光标所在行,”2dd” 或”d 2 d” 表示连续删除两行,效果和 “dj” 一致。
1 三大模式(视图)
Vim 是一种模式编辑器,它与我们熟悉的”所见即所得”的编辑器不太一样。Vim 在不同模式下有不同的功能,这也是 Vim 之所有这么 NB 的原因之一。
Vim 有多种模式,最常用的是:普通(命令)模式、插入(编辑)模式和视觉模式。
普通(命令)模式(common mode)
刚进入vim编辑器时候的默认模式。在此模式下能输入的vim的合法指令(通常是一些字母,如h,j,k,l)来进行操作,更像是阅读模式
插入(编辑)模式(Insert mode)
文本编辑模式,直接对文本内容进行编辑
视觉模式(Last-line mode)
也叫底线(末行)模式,顾名思义,就是在输入窗口的最下方进项的操作,更偏向文件管理。比如显示行号等等
这些模式之间可以相互转换,如下图所示:

1.1 基础命令&含义
以下是常见的vim快捷键的中文版速查图:

指令 | 含义 |
---|---|
i | 进入编辑模式并在光标前面插入 |
I | 进入编辑模式并在行首插入 |
a | 进入编辑模式并在光标后面插入 |
A | 进入编辑模式并在行尾插入< |
o | 进入编辑模式并在下面另起一行,并在行首插入 |
O | 进入编辑模式在上面另起一行,并在行首插入 |
v | 进入行选模式 |
ctrl + v | 进入竖选模式 |
- i: 进入编辑模式并在光标前面插入

- I: 进入编辑模式并在行首插入

- a: 进入编辑模式并在光标后面插入

- A: 进入编辑模式并在行尾插入

o: 进入编辑模式并在行首插入
O:进入编辑模式在上面另起一行,并在行首插入

1.2 普通模式
普通模式又叫命令模式,顾名思义,这种模式就是用来执行各种命令的。命令可以分为长命令和短命令:
1 | 长命令:以:开头,以[Enter]结尾的命令。比如,:wq[Enter] |
1.2.1 移动光标
命令 | 含义 |
---|---|
h | 往左移动一个字符 |
j | 往下移动一个字符 |
k | 往上移动一个字符 |
l | 往右移动一个字符 |
[n]- | 往上移动n行 |
[n]+ | 往下移动n行 |
:n或者[n]G | 移动到第n行 |
gg | 移动到文本的第一行 |
G | 移动到文本的最后一行 |
^ | 移动到行首 |
$ | 移动到行尾 |
w | 下一个词的词首 |
b | 上一个词的词首 |
t [char] | 向后查找,将光标移动到[char]的前一个字符 |
T[char] | 向前查找,将光标移动到[char]的后一个字符 |
f[char] | 向后查找,将光标移动到[char] |
F[char] | 向前查找,将光标移动到[char] |

h :往左移动一个字符
j :往下移动一个字符
k :往上移动一个字符
l :往右移动一个字符
[n]- :往上移动n行
[n]+ :往下移动n行
:n 或 [n]G 移动到第n行
gg :移动到文件的第一行
- G :移动到文件的最后一行
- ^ :移动到到行首
- $ :移动行尾
- w :移动到下一个单词的词首(中文句子直接算一个单词了)
b :移动到上一个单词的词首(中文句子直接算一个单词了)
t[char] :向后查找,将光标移动到[char]的前一个字符
T[char] :向前查找,将光标移动到[char]的后一个字符
f[char] :向后查找,将光标移动到[char]
F[char] :向前查找,将光标移动到[char]
1.2.2 删除(delete)文本
vim中删除类似windows中的剪切,会将删除的内容复制到vim的”剪贴板”中,其中dt[char],df[char]等都可以类比上面的移动光标。
命令 | 含义 |
---|---|
x | 删除一个字符 |
dw | 删除一个单词 |
[n]dw 或 d[n]w | 删除n个单词 |
dd | 删除一行 |
[n]dd 或 d[n]d | 删除n行 |
:[m],[n]d | 删除[m,n] |
d^ | 删除到行首 |
d$ | 删除到行尾 |
dt[char] | 向后删除,删除到[char] |
dT[char] | 向前删除,删除到[char] |
df[char] | 向后删除,删除到[char]的下一个字符 |
dF[char] | 向前删除,删除到[char]的前一个字符 |
1.2.3 复制(yank)文本
类比上面的删除文本,把d换成y即可
命令 | 含义 |
---|---|
yy | 复制光标所在一行 |
[n]yy或者y[n]y | 复制光标起的n行 |
:[m],[n]y | 复制[m,n]行 |
yw | 复制光标所在的一个单词(如果光标在单词内部,则复制光标所在位置到末尾的部分,汉语一个句子当为一个单词) |
[n]yw或y[n]w | 复制n个单词(同上) |
yt[char] | 向后复制,复制到[char] |
yT[char] | 向前复制,复制到[char] |
yf[char] | 向后复制,复制到[char]的下一个字符 |
yF[char] | 向前复制,复制到[char]的前一个字符 |
1.2.4 粘贴,撤销和恢复
命令 | 含义 |
---|---|
p或者P(paste) | 粘贴(将上面复制的内容粘贴) |
u(undo) | 撤销 |
ctrl + r(recovery) | 恢复 |
1.2.5 修改文本
删除+进入编辑模式
命令 | 含义 |
---|---|
cc或者S | 删除当前行并进入插入(编辑)模式 |
[n]cc或[n]S | 删除n行,并进入插入(编辑)模式 |
cw | 删除一个单词,并进入插入(编辑)模式 |
[n]cw或c[n]w | 删除n个单词,并进入插入(编辑)模式 |
c^ | 删除到行首并进入插入模式 |
c$ | 删除到行尾并进入插入模式 |
ct[char] | 向后删除,删除到[char],并进入插入模式 |
cT[char] | 向前删除,删除到[char],并进入插入模式 |
cf[char] | 向后删除,删除到[char]的下一个字符,并进入插入模式 |
cF[char] | 向前删除,删除到[char]的上一个字符,并进入插入模式 |
c[n]G | 删除到第n行,并进入插入模式 |
cG | 删除到文件末尾,并进入插入模式 |
cgg | 删除到文件首行,并进入插入模式 |
1.2.6 查找
命令 | 含义 |
---|---|
/pattern | 从光标的位置向后查找,查找匹配pattern的内容,pattern为正则表达式 |
?pattern | 从光标的位置向前查找,查找匹配pattern的内容,pattern为正则表达式内容 |
n | 移动到下一个匹配项 |
N | 移动到上一个匹配项 |

1.2.7 替换(substitute)文本
命令 | 含义 |
---|---|
:s/pattern/substitute | 只会替换光标所在的行的第一个匹配项 |
:s/pattern/substitute/g | 替换光标所在行的所有匹配项 |
:[m],[n]s/pattern/substitute/g | 替换[m,n]行的所有匹配项 |
:%s/pattern/substitute/g | 替换全文的所有匹配项 |

1 | :w 将buffer里面的内容写入文件,即保存 |
1. 2 视图模式
视图模式是用来选择内容的。选择内容之后,我们就可以对其进行复制或删除了。进
入视图模式有两种模式:
常见用法: 批量注释
1 | v: 行选模式 |
1.2.1 多行注释
1 ) [ctrl]+v 进入竖选模式
2 ) 选择范围
3 ) 输入I
4 ) 输入//
5 ) 输入[ESC]

2 文件的操作
命令 | 含义 |
---|---|
:w | 将输入buffer里面的内容写入文件,即保存 |
:q | 退出 |
:q! | 强制不保存退出 |
:wq | 保存退出 |
注意:[ctrl] + s 不表示保存,而是进入僵死状态;[ctrl] + q 可以退出僵死状态。
3 窗口裁剪
命令 | 含义 |
---|---|
:split(:sp) 新文件名 | 水平分割,并在新窗口中打开新文件 |
:new 新文件名 | 水平分割,并在新窗口中打开新文件 |
:vsplit(:vsp) 新文件名 | 垂直分割,并在新窗口中打开新文件 |
:vnew 新文件名 | 垂直分割,并在新窗口中打开新文件 |
ctrl + ww | 切换窗口 |
:wall(:wa) | 保存所有修改过的窗口 |
:qall(:qa) | 退出所有窗口 |
:only(:o) | 保留当前窗口,关闭所有其它窗口 |

4 配置Vim
我们可以在 ~/.vimrc 文件中配置 Vim,让 Vim 的使用更加得心应手。
每次启动 Vim时,Vim 都会读取这个文件,然后将里面的命令执行一遍。
1 | 1 ) rc是"running command"的意思。每次启动时,都会执行这个文件中的命令。 |
5 vimplus安装
可以参考这个视频
6 练习手册
Vim 贴心地为大家提供了一个练习手册 vimtutor:
1 | $ vimtutor |
Advice: 建议不熟练的同学可以每天抽出一定的时间去练习vimtutor
- 本文作者: 迪丽惹Bug
- 本文链接: https://lyroom.github.io/2024/07/11/vim/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!