Фиксация каталогов с помощью плагина VCSCommand при использовании дерева NERD - PullRequest
4 голосов
/ 09 марта 2011

Я использую vim 7.3, плагин NERDTree 4.1 и VCSCommand версии 1.99.42.

Чтобы зафиксировать каталог в VCSCommand, вам нужно открыть буфер каталогов (он одинаков со всеми командами в каталогах), однако всякий раз, когда я пытаюсь открыть буфер каталога с установленным плагином NERD Tree, он ссылается на буферкак Nerd_tree_ *, а не имя каталога, которое мне нужно, чтобы сделать соответствующий коммит.

Как я могу предотвратить это?Как открыть стандартный буфер каталога с установленным деревом NERD?Как периодически отключать NERD Tree для выполнения команды?

Примечание. Мне известен этот вопрос stackoverflow , где разработчик говорит, что он отключил плагин NERD Tree, поскольку он использовал Command-T в качестве файлового обозревателя, но я хотел бы продолжитьиспользуйте NERD Tree, в справке нет упоминаний об отключении NERD Tree.

Ответы [ 3 ]

3 голосов
/ 16 марта 2011

Решение есть, но требуется некоторое кодирование.

Вам необходимо обновить netrw и NERDTree плагины с видом включения / выключения интерфейса.

Я создаю эту суть для вас с двумя файлами, которые необходимо изменить. Сами файлы также прилагаются.

  • netrwPlugin.vim находится в каталоге установки vim в.
  • NERD_tree должно быть в вашем каталоге ~ / .vim / plugin (если вы не используете pathogen ).

С этим изменением вы можете использовать

call DisableNERDTree()

чтобы отключить NERD и заставить vim использовать netrw (это оригинальное управление файлами) и

call HijackNERTW()

Чтобы восстановить NERDTree снова.

Конечно, вы все равно вызываете функции до и после связанной команды VCS, либо используя свои собственные функции-оболочки, либо изменяя сам VCS.

Надеюсь, это помогло.

Редактировать 2011-03-17:

Вызов этих функций вручную работает хорошо. То есть:

  1. вы звоните call DisableNERDTree()
  2. потом редактируешь папку
  3. тогда вы используете команду VCS
  4. и наконец call HijackNERTW()

Я обновил патч , чтобы эти функции могли использоваться автоматически. DisableNERDTree() теперь меняет каталог на открытый. E.g.:

fun! NewVCSadd()
   call DisableNERDTree()
   :e . "start netrw
   :VCSAdd<CR>
   call HijackNERTW()
   :e . "start NERDTree
endfunction
1 голос
/ 02 июня 2011

Я использую простую комбинацию: Когда я планирую рекурсивную Diff или рекурсивную фиксацию - я запускаю команду: Hexplore, которая открывает netrw в разделенном окне, переходит в нужный каталог и запускает: VCSCommit или: VCSDiff. Это простое исправление без дополнительных изменений или сложных манипуляций:).

0 голосов
/ 17 марта 2011

Пример изменений Devemouse и функции позволил мне построить следующие 2 функции-оболочки, которые выполняют команду VCS и затем возвращают vim в свое предыдущее состояние

" ------------------ Functions ------------------------------

" Wrapper function for VCSAdd to enable it to work with Nerd tree
fun! NewVCSAdd()
   call DisableNERDTree()
   edit . "start netrw
   execute 'VCSAdd'
   call HijackNERTW()
   quit " quit add windows 
   quit " quit out of netrw-NerdTree window (we want it pure)
   NERDTree . 
endfunction

" Wrapper function for VCSCommit to enable it to work with Nerd tree
fun! NewVCSCommit(comment)
   call DisableNERDTree()
   edit . "start netrw
   execute 'VCSCommit ' . a:comment
   call HijackNERTW()
   quit " quit commit windows 
   quit " quit out of netrw-NerdTree window (we want it pure)
   NERDTree .
endfunction
...