当我做“找到50local.policy | xargs vim”时,我得到错误“Vim:Warnung:Die Eingabe kommt nicht von einem Terminal”(翻译:Vim:警告:输入不是来自终端)。
我可以使用vim成功编辑,但是当我关闭它后,我的终端表现得很奇怪(我不能输入字母,当我进入shell提示符时,只需重复一遍。
当我用“xargs gedit”做它不会造成这些问题。
我使用Ubuntu 11.10与Gnome 3和Gnome终端3.0.1。
Vim希望连接到一个真实的终端并发送适合的代码。
重置终端
reset
最简单的解决方法:
locate 50local.policy | xargs gvim
Rationale gui vim doesn’t require a terminal
除此以外:
vim $(locate 50local.policy)
Rationale vim is started directly connected to the terminal (instead of as a child process under
xargs
which in turn runs in a subshell with stdin/stdout connected to pipes instead of a terminal). It is like saying06003
另外
你可以通过不用vim启动vim来避开这个问题,但是从vim中添加参数!事实上,运行shell比运行vim时更好。
在vim中:
:args `locate 50local.policy` :rewind
这将参数列表设置为从命令之间的shell命令返回的文件; :回滚然后转到该列表中的第一个文件。
如果您正在编辑多个匹配项,请尝试:
:w|next