如何在fish中绑定Ctrl-Enter?

时间:2016-05-09 11:08:47

标签: fish

为了configure a user binding(版本2.2.0),它必须位于fish_user_key_bindings函数中:

function fish_user_key_bindings
    bind \n 'commandline -f accept-autosuggestion execute'
end

这很好用。

我想通过使用appropriate modifier将此绑定扩展为 Ctrl + Enter

function fish_user_key_bindings
    bind \c\n 'commandline -f accept-autosuggestion execute'
end

这不起作用: Enter 使用当前(直到光标)建议(这是默认设置)但是 Ctrl + Enter < / kbd>以及(好像没有考虑修饰符的动作)

2 个答案:

答案 0 :(得分:3)

绑定\c\n没有任何意义,因为\n已经是控制字符。将控制修改器第二次应用于控制字符无效。由于\n只是\cJ的别名,因此您尝试执行的操作相当于绑定到\c\cJ。绑定[Ctrl] [Enter]的唯一方法是将终端配置为发送该组合键的唯一序列。

PS,如果你抓住当前的git head源代码,你可以make fish_key_reader构建一个方便的程序,它会显示很多关于不同键发送的信息(虽然你需要等待一些从我输入这个时间开始的几分钟,因为我需要合并https://github.com/fish-shell/fish-shell/pull/3012)。

PPS,从鱼2.3.0(目前处于测试阶段)开始,tty驱动程序不再自动将输入密钥发送的\r(又名\cM)转换为\n(又名\cJ)。

答案 1 :(得分:0)

我认为您需要以下内容:

bind \cf accept-autosuggestion execute

或以下(如果已安装vi模式)

bind -M insert \cf accept-autosuggestion execute