Documente Academic
Documente Profesional
Documente Cultură
Cheatsheet
Legend:
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
Moreediting
Moremovement N,V N,V N,V N,V N,V N,V N,V nceputulrndului finalulrndului urmtorulcuvnt finalulcuvntuluicurent cuvntulanterior primaliniedinfiier ultimaliniedinfiier
o O a A I
N N N N N
I
Undo,redo
adaugtextlanceputullinieicurente
undo redo
C T R L + rN
Suportlaborator
14.3.EditorulVim[http://books.google.com/books?id=_JFGzyRxQGcC&lpg=PA532&pg=PA473#v=onepage&q&f=false] SfaturidelaBramMoolenaar,creatorulVim[http://www.moolenaar.net/habits.html] AGentleIntroductiontoVim[http://mislav.uniqpath.com/2011/12/vimrevisited/]
Pachetenecesare
vim
Arhivlaborator
lab03.tar.gz
Introducere
Editoareclasice
SistemeledeoperareLinuxvincucelpuinuneditorclasic.Deexemplu,puteifolosiTextEditorg e d i t pentruun editornmediulgrafic.
g e d i t
Editorularefacilitidebaz:permiteintroducereimodificaredetextisalvareaconinutului. Veifipuinsituaiincarenuveiaveaaccesslaunmediugrafic.nacestcaz,dacvreiuneditorclasicputeifolosi n a n o .
n a n o
Editorulvim.Intro
Pentruafimaieficieni,trebuiesfolosimuneditorputernic,cumulteopiuni.V i m esteunuldinele.
V i m sedeosebetedeeditoareleclasiceprinfaptulcesteuneditormodal.Fiecaretastareosemnificaiediferit,n
funciedestareaeditorului. Imagineaurmtoaresugereaz,pescurt,cefacefiecaremod:
modulNormalestemoduliniial.Aicisepoatenavigaprinfiier modulInsertestemodulncaresepoateinseratext modulCommandpermiteintroducereadecomenzipentruVim modulReplacepermitenlocuireaunorfragmentedetext modulVisualpermiteseleciaunuifragmentdetext PentruareveninmodulNormalsefolosetetastaESC.PentruatrecedinmodulNormalncelelaltesefolosesc diversecombinaiidetaste,dupcumvomvedeanlaborator Deiparecomplicat,v i m nuestedificildefolosit.Nutrebuiesreineitoatecomenzileposibiledelaprimafolosire. ComenziledeVimsenvanmomentulncarevloviideeleicutaisgsiiosoluieeficient.
Navigarenfiier
Pentruadeschideunfiiersefoloseteurmtoareacomand:
v i mn u m e _ f i i e r
Pentrufiiereleceauspaiiinnume,puteifolosi
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' \ 'esteescapecharacter.
Editare
Pentruaputeainseratextnou,estenevoiesintrmnmodulInsert,folosindtastai . VeiobservacumparteadejosaecranuluisemodificpentruavanunacsunteinmodulInsert.
Prsireeditor
Amterminatdeeditatfiieruliacumvremsprsimv i m .Pentruaceasta,trebuiesidmocomandncarei zicemcvremsieim. PentruanentoarcenmodulNormaldinmodulInsertputemfolositastaESC. PentruaputeaintroduceocomandvafinecesarsneaflmnmodulCommand.Pentruaintranacesta,veitasta : .Veiobservacacumcursorulestepeliniadejosdinterminal. Dacvremsrenunmlaocomand,putemfolositastaESCinentoarcemnmodulNormal.Dacvrems executmcomanda,oterminmprinEnter. Pentruaieidinv i m folosimq u i t nmodulCommand.Putemabreviacomandalaq nv i m toatecomenzilepotfiabreviatelaosecvenneambigudelitere. ncazulncareammodificatfiierul,nuvomputeaprsieditorulfolosindcomandaq u i t ,deoarecenuamsalvat modificrile.Pentruasalvamodificrilerealizatenfiier,vomfolosicomandaw r i t e (sauw ).Dupceamsalvat fiierul,putemieidinacestafrprobleme.
Putemsalvaiieidinv i m frafolosi2comenzi.Fiindocombinaiefrecevent,comenzilew r i t e iq u i t potfi datempreunnformaabreviat,subformaw q . Uneledintrecelemaifolositecombinaiidecomenzinvimpotfifolositempreunnformaabreviat. Dacvremsieimfrasalvamodificarea,nuputemdaq simplu,trebuiesspunemeditoruluicsuntemsiguric dorimsieimfrssalveze.Folosim! dupcomandpentruaforaexecuiaei. DacvremsformexecuiauneicomenzinVim,folosim! dupaceasta.
Searching
Demulteori,vremscutmntrunfiieranumitesecvene. Pentrualansaocutarefolosim/ (cutarenainte,sprefinalulfiierului)sau? (napoi,sprenceput).Sepoateobserva ciacumcursorulesteplasatpeultimalinie,exactcanmodulCommand. Pentruacutaurmtoareaapariie,putemfolosin sauS h i f t n ,nfunciededireciancarevremsmergem. Observaiasemnrareacuocutareprinmanpages. Observaicsecautunir,NUuncuvnt.Veinvanviitorcumintroduceinoiuneadecuvntncutare.
Replacing
Demulteori,ntrunfiier,vremsnclocuimunircualtir.Pentruafaceastelucrutrebuiesintrmnmodul Commandisdmocomandcarencepecus / ,deexemplu:
s / o l d _ s t r i n g / n e w _ s t r i n g
Formatulcomenziiesteurmtorul: avemcaseparatorntrecmpuricaracterul/ primulcmpreprezintirulcetrebuienlocuit aldoileacmpreprezintexpresiacucarevafinlocuitirulcutat Sepotfolosiiexpresiiregulatedardespreelevomnvantrunlaboratorviitor. DupEnter,serealizeaznlocuireaiserevinenmodulNormal. Folosindcomandanformatulprezentat,sevarealizeazadoarosingurnlocuire,chiardacliniaconineamaimulte potriviri.Pentruaforanlocuireapetoatlungimealiniei,vomadugaun/ g lafinalulcomenziidereplace. Vremsnlocuimtoateapariiileiruluio l d _ s t r i n g nfiiercuiruln e w _ s t r i n g .Desigur,putemnlocuilinie culiniedararfineproductiv.Pentruafacenlocuireaglobalpetotfiierulvomprefixacomandadenlocuirecu% : Aceastcomandnunlocuietetoateapariiile,vedeimaijosdece:
: % s / o l d _ s t r i n g / n e w _ s t r i n g
Selections
Vremsnlocuimirulo l d _ s t r i n g cun e w _ s t r i n g dardoarpeprimele5liniidinfiier. nacestcaz,dincetimpnacumputemnlocuidoarlinieculinie.Deoareceesteunprocestotalineficient,vatrebui sselectmntizonapecarevremsfacemnlocuireapentruaputeadaosingurcomand. Pentruafaceselecii,trebuiesintrmnmodulVizual.Facemacestlucrufolosindv astfel: pentruselecielaniveldecaracterfolosimv pentruselecielaniveldeliniefolosimV pentruselecielaniveldeblock(dreptunghiuridetext)folosim^ V (^ esteControl) nmodulVizualnedeplasmcuh ,
j ,k ,l canmodulNormal.
CopyPasteCutDelete
Aproapetottimpulcndeditaicevaaveinevoiesduplicaiobucatdetextsausomutai.ntruneditorclasic foloseaiCopyPastesauCutPaste.iv i m oferacestlucru. Putemtergeuncaractercux dacneaflmpesteel. Putemtergemaimultecaracterecud .Nsetergenimicdacapsmdoard ,trebuiesispunemictstearg. Exemple:
d l ,tergeuncaracterladreapta d x h ,tergexcaracterelastnga(xesteunnumr)
Operaiiledecopyideleteateaptomicarepentruadeterminalungimeatextuluiafectat. SauleputeifolosidupceaiselectattextulnmodulVizual. Pentruanufacemicrilungipnlafinalulrnduluiexistscurtturi.Comandad d tergeliniacurent,iarD terge restullinieicurent. Dacvremslipimtextultersnepoziionmnpoziiadoritifolosimp sauP .Aldoileafacepastenaintedepoziia curent. Copiemtextulcuy .Lafelcalad ,trebuieodeplasarepentruadeterminalungimeatextuluidecopiat.
y x l ,copiazurmtoarelexcaracterespredreapta,undexesteunnumr. y y ,copiazntreagaliniepecareseaflcursorul.
Cesentmpldactastmx p ?ncercaisexplicaicunoiunileprezentateaici.
Moremovement
Dupcumaiobservatnseciuneaanterioar,operaiiledecopyideletenecesitodeplasarepentruadetermina lungimeatextuluiafectat.Arfiineficientsfolosimdoarh ,j ,k il . Dinfericire,v i m oferoperaiicomplexededeplasare,sumarizatenurmtorultabel.ncercaisvjucaicutoate.
Comand Deplasare
^ $ w e b g g G
Deasemenea,puteimergepeoanumitliniedinfiierutilizndmodulCommand:: n vdeplaseazpelinian .
Moreediting
ExistimetodedeintrarenmodulInsert(dinmodulNormal)maiavansate.Tabelulurmtorilustreazctevadinele:
Comand Aciune
o O a A I
Ooops.Undo,undo,redo
Dincndncndsentmplsfacemomodificaregreitisvremsdmnapoi.ntruneditorclasicfoloseaiCtrl +z. nvimfolosiiurmtoarelecomenzinmodulNormal:
Comand Aciune undo
C T R L + r redo
WhereamI?
nanumitesituaii,veidorisaveiafiatnumrulfiecreiliniidinfiierulcurent.nmodulComand,introducei comandas e tn u m b e r .Puteidezactivacus e tn o n u m b e r . naltecazuri,veidorisaveiometodrapiddealocalizacursorulnfiier.Introducei,pernd,comenziles e t c u r s o r l i n e is e tc u r s o r c o l u m n . Pentruasetaoopiunefolosiicomenzidetipuls e t Pentruaresetaoopiunefolosiis e t
o p i u n e nmodulCommand.
n o o p i u n e .
Exerciii
Toatecunotinelenecesarepentruarezolvaprimele2seciunisegsescnparteadeintroducere.Ulterior,fiecare exerciiuconineiodescriereaceeacevisecere.
1.VimBasicUsage
Navigareiinseraretext Deschideifiieruls t e v e
j o b s (Atenie:existunspaiunnumelefiierului,folosii`\`saughilimele).
FolosiitasteledenavigarepentruaajungepecuvntulReed(linia8,coloana18). InseraicuvntulCollegedupcuvntulReed(pecarevaiopritlaexerciiulanterior) Salvaimodificrileapoiieiidinfiier. Deschideidinnouacelaifiieriintroduceiolinienoualanceputulluiconinndtextul:SteveJobsat Standford,2005. Salvaimodificrileiprsiieditorulfolosindosingurcomand. Deschideidinnouacelaifiier.tergeiprimaliniedinacesta. Prsiieditorulfrasalvamodificrile. Searchandreplace Deschideifiieruls t e v e
j o b s .
/ M yt h i r d < E n t e r > d d
Duplicaiprimaliniedinfiier. Rezolvare
g g Y p
Mutaiultimaliniedinfiierpelinia3aacestuia. Rezolvare
G d d : 3 < E n t e r > P
tergeiprimulparagrafdinfiier.FolosiimodulVisual. Rezolvare
: 4 v 4 j d
Nunchideifiierulsausalvaimodificrile. Undo,redo ncercaisvntoarceilastareaoriginalafiieruluiutilizndundo. Reveniilastareaactualfolosindredo. nchideifiierulfrssalvaimodificrile.
2.EfficientEditing
Utilizndcunotineledepnacum,rezolvaiurmtoareletaskurintrunnumrminimdetaste. 1. deschideifiieruls e a r c h _ r e p l a c e . 2. mergeipelinia4 3. copiaitoatlinia 4. mergeipeultimaliniedinfiier 5. faceipastelaliniacopiat 6. mergeipeprimalinie 7. copiaiultimulcuvntdepeaceasta 8. mergeipeultimalinie 9. faceipastecuvntuluicopiatlafinalulacesteia Careestenumrulminimdetastenecesarepentruarezolvaurmtoareasituaie? 1. adugatiolinienou(lafinalulfiierului)ncarescrieitextulA c u m 2. navigailaprimaliniedinfiier 3. navigailaultimaliniedinfiierceaintrodus 4. adugaidupvimtextuls i
s t i uv i m .
i lf o l o s e s c
Punctuldelafinalulpropoziieitrebuiesrmnacolo!
3.Tabs
Uneoritrebuieseditmmaimultefiieresimultan.Desigur,putemdeschidemaimulteterminalesaumaimultetaburi nacelaiterminaldarnuvomputeacopiatextdintrunfiierncelalt(ncercai). Putemfolositaburinv i m utiliznd: t a b n e w (decinmodulComand). Nagivareantretaburisefacecug t ig T .
g estepentruoricefeldenavigare.t iT suntpentrutaburi.
Deschidei3taburinaceeaiinstandev i m ,scrieitextnprimulicopiailnaltreilea.
4.Splitscreen
Taburilesuntutiledarnunepermitsvizualizmsimultanconinutulamaimultefiiere.Pentruaceasta,folosimsplit views:
Comand Formscurt Efect splitorizontal splitvertical
: s p l i t : s p : v s p l i t: v s p
NavigareantreviewurisefacecuCtrl+wiapoiCtrl+literaasociatdirecieidedeplasare(h,j,k,l) Deschidei4viewurimprindecranuln4zoneegale.Introduceitextntrozonicopiailntoatecelelaltezone.
5.Rularecomenziexterne
Celmaiprobabildorimsneinemfiiereleorganizatepedisk.Pentruasta,atuncicndfacemunnoufiier,amvrea slsalvmntrundirectoranume.Dacaceldirectornuexistdeja,nuputemssalvmdirect,aacvatrebuisl crem. Putem,bineneles,faceastanchizndV i m ,saudintrunalttermial,darputemlucraimaieficient,rulndcomanda directdinV i m . Putemrulaoricecomandexterndacoprefixmcu! .Deexemplu,pentruacreaundirectornounumitn e w _ d i r ndirectoruldeundeamlansatV i m ,vomrula:
: ! m k d i rn e w _ d i r
Rulainvimexecutabilulobinut. Rezolvare
! g c cp e r m u t a r i . c ! . / a . o u t
6.Salvareopiunivim.vimrc
Pentruanufinevoiisintroduceiaceleaisetridefiecaredatcndtrebuiesporniiv i m estebineslesalvm ntrunfiiernumit. v i m r c . Sintaxafiieruluiestepuinciudat.Momentan,vomintroduceopiunisimple,pentrulucrurimaicomplicatevatrebuis consultaidocumentaiav i m . Vremssetmopiuneat e x t w i d t h la79.nacestfel,v i m vancepeautomatolinienoudacdepimcoloana 79.
Deschideifiierul. v i m r c dinhomeulvostruiintroduceiliniaurmtoare:
s e tt e x t w i d t h = 7 9
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
Atenie!!s y n t a x
o n nuesteoopiunensine,nuseseteazcus e t !.Introduceioaacumapare.
Aflaicefacefiecaredinopiunileintrodusen. v i m r c . Puteifolosifiierul. v i m r c iacas,coninesetriminimalepentruunlucrueficientcuv i m . Peinternetexistmulte. v i m r c publicatedeutilizatoriiv i m .Recomandareanoastrestesvinspiraidineleis preluaicepareinteresantiutilpentruvoi. Puteifolosideexemplu: https://github.com/ddvlad/cfg/blob/master/_vimrc[https://github.com/ddvlad/cfg/blob/master/_vimrc] http://swarm.cs.pub.ro/~mihai/.vimrc[http://swarm.cs.pub.ro/~mihai/.vimrc]
7.Spellcheck
Puteifolosiv i m ipentruascrietext.nacestcaz,ofacilitateutilesteceadespellcheck. Existprogrameprecuma s p e l l darv i m vineintegratcuunmoduldespellchecking. Pentrualactiva,trebuiessetaiopiuneas p e l l .Sevorcoloraimediatcuvintelegreite.Pentruaobineolistde sugestiidecorectarefolosiiz = . Activaifacilitateadespellcheckicorectaifiierulu s e r s .ncercaisfiictmaieficieni,folosindmicrile descrisenI n t r o d u c e r e / M o r eM o v e m e n t .
8.Registre
Dupcumaiobservat,tergereauneiporiunidetextvafacecaurmtoareacomanddetippasteslipeasctextul
r registrulfolosit o p comandadatnmodulNormal
Exemplu:
a y y copiazantreagaliniepecareseaflcursorulnregistrula. a P adaugliniacopiatnregistruladeasupralinieipecareseaflcursorul.
Efectuaitaskuriledin2 _ l i n e s .Folosiictmaipuinetaste.
9.diffs
Pentruavedeadiferenelentredoufiiereleputemfolosid i f f .Pentruacreteproductivitatea,v i m vinecu v i m d i f f (shortcutpentruv i md ). Folosiiv i m d i f f pentruavedeadiferenelentrefiierelef i l e 1 if i l e 2 . Moduldediffaremulteopiuniutile.Consultailentimpulliber(folosiicuncredere: h
v i m d i f f ).
10.Macrouri
Uneoriestenevoiesrepetmaceeaisecvendeaciunipentrumaimultelinii.Pentruaceastasaucreatmacrourile. vemurmtoareasuccesiunedepaipentruacreaunmacro: nmodulNormalintroduceicomandaq a ,undeaesteregistrulncarevreissalvaimacroul.(Puteafiorice literadinintervalulaz).Osobservaicvaaparejosnstngatextulrecording. Odatpornitnregistrarea,oriceaciunerealizatnvimestememorat. PresupunemcvreisadugaiirulNEWLINElasfritullinieiivaflaipeprimaliniedinurmtorulfiier. exempludelinie altexempludelinie Vdeplasailasfritullinieicu$ . Inseraitextuldoritfolosindcomandaa pentruaadugadupcursor. exempludelinieNEWLINE altexempludelinie ReveniinmodulNormal,tastndESC. Dupceaiterminatsecvenadeaciunipecarevroiaislerepetai,tastaiq pentruasalvamacroul. Acumavreisrepetaiaciunilenregistrarelapasulanterior.
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
Folosiimacrouripentruainsera,
3 naintedeultimaparanteznchisdepetoateliniiledinfiierul
o n e _ m o r e _ a r g . c
Existaioaltmodalitate?
uso/laboratoare/laborator03.txtLastmodified:2012/10/3109:21byioan.eftimie