将输入删除回上一个正斜杠
我经常会在服务器上的几个文件之间进行浏览。 我将按顺序运行以下示例命令:
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
要从一个nano
命令转到下一个命令,我现在按Up和Backspace来替换路径的最后一段。 这个问题是我真的非常懒惰。
是否有键盘快捷键(或Bashism)可以:
- 被最后使用的路径替换(最后添加一个路径)
- 在当前行中删除(例如在按下Up后 )回到最后一行
/
我想你正在寻找Alt + Backspace的快捷方式。
按下之后,应删除回到上一个/
或space
字符。
要检测可以根据需要向后删除单词的readline绑定,可以在终端中使用以下命令:
bind -p | awk '/kill/ && /word/ && /backward/'
在默认的Ubuntu安装中,输出可以是:
"\e\Ch": backward-kill-word # shell-backward-kill-word (not bound)
第二行似乎在这一点上并不重要,所以让我们试着看看第一行是什么意思。 根据我的理解,事实上删除所有字符直到先前的特殊字符( /
, ;
,
等)的backward-kill-word
readline函数绑定到\e\Ch
键序列。 现在,在这个序列中\e
表示 Esc键, \C
表示Ctrl键, \Ch
表示Ctrl + h , 在这种情况下,它与Backspace键相同。
因此,您正在搜索Esc + Ctrl + h键盘快捷键,它与Esc + Backspace等效,并且由于xterm的行为使得Alt键充当元字符,并且元字符被转换为双字符序列字符本身前面有Esc (参见man xterm
) ,等同于Alt + Backspace 。
现在,如果您不喜欢它并且继续忘记它,您可以使用以下命令创建一个新的快捷方式,例如Esc + w ,用于您的目的:
bind '"\ew": backward-kill-word'
要使所有使用readline的命令始终保持此新快捷方式,请将以下行行添加到~/.inputrc
文件中:
"\ew": backward-kill-word
请参阅help -m bind | sensible-pager
help -m bind | sensible-pager
了解更多信息。
另一个关键组合是:
按Alt + B然后按Ctrl + K.
Alt + B Move cursor backward one word on the current line Ctrl + K Clear the line after the cursor
Alt + B然后Alt + D.
这将删除最后一个单词而不删除单词之间的特殊字