Я использую следующую автокоманду Vim в моем файле .gvimrc
:
augroup MyAuGroup
autocmd MyAuGroup FileChangedShell * call FileChanedEvent_BuffUpdate()
augroup END
function FileChanedEvent_BuffUpdate()
let MyBn = bufname("%")
let MyStr = "Warning: File \"".MyBn."\" has changed since editing started\nSee \":help W11\" for more info."
let MyTest = confirm(MyStr, "&OK\n&Load File", 2, "W")
if MyTest == 2
edit
else
endif
endfunction
с намерением заменить поведение gVim по умолчанию при внешнем изменении файла (см. этот вопрос). Однако если открыто несколько окон с несколькими буферами, команда edit
работает с последним активным окном, а не с окном, содержащим буфер, который был изменен.
Как определить, какой буфер вызвал событие FileChangedShell
, и применить к нему буфер edit
?