光标移动(Cursor Movement)
命令 作用(解释)
h,j,k,l h表示往左,j表示往下,k表示往右,l表示往上
Ctrl+f 上一页
Ctrl+b 下一页
w, e, W, E 跳到单词的后面,小写包括标点
b, B 以单词为单位往前跳动光标,小写包含标点
O 开启新的一行
^ 一行的开始
$ 一行的结尾
gg 文档的第一行
[N]G 文档的第N行或者最后一行
插入模式(Insert Mode)
命令 作用(解释)
i 插入到光标前面
I 插入到行的开始位置
a 插入到光标的后面
A 插入到行的最后位置
o, O 新开一行
Esc 关闭插入模式
编辑(Editing)
命令 作用(解释)
r 在插入模式替换光标所在的一个字符
J 合并下一行到上一行
s 删除光标所在的一个字符, 光标还在当行
S 删除光标所在的一行,光标还在当行,不同于dd
u 撤销上一步操作
ctrl+r 恢复上一步操作
. 重复最后一个命令
~ 变换为大写
[N]>> 一行或N行往右移动一个tab
[N]<< 一行或N行往左移动一个tab
撤销:u
恢复撤销:Ctrl + r
关闭(Exiting)
命令 作用(解释)
:w 保存
:wq, :x 保存并关闭
:q 关闭(已保存)
:q! 强制关闭
搜索(Search)
命令 作用(解释)
/pattern 搜索(非插入模式)
?pattern 往后搜索
n 光标到达搜索结果的前一个目标
N 光标到达搜索结果的后一个目标
视觉模式(Visual Mode)
命令 作用(解释)
v 选中一个或多个字符
V 选中一行
剪切和复制(Cut and Paste)
命令 作用(解释)
dd 删除一行
dw 删除一个单词
x 删除后一个字符
X 删除前一个字符
D 删除一行最后一个字符
[N]yy 复制一行或者N行
yw 复制一个单词
p 粘贴
窗口操作
命令 作用(解释)
:split 水平方向分割出一个窗口
:vsplit 垂直方向分割出一个窗口
:close 关闭窗口
Ctrl+W 切换窗口, h到左边窗口,j到下方窗口,k到上方窗口,l到右边窗口
多文件切换
- 通过vim打开多个文件(可以通过ctags或者cscope)
- “:ls”查看当前打开的buffer(文件)
- “:b num”切换文件(其中num为buffer list中的编号)
- Ctrl+ww——依次向后切换到下一个窗格中
- bn
- bp
区域选择操作
| v | 进入字符可视化模式(移动一次选择一个字符) |
|---|---|
| V | 进入行可视化模式 |
| ctrl-V | 进入块可视化模式 |
| ctrl-Q | |
| gv | 选中前一次可视化模式时选择的文本 |
| o | 光标移动到选中文本的另一结尾 |
| O | 光标移动到选中文本的另一角落 |
补充操作:配合% (各种括号前后跳转),行内跳转:fa(到下一个为a的字符上),t(到某个字符前的字符)。大写的F、T是向反方向查找,命令有各种组合:
fa→ 从当前光标位置到下一个为a的字符处,你也可以fs到下一个为s的字符。t,→ 从当前光标位置到逗号前的第一个字符。逗号可以变成其它字符。3fa→ 在当前行查找从当前光标位置起第三个出现的a。F和T→ 和f和t一样,只不过是相反方向。
- 还有一个很有用的命令是
dt"→ 删除所有的内容,直到遇到双引号——"。
最强操作:**<action>a<object>** 或 <action>i<object>
在visual 模式下,这些命令很强大,其命令格式为
1 | <action>a<object>` 和 `<action>i<object> |
- action可以是任何的命令,如
d(删除),y(拷贝),v(可以视模式选择)。 - object 可能是:
w一个单词,W一个以空格为分隔的单词,s一个句字,p一个段落。也可以是一个特别的字符:"、'、)、}、]。
假设你有一个字符串 (map (+) ("foo")).而光标键在第一个 o的位置。
1 | vi" → 会选择 foo |
区域选择后可以进行哪些操作:
- 针对高亮显示的文本块,我们可以用命令~进行大小写转换。
- 用命令>增加缩进,或用命令<减少缩进。
- 我们还可以利用可视化模式,来合并多行文本。J命令可以将高亮显示的文本内容合并为一行,同时以空格来分隔各行。如果不希望在行间插入空格,那么可以使用gJ命令。
- 加注释,或者前、后加字符, I(大写i)– [ESC] → I是插入,插入“–”,按ESC键来为每一行生效
- 使用g?命令,可以使用rot 13算法来加密高亮显示的文本。针对同一个文本再次执行加密命令,就可以进行文本解密。
在可视化模式下,按下:键就可以对选定范围进行操作。例如:我们先在可视化模式下选中文本,然后执行:write block.txt命令,就可以将文本块写入另一文件中。选择多行,
然后执行:sort命令,则可以对选中的文本进行排序。
在vim下打开终端
注意:仅在vim8.1下可用
使用方法:
1 | :term |
打开默认的终端
如果是linux,或者使用wsl,
1 | :term bash |
Ctrl+W/Ctrl+N 将终端设置成normal模式