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!