说你有这个文字:
SOMETHING_XXXXXXXXXXXXXX_ELSE
SOMETHING_XXXXXXXXXXXXXX_ELSE2
SOMETHING_XXXXXXXXXXXXXX_ELSE3
SOMETHING_XXXXXXXXXXXXXX_ELSE4
您想用这个词替换所有XXX..XXX
:
HELLOWORLD
如果我进入视觉模式,然后猛拉这个词,我怎么能用切割和粘贴替换上面4行中的XXX..XXX
?
如果我尝试,会发生什么是X进入我的'剪贴板',然后我只是手动输入它。
答案 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
。让我解释一下这个命令:
答案 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 /克