光标移动(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模式