说,我有一个文件:
printf
如果我将第一行中的单词int main(int argc, char* argv[printf("Hello there!")]){/*...*/}
更改为Program foo
<program text>
End Program foo
(可能不是文件的第一行),最后一行{{1>还会自动更改为foo
吗?
答案 0 :(得分:1)
您可以使用全局命令以及查找和替换来标记应该替换的区域的开始停止
:g/^Program foo$/.,/foo$/s//bar
<强>击穿强>
:g Starts the global command
/^Program foo$ Search for Program foo where the line starts with Program and ends with foo
/.,/foo$/ for each mach, expand the rang until the next foo at the end of the line
s//bar substitute your last search results with bar
答案 1 :(得分:0)
我通常做以下事情:
*
或#
(分别向前或向后搜索此单词,仅整个单词,因此仅在您的示例中{{找到1}}次发生,而不是foo
或foobar
)myfoo
caw<new name><ESC>
跳转到下一个可能的位置,按n
重复更改名称操作你也可以使用.
之类的单一搜索和替换命令,然后在每:%s/\<foo\>/new_name/gc
次出现时按y
或n
,但我个人更喜欢以上方法,因为它使我免于键入foo
并且不记得将foo
和\<
放在它周围(\>
/ #
为我这样做。)
如果您确定要将*
的所有次出现替换为foo
,则可以省略搜索中的bar
onfirm标记 - 和-replace命令,这将是我能想到你做的事情的最短路。
答案 2 :(得分:0)
你可以尝试这个插件,我认为这正是你想要的:
答案 3 :(得分:0)
假设您的光标在程序名称上,这可以很容易地完成。
更改计划名称:
ciW
foobar<Esc>
转到程序结束:
/End<CR>
$
重复更改:
.