Иногда бывает удобно иметь в Vim дерево каталогов как в большинстве IDE. Оно реализовано в отдельном плагине — NERD Tree. При его включении в левой части экрана открывается дополнительное окно (так же, как если была вызвана команда :vsplit) с деревом каталогов, на которую можно переходить с помощью комбинации клавиш Ctrl+W+W, по ней можно перемещаться, открывать каталоги и открывать файлы для просмотра и редактирования
Устанавливать плагины в Vim рекомендуется через специальный плагин — Pathogen. Про установку Pathogen можно прочитать в Readme на его странице на Github. Если Pathogen уже установлен, установить NERD Tree можно, выполнив следующие команды:
После этого можно в открытом Vim NERD Tree всегда можно вызвать или закрыть командой:
Если, находясь в NERD Tree, нажать клавишу Enter на каталоге — в NERD Tree откроется его содержимое, на файле — его содержимое откроется в соседнем окне, вместо текущего открытого файла. Можно открывать файлы в новом окне, разделив экран вериткально (аналогично команде :vsplit) — клавишей s, и горизонтально (аналогично команде :split) — клавишей i.
Также можно отредактировать файл .vimrc для более удобной работой с NERDTree: Показать скрытые файлы в NERD Tree:
При открытии файла автоматически открывать NERD Tree и устанавливать курсор на открытом файле:
Использовать клавишу F2 для включения и отключения NERD Tree:
Закрывать NERD Tree при закрытии последнего файла можно с помощью такого скрипта в .vimrc:
Устанавливать плагины в Vim рекомендуется через специальный плагин — Pathogen. Про установку Pathogen можно прочитать в Readme на его странице на Github. Если Pathogen уже установлен, установить NERD Tree можно, выполнив следующие команды:
cd ~/.vim/bundle git clone https://github.com/scrooloose/nerdtree.git
:NERDTreeToggle
Также можно отредактировать файл .vimrc для более удобной работой с NERDTree: Показать скрытые файлы в NERD Tree:
let NERDTreeShowHidden=1
autocmd VimEnter * NERDTree autocmd VimEnter * wincmd p
map <F2> :NERDTreeToggle<CR>
function! NERDTreeQuit() redir => buffersoutput silent buffers redir END let pattern = '^\s*\(\d\+\)\(.....\) "\(.*\)"\s\+line \(\d\+\)$' let windowfound = 0 for bline in split(buffersoutput, "\n") let m = matchlist(bline, pattern) if (len(m) > 0) if (m[2] =~ '..a..') let windowfound = 1 endif endif endfor if (!windowfound) quitall endif endfunction autocmd WinEnter * call NERDTreeQuit()
Для выхода лучше использовать
ОтветитьУдалитьautocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
Иначе переключение не работает.
Эта строка еще и как предложенный выше скрипт работает! Закрывает дерево. СПС
Удалить