我经常会在服务器上的多个文件之间切换。我将按顺序运行以下示例命令:
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)回到最后
/
答案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-word
readline 函数实际上会删除所有字符,直到前一个特殊字符(/
、;
等,
)绑定到\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
这将删除最后一个单词,但不删除单词之间的特殊字符。