[pso] [so] [Vim tips] Navigare prin cod
Vlad Dogaru
ddvlad at rosedu.org
Wed Mar 23 19:18:01 EET 2011
On Wed, Mar 23, 2011 at 02:00:38PM +0200, Alexandru Juncu wrote:
> Iată două comenzi foarte simple dar foarte utile când vine vorba de programare.
>
> De multe ori aveți o variabilă sau o fucție în cod și vreți să vedeți
> unde este inițializată sau unde este definită. Un mic hack pentru a
> face asta este folosirea comenzii '*' (shift+8) atunci când sunteți cu
> cursorul sub o varialibă sau funcție. Comanda va lua cuvântul de
> desupra cursorului și îl va căuta în fisier. Puteți folosi după ‘n' și
> ‘p’, sau mai ușor, chiar '*', pentru a naviga la pozițiile aparițiilor
> acelui cuvânt (în cazul nostru funcție, variabilă sau constantă).
Alex se referă la 'n ' și 'N', nu 'n' și 'p'; 'p' e put, nu previous :)
Also, pentru a căuta în sens invers "din prima" puteți folosi '#'.
> Dacă sunteți într-un bloc (funcție sau if/while/for) aveți de a face
> cu paranteze și acolade. De multe ori vreți să vedeți unde se termină
> un bloc început într-un punct. Dacă sunteti sub { sau ( puteți folosi
> comanda '%' (shift+5) pentru a naviga sub } sau ) care închide blocul.
> Reciproca este valabilă.
Ce e interesant e că '%' e o mișcare (motion), deci poate fi folosită cu
majoritatea comenzilor de manipulare a textului (comenzi numite
operatori). Deci puteți indenta o funcție întreagă prin '=%', în
condițiile în care sunteți pe acolada de început (sau de final) a
funcției.
Mai mult, dacă folosiți stilul kernel-ului Linux de a indenta acoladele
funcțiilor, puteți folosi '[[' pentru a sări pe acolada de început a
funcției în care vă aflați. Deci '[[=%' indentează funcția în care vă
aflați.
Pentru a vă întoarce unde vă aflați înainte puteți folosi '' (două
apostroafe) sau Ctrl-O.
Personal, mi se pare mai simplu să rețin ce fac comenzi individuale
întâi, apoi să încep să folosesc combinații. Dacă îmi zicea cineva să
folosesc [[=%'' acum 2-3 ani, nu aș fi reținut nimic :) But, as always,
YMMV :)
Câteva referințe (folosiți :h urmat de termenul de căutare): *, #, n, N,
%, =, motion.txt, [[, '', Ctrl-O.
Have fun,
Vlad
More information about the pso
mailing list