Skip to content
On this page

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 	// 再输入剪贴板名称,即可

改键

我们之前配置了 HL 来快速移动光标到行首和行尾,在可视化模式中,会发现,这个配置没有生效,因为只配置了 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", "_"]
  }
],