03 Vim 的“语法”
Vim 命令这么多,怎么记得过来,没关系,掌握 语法,万变不离其宗。
操作 (operation) + 移动范围 (motion)
经过了前两节的学习和练习,我们已经对 vim 的基本使用有所了解,现在来看看 vim 命令的基本语法(规律)吧:)
操作
d
删除,比如dh
删除当前光标左边一个字符,dj
删除当前光标所在行和下一行D
删除到行尾(包括 blank 字符,包括光标所在字符)c
删除并进入 insert 模式C
删除到行尾(包括 blank 字符,包括光标所在字符)并进入 insert 模式y
复制
注意,dcy 都会将被删除、复制的字符串复制进 vim 的寄存器,使用 :reg
查看 vim 寄存器中的内容,使用 "ay
复制到寄存器 a,使用 "ap
将寄存器 a 中的内容粘贴到光标后面。
移动(基于单词的)
向右移动
w
移动到单词的开头,除了_
下划线,其余符号,如- " ' { }
等等都会被当成一个单词,而大写W
是完全以空格来划分一个单词(字符串)e
移动到单词的结尾,大写E
类似W
相对于w
向左移动
b
移动到当前光标所在的单词开头,如果已经在当前单词的开头,则移动到上一个单词的开头,B
同理ge
移动到上一个单词的结尾
搭配操作移动
经常使用到的操作组合键,可多多练习
bcw
回到当前单词开头,删除这个单词,并且进入插入模式cw
已在单词开头,删除当前单词并且进入插入模式ea
在当前单词结尾处添加
vim复制粘贴用法总结
text
// vim 复制粘贴的用法总结,注意双引号
:reg // 查看 vim 寄存器里的内容
// 复制
yy // 复制当前行
yw // 复制当前单词
bwy // 回到单词的首个复制当前单词
bvey // 复制当前单词
"2y // 指定复制到寄存器 2
"ay // 指定复制到寄存器 a
// 粘贴 normal 模式下
"2p 从寄存器 2 中粘贴
"ap 从寄存器 a 中粘贴
"+p 表示从系统剪贴板粘贴(如果vim版本支持)
// 粘贴 insert 模式下
ctrl+r // 再输入剪贴板名称,即可
改键
我们之前配置了 H
和 L
来快速移动光标到行首和行尾,在可视化模式中,会发现,这个配置没有生效,因为只配置了 normal 模式,现在我们需要在 visual 模式下进行类似的配置。
json
"vim.visualModeKeyBindings": [
{
// map "H" to move cursor to the fisrt non-blank character of this line
"before": ["H"],
"after": ["^"]
},
{
// map "L" to move cursor to the last non-blank character of this line
"before": ["L"],
"after": ["g", "_"]
}
],