在 vim 中重复执行各行

在 vim 中重复执行各行

我有一些这样的文字行:

firstName
lastName
email

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

为了以防万一,我正在使用维姆

答案1

firstName在正常模式下导航至并输入

qaIprivate readonly string <ESC>jq

a这将记录您在行首添加“private readonly string ”的宏(在寄存器中),然后向下移动一行。如果您想重复此宏两次(从而重复下两行的命令),请在命令模式2@a下在该行上键入lastName,这将再执行两次宏。


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

如果private readonly string您反对输入,一个快速解决方案是在第一行进行编辑,然后向下移动到要进行编辑的每一行并.在正常模式下使用。这将重复您的最后一个命令(在本例中是将文本添加到行中),而不会造成任何麻烦。

答案2

另一种方法是使用视觉块模式

  1. 将光标放在第一行的开头。
  2. Ctrl+v进入 Visual Block 模式。
  3. 按下j向下移动,扩大选择范围以包含您想要的行。
  4. 按下I即可进入(前置)插入模式。
  5. 类型private readonly string
  6. Esc。这将使您返回命令模式,并且您输入的文本将被重复每行在您的可视块选择开始之前(在本例中,是在每行的开头,因为这是您开始选择的地方)。

答案3

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


:.,+2norm Iprivate readonly string 

  • .,+2- 从这里到下面的两行(或者你可以使用视觉模式shift+选择这些行v,然后输入:以进入 ex 模式)
  • norm- 像在正常(命令)模式下输入一样输入这些命令
  • I(...)- 在行首插入以下字符串

答案4

为了以交互方式执行此操作而不需要太多的思考和准备(如果您已经在第一行输入了文本,但后来发现您需要在几行中输入它):

  1. 按照通常的方式I在第一行插入文本。

  2. v按或V或打开视觉模式<c-v>

  3. 抓取所有要应用更改的行。在本例中,jj这样做就行了。

  4. 按下:norm .然后回车。

相关内容