VIM

From ICO wiki
Jump to navigationJump to search

Mis on VIM?

Vim on konfigureeritav tekstiredaktor, mille loojaks ja esmakordseks avaldajaks on Braam Moolenaar (aastal 1991). Selle eesmärgiks on võimaldada tõhusat teksti redigeerimist. Vim on täiustatud versioon Vi redaktorist, mis käib kaasas enamike UNIX'i süsteemidega. Vim on kavandatud nii käsureal kasutamiseks kui ka eraldiseisva rakendusena - graafilise kasutajaliidesena. Vim on tasuta ja avatud lähtekoodiga tarkvara. Algselt oli Vim mõeldud Amiga personaalarvutitele, kuid nüüdseks on ta arendatud mitmeplatvormiliseks ja töötab ka mitmetel teistel platvormidel (Atari MiNT, BeOS, DOS, Microsoft Windows 95/98/Me/NT/2000/XP/Server 2003/Vista/Server 2008/7, IBM OS/2 and OS/390, MorphOS, OpenVMS, QNX, RISC OS, Unix, Linux, BSD, Mac OS). Vim'i nimetatakse tihtipeale programmeerijate redaktoriks, kuna see on programmeerimiseks väga kasulik ja üsna paljude jaoks on see lausa omaette IDE. Tegelikkuses ei ole Vim mõeldud vaid programmeerijatele. Vim'i on mugav kasutada igasugusteks teksti redigeerimisteks, e-kirjade loomisest kuni konfiguratsiooni failide muutmiseni, kuid samas tuleb meeles pidada, et tegemist ei ole tekstitöötlusprogrammiga. Vim'ist on ka Notepad'i-laadseid versioone - evim või Easy Vim, mida on väga lihtne konfigureerida. Vim on ühtlasi ka tööriist, mille kasutamist tuleb õppida. [1] Aastal 2006 hääletati Vim Linux Journal lugejate poolt kõige populaarsemaks redaktoriks. [2]

[3]

[4]

Vim'i eellugu

Bram Moolenaar alustas tööd Vim'i kallal aastal 1988 kui ta ostis endale Amiga personaalarvuti. Ta oli harjunud kasutama Unix'i redaktorit ja kuna Amiga jaoks puudus piisavalt hea Vi, siis hakkas ta täiustama parimat olemasolevatest - programmi nimega Stevie'i. Alguses oli Bram'i eesmärgiks imiteerida Vi'd. Pärast seda lisandusid Vi'le uued funktsioonid ja Vi IMitation'ist sai Vi IMproved. Nüüdseks on Vim pidevalt kasvanud ja sellest on saanud keeruline programm. Uute funktsioonide lisamiseks tuleb teha tunduvalt suuremaid jõupingutusi, kuid samas ootavad kasutajad püsivalt uusi vahendeid, millega Vim'i kasutamist ja selle võimalusi efektiivsemaks muuta. [5]

Liides

Nagu Vi liides, ei baseeru ka Vim'i liides menüüdel või ikoonidel, vaid tekstipõhisesse kasutajaliidesesse sisestatud käskudel; selle graafiline liides, gVim, lisab menüüd ja tööriistaribad kõige sagedamini kasutatavatele käskudele, kuid täielik funktsionaalsus on siiski kättesaadav käsurealt. Vim'il on sisse-ehitatud õpetused algajatele, mis on kättesaadavad "vimtutor" käsuga. Veel on abiks ka Vim Users' Manual, mis täpsustab funktsioone ja on leitav Vim'ist ning Internetist. Vim'il on sisse-ehitatud abivahend, millele pääseb ligi ":help" käsuga, mis võimaldab kasutajal pärida ja navigeerda käskudes ja funktsioonides. [6]

Kohandamine

Vim'i suureks eeliseks on see, et teda saab laialdaselt kohandada. Põhiliidest on võimalik juhtida paljude olemasolevate valikute abil ja samas saab kasutaja defineerida personaliseeritud klahvivastendusi, mida tihtipeale nimetatakse makrodeks või lühenditeks. Nad automatiseerivad klahvivajutusi ja kutsuvad esile sisse-ehitatud või kasutaja poolt määratletud funktsioone. Saadaval on mitmeid pistikprogramme, mis laiendavad või lisavad Vim'ile uusi funktsioone. Need keerulised skriptid on tavaliselt kirjutatud Vim'i siseskriptimiskeeles vimscript'is. Vim toetab skriptimist kasutades Lua'd, Perl'i, Python'it, Racket'it, Ruby't ja Tcl'i. On projekte, mis panevad kokku keerukaid skripte ja kohandusi ning muudavad Vim'i tööriistaks, mis täidab mõnda kindlat ülesannet või moonutab suuresti Vim'i käitumist. Näiteks Cream, mis paneb Vim'i käituma kui "kliki ja kirjuta" redaktori.

Funktsioonid ja täiustused võrreldes Vi'ga

Vim'il on Vi ühilduvus töörežiim, kuid kui Vim pole parajasti eelnevalt mainitud režiimis, siis tal on Vi ees nii mõningaid eeliseid. Ometi ei ole Vim ka ühilduvus töörežiimis Vi'ga 100% ühilduv. Mõned Vim'i täiustustest: failide täiendamine, võrdlemine ja ühinemine (vimdiff), kõikehõlmav integreeritud abisüsteem, laiendatud väljendid, skriptimiskeeled (nii algupärased kui ka alternatiivsed interpretaatorid - Perl, Python, Ruby, Tcl jne), pistikprogrammide toetus, graafiline kasutajaliides (gvim), piiratud integreeritud arenduskeskkonna-laadsed funktsioonid, hiire kasutamine nii graafilise kasutajaliidesega kui ka ilma, pakitud või arhiveeritud gzip, bzip2, zip, tar failide muutmine ja toimetamine läbi SSH, FTP ja HTTP võrguprotokollide, sessiooniolekute säilitamine, õigekirja kontrollimine, unicode ja mitmekeelsuse toetus, süntaksi esile tõstmine, otsing, kursori positsioonide ajalugu, mitmetasandiline undo/redo ajalugu, mis võib püsida ka sessioonide muutudes ja visuaalne töörežiim.[7]

Vim'i kasutamine

Käivitamine

Lihtsamad käivitamiskäsud:

  • vim - käivita redaktor tühja puhvriga
  • vim minufail.txt - käivita redaktor ja ava või loo (kui faili pole varem loodud, luuakse automaatselt uus) fail nimega minufail.txt
  • vim minufail1.txt minufail2.txt minufail3.txt - käivitatakse redaktor ja avatakse või luuakse kõik failid nimedega minufail1.txt, minufail2.txt, minufail3.txt, vaikimisi näidatakse esimesena minufail1.txt'd

Töörežiimid

Vim'il on kolm erinevat töörežiimi:

  • käsu töörežiim (command mode) - kõik klahvivajutused tõlgendatakse käskudena
  • sisestus töörežiim (insert mode) - enamus klahvivajutustest sisestatakse tekstina
  • visuaalne töörežiim (visual mode) - aitab visuaalselt teksti valida ja on ühtlasi käsu töörežiimi alamrežiim

Vim'is on mitteteadjal kasutajal väga kerge endale "käkki kokku keerata", seega tuleb teada, kuidas Vim'ist lahkuda muutusi salvestamata. Selleks tuleb olla käsurežiimis, vajutada "ESC" klahvi ja väljumiseks sisestada :q!

Sisestus ja visuaalsest režiimist käsurežiimi liikumiseks tuleb vajutada "ESC" klahvi.

Käsu töörežiimist sisestusrežiimi:

  • i - lülita sisestusrežiimi enne praegust positsiooni
  • a - lülita sisestusrežiimi pärast praegust positsiooni
  • I - hüppa esimesele mittetühjale tähemärgile sellel real ja lülita sisestusrežiimile
  • A - hüppa viimasele tähemärgile sellel real ja lülita sisestusrežiimile

Käsu töörežiimist visuaalrežiimi:

  • v - lülita visuaalrežiimi (tähemärgile orienteeritud)
  • V - lülita visuaalrežiimi (reale orienteeritud)
  • CTRL-v - lülita visuaalplokkrežiimi (vali tekst ristkülikutena)

Liikumine

Kõige lihtsamad liikumiskäsud:

  • h - liigu vasakule
  • l - liigu paremale
  • j - liigu üles
  • k - liigu alla

Need käsud töötavad vaid käsurežiimis, kuid kõigis kolmes režiimis võib kursori liigutamiseks kasutada ka nooleklahve (aeglasem variant).

Mõned tähtsamad käsud, mis on paljude teiste käskude aluseks:

  • 0 - liigu rea algusesse
  • ^ - liigu esimese mittetühja tähemärgini reas
  • w - hüppa järgmise sõnani
  • W - hüppa järgmise sõnani, ignoreeri kirjavahemärke
  • e - hüppa sõna lõppu
  • E - hüppa sõna lõppu, ignoreeri kirjavahemärke
  • b - hüppa sõna algusesse
  • B - hüppa sõna algusesse, ignoreeri kirjavahemärke
  • ge - hüppa eelmise sõna lõppu
  • gE - hüppa eelmise sõna lõppu, ignoreeri kirjavahemärke
  • g_ - hüppa viimase mittetühja tähemärgini reas
  • $ - hüppa viimase tähemärgini reas

Liikumist saab kombineerida ka numbritega. Nt. 3w - hüppa 3x järgmise sõnani (sama tulemuse saab 3 korda järjest w'd vajutades). Vahel on vaja ühte märki mitu korda kasutada. Nt. 30i- "ESC" annab tulemuseks ------------------------------ ja selleks ei ole vaja 30 korda "-" vajutada. Kui midagi läheb valesti, siis saab alati kasutada undo'd/redo'd käsurežiimis käsuga "u", isegi undo'd on võimalik tagasi võtta kasutades CTRL-r käsku.

Redigeerimine

Nagu eelnevalt mainitud tuleb teksti sisestamiseks minna sisestusrežiimi kasutades käsku "i".

  • d - kustuta tähemärgid kursori positsioonist kuni järgmise käsu poolt antud positsioonini (nt. d$ kustutab kõik tähemärgid kursori positsioonist kuni viimase veeruni reas)
  • dw - kustuta sõna
  • c - muuda tähemärki kursori positsioonist kuni järgmise käsu poolt antud positsioonini
  • x - kustuta kursori all olev tähemärk
  • X - kustuta tähemärk enne kursorit (töötab nagu Backspace klaviatuuril)
  • y - kopeeri tähemärgid kursori positsioonist kuni järgmise käsu poolt antud positsioonini
  • p - kleebi eelnevalt kustutatud või kopeeritud tekst pärast kursori positsiooni
  • P - kleebi eelnevalt kustutatud või kopeeritud tekst enne kursori positsiooni
  • r - asenda praegune tähemärk uuega (mis sisestatakse)
  • s - asenda tekst kursori positsioonist kuni järgmise käsu poolt antud positsioonini uuega (mis sisestatakse)
  • . - korda viimati sisestatud või muudetud käsku (x, d, p, ..)

d, c või y dubleerimine avaldab mõju kogu reale. Nt. yy kopeerib kogu rea. Muudetud faili salvestamiseks ja Vim'ist lahkumiseks kasutatakse käsurežiimis :wq käsku või SHIFT+zz.

Visuaalne plokkrežiim

Visuaalplokkrežiimi kasutades on üsna lihtne märgistatud ala igale reale tähemärke sisestada. Oletame, et oleme valinud ristküliku (CTRL-v), nüüd saame selle ette sisestada teksti vajutades "I" (lülita sisestusrežiimi). Kui lülitame end sisestusrežiimist välja, siis lisatakse tekst ka kõigile teistele valitud ridadele. Kasutades "A" käsku saame valitud ristküliku taha meile vajalikku teksti sisestada. Veel üks kasulik rakendus on terve ploki asendamine uue tekstiga. Selle jaoks tuleb valida plokk ja vajutada "s", Vim siseneb sisestusrežiimi ja uue teksti kirjutamine võib alata. Pärast sisestusrežiimist lahkumist sisestab Vim kirjutatud teksti järelejäänud ridadele. Teksti lisamiseks rea lõppu kasutatakse CTRL-v$ ja valitakse read, kuhu soovitatakse tekst sisestada. CTRL-v erineb eelnevast selle poolest, et ta opereerib tulpades ja ignoreerib eelnevalt sisestatud teksti. [8]

Tekst-objektid

Vim'i käsud opereerivad tekst-objektidega, milleks on tähemärgid; sõnad; tähemärgid, mis on piiritletud sulgudega; laused jne.

  • iw - seesmine sõna (inner word)
  • aw - a-sõna (a word)
  • iW - a-seesmine SÕNA (a WORD)
  • is - seesmine lause (inner sentence)
  • as - a-lause (a sentence)
  • ip - seesmine lõik (inner paragraph)
  • ap - a-lõik (a paragraph)
  • i( või i) - seesmine plokk (inner block)
  • a( või a) - a-plokk (a block)
  • i< või i> - seesmine plokk (inner block)
  • a< või i> - a-plokk (a block)
  • i{ või i} - seesmine plokk (inner block)
  • a{ või a} - a-plokk (a block)
  • i" - seesmine plokk (inner block)
  • a" - a-plokk(a block)
  • i` - seesmine plokk(inner block)
  • a` - a-plokk (a block)

Seesmine variant valib ainult sisu nt. tähemärgid sõnast ilma tühikuteta või sulgude sees oleva sisu ilma sulgudeta. A-variant valib nii sulud kui ka tühikud pärast sõnu.

Otsimine

Otsimine Vim'is on väga lihtne. Selleks tuleb käsurežiimis trükkida "/" ja sisestada termin, mille kohta soovime täiendavat infot. Vastupidises suunas otsimiseks kasutatakse "?", otsingu kordamiseks "n", otsingu kordamiseks vastupidises suunas "N". Kui valik "incsearch" on aktiivne, siis liigub Vim koheselt sobiva tekstini kui midagi parasjagu trükitakse. Kui aktiivseks valikuks on "hlsearch", siis tuuakse esile kõik sobivad vasted. Esile toomise saab deaktiveerida ":nohl" käsuga.

Täiendamine

Trükkides kasutame me sageli samu sõnu mitmeid kordi. CTRL-p käsk otsib just trükitud sõnade hulgast selliseid sõnu, mis algavad samade tähtedega. CTRL-x CTRL-l täidab kogu rea. Õigekirjakontrolli saab lubada :set spell käsuga ja CTRL-x CTRL-k käsud kontrollivad üle ka varasemalt sisestatud sõnad. Vim'i täiendussüsteemi on viimasel ajal jõudsalt edasi arendatud. [9]

Kokkuvõte

Vim'i näol on tegemist äärmiselt kasuliku tarkvaraga, mis peaks rahuldama ka kõige nõudlikuma kasutaja. Vim on üsna paindlik ja piisavate oskuste korral on kogenenumal kasutajal võimalik oma tööd oluliselt kiirendada ja muuta tarkvara käitumist vastavalt oma vajadustele. Programm iseenesest on väga huvitav ja omanäoline just selle poolest, et ta erineb täielikult teistest tekstiredaktoritest - isegi väga algelisi operatsioone teostatakse võrreldes teiste sarnaste tööriistadega täiesti erinevalt. Vim on mugavaks ja tõhusaks tööriistaks nii tavakasutajale kui ka programmeerijale.

Viited

Autor: Liis Mironova, A22, 27.11.2012 Muudetud: 04.01.2013