无需提示即可更新文件的文本编辑器

无需提示即可更新文件的文本编辑器

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

答案1

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

set autoread

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

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

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

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

emacs也可以这样做,如果您添加到.emacs

(global-auto-revert-mode t)

这也不会监视变化,但以下应该:

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

根据tail -fEmacsWiki

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

资料来源:

  1. vim可以监控文件的实时变化吗
  2. 当磁盘上的文件发生变化时,如何让 Emacs 自动刷新所有缓冲区?

答案2

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

 (global-auto-revert-mode 1)

查看Emacs 维基了解更多信息。这篇 Ubuntu 论坛帖子也可能有帮助。

答案3

对于那些喜欢更现代的东西的人来说,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,

答案4

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

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

(要自动向下滚动,请使用 ... feedkeys("G")(但它会向下滚动每个可见缓冲区,即使拆分时也是如此)

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

相关内容