有没有办法在 Vim 中设置文件的编辑范围,以便它适用于任何后续命令?我即将对一个函数进行一些重大重构,并且我想将我的所有更改(在本例中为替换)限制为该函数。过去我只是将函数复制到新缓冲区,进行更改并将其复制回主文件,但我希望有更聪明的方法。
我知道我可以在函数的开头和结尾设置一个标记,并将标记用于替代命令的范围,我知道我可以使用可视模式来选择行的范围,做一些事情,使用 gv 重新选择然后执行下一个命令,但这两种方法都依赖于我记住在每个命令之前指定范围。
还有其他建议吗?
这是一个很酷的折叠技巧:
折叠你的整个功能。
执行替换,:s/foo/bar/c<Enter>
注意c
“确认”标志,这在 Vim 中进行重构时至关重要。替换将应用于折叠中的每一行。AFAIK,您可以以这种方式运行任何 Ex 命令,但我从未将这个技巧与其他任何东西一起使用:s
和:g
/ :v
。
点击y/n
接受/拒绝每个替换。
在您接受/拒绝最后一个替换后,折叠立即返回其“关闭”状态:您不必为下一个替换键入范围。
GOTO 2
使用 vim http://www.vim.org/scripts/script.php?script_id=3075的 Narow Region Plugin将它们放在您的 vim 文件夹中并像这样使用:
:[range]NR
假设 vim 是用 +textobjects 编译的,你可以选择函数作为一个块。所以也许你正在寻找:
va{:s/foo/bar
仅在当前的 {} 括号函数中将 foo 替换为 bar。如果您的函数没有用大括号分隔,您可以编写一个函数来根据一些语法规则选择范围,但这可能足以满足您的需要。