我已经非常熟练地使用了许多 bash 快捷键,这些快捷键使我的 bash 速度更快:Ca/Ce、Cu、Cw、Mf/Mb、Cr 等。但我还没有找到一个好的快捷方式的一项常见任务当我想删除路径的最后一段时:
说我有
ls ~/projects/arcaneweb/libraries
我意识到我的意思是
ls ~/projects/arcaneweb/sources
有没有办法只删除libraries
,节省大量的击键?
答案1
单一快捷方式:M-backspace
Alt+←
答案2
有一个替换选项,但不确定它是否真的可以节省击键,除非路径很长。
^abc^xyz
这会将第一次出现的 abc 替换为 xyz。
[root~]# ls -l /var/log/messages
-rw------- 1 root root 850312 Dec 28 14:08 /var/log/messages
[root ~]# ^messages^secure
ls -l /var/log/secure
-rw------- 1 root root 652614 Dec 28 14:08 /var/log/secure
Bash 快捷方式参考: http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/
答案3
Mb、Ck 是我发现的最快的,由于需要使用 ESC 作为 Meta,因此速度稍慢。如果你将 Alt/Option 绑定为 Meta,那么一旦你培养了它的肌肉记忆,这将相当快。
答案4
问题unix-filename-rubout
是它不理解空格作为路径的一部分。
我想出了这个绑定(绑定到 Alt-w):
bind '"\ew":"\e[D\e\C-]/\e[C\e\C-d"'
逻辑很简单:
\e[D
-backward-char
\e\C-]/
-character-search-backward
然后/
(寻找向后斜杠)
\e[C
-forward-char
\e\C-d
-shell-kill-word
此处记录了不同的命令:
https://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html
要查询特定命令的快捷方式,请使用:
bind -q shell-kill-word