仅在特定行附加到可视块

Append to visual block only on specific lines

假设我有以下文字。

this.is.some.text
this.is.emos.text
this.is.some.text
this.is.emos.text

我想在 'Visual Block' 模式下编辑此文本,使文本看起来如下。

this.is.some.text
this.is.emos_suffix.text
this.is.some.text
this.is.emos_suffix.text

它应该像这样工作:

从视觉块模式或任何其他视觉模式实现该的唯一原生方法是使用替换:

:'<,'>s/emos/&_suffix<CR>

哪里……

  • 你按:,
  • Vim 为您插入范围 '<,'>,意思是“从第一个选定行 :help '< 到最后一个选定行 :help '>`,
  • s/emos/&_suffix 将给定范围的每一行中每个第一次出现的 emos 替换为其自身,:help s/\&,然后是 _suffix.

视觉选择通常是不必要的步骤,在这种情况下,视觉块模式完全没用,因为 AI 无论如何都会对选择的每一行进行操作。

另一种方法:

/emos/e<CR>
a_suffix<Esc>
n
.

另一个:

/emos<CR>
cgn<C-r>"
_suffix<Esc>
.

另一个,假设光标在样本的第一行:

:,'}s/emos/&_suffix<CR>

等等