Ubuntu Linux žaliems/Vim
Iš Wikibooks.
Trumpai apie vim redaktoriaus pranašumus prieš kitus redaktorius ir kodėl redaguoti tekstą su vim yra kur kas patogiau nei su kitais.
- vim teksto redaktorius nėra lengvai išmokstamas, teksto redagavimo filosofija pakankamai stipriai skiriasi nuo daugumai įprasto teksto redagavimo būdo. Todėl šie faktai daugumą atbaido nuo šio redaktoriaus. Tačiau įdėtos pastangos mokantis atsiperka su kaupu!
- Dauguma operacijų pasiekiamos pagrindinėje klaviatūros dalyje, todėl teksto redagavimas gali būti itin greitas įvaldžiusiems 'akląjį spausdinimą', nes neatitraukiant rankų nuo pagrindinės klaviatūros dalies (kur išdėstytos raidės), pasiekiama galybė teksto redagavimui skirtų funkcijų.
- Yra galimybė redaguoti tekstą keliais redagavimo rėžimais, kas žymiai pagreitina darbą redaguojant programinį kodą.
- Egzistuoja toks dalykas, kaip teksto objektai, tai reiškia, kad galima operuoti norimu teksto objektu, nesivarginant žymint teksto dalį.
Bet kuris norintis rimtai pradėti mokytis "vim filosofijos" turėtu nuo pradžios iki galo perskaityti vimtutor, kurį galima iškviesti iš komandinės eilutės:
vimtutor
Atsiras tekstas vim redaktoriaus aplinkoje, reikia tiesiog nuosekliai skaityti, kas parašyta ir bandyti atlikti aprašytus veiksmus, viskas užtruks apie puse valandos, po to, kiekvienas įgys bendrąsias žinias apie navigacija tekste ir pagrindines redagavimo komandas.
[redaguoti] Ką reikia žinoti, norint atlikti pagrindinius teksto redagavimo veiksmus
Na kas neturi laiko mokytis iš vimtutor, supažindinsiu su pagrindinėmis šio tekstų redaktoriaus savybėmis.
vim redaktoriumi galima pradėti redaguoti egzistuojantį failą, arba sukurti naują. Kaip ir bet kokiam kitam redaktoriui visi perduodami parametrai, kurie yra gale ir prasideda be brūkšnelio, interpretuojami, kaip failai.
Paleidimo būdai:
vim vi vi file.txt vim file.txt vi file1.txt file2.txt file_a*.txt
Kaip minėjau anksčiau vim turi kelis redagavimo rėžimus, tik atsidarius redaguoti failą automatiškai įsijungia komandinis rėžimas (jei parametrais nenurodoma kitaip). Komandiniame rėžime negalima įvedinėti teksto! Būtina to neužmiršti. Pagrindiniai redagavimo rėžimai yra šie:
- komandinis ( ESC )
- teksto įvedimo ( a )
- komandinės eilutės ( : )
- vizualusis, teksto žymėjimui ( v )
Skliausteliuose pažymėti pagrindiniai klavišai, kurių pagalba pereinama į atitinkamą rėžimą, pirmasis ( ESC ), perėjimui į komandinį rėžimą veikia visada, o paskutiniai trys veikia tik iš komandinio rėžimo.
Perėjimas į teksto redagavimo rėžimą
Perėjimui į teksto redagavimo rėžimą yra galybė būdų, pasirenkamas atitinkamas, priklausomai nuo situacijos. Kiekvieną kartą, prieš pereinant į teksto įvedimo rėžimą reikia pastatyti kursorių atitinkamoje vietoje ir tada pasirinkti komandą (vieną klaviatūros klavišą), nuo kurio paspaudimo priklauso kaip bus pradėtas teksto įvedimas:
- a - kairėje simbolio, virš kurio randasi kursorius (append)
- i - dešinėje simbolio, virš kurio randasi kursorius (insert)
- A - eilutės pabaigoje (Append)
- I - eilutės pradžioje (Insert)
- o - įterpia naują eilutę, žemiau kursoriaus ir pradeda įvedimo rėžimą
- O - įterpia naują eilutę, aukščiau kursoriaus ir pradeda įvedimo rėžimą
- s - pašalinti simbolį virš kurio randasi kursorius ir pradėti įvedimą
- C - pašalinti tekstą iki eilutės pabaigos ir pradėti įvedimą
- S - pašalinti visą eilutę ir pradėti įvedimą
Trumpai apie teksto objektus ir kombinuotas komandas su jais
Teksto objektai gali būti žodis, kelių žodžių seka, tarp kurių nėra tarpo simbolio, paragrafas, teksto dalis esanti tarp '(', ')' simbolių, teksto dalis esanti tarp '{', '}' simbolių ir t.t. Kiekvienas teksto objektas būti vidinis (inner) arba išorinis (auter). Nagrinėjant vieną žodį tekste simboliu '|' pažymėsiu vidini ir išorinį teksto objektus: vidinis
tekstas |tekstas| tekstas
išorinis
tekstas| tekstas |tekstas
Kaip matote, vidinis apima tik patį žodį, o išorinis ir tarpus supančius žodį, kalbant apie '(', ')' teksto objektą, bus apimami ne tarpai, o simboliai '(', ')', ta pati taisyklė galioja ir kitiems teksto objektams. Teksto objektų klavišai yra tokie:
- w - žodis atskirtas tarpo arba simboliais, kurie nėra raidės ar skaičiai (word)
- W - žodis kuris atskirtas tik tarpais (Word)
- ) - tekstas esantis tarp skliaustelių
- } - tekstas esantis tarp riestinių skliaustelių
- ] - tekstas esantis tarp laužtinių skliaustelių
Apjungus komandas teksto įvedimui pradėti ir teksto objektus galima pradėti įvesti tekstą vietoje kokio nors objekto, keli pavyzdžiai:
- cw - pradeda teksto įvedimą nuo žodžio vidurio, kur yra kursorius iki žodžio pabaigos, įskaitant ir tarpo simbolius esančius žodžio pabaigoje
- ce - pradeda teksto įvedimą nuo žodžio vidurio, kur yra kursorius iki žodžio pabaigos, neįskaitant ir tarpo simbolių esančių žodžio pabaigoje
- ci) - pradeda teksto įvedima prieš tai panaikinant tekstą esantį tarp skliaustelių, skliausteliai paliekami
- ca} - pradeda teksto įvedima prieš tai panaikinant visą tekstą esantį tarp riestinių skliaustelių, skliausteliai panaikinami taip pat, veikia ne tik vienoje eilutėje..
Čia vietoje 'c' galima naudoti 'd', tokiu būdu bus panaikinamas tekstas, ir nebus pereinama į komandinį rėžimą.
Keletas naudingų komandų
Visos žemiau aprašytos komandos veikia komandiniame rėžime:
- u - kiek kartu spausi, tiek paskutinių atliktų veiksmų panaikins (undo)
- Ctrl+R - sugražins 'u' komandos panaikinta paskutinį veiksmą
- . - pakartoja paskutinį atliktą veiksmą, labai naudingas dalykas
- 0 - perkelia kursorių į eilutės pradžią
- ^ - perkelia kursorių prie pirmo simbolio nuo eilutės pradžios, kuris nėra tarpo simbolis
- $ - perkelia kursorių į eilutės pabaigą
- gg - kursorius perkeliamas į failo pradžią
- G - kursorius perkeliamas į failo pabaigą
- % - perkelia kursorių prie sekančio simbolio atitikmens, galimi simboliai: (,),{,},[,]
- * - ieško sekančio žodio tekste, kuris yra po kursoriumi
- # - ieško ankstesnio žodžio tekste, kuris yra po kursoriumi
- n - pakartoja paskutinę paiešką
- N - pakartoja paskutinę paiešką atbuline eiga
- fa - peršoka prie sekančio simbolio 'a'
- Fa - peršoka prie ankstesnio simbolio 'a'
- cf. - naikina eilutę iki simbolio '.', taip pat panaikina ir simbolį '.' ir pradeda įvedimo rėžimą
- ta - peršoka prieš sekantį simbolį 'a'
- Ta - peršoka prieš ankstesnį simbolį 'a'
- ; - pakartoją paskutinę peršokimo komandą
- x - trina simbolį esantį po kursoriumi
- D - trina teksta iki eilutės pabaigos
- dd - trina visą eilutę
- dw - trina žodį nuo kursoriaus padėties žodyje, iki žodžio pabaigos
- Y - kopijuoja visą eilutę
- yi) - kopijuoja visą tekstą esantį tarp skliaustelių
- p - įklijuoja nukopijuotą tekstą po kursoriaus, arba po eilute, kuioje yra kursorius
- P - įkliejuoja nukopijuotą tekstą prieš kursorių, arba virš eilutės, kurioje yra kursorius
- ; - pakartoją paskutinę peršokimo komandą
- ~ - keičia didžiasias raides mažosiomis ir atvirkščiai
Komandų yra tikrai labai daug, tačiau supratus kaip jas naudoti teksto redagavimas pasidaro neytikėtinai greitas. Taip pat norėčiau atkreipti dėmesį į tai, kad kiekvienas teksto pašalinimo veiksmas automatiškai nukopijuojamas, todėl vėliau ji galima įklijuoti į kitą vietą komandomis p ir P. Taip pat vim turi operacijų kartojimo galimybe, tai reiškia, kad prieš kiekvieną aukščiau aprašytą komandą įvedus skaičių ji bus tiek kartų pakartota, pvz. įvedus: 10obandymas, bus įterpia 10 eilučių su žodžiu 'bandymas'.
Keletas sudėtingesnių komandų junginių
- xp - sukeičiami du simboliai vietomis
- ddp - sukeičia dvi eilutes vietomis
- Y8p - nukopijuoja visą eilutę ir įterpia ją 8 kartus
- g~w - keičia didžiausias raides mažosiomis ir atvirkščiai visam žodžiui
- ggcG' - naikinamas visas failo turinys ir pereinama į teksto įvedimo rėžimą
[redaguoti] Kelių failų redagavimas
Redaguojant daugiau nei vieną failą, prie sekančio pereinama, komandiniame rėžime įvedus:
- :bn - pereina prie sekančio failo.
- :bp - pereina prie ankstesnio failo.
- :b# - pereina į priš tai redaguotą failą.
- :b e2 - 'e2' yra unikalus failo fragmentas iš bet kurios vietos failo pavadinime, jei yra keli failai su tokiu fragmentu, pasirodys pranešimas, kad yra keli failai, tada galima spausti Ctrl+D, kad pasirodytu sąrašas, šiuo atveju bus atidarytas failas file2.txt.
- :b 3 - pereina prie failo, kurio id yra 3.
- :ls - parodo visų atidarytų redagavimui failų sąrašą, taip pat kiekvieno failo id.
[redaguoti] Darbas vim redaktoriumi Easy rėžimu
Paleidus vim redaktorių tokiomis komandomis:
evim vim -y vi -y
bus paleistas redaktorius easy rėžimu, tai reiškia, kad galėsite įvedinėti tekstą, taip kaip tai darote su bet kokiu kitu redaktoriumi, vadinamuoju 'click-and-type' būdu.