Oli*_*Oli 19 command-line bash shortcut-keys
我会经常在服务器上的几个文件之间来回切换。我将按顺序运行以下示例命令:
nano /web/site/path/to/file
/web/site/script.py
nano /web/site/path/to/anotherFile
nano /web/site/path/to/yetAnotherFile
/web/site/script.py
nano /web/site/path/to/etc
Run Code Online (Sandbox Code Playgroud)
要从一个nano
命令转到下一个命令,我当前按下Up并Backspace替换路径的最后一段。问题是我真的,真的很懒。
是否有键盘快捷键(或 Bashism)可以:
/
Syl*_*eau 24
我认为您正在寻找Alt+Backspace快捷方式。
按下后Up应删除回前一个/
或space
字符。
要检测按您希望的方式向后杀死单词的 readline 绑定,您可以在终端中使用以下命令:
bind -p | awk '/kill/ && /word/ && /backward/'
Run Code Online (Sandbox Code Playgroud)
在默认的 Ubuntu 安装中,输出可能是:
"\e\C-h": backward-kill-word
# shell-backward-kill-word (not bound)
Run Code Online (Sandbox Code Playgroud)
在这一点上,第二行似乎并不重要,所以让我们试着看看第一行是什么意思。从我的理解中,backward-kill-word
这实际上删除所有字符的readline功能,直到前面的特殊字符(/
,;
,,
等)被绑定到\e\C-h
按键序列。现在,在这个序列\e
代表的Esc关键,\C
-的Ctrl关键,并\C-h
代表Ctrl+h这是在这种情况下,相当于与Backspace关键。
因此,您正在搜索与+等效的Esc+ Ctrl+h键盘快捷键,并且由于 xterm 的行为使key 充当元字符,并且元字符被转换为两个字符的序列,字符本身以(参见),等同于+。EscBackspaceAltEscman xterm
AltBackspace
现在,如果您不喜欢它并且继续忘记它,您可以使用以下命令创建一个新的快捷方式,例如Esc+ w,用于您的目的:
bind '"\ew": backward-kill-word'
Run Code Online (Sandbox Code Playgroud)
要使这个新快捷方式始终适用于所有使用 readline 的命令,请将以下行添加到您的~/.inputrc
文件中:
"\ew": backward-kill-word
Run Code Online (Sandbox Code Playgroud)
查看help -m bind | sensible-pager
更多信息。