在我听说
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模式下打印.