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", "_"]
}
],