25

Vimmers 知道.可以重复简单的更改。我试图建立一个可以重复或不能重复的列表,但是有一个列表吗?

我试图列出我知道可重复的内容:它们都是正常模式的命令:

  • 文本插入 : a, A, i, I, o,O
  • 涉及寄存器的文本更改:c, C, d, D, p, gp, P, gP, s, S, x,X
  • 其他文字变化:J, gJ, r, gr, R, gR, gU, gu, gw, gq, g?, ~, g~, <, >,=
  • 等效于可视模式下的这些操作。
  • 控制操作:C-A,C-X
  • gi将重复插入,但在当前光标位置,而不是在最后插入位置。所以它有点工作。

但不包括:

  • 所有移动和显示命令(这里不一一列举)
  • 所有折叠命令(z-命令,也很多)
  • 标记 ( m)
  • 替换重复 ( &, g&)
  • 冒号或过滤命令 ( !, :, Q)
  • 宏录制或播放(q@,将重复录制或播放时完成的最后一个可重复操作)。
  • Diff put 和 get ( dp, do)
  • 撤消 ( u, U, C-R)
  • 洋基 ( y)

我知道 tpope 的重复插件可以让自定义插件订阅重复机制。但是默认情况下,上面的列表好吗?

4

4 回答 4

4

我相信更改是修改当前缓冲区的任何命令。该.命令不包括 Ex 命令(因为我猜这是在很远的历史中固定在 vi 上的另一种模式),并且可以选择包含 yanks。

因此,对于您的列表,:help change.txt过滤 Ex 命令可能是最好的来源。

请注意,当无法应用更改命令(即发出哔声)时,它也不会被注册为重复;命令执行必须成功。

于 2012-09-24T13:56:25.440 回答
2

与 v/V 的某些组合也可以“点”重复。

例如

Vgq、v/VU 或 v/Vu

于 2012-09-24T13:51:41.507 回答
1

Tim Pope'srepeat.vim可以制作repeat更多东西(包括类似的东西surround.vim和其他必备品)。

要重复一个动作,请查看,/ ;(正向/反向)。

重复 Ex 命令,@:是一个很好的组合键

于 2012-09-26T19:59:38.523 回答
1

插入模式表达式寄存器未被重新评估

示例:如果要对以下内联数字列表进行排序,

 first 3,2,17,198,232,1,999 and some other text
 second 1,2,3,71,98,4,5 and some more text

考虑使用表达式寄存器的这两种方式:

  1. ciW接着<C-r>=join(sort([<C-r>"]), ',')<CR>
  2. ciW接着<C-r>=join(sort(split(expand(@"), ',')), ',')<CR>

如果您尝试在第二行重复其中任何一个.,vim 只需再次从第一行输入相同的列表。这可能是其他人所期望的,但我希望通过第二种方式重新评估表达式寄存器。

于 2018-10-06T11:56:01.923 回答