我已经开始研究一个庞大的PHP应用程序,它在每个文件中都有数千行代码,在同一个文件中存在许多巨大的if块,类和函数。我不是唯一一个开发它的人,所以我无法重构!
我尝试过使用Tags List插件,但实际上并没有帮助。有没有办法让VIM只尊重特定的代码块,并忽略文件的其余部分?我希望能够获得部分或全部这些功能:
{
的行的1开始,并且在其前面或结束}
之后的行中不显示编号。/
进行搜索仅限于相关区块。我正在考虑选择当前块并在启用模式时在新缓冲区中编辑它,然后在退出模式时用已编辑的块替换现有块。但是,我实际上无法实现此功能。我目前的版本是:
map <F7> <Esc>mO<C-V>aBy:new<Return>p:set nu<Return>:set ft=php<Return>ggi<?php<Return><Esc>
map <F8> <Esc>ggdd<C-V>aBx:bp<Return>`O<C-V>aBp
但是,这有几个问题,例如无法执行增量保存。
答案 0 :(得分:2)
如果Vim允许您要求的行编号,我会非常惊讶。
This plugin(以及1或2个类似的IIRC)允许您直观地选择当前文件的某个区域,在另一个缓冲区中处理它并将所有内容放回原位文件{{1 }}
答案 1 :(得分:1)
即使它不是您想要的解决方案,我认为以下内容可以帮助您解决问题。
您可以使用phpfolding plugin,它通过PHP语法折叠(函数,类,方法,PhpDoc ...)
然后,您可以在关闭的折叠上按v$
选择折叠,然后使用:whatever
执行任何操作。例如,:s/this/self/g
将所有this
替换为self
。当您按:
时,vim会自动添加'<,'>
以表示仅对视觉选择的文字执行以下命令。