Shell Ctrl-F不再适用于接受建议。为什么?
我最近通过在配置中添加Shell Ctrl-F不再适用于接受建议。为什么?,shell,fish,Shell,Fish,我最近通过在配置中添加fish_Vi_mode启用了Vi模式。由于我这样做了,Ctrl+F不再适用于完成建议,因此我必须使用右箭头 forward char的键绑定与启用或不启用fish_vi_模式的键绑定相同。根据fish\u config,它们是: forward-char Right Arrow forward-char Right Arrow forward-char CTRL - f 为什么Ctrl+F不能在启用fish\u vi\u模式时工作?在vi模式下,运行b
fish_Vi_mode
启用了Vi模式。由于我这样做了,Ctrl+F不再适用于完成建议,因此我必须使用右箭头
forward char
的键绑定与启用或不启用fish_vi_模式
的键绑定相同。根据fish\u config
,它们是:
forward-char Right Arrow
forward-char Right Arrow
forward-char CTRL - f
为什么Ctrl+F不能在启用
fish\u vi\u模式时工作?在vi模式下,运行bind
并查找\cf
,它在这里:
bind -M insert \cf forward-word
事情就是这样的:control-F前进了一个单词。您可以恢复非vi行为:
bind -M insert \cf forward-char
这意味着向前移动一个字符,或者如果光标位于末尾,则接受自动提示(这当然有点奇怪)
或者,如果您希望它只接受自动建议,您可以在fish_vi_模式
后运行此命令:
bind -M insert \cf accept-autosuggestion
现在,它在任何时候都接受自动建议,而不仅仅是在最后
顺便说一句,这些函数如accept autosuggestion
或forward char
可以通过bind--function names
编辑:这比预期的要难。最简单的方法是在fish\u user\u key\u bindings
函数中调用fish\u vi\u mode
:
function fish_user_key_bindings
fish_vi_mode
bind -M insert \cf accept-autosuggestion
bind \cf accept-autosuggestion
end
您可以使用funced fish\u user\u key\u绑定
编写该函数,然后使用funcsave fish\u user\u key\u绑定
保存该函数。感谢您的回复。但是将bind
行添加到我的配置中没有任何影响。我在fish_vi_模式
行之后添加了它。我做错了什么?也许你在两次运行fish_vi_模式?运行bind
-是否存在新的accept autosuggestion绑定?如果仅在命令行上运行bind-M insert\cf accept autosuggestion
,会发生什么情况?当我仅将其添加到配置文件时,它不存在。如果我手动运行bind
,它就会工作。我的配置是这样的:我是否需要取消所有的fish会话,或者打开一个新的终端就足够了?呃,好吧,这比它应该做的要难。我用我认为最好的方法编辑了我的回复。这很有效。非常感谢你的帮助。关于鱼的伟大作品:)