如何不执行命令就中止fc?


13

命令fc将允许可视地编辑前一个命令。如果在编辑器中改变主意,如何停止执行命令。在vim中,输入q!或q都导致命令被执行,并且CTRL-C也不起作用。是删除编辑器中的命令然后删除wq的唯一选择吗?

Answers:


17

在vi中,您可以键入:cq退出而不保存并使用非零返回码。在这种情况下,该命令将不会重复。

另外,您通常可以挂起编辑器,使用ctrl-z该编辑器可以使您返回到Shell,而无需重做命令。您仍然必须fg重新启动编辑器,但是tmp文件将不再存在,因此您可以安全地退出编辑器。或者,您可以使用kill -9 %此暂停的编辑器。

我同意,这可能会更容易。当然,您始终可以使用vi或emacs命令在bash中编辑行。


vi没有命令“:cq”。您要输入“:q!”吗?
2015年

@schily抱歉,我假设vi是vi。您可以cqquickfix中阅读有关vim 的信息。
2015年

不幸的是,vim不兼容POSIX(除了增强之外还有偏差)。对于一般帮助,通常最好不要依赖于本地或供应商的独特增强功能。顺便说一句::q!足够了,因为在这种情况下POSIX vi将退出!= 0。
2015年

@schily在大多数情况下,要依赖于vim的安装可能是安全的,在这种情况下,提问者明确说q!对他们不起作用
Michael Mrozek

2
这是因为没有错误,因此退出代码为0。在vi中,它可以键入:c(导致非法命令消息),然后键入:q!。并且记住的错误导致退出代码!=0。但是,这在vim中不起作用。我以前的假设是:q!总是导致退出代码!= 0是错误的。
2015年

3

也许,记住起来更简单的方法是删除命令(应该执行dd)并退出(ZZ或执行其他任何保存退出的方法)。恕我直言,:cq这很神秘。

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.