При использовании плагина NERDTree поведение по умолчанию заключается в открытии нового файла и сохранении открытого буфера NERDTree. Я хочу сохранить это поведение по умолчанию, но также переопределить его, когда я хочу, чтобы буфер NERDTree был закрыт после того, как я открыл файл.
Я знаю, что могу использовать let NERDTreeQuitOnOpen=1
для автоматического закрытия буфера NERDTree при открытии нового файла, но эта опция полностью переопределяет поведение по умолчанию (а это не то, что мне нужно).
В идеале я хотел бы знать, есть ли встроенная функция в NERDTree, чтобы делать то, что я хочу. (Я искал, но ничего подобного не нашел, так что полагаю, что на самом деле его не существует)
И если этого не существует, у меня было две идеи:
Во-первых, нужно создать функцию, которая будет установлена
NERDTreeQuitOnOpen
на1
, открыть файл, а затем снова установитьNERDTreeQuitOnOpen
на0
.Второй - создать следующее отображение:
map d<CR> <CR> :NERDTree <CR> :bd<CR>
которое открывает файл (первый<CR>
), возвращается в буфер NERDTree (:NERDTree <CR>
) и закрывает этот буфер (:bd <CR>
). Я должен улучшить его, чтобы отображение существовало только в буфере NERDTree, но я чувствую, что это довольно уродливое решение, и я думаю, что оно может быть улучшено.
Какая идея будет лучшей и почему? Или есть еще лучший вариант?
источник
map d<cr> <cr>:NERDTreeClose<cr>
для картографии?Ответы:
Поскольку вопрос, кажется, не вызывает много ответов, я просто отвечу на него предложением @muru, которым я пользовался в течение недели, прежде чем переключиться на проводник netrw. (Конечно, если придет лучший вариант ответа, я с радостью сниму галочку с принятого и приму новый)
Идея состоит в том, чтобы использовать следующее отображение:
Который открывает файл, как обычно, и затем вызывает функцию, которая закрывает буфер NERDTree, независимо от того, где находится курсор.
РЕДАКТИРОВАТЬ: Я недавно переключился на NERDTree и переработал свое решение: отображение, которое я предлагал ранее, работало, но, поскольку оно существовало в каждом буфере, мне приходилось дважды нажимать dкаждый раз, когда я хотел удалить что-то, что довольно раздражает. (Возможно, я мог бы изменить
timeout
настройки, но мне нравится способ, которым он в настоящее время установлен для меня, также я не хотел отображать его на другую комбинацию клавиш).Поэтому я заменил свое первое решение на следующие строки
.vimrc
:Таким образом, отображение создается только в
NERDTree
буферах и не мешает моему рабочему процессу в других буферах.источник