Как вы работаете с большими проектами в VIM

У меня есть большие проекты со многими уровнями папок. Некоторые файлы имеют одинаковые имена, и в зависимости от имени папки их функции различаются. Например

/admin/action1.php
/action1.php

Первый будет относиться к административным задачам, а второй будет доступен пользователям. Vim очень быстро забивается вкладками и буферами, и его становится трудно перемещать. Плагины, которые я использую: NERDTree CtrlP MiniBuffExplorer

Я использую gVim для Windows, и плагины, такие как YouCompleteMe, не подходят.

  • NerdTree - слишком неуклюж, чтобы перемещаться между папками в больших проектах
  • CtrlP - вы должны знать, что ищете, постоянно набирая имена
  • MiniBuffExplorer - имеет нелепое количество файлов, занимает много места на экране и невозможно найти что-либо
  • Vim-Session - Открыть вкладку Сохранить / Windows для проекта

Как вы можете видеть на картинке, есть много способов помнить, что вкладка соответствует какой-либо части кода. MiniBuffExplorer не слишком помогает.

Поэтому мой вопрос заключается в том, как бы вы работали с большим проектом в VIM, чтобы все было организовано предпочтительно по их функциям или разделам кода. Есть ли чистый способ сделать это? Есть ли способ сгруппировать буферы или вкладки, такие как:

Migrations
Seeds
Admin Controllers
Admin Views
Config

4 ответа

Решение

Я не думаю, что инструменты виноваты здесь. Это больше, как вы их используете.

  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 делает это почти весело

Кстати, прыжки с тегами - моя любимая техника навигации, и я обычно не использую вкладки или окна.

Возможно, вы захотите взглянуть на Vim-CtrlSpace, он вполне подходит для работы над большими проектами. Этот плагин поможет вам иметь дело с вкладками, буферами, сессиями и многим другим.

Вы можете проверить новое демо-видео на YouTube.

Я использую gVim для Windows, и плагины, такие как YouCompleteMe, не подходят.

Это утверждение неверно. Проверьте мой другой ответ на эту конкретную тему.

Удачи.

Vim не является IDE; мне кажется, что вы раздвигаете границы того, что имеет смысл (открывать одновременно) в Vim. Вы можете легко настроить простые интеграции, которые позволят вам открыть файл в Vim из IDE.

Я бы посоветовал вам использовать каждый инструмент там, где это лучше всего: IDE для управления большими проектами и навигации по ним, а также Vim для его превосходных возможностей редактирования текста!

Другие вопросы по тегам