文本编辑器在不提示的情况下更新文件

是否有任何基于控制台或窗口的文本编辑器自动重新加载磁盘上更改的文件而不提示任何内容?

vim可以做到这一点。 只需添加

 set autoread 

到你的~/.vimrc 。 (另请查看Tail Bundle插件 。)
自动autoread设置仅适用于某些事件(可以通过检查timestamp的帮助文本( :h timestamp )来确定)。 要更频繁地加载vim文件,有两个不错的选择:

  1. 定义一个监视变化的function。
  2. 设置自动命令,例如:

     au FocusGained,BufEnter,BufWinEnter,CursorHold,CursorMoved * :checktime 

    每当vim获得焦点时,这将重新加载,您进入缓冲区,移动光标,空闲光标。 但它不会改变当前光标位置。

如果您添加到.emacsemacs也可以执行此操作:

 (global-auto-revert-mode t) 

这也没有注意到更改,但以下应该:

 (global-auto-revert-tail-mode t) 

根据EmacsWiki的说法 ,它应该像tail -f一样工作。

即使gedit不支持这一点,我相信还有很多其他GUI编辑器可以做到这一点。

资料来源:

  1. vim可以监控文件的实时更改
  2. 如何在磁盘上更改文件时让Emacs自动刷新所有缓冲区?

Emacs可以为您做到这一点。 它在Emacs中称为revert-buffer 。 如果要为在Emacs中打开的每个文件启用它,请将以下内容添加到~/.emacs.emacs.d/init.el文件中:

  (global-auto-revert-mode 1) 

有关更多信息,请参阅Emacs Wiki 。 这个Ubuntu论坛post也可能有用。

对于那些喜欢更现代的东西的人来说, Sublime Text默认会这样做 。

 // Always prompt before reloading a file, even if the file hasn't been // modified. The default behavior is to automatically reload a file if it // hasn't been edited. If a file has unsaved changes, a prompt will always // be shown. "always_prompt_for_file_reload": false, 

g / vim可以在使用此命令时执行此操作:

 :set autoread | au CursorHold * checktime | call feedkeys("lh") 

(要自动向下滚动使用… feedkeys("G")代替(但它会向下滚动每个可见的缓冲区,即使在拆分时)

…您可以在此stackoverflow问题/答案中找到解释和其他信息https://stackoverflow.com/a/48296697/4940240