删除输入到最后一个斜杠处

删除输入到最后一个斜杠处

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

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)回到最后/

答案1

我认为您正在寻找Alt+Backspace快捷方式。

按下Up此键后应删除前一个/space字符。

答案2

要检测 readline 绑定以按照您的意愿向后删除一个单词,您可以在终端中使用以下命令:

bind -p | awk '/kill/ && /word/ && /backward/'

在默认的 Ubuntu 安装中,输出可能是:

"\e\C-h": backward-kill-word
# shell-backward-kill-word (not bound)

第二行现在看起来似乎并不重要,所以让我们试着看看第一行是什么意思。据我所知,backward-kill-wordreadline 函数实际上会删除所有字符,直到前一个特殊字符(/;,)绑定到\e\C-h键序列。现在,在这个序列中\e 代表Esc\C-键Ctrl\C-h代表Ctrl+h在这种情况下是等效的Backspace钥匙。

所以,你正在寻找Esc+ Ctrl+h键盘快捷键相当于Esc+Backspace并且,因为 xterm 的行为使得Altkey 充当元字符,并且元字符被转换为两个字符的序列,字符本身前面带有Esc(参见man xterm,相当于Alt+Backspace

现在,如果您不喜欢它并且继续忘记它,您可以使用以下命令为您的目的创建一个新的快捷方式,比如说Esc+ w

bind '"\ew": backward-kill-word'

为了使这个新的快捷方式对于所有使用 readline 的命令始终有效,请将以下行添加到文件中~/.inputrc

"\ew": backward-kill-word

请参阅help -m bind | sensible-pager以了解更多信息。

答案3

另一个组合键是:

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

这将删除最后一个单词,但不删除单词之间的特殊字符。

相关内容