仅在特定行上附加到可视块
假设我有以下文字。
this.is.some.text
this.is.emos.text
this.is.some.text
this.is.emos.text
我想在“可视块”模式下编辑此文本,使文本如下所示。
this.is.some.text
this.is.emos_suffix.text
this.is.some.text
this.is.emos_suffix.text
它应该像这样工作:
- 选择一个视觉块
- 如果视觉块包含 emos 将“_suffix”附加到视觉块(就像“A”命令一样)
回答
从视觉块模式或任何其他视觉模式中实现这一点的唯一本地方法是使用替换:
:'<,'>s/emos/&_suffix<CR>
在哪里…
- 你按
:, - Vim
'<,'>为你插入范围,意思是“从第一个选定的行:help '<,,到最后一个选定的行,:help'>`, s/emos/&_suffixemos将给定范围的每一行上的每个第一次出现替换为自身,:help s/&,然后是_suffix。
视觉选择通常是一个不必要的步骤,在这种情况下,视觉块模式完全没有用,因为A或I无论如何都会对选择的每一行进行操作。
另一种方法:
/emos/e<CR>
a_suffix<Esc>
n
.
另一个:
/emos<CR>
cgn<C-r>"
_suffix<Esc>
.
另一个,假设光标位于样本的第一行:
:,'}s/emos/&_suffix<CR>
等等。