1

Мой рабочий процесс включает в себя редактирование многих файлов в vim , и иногда я делаю git pull --rebase , который может на самом деле изменять или не изменять файлы, которые я редактирую. Однако после такой перезагрузки vim всегда будет думать, что каждый файл был изменен, и будет напоминать мне, что «файл изменился по сравнению с оригинальным, вы уверены, что хотите отредактировать его?"когда я делаю изменения и пытаюсь сохранить файл, который открыт. Это становится очень раздражающим, потому что я на самом деле не уверен, изменился ли файл или нет, и можно ли сохранить мои изменения (не говоря уже о том, что мне предложили это сделать для каждого файла, который я пытаюсь сохранить).

Есть ли способ сделать vim умнее с этими измененными файлами? Я бы предпочел сделать это БЕЗ какого-нибудь большого пакета vim/git .

1 ответ1

0

Если вы еще не изменили файл, но он открыт, то обновить его вне Vim, то Vim должен предложить вам перезагрузить файл, или даже (если только метка времени изменилось) автоматически обновляется для вас. Но Vim проверяет это только тогда, когда запускает внешнюю команду или когда получает фокус ввода после потери фокуса ввода (что надежно происходит только в gVim и в нескольких версиях терминала). Если вы используете терминал Vim, то вам, вероятно, потребуется вручную добавить вызовы :checktime в соответствующем autocmd, например, CursorHold , CursorMoved , BufEnter или в другое событие, которое часто запускается. Посмотрите этот пример autocmds для запуска:checktime, а также некоторые другие ответы на этот вопрос для деталей.

После того как вы Vim надежно проверки измененных файлов, вы также можете настроить то , что делает Vim , когда он обнаруживает модифицированную временную метку, используя autocmd события FileChangedShell Этот autocmd позволяет вам задать для переменной v:fcs_choice значение "reload", "ask" или «» (пустая строка), чтобы сообщить Vim, что делать, и вы, вероятно, могли бы сделать что-нибудь сумасшедшее, например запустить diff с файлом на диске. если ты хотел. Vim может обнаруживать и отдельно действовать в следующих сценариях (хранится в v:fcs_reason):

deleted     file no longer exists
conflict    file contents, mode or timestamp was
            changed and buffer is modified
changed     file contents has changed
mode        mode of file changed
time        only file timestamp changed

См. Http://vim.wikia.com/wiki/File_no_longer_available_-_mark_buffer_modified для полностью разработанного примера использования события FileChangedShell.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .