Автообновление NERDTree


4

Я знаю , как обновить NERDTree вручную удар , Rкогда фокус находится в колонке NERDTree.

Я хотел бы, чтобы это было сделано автоматически.

Если событие необходимо, чтобы вызвать это, пусть это будет «всякий раз, когда пишется файл».

Кто-то предлагает добавить это в vimrc

nmap <Leader>r :NERDTreeFocus<cr>R<c-w><c-p>

чтобы сопоставить это с ключом.

Решение может быть сочетание этого и autocmd.


Ответ, на который вы ссылаетесь, не имеет положительных отзывов и фактически не работает, потому что синтаксис сопоставления неверен; что \|потребности быть отброшены.
— Инго Каркат

Разве я не должен был опубликовать это на vi.stackexchange.com ? Должен ли я попросить о миграции? (Я воздержался от публикации на SO, но не прошел весь путь туда ...)
— Jérôme

У SU меньше вопросов по Vim, но здесь достаточно экспертов, чтобы решить большинство проблем. VI сейчас наиболее активен, за ним следует SO. Попробуй VI в следующий раз, если только он незначительно связан с Vim (например, проблема с терминалом или установкой).
— Инго Каркат

Исправлен вопрос @IngoKarkat с цитированной строкой vimrc
— Jérôme

Ответы:


3

Собрав все воедино, можно сделать что-то вроде этого:

autocmd BufWritePost * NERDTreeFocus | execute 'normal R' | wincmd p

Вы можете добавить дополнительные события autocmd. Тем не менее, имейте в виду, что выше не обрабатывает случай, когда вы уже находитесь в окне NERDTree (но это может быть обработано с условным включением &filetype ==# 'nerdtree'). Затем это также будет работать на такие события, как CursorHold.


Благодарю. Так что это будет обновляться только при записи события, верно? То есть только когда я :wв vim, а не если внешняя программа изменяет файлы. Это оно?
— Жером

Потому что тогда я не понимаю, «когда вы уже находитесь в окне NERDTree». Я пишу файлы из окна редактирования файлов. Не уверен, что могу писать файлы из окна NERDTree. Может быть, это возможно, но не является частью моего рабочего процесса.
— Жером

Autocmd, как написано, должен работать (хотя не проверял). Когда вы добавляете другие события (например CursorHold, для обновления, когда Vim бездействует), он разваливается, и вам необходимо выполнить дополнительные проверки.
— Инго Каркат

ОК, только что проверил документы . Таким образом, ваша команда работает только при записи файла ( BufWritePostсобытия), что я всегда делаю из окна редактирования файла, а не из столбца NERDTree, так что это нормально. Нет такого события, чтобы обнаружить модификацию дерева файлов из другой программы, и на CursorHoldсамом деле это не так. Я в порядке с ограничением «только при записи в файл». Я привык писать файлы, просто чтобы в любом случае запустить Pylint.
— Жером

Недостатком этого, если я сделал это правильно, является то, что он открывает NERDTree, даже если он был закрыт перед операцией. Обычно я не открываю NERDTree при запуске vim, только вручную, в зависимости от моего использования.
— Жером
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.