Vim 的操作符, 动作与文本对象

注意: 这是初稿!!! 可能有错漏!!!

Vim 在正常模式 (Normal Mode) 下可以使用形如 <操作符> <次数> [<动作>|<文本对象>] 的指令, 此外可视模式 (Visual Mode) 也支持类似操作

操作符 (operator)

操作符 如下:

  • y –复制
  • d –删除
  • c –替换 (删除并插入)

动作 (motion)

参考: Vim documentation: motion

动作会对移动经过的所有文本都进行操作, 例如ggdG将会删除全部文本

动作 如下:

  • ^ 软行首(不包含空白字符)
  • 0 硬行首
  • $ 行末
  • _ 最后一个非空字符
  • f<字符> F<字符> 跳到下/上一个指定字符处, f 指 find, 例如 fa 跳到下一个字母 a
  • t<字符> T<字符> 跳到下/上一个指定字符前, t 指 to, 例如 t, 跳到下一个逗号前
  • [命令对应按键] 整行
  • w(W) ( 以空格分割的 )下个单词首字母
  • b 当前单词开头
  • e 当前单词结尾
  • 1G 第一行. 类似地, 10G就是第十行
  • G 最后一行
  • ( ) 上一句/下一句

小写的 动作 意味着单词间的分隔符包含标点

动作单独使用时为移动光标

文本对象 (text object)

参考: 用 text objects 高效编辑

文本对象由它的类型和范围组成, 如ciw中, c 是动作, iw 是文本对象. 其中 i 是范围, w 是类型

文本对象的范围

a 英文单词 “a” 或者 around, 会包括标点/空白符
i 表示 inner 或 in

文本对象的类型

共八种: w s p "" <> [] () {}
以及相应的大写. 如同前面的笔记所写, 大写无视标点.

举例

di" i 表示 in, 删除双引号中的内容
ca' a 表示 around, 连同单引号一起更改
diw iw 即 inner word. 删除光标下单词.
dap 删除一个段落, 包括空白符.

发表评论

您的电子邮箱地址不会被公开。