Автообновление 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, только вручную, в зависимости от моего использования.
Жером