Как я могу заставить NERDTree открывать на том же диске, что и файл, который я редактирую? - PullRequest
5 голосов
/ 11 октября 2010

NERDTree показывает на диске области просмотра c: независимо от того, с какого диска мне открыть файл.

Когда я использую gvim в Windows, я открываю файлы, используя:

gvim.exe --remote-tab-silent [FILE]

Я загружаю NERDTree с этой строкой в ​​_vimrc:

au VimEnter * NERDTree

Может ли NERDTree автоматически сменить диск на корректный диск?

Ответы [ 4 ]

6 голосов
/ 13 ноября 2010

На самом деле мой последний ответ не работает, потому что как только NERDTree было открыто, оно не открывается снова в новом буфере dir.Он должен работать аналогично NERDTreeFind, но у него нет функции переключения.

Я сделал функцию и сопоставил ее с моим ключом, и теперь она отлично работает даже при открытии проекта Ruby, если у вас есть плагин vim-rails.

Добавьте это к вашему vimrc:

    function! NTFinderP()
    "" Check if NERDTree is open
    if exists("t:NERDTreeBufName")
        let s:ntree = bufwinnr(t:NERDTreeBufName)
    else
        let s:ntree = -1
    endif
    if (s:ntree != -1)
        "" If NERDTree is open, close it.
        :NERDTreeClose
    else
        "" Try to open a :Rtree for the rails project
        if exists(":Rtree")
            "" Open Rtree (using rails plugin, it opens in project dir)
            :Rtree
        else
            "" Open NERDTree in the file path
            :NERDTreeFind
        endif
    endif
endfunction


"" Toggles NERDTree
map <silent> <F1> :call NTFinderP()<CR>

Это должно работать сейчас.


Предыдущий ответ ниже:

Вы можете сопоставить ключ, который вы используете, чтобы открыть NERDTree, как это (в .vimrc):

map <silent> <F1> :NERDTreeToggle %:p:h<CR>

Это отображает мою клавишу F1 для переключения (открывать / закрывать) NERDTree, используя путь к текущему активному буферу.Если буфер не открыт, он открывается в текущем каталоге Macvim.

5 голосов
/ 12 октября 2010

NERDTree предоставляет несколько команд Ex для управления своим буфером (см. :help NERDTreeGlobalCommands). Среди них есть :NERDTreeFind команда, которая ведет себя так же, как и команда :NERDTree, за исключением того, что она открывается буфер NERDTree в каталоге, содержащем текущий открытый файл.

Итак, для достижения желаемого эффекта, описанного в вопросе, вы можете просто измените авто-команду на

:autocmd VimEnter * NERDTreeFind
1 голос
/ 17 августа 2012

Добавить

au VimEnter,BufWinEnter * NERDTreeFind

на ваш .vimrc.

  • Часть VimEnter заставляет его работать под нагрузкой.
  • BufWinEnter позволяет вам открыть новый файл.
  • * говорит это сделать со всеми файлами
  • NERDTreeFind - команда для запуска

SRCS: http://vimdoc.sourceforge.net/htmldoc/autocmd.html

1 голос
/ 11 октября 2010

Я использую отображение для NERDTree и, таким образом, когда я открываю, он всегда открывается в текущем каталоге

" NERDTree mappings
 nnoremap <silent> <F9> :NERDTreeToggle <cr>
 inoremap <silent> <F9> <Esc>:NERDTreeToggle <cr>

Но если вы откроете файл типа gvim ~/other/dir/file NERDTree откроет текущий каталог, откуда был вызван gvim,Так что это не реальное решение вашей проблемы.

Возможно, если вы cd в рабочем каталоге до вызова gvim, решите вашу проблему.В этом случае даже ваш au VimEnter * NERDTree в _vimrc должен работать так, как вы ожидаете.

Об изменении каталога и настройке рабочего каталога set autochdir читайте здесь

...