6

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

/admin/action1.php
/action1.php

第一个将涉及管理任务,第二个将由用户访问。Vim 很快就会被选项卡和缓冲区弄得乱七八糟,而且很难移动。我正在使用的插件是:NERDTree CtrlP MiniBuffExplorer

我正在为 Windows 使用 gVim,而像 YouCompleteMe 这样的插件不是一个选项。

  • NerdTree - 太笨拙,无法在大型项目的文件夹之间来回移动
  • CtrlP - 你必须通过输入名字来知道你在寻找什么
  • MiniBuffExplorer - 拥有大量可笑的文件,占用屏幕上的大量空间,并且无法找到任何内容
  • Vim-Session - 打开项目的保存选项卡/窗口

在此处输入图像描述

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

所以我的问题是,你将如何在 VIM 中处理大型项目,以更好地通过它们的功能或代码部分来组织事物。有干净的方法吗?有没有办法对缓冲区或选项卡进行分组,例如:

Migrations
Seeds
Admin Controllers
Admin Views
Config
4

4 回答 4

6

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

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

    Migrations
    Seeds
    ...
    

    设想。

    这是创建“迁移”选项卡的一种可能方法:

    :tabnew | lcd path/to/Migration
    

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

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

    如果您想更改选项卡的名称,请:help seeting-tabline查看。:help setting-guitablabel

  2. 您应该使用 CtrlP 的路径模式来匹配整个路径而不是文件名:

    fbruse
    

    将匹配:

    foo/bar/user
    

    但不是:

    baz/vroom/user
    

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

    不过 CtrlP 并不完美:在大型项目中它可能会很慢,因此请确保您阅读了整个文档。

  3. 当您拥有少量的开放缓冲区时,“始终在线”列表可能是一个好主意,但就像选项卡一样,它显然根本无法扩展。当您真正想要切换缓冲区时,最好显示列表:更少的屏幕空间和脑细胞浪费!

  4. 但是请注意,虽然可以定义窗口本地参数列表,但 AFAIK 无法定义窗口本地缓冲区列表。由于参数列表总是泄漏到缓冲区列表中并且缓冲区列表是全局的,因此缓冲区命令将始终处理相同数量的缓冲区,无论您在哪个选项卡中。因此限制了选项卡的一般用途。

  5. 文件不是处理大型项目的一个很好的比喻:当你的程序由函数、类、数组、变量......而不是文件组成时,你必须在脑海中保留一个复杂的符号->文件映射

    使用标签 ( :help tags) 是在项目中跳转的一种非常方便的方法:

    :tag foo
    :tag bar<Tab>
    :ptag /baz<Tab>
    

    而 CtrlP:CtrlPTags让它几乎很有趣。

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

于 2013-09-26T15:58:33.543 回答
2

你可能想看看Vim-CtrlSpace,它非常适合处理大型项目。此插件可帮助您处理选项卡、缓冲区、会话等。

您可以在 YouTube 上查看新的演示视频。

于 2014-05-06T21:39:58.537 回答
0

我正在为 Windows 使用 gVim,而像 YouCompleteMe 这样的插件不是一个选项。

这种说法是错误的。查看我关于这个特定主题的其他答案。

祝你好运。

于 2013-10-02T11:23:39.370 回答
-1

Vim不是 IDE;在我看来,您正在挑战 Vim 中有意义(同时打开)的极限。您可以轻松设置简单的集成,允许您从 IDE 在 Vim 中打开文件。

我建议您在最适合的地方使用每种工具:用于管理和浏览大型项目的 IDE,以及具有卓越文本编辑功能的 Vim!

于 2013-09-26T14:57:05.897 回答