Bash readline 删除直到前一个斜杠

woo*_*tok 22 linux bash readline

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

l0b*_*0b0 13

Alt-BackspaceCtrl-w通常映射到backward-kill-word,这样做。如果您想找出它在您的系统上映射到的内容(如果有的话),请运行bind -P | grep '^backward-kill-word'.

正如@Barmar所解释的,这不同于unix-word-rubout,它移除到先前的空间边界。

  • ctl-w 通常绑定到`unix-word-rubout`:_杀死point后面的单词,使用空格作为单词边界。_ (3认同)
  • 但这会杀死整个词..我只想杀死最后一个斜线 (2认同)
  • 这并不完全有效。“单词由字母数字字符(字母和数字)组成”。因此,它不仅仅停留在斜线处。默认未绑定的`unix-filename-rubout` 稍微好一点,因为它会停在空格和斜线处。 (2认同)
  • `alt` + `backspace` 删除直到 `/`,从而回答问题。`ctrl` + `w` 另一方面删除直到前一个空格。 (2认同)

use*_*062 12

bind -P |grep unix-filename-rubout
Run Code Online (Sandbox Code Playgroud)

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

bind \\C-b:unix-filename-rubout
Run Code Online (Sandbox Code Playgroud)

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

  • 要将其添加到`~/.inputrc`,请在该文件中添加如下一行:`"\Cb": unix-filename-rubout`。要查看效果,您必须启动一个新的 bash shell(或运行其他一些使用 GNU readline 库的程序)。 (2认同)

Gre*_*ell 8

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

C-b:unix-filename-rubout

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

涅槃!

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