viu*_*ser 20 bash keyboard-shortcuts terminal line-editor
安装 Debian 8.3
stty werase '^H'
Run Code Online (Sandbox Code Playgroud)
或在 Arch Linux 2/2016 上
stty werase '^?'
Run Code Online (Sandbox Code Playgroud)
在.bashrc(例如)makes Ctrl-Backspace删除终端中的最后一个单词。不过这不是相同的行为在现代GUI应用程序(如火狐):删除最后一个空白-分隔字,而不是最后一个字由空格分隔或字符,如. : , ; " ' & / ( )。
是否有可能使Ctrl-Backspace的行为在终端类似现代的GUI应用程序?另外,有没有办法让Ctrl-Delete删除光标之前的单词?
Gil*_*il' 41
这里有两个行编辑器:内核提供的基本行编辑器(规范模式 tty 行编辑器)和 bash 的行编辑器(通过 readline 库实现)。这两个都有一个擦除到上一个字的命令,默认情况下绑定到Ctrl+ W。可以通过stty werase;为规范模式 tty 行编辑器配置密钥;bash 模仿它在 tty 设置中找到的键绑定,除非在它自己的配置中被覆盖。
werase无法配置 tty 行编辑器中的操作。它总是擦除 (ASCII) 空格分隔的单词。很少与 tty 行编辑器进行交互——这是您在cat不带参数的情况下键入时得到的结果。如果您想要在那里进行花哨的键绑定,您可以在使用 readline 的rlwrap 之类的工具下运行该命令。
Bash 提供了两个命令来删除前一个单词:unix-word-rubout( Ctrl+w或 as set through stty werase) 和backward-kill-word( M-DEL, ie Esc Backspace)将单词视为当前语言环境中的字母数字字符序列 和_。如果您希望Ctrl+Backspace删除前面的字母数字字符序列,请不要设置stty werase,而是将以下行放入您的.inputrc:
"\C-h": backward-kill-word
Run Code Online (Sandbox Code Playgroud)
请注意,这假设您的终端为Ctrl+发送 Ctrl+H 字符Backspace。不幸的是,它是那些没有标准绑定的键之一(Backspace尤其是由于历史原因而变得一团糟)。
还有一个默认kill-word绑定到M-d( Alt+ D)的对称命令。要将其绑定到Ctrl+ Delete,您首先需要弄清楚您的终端发送的转义序列,然后在您的.inputrc. 输入Ctrl+V然后Ctrl+ Delete; 这将插入类似于^[[3;5~初始^[是转义字符的视觉表示的内容。然后绑定是
"\e[3;5~": kill-word
Run Code Online (Sandbox Code Playgroud)
如果您对某个词的任一定义不满意,您可以在 bash 中提供您自己的定义:请参阅 bash中 emacs 样式键绑定的混淆行为
| 归档时间: |
|
| 查看次数: |
18104 次 |
| 最近记录: |