我在 Arch Linux (4.13.11) 上,在我的 中.bashrc
,有一个自定义函数可以使用以下命令查找文件弗兹夫然后使用默认编辑器打开该文件:
# Search a file with fzf inside a Tmux pane and then open the file in an editor
fzf_then_open_in_editor() {
local file=$(fzf-tmux)
# Open the file if it exists
if [ -n "$file" ]; then
# Use the default editor if it's defined, otherwise Vim
${EDITOR:-vim} "$file"
fi
}
我已经将.inputrc
, 配置为在 shell 中使用类似 Vim 的键绑定:
set editing-mode vi
最好,我可以在命令模式下按Ctrl+o来调用我的函数fzf_then_open_in_editor
。
我试过
set keymap vi-command
"\C-o": fzf_then_open_in_editor
但这没有用。
在 中.inputrc
,如何为 中定义的函数创建键绑定.bashrc
?
答案1
该表单key: function
仅接受 readline 内置函数。正如您所发现的,要输入文本,您需要所谓的宏,该宏必须用引号括起来:key: "my macro\r"
。我不明白为什么您需要从插入命令开始,因为通常您已经在命令提示符下处于插入模式。
如果要调用函数,请使用带有 option 的 shell 命令绑定-x
。我不知道有什么方法可以将此绑定放入 a 中~/.inputrc
,但您可以将以下命令放入您的 中.bashrc
:
bind -x '"\C-o": fzf_then_open_in_editor'
答案2
我通过将其添加到以下内容得到了我想要的.inputrc
:
set keymap vi-command
# Go to insert mode with i, write the function's name, then hit enter
"\C-o": "ifzf_then_open_in_editor\015"
\015
的密钥代码在哪里Enter。
这可行,但我很好奇是否有更优雅的解决方案。