是否可以在命令行上将任意数量的文本放在光标旁边?我听说使用 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++Alt来O代替,因为大多数 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 在线手册页。