bash 和 zsh 中是否有删除路径的一个组件的快捷方式?例如,如果我输入ls ~/local/color/,并且光标在行尾,是否有删除行尾的快捷方式color/?理想情况下,我想要 vi-mode 和 emacs-mode 的解决方案
enz*_*tib 27
默认 bash emacs 模式中最常用的命令,对于最常用的键盘:
小智 11
还有unix-filename-rubout为了Readline!
# in ~/.inputrc
# press ctrl-b to delete unix filename parts
# see: man bash | less -p 'unix-filename-rubout' and
# http://www.calmar.ws/vim/vi-bash.html
set editing-mode vi
set keymap vi
"\C-b": unix-filename-rubout
Run Code Online (Sandbox Code Playgroud)
默认情况下,bash(我猜是 zsh)将处于 emacs 模式。你可以尝试这样的事情:
Esc + b将光标放回一个字。 Ctrl + k将删除直到行尾。
大多数现代 shell(如 bash)将实现高级命令行编辑功能。这些命令要么接近于 emacs 编辑(Ctrl + A 表示行开始,Ctrl + E 表示行结束,...)。
如果您熟悉类似 vi 的编辑器,您可以尝试允许 vi 模式。
set -o vi
它为您的 shell 提供类似 vi 的模式(命令模式/插入模式),并且您可以访问标准命令(d 表示删除,r 表示替换,...)
在 Vi 模式下,您将如何执行您所描述的操作:
Esc (command mode); d; b.
Run Code Online (Sandbox Code Playgroud)