2011-07-27 9 views
27

¿Cómo puedo asignar jj a Esc en inputrc por lo que es recogido por las aplicaciones que utilizan GNU Readline (pitón, mongoshell, ...)mapa jj a Esc en inputrc (readline)

todas las obras bien en zsh usando:

bindkey -M viins 'jj' vi-cmd-mode 

esta es mi inputrc actual:

set editing-mode vi 
set keymap vi 

# turn off the stupid bell 
set bell-style none 
$if mode=vi 
    set keymap vi-command 
    "gg": beginning-of-history 
    "G": end-of-history 
    #"jj": vi-movement-mode 
    set keymap vi-insert 
    "\C-w": backward-kill-word 
    "\C-p": history-search-backward 
$endif 
+0

gracias por la línea zsh, que me inició en la creación de un readline vim/emacs híbrido –

Respuesta

27

Usted debe reorganizar el inputrc por lo que el comentado la línea viene después de set keymap vi-insert.

De esta manera:

set bell-style none 
$if mode=vi 
    set keymap vi-command 
    "gg": beginning-of-history 
    "G": end-of-history 
    set keymap vi-insert  #notice how the "jj" movement is 
    "jj": vi-movement-mode  #after 'set keymap vi-insert'? 
    "\C-w": backward-kill-word 
    "\C-p": history-search-backward 
$endif 
+2

Para mostrar lo que se aplica al modo de inserción y lo que se aplica al modo de comando, consulte este respuesta: http://superuser.com/questions/286781/readline-difference-between-vi-vi-move-vi-command-vi-insert-keymaps –

+0

¿Es posible hacer algo como esto para ? Estoy acostumbrado a usar eso en vim y sería bueno tenerlo salir del modo de inserción en lugar de ir a la siguiente línea. Preferiblemente sin cambiar la funcionalidad control-c cuando se está ejecutando un proceso. (Actualmente estoy usando bash por cierto) – mrfred