post

Vim ro:Primii paşi

Contents

Să pornim Vim

Primul pas este, desigur, să învăţăm să pornim Vim.

Versiunea grafică

First vim screenshot.png

Windows
Click pe Start → Programs → Vim 7 → gVim.
Mac OS X
Click pe Finder → Applications → MacVim.
Linux/BSD
Click pe Applications → Accessories → GVim Text Editor sau Alt+F2, tastaţi gvim şi enter.

Versiunea pentru terminal

First vim console screenshot.png

Windows
Click pe Start → Run…, tastaţi vim şi enter.
Mac OS X
Click pe Finder → Applications → Utilities → Terminal, tastaţi vim şi enter.
Linux/BSD
Click pe Applications → Accessories → Terminal sau Alt+F2, tastaţi konsole/gnome-terminal şi enter. Apoi tastaţi vim şi enter.

De acum încolo, când spunem că ‘deschidem Vim’, folosim una din metodele menţionate mai sus.

Notă
Dacă aţi pornit Vim, poate aţi observat că nu puteţi începe imediat să introduceţi text. Nu vă alarmaţi, totul va fi explicat după un timp.

Grafic sau terminal?

Versiunea grafică a lui Vim are meniuri în partea de sus a ferestrei aplicaţiei precum şi diverse opţiuni accesibile via maus, dar trebuie reţinut că acesta este complet opţional. Puteţi accesa toate facilităţile folosind numai tastatura.

De ce este important? pentru că odată ce o persoană devine eficientă la scris, folosirea numai a tastaturii o face mai rapidă şi mai puţin expusă la erori decât la lucrul cu mausul. Concluzia vine de la faptul că mişcarea mâinii este lentă şi asociată cu o schimbare de context în mintea persoanei care mută mâna. Dacă ne facem un obicei de a folosi numai tastatura de câte ori este posibil, facem multă economie de timp de mişcare a mâinii.

Desigur, est eo părere subiectivă. unele persoane preferă mausul, iar altele preferă tastatura. Eu încurajez folosirea la maxim a tastaturii pentru a beneficia de întreaga putere a lui Vim.

Introducere în moduri

Imaginaţi-vă că este Duminică seara şi v-aţi plictisit de emisiunile de la televizor. În schimb, vreţi să urmăriţi un film favorit. Aşa că schimbaţi televizorul în modul video, ca să vedeţi ce redă DVD playerul în locul canalelor din cablu. Observaţi că televizorul afişează tot film, dar contextul este schimbat.

Similar, Vim are moduri. De exemplu, Vim are un mod pentru scrierea textului, un mod pentru executarea de comenzi, etc. Toate modurile au legătură cu scopul principal al editării de text, dar astfel schimbaţi contextul referitor la dacă vreţi doar să introduceţi text sau să executaţi comenzi.

Nu e simplu?

Tradiţional, conceptul de moduri este cel mai des citat de începători ca motiv de “derută”. Eu o compar cu mersul pe bicicletă – mergi de câteva ori, apoi te miri ce mare chestie a mai fost şi asta.

Aşadar, de ce are Vim moduri? Pentru a face lucrurile cât mai simple posibil, chiar dacă folosirea lui poate părea “ciudată” la început.

Ce vreau să spun cu asta? Să luăm un exemplu – unul din obiectivele principale în Vim este să îi facem facilităţile complet accesibile din tastatură, fără să fie vreodată dependent de maus (deşi mausul poate fi folosit, opţional). În acest scenariu, cum veţi deosebi între textul pe care vreţi să-l scrieţi şi comenzile pe care vreţi să le executaţi? Soluţia lui Vim este să avem un mod “normal” în care să executaţi comenzi şi un mod “insert” în care să scrieţi pur şi simplu text. Puteţi comuta între cele două moduri în orice moment. De exemplu, tastând i comutaţi Vim în modul “insert”, iar tastând <Esc> comutaţi înapoi în modul “normal”.

Cum fac editoarele tradiţionale deosebirea între comenzi şi textul introdus? Prin folosirea de meniuri grafice şi combibaţii de taste. Problema este că asta nu se scalează. Întâi dacă aveţi sute de comenzi, crearea de meniuri pentru fiecare din acestea ar fi o nebunie derutantă. În al doilea rând particularizarea modului de folosire a fiecărei comenzi ar fi cu mult mai dificilă.

Să luăm un exemplu specific. Să zicem că vreţi să înlocuiţi toate apariţile cuvântului “din” în cuvântul “în” întrun document. Întrun editor tradiţional, puteţi executa o comandă de meniu, precum Edit -> Replace (sau puteţi folosi o combinaţie de taste precum Ctrl-R) şi apoi introduceţi cuvintele ‘din’ şi ‘în’, după care daţi clic pe ‘Replace’. Apoi bifaţi opţiunea ‘Replace All’. În Vim rulaţi pur şi simplu :%s/din/în/g în modul normal. vedeţi ce simplu e aşa?

Explicaţie a comenzii de substituţie
Să considerăm comanda :%s/from/to/g. Caracterul % este o prescurtare pentru plaja asupra căreia vrem să aplicăn comanda şi înseamnă “toate liniile din fişier”. Ca alternativă puteţi specifica plaja ca 0,10 ceea ce înseamnă liniile între 0 şi 10. :s este comanda “substituire”. ‘from’ şi ‘to’ sunt textul care trebuie găsit, respectiv pus în loc. g indică extinderea comenzii la toate apariţiile din acelaşi rând.
La prima vedere, ar părea o mulţime de lucruri, dar dacă o învăţaţi o dată, de fiecare dată comanda este disponibilă la o tastă distanţă, în loc de o căutare de meniuri şi completare de opţiuni în casete de dialog pentru a preciza exact ce vreţi să faceţi.

Dar dacă vreţi să faceţi această substituţie doar în primele 10 linii de text şi vreţi să aveţi posibilitatea de a confirma yes/no la fiecare înlocuire? În editoarele tradiţionale, obţinerea confirmării yes/no este uşoară prin debifarea opţiunii ‘Replace All’, dar observaţi că trebuie întâi să căutaţi opţiunea şi apoi să folosiţi mausul pentru pentru a o selecta (sau să folosiţi o lungă serie de taste, dacă folosiţi tastatura). Cum veţi face comanda “Replace” să opereze doar asupra primelor 10 linii? În Vim puteţi executa pur şi simplu :0,10s/from/to/gc. Noua opţiune c înseamnă că vrem să confirmăm fiecare înlocuire.

Prin separarea modurilor pentru introducere de text (insert) şi comenzi (normal), Vim simplifică pentru noi comutarea între cele două contexte.

Observaţi că primii paşi în folosirea editorului Vim par un pic “ciudaţi”, dar odată ce l-aţi văzut în acţiune începe să aibă înţeles. Partea cea mai bună este că aceste concepte de bază vă vor ajuta să înţelegeţi tot ce vă trebuie pentru a şti cum să folosiţi Vim.

Pentru că acum înţelegeţi diferenţa între modul normal şi modul insert, puteţi căuta diversele comenzi pe care le puteţi executa în modul normal şi puteţi începe imediat să le folosiţi. Comparaţi asta cu învăţarea de comenzi noi în editoarele tradiţionale ceea ce înseamnă în general că aveţi de citit multă documentaţie, de căutat o mulţime de meniuri, de făcut o mulţime de încercări şi erori sau cereri de ajutor către alţii.

Personal, consider că numele modurilor nu sunt prea intuitive pentru începători. Eu prefer să le numesc “scriere” şi “rescriere”, dar vom rămâne la terminologia standard, pentru a evita confuziile.

Notă
Toate comenzile din modul normal trebuie să se încheie cu enter pentru a semnala lui Vim că am terminat de scris comanda. Deci, când zicem ‘rulaţi :help vim-modes-intro‘, înseamnă că trebuie să tastaţi :help vim-modes-intro şi enter la sfârşitul comenzii.

Scrierea unui fişier

Să vedem cum se deschide, scrie şi închide un fişier.

  1. Deschideţi Vim.
    Firststeps open.png

  2. Introduceţi :edit hello.txt şi apăsaţi tasta enter.
    Firststeps edit.png

  3. Apăsaţi i.
    Firststeps insert.png

  4. Introduceţi textul Hello World.
    Firststeps type.png

  5. Apăsaţi tasta <Esc>.
    Firststeps normal.png

  6. Tastaţi :write şi apăsaţi tasta enter.
    Firststeps write.png

  7. Închideţi Vim cu comanda :q.
    Firststeps quit.png

Felicitări! Tocmai aţi scris primul fişier filosind Vim:-).

Par mulţi paşi? Da, aşa, par. Este din cauză că abia am deschis Vim, am scris un fişier, l-am salvat şi am închis Vim. Trebuie să reţineţi că asta va ocupa o mică parte din timpul petrecut cu Vim în editarea documentului.

Să vedem ce fac comenzile de mai sus.

  • :edit hello.txt sau, mai simplu :e hello.txt. Asta deschide un fişier pentru editare. Dacă fişirerul cu numele specificat nu există, el va fi creat prima dată când salvăm fişierul.
  • Apăsaţi i. Asta comută Vim în modul insert
  • Introduceţi textul Hello World. Aici este punctul în care introduceţi textul pe care doriţi să-l scrieţi.
  • Apăsaţi <Esc>. Asta scoate Vim înapoi în modul normal
  • :write sau, mai simplu :w. Asta spune lui Vim să write (rom. scrie) textul (care este stocat momentan în memoria calculatorului) în fişierul de pe harddisc. Adică orice am scris până acum va fi stocat permanent.
  • :quit sau, mai simplu :q pentru a ieşi din fişierul aflat în fereastra în care edităm. Dacă era deschisă numai o “fereastră”, se va închide şi Vim (Conceptul de fereastra – engl. window – va fi discutat întrun capitol următor).

Încercaţi să repetaţi procesul cu câteva nume de fişier, diverse texte, etc. pentru a vă obişnui cu paşii de bază în folosirea editorului Vim.

Observaţi că dacă sunteţi în modul insert, Vim afişează -- INSERT -- în partea din stânga jos a ferestrei. Când sunteţi în mod normal, nu afişează nimic. Asta din cauză că acesta este modul normal şi implicit în care rulează Vim.

Acordaţi-vă ceva timp pentru a absorbi această informaţie, probabil este lecţia cea mai grea despre Vim, restul e uşor:)

Şi nu vă îngrijoraţi, ajutorul (engl. help) nu e departe. De fapt trebuie doar să daţi comanda :help. De exemplu, executaţi :help edit şi veţi vedea deschisă documentaţia comenzii edit. Hai, încercaţi.

Rezumat

Am discutat conceptele de bază şi folosirea editorului Vim. A se vedea de asemenea :help notation şi :help keycodes.

Asiguraţi-vă că le-aţi înţeles bine. Odată ce începeţi “să gândiţi în Vim”, înţelegerea celorlalte facilităţi din Vim este uşoară.