Ctrl-Enter 进入 fish shell

Ctrl-Enter 进入 fish shell

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‘接受自动建议执行’

相关内容