gpt4 book ai didi

vim - 当文件被另一个应用程序更改时如何得到通知?

转载 作者:行者123 更新时间:2023-12-04 12:11:06 26 4
gpt4 key购买 nike

在我听说 vim 之前,我曾经使用过 gedit。我仍然试图让 vim 表现得和 gedit 一样,这是因为我在 StackOverflow 上问了很多与 vim 相关的问题。
我缺少的一个功能是,当我在另一个应用程序上处理 gedit 上的任何文件时修改了任何文件,会出现一个弹出窗口,上面写着 The file <file_location> changed on disk. Do you want to reload the file?并且有两个按钮分别名为 Reload 和 Cancel。

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

File changed, press F9 to reload.
我将映射我的 F9 来做 :e .

最佳答案

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

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

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 来自 echoechoe ,因为我不认为 echo在插入模式下打印。

关于vim - 当文件被另一个应用程序更改时如何得到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12091497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com