3

假设您有以下文字:

SOMETHING_XXXXXXXXXXXXXX_ELSE
SOMETHING_XXXXXXXXXXXXXX_ELSE2
SOMETHING_XXXXXXXXXXXXXX_ELSE3
SOMETHING_XXXXXXXXXXXXXX_ELSE4

你想XXX..XXX用这个词替换所有:

HELLOWORLD

如果我进入可视模式,然后拉出这个词,我怎么能用XXX..XXX剪切和粘贴替换上面 4 行中的?

如果我尝试,会发生什么是 X 进入我的“剪贴板”,然后我只能手动输入它。

4

4 回答 4

4

我不确定它是否可以在 viemu 中工作,但在 VIM 中你可以执行以下操作...

使用 Yank 和 Paste

将文本拉到特定的寄存器。在可视模式下选择文本并使用命令"ay将文本拉到寄存器a中。然后在粘贴时调用命令"ap,该命令将粘贴a寄存器的内容。

使用普通命令

但我强烈希望使用普通命令。只需选择行

SOMETHING_XXXXXXXXXXXXXX_ELSE
SOMETHING_XXXXXXXXXXXXXX_ELSE2
SOMETHING_XXXXXXXXXXXXXX_ELSE3
SOMETHING_XXXXXXXXXXXXXX_ELSE4

使用线视觉模式 ( <C-v>),然后发出以下命令::'<,'>normal fXct_HELLOWORLD. 然后你会有

SOMETHING_HELLOWORLD_ELSE
SOMETHING_HELLOWORLD_ELSE2
SOMETHING_HELLOWORLD_ELSE3
SOMETHING_HELLOWORLD_ELSE4

这意味着它将fXct_HELLOWORLD为每一行运行命令。让我解释一下命令:

  • fX - 将光标移动到第一个 X;
  • ct_ - 删除所有内容直到 _ 并将您置于插入模式;
  • HELLOWORLD - 替代 XXXXXXXXXXXXXXX 的单词;
于 2011-10-21T20:14:22.067 回答
1

一种方法是直观地选择要替换的所有代码并立即更改它

Ctrl+v 3jt_cHELLOWORLD[Esc]

注意:更新所有行需要几秒钟

另一种方法是通过创建一个宏:

录制宏:

q10fXct_HELLOWORLD[esc]q

在其他行上运行宏:

j@1j@1j@1

q1在字符 1 上记录一个宏

@1重播宏

但是搜索和替换是您问题的一个很好的选择

于 2011-10-21T19:58:19.280 回答
0

在可视模式下突出显示四行,然后

:'<,'>s/X\+/HELLOWORLD/g
于 2011-10-21T19:50:59.663 回答
0

通过这个问题:如何使用 vim 寄存器?我发现 ^R 在命令模式下会从寄存器粘贴。

例如,突出显示 XXXX,然后将其拉入“寄存器::s/^R”/HELLOWORLD/g

于 2011-10-21T19:56:57.933 回答