由于 inputrc 仅包含“if”、“else”和“endif”,而没有“else if”条件语句,是否允许嵌套条件,即在“else”块内包含第二个“if”?
例如
$if term=lxterm
...
$else
$if term=rxvt
...
$else
$if term=xterm
...
$endif
$endif
$endif
由于 inputrc 仅包含“if”、“else”和“endif”,而没有“else if”条件语句,是否允许嵌套条件,即在“else”块内包含第二个“if”?
例如
$if term=lxterm
...
$else
$if term=rxvt
...
$else
$if term=xterm
...
$endif
$endif
$endif
GNU readline 将连续的字母数字视为单词,所有其他的都是非单词,比如-option1 -option2
有 4 个单词 ( " -", "option1", " -", "option2"
),这使得在移动光标时不直观。有没有办法自定义这个单词定义,比如将所有非空格字符都视为单词?
从 libreadline 版本 8.1 开始,默认是对“括号粘贴”操作进行特殊处理。这会破坏我的程序的解析,所以我想禁用它。
我知道可以通过将此行添加到 /etc/inputrc 来全局禁用它
set enable-bracketed-paste off
我知道它可以通过将同一行添加到 ~/.inputrc 来禁用每个用户
我知道该命令可以通过将其修改为特定于程序
$if Progname
set enable-bracketed-paste off
$endif
但是,这些选项需要系统管理员或用户采取行动。我想让程序本身在进入时禁用此模式。readline 文档说rl_startup_hook is the address of a function to call just before readline prints the first prompt
。我认为这意味着下面的代码应该做我想做的事。
int my_readline_init(void) {
char *command = strdup("set enable-bracketed-paste off");
rl_parse_and_bind(command);
free(command);
}
rl_startup_hook = my_readline_init;
如果我在初始化例程中添加调试行或跟踪点,我可以看到它确实被调用了。但是(1)它在每个输入行上都被调用,而不仅仅是第一次,并且(2)它没有达到预期的效果。即它不会关闭括号粘贴处理。我究竟做错了什么?
我们如何扩展一个变量,即。'$' 前面的名称,它在 bash readline 上的值内容?
您可以像这样Ctrl-Left绑定键:Ctrl-Right.inputrc
# Ctrl-Left
"\033[1;5D": backward-word
# Ctrl-Right
"\033[1;5C": forward-word
我将如何绑定Ctrl-Up并且Ctrl-Down什么都没有?
# Ctrl-Up
"\033[1;5A": null
# Ctrl-Down
"\033[1;5B": null
这显然是行不通的。
我使用这些键在 tmux(嵌套配置)中执行操作,但是;3~
当我使用其中任何一个键时,通常会输出到终端。
我希望我能够将它们绑定到任何东西,同时仍然让密钥适用于 tmux。
例如;
if [ 'readline is vi-command' ]; then
echo 'normal mode'
else
echo 'insert mode'
fi
我真的不知道如何做到这一点,我似乎也无法在手册页上找到任何东西,或者根本不可能?