Rendre le mode vi de Bash ' s par défaut “ normal ” mode Vi (pas “ insert ”) et placez le curseur au début de la ligne, en imitant KornShell

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!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *