我识别具有特定特征的文件,并将它们拍摄到vim会话中,如。..grep -rl '{{[a-z]*}}' | xargs vim
除了一个警告,这是有效的。我在vim中打开了7个文件。逐个编辑它们(完成后使用:w
,:bn
用于转到下一个文件)。
在我的会话结束时,我执行qa
,它退出,但冻结了整个bash。我通过名为“RemoteDesktopManager”的工具使用ssh访问该服务器。
无论如何,艾迪似乎是成功的。但是我不想撞车。我在上述工作流程中可能做错了什么?
我希望Vim关闭时不会冻结整个bash/ssh会话
编辑:我还注意到我的工作目录中还留有一个.swp
。它不给予任何警告时,打开一个编辑的文件虽然。
1条答案
按热度按时间pxy2qtax1#
现在我确信罪魁祸首在
| xargs vim
中--终端(不是Bash)冻结,因为vim
是一个TUI程序,它的stdin/stdout/stderr不应该从终端重定向。在已经冻结的终端上运行
reset
;你必须盲目地输入它,然后按Enter键,也许在reset
之前按一个Enter键才能进入命令提示符。要解决这个问题,请使用
xargs -o vim
来避免重定向。选项-o
,--open-tty
从/dev/tty
重定向标准输入,从而允许vim
顺利工作。