Bash readline删除,直到前一个斜杠


15

在bash emacs模式下,是否还有要删除的字符,直到前一个斜杠字符为止?例如,如果我输入命令cp /usr/local/bin/reallylongincorrectfolder /home/myname/reallylong_and_correct_path并只想删除reallylongincorrectfolder.。是否有任何快捷方式?对于我来说,这是一个非常常见的场景。像dF<char>vi?

Answers:


9
bind -P |grep unix-filename-rubout

用例如测试键绑定。Ctrl- b

bind \\C-b:unix-filename-rubout

要永久使用,请将其添加到 ~/.inputrc


2
要将其添加到~/.inputrc,请在该文件中添加以下行:"\C-b": unix-filename-rubout。要查看效果,您必须启动一个新的bash shell(或运行其他使用GNU readline库的程序)。
Croad Langshan '18

11

Alt通常将- BackspaceCtrl- w映射到backward-kill-word。如果要查找系统上映射到的内容(如果有),请运行bind -P | grep '^backward-kill-word'

正如@Barmar所解释的,这与有所不同unix-word-rubout,后者删除了先前的空间边界。


但这将杀死整个单词。.我只想杀死直到最后一个斜杠
woodstok 2013年

它确实只删除到这里的最后一个斜杠。斜杠是默认的单词分隔符之一。确定要使用Bash吗?
l0b0

我的糟糕。.Alt-Backspace会删除它直到最后一个斜杠。ALt-BackSpace和Ctrl-W有什么区别?
woodstok 2013年

3
Ctl-w通常绑定到unix-word-rubout使用空格作为单词边界,杀死点后面的单词。
Barmar

2
这并不完全有效。“单词由字母数字字符(字母和数字)组成”。因此,它将不仅止于斜杠而止步。default-unbound unix-filename-rubout稍好一点,因为它将停在空白处并以斜线表示。
Sparhawk

6

将其放入您的系统.inputrc并启动一个新的shell:

C-b:unix-filename-rubout

Ctrl- b现在向后擦除到下一个斜杠。

必杀技!

不要忘记Ctrl- XCtrl- E将启动编辑器,你可以轻松地编辑复杂的命令行。

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.