第一次发帖,长期潜水,搜索过,没找到等等,等等。
我在 tmux 中的 iTerm2 中运行 vim。我正在运行一个带有 Grunt.js 的服务器,它在后台运行,不影响我使用。我在后台启动我的 grunt 服务器,如下所示:
grunt server &
Grunt 还会监视一堆文件,并在任何监视的文件被写入时运行一些任务。问题是,当我在 vim 中写入文件时,grunt 的输出开始在 vim 中呈现!以下是一些屏幕截图来说明问题:
写入文件之前:
写入文件后:
我尝试过什么?
我尝试通过以下方式运行“库存” vim:
vim -u NONE
…但问题仍然存在。这说明问题不在我的.vimrc
。也许是 iTerm2 的问题,我不知道。求助。
答案1
启动后台进程不会自动重定向其输出。因此,后台进程发送到stdout
或stderr
出现在您启动进程的终端中的内容。
解决方案
- 在启动时重定向后台进程的输出:
grunt server >grunt-server.log 2>&1 &
- 在单独的会话中启动后台进程
tmux
。 nohup
自动将输出重定向到nohup.out
:nohup grunt server &
- 如果你不需要输出,你可以丢弃它:
grunt server >/dev/null 2>&1 &
答案2
您无法从 Vim 本身修复该问题:grunt
它只是通过一个输出泄漏内容,stdout
该输出会泄漏您在该 shell 中执行的任何操作,包括 Vim。通常,只需执行简单的操作<C-l>
即可清理屏幕。
您可以找到一种方法来grunt
完全静音,或者在另一个 iTerm 窗格/选项卡/窗口中启动它。