gpt4 book ai didi

bash命令行中的自定义readline函数?

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:05 33 4
gpt4 key购买 nike

代码来自 GNU readline and key bindings :

#include <stdio.h>

#include <readline/readline.h>

int my_cool_readline_func (int count, int key) {
printf ("key pressed: %d\n", key);
rl_on_new_line ();
return 0;
}

int main(void) {
rl_command_func_t my_cool_readline_func;
rl_bind_key ('\t', my_cool_readline_func);
rl_bind_key (27, my_cool_readline_func); /* ascii code for ESC */
rl_bind_keyseq ("\\C-a", my_cool_readline_func);

while (1) {
char *line = readline ("rl> ");
}
}

是否可以在 bash 命令行中使用这种自定义 readline 函数?

例如,我已经尝试过这些(当然,自定义函数可能要复杂得多):

bind '"\C-t" beginning-of-line shell-kill-word'

bind '"\C-t" beginning-of-line, shell-kill-word'

bind '"\C-t" beginning-of-line; shell-kill-word'

它们都不起作用。

最佳答案

我认为这个绑定(bind)是理解这是如何完成的关键:

 "\C-x\"": "\"\"\C-b"

阅读“当我按 Ctrl+X 然后 时,插入两个引号 (\"\") 并将光标向左移动一次 (\C-b) 所以它在两个双引号之间结束。

: 的右侧,您只能有一个 readline 函数或一个“宏”或一个 shell 函数。宏是一系列击键。

所以您需要做的是将您想要的功能分配给键,然后在宏中使用:

 bind '"\C-t":"\C-a\ed"'

另请参阅:Complex keybinding in bash

关于bash命令行中的自定义readline函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22224657/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com