[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