Vim 的设计理念是 Composability (组合):
例如在 Vim 中,“d” 表示删除,“j” 移动到下一行,组合 “dj” 表示删除当前行和下一行;“^” 代表行首,故组合 “d^” 表示删除到行首;“
"
代表行尾,
"
d
" 代表行尾,"d
"代表行尾,"d” 表示删除到行尾。而且我们还可以指定命令重复的次数:“dd” 表示删除光标所在行,“2dd” 或"d2d" 表示连续删除两行,效果和 “dj” 一致。
1、常见操作
Vim 是一种模式编辑器,它与我们熟悉的"所见即所得"的编辑器不太一样。Vim 在不同模式下有不同的功能,也是 Vim 之所有这么 NB 的原因之一。Vim 有多种模式,最常用的是:普通(命令)模式、插入(编辑)模式和视觉模式。这些模式之间可以相互转换,如下图所示:
:::tipsi: 在光标前面插入
I: 在行首插入
a: 在光标后面插入
A: 在行尾插入
o: 在下面另起一行,并在行首插入
O: 在上面零七一行,并在行首插入
v: 进入行选模式
[ctrl]+v: 进入竖选模式:::
1.1普通模式
普通模式又叫命令模式,顾名思义,这种模式就是用来执行各种命令的。命令可以分为长命令和短命令::::tips长命令:以:开头,以[Enter]结尾的命令。比如,:wq[Enter]
短命令:如a,o,i…:::
移动光标
命令 | 含义 |
---|---|
h | 往左移动一个字符 |
j | 往下移动一个字符 |
k | 往上移动一个字符 |
l | 往右移动一个字符 |
[n]- | 往上移动n行 |
[n]+ | 往下移动n行 |
:n 或 [n]G | 移动到第n行 |
gg | 移动到文件的第一行 |
G | 移动到文件的最后一行 |
^ | 移动到行首 |
$ | 移动到行尾 |
w | 下一个单词的词首 |
b | 上一个单词的词首 |
t) | 向后查找,将光标移动到)的前一个字符 |
T" | T" |
f) | 向后查找,将光标移动到) |
F" | 向前查找,将光标移动到" |
删除文本(delete)🤖
Vim 中的删除类似 Windows 中的剪切,会将删除的内容复制到 Vim 的"剪切板"中。
命令 | 含义 |
---|---|
x | 删除一个字符 |
dw | 删除一个单词 |
[n]dw 或 d[n]w | 删除n个单词 |
dd | 删除一行 |
[n]dd 或 d[n]d | 删除n行 |
:[m],[n]d | 删除[m,n]行 |
d^ | 删除到行首 |
d$ | 删除到行尾 |
dt) | 删除到) |
dt" | 删除到" |
粘贴,撤销和恢复
命令 | 含义 |
---|---|
p 或 P(paste) | 粘贴 |
u(undo) | 撤销 |
[ctrl] + r(recovery) | 恢复 |
复制文本(yank)
命令 | 含义 |
---|---|
yy | 复制一行 |
[n]yy 或 y[n]y | 复制n行 |
:[m],[n]y | 复制[m,n]行 |
yw | 复制一个单词 |
[n]yw 或 y[n]w | 复制n个单词 |
yt) | 复制到) |
yt" | 复制到" |
修改文本(change)
在 Vim 中修改操作其实就是删除操作和进入编辑模式的组合:
命令 | 含义 |
---|---|
cc 或 S | 删除当前行,并进入编辑模式 |
[n]cc 或 [n]S | 删除n行,并进入编辑模式 |
cw | 删除一个单词,并进入编辑模式 |
[n]cw 或 c[n]w | 删除n个单词,并进入编辑模式 |
c^ | 删除到行首,并进入编辑模式 |
c$ | 删除到行尾,并进入编辑模式 |
ct) | 删除到),并进入编辑模式 |
ct" | 删除到",并进入编辑模式 |
c[n]G | 删除到第n行,并进入编辑模式 |
cG | 删除到文件末尾,并进入编辑模式 |
查找
命令 | 含义 |
---|---|
/pattern | 从光标所在位置向后查找匹配pattern的内容,pattern为正则表达式 |
?pattern | 从光标所在位置向前查找匹配pattern的内容,pattern为正则表达式 |
n | 移动到下一个匹配项 |
N | 移动到上一个匹配项 |
替换(substitute)
:::tips格式:
😒/pattern/substitute/选项
将匹配pattern的内容替换为substitute
1) 😒/pattern/substitute
只会替换光标所在行的第一个匹配项
2) 😒/pattern/substitute/g
替换光标所在行的所有匹配项 (g for globally)
3) :[m],[n]s/pattern/substitute/g
替换[m,n]行的所有匹配项
4) :%s/pattern/substitute/g
替换全文的所有匹配项:::
1.2 视图模式
视图模式是用来选择内容的。选择内容之后,我们就可以对其进行复制或删除了。进入视图模式有两种模式::::tipsv: 行选模式
[ctrl]+v: 竖选模式:::常见用法: 批量注释:::tips
- [ctrl]+v 进入竖选模式
2) 选择范围
3) 输入I
4) 输入//
5) 输入[ESC]:::
2、对文件的操作
命令 | 含义 |
---|---|
:w | 将buffer里面的内容写入文件,即保存 |
:q | 退出 |
:q! | 不保存退出 |
:wq | 保存退出 |
:::warning注意:[ctrl] + s 不表示保存,而是进入僵死状态;[ctrl] + q 可以退出僵死状态。:::
3、多窗口
命令 | 含义 |
---|---|
:split (:sp) | 水平分割 |
:new | 水平分割 |
:vsplit (:vsp) | 垂直分割 |
:vnew | 垂直分割 |
[ctrl]+ww | 切换窗口 |
:wall | 保存所有修改过的窗口 |
:qall | 退出所有窗口 |
:only | 保留当前窗口,关闭所有其它窗口 |
4、配置Vim
我们可以在 ~/.vimrc 文件中配置 Vim,让 Vim 的使用更加得心应手。每次启动 Vim
时,Vim 都会读取这个文件,然后将里面的命令执行一遍。
vimplus直接安装.txt:::tips
- rc是"running command"的意思。每次启动时,都会执行这个文件中的命令。
2) 如果没有~/.vimrc文件,不要惊慌,自己创建一个即可。
3) 作为初学者,不建议大家自己去配置Vim。我们只需要安装vimplus就好了,vimplus会帮
我们配置好Vim。:::
5、练习手册
$ vimtutor
$ vimtutor zh_CN # 汉化版的vimtutor