将输入删除回上一个正斜杠

我经常会在服务器上的几个文件之间进行浏览。 我将按顺序运行以下示例命令:

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命令转到下一个命令,我现在按UpBackspace来替换路径的最后一段。 这个问题是我真的非常懒惰。

是否有键盘快捷键(或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.

这将删除最后一个单词而不删除单词之间的特殊字