bash 和 zsh 中是否有删除路径的一个组成部分的快捷方式?例如,如果我输入ls ~/local/color/
,并且光标位于行尾,是否有快捷方式可以删除color/
末尾的 ?理想情况下,我想要 vi 模式和 emacs 模式下的解决方案
答案1
默认 bash 中最常用的命令emacs模式,对于最常用的键盘:
移动
- Ctrl- p, 或Up: 上一个命令
- Ctrl- n, 或Down: 下一个命令
- Ctrl- b, 或Left: 前一个字符
- Ctrl- f, 或Right: 下一个字符
- Alt- b: 前一个词
- Alt- f: 下一个词
- Ctrl- a, 或Home: 命令开始
- Ctrl- e, 或End: 命令结束
编辑
- BkSpc: 删除前一个字符
- Ctrl- d, 或Del: 删除当前字符
- Alt- BkSpc: 删除左边的单词
- Alt- d: 删除右边的单词
- Ctrl- u:删除到命令开头
- Ctrl- k:删除到命令末尾
- Ctrl- y:粘贴最后剪切的内容
杂项
- Cltr- /: 撤消
- Cltr- r:增量向后历史搜索
答案2
还有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
答案3
默认情况下,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.