vim - 你如何在 VIM 中处理大型项目

标签 vim nerdtree minibufexplorer ctrlp

我有很多级别的文件夹的大型项目。某些文件的名称相同,并且根据文件夹名称的不同,它们的功能也有所不同。例如

/admin/action1.php
/action1.php

第一个是指管理任务,第二个是由用户访问。
Vim 很快就会被标签和缓冲区弄得乱七八糟,并且很难移动。
我正在使用的插件是:
Nerd 树
控制键
迷你Buff浏览器

我在 Windows 上使用 gVim 并且像 YouCompleteMe 这样的插件不是一个选项。
  • NerdTree - 太笨拙,无法在大型项目的文件夹之间来回移动
  • CtrlP - 您必须通过一直输入名称来了解您要查找的内容
  • MiniBuffExplorer - 可笑的文件数量,占用了屏幕上的太多空间,无法找到任何东西
  • Vim-Session - 打开项目的保存选项卡/窗口

  • enter image description here

    正如您在图片上看到的那样,有许多选项卡可以记住女巫标签对应于代码的女巫部分。 MiniBuffExplorer 没有太大帮助。

    所以我的问题是,你将如何在 VIM 中处理大型项目,以便最好按照它们的功能或代码部分来组织事物。有没有干净的方法来做到这一点?
    有没有办法对缓冲区或选项卡进行分组,例如:
    Migrations
    Seeds
    Admin Controllers
    Admin Views
    Config
    

    最佳答案

    我不认为这些工具有问题,在这里。更重要的是你如何使用它们。

  • 选项卡根本不像在其他编辑器中那样设计为文件代理。选项卡是工作区,允许您按照自己喜欢的方式组织窗口。他们是您的最佳人选
    Migrations
    Seeds
    ...
    

    设想。

    这是创建“迁移”选项卡的一种可能方法:
    :tabnew | lcd path/to/Migration
    

    从那里,您在该选项卡中创建的所有窗口都将继承 Migration工作目录和每个 :e , :sp , :vs甚至 :vim将从该工作目录开始。

    此外,这将使 NERDTree 和 netrw 默认显示本地工作目录的内容。

    :help seeting-tabline:help setting-guitablabel如果要更改选项卡的名称。
  • 您应该使用 CtrlP 的路径模式对整个路径而不是文件名进行匹配:
    fbruse
    

    会匹配:
    foo/bar/user
    

    但不是:
    baz/vroom/user
    

    使用上面的选项卡设置,CtrlP 的建议应该限制在 Migration目录,使它更快。

    但是 CtrlP 并不完美:它在大型项目中可能会很慢,因此请确保您阅读整个文档。
  • 当您拥有少量开放缓冲区时,一个“永远在线”的开放缓冲区列表可能是一个好主意,但与选项卡一样,它显然根本无法扩展。当您真正想要切换缓冲区时显示列表要好得多:更少的屏幕空间和脑细胞浪费!
  • 但是请注意,虽然可以定义窗口本地参数列表,但 AFAIK 无法定义窗口本地缓冲区列表。由于参数列表总是泄漏到缓冲区列表中并且缓冲区列表是全局的,缓冲区命令将始终处理相同数量的缓冲区,无论您在哪个选项卡中。因此限制了选项卡的一般用途。
  • 文件不是处理大型项目的一个很好的比喻:当你的程序由函数、类、数组、变量......而不是文件组成时,你必须在脑海中保留一个复杂的符号->文件映射。

    使用标签( :help tags )是一种非常方便的跳转项目的方法:
    :tag foo
    :tag bar<Tab>
    :ptag /baz<Tab>
    

    和 CtrlP 的 :CtrlPTags让它几乎很有趣。

  • FWIW,标签跳转是我最喜欢的导航技术,我通常不使用选项卡或窗口。

    关于vim - 你如何在 VIM 中处理大型项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19030463/

    相关文章:

    vim:带有确认键的映射命令

    vim - 如何切换进出 NERDtree?

    vim - 有没有一种方法可以在VIM中环绕窗口导航

    vim - 如何在 Vim 中重置拆分?

    VIM:不是编辑器命令:MiniBufExplorer

    regex - vim中的非贪婪多行搜索

    Vim 的 Ctrl+P 自动完成标识符带有破折号 '-'

    macos - 在 NERDTree View 和文件 View 之间切换焦点

    vim - minibufexplorer(vim)的替代品?

    vim - 在Vim中就地编辑文件