我有一些非常有用的插件可以通过文件查找和替换文本(请参阅EasyGrep
vim脚本 - 这对程序员非常有帮助).我甚至可以只在当前缓冲区中替换文本 - 使用插件或:%s ...
.但是如果我只想在当前函数体中替换文本呢?
请考虑以下示例:
void f0()
{
int foo = 0;
// ...
}
// 99 other functions that uses foo as local variable.
void f100()
{
int foo = 0; // I want to replace foo with bar only in this function
// 1000 lines of code that uses foo goes below
// ...
}
Run Code Online (Sandbox Code Playgroud)
当然,我可以使用:%s ...
具有c
标志进行确认,但我相信有一个更快的方法来做到这一点.
谢谢.
Xav*_* T. 13
您可以使用%
或在选择上将替换应用于整个文件.
要创建选择:
以Visualwise的可视模式进行,例如Shift+v
,选择几行,然后键入:
.
您的提示将如下所示:
:'<,'>
它表示:当前选择
然后输入s/foo/bar/g
,它将在当前选定的行中用bar替换foo.
选择函数内容的更好方法是使用光标进入函数并键入:
vi}
它将选择{
和之间的所有内容}
.
有关:help text-objects
选择的更多提示,请参阅.
小智 6
您可以用V标记该函数。然后在:中键入命令时,它将自动添加前缀,并且仅在标记的区域中执行。
可能会有一个跳转到功能开始和功能结束的命令,因此您可以非常快速地执行开始功能,V,结束功能。但是不知道那些命令。