Määritä Bash ' s -tilan oletusasetukseksi “ normaali ” Vi-tila (ei “ insert ”) ja aseta kohdistin rivin alkuun jäljittelemällä KornShell

Yritän saada Bashin jäljittelemään KornShell93: n (ksh) käyttäytymistä, kun kuoret ovat Vi-komentorivin muokkaustilassa.

KornShell oletuksena ”Vi normaalitila” (alias ”komentotila”) ja se myös asettaa kohdistimen aivan komentorivin alkuun, kun siirryt taaksepäin komentorivihistorian läpi. Tämä on ristiriidassa Bashin kanssa, joka asettaa sinut ”Vi” insert mode ”ja komentorivin lopussa.

Vastauksissa” Bash vi -tilan määritykset oletusarvoisesti komentotilaan ” , se päätyi siihen johtopäätökseen, että ei ole mitään tapaa asettaa Bash-asetukseksi ”Vi normaali tila”, kun Vi-komentorivin muokkaus on käytössä. s sitten nyt, ja ihmettelen, onko tämä muuttunut sen jälkeen?

Entä jos kohdistin asetetaan automaattisesti komentorivin alkuun? Onko minulle tuntemattomia Readline-taikuuksia, jotka voivat auttaa minua tässä?

Käytän lähteestä koottu Bash-version 4.4.5 (1) julkaisua (OpenBSD shells/bash -portti) OpenBSD-current -palvelussa (tammikuu 2017).

Kommentit

  • Datapisteenä Zsh käyttäytyy kuten Bash ^ H ^ H ^ H ^ HReadline, ei kuten ksh. (Bash ' käyttäytyminen ei ole ' t todella Bash ' s, se ' s Readline ' s, joita Bash käyttää.)

vastaus

Näyttää siltä, että Esc: tä ei ole riittävää lisätä komentoriville.

Vaikka vi-insert käytetään eniten alpha/numeric -näppäimiä. Esc on melko kaukana, ja kaikki soinnut (kuten Alt-j ( joka toimii)) vaikuttavat toivottua monimutkaisemmilta. Joten on olemassa tapa saada kaksi -näppäintä muunnetuksi rable-merkkijono.

Kiertotapa toimii käyttämällä ideaa aiheesta Tämä vastaus

Lisää tämä vain kohtaan .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 

Tällä tavoin riippumatta siitä, mistä aloitat emacs tai vi, painamalla molempia jk siirryt vi-komentotilaan rivin alku .

Lisäksi sen avulla voit vaihtaa emacs -tilaan Esc-näppäimellä e .

Kommentit

  • Voin ' äänestä tätä tarpeeksi! Pääsin eroon emacs-jutuista ja tarvitsen vain " jk " -pikakuvakkeen, en ' t need " kj ", joten minulla on yksinkertaisesti: 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 ja nyt olen onnellinen!

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *