VIM:仅考虑当前代码块

VIM:仅考虑当前代码块,vim,Vim,我已经开始开发一个巨大的PHP应用程序,每个文件中有数千行代码,同一个文件中有很多巨大的if块、类和函数。我不是唯一的开发人员,所以我不能重构 我尝试过使用标签列表插件,但它并没有真正的帮助。有没有办法让VIM只考虑一个特定的代码块,而忽略文件的其余部分?我希望获得以下部分或全部功能: 仅为当前代码块启用行号,从包含开头{的行的1开始,并对其前面或结尾}之后的行不显示编号 使用/搜索将仅限于有问题的块 我的思路是,在启用模式时选择当前块并在新缓冲区中编辑它,然后在退出模式时用编辑过的块替换现有块

我已经开始开发一个巨大的PHP应用程序,每个文件中有数千行代码,同一个文件中有很多巨大的if块、类和函数。我不是唯一的开发人员,所以我不能重构

我尝试过使用标签列表插件,但它并没有真正的帮助。有没有办法让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
    

    map-mOaBy:newp:set-nu:set-ft=phpggi即使这不是您想要的解决方案,我认为以下内容可以帮助您解决问题

    您可以使用,它按PHP语法折叠(函数、类、方法、PhpDoc…)


    然后,您可以通过在关闭的折叠上按
    v$
    选择折叠,并使用
    :which
    执行所需的任何操作。例如,
    :s/this/self/g
    将折叠中的所有
    this
    替换为
    self
    。当您按下
    ,vim将自动添加
    ”如果vim允许您要求的行号,我会非常惊讶


    (和1或2个类似的IIRC)允许您直观地选择当前文件的一个区域,在另一个缓冲区中对其进行处理,并将所有内容放回原始文件中的位置(位于
    :w

    请参见函数限制搜索:@kikuchiyo:这对于偶尔搜索很有帮助,但对于在块中进行大量搜索很繁琐。因此,我们希望为感兴趣的块提供一个单独的缓冲区。谢谢,这些插件看起来可能满足了我的需要。