Ctrl-F 不再适用于接受建议。为什么?

Ctrl-F no longer works to accept suggestions. Why?

我最近通过将 fish_vi_mode 添加到我的配置来启用 Vi 模式。由于我这样做 Ctrl+F 不再适用于完成建议,我必须改用右箭头。

无论是否启用 fish_vi_modeforward-char 的键绑定都是相同的。根据fish_config,他们是:

forward-char    Right Arrow
forward-char    Right Arrow
forward-char    CTRL - f

为什么 Ctrl+F 在启用 fish_vi_mode 的情况下不起作用?

在 vi 模式下,运行 bind 并寻找 \cf,它在这里:

bind -M insert \cf forward-word

事情就是这样:control-F 按一个字前进。您可以恢复非 vi 行为:

bind -M insert \cf forward-char

这是前进一个字符,或者如果光标在末尾则接受自动建议(这确实有点奇怪)。

或者如果你想让它只接受自动建议,你可以 运行 在 fish_vi_mode:

之后
bind -M insert \cf accept-autosuggestion

现在它在任何时候都接受自动建议,而不仅仅是在最后。

顺便说一句,accept-autosuggestionforward-char 等函数可以通过 bind --function-names

列出

编辑:由于#2254,这比它应该做的更难。最简单的是将对 fish_vi_mode 的调用放在 fish_user_key_bindings 函数中:

function fish_user_key_bindings
    fish_vi_mode
    bind -M insert \cf accept-autosuggestion
    bind \cf accept-autosuggestion
end

你可以用funced fish_user_key_bindings写那个函数,然后funcsave fish_user_key_bindings保存。

根据 Fish 发行说明 (https://fishshell.com/docs/current/relnotes.html?highlight=vi_mode),要修改先前接受的答案,您需要将 fish_vi_mode 替换为 fish_vi_key_bindings