
Estoy en Arch Linux (4.13.11) y en mi .bashrc
, hay una función personalizada que encuentra un archivo usandofzfy luego abre ese archivo con el editor predeterminado:
# 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
}
He configurado mi .inputrc
, para usar combinaciones de teclas similares a Vim para el shell:
set editing-mode vi
Preferiblemente, podría presionar Ctrl+ ocuando esté en modo comando para llamar a mi función fzf_then_open_in_editor
.
Lo intenté
set keymap vi-command
"\C-o": fzf_then_open_in_editor
pero eso no funcionó.
En .inputrc
, ¿cómo puedo crear combinaciones de teclas para funciones definidas en .bashrc
?
Respuesta1
El formulario key: function
solo acepta funciones integradas de readline. Como descubriste, para ingresar texto necesitas lo que se llama una macro que debe estar entre comillas: key: "my macro\r"
. No veo por qué necesita comenzar con un comando de inserción, ya que normalmente ya está en modo de inserción en el símbolo del sistema.
Si desea llamar a una función, use un enlace de comando de shell con la opción -x
. No conozco ninguna forma de poner este enlace en un ~/.inputrc
, pero puedes poner el siguiente comando en tu .bashrc
:
bind -x '"\C-o": fzf_then_open_in_editor'
Respuesta2
Obtuve lo que quería agregando esto 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"
¿Dónde \015
está el código clave para Enter.
Esto funciona, pero tengo curiosidad por saber si existen soluciones más elegantes.