在vim中重复行

Mau*_*fer 9 vim vi

我有一些这样的文本行:

firstName
lastName
email
Run Code Online (Sandbox Code Playgroud)

现在我添加private readonly string到第一行的开头。如何对其他行重复此编辑?(当然不是手动访问每一行)(顺便说一句,我确实意识到这可以用正则表达式来完成,但如果可能的话,我正在寻找一种“vi方式”)

以防万一,我正在使用VsVim

Zek*_*eke 9

firstName在普通模式下向上导航并键入

qaIprivate readonly string <ESC>jq
Run Code Online (Sandbox Code Playgroud)

这将记录a您在行的开头添加“私有只读字符串”的宏(在寄存器中),然后向下移动一行。如果要重复此宏两次(从而为接下来的两行重复该命令),请在命令模式下键入2@alastName行,这将再次执行该宏两次。


这种方法满足了你“不手动访问每一行”的要求;但是它对您的应用程序来说有点重量级。

如果它private readonly string是您反对的输入,一个快速的解决方案是在第一行进行编辑,然后向下移动到您要进行编辑的每一行并.在普通模式下使用。这将毫不费力地重复您的最后一个命令(在这种情况下将文本添加到行中)。


Cyb*_*ira 8

:normal 也很棒(而且更短):


:.,+2norm Iprivate readonly string 
Run Code Online (Sandbox Code Playgroud)
  • .,+2- 从这里到下面的 2 行(或者您可以使用视觉模式shift+选择行v,然后输入:进入 ex 模式)
  • norm - 输入这些命令,就像我在正常(命令)模式下输入它们一样
  • I(...) - 在行首插入以下字符串


Mik*_*itz 7

另一种方法是使用Visual Block 模式

  1. 从第一行开头的光标开始。
  2. Ctrl+v进入可视块模式。
  3. j向下移动,扩展选择以包括您想要的行。
  4. I进入(预置)插入模式。
  5. 键入private readonly string
  6. Esc。这将导致您返回命令模式,并且您键入的文本将在视觉块选择开始之前的每一行上重复(在这种情况下,在每行的开头,因为那是您开始选择的地方) .