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!