Meniu

Setari vim existentiale

Doresti sa programezi dar sa nu fii intepenit intr-un editor? Vrei ca editorul tau sa te ajute in desfasurarea activitatilor uzuale? Atunci ai venit unde trebuie. Citeste mai departe.

Abordarea urmatoare este orientata spre rezolvarea anumitor probleme, nicidecum nu incearca pomenirea tutoror setarilor astfel incat sa se trateze exhaustiv posibilitatile de configurare oferite de vim. Daca as incerca sa tratez toate posibilitatile aceasta ar fi help.txt din vim, si nu ar mai fi vorba de setari existentiale, nu?

Dar exista cazuri cand editorul vim nu se comporta asa cum banuiti? Atunci puteti incerca urmatoarele setari in ~/.vimrc :

:set bs=2
:set nocp
:syntax on
:set ts=4
:set sw=4
:set foldmethod=syntax
:set foldlevel=100
:set nowrap
:set hlsearch
 
:set t_ku=^[OA
:set t_kd=^[OB
:set t_kl=^[OD
:set t_kr=^[OC
 
:map T :tabnew
:map  :w
:map  :edit .
:map  :enew
:map  :tabprev
:map  :tabnext
:map  :vsplit
:map  :split
:map  :tprev
:map  :tn
:map  :q
 
:map X :set filetype=xml
:map t :set filetype=txt
:map j :set filetype=java
:map c :set filetype=cpp
:map s :set filetype=sql
 
:map  :set ts=2
:map  :set ts=4
:map  :set ts=8

Par multe si fara sens, nu? Hai sa le luam in parte.

set bs=2

Pe unele masini s-ar putea ca atunci cand stergeti caractere folosind tasta backspace atunci cand ajunge la marginea randului cursorul sa nu mearga un rand mai sus, bs=2 ii da o mana de ajutor cursorului sa urce.

set nocp

Exista distributii care seteaza vim-ul in modul "compatibil" cu vi, iar uneori lucrul acesta pur si simplu ne da peste cap, apasam INS si uita sa afiseze --INSERT--, etc. nocp ii spune lui vim no compatiblity

syntax on

Intotdeauna am iubit sintaxa colorata pentru surse. In cazul in care nu aveti instalate fisierele ce contin sintaxa ar fi mai bine sa eliminati aceasta linie intrucat la deschiderea fiecarui fisier va va da intai o eroare intrucat nu gaseste fisierul de sintaxa.

set ts=4 si set sw=4

Fiind un mare fan al conventiei Java de notare am ales indent-ul cu 4 caractere spre deosebire de cel de 8 care este implicit. Desigur puteti seta sau 2, 4 sau orice alta valoare preferati.

set foldmethod=syntax

Mai tineti minte din kate, kdevelop sau anjuta acele [+]-uri care va permit sa colapsati anumite blocuri (fold-uri) de cod? Da, vim stie si asta. Acest editor este capabil sa analizeze din punct de vedere sintactic sursa dumneavoastra, in functie de sintaxa (C/C++/Java) sau de indentare (foldmethod=indent) - da, programatorilor python, nu ati fost uitati -. Desi nu stie de XML, daca XML-ul este indentat, puteti folosi aceasta abordare pentru a colapsa anumite noduri. Intrucat editez in general surse, prefer foldmethod-ul sa fie implicit setat pe syntax. (zo - deschide un fold, zc - inchide un fold. Un fold este de la { la } corespunzatoare.)

set foldlevel=100

Implicit vim va deschide n niveluri de folduri (100 in cazul de fata) si le va inchide pe toate celelalte. In practica puteti seta foldlevel-ul manual in timp ce editati - de exemplu puteti folosi astfel sursele CPP ale unei clase pe rol de header, setand foldlevelul astfel incat sa inchida toate fold-urile corespunzatoare metodelor.

set nowrap

Nu va imparti o linie de text in mai multe in cazul in care linia nu incape in ecranul curent.

set hlsearch

Pentru ca sunteti inteligenti - altfel nu ati citi acest document, nu? - sunt sigur ca folositi un browser inteligent (e.g. Firefox). Si sunt sigur ca va place la nebunie sa activati highlight all atunci cand cautati un text (este o putere a mea ascunsa, de a sti aceste lucruri). Acest mecanism devine foarte util cand vreti sa vedeti unde este folosita o variabila - puteti pozitiona cursorul pe variabila, apasati *, si toate aparitiile variabilei sunt scoase in evidenta.

set t_ku=^[OA, ...

Up, Down, Left, Right... Aceasta setare este pentru sistemele UNIX mai dubioase (gen Solaris de exemplu) pentru care tastele cursor (cele cu sageti) nu mai functioneaza in mod normal (de exemplu afiseaza litere A, B, C, D). Atunci tot ce trebuie sa faceti este sa le setati. In vim nu veti scrie caracterele ^ sau [ ci in timp ce editati .vimrc (deci nu copiati fisierul de mai sus adliteram):

:set t_ku=

si ar trebui sa vedeti pe ecran ceva in genul:

:set t_ku=^[OA

Mapari taste

Urmatoarele setari sunt legate de maparea tastelor si multe din comenzile respective pot fi schimbate pentru a se potrivi mai bine profilului dumneavoastra. De exemplu puteti asigna pentru :help, sau daca nu cititi niciodata help-ul puteti asigna fara probleme :qall! care va face vim-ul sa iasa fara sa salveze nici unul din fisierele deschise. In schimb este mandatoriu sa stiti ca va puteti configura vim-ul in detaliu pentru aproape orice task.

map T :tabnew

Vim stie de tab-uri. Da, ati citit bine, taburi ca in kate, kdevelop sau orice alt IDE. Aceasta mapare face crearea lor triviala.

map :w

Salvarea fisierului curent cu un buton.

map :edit .

Open-ul va permite nu doar sa folositi cautarea (/) ci puteti si sorta in functie de diferite campuri intrarile.

map :enew

Curata bufferul curent.

map :tabprev si map :tabnext

Navigare tab-uri (stanga, dreapta). Tab-urile sunt organizate ca o lista circulara, astfel incat daca sunteti la ultimul tab si apasati F6 veti ajunge dintrodata la primul tab.

map :vsplit si map :split

Imparte ecranul curent in 2 parti prezentand acelasi buffer(vertical (vsplit) sau orizontal (split)). Puteti curata un view al unui buffer folosind :enew si apoi :edit . (sau F4, urmat de F3). Foarte util cand vreti sa vedeti un fisier sursa in paralel cu un log de exemplu... sau doua fisiere impreuna cu :diffthis (echivalent cu programul diff) pot face minuni.

map :tprev :map :tn

Navigare in ctag-uri. Devine util cand sunt mai multe match-uri pentru acelasi tag. In cazul surselor monstru se intampla destul de des.

map :q

Iesire din aplicatie.

map X :set filetype=xml ...

syntax on ii spune editorului vim ca trebuie sa coloreze sintaxa in functie de tipul fisierului. Dar care este tipul fisierului? Implicit este extensia acestuia. Dar daca lipiti (dati paste) un fragment de cod din alta aplicatie intr-un buffer nou nout, atunci va trebui sa setati manual tipul fisierului. Personal prefer keybinding-uri.

map :set ts=2 ...

Cate capete, atatea idei. Intrucat exista atat de multe conventii de notare imi place sa sar de la una la alta fara mare bataie de cap, si fara sa editez "nu stiu pe unde prin optiuni" (tm) de fiecare data cand deschid un fisier.

Sunt sigur ca de acum o sa indragiti si mai mult vim-ul. Si sunt sigur ca veti incerca sa experimentati cu el.

Andreea

"Rome wasn't built in a day" !
  • | 120 articole

Nici un comentariu inca. Fii primul!
  • powered by Verysign