如何从 nano 退出并显示错误代码?

如何从 nano 退出并显示错误代码?

当使用 vim “回复” 某些程序(通常是 git)时,考虑一下错误退出,中止打开窗口的整个操作。例如

$ git commit -a
# vim opens, showing me the staged files and asking for a commit message
# oops, I see some stuff staged that wasn't supposed to be committed
:cq     # exit vim with nonzero exit code

这将阻止git实际执行提交。

现在不幸的是,有些机器已经nano配置为默认编辑器,所以我偶尔会发现自己处于该编辑器中,并且相应地无助。

ssh我现在所做的是:使用另一个会话登录killall editor

有没有办法从 nano 内部做同样的事情,与 vim 相对应:cq

答案1

如果已经nano

这是我可以在交互sh(或bash等等)中使用作业控制做的事情:

我可以nano使用Ctrl+ Z( ^Z) 暂停。注意:如果显示消息,Suspension is not enabled则我需要按Alt+ Z( M-Z) 来启用。据我所知,这些是 中的默认键绑定nano

如果命令是nano || foo,则将foo立即触发。

现在我回到 shell 中,并开始nano执行作业(参见jobs)。kill %%将向其发送信号,但仍然nano不会退出。我需要fg在发送信号后才nano终止。

不如 vim 快:cq,但仍然不需要额外的 SSH 会话。


预防问题发生

VISUAL默认情况下,Git 使用你通过 shell 环境变量或之一设置为默认文本编辑器的任何编辑器EDITOR,否则将返回 vi 编辑器来创建和编辑提交和标记消息。要将该默认编辑器更改为其他编辑器,你可以使用以下设置core.editor

$ git config --global core.editor emacs

现在,无论您的默认 shell 编辑器设置为什么,Git 都会启动 Emacs 来编辑消息。

来源

许多其他程序都尊重VISUALEDITOR。如果可以,请预先配置它们和/或环境。它可能就像运行一样简单:

export VISUAL=vim

在你的 shell (的启动脚本)中。

答案2

对于 git,退出编辑器并显示空消息将取消提交(除非使用--allow-empty-message)。保留以 in 开头的行#即可。

对于已经提供消息的 git 命令(例如commit --amendmerge),您需要在保存并退出之前删除该消息。

(但是,是的,如果 nano 具有错误退出功能那就太好了,特别是在后一种情况下。)

相关内容