
Estou no Arch Linux (4.13.11) e no meu .bashrc
, há uma função personalizada que encontra um arquivo usandofzfe então abre esse arquivo com o editor padrão:
# 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
}
Eu configurei meu .inputrc
, para usar atalhos de teclado do tipo Vim para o shell:
set editing-mode vi
De preferência, eu poderia pressionar Ctrl+ oquando estiver no modo de comando para chamar minha função fzf_then_open_in_editor
.
tentei
set keymap vi-command
"\C-o": fzf_then_open_in_editor
mas isso não funcionou.
Em .inputrc
, como posso criar atalhos de teclado para funções definidas em .bashrc
?
Responder1
O formulário key: function
aceita apenas funções integradas readline. Como você descobriu, para inserir texto você precisa do que chamamos de macro que deve estar entre aspas: key: "my macro\r"
. Não vejo por que você precisa começar com um comando de inserção, pois normalmente você já está no modo de inserção no prompt de comando.
Se você quiser chamar uma função, use uma ligação de comando shell com option -x
. Não conheço nenhuma forma de colocar esse bind em um ~/.inputrc
, mas você pode colocar o seguinte comando no seu .bashrc
:
bind -x '"\C-o": fzf_then_open_in_editor'
Responder2
Consegui o que queria adicionando isto a .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"
Onde \015
está o código-chave para Enter.
Isso funciona, mas estou curioso para saber se existem soluções mais elegantes.