vim标记可以使用重复键吗?

时间:2011-09-15 20:27:55

标签: vim

我经常使用.键重复我的上一个vim命令。我想知道是否有办法将它与使用标记执行的命令一起使用。这是一个简单的例子:

  • 使用m'a
  • 标记一行文字
  • 向下移动几行,例如5j
  • 使用>'a - 缩进6行
  • 缩进行
  • .在相同的6行重复上述命令 - 仅影响第1行

使用.命令时,有没有办法让vim应用上一个命令的相同标记范围?

PS。我知道上面的示例可以更容易使用6>>,它与.一起使用,我只是以它为例。我经常使用标记来表示更复杂/更长的命令。

1 个答案:

答案 0 :(得分:1)

问题是你重复的命令是>'a,但由于规则“在应用操作符后,光标主要留在操作文本的开头”(来自{{ 1}}),:help operator将光标留在标记>'a,如果它高于您的起始位置。然后,当你重复a时,你最终会从该线到自身的直线运动,这只会重新缩进一行。

由于您处于文本块的开头,要再次影响同一文本块,您可以使用>'a(线性)或'](charwise)运动到受影响的文本块的 end 。因此,您可以使用`]再次缩进同一个块,并且由于此次光标在同一位置开始和结束,您可以使用>']重复一次。

更简单的选择是使用.代替V5j>ma5j>'a在您当前位置启动可视模式(线性),V向下移动5行,然后5j缩进。当您重复使用>时,相同的视觉选择仍然属于您,无论您是向上还是向下移动,都可以获得所需的结果。