你会如何在VIM中进行剪切和粘贴?

时间:2011-10-21 19:45:24

标签: visual-studio vim viemu

说你有这个文字:

SOMETHING_XXXXXXXXXXXXXX_ELSE
SOMETHING_XXXXXXXXXXXXXX_ELSE2
SOMETHING_XXXXXXXXXXXXXX_ELSE3
SOMETHING_XXXXXXXXXXXXXX_ELSE4

您想用这个词替换所有XXX..XXX

HELLOWORLD

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

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

5 个答案:

答案 0 :(得分:4)

我不确定它是否适用于viemu,但在VIM中你可以做以下事情......

使用Yank和粘贴

将文本提交到特定的注册表。在可视模式下选择文本,然后使用命令"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 - 将取代XXXXXXXXXXXXXX的字;

答案 1 :(得分:1)

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

  

Ctrl + v 3jt_cHELLOWORLD [Esc]

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

创建宏的另一种方法:

记录宏:

  

q10fXct_HELLOWORLD [ESC]●

在其他行上运行宏:

  

Ĵ@ 1J @ 1J @ 1

q1 在角色1上记录一个宏

@ 1 重播宏

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

答案 2 :(得分:0)

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

:'<,'>s/X\+/HELLOWORLD/g

答案 3 :(得分:0)

假设所有“XXX..XXX”都相同。那里的问题不清楚。
如果你想全球发挥

:%s/XXX..XXX/HELLOWORLD/gc

或仅针对指定的行:

:123,128s/XXX..XXX/HELLOWORLD/gc

答案 4 :(得分:0)

通过这个问题:How do I use vim registers?我发现命令模式下的^ R将从寄存器中粘贴。

例如,突出显示XXXX然后进入“注册: :S / ^ R“/ HELLOWORLD /克