Предполагая, что файл не имеет несохраненных изменений в буфере VIM, я бы хотел, чтобы он автоматически перезагружался, если файл изменяется на диске. Наиболее частый вариант использования этого - когда я обновляю рабочую копию, в которой находится файл.
Как мне этого добиться?
Ответы:
В вашем
~/.vimrc
:источник
autoread
срабатывает только после выполнения внешней команды. Этот ответ детализирует решения.Это то, что сработало для меня
Первая строка не была достаточно сама по себе. Вы можете положить в себя
.vimrc
кредит Фан Хай Куанг
источник
:help timestamp
, похоже, "" указывает на то, что я ошибся, а Vim выполняет проверку только определенных событий, поэтому autocmd может понадобиться для более частой проверки.Авточитание не работает правильно. Следующие работы для меня:
Вам необходимо сначала установить скрипт здесь .
Я получил лучшие результаты, вызвав функцию настройки напрямую, вот так.
Причина этого в том, что я хочу запустить установку ipython / screen / vim.
Вы можете легко преобразовать это в расширенную версию представления.
Сценарий процесса ..
источник
Плагин vim-autoread сработал для меня до сих пор:
источник
j
), чтобы увидеть эффективное обновление. Я создал здесь проблему по этому поводу: github.com/djoshea/vim-autoread/issues/3из этого ответа (ссылаясь на ответ PhanHaiQuang и комментарий @flukus)
При необходимости можно запустить этот oneliner из ex (с vim) (или поместить каждую команду в vimrc, когда открываются лог-файлы).
:set autoread | au CursorHold * checktime | call feedkeys("lh")
Объяснение:
- autoread : читает файл при изменении извне (но он не работает сам по себе, нет внутреннего таймера или чего-то в этом роде. Он будет читать файл только тогда, когда vim выполняет действие, как команда в ex
:!
- CursorHold * checktime : когда курсор не перемещается пользователем в течение времени, указанного в 'updatetime' (которое по умолчанию составляет 4000 миллисекунд), выполняется контрольное время, которое проверяет изменения вне файла
- call feedkeys ("lh") : курсор перемещается один раз, вправо и назад влево, а затем ничего не происходит (... это означает, что CursorHold запущен, что означает, что у нас есть цикл )
источник
lh
ничего не делает, если курсор находится на последней позиции в строке,lh
изменит свое местоположение.Есть некоторые плагины , перечисленные здесь , которые могли бы работать в зависимости от версии Vim.
Другой подход заключается в периодической отправке
checktime
команды vim из внешнего процесса. Вот сценарий ShellJS для этого (требуетсяshelljs-plugin-sleep
NeoVim иnvr
)источник