Когда я открываю новую вкладку с путем, отличным от предыдущего файла в VIM, NERDTree по-прежнему остается той же иерархии каталогов предыдущего файла.
Существует ли ярлык синхронизации для изменения текущего корневого каталога на каталог нового открытого файла?
vim
gvim
nerdtree
vim-plugins
Jichao
источник
источник
<Leader>f
<leader>
?бросить знак% на конце, как босс
:NERDTree %
у меня есть это в моем .vimrc, он отображает Ctrl+ oдля переключения nerdtree в директории текущего буфера:
map <C-o> :NERDTreeToggle %<CR>
источник
Я нашел оба существующих ответа образовательными и успешно скомбинировал оба, так что поведение больше похоже на то, что многие ожидают от IDE: Нажмите на открытое окно / буфер и выделите этот файл в NERDTree. Я поместил это в мой ~ / .vimrc:
autocmd BufEnter * if &modifiable | NERDTreeFind | wincmd p | endif
Что это делает:
autocmd BufEnter
- запускается каждый раз, когда вы сосредотачиваетесь на буфере (включая окно NERDTree)if &modifiable
- когда вы щелкаете окно NERDTree, больше ничего не делаете (окно NERDTree не может быть изменено)wincmd p
- NERDTreeFind оставляет курсор сфокусированным на NERDTree; это переключается обратно на окно, на котором вы изначально сосредоточеныОбратите внимание, что это не будет работать на любом другом буфере, который нельзя изменить, но это, как правило, хорошо; в противном случае (например) каждый раз, когда вы
:help
заходите в vim, NERDTree будет находить и фокусировать каталог, в котором хранятся файлы справки - вероятно, это не то, что вам нужно.Поначалу это одностроковое решение отлично работало для меня, но вскоре я обнаружил, что оно вызывает активацию NERDTree каждый раз, когда я открываю файл, и, как следствие, предотвращает закрытие NERDTree! Если вы не хотите использовать NERDTree полный рабочий день, поместите это в ваш .vimrc:
источник
isNTFocused()
? Разве&modifiable
чек не покрывает этот случай?Function name must start with a capital or "s:": rc:isNTOpen()
Вы используете плагин, расширяющий возможности?.vimrc
в котором я написал этот код. Я не помню, почему я использовалrc:
, но я думаю, что это было пространством имен, чтобы избежать конфликтов имен с другими функциями. Насколько я помню, я не использовал плагин, специально связанный с этим. Вы должны будете изучить документы или просто попытаться опустить их и посмотреть, не сломается ли что-нибудь. Но я думаю, что одно из имен функций конфликтует с чем-то в NerdTree или где-либо еще. Больше 5 лет никто не спрашивал, поэтому у меня такое ощущение, что это что-то простое. :)Я столкнулся с этим вопросом вчера, после нескольких часов копания, я отправил Pull Request в репозиторий scrooloose nerdtree, вводя
NERDTreeCWD
команду, которая меняет корень дерева NERD на текущий рабочий каталог (Обновление 2012-11-12: PR был объединен в ведущий мастер, он должен использоваться в обновленной версии). С этим изменением этот вопрос может быть просто решен с помощью следующего кода.Сравните с подходом @ shinzui и @ Lambart
NERDTreeFind
, это именно то, что задал вопрос. ИспользованиеNERDTreeFind
изменит положение прокрутки у ботанического дерева, и результат не всегда будет одинаковым (если CWD находится в корне дерева NERD, он просто расширяет узел, вместо этого превращаясь в него).По сравнению с ответом @Yaser Sulaiman, это решение всегда имеет открытое окно дерева NERD и может быть легко закодировано. Если окно дерева NERD уже было открыто,
NERDTreeToggle
его нужно будет запустить дважды (сначала закройте существующее, затем откройте его снова), к сожалению, второе открытие пропустит всю обработку cwd.источник
Это ведет себя как,
:NERDTreeToggle
но покажет текущий открытый файл в NERDTree. Если вы еще не открыли файл (то есть, вы только что ввели егоvim
в командной строке), отобразится NERDTree/home
.Поместите это в ваш .vimrc:
источник
Я применяю оба решения из Изменить текущий каталог с помощью NERDTree : используйте
cd
для установки рабочего каталога NERDTree в текущий каталог иC
для установки корневого узла NERDTree в текущий каталогисточник
Я думаю, что этот плагин то, что вы хотите https://github.com/jistr/vim-nerdtree-tabs
источник
Я нашел ответ, который опубликовал Матиас, как отличный ответ с одной проблемой, он не очень хорошо работает в нескольких крайних случаях. Это работает немного лучше с изменением ниже:
источник