Как вы работаете с большими проектами в 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 ответа
Я не думаю, что инструменты виноваты здесь. Это больше, как вы их используете.
Вкладки не предназначены для прокси файлов, как в других редакторах. Вкладки - это рабочие пространства, позволяющие вам организовывать окна так, как вам нравится. Они лучшие кандидаты для вашего
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
делает это почти весело
Кстати, прыжки с тегами - моя любимая техника навигации, и я обычно не использую вкладки или окна.
Возможно, вы захотите взглянуть на Vim-CtrlSpace, он вполне подходит для работы над большими проектами. Этот плагин поможет вам иметь дело с вкладками, буферами, сессиями и многим другим.
Вы можете проверить новое демо-видео на YouTube.
Я использую gVim для Windows, и плагины, такие как YouCompleteMe, не подходят.
Это утверждение неверно. Проверьте мой другой ответ на эту конкретную тему.
Удачи.
Vim не является IDE; мне кажется, что вы раздвигаете границы того, что имеет смысл (открывать одновременно) в Vim. Вы можете легко настроить простые интеграции, которые позволят вам открыть файл в Vim из IDE.
Я бы посоветовал вам использовать каждый инструмент там, где это лучше всего: IDE для управления большими проектами и навигации по ним, а также Vim для его превосходных возможностей редактирования текста!