将输入删除回最后一个正斜杠


16

我经常会在服务器上的几个文件之间移动。我将依次运行以下示例命令:

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+ .
Sparhawk

@Sparhawk Alt + .用于其他用途。
RaduRădeanu2014年

@RaduRădeanu是的,也许我误会了这个问题。我以为“被最后使用的路径替换(末尾多了一条)”意味着alt+的.作用。
Sparhawk

@Sparhawk同样,这些快捷方式中的一个非常有用,大约每月一次,但我似乎无法将它们提交到内存中。与alt-backspace结合使用,通过不同的命令运行相似的文件非常方便。
奥利(Oli)

@Oli我倾向于使用它,但是我总是忘记如何以其他方式移动
Sparhawk

Answers:


21

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

按下后,Up应删除回到前一个/space字符。


7
现在我势不可挡!(编辑:我发誓我每年至少学习10次并忘记了此快捷方式)
奥利(Oli)

3
这应该怎么办?在我的终端机上,它看起来并没有做什么与平淡backspace
Bakuriu 2014年

1
@Bakuriu此快捷方式应为默认快捷方式。如果您想找出系统运行中所映射的内容bind -P | grep '^backward-kill-word'
Sylvain Pineau,2014年

1
@Bakuriu同样,我在Mac上。
laike9m 2014年

9

要检测按需杀死向后单词的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键盘快捷方式,并且由于xterm的行为,使键充当元字符,并且元字符被转换为两个字符的序列,且字符本身以,等同于+EscBackspaceAltEscman xtermAltBackspace

现在,如果您不喜欢它,而又继续忘记它,则可以使用以下命令创建一个新的快捷方式,让您说出Esc+即可w

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

要使此新快捷方式始终对使用readline的所有命令持久化,请将以下行添加到~/.inputrc文件中:

"\ew": backward-kill-word

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


2
好答案。更常见的是,将整个设置用bind命令括在单引号中。bind '"\ew": backward-kill-word',但这很挑剔。可能值得一提的是,您也可以"\ew": backward-kill-word输入~/.inputrc,在这种情况下,其他使用readline的命令也将具有该绑定,例如,如果在python交互式shell中启用readline,则该绑定也将在那里应用。
盖尔哈2014年

@geirha是的,我知道您在说什么,但我认为OP知道如何处理。无论如何,现在我意识到我的答案对OP并不是那么有用(他只是想记住快捷方式),但是我希望对本站点的其他用户有用,为此,我通过添加您的观察来编辑我的答案。谢谢。
RaduRădeanu2014年

0

另一个组合键是:

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.