上一级目录的键绑定(在 Bash 中)

Key binding to go up by one directory (in Bash)

在 Zsh 中,我有一个键绑定可以上一级目录(非常有用):

# C-M-u: up-directory
up-directory() {
    builtin cd .. && zle reset-prompt
}
zle -N up-directory
bindkey '\e\C-u' up-directory

很不错。太好了,我也想在我的 Bash 配置中得到它。

我们该怎么做?

你可以的。 它不像 zsh 那样优雅或直接,但在 bash 中使用 bind.
是可行的 您不仅可以绑定内置的 Readline 函数(以 bind -l 列出),还可以绑定其他宏和 shell 函数。

bind -m emacs -x '"\C-i":"cd .."' 会将 shell 命令 (cd ..) 绑定到键 (Ctrl+i) 在 emacs 模式下(默认模式)。 (默认情况下 Ctrl+i 是未绑定的,u 不是)

请注意,您的提示可能不会反映更改。
如果您省略 -x,则系统会为您键入字符串,因此 "cd ..\n" 会获得相同的结果。

编辑bind 是您绑定键和宏的方式,即使没有内置的东西存在也可以完成您想要的。

如果你用 3[K 结束你的 PS1 提示(擦除到 eol)并且可以使用
bind -m emacs '"\C-i":" cd ..&&echo -e \"\033[2A\"\n"' 做你想做的事。
这将首先打印 cd .. 然后控制字符将光标向上移动并 运行 它(使用 \n )。 PS1 的末尾阻止它显示。这 一个 hack,但它表明它是可行的。