Legyen a Bash ' s vi-mód alapértelmezett értéke “ normál ” Vi mód (nem “ insert ”), és helyezze a kurzort a sor elejére, utánozva a KornShell

Azt próbálom elérni, hogy Bash utánozza a KornShell93 (ksh) viselkedését, amikor a héjak Vi parancssori szerkesztési módban vannak.

KornShell alapértelmezés szerint “Vi normál mód” (más néven “parancs” mód), és a kurzort a parancssor legelején is elhelyezi, amikor hátralép a parancssori előzmények között. Ez ellentétben áll a Bash-szel, amely a “Vi üzemmód beillesztése “és a parancssor végén.

A” Bash vi mód konfigurálása alapértelmezett parancs módra válaszokban , nagyjából arra a következtetésre jutott, hogy nincs mód a Bash alapértelmezett “Vi normál módra” állítására, ha a Vi parancssori szerkesztés engedélyezve van. s most, és kíváncsi vagyok, hogy ez változott-e azóta?

És mi van azzal, ha a kurzort automatikusan a parancssor elejére helyezi? Van néhány ismeretlen Readline varázslat, amely segíthet ebben?

A forrásból összeállított Bash 4.4.5 (1) verziót használom (az OpenBSD shells/bash port) az OpenBSD-current-on (2017. január).

Megjegyzések

  • Adatpontként a Zsh úgy viselkedik, mint Bash ^ H ^ H ^ H ^ HReadline, nem úgy, mint a ksh. (Bash ' viselkedése nem ' nem igazán Bash ' s, ez ' s Readline ' s, amelyet Bash használ.)

Válasz

Úgy tűnik, hogy nincs megfelelő mód Esc beszúrására a parancssorba.

Míg a vi-insert a legtöbb alpha/numeric kulcs használatos. Az Esc meglehetősen messze van, és minden akkord (például Alt-j ( ami működik)) a kívántnál bonyolultabbnak tűnnek. Tehát van egy módja annak, hogy két kulcs konvertálhatóvá váljon rable string.

A megoldás a ötlet felhasználásával működik. Ez a válasz

Csak adja hozzá ezt a .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 

Ezzel, akárhonnan is induljon emacs vagy vi, mindkét jk megnyomásával vi-parancs módba kerül a a sor eleje – e .

Megjegyzések

  • Tudok ' ezt eléggé szavaztad! Megszabadultam az emacs cuccoktól, és csak a " jk " parancsikonra van szükségem, nem ' t need " kj ", tehát egyszerűen: 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 és most vagyok boldog!

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük