关闭vim后Unix控制台变为非活动状态


1
user@laptop:~$ locate file.ext | xargs vim -p
Vim: Warning: Input is not from a terminal
2 files to edit
user@laptop:~$ 

在找到文件并在vim中对其进行修改之后,我想保存它们并继续在unix控制台中工作,但是我不能这样做。

在vim关闭控制台后,就停止了。在任何按键上都没有活动。唯一的解决方法是关闭控制台选项卡并创建一个新选项卡。我怎么解决这个问题?

Answers:


5

尝试以其他方式运行它:

vim -p `locate file.ext`

或者您可以尝试reset在vim会话后运行命令,以将终端选项重置为默认值:

locate file.ext | xargs vim -p; reset

如果可以帮助您,请在其下方打一个对号以接受答案。谢谢
zed_0xff 2010年

1
不要使用第二个,这是一个hack。第一个命令是惯用的正确方法。
msw

1

从Cygwin上的管道命令退出vim之后,这就是我的工作。

stty sane {enter}

当然,您不会看到键入的内容,但是在按回车键之后,tty将重新出现。这很痛苦,但是有效。

我不喜欢这里的其他解决方案,因为通常我运行的查询要比文件查询复杂得多。我可能会做这样的事情:

egrep -ri [pattern] * | sed -e 's:\:.*::g' | grep -v ^Binary | sort | uniq | xargs vim

在我的工作(已有10年历史的快速移动代码库)中,这种搜索非常普遍,以至于我在单个shell脚本中拥有前五个命令,并通过管道将它们传送到vim。


你不能vim $(callToBashScript)吗?
Niels Bom

0
Vim: Warning: Input is not from a terminal

管道本身并不是终端,但是您尝试过fg吗?


fg什么?这里没有后台工作

在我的终端上尝试了完全相同的一行,并通过fg获得了正在运行的Vim进程。

Matias,能否请您分享命令?我以前从没听说过fg。如何使用?

“ fg”表示前台,将终端中已暂停的进程从后台切换到前台。尝试“ man bash”,然后按Ctrl-Z暂停它。然后发出“ fg”。

它不是在后台运行的,它的标准输入从定位器连接到管道,因此“输入不是来自终端”是准确的。
msw
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.