《Vim实用技巧(第2版)》学习笔记:技巧12-双剑合璧,天下无敌

1. 操作符 + 动作命令 = 操作

  • d{motion}命令可以对一个字符、一个完整单词或一整个段落进行操作,它作用的范围是由动作命令决定的。
  • c{motion},y{motion}等被统称为操作符(operator)
  • g、gu、gU命令要用两次按键来调用,g被当做前缀字符,用以改变其后面的按键行为。
  • Vim的语法只有一条额外规则,即:当一个操作符命令被连续调用2次时,他会作用于当前行。例如:
序号命令用途
1dd删除当前行
2cc删除当前行并进入插入模式
3yy复制当前行
4>>缩进当前行
5= =当前行自动缩进
6gUgU(gUU)当前行全转大写
7gugu(guu)当前行全转小写
8g~ g~(g ~ ~)当前行大小写反转
  • Vim的操作符
命令用途
c修改
d删除
y复制到寄存器
g~反转大小写
gu转换为小写
gU转换为大写
>增加缩进
<减少缩进
=自动缩进
!使用外部程序过滤{motion}所跨越的行

2. 自定义操作符与已有动作命令协同工作

  • Tim Pope的commentary.vim,此插件为Vim支持的编程语言增添了注释以及取消注释的命令 命令 | 含义 :-- | :-- gc{motion} | 切换指定行的注释状态 gcap | 切换当前段落的注释状态 gcG | 注释当前行到文件结尾 gcc | 注释当前行

3. 自定义动作命令与已有操作符协同工作

  • Kana Natsuno 的textobj-entire插件,新增2种文本对象:ie和ae。那么gg=G 就可以用=ae替换了

4. 操作符待决模式

  • 在命令dw中,输入d但没有输入w的短暂时间间隔就是操作符待决模式。
  • Esc结束操作符待觉模式

5. 总结

  • 认清Vim一个操作的组成可以帮助我们理解Vim的操作原理,方便我们扩展我们的命令。
  • Vim的操作符要多练习。
  • commentary.vim插件很好用,推荐安装~~
  • 欢迎留言一起学习讨论!