2013-09-26 3 views
6

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

/admin/action1.php 
/action1.php 

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

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

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

enter image description here

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

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

Migrations 
Seeds 
Admin Controllers 
Admin Views 
Config 
+0

Возможный дубликат [Howto организовать буферы, окна и вкладки Vim при работе со многими файлами] (http://stackoverflow.com/questions/3832905/howto-organize-vim-buffers-windows-and-tabs-when- work-with-many-files) – glts

+0

... см. также [Как перемещаться по большому проекту в VIM] (http://stackoverflow.com/q/1457540) (и многие другие подобные вопросы). – glts

+0

Вы правы, это обычная проблема. Я пытался показать свои настройки с помощью определенных плагинов и как он выглядит в моем проекте. Надеясь, что, возможно, мне нужно использовать другой плагин, настроить плагины, которые у меня уже есть, или найти указатели на то, как должен выглядеть рабочий процесс. – BlueNile

ответ

6

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

  1. Вкладки не предназначены на всех в качестве прокси-файлов, как они находятся в других редакторах. Вкладки - это рабочие области, позволяющие вам организовать окна, как вам нравится. Они являются лучшими кандидатами для вашего

    Migrations 
    Seeds 
    ... 
    

    сценарий.

    Вот один из возможных способов создать вкладку «Migration»:

    :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, tag-jumping - моя любимая техника навигации, и я обычно не использую вкладки или окна.

+0

1. Именно так я использую вкладки. Я использую плагин vim-session и изменение имени Tab не сохраняется. Когда я восстанавливаю сеанс, все его ушло. Мне нравится ваша идея CtrlPTags, и я попытаюсь реализовать ее, вместо того чтобы использовать чисто файлы в качестве ссылки, – BlueNile

+0

NerdTree имеет функцию закладки, поэтому вы можете пометить свои основные папки и быстро их получить. Вы можете настроить свой nerdtree, чтобы всегда показывать список закладок с помощью этой строки 'let NERDTreeShowBookmarks = 1' –

-1

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

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

+0

Im знает, что VIM не в среде IDE. Я могу делать все, что хочу в VIM, кроме организации моего рабочего процесса, поэтому я могу легко перейти к файлу, который мне нужен в данный момент. – BlueNile

0

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

Это утверждение неверно. Оформить заказ my other answer по этой теме.

Удачи.

+0

Я пробовал YouCompleteMe раньше, и я не мог заставить его работать. На моем Mac он запускает фантастическое тесто. Сегодня я работал над этим утром. Я попробовал вашу версию vim и ваш скомпилированный плагин YCM, и все, что я получаю, это «YouCompleteMe недоступно: ycm_core слишком старый, ПОЖАЛУЙСТА, РЕКОМЕНДУЙТЕ ycm_core», когда я запускаю Vim. – BlueNile

+0

Вы явно что-то не так. Вы уверены, что у вас есть 'libclang.dll' в переменной' PATH'? –

+0

Кроме того, прочитайте раздел ** Common Pitfalls ** в [мой другой ответ] (http://stackoverflow.com/questions/18693526/vim-completion-with-youcompleteme-on-windows/18900115#18900115). –

2

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

Вы можете проверить new demo video на YouTube.