dot命令究竟能重复什么?

时间:2012-09-24 13:38:04

标签: vim

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

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

  • 文字插入:aAiIoO
  • 涉及寄存器的文字更改:cCdDpgpPgPsSxX
  • 其他文字更改:JgJrgrRgRgU,{ {1}},gugwgqg?~g~<,{{1 }}
  • 在可视模式下等效于这些操作。
  • 控制操作:>=
  • C-A将在当前光标位置重复插入,而不是在最后插入位置。所以有点有效。

但它不包括:

  • 所有移动和显示命令(此处列出的数量太多)
  • 所有折叠命令(z命令,也很多)
  • 马克(C-X
  • 替换重复(gim
  • 冒号或过滤器命令(&g&!
  • 录制或播放(:Q时,会重复录制或播放时的最后一次可重复操作。
  • Diff put and get(q@
  • 撤消(dpdou
  • Yanks(U

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

4 个答案:

答案 0 :(得分:4)

我相信更改是修改当前缓冲区的任何命令。 .命令排除了Ex命令(因为这是一个不同的模式,我想在远程历史中用螺栓连接到vi),并且可以选择包括yanks。

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

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

答案 1 :(得分:2)

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

e.g。

Vgq,v / VU或v / Vu

答案 2 :(得分:1)

Tim Pope repeat.vim可以让repeat更多的东西(包括像surround.vim和其他必须拥有的东西)。

要重复动作,请查看 / ; (前进/后退方向)。

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

答案 3 :(得分:0)

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

示例:如果要对以下嵌入式数字列表进行排序,

getToiletList(LiveData<Toilet>)

使用表达式寄存器考虑以下两种方式:

  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 然后是ciW
  2. <C-r>=join(sort([<C-r>"]), ',')<CR>然后是ciW

如果您尝试用<C-r>=join(sort(split(expand(@"), ',')), ',')<CR>在第二行中重复其中任何一个,vim只需从第一行再次输入相同的列表。 这可能是其他人所期望的,但是我希望第二种方式可以重新评估表达式寄存器。