Haluan löytää vaihtoehdon ctrl + R hakuhistorialle bashissa. Voin ottaa käyttöön vi-tilan bashissa, mutta en voi tehdä siitä hakua. Kun teen /search
tai ?search
, mitään ei tapahdu. Onko jotain muuta mitä minun pitäisi painaa? Yritin painaa Enter ja sitten se tapahtuu:
$ set -o vi $ ls|grep f $ /gr -bash: /gr: No such file or directory $
Kommentit
Vastaa
Vim-tyylin haku on varmasti bash / readline. Itse asiassa komentorivisi on olennaisesti pienennetty versio Vim-editorista, ja käytettävissäsi on huomattava määrä Normal-tilan komentoja. Lisää siitä sekunnissa, mutta ensimmäinen haku. Keskeinen tarvitsemasi tieto on, että kun tuijotat vilkkuvaa kohdistinta komentorivilläsi, olet vastaava kuin Vim: n lisäystila. Kuinka pääsemme normaalitilaan? Lyömällä Esc tietysti.
Sieltä paina / , kirjoita hakutermi ja paina Enter . Nyt voit käyttää n ja N siirtyäksesi edestakaisin tulosten läpi. (Olet todennäköisesti etsimässä taaksepäin oletusarvoisesti n
… etsimällä eteenpäin alusta alkaen ei antaisi tuloksia, koska tulevaisuudessa ei ole historiaa!) Nykyisen tuloksen suorittaminen komennona paina Enter uudelleen.
Älä unohda, että sinä ” olet kuitenkin normaalitilassa, joten jos et löydä etsimääsi ja haluat palata tekstin syöttämiseen lisäystilassa, tee se, mitä yleensä teet Vimissä. Esimerkiksi painamalla i , se tehdään. Tai voit käyttää Vim-komentoa C
, joka poistaa kaikki tekstit kohdistimen jälkeen ja siirtyvät lisäystilaan, mikä on kätevää. (Voit edetä sen kohdalla 0
, jos siirrit kohdistimen ensimmäisen sarakkeen ohi.) Tai käytä A
, a
, R
, s
, s
, I
, Ctrl-C
… saat kuvan.
Saapuvien lisäystilaan siirtyvien komentojen lisäksi voit navigoida b
, B
, e
, E
, w
, W
, 0
, $
Yank / delete / put ovat myös siellä, ja voit käyttää niitä niissä toiminnassa + navigointikomennot, kuten yB
, c2e
, d$
jne. 1 Lopuksi u
ndo toimii myös! Kokeile itse jotain muuta.
Voi, ja jos eksyt hiukan tai, kuten minulle sattuu silloin tällöin, jonkin verran funktiota rivin käärimisen kanssa sekoittaa sinun c / l, voit pudottaa teeskentelyn ja painaa v
. Tämä vetää komentorivisi sisällön Vim: n todelliseen esiintymään, jotta voit muokata sitä Täysin aseistetulla ja toiminnallisella tekstieditorilla . Kun olet valmis, :wq
lähetä omasi kuoreen suoritettavaksi.
1 Valitettavasti operaattori + liikekomentoja (caw
, dis
, yap
jne.) ei tueta. Mutta @EdNeville ”alla olevassa kommentissa on linkki joihinkin readline-asetuksiin , jotka lisäävät näennäisesti jokainen siellä oleva op-motion -komento on sekä joukko muita. Voit todella täydentää komentorivipohjaista Vim-kokemustasi lisäämällä ne .inputrc-tiedostoosi.
Lisätietoja : Et ole rajoitettu käyttämään vain sitä, mitä set -o vi
tai set -o emacs
antaa sinulle. Voit käyttää mitä tahansa käytettävissä olevista readline-komennoista. Mielestäni Ctrl-R
pitäisi olla käytettävissä myös Vim-tilassa, mutta jos ei, voit yrittää lisäämällä tämä ~/.inputrc
-kansioon …
set editing-mode vi "\C-r": reverse-search-history "\C-s": forward-search-history
Parempi vielä voit lisätä joitain muuten käytettävissä olevia komentoja, kuten
"\C-o": operate-and-get-next
Tämän jälkeen kun olet valinnut komennon historiasta (esim.Vim-haun kautta) osuma Ctrl-O
Enter
-kohdan sijaan, ja Bash suorittaa komennon ja lisää seuraavan komennon historiasta, valmis suoritettavaksi.
Katso täydellinen luettelo Bash-sivun Readline-komentojen nimet -osiosta.
(Voit määrittää ne myös komentoriviltä bind
-komento, mutta olen jo tulossa liian kauas täältä.)
Kommentit
- Hienoa. Oppimishetki.
- @niklas, tämä on vastauksesi
- @glennjackman Käytän voimakkaasti tätä toimintoa. Todella hyödyllinen minulle.
- @NiklasRosencrantz Jep, ymmärsin. yritä kirjoittaa vastauksia, jotka ovat yleensä hyödyllisiä eikä keskittynyt yksinomaan kyselyyn, joten lisäsin lisätietoa eri tilojen komentojen sekoittamisesta.
- Voit myös lisätä esimerkiksi
ciw
Jos muokkaat .inputrc: usenix.org.uk/content/bash.html#input
Vastaus
mitä @ B-Layer mainitsi, toimii melko hyvin bashissa ja vastaavasti zsh: ssä.
Koska käytät jo VIM: ää ja jos käytät neovim
tai vim8
, voit myös kokeilla :terminal
, joka avaa oletuspäätteen hakemistossa vim
.
Sitten voit käyttää vim-komentoa navigoidaksesi terminaalin lähdössä sekä navigoidaksesi päätelaitteen komentojen historiassa.
Viite
<C-r>
ei todellakaan toimi sinulle lukuviivan vi-tilassa? Se toimii minulle hyvin viimeisimmällä versiolla bashista.<C-r>
on emacs-tila ja haluan oppia vi-tila.<C-r>
on vain rekursiivinen haku; ei ole varma, että sillä on mitään tekemistä emacs vs vi: n kanssa, varsinkin kun se voi olla bash-spesifinen laajennus (muistini on epäselvä tästä yksityiskohdasta). En estä sinua käyttämästä/
, vain että jokaisella on (eri) käyttötarkoituksensa.