如何在使用 Bash 时使用 readline 快捷方式将预定的字符串插入到命令行?

如何在使用 Bash 时使用 readline 快捷方式将预定的字符串插入到命令行?

是否可以在命令行上将任意数量的文本放在光标旁边?我听说使用 Bash 可以做到这一点,但我不确定如何实现。使用 readline 似乎可以,但快捷方式的语法似乎相当晦涩,因为当我将其放在我的目录中~/.inputrc并使用快捷方式时,终端中什么都没有出现。有人可以解释 中条目的正确语法吗~/.inputrc

答案1

尽管 readline 的语法可能令人困惑,但使用命令行当然可以做您想做的事情:请参阅文章末尾的附录以获取简短的示例列表。

您可以使用 GNU readline 库并创建一些宏,然后将它们放在您的 中~/.inputrc。然后,当您按下组合键时,您将能够在终端中插入任意字符串。如bash 手册

除了命令名称之外,readline 还允许将键绑定到按下键时插入的字符串(宏)。
在 inputrc 文件中控制键绑定的语法很简单。所需的只是命令的名称或宏的文本以及应绑定到的键序列。名称可以以两种方式之一指定:作为符号键名称(可能带有 Meta- 或 Control- 前缀),或作为键序列。

将快捷键组合指定给任意字符串时要小心,因为无论您使用的是 Bash 的 emacs 还是 vi 模式(除了独立的 tty 绑定),许多键绑定都已设置。请参阅当前绑定的 Bash 快捷键列表,以及正在使用的其他快捷bind -P键列表。stty -a

您只需放入宏~/.inputrc(如果不存在则创建),然后添加,例如:

Control-o: "U+16a1" 

但可能更好的例如,使用Ctrl++AltO代替,因为大多数 ctrl 和单个字母组合已经绑定:

"\e\C-o": "U+16a1"

然后重新启动终端并使用组合键将字符串放置在光标位置。有许多复杂且更有趣的可能性;试验一下,你会发现当您必须重复各种事情时,宏非常有用。使用 列出您当前分配的宏bind -s


供参考的示例列表(不要使用这些,因为其中一些已经被分配):参见bind -P

"\e\C-k": "string"  # ctrl+alt+k
"\ey": "string" # alt+y
"\C-w": "string" # ctrl+w
"\C-x\C-e": "string" # ctrl+x, ctrl+e

请参阅man 3 readline了解更多信息并Ubuntu 在线手册页

相关内容