Jessaye de faire en sorte que Bash imite le comportement de KornShell93 (ksh
) lorsque les shells sont en mode dédition de ligne de commande Vi.
KornShell par défaut en « mode normal Vi » (aussi appelé mode « commande ») et il place également le curseur au tout début de la ligne de commande lorsque vous revenez en arrière dans lhistorique de la ligne de commande. Ceci est contrairement à Bash, qui vous met dans « Vi insert mode « et à la fin de la ligne de commande.
Dans les réponses à » Configuration du mode Bash vi en mode commande par défaut » , il a pratiquement conclu quil ny a aucun moyen de faire passer Bash par défaut en « mode normal Vi » lorsque lédition de la ligne de commande Vi est activée.
Cétait plus de cinq ans il y a maintenant, et je me demande si cela a changé depuis?
Et quen est-il de placer automatiquement le curseur au début de la ligne de commande? Y a-t-il une magie de Readline à mon insu qui peut maider avec ça?
Jutilise la version 4.4.5 (1) de Bash compilée à partir des sources (OpenBSD shells/bash
port) sur OpenBSD-current (janvier 2017).
Commentaires
- En tant que point de données, Zsh se comporte comme Bash ^ H ^ H ^ H ^ HReadline, pas comme ksh. (Le comportement de Bash ' nest pas ' t vraiment Bash ' s, il ' s Readline ' s, que Bash utilise.)
Réponse
Il semble quil ny ait pas de moyen adéquat dinsérer un Echap dans la ligne de commande.
Dans vi-insert
la plupart des alpha/numeric
touches sont utilisées. Echap est assez éloigné, et tout accord (comme Alt-j
( qui fonctionne)) semble plus complexe que souhaité. Il existe donc un moyen de convertir deux en une configuration rable string.
La solution de contournement fonctionne en utilisant lidée de Cette réponse
Ajoutez simplement ceci à .inputrc
:
set editing-mode vi set vi-ins-mode-string \1\e[6 q\2 set vi-cmd-mode-string \1\e[2 q\2 set keymap emacs "\ee": vi-editing-mode "jk": "\eejk" "kj": "\eejk" set keymap vi-insert "\ee": emacs-editing-mode "jk": vi-movement-mode "kj": vi-movement-mode set keymap vi-command "\ee": emacs-editing-mode
Par cela, peu importe où vous commencez soit emacs
ou vi
, appuyer à la fois sur jk
vous placera en mode vi-command au début de ligne .
De plus, il vous permet de passer en mode emacs
avec Esc – e .
Commentaires
- Je peux ' T upvote assez! Je me suis débarrassé du truc emacs et je nai besoin que du raccourci " jk ", je ne ' t besoin de " kj ", donc jai simplement:
set editing-mode vi
set vi-ins-mode-string \1\e[6 q\2
set vi-cmd-mode-string \1\e[2 q\2
set keymap vi-insert
"jk": vi-movement-mode
et maintenant je le suis heureux!