vim – 如何在另一个应用程序更改文件时收到通知?

在我听说 vim之前,我曾经使用过gedit.我仍然试图使vim的行为与gedit相同,这是因为我在StackOverflow上询问了许多与vim相关的问题.

我缺少的一个功能是当我在另一个应用程序上处理gedit上的任何文件时修改了任何文件,弹出用来表示文件< file_location>在磁盘上更改.要重新加载文件吗?并且分别有两个名为Reload和Cancel的按钮.

我想要的是:

(请注意我使用的是vim,而不是gvim)我想在vim中使用类似的功能.我想要在磁盘上更改任何文件,状态栏会显示一条警告消息:

File changed,press F9 to reload.

我将把我的F9映射到:e.

如果设置了autoread,vim将检查文件是否在每个shell命令(:!)之后,在写入文件时以及何时发出:checktime时被修改.当你将窗口焦点切换到应用程序时,gvim还会检查.

您可以在http://vim.wikia.com/wiki/Timer_to_execute_commands_periodically使用配方定期执行:checktime:

autocmd CursorHold * call Timer()
function! Timer()
    call feedkeys("f\e")
    checktime
endfunction
set updatetime=5000  " milliseconds

要打印警告,请设置autocmd FileChangedShell(Detect file change,offer to reload file):

autocmd FileChangedShell * echo "File changed,press F9 to reload."

对于插入模式,使用CursorHoldI(不确定此feedkeys序列,但它似乎工作):

autocmd CursorHoldI * call TimerI()
function! TimerI()
    call feedkeys("\<C-R>\e")
    checktime
endfunction

您可能必须将FileChangedShell autocmd从echo更改为echoe,因为我认为echo不会在Insert模式下打印.

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...