Laborator 03 ­ Editare

Cheat sheet
Legendă:

N  ­ mod Normal V  ­ mod Visual I  ­ mod Insert C  ­ mod Command
* ­ toate modurile
Comandă Mod Descriere scurtă N,V N,V N,V N,V * N N N C C N N V N V C deplasare stânga deplasare jos deplasare sus deplasare dreapta revine în mod N o r m a l intră în mod I n s e r t intră în mod C o m m a n d intră în mod V i s u a l salvează modificările iese din fișier cut pentru un caracter șterge următorul movement șterge textul selectat copiază următorul movemet copiază textul selectat search and replace

h j k l E S C i : v w rite q uit x d d y y s ^ $ w e b g g G
More editing

More movement N,V N,V N,V N,V N,V N,V N,V începutul rândului finalul rândului următorul cuvânt finalul cuvântului curent cuvântul anterior prima linie din fișier ultima linie din fișier

o O a A I

N N N N N

pornește editare pe linie nouă sub linia curentă inserează o linie nouă deasupra liniei curente adaugă text după caracterul curent adaugă text la finalul liniei curente adaugă text la începutul liniei curente

html] A Gentle Introduction to Vim [http://mislav. Suport laborator 14. Editorul Vim [http://books. V i m  este unul din ele. În acest caz. caracterul ^ semnifică tasta C t r l ) Editorul vim.gz Introducere Editoare clasice Sistemele de operare Linux vin cu cel puțin un editor clasic.png].com/LevelbossMike/vim_shortcut_wallpaper/master/vim­shortcuts_1280x800. puteți folosi Text Editor g e d i t  pentru un editor în mediul grafic. g e d i t Editorul are facilități de bază: permite introducere și modificare de text și salvarea conținutului.github.I Undo.tar.com/books?id=_JFGzyRxQGcC&lpg=PA532&pg=PA473#v=onepage&q&f=false] Sfaturi de la Bram Moolenaar.com/2011/12/vim­revisited/] Pachete necesare vim Arhivă laborator lab03. De exemplu.viemu.fprintf. în notația ^ X . Veți fi puși în situații în care nu veți avea access la un mediu grafic. Intro Pentru a fi mai eficienți.html].uniqpath. trebuie să folosim un editor puternic.3. creatorul Vim [http://www. n a n o Și acest editor permite foarte puține lucruri. redo N adaugă text la începutul liniei curente u N undo redo C T R L + rN Puteți găsi un cheat sheet complet aici [http://www. .gif] și aici [https://raw.moolenaar. dacă vreți un editor clasic puteți folosi n a n o . Deasemenea puteți găsi cheat sheet­uri grafice aici [http://www.com/vi­vim­cheat­sheet. Ieșiți din el folosind Ctrl+X (prin convenție. cu multe opțiuni.google.net/vimCheatSheet.net/habits.

. Navigare în fișier Pentru a deschide un fișier se folosește următoarea comandă: v i mn u m e _ f i ș i e r Pentru fișierele ce au spații in nume. pe scurt. Nu trebuie să rețineți toate comenzile posibile de la prima folosire. Pentru a trece din modul Normal în celelalte se folosesc diverse combinații de taste. Imaginea următoare sugerează. Comenzile de Vim se învață în momentul în care vă loviți de ele și căutați să găsiți o soluție eficientă. v i m  nu este dificil de folosit. după cum vom vedea în laborator Deși pare complicat.V i m  se deosebește de editoarele clasice prin faptul că este un editor modal. în funcție de starea editorului. Aici se poate naviga prin fișier modul Insert este modul în care se poate insera text modul Command permite introducerea de comenzi pentru Vim modul Replace permite înlocuirea unor fragmente de text modul Visual permite selecția unui fragment de text Pentru a reveni în modul Normal se folosește tasta ESC. ce face fiecare mod: modul Normal este modul inițial. puteți folosi v i m" n u m ef i ș i e rc us p a ț i i " sau v i mn u m e \f i ș i e r \c u \s p a ț i i und ' \ ' este escape character. Fiecare tastă are o semnificație diferită.

Pentru a putea introduce o comandă va fi necesar să ne aflăm în modul Command. În cazul în care am modificat fișierul. j . Pentru aceasta. Dacă vrem să executăm comanda. folosind tasta i . Pentru a salva modificările realizate în fișier. . Veți observa cum partea de jos a ecranului se modifică pentru a vă anunța că sunteți în modul Insert. putem folosi tasta ESC și ne întoarcem în modul Normal. Pentru a intra în acesta.Odată deschis. putem ieși din acesta fără probleme. Părăsire editor Am terminat de editat fișierul și acum vrem să părăsim v i m . Pentru a ne întoarce în modul Normal din modul Insert putem folosi tasta ESC. Dacă aveți degetele deasupra lui veți face cele mai scurte mișcări pentru a ajunge la orice tastă. Editare Pentru a putea insera text nou. l  exact ca în figura următoare. Ca să rețineți ușor tastele folosiți mnemonici: j are un marker în partea de jos l e cea mai din dreapta tastă h e cea mai din stânga k e între ele Rândul din mijloc al tastaturii poartă numele de home row. Dacă vrem să renunțăm la o comandă. nu vom putea părăsi editorul folosind comanda q u i t . Pentru a naviga prin fișier se folosesc tastele h . veți tasta : . După ce am salvat fișierul. Pentru a ieși din v i m  folosim q u i t  în modul Command. este nevoie să intrăm în modul Insert. vim se va afla în modul Normal. Veți observa că acum cursorul este pe linia de jos din terminal. k . o terminăm prin Enter. trebuie să­i dăm o comandă în care­i zicem că vrem să ieșim. Putem abrevia comanda la q În v i m  toate comenzile pot fi abreviate la o secvență neambiguă de litere. deoarece nu am salvat modificările. vom folosi comanda w r i t e  (sau w ).

 vrem să căutăm într­un fișier anumite secvențe. Observați că se caută un șir. Replacing De multe ori. vrem să înclocuim un șir cu alt șir.Putem salva și ieși din v i m  fără a folosi 2 comenzi. folosim !  după aceasta. vom adăuga un / g  la finalul comenzii de replace. Folosim !  după comandă pentru a forța execuția ei. se realizează înlocuirea și se revine în modul Normal. Unele dintre cele mai folosite combinații de comenzi în vim pot fi folosite împreună în forma abreviată. spre finalul fișierului) sau ?  (înapoi. putem folosi n  sau S h i f t n . Searching De multe ori. Pentru a obține înlocuirea pe întregul fișier. Pentru a căuta următoarea apariție. În acest sens. După Enter. Pentru a face aste lucru trebuie să intrăm în modul Command și să dăm o comandă care începe cu s / . NU un cuvânt. Desigur. Vrem să înlocuim toate aparițiile șirului o l d _ s t r i n g  în fișier cu șirul n e w _ s t r i n g . Veți învăța în viitor cum introduceți noțiunea de cuvânt în căutare. chiar dacă linia conținea mai multe potriviri. Pentru a face înlocuirea globală pe tot fișierul vom prefixa comanda de înlocuire cu % : Această comandă nu înlocuiește toate aparițiile. Dacă vrem să ieșim fără a salva modificarea. sub forma w q . va trebui să înlocuim toate aparițiile de pe toate liniile. exact ca în modul Command. Dacă vrem să forțăm execuția unei comenzi în Vim. prima apariție de pe fiecare linie. Pentru a forța înlocuirea pe toată lungimea liniei. putem înlocui linie cu linie dar ar fi neproductiv. nu putem da q  simplu. Fiind o combinație freceventă. vom folosi atât %  cât și g . ca în exemplul: : % s / o l d _ s t r i n g / n e w _ s t r i n g / g . Se poate observa că și acum cursorul este plasat pe ultima linie. de exemplu: s / o l d _ s t r i n g / n e w _ s t r i n g Formatul comenzii este următorul: avem ca separator între câmpuri caracterul / primul câmp reprezintă șirul ce trebuie înlocuit al doilea câmp reprezintă expresia cu care va fi înlocuit șirul căutat Se pot folosi și expresii regulate dar despre ele vom învăța într­un laborator viitor. comenzile w r i t e  și q u i t  pot fi date împreună în forma abreviată. Pentru a lansa o căutare folosim /  (căutare înainte. se va realizeaza doar o singură înlocuire. spre început). în funcție de direcția în care vrem să mergem. într­un fișier. trebuie să spunem editorului că suntem siguri că dorim să ieșim fără să salveze. vedeți mai jos de ce: : % s / o l d _ s t r i n g / n e w _ s t r i n g Această comandă înlocuiește în tot fișierul. Folosind comanda în formatul prezentat. Observați asemnărarea cu o căutare prin man­pages.

 copiază întreaga linie pe care se află cursorul. copiază următoarele x caractere spre dreapta. trebuie o deplasare pentru a determina lungimea textului de copiat. Și v i m  oferă acest lucru. sumarizate în următorul tabel. Din fericire. iar D  șterge restul liniei curent. Exemple: d l . La fel ca la d .Selections Vrem să înlocuim șirul o l d _ s t r i n g  cu n e w _ s t r i n g  dar doar pe primele 5 linii din fișier. Copiem textul cu y . trebuie să intrăm în modul Vizual. Facem acest lucru folosind v  astfel: pentru selecție la nivel de caracter folosim v pentru selecție la nivel de linie folosim V pentru selecție la nivel de block (dreptunghiuri de text) folosim ^ V  (^  este Control) În modul Vizual ne deplasăm cu h . Putem șterge mai multe caractere cu d . va trebui să selectăm întâi zona pe care vrem să facem înlocuirea pentru a putea da o singură comandă. Putem șterge un caracter cu x  dacă ne aflăm peste el. șterge un caracter la dreapta d x h . y x l . Ce se întâmplă dacă tastăm x p ? Încercați să explicați cu noțiunile prezentate aici. șterge x caractere la stânga (x este un număr) Operațiile de copy și delete așteaptă o mișcare pentru a determina lungimea textului afectat. Încercați să vă jucați cu toate. Sau le puteți folosi după ce ați selectat textul în modul Vizual. operațiile de copy și delete necesită o deplasare pentru a determina lungimea textului afectat.k  și l . unde x este un număr. Dacă vrem să lipim textul șters ne poziționăm în poziția dorită și folosim p  sau P .k . Copy­Paste­Cut­Delete Aproape tot timpul când editați ceva aveți nevoie să duplicați o bucată de text sau să o mutați.l  ca în modul Normal. N se șterge nimic dacă apăsăm doar d . Pentru a face selecții. j . Ar fi ineficient să folosim doar h . Al doilea face paste înainte de poziția curentă. Într­un editor clasic foloseați Copy­Paste sau Cut­Paste. y y . Comanda d d  șterge linia curentă. Pentru a nu face mișcări lungi până la finalul rândului există scurtături. din ce știm până acum putem înlocui doar linie cu linie. More movement După cum ați observat în secțiunea anterioară. . În acest caz. v i m  oferă operații complexe de deplasare. trebuie să­i spunem și cât să șteargă.j . Deoarece este un proces total ineficient.

 pe rând. comenzile s e t c u r s o r l i n e  și s e tc u r s o r c o l u m n . Undo. În modul Comandă. introduceți comanda s e tn u m b e r . Dacă le stăpâniți bine. Tabelul următor ilustrează câteva din ele: Comandă Acțiune o O a A I pornește editare pe linie nouă sub linia curentă inserează o linie nouă deasupra liniei curente adaugă text după caracterul curent adaugă text la finalul liniei curente adaugă text la începutul liniei curente Ooops. Puteți dezactiva cu s e tn o n u m b e r . More editing Există și metode de intrare în modul Insert (din modul Normal) mai avansate. fără a fi exhaustive. Într­un editor clasic foloseați Ctrl + z. undo. Secțiunile următoare încearcă să prezinte noțiuni ce vor spori productivitatea. . veți dori să aveți afișat numărul fiecărei linii din fișierul curent. Pentru a seta o opțiune folosiți comenzi de tipul s e t Pentru a reseta o opțiune folosiți s e t o p ț i u n e  în modul Command. Introduceți. n o o p ț i u n e . redo Din când în când se întâmplă să facem o modificare greșită și să vrem să dăm înapoi. veți dori să aveți o metodă rapidă de a localiza cursorul în fișier. puteți merge pe o anumită linie din fișier utilizând modul Command: : n  vă deplasează pe linia n . Asigurați­vă că le știți până la următoarele laboratoare. În vim folosiți următoarele comenzi în modul Normal: Comandă Acțiune undo u C T R L + r redo Where am I? În anumite situații. Cel mai bine este să folosiți v i m t u t o r  sau : h  (: h e l p ) în v i m . Noțiunile prezentate aici vă vor fi utile în 90% din timpul petrecut lucrând în v i m . În alte cazuri.Comandă Deplasare ^ $ w e b g g G începutul rândului finalul rândului următorul cuvânt finalul cuvântului curent cuvântul anterior prima linie din fișier ultima linie din fișier De asemenea. totul este ok.

Înlocuiți D O N E  cu d o n e  pe ultimele 5 linii din fișier. Ulterior. Folosiți tastele de navigare pentru a ajunge pe cuvântul Reed (linia 8. Search and replace Deschideți fișierul s t e v e j o b s . Închideți fișierul. Deschideți din nou același fișier. Pentru aceasta folosiți sintaxa de replace anterioară și pastrați caracterele '<. Copy­Paste­Cut­Delete Deschideți din nou fișierul s t e v e Ștergeți primul caracter din fișier. 2005. Rezolvare g g Y p . 1.” Rezolvare j o b s .'> aparute în zona de comandă. fiecare exercițiu conține și o descriere a ceea ce vi se cere. Închideți fișierul. Salvați modificările și părăsiți editorul folosind o singură comandă. / M yt h i r d < E n t e r > d d Duplicați prima linie din fișier. Găsiți a 4 apariție a șirului l i f e  de la începutul fișierului și apoi a treia repetiție spre începutul fișierului a șirului c l a s s  de unde ați rămas. Vim Basic Usage Navigare și inserare text Deschideți fișierul s t e v e j o b s  (Atenție: există un spațiu în numele fișierului. Înlocuiți cuvântul R P L 3  cu 1 q a z  dar doar pe primele 5 linii din fișier. Înlocuiți R P L 1  cu a s d f  doar pe prima linie. folosiți `\ ` sau ghilimele).Exerciții Toate cunoștințele necesare pentru a rezolva primele 2 secțiuni se găsesc în partea de introducere. Rezolvare d l  sau x Ștergeți linia care conține textul “My third story is about death. coloana 18). Ștergeți prima linie din acesta. Părăsiți editorul fără a salva modificările. Deschideți din nou același fișier și introduceți o linie noua la începutul lui conținând textul: Steve Jobs at Standford. salvând modificările. Deschideți fișierul s e a r c h _ r e p l a c e . Inserați cuvântul College după cuvântul Reed (pe care v­ați oprit la exercițiul anterior) Salvați modificările apoi ieșiți din fișier. Înlocuiți șirul R P L 2  cu q w e r t  în întregul fișier.

Mutați ultima linie din fișier pe linia 3 a acestuia.  adăugați după vim textul s i s t i uv i m .  copiați ultimul cuvânt de pe aceasta 8. scrieți text în primul și copiați­l în al treilea. i lf o l o s e s c Punctul de la finalul propoziției trebuie să rămână acolo! 3. Reveniți la starea actuală folosind redo. redo Încercați să vă întoarceți la starea originală a fișierului utilizând undo.  deschideți fișierul s e a r c h _ r e p l a c e .  adăugati o linie nouă (la finalul fișierului) în care scrieți textul A c u m 2. rezolvați următoarele taskuri într­un număr minim de taste.  mergeți pe linia 4 3. Nagivarea între taburi se face cu g t  și g T .  navigați la ultima linie din fișier – cea introdusă 4. Folosiți modul Visual.  mergeți pe ultima linie din fișier 5. Rezolvare : 4 v 4 j d Nu închideți fișierul sau salvați modificările. Rezolvare G d d : 3 < E n t e r > P Ștergeți primul paragraf din fișier. . Efficient Editing Utilizând cunoștințele de până acum. 2.  navigați la prima linie din fișier 3.  faceți paste cuvântului copiat la finalul acesteia Care este numărul minim de taste necesare pentru a rezolva următoarea situație? 1. 2.  copiați toată linia 4. Tabs Uneori trebuie să edităm mai multe fișiere simultan. putem deschide mai multe terminale sau mai multe taburi în același terminal dar nu vom putea copia text dintr­un fișier în celalt (încercați).  mergeți pe prima linie 7.  mergeți pe ultima linie 9.  faceți paste la linia copiată 6. t  și T  sunt pentru taburi. Închideți fișierul fără să salvați modificările. Desigur. 1. g  este pentru orice fel de navigare. Undo. Putem folosi taburi în v i m  utilizând : t a b n e w  (deci în modul Comandă). Deschideți 3 taburi în aceeași instanță de v i m .

 așa că va trebui să îl creăm. face asta închizând V i m . . Rezolvare ! g c cp e r m u t a r i . Split screen Taburile sunt utile dar nu ne permit să vizualizăm simultan conținutul a mai multe fișiere. Putem. am vrea să­l salvăm într­un director anume. k. l) Deschideți 4 view­uri împărțind ecranul în 4 zone egale. Dacă acel director nu există deja. Putem rula orice comandă externă dacă o prefixăm cu ! . Momentan. j. Sintaxa fișierului este puțin ciudată. dar putem lucra și mai eficient. Pentru aceasta. o u t 6. Rulare comenzi externe Cel mai probabil dorim să ne ținem fișierele organizate pe disk. vom rula: : ! m k d i rn e w _ d i r Acest lucru este în special folositor atunci când scriem cod și dorim să compilăm fără să părăsim editorul. De exemplu. Salvare opțiuni vim. v i m r c .4. Introduceți text într­o zonă și copiați­l în toate celelalte zone. rulând comanda direct din V i m . În acest fel. pentru a crea un director nou numit n e w _ d i r în directorul de unde am lansat V i m . c ! . 5. folosim split views: Comandă Formă scurtă Efect split orizontal split vertical : s p l i t : s p : v s p l i t: v s p Navigarea între view­uri se face cu Ctrl+w și apoi Ctrl + litera asociată direcției de deplasare (h. pentru lucruri mai complicate va trebui să consultați documentația v i m . nu putem să salvăm direct. v i m  va începe automat o linie nouă dacă depășim coloana 79. sau dintr­un alt termial. Compilați în vim fișierul sursă utilizând g c c . Deschideți fișierul sursă p e r m u t a t i o n . / a . atunci când facem un nou fișier. vimrc Pentru a nu fi nevoiți să introduceți aceleași setări de fiecare dată când trebuie să porniți v i m  este bine să le salvăm într­un fișier numit . c  în vim. bineînțeles. Vrem să setăm opțiunea t e x t w i d t h  la 79. Pentru asta. vom introduce opțiuni simple. Hint: g c coN U M E _ E X E C U T A B I LF I Ș I E R _ S U R S Ă Rulați în vim executabilul obținut.

com/ddvlad/cfg/blob/master/_vimrc] http://swarm. folosind s e t  inainte de ele: c i n d e n t a u t o i n d e n t s m a r t i n d e n t i n c s e a r c h a u t o w r i t e h l s s y n t a xo n Atenție!! s y n t a x o n  nu este o opțiune în sine. Pentru a obține o listă de sugestii de corectare folosiți z = .ro/~mihai/. Puteți folosi fișierul . conține setări minimale pentru un lucru eficient cu v i m .pub. Recomandarea noastră este să vă inspirați din ele și să preluați ce pare interesant și util pentru voi. Activați facilitatea de spellcheck și corectați fișierul u s e r s . Încercați să fiți cât mai eficienți. Se vor colora imediat cuvintele greșite. v i m r c .cs. ștergerea unei porțiuni de text va face ca următoarea comandă de tip paste să lipească textul . Deschideți o instanță de v i m . v i m r c  din home­ul vostru și introduceți linia următoare: s e tt e x t w i d t h = 7 9 Salvați și ieșiți. Pentru a­l activa. Putem testa opțiunea introducând o linie foarte lungă și așteptând să vedem dacă ni se limitează linia la 79 de caractere. 8. v i m r c  publicate de utilizatorii v i m . Aflați ce face fiecare din opțiunile introduse în . v i m r c .pub. v i m r c  și acasă. Registre După cum ați observat. În acest caz. nu se setează cu s e t !. Sau. Spellcheck Puteți folosi v i m  și pentru a scrie text. putem să afișăm valoarea opțiunii.com/ddvlad/cfg/blob/master/_vimrc [https://github. Puteți folosi de exemplu: https://github.ro/~mihai/. o facilitate utilă este cea de spellcheck. Există programe precum a s p e l l  dar v i m  vine integrat cu un modul de spell checking. trebuie să setați opțiunea s p e l l .Deschideți fișierul .vimrc [http://swarm. Folosiți (t w  e prescurarea de la t e x t w i d t h ): : s e tt w ? Pentru a afișa valoarea curentă a unei opțiuni în loc de a o activa se folosește un ?  după aceasta. Introduceți­o așa cum apare. Introduceți următoarele opțiuni în .cs. Pe internet există multe .vimrc] 7. folosind mișcările descrise în I n t r o d u c e r e / M o r eM o v e m e n t .

 Pentru a­l folosi. Pentru a salva într­un registru prefixăm comanda de ștergere cu ”  și numele registrului. Dacă dorim să avem mai multe bucăți de text salvate pentru a fi lipite ulterior trebuie să folosim registre. Inserați textul dorit folosind comanda a  pentru a adăuga după cursor. Modul de diff are multe opțiuni utile. unde: r  ­ registrul folosit o p  ­ comanda dată în modul Normal Exemplu: “ a y y  ­ copiaza întreaga linie pe care se află cursorul în registrul a. tastați q  pentru a salva macro­ul. Format comandă: “ r o p . Pentru aceasta s­au creat macro­urile. exemplu de linie alt exemplu de linie Vă deplasați la sfârșitul liniei cu $ . 10. Folosiți v i m d i f f  pentru a vedea diferențele între fișierele f i l e 1  și f i l e 2 . Efectuați task­urile din 2 _ l i n e s . exemplu de linie NEWLINE alt exemplu de linie Reveniți în modul Normal. Folosiți cât mai puține taste. procedăm similar. v i m  vine cu v i m d i f f  (shortcut pentru v i md ). Pentru a crește productivitatea. tastând ESC. După ce ați terminat secvența de acțiuni pe care vroiați să le repetați. . orice acțiune realizată în vim este memorată. “ a P  ­ adaugă linia copiată în registrul a deasupra liniei pe care se află cursorul. Acuma vreți să repetați acțiunile înregistrare la pasul anterior. diffs Pentru a vedea diferențele între două fișierele putem folosi d i f f . O să observați că va apare jos în stânga textul “recording”. unde a este registrul în care vreți să salvați macro­ul.șters. Macro­uri Uneori este nevoie să repetăm aceeași secvență de acțiuni pentru mai multe linii. (Putea fi orice litera din intervalul a­z). Consultați­le în timpul liber (folosiți cu încredere : h v i m d i f f ). 9. ăvem următoarea succesiune de pași pentru a crea un macro: În modul Normal introduceți comanda q a . Odată pornită înregistrarea. Presupunem că vreți să adăugați șirul ” NEWLINE” la sfârșitul liniei și vă aflați pe prima linie din următorul fișier.

Vă deplasați pe a doua linie. 3  înainte de ultima paranteză închisă de pe toate liniile din fișierul o n e _ m o r e _ a r g .txt ∙ Last modified: 2012/10/31 09:21 by ioan. folosind j .eftimie . c Exista și o altă modalitate? uso/laboratoare/laborator­03. exemplu de linie NEWLINE alt exemplu de linie NEWLINE Pentru a repeta macro­ul de N ori folosiți comanda N @ a  (N este un număr). O să observați că a fost adăugat textul ” NEWLINE” la sfârșitul liniei. C o m a n d ăM o d q a q @ a D e s c r i e r es c u r t ă Normal porniți înregistrarea unui macro în registrul a Normal opriți înregistrarea dacă a fost pornită anterior Normal repetați macro­ul salvat în registrul a Folosiți macro­uri pentru a insera . așa cum ați făcut în timpul înregistrării pentru prima linie. Executați comanda @ a  în modul Normal pentru a repeta macro­ul salvat în registrul a.

Sign up to vote on this title
UsefulNot useful

Master Your Semester with Scribd & The New York Times

Special offer: Get 4 months of Scribd and The New York Times for just $1.87 per week!

Master Your Semester with a Special Offer from Scribd & The New York Times