微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么“找到文件名| xargs vim“引起奇怪的终端行为?

当我做“找到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 saying

06003

另外

你可以通过不用vim启动vim来避开这个问题,但是从vim中添加参数!事实上,运行shell比运行vim时更好。

在vim中:

:args `locate 50local.policy`
:rewind

这将参数列表设置为从命令之间的shell命令返回的文件; :回滚然后转到该列表中的第一个文件
如果您正在编辑多个匹配项,请尝试:

:w|next

这个命令序列(由|分隔)将当前缓冲区写入文件,然后转到args列表中的下一个文件

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐