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 rež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.

Ką reikia žinoti, norint atlikti pagrindinius teksto redagavimo veiksmus[keisti]

Na, o 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 režimus, tik atsidarius redaguoti failą automatiškai įsijungia komandinis režimas (jei parametrais nenurodoma kitaip). Komandiniame režime negalima įvedinėti teksto! Būtina to neužmiršti. Pagrindiniai redagavimo rež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ą režimą, pirmasis ( ESC ), perėjimui į komandinį režimą veikia visada, o paskutiniai trys veikia tik iš komandinio režimo.

Perėjimas į teksto redagavimo režimą

Perėjimui į teksto redagavimo režimą yra galybė būdų, pasirenkamas atitinkamas, priklausomai nuo situacijos. Kiekvieną kartą, prieš pereinant į teksto įvedimo režimą reikia pastatyti žymeklį (angliškai „cursor“) 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 žymeklis (append)
i - dešinėje simbolio, virš kurio randasi žymeklis (insert)
A - eilutės pabaigoje (Append)
I - eilutės pradžioje (Insert)
o - įterpia naują eilutę, žemiau žymeklio ir pradeda įvedimo režimą
O - įterpia naują eilutę, aukščiau žymeklio ir pradeda įvedimo režimą
s - pašalinti simbolį virš kurio randasi žymeklis 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 (outer). 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 žymeklis iki žodžio pabaigos, įskaitant ir tarpo simbolius esančius žodžio pabaigoje
ce - pradeda teksto įvedimą nuo žodžio vidurio, kur yra žymeklis iki žodžio pabaigos, neįskaitant ir tarpo simbolių esančių žodžio pabaigoje
ci) - pradeda teksto įvedimą prieš tai panaikinant tekstą esantį tarp skliaustelių, skliausteliai paliekami
ca} - pradeda teksto įvedimą 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į režimą.

Keletas naudingų komandų

Visos žemiau aprašytos komandos veikia komandiniame režime:

u - kiek kartu spausi, tiek paskutinių atliktų veiksmų panaikins (undo)
Ctrl+R - sugrąžins 'u' komandos panaikinta paskutinį veiksmą
. - pakartoja paskutinį atliktą veiksmą, labai naudingas dalykas
0 - perkelia žymeklį į eilutės pradžią
^ - perkelia žymeklį prie pirmo simbolio nuo eilutės pradžios, kuris nėra tarpo simbolis
$ - perkelia žymeklį į eilutės pabaigą
gg - žymeklis perkeliamas į failo pradžią
G - žymeklis perkeliamas į failo pabaigą
% - perkelia žymeklį prie sekančio simbolio atitikmens, galimi simboliai: (,),{,},[,]
* - ieško kito žodžio tekste, kuris yra po žymekliu
# - ieško ankstesnio žodžio tekste, kuris yra po žymekliu
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 rež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 žymekliu
D - trina tekstą iki eilutės pabaigos
dd - trina visą eilutę
dw - trina žodį nuo žymeklio padėties žodyje, iki žodžio pabaigos
Y - kopijuoja visą eilutę
yi) - kopijuoja visą tekstą esantį tarp skliaustelių
p - įklijuoja nukopijuotą tekstą po žymekliu, arba po eilute, kurioje yra žymeklis
P - įklijuoja nukopijuotą tekstą prieš žymeklį, arba virš eilutės, kurioje yra žymeklis
"+yy - nukopijuoja pažymėtą tekstą į operacinės sistemos iškarpinę
"+p - įklijuoja tekstą iš operacinės sistemos iškarpinės
; - pakartoja paskutinę peršokimo komandą
~ - keičia didžiąsias raides mažosiomis ir atvirkščiai


Komandų yra tikrai labai daug, tačiau supratus, kaip jas naudoti, teksto redagavimas pasidaro neįtikė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 režimą

Kelių failų redagavimas[keisti]

Redaguojant daugiau nei vieną failą, prie sekančio pereinama, komandiniame rež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.

Darbas VIM redaktoriumi Easy režimu[keisti]

Paleidus VIM redaktorių tokiomis komandomis:

evim
vim -y
vi -y

bus paleistas redaktorius easy rež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.