我最近发现,如果我们按Ctrl+ X Ctrl+ E,bash 会在编辑器中打开当前命令(在$VISUAL
或中设置$EDITOR
)并在编辑器关闭时执行它。
但页面中似乎没有记录man
。是否有记录?如果有,在哪里?
答案1
我现在已经发现了。在问这个问题之前我应该更仔细地阅读它。
该man
页面说:
edit-and-execute-command (C-xC-e) Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke $VISUAL, $EDITOR, and emacs as the editor, in that order.
答案2
正如已接受答案下的评论中所讨论的,拥有编辑器功能非常方便/安全不立即执行。
添加此.bashrc
以使绑定禁用执行。Ctrl xe
_edit_wo_executing() {
local editor="${EDITOR:-nano}"
tmpf="$(mktemp).sh"
printf '%s\n' "$READLINE_LINE" > "$tmpf"
$editor "$tmpf"
READLINE_LINE="$(<"$tmpf")"
READLINE_POINT="${#READLINE_LINE}"
rm "$tmpf"
}
bind -x '"\C-x\C-e":_edit_wo_executing'