加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 01:35:24 所属栏目:安全 来源:网络整理
导读:在我听说 vim之前,我曾经使用过gedit.我仍然试图使vim的行为与gedit相同,这是因为我在StackOverflow上询问了许多与vim相关的问题. 我缺少的一个功能是当我在另一个应用程序上处理gedit上的任何文件时修改了任何文件,弹出用来表示文件 file_location在磁盘上
在我听说 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("fe")
    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模式下打印.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读