Ctrl我曾尝试在 fish 中创建一些接受完成并按下+立即执行的组合Enter。
function fish_user_key_bindings
bind \c\n accept-autosuggestion execute
end
不幸的是,这次尝试失败了。看起来 fish 不喜欢两个转义字符:
#绑定 -a ... 绑定 \\c\\n 接受自动建议执行
还有其他更好的想法吗?
答案1
绑定ctrl+enter没有任何意义。该enter键通常会发送回车符;\r
,又名\cM
。换句话说,enter已经是一个控制字符。因此应用\c
修饰符没有任何意义。事实上,这应该会导致 Fish 生成错误,所以我会打开一个问题来提醒团队修复这个问题。
另外,您尝试绑定\c\n
。绑定\n
(又名\cJ
)适用于 Fish 2.2.0 或更早版本。但从 2.3.0 开始,您将无法获得预期的结果,因为 fish 现在禁用了 TTY 驱动程序的icrnl
模式。因此 Fish 将接收通常由键发送的\r
(又名\cM
)字符enter。所以您确实想要绑定\r
(或)。当然,这并不能改变这没有任何意义的\cM
事实。\c\cM
答案2
可能您只是错过了''
绑定命令行。
事实上,简单的bind \c\n accept-autosuggestion execute
会产生错误:
bind:预期零个或两个参数,但实际得到 3 个
添加''
命令似乎有效
function fish_user_key_bindings
bind \c\n 'accept-autosuggestion execute'
end
执行 bind 命令bind -a
后
绑定 \x1cn‘接受自动建议执行’