我使用Vim 7.4(Mac OS)编辑和运行Lua脚本。我在.vimrc中映射了一个键来保存当前缓冲区并运行外部脚本。
.vimrc中的键映射:
map V :w!<CR> :!python "$HOME/tools/client/concli.py" --lua %<CR>
它工作正常但偶尔会被Xcode(触摸shell命令)“触摸”文件。然后,当我点击映射的密钥时,vim警告我文件已在外部更改,我必须确认写入它。
这很烦人,因为文件经常被触及。如何在不提示的情况下强制vim覆盖外部更改?我试过'w!'没有成功。
谢谢Laurent
答案 0 :(得分:4)
确实,无法使用:w!
关闭覆盖确认,而:set autoread
在这种情况下也没有帮助。什么工作指示Vim在写入之前明确检查更改:
:checktime | w
答案 1 :(得分:1)
我相信
set autoread
应该这样做。它告诉Vim自动重新读取Vim外部更改的文件。
答案 2 :(得分:1)
我在邮件列表中看到了这一点。显然,如果文件在调用外部shell命令后更改了时间戳,则会调用它。
function! ProcessFileChangedShell()
if v:fcs_reason == 'mode' || v:fcs_reason == 'time'
let v:fcs_choice = ''
else
let v:fcs_choice = 'ask'
endif
endfunction
autocmd FileChangedShell call ProcessFileChangedShell()
但它并没有一直为我开火。 (取决于我是否在更改后编辑了文件,在我的情况下是外部的。)
答案 3 :(得分:0)
将其添加到您的~/.vimrc
文件中:
set autoread
nnoremap <C-u> :checktime<CR>
现在,只要您希望vim重新加载外部更改,只需点击CTRL-U
:)