如何在vim的单词两边重复添加文本?

Jud*_*den 5 vi vim editor

我在Python脚本中有一堆本地变量引用,我想从字典中提取.所以,我需要本质上的变化foo,bar和其他人进入env['foo'],env['bar']等等.我是否需要编写正则表达式并将每个变量名称匹配以进行转换,或者是否有更直接的方法可以重复使用该.命令?

Pet*_*ter 6

您可以使用宏:一次性输入这些命令(仅用空格插入注释)

             " first move to start of the relevant word (ie via search)
qa           " record macro into the a register.
ienv['<esc>  " insert relevant piece
ea']         " move to end of word and insert relevant piece
q            " stop recording
Run Code Online (Sandbox Code Playgroud)

然后,当你在下一个单词时,只需点击@a重播宏(或者甚至@@重复上一次重播).


小智 5

有一种更简单的方法 - 您可以使用正则表达式搜索和替换.通过键入冒号进入cmdline模式,然后运行此命令:

%s/\\(foo\|bar\|baz\\)/env['\1']/
Run Code Online (Sandbox Code Playgroud)

替换foo,bar以及baz任何您的实际变量名称.您可以根据需要添加任意数量的其他变量,只需确保使用反斜杠转义OR管道.希望有所帮助.