Иногда бывает удобно иметь в 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 можно, выполнив следующие команды:
1 2 | cd ~/.vim /bundle git clone https: //github .com /scrooloose/nerdtree .git |
1 | :NERDTreeToggle |
Также можно отредактировать файл .vimrc для более удобной работой с NERDTree: Показать скрытые файлы в NERD Tree:
1 | let NERDTreeShowHidden=1 |
1 2 | autocmd VimEnter * NERDTree autocmd VimEnter * wincmd p |
1 | map <F2> :NERDTreeToggle<CR> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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
Иначе переключение не работает.
Эта строка еще и как предложенный выше скрипт работает! Закрывает дерево. СПС
Удалить