JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrPK!AAvim80/tutor/tutor.eonu[============================================================================== = B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7 = ============================================================================== Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili por ion klarigi en instruilo kiel i tiu. i tiu instruilo estas fasonita por priskribi sufiajn komandojn, por ke vi kapablu uzi Vim kun sufia facileco. La tempo bezonata por plenumi la kurson estas 25-30 minutoj, kaj dependas de kiom da tempo estas uzata por eksperimenti. ATENTU: La komandoj en la lecionoj anos la tekston. Kopiu tiun i dosieron por ekzerci vin (se vi lanis "vimtutor", tiam estas jam kopio). Gravas memori, ke i tiu instruilo estas organizata por instrui per la uzo. Tio signifas, ke vi devas plenumi la komandojn por bone lerni ilin. Se vi nur legas la tekston, vi forgesos la komandojn! Nun, certigu, ke la majuskla baskulo NE estas en reimo majuskla, kaj premu la klavon j sufie da fojoj por movi la kursoron, kaj por ke la leciono 1.1 plenigu la ekranon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1.1: MOVI LA KURSORON ** Por movi la kursoron, premu la h,j,k,l klavojn kiel montrite. ** ^ k Konsilo: La klavo h estas la plej liva kaj movas liven. < h l > La klavo l estas la plej dekstra kaj movas dekstren. j La klavo j aspektas kiel malsuprena sago. v 1. Movu la kursoron sur la ekrano is kiam vi sentas vin komforta. 2. Premu la klavon (j) is kiam i ripetas. Vi nun scias, kiel movii al la sekvanta leciono 3. Uzante la malsuprenan klavon, moviu al la leciono 1.2. RIMARKO: Se vi dubas pri tio, kion vi premis, premu por reiri al la normala reimo. Tiam repremu la deziratan komandon. RIMARKO: La klavoj de la kursoro devus anka funkcii. Sed uzante hjkl, vi kapablos movii pli rapide post kiam vi kutimios. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1.2: ELIRI EL VIM !! RIMARKO: Anta ol plenumi iujn subajn paojn ajn, legu la tutan lecionon!! 1. Premu la klavon (por certigi, ke vi estas en normala reimo). 2. Tajpu: :q! . Tio eliras el la rekdaktilo, SEN konservi la anojn, kiujn vi faris. 3. Kiam vi vidas la elinviton, tajpu la komandon kiun vi uzis por eniri en i tiu instruilo. Tio estus: vimtutor 4. Se vi memoris tiujn paojn kaj sentas vin memfida, plenumu la paojn 1 is 3 por eliri kaj reeniri la redaktilon. RIMARKO: :q! eliras sen konservi la anojn, kiujn vi faris. Post kelkaj lecionoj, vi lernos kiel konservi la anojn al dosiero. 5. Movu la kursoron suben is la leciono 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1.3: REDAKTO DE TEKSTO - FORVIO ** Premu x por forvii la signon sub la kursoro. ** 1. Movu la kursoron al la suba linio markita per --->. 2. Por korekti la erarojn, movu la kursoron is kiam i estas sur la forvienda signo. 3. Premu la klavon x por forvii la nedeziratan signon. 4. Ripetu paojn 2 is 4 is kiam la frazo estas usta. ---> La boovinno saaltiss ssur laa luuno. 5. Post kiam la linio estas usta, iru al la leciono 1.4 RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1.4: REDAKTO DE TEKSTO - ENMETO ** Premu i por enmeti tekston. ** 1. Movu la kursoron al la unua suba linio markita per --->. 2. Por igi la unuan linion sama kiel la dua, movu la kursoron sur la unuan signon post kie la teksto estas enmetenda. 3. Premu i kaj tajpu la bezonatajn aldonojn. 4. Premu kiam la eraroj estas korektitaj por reiri al la normala reimo. Ripetu la paojn 2 is 4 por korekti la frazon. ---> Mank en i linio. ---> Mankas teksto en i tiu linio. 5. Kiam vi sentas vin komforta pri enmeto de teksto, moviu al la leciono 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1.5: REDAKTO DE TEKSTO - POSTALDONO ** Premu A por postaldoni tekston. ** 1. Movu la kursoron al la unua suba linio markita per --->. Ne gravas sur kiu signo estas la kursoro. 2. Premu majusklan A kaj tajpu la bezonatajn aldonojn. 3. Post kiam la teksto estas aldonita, premu por reiri al la normala reimo. 4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la paojn 2 kaj 3 por korekti la frazon. ---> Mankas teksto el ti Mankas teksto el tiu linio. ---> Mankas anka teks Mankas anka teksto i tie. 5 Kiam vi sentas vin komforta pri postaldono de teksto, moviu al la leciono 1.6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1.6: REDAKTI DOSIERON ** Uzu :wq por konservi dosieron kaj eliri. ** !! RIMARKO: Anta ol plenumi iun suban paon ajn, legu la tutan lecionon!! 1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q! A, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie. 2. e la elinvito, tajpu i tiun komandon: vim tutor 'vim' estas la komando por lani la redaktilon Vim, 'tutor' estas la dosiernomo de la dosiero, kiun vi volas redakti. Uzu dosieron, kiu aneblas. 3. Enmetu kaj forviu tekston, kiel vi lernis en la antaaj lecionoj. 4. Konservu la dosieron kun anoj kaj eliru el Vim per: :wq 5. Se vi eliris el la instruilo vimtutor en pao 1, restartigu la instruilon vimtutor kaj moviu suben al la sekvanta resumo. 6. Post kiam vi legis la suprajn paojn, kaj komprenis ilin: faru ilin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1 RESUMO 1. La kursoro movias a per la sagoklavoj, a per la klavoj hjkl. h (liven) j (suben) k (supren) l (dekstren) 2. Por lani Vim el la elinvito, tajpu: vim DOSIERNOMO 3. Por eliri el Vim, tajpu: :q! por rezigni la anojn 4. Por forvii la signojn e la pozicio de la kursoro, tajpu: x 5. Por enmeti a postaldoni tekston, tajpu: i tajpu enmetendan tekston enmetas tekston anta la kursoro A tajpu la postaldonendan tekston postaldonas post la kursoro RIMARKO: Premo de iras al la normala reimo, a rezignas la nedeziratan a parte plenumita komando. Nun darigu al la leciono 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.1: KOMANDOJ DE FORVIO ** Tajpu dw por forvii vorton. ** 1. Premu por certigi, ke vi estas en normala reimo. 2. Movu la kursoron al la linio markita per --->. 3. Movu la kursoron al la komenco de vorto, kiu forviendas. 4. Tajpu dw por forvii la vorton. RIMARKO: La litero d aperos en la lasta linio sur la ekrano kiam vi tajpas in. Vim atendas is kiam vi tajpas w . Se vi vidas alian signon ol d vi tajpis ion mise; premu kaj rekomencu. ---> Estas iuj vortoj kiuj Zamenhof ne devus esti akuzativo en i tiu frazo. 5. Ripetu paojn 3 kaj 4 is kiam la frazo estas usta kaj moviu al la leciono 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.2: PLIAJ KOMANDOJ DE FORVIO ** Tajpu d$ por forvii la finon de la linio. ** 1. Premu por certigi, ke vi estas en normala reimo. 2. Movu la kursoron sur la suban linion markita per --->. 3. Movu la kursoron e la fino de la usta linio (POST la unua . ). 4. Tajpu d$ por forivii is la fino de la linio. ---> Iu tajpis la finon de i tiu linio dufoje. fino de i tiu linio dufoje. 5. Moviu al la leciono 2.3 por kompreni kio okazas. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.3: PRI OPERATOROJ KAJ MOVOJ Multaj komandoj, kiuj anas la tekston, estas faritaj de operatoro kaj movo. La formato de komando de forvio per la operatoro de forvio d estas kiel sekvas: d movo Kie: d - estas la operatoro de movo movo - estas tio, pri kio la operatoro operacios (listigita sube) Mallonga listo de movoj: w - is la komenco de la sekvanta vorto, krom ia unua signo. e - is la fino de la nuna vorto, krom la lasta signo. $ - is la fino de la linio, krom la lasta signo. Do tajpo de 'de' forvios ekde la kursoro is la fino de la vorto. RIMARKO: Premo de nur la movo en Normala reimo sen operatoro movos la kursoron kiel specifite. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.4: UZI NOMBRON POR MOVO ** Tajpo de nombro anta movo ripetas in lafoje. ** 1. Movu la kursoron e la komenco de la suba linio markita per --->. 2. Tajpu 2w por movi la kursoron je du vortoj antaen. 3. Tajpu 3e por movi la kursoron e la fino de la tria vorto antaen. 4. Tajpu 0 (nul) por movii e la komenco de la linio. 5. Ripetu paojn 2 is 3 kun malsamaj nombroj. ---> Tio estas nur linio kun vortoj, kie vi povas movii. 6. Moviu al la leciono 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.5: UZI NOMBRON POR FORVII PLI ** Tajpo de nombro kun operatoro ripetas in lafoje. ** En la kombinao de la operatoro de forvio, kaj movo kiel menciita i-supre, eblas aldoni nombron anta la movo por pli forvii: d nombro movo 1. Movu la kursoron e la unua MAJUSKLA vorto en la linio markita per --->. 2. Tajpu d2w por forvii la du MAJUSKLAJN vortojn 3. Ripetu paojn 1 is 2 per malsama nombro por forvii la sinsekvajn MAJUSKLAJN vortojn per unu komando ---> Tiu AB CDE linio FGHI JK LMN OP de vortoj estas Q RS TUV purigita. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.6: OPERACII SUR LINIOJ ** Tajpu dd por forvii tutan linion. ** Pro la ofteco de forvio de tuta linio, la verkisto de Vi decidis, ke estus pli facile simple tajpi du d-ojn por forvii linion. 1. Movu la kursoron sur la duan linion en la suba frazo. 2. Tajpu dd por forvii la linion. 3. Nun moviu al la kvara linio. 4. Tajpu 2dd por forvii du liniojn. ---> 1) Rozoj estas ruaj, ---> 2) limo estas amuza, ---> 3) Violoj estas bluaj, ---> 4) Mi havas aton, ---> 5) Horlooj diras kioma horo estas, ---> 6) Sukero estas dola, ---> 7) Kaj tiel vi estas. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.7: LA KOMANDO DE MALFARO ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. ** 1. Movu la kursoron e la suba linio markita per ---> kaj metu in sur la unuan eraron. 2. Tajpu x por forvii la unuan nedeziratan signon. 3. Nun tajpu u por malfari la lastan plenumitan komandon. 4. i-foje, riparu iujn erarojn en la linio kaj ia originala stato. 5. Nun tajpu majusklan U por igi la linion al ia antaa stato. 6. Nun tajpu u kelkfoje por malfari la U kaj antaajn komandojn. 7. Nun tajpu CTRL-R (premante la CTRL klavon dum vi premas R) kelkfoje por refari la komandojn (malfari la malfarojn). ---> Koorektii la erarojn sur tiuu i liniio kaj remettu illlin per malfaro. 8. Tiuj estas tre utilaj komandoj. Nun moviu al la leciono 2 RESUMO. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2 RESUMO 1. Por forvii ekde la kursoro is la sekvanta vorto, tajpu: dw 2. Por forvii ekde la kursoro is la fino de la linio, tajpu: d$ 3. Por forvii tutan linion, tajpu: dd 4. Por ripeti movon, antametu nombron: 2w 5. La formato de ana komando estas: operatoro [nombro] movo kie: operatoro - estas tio, kio farendas, kiel d por forvii [nombro] - estas opcia nombro por ripeti la movon movo - movas sur la teksto por operacii, kiel ekzemple w (vorto), $ (is fino de linio), ktp. 6. Por movii al la komenco de la linio, uzu nul: 0 7. Por malfari antaajn agojn, tajpu: u (minuskla u) Por malfari iujn anojn sur la linio, tajpu: U (majuskla U) Por refari la malfarojn, tajpu: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3.1 LA KOMANDO DE METO ** Tajpu p por meti tekston forviitan antae post la kursoro. ** 1. Movu la kursoron e la unua ---> suba linio. 2. Tajpu dd por forvii la linion kaj konservi in ene de reistro de Vim. 3. Movu la kursoron e la linio c), SUPER kie la forviita linio devus esti. 4. Tajpu p por meti la linion sub la kursoron. 5. Ripetu la paojn 2 is 4 por meti iujn liniojn en la usta ordo. ---> d) u anka vi povas lerni? ---> b) Violoj estas bluaj, ---> c) Inteligenteco lerneblas, ---> a) Rozoj estas ruaj, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3.2 LA KOMANDO DE ANSTATAIGO ** Tajpu rx por anstataigi la signon e la kursoro per x . ** 1. Movu la kursoron e la unua suba linio markita per --->. 2. Movu la kursoron is la unua eraro. 3. Tajpu r kaj la signon, kiu devus esti tie. 4. Ripetu paojn 2 kaj 3 is kiam la unua linio egalas la duan. ---> Kiem tiu lanio estis tajpita, iu pramis la nauftajn klovojn! ---> Kiam tiu linio estis tajpita, iu premis la neustajn klavojn! 5. Nun moviu al la leciono 3.3. RIMARKO: Memoru, ke vi devus lerni per uzo, kaj ne per memorado. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3.3 LA OPERATORO DE ANO ** Por ani is la fino de la vorto, tajpu ce . ** 1. Movu la kursoron e la unua suba linio markita per --->. 2. Metu la kursoron sur la d en lduzw 3. Tajpu ce kaj la ustan vorton (en tiu i kazo, tajpu inio ). 4. Premu kaj moviu al la sekvanta signo, kiu bezonas anon. 5. Ripetu la paojn 3 kaj 4 is kiam la unua frazo egalas la duan. ---> Tiu lduzw havas kelkajn vortojn, kiii bezas anon per la anooto. ---> Tiu linio havas kelkajn vortojn, kiuj bezonas anon per la anoperatoro. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3.4 PLIAJ ANOJ PER c ** La operatoro de ano uzeblas kun la sama movo kiel forvio. ** 1. La operatoro de ano funkcias sammaniere kiel forvio. La formato estas: c [nombro] movo 2. La movoj estas samaj, kiel ekzemple w (vorto) kaj $ (fino de linio). 3. Moviu e la unua suba linio markita per --->. 4. Movu la kursoron al la unua eraro. 5. Tajpu c$ kaj tajpu la reston de la linio kiel la dua kaj premu . ---> La fino de i tiu linio bezonas helpon por igi in same kiel la dua. ---> La fino de i tiu linio bezonas korektojn per uzo de la komando c$ RIMARKO: Vi povas uzi la klavon Retropao por korekti erarojn dum vi tajpas. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3 RESUMO 1. Por remeti tekston, kiun vi us forviis, tajpu p. Tio metas la forviitan tekston POST la kursoro (se linio estis forviita, i iros en la linion sub la kursoro). 2. Por anstataigi la signon sub la kursoro, tajpu r kaj tiam la signon kion vi deziras havi tie. 3. La operatoro de ano ebligas al vi ani ekde la kursoro, is kie la movo iras. Ekz. tajpu ce por ani ekde la kursoro is la fino de la vorto, c$ por ani is la fino de la linio. 4. La formato de ano estas: c [nombro] movo Nun darigu al la sekvanta leciono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton. Tajpu G por movii al linio en la dosiero. ** RIMARKO: Legu la tutan lecionon anta ol plenumi iun paon ajn!! 1. Premu la klavon Ctrl kaj premu g . Oni nomas tion CTRL-G. Mesao aperos e la suba parto de la pao kun la dosiernomo kaj la pozicio en la dosiero. Memoru la numeron de la linio por pao 3. RIMARKO: Vi eble vidas la pozicion de la kursoro e la suba dekstra angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas altita (vidu :help 'ruler') 2. Premu G por movii e la subo de la dosiero. Tajpu gg por movii e la komenco de la dosiero. 3. Tajpu la numeron de la linio kie vi estis kaj poste G . Tio removos vin al la linio, kie vi estis kiam vi unue premis CTRL-G. 4. Se vi sentas vin komforta, plenumu paojn 1 is 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 4.2 LA KOMANDO DE SERO ** Tajpu / kaj poste frazon por seri la frazon. ** 1. En normala reimo, tajpu la / signon. Rimarku, ke i kaj la kursoro aperas e la suba parto de la ekrano kiel por la : komando. 2. Nun tajpu 'errarro' . Tio estas la vorto, kion vi volas seri. 3. Por seri la saman frazon denove, simple tajpu n . Por seri la saman frazon denove en la retrodirekto, tajpu N . 4. Por seri frazon en la retrodirekto, uzu ? anstata / . 5. Por reiri tien, el kie vi venis, premu CTRL-O (Premu Ctrl kaj o literon o). Ripetu por pli retroiri. CTRL-I iras antaen. ---> "errarro" ne estas maniero por literumi eraro; errarro estas eraro. RIMARKO: Kiam la sero atingas la finon de la dosiero, i daras e la komenco, krom se la agordo 'wrapscan' estas malaltita. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 4.3 SERO DE KONGRUAJ KRAMPOJ ** Tajpu % por trovi kongruan ), ] a } ** 1. Poziciu la kursoron sur iun (, [ a { en la linio markita per --->. 2. Nun tajpu la % signon. 3. La kursoro movias al la kongrua krampo. 4. Tajpu % por movi la kursoron al la alia kongrua krampo. 5. Movu la kursoron al la alia (, ), [, ], {, } kaj observu tion, kion % faras. ---> i tiu ( estas testa linio kun (-oj, [-oj, ]-oj kaj {-oj, }-oj en i. )) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 4.4 LA KOMANDO DE ANSTATAIGO ** Tajpu :s/malnova/nova/g por anstataigi 'nova' per 'malnova'. ** 1. Movu la kursoron al la suba linio markita per --->. 2. Tajpu :s/laa/la . Rimarku, ke la komando anas nur la unuan okazaon de "laa" en la linio. 3. Nun tajpu :s/laa/la/g . Aldono de g opcio signifas mallokan anstataigon en la linio. i anas iujn okazaojn de "laa" en la linio. ---> laa plej bona tempo por vidi florojn estas en laa printempo. 4. Por ani iujn okazaojn de iu ena signo inter du linioj, tajpu :#,#s/malnova/nova/g kie #,# estas la numeroj de linioj de la intervalo de la linioj kie la anstataigo okazos. Tajpu :%s/malnova/nova/g por ani iujn okazaojn en la tuta dosiero. Tajpu :s/malnova/nova/gc por trovi iujn okazaojn en la tuta dosiero, kun invitilo u anstataigi a ne. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 4 RESUMO 1. CTRL-G vidigas vian pozicion en la dosiero kaj la staton de la dosiero. G movas la kursoron al la fino de la dosiero. numero G movas la kursoron al numero de tiu linio. gg movas la kursoron al la unua linio. 2. Tajpo de / kaj frazon seras la frazon antaen. Tajpo de ? kaj frazon seras la frazon malantaen. Post sero, tajpu n por trovi la sekvantan okazaon en la sama direkto a N por seri en la mala direkto. CTRL-O movas vin al la antaaj pozicioj, CTRL-I al la novaj pozicioj. 3. Tajpo de % kiam la kursoro estas sur (,),[,],{ a } movias al ia kongruo. 4. Por anstataigi 'nova' en la unua 'malnova' en linio :s/malnova/nova Por anstataigi 'nova' en iuj 'malnova'-oj en linio :s/malnova/nova/g Por anstataigi frazon inter du #-aj linioj :#,#s/malnova/nova/g Por anstataigi iujn okazaojn en la dosiero :%s/malnova/nova/g Por demandi konfirmon iu-foje, aldonu 'c' :%s/malnova/nova/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON ** Tajpu :! sekvata de ekstera komando por plenumi la komandon. ** 1. Tajpu la konatan komandon : por pozicii la kursoron e la suba parto de la ekrano. Tio ebligas tajpadon de komando en komanda linio. 2. Nun tajpu la ! (krisigno) signon. Tio ebligas al vi plenumi iun eksteran elan komandon ajn. 3. Ekzemple, tajpu ls post ! kaj tajpu . Tio listigos la enhavon de la dosierujo, same kiel se vi estis en ela invito. A uzu :!dir se ls ne funkcias. RIMARKO: Eblas plenumi iun eksteran komandon ajn tiamaniere, anka kun argumentoj. RIMARKO: iuj : komandoj devas finii per tajpo de Ekde nun, ni ne plu mencios tion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 5.2 PLI PRI KONSERVO DE DOSIERO ** Por konservi la faritajn anojn en la teksto, tajpu :w DOSIERNOMO. ** 1. Tajpu !dir a !ls por akiri liston de via dosierujo. Vi jam scias, ke vi devas tajpi post tio. 2. Elektu dosieron, kiu ankora ne ekzistas, kiel ekzemple TESTO. 3. Nun tajpu: :w TESTO (kie TESTO estas la elektita dosiernomo) 4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO. Por kontroli tion, tajpu :!dir a :!ls denove por vidigi vian dosierujon. RIMARKO: Se vi volus eliri el Vim kaj restartigi in denove per vim TESTO, la dosiero estus precize same kiel kopio de la instruilo kiam vi konservis in. 5. Nun forviu la dosieron tajpante (MS-DOS): :!del TESTO a (UNIKSO): :!rm TESTO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 5.3 APARTIGI KONSERVENDAN TESTON ** Por konservi parton de la dosiero, tajpu v movo :w DOSIERNOMO ** 1. Movu la kursoron al tiu linio. 2. Premu v kaj movu la kursoron al la kvina suba ero. Rimarku, ke la teksto emfazias. 3. Premu la : signon. e la fino de la ekrano :'<,'> aperos. 4. Tajpu w TESTO , kie TESTO estas dosiernomo, kiu ankora ne ekzistas. Kontrolu, ke vi vidas :'<,'>w TESTO anta ol premi . 5. Vim konservos la apartigitajn liniojn al la dosiero TESTO. Uzu :dir a :!ls por vidigi in. Ne forviu in. Ni uzos in en la sekvanta leciono. RIMARKO: Premo de v komencas Viduman apartigon. Vi povas movi la kursoron por pligrandigi a malpligrandigi la apartigon. Tiam vi povas uzi operatoron por plenumi ion kun la teksto. Ekzemple, d forvias la tekston. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 5.4 AKIRI KAJ KUNFANDI DOSIEROJN ** Por enmeti la enhavon de dosiero, tajpu :r DOSIERNOMON ** 1. Movu la kursoron tuj super i tiu linio. RIMARKO: Post plenumo de pao 2, vi vidos tekston el la leciono 5.3. Tiam moviu SUBEN por vidi tiun lecionon denove. 2. Nun akiru vian dosieron TESTO uzante la komandon :r TESTO kie TESTO estas la nomo de la dosiero, kiun vi uzis. La dosiero, kion vi akiras, estas metita sub la linio de la kursoro. 3. Por kontroli, u la dosiero akiriis, retromovu la kursoron kaj rimarku, ke estas nun du kopioj de la leciono 5.3, la originala kaj la versio mem de la dosiero. RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, :r !ls legas la eliron de la komando ls kaj metas in sub la kursoron. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 5 RESUMO 1. :!komando plenumas eksteran komandon. Iuj utilaj ekzemploj estas: (MS-DOS) (UNIKSO) :!dir :!ls - listigas dosierujon :!del DOSIERNOMO :!rm DOSIERNOMO - forvias la dosieron DOSIERNOMO 2. :w DOSIERNOMO konservas la nunan dosieron de Vim al disko kun la nomo DOSIERNOMO. 3. v movo :w DOSIERNOMO konservas la Viduman apartigon de linioj en dosiero DOSIERNOMO. 4. :r DOSIERNOMO akiras la dosieron DOSIERNOMO el la disko kaj metas in sub la pozicion de la kursoro. 5. :r !dir legas la eligon de la komando dir kaj metas in sub la pozicion de la kursoro. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 6.1 LA KOMANDO DE MALFERMO ** Tajpu o por malfermi linion sub la kursoro kaj eniri Enmetan reimon. ** 1. Movu la kursoron al la suba linio markita per --->. 2. Tajpu la minusklan literon o por malfermi linion SUB la kursoro kaj eniri la Enmetan reimon. 3. Nun tajpu tekston kaj premu por eliri el la Enmeta reimo. ---> Post tajpo de o la kursoro movias al la malfermata linio en Enmeta reimo. 4. Por malfermi linion SUPER la kursoro, nur tajpu majusklan O , anstata minusklan o. Provu tion per la suba linio. ---> Malfermu linion SUPER tiu tajpante O dum la kursoro estas sur tiu linio. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 6.2 LA KOMANDO DE POSTALDONO ** Tajpu a por enmeti POST la kursoro. ** 1. Movu la kursoron e la komenco de la linio markita per --->. 2. Premu e is kiam la kursoro estas e la fino de li. 3. Tajpu a (minuskle) por aldoni tekston POST la kursoro. 4. Kompletigu la vorton same kiel la linio sub i. Premu por eliri el la Enmeta reimo. 5. Uzu e por movii al la sekvanta nekompleta vorto kaj ripetu paojn 3 kaj 4. ---> i tiu lin ebligos vin ekz vin postal tekston al linio. ---> i tiu linio ebligos vin ekzerci vin postaldoni tekston al linio. RIMARKO: iu a, i kaj A iras al la sama Enmeta reimo, la nura malsamo estas tie, kie la signoj estas enmetitaj. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 6.3 ALIA MANIERO POR ANSTATAIGI ** Tajpu majusklan R por anstataigi pli ol unu signo. ** 1. Movu la kursoron al la unua suba linio markita per --->. Movu la kursoron al la komenco de la unua xxx . 2. Nun premu R kaj tajpu la nombron sub i en la dua linio, por ke i anstataigu la xxx . 3. Premu por foriri el la Anstataiga reimo. Rimarku, ke la cetera parto de la linio restas neanata. 4. Ripetu la paojn por anstataigi la restantajn xxx. ---> Aldono de 123 al xxx donas al vi xxx. ---> Aldono de 123 al 456 donas al vi 579. RIMARKO: Anstataiga reimo estas same kiel Enmeta reimo, sed iu signo tajpita forvias ekzistan signon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 6.4 KOPII KAJ ALGLUI TEKSTON ** Uzu la y operatoron por kopii tekston, kaj p por alglui in ** 1. Iru al la linio markita per ---> sube kaj poziciu la kursoron post "a)". 2. Komencu la Viduman reimon per v kaj movu la kursoron tuj anta "unua". 3. Tajpu y por kopii la emfazitan tekston. 4. Movu la kursoron e la fino de la linio: j$ 5. Tajpu p por alglui la tekston. Tiam tajpu: a dua . 6. Uzu Viduman reimon por apartigi " ero.", kopiu in per y , moviu e la fino de la sekvanta linio per j$ kaj algluu la tekston tie per p . ---> a) tio estas la unua ero. b) RIMARKO: vi povas anka uzi y kiel operatoro; yw kopias unu vorton. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 6.5 AGORDI OPCION ** Agordu opcion por ke sero a anstataigo ignoru usklecon ** 1. Seru 'ignori' per tajpo de /ignori Ripetu plurfoje premante n . 2. altu la opcion 'ic' (ignori usklecon) per: :set ic 3. Nun seru 'ignori' denove premante n Rimarku, ke Ignori kaj IGNORI estas nun troveblas. 4. altu la opciojn 'hlsearch' kaj 'incsearch': :set hls is 5. Nun retajpu la seran komandon kaj vidu kio okazas: /ignore 6. Por malalti ignoron de uskleco: :set noic RIMARKO: Por forigi emfazon de kongruo, tajpu: :nohlsearch RIMARKO: Se vi deziras ignori usklecon por nur unu sera komando, uzu \c en la frazo: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 6 RESUMO 1. Tajpu o por malfermi linion SUB la kursoro kaj eki en Enmeta reimo. 1. Tajpu O por malfermi linion SUPER la kursoro. 2. Tajpu a por enmeti tekston POST la kursoro. Tajpu A por enmeti tekston post la fino de la linio. 3. La e komando movas la kursoron al la fino de vorto. 4. la y operatoro kopias tekston, p algluas in. 5. Tajpo de majuskla R eniras la Anstataigan reimon is kiam estas premita. 6. Tajpo de ":set xxx" altas la opcion "xxx". Iuj opcioj estas: 'ic' 'ignorecase' ignori usklecon dum sero 'is' 'incsearch' montru partan kongruon dum sero 'hls' 'hlsearch' emfazas iujn kongruajn frazojn Vi povas uzi a la longan, a la mallongan nomon de opcio. 7. Antaaldonu "no" por malalti la opcion: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 7.1 AKIRI HELPON ** Uzu la helpan sistemon ** Vim havas ampleksan helpan sistemon. Por komencii, provu unu el la tiuj tri: - premu la klavon (se vi havas in) - premu la klavon (se vi havas in) - tajpu :help Legu la tekston en la helpfenestro por trovi kiel helpo funkcias. Tajpu CTRL-W CTRL-W por salti de unu fenestro al la alia. Tajpu :q por fermi la helpan fenestron. Vi povas trovi helpon pri io ajn aldonante argumenton al la komando ":help". Provu tiujn (ne forgesu premi ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 7.2 KREI STARTAN SKRIPTON ** Ebligu kapablojn de Vim ** Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defalte malaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc". 1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo: :e ~/.vimrc por Unikso :e $VIM/_vimrc por MS-Vindozo 2. Nun legu la enhavon de la ekzempla "vimrc" :r $VIMRUNTIME/vimrc_example.vim 3. Konservu la dosieron per: :w La sekvantan fojon, kiam vi lanas Vim, i uzos sintaksan emfazon. Vi povas aldoni iujn viajn preferatajn agordojn al tiu dosiero "vimrc". Por pli da informoj, tajpu :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 7.3 KOMPLETIGO ** Kompletigo de komanda linio per CTRL-D kaj ** 1. Certigu ke Vim estas en kongrua reimo: :set nocp 2. Rigardu tiujn dosierojn, kiuj ekzistas en la dosierujo: :!ls a :!dir 3. Tajpu la komencon de komando: :e 4. Premu CTRL-D kaj Vim montros liston de komandoj, kiuj komencas per "e". 5. Premu kaj Vim kompletigos la nomon de la komando al ":edit". 6. Nun aldonu spaceton kaj la komencon de ekzistanta nomo: :edit DOSI 7. Premu . Vim kompletigos la nomon (se i estas unika) RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj . Estas aparte utila por :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 7 RESUMO 1. Tajpu :help a premu a por malfermi helpan fenestron. 2. Tajpu :help kmd por trovi helpon pri kmd. 3. Tajpu CTRL-W CTRL-W por salti al alia fenestro. 4. Tajpu :q to fermi la helpan fenestron. 5. Kreu komencan skripton vimrc por konservi viajn agordojn. 6. Kiam vi tajpas : komandon, premu CTRL-D por vidi iujn kompleteblojn. Premu por uzi unu kompletigon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tio konkludas la instruilon de Vim. i celis doni mallongan superrigardon de la redaktilo Vim, nur tion kio sufias por ebligi al vi facilan uzon de la redaktilo. Estas nepre nekompleta, ar Vim havas multajn multajn pliajn komandojn. Legu la manlibron: ":help user-manual". Tiu instruilo estis verkita de Michael C. Pierce kaj Robert K. Ware, el la Koloradia Lernejo de Minejoj (Colorado School of Mines) uzante ideojn provizitajn de Charles Smith el la Stata Universitato de Koloradio (Colorado State University) Retpoto: bware@mines.colorado.edu. Modifita por Vim de Bram Moolenaar. Esperantigita fare de Dominique Pell, 2008-04-01 Retpoto: dominique.pelle@gmail.com Lasta ano: 2016-07-02 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!LD߁߁vim80/tutor/tutornu[=============================================================================== = W e l c o m e t o t h e V I M T u t o r - Version 1.7 = =============================================================================== Vim is a very powerful editor that has many commands, too many to explain in a tutor such as this. This tutor is designed to describe enough of the commands that you will be able to easily use Vim as an all-purpose editor. The approximate time required to complete the tutor is 25-30 minutes, depending upon how much time is spent with experimentation. ATTENTION: The commands in the lessons will modify the text. Make a copy of this file to practice on (if you started "vimtutor" this is already a copy). It is important to remember that this tutor is set up to teach by use. That means that you need to execute the commands to learn them properly. If you only read the text, you will forget the commands! Now, make sure that your Caps-Lock key is NOT depressed and press the j key enough times to move the cursor so that Lesson 1.1 completely fills the screen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.1: MOVING THE CURSOR ** To move the cursor, press the h,j,k,l keys as indicated. ** ^ k Hint: The h key is at the left and moves left. < h l > The l key is at the right and moves right. j The j key looks like a down arrow. v 1. Move the cursor around the screen until you are comfortable. 2. Hold down the down key (j) until it repeats. Now you know how to move to the next lesson. 3. Using the down key, move to Lesson 1.2. NOTE: If you are ever unsure about something you typed, press to place you in Normal mode. Then retype the command you wanted. NOTE: The cursor keys should also work. But using hjkl you will be able to move around much faster, once you get used to it. Really! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.2: EXITING VIM !! NOTE: Before executing any of the steps below, read this entire lesson!! 1. Press the key (to make sure you are in Normal mode). 2. Type: :q! . This exits the editor, DISCARDING any changes you have made. 3. Get back here by executing the command that got you into this tutor. That might be: vimtutor 4. If you have these steps memorized and are confident, execute steps 1 through 3 to exit and re-enter the editor. NOTE: :q! discards any changes you made. In a few lessons you will learn how to save the changes to a file. 5. Move the cursor down to Lesson 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.3: TEXT EDITING - DELETION ** Press x to delete the character under the cursor. ** 1. Move the cursor to the line below marked --->. 2. To fix the errors, move the cursor until it is on top of the character to be deleted. 3. Press the x key to delete the unwanted character. 4. Repeat steps 2 through 4 until the sentence is correct. ---> The ccow jumpedd ovverr thhe mooon. 5. Now that the line is correct, go on to Lesson 1.4. NOTE: As you go through this tutor, do not try to memorize, learn by usage. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.4: TEXT EDITING - INSERTION ** Press i to insert text. ** 1. Move the cursor to the first line below marked --->. 2. To make the first line the same as the second, move the cursor on top of the first character AFTER where the text is to be inserted. 3. Press i and type in the necessary additions. 4. As each error is fixed press to return to Normal mode. Repeat steps 2 through 4 to correct the sentence. ---> There is text misng this . ---> There is some text missing from this line. 5. When you are comfortable inserting text move to lesson 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.5: TEXT EDITING - APPENDING ** Press A to append text. ** 1. Move the cursor to the first line below marked --->. It does not matter on what character the cursor is in that line. 2. Press A and type in the necessary additions. 3. As the text has been appended press to return to Normal mode. 4. Move the cursor to the second line marked ---> and repeat steps 2 and 3 to correct this sentence. ---> There is some text missing from th There is some text missing from this line. ---> There is also some text miss There is also some text missing here. 5. When you are comfortable appending text move to lesson 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.6: EDITING A FILE ** Use :wq to save a file and exit. ** !! NOTE: Before executing any of the steps below, read this entire lesson!! 1. Exit this tutor as you did in lesson 1.2: :q! Or, if you have access to another terminal, do the following there. 2. At the shell prompt type this command: vim tutor 'vim' is the command to start the Vim editor, 'tutor' is the name of the file you wish to edit. Use a file that may be changed. 3. Insert and delete text as you learned in the previous lessons. 4. Save the file with changes and exit Vim with: :wq 5. If you have quit vimtutor in step 1 restart the vimtutor and move down to the following summary. 6. After reading the above steps and understanding them: do it. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1 SUMMARY 1. The cursor is moved using either the arrow keys or the hjkl keys. h (left) j (down) k (up) l (right) 2. To start Vim from the shell prompt type: vim FILENAME 3. To exit Vim type: :q! to trash all changes. OR type: :wq to save the changes. 4. To delete the character at the cursor type: x 5. To insert or append text type: i type inserted text insert before the cursor A type appended text append after the line NOTE: Pressing will place you in Normal mode or will cancel an unwanted and partially completed command. Now continue with Lesson 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.1: DELETION COMMANDS ** Type dw to delete a word. ** 1. Press to make sure you are in Normal mode. 2. Move the cursor to the line below marked --->. 3. Move the cursor to the beginning of a word that needs to be deleted. 4. Type dw to make the word disappear. NOTE: The letter d will appear on the last line of the screen as you type it. Vim is waiting for you to type w . If you see another character than d you typed something wrong; press and start over. ---> There are a some words fun that don't belong paper in this sentence. 5. Repeat steps 3 and 4 until the sentence is correct and go to Lesson 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.2: MORE DELETION COMMANDS ** Type d$ to delete to the end of the line. ** 1. Press to make sure you are in Normal mode. 2. Move the cursor to the line below marked --->. 3. Move the cursor to the end of the correct line (AFTER the first . ). 4. Type d$ to delete to the end of the line. ---> Somebody typed the end of this line twice. end of this line twice. 5. Move on to Lesson 2.3 to understand what is happening. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.3: ON OPERATORS AND MOTIONS Many commands that change text are made from an operator and a motion. The format for a delete command with the d delete operator is as follows: d motion Where: d - is the delete operator. motion - is what the operator will operate on (listed below). A short list of motions: w - until the start of the next word, EXCLUDING its first character. e - to the end of the current word, INCLUDING the last character. $ - to the end of the line, INCLUDING the last character. Thus typing de will delete from the cursor to the end of the word. NOTE: Pressing just the motion while in Normal mode without an operator will move the cursor as specified. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.4: USING A COUNT FOR A MOTION ** Typing a number before a motion repeats it that many times. ** 1. Move the cursor to the start of the line marked ---> below. 2. Type 2w to move the cursor two words forward. 3. Type 3e to move the cursor to the end of the third word forward. 4. Type 0 (zero) to move to the start of the line. 5. Repeat steps 2 and 3 with different numbers. ---> This is just a line with words you can move around in. 6. Move on to Lesson 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.5: USING A COUNT TO DELETE MORE ** Typing a number with an operator repeats it that many times. ** In the combination of the delete operator and a motion mentioned above you insert a count before the motion to delete more: d number motion 1. Move the cursor to the first UPPER CASE word in the line marked --->. 2. Type d2w to delete the two UPPER CASE words 3. Repeat steps 1 and 2 with a different count to delete the consecutive UPPER CASE words with one command ---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.6: OPERATING ON LINES ** Type dd to delete a whole line. ** Due to the frequency of whole line deletion, the designers of Vi decided it would be easier to simply type two d's to delete a line. 1. Move the cursor to the second line in the phrase below. 2. Type dd to delete the line. 3. Now move to the fourth line. 4. Type 2dd to delete two lines. ---> 1) Roses are red, ---> 2) Mud is fun, ---> 3) Violets are blue, ---> 4) I have a car, ---> 5) Clocks tell time, ---> 6) Sugar is sweet ---> 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.7: THE UNDO COMMAND ** Press u to undo the last commands, U to fix a whole line. ** 1. Move the cursor to the line below marked ---> and place it on the first error. 2. Type x to delete the first unwanted character. 3. Now type u to undo the last command executed. 4. This time fix all the errors on the line using the x command. 5. Now type a capital U to return the line to its original state. 6. Now type u a few times to undo the U and preceding commands. 7. Now type CTRL-R (keeping CTRL key pressed while hitting R) a few times to redo the commands (undo the undo's). ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. These are very useful commands. Now move on to the Lesson 2 Summary. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2 SUMMARY 1. To delete from the cursor up to the next word type: dw 2. To delete from the cursor to the end of a line type: d$ 3. To delete a whole line type: dd 4. To repeat a motion prepend it with a number: 2w 5. The format for a change command is: operator [number] motion where: operator - is what to do, such as d for delete [number] - is an optional count to repeat the motion motion - moves over the text to operate on, such as w (word), $ (to the end of line), etc. 6. To move to the start of the line use a zero: 0 7. To undo previous actions, type: u (lowercase u) To undo all the changes on a line, type: U (capital U) To undo the undo's, type: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.1: THE PUT COMMAND ** Type p to put previously deleted text after the cursor. ** 1. Move the cursor to the first ---> line below. 2. Type dd to delete the line and store it in a Vim register. 3. Move the cursor to the c) line, ABOVE where the deleted line should go. 4. Type p to put the line below the cursor. 5. Repeat steps 2 through 4 to put all the lines in correct order. ---> d) Can you learn too? ---> b) Violets are blue, ---> c) Intelligence is learned, ---> a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.2: THE REPLACE COMMAND ** Type rx to replace the character at the cursor with x . ** 1. Move the cursor to the first line below marked --->. 2. Move the cursor so that it is on top of the first error. 3. Type r and then the character which should be there. 4. Repeat steps 2 and 3 until the first line is equal to the second one. ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. Now move on to Lesson 3.3. NOTE: Remember that you should be learning by doing, not memorization. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.3: THE CHANGE OPERATOR ** To change until the end of a word, type ce . ** 1. Move the cursor to the first line below marked --->. 2. Place the cursor on the u in lubw. 3. Type ce and the correct word (in this case, type ine ). 4. Press and move to the next character that needs to be changed. 5. Repeat steps 3 and 4 until the first sentence is the same as the second. ---> This lubw has a few wptfd that mrrf changing usf the change operator. ---> This line has a few words that need changing using the change operator. Notice that ce deletes the word and places you in Insert mode. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.4: MORE CHANGES USING c ** The change operator is used with the same motions as delete. ** 1. The change operator works in the same way as delete. The format is: c [number] motion 2. The motions are the same, such as w (word) and $ (end of line). 3. Move to the first line below marked --->. 4. Move the cursor to the first error. 5. Type c$ and type the rest of the line like the second and press . ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. NOTE: You can use the Backspace key to correct mistakes while typing. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3 SUMMARY 1. To put back text that has just been deleted, type p . This puts the deleted text AFTER the cursor (if a line was deleted it will go on the line below the cursor). 2. To replace the character under the cursor, type r and then the character you want to have there. 3. The change operator allows you to change from the cursor to where the motion takes you. eg. Type ce to change from the cursor to the end of the word, c$ to change to the end of a line. 4. The format for change is: c [number] motion Now go on to the next lesson. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.1: CURSOR LOCATION AND FILE STATUS ** Type CTRL-G to show your location in the file and the file status. Type G to move to a line in the file. ** NOTE: Read this entire lesson before executing any of the steps!! 1. Hold down the Ctrl key and press g . We call this CTRL-G. A message will appear at the bottom of the page with the filename and the position in the file. Remember the line number for Step 3. NOTE: You may see the cursor position in the lower right corner of the screen This happens when the 'ruler' option is set (see :help 'ruler' ) 2. Press G to move you to the bottom of the file. Type gg to move you to the start of the file. 3. Type the number of the line you were on and then G . This will return you to the line you were on when you first pressed CTRL-G. 4. If you feel confident to do this, execute steps 1 through 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.2: THE SEARCH COMMAND ** Type / followed by a phrase to search for the phrase. ** 1. In Normal mode type the / character. Notice that it and the cursor appear at the bottom of the screen as with the : command. 2. Now type 'errroor' . This is the word you want to search for. 3. To search for the same phrase again, simply type n . To search for the same phrase in the opposite direction, type N . 4. To search for a phrase in the backward direction, use ? instead of / . 5. To go back to where you came from press CTRL-O (Keep Ctrl down while pressing the letter o). Repeat to go back further. CTRL-I goes forward. ---> "errroor" is not the way to spell error; errroor is an error. NOTE: When the search reaches the end of the file it will continue at the start, unless the 'wrapscan' option has been reset. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.3: MATCHING PARENTHESES SEARCH ** Type % to find a matching ),], or } . ** 1. Place the cursor on any (, [, or { in the line below marked --->. 2. Now type the % character. 3. The cursor will move to the matching parenthesis or bracket. 4. Type % to move the cursor to the other matching bracket. 5. Move the cursor to another (,),[,],{ or } and see what % does. ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) NOTE: This is very useful in debugging a program with unmatched parentheses! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.4: THE SUBSTITUTE COMMAND ** Type :s/old/new/g to substitute 'new' for 'old'. ** 1. Move the cursor to the line below marked --->. 2. Type :s/thee/the . Note that this command only changes the first occurrence of "thee" in the line. 3. Now type :s/thee/the/g . Adding the g flag means to substitute globally in the line, change all occurrences of "thee" in the line. ---> thee best time to see thee flowers is in thee spring. 4. To change every occurrence of a character string between two lines, type :#,#s/old/new/g where #,# are the line numbers of the range of lines where the substitution is to be done. Type :%s/old/new/g to change every occurrence in the whole file. Type :%s/old/new/gc to find every occurrence in the whole file, with a prompt whether to substitute or not. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4 SUMMARY 1. CTRL-G displays your location in the file and the file status. G moves to the end of the file. number G moves to that line number. gg moves to the first line. 2. Typing / followed by a phrase searches FORWARD for the phrase. Typing ? followed by a phrase searches BACKWARD for the phrase. After a search type n to find the next occurrence in the same direction or N to search in the opposite direction. CTRL-O takes you back to older positions, CTRL-I to newer positions. 3. Typing % while the cursor is on a (,),[,],{, or } goes to its match. 4. To substitute new for the first old in a line type :s/old/new To substitute new for all 'old's on a line type :s/old/new/g To substitute phrases between two line #'s type :#,#s/old/new/g To substitute all occurrences in the file type :%s/old/new/g To ask for confirmation each time add 'c' :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.1: HOW TO EXECUTE AN EXTERNAL COMMAND ** Type :! followed by an external command to execute that command. ** 1. Type the familiar command : to set the cursor at the bottom of the screen. This allows you to enter a command-line command. 2. Now type the ! (exclamation point) character. This allows you to execute any external shell command. 3. As an example type ls following the ! and then hit . This will show you a listing of your directory, just as if you were at the shell prompt. Or use :!dir if ls doesn't work. NOTE: It is possible to execute any external command this way, also with arguments. NOTE: All : commands must be finished by hitting From here on we will not always mention it. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.2: MORE ON WRITING FILES ** To save the changes made to the text, type :w FILENAME. ** 1. Type :!dir or :!ls to get a listing of your directory. You already know you must hit after this. 2. Choose a filename that does not exist yet, such as TEST. 3. Now type: :w TEST (where TEST is the filename you chose.) 4. This saves the whole file (the Vim Tutor) under the name TEST. To verify this, type :!dir or :!ls again to see your directory. NOTE: If you were to exit Vim and start it again with vim TEST , the file would be an exact copy of the tutor when you saved it. 5. Now remove the file by typing (MS-DOS): :!del TEST or (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.3: SELECTING TEXT TO WRITE ** To save part of the file, type v motion :w FILENAME ** 1. Move the cursor to this line. 2. Press v and move the cursor to the fifth item below. Notice that the text is highlighted. 3. Press the : character. At the bottom of the screen :'<,'> will appear. 4. Type w TEST , where TEST is a filename that does not exist yet. Verify that you see :'<,'>w TEST before you press . 5. Vim will write the selected lines to the file TEST. Use :!dir or :!ls to see it. Do not remove it yet! We will use it in the next lesson. NOTE: Pressing v starts Visual selection. You can move the cursor around to make the selection bigger or smaller. Then you can use an operator to do something with the text. For example, d deletes the text. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.4: RETRIEVING AND MERGING FILES ** To insert the contents of a file, type :r FILENAME ** 1. Place the cursor just above this line. NOTE: After executing Step 2 you will see text from Lesson 5.3. Then move DOWN to see this lesson again. 2. Now retrieve your TEST file using the command :r TEST where TEST is the name of the file you used. The file you retrieve is placed below the cursor line. 3. To verify that a file was retrieved, cursor back and notice that there are now two copies of Lesson 5.3, the original and the file version. NOTE: You can also read the output of an external command. For example, :r !ls reads the output of the ls command and puts it below the cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5 SUMMARY 1. :!command executes an external command. Some useful examples are: (MS-DOS) (Unix) :!dir :!ls - shows a directory listing. :!del FILENAME :!rm FILENAME - removes file FILENAME. 2. :w FILENAME writes the current Vim file to disk with name FILENAME. 3. v motion :w FILENAME saves the Visually selected lines in file FILENAME. 4. :r FILENAME retrieves disk file FILENAME and puts it below the cursor position. 5. :r !dir reads the output of the dir command and puts it below the cursor position. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.1: THE OPEN COMMAND ** Type o to open a line below the cursor and place you in Insert mode. ** 1. Move the cursor to the line below marked --->. 2. Type the lowercase letter o to open up a line BELOW the cursor and place you in Insert mode. 3. Now type some text and press to exit Insert mode. ---> After typing o the cursor is placed on the open line in Insert mode. 4. To open up a line ABOVE the cursor, simply type a capital O , rather than a lowercase o. Try this on the line below. ---> Open up a line above this by typing O while the cursor is on this line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.2: THE APPEND COMMAND ** Type a to insert text AFTER the cursor. ** 1. Move the cursor to the start of the line below marked --->. 2. Press e until the cursor is on the end of li . 3. Type an a (lowercase) to append text AFTER the cursor. 4. Complete the word like the line below it. Press to exit Insert mode. 5. Use e to move to the next incomplete word and repeat steps 3 and 4. ---> This li will allow you to pract appendi text to a line. ---> This line will allow you to practice appending text to a line. NOTE: a, i and A all go to the same Insert mode, the only difference is where the characters are inserted. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.3: ANOTHER WAY TO REPLACE ** Type a capital R to replace more than one character. ** 1. Move the cursor to the first line below marked --->. Move the cursor to the beginning of the first xxx . 2. Now press R and type the number below it in the second line, so that it replaces the xxx . 3. Press to leave Replace mode. Notice that the rest of the line remains unmodified. 4. Repeat the steps to replace the remaining xxx. ---> Adding 123 to xxx gives you xxx. ---> Adding 123 to 456 gives you 579. NOTE: Replace mode is like Insert mode, but every typed character deletes an existing character. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.4: COPY AND PASTE TEXT ** Use the y operator to copy text and p to paste it ** 1. Go to the line marked with ---> below and place the cursor after "a)". 2. Start Visual mode with v and move the cursor to just before "first". 3. Type y to yank (copy) the highlighted text. 4. Move the cursor to the end of the next line: j$ 5. Type p to put (paste) the text. Then type: a second . 6. Use Visual mode to select " item.", yank it with y , move to the end of the next line with j$ and put the text there with p . ---> a) this is the first item. b) NOTE: you can also use y as an operator; yw yanks one word. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.5: SET OPTION ** Set an option so a search or substitute ignores case ** 1. Search for 'ignore' by entering: /ignore Repeat several times by pressing n . 2. Set the 'ic' (Ignore case) option by entering: :set ic 3. Now search for 'ignore' again by pressing n Notice that Ignore and IGNORE are now also found. 4. Set the 'hlsearch' and 'incsearch' options: :set hls is 5. Now type the search command again and see what happens: /ignore 6. To disable ignoring case enter: :set noic NOTE: To remove the highlighting of matches enter: :nohlsearch NOTE: If you want to ignore case for just one search command, use \c in the phrase: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6 SUMMARY 1. Type o to open a line BELOW the cursor and start Insert mode. Type O to open a line ABOVE the cursor. 2. Type a to insert text AFTER the cursor. Type A to insert text after the end of the line. 3. The e command moves to the end of a word. 4. The y operator yanks (copies) text, p puts (pastes) it. 5. Typing a capital R enters Replace mode until is pressed. 6. Typing ":set xxx" sets the option "xxx". Some options are: 'ic' 'ignorecase' ignore upper/lower case when searching 'is' 'incsearch' show partial matches for a search phrase 'hls' 'hlsearch' highlight all matching phrases You can either use the long or the short option name. 7. Prepend "no" to switch an option off: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 7.1: GETTING HELP ** Use the on-line help system ** Vim has a comprehensive on-line help system. To get started, try one of these three: - press the key (if you have one) - press the key (if you have one) - type :help Read the text in the help window to find out how the help works. Type CTRL-W CTRL-W to jump from one window to another. Type :q to close the help window. You can find help on just about any subject, by giving an argument to the ":help" command. Try these (don't forget pressing ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 7.2: CREATE A STARTUP SCRIPT ** Enable Vim features ** Vim has many more features than Vi, but most of them are disabled by default. To start using more features you have to create a "vimrc" file. 1. Start editing the "vimrc" file. This depends on your system: :e ~/.vimrc for Unix :e $VIM/_vimrc for MS-Windows 2. Now read the example "vimrc" file contents: :r $VIMRUNTIME/vimrc_example.vim 3. Write the file with: :w The next time you start Vim it will use syntax highlighting. You can add all your preferred settings to this "vimrc" file. For more information type :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 7.3: COMPLETION ** Command line completion with CTRL-D and ** 1. Make sure Vim is not in compatible mode: :set nocp 2. Look what files exist in the directory: :!ls or :!dir 3. Type the start of a command: :e 4. Press CTRL-D and Vim will show a list of commands that start with "e". 5. Press and Vim will complete the command name to ":edit". 6. Now add a space and the start of an existing file name: :edit FIL 7. Press . Vim will complete the name (if it is unique). NOTE: Completion works for many commands. Just try pressing CTRL-D and . It is especially useful for :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 7 SUMMARY 1. Type :help or press or to open a help window. 2. Type :help cmd to find help on cmd . 3. Type CTRL-W CTRL-W to jump to another window 4. Type :q to close the help window 5. Create a vimrc startup script to keep your preferred settings. 6. When typing a : command, press CTRL-D to see possible completions. Press to use one completion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This concludes the Vim Tutor. It was intended to give a brief overview of the Vim editor, just enough to allow you to use the editor fairly easily. It is far from complete as Vim has many many more commands. Read the user manual next: ":help user-manual". For further reading and studying, this book is recommended: Vim - Vi Improved - by Steve Oualline Publisher: New Riders The first book completely dedicated to Vim. Especially useful for beginners. There are many examples and pictures. See http://iccf-holland.org/click5.html This book is older and more about Vi than Vim, but also recommended: Learning the Vi Editor - by Linda Lamb Publisher: O'Reilly & Associates Inc. It is a good book to get to know almost anything you want to do with Vi. The sixth edition also includes information on Vim. This tutorial was written by Michael C. Pierce and Robert K. Ware, Colorado School of Mines using ideas supplied by Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Modified for Vim by Bram Moolenaar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!M[vim80/tutor/tutor.ja.eucnu[=============================================================================== = V I M (塼ȥꥢ) - Version 1.7 = =============================================================================== Vim ϡΥ塼ȥꥢˤ¿Υޥɤ ˶ϤʥǥǤΥ塼ȥꥢϡʤ Vim ǽǥ ȤƻȤʤ褦ˤʤΤ˽ʬʥޥɤˤĤ򤹤褦 ˤʤäƤޤ 塼ȥꥢλΤɬפʻ֤ϡФޥɤΤˤɤ ֤ȤΤˤޤ褽2530ʬǤ ATTENTION: ʲѥޥɤˤϤʸϤѹΤ⤢ޤϤ ˥ԡޤ礦("vimtutor"ʤС˥ԡƤޤ) Υ塼ȥꥢ뤬ȤȤdzФȤߤˤʤäƤ뤳Ȥ򡢿 ƤʤФʤޤؽˤϥޥɤºݤ˻ʤ ʤʤΤǤʸϤɤʤСä˺Ƥޤޤ! Capså(Shift-Lock)ƤʤȤǧ塢̤ å1.1 ɽȤޤǡj 򲡤ƥư 礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 1.1: ΰư ** ưˤϡͤ h,j,k,l 򲡤ޤ ** ^ k ҥ: h Ϻ˰ưޤ < h l > l ϱ˰ưޤ j j ϲΤ褦ʥǤ v 1. ư˴ޤǡ꡼ǥưޤ礦 2. ؤΥ(j)򲡤ĤŤȡϢ³ưưǤޤ ǼΥå˰ưˡ狼ޤ͡ 3. ؤΥȤäơå1.2 ˰ưޤ礦 NOTE: 򥿥פƤ뤫Ƚʤʤä顢򲡤ƥΡޥ⡼ɤˤ ޤ줫Ϥ褦ȤƤޥɤϤޤ礦 NOTE: 륭ǤưǤޤ hjkl ˰ٴƤޤСϤ뤫 ®ư뤳ȤǤǤ礦ޥ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 1.2: VIM εưȽλ !! NOTE: ʲΤ륹ƥåפԤˡΥåɤߤޤ礦!! 1. 򲡤ޤ礦(μ¤˥Ρޥ⡼ɤˤ뤿) 2. Τ褦˥: :q! ˤԽƤ¸˥ǥλޤ 3. Υ塼ȥꥢϤ٤Υޥɤ¹Ԥȡޤ Υޥɤ: vimtutor 4. ޤǤΥƥåפФĤʤСƥå 1 3 ޤǤ ݤ˻ơVim 1ٽλƤƤӵưޤ礦 NOTE: :q! Ƥѹ˴ޤåˤѹե ¸ˡˤĤƤٶƤޤ礦 5. 1.3ޤǥưޤ礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 1.3: ƥԽ - ** Ρޥ⡼ɤˤƥβʸˤ x 򲡤ޤ ** 1. ʲ ---> ȼ줿Ԥ˥ưޤ礦 2. ְ㤤뤿ˡǽʸޤǥưޤ 3. ɬפʸ x 򲡤ƺޤ礦 4. ʸʤޤ ƥå 2 4 򷫤֤ޤ礦 ---> ĤĤ Ƥ ȤӤϤͤ 5. Ԥʤä顢å 1.4 ؿʤߤޤ礦 NOTE: ƤΥå̤ơФ褦ȤΤǤϤʤºݤˤäƤߤޤ礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 1.4: ƥԽ - ** Ρޥ⡼ɤˤƥƥȤˤ i 򲡤ޤ ** 1. ʲ ---> ȼ줿ǽιԤ˥ưޤ礦 2. 1ܤ2ܤƱͤˤ뤿ˡƥȤʤФʤʤ μʸ˥ưޤ 3. i 򲡤Ƥ顢ɲäɬפʸ򥿥פޤ礦 4. ְ㤤 򲡤ƥޥɥ⡼ɤꡢʸˤʤ ˥ƥå 2 4 򷫤֤ޤ礦 ---> ˤ ­ʤ ƥ 롣 ---> ˤ Ĥ ­ʤ ƥ 롣 5. ˡ狼äå 1.5 ؿʤߤޤ礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 1.5: ƥԽ - ɲ ** ƥȤɲäˤ A 򲡤ޤ礦 ** 1. ʲ ---> ȼ줿ǽιԤ˥ưޤ礦 뤬ʸˤäƤ⤫ޤޤ 2. ɲäɬפʾ A 򥿥פޤ礦 3. ƥȤɲä顢 򲡤ƥΡޥ⡼ɤޤ礦 4. 2ܤ ---> ȼ줿ذưƥå 2 3 򷫤֤ʸˡ ޤ礦 ---> ˤϴְäƥȤ ˤϴְäƥȤޤ ---> ˤְäƥ ˤְäƥȤޤ 5. ƥȤɲäڲˤʤäƤå 1.6 ؿʤߤޤ礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 1.6: եԽ ** ե¸ƽλˤ :wq ȥפޤ ** !! NOTE: ʲΥƥåפ¹ԤˡޤΤɤǤ!! 1. å 1.2 Ǥä褦 :q! 򥿥פơΥ塼ȥꥢλ ޤ뤤ϡ̤üϤǰʲƤԤäƤ⤫ޤ ޤ 2. ץץȤǤΥޥɤ򥿥פޤ: vim tutor 'vim' Vim ǥư륳ޥɡ'tutor' Խե ̾ǤѹƤ褤եȤޤ礦 3. Υådzؤ褦ˡƥȤޤ 4. ѹե¸ޤ: :wq 5. ƥå 1 vimtutuor λ vimtutor ٵưʲ ؿʤߤޤ礦 6. ʾΥƥåפɤ򤷤Ǥ¹Ԥޤ礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 1 1. ⤷ hjkl ǰưޤ h () j () k () l () 2. Vim ưˤϥץץȤ vim ե̾ ȥפޤ 3. Vim λˤ :q! ȥפޤ(ѹ˴) ⤷ :wq ȥפޤ(ѹ¸) 4. βʸˤϡΡޥ⡼ɤ x ȥפޤ 5. ΰ֤ʸˤϡΡޥ⡼ɤ i ȥפޤ i ƥȤΥ ֤ɲ A ƥȤɲ ɲ NOTE: 򲡤ȥΡޥ⡼ɤ˰ܹԤޤκݡְä ΥޥɤäȤǤޤ ơ³ƥå 2 Ϥޤ礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 2.1: ޥ ** ñޤǤˤ dw ȥפޤ礦 ** 1. Ρޥ⡼ɤǤ뤳Ȥǧ뤿 򲡤ޤ礦 2. ʲ ---> ȼ줿Ԥ˥ưޤ礦 3. äñƬ˥ưޤ礦 4. ñ뤿 dw ȥפޤ礦 NOTE: פȡdw Ȥʸ꡼κDzԤ˸ޤ פְäƤޤäˤ 򲡤Ƥľޤ礦 ---> ʸ ˤ Ĥ Τ ɬפΤʤ ñ ޤޤ ޤ 5. 3 4 ޤǤʸʤޤǷ֤å 2.2 ؿʤߤޤ礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 2.2: ¾κޥ ** ԤޤǤˤ d$ ȥפޤ礦 ** 1. Ρޥ⡼ɤǤ뤳ȤǧΤ 򲡤ޤ礦 2. ʲ ---> ȼ줿Ԥ˥ưޤ礦 3. ʸإưޤ礦(ǽ θǤ) 4. ޤǺΤ d$ ȥפޤ礦 ---> ïιԤκǸ2٥פޤ 2٥פޤ 5. ɤȤ򤹤뤿ˡå 2.3 ؿʤߤޤ礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 2.3: ڥ졼ȥ⡼ ¿Υޥɤϥڥ졼ȥ⡼󤫤ƥȤѹäޤ ޥ d Υڥ졼ϼͤˤʤäƤޤ: d ⡼ 줾: d - ޥɡ ⡼ - ФƯ뤫(ʲ˵󤲤ޤ) ⡼ΰ: w - ֤ޤñޤǡ e - ֤ޤޤʤñޤǡ $ - ֤ޤǡ Ĥޤ de ȥפȡ֤ñνޤǤޤ NOTE: ͤϡΡޥ⡼ɤˤƥޥɤʤ˥⡼򲡤 ߤޤ礦뤬ŪǼ֤˰ưϤǤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 2.4: ⡼˥ȤѤ ** Ԥ֤Υ⡼˿ͤ򥿥פޤ ** 1. ʲ ---> ȼ줿ԤƬ˥ưޤ 2. 2w 򥿥פñ2ʬ˰ưޤ 3. 3e 򥿥פ3ܤñνü˰ưޤ 4. 0 ()򥿥פƹƬ˰ưޤ 5. ƥå 2 3 㤦ͤȤäƷ֤ޤ ---> This is just a line with words you can move around in. 6. å 2.5 ˿ʤߤޤ礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 2.5: ¿뤿˥ȤѤ ** ڥ졼ȥȤ򥿥פȡʣ󷫤֤ޤ ** ҤκΥڥ졼ȥ⡼Ȥ߹碌˥Ȥɲä뤳Ȥǡ ¿κԤޤ: d ⡼ 1. ---> ȼ줿ԤιƬʬ˥ưޤ礦 2. UPPER CASE ñ2Ĥ d2w ȥפƺޤ 3. UPPER CASE ȤϢ³ñ1ĤΥޥɤȰۤʤ륫Ȥꤷ ƥå 1 2 򷫤֤ޤ ---> ABC DEԤFGHI JK LMN OPñQ RS TUVˤʤä NOTE: ڥ졼 d ȥ⡼δ֤˥ȤȤä硢ڥ졼Τʤ Υ⡼Τ褦ưޤ : 3dw d3w Ʊǡ3w ޤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 2.6: Ԥ ** Τˤ dd ȥפޤ ** Τ٤¿ΤǡViΥǥʡϹԤκ d 2󥿥פ ñʤΤ˷ޤ 1. ʲζ2ܤ˥ưޤ 2. dd ȥפƹԤޤ 3. 4ܤ˰ưޤ 4. 2dd ȥפ2Ԥޤ ---> 1) Х֤ ---> 2) ĤޤʤΤϳڤ ---> 3) ߥĤ ---> 4) ϼ֤äƤ롢 ---> 5) פ𤲤롢 ---> 6) ϴŤ ---> 7) ޥʡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 2.7: ľޥ ** ǸΥޥɤäˤ u 򲡤ޤU ϹΤμäǤ ** 1. ʲ ---> ȼ줿Ԥ˥ưǽδְ㤤˥ ưޤ礦 2. x 򥿥פƤʤƬʸޤ礦 3. u 򥿥פƺǸ˼¹Ԥޥɤäޤ礦 4. ٤ϡx ѤƸƽޤ礦 5. ʸ U 򥿥פơԤ򸵤ξ֤ᤷޤ礦 6. u 򥿥פľ U ޥɤäޤ礦 7. ǤϥޥɤƼ¹ԤΤ CTRL-R (CTRL 򲡤ޤ R Ǥ) פƤߤޤ礦(äμ) ---> ΤιԤΤδְ㤤Ǥνäޤޤ 8. ϤȤƤʥޥɤǤå 2 ؿʤߤޤ礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 2 1. ֤ñޤǤˤ dw ȥפޤ 2. ֤ԤޤǤˤ d$ ȥפޤ 3. Τˤ dd ȥפޤ 4. ⡼򷫤֤ˤϿͤͿޤ: 2w 5. ѹѤ륳ޥɤη ڥ졼 [] ⡼ 줾: ڥ졼 - d Dz򤹤뤫 - Υޥɤ򲿲󷫤֤ ⡼ - w (ñ) $ ()ʤɤǡƥȤβФƯ 뤫 6. ԤƬ˰ưˤϥѤޤ: 0 7. ưä: u (ʸ u) Τѹä: U (ʸ U) äμä: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 3.1: Žդޥ ** Ǹ˺줿Ԥ򥫡θŽդˤ p 򥿥פޤ ** 1. ʲκǽιԤ˥ưޤ礦 2. dd ȥפƹԤVim ΥХåե˳Ǽޤ礦 3. Ԥ褢٤֤ξιԤޤǡưޤ礦 4. Ρޥ⡼ɤ p 򥿥פƳǼԤ̤ᤷޤ 5. ֤ʤͤ˥ƥå 2 4 򷫤֤ޤ礦 d) ؤ֤ȤǤ? b) ߥĤ c) ηäȤϳؤ֤Ρ a) Х֤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 3.2: ֤ޥ ** βʸ֤ˤ r 򥿥פޤ ** 1. ʲ ---> ȼ줿ǽιԤ˥ưޤ礦 2. ǽδְ㤤Ƭ˥ưޤ礦 3. r ȥפְäƤʸ֤롢ʸ򥿥פޤ礦 4. ǽιԤʤޤǥƥå 2 3 򷫤֤ޤ礦 ---> ιϤ͡οͤϴĤä򲡤⤷! ---> ιԤϤˡοͤϴĤְä򲡤ޤ! 5. å 3.3 ؿʤߤޤ礦 NOTE: ºݤ˻ޤ礦褷ƳФˤϤʤȡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 3.3: ѹޥ ** ñΰ⤷Τѹˤ cw ȥפޤ ** 1. ʲ ---> ȼ줿ǽιԤ˥ưޤ礦 2. lubw u ΰ֤˥ưޤ礦 3. cw ȥפñ򥿥פޤ礦(ξ 'ine' ȥ) 4. δְ㤤(ѹ٤ʸƬ)˰ư뤿 򥿥פޤ 5. ǽιԤιԤͤˤʤޤǥƥå 3 4 򷫤֤ޤ ---> This lubw has a few wptfd that mrrf changing usf the change operator. ---> This line has a few words that need changing using the change operator. cw ñѹǤʤԤ뤳Ȥդޤ礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 3.4: c Ѥ¾ѹ ** ѹޥɤϡޥɤƱͤ˥֥ȤѤޤ ** 1. ѹޥɤϡޥɤƱ褦ư򤷤ޤη c [] ⡼ 2. ֥ȤƱǡw ñ졢 $ ϹʤɤȤäΤǤ 3. ʲ ---> ȼ줿Ԥ˥ưޤ礦 4. ǽδְ㤤إưޤ礦 5. c$ ȥפƹԤλĤ򣲹ܤͤˤ 򲡤ޤ礦 ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. NOTE: δְ㤤ϥХåڡȤäľȤǤޤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 3 1. ˺줿ƥȤ֤ˤϡp 򥿥פޤϺ 줿ƥȤ򥫡θޤ(ñ̤Ǻ줿ΤʤС Τ뼡ιԤޤ) 2. βʸ֤ˤϡr 򥿥פ塢֤ ʸ򥿥פޤ 3. ѹޥɤǤϥ֤Υ⡼ǻꤵ뽪üޤǤ 뤳ȤǽǤ㤨 cw ʤХ֤ñνޤǡ c$ ʤйԤνޤǤѹޤ 4. ѹޥɤη c [] ⡼ Υåؿʤߤޤ礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 4.1: ֤ȥեξ ** եǤΰ֤ȥեξ֤ɽˤ CTRL-G 򥿥פޤ եΤԤ˰ưˤ G 򥿥פޤ ** NOTE: ƥåפ¹ԤˡΥåƤܤ̤ޤ礦!! 1. CTRL 򲡤ޤ g 򲡤ޤ礦 CTRL-G ȸƤǤޤ ڡΰֲ˥ե̾ȹֹ椬ɽϤǤ ƥå 3Τ ˹ֹФƤޤ礦 NOTE: ̤α˥ΰ֤ɽƤ뤫⤷ޤ󡣤 'ruler' ץ(:help 'ruler' 򻲾)ꤹ뤳Ȥɽޤ 2. DzԤ˰ư뤿 G 򥿥פޤ礦 եƬ˰ưˤ gg ȥפޤ礦 3. ۤɤιԤֹ򥿥פ G 򥿥פޤ礦ǽ CTRL-G 򲡤 äϤǤ 4. Ƥ饹ƥå 1 3 ¹Ԥޤ礦 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 4.2: ޥ ** 򸡺ˤ / ȡ򥿥פޤ** 1. Ρޥ⡼ɤ / Ȥʸ򥿥פޤֲ̰ : ޥɤ Ʊͤ / 뤳Ȥ˵ŤǤ礦 2. Ǥϡ'errroor' ȥפޤ礦줬ñǤ 3. Ʊ⤦ٸȤ ñ n 򥿥פޤ ˸򸡺Ȥ N 򥿥פޤ 4. ˸򸡺ϡ/ ? ޥɤѤޤ 5. ξˤ CTRL-O (Ctrl 򲡤³ʤ o ʸ)򥿥פ ޤˤϤ򷫤֤ޤCTRL-I Ǥ ---> "errroor" error ȥڥ뤬㤤ޤ; errroor Ϥ error Ǥ NOTE: եνãȡץ 'wrapscan' ꤵƤ ϡեƬ鸡³Ԥޤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 4.3: б̤򸡺 ** б ),] } 򸡺ˤ % 򥿥פޤ ** 1. ---> Ǽ줿Ԥ (,[ { Τɤ줫˥ưޤ礦 2. % ȥפޤ礦 3. б̤˰ưϤǤ 4. ǽγ̤˰ưˤ % ȥפޤ礦 5. ¾ (,),[,],{ } ǥư% 򤷤Ƥ뤫ǧޤ礦 ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) NOTE: εǽϳ̤פƤʤץǥХåΤˤȤƤΩ ޤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 4.4: ְ㤤ѹˡ ** 'old' 'new' ִˤ :s/old/new/g ȥפޤ ** 1. ʲ ---> ȼ줿Ԥ˥ưޤ礦 2. :s/thee/the ȥפޤ礦ΥޥɤϤιԤǺǽ˸ ĤäΤˤԤʤ뤳Ȥ˵Ĥޤ礦 3. Ǥ :s/thee/the/g ȥפޤ礦Τִ뤳Ȥ̣ޤ ѹϤιԤǸĤäƤβսФƹԤʤޤ ---> thee best time to see thee flowers is in thee spring. 4. ʣԤ鸫Ĥʸѹˤ :#,#s/old/new/g #,# ˤ֤ϰϤγϤȽλιֹꤷ :%s/old/new/g եΤǸĤΤФѹ롣 :%s/old/new/gc եΤǸĤΤФơ11ijǧȤ ѹ롣 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 4 1. CTRL-G ϥեǤΰ֤ȥեξܺ٤ɽޤ G ϥեκDzԤ˰ưޤ G ϤιԤ˰ưޤ gg ƬԤ˰ưޤ 2. / θ˸򥿥פ˸򸡺ޤ ? θ˸򥿥פȸ˸򸡺ޤ θ n ƱμθN ϵθ򤷤ޤ CTRL-O Ͼ˰ܤCTRL-I Ͼ򼡤˰ưޤ 3. (,),[,],{, ⤷ } ˥뤬֤ % 򥿥פФˤʤʸ ذưޤ 4. ߹Ԥκǽ old new ִ롣 :s/old/new ߹ԤƤ old new ִ롣 :s/old/new/g 2Ĥ # ֤Ǹִ롣 :#,#s/old/new/g եƤθִ롣 :%s/old/new/g 'c' äִ٤˳ǧ롣 :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 5.1: ޥɤ¹Ԥˡ ** :! θ˼¹Ԥ볰ޥɤ򥿥פޤ ** 1. ̤κDz˥뤬ư褦Ƥ : 򥿥פޤ礦 ǥޥɤפǤͤˤʤޤ 2. ! Ȥʸ(ò)򥿥פޤ礦 dz륳ޥɤ¹ԤǤͤˤʤޤ 3. Ȥ ! ³ ls ȥפ 򲡤ޤ礦 ץץȤΤ褦˥ǥ쥯ȥΰɽϤǤ ⤷ ls ưʤʤ :!dir Ѥޤ礦 NOTE: ˡˤäƤ륳ޥɤ¹Ԥ뤳ȤǤޤ Ϳޤ NOTE: Ƥ : ޥɤ 򲡤ƽλʤФʤޤ ʹߤǤϤΤȤ˸ڤޤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 5.2: ¾Υեؽ񤭹 ** եѹ¸ˤ :w ե̾ ȥפޤ ** 1. ǥ쥯ȥΰ뤿 :!dir ⤷ :!ls ȥפޤ礦 Τ 򲡤Τϴˤ¸ΤǤ͡ 2. TEST Τ褦ˡΥǥ쥯ȥ̵ե̾Ӥޤ 3. Ǥ :w TEST ȥפޤ礦 (TEST ϡե̾Ǥ) 4. ˤեΤ TEST Ȥ̾¸ޤ ⤦ :!dir ⤷ :!ls ȥפƳǧƤߤޤ礦 NOTE: Vim λե̾ TEST ȶ˵ưȡ¸ 塼ȥꥢʣǤ夬ϤǤ 5. ˡΤ褦˥פƥեäޤ礦(MS-DOS): :!del TEST ⤷(Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 5.3: 򤷤񤭹 ** եΰ֤¸ˤϡv ⡼ :w FILENAME 򥿥פޤ ** 1. ιԤ˥ưޤ 2. v 򲡤ʲ5ܤ˥ưޤƥȤĴɽ ܤƲ 3. ʸ : 򲡤ȡ̤κDz :'<,'> ޤ 4. w TEST (TEST ¸ߤʤե̾)򥿥פޤ 򲡤 :'<,'>w TEST ȤʤäƤ뤳ȤǧƲ 5. Vim TEST Ȥե򤵤줿Ԥ񤭹Ǥ礦 !dir ⤷ !ls Ǥǧޤ ϺʤǤƲΥåǻѤޤ NOTE: v 򲡤ȡVisual 򤬻ϤޤޤưȤǡϰϤ 礭⾮ǤޤˡϰϤФƥڥ졼Ŭ ޤ㤨 d ϥƥȤޤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 5.4: եμȹʻ ** եȤˤ :r ե̾ ȥפޤ ** 1. ʲιԤ˹碌ޤ NOTE: ƥå 2 μ¹Ը塢å 5.3 ΥƥȤޤ˲äƤ Υå˰ưޤ礦 2. Ǥ TEST Ȥե :r TEST Ȥޥɤɤ߹ߤޤ礦 Ǥ TEST ϻȤե̾ΤȤǤ ɤ߹ޤ줿եϡԤβˤޤ 3. եǧƤߤޤ礦᤹ȡå5.3 ꥸʥȥեˤΤ2Ĥ뤳Ȥ狼ޤ NOTE: ޥɤνϤɤ߹ळȤޤ㤨С :r !ls ls ޥɤνϤ򥫡ʲɤ߹ߤޤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 5 1. :!command ˤä ޥɤ¹Ԥޤ 褯Ȥ: (MS-DOS) (Unix) :!dir :!ls - ǥ쥯ȥΰ򸫤롣 :!del FILENAME :!rm FILENAME - ե롣 2. :w ե̾ ˤäƥե̾Ȥե뤬ǥ˽񤭹ޤ롣 3. v ⡼ :w FILENAME Ȥȡӥ奢Ԥե¸ 롣 4. :r ե̾ ˤե̾Ȥե뤬ǥޤ졢 ֤β롣 5. :r !dir dir ޥɤνϤ򥫡ְʲɤ߹ࡣ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 6.1: ץ󥳥ޥ ** o 򥿥פȡβιԤ⡼ɤޤ ** 1. ʲ ---> ȼ줿Ԥ˥ưޤ礦 2. o (ʸ) 򥿥פơβιԤ򳫤⡼ɤޤ 3. ⡼ɤλ٤ 򥿥פޤ ---> o 򥿥פȥϳԤذư⡼ɤޤ 4. ξιԤˤϡʸ o ǤϤʤñʸ O 򥿥פޤιԤǻƤߤޤ礦 ---> ιԤξˤϡιԤإ֤ O 򥿥פޤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 6.2: ɲåޥ ** μΰ֤ƥȤɲäˤ a ȥפޤ ** 1. ---> Ǽ줿Ԥذưޤ礦 2. e 򲡤 li νüޤǥưޤ 3. θ˥ƥȤɲä뤿 a (ʸ) 򥿥פޤ 4. βιԤΤ褦ñ˴ޤ⡼ɤȴ٤ ޤ 5. e ȤäƼԴñذưƥå 3 4 򷫤֤ޤ ---> This li will allow you to pract appendi text to a line. ---> This line will allow you to practice appending text to a line. NOTE: a, i A Ʊ⡼ɤذܤޤʸ֤ۤʤ ޤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 6.3: ¾ִˡ ** 1ʸʾ֤ˤʸ R ȥפޤ礦 ** 1. ʲ ---> ȼ줿Ԥ˥ưޤǽ xxx Ƭ˰ư ޤ 2. R 򲡤ơ2ܤοͤ򥿥פ뤳Ȥǡxxx ִޤ 3. ִ⡼ɤȴˤ 򲡤ޤԤλĤ꤬ѹƤʤޤޤ ʤ뤳ȤդƤ 4. Ĥä xxx 򥹥ƥåפ򷫤ִ֤ޤ礦 ---> Adding 123 to xxx gives you xxx. ---> Adding 123 to 456 gives you 579. NOTE: ִ⡼ɤ⡼ɤ˻ƤޤƤΥפ줿ʸϴ¸ʸ ޤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 6.4: ƥȤΥԡȥڡ ** ƥȤΥԡˤϥڥ졼 y 򡢥ڡȤˤ p Ȥޤ ** 1. ---> ȼ줿Ԥذư "a)" θ֤Ƥޤ 2. v ǥӥ奢⡼ɤ򳫻Ϥ"first" μޤǥưޤ 3. y 򥿥פƶĴɽ줿ƥȤ yank (ԡ)ޤ 4. ιԤιޤǥưޤ: j$ 5. p 򲡤Žդ(put)Ƥ顢򥿥פޤ: a second 6. ӥ奢⡼ɤ " item." 򤷡y ǥ󥯡ιԤιޤ j$ ư p ǥƥȤ򤽤 put ޤ ---> a) this is the first item. b) NOTE: ñ1 yank Τ y 򥪥ڥ졼Ȥ yw Ȥ뤳Ȥޤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 6.5: ץ ** ִκݤʸ/ʸ̵뤹ˤϡץꤷޤ ** 1. ͤϤ 'ignore' 򸡺ޤ礦: /ignore n 򲡤Ʋ٤򷫤֤ޤ 2. ͤϤ 'ic' (Ignore Case ά) ץꤷޤ: :set ic 3. Ǥ n ˤäƤ⤦1 'ignore' 򸡺ޤ n 򲡤Ƥ˿󸡺򷫤֤ޤ礦 4. 'hlsearch' 'incsearch' ץꤷޤ礦: :set hls is 5. ޥɤϤơ뤫Ƥߤޤ礦: /ignore 6. ʸʸζ̵̤ˤˤϼͤϤޤ: :set noic NOTE: ޥåζĴɽˤϼͤϤޤ: :nohlsearch NOTE: 1Ĥθޥɤʸʸζ̤᤿ʤСե졼 \c Ѥޤ: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 6 1. o 򥿥פȥβιԤ򳫤ơ⡼ɤˤʤ롣 O (ʸ) 򥿥פȥξιԤ⡼ɤˤʤ롣 2. ʸμƥȤɲäˤ a ȥפ롣 ˼ưǥƥȤˤʸ A 򥿥פ롣 3. e ޥɤñνüư롣 4. y ڥ졼ϥƥȤ yank (ԡ)p Ϥ put (ڡ)롣 5. ʸ R 򥿥פִ⡼ɤꡢ򲡤ȴ롣 6. ":set xxx" ȥפȥץ "xxx" ꤵ롣 'ic' 'ignorecase' ʸʸζ̤ʤ 'is' 'incsearch' ե졼ʬޥåƤʬɽ 'hls' 'hlsearch' ޥå뤹٤Ĵɽ ĹûɤΥץ̾ǤѤǤޤ 7. "no" Ϳץ̵ˤޤ: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 7.1: 饤إץޥ ** 饤إפѤޤ礦 ** Vim ˤϹϤˤ錄륪饤إץƥबޤ إפ򳫻Ϥˤϡ3ĤΤɤ줫1ĤƤߤޤ礦: - إץ 򲡤(⤷ʤ) - 򲡤(⤷ʤ) - :help ȥפ롣 إץɥΥƥȤɤȡإפưǤޤ CTRL-W CTRL-W ȥפ إץɥإפޤ :q ȥפ إץɥĤޤ ":help" ޥɤ˰Ϳ뤳Ȥˤꡢ̾Υإפ򸫤Ĥ뤳 ǤޤƤߤޤ礦( 򥿥פ˺ʤ褦): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 7.2: ưץȤκ ** Vim ħȯ ** Vim ˤ Vi ¿ħƧޤƤޤΤۤȤɤϽ֤ˤ ԲĤȤʤäƤޤ¿ħȤϤˤ "vimrc" ե ޤ 1. "vimrc" եԽ򳫻Ϥ롣ϥƥ˰¸ޤ :edit ~/.vimrc UNIX :edit $VIM/_vimrc MS-Windows 2. ǥץ "vimrc" ɤ߹ߤޤ :read $VIMRUNTIME/vimrc_example.vim 3. ʲΤ褦˥եؽ񤭹ߤޤ :write Vim ưȡŤʸȤ褦ˤʤǤ礦 "vimrc" եءߤɲä뤳ȤǤޤ ¿ξˤ :help vimrc-intro ȥפޤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 7.3: 䴰 ** CTRL-D ǥޥɥ饤䴰 ** 1. ߴ⡼ɤǤʤȤǧޤ: :set nocp 2. ߤΥǥ쥯ȥ˺ߤե :!ls :!dir dzǧޤ 3. ޥɤγϤ򥿥פޤ: :e 4. CTRL-D 򲡤 Vim "e" Ϥޤ륳ޥɤΰɽޤ 5. 򲡤 Vim ":edit" Ȥޥ̾䴰ޤ 6. ˶ȡ¸Υե̾λϤޤäޤ: :edit FIL 7. 򲡤 Vim ̾䴰ޤ(⤷Ĥ̵ä) NOTE: 䴰¿Υޥɤưޤ CTRL-D ƤߤƤ ä :help κݤΩޤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ å 7 1. إץɥ򳫤ˤ :help Ȥ뤫 򲡤 2. ޥ(cmd)Υإפ򸡺ˤ :help cmd ȥפ롣 3. ̤Υɥإפˤ CTRL-W CTRL-W ȥפ롣 4. إץɥĤˤ :q ȥפ롣 5. ߤݤĤˤ vimrc ưץȤ롣 6. : command Dzǽ䴰򸫤ˤ CTRL-D 򥿥פ롣 䴰Ѥˤ 򲡤 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ˤ Vim Υ塼ȥꥢ򽪤ޤǥñˡ⽼ʬ ȤȤǤ褦ˤȡVim λijǰΤߤ褦Ȥޤ Vim ˤϤ¿ΥޥɤꡢƤ뤳ȤϤǤޤ ʹߤϥ桼ޥ˥奢򻲾Ȥ: ":help user-manual" ʸγؽΤˡܤޤ Vim - Vi Improved - by Steve Oualline Ǽ: New Riders ǽܤϴ Vim Τ˽񤫤ޤȤ櫓鿴ԤˤϤǤ ¿ǤǺܤƤޤ URL򻲾ȤƲ http://iccf-holland.org/click5.html Vim Vi ˤĤƽ񤫤줿ŤܤǤޤ: Learning the Vi Editor - by Linda Lamb Ǽ: O'Reilly & Associates Inc. Vi ǤꤿȻפȤۤƤΤ뤳ȤǤɽǤ 6ǤǤϡVim ˤĤƤξޤޤƤޤ Υ塼ȥꥢ Colorado State University Charles Smith Υǥ ˡColorado School of Mines Michael C. Pierce Robert K. Ware ξ̾ˤäƽ񤫤ޤ E-mail: bware@mines.colorado.edu. Modified for Vim by Bram Moolenaar. ܸ ٹ ƽ ¼ Ϻ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vi:set ts=8 sts=4 sw=4 tw=78: PK!:x,mmvim80/tutor/tutor.esnu[=============================================================================== = B i e n v e n i d o a l t u t o r d e V I M - Versión 1.4 = =============================================================================== Vim es un editor muy potente que dispone de muchos mandatos, demasiados para ser explicados en un tutor como éste. Este tutor está diseñado para describir suficientes mandatos para que usted sea capaz de aprender fácilmente a usar Vim como un editor de propósito general. El tiempo necesario para completar el tutor es aproximadamente de 25-30 minutos, dependiendo de cuanto tiempo se dedique a la experimentación. Los mandatos de estas lecciones modificarán el texto. Haga una copia de este fichero para practicar (con «vimtutor» esto ya es una copia). Es importante recordar que este tutor está pensado para enseñar con la práctica. Esto significa que es necesario ejecutar los mandatos para aprenderlos adecuadamente. Si únicamente se lee el texto, se olvidarán los mandatos. Ahora, asegúrese de que la tecla de bloqueo de mayúsculas no está activada y pulse la tecla j lo suficiente para mover el cursor de forma que la Lección 1.1 ocupe completamente la pantalla. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 1.1: MOVIMIENTOS DEL CURSOR ** Para mover el cursor, pulse las teclas h,j,k,l de la forma que se indica. ** ^ k Indicación: La tecla h está a la izquierda y mueve a la izquierda. < h l > La tecla l está a la derecha y mueve a la derecha. j La tecla j parece una flecha que apunta hacia abajo. v 1. Mueva el cursor por la pantalla hasta que se sienta cómodo con ello. 2. Mantenga pulsada la tecla j hasta que se repita «automágicamente». ---> Ahora ya sabe como llegar a la lección siguiente. 3. Utilizando la tecla abajo, vaya a la Lección 1.2. Nota: Si alguna vez no está seguro sobre algo que ha tecleado, pulse para situarse en modo Normal. Luego vuelva a teclear la orden que deseaba. Nota: Las teclas de movimiento del cursor también funcionan. Pero usando hjkl podrá moverse mucho más rápido una vez que se acostumbre a ello. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 1.2: ENTRANDO Y SALIENDO DE VIM ¡¡ NOTA: Antes de ejecutar alguno de los pasos siguientes lea primero la lección entera!! 1. Pulse la tecla (para asegurarse de que está en modo Normal). 2. Escriba: :q! ---> Esto provoca la salida del editor SIN guardar ningún cambio que se haya hecho. Si quiere guardar los cambios y salir escriba: :wq 3. Cuando vea el símbolo del sistema, escriba el mandato que le trajo a este tutor. Éste puede haber sido: vimtutor Normalmente se usaría: vim tutor ---> 'vim' significa entrar al editor, 'tutor' es el fichero a editar. 4. Si ha memorizado estos pasos y se se siente con confianza, ejecute los pasos 1 a 3 para salir y volver a entrar al editor. Después mueva el cursor hasta la Lección 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 1.3: EDICIÓN DE TEXTO - BORRADO ** Estando en modo Normal pulse x para borrar el carácter sobre el cursor. **j 1. Mueva el cursor a la línea de abajo señalada con --->. 2. Para corregir los errores, mueva el cursor hasta que esté bajo el carácter que va aser borrado. 3. Pulse la tecla x para borrar el carácter sobrante. 4. Repita los pasos 2 a 4 hasta que la frase sea la correcta. ---> La vvaca saltóó soobree laa luuuuna. 5. Ahora que la línea esta correcta, continúe con la Lección 1.4. NOTA: A medida que vaya avanzando en este tutor no intente memorizar, aprenda practicando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 1.4: EDICIÓN DE TEXTO - INSERCIÓN ** Estando en modo Normal pulse i para insertar texto. ** 1. Mueva el cursor a la primera línea de abajo señalada con --->. 2. Para que la primera línea se igual a la segunda mueva el cursor bajo el primer carácter que sigue al texto que ha de ser insertado. 3. Pulse i y escriba los caracteres a añadir. 4. A medida que sea corregido cada error pulse para volver al modo Normal. Repita los pasos 2 a 4 para corregir la frase. ---> Flta texto en esta . ---> Falta algo de texto en esta línea. 5. Cuando se sienta cómodo insertando texto pase al resumen que esta más abajo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 1 1. El cursor se mueve utilizando las teclas de las flechas o las teclas hjkl. h (izquierda) j (abajo) k (arriba) l (derecha) 2. Para acceder a Vim (desde el símbolo del sistema %) escriba: vim FILENAME 3. Para salir de Vim escriba: :q! para eliminar todos los cambios. 4. Para borrar un carácter sobre el cursor en modo Normal pulse: x 5. Para insertar texto en la posición del cursor estando en modo Normal: pulse i escriba el texto pulse NOTA: Pulsando se vuelve al modo Normal o cancela un mandato no deseado o incompleto. Ahora continúe con la Lección 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 2.1: MANDATOS PARA BORRAR ** Escriba dw para borrar hasta el final de una palabra ** 1. Pulse para asegurarse de que está en el modo Normal. 2. Mueva el cursor a la línea de abajo señalada con --->. 3. Mueva el cursor al comienzo de una palabra que desee borrar. 4. Pulse dw para hacer que la palabra desaparezca. NOTA: Las letras dw aparecerán en la última línea de la pantalla cuando las escriba. Si escribe algo equivocado pulse y comience de nuevo. ---> Hay algunas palabras pásalo bien que no pertenecen papel a esta frase. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 2.2: MÁS MANDATOS PARA BORRAR ** Escriba d$ para borrar hasta el final de la línea. ** 1. Pulse para asegurarse de que está en el modo Normal. 2. Mueva el cursor a la línea de abajo señalada con --->. 3. Mueva el cursor al final de la línea correcta (DESPUÉS del primer . ). 4. Escriba d$ para borrar hasta el final de la línea. ---> Alguien ha escrito el final de esta línea dos veces. esta línea dos veces. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 2.3: SOBRE MANDATOS Y OBJETOS El formato del mandato de borrar d es como sigue: [número] d objeto O d [número] objeto donde: número - es cuántas veces se ha de ejecutar el mandato (opcional, defecto=1). d - es el mandato para borrar. objeto - es sobre lo que el mandato va a operar (lista, abajo). Una lista corta de objetos: w - desde el cursor hasta el final de la palabra, incluyendo el espacio. e - desde el cursor hasta el final de la palabra, SIN incluir el espacio. $ - desde el cursor hasta el final de la línea. NOTE: Para los aventureros, pulsando sólo el objeto estando en modo Normal sin un mandato moverá el cursor como se especifica en la lista de objetos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 2.4: UNA EXCEPCIÓN AL 'MANDATO-OBJETO' ** Escriba dd para borrar una línea entera. ** Debido a la frecuencia con que se borran líneas enteras, los diseñadores de Vim decidieron que sería más fácil el escribir simplemente dos des en una fila para borrar una línea. 1. Mueva el cursor a la segunda línea de la lista de abajo. 2. Escriba dd para borrar la línea. 3. Muévase ahora a la cuarta línea. 4. Escriba 2dd (recuerde número-mandato-objeto) para borrar las dos líneas. 1) Las rosas son rojas, 2) El barro es divertido, 3) El cielo es azul, 4) Yo tengo un coche, 5) Los relojes marcan la hora, 6) El azucar es dulce, 7) Y así eres tu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 2.5: EL MANDATO DESHACER ** Pulse u para deshacer los últimos mandatos, U para deshacer una línea entera. ** 1. Mueva el cursor a la línea de abajo señalada con ---> y sitúelo bajo el primer error. 2. Pulse x para borrar el primer caráter erróneo. 3. Pulse ahora u para deshacer el último mandato ejecutado. 4. Ahora corrija todos los errores de la línea usando el mandato x. 5. Pulse ahora U mayúscula para devolver la línea a su estado original. 6. Pulse ahora u unas pocas veces para deshacer lo hecho por U y los mandatos previos. 7. Ahora pulse CTRL-R (mantenga pulsada la tecla CTRL y pulse R) unas pocas veces para volver a ejecutar los mandatos (deshacer lo deshecho). ---> Corrrija los errores dee esttta línea y vuuelva a ponerlos coon deshacer. 8. Estos mandatos son muy útiles. Ahora pase al resumen de la Lección 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 2 1. Para borrar desde el cursor hasta el final de una palabra pulse: dw 2. Para borrar desde el cursor hasta el final de una línea pulse: d$ 3. Para borrar una línea enter pulse: dd 4. El formato de un mandato en modo Normal es: [número] mandato objeto O mandato [número] objeto donde: número - es cuántas veces se ha de ejecutar el mandato mandato - es lo que hay que hacer, por ejemplo, d para borrar objeto - es sobre lo que el mandato va a operar, por ejemplo w (palabra), $ (hasta el final de la línea), etc. 5. Para deshacer acciones previas pulse: u (u minúscula) Para deshacer todos los cambios de una línea pulse: U (U mayúscula) Para deshacer lo deshecho pulse: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 3.1: EL MANDATO «PUT» (poner) ** Pulse p para poner lo último que ha borrado después del cursor. ** 1. Mueva el cursor al final de la lista de abajo. 2. Escriba dd para borrar la línea y almacenarla en el buffer de Vim. 3. Mueva el cursor a la línea que debe quedar por debajo de la línea a mover. 4. Estando en mod Normal, pulse p para restituir la línea borrada. 5. Repita los pasos 2 a 4 para poner todas las líneas en el orden correcto. d) ¿Puedes aprenderla tu? b) Las violetas son azules, c) La inteligencia se aprende, a) Las rosas son rojas, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 3.2: EL MANDATO «REPLACE» (remplazar) ** Pulse r y un carácter para sustituir el carácter sobre el cursor. ** 1. Mueva el cursor a la primera línea de abajo señalada con --->. 2. Mueva el cursor para situarlo bajo el primer error. 3. Pulse r y el carácter que debe sustituir al erróneo. 4. Repita los pasos 2 y 3 hasta que la primera línea esté corregida. ---> ¡Cuendo esta línea fue rscrita alguien pulso algunas teclas equibocadas! ---> ¡Cuando esta línea fue escrita alguien pulsó algunas teclas equivocadas! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 3.3: EL MANDATO «CHANGE» (cambiar) ** Para cambiar parte de una palabra o toda ella escriba cw . ** 1. Mueva el cursor a la primera línea de abajo señalada con --->. 2. Sitúe el cursor en la u de lubrs. 3. Escriba cw y corrija la palabra (en este caso, escriba 'ínea'). 4. Pulse y mueva el cursor al error siguiente (el primer carácter que deba cambiarse). 5. Repita los pasos 3 y 4 hasta que la primera frase sea igual a la segunda. ---> Esta lubrs tiene unas pocas pskavtad que corregir usem el mandato change. ---> Esta línea tiene unas pocas palabras que corregir usando el mandato change. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 3.4: MÁS CAMBIOS USANDO c ** El mandato change se utiliza con los mismos objetos que delete. ** 1. El mandato change funciona de la misma forma que delete. El formato es: [número] c objeto O c [número] objeto 2. Los objetos son tambiém los mismos, tales como w (palabra), $ (fin de la línea), etc. 3. Mueva el cursor a la primera línea de abajo señalada con --->. 4. Mueva el cursor al primer error. 5. Escriba c$ para hacer que el resto de la línea sea como la segunda y pulse . ---> El final de esta línea necesita alguna ayuda para que sea como la segunda. ---> El final de esta línea necesita ser corregido usando el mandato c$. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 3 1. Para sustituir texto que ha sido borrado, pulse p . Esto Pone el texto borrado DESPUÉS del cursor (si lo que se ha borrado es una línea se situará sobre la línea que está sobre el cursor). 2. Para sustituir el carácter bajo el cursor, pulse r y luego el carácter que sustituirá al original. 3. El mandato change le permite cambiar el objeto especificado desde la posición del cursor hasta el final del objeto; e.g. Pulse cw para cambiar desde el cursor hasta el final de la palabra, c$ para cambiar hasta el final de la línea. 4. El formato para change es: [número] c objeto O c [número] objeto Pase ahora a la lección siguiente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 4.1: SITUACIÓN EN EL FICHERO Y SU ESTADO ** Pulse CTRL-g para mostrar su situación en el fichero y su estado. Pulse MAYU-G para moverse a una determinada línea del fichero. ** Nota: ¡¡Lea esta lección entera antes de ejecutar alguno de los pasos!! 1. Mantenga pulsada la tecla Ctrl y pulse g . Aparece una línea de estado al final de la pantalla con el nombre del fichero y la línea en la que está situado. Recuerde el número de la línea para el Paso 3. 2. Pulse Mayu-G para ir al final del fichero. 3. Escriba el número de la línea en la que estaba y despúes Mayu-G. Esto le volverá a la línea en la que estaba cuando pulsó Ctrl-g. (Cuando escriba los números NO se mostrarán en la pantalla). 4. Si se siente confiado en poder hacer esto ejecute los pasos 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 4.2: EL MANDATO «SEARCH» (buscar) ** Escriba / seguido de una frase para buscar la frase. ** 1. En modo Normal pulse el carácter / . Fíjese que tanto el carácter / como el cursor aparecen en la última línea de la pantalla, lo mismo que el mandato : . 2. Escriba ahora errroor . Esta es la palabra que quiere buscar. 3. Para repetir la búsqueda, simplemente pulse n . Para busacar la misma frase en la dirección opuesta, pulse Mayu-N . 4. Si quiere buscar una frase en la dirección opuesta (hacia arriba), utilice el mandato ? en lugar de / . ---> Cuando la búsqueda alcanza el final del fichero continuará desde el principio. «errroor» no es la forma de deletrear error; errroor es un error. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 4.3: BÚSQUEDA PARA COMPROBAR PARÉNTESIS ** Pulse % para encontrar el paréntesis correspondiente a ),] o } . ** 1. Sitúe el cursor en cualquiera de los caracteres ), ] o } en la línea de abajo señalada con --->. 2. Pulse ahora el carácter % . 3. El cursor debería situarse en el paréntesis (, corchete [ o llave { correspondiente. 4. Pulse % para mover de nuevo el cursor al paréntesis, corchete o llave correspondiente. ---> Esto ( es una línea de prueba con (, [, ], {, y } en ella. )). Nota: ¡Esto es muy útil en la detección de errores en un programa con paréntesis, corchetes o llaves disparejos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 4.4: UNA FORMA DE CAMBIAR ERRORES ** Escriba :s/viejo/nuevo/g para sustituir 'viejo' por 'nuevo'. ** 1. Mueva el cursor a la línea de abajo señalada con --->. 2. Escriba :s/laas/las/ . Tenga en cuenta que este mandato cambia sólo la primera aparición en la línea de la expresión a cambiar. ---> Laas mejores épocas para ver laas flores son laas primaveras. 4. Para cambiar todas las apariciones de una expresión ente dos líneas escriba :#,#s/viejo/nuevo/g donde #,# son los números de las dos líneas. Escriba :%s/viejo/nuevo/g para hacer los cambios en todo el fichero. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 4 1. Ctrl-g muestra la posición del cursor en el fichero y su estado. Mayu-G mueve el cursor al final del fichero. Un número de línea seguido de Mayu-G mueve el cursor a la línea con ese número. 2. Pulsando / seguido de una frase busca la frase hacia ADELANTE. Pulsando ? seguido de una frase busca la frase hacia ATRÁS. Después de una búsqueda pulse n para encontrar la aparición siguiente en la misma dirección. 3. Pulsando % cuando el cursor esta sobre (,), [,], { o } localiza la pareja correspondiente. 4. Para cambiar viejo por nuevo en una línea pulse :s/viejo/nuevo Para cambiar todos los viejo por nuevo en una línea pulse :s/viejo/nuevo/g Para cambiar frases entre dos números de líneas pulse :#,#s/viejo/nuevo/g Para cambiar viejo por nuevo en todo el fichero pulse :%s/viejo/nuevo/g Para pedir confirmación en cada caso añada 'c' :%s/viejo/nuevo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 5.1: CÓMO EJECUTAR UN MANDATO EXTERNO ** Escriba :! seguido de un mandato externo para ejecutar ese mandato. ** 1. Escriba el conocido mandato : para situar el cursor al final de la pantalla. Esto le permitirá introducir un mandato. 2. Ahora escriba el carácter ! (signo de admiración). Esto le permitirá ejecutar cualquier mandato del sistema. 3. Como ejemplo escriba ls después del ! y luego pulse . Esto le mostrará una lista de su directorio, igual que si estuviera en el símbolo del sistema. Si ls no funciona utilice !:dir . --->Nota: De esta manera es posible ejecutar cualquier mandato externo. --->Nota: Todos los mandatos : deben finalizarse pulsando . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 5.2: MÁS SOBRE GUARDAR FICHEROS ** Para guardar los cambios hechos en un fichero, escriba :w NOMBRE_DE_FICHERO. ** 1. Escriba :!dir o :!ls para ver una lista de su directorio. Ya sabe que debe pulsar después de ello. 2. Elija un nombre de fichero que todavía no exista, como TEST. 3. Ahora escriba :w TEST (donde TEST es el nombre de fichero elegido). 4. Esta acción guarda todo el fichero (Vim Tutor) bajo el nombre TEST. Para comprobarlo escriba :!dir de nuevo y vea su directorio. ---> Tenga en cuenta que si sale de Vim y entra de nuevo con el nombre de fichero TEST, el fichero sería una copia exacta del tutor cuando lo ha guardado. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 5.3: UN MANDATO DE ESCRITURA SELECTIVO ** Para guardar parte del fichero escriba :#,# NOMBRE_DEL_FICHERO ** 1. Escriba de nuevo, una vez más, :!dir o :!ls para obtener una lista de su directorio y elija nombre de fichero adecuado, como TEST. 2. Mueva el cursor al principio de la pantalla y pulse Ctrl-g para saber el número de la línea correspondiente. ¡RECUERDE ESTE NÚMERO! 3. Ahora mueva el cursor a la última línea de la pantalla y pulse Ctrl-g de nuevo. ¡RECUERDE TAMBIÉN ESTE NÚMERO! 4. Para guardar SOLAMENTE una parte de un fichero, escriba :#,# w TEST donde #,# son los números que usted ha recordado (primera línea, última línea) y TEST es su nombre de dichero. 5. De nuevo, vea que el fichero esta ahí con :!dir pero NO lo borre. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 5.4: RECUPERANDO Y MEZCLANDO FICHEROS ** Para insertar el contenido de un fichero escriba :r NOMBRE_DEL_FICHERO ** 1. Escriba :!dir para asegurarse de que su fichero TEST del ejercicio anterior está presente. 2. Situe el cursor al principio de esta pantalla. NOTA: Después de ejecutar el paso 3 se verá la Lección 5.3. Luego muévase hacia ABAJO para ver esta lección de nuevo. 3. Ahora recupere el fichero TEST utilizando el mandato :r TEST donde TEST es el nombre del fichero. NOTA: El fichero recuperado se sitúa a partir de la posición del cursor. 4. Para verificar que el fichero ha sido recuperado, mueva el cursor hacia arriba y vea que hay dos copias de la Lección 5.3, la original y la versión del fichero. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 5 1. :!mandato ejecuta un mandato externo. Algunos ejemplos útiles son: :!dir - muestra el contenido de un directorio. :!del NOMBRE_DE_FICHERO - borra el fichero NOMBRE_DE FICHERO. 2. :#,#w NOMBRE_DE _FICHERO guarda desde las líneas # hasta la # en el fichero NOMBRE_DE_FICHERO. 3. :r NOMBRE_DE _FICHERO recupera el fichero del disco NOMBRE_DE FICHERO y lo inserta en el fichero en curso a partir de la posición del cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 6.1: EL MANDATO «OPEN» (abrir) ** Pulse o para abrir una línea debajo del cursor y situarle en modo Insert ** 1. Mueva el cursor a la línea de abajo señalada con --->. 2. Pulse o (minúscula) para abrir una línea por DEBAJO del cursor y situarle en modo Insert. 3. Ahora copie la línea señalada con ---> y pulse para salir del modo Insert. ---> Luego de pulsar o el cursor se sitúa en la línea abierta en modo Insert. 4. Para abrir una línea por encima del cursor, simplemente pulse una O mayúscula, en lugar de una o minúscula. Pruebe este en la línea siguiente. Abra una línea sobre ésta pulsando Mayu-O cuando el curso está en esta línea. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 6.2: EL MANDATO «APPEND» (añadir) ** Pulse a para insertar texto DESPUÉS del cursor. ** 1. Mueva el cursor al final de la primera línea de abajo señalada con ---> pulsando $ en modo Normal. 2. Escriba una a (minúscula) para añadir texto DESPUÉS del carácter que está sobre el cursor. (A mayúscula añade texto al final de la línea). Nota: ¡Esto evita el pulsar i , el último carácter, el texto a insertar, , cursor a la derecha y, finalmente, x , sólo para añadir algo al final de una línea! 3. Complete ahora la primera línea. Nótese que append es exactamente lo mismo que modo Insert, excepto por el lugar donde se inserta el texto. ---> Esta línea le permitirá praticar ---> Esta línea le permitirá praticar el añadido de texto al final de una línea. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 6.3: OTRA VERSIÓN DE «REPLACE» (remplazar) ** Pulse una R mayúscula para sustituir más de un carácter. ** 1. Mueva el cursor a la primera línea de abajo señalada con --->. 2. Sitúe el cursor al comienzo de la primera palabra que sea diferente de las de la segunda línea marcada con ---> (la palabra 'anterior'). 3. Ahora pulse R y sustituya el resto del texto de la primera línea escribiendo sobre el viejo texto para que la primera línea sea igual que la primera. ---> Para hacer que esta línea sea igual que la anterior use las teclas. ---> Para hacer que esta línea sea igual que la siguiente escriba R y el texto. 4. Nótese que cuando pulse para salir, el texto no alterado permanece. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 6.4: FIJAR OPCIONES ** Fijar una opción de forma que una búsqueda o sustitución ignore la caja ** (Para el concepto de caja de una letra, véase la nota al final del fichero) 1. Busque 'ignorar' introduciendo: /ignorar Repita varias veces la búsque pulsando la tecla n 2. Fije la opción 'ic' (Ignorar la caja de la letra) escribiendo: :set ic 3. Ahora busque 'ignorar' de nuevo pulsando n Repita la búsqueda varias veces más pulsando la tecla n 4. Fije las opciones 'hlsearch' y 'insearch': :set hls is 5. Ahora introduzca la orden de búsqueda otra vez, y vea qué pasa: /ignore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 6 1. Pulsando o abre una línea por DEBAJO del cursor y sitúa el cursor en la línea abierta en modo Insert. Pulsando una O mayúscula se abre una línea SOBRE la que está el cursor. 2. Pulse una a para insertar texto DESPUÉS del carácter sobre el cursor. Pulsando una A mayúscula añade automáticamente texto al final de la línea. 3. Pulsando una R mayúscula se entra en modo Replace hasta que, para salir, se pulse . 4. Escribiendo «:set xxx» fija la opción «xxx» ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 7: MANDATOS PARA LA AYUDA EN LÍNEA ** Utilice el sistema de ayuda en línea ** Vim dispone de un sistema de ayuda en línea. Para activarlo, pruebe una de estas tres formas: - pulse la tecla (si dispone de ella) - pulse la tecla (si dispone de ella) - escriba :help Escriba :q para cerrar la ventana de ayuda. Puede encontrar ayuda en casi cualquier tema añadiendo un argumento al mandato «:help» mandato. Pruebe éstos: :help w :help c_ :help insert-index ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aquí concluye el tutor de Vim. Está pensado para dar una visión breve del editor Vim, lo suficiente para permitirle usar el editor de forma bastante sencilla. Está muy lejos de estar completo pues Vim tiene muchísimos más mandatos. Para lecturas y estudios posteriores se recomienda el libro: Learning the Vi Editor - por Linda Lamb Editorial: O'Reilly & Associates Inc. Es un buen libro para llegar a saber casi todo lo que desee hacer con Vi. La sexta edición incluye también información sobre Vim. Este tutorial ha sido escrito por Michael C. Pierce y Robert K. Ware, Colorado School of Mines utilizando ideas suministradas por Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Modificado para Vim por Bram Moolenaar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Traducido del inglés por: Eduardo F. Amatria Correo electrónico: eferna1@platea.pntic.mec.es ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!+3ŊŊvim80/tutor/tutor.sk.utf-8nu[=============================================================================== = V i t a j t e v o V I M T u t o r i a l i - Verzia 1.7 = =============================================================================== Vim je veľmi výkonný editor, ktorý má príliž veľa príkazov na to aby mohli byt všetky popísané vo výuke akou je táto. Táto výuka popisuje dostatočné množstvo príkazov nato aby bolo možné používať Vim ako viacúčelový editor. Približný čas potrebný na prebratie tejto výuky je 25-30 minút, závisí na tom, koľko je stráveného času s preskúšavaním. UPOZORNENIE: Príkazy v lekciách modifikujú text. Vytvor kópiu tohto súboru aby sa mohlo precvičovať na ňom (pri štarte "vimtutor" je toto kópia). Je dôležité zapamätať si, že táto výuka je vytvorená pre výuku používaním. To znamená, že je potrebné si príkazy vyskúšať, aby bolo učenie správne. Ak len čitas text, príkazy zabudneš! Presvedč sa, že Caps-Lock NIEJE stlačený a stlačt klávesu j niekoľko krát, aby sa kurzor posunul natoľko, že lekcia 1.1 celkom zaplní obrazovku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.1: POHYB KURZOROM ** Pre pohyb kurzorum stlač klávesy h,j,k,l ako je znázornené. ** ^ k Funkcia: Klávesa h je naľavo a vykoná pohyb doľava. < h l > Klávesa l je napravo a vykoná pohyb doprava. j Klávesa j vyzerá ako šípka dole v 1. Pohybuj kurzorom po obrazovke, kým si na to nezvykneš. 2. Drž stlačenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. ---> Teraz sa už vieš pohybovať na nasledujúcu lekciu. 3. Použitím klávesy pre pohyb dole prejdi na Lekciu 1.2. Poznámka: Ak si niesi istý tým čo si napísal, stlač na prechod do normálneho módu. Poznámka: Kurzorové klávesy sú tiež funkčné. Ale používaním hjkl sa budeš schopný pohybovať rýchlejšie, keď si zvykneš ich používať. Naozaj! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 1.2: ZATVÁRANIE VIMU !! POZNÁMKA: Pred vykonaním týchto krokov si prečítaj celú túto lekciu !! 1. Stlač klávesu (aby si sa učite nachádzal v normálnom móde) 2. Napíš: :q! . Tým ukončíš prácu s editorom BEZ uloženia zmien, ktoré si vykonal. 3. Keď sa dostaneš na príkazový riadok, napíš príkaz, ktorým sa dostaneš speť do tejto výuky. To môže byť: vimtutor 4. Ak si si tieto kroky spoľahlivo zapamätal, vykonaj kroky 1 až 3, pre ukončenie a znovu spustenie editora. POZNÁMKA: :q! neuloží zmeny, ktoré si vykonal. O niekoľko lekcií sa naučíš ako uložiť zmeny do súboru 5. presuň kurzor dole na lekciu 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.3: EDITÁCIA TEXTU - MAZANIE ** Stlačenie klávesy x v normálnom móde zmaže znak na mieste kurzora. ** 1. Presuň kurzor nižšie na riadok označený značkou --->. 2. Aby si mohol odstrániť chyby, pohybuj kurzorom kým neprejde na znak, ktorý chceš zmazať. 3. Stlač klávesu x aby sa zmazal nechcený znak. 4. Zopakuj kroky 2 až 4 až kým veta nieje správna. ---> Kraava skoočilla ccezz mesiiac. 5. Ak je veta správna, prejdi na lekciu 1.4. POZNÁMKA: Neskúšaj si zapamätať obsah tejto výuky, ale sa uč používaním. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.4: EDITÁCIA TEXTU - VKLADANIE ** Stlačenie klávesy i umožňuje vkladanie textu. ** 1. Presuň kurzor nižšie na prvý riadok za značku --->. 2. Pre upravenie prvého riadku do rovnakého tvaru ako je druhý riadok, presuň kurzor na prvý znak za misto, kde má byť text vložený. 3. Stlač klávesu i a napíš potrebný text. 4. Po opravení každej chyby, stlač pre návrat do normálneho módu. Zopakuj kroky 2 až 4 kým nieje veta správna. ---> Tu je text chýbajúci tejto. ---> Tu je nejaký text chýbajúci od tejto čiary. 5. Keď sa dostatočne naučíš vkladať text, prejdi na nasledujúce zhrnutie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.5: EDITÁCIA TEXTU - PRIDÁVANIE ** Stlačenie klávesy A umožňuje pridávať text. ** 1. Presuň kurozr nižšie na prvý riadok za značkou --->. Nezáleží na tom, na ktorom znaku sa kurzor v tom riadku nachádza. 2. Stlač klávesu A a napíš potrebný text. 3. Po pridaní textu stlač klávesu pre návrat do Normálneho módu. 4. Presuň kurozr na druhý riadok označený ---> a zopakuj kroky 2 a 3 kým nieje veta správna. ---> Tu je nejaký text chýbajúci o Tu je nejaký text chýbajúci od tiaľto. ---> Tu tiež chýba nej Tu tiež chýba nejaký text. 5. Keď sa dostatočne naučíš pridávať text, prejdi na lekciu 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.6: EDITÁCIA SÚBORU ** Napísaním :wq sa súbor uloží a zavrie ** !! POZNÁMKA: Pred vykonaním týchto krokov si prečítaj celú lekciu!! 1. Opusti túto výuku, ako si to urobil v lekcii 1.2: :q! 2. Do príkazového riadku napíš príkaz: vim tutor 'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru, ktorý chceš editovať. Použi taký súbor, ktorý môžeš meniť. 3. Vlož a zmaž text tak, ako si sa naučil v predošlých lekciach. 4. Ulož súbor so zmenami a opusti Vim príkazom: :wq 5. Reštartuj vimtutor a presuň sa dole na nasledujúce zhrnutie. 6. Urob tak po prečítaní predošlých krokov a porozumeniu im. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZHRNUTIE LEKCIE 1 1. Kurzor sa pohybuje použitím kláves so šípkami alebo klávesmi hjkl. h (do lava) j (dole) k (hore) l (doprava) 2. Pre spustenie Vimu (z príkazového riadku) napíš: vim FILENAME 3. Na ukončenie Vimu napíš: :q! pre zrušenie všetkých zmien alebo napíš: :wq pre uloženie zmien. 4. Na zmazanie znaku na mieste kurzora napíš: x 5. Pre vloženie textu na mieste kurzora v normálnom móde napíš: i napíš vkladaný text vkladanie pred kurzor A napíš pridávaný text vkladanie za riadok POZNÁMKA: Stlačenie ťa premiestní do normálneho módu alebo zruší nejaký nechcený a čiastočne dokončený príkaz. Teraz pokračuj lekciou 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.1: Mazacie príkazy ** Napísanie príkazu dw zmaže znaky do konca slova. ** 1. Stlač aby si bol bezpečne v normálnom móde. 2. Presuň kurzor nižšie na riadok označený značkou --->. 3. Presuň kurzor na začiatok slova, ktoré je potrebné zmazať. 4. Napíš dw aby slovo zmizlo. POZNÁMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky keď ho napíšeš. Vim na teba počká, aby si mohol napísať písmeno w. Ak vidíš niečo iné ako d , tak si napísal nesprávny znak; stlač a začni znova. ---> Tu je niekoľko slov zábava, ktoré nie patria list do tejto vety. 5. Zopakuj kroky 3 až 4 kým veta nieje správna a prejdi na lekciu 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.2: VIAC MAZACÍCH PRÍKAZOV ** Napísanie príkazu d$ zmaže znaky do konca riadku ** 1. Stlač aby si bol bezpečne v normálnom móde. 2. Presuň kurzor nižšie na riadok označený značkou --->. 3. Presuň kurzor na koniec správnej vety (ZA prvú bodku). 4. Napíš d$ aby sa zmazali znaky do konca riadku. ---> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát. 5. Prejdi na lekciu 2.3 pre pochopenie toho čo sa stalo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.3: OPERÁTORY A POHYBY Veľa príkazov, ktoré menia text sú odvodené od operátorov a pohybov. Formát pre príkaz mazania klávesou d je nasledovný: d pohyb kde: d - je mazací operátor pohyb - je to čo operátor vykonáva (vypísané nižšie) Krátky list pohybov: w - do začiatku ďalšieho slova, okrem jeho prvého písmena. e - do konca terajšieho slova, vrátane posledného znaku. $ - do konca riadku, vrátane posledného znaku Takže napísaním de sa zmaže všetko od kurzora do konca slova. POZNÁMKA: Stlačením iba pohybu v normálnom móde bez operátora sa presunie kurzor tak ako je to špecivikované. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.4: Použitie viacnásobného pohybu ** Napísaním čísla pred pohyb ho zopakuje zadný počet krát ** 1. Presuň kurozr nižšie na začiatok riadku označeného --->. 2. Napíš 2w a kurozr sa presunie o dve slová vpred. 3. Napíš 3e a kurozr sa presunie vpred na koniec tretieho slova. 4. Napíš 0 (nula) a kurozr sa presunie na začiatok riadku. 5. Zopakuj kroky 2 a 3 s rôznymi číslami. ---> Toto je riadok so slovami po kotrých sa môžete pohybovať. 6. Prejdi na lekciu 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.5: POUŽITIE VIACNÁSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE ** Napísanie čísla spolu s operátorom ho zopakuje zadaný počet krát ** V kombinácii operátorov mazania a pohybu spomínaného vyššie vlož počet pred pohyb pre docielenie hromadného mazania: d číslo pohyb 1. Presuň kurzor na prvé slovo písané VEĽKÝMI PÍSMENAMI v riadku označenom --->. 2. Napíš 2dw a zmažeš dve slová písané VEĽKÝMI PÍSMENAMI 3. Zopakuj kroky 1 a 2 s použitím rôzneho čísla tak aby si zmazal slová písané veľkými písmenami jedným príkazom. ---> Tento ABC DE riadok FGHI JK LMN OP so slovamI je Q RS TUV vycisteny. POZNÁMKA: Číslo medzi operátorom d a pohybom funguje podobne ako pri použití s pohybom bez operátora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.6: OPERÁCIE S RIADKAMI ** Napísanie príkazu dd zmaže celý riadok. ** Vzhľadom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, že bude jednoduchšie mazať celý riadok napísaním dvoch písmen d. 1. Presuň kurzor na druhý riadok v texte na spodu. 2. Napíš dd aby si zmazal riadok. 3. Prejdi na štvrtý riadok. 4. Napíš 2dd aby si zmazal dva riadky. 1) Ruže sú červené, 2) Blato je zábavné, 3) Fialky sú modré, 4) Mám auto, 5) Hodinky ukazujú čas, 6) Cukor je sladký, 7) A to si ty. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.7: PRÍKAZ UNDO ** Stlač u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** 1. Presuň kurzor nižšie na riadok označený značkou ---> a premiestni ho na prvú chybu. 2. Napíš x pre zmazanie prvého nechceného riadku. 3. Teraz napíš u čím vrátíš späť posledne vykonaný príkaz. 4. Teraz oprav všetky chyby na riadku použitím príkazu x . 5. Teraz napíš veľké U čím vrátíš riadok do pôvodného stavu. 6. Teraz napíš u niekoľko krát, čím vrátíš späť príkaz U. 7. Teraz napíš CTRL-R (drž klávesu CTRL stlačenú kým stláčaš R) niekoľko krát, čím vrátíš späť predtým vrátené príkazy (undo z undo). ---> Opprav chybby nna toomto riadku a zmeeň ich pommocou undo. 8. Tieto príkazy sú často používané. Teraz prejdi na zhrnutie lekcie 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 2 ZHRNUTIE 1. Pre zmazanie znakov od kurzora do konca slova napíš: dw 2. Pre zmazanie znakov od kurzora do konca riadku napíš: d$ 3. Pre zmazanie celého riadku napíš: dd 4. Pre zopakovanie pohybu, napíš pred neho číslo: 2w 5. Formát pre píkaz: operátor [číslo] pohyb kde: operátor - čo treba robiť, napríklad d pre zmazanie [číslo] - je voliteľný počet pre opakovanie pohybu pohyb - pohyb po texte vzhľadom na operátor, napríklad w (slovo), $ (do konca riadku), atď. 6. Pre pohyb na začiatok riadku použi nulu: 0 7. Pre vrátenie späť predošlej operácie napíš: u (malé u) Pre vrátenie všetkých úprav na riadku napíš: U (veľké U) Pre vrátenie vrátených úprav napíš: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 3.1: PRÍKAZ VLOŽIŤ ** Napísanie príkazu p vloží psledný výmaz za kurzor. ** 1. Presuň kurzor nižšie na prvý riadok textu. 2. Napíš dd čím zmažeš riadok a uložíš ho do buffera editora Vim. 3. Presuň kurzor vyššie tam, kam zmazaný riadok patrí. 4. Ak napíšeš v normálnom móde p zmazaný riadk sa vloží. 5. Zopakuj kroky 2 až 4, kým riadky niesú v správnom poradí. ---> d) Tiež sa dokážeš vzdelávať? ---> b) Fialky sú modré, ---> c) Inteligencia sa vzdeláva, ---> a) Ruže sú červené, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 3.2: PRÍKAZ NAHRADENIA ** Napísaním rx sa nahradí znak na mieste kurzora znakom x . ** 1. Presuň kurzor nižšie na prví riadok textu označeného značkou --->. 2. Presuň kurzor na začiatok prvej chyby. 3. napíš r a potom znak, ktorý tam má byť. 4. Zopakuj kroky 2 a 3, kým prvý riadok nieje zhodný s druhým. ---> Kaď bol tento riasok píaaný, niekro stlašil nesprábne klávesy! ---> Keď bol tento riadok písaný, niekto stlačil nesprávne klávesy! 5. Teraz prejdi na lekciu 3.2. POZNÁMKA: Pamätaj si, že naučiť sa môžeš len používanim, nie pamätaním. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 3.3. PRÍKAZ ÚPRAVY ** Ak chceš zmeniť časť slova do konca slova, napíš ce . ** 1. Presuň kurzor nižšie na prvý riadok označený značkou --->. 2. Umiestni kurzor na písmeno o v slove rosfpl. 3. Napíš ce a oprav slovo (v tomto prípade napíš 'iadok'.) 4. Stlač a prejdi na ďalší znak, ktorý treba zmeniť. 5. Zopakuj kroky 3 a 4, kým prvá veta nieje rovnaká ako druhá. ---> Tento rosfpl má niekoľko skic, ktoré je pirewvbí zmeniť piyťučán príkazu. ---> Tento riadok má niekoľko slov, ktoré je potrebné zmeniť použitím príkazu. Poznámka, že ce zmaže slovo a nastaví vkladací mód. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 3.4: VIAC ZMIEN POUŽITÍM c ** Príkaz pre úpravy sa používa s rovnakými pohybmi ako pre mazanie ** 1. Príkaz pre úpravy pracuje rovnako ako pre mazanie. Formát je: c [číslo] pohyb 2. Pohyby sú rovnaké, ako napríklad w (slovo) a $ (koniec riadku). 3. Presuň kurzor nižšie na prvý riadok označený značkou --->. 4. Presuň kurzor na prvú chybu. 5. napíš c$ aby si mohol upraviť zvyšok riadku podľa druhého a stlač . ---> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy. ---> Koniec tohto riadku potrebuje opraviť použitím príkazu c$ . POZNÁMKA: Môžeš použiť klávesu backspace na úpravu zmien počas písania. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 3 ZHRNUTIE 1. Na vloženie textu, ktorý už bol zmazaný, napíš p . To vloží zmazaný text ZA kurzor (ak bol riadok zmazaný prejde na riadok pod kurzorom). 2. Pre naradenie znaku na mieste kurzora, napíš r a potom znak, ktorý nahradí pôvodný znak. 3. Príkaz na upravenie umožňuje zmeniť od kurzora až po miesto, ktoré určuje pohyb. napr. Napíš ce čím zmníš text od pozície kurzora do konca slova, c$ zmení text do konca riadku. 4. Formát pre nahradenie je: c [číslo] pohyb Teraz prejdi na nalsedujúcu lekciu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 4.1: POZÍCIA A STATUS SÚBORU ** Stlač CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. Napíš G pre presun na riadok v súbore. ** Poznámka: Prečítaj si celú túto lekciu skôr ako začneš vykonávať kroky!! 1. Drž stlačenú klávesu Ctrl a stlač g . Toto nazývame CTRL-G. Na spodu obrazovky sa zobrazí správa s názvom súboru a pozíciou v súbore. Zapamätajsi si číslo riadku pre použitie v kroku 3. 2. Stlač G čím sa dostaneš na spodok súboru. Napíš gg čím sa dostaneš na začiatok súboru. 3. Napíš číslo riadku na ktorom si sa nachádzal a stlač G. To ťa vráti na riadok, na ktorom si prvý krát stlačil CTRL-G. 4. Ak sa cítíš schopný vykonať teto kroky, vykonaj kroky 1 až 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 4.2: PRÍKAZ VYHĽADÁVANIA ** Napíš / nasledované reťazcom pre vyhľadanie príslušného reťazca. ** 1. Napíš znak / v normálnom móde. Poznámka, že tento znak sa spolu s kurzorom zobrazí v dolnej časti obrazovky s : príkazom. 2. Teraz napíš 'errroor' . To je slovo, ktoré chceš vyhľadať. 3. Pre vyhľadanie ďalšieho výskytu rovnakého reťazca, stlač jednoducho n. Pre vyhľadanie ďalšieho výskytu rovnakého reťazca opačným smerom, N. 4. Ak chceš vyhľadať reťazec v spätnom smere, použí príkaz ? miesto príkazu /. 5. Pre návrat na miesto z ktorého si prišiel stlač CTRL-O (drž stlačenú klávesu Ctrl počas stlačenia klávesy o). Zopakuj pre ďalší návrat späť. CTRL-I ide vpred. POZNÁMKA: "errroor" nieje spôsob hláskovania error; errroor je error. POZNÁMKA: Keď vyhľadávanie dosiahne koniec tohto súboru, bude pokračovať na začiatku, dokiaľ nieje resetované nastavenie 'wrapscan' . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 4.3: VYHĽADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK ** Napíš % pre vyhľadanie príslušného znaku ),], alebo } . ** 1. Premiestni kurzor na hocaký zo znakov (, [, alebo { v riadku nižšie označeného značkou --->. 2. Teraz napíš znak % . 3. Kurzor sa premiestni na zodpovedajúcu zátvorku. 4. Napíš % pre presun kurzoru späť na otvárajúcu zátvorku. 5. Presuň kurzor na iný zo znakov (,),[,],{ alebo } a všimni si čo % vykonáva. ---> Toto ( je testovací riadok s ('s, ['s ] a {'s } v riadku. )) Poznámka: Toto je veľmi výhodné použíť pri ladení programu s chýbajúcimi uzatvárajúcimi zátvorkami! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 4.4: PRÍKAZ NAHRADENIA ** Napíš :s/starý/nový/g pre nahradenie slova 'starý' za slovo 'nový'. ** 1. Presuň kurzor nižšie na riadok označený značkou --->. 2. Napíš :s/thee/the . Poznamka, že tento príkaz zmení len prvý výskyt "thee" v riadku. 3. Teraz napíš :s/thee/the/g čo znamená celkové nahradenie v riadku. Toto nahradí všetky výskyty v riadku. ---> Thee best time to see thee flowers in thee spring. 4. Pre zmenu všetkých výskytov daného reťazca medzi dvomi ridakami, napíš :#,#s/starý/nový/g kde #,# sú čísla dvoch riadkov, v rozsahu ktorých sa nahradenie vykoná. napíš :%s/starý/nový/g pre zmenu všetkých výskytov v celom riadku napíš :%s/starý/nový/gc nájde všetky výskyty v celom súbore, s otázkou či nahradiť alebo nie ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 4 ZHRNUTIE 1. CTRL-g vypíše tvoju pozíciu v súbore a status súboru. G ťa premiestni na koniec riadku. číslo G ťa premiestni na riadok s číslom. gg ťa presunie na prvý riadok 2. Napísanie / nasledované reťazcom vyhľadá reťazec smerom DOPREDU. Napísanie ? nasledované reťazcom vyhľada reťazec smerom DOZADU. Napísanie n po vyhľadávaní, vyhľadá nasledujúci výskyt reťazca v rovnakom smere, pričom N vyhľadá v opačnom smere. CTRL-O ťa vráti späť na staršiu pozíciu, CTRL-I na novšiu pozíciu. 3. Napísanie % keď kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu párnu zátvorku. 4. Pre nahradenie nového za prvý starý v riadku napíš :s/starý/nový Pre nahradenie nového za všetky staré v riadku napíš :s/starý/nový/g Pre nahradenie reťazcov medzi dvoma riadkami 3 napíš :#,#/starý/nový/g Pre nahradenie všetkých výskytov v súbore napíš :%s/starý/nový/g Pre potvrdenie každého nahradenia pridaj 'c' :%s/starý/nový/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 5.1 AKO SPUSTIŤ VONKAJŠÍ PRÍKAZ ** Napíš príkaz :! nasledovaný vonkajším príkazom pre spustenie príkazu ** 1. Napíš obvyklý píkaz : ktorý nastaví kurzor na spodok obrazovky. To umožní napísať príkaz. 2. Teraz napíš ! (výkričník). To umožní spustiť hociaký vonkajší príkaz z príkazového riadku. 3. Ako príklad napíš ls za ! a stlač . Tento príkaz zobrazí obsah tvojho adresára rovnako ako na príkazovom riadku. Alebo použi :!dir ak ls nefunguje. Poznámka: Takto je možné spustiť hociaký vonkajší príkaz s argumentami. Poznámka: Všetky príkazy : musia byť dokončené stlačením ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 5.2: VIAC O UKLADANÍ SÚBOROV ** Pre uloženie zmien v súbore, napíš :w FILENAME. ** 1. Napíš :!dir alebo :!ls pre výpis aktuálneho adresára. Už vieš, že musíš za týmto stlačiť . 2. Vyber názov súboru, ktorý ešte neexistuje, ako napr. TEST. 3. Teraz napíš: :w TEST (kde TEST je názov vybratého súboru.) 4. To uloží celý súbor (Vim Tutor) pod názovm TEST. Pre overenie napíš :!dir , čím zobrazíš obsah adresára. Poznámka: že ak ukončíš prácu s editorom Vim a znovu ho spustíš príkazom vim TEST, súbor bude kópia výuky, keď si ho uložil. 5. Teraz odstráň súbor napísaním (MS-DOS): :!del TEST alebo (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 5.3 VÝBER TEXTU PRE ULOŽENIE ** Pre uloženie časti súboru, napíš v pohyb :w FILENAME ** 1. Presuň kurozr na tento riadok. 2. Stlač v a presuň kurozr na piatu položku dole. Poznámka, že tento text je vyznačený (highlighted). 3. Stlač klávesu : . V spodnej časti okna sa objaví :'<,'>. 4. Napíš w TEST , kde TEST je meno súboru, ktorý zatial neexistuje. Skontroluj, e vidíš :'<,'>w TEST predtým než stlačíš Enter. 5. Vim zapíše označené riadky do súboru TEST. Použi :!dir alebo :!ls pre overenie. Zatial ho ešte nemaž! Použijeme ho v ďalšej lekcii. POZNÁMKA: Stlačením klávesy v sa spustí vizuálne označovanie. Môžeš pohybovať kurzorom pre upresnenie vyznačeného textu. Potom môžeš použiť operátor pre vykonanie nejakej akcie s textom. Napríklad d zmaže vyznačený text. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 5.4: VÝBER A ZLUČOVANIE SÚBOROV ** Pre vloženie obsahu súboru, napíš :r FILENAME ** 1. Premiestni kurzor nad tento riadok. POZNÁMKA: Po vykonaní kroku 2 uvidíš text z lekcie 5.3. Potom sa presuň dole, aby si videl túto lekciu. 3. Teraz vlož súbor TEST použitím príkazu :r TEST kde TEST je názov súboru. Súbor, ktorý si použil je umiestnený pod riadkom s kurzorom. POZNÁMKA: Môžeš tiež načítať výstup vonkajšieho príkazu. Napríklad :r !ls načíta výstup príkazu ls a umiestni ho za pozíciu kurzora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 5 ZHRNUTIE 1. :!príkaz spustí vonkajší príkaz. Niektoré využiteľné príklady sú: (MS_DOS) (UNIX) :!dir :!ls - zobrazí obsah adresára :!del FILENAME :!rm FILENAME - odstráni súbor FILENAME 2. :w FILENAME uloží aktuálny súbor na disk pod menom FILENAME. 3. v pohyb :w FILENAME uloží vizuálne označené riadky do súboru FILENAME. 4. :r FILENAME vyberie z disku súbor FILENAME a vloží ho do aktuálneho súboru za pozíciou kurzora. 5. :r !dir načíta výstup z príkazu dir a vloží ho za pozíciu kurzora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.1: PRÍKAZ OTVORIŤ ** Napíš o pre vloženie riadku pod kurzor a prepnutie do vkladacieho módu ** 1. Presuň kurzor nižšie na riadok označený značkou --->. 2. Napíš o (malé písmeno) pre vloženie čistého riadku pod kurzorm a prepnutie do vkladacieho módu. 3. Teraz skopíruj riadok označený ---> a stlač pre ukončenie vkladacieho módu. ---> Po napísaní o sa kurzor premiestní na vložený riadok do vkladacieho módu. 4. Pre otvorenie riadku nad kurzorom, jednotucho napíš veľké O , namiesto malého o. Vyskúšaj si to na riadku dole. ---> Vlož riadok nad týmto napísaním O, keď kurzor je na tomto riadku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.2: PRÍKAZ PRIDAŤ ** Napíš a pre vloženie textu ZA kurzor. ** 1. Presuň kurzor nižšie na koniec prvého riadku označeného značkou ---> 2. Stlač klávesu e dokiaľ kurozr nieje na konci riadku. 3. Napíš a (malé písmeno) pre pridanie textu ZA kurzorom. 4. Dokončí slovo tak ako je to v druhom riadku. Stlaš pre opustenie vkladacieho módu. 5. Použi e na presun na ďalšie nedokončené slovo a zopakuj kroky 3 a 4. ---> Tento ri ti dovoľuje nácv priávan testu na koniec riadku. ---> Tento riadok ti dovoľuje nácvik pridávania textu na koniec riadku. POZNÁMKA: a, i, A štartujú rovnaký vkladací mód, jediný rozidel je, kde sa znaky vkladajú. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.3: INÝ SPOSOB NAHRADZOVANIA ** Napíš veľké R pre nahradenie viac ako jedného znaku. ** 1. Presuň kurzor nižšie na prvý riadok označený značkou --->. Premiestni kurzor na začiatok prvého výskytu xxx. 2. Teraz napíš R a napíš číslo uvedené v druhom riadku, takže sa ním nahradí pôvodné xxx. 3. Stlač pre opustenie nahradzovacieho módu. Poznámka, že zvyšok riadku zostane nezmenený. 4. Zopakuj tieto kroky pre nahradenie zvyšných xxx. ---> Pridaním 123 ku xxx dostaneš xxx. ---> Pridaním 123 ku 456 dostaneš 579. POZNÁMKA: Nahradzovací mód je ako vkladací mód, ale každý napísaný znak zmaže existujúci znak. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.4: Copy Paste textu ** použí operátor y pre copy textku a p pre jeho paste ** 1. Choď nižšie na riadok označený ---> a umiestni kurozr za "a)". 2. Naštartuj vizuálny mód použitím v a presuň kurozr pred "first". 3. Napíš y pre vystrihnutie (copy) označeného textu. 4. Presuň kurozr na koniec ďalšieho riadku: j$ 5. Napíš p pre vložnie (paste) textu. Potom napíš: a druha . 6. Použi vizuálny mód pre označenie "položka.", vystrihni to použitím y, presuň sa na koniec nasledujúceho riadku použitím j$ a vlož sem text použitím p. ---> a) toto je prvá položka ---> b) POZNÁMKA: Môžeš použiť tiež y ako operátor; yw vystrihne jedno slovo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.5: NASTAVENIE MOŽNOSTÍ ** Nastav možnosti, takže vyhľadávanie alebo nahradzovanie ignoruje rozlišovanie ** 1. Vyhľadaj reťazec 'ignore' napísaním: /ignore Zopakuj vyhľadávanie niekoľko krát stlačením klávesy n . 2. Nastav možnosť 'ic' (Ignore case) napísaním príkazu: :set ic 3. Teraz vyhľadaj reťazec 'ingore' znova stlačením klávesy n Poznámka, že teraz sú vyhľadané aj Ignore a IGNORE. 4. Nastav možnosťi 'hlsearch' a 'incsearch': :set hls is 5. Teraz spusti vyhľadávací príkaz znovu, a pozri čo sa stalo: /ignore 6. Pre opetovné zapnutie rozlyšovania veľkých a malých písmen napíš: :set noic POZNÁMKA: Na odstránenie zvýraznenia výrazov napíš: :nohlsearch POZNÁMKA: Ak chceš nerozlyšovať veľkosť písmen len pre jedno použitie vyhľadávacieho príkazu, použi \c: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 6 ZHRNUTIE 1. Napíš o pre otvorenie riadku pod kurzorom a štart vkladacieho módu. Napíš O pre otvorenie riadku nad kurzorom. 2. Napíš a pre vkladanie textu ZA kurzor. Napíš A pre vkladanie textu za koncom riadku. 3. Príkaz e presunie kurozr na koniec slova 4. Operátor y vystrihne (skopíruje) text, p ho vloží. 5. Napísanie veľkého R prepne do nahradzovacieho módu, kým nieje stlačené . 6. Napísanie ":set xxx" nastaví možnosť "xxx". Niektoré nastavenia sú: 'ic' 'ignorecase' ignoruje veľké a malé písmená počas vyhľadávania. 'is' 'incsearch' zobrazuje čiastočné reťazce vyhľadávaného reťazca. 'hls' 'hlsearch' vyznačí všetky vyhľadávané reťazce. Môžeš použiť hociktorý z dlhých a krátkych názvov možností. 7. Vlož "no" pred nastavenie pre jeho vypnutie: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 7.1: ZÍSKANIE NÁPOVEDY ** Používaj on-line systém nápovedy ** Vim má obsiahly on-line systém nápovedy. Pre odštartovanie, vyskúšaj jeden z týchto troch: - stlač klávesu (ak nejakú máš) - stlač klávesu (ak nejakú máš) - napíš :help Čítaj text v okne nápovedy pre získanie predstavy ako nápoveda funguje. Napíš CTRL-W CTRL-W pre skok z jedného okna do druhého. Napíš :q čím zatvoríš okno nápovedy. Môžeš nájsť help ku hociakej téme pridaním argumentu ku príkazu ":help". Vyskúšaj tieto (nezabudni stlačiť ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 7.2: VYTVORENIE ŠTARTOVACIEHO SKRIPTU ** Zapni funkcie editora Vim ** Vim má omnoho viac funkcii než Vi, ale večšina z nich je implicitne vypnutá. Pre používanie viac Vim funkcii vytvor "vimrc" súbor. 1. Začni editovať "vimrc" súbor, to závisí na použitom systéme: :e ~/.vimrc pre Unix :e $VIM/_vimrc pre MS-Windows 2. Teraz si prečítaj text príkladu "vimrc" súboru: :r $VIMRUNTIME/vimrc_example.vim 3. Ulož súbor: :w Pri nasledujúcom štarte editora Vim sa použije zvýrazňovanie syntaxe. Do "vimrc" súboru môžeš pridať všetky svoje uprednostňované nastavenia. Pre viac informácii napíš :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 7.3 DOKONČENIE ** Dokonči príkaz na príkazovom riadku použitím CTRL-D a ** 1. Uisti sa, že Vim nieje v kompatibilnom móde: :set nocp 2. Pozri sa aké súbory sa nachádzajú v adresári: :!ls alebo :!dir 3. Napíš začiatok príkazu: :e 4. Stlač CTRL-D a Vim zobrazí zoznam príkazov začínajúcich "e". 5. Stlač a Vim dokončí meno príkazu na ":edit". 6. Teraz pridaj medzerník a začiatok mena existujúceho súboru: :edit FIL 7. Stlač . Vim dokončí meno (ak je jedinečné). POZNÁMKA: Dokončovanie funguje pre veľa príkazov. Vyskúšaj stlačenie CTRL-D a . Špeciálne je to užitočné pre príkaz :help. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 7 ZHRNUTIE 1. Napíš :help alebo stlač alebo pre otvorenie okna nápovedy. 2. Napíš :help príkaz pre vyhľadanie nápovedy ku príkazu príkaz. 3. Napíš CTRL-W CTRL-W na preskočenie do iného okna. 4. Napíš :q pre zatvorenie okna nápovedy 5. Vytvor štartovací skript vimrc pre udržanie uprednostňovaných nastavení. 6. Počas písania príkazu : stlač CTRL-D pre zobrazenie dokončení. Stlač pre použitie jedného z dokončení. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Toto vymedzuje výuku Vimu. Toto je určené pre strucný prehľad o editore Vim, úplne postačujúce pre ľahké a obstojné používanie tohto editora. Táto výuka je ďaleko od kompletnosti, pretože Vim má omnoho viacej príkazov. Ako ďalšie si prečítaj užívatľský manuál: ":help user-manual". Pre ďalšie čítanie a štúdium je odporúčaná kniha: Vim - Vi Improved - od Steve Oualline Vydavateľ: New Riders Prvá kniha určená pre Vim. Špeciálne vhodná pre začiatočníkov. Obsahuje množstvo príkladov a obrázkov. Pozri na http://iccf-holland.org/click5.html Táto kniha je staršia a je viac o Vi ako o Vim, ale je tiež odporúčaná: Learning the Vi Editor - od Linda Lamb Vydavateľ: O'Reilly & Associates Inc. Je to dobrá kniha pre získanie vedomostí o práci s editorom Vi. Šieste vydanie obsahuje tiež informácie o editore Vim. Táto výuka bola napísaná autormi Michael C. Pierce a Robert K. Ware, Colorado School of Mines s použitím myšlienok dodanými od Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Modifikované pre Vim od Bram Moolenaar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Preklad do Slovenčiny: Ľuboš Čelko e-mail: celbos@inmail.sk Last Change: 2006 Apr 18 encoding: iso8859-2 PK!W[u[uvim80/tutor/tutor.zh.eucnu[=============================================================================== = ӭ V I M 汾 1.7 = =============================================================================== Vim һкܶĹܷdzǿı༭ƪڱ̵̳ Ͳϸˡ̵̳ĿǽһЩҪĻպ Щܹ׵ؽ Vim һͨñ༭ʹˡ ɱ̵̳ݴԼҪ25-30ӣȡѵʱ䡣 ע⣺ ÿһڵıġƼƱĵһȻڸ ѵ(ͨ"vimtutor"̵̳ģôľѾǸ) мһ㣺̵̳˼·ʹнѧϰġҲ˵Ҫͨ ִѧϰDZȷ÷ֻĶô ܿЩģ ˣȷShift-Lock(Сд)ûа£Ȼ󰴼 ĸ j 㹻ƶֱ꣬һڵܹȫĻ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ һһڣƶ ** Ҫƶ꣬˵ֱ hjkl ** ^ k ʾ h ļλߣÿΰ¾ͻƶ < h l > l ļλұߣÿΰ¾ͻƶ j j һ֧˷µļͷ v 1. Ļƶֱ꣬Ϊֹ 2. м(j)ֱֹظС ---> ӦѾѧƶһɡ 3. ʹмƶһڶڡ ʾȷµĸ밴ص(Normal)ģʽ ȻٴδӼҪ ʾӦҲġʹhjklϰܹ֮ ĻĴƶꡣ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ һڶڣVIMĽ˳ !! رʾĶһڵݣȻִ 1. (Ϊȷģʽ) 2. Ȼ룺 :q! <س> ַʽ˳༭ᶪ༭ĸĶ 3. ʾܹص̵̳Ǿǣ vimtutor <س> 4. ѾμסЩĻӲ1ִе3˳Ȼ ٴν༭ ʾ :q! <س> ᶪκθĶ֮ѧαĶļ 5. Ƶһڡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ һڣı༭֮ɾ ** (Normal)ģʽ£԰ x ɾλõַ** 1. 뽫ƶ ---> һС 2. Ϊ뽫׼ɾַλô 3. Ȼ x ַɾ 4. ظ24ֱΪֹ ---> The ccow jumpedd ovverr thhe mooon. 5. ˣѾˣǵһĽڡ رʾ̳ʱҪǿм䡣סһ㣺ʹѧϰ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ һĽڣı༭֮ ** ģʽ£԰ i ı** 1. 뽫ƶ ---> ĵһС 2. ΪʹõһͬڵڶУ뽫ıһ׼ַ λá 3. Ȼ i Ҫıַ 4. ÿϺ밴 ģʽ ظ24Աӡ ---> There is text misng this . ---> There is some text missing from this line. 5. ıѾ⣬Ķĵһڡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ һڣı༭֮ ** A ı ** 1. ƶ굽һ ---> һС һеĸַϲҪ 2. A Ҫݡ 3. ıϺ󣬰 صģʽ 4. ƶ굽ڶ ---> һСظ2Ͳ3Ըӡ ---> There is some text missing from th There is some text missing from this line. ---> There is also some text miss There is also some text missing here. 5. ıеʱѧϰһڡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ һڣ༭ļ ** ʹ :wq Աļ˳ ** رʾִ²֮ǰȶСڣ 1. ڵһڶ˳̳̣ :q! ߣԷһնˣִ² 2. shell ʾ vim tutor <س> 'vim' Vim ༭'tutor'ϣ༭ļ֡ ʹһԸĶļ 3. ʹǰĽ̳ѧɾı 4. Ķļ˳ VimЩ :wq <س> 5. ڲ1Ѿ˳ vimtutor vimtutor ƶСһڡ 6. Ķϲ裬Ūǵ壬Ȼʵнϰ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ һС 1. ĻıеƶȿüͷҲʹ hjkl ĸ h () j () k () l () 2. Vim ༭(ʾ)룺vim ļ <س> 3. ˳ Vim ༭ :q! <س> иĶ :wq <س> Ķ 4. ģʽɾλõַ밴 x 5. ı룺 i ı ڹǰı A ı һкı رʾ صģʽ߳һ򲿷  ˣһ˽ڶݡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ڶһڣɾ ** dw Դӹ괦ɾһʵĩβ** 1. 밴 ȷģʽ 2. 뽫ƶ ---> һС 3. 뽫׼Ҫɾĵʵʼ 4. dw ɾõʡ رʾʱĸ d ͬʱĻһСVim ڵȴ ĸ wdz d ַDZˣ밴 Ȼ ---> There are a some words fun that don't belong paper in this sentence. 5. ظ3Ͳ4ֱϡżڶڶݡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ڶڶڣɾ ** d$ ӵǰɾĩ** 1. 밴 ȷģʽ 2. 뽫ƶ ---> һС 3. 뽫ƶеβ(Ҳڵһš.) 4. Ȼ d$ ӹ괦ɾǰβ ---> Somebody typed the end of this line twice. end of this line twice. 5. ѧϰڶھ֪ôˡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ڶڣͶ ııһһɡ ʹɾ d ɾĸʽ£ d motion У d - ɾ motion - IJ(г) һ̵Ķб w - ӵǰ굱ǰλֱһʼĵһַ e - ӵǰ굱ǰλֱĩβһַ $ - ӵǰ굱ǰλֱǰĩ de ӵǰλɾĩβ رʾ ̽ߣģʽӦļʹò ƶĶбһ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ڶĽڣʹüָ ** ڶǰֻʹظôΡ ** 1. ƶ굽 ---> һеĿʼ 2. 2w ʹǰƶʡ 3. 3e ʹǰƶʵĩβ 4. 0 () ƶ굽ס 5. ظ2Ͳ3Բͬ֡ ---> This is just a line with words you can move around in. 6. ѧϰڶڡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ڶڣʹüɾ ** ʹòʱֿʹظôΡ ** ѾᵽɾͶϣж֮ǰһ ɾࣺ d number() motion 1. ƶ굽 ---> һеһдĸϡ 2. d2w ɾдĸʡ 3. ظ1Ͳ2ʹòͬʹһɾȫڵĴдĸ ---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ڶڣ ** dd ɾһǰС ** ɾĸƵȣVi ߾ҪɾҪͬһ d Ϳɾڵˡ 1. 뽫ƶĶ̾еĵڶС 2. dd ɾС 3. ȻƶС 4. 2dd ɾС ---> 1) Roses are red, ---> 2) Mud is fun, ---> 3) Violets are blue, ---> 4) I have a car, ---> 5) Clocks tell time, ---> 6) Sugar is sweet ---> 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ڶ߽ڣ ** u ִе U е޸ġ ** 1. 뽫ƶ ---> һУڵһ 2. x ɾһ뱣ĸ 3. Ȼ u ִе(һ) 4. Ҫʹ x ед 5. һд U ָеԭʼ״̬ 6. Ŷ u Գ U Լǰ 7. Ȼ CTRL-R (Ȱ CTRL ſŰ R ) Ҳdz ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. ЩǷdzõǵڶСˡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ڶС 1. ӵǰɾһʣ룺dw 2. ӵǰɾǰĩβ룺d$ 3. ɾУ룺dd 4. ظһǰһ֣2w 5. ģʽ޸ĸʽǣ operator [number] motion У operator - Ҫ飬 d ɾ [number] - Ըӵ֣ظĴ motion - ıϵƶ w (word) $ ĩȵȡ 6. ƶ굽ף밴00 7. ǰIJ룺u (Сдu) һĸĶ룺U (дU) ǰijָǰIJ룺CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ һڣ ** p һɾ֮ ** 1. 뽫ƶһ ---> һС 2. dd ɾὫб浽 Vim һĴС 3. Žƶ c) һУ׼λõϷסϷŶ 4. Ȼģʽ() p ճ롣 5. ظ24еõȷλϡ ---> d) Can you learn too? ---> b) Violets are blue, ---> c) Intelligence is learned, ---> a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ڶڣ滻 ** r һַ滻λõַ** 1. 뽫ƶ ---> ĵһС 2. ƶ굽һλá 3. r Ҫ滻ɵַܽ滻ˡ 4. ظ2Ͳ3ֱһѾ޸ϡ ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. ȻǼѧϰڡ رʾмҪʹѧϰڼѧϰ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ڣ ** Ҫııֱһʵĩβ ce ** 1. 뽫ƶ ---> ĵһС 2. Űѹڵ lubw ĸ u λ 3. Ȼ cw Լȷĵ(ڱ ine ) 4. Ȼ궨λһһ׼ĵĸ 5. ظ3Ͳ4ֱһȫͬڶӡ ---> This lubw has a few wptfd that mrrf changing usf the change operator. ---> This line has a few words that need changing using the change operator. ʾע ce ɾһʣҲģʽˡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ľڣʹcĸ ** ɾʹõͬĶʹá ** 1. Ĺʽɾһµġʽǣ c [number] motion 2. (motion)Ҳһģ w ʣ$ĩȵȡ 3. 뽫ƶ ---> ĵһС 4. Žƶһ󴦡 5. Ȼ c$ ʹøʣµIJָͬڶһ ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ С 1. ҪѾɾıݣ밴Сдĸ p òԽɾ ıڹ֮һɾһУôн ڵǰеһС 2. Ҫ滻λõַСд r Ҫ滻ԭλַ ɡ 3. ıӵǰλֱָʾλмı ce 滻ǰ굽ʵĩβݣ c$ 滻 ǰ굽ĩݡ 4. ĸʽǣ c [number] motion Ǽѧϰһ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ľһڣλļ״̬ ** CTRL-G ʾǰ༭ļеǰλԼļ״̬Ϣ д G ֱתļеijһָС** ʾмҪͨݣ֮ſִ²!!! 1. CTRL ſȻ g dzΪ CTRL-G ῴҳײһ״̬ϢУʾǵǰ༭ļ ļйλáסкţڲ3õ ʾҲϽǿλã 'ruler' ѡʱ (μ :help 'ruler') 2. д G ʹõǰֱתļһС gg ʹõǰֱתļһС 3. ͣкţȻд GͿԷصһΰ CTRL-G ʱڵˡ 4. ûĻִв13IJϰ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ľڶڣ ** / һַڵǰļвҸַ** 1. ģʽ / ַʱע⵽ַ͹궼Ļ : һġ 2. errroor <س>ǸerrroorҪҵַ 3. ҪͬһεַֻҪ n Ҫ෴ͬһε д N ɡ 4. ַʹ ? / С 5. Ҫص֮ǰλð CTRL-O (ס Ctrl ͬʱĸ o)ظ ˸ಽCTRL-I תµλá ---> "errroor" is not the way to spell error; errroor is an error. ʾѾļĩβһԶļͷң 'wrapscan' ѡλ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĽڣŵIJ ** % ԲԵ )]}** 1. ѹڱ --> һеκһ ([ { 2. Ű % ַ 3. ʱλӦԵŴ 4. ٴΰ % ͿԵĵһŴ 5. ƶ굽һ ()[]{ } % 鿴Ϊ ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) ʾڳʱҲԵǺõġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĽĽڣ滻 ** :s/old/new/g 滻 old Ϊ new** 1. 뽫ƶ ---> һС 2. :s/thee/the <س> עֻıеĵһƥ 3. :s/thee/the/g 滻ȫеƥ䴮е "thee" ᱻ ı䡣 ---> thee best time to see thee flowers is in thee spring. 4. Ҫ滻ֵ֮ÿƥ䴮 :#,#s/old/new/g #,# 滻 βекš :%s/old/new/g 滻ļеÿƥ䴮 :%s/old/new/gc ҵļеÿƥ䴮Ҷÿƥ䴮 ʾǷ滻 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĽС 1. CTRL-G ʾǰλúļ״̬Ϣ G ڽתļһС һкȻд G ǽƶкŴС gg ڽתļһС 2. / Ȼһַڵǰ༭ĵҸַ ? Ȼһַڵǰ༭ĵзҸַ һβ֮ n ظһεͬһϲ һƥַڣ߰д N ෴һƥַڡ CTRL-O תؽϾɵλãCTRL-I µλá 3. 굱ǰλ()[]{} % ὫƶԵϡ 4. һ滻ͷһַ old Ϊµַ new :s/old/new һ滻еַ old Ϊµַ new :s/old/new/g 滻еַ old Ϊµַ new :#,#s/old/new/g ļ滻еַ old Ϊµַ new :%s/old/new/g ȫ滻ʱѯûȷÿ滻 c ־ :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 彲һڣ VIM ִⲿķ ** :! Ȼһⲿִиⲿ** 1. Ϥ : ʹƶĻײͿһˡ 2. ̾ ! ִַⲿ shell ˡ 3. ls Ϊ !ls <س> ͻоٳǰĿ¼ ݣͬʾ ls Ľһ !ls û ã :!dir ʾеⲿַʽִУвЩ ʾе :  <س> ӽԺǾͲᵽһ ˡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 彲ڶڣڱļĸϢ ** ҪļĸĶ浽ļУ :w FILENAME ** 1. :!dir :!ls ֪ǰĿ¼ݡӦ֪󻹵 <س> ɡ 2. ѡһδõļ TEST 3. :w TEST (˴ TEST ѡļ) 4. TEST Ϊļļ (Vim ̳)Ϊ֤һ㣬 ٴ :!dir :!ls 鿴Ŀ¼бݡ ע⣺˳ Vim Ȼ vim TEST ٴ Vimôļ Ӧͬʱļȫһġ 5. ɾ TEST ļˡ MS-DOS £룺 :!del TEST Unix £룺 :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 彲ڣһѡԵı ** ҪļIJݣ v motion :w FILENAME ** 1. ƶ굽С 2. Ű v ƶĿϡע⵽֮ıˡ 3. Ȼ : ַĻײ :'<,'> 4. w TEST TEST һδʹõļȷ :'<,'>w TEST ֮ <س> 5. ʱ Vim ѡед뵽 TEST ļȥʹ :!dir :!ls ȷļȷ档ȱɾһлõ ʾ v ʹ Vim ģʽѡȡĴƶʹѡȡ Сʹһѡıв磬 d ɾ ѡеıݡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 彲Ľڣȡͺϲļ ** Ҫǰļвļݣ :r FILENAME ** 1. ѹƶһС رʾִв2֮彲ڵ֣ʱƶ ٴοݡ 2. ͨ :r TEST ǰ洴Ϊ TEST ļȡ ȡļӹλôʼ롣 3. ΪȷļѾȡɹƶصԭλþͿעݵ 彲ڵݣһԭʼݣһļĸ ʾԶȡⲿ磬 :r !ls Զȡ ls ڹ档 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 彲С 1. :!command ִһⲿ command 뿴һЩʵӣ (MS-DOS) (Unix) :!dir :!ls - ʾǰĿ¼ݡ :!del FILENAME :!rm FILENAME - ɾΪ FILENAME ļ 2. :w FILENAME ɽǰ VIM ڱ༭ļ浽Ϊ FILENAME С 3. v motion :w FILENAME ɽǰ༭ļпģʽѡеݱ浽ļ FILENAME С 4. :r FILENAME ȡļ FILENAME 뵽ǰļĹλ 档 5. :r !dir Զȡ dir õǰļĹλú档 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ һڣ ** o ڹ·µһвģʽ** 1. 뽫ƶ ---> һС 2. Сд o ڹ *·* µһУʹ ģʽ 3. ȻһЩ֣֮ ˳ģʽģʽ ---> After typing o the cursor is placed on the open line in Insert mode. 4. Ϊڹ *Ϸ* µһУֻҪд O Сд o Ϳˡвһ°ɡ ---> Open up a line above this by typing O while the cursor is on this line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ڶڣ ** a ڹ֮ı ** 1. ģʽ½ƶ ---> ĵһеס 2. e ֱλ li ĩβ 3. Сд a ڹ֮ıˡ 4. ʲһе֮ ˳ģʽص ģʽ 5. ʹ e ƶ굽һĵʣظ3Ͳ4 ---> This li will allow you to pract appendi text to a line. ---> This line will allow you to practice appending text to a line. ʾai A ģʽΩһַλá ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ڣһûİ汾 ** д R 滻ַ** 1. 뽫ƶ ---> ĵһСƶ굽һ xxx ʼλá 2. Ȼд R ʼѵһеIJͬڵڶеʣַһ룬 ȫ滻ԭеַʹõһȫͬڶˡ 3. Ű ˳滻ģʽصģʽע⵽δ滻ı Ȼԭ״ 4. ظϲ裬ʣ xxx Ҳ滻 ---> Adding 123 to xxx gives you xxx. ---> Adding 123 to 456 gives you 579. ʾ滻ģʽģʽƣÿַɾһеַ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ľڣճı ** ʹò y ıʹ p ճı ** 1. λ ---> һУƶ "a)" ֮ 2. ʹ v ģʽƶ굽 "first" ǰ档 3. y Գ()ı 4. Ȼƶ굽һеĩβj$ 5. p Է(ճ)˵ıȻ룺a second 6. ʹÿģʽѡ " item." y ƣ j$ ƶһĩβ p ıճ ---> a) this is the first item. b) ʾ԰ y ʹã yw һʡ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ڣѡ ** ÿʹһ滻ɺԴСдѡ ** 1. Ҫҵ ignore ģʽ /ignore <س> ҪظҸôʣظ n 2. Ȼ ic ѡ(Ignore CaseԴСд)룺 :set ic 3. ڿͨ n ٴβҵ ignoreע⵽ Ignore IGNORE Ҳҵˡ 4. Ȼ hlsearch incsearch ѡ룺 :set hls is 5. ڿٴʲôЧ /ignore <س> 6. ҪúԴСд룺 :set noic ʾҪƳƥĸʾ룺 :nohlsearch ʾҪһβʱĸСдʹ \c /ignore\c <س> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ С 1. Сд o ڹ·µһвģʽ д O ڹϷµһС 2. Сд a ڹλ֮ı д A ڹеĩ֮ı 3. e ʹƶĩβ 4. y ıp ճǰƵı 5. д R 滻ģʽֱ صģʽ 6. :set xxx xxx ѡһЩõѡ£ 'ic' 'ignorecase' ʱĸСд 'is' 'incsearch' Ҷʱʾƥ 'hls' 'hlsearch' ʾеƥ ѡ汾Ҳ԰汾 7. ѡǰ no Թرѡ :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ߽һڣȡϢ ** ʹ߰ϵͳ ** Vim ӵһϸȫ߰ϵͳҪðϵͳѡַ ֮һ - (еĻ) - (еĻ) - :help <س> Ķе˽ιġ CTRL-W CTRL-W ʹڴ֮ת :q <س> Թرհڡ ṩһȷIJ":help"ҵڸİ ²(ɱ˰سŶ) :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ߽ڶڣű ** Vim ** Vim ĹҪ Vi ö࣬д󲿷ֶûȱʡáΪʹø ԣôһ vimrc ļ 1. ʼ༭ vimrc ļȡʹõIJϵͳ :edit ~/.vimrc Unix ϵͳʹõ :edit $VIM/_vimrc MS-Windows ϵͳʹõ 2. Ŷȡ vimrc ʾļݣ :r $VIMRUNTIME/vimrc_example.vim 3. ļΪ :write ´ Vim ʱ༭ͻ﷨Ĺܡ ԰ϲĸӵ vimrc ļС Ҫ˽Ϣ :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ߽ڣȫ ** ʹ CTRL-D Խвȫ ** 1. ȷ Vim ԼģʽУ :set nocp 2. 鿴һµǰĿ¼ѾЩļ룺 :!ls :!dir 3. һĿ¼ʼ֣룺 :e 4. Ű CTRL-D Vim ʾ e ʼб 5. Ȼ Vim ᲹȫΪ :edit 6. һոԼһļļʼ֣磺 :edit FIL 7. Ű Vim Ჹȫļ(Ωһƥ) ʾȫЧֻ賢԰ CTRL-D :help dzá ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ߽С 1. :help ߰ Դ򿪰ڡ 2. :help cmd ҵ cmd İ 3. CTRL-W CTRL-W ʹڴ֮ת 4. :q Թرհ 5. Դһ vimrc űļƫõá 6. : ʱ CTRL-D Բ鿴ܵIJȫ ʹһȫ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim ̵̳˾ͽˡֻ̳Ϊ˼ؽһ Vim ༭ ʹ༭ˡӹɣvimкܶܶ̳ ܵľIJúԶҪͨĻŬŶһĶ Vim ûֲᣬʹõǣ :help user-manual ⱾֵƼڸһĶѧϰ Vim - Vi Improved - ߣSteve Oualline 磺New Riders ǵһȫ Vim 鼮ڳѧرáадʵ ͼʾ ֪飬 http://iccf-holland.org/click5.html ⱾȽ˶ݸǹ Vi VimҲֵƼ Learning the Vi Editor - ߣLinda Lamb 磺O'Reilly & Associates Inc. һ飬ܹͨ˽⵽κҪʹ Vi 顣 ĵ汾ҲһЩ Vim Ϣ ̳ Calorado School of Mines Michael C. Pierce Robert K. Ware дģкܶഴ Colorado State University Charles Smith ṩߵĵǣbware@mines.colorado.edu ̳ Bram Moolenaar רΪ Vim ޶ ߸ԣ =========== Ľ̷̳֮Ϊ̩ һϵַlinuxrat@gnuchina.org Ľ̳ǴӼĽ̷̳ʹ Debian GNU/Linux ĿС ڹдĺת autoconvert תɵģת ĽһЩϸڵĸĶ ¼ ========= 20121001 vimtutor 1.5 1.7 20020830 ̩ л RMS@SMTH ָദ 20020422 ̩ л xuandong@sh163.net ָ 20020318 ̩ Bram Moolenaar20020316յҪ󣬽vimtutor1.4 vimtutor1.5 20011115 ̩ vimtutor1.4ύBram MoolenaarSven Guckes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!3vim80/tutor/tutor.vimnu[" Vim tutor support file " Author: Eduardo F. Amatria " Maintainer: Bram Moolenaar " Last Change: 2018 Apr 11 " This Vim script is used for detecting if a translation of the " tutor file exist, i.e., a tutor.xx file, where xx is the language. " If the translation does not exist, or no extension is given, " it defaults to the English version. " It is invoked by the vimtutor shell script. " 1. Build the extension of the file, if any: let s:ext = "" if strlen($xx) > 1 let s:ext = "." . $xx else let s:lang = "" " Check that a potential value has at least two letters. " Ignore "1043" and "C". if exists("v:lang") && v:lang =~ '\a\a' let s:lang = v:lang elseif $LC_ALL =~ '\a\a' let s:lang = $LC_ALL elseif $LANG =~ '\a\a' let s:lang = $LANG endif if s:lang != "" " Remove "@euro" (ignoring case), it may be at the end let s:lang = substitute(s:lang, '\c@euro', '', '') " On MS-Windows it may be German_Germany.1252 or Polish_Poland.1250. How " about other languages? if s:lang =~ "German" let s:ext = ".de" elseif s:lang =~ "Polish" let s:ext = ".pl" elseif s:lang =~ "Slovak" let s:ext = ".sk" elseif s:lang =~ "Serbian" let s:ext = ".sr" elseif s:lang =~ "Czech" let s:ext = ".cs" elseif s:lang =~ "Dutch" let s:ext = ".nl" elseif s:lang =~ "Bulgarian" let s:ext = ".bg" else let s:ext = "." . strpart(s:lang, 0, 2) endif endif endif " Somehow ".ge" (Germany) is sometimes used for ".de" (Deutsch). if s:ext =~? '\.ge' let s:ext = ".de" endif if s:ext =~? '\.en' let s:ext = "" endif " The japanese tutor is available in two encodings, guess which one to use " The "sjis" one is actually "cp932", it doesn't matter for this text. if s:ext =~? '\.ja' if &enc =~ "euc" let s:ext = ".ja.euc" elseif &enc != "utf-8" let s:ext = ".ja.sjis" endif endif " The korean tutor is available in two encodings, guess which one to use if s:ext =~? '\.ko' if &enc != "utf-8" let s:ext = ".ko.euc" endif endif " The Chinese tutor is available in three encodings, guess which one to use " This segment is from the above lines and modified by " Mendel L Chan for Chinese vim tutorial " When 'encoding' is utf-8, choose between China (simplified) and Taiwan " (traditional) based on the language, suggested by Alick Zhao. if s:ext =~? '\.zh' if &enc =~ 'big5\|cp950' let s:ext = ".zh.big5" elseif &enc != 'utf-8' let s:ext = ".zh.euc" elseif s:ext =~? 'zh_tw' || (exists("s:lang") && s:lang =~? 'zh_tw') let s:ext = ".zh_tw" else let s:ext = ".zh_cn" endif endif " The Polish tutor is available in two encodings, guess which one to use. if s:ext =~? '\.pl' if &enc =~ 1250 let s:ext = ".pl.cp1250" endif endif " The Turkish tutor is available in two encodings, guess which one to use if s:ext =~? '\.tr' if &enc == "iso-8859-9" let s:ext = ".tr.iso9" endif endif " The Greek tutor is available in three encodings, guess what to use. " We used ".gr" (Greece) instead of ".el" (Greek); accept both. if s:ext =~? '\.gr\|\.el' if &enc == "iso-8859-7" let s:ext = ".el" elseif &enc == "utf-8" let s:ext = ".el.utf-8" elseif &enc =~ 737 let s:ext = ".el.cp737" endif endif " The Slovak tutor is available in three encodings, guess which one to use if s:ext =~? '\.sk' if &enc =~ 1250 let s:ext = ".sk.cp1250" endif endif " The Slovak tutor is available in two encodings, guess which one to use " Note that the utf-8 version is the original, the cp1250 version is created " from it. if s:ext =~? '\.sr' if &enc =~ 1250 let s:ext = ".sr.cp1250" endif endif " The Czech tutor is available in three encodings, guess which one to use if s:ext =~? '\.cs' if &enc =~ 1250 let s:ext = ".cs.cp1250" endif endif " The Russian tutor is available in three encodings, guess which one to use. if s:ext =~? '\.ru' if &enc =~ '1251' let s:ext = '.ru.cp1251' elseif &enc =~ 'koi8' let s:ext = '.ru' endif endif " The Hungarian tutor is available in three encodings, guess which one to use. if s:ext =~? '\.hu' if &enc =~ 1250 let s:ext = ".hu.cp1250" elseif &enc =~ 'iso-8859-2' let s:ext = '.hu' endif endif " The Croatian tutor is available in three encodings, guess which one to use. if s:ext =~? '\.hr' if &enc =~ 1250 let s:ext = ".hr.cp1250" elseif &enc =~ 'iso-8859-2' let s:ext = '.hr' endif endif " Esperanto is only available in utf-8 if s:ext =~? '\.eo' let s:ext = ".eo.utf-8" endif " Vietnamese is only available in utf-8 if s:ext =~? '\.vi' let s:ext = ".vi.utf-8" endif " If 'encoding' is utf-8 s:ext must end in utf-8. if &enc == 'utf-8' && s:ext !~ '\.utf-8' let s:ext .= '.utf-8' endif " 2. Build the name of the file: let s:tutorfile = "/tutor/tutor" let s:tutorxx = $VIMRUNTIME . s:tutorfile . s:ext " 3. Finding the file: if filereadable(s:tutorxx) let $TUTOR = s:tutorxx else let $TUTOR = $VIMRUNTIME . s:tutorfile echo "The file " . s:tutorxx . " does not exist.\n" echo "Copying English version: " . $TUTOR 4sleep endif " 4. Making the copy and exiting Vim: e $TUTOR wq! $TUTORCOPY PK!b:-mmvim80/tutor/tutor.itnu[=============================================================================== = Benvenuto alla G u i d a all'Editor V I M - Versione 1.7 = =============================================================================== Vim è un Editor molto potente ed ha parecchi comandi, troppi per spiegarli tutti in una guida come questa. Questa guida serve a descrivere quei comandi che ti permettono di usare facilmente Vim come Editor di uso generale. Il tempo necessario per completare la guida è circa 25-30 minuti, a seconda di quanto tempo dedichi alla sperimentazione. ATTENZIONE! I comandi nelle lezioni modificano questo testo. Fai una copia di questo file per esercitarti (se hai usato "vimtutor", stai già usando una copia). E' importante non scordare che questa guida vuole insegnare tramite l'uso. Questo vuol dire che devi eseguire i comandi per impararli davvero. Se leggi il testo e basta, dimenticherai presto i comandi! Adesso, assicurati che il tasto BLOCCA-MAIUSCOLO non sia schiacciato e premi il tasto j tanto da muovere il cursore fino a che la Lezione 1.1 riempia completamente lo schermo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1.1: MOVIMENTI DEL CURSORE ** Per muovere il cursore, premi i tasti h,j,k,l come indicato. ** ^ k NOTA: Il tasto h è a sinistra e muove a sinistra. < h l > Il tasto l è a destra e muove a destra. j Il tasto j ricorda una freccia in giù. v 1. Muovi il cursore sullo schermo finché non ti senti a tuo agio. 2. Tieni schiacciato il tasto "giù" (j) finché non si ripete il movimento. Adesso sai come arrivare fino alla lezione seguente. 3. Usando il tasto "giù" spostati alla Lezione 1.2. NOTA: Quando non sei sicuro del tasto che hai premuto, premi per andare in Modalità Normale [Normal Mode]. Poi ri-immetti il comando che volevi. NOTA: I tasti con le frecce fanno lo stesso servizio. Ma usando hjkl riesci a muoverti molto più rapidamente, dopo che ci si abitua. Davvero! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1.2: USCIRE DA VIM !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!! 1. Premi il tasto (per assicurarti di essere in Modalità Normale). 2. Batti: :q! . Così esci dall'Editor SCARTANDO qualsiasi modifica fatta. 3. Quando vedi il PROMPT della Shell, batti il comando con cui sei arrivato qui. Sarebbe: vimtutor 4. Se hai memorizzato questi comandi e ti senti pronto, esegui i passi da 1 a 3 per uscire e rientrare nell'Editor. NOTA: :q! SCARTA qualsiasi modifica fatta. In una delle prossime lezioni imparerai come salvare un file che hai modificato. 5. Muovi in giù il cursore per passare alla lezione 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1.3: MODIFICA DI TESTI - CANCELLAZIONE ** Premere x per cancellare il carattere sotto al cursore ** 1. Muovi il cursore alla linea più sotto, indicata da --->. 2. Per correggere errori, muovi il cursore fino a posizionarlo sopra il carattere da cancellare. 3. Premi il tasto x per cancellare il carattere sbagliato. 4. Ripeti i passi da 2 a 4 finché la frase è corretta. ---> La mmucca saltòò finnoo allaa lunnna. 5. Ora che la linea è corretta, vai alla Lezione 1.4 NOTA: Mentre segui questa guida, non cercare di imparare a memoria, ma impara facendo pratica. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1.4: MODIFICA DI TESTI - INSERIMENTO ** Premere i per inserire testo. ** 1. Muovi il cursore alla prima linea qui sotto, indicata da --->. 2. Per rendere la prima linea uguale alla seconda, muovi il cursore sopra il primo carattere DOPO la posizione in cui il testo va inserito. 3. Premi i e batti le aggiunte opportune. 4. Quando un errore è corretto, premi per tornare in Modalità Normale. Ripeti i passi da 2 a 4 fino a completare la correzione della frase. ---> C'era del tsto mncnt questa . ---> C'era del testo mancante da questa linea. 5. Quando sei a tuo agio nell'inserimento di testo vai alla lezione 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1.5: MODIFICA DI TESTI - AGGIUNTA ** Premere A per aggiungere testo a fine linea. ** 1. Muovi il cursore alla prima linea qui sotto, indicata da --->. Non importa dove è posizionato il cursore sulla linea stessa. 2. Batti A e inserisci le necessarie aggiunte. 3. Alla fine della aggiunta premi per tornare in modalità Normale. 4. Muovi il cursore alla seconda linea indicata ---> e ripeti i passi 2 e 3 per correggere questa frase. ---> C'è del testo che manca da qu C'è del testo che manca da questa linea. ---> C'è anche del testo che ma C'è anche del testo che manca qui. 5. Quando sei a tuo agio nell'aggiunta di testo vai alla lezione 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1.6: MODIFICARE UN FILE ** Usare :wq per salvare un file e uscire. ** !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!! 1. Esci da Vim come hai fatto nella lezione 1.2: :q! 2. Quando vedi il PROMPT della Shell, batti il comando: vim tutor 'vim' è il comando per richiamare Vim, 'tutor' è il nome del file che desideri modificare. Usa un file che possa essere modificato. 3. Inserisci e cancella testo come hai imparato nelle lezioni precedenti. 4. Salva il file ed esci da Vim con: :wq 5. Rientra in vimtutor e scendi al sommario che segue. 6. Dopo aver letto i passi qui sopra ed averli compresi: eseguili. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1 SOMMARIO 1. Il cursore si muove usando i tasti con le frecce o i tasti hjkl. h (sinistra) j (giù) k (su) l (destra) 2. Per eseguire Vim dal PROMPT della Shell batti: vim NOMEFILE 3. Per uscire da Vim batti: :q! per uscire senza salvare. oppure batti: :wq per uscire salvando modifiche. 4. Per cancellare il carattere sotto al cursore batti: x 5. Per inserire testo subito prima del cursore batti: i batti testo inserito inserisci prima del cursore A batti testo aggiunto aggiungi a fine linea NOTA: premendo ritornerai in Modalità Normale o annullerai un comando errato che puoi aver inserito in parte. Ora continua con la Lezione 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.1: COMANDI DI CANCELLAZIONE ** Batti dw per cancellare una parola. ** 1. Premi per accertarti di essere in Modalità Normale. 2. Muovi il cursore fino alla linea qui sotto, indicata da --->. 3. Muovi il cursore all'inizio di una parola che vuoi cancellare. 4. Batti dw per cancellare la parola. NOTA: La lettera d sarà visibile sull'ultima linea dello schermo mentre la batti. Vim attende che tu batta w . Se vedi una lettera diversa da d hai battuto qualcosa di sbagliato; premi e ricomincia. ---> Ci sono le alcune parole gioia che non c'entrano carta in questa frase. 5. Ripeti i passi 3 e 4 finché la frase è corretta, poi vai alla Lezione 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.2: ALTRI COMANDI DI CANCELLAZIONE ** Batti d$ per cancellare fino a fine linea. ** 1. Premi per accertarti di essere in Modalità Normale. 2. Muovi il cursore fino alla linea qui sotto, indicata da --->. 3. Muovi il cursore alla fine della linea corretta (DOPO il primo . ). 4. Batti d$ per cancellare fino a fine linea. ---> Qualcuno ha battuto la fine di questa linea due volte. linea due volte. 5. Vai alla Lezione 2.3 per capire il funzionamento di questo comando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.3: OPERATORI E MOVIMENTI Molti comandi di modifica testi consistono in un operatore e un movimento. Il formato del comando di cancellazione con l'operatore d è il seguente: d movimento Dove: d - è l'operatore di cancellazione movimento - indica dove l'operatore va applicato (lista qui sotto). Breve lista di movimenti: w - fino a inizio della parola seguente, ESCLUSO il suo primo carattere. e - alla fine della parola corrente, COMPRESO il suo ultimo carattere. $ - dal cursore fino a fine linea, COMPRESO l'ultimo carattere della linea. Quindi se batti de cancelli dal cursore fino a fine parola. NOTA: Se batti solo il movimento mentre sei in Modalità Normale, senza nessun operatore, il cursore si muoverà come specificato. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.4: USO DI UN CONTATORE PER UN MOVIMENTO ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. ** 1. Muovi il cursore fino all'inizio della linea qui sotto, indicata da --->. 2. Batti 2w per spostare il cursore due parole più avanti. 3. Batti 3e per spostare il cursore alla fine della terza parola seguente. 4. Batti 0 (zero) per posizionarti all'inizio della linea. 5. Ripeti i passi 2 e 3 usando numeri differenti. ---> Questa è solo una linea con parole all'interno della quale puoi muoverti. 6. Vai alla Lezione 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.5: USO DI UN CONTATORE PER CANCELLARE DI PIU' ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. ** Nella combinazione dell'operatore cancella e di un movimento, descritto prima, inserite un contatore prima del movimento per cancellare di più: d numero movimento 1. Muovi il cursore alla prima parola MAIUSCOLA nella riga indicata da --->. 2. Batti d2w per cancellare le due parole MAIUSCOLE 3. Ripeti i passi 1 e 2 con un contatore diverso per cancellare le parole MAIUSCOLE consecutive con un solo comando ---> questa ABC DE linea FGHI JK LMN OP di parole è Q RS TUV ora ripulita. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.6: LAVORARE SU LINEE INTERE ** Batti dd per cancellare un'intera linea. ** Per la frequenza con cui capita di cancellare linee intere, chi ha disegnato Vi ha deciso che sarebbe stato più semplice battere due d consecutive per cancellare una linea. 1. Muovi il cursore alla linea 2) nella frase qui sotto. 2. Batti dd per cancellare la linea. 3. Ora spostati alla linea 4). 4. Batti 2dd per cancellare due linee. ---> 1) Le rose sono rosse, ---> 2) Il fango è divertente, ---> 3) Le viole sono blu, ---> 4) Io ho un'automobile, ---> 5) Gli orologi segnano il tempo, ---> 6) Lo zucchero è dolce, ---> 7) E così sei anche tu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.7: IL COMANDO UNDO [ANNULLA] ** Premi u per annullare gli ultimi comandi eseguiti. ** ** Premi U per annullare le modifiche all'ultima linea. ** 1. Muovi il cursore fino alla linea qui sotto, indicata da --->. e posizionati sul primo errore. 2. Batti x per cancellare il primo carattere sbagliato. 3. Adesso batti u per annullare l'ultimo comando eseguito. 4. Ora invece, correggi tutti gli errori sulla linea usando il comando x . 5. Adesso batti una U Maiuscola per riportare la linea al suo stato originale. 6. Adesso batti u più volte per annullare la U e i comandi precedenti. 7. Adesso batti più volte CTRL-r (tieni il tasto CTRL schiacciato mentre batti r) per rieseguire i comandi (annullare l'annullamento). ---> Correeggi gli errori ssu quuesta linea e riimpiazzali coon "undo". 8. Questi comandi sono molto utili. Ora spostati al Sommario della Lezione 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2 SOMMARIO 1. Per cancellare dal cursore fino alla parola seguente batti: dw 2. Per cancellare dal cursore fino alla fine della linea batti: d$ 3. Per cancellare un'intera linea batti: dd 4. Per eseguire più volte un movimento, mettici davanti un numero: 2w 5. Il formato per un comando di modifica è: operatore [numero] movimento dove: operatore - indica il da farsi, ad es. d per [delete] cancellare [numero] - contatore facoltativo di ripetizione del movimento movimento - spostamento nel testo su cui operare, ad es. w [word] parola, $ (fino a fine linea), etc. 6. Per andare a inizio linea usate uno zero: 0 7. Per annullare i comandi precedenti, batti: u (u minuscola) Per annullare tutte le modifiche a una linea batti: U (U maiuscola) Per annullare l'annullamento ["redo"] batti: CTRL-r ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 3.1: IL COMANDO PUT [METTI, PONI] ** Batti p per porre [put] testo (cancellato prima) dopo il cursore. ** 1. Muovi il cursore alla prima linea indicata con ---> qui in basso. 2. Batti dd per cancellare la linea e depositarla in un registro di Vim. 3. Muovi il cursore fino alla linea c) SOPRA quella dove andrebbe messa la linea appena cancellata. 4. Batti p per mettere la linea sotto il cursore. 5. Ripeti i passi da 2 a 4 per mettere tutte le linee nel giusto ordine. ---> d) Puoi impararla tu? ---> b) Le viole sono blu, ---> c) La saggezza si impara, ---> a) Le rose sono rosse, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 3.2: IL COMANDO REPLACE [RIMPIAZZARE] ** Batti rx per rimpiazzare il carattere sotto al cursore con x . ** 1. Muovi il cursore alla prima linea qui sotto, indicata da --->. 2. Muovi il cursore fino a posizionarlo sopra il primo errore. 3. Batti r e poi il carattere che dovrebbe stare qui. 4. Ripeti i passi 2 e 3 finché la prima linea è uguale alla seconda. ---> Ammattendo quetta lince, qualcuno ho predato alcuni tosti sballiati! ---> Immettendo questa linea, qualcuno ha premuto alcuni tasti sbagliati! 5. Ora passa alla Lezione 3.2. NOTA: Ricordati che dovresti imparare con la pratica, non solo leggendo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 3.3: L'OPERATORE CHANGE [CAMBIA] ** Per cambiare fino alla fine di una parola, batti ce . ** 1. Muovi il cursore alla prima linea qui sotto, indicata da --->. 2. Posiziona il cursore alla u in lubw. 3. Batti ce e la parola corretta (in questo caso, batti inea ). 4. Premi e vai sul prossimo carattere da modificare. 5. Ripeti i passi 3 e 4 finché la prima frase è uguale alla seconda. ---> Questa lubw ha alcune pptfd da asdert usgfk l'operatore CHANGE. ---> Questa linea ha alcune parole da cambiare usando l'operatore CHANGE. Nota che ce cancella la parola, e ti mette anche in Modalità Inserimento [Insert Mode] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 3.4: ALTRI CAMBIAMENTI USANDO c ** L'operatore c [CHANGE] agisce sugli stessi movimenti di d [DELETE] ** 1. L'operatore CHANGE si comporta come DELETE. Il formato è: c [numero] movimento 2. I movimenti sono gli stessi, ad es. w (word, parola), $ (fine linea), etc. 3. Muovi il cursore alla prima linea qui sotto, indicata da --->. 4. Posiziona il cursore al primo errore. 5. Batti c$ e inserisci resto della linea utilizzando come modello la linea seguente, e quando hai finito premi ---> La fine di questa linea deve essere aiutata a divenire come la seguente. ---> La fine di questa linea deve essere corretta usando il comando c$ . NOTA: Puoi usare il tasto Backspace se devi correggere errori di battitura. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 3 SOMMARIO 1. Per reinserire del testo appena cancellato, batti p . Questo inserisce [pone] il testo cancellato DOPO il cursore (se era stata tolta una linea intera, questa verrà messa nella linea SOTTO il cursore). 2. Per rimpiazzare il carattere sotto il cursore, batti r e poi il carattere che vuoi sostituire. 3. L'operatore change ti permette di cambiare dal cursore fino a dove arriva il movimento. Ad es. Batti ce per cambiare dal cursore fino alla fine della parola, c$ per cambiare fino a fine linea. 4. Il formato di change è: c [numero] movimento Ora vai alla prossima Lezione. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 4.1: POSIZIONAMENTO E SITUAZIONE FILE ** Batti CTRL-G per vedere a che punto sei nel file e la situazione ** ** del file. Batti G per raggiungere una linea nel file. ** NOTA: Leggi l'intera Lezione prima di eseguire un qualsiasi passo!! 1. Tieni premuto il tasto CTRL e batti g . Ossia batti CTRL-G. Un messaggio apparirà in fondo alla pagina con il NOME FILE e la posizione nel file. Ricordati il numero della linea per il Passo 3. NOTA: La posizione del cursore si vede nell'angolo in basso a destra dello schermo, se è impostata l'opzione 'ruler' (righello, vedi :help ruler). 2. Premi G [G Maiuscolo] per posizionarti in fondo al file. Batti gg per posizionarti in cima al file. 3. Batti il numero della linea in cui ti trovavi e poi G . Questo ti riporterà fino alla linea in cui ti trovavi quando avevi battuto CTRL-g. 4. Se ti senti sicuro nel farlo, esegui i passi da 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 4.2: IL COMANDO SEARCH [RICERCA] ** Batti / seguito da una frase per ricercare quella frase. ** 1. in Modalità Normale batti il carattere / . Nota che la "/" e il cursore sono visibili in fondo dello schermo come quando si usa il comando : . 2. Adesso batti 'errroore' . Questa è la parola che vuoi ricercare. 3. Per ricercare ancora la stessa frase, batti soltanto n . Per ricercare la stessa frase in direzione opposta, batti N . 4. Per ricercare una frase nella direzione opposta, usa ? al posto di / . 5. Per tornare dove eri prima nel file premi CTRL-O (tieni il tasto CTRL schiacciato mentre premi la lettera o). Ripeti CTRL-O per andare ancora indietro. Puoi usare CTRL-I per tornare in avanti. ---> "errroore" non è il modo giusto di digitare errore; errroore è un errore. NOTA: Quando la ricerca arriva a fine file, ricomincia dall'inizio del file, a meno che l'opzione 'wrapscan' sia stata disattivata. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 4.3: RICERCA DI PARENTESI CORRISPONDENTI ** Batti % per trovare una ),], o } corrispondente. ** 1. Posiziona il cursore su una (, [, o { nella linea sotto, indicata da --->. 2. Adesso batti il carattere % . 3. Il cursore si sposterà sulla parentesi corrispondente. 4. Batti % per muovere il cursore all'altra parentesi corrispondente. ---> Questa ( è una linea di test con (, [ ] e { } al suo interno. )) NOTA: Questo è molto utile nel "debug" di un programma con parentesi errate! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 4.4: L'OPERATORE SOSTITUZIONE (SUBSTITUTE) ** Batti :s/vecchio/nuovo/g per sostituire 'nuovo' a 'vecchio'. ** 1. Muovi il cursore fino alla linea qui sotto, indicata da --->. 2. Batti :s/lla/la . Nota che questo comando cambia solo LA PRIMA occorrenza di "lla" sulla linea. 3. Adesso batti :s/lla/la/g . Aggiungendo la flag g si chiede di sostituire "globalmente" sulla linea, ossia tutte le occorrenze di "lla" sulla linea. ---> lla stagione migliore per lla fioritura è lla primavera. 4. Per cambiare ogni ricorrenza di una stringa di caratteri tra due linee, batti :#,#s/vecchio/nuovo/g dove #,# sono i numeri che delimitano il gruppo di linee in cui si vuole sostituire. Batti :%s/vecchio/nuovo/g per cambiare ogni occorrenza nell'intero file. Batti :%s/vecchio/nuovo/gc per trovare ogni occorrenza nell'intero file ricevendo per ognuna una richiesta se effettuare o meno la sostituzione. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 4 SOMMARIO 1. CTRL-G visualizza a che punto sei nel file e la situazione del file. G [G Maiuscolo] ti porta all'ultima linea del file. numero G ti porta alla linea con quel numero. gg ti porta alla prima linea del file. 2. Battendo / seguito da una frase ricerca IN AVANTI quella frase. Battendo ? seguito da una frase ricerca ALL'INDIETRO quella frase. DOPO una ricerca batti n per trovare la prossima occorrenza nella stessa direzione, oppure N per cercare in direzione opposta. CTRL-O ti porta alla posizione precedente, CTRL-I a quella più nuova. 3. Battendo % mentre il cursore si trova su (,),[,],{, oppure } ti posizioni sulla corrispondente parentesi. 4. Per sostituire "nuovo" al primo "vecchio" in 1 linea batti :s/vecchio/nuovo Per sostituire "nuovo" ad ogni "vecchio" in 1 linea batti :s/vecchio/nuovo/g Per sostituire frasi tra 2 numeri di linea [#] batti :#,#s/vecchio/nuovo/g Per sostituire tutte le occorrenze nel file batti :%s/vecchio/nuovo/g Per chiedere conferma ogni volta aggiungi 'c' :%s/vecchio/nuovo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 5.1: COME ESEGUIRE UN COMANDO ESTERNO ** Batti :! seguito da un comando esterno per eseguire quel comando. ** 1. Batti il comando : per posizionare il cursore in fondo allo schermo. Ciò ti permette di immettere un comando dalla linea comandi. 2. Adesso batti il carattere ! (punto esclamativo). Ciò ti permette di eseguire qualsiasi comando esterno si possa eseguire nella "shell". 3. Ad esempio batti ls dopo il ! e poi premi . Questo visualizza una lista della tua directory, proprio come se fossi in una "shell". Usa :!dir se ls non funziona. [Unix: ls MS-DOS: dir] NOTA: E' possibile in questo modo eseguire un comando a piacere, specificando anche dei parametri per i comandi stessi. NOTA: Tutti i comandi : devono essere terminati premendo Da qui in avanti non lo ripeteremo ogni volta. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 5.2: ANCORA SULLA SCRITTURA DEI FILE ** Per salvare le modifiche apportate a un testo batti :w NOMEFILE. ** 1. Batti :!dir or :!ls per procurarti una lista della tua directory. Già sai che devi premere dopo aver scritto il comando. 2. Scegli un NOMEFILE che ancora non esista, ad es. TEST . 3. Adesso batti: :w TEST (dove TEST è il NOMEFILE che hai scelto). 4. Questo salva l'intero file ("tutor.it") con il nome di TEST. Per verifica batti ancora :!dir o :!ls per listare la tua directory. NOTA: Se esci da Vim e riesegui Vim battendo vim TEST , il file aperto sarà una copia esatta di "tutor.it" al momento del salvataggio. 5. Ora cancella il file battendo (MS-DOS): :!del TEST o (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 5.3: SELEZIONARE IL TESTO DA SCRIVERE ** Per salvare una porzione di file, batti v movimento :w NOMEFILE ** 1. Muovi il cursore su questa linea. 2. Premi v e muovi il cursore fino alla linea numerata 5., qui sotto. Nota che il testo viene evidenziato. 3. Batti il carattere : . In fondo allo schermo apparirà :'<,'> . 4. Batti w TEST , dove TEST è il nome di un file non ancora esistente. Verifica che si veda :'<,'>w TEST prima di dare . 5. Vim scriverà nel file TEST le linee che hai selezionato. Usa :!dir o :!ls per controllare che esiste. Non cancellarlo ora! Ti servirà nella prossima lezione. NOTA: Battere v inizia una selezione visuale. Puoi muovere il cursore come vuoi, e rendere la selezione più piccola o più grande. Poi puoi usare un operatore per agire sul testo selezionato. Ad es., d cancella il testo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 5.4: INSERIRE E RIUNIRE FILE ** Per inserire il contenuto di un file, batti :r NOMEFILE ** 1. Posiziona il cursore appena sopra questa riga. NOTA: Dopo aver eseguito il Passo 2 vedrai il testo della Lezione 5.3. Quindi spostati IN GIU' per tornare ancora a questa Lezione. 2. Ora inserisci il tuo file TEST con il comando :r TEST dove TEST è il nome che hai usato per creare il file. Il file richiesto è inserito sotto la linea in cui si trova il cursore. 3. Per verificare che un file è stato inserito, torna indietro col cursore e nota che ci sono ora 2 copie della Lezione 5.3, quella originale e quella che viene dal file. NOTA: Puoi anche leggere l'output prodotto da un comando esterno. Ad es. :r !ls legge l'output del comando ls e lo inserisce sotto la linea in cui si trova il cursore. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 5 SOMMARIO 1. :!comando esegue un comando esterno. Alcuni esempi utili sono [in MSDOS]: :!dir - visualizza lista directory :!del NOMEFILE - cancella file NOMEFILE. 2. :w NOMEFILE scrive su disco il file che stai editando con nome NOMEFILE. 3. v movimento :w NOMEFILE salva le linee selezionate in maniera visuale nel file NOMEFILE. 4. :r NOMEFILE legge il file NOMEFILE da disco e lo inserisce nel file che stai modificando, dopo la linea in cui è posizionato il cursore. 5. :r !dir legge l'output del comando dir e lo inserisce dopo la linea in cui è posizionato il cursore. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 6.1: IL COMANDO OPEN [APRIRE] ** Batti o per aprire una linea sotto il cursore ** ** e passare in Modalità Inserimento. ** 1. Muovi il cursore fino alla linea qui sotto, indicata da --->. 2. Batti la lettera minuscola o per aprire una linea sotto il cursore e passare in Modalità Inserimento. 3. Poi inserisci del testo e premi per uscire dalla Modalità Inserimento. ---> Dopo battuto o il cursore è sulla linea aperta (in Modalità Inserimento). 4. Per aprire una linea SOPRA il cursore, batti una O maiuscola, invece che una o minuscola. Prova sulla linea qui sotto. ---> Apri una linea SOPRA questa battendo O mentre il cursore è su questa linea. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 6.2: IL COMANDO APPEND [AGGIUNGERE] ** Batti a per inserire testo DOPO il cursore. ** 1. Muovi il cursore all'inizio della linea qui sotto, indicata da --->. 2. Batti e finché il cursore arriva alla fine di li . 3. Batti una a (minuscola) per aggiungere testo DOPO il cursore. 4. Completa la parola come mostrato nella linea successiva. Premi per uscire dalla Modalità Inserimento. 5. Usa e per passare alla successiva parola incompleta e ripeti i passi 3 e 4. ---> Questa li ti permetterà di esercit ad aggiungere testo a una linea. ---> Questa linea ti permetterà di esercitarti ad aggiungere testo a una linea. NOTA: a, i ed A entrano sempre in Modalità Inserimento, la sola differenza è dove verranno inseriti i caratteri. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 6.3: UN ALTRO MODO DI RIMPIAZZARE [REPLACE] ** Batti una R maiuscola per rimpiazzare più di un carattere. ** 1. Muovi il cursore alla prima linea qui sotto, indicata da --->. Muovi il cursore all'inizio del primo xxx . 2. Ora batti R e batti il numero che vedi nella linea seguente, in modo che rimpiazzi l' xxx . 3. Premi per uscire dalla Modalità Replace. Nota che il resto della linea resta invariato. 4. Ripeti i passi in modo da rimpiazzare l'altro xxx . ---> Aggiungendo 123 a xxx si ottiene xxx. ---> Aggiungendo 123 a 456 si ottiene 579. NOTA: La Modalità Replace è come la Modalità Inserimento, ma ogni carattere che viene battuto ricopre un carattere esistente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 6.4: COPIA E INCOLLA DEL TESTO ** usa l'operatore y per copiare del testo e p per incollarlo ** 1. Vai alla linea indicata da ---> qui sotto, e metti il cursore dopo "a)". 2. Entra in Modalità Visuale con v e metti il cursore davanti a "primo". 3. Batti y per copiare [yank] il testo evidenziato. 4. Muovi il cursore alla fine della linea successiva: j$ 5. Batti p per incollare [paste] il testo. Poi batti: a secondo . 6. Usa la Modalità Visuale per selezionare " elemento.", copialo con y , Vai alla fine della linea successiva con j$ e incolla il testo con p . ---> a) questo è il primo elemento. b) NOTA: Puoi usare y come operatore; yw copia una parola [word]. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 6.5: SET [IMPOSTA] UN'OPZIONE ** Imposta un'opzione per ignorare maiuscole/minuscole ** ** durante la ricerca/sostituzione ** 1. Ricerca 'nota' battendo: /nota Ripeti la ricerca più volte usando il tasto n 2. Imposta l'opzione 'ic' (Ignore Case, [Ignora maiuscolo/minuscolo]) battendo: :set ic 3. Ora ricerca ancora 'nota' premendo il tasto n Troverai adesso anche Nota e NOTA . 4. Imposta le opzioni 'hlsearch' e 'incsearch' :set hls is 5. Ora batti ancora il comando di ricerca, e guarda cosa succede: /nota 6. Per disabilitare il riconoscimento di maiuscole/minuscole batti: :set noic NOTA: Per non evidenziare le occorrenze trovate batti: :nohlsearch NOTA: Per ignorare maiuscole/minuscole solo per una ricerca, usa \c nel comando di ricerca: /nota\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 6 SOMMARIO 1. Batti o per aggiungere una linea SOTTO il cursore ed entrare in Modalità Inserimento. Batti O per aggiungere una linea SOPRA il cursore. 2. Batti a per inserire testo DOPO il cursore. Batti A per inserire testo alla fine della linea. 3. Il comando e sposta il cursore alla fine di una parola. 4. L'operatore y copia del testo, p incolla del testo. 5. Batti R per entrare in Modalità Replace, e ne esci premendo . 6. Batti ":set xxx" per impostare l'opzione "xxx". Alcun opzioni sono: 'ic' 'ignorecase' ignorare maiuscole/minuscole nella ricerca 'is' 'incsearch' mostra occorrenze parziali durante una ricerca 'hls' 'hlsearch' evidenzia tutte le occorrenze di una ricerca Puoi usare sia il nome completo di un'opzione che quello abbreviato. 7. Usa il prefisso "no" per annullare una opzione: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 7.1: OTTENERE AIUTO ** Usa il sistema di aiuto on-line ** Vim ha un esauriente sistema di aiuto on-line. Per cominciare, prova una di queste alternative: - premi il tasto (se ce n'è uno) - premi il tasto (se ce n'è uno) - batti :help OPPURE :h Leggi il testo nella finestra di aiuto per vedere come funziona l'aiuto. Batti CTRL-W CTRL-W per passare da una finestra all'altra. Batti :q per chiudere la finestra di aiuto. Puoi trovare aiuto su quasi tutto, dando un argomento al comando ":help" Prova questi (non dimenticare di premere ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 7.2: PREPARARE UNO SCRIPT INIZIALE ** Attiva le opzioni Vim ** Vim ha molte più opzioni di Vi, ma molte di esse sono predefinite inattive. Per cominciare a usare più opzioni, devi creare un file "vimrc". 1. Comincia a editare il file "vimrc". Questo dipende dal tuo sistema: :e ~/.vimrc per Unix :e $VIM/_vimrc per MS-Windows 2. Ora leggi i contenuti del file "vimrc" distribuito come esempio: :r $VIMRUNTIME/vimrc_example.vim 3. Scrivi il file con: :w La prossima volta che apri Vim, sarà abilitata la colorazione sintattica. Puoi aggiungere a questo file "vimrc" tutte le tue impostazioni preferite. Per maggiori informazioni batti: :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 7.3: COMPLETAMENTO ** Completamento linea comandi con CTRL-D e ** 1. Imposta Vim in modalità compatibile: :set nocp 2. Guarda i file esistenti nella directory: :!ls o :!dir 3. Batti l'inizio di un comando: :e 4. Premi CTRL-D e Vim ti mostra una lista di comandi che iniziano per "e". 5. Premi e Vim completa per te il nome comando come ":edit". 6. Ora batti uno spazio e l'inizio del nome di un file esistente: :edit FIL 7. Premi . Vim completerà il nome del file (se è il solo possibile). NOTA: Il completamento è disponibile per molti comandi. Prova a battere CTRL-D e . Particolarmente utile per :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 7 Sommario 1. Batti :help o premi o per aprire una finestra di aiuto. 2. Batti :help comando per avere aiuto su comando . 3. Batti CTRL-W CTRL-W per saltare alla prossima finestra. 4. Batti :q per chiudere la finestra di aiuto. 5. Crea uno script iniziale vimrc contenente le tue impostazioni preferite. 6. Mentre batti un comando : , premi CTRL-D per vedere i possibili completamenti. Premi per usare il completamento desiderato. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Qui finisce la Guida a Vim. Il suo intento è di fornire una breve panoramica dell'Editor Vim, che ti consenta di usare l'Editor abbastanza facilmente. Questa guida è largamente incompleta poiché Vim ha moltissimi altri comandi. Puoi anche leggere il manuale utente (anche in italiano): ":help user-manual". Per ulteriore lettura e studio, raccomandiamo: Vim - Vi Improved - di Steve Oualline Editore: New Riders Il primo libro completamente dedicato a Vim. Utile specie per principianti. Contiene molti esempi e figure. Vedi http://iccf-holland.org/click5.html Quest'altro libro è più su Vi che su Vim, ma è pure consigliato: Learning the Vi Editor - di Linda Lamb e Arnold Robbins Editore: O'Reilly & Associates Inc. E' un buon libro per imparare quasi tutto ciò che puoi voler fare con Vi. Ne esiste una traduzione italiana, basata su una vecchia edizione. Questa guida è stata scritta da Michael C. Pierce e Robert K. Ware, Colorado School of Mines, usando idee fornite da Charles Smith, Colorado State University - E-mail: bware@mines.colorado.edu Modificato per Vim da Bram Moolenaar. Segnalare refusi ad Antonio Colombo - E-mail: azc100@gmail.com ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!샛vim80/tutor/tutor.eo.utf-8nu[============================================================================== = B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7 = ============================================================================== Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili por ĉion klarigi en instruilo kiel ĉi tiu. Ĉi tiu instruilo estas fasonita por priskribi sufiĉajn komandojn, por ke vi kapablu uzi Vim kun sufiĉa facileco. La tempo bezonata por plenumi la kurson estas 25-30 minutoj, kaj dependas de kiom da tempo estas uzata por eksperimenti. ATENTU: La komandoj en la lecionoj ŝanĝos la tekston. Kopiu tiun ĉi dosieron por ekzerci vin (se vi lanĉis "vimtutor", tiam estas jam kopio). Gravas memori, ke ĉi tiu instruilo estas organizata por instrui per la uzo. Tio signifas, ke vi devas plenumi la komandojn por bone lerni ilin. Se vi nur legas la tekston, vi forgesos la komandojn! Nun, certigu, ke la majuskla baskulo NE estas en reĝimo majuskla, kaj premu la klavon j sufiĉe da fojoj por movi la kursoron, kaj por ke la leciono 1.1 plenigu la ekranon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1.1: MOVI LA KURSORON ** Por movi la kursoron, premu la h,j,k,l klavojn kiel montrite. ** ^ k Konsilo: La klavo h estas la plej liva kaj movas liven. < h l > La klavo l estas la plej dekstra kaj movas dekstren. j La klavo j aspektas kiel malsuprena sago. v 1. Movu la kursoron sur la ekrano ĝis kiam vi sentas vin komforta. 2. Premu la klavon (j) ĝis kiam ĝi ripetas. Vi nun scias, kiel moviĝi al la sekvanta leciono 3. Uzante la malsuprenan klavon, moviĝu al la leciono 1.2. RIMARKO: Se vi dubas pri tio, kion vi premis, premu por reiri al la normala reĝimo. Tiam repremu la deziratan komandon. RIMARKO: La klavoj de la kursoro devus ankaŭ funkcii. Sed uzante hjkl, vi kapablos moviĝi pli rapide post kiam vi kutimiĝos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1.2: ELIRI EL VIM !! RIMARKO: Antaŭ ol plenumi iujn subajn paŝojn ajn, legu la tutan lecionon!! 1. Premu la klavon (por certigi, ke vi estas en normala reĝimo). 2. Tajpu: :q! . Tio eliras el la rekdaktilo, SEN konservi la ŝanĝojn, kiujn vi faris. 3. Kiam vi vidas la ŝelinviton, tajpu la komandon kiun vi uzis por eniri en ĉi tiu instruilo. Tio estus: vimtutor 4. Se vi memoris tiujn paŝojn kaj sentas vin memfida, plenumu la paŝojn 1 ĝis 3 por eliri kaj reeniri la redaktilon. RIMARKO: :q! eliras sen konservi la ŝanĝojn, kiujn vi faris. Post kelkaj lecionoj, vi lernos kiel konservi la ŝanĝojn al dosiero. 5. Movu la kursoron suben ĝis la leciono 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1.3: REDAKTO DE TEKSTO - FORVIŜO ** Premu x por forviŝi la signon sub la kursoro. ** 1. Movu la kursoron al la suba linio markita per --->. 2. Por korekti la erarojn, movu la kursoron ĝis kiam ĝi estas sur la forviŝenda signo. 3. Premu la klavon x por forviŝi la nedeziratan signon. 4. Ripetu paŝojn 2 ĝis 4 ĝis kiam la frazo estas ĝusta. ---> La boovinno saaltiss ssur laa luuno. 5. Post kiam la linio estas ĝusta, iru al la leciono 1.4 RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1.4: REDAKTO DE TEKSTO - ENMETO ** Premu i por enmeti tekston. ** 1. Movu la kursoron al la unua suba linio markita per --->. 2. Por igi la unuan linion sama kiel la dua, movu la kursoron sur la unuan signon post kie la teksto estas enmetenda. 3. Premu i kaj tajpu la bezonatajn aldonojn. 4. Premu kiam la eraroj estas korektitaj por reiri al la normala reĝimo. Ripetu la paŝojn 2 ĝis 4 por korekti la frazon. ---> Mank en ĉi linio. ---> Mankas teksto en ĉi tiu linio. 5. Kiam vi sentas vin komforta pri enmeto de teksto, moviĝu al la leciono 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1.5: REDAKTO DE TEKSTO - POSTALDONO ** Premu A por postaldoni tekston. ** 1. Movu la kursoron al la unua suba linio markita per --->. Ne gravas sur kiu signo estas la kursoro. 2. Premu majusklan A kaj tajpu la bezonatajn aldonojn. 3. Post kiam la teksto estas aldonita, premu por reiri al la normala reĝimo. 4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la paŝojn 2 kaj 3 por korekti la frazon. ---> Mankas teksto el ti Mankas teksto el tiu linio. ---> Mankas ankaŭ teks Mankas ankaŭ teksto ĉi tie. 5 Kiam vi sentas vin komforta pri postaldono de teksto, moviĝu al la leciono 1.6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1.6: REDAKTI DOSIERON ** Uzu :wq por konservi dosieron kaj eliri. ** !! RIMARKO: Antaŭ ol plenumi iun suban paŝon ajn, legu la tutan lecionon!! 1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q! Aŭ, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie. 2. Ĉe la ŝelinvito, tajpu ĉi tiun komandon: vim tutor 'vim' estas la komando por lanĉi la redaktilon Vim, 'tutor' estas la dosiernomo de la dosiero, kiun vi volas redakti. Uzu dosieron, kiu ŝanĝeblas. 3. Enmetu kaj forviŝu tekston, kiel vi lernis en la antaŭaj lecionoj. 4. Konservu la dosieron kun ŝanĝoj kaj eliru el Vim per: :wq 5. Se vi eliris el la instruilo vimtutor en paŝo 1, restartigu la instruilon vimtutor kaj moviĝu suben al la sekvanta resumo. 6. Post kiam vi legis la suprajn paŝojn, kaj komprenis ilin: faru ilin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1 RESUMO 1. La kursoro moviĝas aŭ per la sagoklavoj, aŭ per la klavoj hjkl. h (liven) j (suben) k (supren) l (dekstren) 2. Por lanĉi Vim el la ŝelinvito, tajpu: vim DOSIERNOMO 3. Por eliri el Vim, tajpu: :q! por rezigni la ŝanĝojn 4. Por forviŝi la signojn ĉe la pozicio de la kursoro, tajpu: x 5. Por enmeti aŭ postaldoni tekston, tajpu: i tajpu enmetendan tekston enmetas tekston antaŭ la kursoro A tajpu la postaldonendan tekston postaldonas post la kursoro RIMARKO: Premo de iras al la normala reĝimo, aŭ rezignas la nedeziratan aŭ parte plenumita komando. Nun daŭrigu al la leciono 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.1: KOMANDOJ DE FORVIŜO ** Tajpu dw por forviŝi vorton. ** 1. Premu por certigi, ke vi estas en normala reĝimo. 2. Movu la kursoron al la linio markita per --->. 3. Movu la kursoron al la komenco de vorto, kiu forviŝendas. 4. Tajpu dw por forviŝi la vorton. RIMARKO: La litero d aperos en la lasta linio sur la ekrano kiam vi tajpas ĝin. Vim atendas ĝis kiam vi tajpas w . Se vi vidas alian signon ol d vi tajpis ion mise; premu kaj rekomencu. ---> Estas iuj vortoj kiuj Zamenhof ne devus esti akuzativo en ĉi tiu frazo. 5. Ripetu paŝojn 3 kaj 4 ĝis kiam la frazo estas ĝusta kaj moviĝu al la leciono 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.2: PLIAJ KOMANDOJ DE FORVIŜO ** Tajpu d$ por forviŝi la finon de la linio. ** 1. Premu por certigi, ke vi estas en normala reĝimo. 2. Movu la kursoron sur la suban linion markita per --->. 3. Movu la kursoron ĉe la fino de la ĝusta linio (POST la unua . ). 4. Tajpu d$ por foriviŝi ĝis la fino de la linio. ---> Iu tajpis la finon de ĉi tiu linio dufoje. fino de ĉi tiu linio dufoje. 5. Moviĝu al la leciono 2.3 por kompreni kio okazas. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.3: PRI OPERATOROJ KAJ MOVOJ Multaj komandoj, kiuj ŝanĝas la tekston, estas faritaj de operatoro kaj movo. La formato de komando de forviŝo per la operatoro de forviŝo d estas kiel sekvas: d movo Kie: d - estas la operatoro de movo movo - estas tio, pri kio la operatoro operacios (listigita sube) Mallonga listo de movoj: w - ĝis la komenco de la sekvanta vorto, krom ĝia unua signo. e - ĝis la fino de la nuna vorto, krom la lasta signo. $ - ĝis la fino de la linio, krom la lasta signo. Do tajpo de 'de' forviŝos ekde la kursoro ĝis la fino de la vorto. RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos la kursoron kiel specifite. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.4: UZI NOMBRON POR MOVO ** Tajpo de nombro antaŭ movo ripetas ĝin laŭfoje. ** 1. Movu la kursoron ĉe la komenco de la suba linio markita per --->. 2. Tajpu 2w por movi la kursoron je du vortoj antaŭen. 3. Tajpu 3e por movi la kursoron ĉe la fino de la tria vorto antaŭen. 4. Tajpu 0 (nul) por moviĝi ĉe la komenco de la linio. 5. Ripetu paŝojn 2 ĝis 3 kun malsamaj nombroj. ---> Tio estas nur linio kun vortoj, kie vi povas moviĝi. 6. Moviĝu al la leciono 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.5: UZI NOMBRON POR FORVIŜI PLI ** Tajpo de nombro kun operatoro ripetas ĝin laŭfoje. ** En la kombinaĵo de la operatoro de forviŝo, kaj movo kiel menciita ĉi-supre, eblas aldoni nombron antaŭ la movo por pli forviŝi: d nombro movo 1. Movu la kursoron ĉe la unua MAJUSKLA vorto en la linio markita per --->. 2. Tajpu d2w por forviŝi la du MAJUSKLAJN vortojn 3. Ripetu paŝojn 1 ĝis 2 per malsama nombro por forviŝi la sinsekvajn MAJUSKLAJN vortojn per unu komando ---> Tiu AB CDE linio FGHI JK LMN OP de vortoj estas Q RS TUV purigita. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.6: OPERACII SUR LINIOJ ** Tajpu dd por forviŝi tutan linion. ** Pro la ofteco de forviŝo de tuta linio, la verkisto de Vi decidis, ke estus pli facile simple tajpi du d-ojn por forviŝi linion. 1. Movu la kursoron sur la duan linion en la suba frazo. 2. Tajpu dd por forviŝi la linion. 3. Nun moviĝu al la kvara linio. 4. Tajpu 2dd por forviŝi du liniojn. ---> 1) Rozoj estas ruĝaj, ---> 2) Ŝlimo estas amuza, ---> 3) Violoj estas bluaj, ---> 4) Mi havas aŭton, ---> 5) Horloĝoj diras kioma horo estas, ---> 6) Sukero estas dolĉa, ---> 7) Kaj tiel vi estas. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.7: LA KOMANDO DE MALFARO ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. ** 1. Movu la kursoron ĉe la suba linio markita per ---> kaj metu ĝin sur la unuan eraron. 2. Tajpu x por forviŝi la unuan nedeziratan signon. 3. Nun tajpu u por malfari la lastan plenumitan komandon. 4. Ĉi-foje, riparu ĉiujn erarojn en la linio kaj ĝia originala stato. 5. Nun tajpu majusklan U por igi la linion al ĝia antaŭa stato. 6. Nun tajpu u kelkfoje por malfari la U kaj antaŭajn komandojn. 7. Nun tajpu CTRL-R (premante la CTRL klavon dum vi premas R) kelkfoje por refari la komandojn (malfari la malfarojn). ---> Koorektii la erarojn sur tiuu ĉi liniio kaj remettu illlin per malfaro. 8. Tiuj estas tre utilaj komandoj. Nun moviĝu al la leciono 2 RESUMO. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2 RESUMO 1. Por forviŝi ekde la kursoro ĝis la sekvanta vorto, tajpu: dw 2. Por forviŝi ekde la kursoro ĝis la fino de la linio, tajpu: d$ 3. Por forviŝi tutan linion, tajpu: dd 4. Por ripeti movon, antaŭmetu nombron: 2w 5. La formato de ŝanĝa komando estas: operatoro [nombro] movo kie: operatoro - estas tio, kio farendas, kiel d por forviŝi [nombro] - estas opcia nombro por ripeti la movon movo - movas sur la teksto por operacii, kiel ekzemple w (vorto), $ (ĝis fino de linio), ktp. 6. Por moviĝi al la komenco de la linio, uzu nul: 0 7. Por malfari antaŭajn agojn, tajpu: u (minuskla u) Por malfari ĉiujn ŝanĝojn sur la linio, tajpu: U (majuskla U) Por refari la malfarojn, tajpu: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3.1 LA KOMANDO DE METO ** Tajpu p por meti tekston forviŝitan antaŭe post la kursoro. ** 1. Movu la kursoron ĉe la unua ---> suba linio. 2. Tajpu dd por forviŝi la linion kaj konservi ĝin ene de reĝistro de Vim. 3. Movu la kursoron ĉe la linio c), SUPER kie la forviŝita linio devus esti. 4. Tajpu p por meti la linion sub la kursoron. 5. Ripetu la paŝojn 2 ĝis 4 por meti ĉiujn liniojn en la ĝusta ordo. ---> d) Ĉu ankaŭ vi povas lerni? ---> b) Violoj estas bluaj, ---> c) Inteligenteco lerneblas, ---> a) Rozoj estas ruĝaj, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3.2 LA KOMANDO DE ANSTATAŬIGO ** Tajpu rx por anstataŭigi la signon ĉe la kursoro per x . ** 1. Movu la kursoron ĉe la unua suba linio markita per --->. 2. Movu la kursoron ĝis la unua eraro. 3. Tajpu r kaj la signon, kiu devus esti tie. 4. Ripetu paŝojn 2 kaj 3 ĝis kiam la unua linio egalas la duan. ---> Kiem tiu lanio estis tajpita, iu pramis la naĝuftajn klovojn! ---> Kiam tiu linio estis tajpita, iu premis la neĝustajn klavojn! 5. Nun moviĝu al la leciono 3.3. RIMARKO: Memoru, ke vi devus lerni per uzo, kaj ne per memorado. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3.3 LA OPERATORO DE ŜANĜO ** Por ŝanĝi ĝis la fino de la vorto, tajpu ce . ** 1. Movu la kursoron ĉe la unua suba linio markita per --->. 2. Metu la kursoron sur la d en lduzw 3. Tajpu ce kaj la ĝustan vorton (en tiu ĉi kazo, tajpu inio ). 4. Premu kaj moviĝu al la sekvanta signo, kiu bezonas ŝanĝon. 5. Ripetu la paŝojn 3 kaj 4 ĝis kiam la unua frazo egalas la duan. ---> Tiu lduzw havas kelkajn vortojn, kiii bezas ŝanĝon per la ŝanĝooto. ---> Tiu linio havas kelkajn vortojn, kiuj bezonas ŝanĝon per la ŝanĝoperatoro. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3.4 PLIAJ ŜANĜOJ PER c ** La operatoro de ŝanĝo uzeblas kun la sama movo kiel forviŝo. ** 1. La operatoro de ŝanĝo funkcias sammaniere kiel forviŝo. La formato estas: c [nombro] movo 2. La movoj estas samaj, kiel ekzemple w (vorto) kaj $ (fino de linio). 3. Moviĝu ĉe la unua suba linio markita per --->. 4. Movu la kursoron al la unua eraro. 5. Tajpu c$ kaj tajpu la reston de la linio kiel la dua kaj premu . ---> La fino de ĉi tiu linio bezonas helpon por igi ĝin same kiel la dua. ---> La fino de ĉi tiu linio bezonas korektojn per uzo de la komando c$ RIMARKO: Vi povas uzi la klavon Retropaŝo por korekti erarojn dum vi tajpas. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3 RESUMO 1. Por remeti tekston, kiun vi ĵus forviŝis, tajpu p. Tio metas la forviŝitan tekston POST la kursoro (se linio estis forviŝita, ĝi iros en la linion sub la kursoro). 2. Por anstataŭigi la signon sub la kursoro, tajpu r kaj tiam la signon kion vi deziras havi tie. 3. La operatoro de ŝanĝo ebligas al vi ŝanĝi ekde la kursoro, ĝis kie la movo iras. Ekz. tajpu ce por ŝanĝi ekde la kursoro ĝis la fino de la vorto, c$ por ŝanĝi ĝis la fino de la linio. 4. La formato de ŝanĝo estas: c [nombro] movo Nun daŭrigu al la sekvanta leciono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton. Tajpu G por moviĝi al linio en la dosiero. ** RIMARKO: Legu la tutan lecionon antaŭ ol plenumi iun paŝon ajn!! 1. Premu la klavon Ctrl kaj premu g . Oni nomas tion CTRL-G. Mesaĝo aperos ĉe la suba parto de la paĝo kun la dosiernomo kaj la pozicio en la dosiero. Memoru la numeron de la linio por paŝo 3. RIMARKO: Vi eble vidas la pozicion de la kursoro ĉe la suba dekstra angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas ŝaltita (vidu :help 'ruler') 2. Premu G por moviĝi ĉe la subo de la dosiero. Tajpu gg por moviĝi ĉe la komenco de la dosiero. 3. Tajpu la numeron de la linio kie vi estis kaj poste G . Tio removos vin al la linio, kie vi estis kiam vi unue premis CTRL-G. 4. Se vi sentas vin komforta, plenumu paŝojn 1 ĝis 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 4.2 LA KOMANDO DE SERĈO ** Tajpu / kaj poste frazon por serĉi la frazon. ** 1. En normala reĝimo, tajpu la / signon. Rimarku, ke ĝi kaj la kursoro aperas ĉe la suba parto de la ekrano kiel por la : komando. 2. Nun tajpu 'errarro' . Tio estas la vorto, kion vi volas serĉi. 3. Por serĉi la saman frazon denove, simple tajpu n . Por serĉi la saman frazon denove en la retrodirekto, tajpu N . 4. Por serĉi frazon en la retrodirekto, uzu ? anstataŭ / . 5. Por reiri tien, el kie vi venis, premu CTRL-O (Premu Ctrl kaj o literon o). Ripetu por pli retroiri. CTRL-I iras antaŭen. ---> "errarro" ne estas maniero por literumi eraro; errarro estas eraro. RIMARKO: Kiam la serĉo atingas la finon de la dosiero, ĝi daŭras ĉe la komenco, krom se la agordo 'wrapscan' estas malŝaltita. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 4.3 SERĈO DE KONGRUAJ KRAMPOJ ** Tajpu % por trovi kongruan ), ] aŭ } ** 1. Poziciu la kursoron sur iun (, [ aŭ { en la linio markita per --->. 2. Nun tajpu la % signon. 3. La kursoro moviĝas al la kongrua krampo. 4. Tajpu % por movi la kursoron al la alia kongrua krampo. 5. Movu la kursoron al la alia (, ), [, ], {, } kaj observu tion, kion % faras. ---> Ĉi tiu ( estas testa linio kun (-oj, [-oj, ]-oj kaj {-oj, }-oj en ĝi. )) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 4.4 LA KOMANDO DE ANSTATAŭIGO ** Tajpu :s/malnova/nova/g por anstataŭigi 'nova' per 'malnova'. ** 1. Movu la kursoron al la suba linio markita per --->. 2. Tajpu :s/laa/la . Rimarku, ke la komando ŝanĝas nur la unuan okazaĵon de "laa" en la linio. 3. Nun tajpu :s/laa/la/g . Aldono de g opcio signifas mallokan anstataŭigon en la linio. Ĝi ŝanĝas ĉiujn okazaĵojn de "laa" en la linio. ---> laa plej bona tempo por vidi florojn estas en laa printempo. 4. Por ŝanĝi ĉiujn okazaĵojn de iu ĉena signo inter du linioj, tajpu :#,#s/malnova/nova/g kie #,# estas la numeroj de linioj de la intervalo de la linioj kie la anstataŭigo okazos. Tajpu :%s/malnova/nova/g por ŝanĝi ĉiujn okazaĵojn en la tuta dosiero. Tajpu :s/malnova/nova/gc por trovi ĉiujn okazaĵojn en la tuta dosiero, kun invitilo ĉu anstataŭigi aŭ ne. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 4 RESUMO 1. CTRL-G vidigas vian pozicion en la dosiero kaj la staton de la dosiero. G movas la kursoron al la fino de la dosiero. numero G movas la kursoron al numero de tiu linio. gg movas la kursoron al la unua linio. 2. Tajpo de / kaj frazon serĉas la frazon antaŭen. Tajpo de ? kaj frazon serĉas la frazon malantaŭen. Post serĉo, tajpu n por trovi la sekvantan okazaĵon en la sama direkto aŭ N por serĉi en la mala direkto. CTRL-O movas vin al la antaŭaj pozicioj, CTRL-I al la novaj pozicioj. 3. Tajpo de % kiam la kursoro estas sur (,),[,],{ aŭ } moviĝas al ĝia kongruo. 4. Por anstataŭigi 'nova' en la unua 'malnova' en linio :s/malnova/nova Por anstataŭigi 'nova' en ĉiuj 'malnova'-oj en linio :s/malnova/nova/g Por anstataŭigi frazon inter du #-aj linioj :#,#s/malnova/nova/g Por anstataŭigi ĉiujn okazaĵojn en la dosiero :%s/malnova/nova/g Por demandi konfirmon ĉiu-foje, aldonu 'c' :%s/malnova/nova/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON ** Tajpu :! sekvata de ekstera komando por plenumi la komandon. ** 1. Tajpu la konatan komandon : por pozicii la kursoron ĉe la suba parto de la ekrano. Tio ebligas tajpadon de komando en komanda linio. 2. Nun tajpu la ! (krisigno) signon. Tio ebligas al vi plenumi iun eksteran ŝelan komandon ajn. 3. Ekzemple, tajpu ls post ! kaj tajpu . Tio listigos la enhavon de la dosierujo, same kiel se vi estis en ŝela invito. Aŭ uzu :!dir se ls ne funkcias. RIMARKO: Eblas plenumi iun eksteran komandon ajn tiamaniere, ankaŭ kun argumentoj. RIMARKO: Ĉiuj : komandoj devas finiĝi per tajpo de Ekde nun, ni ne plu mencios tion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 5.2 PLI PRI KONSERVO DE DOSIERO ** Por konservi la faritajn ŝanĝojn en la teksto, tajpu :w DOSIERNOMO. ** 1. Tajpu !dir aŭ !ls por akiri liston de via dosierujo. Vi jam scias, ke vi devas tajpi post tio. 2. Elektu dosieron, kiu ankoraŭ ne ekzistas, kiel ekzemple TESTO. 3. Nun tajpu: :w TESTO (kie TESTO estas la elektita dosiernomo) 4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO. Por kontroli tion, tajpu :!dir aŭ :!ls denove por vidigi vian dosierujon. RIMARKO: Se vi volus eliri el Vim kaj restartigi ĝin denove per vim TESTO, la dosiero estus precize same kiel kopio de la instruilo kiam vi konservis ĝin. 5. Nun forviŝu la dosieron tajpante (MS-DOS): :!del TESTO aŭ (UNIKSO): :!rm TESTO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 5.3 APARTIGI KONSERVENDAN TESTON ** Por konservi parton de la dosiero, tajpu v movo :w DOSIERNOMO ** 1. Movu la kursoron al tiu linio. 2. Premu v kaj movu la kursoron al la kvina suba ero. Rimarku, ke la teksto emfaziĝas. 3. Premu la : signon. Ĉe la fino de la ekrano :'<,'> aperos. 4. Tajpu w TESTO , kie TESTO estas dosiernomo, kiu ankoraŭ ne ekzistas. Kontrolu, ke vi vidas :'<,'>w TESTO antaŭ ol premi . 5. Vim konservos la apartigitajn liniojn al la dosiero TESTO. Uzu :dir aŭ :!ls por vidigi ĝin. Ne forviŝu ĝin. Ni uzos ĝin en la sekvanta leciono. RIMARKO: Premo de v komencas Viduman apartigon. Vi povas movi la kursoron por pligrandigi aŭ malpligrandigi la apartigon. Tiam vi povas uzi operatoron por plenumi ion kun la teksto. Ekzemple, d forviŝas la tekston. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 5.4 AKIRI KAJ KUNFANDI DOSIEROJN ** Por enmeti la enhavon de dosiero, tajpu :r DOSIERNOMON ** 1. Movu la kursoron tuj super ĉi tiu linio. RIMARKO: Post plenumo de paŝo 2, vi vidos tekston el la leciono 5.3. Tiam moviĝu SUBEN por vidi tiun lecionon denove. 2. Nun akiru vian dosieron TESTO uzante la komandon :r TESTO kie TESTO estas la nomo de la dosiero, kiun vi uzis. La dosiero, kion vi akiras, estas metita sub la linio de la kursoro. 3. Por kontroli, ĉu la dosiero akiriĝis, retromovu la kursoron kaj rimarku, ke estas nun du kopioj de la leciono 5.3, la originala kaj la versio mem de la dosiero. RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, :r !ls legas la eliron de la komando ls kaj metas ĝin sub la kursoron. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 5 RESUMO 1. :!komando plenumas eksteran komandon. Iuj utilaj ekzemploj estas: (MS-DOS) (UNIKSO) :!dir :!ls - listigas dosierujon :!del DOSIERNOMO :!rm DOSIERNOMO - forviŝas la dosieron DOSIERNOMO 2. :w DOSIERNOMO konservas la nunan dosieron de Vim al disko kun la nomo DOSIERNOMO. 3. v movo :w DOSIERNOMO konservas la Viduman apartigon de linioj en dosiero DOSIERNOMO. 4. :r DOSIERNOMO akiras la dosieron DOSIERNOMO el la disko kaj metas ĝin sub la pozicion de la kursoro. 5. :r !dir legas la eligon de la komando dir kaj metas ĝin sub la pozicion de la kursoro. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 6.1 LA KOMANDO DE MALFERMO ** Tajpu o por malfermi linion sub la kursoro kaj eniri Enmetan reĝimon. ** 1. Movu la kursoron al la suba linio markita per --->. 2. Tajpu la minusklan literon o por malfermi linion SUB la kursoro kaj eniri la Enmetan reĝimon. 3. Nun tajpu tekston kaj premu por eliri el la Enmeta reĝimo. ---> Post tajpo de o la kursoro moviĝas al la malfermata linio en Enmeta reĝimo. 4. Por malfermi linion SUPER la kursoro, nur tajpu majusklan O , anstataŭ minusklan o. Provu tion per la suba linio. ---> Malfermu linion SUPER tiu tajpante O dum la kursoro estas sur tiu linio. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 6.2 LA KOMANDO DE POSTALDONO ** Tajpu a por enmeti POST la kursoro. ** 1. Movu la kursoron ĉe la komenco de la linio markita per --->. 2. Premu e ĝis kiam la kursoro estas ĉe la fino de li. 3. Tajpu a (minuskle) por aldoni tekston POST la kursoro. 4. Kompletigu la vorton same kiel la linio sub ĝi. Premu por eliri el la Enmeta reĝimo. 5. Uzu e por moviĝi al la sekvanta nekompleta vorto kaj ripetu paŝojn 3 kaj 4. ---> Ĉi tiu lin ebligos vin ekz vin postal tekston al linio. ---> Ĉi tiu linio ebligos vin ekzerci vin postaldoni tekston al linio. RIMARKO: Ĉiu a, i kaj A iras al la sama Enmeta reĝimo, la nura malsamo estas tie, kie la signoj estas enmetitaj. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 6.3 ALIA MANIERO POR ANSTATAŬIGI ** Tajpu majusklan R por anstataŭigi pli ol unu signo. ** 1. Movu la kursoron al la unua suba linio markita per --->. Movu la kursoron al la komenco de la unua xxx . 2. Nun premu R kaj tajpu la nombron sub ĝi en la dua linio, por ke ĝi anstataŭigu la xxx . 3. Premu por foriri el la Anstataŭiga reĝimo. Rimarku, ke la cetera parto de la linio restas neŝanĝata. 4. Ripetu la paŝojn por anstataŭigi la restantajn xxx. ---> Aldono de 123 al xxx donas al vi xxx. ---> Aldono de 123 al 456 donas al vi 579. RIMARKO: Anstataŭiga reĝimo estas same kiel Enmeta reĝimo, sed ĉiu signo tajpita forviŝas ekzistan signon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 6.4 KOPII KAJ ALGLUI TEKSTON ** Uzu la y operatoron por kopii tekston, kaj p por alglui ĝin ** 1. Iru al la linio markita per ---> sube kaj poziciu la kursoron post "a)". 2. Komencu la Viduman reĝimon per v kaj movu la kursoron tuj antaŭ "unua". 3. Tajpu y por kopii la emfazitan tekston. 4. Movu la kursoron ĉe la fino de la linio: j$ 5. Tajpu p por alglui la tekston. Tiam tajpu: a dua . 6. Uzu Viduman reĝimon por apartigi " ero.", kopiu ĝin per y , moviĝu ĉe la fino de la sekvanta linio per j$ kaj algluu la tekston tie per p . ---> a) tio estas la unua ero. b) RIMARKO: vi povas ankaŭ uzi y kiel operatoro; yw kopias unu vorton. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 6.5 AGORDI OPCION ** Agordu opcion por ke serĉo aŭ anstataŭigo ignoru usklecon ** 1. Serĉu 'ignori' per tajpo de /ignori Ripetu plurfoje premante n . 2. Ŝaltu la opcion 'ic' (ignori usklecon) per: :set ic 3. Nun serĉu 'ignori' denove premante n Rimarku, ke Ignori kaj IGNORI estas nun troveblas. 4. Ŝaltu la opciojn 'hlsearch' kaj 'incsearch': :set hls is 5. Nun retajpu la serĉan komandon kaj vidu kio okazas: /ignore 6. Por malŝalti ignoron de uskleco: :set noic RIMARKO: Por forigi emfazon de kongruo, tajpu: :nohlsearch RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu \c en la frazo: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 6 RESUMO 1. Tajpu o por malfermi linion SUB la kursoro kaj eki en Enmeta reĝimo. 1. Tajpu O por malfermi linion SUPER la kursoro. 2. Tajpu a por enmeti tekston POST la kursoro. Tajpu A por enmeti tekston post la fino de la linio. 3. La e komando movas la kursoron al la fino de vorto. 4. la y operatoro kopias tekston, p algluas ĝin. 5. Tajpo de majuskla R eniras la Anstataŭigan reĝimon ĝis kiam estas premita. 6. Tajpo de ":set xxx" ŝaltas la opcion "xxx". Iuj opcioj estas: 'ic' 'ignorecase' ignori usklecon dum serĉo 'is' 'incsearch' montru partan kongruon dum serĉo 'hls' 'hlsearch' emfazas ĉiujn kongruajn frazojn Vi povas uzi aŭ la longan, aŭ la mallongan nomon de opcio. 7. Antaŭaldonu "no" por malŝalti la opcion: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 7.1 AKIRI HELPON ** Uzu la helpan sistemon ** Vim havas ampleksan helpan sistemon. Por komenciĝi, provu unu el la tiuj tri: - premu la klavon (se vi havas ĝin) - premu la klavon (se vi havas ĝin) - tajpu :help Legu la tekston en la helpfenestro por trovi kiel helpo funkcias. Tajpu CTRL-W CTRL-W por salti de unu fenestro al la alia. Tajpu :q por fermi la helpan fenestron. Vi povas trovi helpon pri io ajn aldonante argumenton al la komando ":help". Provu tiujn (ne forgesu premi ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 7.2 KREI STARTAN SKRIPTON ** Ebligu kapablojn de Vim ** Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defaŭlte malŝaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc". 1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo: :e ~/.vimrc por Unikso :e $VIM/_vimrc por MS-Vindozo 2. Nun legu la enhavon de la ekzempla "vimrc" :r $VIMRUNTIME/vimrc_example.vim 3. Konservu la dosieron per: :w La sekvantan fojon, kiam vi lanĉas Vim, ĝi uzos sintaksan emfazon. Vi povas aldoni ĉiujn viajn preferatajn agordojn al tiu dosiero "vimrc". Por pli da informoj, tajpu :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 7.3 KOMPLETIGO ** Kompletigo de komanda linio per CTRL-D kaj ** 1. Certigu ke Vim estas en kongrua reĝimo: :set nocp 2. Rigardu tiujn dosierojn, kiuj ekzistas en la dosierujo: :!ls aŭ :!dir 3. Tajpu la komencon de komando: :e 4. Premu CTRL-D kaj Vim montros liston de komandoj, kiuj komencas per "e". 5. Premu kaj Vim kompletigos la nomon de la komando al ":edit". 6. Nun aldonu spaceton kaj la komencon de ekzistanta nomo: :edit DOSI 7. Premu . Vim kompletigos la nomon (se ĝi estas unika) RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj . Estas aparte utila por :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 7 RESUMO 1. Tajpu :help aŭ premu por malfermi helpan fenestron. 2. Tajpu :help kmd por trovi helpon pri kmd. 3. Tajpu CTRL-W CTRL-W por salti al alia fenestro. 4. Tajpu :q to fermi la helpan fenestron. 5. Kreu komencan skripton vimrc por konservi viajn agordojn. 6. Kiam vi tajpas : komandon, premu CTRL-D por vidi ĉiujn kompleteblojn. Premu por uzi unu kompletigon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tio konkludas la instruilon de Vim. Ĝi celis doni mallongan superrigardon de la redaktilo Vim, nur tion kio sufiĉas por ebligi al vi facilan uzon de la redaktilo. Estas nepre nekompleta, ĉar Vim havas multajn multajn pliajn komandojn. Legu la manlibron: ":help user-manual". Tiu instruilo estis verkita de Michael C. Pierce kaj Robert K. Ware, el la Koloradia Lernejo de Minejoj (Colorado School of Mines) uzante ideojn provizitajn de Charles Smith el la Stata Universitato de Koloradio (Colorado State University) Retpoŝto: bware@mines.colorado.edu. Modifita por Vim de Bram Moolenaar. Esperantigita fare de Dominique Pellé, 2008-04-01 Retpoŝto: dominique.pelle@gmail.com Lasta ŝanĝo: 2016-07-02 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!@pF}}vim80/tutor/tutor.pt.utf-8nu[=============================================================================== = B e m - v i n d o ao t u t o r i a l do V I M - Versão 1.8 pt_BR = =============================================================================== Vim é um poderoso editor que possui muitos comandos, tantos que seria impossível ensiná-los num tutorial como este, que é concebido para apresentar os comandos suficientes para permiti-lo usar facilmente o Vim como um editor de textos genérico. O tempo necessário para completar o tutorial é de cerca de 25-30 minutos, dependendo de quanto tempo é gasto praticando os comandos. ATENÇÃO: Os comandos nas lições modificam este texto. Faça uma cópia deste arquivo para praticar os comandos (se usou o "vimtutor", esta já é uma cópia). É importante lembrar que este tutorial é concebido para ensinar pela prática. Isso significa que você precisa executar os comandos para aprendê-los adequadamente. Se você somente ler o texto, esquecerá os comandos! Agora, certifique-se de que sua tecla Shift-Lock (ou Caps Lock) não esteja ativada e pressione a tecla j o bastante para mover o cursor até que a Lição 1.1 apareça inteiramente na tela. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 1.1: MOVER O CURSOR ** Para mover o cursor, pressione as teclas h,j,k,l conforme indicado. ** ^ k Dica: A tecla h está à esquerda e move à esquerda. < h l > A tecla l está à direita e move à direita. j A tecla j se parece com uma seta para baixo. v 1. Mova o cursor pela tela até que você se sinta confortável. 2. Segure pressionada a tecla (j) até haver repetição. Agora você já sabe como ir para a próxima lição. 3. Usando a tecla j, vá para a Lição 1.2. NOTA: Se está inseguro sobre o que digitou, pressione para colocá-lo no modo Normal. Então redigite o comando que queria. NOTA: As teclas de cursor funcionam também. Mas usando hjkl, tão logo esteja acostumado, você poderá se mover muito mais rapidamente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 1.2: SAIR DO VIM !! NOTA: Antes de executar quaisquer dos passos abaixo, leia a lição inteira !! 1. Pressione (para ter certeza de que está no modo Normal). 2. Digite: :q! . Assim, sai do editor SEM salvar qualquer mudança feita. 3. Repita o procedimento que o trouxe a este tutorial. O procedimento pode ter sido a digitação de: vimtutor . 4. Se memorizou estes passos e está confiante, execute os passos de 1 a 3 para sair e reentrar no editor. NOTA: :q! descarta qualquer mudança. Em uma próxima lição será ensinado como salvar as mudanças feitas em um arquivo. 5. Desça o cursor até a Lição 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 1.3: EDITAR TEXTOS - REMOÇÃO ** Pressione x para deletar o caractere sob o cursor. ** 1. Mova o cursor para a linha abaixo marcada com --->. 2. Para corrigir os erros, mova o cursor até que ele esteja sobre o caractere a ser deletado. 3. Pressione a tecla x para remover o caractere incorreto. 4. Repita os passos 2 até 4 até que a frase esteja correta. ---> A vvaca pullouu por ccimaa dda luuua. 5. Agora que a frase está correta, prossiga para a Lição 1.4. NOTA: Enquanto segue este tutorial, não tente memorizar, aprenda pelo uso. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 1.4: EDITAR TEXTOS - INSERÇÃO ** Pressione i para inserir texto. ** 1. Mova o cursor até a primeira linha abaixo marcada com --->. 2. Para deixar a primeira linha igual à segunda, mova o cursor para o primeiro caractere DEPOIS de onde o texto deverá ser inserido. 3. Pressione i e digite as adições necessárias. 4. Assim que cada erro for corrigido pressione para retornar ao modo Normal. Repita os passos 2 até 4 para corrigir a frase. ---> Tem text fatado nesta . ---> Tem algum texto faltando nesta linha. 5. Quando se sentir à vontade com a inserção de texto, mova o cursor para a Lição 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 1.5: EDITAR TEXTO - ADICIONAR ** Pressione A para adicionar texto. ** 1. Mova o cursor para a primeira linha abaixo marcada com --->. Não importa sobre qual caractere o cursor estará na linha. 2. Pressione A e digite as adições necessárias. 3. Quando adicionar o texto, pressione para retornar ao modo Normal. 4. Mova o cursor para a segunda linha marcada ---> e repita os passos 2 e 3 para corrigir a frase. ---> Há algum texto faltando nes Há algum texto faltando nesta linha. Há algum texto faltan ---> Há algum texto faltando aqui. 5. Quando se sentir confortável adicionando texto, vá para a Lição 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 1.6: EDITAR UM ARQUIVO ** Use :wq para salvar um arquivo e sair. ** !! NOTA: Leia toda a lição antes de executar as instruções!! 1. Saia deste tutorial como o fez na lição 1.2: :q! Ou, se tiver acesso a outro terminal, faça o seguinte nele. 2. No prompt do shell, digite esse comando: vim tutor 'vim' é o comando para iniciar o editor Vim e 'tutor' é o nome do arquivo que você quer editar. Use um arquivo que possa ser modificado. 3. Insira e apague texto tal como aprendeu nas lições anteriores. 4. Salve o arquivo com as mudanças e saia do Vim com: :wq 5. Se tiver saído do vimtutor no passo 1, reinicie o vimtutor e vá para o resumo seguinte. 6. Após ler os passos acima e compreendê-los, execute-os. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIÇÃO 1 1. O cursor é movido usando tanto as teclas de seta quanto as teclas hjkl. h (esquerda) j (para baixo) k (para cima) l (direita) 2. Para entrar no Vim a partir de um shell digite: vim NOMEDOARQUIVO 3. Para sair do Vim digite: :q! para descartar as alterações. OU digite: :wq para salvar as alterações. 4. Para deletar um caractere sob o cursor no modo Normal digite: x 5. Para inserir texto na posição do cursor enquanto estiver no modo Normal digite: i digite o texto inserir depois do cursor A digite o texto adicionar no final da linha NOTA: Pressionando você irá para o modo Normal ou cancelará um comando ainda incompleto. Agora continue com a Lição 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 2.1: COMANDOS DE REMOÇÃO ** Digite dw para apagar uma palavra. ** 1. Pressione para ter certeza de que está no modo Normal. 2. Mova o cursor até a linha abaixo marcada com --->. 3. Mova o cursor até o começo da palavra que precisa ser deletada. 4. Digite dw para fazer a palavra desaparecer. NOTA: A letra d vai aparecer na última linha da tela enquanto você a digita. O Vim o está esperando digitar um w . Se digitou alguma coisa errada, pressione e comece de novo. ---> Tem a algumas oi palavras diversão que não pertencem papel a esta frase. 5. Repita os passos 3 ao 4 até que a frase esteja correta e vá para a Lição 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 2.2: MAIS COMANDOS DE REMOÇÃO ** Digite d$ para deletar até o fim da linha. ** 1. Pressione para ter certeza de estar no modo Normal. 2. Mova o cursor até a linha abaixo marcada com --->. 3. Mova o cursor até o fim da linha correta (DEPOIS do primeiro . ). 4. Digite d$ para apagar até o fim da linha. ---> Alguém digitou o fim desta linha duas vezes. desta linha duas vezes. 5. Vá para a lição 2.3 para entender o funcionamento deste comando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 2.3: SOBRE OPERADORES E MOVIMENTOS Muitos comandos que mudam texto são feitos de um operador e de um movimento. O formato para um comando apagar com o operador de remoção d tem a seguinte forma: d movimento Onde: d - é o operador apagar. movimento - é o movimento sobre o qual o operador age (listado abaixo). Uma pequena lista de teclas de movimento: w - até o início da próxima palavra, excluindo seu primeiro caractere. e - até o fim da palavra atual, incluindo seu último caractere. $ - até o fim da linha, incluindo seu último caractere. Portanto, digitar de apaga do cursor ao fim da palavra. NOTA: Pressionar apenas a tecla de movimento em modo Normal, sem o operador, faz o cursor se mover como especificado na lista de teclas de movimento. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 2.4: USAR UM CONTADOR PARA UM MOVIMENTO ** Digitar um número antes de um movimento repete-o o tanto de vezes. ** 1. Mova o cursor para o começo da linha marcada com ---> abaixo. 2. Digite 2w para mover o cursor duas palavras adiante. 3. Digite 3e para mover o cursor para o fim da terceira palavra adiante. 4. Digite 0 (zero) para mover para o início da linha. 5. Repita os passos 2 e 3 com diferentes números. ---> Esta é uma linha com algumas palavras para permiti-lo fazer movimentos. 6. Vá para a Lição 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 2.5: USAR UM CONTADOR PARA APAGAR MAIS ** Digitar um número com um operador repete-o esse número de vezes. ** Você deve inserir um contador entre o operador de remoção e o de movimento mencionados acima para apagar mais: d número movimento 1. Movimente o cursor para a primeira palavra em LETRAS MAIÚSCULAS na linha marcada com --->. 2. Digite d2w para deletar as duas palavras em LETRAS MAIÚSCULAS. 3. Repita os passos 1 e 2 com diferentes contadores para deletar as palavras em LETRAS MAIÚSCULAS com um comando. ---> esta ABC DE linha FGHI JK LMN OP de palavras está Q RS TUV limpa. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 2.6: TRABALHAR COM LINHAS ** Digite dd para apagar uma linha inteira. ** Em virtude da frequência em deletar uma linha inteira, os desenvolvedores do Vi decidiram que seria mais simples digitar dois d para apagar uma linha. 1. Mova o cursor até a segunda linha da frase abaixo. 2. Digite dd para apagar a linha. 3. Agora mova até a quarta linha. 4. Digite 2dd para apagar duas linhas. ---> 1) Rosas são vermelhas, ---> 2) Lama é divertida, ---> 3) Violetas são azuis, ---> 4) Eu tenho um carro, ---> 5) Relógios dizem as horas, ---> 6) Açúcar é doce, ---> 7) Assim como você. Notas do tradutor: Lama (mud) em inglês pode significar fofoca, difamação. Há rima no texto original. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 2.7: O COMANDO UNDO (DESFAZER) ** Pressione u para desfazer os últimos comandos, U recupera a linha inteira.** 1. Mova o cursor para a linha abaixo marcada com ---> e posicione-o sobre o primeiro erro. 2. Digite x para deletar o primeiro caractere errado. 3. Agora, digite u para desfazer o último comando executado. 4. Desta vez, corrija todos os erros na linha usando o comando x . 5. Agora, digite um U maiúsculo para retornar a linha ao seu estado original. 6. Digite u algumas vezes para desfazer o U e os comandos anteriores. 7. Digite CTRL-R (segurando a tecla CTRL enquanto digita R) algumas vezes para refazer os comandos (desfazer os undos). ---> Corriija os erros nnesta linha e reetorne-os com undo. 8. Esses comandos são muito úteis. Agora vá para o resumo da Lição 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIÇÃO 2 1. Para apagar do cursor até a próxima palavra, digite: dw 2. Para apagar do cursor até o fim de uma linha, digite: d$ 3. Para apagar uma linha inteira, digite: dd 4. Para repetir um movimento, adicione antes um número: 2w 5. O formato para um comando no modo Normal é: operador [número] movimento onde: operador - é o que será feito, como d para apagar [número] - quantas vezes o comando será repetido movimento - movimento sobre o texto que receberá a operação, como w (palavra), $ (até o fim da linha), etc. 6. Para ir ao início da linha, use um zero: 0 7. Para desfazer uma ação anterior, digite: u (minúsculo) Para desfazer todas as alterações em uma linha, digite: U (maiúsculo) Para desfazer o que foi desfeito, digite: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 3.1: O COMANDO COLAR ** Digite p para colar após o cursor o que acabou de apagar. ** 1. Mova o cursor até a primeira linha marcada com --->. 2. Digite dd para apagar a linha e guardá-la num registro do Vim. 3. Mova o cursor até a linha c) ACIMA de onde a linha apagada deveria estar. 4. No modo Normal, digite p para inserir a linha. 5. Repita os passos 2 ao 4 para pôr todas as linhas na ordem correta. ---> d) Você pode aprender também? ---> b) Violetas são azuis, ---> c) Inteligência se aprende, ---> a) Rosas são vermelhas, Nota do tradutor: Há rima no original. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 3.2: O COMANDO SUBSTITUIR ** Digite rx para substituir o caractere sob o cursor por x . ** 1. Mova o cursor até a primeira linha abaixo marcada com --->. 2. Mova o cursor até que esteja sobre o primeiro erro. 3. Digite r e então o caractere que deveria estar lá. 4. Repita os passos 2 e 3 até que a primeira linha esteja igual à segunda. ---> Quendo este limha foi dugitada, alguem pressioniu algumas teclas erradzs! ---> Quando esta linha foi digitada, alguém pressionou algumas teclas erradas! 5. Agora vá para a Lição 3.3. NOTA: Lembre-se que você deve aprender pelo uso, não pela memorização. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 3.3: O OPERADOR CHANGE (MUDAR) ** Para alterar até o fim de uma palavra, digite ce . ** 1. Mova o cursor até a primeira linha abaixo marcada com --->. 2. Posicione o cursor sobre o u em lunba. 3. Digite ce e a palavra correta (nesse caso, digite 'inha'.) 4. Pressione e mova para o próximo caractere a ser alterado. 5. Repita os passos 3 e 4 até que a primeira frase esteja igual à segunda. ---> Essa lunba tem pwlesmfr que ocrimmm soi alteradas cup o comando change. ---> Essa linha tem palavras que precisam ser alteradas com o comando change. Note que ce não somente substitui a palavra, mas também o coloca no modo de Inserção. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 3.4: MAIS MUDANÇAS USANDO c ** O operador change é usado com os mesmos movimentos que o delete. ** 1. O operador change trabalha da mesma maneira que o delete. O formato é: c [número] movimento 2. Os movimentos também são os mesmos: w (palavra) e $ (fim da linha). 3. Mova até a primeira linha abaixo marcada com --->. 4. Mova o cursor até o primeiro erro. 5. Digite c$ e digite o resto da segunda linha para torná-las iguais e pressione . ---> O fim desta linha precisa de ajuda para ficar igual à segunda. ---> O fim desta linha precisa ser corrigido usando o comando c$. NOTA: Você pode usar a tecla Backspace para corrigir erros enquanto digita. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIÇÃO 3 1. Para reinserir um texto que já foi apagado, digite p . Isso coloca o texto deletado APÓS o cursor (se uma linha é deletada ela será inserida na linha abaixo do cursor). 2. Para substituir o caractere sob o cursor, digite r e então o caractere que substituirá o original. 3. O comando change possibilita mudar do cursor até onde o movimento for. Ex: Digite ce para mudar do cursor até o fim de uma palavra, c$ para mudar até o fim da linha. 4. O formato para uma operação change é: c [número] movimento Agora vá para a próxima lição. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 4.1: LOCALIZAÇÃO DO CURSOR E ESTADO DO ARQUIVO ** Digite CTRL-G para mostrar sua localização no arquivo e seu estado. Digite G para mover para uma linha do arquivo. ** Nota: Leia esta lição inteira antes de executar qualquer um dos passos!! 1. Segure pressionada a tecla Ctrl e pressione g . Chamamos isso de CTRL-G. Uma mensagem aparecerá no rodapé da página com o nome do arquivo e a sua posição no arquivo. Lembre-se do número da linha para o Passo 3. NOTA: A posição do cursor pode estar visível no canto direito inferior da tela. Isso acontece quando a opção 'ruler' está ativa (veja :help 'ruler' ). 2. Pressione G para se mover até o fim do arquivo. Digite gg para se mover até o início do arquivo. 3. Digite o número da linha em que estava e então G . Assim o cursor retornará à linha em que estava quando pressionou CTRL-G. 4. Se estiver seguro para fazê-los, execute os passos 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 4.2: O COMANDO BUSCAR ** Digite / seguido por uma frase para procurar por ela. ** 1. No modo Normal digite o caractere / . Note que ele e o cursor aparecem no rodapé da tela, como ocorre com o comando : . 2. Agora digite 'errroo' . Esta é a palavra que quer procurar. 3. Para buscar a mesma palavra de novo, simplesmente tecle n . Para buscar a mesma palavra na direção oposta, tecle N . 4. Se quer procurar por uma frase de trás para frente, use ? em vez de / . 5. Para voltar aonde estava, pressione CTRL-O (mantenha a tecla Ctrl pressionada e pressione a tecla o). Repita para voltar a outras posições. CTRL-I segue para posições mais recentes. ---> "errroo" não é uma maneira de escrever erro; errroo é um erro. NOTA: Quando a busca atinge o fim do arquivo ela continuará do começo, a menos que a opção 'wrapscan' esteja desativada. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 4.3: BUSCA DE PARÊNTESES CORRESPONDENTES ** Digite % para encontrar um ),], ou } correspondente. ** 1. Posicione o cursor em qualquer (, [, ou { na linha abaixo marcada com --->. 2. Agora digite o caractere % . 3. O cursor deve estar no parêntese ou colchete que casa com o primeiro. 4. Digite % para mover o cursor de volta ao primeiro colchete ou parêntese (por casamento). ---> Isto ( é uma linha de teste contendo (, [ ] e { }. )) Nota: Isso é muito útil para corrigir um programa com parêntese não-casado! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 4.4: O COMANDO SUBSTITUIR ** Digite :s/velho/novo/g para substituir 'velho' por 'novo'. ** 1. Mova o cursor para a linha abaixo marcada com --->. 2. Digite :s/aa/a . Note que este comando somente muda a primeira ocorrência na linha. 3. Agora digite :s/aa/a/g significando substituir globalmente na linha. Isto muda todas as ocorrências na linha. ---> aa melhor época para ver aas flores é aa primavera. 4. Para mudar toda ocorrência de uma string entre duas linhas, digite :#,#s/velho/novo/g onde #,# são os números das duas linhas. Digite :%s/velho/novo/g para mudar todas as ocorrências no arquivo inteiro. Digite :%s/velho/novo/gc para mudar todas as ocorrências no arquivo inteiro, com a opção de confirmar cada substituição. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIÇÃO 4 1. CTRL-G mostra em que ponto do arquivo está e o estado dele. G move para o fim do arquivo. número G move para a linha com esse número. gg move para a primeira linha. 2. Digitando / seguido por uma expressão procura À FRENTE por ela. Digitando ? seguido por uma expressão procura pela expressão de TRÁS PARA FRENTE. Após uma busca, digite n para achar a próxima ocorrência na mesma direção ou N para procurar na direção oposta. CTRL-O leva a posições antigas e CTRL-I a posições mais recentes. 3. Digitando % enquanto o cursor está sobre um (,),[,],{, ou } localiza o par que casa com ele. 4. Para substituir: o primeiro 'velho' de uma linha por 'novo' digite :s/velho/novo todos os 'velho' em uma linha por 'novo' digite :s/velho/novo/g expressões entre dois números (#) de linhas digite :#,#s/velho/novo todas as ocorrências no arquivo digite :%s/velho/novo/g Para confirmar cada substituição adicione 'c' :%s/velho/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 5.1: COMO EXECUTAR UM COMANDO EXTERNO ** Digite :! seguido por um comando externo para executá-lo. ** 1. Digite o familiar comando : para levar o cursor ao rodapé da tela. Isso o permite entrar um comando. 2. Agora digite o caractere ! (ponto de exclamação). Isso o permite executar qualquer comando do shell. 3. Como um exemplo digite ls seguindo o ! e então tecle . Isto mostrará uma listagem do seu diretório, como se você estivesse no prompt do shell. Ou use :!dir se ls não funcionar. NOTA: É possível executar qualquer comando externo dessa maneira, inclusive com argumentos. NOTA: Todos os comandos : devem ser finalizados teclando-se Daqui em diante não mencionaremos isso todas as vezes. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 5.2: MAIS SOBRE SALVAR ARQUIVOS ** Para salvar as alterações no texto, digite :w NOMEDOARQUIVO. ** 1. Digite :!dir ou :!ls para ter uma listagem de seu diretório. Você já deve saber que precisa teclar depois disso. 2. Escolha um nome de arquivo que ainda não exista, como TESTE. 3. Agora digite: :w TESTE (onde TESTE é o nome que você escolheu.) 4. Isto salva o arquivo inteiro (o Vim Tutor) com o nome TESTE. Para verificar isso, digite :!ls de novo para ver seu diretório. NOTA: Se sair do Vim e entrar de novo com o nome do arquivo TESTE, o arquivo deve ser uma cópia exata do tutorial quando você o salvou. 5. Agora remova o arquivo digitando (MS-DOS): :!del TESTE ou (Unix): :!rm TESTE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 5.3: SELECIONAR O TEXTO A SER SALVO ** Para salvar parte de um arquivo, digite v movimento :w NOMEDOARQUIVO ** 1. Mova o cursor para esta linha. 2. Pressione v e mova o cursor para o quinto item abaixo. Note que o texto é realçado. 3. Pressione o caractere : e note que aparecerá :'<,'> no lado inferior da tela. 4. Digite w TESTE , sendo TESTE um nome de arquivo que não existe ainda. Certifique-se de ver :'<,'>w TESTE antes de pressionar . 5. O Vim salvará as linhas selecionadas no arquivo TESTE. Use :!dir ou !:ls para vê-lo. Não o apague ainda! Nós o usaremos na próxima lição. NOTA: Pressionar v inicia o modo Visual de seleção. Você pode mover o cursor pela tela para tornar a seleção maior ou menor. Pode, então, usar um operador para executar alguma ação. Por exemplo, d apaga o texto. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 5.4: RECUPERAR E UNIR ARQUIVOS ** Para inserir o conteúdo de um arquivo, digite :r NOMEDOARQUIVO ** 1. Posicione o cursor logo acima desta linha. NOTA: Depois de executar o Passo 2 você verá a Lição 5.3. Então DESÇA o cursor para ver esta lição novamente. 2. Agora recupere o arquivo TESTE usando o comando :r TESTE onde TESTE é o nome do arquivo. O arquivo recuperado é colocado abaixo da linha atual do cursor. 3. Para verificar que o arquivo foi recuperado, volte com o cursor e verifique que agora existem duas cópias da Lição 5.3, a original e a versão do arquivo. NOTA: Você também pode ler a saída de um comando externo. Por exemplo, :r !ls lê a saída do comando ls e coloca o resultado abaixo do cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIÇÃO 5 1. :!comando executa um comando externo. Alguns exemplos úteis são: (MS-DOS) (UNIX) :!dir :!ls - lista conteúdo do diretório. :!del ARQUIVO :!rm ARQUIVO - remove ARQUIVO. 2. :w ARQUIVO salva o atual arquivo do Vim para o disco com o nome ARQUIVO. 3. v movimento :w ARQUIVO salva as linhas Visualmente selecionadas em ARQUIVO. 4. :r ARQUIVO recupera ARQUIVO do disco e o insere dentro do arquivo atual na posição do cursor. 5. :r !dir lê a saída do comando dir e coloca o resultado abaixo da posição atual do cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 6.1: O COMANDO ABRIR ** Digite o para abrir uma linha em baixo do cursor e ir para o modo de Inserção. ** 1. Mova o cursor para a linha abaixo marcada com --->. 2. Digite o (minúsculo) para abrir uma linha ABAIXO do cursor e ir para o modo de Inserção. 3. Agora digite algum texto e pressione para sair do modo de Inserção. ---> Após teclar o o cursor é colocado na linha aberta no modo de Inserção. 4. Para abrir uma linha ACIMA do cursor, simplesmente tecle um O maiúsculo, em vez de um o minúsculo. Tente isso na linha abaixo. ---> Abra uma linha acima desta teclando O enquanto o cursor está nesta linha. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 6.2: O COMANDO ADICIONAR ** Digite a para inserir texto DEPOIS do cursor. ** 1. Mova o cursor para o início da linha marcada com ---> . 2. Pressione e até o cursor ficar sobre o final de li . 3. Digite um a (minúsculo) para adicionar texto DEPOIS do caractere sob o cursor. 4. Complete a palavra conforme a linha abaixo. Pressione para sair do modo de Inserção. 5. Use e para mover para a próxima palavra incompleta repita os passos 3 e 4. ---> Esta lin o permite pratic a adiç de texto a uma linha. ---> Esta linha o permite praticar a adição de texto a uma linha. NOTA: a, i e A levam ao mesmo modo de Inserção, a única diferença é onde os caracteres são inseridos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 6.3: UMA OUTRA VERSÃO DO SUBSTITUIR ** Digite um R maiúsculo para substituir mais de um caractere. ** 1. Mova o cursor para a primeira linha abaixo marcada com --->. Mova o cursor para o início do primeiro xxx . 2. Agora pressione R e digite os números que estão abaixo dele, na segunda linha, para substituir o xxx . 3. Pressione para sair do modo de Substituição. Note que o resto da linha permanece inalterado. 4. Repita os passos para substituir os xxx restantes. ---> Adicionando 123 a xxx resulta em xxx. ---> Adicionando 123 a 456 resulta em 579. NOTA: O modo de Substituição é como o modo de Inserção, mas cada caractere digitado apaga um caractere existente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 6.4: COPIAR E COLAR TEXTO ** Use o operador y para copiar texto e p para colá-lo. ** 1. Vá à linha marcada com ---> abaixo e posicione o cursor após "a)". 2. Inicie o modo Visual com v e mova o cursor para logo antes de "primeiro". 3. Digite y para copiar o texto selecionado. 4. Mova o cursor para o fim da próxima linha: j$ 5. Digite p para colar o texto. Então, digite: o segundo . 6. Use o modo Visual para selecionar " item.", copie-o com y , mova para o fim da próxima linha com j$ e cole o texto com p . ---> a) esse é o primeiro item. b) NOTA: Você também pode usar y como um operador; por exemplo, yw copia uma palavra. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 6.5: CONFIGURAR PREFERÊNCIAS ** Configure uma preferência de modo que uma busca ou substituição ignore se as letras são maiúsculas ou minúsculas. ** 1. Procure por 'ignore' entrando: /ignore Repita várias vezes teclando n . 2. Configure a opção 'ic' (Ignore case) digitando: :set ic 3. Agora procure por 'ignore' de novo teclando: n Repita várias vezes. 4. Configure as opções 'hlsearch' e 'incsearch': :set hls is 5. Agora entre com o comando buscar de novo, e veja o que acontece: /ignore 6. Para desabilitar a diferenciação entre maiúsculas e minúsculas: :set noic NOTA: Para remover o realce dos termos localizados entre: :nohlsearch NOTA: Se quiser ignorar a diferença entre maiúsculas e minúsculas em apenas uma pesquisa, use \c no comando: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIÇÃO 6 1. Digite o para abrir uma linha ABAIXO do cursor e iniciar o modo de Inserção. Digite O para abrir uma linha ACIMA da linha onde o cursor está. 2. Digite a para adicionar texto DEPOIS do caractere onde está o cursor. Digite A para adicionar texto ao fim da linha. 3. O comando e move o cursor para o fim de uma palavra. 4. O operador y copia texto, p cola o texto copiado. 5. Digitando R entra-se no modo de Substituição até que seja pressionado. 6. Digitando ":set xxx" modifica-se a opção "xxx". Algumas opções são: 'ic' 'ignorecase' ignora diferença entre maiúsculas/minúsculas 'is' 'incsearch' realiza a busca enquanto se digita 'hls' 'hlsearch' realça todos os trechos localizados Você tanto pode usar o nome curto quanto o nome longo da opção. 7. Adicione o prefixo "no" para desabilitar uma opção: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LIÇÃO 7.1: OBTENDO AJUDA ** Use o sistema de ajuda do próprio Vim ** O Vim possui sistema de ajuda abrangente. Para começar, tente algum desses três: - pressione a tecla (se você tiver uma) - pressione a tecla (se você tiver uma) - digite :help Leia o texto da ajuda para aprender como o sistema de ajuda funciona. Digite CTRL-W CTRL-W para pular de uma janela a outra. Digite :q para fechar a janela da ajuda. Você pode encontrar ajuda sobre qualquer assunto, fornecendo um argumento para o comando ":help". Tente isto (não se esqueça de pressionar ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 7.2: CRIAR UM SCRIPT DE INICIALIZAÇÃO ** Habilite recursos do Vim ** O Vim tem muito mais recursos do que o Vi, mas na sua maioria eles são desabilitados por padrão. Para usar mais recursos, você tem que criar um arquivo "vimrc". 1. Comece a editar o arquivo "vimrc". Isso depende do sistema: :e ~/.vimrc para Unix :e $VIM/_vimrc para MS-Windows 2. Agora, leia o conteúdo do arquivo "vimrc" de exemplo: :r $VIMRUNTIME/vimrc_example.vim 3. Salve o arquivo com: :w Da próxima vez que o Vim for iniciado, ele usará realce de sintaxe. Você pode adicionar suas configurações preferidas para esse arquivo "vimrc". Para maiores informações, digite: :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lição 7.3: COMPLETAÇÃO ** Completação da linha de comando com CTRL-D e ** 1. Certifique-se de que o Vim não está no modo compatível: :set nocp 2. Veja quais arquivos existem no diretório: :!ls ou :!dir 3. Digite o início de um comando: :e 4. Pressione CTRL-D e o Vim mostrará a lista dos comandos iniciados com "e". 5. Pressione e o Vim completará o nome do comando para ":edit". 6. Agora, adicione um espaço e o início do nome de um arquivo existente: :edit ARQ 7. Pressione . O Vim completará o nome (se ele for único). NOTA: A completação funciona com muitos comandos. Basta pressionar CTRL-D e . Isso é especialmente útil para :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIÇÃO 7 1. Digite :help ou pressione ou para abrir a janela de ajuda. 2. Digite :help cmd para achar a ajuda sobre cmd . 3. Digite CTRL-W CTRL-W para pular de uma janela a outra. 4. Digite :q para fechar a janela de ajuda. 5. Crie um script de inicialização vimrc para ativar automaticamente as suas configurações preferidas. 6. Quando pressionar um comando : , pressione CTRL-D para ver as possibilidades de completação. Pressione para usá-la. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Isto conclui o tutorial do Vim, uma breve apresentação do editor Vim, somente o bastante para que você possa usar o editor com facilidade. Ele está longe de ser completo, uma vez que o Vim possui muitos, muitos mais comandos. O próximo passo é ler o manual: ":help user-manual". Livro recomendado em Português sobre o Vim: O editor de texto Vim - de Sérgio Luiz Araújo da Silva et al. http://code.google.com/p/vimbook/ Para futura leitura e estudo, este livro é recomendado: Vim - Vi Improved - de Steve Oualline Editora: New Riders Este é o primeiro livro completamente dedicado ao Vim. Especialmente útil para iniciantes, com muitos exemplos e ilustrações. Veja http://iccf-holland.org/click5.html Esse livro é mais antigo e mais sobre o Vi do que sobre o Vim, mas também é recomendado: Learning the Vi Editor - de Linda Lamb Editora: O'Reilly & Associates Inc. Este é um bom livro para aprender quase tudo o que você quer fazer com o Vi. A sexta edição também inclui informações sobre o Vim. Este tutorial foi escrito por Michael C. Pierce e Robert K. Ware, Colorado School of Mines, usando idéias fornecidas por Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Modificado para o Vim por Bram Moolenaar. Versão 1.4 traduzida para o português por Marcelo Drudi Miranda, Escola Politécnica da Universidade de São Paulo. Revisão e atualização da tradução para a versão 1.7 por Jakson Aquino, Universidade Federal do Ceará: E-mail: jalvesaq@gmail.com Nova revisão e atualização para a versão 1.8 por Roní Gonçalves, Universidade Federal de Uberlândia. Last Change: 2017 Feb 11 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!^~]m]mvim80/tutor/tutor.cs.utf-8nu[=============================================================================== = V í t e j t e v t u t o r i a l u V I M - Verze 1.5 = =============================================================================== Vim je velmi výkonný editor, který má příliš mnoho příkazů na to, aby mohly být všechny vysvětlené ve výuce jako tato. Tato výuka obsahuje dostatečné množství příkazů na to, aby bylo možné používat Vim jako víceúčelový editor. Přibližný čas potřebný ke zvládnutí této výuky je 25-30 minut, záleží na tom, kolik času strávíte přezkušováním. Příkazy v lekcích upravují text. Vytvoř kopii tohoto souboru pro procvičování (při startu "vimtutor" je již toto kopie). Je důležité pamatovat, že tato výuka je vytvořena pro výuku používáním. To znamená, že je potřeba si příkazy vyzkoušet pro jejich správné naučení. Pokud si jen čteš text, příkazy zapomeneš! Nyní se přesvědčte, že Caps-Lock NENÍ stlačený a několikrát stiskněte klávesu j aby se kurzor posunul natolik, že lekce 1.1 zaplní celou obrazovku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 1.1: POHYB KURZORU ** Pro pohyb kurzoru používej klávesy h,j,k,l jak je znázorněno níže. ** ^ k Funkce: Klávesa h je vlevo a vykoná pohyb vlevo. < h l > Klávesa l je vpravo a vykoná pohyb vpravo. j Klávesa j vypadá na šipku dolu. v 1. Pohybuj kurzorem po obrazovce dokud si na to nezvykneš. 2. Drž klávesu pro pohyb dolu (j), dokud se její funkce nezopakuje. ---> Teď víš jak se přesunout na následující lekci. 3. Použitím klávesy dolu přejdi na lekci 1.2. Poznámka: Pokud si někdy nejsi jist něčím, co jsi napsal, stlač pro přechod do Normálního módu. Poté přepiš požadovaný příkaz. Poznámka: Kurzorové klávesy také fungují, avšak používání hjkl je rychlejší jakmile si na něj zvykneš. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 1.2: SPUŠTĚNÍ A UKONČENÍ VIM !! POZNÁMKA: Před vykonáním těchto kroků si přečti celou lekci!! 1. Stlač (pro ujištění, že se nacházíš v Normálním módu). 2. Napiš: :q! . ---> Tímto ukončíš editor BEZ uložení změn, které si vykonal. Pokud chceš uložit změny a ukončit editor napiš: :wq 3. Až se dostaneš na příkazový řádek, napiš příkaz, kterým se dostaneš zpět do této výuky. To může být: vimtutor Běžně se používá: vim tutor ---> 'vim' znamená spuštění editoru, 'tutor' je soubor k editaci. 4. Pokud si tyto kroky spolehlivě pamatuješ, vykonej kroky 1 až 3, čímž ukončíš a znovu spustíš editor. Potom přesuň kurzor dolu na lekci 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 1.3: ÚPRAVA TEXTU - MAZÁNÍ ** Stisknutím klávesy x v Normálním módu smažeš znak na místě kurzoru. ** 1. Přesuň kurzor níže na řádek označený --->. 2. K odstranění chyb přejdi kurzorem na znak, který chceš smazat. 3. Stlač klávesu x k odstranění nechtěných znaků. 4. Opakuj kroky 2 až 4 dokud není věta správně. ---> Krááva skoččilla přess měssíc. 5. Pokud je věta správně, přejdi na lekci 1.4. POZNÁMKA: Nesnaž se pouze zapamatovat předváděné příkazy, uč se je používáním. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 1.4: ÚPRAVA TEXTU - VKLÁDÁNÍ ** Stlačení klávesy i v Normálním módu umožňuje vkládání textu. ** 1. Přesuň kurzor na první řádek označený --->. 2. Pro upravení prvního řádku do podoby řádku druhého, přesuň kurzor na první znak za místo, kde má být text vložený. 3. Stlač i a napiš potřebný dodatek. 4. Po opravení každé chyby stlač pro návrat do Normálního módu. Opakuj kroky 2 až 4 dokud není věta správně. ---> Nějaký txt na této . ---> Nějaký text chybí na této řádce. 5. Pokud již ovládáš vkládání textu, přejdi na následující shrnutí. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUTÍ LEKCE 1 1. Kurzorem se pohybuje pomocí šipek nebo klávesami hjkl. h (vlevo) j (dolu) k (nahoru) l (vpravo) 2. Pro spuštění Vimu (z příkazového řádku) napiš: vim SOUBOR 3. Pro ukončení Vimu napiš: :q! bez uložení změn. anebo: :wq pro uložení změn. 4. Pro smazání znaku pod kurzorem napiš v Normálním módu: x 5. Pro vkládání textu od místa kurzoru napiš v Normálním módu: i vkládaný text POZNÁMKA: Stlačení tě přemístí do Normálního módu nebo zruší nechtěný a částečně dokončený příkaz. Nyní pokračuj Lekcí 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.1: PŘÍKAZY MAZÁNÍ ** Příkaz dw smaže znaky do konce slova. ** 1. Stlač k ubezpečení, že jsi v Normálním módu. 2. Přesuň kurzor níže na řádek označený --->. 3. Přesuň kurzor na začátek slova, které je potřeba smazat. 4. Napiš dw , aby slovo zmizelo. POZNÁMKA: Písmena dw se zobrazí na posledním řádku obrazovky jakmile je napíšeš. Když napíšeš něco špatně, stlač a začni znova. ---> Jsou tu nějaká slova zábava, která nepatří list do této věty. 5. Opakuj kroky 3 až 4 dokud není věta správně a přejdi na lekci 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.2: VÍCE PŘÍKAZŮ MAZÁNÍ ** Napsání příkazu d$ smaže vše až do konce řádky. ** 1. Stlač k ubezpečení, že jsi v Normálním módu. 2. Přesuň kurzor níže na řádek označený --->. 3. Přesuň kurzor na konec správné věty (ZA první tečku). 4. Napiš d$ ,aby jsi smazal znaky až do konce řádku. ---> Někdo napsal konec této věty dvakrát. konec této věty dvakrát. 5. Přejdi na lekci 2.3 pro pochopení toho, co se stalo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.3: ROZŠIŘOVACÍ PŘÍKAZY A OBJEKTY Formát mazacího příkazu d je následující: [číslo] d objekt NEBO d [číslo] objekt Kde: číslo - udává kolikrát se příkaz vykoná (volitelné, výchozí=1). d - je příkaz mazání. objekt - udává na čem se příkaz vykonává (vypsané níže). Krátký výpis objektů: w - od kurzoru do konce slova, včetně mezer. e - od kurzoru do konce slova, BEZ mezer. $ - od kurzoru do konce řádku. POZNÁMKA: Stlačením klávesy objektu v Normálním módu se kurzor přesune na místo upřesněné ve výpisu objektů. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.4: VÝJIMKA Z 'PŘÍKAZ-OBJEKT' ** Napsáním dd smažeš celý řádek. ** Vzhledem k častosti mazání celého řádku se autoři Vimu rozhodli, že bude jednoduší napsat prostě dvě d k smazání celého řádku. 1. Přesuň kurzor na druhý řádek spodního textu. 2. Napiš dd pro smazání řádku. 3. Přejdi na čtvrtý řádek. 4. Napiš 2dd (vzpomeň si číslo-příkaz-objekt) pro smazání dvou řádků. 1) Růže jsou červené, 2) Bláto je zábavné, 3) Fialky jsou modré, 4) Mám auto, 5) Hodinky ukazují čas, 6) Cukr je sladký, 7) A to jsi i ty. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.5: PŘÍKAZ UNDO ** Stlač u pro vrácení posledního příkazu, U pro celou řádku. ** 1. Přesuň kurzor níže na řádek označený ---> a přemísti ho na první chybu. 2. Napiš x pro smazání prvního nechtěného znaku. 3. Teď napiš u čímž vrátíš zpět poslední vykonaný příkaz. 4. Nyní oprav všechny chyby na řádku pomocí příkazu x . 5. Napiš velké U čímž vrátíš řádek do původního stavu. 6. Teď napiš u několikrát, čímž vrátíš zpět příkaz U . 7. Stlač CTRL-R (klávesu CTRL drž stlačenou a stiskni R) několikrát, čímž vrátíš zpět předtím vrácené příkazy (redo). ---> Opprav chybby nna toomto řádku a nahraď je pommocí undo. 8. Toto jsou velmi užitečné příkazy. Nyní přejdi na souhrn Lekce 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUTÍ LEKCE 2 1. Pro smazání znaků od kurzoru do konce slova napiš: dw 2. Pro smazání znaků od kurzoru do konce řádku napiš: d$ 3. Pro smazání celého řádku napiš: dd 4. Formát příkazu v Normálním módu je: [číslo] příkaz objekt NEBO příkaz [číslo] objekt kde: číslo - udává počet opakování příkazu příkaz - udává co je třeba vykonat, například d maže objekt - udává rozsah příkazu, například w (slovo), $ (do konce řádku), atd. 5. Pro vrácení předešlé činnosti, napiš: u (malé u) Pro vrácení všech úprav na řádku napiš: U (velké U) Pro vrácení vrácených úprav (redo) napiš: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 3.1: PŘÍKAZ VLOŽIT ** Příka p vloží poslední vymazaný text za kurzor. ** 1. Přesuň kurzor níže na poslední řádek textu. 2. Napiš dd pro smazání řádku a jeho uložení do bufferu. 3. Přesuň kurzor VÝŠE tam, kam smazaný řádek patří. 4. V Normálním módu napiš p pro opětné vložení řádku. 5. Opakuj kroky 2 až 4 dokud řádky nebudou ve správném pořadí. d) Také se dokážeš vzdělávat? b) Fialky jsou modré, c) Inteligence se učí, a) Růže jsou červené, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 3.2: PŘÍKAZ NAHRAZENÍ ** Napsáním r a znaku se nahradí znak pod kurzorem. ** 1. Přesuň kurzor níže na první řádek označený --->. 2. Přesuň kurzor na začátek první chyby. 3. Napiš r a potom znak, který nahradí chybu. 4. Opakuj kroky 2 až 3 dokud není první řádka správně. ---> Kdiž byl pzán tento řádeg, někdu stlažil špaqné klávesy! ---> Když byl psán tento řádek, někdo stlačíl špatné klávesy! 5. Nyní přejdi na Lekci 3.2. POZNÁMKA: Zapamatuj si, že by ses měl učit používáním, ne zapamatováním. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 3.3: PŘÍKAZ ÚPRAVY ** Pokud chceš změnit část nebo celé slovo, napiš cw . ** 1. Přesuň kurzor níže na první řádek označený --->. 2. Umísti kurzor na písmeno i v slově řiťok. 3. Napiš cw a oprav slovo (v tomto případě napiš 'ádek'.) 4. Stlač a přejdi na další chybu (první znak, který třeba změnit.) 5. Opakuj kroky 3 až 4 dokud není první věta stejná jako ta druhá. ---> Tento řiťok má několik skic, které psadoinsa změnit pasdgf příkazu. ---> Tento řádek má několik slov, které potřebují změnit pomocí příkazu. Všimni si, že cw nejen nahrazuje slovo, ale také přemístí do vkládání. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 3.4: VÍCE ZMĚN POUŽITÍM c ** Příkaz pro úpravu se druží se stejnými objekty jako ten pro mazání. ** 1. Příkaz pro úpravu pracuje stejně jako pro mazání. Formát je: [číslo] c objekt NEBO c [číslo] objekt 2. Objekty jsou také shodné, jako např.: w (slovo), $ (konec řádku), atd. 3. Přejdi níže na první řádek označený --->. 4. Přesuň kurzor na první rozdíl. 5. Napiš c$ pro upravení zbytku řádku podle toho druhého a stlač . ---> Konec tohoto řádku potřebuje pomoc, aby byl jako ten druhý. ---> Konec tohoto řádku potřebuje opravit použitím příkazu c$ . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUTÍ LEKCE 3 1. Pro vložení textu, který byl smazán, napiš p . To vloží smazaný text ZA kurzor (pokud byl řádek smazaný, přejde na řádek pod kurzorem). 2. Pro nahrazení znaku pod kurzorem, napiš r a potom znak, kterým chceš původní znak nahradit. 3. Příkaz na upravování umožňuje změnit specifikovaný objekt od kurzoru do konce objektu. Například: Napiš cw ,čímž změníš text od pozice kurzoru do konce slova, c$ změní text do konce řádku. 4. Formát pro nahrazování je: [číslo] c objekt NEBO c [číslo] objekt Nyní přejdi na následující lekci. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 4.1: POZICE A STATUS SOUBORU ** Stlač CTRL-g pro zobrazení své pozice v souboru a statusu souboru. Stlač SHIFT-G pro přechod na řádek v souboru. ** Poznámka: Přečti si celou lekci než začneš vykonávat kroky!! 1. Drž klávesu Ctrl stlačenou a stiskni g . Vespod obrazovky se zobrazí stavový řádek s názvem souboru a řádkou na které se nacházíš. Zapamatuj si číslo řádku pro krok 3. 2. Stlač shift-G pro přesun na konec souboru. 3. Napiš číslo řádku na kterém si se nacházel a stlač shift-G. To tě vrátí na řádek, na kterém jsi dříve stiskl Ctrl-g. (Když píšeš čísla, tak se NEZOBRAZUJÍ na obrazovce.) 4. Pokud se cítíš schopný vykonat tyto kroky, vykonej je. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 4.2: PŘÍKAZ VYHLEDÁVÁNÍ ** Napiš / následované řetězcem pro vyhledání onoho řetězce. ** 1. Stiskni / v Normálním módu. Všimni si, že tento znak se spolu s kurzorem zobrazí v dolní části obrazovky jako příkaz : . 2. Nyní napiš 'chhybba' . To je slovo, které chceš vyhledat. 3. Pro vyhledání dalšího výsledku stejného řetězce, jednoduše stlač n . Pro vyhledání dalšího výsledku stejného řetězce opačným směrem, stiskni Shift-N. 4. Pokud chceš vyhledat řetězec v opačném směru, použij příkaz ? místo příkazu / . ---> "chhybba" není způsob, jak hláskovat chyba; chhybba je chyba. Poznámka: Když vyhledávání dosáhne konce souboru, bude pokračovat na jeho začátku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 4.3: VYHLEDÁVÁNÍ PÁROVÉ ZÁVORKY ** Napiš % pro nalezení párové ),], nebo } . ** 1. Přemísti kurzor na kteroukoli (, [, nebo { v řádku označeném --->. 2. Nyní napiš znak % . 3. Kurzor se přemístí na odpovídající závorku. 4. Stlač % pro přesun kurzoru zpět na otvírající závorku. ---> Toto ( je testovací řádek ('s, ['s ] a {'s } v něm. )) Poznámka: Toto je velmi užitečné pří ladění programu s chybějícími uzavíracími závorkami. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 4.4: ZPŮSOB JAK ZMĚNIT CHYBY ** Napiš :s/staré/nové/g pro nahrazení slova 'nové' za 'staré'. ** 1. Přesuň kurzor na řádek označený --->. 2. Napiš :s/dobréé/dobré . Všimni si, že tento příkaz změní pouze první výskyt v řádku. 3. Nyní napiš :s/dobréé/dobré/g což znamená celkové nahrazení v řádku. Toto nahradí všechny výskyty v řádku. ---> dobréé suroviny a dobréé náčiní jsou základem dobréé kuchyně. 4. Pro změnu všech výskytů řetězce mezi dvěma řádky, Napiš :#,#s/staré/nové/g kde #,# jsou čísla oněch řádek. Napiš :%s/staré/nové/g pro změnu všech výskytů v celém souboru. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUTÍ LEKCE 4 1. Ctrl-g vypíše tvou pozici v souboru a status souboru. Shift-G tě přemístí na konec souboru. Číslo následované Shift-G tě přesune na dané číslo řádku. 2. Napsání / následované řetězcem vyhledá řetězec směrem DOPŘEDU. Napsání ? následované řetězcem vyhledá řetězec směrem DOZADU. Napsání n po vyhledávání najde následující výskyt řetězce ve stejném směru, Shift-N ve směru opačném. 3. Stisknutí % když je kurzor na (,),[,],{, nebo } najde odpovídající párovou závorku. 4. Pro nahrazení nového za první starý v řádku napiš :s/staré/nové Pro nahrazení nového za všechny staré v řádku napiš :s/staré/nové/g Pro nahrazení řetězců mezi dvěmi řádkami # napiš :#,#s/staré/nové/g Pro nahrazení všech výskytů v souboru napiš :%s/staré/nové/g Pro potvrzení každého nahrazení přidej 'c' :%s/staré/nové/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 5.1: JAK VYKONAT VNĚJŠÍ PŘÍKAZ ** Napiš :! následované vnějším příkazem pro spuštění příkazu. ** 1. Napiš obvyklý příkaz : , který umístí kurzor na spodek obrazovky To umožní napsat příkaz. 2. Nyní stiskni ! (vykřičník). To umožní vykonat jakýkoliv vnější příkaz z příkazového řádku. 3. Například napiš ls za ! a stiskni . Tento příkaz zobrazí obsah tvého adresáře jako v příkazovém řádku. Vyzkoušej :!dir pokud ls nefunguje. Poznámka: Takto je možné vykonat jakýkoliv příkaz. Poznámka: Všechny příkazy : musí být dokončené stisknutím ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 5.2: VÍCE O UKLÁDÁNÍ SOUBORŮ ** Pro uložení změn v souboru napiš :w SOUBOR. ** 1. Napiš :!dir nebo :!ls pro výpis aktuálního adresáře. Už víš, že za tímto musíš stisknout . 2. Vyber si název souboru, který ještě neexistuje, například TEST. 3. Nyní napiš: :w TEST (kde TEST je vybraný název souboru.) 4. To uloží celý soubor (Výuka Vimu) pod názvem TEST. Pro ověření napiš znovu :!dir , čímž zobrazíš obsah adresáře. Poznámka: Jakmile ukončíš Vim a znovu ho spustíš s názvem souboru TEST, soubor bude přesná kopie výuky, když si ji ukládal. 5. Nyní odstraň soubor napsáním (MS-DOS): :!del TEST nebo (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 5.3: VÝBĚROVÝ PŘÍKAZ ULOŽENÍ ** Pro uložení části souboru napiš :#,# w SOUBOR ** 1. Ještě jednou napiš :!dir nebo :!ls pro výpis aktuálního adresáře a vyber vhodný název souboru jako např. TEST. 2. Přesuň kurzor na vrch této stránky a stiskni Ctrl-g pro zobrazení čísla řádku. ZAPAMATUJ SI TOTO ČÍSLO! 3. Nyní se přesuň na spodek této stránky a opět stiskni Ctrl-g. ZAPAMATUJ SI I ČÍSLO TOHOTO ŘÁDKU! 4. Pro uložení POUZE části souboru, napiš :#,# w TEST kde #,# jsou čísla dvou zapamatovaných řádků (vrch, spodek) a TEST je název souboru. 5. Znova se ujisti, že tam ten soubor je pomocí :!dir ale NEODSTRAŇUJ ho. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 5.4: SLUČOVÁNÍ SOUBORŮ ** K vložení obsahu souboru napiš :r NÁZEV_SOUBORU ** 1. Napiš :!dir pro ujištění, že soubor TEST stále existuje. 2. Přesuň kurzor na vrch této stránky. POZNÁMKA: Po vykonání kroku 3 uvidíš lekci 5.3. Potom se opět přesuň dolů na tuto lekci. 3. Nyní vlož soubor TEST použitím příkazu :r TEST kde TEST je název souboru. POZNÁMKA: Soubor, který vkládáš se vloží od místa, kde se nachází kurzor. 4. Pro potvrzení vložení souboru, přesuň kurzor zpět a všimni si, že teď máš dvě kopie lekce 5.3, originál a souborovou verzi. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUTÍ LEKCE 5 1. :!příkaz vykoná vnější příkaz. Některé užitečné příklady jsou: (MS-DOS) (Unix) :!dir :!ls - zobrazí obsah souboru. :!del SOUBOR :!rm SOUBOR - odstraní SOUBOR. 2. :w SOUBOR uloží aktuální text jako SOUBOR na disk. 3. :#,#w SOUBOR uloží řádky od # do # do SOUBORU. 4. :r SOUBOR vybere z disku SOUBOR a vloží ho do editovaného souboru za pozici kurzoru. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 6.1: PŘÍKAZ OTEVŘÍT ** Napiš o pro vložení řádku pod kurzor a přepnutí do Vkládacího módu. ** 1. Přemísti kurzor níže na řádek označený --->. 2. Napiš o (malé) pro vložení řádku POD kurzor a přepnutí do Vkládacího módu. 3. Nyní zkopíruj řádek označený ---> a stiskni pro ukončení Vkládacího módu. ---> Po stisknutí o se kurzor přemístí na vložený řádek do Vkládacího módu. 4. Pro otevření řádku NAD kurzorem jednoduše napiš velké O , místo malého o. Vyzkoušej si to na následujícím řádku. Vlož řádek nad tímto napsáním Shift-O po umístění kurzoru na tento řádek. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 6.2: PŘÍKAZ PŘIDAT ** Stiskni a pro vložení textu ZA kurzor. ** 1. Přesuň kurzor na níže na konec řádky označené ---> stisknutím $ v Normálním módu. 2. Stiskni a (malé) pro přidání textu ZA znak, který je pod kurzorem. (Velké A přidá na konec řádku.) Poznámka: Tímto se vyhneš stisknutí i , posledního znaku, textu na vložení, , kurzor doprava, a nakonec x na přidávání na konec řádku! 3. Nyní dokončí první řádek. Všimni si, že přidávání je vlastně stejné jako Vkládací mód, kromě místa, kam se text vkládá. ---> Tento řádek ti umožňuje nacvičit ---> Tento řádek ti umožňuje nacvičit přidávání textu na konec řádky. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 6.3: JINÝ ZPŮSOB NAHRAZOVÁNÍ ** Napiš velké R pro nahrazení víc než jednoho znaku. ** 1. Přesuň kurzor na první řádek označený --->. 2. Umísti kurzor na začátek prvního slova, které je odlišné od druhého řádku označeného ---> (slovo 'poslední'). 3. Nyní stiskni R a nahraď zbytek textu na prvním řádku přepsáním starého textu tak, aby byl první řádek stejný jako ten druhý. ---> Pro upravení prvního řádku do tvaru toho poslední na straně použij kl. ---> Pro upravení prvního řádku do tvaru toho druhého, napiš R a nový text. 4. Všimni si, že jakmile stiskneš všechen nezměněný text zůstává. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 6.4: NASTAVENÍ MOŽNOSTÍ ** Nastav možnost, že vyhledávání anebo nahrazování nedbá velikosti písmen ** 1. Vyhledej řetězec 'ignore' napsáním: /ignore Zopakuj několikrát stisknutí klávesy n. 2. Nastav možnost 'ic' (Ignore case) napsáním příkazu: :set ic 3. Nyní znovu vyhledej 'ignore' stisknutím: n Několikrát hledání zopakuj stisknutím klávesy n. 4. Nastav možnosti 'hlsearch' a 'incsearch': :set hls is 5. Nyní znovu vykonej vyhledávací příkaz a sleduj, co se stane: /ignore 6. Pro vypnutí zvýrazňování výsledků napiš: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRHNUTÍ LEKCE 6 1. Stisknutí o otevře nový řádek POD kurzorem a umístí kurzor na vložený řádek do Vkládacího módu. Napsání velkého O otevře řádek NAD řádkem, na kterém je kurzor. 2. Stiskni a pro vložení textu ZA znak na pozici kurzoru. Napsání velkého A automaticky přidá text na konec řádku. 3. Stisknutí velkého R přepne do Nahrazovacího módu, dokud nestiskneš pro jeho ukončení. 4. Napsání ":set xxx" nastaví možnosti "xxx". ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCE 7: PŘÍKAZY ON-LINE NÁPOVĚDY ** Používej on-line systém nápovědy ** Vim má obsáhlý on-line systém nápovědy. Pro začátek vyzkoušej jeden z následujících: - stiskni klávesu (pokud ji máš) - stiskni klávesu (pokud ji máš) - napiš :help Napiš :q pro uzavření okna nápovědy. Můžeš najít nápovědu k jakémukoliv tématu přidáním argumentu k příkazu ":help". Zkus tyto (nezapomeň stisknout ): :help w :help c_ l-tasten er til høyre og flytter til høyre. j j-tasten ser ut som en pil som peker nedover. v 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene. 2. Hold inne nedovertasten (j) til den repeterer. Nå vet du hvordan du beveger deg til neste leksjon. 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. Merk: Hvis du blir usikker på noe du har skrevet, trykk for å gå til normalmodus. Skriv deretter kommandoen du ønsket på nytt. Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til å bevege markøren mye raskere når du er blitt vant til det. Helt sant! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.2: AVSLUTTE VIM !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! 1. Trykk -tasten (for å forsikre deg om at du er i normalmodus). 2. Skriv: :q! . Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. 3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne innføringen. Den er: vimtutor 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å avslutte og starte editoren på nytt. MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen få leksjoner vil du lære hvordan du lagrer forandringene til en fil. 5. Flytt markøren ned til leksjon 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.3: REDIGERING AV TEKST -- SLETTING ** Trykk x for å slette tegnet under markøren. ** 1. Flytt markøren til den første linjen merket med --->. 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som skal slettes. 3. Trykk tasten x for å slette det uønskede tegnet. 4. Repeter punkt 2 til 4 til setningen er lik den som er under. ---> Hessstennnn brrråsnudddde ii gaaata. ---> Hesten bråsnudde i gata. 5. Nå som linjen er korrekt, gå til leksjon 1.4. MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men bruk dem helt til de sitter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING ** Trykk i for å sette inn tekst. ** 1. Flytt markøren til den første linjen som er merket med --->. 2. For å gjøre den første linjen lik den andre, flytt markøren til den står på tegnet ETTER posisjonen der teksten skal settes inn. 3. Trykk i og skriv inn teksten som mangler. 4. Etterhvert som hver feil er fikset, trykk for å returnere til normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. ---> Det er tkst som mnglr . ---> Det er ganske mye tekst som mangler her. 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen nedenfor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL ** Trykk A for å legge til tekst. ** 1. Flytt markøren til den første linjen nedenfor merket --->. Det har ikke noe å si hvor markøren er plassert på den linjen. 2. Trykk A og skriv inn det som skal legges til. 3. Når teksten er lagt til, trykk for å returnere til normalmodusen. 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og 3 for å reparere denne setningen. ---> Det mangler noe tekst p Det mangler noe tekst på denne linjen. ---> Det mangler også litt tek Det mangler også litt tekst på denne linjen. 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.6: REDIGERE EN FIL ** Bruk :wq for å lagre en fil og avslutte. ** !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! 2. Skriv denne kommandoen på kommandolinja: vim tutor «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila som du vil redigere. Bruk en fil som kan forandres. 3. Sett inn og slett tekst som du lærte i de foregående leksjonene. 4. Lagre filen med forandringene og avslutt Vim med: :wq 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger. 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 1 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. h (venstre) j (ned) k (opp) l (høyre) 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN 3. For å avslutte Vim, skriv: :q! for å forkaste endringer. ELLER skriv: :wq for å lagre forandringene. 4. For å slette tegnet under markøren, trykk: x 5. For å sette inn eller legge til tekst, trykk: i skriv innsatt tekst sett inn før markøren A skriv tillagt tekst legg til på slutten av linjen MERK: Når du trykker går du til normalmodus eller du avbryter en uønsket og delvis fullført kommando. Nå kan du gå videre til leksjon 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.1: SLETTEKOMMANDOER ** Trykk dw for å slette et ord. ** 1. Trykk for å være sikker på at du er i normalmodus. 2. Flytt markøren til den første linjen nedenfor merket --->. 3. Flytt markøren til begynnelsen av ordet som skal slettes. 4. Trykk dw og ordet vil forsvinne. MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet tegn enn d har du skrevet noe feil; trykk og start på nytt. ---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen. ---> Det er tre ord som ikke hører hjemme i denne setningen. 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå deretter til leksjon 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.2: FLERE SLETTEKOMMANDOER ** Trykk d$ for å slette til slutten av linjen. ** 1. Trykk for å være sikker på at du er i normalmodus. 2. Flytt markøren til linjen nedenfor merket --->. 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum). 4. Trykk d$ for å slette alt til slutten av linjen. ---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. 5. Gå til leksjon 2.3 for å forstå hva som skjer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.3: OM OPERATORER OG BEVEGELSER Mange kommandoer som forandrer teksten er laget ut i fra en operator og en bevegelse. Formatet for en slettekommando med sletteoperatoren d er: d bevegelse Der: d - er sletteoperatoren. bevegelse - er hva operatoren vil opere på (listet nedenfor). En kort liste med bevegelser: w - til starten av det neste ordet, UNNTATT det første tegnet. e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet. $ - til slutten av linjen, INKLUDERT det siste tegnet. Ved å skrive de vil altså alt fra markøren til slutten av ordet bli slettet. MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil markøren flyttes som spesifisert. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** 1. Flytt markøren til starten av linjen markert ---> nedenfor. 2. Skriv 2w for å flytte markøren to ord framover. 3. Skriv 3e for å flytte markøren framover til slutten av det tredje ordet. 4. Skriv 0 (null) for å flytte til starten av linjen. 5. Repeter steg 2 og 3 med forskjellige tall. ---> Dette er en linje med noen ord som du kan bevege deg rundt på. 6. Gå videre til leksjon 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER ** Et tall sammen med en operator repeterer den så mange ganger. ** I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du inn antall før bevegelsen for å slette mer: d nummer bevegelse 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert med --->. 2. Skriv 2dw for å slette de to ordene med store bokstaver. 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende ordene som har store bokstaver. ---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar. MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å bruke bevegelsen uten en operator. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.6: OPERERE PÅ LINJER ** Trykk dd for å slette en hel linje. ** På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at det vil være lettere å rett og slett trykke to d-er for å slette en linje. 1. Flytt markøren til den andre linjen i verset nedenfor. 2. Trykk dd å slette linjen. 3. Flytt deretter til den fjerde linjen. 4. Trykk 2dd for å slette to linjer. ---> 1) Roser er røde, ---> 2) Gjørme er gøy, ---> 3) Fioler er blå, ---> 4) Jeg har en bil, ---> 5) Klokker viser tiden, ---> 6) Druer er søte ---> 7) Og du er likeså. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.7: ANGRE-KOMMANDOEN ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den første feilen. 2. Trykk x for å slette det første uønskede tegnet. 3. Trykk så u for å angre den siste utførte kommandoen. 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x . 5. Trykk nå en stor U for å sette linjen tilbake til det den var originalt. 6. Trykk u noen ganger for å angre U og foregående kommandoer. 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen ganger for å gjenopprette kommandoene (omgjøre angrekommandoene). ---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av leksjon 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 2 1. For å slette fra markøren fram til det neste ordet, trykk: dw 2. For å slette fra markøren til slutten av en linje, trykk: d$ 3. For å slette en hel linje, trykk: dd 4. For å repetere en bevegelse, sett et nummer foran: 2w 5. Formatet for en forandringskommando er: operator [nummer] bevegelse der: operator - hva som skal gjøres, f.eks. d for å slette [nummer] - et valgfritt antall for å repetere bevegelsen bevegelse - hva kommandoen skal operere på, eksempelvis w (ord), $ (til slutten av linjen) og så videre. 6. For å gå til starten av en linje, bruk en null: 0 7. For å angre tidligere endringer, skriv: u (liten u) For å angre alle forandringer på en linje, skriv: U (stor U) For å omgjøre angringen, trykk: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.1: «LIM INN»-KOMMANDOEN ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** 1. Flytt markøren til den første linjen med ---> nedenfor. 2. Trykk dd for å slette linjen og lagre den i et Vim-register. 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn. 4. Trykk p for å legge linjen under markøren. 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge. ---> d) Kan du også lære? ---> b) Fioler er blå, ---> c) Intelligens må læres, ---> a) Roser er røde, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.2: «ERSTATT»-KOMMANDOEN ** Trykk rx for å erstatte tegnet under markøren med x. ** 1. Flytt markøren til den første linjen nedenfor merket --->. 2. Flytt markøren så den står oppå den første feilen. 3. Trykk r og deretter tegnet som skal være der. 4. Repeter punkt 2 og 3 til den første linjen er lik den andre. ---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! ---> Da denne linjen ble skrevet, var det noen som trykket feile taster! 5. Gå videre til leksjon 3.2. MERK: Husk at du bør lære ved å BRUKE, ikke pugge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.3: «FORANDRE»-OPERATOREN ** For å forandre til slutten av et ord, trykk ce . ** 1. Flytt markøren til den første linjen nedenfor som er merket --->. 2. Plasser markøren på u i «lubjwr». 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»). 4. Trykk og gå til det neste tegnet som skal forandres. 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre. ---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen. ---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen. Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er: c [nummer] bevegelse 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en linje). 3. Gå til den første linjen nedenfor som er merket --->. 4. Flytt markøren til den første feilen. 5. Skriv c$ og skriv resten av linjen lik den andre og trykk . ---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste. ---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen. MERK: Du kan bruke slettetasten for å rette feil mens du skriver. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 3 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet vil den bli limt inn på linjen under markøren). 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som du vil ha der. 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten av ordet, c$ for å forandre til slutten av linjen. 4. Formatet for «forandre» er: c [nummer] bevegelse Nå kan du gå til neste leksjon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. Trykk G for å gå til en spesifikk linje i filen. ** Merk: Les hele leksjonen før du utfører noen av punktene! 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i filen. Husk linjenummeret for bruk i steg 3. Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette skjer når «ruler»-valget er satt (forklart i leksjon 6). 2. Trykk G for å gå til bunnen av filen. Skriv gg for å gå til begynnelsen av filen. 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg tilbake til linjen du var på da du først trykket CTRL-G. 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.2: SØKEKOMMANDOEN ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og markøren kommer til syne på bunnen av skjermen i likhet med «:»-kommandoene. 2. Skriv «feeeiil» og trykk . Dette er teksten du vil lete etter. 3. For å finne neste forekomst av søkestrengen, trykk n . For å lete etter samme søketeksten i motsatt retning, trykk N . 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / . 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I går framover. ---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil. Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt hvis «wrapscan»-valget er resatt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.3: FINN SAMSVARENDE PARENTESER ** Trykk % for å finne en samsvarende ), ] eller } . ** 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->. 2. Trykk % . 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen. 4. Trykk % for å flytte markøren til den andre samsvarende parentesen. 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør. ---> Dette ( er en testlinje med (, [ ] og { } i den )). Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert antall parenteser! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.4: ERSTATT-KOMMANDOEN ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** 1. Flytt markøren til linjen nedenfor som er merket med --->. 2. Skriv :s/deen/den/ . Legg merke til at denne kommandoen bare forandrer den første forekomsten av «deen» på linjen. 3. Skriv :s/deen/den/g . Når g-flagget legges til, betyr dette global erstatning på linjen og erstatter alle forekomster av «deen» på linjen. ---> deen som kan kaste deen tyngste steinen lengst er deen beste 4. For å erstatte alle forekomster av en tekststreng mellom to linjer, skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for linjeområdet erstatningen skal gjøres. Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen. Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og deretter spørre om teksten skal erstattes eller ikke. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 4 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. G går til slutten av filen. nummer G går til det linjenummeret. gg går til den første linjen. 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten. Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten. Etter et søk kan du trykke n for å finne neste forekomst i den samme retningen eller N for å lete i motsatt retning. CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den som samsvarer. 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g Erstatte alle forekomster i en fil: :%s/gammel/ny/g For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av skjermen. Dette lar deg skrive en kommandolinjekommando. 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst ekstern kommando. 3. Som et eksempel, skriv ls etter utropstegnet og trykk . Du vil nå få en liste over filene i katalogen, akkurat som om du hadde kjørt kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis «ls» ikke virker. MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med parametere. MERK: Alle «:»-kommandoer må avsluttes med . Fra dette punktet er det ikke alltid vi nevner det. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.2: MER OM LAGRING AV FILER ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du vet allerede at du må trykke etter dette. 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST . 3. Skriv :w TEST (der TEST er filnavnet du velger). 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av katalogen. Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST», ville filen vært en eksakt kopi av innføringen da du lagret den. 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende operativsystem, eller :!del TEST hvis du bruker MS-DOS. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** 1. Flytt markøren til denne linjen. 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke til at teksten blir markert. 3. Trykk : (kolon). På bunnen av skjermen vil :'<,'> komme til syne. 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller at du ser :'<,'>w TEST før du trykker Enter. 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller :!ls for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for å gjøre det valgte området større eller mindre. Deretter kan du bruke en operator for å gjøre noe med teksten. For eksempel sletter d teksten. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** 1. Plasser markøren like over denne linjen. MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter NED for å se denne leksjonen igjen. 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av leksjon 5.3, originalen og denne versjonen. MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls leser utdataene av ls-kommandoen og legger dem nedenfor markøren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 5 1. :!kommando utfører en ekstern kommandio. Noen nyttige eksempler er: (MS-DOS) (Unix) :!dir :!ls - List filene i katalogen. :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN . 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen FILNAVN. 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren. 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor markørposisjonen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til innsettingsmodus ** 1. Flytt markøren til linjen nedenfor merket --->. 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i innsettingsmodus. 3. Skriv litt tekst og trykk for å gå ut av innsettingsmodusen. ---> Etter at o er skrevet blir markøren plassert på den tomme linjen. 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O istedenfor en liten o . Prøv dette på linjen nedenfor. ---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.2: «LEGG TIL»-KOMMANDOEN ** Skriv a for å legge til tekst ETTER markøren. ** 1. Flytt markøren til starten av linjen merket ---> nedenfor. 2. Trykk e til markøren er på slutten av «li». 3. Trykk a (liten a) for å legge til tekst ETTER markøren. 4. Fullfør ordet sånn som på linjen nedenfor. Trykk for å gå ut av innsettingsmodusen. 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og 4. ---> Denne li lar deg øve på å leg til tek på en linje. ---> Denne linjen lar deg øve på å legge til tekst på en linje. Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste forskjellen er hvor tegnene blir satt inn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ ** Skriv en stor R for å erstatte mer enn ett tegn. ** 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren til begynnelsen av den første «xxx»-en. 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så det erstatter xxx. 3. Trykk for å gå ut av erstatningsmodusen. Legg merke til at resten av linjen forblir uforandret. 4. Repeter stegene for å erstatte den gjenværende xxx. ---> Ved å legge 123 til xxx får vi xxx. ---> Ved å legge 123 til 456 får vi 579. MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives erstatter et eksisterende tegn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.4: KOPIERE OG LIME INN TEKST ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)». 2. Gå inn i visuell modus med v og flytt markøren til like før «første». 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten. 4. Flytt markøren til slutten av den neste linjen: j$ 5. Trykk p for å lime inn teksten. Trykk deretter: a andre . 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til slutten av den neste linjen med j$ og legg inn teksten der med p . ---> a) Dette er det første valget. b) Merk: Du kan også bruke y som en operator; yw kopierer ett ord. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.5: SETT VALG ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** 1. Let etter «ignore» ved å skrive: /ignore Repeter flere ganger ved å trykke n . 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic 3. Søk etter «ignore» igjen ved å trykke n . Legg merke til at både «Ignore» og «IGNORE» blir funnet. 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk \c i uttrykket: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 6 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i innsettingsmodus. Trykk O for å åpne en linje OVER markøren. 2. Skriv a for å sette inn tekst ETTER markøren. Skriv A for å sette inn tekst etter slutten av linjen. 3. Kommandoen e går til slutten av et ord. 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn. 5. Ved å trykke R går du inn i erstatningsmodus helt til trykkes. 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er: «ic» «ignorecase» ignorer store/små bokstaver under søk «is» «incsearch» vis delvise treff for en søketekst «hls» «hlsearch» uthev alle søketreff 7. Legg til «no» foran valget for å slå det av: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 7.1: FÅ HJELP ** Bruk det innebygde hjelpesystemet. ** Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av disse måtene: - Trykk Hjelp-tasten (hvis du har en) - Trykk F1-tasten (hvis du har en) - Skriv :help Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker. Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet Skriv :q for å lukke hjelpevinduet. Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til «:help»-kommandoen. Prøv disse (ikke glem å trykke ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 7.2: LAG ET OPPSTARTSSKRIPT ** Slå på funksjoner i Vim ** Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av som standard. For å begynne å bruke flere funksjoner må du lage en «vimrc»-fil. 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt: :e ~/.vimrc for Unix :e $VIM/_vimrc for MS Windows 2. Les inn eksempelfilen for «vimrc»: :r $VIMRUNTIME/vimrc_example.vim 3. Lagre filen med: :w Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til alle dine foretrukne oppsett i denne «vimrc»-filen. For mer informasjon, skriv :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 7.3: FULLFØRING ** Kommandolinjefullføring med CTRL-D og ** 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp 2. Se hvilke filer som er i katalogen: :!ls eller :!dir 3. Skriv starten på en kommando: :e 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med «e». 5. Trykk og Vim vil fullføre kommandonavnet til «:edit». 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL 7. Trykk . Vim vil fullføre navnet (hvis det er unikt). MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og . Det er spesielt nyttig for bruk sammen med :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 7 1. Skriv :help eller trykk eller for å åpne et hjelpevindu. 2. Skriv :help kommando for å få hjelp om kommando . 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu. 4. Trykk :q for å lukke hjelpevinduet. 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine. 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige fullføringer. Trykk for å bruke en fullføring. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Her slutter innføringen i Vim. Den var ment som en rask oversikt over editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen ved å skrive :help user-manual . For videre lesing og studier, kan denne boken anbefales: «Vim - Vi Improved» av Steve Oualline Utgiver: New Riders Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for nybegynnere. Inneholder mange eksempler og illustrasjoner. Se http://iccf-holland.org/click5.html Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også: «Learning the Vi Editor» av Linda Lamb Utgiver: O'Reilly & Associates Inc. Det er en god bok for å få vite omtrent hva som helst om Vi. Den sjette utgaven inneholder også informasjon om Vim. Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware, Colorado School of Mines med idéer av Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu . Modifisert for Vim av Bram Moolenaar. Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org Id: tutor.no 406 2007-03-18 22:48:36Z sunny ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim: set ts=8 : PK!d hLdLdvim80/tutor/tutor.csnu[=============================================================================== = V t e j t e v t u t o r i a l u V I M - Verze 1.5 = =============================================================================== Vim je velmi vkonn editor, kter m pli mnoho pkaz na to, aby mohly bt vechny vysvtlen ve vuce jako tato. Tato vuka obsahuje dostaten mnostv pkaz na to, aby bylo mon pouvat Vim jako vceelov editor. Piblin as potebn ke zvldnut tto vuky je 25-30 minut, zle na tom, kolik asu strvte pezkuovnm. Pkazy v lekcch upravuj text. Vytvo kopii tohoto souboru pro procviovn (pi startu "vimtutor" je ji toto kopie). Je dleit pamatovat, e tato vuka je vytvoena pro vuku pouvnm. To znamen, e je poteba si pkazy vyzkouet pro jejich sprvn nauen. Pokud si jen te text, pkazy zapomene! Nyn se pesvdte, e Caps-Lock NEN stlaen a nkolikrt stisknte klvesu j aby se kurzor posunul natolik, e lekce 1.1 zapln celou obrazovku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 1.1: POHYB KURZORU ** Pro pohyb kurzoru pouvej klvesy h,j,k,l jak je znzornno ne. ** ^ k Funkce: Klvesa h je vlevo a vykon pohyb vlevo. < h l > Klvesa l je vpravo a vykon pohyb vpravo. j Klvesa j vypad na ipku dolu. v 1. Pohybuj kurzorem po obrazovce dokud si na to nezvykne. 2. Dr klvesu pro pohyb dolu (j), dokud se jej funkce nezopakuje. ---> Te v jak se pesunout na nsledujc lekci. 3. Pouitm klvesy dolu pejdi na lekci 1.2. Poznmka: Pokud si nkdy nejsi jist nm, co jsi napsal, stla pro pechod do Normlnho mdu. Pot pepi poadovan pkaz. Poznmka: Kurzorov klvesy tak funguj, avak pouvn hjkl je rychlej jakmile si na nj zvykne. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 1.2: SPUTN A UKONEN VIM !! POZNMKA: Ped vykonnm tchto krok si peti celou lekci!! 1. Stla (pro ujitn, e se nachz v Normlnm mdu). 2. Napi: :q! . ---> Tmto ukon editor BEZ uloen zmn, kter si vykonal. Pokud chce uloit zmny a ukonit editor napi: :wq 3. A se dostane na pkazov dek, napi pkaz, kterm se dostane zpt do tto vuky. To me bt: vimtutor Bn se pouv: vim tutor ---> 'vim' znamen sputn editoru, 'tutor' je soubor k editaci. 4. Pokud si tyto kroky spolehliv pamatuje, vykonej kroky 1 a 3, m ukon a znovu spust editor. Potom pesu kurzor dolu na lekci 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 1.3: PRAVA TEXTU - MAZN ** Stisknutm klvesy x v Normlnm mdu smae znak na mst kurzoru. ** 1. Pesu kurzor ne na dek oznaen --->. 2. K odstrann chyb pejdi kurzorem na znak, kter chce smazat. 3. Stla klvesu x k odstrann nechtnch znak. 4. Opakuj kroky 2 a 4 dokud nen vta sprvn. ---> Krva skoilla pess mssc. 5. Pokud je vta sprvn, pejdi na lekci 1.4. POZNMKA: Nesna se pouze zapamatovat pedvdn pkazy, u se je pouvnm. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 1.4: PRAVA TEXTU - VKLDN ** Stlaen klvesy i v Normlnm mdu umouje vkldn textu. ** 1. Pesu kurzor na prvn dek oznaen --->. 2. Pro upraven prvnho dku do podoby dku druhho, pesu kurzor na prvn znak za msto, kde m bt text vloen. 3. Stla i a napi potebn dodatek. 4. Po opraven kad chyby stla pro nvrat do Normlnho mdu. Opakuj kroky 2 a 4 dokud nen vta sprvn. ---> Njak txt na tto . ---> Njak text chyb na tto dce. 5. Pokud ji ovld vkldn textu, pejdi na nsledujc shrnut. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUT LEKCE 1 1. Kurzorem se pohybuje pomoc ipek nebo klvesami hjkl. h (vlevo) j (dolu) k (nahoru) l (vpravo) 2. Pro sputn Vimu (z pkazovho dku) napi: vim SOUBOR 3. Pro ukonen Vimu napi: :q! bez uloen zmn. anebo: :wq pro uloen zmn. 4. Pro smazn znaku pod kurzorem napi v Normlnm mdu: x 5. Pro vkldn textu od msta kurzoru napi v Normlnm mdu: i vkldan text POZNMKA: Stlaen t pemst do Normlnho mdu nebo zru nechtn a sten dokonen pkaz. Nyn pokrauj Lekc 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.1: PKAZY MAZN ** Pkaz dw smae znaky do konce slova. ** 1. Stla k ubezpeen, e jsi v Normlnm mdu. 2. Pesu kurzor ne na dek oznaen --->. 3. Pesu kurzor na zatek slova, kter je poteba smazat. 4. Napi dw , aby slovo zmizelo. POZNMKA: Psmena dw se zobraz na poslednm dku obrazovky jakmile je nape. Kdy nape nco patn, stla a zani znova. ---> Jsou tu njak slova zbava, kter nepat list do tto vty. 5. Opakuj kroky 3 a 4 dokud nen vta sprvn a pejdi na lekci 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.2: VCE PKAZ MAZN ** Napsn pkazu d$ smae ve a do konce dky. ** 1. Stla k ubezpeen, e jsi v Normlnm mdu. 2. Pesu kurzor ne na dek oznaen --->. 3. Pesu kurzor na konec sprvn vty (ZA prvn teku). 4. Napi d$ ,aby jsi smazal znaky a do konce dku. ---> Nkdo napsal konec tto vty dvakrt. konec tto vty dvakrt. 5. Pejdi na lekci 2.3 pro pochopen toho, co se stalo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.3: ROZIOVAC PKAZY A OBJEKTY Formt mazacho pkazu d je nsledujc: [slo] d objekt NEBO d [slo] objekt Kde: slo - udv kolikrt se pkaz vykon (voliteln, vchoz=1). d - je pkaz mazn. objekt - udv na em se pkaz vykonv (vypsan ne). Krtk vpis objekt: w - od kurzoru do konce slova, vetn mezer. e - od kurzoru do konce slova, BEZ mezer. $ - od kurzoru do konce dku. POZNMKA: Stlaenm klvesy objektu v Normlnm mdu se kurzor pesune na msto upesnn ve vpisu objekt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.4: VJIMKA Z 'PKAZ-OBJEKT' ** Napsnm dd smae cel dek. ** Vzhledem k astosti mazn celho dku se autoi Vimu rozhodli, e bude jednodu napsat prost dv d k smazn celho dku. 1. Pesu kurzor na druh dek spodnho textu. 2. Napi dd pro smazn dku. 3. Pejdi na tvrt dek. 4. Napi 2dd (vzpome si slo-pkaz-objekt) pro smazn dvou dk. 1) Re jsou erven, 2) Blto je zbavn, 3) Fialky jsou modr, 4) Mm auto, 5) Hodinky ukazuj as, 6) Cukr je sladk, 7) A to jsi i ty. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.5: PKAZ UNDO ** Stla u pro vrcen poslednho pkazu, U pro celou dku. ** 1. Pesu kurzor ne na dek oznaen ---> a pemsti ho na prvn chybu. 2. Napi x pro smazn prvnho nechtnho znaku. 3. Te napi u m vrt zpt posledn vykonan pkaz. 4. Nyn oprav vechny chyby na dku pomoc pkazu x . 5. Napi velk U m vrt dek do pvodnho stavu. 6. Te napi u nkolikrt, m vrt zpt pkaz U . 7. Stla CTRL-R (klvesu CTRL dr stlaenou a stiskni R) nkolikrt, m vrt zpt pedtm vrcen pkazy (redo). ---> Opprav chybby nna toomto dku a nahra je pommoc undo. 8. Toto jsou velmi uiten pkazy. Nyn pejdi na souhrn Lekce 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUT LEKCE 2 1. Pro smazn znak od kurzoru do konce slova napi: dw 2. Pro smazn znak od kurzoru do konce dku napi: d$ 3. Pro smazn celho dku napi: dd 4. Formt pkazu v Normlnm mdu je: [slo] pkaz objekt NEBO pkaz [slo] objekt kde: slo - udv poet opakovn pkazu pkaz - udv co je teba vykonat, napklad d mae objekt - udv rozsah pkazu, napklad w (slovo), $ (do konce dku), atd. 5. Pro vrcen pedel innosti, napi: u (mal u) Pro vrcen vech prav na dku napi: U (velk U) Pro vrcen vrcench prav (redo) napi: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 3.1: PKAZ VLOIT ** Pka p vlo posledn vymazan text za kurzor. ** 1. Pesu kurzor ne na posledn dek textu. 2. Napi dd pro smazn dku a jeho uloen do bufferu. 3. Pesu kurzor VݩE tam, kam smazan dek pat. 4. V Normlnm mdu napi p pro optn vloen dku. 5. Opakuj kroky 2 a 4 dokud dky nebudou ve sprvnm poad. d) Tak se doke vzdlvat? b) Fialky jsou modr, c) Inteligence se u, a) Re jsou erven, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 3.2: PKAZ NAHRAZEN ** Napsnm r a znaku se nahrad znak pod kurzorem. ** 1. Pesu kurzor ne na prvn dek oznaen --->. 2. Pesu kurzor na zatek prvn chyby. 3. Napi r a potom znak, kter nahrad chybu. 4. Opakuj kroky 2 a 3 dokud nen prvn dka sprvn. ---> Kdi byl pzn tento deg, nkdu stlail paqn klvesy! ---> Kdy byl psn tento dek, nkdo stlal patn klvesy! 5. Nyn pejdi na Lekci 3.2. POZNMKA: Zapamatuj si, e by ses ml uit pouvnm, ne zapamatovnm. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 3.3: PKAZ PRAVY ** Pokud chce zmnit st nebo cel slovo, napi cw . ** 1. Pesu kurzor ne na prvn dek oznaen --->. 2. Umsti kurzor na psmeno i v slov iok. 3. Napi cw a oprav slovo (v tomto ppad napi 'dek'.) 4. Stla a pejdi na dal chybu (prvn znak, kter teba zmnit.) 5. Opakuj kroky 3 a 4 dokud nen prvn vta stejn jako ta druh. ---> Tento iok m nkolik skic, kter psadoinsa zmnit pasdgf pkazu. ---> Tento dek m nkolik slov, kter potebuj zmnit pomoc pkazu. Vimni si, e cw nejen nahrazuje slovo, ale tak pemst do vkldn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 3.4: VCE ZMN POUITM c ** Pkaz pro pravu se dru se stejnmi objekty jako ten pro mazn. ** 1. Pkaz pro pravu pracuje stejn jako pro mazn. Formt je: [slo] c objekt NEBO c [slo] objekt 2. Objekty jsou tak shodn, jako nap.: w (slovo), $ (konec dku), atd. 3. Pejdi ne na prvn dek oznaen --->. 4. Pesu kurzor na prvn rozdl. 5. Napi c$ pro upraven zbytku dku podle toho druhho a stla . ---> Konec tohoto dku potebuje pomoc, aby byl jako ten druh. ---> Konec tohoto dku potebuje opravit pouitm pkazu c$ . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUT LEKCE 3 1. Pro vloen textu, kter byl smazn, napi p . To vlo smazan text ZA kurzor (pokud byl dek smazan, pejde na dek pod kurzorem). 2. Pro nahrazen znaku pod kurzorem, napi r a potom znak, kterm chce pvodn znak nahradit. 3. Pkaz na upravovn umouje zmnit specifikovan objekt od kurzoru do konce objektu. Napklad: Napi cw ,m zmn text od pozice kurzoru do konce slova, c$ zmn text do konce dku. 4. Formt pro nahrazovn je: [slo] c objekt NEBO c [slo] objekt Nyn pejdi na nsledujc lekci. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 4.1: POZICE A STATUS SOUBORU ** Stla CTRL-g pro zobrazen sv pozice v souboru a statusu souboru. Stla SHIFT-G pro pechod na dek v souboru. ** Poznmka: Peti si celou lekci ne zane vykonvat kroky!! 1. Dr klvesu Ctrl stlaenou a stiskni g . Vespod obrazovky se zobraz stavov dek s nzvem souboru a dkou na kter se nachz. Zapamatuj si slo dku pro krok 3. 2. Stla shift-G pro pesun na konec souboru. 3. Napi slo dku na kterm si se nachzel a stla shift-G. To t vrt na dek, na kterm jsi dve stiskl Ctrl-g. (Kdy pe sla, tak se NEZOBRAZUJ na obrazovce.) 4. Pokud se ct schopn vykonat tyto kroky, vykonej je. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 4.2: PKAZ VYHLEDVN ** Napi / nsledovan etzcem pro vyhledn onoho etzce. ** 1. Stiskni / v Normlnm mdu. Vimni si, e tento znak se spolu s kurzorem zobraz v doln sti obrazovky jako pkaz : . 2. Nyn napi 'chhybba' . To je slovo, kter chce vyhledat. 3. Pro vyhledn dalho vsledku stejnho etzce, jednodue stla n . Pro vyhledn dalho vsledku stejnho etzce opanm smrem, stiskni Shift-N. 4. Pokud chce vyhledat etzec v opanm smru, pouij pkaz ? msto pkazu / . ---> "chhybba" nen zpsob, jak hlskovat chyba; chhybba je chyba. Poznmka: Kdy vyhledvn doshne konce souboru, bude pokraovat na jeho zatku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 4.3: VYHLEDVN PROV ZVORKY ** Napi % pro nalezen prov ),], nebo } . ** 1. Pemsti kurzor na kteroukoli (, [, nebo { v dku oznaenm --->. 2. Nyn napi znak % . 3. Kurzor se pemst na odpovdajc zvorku. 4. Stla % pro pesun kurzoru zpt na otvrajc zvorku. ---> Toto ( je testovac dek ('s, ['s ] a {'s } v nm. )) Poznmka: Toto je velmi uiten p ladn programu s chybjcmi uzavracmi zvorkami. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 4.4: ZPSOB JAK ZMNIT CHYBY ** Napi :s/star/nov/g pro nahrazen slova 'nov' za 'star'. ** 1. Pesu kurzor na dek oznaen --->. 2. Napi :s/dobr/dobr . Vimni si, e tento pkaz zmn pouze prvn vskyt v dku. 3. Nyn napi :s/dobr/dobr/g co znamen celkov nahrazen v dku. Toto nahrad vechny vskyty v dku. ---> dobr suroviny a dobr nin jsou zkladem dobr kuchyn. 4. Pro zmnu vech vskyt etzce mezi dvma dky, Napi :#,#s/star/nov/g kde #,# jsou sla onch dek. Napi :%s/star/nov/g pro zmnu vech vskyt v celm souboru. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUT LEKCE 4 1. Ctrl-g vype tvou pozici v souboru a status souboru. Shift-G t pemst na konec souboru. slo nsledovan Shift-G t pesune na dan slo dku. 2. Napsn / nsledovan etzcem vyhled etzec smrem DOPEDU. Napsn ? nsledovan etzcem vyhled etzec smrem DOZADU. Napsn n po vyhledvn najde nsledujc vskyt etzce ve stejnm smru, Shift-N ve smru opanm. 3. Stisknut % kdy je kurzor na (,),[,],{, nebo } najde odpovdajc provou zvorku. 4. Pro nahrazen novho za prvn star v dku napi :s/star/nov Pro nahrazen novho za vechny star v dku napi :s/star/nov/g Pro nahrazen etzc mezi dvmi dkami # napi :#,#s/star/nov/g Pro nahrazen vech vskyt v souboru napi :%s/star/nov/g Pro potvrzen kadho nahrazen pidej 'c' :%s/star/nov/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 5.1: JAK VYKONAT VNJ PKAZ ** Napi :! nsledovan vnjm pkazem pro sputn pkazu. ** 1. Napi obvykl pkaz : , kter umst kurzor na spodek obrazovky To umon napsat pkaz. 2. Nyn stiskni ! (vykink). To umon vykonat jakkoliv vnj pkaz z pkazovho dku. 3. Napklad napi ls za ! a stiskni . Tento pkaz zobraz obsah tvho adrese jako v pkazovm dku. Vyzkouej :!dir pokud ls nefunguje. Poznmka: Takto je mon vykonat jakkoliv pkaz. Poznmka: Vechny pkazy : mus bt dokonen stisknutm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 5.2: VCE O UKLDN SOUBOR ** Pro uloen zmn v souboru napi :w SOUBOR. ** 1. Napi :!dir nebo :!ls pro vpis aktulnho adrese. U v, e za tmto mus stisknout . 2. Vyber si nzev souboru, kter jet neexistuje, napklad TEST. 3. Nyn napi: :w TEST (kde TEST je vybran nzev souboru.) 4. To ulo cel soubor (Vuka Vimu) pod nzvem TEST. Pro oven napi znovu :!dir , m zobraz obsah adrese. Poznmka: Jakmile ukon Vim a znovu ho spust s nzvem souboru TEST, soubor bude pesn kopie vuky, kdy si ji ukldal. 5. Nyn odstra soubor napsnm (MS-DOS): :!del TEST nebo (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 5.3: VBROV PKAZ ULOEN ** Pro uloen sti souboru napi :#,# w SOUBOR ** 1. Jet jednou napi :!dir nebo :!ls pro vpis aktulnho adrese a vyber vhodn nzev souboru jako nap. TEST. 2. Pesu kurzor na vrch tto strnky a stiskni Ctrl-g pro zobrazen sla dku. ZAPAMATUJ SI TOTO SLO! 3. Nyn se pesu na spodek tto strnky a opt stiskni Ctrl-g. ZAPAMATUJ SI I SLO TOHOTO DKU! 4. Pro uloen POUZE sti souboru, napi :#,# w TEST kde #,# jsou sla dvou zapamatovanch dk (vrch, spodek) a TEST je nzev souboru. 5. Znova se ujisti, e tam ten soubor je pomoc :!dir ale NEODSTRAUJ ho. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 5.4: SLUOVN SOUBOR ** K vloen obsahu souboru napi :r NZEV_SOUBORU ** 1. Napi :!dir pro ujitn, e soubor TEST stle existuje. 2. Pesu kurzor na vrch tto strnky. POZNMKA: Po vykonn kroku 3 uvid lekci 5.3. Potom se opt pesu dol na tuto lekci. 3. Nyn vlo soubor TEST pouitm pkazu :r TEST kde TEST je nzev souboru. POZNMKA: Soubor, kter vkld se vlo od msta, kde se nachz kurzor. 4. Pro potvrzen vloen souboru, pesu kurzor zpt a vimni si, e te m dv kopie lekce 5.3, originl a souborovou verzi. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUT LEKCE 5 1. :!pkaz vykon vnj pkaz. Nkter uiten pklady jsou: (MS-DOS) (Unix) :!dir :!ls - zobraz obsah souboru. :!del SOUBOR :!rm SOUBOR - odstran SOUBOR. 2. :w SOUBOR ulo aktuln text jako SOUBOR na disk. 3. :#,#w SOUBOR ulo dky od # do # do SOUBORU. 4. :r SOUBOR vybere z disku SOUBOR a vlo ho do editovanho souboru za pozici kurzoru. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 6.1: PKAZ OTEVT ** Napi o pro vloen dku pod kurzor a pepnut do Vkldacho mdu. ** 1. Pemsti kurzor ne na dek oznaen --->. 2. Napi o (mal) pro vloen dku POD kurzor a pepnut do Vkldacho mdu. 3. Nyn zkopruj dek oznaen ---> a stiskni pro ukonen Vkldacho mdu. ---> Po stisknut o se kurzor pemst na vloen dek do Vkldacho mdu. 4. Pro oteven dku NAD kurzorem jednodue napi velk O , msto malho o. Vyzkouej si to na nsledujcm dku. Vlo dek nad tmto napsnm Shift-O po umstn kurzoru na tento dek. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 6.2: PKAZ PIDAT ** Stiskni a pro vloen textu ZA kurzor. ** 1. Pesu kurzor na ne na konec dky oznaen ---> stisknutm $ v Normlnm mdu. 2. Stiskni a (mal) pro pidn textu ZA znak, kter je pod kurzorem. (Velk A pid na konec dku.) Poznmka: Tmto se vyhne stisknut i , poslednho znaku, textu na vloen, , kurzor doprava, a nakonec x na pidvn na konec dku! 3. Nyn dokon prvn dek. Vimni si, e pidvn je vlastn stejn jako Vkldac md, krom msta, kam se text vkld. ---> Tento dek ti umouje nacviit ---> Tento dek ti umouje nacviit pidvn textu na konec dky. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 6.3: JIN ZPSOB NAHRAZOVN ** Napi velk R pro nahrazen vc ne jednoho znaku. ** 1. Pesu kurzor na prvn dek oznaen --->. 2. Umsti kurzor na zatek prvnho slova, kter je odlin od druhho dku oznaenho ---> (slovo 'posledn'). 3. Nyn stiskni R a nahra zbytek textu na prvnm dku pepsnm starho textu tak, aby byl prvn dek stejn jako ten druh. ---> Pro upraven prvnho dku do tvaru toho posledn na stran pouij kl. ---> Pro upraven prvnho dku do tvaru toho druhho, napi R a nov text. 4. Vimni si, e jakmile stiskne vechen nezmnn text zstv. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 6.4: NASTAVEN MONOST ** Nastav monost, e vyhledvn anebo nahrazovn nedb velikosti psmen ** 1. Vyhledej etzec 'ignore' napsnm: /ignore Zopakuj nkolikrt stisknut klvesy n. 2. Nastav monost 'ic' (Ignore case) napsnm pkazu: :set ic 3. Nyn znovu vyhledej 'ignore' stisknutm: n Nkolikrt hledn zopakuj stisknutm klvesy n. 4. Nastav monosti 'hlsearch' a 'incsearch': :set hls is 5. Nyn znovu vykonej vyhledvac pkaz a sleduj, co se stane: /ignore 6. Pro vypnut zvrazovn vsledk napi: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRHNUT LEKCE 6 1. Stisknut o oteve nov dek POD kurzorem a umst kurzor na vloen dek do Vkldacho mdu. Napsn velkho O oteve dek NAD dkem, na kterm je kurzor. 2. Stiskni a pro vloen textu ZA znak na pozici kurzoru. Napsn velkho A automaticky pid text na konec dku. 3. Stisknut velkho R pepne do Nahrazovacho mdu, dokud nestiskne pro jeho ukonen. 4. Napsn ":set xxx" nastav monosti "xxx". ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCE 7: PKAZY ON-LINE NPOVDY ** Pouvej on-line systm npovdy ** Vim m obshl on-line systm npovdy. Pro zatek vyzkouej jeden z nsledujcch: - stiskni klvesu (pokud ji m) - stiskni klvesu (pokud ji m) - napi :help Napi :q pro uzaven okna npovdy. Me najt npovdu k jakmukoliv tmatu pidnm argumentu k pkazu ":help". Zkus tyto (nezapome stisknout ): :help w :help c_ toets NIET is ingedrukt en druk vaak genoeg op de j-toets om de cursor zo te bewegen dat les 1.1 volledig op het scherm staat. LET OP: In deze lessen worden omwille van de duidelijkheid vaak spaties gebruikt binnen een commando (bv. "40 G" of "operator [getal] beweging"). Tik deze spaties echter NIET. Ze verstoren de werking. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 1.1: VERPLAATS DE CURSOR ** De cursor wordt verplaatst met de toetsen h, j, k, l zoals aangegeven. ** ^ k Hint: De h is de meest linkse en beweegt naar links. < h l > De l is de meest rechtse en beweegt naar rechts. j De j lijkt op een pijl naar beneden. v 1. Beweeg de cursor over het scherm om er vertrouwd mee te raken. 2. Druk de omlaag-toets (j) tot hij repeteert. Nu weet je hoe je de volgende les bereikt. 3. Gebruik de omlaag-toets om naar les 1.2 te gaan. OPMERKING: Als je twijfelt aan wat je tikte, druk om in de opdracht- modus te komen. Tik daarna het commando dat bedoeld wordt. OPMERKING: Pijltjes-toetsen werken ook. Met de hjkl-toetsen kan je sneller rondbewegen, als je er eenmaal aan gewend bent. Echt waar! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 1.2: VIM AFSLUITEN !! LET OP: Lees deze les goed door voordat je iets uitvoert!! 1. Druk de toets (om zeker in de opdrachtmodus te zitten). 2. Tik :q! Hiermee wordt de editor afgesloten. Alle veranderingen gaan VERLOREN. 3. Nu zie je de shell-prompt. Tik het commando waarmee je deze lessen hebt opgeroepen. Dat is normaal gesproken: vimtutor 4. Als je deze stappen goed hebt doorgelezen, voer dan de stappen 1 tot 3 uit om de editor te verlaten en weer op te starten. LET OP: :q! verwerpt alle veranderingen die je aanbracht. Een paar lessen verder zal je leren hoe veranderingen worden opgeslagen in een bestand. 5. Beweeg de cursor omlaag naar les 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 1.3: TEKST BEWERKEN - WISSEN ** Tik x om het teken onder de cursor te wissen. ** 1. Ga met de cursor naar de regel verderop met --->. 2. Zet de cursor op een teken dat moet worden gewist om een fout te herstellen. 3. Tik x om het ongewenste teken te wissen. 4. Herhaal deze stappen tot de regel goed is. ---> Vi kkent eenn opdracccchtmodus en een invooegmmmmodus. 5. Nu de regel gecorrigeerd is kan je naar les 1.4 gaan. LET OP: Probeer de lessen niet uit je hoofd te leren. Leer al doende. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 1.4: TEKST BEWERKEN - INVOEGEN ** Tik i ('insert') om tekst in te voegen. ** 1. Ga met de cursor naar de eerste regel verderop met --->. 2. Maak de eerste regel gelijk aan de tweede. Zet daarvoor de cursor op de plaats waar tekst moet worden ingevoegd. 3. Tik i en daarna de nodige aanvullingen. 4. Tik na elke herstelde fout om terug te keren in de opdrachtmodus. Herhaal de stappen 2 tot 4 om de zin te verbeteren. ---> Aan regel ontekt wat . ---> Aan deze regel ontbreekt wat tekst. 5. Ga naar les 1.5 als je gewend bent aan het invoegen van tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 1.5: TEKST BEWERKEN - TOEVOEGEN ** Tik A ('append') om tekst toe te voegen. ** 1. Ga met de cursor naar de eerste regel verderop met --->. Het maakt niet uit waar de cursor in deze regel staat. 2. Tik hoofdletter A en tik de nodige aanvullingen. 3. Tik nadat de tekst is aangevuld. Zo keer je terug in de opdrachtmodus. 4. Ga naar de tweede regel verderop met ---> en herhaal stap 2 en 3 om deze zin te corrigeren. ---> Er ontbreekt wat tekst aan de Er ontbreekt wat tekst aan deze regel. ---> Hier ontbreekt ook w Hier ontbreekt ook wat tekst. 5. Ga naar les 1.6 als je vertrouwd bent geraakt aan het toevoegen van tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 1.6: EEN BESTAND EDITTEN ** Gebruik :wq om een bestand op te slaan en de editor te verlaten. ** !! LET OP: Lees deze les helemaal door voordat je een van de volgende stappen uitvoert!! 1. Verlaat deze les zoals je in les 1.2 deed: :q! Of gebruik een andere terminal als je daar de beschikking over hebt. Doe daar het volgende. 2. Tik het volgende commando na de shell-prompt: vim les 'vim' (vaak ook 'vi') is het commando om de Vim-editor te starten, 'les' is de naam van het bestand, dat je gaat bewerken. Kies een andere naam als er al een bestand 'les' bestaat, dat niet veranderd mag worden. 3. Voeg naar eigen keus tekst toe, zoals je geleerd hebt in eerdere lessen. 4. Sla het bestand met de wijzigingen op en verlaat Vim met :wq 5. Herstart vimtutor als je deze bij stap 1 hebt verlaten en ga verder met de volgende samenvatting. 6. Voer deze stappen uit nadat je ze hebt gelezen en begrepen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 1 1. De cursor wordt bewogen met de pijltjestoetsen of de hjkl-toetsen. h (links) j (omlaag) k (omhoog) l (rechts) 2. Start Vim van de shell-prompt. Tik: vim BESTANDSNAAM 3. Sluit Vim af met :q! om de veranderingen weg te gooien. OF tik :wq om de veranderingen te bewaren. 4. Wis het teken onder de cursor met: x 5. Invoegen of toevoegen van tekst, tik: i en daarna de in te voegen tekst voeg in vanaf de cursor A en daarna de toe te voegen tekst voeg toe achter de regel OPMERKING: Met kom je terug in opdrachtmodus en wordt een ongewenst of gedeeltelijk uitgevoerd commando afgebroken. Ga nu verder met les 2.1. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.1: WIS-COMMANDO'S ** Tik dw ('delete word') om een woord te wissen. ** 1. Druk op om zeker in de opdrachtmodus te zijn. 2. Ga naar de regel hieronder, die met ---> begint. 3. Ga met de cursor naar het begin van een woord dat moet worden gewist. 4. Met het tikken van dw verdwijnt het woord. OPMERKING: De letter d verschijnt op de laatste regel van het scherm zodra je hem tikt. Vim is aan het wachten tot je de w tikt. Als je een ander teken dan d ziet, heb je iets verkeerds getikt. Druk op en begin opnieuw. NOG EEN OPMERKING: Dit werkt alleen als de optie 'showcmd' is ingeschakeld. Dat gebeurt met :set showcmd ---> Er zijn een het paar ggg woorden, die niet in deze len zin thuishoren. 5. Herhaal de stappen 3 en 4 tot de zin goed is en ga naar les 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.2: MEER WIS-COMMANDO'S ** Tik d$ om te wissen tot het einde van de regel. ** 1. Druk op om zeker in de opdrachtmodus te zijn. 2. Ga naar de regel hieronder, die met ---> begint. 3. Ga met de cursor naar het einde van de correcte regel (NA de eerste . ). 4. Tik d$ om te wissen tot het einde van de regel. ---> Iemand heeft het einde van deze regel dubbel getikt. dubbel getikt. 5. Ga naar les 2.3 voor uitleg. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.3: OVER OPERATOREN EN BEWEGINGEN Veel commando's die de tekst veranderen, bestaan uit een operator en een beweging. De samenstelling van een wis-commando met de operator d is: d beweging Daarbij is: d - de wis-operator beweging - het bereik waarop de operator werkt (zie het lijstje hieronder) Een korte lijst van bewegingen vanaf de cursor: w - tot het begin van het volgende woord, ZONDER het eerste teken daarvan. e - tot het einde van het huidige woord, INCLUSIEF het laatste teken. $ - tot het einde van de regel, INCLUSIEF het laatste teken. Het tikken van de wist tekst vanaf de cursor tot het eind van het woord. OPMERKING: Het intikken van alleen maar de beweging, zonder een operator, in de opdrachtmodus beweegt de cursor (respectievelijk naar het volgende woord, naar het eind van het huidige woord en naar het eind van de regel). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.4: GEBRUIK VAN EEN TELLER BIJ EEN BEWEGING ** Een getal voor een beweging herhaalt het zoveel keer. ** 1. Ga naar de regel hieronder, die met ---> begint. 2. Tik 2w zodat de cursor twee woorden vooruit gaat. 3. Tik 3e zodat de cursor naar het einde van het derde woord gaat. 4. Tik 0 (nul) om naar het begin van de regel te gaan. 5. Herhaal de stappen 2 en 3 met andere getallen. ---> Dit is een regel met woorden waarin je heen en weer kan bewegen. 6. Ga verder met les 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.5: GEBRUIK EEN TELLER OM MEER TE WISSEN ** Een getal met een operator zorgt dat deze zoveel keer wordt herhaald. ** Bij de combinatie van wis-operator en beweging kan je voor de beweging een teller zetten om meer te wissen: d [teller] beweging 1. Ga naar het eerste woord in HOOFDLETTERS in de regel na --->. 2. Met d2w worden twee woorden (in dit voorbeeld in hoofdletters) gewist. 3. Herhaal de stappen 1 en 2 met verschillende tellers om de verschillende woorden in hoofdletters met n commando te wissen. ---> deze ABC DE regel FGHI JK LMN OP is QZ RS ontdaan van rommel. OPMERKING: De teller kan ook aan het begin staan: d2w en 2dw werken allebei. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.6: BEWERKING VAN HELE REGELS ** Tik dd om een hele regel te wissen. ** Omdat het wissen van een hele regel vaak voorkomt, besloten de ontwerpers van Vi dat met het tikken van dd simpelweg een hele regel gewist wordt. 1. Ga met de cursor naar de tweede regel van de zinnetjes hieronder. 2. Tik dd om de regel te wissen. 3. Ga nu naar de vierde regel. 4. Tik 2dd om twee regels te wissen. ---> 1) Rozen zijn rood. ---> 2) Modder is leuk. ---> 3) Viooltjes zijn blauw. ---> 4) Ik heb een auto. ---> 5) De klok slaat de tijd. ---> 6) Suiker is zoet. ---> 7) En dat ben jij ook. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.7: HET COMMANDO HERSTEL ** u maakt het laatste commando ongedaan, U herstelt een hele regel. ** 1. Ga met de cursor naar de regel hieronder met ---> en zet hem op de eerste fout. 2. Tik x om het eerste ongewenste teken te wissen. 3. Tik nu u en maak daarmee het vorige commando ongedaan. 4. Herstel nu alle fouten in de regel met het x commando. 5. Tik een hoofdletter U om de regel in z'n oorspronkelijke staat terug te brengen. 6. Tik nu een paar keer u en herstel daarmee de U en eerdere commando's. 7. Tik nu een paar keer CTRL-R (Ctrl-toets ingedrukt houden en R tikken) en voer daarmee de commando's opnieuw uit: 'redo' oftewel 'undo de undo's'. ---> Heerstel de fouten inn deeze regel en brenng ze weer terugg met undo. 8. Dit zijn heel nuttige commando's. Ga verder met samenvatting van les 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 2 1. Wis van de cursor tot het volgende woord met dw 2. Wis van de cursor tot het eind van de regel met d$ 3. Wis de hele regel met dd 4. Herhaal een beweging door er een getal voor te zetten: 2w 5. De opbouw van een wijzigingscommando is: operator [getal] beweging daarbij is: operator - wat er moet gebeuren, bijvoorbeeld d om te wissen [getal] - een (niet-verplichte) teller om 'beweging' te herhalen beweging - een beweging door de te wijzigen tekst zoals w (woord) of $ (tot het einde van de regel) enz. 6. Ga naar het begin van de regel met nul: 0 7. Undo de voorgaande actie met u (kleine letter) Undo alle veranderingen in een regel met U (hoofdletter) Undo de undo's met CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 3.1: HET COMMANDO PLAK ** Tik p ('put') en plak daarmee zojuist gewiste tekst na te cursor. ** 1. Ga met de cursor naar de eerste regel met ---> hierna. 2. Wis de regel met dd en bewaar hem zodoende in een Vim-register. 3. Ga naar de c-regel, waar de gewiste regel ONDER moet komen. 4. Tik p om de regel terug te zetten onder de regel met de cursor. 5. Herhaal de stappen 2 tot 4 om de regels in de goede volgorde te zetten. ---> d) Krijg je het ook onder de knie? ---> b) Viooltjes zijn blauw, ---> c) Begrip is te leren, ---> a) Rozen zijn rood, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 3.2: HET COMMANDO VERVANG ** Tik rx ('replace') om het teken onder de cursor te vervangen door x. ** 1. Ga naar de eerste regel hieronder met --->. 2. Zet de cursor op de eerste fout. 3. Tik r en dan het teken dat er hoort te staan. 4. Herhaal de stappen 2 en 3 tot de eerste regel gelijk is aan de tweede. ---> Bij het tokken van dezf hegel heeft iemamd verklerde letters getikt. ---> Bij het tikken van deze regel heeft iemand verkeerde letters getikt. 5. Ga nu naar les 3.3. LET OP: Door het te doen, leer je beter dan door het uit je hoofd te leren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 3.3: HET COMMANDO VERANDER ** Tik ce om te veranderen tot het einde van een woord. ** 1. Ga met de cursor naar de eerste regel hieronder met --->. 2. Zet de cursor op de u van ruch. 3. Tik ce en de juiste letters (in dit geval "egel"). 4. Druk en ga naar het volgende teken dat moet worden veranderd. 5. Herhaal de stappen 3 en 4 tot de eerste regel gelijk is aan de tweede. ---> In deze ruch staan een paar weedrim die veranderd moud worden. ---> In deze regel staan een paar woorden die veranderd moeten worden. LET OP: Met ce wordt (het laatste deel van) een woord gewist en kom je in de invoegmodus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 3.4: MEER VERANDERINGEN MET c 1. Het commando verander ('change') werkt op dezelfde manier als wis. De opbouw is: c [teller] beweging 2. De bewegingen zijn hetzelfde, zoals w (woord) en $ (einde regel). 3. Ga naar de eerste regel hieronder met --->. 4. Zet de cursor op de eerste fout. 5. Tik c$ en tik de rest van de regel zodat hij gelijk wordt aan de tweede en sluit af met . ---> Het einde van deze regel moet precies zo worden als de tweede regel. ---> Het einde van deze regel moet gecorrigeerd worden met het commando c$. OPMERKING: Je kan de toets gebruiken om tikfouten te herstellen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 3 1. Tik p om tekst terug te plakken, die zojuist is gewist. Dit zet de gewiste tekst ACHTER de cursor (als een hele regel is gewist komt deze op de regel ONDER de cursor. 2. Het teken waarop de cursor staat wordt vervangen met r gevolgd door het teken dat je daar wilt hebben. 3. Het commando 'verander' stelt je in staat om tekst te veranderen vanaf de cursor tot waar de 'beweging' je brengt. Dat wil zeggen: tik ce om te veranderen vanaf de cursor tot het einde van het woord, c$ om te veranderen tot het einde van de regel. 4. De opbouw van het commando verander is: c [teller] beweging Ga nu naar de volgende les. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 4.1: PLAATS VAN DE CURSOR EN STATUS VAN HET BESTAND ** CTRL-G laat zien waar (regelnummer) je je bevindt en wat de status van het bestand is. Met [nummer] G ga je naar een bepaalde regel. ** LET OP: Lees de hele les voordat je een stap uitvoert!! 1. Hou de Ctrl-toets ingedrukt en tik g . Dit noemen we CTRL-G. Onderaan de pagina verschijnt een boodschap met de bestandsnaam en de positie in het bestand. Onthou het regelnummer voor stap 3. OPMERKING: Als de optie 'ruler' aan staat, wordt de positie van de cursor (regelnummer, kolom) steeds in de rechter-onderhoek van het scherm vermeld. In dit geval vermeldt CTRL-G geen regelnummer. CTRL-G geeft ook de status aan, namelijk of de tekst veranderd is ('modified') sinds het de laatste keer is opgeslagen. 2. Tik hoofdletter G om naar het einde van het bestand te gaan. Tik gg om naar het begin van het bestand te gaan. 3. Tik het regelnummer waar je bij stap 1 was en daarna G . Dit brengt je terug naar de regel waar je was toen je de eerste keer CTRL-G tikte. 4. Voer de stappen 1 tot 3 uit als je dit goed hebt gelezen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 4.2: HET COMMANDO ZOEKEN ** Met /ZOEK wordt naar de zoekterm (n of meer woorden) gezocht. ** 1. Tik in de opdrachtmodus het teken / . Je ziet dat het met de cursor aan de onderkant van het scherm verschijnt, zoals bij het :-commando. 2. Tik nu 'ffouut' . Dit is het woord waarnaar gezocht wordt. 3. Tik n om verder te zoeken met dezelfde zoekterm. Zoek met N met dezelfde zoekterm in de tegenovergestelde richting. 4. Zoek in achterwaartse richting met ?zoekterm in plaats van / . 5. Keer terug naar de vorige hit met CTRL-O (hou Ctrl-toets ingedrukt en tik letter o). Herhaal om verder terug te gaan. CTRL-I gaat vooruit. ---> "ffouut" is niet de juiste spelling van fout, ffouut is een fout. OPMERKING: Als zoeken het einde van het bestand bereikt, wordt vanaf het begin doorgezocht, tenzij de optie 'wrapscan' is uitgeschakeld. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 4.3: GA NAAR CORRESPONDERENDE HAAKJES ** Tik % om naar corresponderende ), ] of } te gaan. ** 1. Zet de cursor op een (, [ of { in de regel hieronder met --->. 2. Tik dan het teken % . 3. De cursor gaan naar het overeenkomstige haakje. 4. Met opnieuw % gaat de cursor terug naar het eerste haakje. 5. Plaats de cursor op een ander haakje en bekijk wat % doet. ---> Dit ( is een testregel met ('s, ['s ] en {'s } erin. )) OPMERKING: Dit is nuttig bij het debuggen van een programma waarin haakjes niet corresponderen. Met de optie 'showmatch' wordt ook aangegeven of haakjes corresponderen, maar de cursor wordt niet (blijvend) verplaatst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 4.4: HET VERVANG COMMANDO ** Tik :s/oud/nieuw/g om 'oud' door 'nieuw' te vervangen. ** 1. Ga met de cursor naar de regel hieronder met --->. 2. Tik :s/dee/de . Zoals je ziet, vervangt ('substitute') dit commando alleen de eerste "dee" in de regel. 3. Tik nu :s/dee/de/g . Met de g-vlag ('global') wordt elke "dee" in de regel vervangen. ---> dee beste tijd om dee bloemen te zien is in dee lente. 4. Om in (een deel van) een tekst elk 'oud' te vervangen door 'nieuw': tik :#,#s/oud/nieuw/g waar #,# de regelnummers zijn die het gebied begrenzen waarin wordt vervangen. tik :%s/oud/nieuw/g om alles te vervangen in het hele bestand. tik :%s/oud/nieuw/gc om elke 'oud' in het hele bestand te vinden en te vragen of er vervangen moet worden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 4 1. CTRL-G laat positie in het bestand zien en de status van het bestand. G verplaatst je naar het einde van het bestand. nummer G verplaatst je naar regelnummer. gg verplaatst je naar de eerste regel. 2. Met / en een zoekterm wordt VOORWAARTS gezocht naar de term. Met ? en een zoekterm wordt ACHTERWAARTS gezocht naar de term. Tik n na een zoekopdracht om de volgende hit te vinden, of tik N om in de andere richting te zoeken. CTRL-O brengt je naar eerdere hit, CTRL-I naar nieuwere. 3. Tik % terwijl de cursor op een haakje ([{}]) staat, om naar het corresponderende haakje te gaan. 4. :s/oud/nieuw vervangt het eerste 'oud' in een regel door 'nieuw'. :s/oud/nieuw/g vervangt elk 'oud' in een regel door 'nieuw'. :#,#s/oud/nieuw/g vervangt elk 'oud' door 'nieuw' tussen de regelnummers. :%s/oud/nieuw/g vervangt elk 'oud' door 'nieuw' in het hele bestand. Voeg c toe (:%s/oud/nieuw/gc) om elke keer om bevestiging ('confirmation') te vragen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 5.1: HOE EEN EXTERN COMMANDO WORDT UITGEVOERD ** Tik :! gevolgd door een extern commando om dat uit te voeren. ** 1. Tik het commando : waarmee de cursor op de onderste regel van het scherm komt te staan. Nu kan je een opdracht geven via de commando-regel. 2. Tik een ! (uitroepteken). Dit stelt je in staat om elk shell-commando uit te voeren. 3. Tik bijvoorbeeld ls na het uitroepteken en daarna . Hiermee krijg je de inhoud van je map te zien, net alsof je de opdracht gaf vanaf de shell-prompt. Probeer :!dir als het niet werkt. OPMERKING: Elk extern commando kan op deze manier uitgevoerd worden, ook met argumenten. OPMERKING: Alle commando's na : moeten worden afgesloten met . Vanaf nu zullen we dat niet meer altijd vermelden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 5.2: MEER OVER HET OPSLAAN VAN BESTANDEN ** Tik :w BESTANDSNAAM om de tekst mt veranderingen op te slaan. ** 1. Tik :!dir of :!ls om de inhoud van je map te tonen. Je weet inmiddels dat je daarna een moet tikken. 2. Kies een bestandsnaam die nog niet bestaat, bijvoorbeeld TEST. 3. Tik nu: :w TEST (als je de naam TEST hebt gekozen). 4. Hierdoor wordt het hele bestand (de VIM lessen) opgeslagen onder de naam TEST. Tik weer :!dir of :!ls om dit te controleren. OPMERKING: Als je Vim zou verlaten en opnieuw zou starten met vim TEST is het bestand een exacte kopie van de lessen, zoals je ze opsloeg. 5. Wis het bestand nu met de opdracht (MS-DOS) :!del TEST of (Unix) :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 5.3: EEN DEEL VAN DE TEKST OPSLAAN ** Sla een deel van het bestand op met v beweging :w BESTANDSNAAM ** 1. Ga naar deze regel. 2. Tik v en ga met de cursor naar stap 5 hieronder. Je ziet dat de tekst oplicht. 3. Tik : . Onderaan het scherm zal :'<,'> verschijnen. 4. Tik w TEST , waar TEST een bestandsnaam is, die nog niet bestaat. Controleer dat je :'<,'>w TEST ziet staan voordat je tikt. 5. Vim slaat nu de geselecteerde regels op in het bestand TEST. Met :!dir of !ls kan je dat zien. Wis het nog niet! We zullen het in de volgende les gebruiken. OPMERKING: Het tikken van v zet zichtbare modus ('visual selection') aan. Je kan de cursor rondbewegen om de selectie groter of kleiner te maken. Vervolgens kan je een commando gebruiken om iets met de tekst te doen. Met d bijvoorbeeld wis je de tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 5.4: OPHALEN EN SAMENVOEGEN VAN BESTANDEN ** Tik :r BESTANDSNAAM om de inhoud van een bestand in te voegen. ** 1. Zet de cursor precies boven deze regel. OPMERKING: Na het uitvoeren van stap 2 zie je tekst van les 5.3. Scrol daarna naar beneden om deze les weer te zien. 2. Haal nu het bestand TEST op met het commando :r TEST . Het bestand dat je ophaalt komt onder de regel waarin de cursor staat. 3. Controleer dat er een bestand is opgehaald. Ga met de cursor omhoog. Dan zie je de tekst van les 5.3 dubbel, het origineel en de versie uit het bestand. OPMERKING: Je kan ook de uitvoer van een extern commando inlezen. Om een voorbeeld te geven: :r !ls leest de uitvoer van het commando ls en zet dat onder de regel waarin de cursor staat. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 5 1. :!COMMANDO voert een extern commando uit. Enkele bruikbare voorbeelden zijn: (MS-DOS) (Unix) :!dir :!ls - laat de inhoud van een map zien :!del BESTAND :!rm BESTAND - wist bestand BESTAND 2. :w BESTANDSNAAM schrijft het huidige Vim-bestand naar disk met de naam BESTANDSNAAM. 3. v beweging :w BESTANDSNAAM laat je in zichtbare modus een fragment selecteren, dat wordt opgeslagen in het bestand BESTANDSNAAM. 4. :r BESTANDSNAAM haalt het bestand BESTANDSNAAM op en voegt het onder de cursor-positie in de tekst in. 5. :r !dir leest de uitvoer van het externe commando dir en zet het onder de cursor-positie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 6.1: HET COMMANDO OPEN ** Tik o om een regel onder de cursor te openen in invoegmodus. ** 1. Ga naar de eerste regel beneden met --->. 2. Tik de kleine letter o en open daarmee een regel ONDER de cursor en ga naar de invoegmodus. 3. Tik wat tekst in en sluit af met om de invoegmodus te verlaten. ---> Als je o tikt, komt de cursor in een nieuwe regel in invoegmodus. 4. Om een regel BOVEN de cursor te openen, moet je gewoon een hoofdletter O tikken in plaats van een kleine letter. Probeer dat vanaf de volgende regel. ---> Open een regel hierboven. Tik een O terwijl de cursor hier staat. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 6.2: HET COMMANDO TOEVOEGEN ** Tik a om tekst toe te voegen ACHTER de cursor. ** 1. Ga naar het begin van de regel beneden met --->. 2. Tik e tot de cursor op het einde van "ste" staat. 3. Tik een (kleine letter) a ('append') om toe te voegen ACHTER de cursor. 4. Vul het woord aan zoals in de volgende regel. Druk om de invoegmodus te verlaten. 5. Ga met e naar het einde van het volgende onvolledige woord en herhaal de stappen 3 en 4. ---> Deze regel ste je in staat om te oef in het toevo van tekst. Deze regel stelt je in staat om te oefenen in het toevoegen van tekst. OPMERKING: a, i en A openen allemaal dezelfde invoegmodus, het enige verschil is waar tekens worden ingevoegd. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 6.3: VERVANGEN OP EEN ANDERE MANIER ** Tik een hoofdletter R om meer dan n teken te vervangen. ** 1. Ga naar de eerste regel beneden met --->. Ga met de cursor naar het begin van de eerste "xxx" . 2. Tik nu R en daarna het getal eronder in de tweede regel, zodat xxx wordt vervangen. 3. Druk om de vervangmodus te verlaten. Je ziet dat de rest van de regel ongewijzigd blijft. 4. Herhaal de stappen om de overgebleven xxx te vervangen. ---> Optellen van 123 en xxx geeft je xxx. ---> Optellen van 123 en 456 geeft je 579. OPMERKING: Vervangmodus lijkt op invoegmodus, maar elk teken dat je tikt, vervangt een bestaand teken. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 6.4: TEKST KOPIREN EN PLAKKEN ** Gebruik y om tekst te kopiren en p om te plakken. ** 1. Ga naar de regel beneden met ---> en zet de cursor achter "a)". 2. Zet zichtbare modus aan met v en zet de cursor juist voor "eerste". 3. Tik y ('yank') om de opgelichte tekst ("dit is het") te kopiren. 4. Ga met j$ met de cursor naar het einde van de volgende regel. 5. Plak de gekopieerde tekst met p en tik a tweede . 6. Selecteer in zichtbare modus "onderdeel", kopieer het met y en ga met j$ naar het einde van de tweede regel. Plak de tekst daar met p . ---> a) dit is het eerste onderdeel b) OPMERKING: Je kan y ook als operator gebruiken; yw kopieert een woord, yy een hele regel. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 6.5: OPTIES GEBRUIKEN ** Gebruik een optie voor al dan niet hoofdlettergevoelig zoeken. ** 1. Zoek naar 'hoofdlettergevoelig' met /hoofdlettergevoelig Herhaal het zoeken enkele keren door n te tikken. 2. Schakel de optie 'ic' ('ignore case', niet-hoofdlettergevoelig) in met :set ic 3. Zoek met n opnieuw naar 'hoofdlettergevoelig'. Je ziet dat Hoofdlettergevoelig en HOOFDLETTERGEVOELIG nu ook gevonden worden. 4. Schakel de opties 'hlsearch' (treffers oplichten) en 'incsearch' (toon gedeeltelijke treffers bij intikken) in met :set hls is 5. Tik weer /hoofdlettergevoelig en kijk wat er gebeurt. 6. Schakel 'hoofdlettergevoelig' weer in met :set noic OPMERKING: Schakel het oplichten van treffers uit met :nohlsearch OPMERKING: Om bij een enkel zoek-commando de hoofdlettergevoeligheid om te draaien kan \c worden gebruikt na de zoekterm: /hoofdlettergevoelig\c . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 6 1. Tik o om een regel te openen ONDER de cursor en invoegmodus te starten. Tik O om een regel te openen BOVEN de cursor. 2. Tik a om tekst toe te voegen NA de cursor. Tik A om tekst toe te voegen aan het einde van de regel. 3. Het commando e beweegt de cursor naar het einde van een woord. 4. De operator y yankt (kopieert) tekst, p zet het terug (plakt). 5. Met hoofdletter R wordt de vervangmodus geopend, met afgesloten. 6. Met :set xxx wordt optie 'xxx' ingeschakeld. Opties zijn bijvoorbeeld: ic ignorecase geen verschil hoofdletters/kleine letters bij zoeken is incsearch toon gedeeltelijke treffers tijdens intikken zoekterm hls hlsearch laat alle treffers oplichten Je kan zowel de lange als de korte naam van een optie gebruiken. 7. Zet 'no' voor de naam om een optie uit te schakelen: :set noic schakelt 'ic' uit. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 7.1: HULP INROEPEN ** Het gebruik van ingebouwde hulp. ** Vim heeft een uitgebreid ingebouwd hulpsysteem. Probeer, om te beginnen, n van deze drie: - druk de toets (als je die hebt) - druk de toets (als je die hebt) - tik :help Lees de tekst in het help-venster om te leren hoe 'help' werkt. Tik CTRL-W CTRL-W om van het ene venster naar het andere te gaan. Met :q wordt het help-venster gesloten. Je kan hulp vinden over nagenoeg elk onderwerp door een argument aan het commando :help toe te voegen. Probeer deze (en vergeet niet): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 7.2: SCHRIJF EEN CONFIGURATIEBESTAND ** Mogelijkheden van Vim uitbreiden. ** Vim kent veel meer mogelijkheden dan Vi, maar de meeste zijn standaard uitgeschakeld. Om meer functies te gebruiken moet je een 'vimrc'-bestand schrijven. 1. Bewerk het bestand 'vimrc'. Hoe dat moet hangt af van je systeem: :e ~/.vimrc voor Unix :e $VIM/_vimrc voor MS-Windows 2. Lees de inhoud van het voorbeeld-bestand: :r $VIMRUNTIME/vimrc_example.vim 3. Sla het bestand op met :w De volgende keer dat je Vim start wordt 'syntaxiskleuring' gebruiken. Je kan al je voorkeursinstellingen toevoegen aan dit 'vimrc'-bestand. Tik :help vimrc-intro voor meer informatie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 7.3: AANVULLEN ** Aanvullen van de 'command line' met CTRL-D en . ** 1. Zorg dat Vim niet in 'compatible mode' is met :set nocp 2. Kijk welke bestanden zich in de map bevinden met :!ls of :!dir 3. Tik het begin van een commando: :e 4. Met CTRL-D toont Vim een lijst commando's, die met "e" beginnen. 5. Druk enkele keren . Vim laat aanvullingen zien, zoals ":edit", dat we hier gebruiken. 6. Voeg een spatie toe en de eerste letter(s) van een bestaande bestandsnaam: :edit BESTAND 7. Druk . Vim vult de naam aan (als hij uniek is). OPMERKING: Aanvullen werkt bij tal van commando's. Probeer gewoon CTRL-D en . Het is bijzonder nuttig bij :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 7 1. Tik :help of druk of om een help-venster te openen. 2. Tik :help CMD voor hulp over CMD . 3. Tik CTRL-W CTRL-W om naar een ander venster te gaan. 4. Tik :q om het help-venster te sluiten. 5. Maak een bestand met de naam 'vimrc' voor je voorkeursinstellingen. 6. Druk CTRL-D tijdens het intikken van een :-commando om mogelijke aanvullingen te zien. Druk om aanvullen te gebruiken. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Hiermee komen de Vim-lessen tot een einde. Ze waren bedoeld om een kort overzicht te geven van de Vim-editor, juist voldoende om de editor redelijk makkelijk te gebruiken. Deze lessen zijn verre van volledig. Vim kent veel meer commando's. Lees hierna de handleiding voor gebruikers: ":help user-manual". Voor verdere studie wordt aanbevolen: Vim - Vi Improved - door Steve Oualline Uitgever: New Riders Dit is het eerste boek dat geheel aan Vim is gewijd. Speciaal geschikt voor beginners. Met veel voorbeelden en afbeeldingen. Zie http://iccf-holland.org/click5.html Het volgende boek is ouder en gaat meer over Vi dan Vim, maar het wordt toch aanbevolen: Learning the Vi Editor - door Linda Lamb Uitgever: O'Reilly & Associates Inc. Het is een goed boek om nagenoeg alles te weten te komen dat je met Vi zou willen doen. De zesde en vooral de nieuwe zevende druk (onder de titel Learning the Vi and Vim Editors door Arnold Robbins, Elbert Hannah & Linda Lamb) bevat ook informatie over Vim. Deze lessen zijn geschreven door Michael C. Pierce en Robert K. Ware, Colorado School of Mines met gebruikmaking van ideen van Charles Smith van de Colorado State University. E-mail: bware@mines.colorado.edu. Aangepast voor Vim door Bram Moolenaar. Nederlandse vertaling door Rob Bishoff, april 2012 e-mail: rob.bishoff@hccnet.nl) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK! v vvim80/tutor/tutor.elnu[=============================================================================== = V I M T u t o r - 1.5 = =============================================================================== Vim , . Vim . 25-30 , . . ( "Vimtutor" ). . . , ! , Caps-Lock j 1.1 . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.1: ** , h,j,k,l . ** ^ k Hint: h ' . < h l > l . j j . v 1. . 2. (j) . ---> . 3. , 1.2. : , . . : . hjkl , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.2: VIM !! : , !! 1. ( ). 2. : :q! . ---> . : :wq 3. , . : vimtutor : vim tutor ---> 'vim' vim, 'tutor' . 4. , 1 3 . 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.3: - ** x . ** 1. --->. 2. , . 3. x . 4. 2 4 . ---> The ccow jumpedd ovverr thhe mooon. 5. , 1.4. : , , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.4: - ** i . ** 1. --->. 2. , . 3. i . 4. . 2 4 . ---> There is text misng this . ---> There is some text missing from this line. 5. . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 1. hjkl. h () j () k () l () 2. Vim ( %) : vim 3. : :q! . : :wq . 4. : x 5. : i : . 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.1: ** dw . ** 1. . 2. --->. 3. . 4. dw . : dw . , . ---> There are a some words fun that don't belong paper in this sentence. 5. 3 4 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.2: ** d$ . ** 1. . 2. --->. 3. ( . ). 4. d$ . ---> Somebody typed the end of this line twice. end of this line twice. 5. 2.3 . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.3: d : [] d d [] : - (, ' =1). d - . - ( ). : w - , . e - , . $ - . : , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.4: '-' ** dd . ** , Vim d . 1. . 2. dd . 3. . 4. 2dd ( --) . 1) Roses are red, 2) Mud is fun, 3) Violets are blue, 4) I have a car, 5) Clocks tell time, 6) Sugar is sweet 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.5: ** u , U . ** 1. ---> . 2. x . 3. u . 4. x. 5. U . 6. u U . 7. CTRL-R ( CTRL R) ( ). ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. . 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 1. : dw 2. : d$ 3. : dd 4. : [] [] : - - , d - , w (), $ ( ), . 5. , : u ( u) , : U ( U) , : CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.1: ** p . ** 1. . 2. dd Vim. 3. . 4. , p . 5. 2 4 . d) Can you learn too? b) Violets are blue, c) Intelligence is learned, a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.2: ** r . ** 1. --->. 2. . 3. r . 4. 2 3 . ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. 3.2. : , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.3: ** , cw . ** 1. --->. 2. u lubw. 3. cw ( , 'ine'.) 4. ( ). 5. 3 4 . ---> This lubw has a few wptfd that mrrf changing usf the change command. ---> This line has a few words that need changing using the change command. cw , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.4: c ** . ** 1. . : [] c c [] 2. , w (), $ ( ), . 3. --->. 4. . 5. c$ . ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 1. , p . ( . 2. , r . 3. . .. cw , c$ . 4. : [] c c [] . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.1: ** CTRL-g . SHIFT-G . ** : !! 1. Ctrl g . . 3. 2. shift-G . 3. shift-G. Ctrl-g. ( , ). 4. , 1 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.2: ** / . ** 1. / . : . 2. 'errroor' . . 3. , n . , Shift-N . 4. , ? / . ---> . "errroor" is not the way to spell error; errroor is an error. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.3: ** % ), ], } . ** 1. (, [, { --->. 2. % . 3. . 4. % ( ). ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) : ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.4: ** :s/old/new/g 'new' 'old'. ** 1. --->. 2. :s/thee/the . . 3. :s/thee/the/g . . ---> thee best time to see thee flowers is in thee spring. 4. , :#,#s/old/new/g #,# . :%s/old/new/g . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 1. Ctrl-g . Shift-G . Shift-G . 2. / . ? . n Shift-N . 3. % (,),[,],{, } . 4. new old :s/old/new new 'old' :s/old/new/g # :#,#s/old/new/g :%s/old/new/g 'c' "%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.1: ** :! . ** 1. : . . 2. ! (). . 3. ls ! . , . :!dir ls . ---> : . ---> : : . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.2: ** , :w . ** 1. :!dir :!ls . . 2. , TEST. 3. : :w TEST ( TEST ). 4. (vim Tutor) TEST. , :!dir . ---> Vim TEST, tutor . 5. (MS-DOS): :!del TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.3: ** , :#,# w ** 1. , :!dir :!ls TEST. 2. Ctrl-g . ! 3. Ctrl-g . ! 4. , :#,# w TEST #,# (,) TEST . 5. , :!dir . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.4: ** , :r ** 1. :!dir TEST . 2. . : 3 5.3. . 3. TEST :r TEST TEST . : . 4. , 5.3, . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 1. :! . (MS-DOS): :!dir - . :!del - . 2. :w Vim . 3. :#,#w # # . 4. :r . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.1: ** o . ** 1. --->. 2. o () . 3. ---> . ---> After typing o the cursor is placed on the open line in Insert mode. 4. , O, o. . Shift-O ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.2: ** a . ** 1. ---> $ . 2. a () . ( A ). : i , , , , -, , x, ! 3. . , . ---> This line will allow you to practice ---> This line will allow you to practice appending text to the end of a line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.3: ** R . ** 1. --->. 2. ---> ( 'last'). 3. R . ---> To make the first line the same as the last on this page use the keys. ---> To make the first line the same as the second, type R and the new text. 4. , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.4: ** - ** 1. 'ignore' : /ignore n. 2. 'ic' (Ignore case) : :set ic 3. 'ignore' : n n 4. 'hlsearch' 'incsearch': :set hls is 5. , /ignore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 1. o . 2. a . A . 3. R . 4. ":set xxx" "xxx". ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7: ON-LINE ** on-line ** Vim on-line . , : - ( ) - ( ) - :help :q . , ":help". ( ): :help w :help c_ l L[͉EɈړ܂B j j L[͉L[̂悤ȃL[łB v 1. ړɊ܂ŁAXN[ŃJ[\ړ܂傤B 2. ւ̃L[(j)‚ÂƁAAĈړł܂B Ŏ̃bXɈړ@킩܂ˁB 3. ւ̃L[gāAbX1.2 Ɉړ܂傤B NOTE: ^CvĂ邩ȂȂAăm[}[hɂ ܂Bꂩ͂悤ƂĂR}hē͂܂傤B NOTE: J[\L[łړł܂B hjkl ɈxĂ܂΁A͂邩 ɑړ邱Ƃłł傤B}W! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 1.2: VIM ̋NƏI !! NOTE: ȉ̂XebvsOɁÃbXǂ݂܂傤!! 1. L[܂傤B(mɃm[}[hɂ邽) 2. ̂悤Ƀ^Cv: :q! ɂҏWeۑɃGfB^I܂B 3. ̃`[gAn߂ׂ̃R}hsƁAɖ߂܂B ̃R}h: vimtutor 4. ܂ł̃XebvoM‚Ȃ΁AXebv 1 3 ܂ł ۂɎāAVim 1xIĂĂыN܂傤B NOTE: :q! ͑SĂ̕ύXj܂BbXɂĕύXt@Cɕ @ɂ‚Ă׋Ă܂傤B 5. 1.3܂ŃJ[\ړ܂傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 1.3: eLXgҏW - 폜 ** m[}[hɂăJ[\̉̕폜ɂ x ܂ ** 1. ȉ ---> ƎꂽsɃJ[\ړ܂傤B 2. ԈႢC邽߂ɁA폜ŏ̕܂ŃJ[\ړ܂B 3. sKvȕ x č폜܂傤B 4. Ȃ܂ Xebv 2 4 JԂ܂傤B ---> ‚‚ Ă Ƃт͂˂ 5. sȂAbX 1.4 ֐i݂܂傤B NOTE: SẴbXʂāAo悤Ƃ̂ł͂ȂۂɂĂ݂܂傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 1.4: eLXgҏW - } ** m[}[hɂăeLXg}ɂ i ܂ ** 1. ȉ ---> Ǝꂽŏ̍sɃJ[\ړ܂傤B 2. 1sڂ2sڂƓlɂ邽߂ɁAeLXg}Ȃ΂ȂȂʒu ̎̕ɃJ[\ړ܂B 3. i L[ĂAljKvȕ^Cv܂傤B 4. ԈႢC ăR}h[hɖ߂AɂȂl ɃXebv 2 4 JԂ܂傤B ---> ɂ Ȃ eLXg B ---> s ɂ ‚ Ȃ eLXg B 5. }̕@킩烌bX 1.5 ֐i݂܂傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 1.5: eLXgҏW - lj ** eLXgljɂ A ܂傤 ** 1. ȉ ---> Ǝꂽŏ̍sɃJ[\ړ܂傤B J[\̕ɂĂ܂܂B 2. ljKvȏꏊ A ^Cv܂傤B 3. eLXgljIA ăm[}[hɖ߂܂傤B 4. 2sڂ ---> ƎꂽꏊֈړAXebv 2 3 JԂĕ@ C܂傤B ---> ɂ͊ԈeLXg ɂ͊ԈeLXg܂B ---> ɂԈeLX ɂԈeLXg܂B 5. eLXg̒ljyɂȂĂ烌bX 1.6 ֐i݂܂傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 1.6: t@C̕ҏW ** t@CۑďIɂ :wq ƃ^Cv܂ ** !! NOTE: ȉ̃XebvsOɁA܂Ŝǂł!! 1. bX 1.2 ł悤 :q! ^CvāÃ`[gAI ܂B邢́Aʂ̒[ꍇ͂ňȉ̓esĂ܂ ܂B 2. VFvvgł̃R}h^Cv܂: vim tutor 'vim' Vim GfB^NR}hA'tutor' ͕ҏWt@C OłBύXĂ悢t@Cg܂傤B 3. ÕbXŊw񂾂悤ɁAeLXg}A폜܂B 4. ύXt@Cɕۑ܂: :wq 5. Xebv 1 vimtutuor Iꍇ vimtutor ēxNAȉ v֐i݂܂傤B 6. ȏ̃Xebvǂŗłs܂傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 1 v 1. J[\͖L[ hjkl L[ňړ܂B h () j () k () l (E) 2. Vim Nɂ̓vvg vim t@C ƃ^Cv܂B 3. Vim Iɂ :q! ƃ^Cv܂(ύXj)B :wq ƃ^Cv܂(ύXۑ)B 4. J[\̉̕폜ɂ́Am[}[h x ƃ^Cv܂B 5. J[\̈ʒuɕ}ɂ́Am[}[h i ƃ^Cv܂B i eLXg̃^Cv J[\ʒuɒlj A eLXg̒lj sɒlj NOTE: L[ƃm[}[hɈڍs܂B̍ہAԈ͓r ̃R}hƂł܂B āAăbX 2 n߂܂傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 2.1: 폜R}h ** P̖܂ł폜ɂ dw ƃ^Cv܂傤 ** 1. m[}[hł邱ƂmF邽߂ ܂傤B 2. ȉ ---> ƎꂽsɃJ[\ړ܂傤B 3. P̐擪ɃJ[\ړ܂傤B 4. P폜邽߂ dw ƃ^Cv܂傤B NOTE: ^CvƁAdw ƂXN[̍ʼnsɌ܂B ^CvԈĂ܂ɂ Ă蒼܂傤B ---> ɂ ‚ ̂ Kv̂Ȃ P ܂܂ ܂B 5. 3 4 ܂ł𕶂Ȃ܂ŌJԂAbX 2.2 ֐i݂܂傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 2.2: ̑̍폜R}h ** s̖܂ł폜ɂ d$ ƃ^Cv܂傤 ** 1. m[}[hł邱ƂmF̂ ܂傤B 2. ȉ ---> ƎꂽsɃJ[\ړ܂傤B 3. ̖փJ[\ړ܂傤(ŏ B ̌ł)B 4. s܂ō폜̂ d$ ƃ^Cv܂傤B ---> N̍s̍Ō2x^Cv܂B 2x^Cv܂B 5. ǂƂ邽߂ɁAbX 2.3 ֐i݂܂傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 2.3: Iy[^ƃ[V ̃R}h̓Iy[^ƃ[VeLXgɕύX܂B 폜R}h d ̃Iy[^͎̗lɂȂĂ܂: d [V ꂼ: d - 폜R}hB [V - ɑ΂ē邩(ȉɋ܂)B [Vꗗ̈ꕔ: w - J[\ʒu󔒂܂ޒP̖܂ŁB e - J[\ʒu󔒂܂܂ȂP̖܂ŁB $ - J[\ʒus܂ŁB ‚܂ de ƃ^CvƁAJ[\ʒuP̏I܂ł폜܂B NOTE: `ĺAm[}[hɂăR}hȂɃ[V ݂܂傤BJ[\ړIꗗŎʒuɈړ͂łB ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 2.4: [VɃJEggp ** sJԂ̃[V̑Oɐl^Cv܂B ** 1. ȉ ---> Ǝꂽs̐擪ɃJ[\ړ܂B 2. 2w ^CvĒP2•OɈړ܂B 3. 3e ^Cv3–ڂ̒P̏I[Ɉړ܂B 4. 0 ([)^CvčsɈړ܂B 5. Xebv 2 3 ႤlgČJԂ܂B ---> This is just a line with words you can move around in. 6. bX 2.5 ɐi݂܂傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 2.5: 葽폜邽߂ɃJEggp ** Iy[^ƃJEg^CvƁȂ삪JԂ܂B ** q̍폜̃Iy[^ƃ[V̑gݍ킹ɃJEglj邱ƂŁA 葽̍폜s܂: d l [V 1. ---> Ǝꂽs̍sɃJ[\ړ܂傤B 2. UPPER CASE ̒P2‚ d2w ƃ^Cvč폜܂B 3. UPPER CASE ƂAPA1‚̃R}hƈقȂJEgw肵A Xebv 1 2 JԂ܂B ---> ABC DEsFGHI JK LMN OPPQ RS TUVYɂȂB NOTE: Iy[^ d ƃ[V̊ԂɃJEggꍇAIy[^̂Ȃ ꍇ̃[V̂悤ɓ삵܂B : 3dw d3w ͓ŁA3w 폜܂B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 2.6: s̑ ** sŜ폜ɂ dd ƃ^Cv܂ ** sŜ폜px̂ŁAVĩfUCi[͍s̍폜 d 2^Cv ȒPȂ̂Ɍ߂܂B 1. ȉ̋2sڂɃJ[\ړ܂B 2. dd ƃ^Cvčs폜܂B 3. 4sڂɈړ܂B 4. 2dd ƃ^Cv2s폜܂B ---> 1) o͐ԂA ---> 2) ‚܂Ȃ̂͊yA ---> 3) X~͐‚A ---> 4) ͎ԂĂA ---> 5) vA ---> 6) ͊ ---> 7) I}Gi[ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 2.7: 蒼R}h ** Ō̃R}hɂ u ܂BU ͍sŜ̎łB ** 1. ȉ ---> ƎꂽsɃJ[\ړAŏ̊ԈႢɃJ[\ ړ܂傤B 2. x ^CvĂȂ擪̕폜܂傤B 3. Au ^CvčŌɎsR}h܂傤B 4. x́Ax gpČSďC܂傤B 5. 啶 U ^CvāAs̏Ԃɖ߂܂傤B 6. u ^CvĒO U R}h܂傤B 7. ł̓R}hĎŝ CTRL-R (CTRL ܂ R ł)𐔉 ^CvĂ݂܂傤(̎)B ---> ̂̍ŝ̊ԈႢCXAł̏C܂܂B 8. ͂ƂĂ֗ȃR}hłBbX 2 v֐i݂܂傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 2 v 1. J[\ʒuP̖܂ł폜ɂ dw ƃ^Cv܂B 2. J[\ʒus̖܂ł폜ɂ d$ ƃ^Cv܂B 3. sŜ폜ɂ dd ƃ^Cv܂B 4. [VJԂɂ͐lt^܂: 2w 5. ύXɗpR}ȟ` Iy[^ [l] [V ꂼ: Iy[^ - 폜 d ̗ނʼn邩B l - ̃R}hJԂB [V - w (P) $ (s)Ȃǂ̗ނŁAeLXg̉ɑ΂ē 邩B 6. s̐擪Ɉړɂ̓[gp܂: 0 7. O̓: u ( u) sŜ̕ύX: U (啶 U) ̎: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 3.1: \tR}h ** Ōɍ폜ꂽsJ[\̌ɓ\tɂ p ^Cv܂ ** 1. ȉ̒i̍ŏ̍sɃJ[\ړ܂傤B 2. dd ƃ^Cvčs폜AVim ̃obt@Ɋi[܂傤B 3. 폜s{ׂʒȕ̍s܂ŁAJ[\ړ܂傤B 4. m[}[h p ^CvĊi[sʂɖ߂܂B 5. ԂȂlɃXebv 2 4 JԂ܂傤B d) MwԂƂł? b) X~͐‚A c) mbƂ͊wԂ́A a) o͐ԂA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 3.2: uR}h ** J[\̉̕uɂ r ^Cv܂ ** 1. ȉ ---> Ǝꂽŏ̍sɃJ[\ړ܂傤B 2. ŏ̊ԈႢ̐擪ɃJ[\ړ܂傤B 3. r ƃ^CvAԈĂ镶uA^Cv܂傤B 4. ŏ̍sȂ܂ŃXebv 2 3 JԂ܂傤B ---> ̍l͂ˁA̐l͊‚L[! ---> ̍s͂ɁA̐l͊‚ԈL[܂! 5. AbX 3.3 ֐i݂܂傤B NOTE: ۂɎ܂傤BĊo邾ɂ͂ȂƁB ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 3.3: ύXR}h ** P̈ꕔA͑ŜύXɂ cw ƃ^Cv܂ ** 1. ȉ ---> Ǝꂽŏ̍sɃJ[\ړ܂傤B 2. lubw u ̈ʒuɃJ[\ړ܂傤B 3. cw ƃ^CvAP^Cv܂傤(̏ꍇ 'ine' ƃ^Cv)B 4. ̊ԈႢ(ύXׂ̐擪)Ɉړ邽߂ ^Cv܂B 5. ŏ̍s̍s̗lɂȂ܂ŃXebv 3 4 JԂ܂B ---> This lubw has a few wptfd that mrrf changing usf the change operator. ---> This line has a few words that need changing using the change operator. cw ͒PύX邾łȂA}s邱Ƃɒӂ܂傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 3.4: c gp̑̕ύX ** ύXR}h́A폜R}hƓlɃIuWFNggp܂ ** 1. ύXR}h́A폜R}hƓ悤ȓ܂B̌` c [l] [V 2. IuWFNgŁAw ͒PA $ ͍sȂǂƂ̂łB 3. ȉ ---> ƎꂽsɃJ[\ړ܂傤B 4. ŏ̊ԈႢփJ[\ړ܂傤B 5. c$ ƃ^Cvčs̎cQsڂ̗lɂA ܂傤B ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. NOTE: ^Cv̊ԈႢ̓obNXy[XL[gĒƂł܂B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 3 v 1. ɍ폜ꂽeLXgĔzuɂ́Ap ^Cv܂B͍폜 ꂽeLXgJ[\̌ɑ}܂(sPʂō폜ꂽ̂Ȃ΁AJ[ \̂鎟̍sɑ}܂)B 2. J[\̉̕uɂ́Ar ^CvAu ^Cv܂B 3. ύXR}hł̓J[\ʒũ[VŎw肳I[܂ł X邱Ƃ”\łBႦ cw Ȃ΃J[\ʒuP̏I܂ŁA c$ Ȃ΍s̏I܂łύX܂B 4. ύXR}ȟ` c [l] [V ÃbX֐i݂܂傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 4.1: ʒuƃt@C̏ ** t@Cł̈ʒuƃt@C̏Ԃ\ɂ CTRL-G ^Cv܂B t@ĈsɈړɂ G ^Cv܂ ** NOTE: XebvsOɁÃbXSĂɖڂʂ܂傤!! 1. CTRL ܂ g ܂傤B̑ CTRL-G ƌĂł܂B y[ẄԉɃt@Cƍsԍ\͂łB Xebv 3̂ ɍsԍoĂ܂傤B NOTE: ʂ̉EɃJ[\̈ʒu\Ă邩܂B 'ruler' IvV(:help 'ruler' Q)ݒ肷邱Ƃŕ\܂B 2. ʼnsɈړ邽߂ G ^Cv܂傤B t@C̐擪Ɉړɂ gg ƃ^Cv܂傤B 3. قǂ̍s̔ԍ^Cv G ^Cv܂傤Bŏ CTRL-G s ɖ߂ė͂łB 4. MĂXebv 1 3 s܂傤B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 4.2: R}h ** ɂ / ƁAO^Cv܂B** 1. m[}[h / Ƃ^Cv܂Bʈԉ : R}h l / 邱ƂɋCÂł傤B 2. ł́A'errroor' ƃ^Cv܂傤BꂪPłB 3. xƂ P n ^Cv܂B tɌƂ N ^Cv܂B 4. tɌꍇ́A/ ̑ ? R}hgp܂B 5. ̏ꏊɖ߂ɂ CTRL-O (Ctrl Ȃ o ^Cv)^Cv ܂Bɖ߂ɂ͂JԂ܂BCTRL-I ͑OłB ---> "errroor" error ƃXyႢ܂; errroor ͂ error łB NOTE: t@C̏IɒBƁAIvV 'wrapscan' ݒ肳Ă ꍇ́At@C̐擪猟𑱍s܂B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 4.3: Ή銇ʂ ** Ή ),] } ɂ % ^Cv܂ ** 1. ---> Ŏꂽs (,[ { ̂ǂꂩɃJ[\ړ܂傤B 2. % ƃ^Cv܂傤B 3. J[\͑Ή銇ʂɈړ͂łB 4. ŏ̊ʂɈړɂ % ƃ^Cv܂傤B 5. (,),[,],{ } ŃJ[\ړA% Ă邩mF܂傤B ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) NOTE: ̋@\͊ʂvĂȂvOfobÔɂƂĂ𗧂 ܂B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 4.4: ԈႢύX@ ** 'old' 'new' ɒuɂ :s/old/new/g ƃ^Cv܂ ** 1. ȉ ---> ƎꂽsɃJ[\ړ܂傤B 2. :s/thee/the ƃ^Cv܂傤B̃R}h͂̍sōŏɌ ‚̂ɂsȂ邱ƂɋC‚܂傤B 3. ł :s/thee/the/g ƃ^Cv܂傤BsŜu邱ƂӖ܂B ̕ύX͂̍sŌ‚SẲӏɑ΂čsȂ܂B ---> thee best time to see thee flowers is in thee spring. 4. s猩‚镶ύXɂ :#,#s/old/new/g #,# ɂ͒u͈͂̊JnƏI̍sԍw肵 B :%s/old/new/g t@CŜŌ‚̂ɑ΂ĕύXB :%s/old/new/gc t@CŜŌ‚̂ɑ΂āA11ŠmFƂ ύXB ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 4 v 1. CTRL-G ̓t@Cł̈ʒuƃt@C̏ڍׂ\܂B G ̓t@C̍ʼnsɈړ܂B l G ͂̍sɈړ܂B gg ͐擪sɈړ܂B 2. / ̌Ɍ^CvƑOɌ܂B ? ̌Ɍ^CvƌɌ܂B ̌ n ͓̎̌AN ͋ť܂B CTRL-O ͏ꏊOɈڂACTRL-I ͏ꏊɈړ܂B 3. (,),[,],{, } ɃJ[\Ԃ % ^CvƑ΂ɂȂ镶 ֈړ܂B 4. ݍs̍ŏ old new ɒuB :s/old/new ݍs̑SĂ old new ɒuB :s/old/new/g 2‚ # ԂŌuB :#,#s/old/new/g t@C̒̑SĂ̌uB :%s/old/new/g 'c' ƒu̓xɊmF߂B :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 5.1: OR}hs@ ** :! ̌ɎsOR}h^Cv܂ ** 1. ʂ̍ʼnɃJ[\ړ悤Ae : ^Cv܂傤B ŃR}h^CvłlɂȂ܂B 2. ! Ƃ(Q)^Cv܂傤B ŊOVFR}hsłlɂȂ܂B 3. Ƃ ! ɑ ls ƃ^Cv ܂傤B VFvvĝ悤ɃfBNg̈ꗗ\͂łB ls ȂȂ :!dir gp܂傤B NOTE: ̕@ɂĂR}hs邱Ƃł܂B ^܂B NOTE: SĂ : R}h ďIȂ΂Ȃ܂B ȍ~ł͂̂ƂɌy܂B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 5.2: ̑̃t@C֏ ** t@C֕ύXۑɂ :w t@C ƃ^Cv܂ ** 1. fBNg̈ꗗ𓾂邽߂ :!dir :!ls ƃ^Cv܂傤B ̂ ̂͊ɂmłˁB 2. TEST ̂悤ɁÃfBNgɖt@C‘Iт܂B 3. ł :w TEST ƃ^Cv܂傤 (TEST ́AI񂾃t@Cł)B 4. ɂt@CŜ TEST ƂOŕۑ܂B x :!dir :!ls ƃ^CvĊmFĂ݂܂傤B NOTE: Vim IAt@C TEST ƋɋNƁAۑ `[gA̕łオ͂łB 5. ɁÂ悤Ƀ^Cvăt@C܂傤(MS-DOS): :!del TEST (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 5.3: I ** t@C̈ʒuۑɂ́Av [V :w FILENAME ^Cv܂B ** 1. ̍sɃJ[\ړ܂B 2. v Aȉ̑5ڂɃJ[\ړ܂BeLXg\ ɒڂĉB 3. : ƁAʂ̍ʼn :'<,'> ܂B 4. w TEST (TEST ݂͑Ȃt@C)^Cv܂B O :'<,'>w TEST ƂȂĂ邱ƂmFĉB 5. Vim TEST Ƃt@CɑIꂽsނł傤B !dir !ls łmF܂B ͍폜ȂłĉB̃bXŎgp܂B NOTE: v ƁAVisual In܂܂BJ[\𓮂ƂŁAI͈͂ 傫ł܂BɁȂI͈͂ɑ΂ăIy[^Kp ܂BႦ d ̓eLXg폜܂B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 5.4: t@C̎捞ƍ ** t@C̒g}ɂ :r t@C ƃ^Cv܂ ** 1. J[\ȉ̍sɍ킹܂B NOTE: Xebv 2 ̎sAbX 5.3 ̃eLXg܂BɉĂ ̃bXɈړ܂傤B 2. ł TEST Ƃt@C :r TEST ƂR}hœǂݍ݂܂傤B ł TEST ͎gt@C̖ÔƂłB ǂݍ܂ꂽt@ĆAJ[\s̉ɂ܂B 3. 捞񂾃t@CmFĂ݂܂傤BJ[\߂ƁAbX5.3 IWiƃt@Cɂ̂2‚邱Ƃ킩܂B NOTE: OR}h̏o͂ǂݍނƂo܂BႦ΁A :r !ls ls R}h̏o͂J[\ȉɓǂݍ݂܂B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 5 v 1. :!command ɂ OR}hs܂B 悭g: (MS-DOS) (Unix) :!dir :!ls - fBNg̈ꗗB :!del FILENAME :!rm FILENAME - t@C폜B 2. :w t@C ɂăt@CƂt@CfBXNɏ܂B 3. v [V :w FILENAME ƂƁArWAIst@Cɕۑ B 4. :r t@C ɂt@CƂt@CfBXN荞܂A J[\ʒủɑ}B 5. :r !dir dir R}h̏o͂J[\ʒuȉɓǂݍށB ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 6.1: I[vR}h ** o ^CvƁAJ[\̉̍sJA}[hɓ܂ ** 1. ȉ ---> ƎꂽsɃJ[\ړ܂傤B 2. o () ^CvāAJ[\̉̍sJA}[hɓ܂B 3. ɑ}[hIׂ ^Cv܂B ---> o ^CvƃJ[\͊Jsֈړ}[hɓ܂B 4. J[\̏̍sɑ}ɂ́A o ł͂ȂAPɑ啶 O ^Cv܂B̍sŎĂ݂܂傤B ---> ̍s֑̏}ɂ́A̍sփJ[\u O ^Cv܂B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 6.2: ljR}h ** J[\̎̈ʒueLXgljɂ a ƃ^Cv܂ ** 1. J[\ ---> Ŏꂽsֈړ܂傤B 2. e li ̏I[܂ŃJ[\ړ܂B 3. J[\̌ɃeLXglj邽߂ a () ^Cv܂B 4. ̉̍ŝ悤ȒPɊ܂B}[h𔲂ׂ ܂B 5. e gĎ̕sSȒPֈړAXebv 3 4 JԂ܂B ---> This li will allow you to pract appendi text to a line. ---> This line will allow you to practice appending text to a line. NOTE: a, i A ͓}[hֈڂ܂A}ʒuقȂ ܂B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 6.3: ̑̒u@ ** 1ȏuɂ͑啶 R ƃ^Cv܂傤 ** 1. ȉ ---> ƎꂽsɃJ[\ړ܂Bŏ xxx ̐擪Ɉړ ܂B 2. R āA2sڂ̐l^Cv邱ƂŁAxxx u܂B 3. u[h𔲂ɂ ܂Bs̎c肪ύXĂȂ܂܂ Ȃ邱ƂɒӂĂB 4. c xxx XebvJԂĒu܂傤B ---> Adding 123 to xxx gives you xxx. ---> Adding 123 to 456 gives you 579. NOTE: u[h͑}[hɎĂ܂ASẴ^Cvꂽ͊̕ 폜܂B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 6.4: eLXg̃Rs[ƃy[Xg ** eLXg̃Rs[ɂ̓Iy[^ y Ay[Xgɂ p g܂ ** 1. ---> ƎꂽsֈړAJ[\ "a)" ̌ɒuĂ܂B 2. v ŃrWA[hJnA"first" ̎O܂ŃJ[\ړ܂B 3. y ^Cvċ\ꂽeLXg yank (Rs[)܂B 4. ̍s̍s܂ŃJ[\ړ܂: j$ 5. p ē\t(put)ĂA^Cv܂: a second 6. rWA[h " item." IAy ŃNA̍s̍s܂ j$ ړA p ŃeLXg put ܂B ---> a) this is the first item. b) NOTE: P1 yank ̂ y Iy[^Ƃ yw Ƃ邱Ƃo܂B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 6.5: IvV̐ݒ ** u̍ۂɑ啶/𖳎ɂ́AIvVݒ肵܂ ** 1. ̗lɓ͂ 'ignore' ܂傤: /ignore n ĉxJԂ܂B 2. ̗lɓ͂ 'ic' (Ignore Case ̗) IvVݒ肵܂: :set ic 3. ł n ɂĂ1x 'ignore' ܂B n Ăɐ񌟍JԂ܂傤B 4. 'hlsearch' 'incsearch' IvVݒ肵܂傤: :set hls is 5. R}hē͂āAN邩Ă݂܂傤: /ignore 6. 啶̋ʂ𖳌ɂɂ͎̗lɓ͂܂: :set noic NOTE: }b`̋\߂ɂ͎̗lɓ͂܂: :nohlsearch NOTE: 1‚̌R}h啶̋ʂ߂Ȃ΁At[Y \c gp܂: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 6 v 1. o ^CvƃJ[\̉̍sJāAő}[hɂȂB O (啶) ^CvƃJ[\̏̍ső}[hɂȂB 2. J[\̎̕eLXgljɂ a ƃ^CvB sɎŃeLXg}ɂ͑啶 A ^CvB 3. e R}h͒P̏I[J[\ړB 4. y Iy[^̓eLXg yank (Rs[)Ap ͂ put (y[Xg)B 5. 啶 R ^Cvƒu[hɓAƔB 6. ":set xxx" ƃ^CvƃIvV "xxx" ݒ肳B 'ic' 'ignorecase' ɑ啶̋ʂȂ 'is' 'incsearch' t[Yɕ}b`Ă镔\ 'hls' 'hlsearch' }b`邷ׂ\ AZAǂ̃IvVłgpł܂B 7. "no" t^AIvV𖳌ɂ܂: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 7.1: ICwvR}h ** ICwvgp܂傤 ** Vim ɂ͍L͂ɂ킽ICwvVXe܂B wvJnɂ́A3‚̂ǂꂩ1‚Ă݂܂傤: - wvL[ (Ȃ)B - L[(Ȃ)B - :help ƃ^CvB wvEBhẼeLXgǂނƁAwv̓삪ł܂B CTRL-W CTRL-W ƃ^Cv wvEBhEփWv܂B :q ƃ^Cv wvEBhE‚܂B ":help" R}hɈ^邱ƂɂA薼̃wv‚邱 ł܂BĂ݂܂傤( ^CvYȂ悤): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 7.2: NXNvg̍쐬 ** Vim ̓𔭊 ** Vim ɂ Vi ̓𓥂܂Ă܂ÂقƂǂ͏Ԃɂ gps‚ƂȂĂ܂B葽̓g͂߂ɂ "vimrc" t@C 쐬܂B 1. "vimrc" t@C̕ҏWJnB̓VXeɈˑ܂B :edit ~/.vimrc UNIX :edit $VIM/_vimrc MS-Windows 2. ŃTv "vimrc" ǂݍ݂܂B :read $VIMRUNTIME/vimrc_example.vim 3. ȉ̂悤Ƀt@C֏݂܂B :write Vim NƁAFÂ\g悤ɂȂł傤B "vimrc" t@CցAD݂̐ݒlj邱Ƃł܂B 葽̏𓾂ɂ :help vimrc-intro ƃ^Cv܂B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 7.3: ⊮ ** CTRL-D ŃR}hC⊮ ** 1. ݊[hłȂƂmF܂: :set nocp 2. ݂̃fBNgɍ݂t@C :!ls :!dir ŊmF܂B 3. R}h̊Jn^Cv܂: :e 4. CTRL-D Vim "e" n܂R}ḧꗗ\܂B 5. Vim ":edit" ƂR}h⊮܂B 6. ɋ󔒂ƁÃt@C̎n܂܂: :edit FIL 7. Vim ͖O⊮܂B(‚ꍇ) NOTE: ⊮͑̃R}hœ삵܂B CTRL-D Ă݂Ă B :help ̍ۂɖ𗧂܂B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bX 7 v 1. wvEBhEJɂ :help Ƃ邩 B 2. R}h(cmd)̃wvɂ :help cmd ƃ^CvB 3. ʂ̃EBhEփWvɂ CTRL-W CTRL-W ƃ^CvB 4. wvEBhE‚ɂ :q ƃ^CvB 5. D݂̐ݒۂ‚ɂ vimrc NXNvg쐬B 6. : command ʼn”\ȕ⊮ɂ CTRL-D ^CvB ⊮gpɂ B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ɂ Vim ̃`[gAI܂BGfB^ȒPɁA[ gƂł悤ɂƁAVim ̎ŠTO̗v_݂̂`悤Ƃ܂B Vim ɂ͂ɑ̃R}hAőSĂ邱Ƃ͂ł܂B ȍ~̓[U[}jAQƂ: ":help user-manual" Ȍ̊wK̂߂ɁA̖{𐄑E܂B Vim - Vi Improved - by Steve Oualline oŎ: New Riders ŏ̖{͊S Vim ̂߂ɏ܂BƂ킯S҂ɂ͂߂łB ̗}łfڂĂ܂B URLQƂĉ http://iccf-holland.org/click5.html Vim Vi ɂ‚ďꂽÂ{łE܂: Learning the Vi Editor - by Linda Lamb oŎ: O'Reilly & Associates Inc. Vi ł肽ƎvƂقڑSĂm邱ƂłǏłB 6łł́AVim ɂ‚Ă̏܂܂Ă܂B ̃`[gA Colorado State University Charles Smith ̃ACfA ɁAColorado School of Mines Michael C. Pierce Robert K. Ware ɂď܂B E-mail: bware@mines.colorado.edu. Modified for Vim by Bram Moolenaar. { { ׍O ďC Y ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vi:set ts=8 sts=4 sw=4 tw=78: PK!G$VVvim80/tutor/tutor.de.utf-8nu[=============================================================================== = W i l l k o m m e n im V I M T u t o r - Version 1.7.de.1 = =============================================================================== Vim ist ein sehr mächtiger Editor, der viele Befehle bereitstellt; zu viele, um alle in einem Tutor wie diesem zu erklären. Dieser Tutor ist so gestaltet, um genug Befehle vorzustellen, dass Du die Fähigkeit erlangst, Vim mit Leichtigkeit als einen Allzweck-Editor zu verwenden. Die Zeit für das Durcharbeiten dieses Tutors beträgt ca. 25-30 Minuten, abhängig davon, wie viel Zeit Du mit Experimentieren verbringst. ACHTUNG: Die in den Lektionen angewendeten Kommandos werden den Text modifizieren. Erstelle eine Kopie dieser Datei, in der Du üben willst (falls Du "vimtutor" aufgerufen hast, ist dies bereits eine Kopie). Es ist wichtig, sich zu vergegenwärtigen, dass dieser Tutor für das Anwenden konzipiert ist. Das bedeutet, dass Du die Befehle anwenden musst, um sie richtig zu lernen. Wenn Du nur den Text liest, vergisst Du die Befehle! Jetzt stelle sicher, dass deine Umstelltaste NICHT gedrückt ist und betätige die j Taste genügend Mal, um den Cursor nach unten zu bewegen, so dass Lektion 1.1 den Bildschirm vollkommen ausfüllt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.1: BEWEGEN DES CURSORS ** Um den Cursor zu bewegen, drücke die h,j,k,l Tasten wie unten gezeigt. ** ^ Hilfestellung: k Die h Taste befindet sich links und bewegt nach links. < h l > Die l Taste liegt rechts und bewegt nach rechts. j Die j Taste ähnelt einem Pfeil nach unten. v 1. Bewege den Cursor auf dem Bildschirm umher, bis Du Dich sicher fühlst. 2. Halte die Nach-Unten-Taste (j) gedrückt, bis sie sich wiederholt. Jetzt weißt Du, wie Du Dich zur nächsten Lektion bewegen kannst. 3. Benutze die Nach-Unten-Taste, um Dich zu Lektion 1.2 zu bewegen. Anmerkung: Immer, wenn Du Dir unsicher bist über das, was Du getippt hast, drücke , um Dich in den Normalmodus zu begeben. Dann gib das gewünschte Kommando noch einmal ein. Anmerkung: Die Cursor-Tasten sollten ebenfalls funktionieren. Aber wenn Du hjkl benutzt, wirst Du in der Lage sein, Dich sehr viel schneller umherzubewegen, wenn Du Dich einmal daran gewöhnt hast. Wirklich! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.2: VIM BEENDEN !! Hinweis: Bevor Du einen der unten aufgeführten Schritte ausführst, lies diese gesamte Lektion!! 1. Drücke die Taste (um sicherzustellen, dass Du im Normalmodus bist). 2. Tippe: :q! . Dies beendet den Editor und VERWIRFT alle Änderungen, die Du gemacht hast. 3. Wenn Du die Eingabeaufforderung siehst, gib das Kommando ein, das Dich zu diesem Tutor geführt hat. Dies wäre: vimtutor 4. Wenn Du Dir diese Schritte eingeprägt hast und Du Dich sicher fühlst, führe Schritte 1 bis 3 aus, um den Editor zu verlassen und wieder hineinzugelangen. Anmerkung: :q! verwirft alle Änderungen, die Du gemacht hast. Einige Lektionen später lernst Du, die Änderungen in einer Datei zu speichern. 5. Bewege den Cursor abwärts zu Lektion 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.3: TEXT EDITIEREN - LÖSCHEN ** Drücke x , um das Zeichen unter dem Cursor zu löschen. ** 1. Bewege den Cursor zu der mit ---> markierten Zeile unten. 2. Um die Fehler zu beheben, bewege den Cursor, bis er über dem Zeichen steht, das gelöscht werden soll. 3. Drücke die x Taste, um das unerwünschte Zeichen zu löschen. 4. Wiederhole die Schritte 2 bis 4, bis der Satz korrekt ist. ---> Die Kkuh sprangg übberr deen Moond. 5. Nun, da die Zeile korrekt ist, gehe weiter zur Lektion 1.4. Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu lernen, lerne vielmehr durch Anwenden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.4: TEXT EDITIEREN - EINFÜGEN ** Drücke i , um Text einzufügen. ** 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. 2. Um die erste Zeile mit der zweiten gleichzumachen, bewege den Cursor auf das erste Zeichen NACH der Stelle, an der Text eingefügt werden soll. 3. Drücke i und gib die nötigen Ergänzungen ein. 4. Wenn jeweils ein Fehler beseitigt ist, drücke , um zum Normalmodus zurückzukehren. Wiederhole Schritte 2 bis 4, um den Satz zu korrigieren. ---> In dieser ft etwas . ---> In dieser Zeile fehlt etwas Text. 5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, gehe zu Lektion 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.5: TEXT EDITIEREN - ANFÜGEN ** Drücke A , um Text anzufügen. ** 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. Dabei ist gleichgültig, auf welchem Zeichen der Zeile der Cursor steht. 2. Drücke A und gib die erforderlichen Ergänzungen ein. 3. Wenn das Anfügen abgeschlossen ist, drücke , um in den Normalmodus zurückzukehren. 4. Bewege den Cursor zur zweiten mit ---> markierten Zeile und wiederhole die Schritte 2 und 3, um den Satz zu auszubessern. ---> In dieser Zeile feh In dieser Zeile fehlt etwas Text. ---> Auch hier steh Auch hier steht etwas Unvollständiges. 5. Wenn Du dich mit dem Anfügen von Text sicher fühlst, gehe zu Lektion 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.6: EINE DATEI EDITIEREN ** Benutze :wq , um eine Datei zu speichern und Vim zu verlassen. ** !! Hinweis: Bevor Du einen der unten aufgeführten Schritte ausführst, lies diese gesamte Lektion!! 1. Verlasse den Editor so wie in Lektion 1.2: :q! Oder, falls du Zugriff zu einem anderen Terminal hast, führe das Folgende dort aus. 2. Gib dieses Kommando in die Eingabeaufforderung ein: vim tutor 'vim' ist der Aufruf des Editors, 'tutor' ist die zu editierende Datei. Benutze eine Datei, die geändert werden darf. 3. Füge Text ein oder lösche ihn, wie Du in den vorangehenden Lektionen gelernt hast. 4. Speichere die geänderte Datei und verlasse Vim mit: :wq 5. Falls Du in Schritt 1 den vimtutor beendet hast, starte vimtutor neu und bewege dich abwärts bis zur folgenden Zusammenfassung. 6. Nachdem Du obige Schritte gelesen und verstanden hast: führe sie durch. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 1 1. Der Cursor wird mit den Pfeiltasten oder den Tasten hjkl bewegt. h (links) j (unten) k (aufwärts) l (rechts) 2. Um Vim aus der Eingabeaufforderung zu starten, tippe: vim DATEI 3. Um Vim zu verlassen und alle Änderungen zu verwerfen, tippe: :q! . 4. Um das Zeichen unter dem Cursor zu löschen, tippe: x 5. Um Text einzufügen oder anzufügen, tippe: i Einzufügenden Text eingeben Einfügen vor dem Cursor A Anzufügenden Text eingeben Anfügen nach dem Zeilenende Anmerkung: Drücken von bringt Dich in den Normalmodus oder bricht ein ungewolltes, erst teilweise eingegebenes Kommando ab. Nun fahre mit Lektion 2 fort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.1: LÖSCHKOMMANDOS ** Tippe dw , um ein Wort zu löschen. ** 1. Drücke , um sicherzustellen, dass Du im Normalmodus bist. 2. Bewege den Cursor zu der mit ---> markierten Zeile unten. 3. Bewege den Cursor zum Anfang eines Wortes, das gelöscht werden soll. 4. Tippe dw , um das Wort zu entfernen. Anmerkung: Der Buchstabe d erscheint auf der untersten Zeile des Schirms, wenn Du ihn eingibst. Vim wartet darauf, dass Du w eingibst. Falls Du ein anderes Zeichen als d siehst, hast Du etwas Falsches getippt; drücke und beginne noch einmal. ---> Einige Wörter lustig gehören nicht Papier in diesen Satz. 5. Wiederhole die Schritte 3 und 4, bis der Satz korrekt ist und gehe zur Lektion 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.2: WEITERE LÖSCHKOMMANDOS ** Tippe d$ , um bis zum Ende der Zeile zu löschen. ** 1. Drücke , um sicherzustellen, dass Du im Normalmodus bist. 2. Bewege den Cursor zu der mit ---> markierten Zeile unten. 3. Bewege den Cursor zum Ende der korrekten Zeile (NACH dem ersten . ). 4. Tippe d$ , um bis zum Zeilenende zu löschen. ---> Jemand hat das Ende der Zeile doppelt eingegeben. doppelt eingegeben. 5. Gehe weiter zur Lektion 2.3 , um zu verstehen, was hierbei vorgeht. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.3: ÜBER OPERATOREN UND BEWEGUNGSZÜGE Viele Kommandos, die Text ändern, setzen sich aus einem Operator und einer Bewegung zusammen. Das Format für ein Löschkommando mit dem Löschoperator d lautet wie folgt: d Bewegung wobei: d - der Löschoperator Bewegung - worauf der Löschoperator angewandt wird (unten aufgeführt). Eine kleine Auflistung von Bewegungen: w - bis zum Beginn des nächsten Wortes OHNE dessen erstes Zeichen. e - zum Ende des aktuellen Wortes MIT dessen letztem Zeichen. $ - zum Ende der Zeile MIT dem letzten Zeichen. Dementsprechend löscht die Eingabe von de vom Cursor an bis zum Wortende. Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den Cursor entsprechend. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.4: ANWENDUNG EINES ZÄHLERS FÜR EINEN BEWEGUNGSSCHRITT ** Die Eingabe einer Zahl vor einem Bewegungsschritt wiederholt diesen. ** 1. Bewege den Cursor zum Beginn der mit ---> markierten Zeile unten. 2. Tippe 2w , um den Cursor zwei Wörter vorwärts zu bewegen. 3. Tippe 3e , um den Cursor zum Ende des dritten Wortes zu bewegen. 4. Tippe 0 (Null) , um zum Anfang der Zeile zu gelangen. 5. Wiederhole Schritte 2 und 3 mit verschiedenen Nummern. ---> Dies ist nur eine Zeile aus Wörtern, um sich darin herumzubewegen. 6. Gehe weiter zu Lektion 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.5: ANWENDUNG EINES ZÄHLERS FÜR MEHRERE LÖSCHVORGÄNGE ** Die Eingabe einer Zahl mit einem Operator wiederholt diesen mehrfach. ** In der Kombination aus Löschoperator und Bewegungsschritt (siehe oben) stellt man, um mehr zu löschen dem Schritt einen Zähler voran: d Nummer Bewegungsschritt 1. Bewege den Cursor zum ersten Wort in GROSSBUCHSTABEN in der mit ---> markieren Zeile. 2. Tippe d2w , um die zwei Wörter in GROSSBUCHSTABEN zu löschen. 3. Wiederhole Schritte 1 und 2 mit einem anderen Zähler, um die darauffol- genden Wörter in GROSSBUCHSTABEN mit einem einzigen Kommando zu löschen. ---> Diese ABC DE Zeile FGHI JK LMN OP mit Wörtern ist Q RS TUV bereinigt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.6: ARBEITEN AUF ZEILEN ** Tippe dd , um eine ganze Zeile zu löschen. ** Wegen der Häufigkeit, dass man ganze Zeilen löscht, kamen die Entwickler von Vi darauf, dass es leichter wäre, einfach zwei d's einzugeben, um eine Zeile zu löschen. 1. Bewege den Cursor zur zweiten Zeile in der unten stehenden Redewendung. 2. Tippe dd , um die Zeile zu löschen. 3. Nun bewege Dich zur vierten Zeile. 4. Tippe 2dd , um zwei Zeilen zu löschen. ---> 1) Rosen sind rot, ---> 2) Matsch ist lustig, ---> 3) Veilchen sind blau, ---> 4) Ich habe ein Auto, ---> 5) Die Uhr sagt die Zeit, ---> 6) Zucker ist süß, ---> 7) So wie Du auch. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.7: RÜCKGÄNGIG MACHEN (UNDO) ** Tippe u , um die letzten Kommandos rückgängig zu machen ** ** oder U , um eine ganze Zeile wiederherzustellen. ** 1. Bewege den Cursor zu der mit ---> markierten Zeile unten und setze ihn auf den ersten Fehler. 2. Tippe x , um das erste unerwünschte Zeichen zu löschen. 3. Nun tippe u , um das soeben ausgeführte Kommando rückgängig zu machen. 4. Jetzt behebe alle Fehler auf der Zeile mit Hilfe des x Kommandos. 5. Nun tippe ein großes U , um die Zeile in ihren Ursprungszustand wiederherzustellen. 6. Nun tippe u einige Male, um das U und die vorhergehenden Kommandos rückgängig zu machen. 7. Nun tippe CTRL-R (halte CTRL gedrückt und drücke R) mehrere Male, um die Kommandos wiederherzustellen (die Rückgängigmachungen rückgängig machen). ---> Beehebe die Fehller diesser Zeile und sttelle sie mitt 'undo' wieder her. 8. Dies sind sehr nützliche Kommandos. Nun gehe weiter zur Zusammenfassung von Lektion 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 2 1. Um vom Cursor bis zum nächsten Wort zu löschen, tippe: dw 2. Um vom Cursor bis zum Ende einer Zeile zu löschen, tippe: d$ 3. Um eine ganze Zeile zu löschen, tippe: dd 4. Um eine Bewegung zu wiederholen, stelle eine Nummer voran: 2w 5. Das Format für ein Änderungskommando ist: Operator [Anzahl] Bewegungsschritt wobei: Operator - gibt an, was getan werden soll, zum Beispiel d für delete [Anzahl] - ein optionaler Zähler, um den Bewegungsschritt zu wiederholen Bewegungsschritt - Bewegung über den zu ändernden Text, wie w (Wort), $ (zum Ende der Zeile), etc. 6. Um Dich zum Anfang der Zeile zu begeben, benutze die Null: 0 7. Um vorherige Aktionen rückgängig zu machen, tippe: u (kleines u) Um alle Änderungen auf einer Zeile rückgängig zu machen: U (großes U) Um die Rückgängigmachungen rückgängig zu machen, tippe: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.1: ANFÜGEN (PUT) ** Tippe p , um vorher gelöschten Text nach dem Cursor anzufügen. ** 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. 2. Tippe dd , um die Zeile zu löschen und sie in einem Vim-Register zu speichern. 3. Bewege den Cursor zur Zeile c), ÜBER derjenigen, wo die gelöschte Zeile platziert werden soll. 4. Tippe p , um die Zeile unterhalb des Cursors zu platzieren. 5. Wiederhole die Schritte 2 bis 4, um alle Zeilen in die richtige Reihenfolge zu bringen. ---> d) Kannst Du das auch? ---> b) Veilchen sind blau, ---> c) Intelligenz ist lernbar, ---> a) Rosen sind rot, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.2: ERSETZEN (REPLACE) ** Tippe rx , um das Zeichen unter dem Cursor durch x zu ersetzen. ** 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. 2. Bewege den Cursor, bis er sich auf dem ersten Fehler befindet. 3. Tippe r und anschließend das Zeichen, welches dort stehen sollte. 4. Wiederhole Schritte 2 und 3, bis die erste Zeile gleich der zweiten ist. ---> Alf diese Zeite eingegoben wurde, wurden einike falsche Tasten gelippt! ---> Als diese Zeile eingegeben wurde, wurden einige falsche Tasten getippt! 5. Nun fahre fort mit Lektion 3.2. Anmerkung: Erinnere Dich daran, dass Du durch Anwenden lernen solltest, nicht durch Auswendiglernen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.3: ÄNDERN (CHANGE) ** Um eine Änderung bis zum Wortende durchzuführen, tippe ce . ** 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. 2. Platziere den Cursor auf das s von Wstwr. 3. Tippe ce und die Wortkorrektur ein (in diesem Fall tippe örter ). 4. Drücke und bewege den Cursor zum nächsten zu ändernden Zeichen. 5. Wiederhole Schritte 3 und 4 bis der erste Satz gleich dem zweiten ist. ---> Einige Wstwr dieser Zlaww lasdjlaf mit dem Ändern-Operator gaaauu werden. ---> Einige Wörter dieser Zeile sollen mit dem Ändern-Operator geändert werden. Beachte, dass ce das Wort löscht und Dich in den Eingabemodus versetzt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.4: MEHR ÄNDERUNGEN MITTELS c ** Das change-Kommando arbeitet mit denselben Bewegungen wie delete. ** 1. Der change Operator arbeitet in gleicher Weise wie delete. Das Format ist: c [Anzahl] Bewegungsschritt 2. Die Bewegungsschritte sind die gleichen , so wie w (Wort) und $ (Zeilenende). 3. Bewege Dich zur ersten unten stehenden mit ---> markierten Zeile. 4. Bewege den Cursor zum ersten Fehler. 5. Tippe c$ , gib den Rest der Zeile wie in der zweiten ein, drücke . ---> Das Ende dieser Zeile soll an die zweite Zeile angeglichen werden. ---> Das Ende dieser Zeile soll mit dem c$ Kommando korrigiert werden. Anmerkung: Du kannst die Rücktaste benutzen, um Tippfehler zu korrigieren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 3 1. Um einen vorher gelöschten Text anzufügen, tippe p . Dies fügt den gelöschten Text NACH dem Cursor an (wenn eine ganze Zeile gelöscht wurde, wird diese in die Zeile unter dem Cursor eingefügt). 2. Um das Zeichen unter dem Cursor zu ersetzen, tippe r und danach das an dieser Stelle gewollte Zeichen. 3. Der Änderungs- (change) Operator erlaubt, vom Cursor bis zum Ende des Bewegungsschrittes zu ändern. Tippe ce , um eine Änderung vom Cursor bis zum Ende des Wortes vorzunehmen; c$ bis zum Ende einer Zeile. 4. Das Format für change ist: c [Anzahl] Bewegungsschritt Nun fahre mit der nächsten Lektion fort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.1: CURSORPOSITION UND DATEISTATUS ** Tippe CTRL-G , um deine Dateiposition sowie den Dateistatus anzuzeigen. ** ** Tippe G , um Dich zu einer Zeile in der Datei zu begeben. ** Anmerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!! 1. Halte die Ctrl Taste unten und drücke g . Dies nennen wir CTRL-G. Eine Statusmeldung am Fuß der Seite erscheint mit dem Dateinamen und der Position innerhalb der Datei. Merke Dir die Zeilennummer für Schritt 3. Anmerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten Bildschirmecke. Dies ist Auswirkung der 'ruler' Option (siehe :help 'ruler') 2. Drücke G , um Dich zum Ende der Datei zu begeben. Tippe gg , um Dich zum Anfang der Datei zu begeben. 3. Gib die Nummer der Zeile ein, auf der Du vorher warst, gefolgt von G . Dies bringt Dich zurück zu der Zeile, auf der Du gestanden hast, als Du das erste Mal CTRL-G gedrückt hast. 4. Wenn Du Dich sicher genug fühlst, führe die Schritte 1 bis 3 aus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.2: DAS SUCHEN - KOMMANDO ** Tippe / gefolgt von einem Ausdruck, um nach dem Ausdruck zu suchen. ** 1. Im Normalmodus, tippe das / Zeichen. Beachte, dass das / und der Cursor am Fuß des Schirms erscheinen, so wie beim : Kommando. 2. Nun tippe 'Fehhler' . Dies ist das Wort, nach dem Du suchen willst. 3. Um nach demselben Ausdruck weiterzusuchen, tippe einfach n (für next). Um nach demselben Ausdruck in der Gegenrichtung zu suchen, tippe N . 4. Um nach einem Ausdruck rückwärts zu suchen , benutze ? statt / . 5. Um dahin zurückzukehren, von wo Du gekommen bist, drücke CTRL-O (Halte Ctrl unten und drücke den Buchstaben o). Wiederhole dies, um noch weiter zurückzugehen. CTRL-I geht vorwärts. ---> Fehler schreibt sich nicht "Fehhler"; Fehhler ist ein Fehler Anmerkung: Wenn die Suche das Dateiende erreicht hat, wird sie am Anfang fortgesetzt, es sei denn, die 'wrapscan' Option wurde abgeschaltet. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.3: PASSENDE KLAMMERN FINDEN ** Tippe % , um eine gegenüberliegenden Klammer ),], oder } zu finden. ** 1. Platziere den Cursor auf irgendeinem der Zeichen (, [, oder { in der unten stehenden Zeile, die mit ---> markiert ist. 2. Nun tippe das % Zeichen. 3. Der Cursor bewegt sich zur passenden gegenüberliegenden Klammer. 4. Tippe % , um den Cursor zur passenden anderen Klammer zu bewegen. 5. Setze den Cursor auf ein anderes (,),[,],{ oder } und probiere % aus. ---> Dies ( ist eine Testzeile ( mit [ verschiedenen ] { Klammern } darin. )) Anmerkung: Diese Funktionalität ist sehr nützlich bei der Fehlersuche in einem Programmtext, in dem passende Klammern fehlen! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.4: DAS ERSETZUNGSKOMMANDO (SUBSTITUTE) ** Tippe :s/alt/neu/g , um 'alt' durch 'neu' zu ersetzen. ** 1. Bewege den Cursor zu der unten stehenden mit ---> markierten Zeile. 2. Tippe :s/diee/die . Beachte, dass der Befehl nur das erste Vorkommen von "diee" ersetzt. 3. Nun tippe :s/diee/die/g . Das Zufügen des Flags g bedeutet, eine globale Ersetzung über die Zeile durchzuführen, dies ersetzt alle Vorkommen von "diee" auf der Zeile. ---> diee schönste Zeit, um diee Blumen anzuschauen, ist diee Frühlingszeit. 4. Um alle Vorkommen einer Zeichenkette innerhalb zweier Zeilen zu ändern, tippe :#,#s/alt/neu/g wobei #,# die Zeilennummern des Bereiches sind, in dem die Ersetzung durchgeführt werden soll. Tippe :%s/alt/neu/g um alle Vorkommen in der gesamten Datei zu ändern. Tippe :%s/alt/neu/gc um alle Vorkommen in der gesamten Datei zu finden mit einem Fragedialog, ob ersetzt werden soll oder nicht. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 4 1. CTRL-G zeigt die aktuelle Dateiposition sowie den Dateistatus. G bringt Dich zum Ende der Datei. Nummer G bringt Dich zur entsprechenden Zeilennummer. gg bringt Dich zur ersten Zeile. 2. Die Eingabe von / plus einem Ausdruck sucht VORWÄRTS nach dem Ausdruck. Die Eingabe von ? plus einem Ausdruck sucht RÜCKWÄRTS nach dem Ausdruck. Tippe nach einer Suche n , um das nächste Vorkommen in der gleichen Richtung zu finden; oder N , um in der Gegenrichtung zu suchen. CTRL-O bringt Dich zurück zu älteren Positionen, CTRL-I zu neueren. 3. Die Eingabe von % , wenn der Cursor sich auf (,),[,],{, oder } befindet, bringt Dich zur Gegenklammer. 4. Um das erste Vorkommen von "alt" in einer Zeile durch "neu" zu ersetzen, tippe :s/alt/neu Um alle Vorkommen von "alt" in der Zeile ersetzen, tippe :s/alt/neu/g Um Ausdrücke innerhalb zweier Zeilen # zu ersetzen :#,#s/alt/neu/g Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe :%s/alt/neu/g Für eine jedesmalige Bestätigung, addiere 'c' (confirm) :%s/alt/neu/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.1: AUSFÜHREN EINES EXTERNEN KOMMANDOS ** Gib :! , gefolgt von einem externen Kommando ein, um es auszuführen. ** 1. Tippe das vertraute Kommando : , um den Cursor auf den Fuß des Schirms zu setzen. Dies erlaubt Dir, ein Kommandozeilen-Kommando einzugeben. 2. Nun tippe ein ! (Ausrufezeichen). Dies ermöglicht Dir, ein beliebiges, externes Shellkommando auszuführen. 3. Als Beispiel tippe ls nach dem ! und drücke . Dies liefert eine Auflistung deines Verzeichnisses; genauso, als wenn Du in der Eingabeaufforderung wärst. Oder verwende :!dir , falls ls nicht geht. Anmerkung: Mit dieser Methode kann jedes beliebige externe Kommando ausgeführt werden, auch mit Argumenten. Anmerkung: Alle : Kommandos müssen durch Eingabe von abgeschlossen werden. Von jetzt an erwähnen wir dies nicht jedesmal. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.2: MEHR ÜBER DAS SCHREIBEN VON DATEIEN ** Um am Text durchgeführte Änderungen zu speichern, tippe :w DATEINAME. ** 1. Tippe :!dir oder :!ls , um eine Auflistung deines Verzeichnisses zu erhalten. Du weißt nun bereits, dass Du danach eingeben musst. 2. Wähle einen Dateinamen, der noch nicht existiert, z.B. TEST. 3. Nun tippe: :w TEST (wobei TEST der gewählte Dateiname ist). 4. Dies speichert die ganze Datei (den Vim Tutor) unter dem Namen TEST. Um dies zu überprüfen, tippe nochmals :!ls bzw. !dir, um deinen Verzeichnisinhalt zu sehen. Anmerkung: Würdest Du Vim jetzt beenden und danach wieder mit vim TEST starten, dann wäre diese Datei eine exakte Kopie des Tutors zu dem Zeitpunkt, als Du ihn gespeichert hast. 5. Nun entferne die Datei durch Eingabe von (MS-DOS): :!del TEST oder (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.3: AUSWÄHLEN VON TEXT ZUM SCHREIBEN ** Um einen Abschnitt der Datei zu speichern, tippe v Bewegung :w DATEI ** 1. Bewege den Cursor zu dieser Zeile. 2. Tippe v und bewege den Cursor zum fünften Auflistungspunkt unten. Beachte, dass der Text hervorgehoben wird. 3. Drücke das Zeichen : . Am Fuß des Schirms erscheint :'<,'> . 4. Tippe w TEST , wobei TEST ein noch nicht vorhandener Dateiname ist. Vergewissere Dich, dass Du :'<,'>w TEST siehst, bevor Du drückst. 5. Vim schreibt die ausgewählten Zeilen in die Datei TEST. Benutze :!dir oder :!ls , um sie zu sehen. Lösche sie noch nicht! Wir werden sie in der nächsten Lektion benutzen. Hinweis: Drücken von v startet die Visuelle Auswahl. Du kannst den Cursor umherbewegen, um die Auswahl zu vergrößern oder zu verkleinern. Anschließend lässt sich ein Operator anwenden, um mit dem Text etwas zu tun. Zum Beispiel löscht d den Text. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.4: EINLESEN UND ZUSAMMENFÜHREN VON DATEIEN ** Um den Inhalt einer Datei einzulesen, tippe :r DATEINAME ** 1. Platziere den Cursor direkt über dieser Zeile. BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3 sehen. Dann bewege Dich wieder ABWÄRTS, Lektion 5.4 wiederzusehen. 2. Nun lies deine Datei TEST ein indem Du das Kommando :r TEST ausführst, wobei TEST der von Dir verwendete Dateiname ist. Die eingelesene Datei wird unterhalb der Cursorzeile eingefügt. 3. Um zu überprüfen, dass die Datei eingelesen wurde, gehe zurück und beachte, dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und die eingefügte Dateiversion. Anmerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum Beispiel liest :r !ls die Ausgabe des Kommandos ls ein und platziert sie unterhalb des Cursors. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 5 1. :!Kommando führt ein externes Kommando aus. Einige nützliche Beispiele sind (MS-DOS) (Unix) :!dir :!ls - zeigt eine Verzeichnisauflistung. :!del DATEINAME :!rm DATEINAME - entfernt Datei DATEINAME. 2. :w DATEINAME speichert die aktuelle Vim-Datei unter dem Namen DATEINAME. 3. v Bewegung :w DATEINAME schreibt die Visuell ausgewählten Zeilen in die Datei DATEINAME. 4. :r DATEINAME lädt die Datei DATEINAME und fügt sie unterhalb der Cursorposition ein. 5. :r !dir liest die Ausgabe des Kommandos dir und fügt sie unterhalb der Cursorposition ein. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.1: ZEILEN ÖFFNEN (OPEN) ** Tippe o , um eine Zeile unterhalb des Cursors zu öffnen und Dich in ** ** den Einfügemodus zu begeben. ** 1. Bewege den Cursor zu der ersten mit ---> markierten Zeile unten. 2. Tippe o (klein geschrieben), um eine Zeile UNTERHALB des Cursors zu öffnen und Dich in den Einfügemodus zu begeben. 3. Nun tippe etwas Text und drücke , um den Einfügemodus zu verlassen. ---> Mit o wird der Cursor auf der offenen Zeile im Einfügemodus platziert. 4. Um eine Zeile ÜBERHALB des Cursors aufzumachen, gib einfach ein großes O statt einem kleinen o ein. Versuche dies auf der unten stehenden Zeile. ---> Öffne eine Zeile über dieser mit O , wenn der Cursor auf dieser Zeile ist. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.2: TEXT ANFÜGEN (APPEND) ** Tippe a , um Text NACH dem Cursor einzufügen. ** 1. Bewege den Cursor zum Anfang der ersten Übungszeile mit ---> unten. 2. Drücke e , bis der Cursor am Ende von Zei steht. 3. Tippe ein kleines a , um Text NACH dem Cursor anzufügen. 4. Vervollständige das Wort so wie in der Zeile darunter. Drücke , um den Einfügemodus zu verlassen. 5. Bewege Dich mit e zum nächsten unvollständigen Wort und wiederhole Schritte 3 und 4. ---> Diese Zei bietet Gelegen , Text in einer Zeile anzufü. ---> Diese Zeile bietet Gelegenheit, Text in einer Zeile anzufügen. Anmerkung: a, i und A gehen alle gleichermaßen in den Einfügemodus; der einzige Unterschied ist, wo die Zeichen eingefügt werden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.3: EINE ANDERE ART DES ERSETZENS (REPLACE) ** Tippe ein großes R , um mehr als ein Zeichen zu ersetzen. ** 1. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile. Bewege den Cursor zum Anfang des ersten xxx . 2. Nun drücke R und tippe die Nummer, die darunter in der zweiten Zeile steht, so dass diese das xxx ersetzt. 3. Drücke , um den Ersetzungsmodus zu verlassen. Beachte, dass der Rest der Zeile unverändert bleibt. 4. Wiederhole die Schritte, um das verbliebene xxx zu ersetzen. ---> Das Addieren von 123 zu xxx ergibt xxx. ---> Das Addieren von 123 zu 456 ergibt 579. Anmerkung: Der Ersetzungsmodus ist wie der Einfügemodus, aber jedes eingetippte Zeichen löscht ein vorhandenes Zeichen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.4: TEXT KOPIEREN UND EINFÜGEN ** Benutze den y Operator, um Text zu kopieren; p , um ihn einzufügen ** 1. Gehe zu der mit ---> markierten Zeile unten; setze den Cursor hinter "a)". 2. Starte den Visuellen Modus mit v , bewege den Cursor genau vor "erste". 3. Tippe y , um den hervorgehoben Text zu kopieren. 4. Bewege den Cursor zum Ende der nächsten Zeile: j$ 5. Tippe p , um den Text einzufügen und anschließend: a zweite . 6. Benutze den Visuellen Modus, um " Eintrag." auszuwählen, kopiere mittels y , bewege Dich zum Ende der nächsten Zeile mit j$ und füge den Text dort mit p an. ---> a) dies ist der erste Eintrag. b) Anmerkung: Du kannst y auch als Operator verwenden; yw kopiert ein Wort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.5: OPTIONEN SETZEN ** Setze eine Option so, dass eine Suche oder Ersetzung Groß- ** ** und Kleinschreibung ignoriert ** 1. Suche nach 'ignoriere', indem Du /ignoriere eingibst. Wiederhole die Suche einige Male, indem Du die n - Taste drückst. 2. Setze die 'ic' (Ignore case) - Option, indem Du :set ic eingibst. 3. Nun suche wieder nach 'ignoriere', indem Du n tippst. Beachte, dass jetzt Ignoriere und auch IGNORIERE gefunden wird. 4. Setze die 'hlsearch' und 'incsearch' - Optionen: :set hls is 5. Wiederhole die Suche und beobachte, was passiert: /ignoriere 6. Um das Ignorieren von Groß/Kleinschreibung abzuschalten, tippe: :set noic Anmerkung: Um die Hervorhebung der Treffer zu entfernen, gib ein: :nohlsearch Anmerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze \c im Suchausdruck: /ignoriere\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 6 1. Tippe o , um eine Zeile UNTER dem Cursor zu öffnen und den Einfügemodus zu starten Tippe O , um eine Zeile ÜBER dem Cursor zu öffnen. 2. Tippe a , um Text NACH dem Cursor anzufügen. Tippe A , um Text nach dem Zeilenende anzufügen. 3. Das Kommando e bringt Dich zum Ende eines Wortes. 4. Der Operator y (yank) kopiert Text, p (put) fügt ihn ein. 5. Ein großes R geht in den Ersetzungsmodus bis zum Drücken von . 6. Die Eingabe von ":set xxx" setzt die Option "xxx". Einige Optionen sind: 'ic' 'ignorecase' Ignoriere Groß/Kleinschreibung bei einer Suche 'is' 'incsearch' Zeige Teilübereinstimmungen für einen Suchausdruck 'hls' 'hlsearch' Hebe alle passenden Ausdrücke hervor Der Optionsname kann in der Kurz- oder der Langform angegeben werden. 7. Stelle einer Option "no" voran, um sie abzuschalten: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 7.1 : AUFRUFEN VON HILFE ** Nutze das eingebaute Hilfesystem ** Vim besitzt ein umfassendes eingebautes Hilfesystem. Für den Anfang probiere eins der drei folgenden Dinge aus: - Drücke die - Taste (falls Du eine besitzt) - Drücke die Taste (falls Du eine besitzt) - Tippe :help Lies den Text im Hilfefenster, um zu verstehen wie die Hilfe funktioniert. Tippe CTRL-W CTRL-W , um von einem Fenster zum anderen zu springen. Tippe :q , um das Hilfefenster zu schließen. Du kannst Hilfe zu praktisch jedem Thema finden, indem Du dem ":help"- Kommando ein Argument gibst. Probiere folgendes ( nicht vergessen): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 7.2: ERSTELLE EIN START-SKRIPT ** Aktiviere die Features von Vim ** Vim besitzt viele Funktionalitäten, die über Vi hinausgehen, aber die meisten von ihnen sind standardmäßig deaktiviert. Um mehr Funktionalitäten zu nutzen, musst Du eine "vimrc" - Datei erstellen. 1. Starte das Editieren der "vimrc"-Datei, abhängig von deinem System: :e ~/.vimrc für Unix :e $VIM/_vimrc für MS-Windows 2. Nun lies den Inhalt der Beispiel-"vimrc"-Datei ein: :r $VIMRUNTIME/vimrc_example.vim 3. Speichere die Datei mit: :w Beim nächsten Start von Vim wird die Syntaxhervorhebung aktiviert sein. Du kannst all deine bevorzugten Optionen zu dieser "vimrc"-Datei zufügen. Für mehr Informationen tippe :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 7.3: VERVOLLSTÄNDIGEN ** Kommandozeilenvervollständigung mit CTRL-D und ** 1. Stelle sicher, dass Vim nicht im Vi-Kompatibilitätsmodus ist: :set nocp 2. Siehe nach, welche Dateien im Verzeichnis existieren: :!ls oder :dir 3. Tippe den Beginn eines Kommandos: :e 4. Drücke CTRL-D und Vim zeigt eine Liste mit "e" beginnender Kommandos. 5. Drücke und Vim vervollständigt den Kommandonamen zu ":edit". 6. Nun füge ein Leerzeichen und den Anfang einer existierenden Datei an: :edit DAT 7. Drücke . Vim vervollständigt den Namen (falls er eindeutig ist). Anmerkung: Vervollständigung funktioniert für viele Kommandos. Probiere einfach CTRL-D und . Dies ist insbesondere nützlich für :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 7 1. Tippe :help oder drücke oder , um ein Hilfefenster zu öffnen. 2. Tippe :help Kommando , um Hilfe über Kommando zu erhalten. 3. Tippe CTRL-W CTRL-W , um zum anderen Fenster zu springen. 4. Tippe :q , um das Hilfefenster zu schließen. 5. Erstelle ein vimrc - Startskript mit deinen bevorzugter Einstellungen. 6. Drücke CTRL-D nach dem Tippen eines : Kommandos, um mögliche Vervollständigungen anzusehen. Drücke , um eine Vervollständigung zu anzuwenden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Damit ist der Vim Tutor beendet. Seine Intention war, einen kurzen und bündigen Überblick über den Vim Editor zu geben; gerade genug, um relativ leicht mit ihm umgehen zu können. Der Vim Tutor hat nicht den geringsten Anspruch auf Vollständigkeit; Vim hat noch weitaus mehr Kommandos. Lies als nächstes das User Manual: ":help user-manual". Für weiteres Lesen und Lernen ist folgendes Buch empfehlenswert : Vim - Vi Improved - von Steve Oualline Verlag: New Riders Das erste Buch, welches durchgängig Vim gewidmet ist. Besonders nützlich für Anfänger. Viele Beispiele und Bilder sind enthalten. Siehe http://iccf-holland.org/click5.html Folgendes Buch ist älter und mehr über Vi als Vim, aber auch empfehlenswert: Textbearbeitung mit dem Vi-Editor - von Linda Lamb und Arnold Robbins Verlag O'Reilly - ISBN: 3897211262 In diesem Buch kann man fast alles finden, was man mit Vi tun möchte. Die sechste Ausgabe enthält auch Informationen über Vim. Als aktuelle Referenz für Version 6.2 und knappe Einführung dient das folgende Buch: vim ge-packt von Reinhard Wobst mitp-Verlag, ISBN 3-8266-1425-9 Trotz der kompakten Darstellung ist es durch viele nützliche Beispiele auch für Einsteiger empfehlenswert. Probekapitel und die Beispielskripte sind online erhältlich. Siehe http://iccf-holland.org/click5.html Dieses Tutorial wurde geschrieben von Michael C. Pierce und Robert K. Ware, Colorado School of Mines. Es benutzt Ideen, die Charles Smith, Colorado State University, zur Verfügung stellte. E-Mail: bware@mines.colorado.edu. Bearbeitet für Vim von Bram Moolenaar. Deutsche Übersetzung von Joachim Hofmann 2015. E-Mail: Joachim.Hof@gmx.de ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!kHvim80/tutor/tutor.sk.cp1250nu[=============================================================================== = V i t a j t e v o V I M T u t o r i a l i - Verzia 1.7 = =============================================================================== Vim je vemi vkonn editor, ktor m prli vea prkazov na to aby mohli byt vetky popsan vo vuke akou je tto. Tto vuka popisuje dostaton mnostvo prkazov nato aby bolo mon pouva Vim ako viacelov editor. Priblin as potrebn na prebratie tejto vuky je 25-30 mint, zvis na tom, koko je strvenho asu s preskavanm. UPOZORNENIE: Prkazy v lekcich modifikuj text. Vytvor kpiu tohto sboru aby sa mohlo precviova na om (pri tarte "vimtutor" je toto kpia). Je dleit zapamta si, e tto vuka je vytvoren pre vuku pouvanm. To znamen, e je potrebn si prkazy vyska, aby bolo uenie sprvne. Ak len itas text, prkazy zabudne! Presved sa, e Caps-Lock NIEJE stlaen a stlat klvesu j niekoko krt, aby sa kurzor posunul natoko, e lekcia 1.1 celkom zapln obrazovku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.1: POHYB KURZOROM ** Pre pohyb kurzorum stla klvesy h,j,k,l ako je znzornen. ** ^ k Funkcia: Klvesa h je naavo a vykon pohyb doava. < h l > Klvesa l je napravo a vykon pohyb doprava. j Klvesa j vyzer ako pka dole v 1. Pohybuj kurzorom po obrazovke, km si na to nezvykne. 2. Dr stlaen klvesu pre pohyb dole (j), km sa jej funkcia nezopakuje. ---> Teraz sa u vie pohybova na nasledujcu lekciu. 3. Pouitm klvesy pre pohyb dole prejdi na Lekciu 1.2. Poznmka: Ak si niesi ist tm o si napsal, stla na prechod do normlneho mdu. Poznmka: Kurzorov klvesy s tie funkn. Ale pouvanm hjkl sa bude schopn pohybova rchlejie, ke si zvykne ich pouva. Naozaj! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 1.2: ZATVRANIE VIMU !! POZNMKA: Pred vykonanm tchto krokov si pretaj cel tto lekciu !! 1. Stla klvesu (aby si sa uite nachdzal v normlnom mde) 2. Nap: :q! . Tm ukon prcu s editorom BEZ uloenia zmien, ktor si vykonal. 3. Ke sa dostane na prkazov riadok, nap prkaz, ktorm sa dostane spe do tejto vuky. To me by: vimtutor 4. Ak si si tieto kroky spoahlivo zapamtal, vykonaj kroky 1 a 3, pre ukonenie a znovu spustenie editora. POZNMKA: :q! neulo zmeny, ktor si vykonal. O niekoko lekci sa nau ako uloi zmeny do sboru 5. presu kurzor dole na lekciu 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.3: EDITCIA TEXTU - MAZANIE ** Stlaenie klvesy x v normlnom mde zmae znak na mieste kurzora. ** 1. Presu kurzor niie na riadok oznaen znakou --->. 2. Aby si mohol odstrni chyby, pohybuj kurzorom km neprejde na znak, ktor chce zmaza. 3. Stla klvesu x aby sa zmazal nechcen znak. 4. Zopakuj kroky 2 a 4 a km veta nieje sprvna. ---> Kraava skooilla ccezz mesiiac. 5. Ak je veta sprvna, prejdi na lekciu 1.4. POZNMKA: Neskaj si zapamta obsah tejto vuky, ale sa u pouvanm. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.4: EDITCIA TEXTU - VKLADANIE ** Stlaenie klvesy i umouje vkladanie textu. ** 1. Presu kurzor niie na prv riadok za znaku --->. 2. Pre upravenie prvho riadku do rovnakho tvaru ako je druh riadok, presu kurzor na prv znak za misto, kde m by text vloen. 3. Stla klvesu i a nap potrebn text. 4. Po opraven kadej chyby, stla pre nvrat do normlneho mdu. Zopakuj kroky 2 a 4 km nieje veta sprvna. ---> Tu je text chbajci tejto. ---> Tu je nejak text chbajci od tejto iary. 5. Ke sa dostatone nau vklada text, prejdi na nasledujce zhrnutie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.5: EDITCIA TEXTU - PRIDVANIE ** Stlaenie klvesy A umouje pridva text. ** 1. Presu kurozr niie na prv riadok za znakou --->. Nezle na tom, na ktorom znaku sa kurzor v tom riadku nachdza. 2. Stla klvesu A a nap potrebn text. 3. Po pridan textu stla klvesu pre nvrat do Normlneho mdu. 4. Presu kurozr na druh riadok oznaen ---> a zopakuj kroky 2 a 3 km nieje veta sprvna. ---> Tu je nejak text chbajci o Tu je nejak text chbajci od tiato. ---> Tu tie chba nej Tu tie chba nejak text. 5. Ke sa dostatone nau pridva text, prejdi na lekciu 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.6: EDITCIA SBORU ** Napsanm :wq sa sbor ulo a zavrie ** !! POZNMKA: Pred vykonanm tchto krokov si pretaj cel lekciu!! 1. Opusti tto vuku, ako si to urobil v lekcii 1.2: :q! 2. Do prkazovho riadku nap prkaz: vim tutor 'vim' je prkaz, ktor spust editor Vim, 'tutor' je meno sboru, ktor chce editova. Poui tak sbor, ktor me meni. 3. Vlo a zma text tak, ako si sa nauil v predolch lekciach. 4. Ulo sbor so zmenami a opusti Vim prkazom: :wq 5. Retartuj vimtutor a presu sa dole na nasledujce zhrnutie. 6. Urob tak po pretan predolch krokov a porozumeniu im. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZHRNUTIE LEKCIE 1 1. Kurzor sa pohybuje pouitm klves so pkami alebo klvesmi hjkl. h (do lava) j (dole) k (hore) l (doprava) 2. Pre spustenie Vimu (z prkazovho riadku) nap: vim FILENAME 3. Na ukonenie Vimu nap: :q! pre zruenie vetkch zmien alebo nap: :wq pre uloenie zmien. 4. Na zmazanie znaku na mieste kurzora nap: x 5. Pre vloenie textu na mieste kurzora v normlnom mde nap: i nap vkladan text vkladanie pred kurzor A nap pridvan text vkladanie za riadok POZNMKA: Stlaenie a premiestn do normlneho mdu alebo zru nejak nechcen a iastone dokonen prkaz. Teraz pokrauj lekciou 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.1: Mazacie prkazy ** Napsanie prkazu dw zmae znaky do konca slova. ** 1. Stla aby si bol bezpene v normlnom mde. 2. Presu kurzor niie na riadok oznaen znakou --->. 3. Presu kurzor na zaiatok slova, ktor je potrebn zmaza. 4. Nap dw aby slovo zmizlo. POZNMKA: Psmeno d sa zobraz na poslednom riadku obrazovky ke ho nape. Vim na teba pok, aby si mohol napsa psmeno w. Ak vid nieo in ako d , tak si napsal nesprvny znak; stla a zani znova. ---> Tu je niekoko slov zbava, ktor nie patria list do tejto vety. 5. Zopakuj kroky 3 a 4 km veta nieje sprvna a prejdi na lekciu 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.2: VIAC MAZACCH PRKAZOV ** Napsanie prkazu d$ zmae znaky do konca riadku ** 1. Stla aby si bol bezpene v normlnom mde. 2. Presu kurzor niie na riadok oznaen znakou --->. 3. Presu kurzor na koniec sprvnej vety (ZA prv bodku). 4. Nap d$ aby sa zmazali znaky do konca riadku. ---> Niekto napsal koniec tohto riadku dvakrt. koniec tohot riadku dvakrt. 5. Prejdi na lekciu 2.3 pre pochopenie toho o sa stalo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.3: OPERTORY A POHYBY Vea prkazov, ktor menia text s odvoden od opertorov a pohybov. Formt pre prkaz mazania klvesou d je nasledovn: d pohyb kde: d - je mazac opertor pohyb - je to o opertor vykonva (vypsan niie) Krtky list pohybov: w - do zaiatku alieho slova, okrem jeho prvho psmena. e - do konca terajieho slova, vrtane poslednho znaku. $ - do konca riadku, vrtane poslednho znaku Take napsanm de sa zmae vetko od kurzora do konca slova. POZNMKA: Stlaenm iba pohybu v normlnom mde bez opertora sa presunie kurzor tak ako je to pecivikovan. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.4: Pouitie viacnsobnho pohybu ** Napsanm sla pred pohyb ho zopakuje zadn poet krt ** 1. Presu kurozr niie na zaiatok riadku oznaenho --->. 2. Nap 2w a kurozr sa presunie o dve slov vpred. 3. Nap 3e a kurozr sa presunie vpred na koniec tretieho slova. 4. Nap 0 (nula) a kurozr sa presunie na zaiatok riadku. 5. Zopakuj kroky 2 a 3 s rznymi slami. ---> Toto je riadok so slovami po kotrch sa mete pohybova. 6. Prejdi na lekciu 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.5: POUITIE VIACNSOBNHO MAZANIA PRE HROMADN MAZANIE ** Napsanie sla spolu s opertorom ho zopakuje zadan poet krt ** V kombincii opertorov mazania a pohybu spomnanho vyie vlo poet pred pohyb pre docielenie hromadnho mazania: d slo pohyb 1. Presu kurzor na prv slovo psan VEKMI PSMENAMI v riadku oznaenom --->. 2. Nap 2dw a zmae dve slov psan VEKMI PSMENAMI 3. Zopakuj kroky 1 a 2 s pouitm rzneho sla tak aby si zmazal slov psan vekmi psmenami jednm prkazom. ---> Tento ABC DE riadok FGHI JK LMN OP so slovamI je Q RS TUV vycisteny. POZNMKA: slo medzi opertorom d a pohybom funguje podobne ako pri pouit s pohybom bez opertora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.6: OPERCIE S RIADKAMI ** Napsanie prkazu dd zmae cel riadok. ** Vzhadom na frekvenciu mazania celho riadku, sa autori Vimu rozhodli, e bude jednoduchie maza cel riadok napsanm dvoch psmen d. 1. Presu kurzor na druh riadok v texte na spodu. 2. Nap dd aby si zmazal riadok. 3. Prejdi na tvrt riadok. 4. Nap 2dd aby si zmazal dva riadky. 1) Rue s erven, 2) Blato je zbavn, 3) Fialky s modr, 4) Mm auto, 5) Hodinky ukazuj as, 6) Cukor je sladk, 7) A to si ty. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.7: PRKAZ UNDO ** Stla u pre vrtenie poslednho prkazu, U pre pravu celho riadku. ** 1. Presu kurzor niie na riadok oznaen znakou ---> a premiestni ho na prv chybu. 2. Nap x pre zmazanie prvho nechcenho riadku. 3. Teraz nap u m vrt sp posledne vykonan prkaz. 4. Teraz oprav vetky chyby na riadku pouitm prkazu x . 5. Teraz nap vek U m vrt riadok do pvodnho stavu. 6. Teraz nap u niekoko krt, m vrt sp prkaz U. 7. Teraz nap CTRL-R (dr klvesu CTRL stlaen km stla R) niekoko krt, m vrt sp predtm vrten prkazy (undo z undo). ---> Opprav chybby nna toomto riadku a zmee ich pommocou undo. 8. Tieto prkazy s asto pouvan. Teraz prejdi na zhrnutie lekcie 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 2 ZHRNUTIE 1. Pre zmazanie znakov od kurzora do konca slova nap: dw 2. Pre zmazanie znakov od kurzora do konca riadku nap: d$ 3. Pre zmazanie celho riadku nap: dd 4. Pre zopakovanie pohybu, nap pred neho slo: 2w 5. Formt pre pkaz: opertor [slo] pohyb kde: opertor - o treba robi, naprklad d pre zmazanie [slo] - je voliten poet pre opakovanie pohybu pohyb - pohyb po texte vzhadom na opertor, naprklad w (slovo), $ (do konca riadku), at. 6. Pre pohyb na zaiatok riadku poui nulu: 0 7. Pre vrtenie sp predolej opercie nap: u (mal u) Pre vrtenie vetkch prav na riadku nap: U (vek U) Pre vrtenie vrtench prav nap: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 3.1: PRKAZ VLOI ** Napsanie prkazu p vlo psledn vmaz za kurzor. ** 1. Presu kurzor niie na prv riadok textu. 2. Nap dd m zmae riadok a ulo ho do buffera editora Vim. 3. Presu kurzor vyie tam, kam zmazan riadok patr. 4. Ak nape v normlnom mde p zmazan riadk sa vlo. 5. Zopakuj kroky 2 a 4, km riadky nies v sprvnom porad. ---> d) Tie sa doke vzdelva? ---> b) Fialky s modr, ---> c) Inteligencia sa vzdelva, ---> a) Rue s erven, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 3.2: PRKAZ NAHRADENIA ** Napsanm rx sa nahrad znak na mieste kurzora znakom x . ** 1. Presu kurzor niie na prv riadok textu oznaenho znakou --->. 2. Presu kurzor na zaiatok prvej chyby. 3. nap r a potom znak, ktor tam m by. 4. Zopakuj kroky 2 a 3, km prv riadok nieje zhodn s druhm. ---> Ka bol tento riasok paan, niekro stlail nesprbne klvesy! ---> Ke bol tento riadok psan, niekto stlail nesprvne klvesy! 5. Teraz prejdi na lekciu 3.2. POZNMKA: Pamtaj si, e naui sa me len pouvanim, nie pamtanm. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 3.3. PRKAZ PRAVY ** Ak chce zmeni as slova do konca slova, nap ce . ** 1. Presu kurzor niie na prv riadok oznaen znakou --->. 2. Umiestni kurzor na psmeno o v slove rosfpl. 3. Nap ce a oprav slovo (v tomto prpade nap 'iadok'.) 4. Stla a prejdi na al znak, ktor treba zmeni. 5. Zopakuj kroky 3 a 4, km prv veta nieje rovnak ako druh. ---> Tento rosfpl m niekoko skic, ktor je pirewvb zmeni piyun prkazu. ---> Tento riadok m niekoko slov, ktor je potrebn zmeni pouitm prkazu. Poznmka, e ce zmae slovo a nastav vkladac md. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 3.4: VIAC ZMIEN POUITM c ** Prkaz pre pravy sa pouva s rovnakmi pohybmi ako pre mazanie ** 1. Prkaz pre pravy pracuje rovnako ako pre mazanie. Formt je: c [slo] pohyb 2. Pohyby s rovnak, ako naprklad w (slovo) a $ (koniec riadku). 3. Presu kurzor niie na prv riadok oznaen znakou --->. 4. Presu kurzor na prv chybu. 5. nap c$ aby si mohol upravi zvyok riadku poda druhho a stla . ---> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy. ---> Koniec tohto riadku potrebuje opravi pouitm prkazu c$ . POZNMKA: Me poui klvesu backspace na pravu zmien poas psania. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 3 ZHRNUTIE 1. Na vloenie textu, ktor u bol zmazan, nap p . To vlo zmazan text ZA kurzor (ak bol riadok zmazan prejde na riadok pod kurzorom). 2. Pre naradenie znaku na mieste kurzora, nap r a potom znak, ktor nahrad pvodn znak. 3. Prkaz na upravenie umouje zmeni od kurzora a po miesto, ktor uruje pohyb. napr. Nap ce m zmn text od pozcie kurzora do konca slova, c$ zmen text do konca riadku. 4. Formt pre nahradenie je: c [slo] pohyb Teraz prejdi na nalsedujcu lekciu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 4.1: POZCIA A STATUS SBORU ** Stla CTRL-g pre zobrazenie svojej pozcie v sbore a statusu sboru. Nap G pre presun na riadok v sbore. ** Poznmka: Pretaj si cel tto lekciu skr ako zane vykonva kroky!! 1. Dr stlaen klvesu Ctrl a stla g . Toto nazvame CTRL-G. Na spodu obrazovky sa zobraz sprva s nzvom sboru a pozciou v sbore. Zapamtajsi si slo riadku pre pouitie v kroku 3. 2. Stla G m sa dostane na spodok sboru. Nap gg m sa dostane na zaiatok sboru. 3. Nap slo riadku na ktorom si sa nachdzal a stla G. To a vrti na riadok, na ktorom si prv krt stlail CTRL-G. 4. Ak sa ct schopn vykona teto kroky, vykonaj kroky 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 4.2: PRKAZ VYHADVANIA ** Nap / nasledovan reazcom pre vyhadanie prslunho reazca. ** 1. Nap znak / v normlnom mde. Poznmka, e tento znak sa spolu s kurzorom zobraz v dolnej asti obrazovky s : prkazom. 2. Teraz nap 'errroor' . To je slovo, ktor chce vyhada. 3. Pre vyhadanie alieho vskytu rovnakho reazca, stla jednoducho n. Pre vyhadanie alieho vskytu rovnakho reazca opanm smerom, N. 4. Ak chce vyhada reazec v sptnom smere, pou prkaz ? miesto prkazu /. 5. Pre nvrat na miesto z ktorho si priiel stla CTRL-O (dr stlaen klvesu Ctrl poas stlaenia klvesy o). Zopakuj pre al nvrat sp. CTRL-I ide vpred. POZNMKA: "errroor" nieje spsob hlskovania error; errroor je error. POZNMKA: Ke vyhadvanie dosiahne koniec tohto sboru, bude pokraova na zaiatku, dokia nieje resetovan nastavenie 'wrapscan' . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 4.3: VYHADVANIE ZODPOVEDAJCICH ZTAVORIEK ** Nap % pre vyhadanie prslunho znaku ),], alebo } . ** 1. Premiestni kurzor na hocak zo znakov (, [, alebo { v riadku niie oznaenho znakou --->. 2. Teraz nap znak % . 3. Kurzor sa premiestni na zodpovedajcu ztvorku. 4. Nap % pre presun kurzoru sp na otvrajcu ztvorku. 5. Presu kurzor na in zo znakov (,),[,],{ alebo } a vimni si o % vykonva. ---> Toto ( je testovac riadok s ('s, ['s ] a {'s } v riadku. )) Poznmka: Toto je vemi vhodn pou pri laden programu s chbajcimi uzatvrajcimi ztvorkami! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 4.4: PRKAZ NAHRADENIA ** Nap :s/star/nov/g pre nahradenie slova 'star' za slovo 'nov'. ** 1. Presu kurzor niie na riadok oznaen znakou --->. 2. Nap :s/thee/the . Poznamka, e tento prkaz zmen len prv vskyt "thee" v riadku. 3. Teraz nap :s/thee/the/g o znamen celkov nahradenie v riadku. Toto nahrad vetky vskyty v riadku. ---> Thee best time to see thee flowers in thee spring. 4. Pre zmenu vetkch vskytov danho reazca medzi dvomi ridakami, nap :#,#s/star/nov/g kde #,# s sla dvoch riadkov, v rozsahu ktorch sa nahradenie vykon. nap :%s/star/nov/g pre zmenu vetkch vskytov v celom riadku nap :%s/star/nov/gc njde vetky vskyty v celom sbore, s otzkou i nahradi alebo nie ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 4 ZHRNUTIE 1. CTRL-g vype tvoju pozciu v sbore a status sboru. G a premiestni na koniec riadku. slo G a premiestni na riadok s slom. gg a presunie na prv riadok 2. Napsanie / nasledovan reazcom vyhad reazec smerom DOPREDU. Napsanie ? nasledovan reazcom vyhada reazec smerom DOZADU. Napsanie n po vyhadvan, vyhad nasledujci vskyt reazca v rovnakom smere, priom N vyhad v opanom smere. CTRL-O a vrti sp na stariu pozciu, CTRL-I na noviu pozciu. 3. Napsanie % ke kurzor je na (,),[,],{, alebo } njde zodpovdajcu prnu ztvorku. 4. Pre nahradenie novho za prv star v riadku nap :s/star/nov Pre nahradenie novho za vetky star v riadku nap :s/star/nov/g Pre nahradenie reazcov medzi dvoma riadkami 3 nap :#,#/star/nov/g Pre nahradenie vetkch vskytov v sbore nap :%s/star/nov/g Pre potvrdenie kadho nahradenia pridaj 'c' :%s/star/nov/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 5.1 AKO SPUSTI VONKAJ PRKAZ ** Nap prkaz :! nasledovan vonkajm prkazom pre spustenie prkazu ** 1. Nap obvykl pkaz : ktor nastav kurzor na spodok obrazovky. To umon napsa prkaz. 2. Teraz nap ! (vkrink). To umon spusti hociak vonkaj prkaz z prkazovho riadku. 3. Ako prklad nap ls za ! a stla . Tento prkaz zobraz obsah tvojho adresra rovnako ako na prkazovom riadku. Alebo poui :!dir ak ls nefunguje. Poznmka: Takto je mon spusti hociak vonkaj prkaz s argumentami. Poznmka: Vetky prkazy : musia by dokonen stlaenm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 5.2: VIAC O UKLADAN SBOROV ** Pre uloenie zmien v sbore, nap :w FILENAME. ** 1. Nap :!dir alebo :!ls pre vpis aktulneho adresra. U vie, e mus za tmto stlai . 2. Vyber nzov sboru, ktor ete neexistuje, ako napr. TEST. 3. Teraz nap: :w TEST (kde TEST je nzov vybratho sboru.) 4. To ulo cel sbor (Vim Tutor) pod nzovm TEST. Pre overenie nap :!dir , m zobraz obsah adresra. Poznmka: e ak ukon prcu s editorom Vim a znovu ho spust prkazom vim TEST, sbor bude kpia vuky, ke si ho uloil. 5. Teraz odstr sbor napsanm (MS-DOS): :!del TEST alebo (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 5.3 VBER TEXTU PRE ULOENIE ** Pre uloenie asti sboru, nap v pohyb :w FILENAME ** 1. Presu kurozr na tento riadok. 2. Stla v a presu kurozr na piatu poloku dole. Poznmka, e tento text je vyznaen (highlighted). 3. Stla klvesu : . V spodnej asti okna sa objav :'<,'>. 4. Nap w TEST , kde TEST je meno sboru, ktor zatial neexistuje. Skontroluj, e vid :'<,'>w TEST predtm ne stla Enter. 5. Vim zape oznaen riadky do sboru TEST. Poui :!dir alebo :!ls pre overenie. Zatial ho ete nema! Pouijeme ho v alej lekcii. POZNMKA: Stlaenm klvesy v sa spust vizulne oznaovanie. Me pohybova kurzorom pre upresnenie vyznaenho textu. Potom me poui opertor pre vykonanie nejakej akcie s textom. Naprklad d zmae vyznaen text. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 5.4: VBER A ZLUOVANIE SBOROV ** Pre vloenie obsahu sboru, nap :r FILENAME ** 1. Premiestni kurzor nad tento riadok. POZNMKA: Po vykonan kroku 2 uvid text z lekcie 5.3. Potom sa presu dole, aby si videl tto lekciu. 3. Teraz vlo sbor TEST pouitm prkazu :r TEST kde TEST je nzov sboru. Sbor, ktor si pouil je umiestnen pod riadkom s kurzorom. POZNMKA: Me tie nata vstup vonkajieho prkazu. Naprklad :r !ls nata vstup prkazu ls a umiestni ho za pozciu kurzora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 5 ZHRNUTIE 1. :!prkaz spust vonkaj prkaz. Niektor vyuiten prklady s: (MS_DOS) (UNIX) :!dir :!ls - zobraz obsah adresra :!del FILENAME :!rm FILENAME - odstrni sbor FILENAME 2. :w FILENAME ulo aktulny sbor na disk pod menom FILENAME. 3. v pohyb :w FILENAME ulo vizulne oznaen riadky do sboru FILENAME. 4. :r FILENAME vyberie z disku sbor FILENAME a vlo ho do aktulneho sboru za pozciou kurzora. 5. :r !dir nata vstup z prkazu dir a vlo ho za pozciu kurzora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.1: PRKAZ OTVORI ** Nap o pre vloenie riadku pod kurzor a prepnutie do vkladacieho mdu ** 1. Presu kurzor niie na riadok oznaen znakou --->. 2. Nap o (mal psmeno) pre vloenie istho riadku pod kurzorm a prepnutie do vkladacieho mdu. 3. Teraz skopruj riadok oznaen ---> a stla pre ukonenie vkladacieho mdu. ---> Po napsan o sa kurzor premiestn na vloen riadok do vkladacieho mdu. 4. Pre otvorenie riadku nad kurzorom, jednotucho nap vek O , namiesto malho o. Vyskaj si to na riadku dole. ---> Vlo riadok nad tmto napsanm O, ke kurzor je na tomto riadku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.2: PRKAZ PRIDA ** Nap a pre vloenie textu ZA kurzor. ** 1. Presu kurzor niie na koniec prvho riadku oznaenho znakou ---> 2. Stla klvesu e dokia kurozr nieje na konci riadku. 3. Nap a (mal psmeno) pre pridanie textu ZA kurzorom. 4. Dokon slovo tak ako je to v druhom riadku. Stla pre opustenie vkladacieho mdu. 5. Poui e na presun na alie nedokonen slovo a zopakuj kroky 3 a 4. ---> Tento ri ti dovouje ncv privan testu na koniec riadku. ---> Tento riadok ti dovouje ncvik pridvania textu na koniec riadku. POZNMKA: a, i, A tartuj rovnak vkladac md, jedin rozidel je, kde sa znaky vkladaj. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.3: IN SPOSOB NAHRADZOVANIA ** Nap vek R pre nahradenie viac ako jednho znaku. ** 1. Presu kurzor niie na prv riadok oznaen znakou --->. Premiestni kurzor na zaiatok prvho vskytu xxx. 2. Teraz nap R a nap slo uveden v druhom riadku, take sa nm nahrad pvodn xxx. 3. Stla pre opustenie nahradzovacieho mdu. Poznmka, e zvyok riadku zostane nezmenen. 4. Zopakuj tieto kroky pre nahradenie zvynch xxx. ---> Pridanm 123 ku xxx dostane xxx. ---> Pridanm 123 ku 456 dostane 579. POZNMKA: Nahradzovac md je ako vkladac md, ale kad napsan znak zmae existujci znak. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.4: Copy Paste textu ** pou opertor y pre copy textku a p pre jeho paste ** 1. Cho niie na riadok oznaen ---> a umiestni kurozr za "a)". 2. Natartuj vizulny md pouitm v a presu kurozr pred "first". 3. Nap y pre vystrihnutie (copy) oznaenho textu. 4. Presu kurozr na koniec alieho riadku: j$ 5. Nap p pre vlonie (paste) textu. Potom nap: a druha . 6. Poui vizulny md pre oznaenie "poloka.", vystrihni to pouitm y, presu sa na koniec nasledujceho riadku pouitm j$ a vlo sem text pouitm p. ---> a) toto je prv poloka ---> b) POZNMKA: Me poui tie y ako opertor; yw vystrihne jedno slovo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.5: NASTAVENIE MONOST ** Nastav monosti, take vyhadvanie alebo nahradzovanie ignoruje rozliovanie ** 1. Vyhadaj reazec 'ignore' napsanm: /ignore Zopakuj vyhadvanie niekoko krt stlaenm klvesy n . 2. Nastav monos 'ic' (Ignore case) napsanm prkazu: :set ic 3. Teraz vyhadaj reazec 'ingore' znova stlaenm klvesy n Poznmka, e teraz s vyhadan aj Ignore a IGNORE. 4. Nastav monosi 'hlsearch' a 'incsearch': :set hls is 5. Teraz spusti vyhadvac prkaz znovu, a pozri o sa stalo: /ignore 6. Pre opetovn zapnutie rozlyovania vekch a malch psmen nap: :set noic POZNMKA: Na odstrnenie zvraznenia vrazov nap: :nohlsearch POZNMKA: Ak chce nerozlyova vekos psmen len pre jedno pouitie vyhadvacieho prkazu, poui \c: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 6 ZHRNUTIE 1. Nap o pre otvorenie riadku pod kurzorom a tart vkladacieho mdu. Nap O pre otvorenie riadku nad kurzorom. 2. Nap a pre vkladanie textu ZA kurzor. Nap A pre vkladanie textu za koncom riadku. 3. Prkaz e presunie kurozr na koniec slova 4. Opertor y vystrihne (skopruje) text, p ho vlo. 5. Napsanie vekho R prepne do nahradzovacieho mdu, km nieje stlaen . 6. Napsanie ":set xxx" nastav monos "xxx". Niektor nastavenia s: 'ic' 'ignorecase' ignoruje vek a mal psmen poas vyhadvania. 'is' 'incsearch' zobrazuje iaston reazce vyhadvanho reazca. 'hls' 'hlsearch' vyzna vetky vyhadvan reazce. Me poui hociktor z dlhch a krtkych nzvov monost. 7. Vlo "no" pred nastavenie pre jeho vypnutie: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 7.1: ZSKANIE NPOVEDY ** Pouvaj on-line systm npovedy ** Vim m obsiahly on-line systm npovedy. Pre odtartovanie, vyskaj jeden z tchto troch: - stla klvesu (ak nejak m) - stla klvesu (ak nejak m) - nap :help taj text v okne npovedy pre zskanie predstavy ako npoveda funguje. Nap CTRL-W CTRL-W pre skok z jednho okna do druhho. Nap :q m zatvor okno npovedy. Me njs help ku hociakej tme pridanm argumentu ku prkazu ":help". Vyskaj tieto (nezabudni stlai ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 7.2: VYTVORENIE TARTOVACIEHO SKRIPTU ** Zapni funkcie editora Vim ** Vim m omnoho viac funkcii ne Vi, ale veina z nich je implicitne vypnut. Pre pouvanie viac Vim funkcii vytvor "vimrc" sbor. 1. Zani editova "vimrc" sbor, to zvis na pouitom systme: :e ~/.vimrc pre Unix :e $VIM/_vimrc pre MS-Windows 2. Teraz si pretaj text prkladu "vimrc" sboru: :r $VIMRUNTIME/vimrc_example.vim 3. Ulo sbor: :w Pri nasledujcom tarte editora Vim sa pouije zvrazovanie syntaxe. Do "vimrc" sboru me prida vetky svoje uprednostovan nastavenia. Pre viac informcii nap :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 7.3 DOKONENIE ** Dokoni prkaz na prkazovom riadku pouitm CTRL-D a ** 1. Uisti sa, e Vim nieje v kompatibilnom mde: :set nocp 2. Pozri sa ak sbory sa nachdzaj v adresri: :!ls alebo :!dir 3. Nap zaiatok prkazu: :e 4. Stla CTRL-D a Vim zobraz zoznam prkazov zanajcich "e". 5. Stla a Vim dokon meno prkazu na ":edit". 6. Teraz pridaj medzernk a zaiatok mena existujceho sboru: :edit FIL 7. Stla . Vim dokon meno (ak je jedinen). POZNMKA: Dokonovanie funguje pre vea prkazov. Vyskaj stlaenie CTRL-D a . pecilne je to uiton pre prkaz :help. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 7 ZHRNUTIE 1. Nap :help alebo stla alebo pre otvorenie okna npovedy. 2. Nap :help prkaz pre vyhadanie npovedy ku prkazu prkaz. 3. Nap CTRL-W CTRL-W na preskoenie do inho okna. 4. Nap :q pre zatvorenie okna npovedy 5. Vytvor tartovac skript vimrc pre udranie uprednostovanch nastaven. 6. Poas psania prkazu : stla CTRL-D pre zobrazenie dokonen. Stla pre pouitie jednho z dokonen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Toto vymedzuje vuku Vimu. Toto je uren pre strucn prehad o editore Vim, plne postaujce pre ahk a obstojn pouvanie tohto editora. Tto vuka je aleko od kompletnosti, pretoe Vim m omnoho viacej prkazov. Ako alie si pretaj uvatsk manul: ":help user-manual". Pre alie tanie a tdium je odporan kniha: Vim - Vi Improved - od Steve Oualline Vydavate: New Riders Prv kniha uren pre Vim. pecilne vhodn pre zaiatonkov. Obsahuje mnostvo prkladov a obrzkov. Pozri na http://iccf-holland.org/click5.html Tto kniha je staria a je viac o Vi ako o Vim, ale je tie odporan: Learning the Vi Editor - od Linda Lamb Vydavate: O'Reilly & Associates Inc. Je to dobr kniha pre zskanie vedomost o prci s editorom Vi. ieste vydanie obsahuje tie informcie o editore Vim. Tto vuka bola napsan autormi Michael C. Pierce a Robert K. Ware, Colorado School of Mines s pouitm mylienok dodanmi od Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Modifikovan pre Vim od Bram Moolenaar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Preklad do Sloveniny: ubo elko e-mail: celbos@inmail.sk Last Change: 2006 Apr 18 encoding: cp1250 PK!nPyBLdLdvim80/tutor/tutor.cs.cp1250nu[=============================================================================== = V t e j t e v t u t o r i a l u V I M - Verze 1.5 = =============================================================================== Vim je velmi vkonn editor, kter m pli mnoho pkaz na to, aby mohly bt vechny vysvtlen ve vuce jako tato. Tato vuka obsahuje dostaten mnostv pkaz na to, aby bylo mon pouvat Vim jako vceelov editor. Piblin as potebn ke zvldnut tto vuky je 25-30 minut, zle na tom, kolik asu strvte pezkuovnm. Pkazy v lekcch upravuj text. Vytvo kopii tohoto souboru pro procviovn (pi startu "vimtutor" je ji toto kopie). Je dleit pamatovat, e tato vuka je vytvoena pro vuku pouvnm. To znamen, e je poteba si pkazy vyzkouet pro jejich sprvn nauen. Pokud si jen te text, pkazy zapomene! Nyn se pesvdte, e Caps-Lock NEN stlaen a nkolikrt stisknte klvesu j aby se kurzor posunul natolik, e lekce 1.1 zapln celou obrazovku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 1.1: POHYB KURZORU ** Pro pohyb kurzoru pouvej klvesy h,j,k,l jak je znzornno ne. ** ^ k Funkce: Klvesa h je vlevo a vykon pohyb vlevo. < h l > Klvesa l je vpravo a vykon pohyb vpravo. j Klvesa j vypad na ipku dolu. v 1. Pohybuj kurzorem po obrazovce dokud si na to nezvykne. 2. Dr klvesu pro pohyb dolu (j), dokud se jej funkce nezopakuje. ---> Te v jak se pesunout na nsledujc lekci. 3. Pouitm klvesy dolu pejdi na lekci 1.2. Poznmka: Pokud si nkdy nejsi jist nm, co jsi napsal, stla pro pechod do Normlnho mdu. Pot pepi poadovan pkaz. Poznmka: Kurzorov klvesy tak funguj, avak pouvn hjkl je rychlej jakmile si na nj zvykne. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 1.2: SPUTN A UKONEN VIM !! POZNMKA: Ped vykonnm tchto krok si peti celou lekci!! 1. Stla (pro ujitn, e se nachz v Normlnm mdu). 2. Napi: :q! . ---> Tmto ukon editor BEZ uloen zmn, kter si vykonal. Pokud chce uloit zmny a ukonit editor napi: :wq 3. A se dostane na pkazov dek, napi pkaz, kterm se dostane zpt do tto vuky. To me bt: vimtutor Bn se pouv: vim tutor ---> 'vim' znamen sputn editoru, 'tutor' je soubor k editaci. 4. Pokud si tyto kroky spolehliv pamatuje, vykonej kroky 1 a 3, m ukon a znovu spust editor. Potom pesu kurzor dolu na lekci 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 1.3: PRAVA TEXTU - MAZN ** Stisknutm klvesy x v Normlnm mdu smae znak na mst kurzoru. ** 1. Pesu kurzor ne na dek oznaen --->. 2. K odstrann chyb pejdi kurzorem na znak, kter chce smazat. 3. Stla klvesu x k odstrann nechtnch znak. 4. Opakuj kroky 2 a 4 dokud nen vta sprvn. ---> Krva skoilla pess mssc. 5. Pokud je vta sprvn, pejdi na lekci 1.4. POZNMKA: Nesna se pouze zapamatovat pedvdn pkazy, u se je pouvnm. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 1.4: PRAVA TEXTU - VKLDN ** Stlaen klvesy i v Normlnm mdu umouje vkldn textu. ** 1. Pesu kurzor na prvn dek oznaen --->. 2. Pro upraven prvnho dku do podoby dku druhho, pesu kurzor na prvn znak za msto, kde m bt text vloen. 3. Stla i a napi potebn dodatek. 4. Po opraven kad chyby stla pro nvrat do Normlnho mdu. Opakuj kroky 2 a 4 dokud nen vta sprvn. ---> Njak txt na tto . ---> Njak text chyb na tto dce. 5. Pokud ji ovld vkldn textu, pejdi na nsledujc shrnut. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUT LEKCE 1 1. Kurzorem se pohybuje pomoc ipek nebo klvesami hjkl. h (vlevo) j (dolu) k (nahoru) l (vpravo) 2. Pro sputn Vimu (z pkazovho dku) napi: vim SOUBOR 3. Pro ukonen Vimu napi: :q! bez uloen zmn. anebo: :wq pro uloen zmn. 4. Pro smazn znaku pod kurzorem napi v Normlnm mdu: x 5. Pro vkldn textu od msta kurzoru napi v Normlnm mdu: i vkldan text POZNMKA: Stlaen t pemst do Normlnho mdu nebo zru nechtn a sten dokonen pkaz. Nyn pokrauj Lekc 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.1: PKAZY MAZN ** Pkaz dw smae znaky do konce slova. ** 1. Stla k ubezpeen, e jsi v Normlnm mdu. 2. Pesu kurzor ne na dek oznaen --->. 3. Pesu kurzor na zatek slova, kter je poteba smazat. 4. Napi dw , aby slovo zmizelo. POZNMKA: Psmena dw se zobraz na poslednm dku obrazovky jakmile je nape. Kdy nape nco patn, stla a zani znova. ---> Jsou tu njak slova zbava, kter nepat list do tto vty. 5. Opakuj kroky 3 a 4 dokud nen vta sprvn a pejdi na lekci 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.2: VCE PKAZ MAZN ** Napsn pkazu d$ smae ve a do konce dky. ** 1. Stla k ubezpeen, e jsi v Normlnm mdu. 2. Pesu kurzor ne na dek oznaen --->. 3. Pesu kurzor na konec sprvn vty (ZA prvn teku). 4. Napi d$ ,aby jsi smazal znaky a do konce dku. ---> Nkdo napsal konec tto vty dvakrt. konec tto vty dvakrt. 5. Pejdi na lekci 2.3 pro pochopen toho, co se stalo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.3: ROZIOVAC PKAZY A OBJEKTY Formt mazacho pkazu d je nsledujc: [slo] d objekt NEBO d [slo] objekt Kde: slo - udv kolikrt se pkaz vykon (voliteln, vchoz=1). d - je pkaz mazn. objekt - udv na em se pkaz vykonv (vypsan ne). Krtk vpis objekt: w - od kurzoru do konce slova, vetn mezer. e - od kurzoru do konce slova, BEZ mezer. $ - od kurzoru do konce dku. POZNMKA: Stlaenm klvesy objektu v Normlnm mdu se kurzor pesune na msto upesnn ve vpisu objekt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.4: VJIMKA Z 'PKAZ-OBJEKT' ** Napsnm dd smae cel dek. ** Vzhledem k astosti mazn celho dku se autoi Vimu rozhodli, e bude jednodu napsat prost dv d k smazn celho dku. 1. Pesu kurzor na druh dek spodnho textu. 2. Napi dd pro smazn dku. 3. Pejdi na tvrt dek. 4. Napi 2dd (vzpome si slo-pkaz-objekt) pro smazn dvou dk. 1) Re jsou erven, 2) Blto je zbavn, 3) Fialky jsou modr, 4) Mm auto, 5) Hodinky ukazuj as, 6) Cukr je sladk, 7) A to jsi i ty. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 2.5: PKAZ UNDO ** Stla u pro vrcen poslednho pkazu, U pro celou dku. ** 1. Pesu kurzor ne na dek oznaen ---> a pemsti ho na prvn chybu. 2. Napi x pro smazn prvnho nechtnho znaku. 3. Te napi u m vrt zpt posledn vykonan pkaz. 4. Nyn oprav vechny chyby na dku pomoc pkazu x . 5. Napi velk U m vrt dek do pvodnho stavu. 6. Te napi u nkolikrt, m vrt zpt pkaz U . 7. Stla CTRL-R (klvesu CTRL dr stlaenou a stiskni R) nkolikrt, m vrt zpt pedtm vrcen pkazy (redo). ---> Opprav chybby nna toomto dku a nahra je pommoc undo. 8. Toto jsou velmi uiten pkazy. Nyn pejdi na souhrn Lekce 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUT LEKCE 2 1. Pro smazn znak od kurzoru do konce slova napi: dw 2. Pro smazn znak od kurzoru do konce dku napi: d$ 3. Pro smazn celho dku napi: dd 4. Formt pkazu v Normlnm mdu je: [slo] pkaz objekt NEBO pkaz [slo] objekt kde: slo - udv poet opakovn pkazu pkaz - udv co je teba vykonat, napklad d mae objekt - udv rozsah pkazu, napklad w (slovo), $ (do konce dku), atd. 5. Pro vrcen pedel innosti, napi: u (mal u) Pro vrcen vech prav na dku napi: U (velk U) Pro vrcen vrcench prav (redo) napi: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 3.1: PKAZ VLOIT ** Pka p vlo posledn vymazan text za kurzor. ** 1. Pesu kurzor ne na posledn dek textu. 2. Napi dd pro smazn dku a jeho uloen do bufferu. 3. Pesu kurzor V݊E tam, kam smazan dek pat. 4. V Normlnm mdu napi p pro optn vloen dku. 5. Opakuj kroky 2 a 4 dokud dky nebudou ve sprvnm poad. d) Tak se doke vzdlvat? b) Fialky jsou modr, c) Inteligence se u, a) Re jsou erven, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 3.2: PKAZ NAHRAZEN ** Napsnm r a znaku se nahrad znak pod kurzorem. ** 1. Pesu kurzor ne na prvn dek oznaen --->. 2. Pesu kurzor na zatek prvn chyby. 3. Napi r a potom znak, kter nahrad chybu. 4. Opakuj kroky 2 a 3 dokud nen prvn dka sprvn. ---> Kdi byl pzn tento deg, nkdu stlail paqn klvesy! ---> Kdy byl psn tento dek, nkdo stlal patn klvesy! 5. Nyn pejdi na Lekci 3.2. POZNMKA: Zapamatuj si, e by ses ml uit pouvnm, ne zapamatovnm. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 3.3: PKAZ PRAVY ** Pokud chce zmnit st nebo cel slovo, napi cw . ** 1. Pesu kurzor ne na prvn dek oznaen --->. 2. Umsti kurzor na psmeno i v slov iok. 3. Napi cw a oprav slovo (v tomto ppad napi 'dek'.) 4. Stla a pejdi na dal chybu (prvn znak, kter teba zmnit.) 5. Opakuj kroky 3 a 4 dokud nen prvn vta stejn jako ta druh. ---> Tento iok m nkolik skic, kter psadoinsa zmnit pasdgf pkazu. ---> Tento dek m nkolik slov, kter potebuj zmnit pomoc pkazu. Vimni si, e cw nejen nahrazuje slovo, ale tak pemst do vkldn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 3.4: VCE ZMN POUITM c ** Pkaz pro pravu se dru se stejnmi objekty jako ten pro mazn. ** 1. Pkaz pro pravu pracuje stejn jako pro mazn. Formt je: [slo] c objekt NEBO c [slo] objekt 2. Objekty jsou tak shodn, jako nap.: w (slovo), $ (konec dku), atd. 3. Pejdi ne na prvn dek oznaen --->. 4. Pesu kurzor na prvn rozdl. 5. Napi c$ pro upraven zbytku dku podle toho druhho a stla . ---> Konec tohoto dku potebuje pomoc, aby byl jako ten druh. ---> Konec tohoto dku potebuje opravit pouitm pkazu c$ . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUT LEKCE 3 1. Pro vloen textu, kter byl smazn, napi p . To vlo smazan text ZA kurzor (pokud byl dek smazan, pejde na dek pod kurzorem). 2. Pro nahrazen znaku pod kurzorem, napi r a potom znak, kterm chce pvodn znak nahradit. 3. Pkaz na upravovn umouje zmnit specifikovan objekt od kurzoru do konce objektu. Napklad: Napi cw ,m zmn text od pozice kurzoru do konce slova, c$ zmn text do konce dku. 4. Formt pro nahrazovn je: [slo] c objekt NEBO c [slo] objekt Nyn pejdi na nsledujc lekci. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 4.1: POZICE A STATUS SOUBORU ** Stla CTRL-g pro zobrazen sv pozice v souboru a statusu souboru. Stla SHIFT-G pro pechod na dek v souboru. ** Poznmka: Peti si celou lekci ne zane vykonvat kroky!! 1. Dr klvesu Ctrl stlaenou a stiskni g . Vespod obrazovky se zobraz stavov dek s nzvem souboru a dkou na kter se nachz. Zapamatuj si slo dku pro krok 3. 2. Stla shift-G pro pesun na konec souboru. 3. Napi slo dku na kterm si se nachzel a stla shift-G. To t vrt na dek, na kterm jsi dve stiskl Ctrl-g. (Kdy pe sla, tak se NEZOBRAZUJ na obrazovce.) 4. Pokud se ct schopn vykonat tyto kroky, vykonej je. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 4.2: PKAZ VYHLEDVN ** Napi / nsledovan etzcem pro vyhledn onoho etzce. ** 1. Stiskni / v Normlnm mdu. Vimni si, e tento znak se spolu s kurzorem zobraz v doln sti obrazovky jako pkaz : . 2. Nyn napi 'chhybba' . To je slovo, kter chce vyhledat. 3. Pro vyhledn dalho vsledku stejnho etzce, jednodue stla n . Pro vyhledn dalho vsledku stejnho etzce opanm smrem, stiskni Shift-N. 4. Pokud chce vyhledat etzec v opanm smru, pouij pkaz ? msto pkazu / . ---> "chhybba" nen zpsob, jak hlskovat chyba; chhybba je chyba. Poznmka: Kdy vyhledvn doshne konce souboru, bude pokraovat na jeho zatku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 4.3: VYHLEDVN PROV ZVORKY ** Napi % pro nalezen prov ),], nebo } . ** 1. Pemsti kurzor na kteroukoli (, [, nebo { v dku oznaenm --->. 2. Nyn napi znak % . 3. Kurzor se pemst na odpovdajc zvorku. 4. Stla % pro pesun kurzoru zpt na otvrajc zvorku. ---> Toto ( je testovac dek ('s, ['s ] a {'s } v nm. )) Poznmka: Toto je velmi uiten p ladn programu s chybjcmi uzavracmi zvorkami. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 4.4: ZPSOB JAK ZMNIT CHYBY ** Napi :s/star/nov/g pro nahrazen slova 'nov' za 'star'. ** 1. Pesu kurzor na dek oznaen --->. 2. Napi :s/dobr/dobr . Vimni si, e tento pkaz zmn pouze prvn vskyt v dku. 3. Nyn napi :s/dobr/dobr/g co znamen celkov nahrazen v dku. Toto nahrad vechny vskyty v dku. ---> dobr suroviny a dobr nin jsou zkladem dobr kuchyn. 4. Pro zmnu vech vskyt etzce mezi dvma dky, Napi :#,#s/star/nov/g kde #,# jsou sla onch dek. Napi :%s/star/nov/g pro zmnu vech vskyt v celm souboru. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUT LEKCE 4 1. Ctrl-g vype tvou pozici v souboru a status souboru. Shift-G t pemst na konec souboru. slo nsledovan Shift-G t pesune na dan slo dku. 2. Napsn / nsledovan etzcem vyhled etzec smrem DOPEDU. Napsn ? nsledovan etzcem vyhled etzec smrem DOZADU. Napsn n po vyhledvn najde nsledujc vskyt etzce ve stejnm smru, Shift-N ve smru opanm. 3. Stisknut % kdy je kurzor na (,),[,],{, nebo } najde odpovdajc provou zvorku. 4. Pro nahrazen novho za prvn star v dku napi :s/star/nov Pro nahrazen novho za vechny star v dku napi :s/star/nov/g Pro nahrazen etzc mezi dvmi dkami # napi :#,#s/star/nov/g Pro nahrazen vech vskyt v souboru napi :%s/star/nov/g Pro potvrzen kadho nahrazen pidej 'c' :%s/star/nov/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 5.1: JAK VYKONAT VNJ PKAZ ** Napi :! nsledovan vnjm pkazem pro sputn pkazu. ** 1. Napi obvykl pkaz : , kter umst kurzor na spodek obrazovky To umon napsat pkaz. 2. Nyn stiskni ! (vykink). To umon vykonat jakkoliv vnj pkaz z pkazovho dku. 3. Napklad napi ls za ! a stiskni . Tento pkaz zobraz obsah tvho adrese jako v pkazovm dku. Vyzkouej :!dir pokud ls nefunguje. Poznmka: Takto je mon vykonat jakkoliv pkaz. Poznmka: Vechny pkazy : mus bt dokonen stisknutm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 5.2: VCE O UKLDN SOUBOR ** Pro uloen zmn v souboru napi :w SOUBOR. ** 1. Napi :!dir nebo :!ls pro vpis aktulnho adrese. U v, e za tmto mus stisknout . 2. Vyber si nzev souboru, kter jet neexistuje, napklad TEST. 3. Nyn napi: :w TEST (kde TEST je vybran nzev souboru.) 4. To ulo cel soubor (Vuka Vimu) pod nzvem TEST. Pro oven napi znovu :!dir , m zobraz obsah adrese. Poznmka: Jakmile ukon Vim a znovu ho spust s nzvem souboru TEST, soubor bude pesn kopie vuky, kdy si ji ukldal. 5. Nyn odstra soubor napsnm (MS-DOS): :!del TEST nebo (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 5.3: VBROV PKAZ ULOEN ** Pro uloen sti souboru napi :#,# w SOUBOR ** 1. Jet jednou napi :!dir nebo :!ls pro vpis aktulnho adrese a vyber vhodn nzev souboru jako nap. TEST. 2. Pesu kurzor na vrch tto strnky a stiskni Ctrl-g pro zobrazen sla dku. ZAPAMATUJ SI TOTO SLO! 3. Nyn se pesu na spodek tto strnky a opt stiskni Ctrl-g. ZAPAMATUJ SI I SLO TOHOTO DKU! 4. Pro uloen POUZE sti souboru, napi :#,# w TEST kde #,# jsou sla dvou zapamatovanch dk (vrch, spodek) a TEST je nzev souboru. 5. Znova se ujisti, e tam ten soubor je pomoc :!dir ale NEODSTRAUJ ho. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 5.4: SLUOVN SOUBOR ** K vloen obsahu souboru napi :r NZEV_SOUBORU ** 1. Napi :!dir pro ujitn, e soubor TEST stle existuje. 2. Pesu kurzor na vrch tto strnky. POZNMKA: Po vykonn kroku 3 uvid lekci 5.3. Potom se opt pesu dol na tuto lekci. 3. Nyn vlo soubor TEST pouitm pkazu :r TEST kde TEST je nzev souboru. POZNMKA: Soubor, kter vkld se vlo od msta, kde se nachz kurzor. 4. Pro potvrzen vloen souboru, pesu kurzor zpt a vimni si, e te m dv kopie lekce 5.3, originl a souborovou verzi. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRNUT LEKCE 5 1. :!pkaz vykon vnj pkaz. Nkter uiten pklady jsou: (MS-DOS) (Unix) :!dir :!ls - zobraz obsah souboru. :!del SOUBOR :!rm SOUBOR - odstran SOUBOR. 2. :w SOUBOR ulo aktuln text jako SOUBOR na disk. 3. :#,#w SOUBOR ulo dky od # do # do SOUBORU. 4. :r SOUBOR vybere z disku SOUBOR a vlo ho do editovanho souboru za pozici kurzoru. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 6.1: PKAZ OTEVT ** Napi o pro vloen dku pod kurzor a pepnut do Vkldacho mdu. ** 1. Pemsti kurzor ne na dek oznaen --->. 2. Napi o (mal) pro vloen dku POD kurzor a pepnut do Vkldacho mdu. 3. Nyn zkopruj dek oznaen ---> a stiskni pro ukonen Vkldacho mdu. ---> Po stisknut o se kurzor pemst na vloen dek do Vkldacho mdu. 4. Pro oteven dku NAD kurzorem jednodue napi velk O , msto malho o. Vyzkouej si to na nsledujcm dku. Vlo dek nad tmto napsnm Shift-O po umstn kurzoru na tento dek. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 6.2: PKAZ PIDAT ** Stiskni a pro vloen textu ZA kurzor. ** 1. Pesu kurzor na ne na konec dky oznaen ---> stisknutm $ v Normlnm mdu. 2. Stiskni a (mal) pro pidn textu ZA znak, kter je pod kurzorem. (Velk A pid na konec dku.) Poznmka: Tmto se vyhne stisknut i , poslednho znaku, textu na vloen, , kurzor doprava, a nakonec x na pidvn na konec dku! 3. Nyn dokon prvn dek. Vimni si, e pidvn je vlastn stejn jako Vkldac md, krom msta, kam se text vkld. ---> Tento dek ti umouje nacviit ---> Tento dek ti umouje nacviit pidvn textu na konec dky. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 6.3: JIN ZPSOB NAHRAZOVN ** Napi velk R pro nahrazen vc ne jednoho znaku. ** 1. Pesu kurzor na prvn dek oznaen --->. 2. Umsti kurzor na zatek prvnho slova, kter je odlin od druhho dku oznaenho ---> (slovo 'posledn'). 3. Nyn stiskni R a nahra zbytek textu na prvnm dku pepsnm starho textu tak, aby byl prvn dek stejn jako ten druh. ---> Pro upraven prvnho dku do tvaru toho posledn na stran pouij kl. ---> Pro upraven prvnho dku do tvaru toho druhho, napi R a nov text. 4. Vimni si, e jakmile stiskne vechen nezmnn text zstv. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekce 6.4: NASTAVEN MONOST ** Nastav monost, e vyhledvn anebo nahrazovn nedb velikosti psmen ** 1. Vyhledej etzec 'ignore' napsnm: /ignore Zopakuj nkolikrt stisknut klvesy n. 2. Nastav monost 'ic' (Ignore case) napsnm pkazu: :set ic 3. Nyn znovu vyhledej 'ignore' stisknutm: n Nkolikrt hledn zopakuj stisknutm klvesy n. 4. Nastav monosti 'hlsearch' a 'incsearch': :set hls is 5. Nyn znovu vykonej vyhledvac pkaz a sleduj, co se stane: /ignore 6. Pro vypnut zvrazovn vsledk napi: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHRHNUT LEKCE 6 1. Stisknut o oteve nov dek POD kurzorem a umst kurzor na vloen dek do Vkldacho mdu. Napsn velkho O oteve dek NAD dkem, na kterm je kurzor. 2. Stiskni a pro vloen textu ZA znak na pozici kurzoru. Napsn velkho A automaticky pid text na konec dku. 3. Stisknut velkho R pepne do Nahrazovacho mdu, dokud nestiskne pro jeho ukonen. 4. Napsn ":set xxx" nastav monosti "xxx". ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCE 7: PKAZY ON-LINE NPOVDY ** Pouvej on-line systm npovdy ** Vim m obshl on-line systm npovdy. Pro zatek vyzkouej jeden z nsledujcch: - stiskni klvesu (pokud ji m) - stiskni klvesu (pokud ji m) - napi :help Napi :q pro uzaven okna npovdy. Me najt npovdu k jakmukoliv tmatu pidnm argumentu k pkazu ":help". Zkus tyto (nezapome stisknout ): :help w :help c_ l je s desne strane i pomera kursor u desno. j j izgleda kao strelica nanie. v 1. Pomerajte kursor po ekranu dok se ne naviknete na komande. 2. Pritisnite taster (j) dok ne pone da se ponavlja. Sada znate kako da doete do naredne lekcije. 3. Koristei taster j preite na lekciju 1.2. NAPOMENA: Ako niste sigurni ta ste zapravo pritisnuli, pritisnite za prelazak u Normal mod i pokuajte ponovo. NAPOMENA: Strelice takoe pomeraju kursor, ali korienje tastera hjkl je znatno bre, kad se jednom naviknete na njih. Zaista! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.2: IZLAZAK IZ VIM-a !! UPOZORENJE: Pre izvoenja bilo kog koraka, proitajte celu lekciju!! 1. Pritisnite (editor je sada u Normal modu). 2. Otkucajte: :q! . Ovime se izlazi iz editora, sa GUBITKOM svih izmena. 3. Kada se pojavi komandni prompt, unesite komandu koja je pokrenula ovaj prirunik: vimtutor 4. Ako ste upamtili ove korake, izvrite ih redom od 1 do 3 da biste izali iz editora i ponovo ga pokrenuli. NAPOMENA: :q! ponitava sve izmene koje ste napravili. U narednim lekcijama nauiete kako da sauvate izmene. 5. Pomerite kursor na lekciju 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.3: IZMENA TEKSTA - BRISANJE ** Pritisnite x za brisanje znaka pod kursorom. ** 1. Pomerite kursor na red oznaen sa --->. 2. Da biste ispravili greke, pomerajte kursor dok se ne nae na slovu koje treba izbrisati. 3. Pritisnite taster x da izbriete neeljeno slovo. 4. Ponavljajte korake od 2 do 4 dok ne ispravite sve greke. ---> RRRibaa riibi grizzze rrreepp. 5. Kad ispravite red, preite na lekciju 1.4. NAPOMENA: Dok koristite prirunik, nemojte uiti komande napamet, ve vebajte njihovu primenu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.4: IZMENA TEKSTA - UBACIVANJE ** Pritisnite i za ubacivanje teksta ispred kursora. ** 1. Pomerite kursor na prvi sledei red oznaen sa --->. 2. Da biste tekst prvog reda izjednaili s tekstom drugog, namestite kursor na prvi znak POSLE kog ete ubaciti potreban tekst. 3. Pritisnite i pa unesite potrebne dopune. 4. Po ispravci svake greke pritisnite da se vratite u Normal mod. Ponovite korake od 2 do 4 da biste ispravili celu reenicu. ---> Do teka neoje v red. ---> Deo teksta nedostaje iz ovog reda. 5. Preite na sledeu lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.5: IZMENA TEKSTA - DODAVANJE ** Pritisnite A za dodavanje teksta. ** 1. Pomerite kursor na prvi sledei red oznaen sa --->. Nije vano gde se nalazi kursor u tom redu. 2. Pritisnite A i unesite dodatni tekst. 3. Poto ste dodali tekst, pritisnite za povratak u Normal mod. 4. Pomerite kursor na drugi red oznaen sa ---> i ponavljajte korake 2 i 3 dok ne ispravite tekst. ---> Deo teksta nedostaje u Deo teksta nedostaje u ovom redu. ---> Deo teksta nedostaje Deo teksta nedostaje i ovde. 5. Preite na lekciju 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.6: IZMENA FAJLA ** Upotrebite :wq za snimanje teksta i izlazak iz editora. ** !! UPOZORENJE: Pre izvoenja bilo kog koraka, proitajte celu lekciju!! 1. Izaite iz editora kao u lekciji 1.2: :q! 2. Na komandnom promptu unesite sledeu komandu: vim tutor 'vim' je komanda za pokretanja Vim editora, 'tutor' je ime fajla koji elite da menjate. Koristite fajl koji imate pravo da menjate. 3. Ubacujte i briite tekst kao u prethodnim lekcijama. 4. Snimite izmenjeni tekst i izaite iz Vim-a: :wq 5. Ponovo pokrenite vimtutor i proitajte rezime koji sledi. 6. Poto proitate korake iznad i u potpunosti ih razumete: izvrite ih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 1 1. Kursor se pomera strelicama ili pomou tastera hjkl . h (levo) j (dole) k (gore) l (desno) 2. Za pokretanje Vim-a iz shell-a: vim IME_FAJLA 3. Izlaz: :q! sve promene su izgubljene. ILI: :wq promene su sauvane. 4. Brisanje znaka na kome se nalazi kursor: x 5. Ubacivanja ili dodavanje teksta: i unesite tekst unos ispred kursora A unesite tekst dodavanje na kraju reda NAPOMENA: Pritiskom na prebacujete Vim u Normal mod i prekidate neeljenu ili delimino izvrenu komandu. Nastavite sa lekcijom 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.1: NAREDBE BRISANJA ** Otkucajte dw za brisanje rei. ** 1. Pritisnite da biste bili sigurni da ste u Normal modu. 2. Pomerite kursor na red oznaen sa --->. 3. Pomerite kursor na poetak rei koju treba izbrisati. 4. Otkucajte dw da biste uklonili re. NAPOMENA: Slovo d e se pojaviti na dnu ekrana kad ga otkucate. Vim eka da otkucate w . Ako je prikazano neko drugo slovo, pogreili ste u kucanju; pritisnite i pokuajte ponovo. (Ako se ne pojavi nita, moda je iskljuena opcija 'showcmd': vidi lekciju 6.5.) ---> Neke rei smeno ne pripadaju na papir ovoj reenici. 5. Ponavljajte korake 3 i 4 dok ne ispravite reenicu, pa preite na lekciju 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.2: JO BRISANJA ** Otkucajte d$ za brisanje znakova do kraja reda. ** 1. Pritisnite da biste bili sigurni da ste u Normal modu. 2. Pomerite kursor na red oznaen sa --->. 3. Pomerite kursor do kraja ispravnog dela reenice (POSLE prve . ). 4. Otkucajte d$ za brisanje ostatka reda. ---> Neko je uneo kraj ovog reda dvaput. kraj ovog reda dvaput. 5. Preite na lekciju 2.3 za podrobnije objanjenje. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.3: O OPERATORIMA I POKRETIMA Mnoge komande za izmenu teksta sastoje se od operatora i pokreta. Oblik komande brisanja sa d operatorom je sledei: d pokret Pri emu je: d - operator brisanja. pokret - ono na emu e se operacija izvravati (opisano u nastavku). Kratak spisak pokreta: w - sve do poetka sledee rei, NE UKLJUUJUI prvo slovo. e - sve do kraja tekue rei, UKLJUUJUI poslednje slovo. $ - sve do kraje reda, UKLJUUJUI poslednje slovo. Kucanjem de brisae se tekst od kursora do kraja rei. NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez operatora, kursor se pomera kao to je opisano. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.4: KORIENJE BROJANJA ZA POKRETE ** Unoenjem nekog broja pre pokreta, pokret se izvrava taj broj puta. ** 1. Pomerite kursor na red oznaen sa --->. 2. Otkucajte 2w da pomerite kursor dve rei napred. 3. Otkucajte 3e da pomerite kursor na kraj tree rei napred. 4. Otkucajte 0 (nulu) da pomerite kursor na poetak reda. 5. Ponovite korake 2 i 3 s nekim drugim brojevima. ---> Reenica sa reima po kojoj moete pomerati kursor. 6. Preite na lekciju 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.5: KORIENJE BROJANJA ZA VEE BRISANJE ** Unoenje nekog broja s operatorom ponavlja operator taj broj puta. ** U kombinaciji operatora brisanja s pokretima spomenutim iznad moete uneti broj pre pokreta da biste izbrisali vie znakova: d broj pokret 1. Pomerite kursor na prvo slovo u rei s VELIKIM SLOVIMA u redu oznaenom sa --->. 2. Otkucajte d2w da izbriete dve rei sa VELIKIM SLOVIMA 3. Ponovite korake 1 i 2 sa razliitim brojevima da izbriete uzastopne rei sa VELIKIM SLOVIMA korienjem samo jedne komande. ---> ovaj ABC DE red FGHI JK LMN OP s reima je RS TUVZ ispravljen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.6: OPERACIJE NAD REDOVIMA ** Otkucajte dd za brisanje celog reda. ** Zbog uestalosti brisanja celih redova, autori Vi-ja odluili su da je lake brisati redove ako se otkuca d dvaput. 1. Pomerite kursor na drugi red u donjoj strofi. 2. Otkucajte dd da ga izbriete. 3. Pomerite kursor na etvrti red. 4. Otkucajte 2dd da biste izbrisali dva reda. ---> 1) Sedlo mi je od marame, ---> 2) blato na sve strane, ---> 3) uzda od kanapa, ---> 4) auto mi je ovde, ---> 5) satovi pokazuju vreme, ---> 6) a bi mi je od oina ---> 7) prebijena tapa. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.7: PONITAVANJE PROMENA ** Pritisnite u za ponitavanje poslednje komande, U za ceo red. ** 1. Pomerite kursor na red oznaen sa ---> i postavite ga na mesto prve greke. 2. Otkucajte x da izbriete prvi neeljeni znak. 3. Otkucajte u da ponitite poslednju izvrenu komandu. 4. Sad ispravite sve greke u redu koristei komandu x . 5. Otkucajte veliko U da biste vratili sadraj reda u prvobitno stanje. 6. Onda otkucajte u nekoliko puta da biste ponitili U i prethodne komande. 7. Sad otkucajte CTRL-R (drei CTRL dok pritiskate R) nekoliko puta da biste vratili izmene (ponitili ponitavanja). ---> Iiisspravite greke uu ovvom redu ii poonititeee ih. 8. Ovo su veoma korisne komande. Preite na rezime lekcije 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 2 1. Brisanje od kursora do sledee rei: dw 2. Brisanje od kursora do kraja reda: d$ 3. Brisanje celog reda: dd 4. Za ponavljanje pokreta prethodno unesite broj: 2w 5. Oblik komande za izmenu: operator [broj] pokret gde je: operator - ta uraditi, recimo d za brisanje [broj] - neobavezan broj ponavljanja pokreta pokret - kretanje po tekstu na kome se radi, kao to je: w (re), $ (kraj reda), itd. 6. Pomeranje kursora na poetak reda: 0 7. Za ponitavanje prethodnih izmena, pritisnite: u (malo u) Za ponitavanje svih promena u redu, pritisnite: U (veliko U) Za vraanja promena, otkucajte: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.1: KOMANDA POSTAVLJANJA ** Otkucajte p da postavite prethodno izbrisan tekst iza kursora. ** 1. Pomerite kursor na prvi sledei red oznaen sa --->. 2. Otkucajte dd da izbriete red i smestite ga u Vim registar. 3. Pomerite kursor na red c), IZNAD mesta gde treba postaviti izbrisan red. 4. Otkucajte p da postavite red ispod kursora. 5. Ponavljajte korake 2 do 4 da biste postavili sve linije u pravilnom redosledu. ---> d) prebijena tapa. ---> b) uzda od kanapa, ---> c) a bi mi je od oina ---> a) Sedlo mi je od marame, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.2: KOMANDA ZAMENE ** Otkucajte rx da zamenite znak ispod kursora slovom x . ** 1. Pomerite kursor na prvi sledei red oznaen sa --->. 2. Pomerite kursor tako da se nalazi na prvoj greci. 3. Otkucajte r i onda znak koji treba da tu stoji. 4. Ponavljajte korake 2 i 3 sve dok prvi red ne bude isti kao drugi. ---> Kedi ju ovej red ugaen, nako je protresao pustane testere! ---> Kada je ovaj red unoen, neko je pritiskao pogrene tastere! 5. Preite na lekciju 3.2. NAPOMENA: Setite se da treba da uite vebanjem, ne pamenjem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.3: OPERATOR IZMENE ** Za izmenu teksta do kraja rei, otkucajte ce .** 1. Pomerite kursor na prvi sledei red oznaen sa --->. 2. Postavite kursor na a u rakdur. 3. Otkucajte ce i ispravite re (u ovom sluaju otkucajte ed ). 4. Pritisnite i pomerite kursor na sledei znak koji treba ispraviti. 5. Ponavljajte korake 3 i 4 sve dok prva reenica ne bude ista kao druga. ---> Ovaj rakdur ima nekoliko rejga koje treflja isprpikati operagrom izmene. ---> Ovaj red ima nekoliko rei koje treba ispraviti operatorom izmene. Uoite da ce brie re i postavlja editor u Insert mod. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.4: DALJE IZMENE UPOTREBOM c ** Komanda izmene se koristi sa istim pokretima kao i brisanje. ** 1. Operator izmene se koristi na isti nain kao i operator brisanja: c [broj] pokret 2. Pokreti su isti, recimo: w (re) i $ (kraj reda). 3. Pomerite kursor na prvi sledei red oznaen sa --->. 4. Pomerite kursor na prvu greku. 5. Otkucajte c$ i unesite ostatak reda tako da bude isti kao drugi red, pa pritisnite . ---> Kraj ovog reda treba izmeniti tako da izgleda kao red ispod. ---> Kraj ovog reda treba ispraviti korienjem c$ komande. NAPOMENA: Za ispravljanje greaka moete koristiti Backspace . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 3 1. Za postavljanje teksta koji ste upravo izbrisali, pritisnite p . Ovo postavlja tekst IZA kursora (ako je bio izbrisan jedan ili vie redova sadraj e doi na red ispod kursora). 2. Za zamenu znaka na kome se nalazi kursor, pritisnite r i onda eljeni znak. 3. Operator izmene dozvoljava promenu teksta od kursora do pozicije gde se zavrava pokret. Primera radi, kucajte ce za izmenu od kursora do kraja rei, ili c$ za izmenu od kursora do kraja reda. 4. Oblik operacije izmene je: c [broj] pokret Preite na narednu lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.1: POZICIJA KURSORA I STATUS FAJLA ** Pritisnite CTRL-G za prikaz pozicije kursora u tekstu i status fajla. Pritisnite G za pomeranje kursora na neki red u tekstu. ** NAPOMENA: Proitajte celu lekciju pre izvoenja bilo kog koraka!! 1. Drite taster CTRL i pritisnite g . Ovo zovemo CTRL-G. Editor e na dnu ekrana ispisati poruku sa imenom fajla i pozicijom kursora u tekstu. Zapamtite broj reda za 3. korak. NAPOMENA: U donjem desnom uglu moe se videti poziciju kursora ako je ukljuena opcija 'ruler' (vidi :help ruler ili lekciju 6.5.) 2. Pritisnite G za pomeranje kursora na kraj teksta. Pritisnite 1G ili gg za pomranje kursora na poetak teksta. 3. Otkucajte broj reda na kome ste malopre bili i onda G . Kursor e se vratiti na red na kome je bio kad ste otkucali CTRL-G. 4. Ako ste spremni, izvrite korake od 1 do 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.2: KOMANDE PRETRAIVANJA ** Otkucajte / i onda izraz koji elite da potraite. ** 1. U Normal modu otkucajte znak / . Primietite da se znak pojavio zajedno sa kursorom na dnu ekrana kao i kod komande : . 2. Sada otkucajte 'grrreka' . (Bez razmaka i navodnika.) To je re koju traite. 3. Za ponovno traenje istog izraza, otkucajte n . Za traenje istog izraza u suprotnom smeru, otkucajte N . 4. Za traenje izraza unatrag, koristite ? umesto / . 5. Za povratak na prethodnu poziciju otkucajte CTRL-O (drite CTRL dok pritiskate O ). Ponavljajte za ranije pozicije. CTRL-I ide napred. ---> "grrreka" je pogreno; umesto grrreka treba da stoji greka. NAPOMENA: Ako pretraga doe do kraja teksta traenje e se nastaviti od njegovog poetka osim ako je opcija 'wrapscan' iskljuena. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.3: TRAENJE PARA ZAGRADE ** Otkucajte % za nalaenje para ), ] ili } . ** 1. Postavite kursor na bilo koju od ( , [ ili { otvorenih zagrada u redu oznaenom sa --->. 2. Otkucajte znak % . 3. Kursor e se pomeriti na odgovarajuu zatvorenu zagradu. 4. Otkucajte % da pomerite kursor na prvu zagradu u paru. 5. Pomerite kursor na neku od (,),[,],{ ili } i ponovite komandu % . ---> Red ( testiranja obinih ( [ uglastih ] i { vitiastih } zagrada.)) NAPOMENA: Vrlo korisno u ispravljanju koda sa rasparenim zagradama! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.4: KOMANDA ZAMENE ** Otkucajte :s/staro/novo/g da zamenite 'staro' za 'novo'. ** 1. Pomerite kursor na red oznaen sa --->. 2. Otkucajte :s/rdi/ri/ . Primetite da ova komanda zamenjuje samo prvo "rdi" u redu. 3. Otkucajte :s/rdi/ri/g . Dodavanje opcije g znai da e se komanda izvriti u celom redu, zamenom svih pojava niza "rdi". ---> rdiba rdibi grdize rep. 4. Za zamenu svih izraza izmeu neka dva reda, otkucajte :#,#s/staro/novo/g gde su #,# krajnji brojevi redova u opsegu u kome e se obaviti zamena. Otkucajte :%s/staro/novo/g za zamenu svih izraza u celom tekstu. Otkucajte :%s/staro/novo/gc za nalaenje svih izraza u tekstu i potvrdu zamene. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 4 1. CTRL-G prikazuje poziciju kursora u tekstu i status fajla. G pomera kursor na kraj teksta. broj G pomera kursor na navedeni red. gg pomera kursor na prvi red teksta. 2. Kucanjem / sa izrazom taj izraz se trai UNAPRED. Kucanjem ? sa izrazom taj izraz se trai UNAZAD. Posle komande traenja koristite n za nalaenje izraza u istom smeru, a N za nalaenje u suprotnom smeru. CTRL-O vraa kursor na prethodnu poziciju, a CTRL-I na narednu. 3. Kucanjem % kad je kursor na zagradi on se pomera na njen par. 4. Za zamenu prvog izraza staro za izraz novo :s/staro/novo/ Za zamenu svih izraza u celom redu :s/staro/novo/g Za zamenu svih izraza u opsegu linija #,# :#,#s/staro/novo/g Za zamenu u celom tekstu :%s/staro/novo/g Za potvrdu svake zamene dodajte 'c' :%s/staro/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.1: IZVRAVANJE SPOLJANJIH KOMANDI ** Otkucajte :! pa spoljanju komandu koju elite da izvrite. ** 1. Otkucajte poznatu komandu : da biste namestili kursor na dno ekrana. Time omoguavate unos komande u komandnoj liniji editora. 2. Otkucajte znak ! (uzvinik). Ovime omoguavate izvravanje bilo koje spoljanje komande. 3. Kao primer otkucajte ls posle ! i pritisnite . Ovo e prikazati sadraj direktorijuma, kao da ste na komandnom promptu. Otkucajte :!dir ako :!ls ne radi. NAPOMENA: Na ovaj nain mogue je izvriti bilo koju spoljanju komandu, zajedno sa njenim argumentima. NAPOMENA: Sve : komande se izvravaju poto pritisnete . U daljem tekstu to neemo uvek napominjati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.2: VIE O SNIMANJU FAJLOVA ** Za snimanje promena, otkucajte :w IME_FAJLA . ** 1. Otkucajte :!dir ili :!ls za pregled sadraja direktorijuma. Ve znate da morate pritisnuti posle toga. 2. Izaberite ime fajla koji jo ne postoji, npr. TEST. 3. Otkucajte: :w TEST (gde je TEST ime koje ste izabrali.) 4. Time ete snimiti ceo fajl (Vim Tutor) pod imenom TEST. Za proveru, otkucajte opet :!dir ili :!ls za pregled sadraja direktorijuma. NAPOMENA: Ako biste napustili Vim i ponovo ga pokrenuli sa vim TEST , tekst bi bio tana kopija ovog fajla u trenutku kad ste ga snimili. 5. Izbriite fajl tako to ete otkucati (MS-DOS): :!del TEST ili (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.3: SNIMANJE OZNAENOG TEKSTA ** Da biste snimili deo teksta, otkucajte v pokret :w IME_FAJLA ** 1. Pomerite kursor na ovu liniju. 2. Pritisnite v i pomerite kursor pet redova ispod. Primetite da je tekst oznaen inverzno. 3. Pritisnite : . Na dnu ekrana pojavie se :'<,'> . 4. Otkucajte w TEST , gde je TEST ime fajla koji jo ne postoji. Proverite da zaista pie :'<,'>w TEST pre nego to pritisnete . 5. Vim e snimiti oznaeni tekst u TEST. Proverite sa :!dir ili !ls . Nemojte jo brisati fajl! Koristiemo ga u narednoj lekciji. NAPOMENA: Komanda v zapoinje vizuelno oznaavanje. Moete pomerati kursor i tako menjati veliinu oznaenog teksta. Onda moete upotrebiti operatore nad tekstom. Na primer, d e izbrisati oznaeni tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.4: UITAVANJE FAJLA U TEKST ** Za ubacivanje sadraja fajla, otkucajte :r IME_FAJLA ** 1. Postavite kursor iznad ove linije. NAPOMENA: Poto izvrite 2. korak videete tekst iz lekcije 5.3. Tada pomerite kursor DOLE da biste ponovo videli ovu lekciju. 2. Uitajte fajl TEST koristei komandu :r TEST gde je TEST ime fajla koje ste koristili u prethodnoj lekciji. Sadraj uitanog fajla je ubaen ispod kursora. 3. Da biste proverili da je fajl uitan, vratite kursor unazad i primetite dve kopije lekcije 5.3, originalnu i onu iz fajla. NAPOMENA: Takoe moete uitati izlaz spoljanje komande. Na primer, :r !ls e uitati izlaz komande ls i postaviti ga ispod kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 5 1. :!komanda izvrava spoljanju komandu. Korisni primeri: (MS-DOS) (Unix) :!dir :!ls - pregled sadraja direktorijuma. :!del FAJL :!rm FAJL - brie fajl FAJL. 2. :w FAJL zapisuje trenutni tekst na disk pod imenom FAJL. 3. v pokret :w IME_FAJLA snima vizuelno oznaene redove u fajl IME_FAJLA. 4. :r IME_FAJLA uitava fajl IME_FAJLA sa diska i stavlja njegov sadraj ispod kursora. 5. :r !dir uitava izlaz komande dir i postavlja ga ispod kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.1: KOMANDA OTVORI ** Pritisnite o da biste otvorili red ispod kursora i preli u Insert mod. ** 1. Pomerite kursor na sledei red oznaen sa --->. 2. Otkucajte malo o da biste otvorili novi red ISPOD kursora i preli u Insert mod. 3. Otkucajte neki tekst i onda pritisnite da biste izali iz Insert moda. ---> Kad pritisnete o kursor prelazi u novootvoreni red u Insert modu. 4. Za otvaranje reda IZNAD kursora, umesto malog otkucajte veliko O . Isprobajte na donjem redu oznaenom sa --->. ---> Otvorite red iznad ovog kucanjem velikog O dok je kursor u ovom redu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.2: KOMANDA DODAJ ** Otkucajte a za dodavanje teksta IZA kursora. ** 1. Pomerite kursor na poetak sledeeg reda oznaenog sa --->. 2. Kucajte e dok kursor ne doe na kraj rei re . 3. Otkucajte a (malo) da biste dodali tekst IZA kursora. 4. Dopunite re kao to je u redu ispod. Pritisnite za izlazak iz Insert moda. 5. Sa e preite na narednu nepotpunu re i ponovite korake 3 i 4. ---> Ovaj re omoguava ve dodav teksta u nekom redu. ---> Ovaj red omoguava vebanje dodavanja teksta u nekom redu. NAPOMENA: Komande a, i, i A aktiviraju isti Insert mod, jedina razlika je u poziciji od koje e se tekst ubacivati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.3: DRUGI NAIN ZAMENE ** Otkucajte veliko R da biste zamenili vie od jednog znaka. ** 1. Pomerite kursor na prvi sledei red oznaen sa --->. Pomerite kursor na poetak prvog xxx . 2. Pritisnite R i otkucajte broj koji je red ispod, tako da zameni xxx . 3. Pritisnite za izlazak iz Replace moda. Primetite da je ostatak reda ostao nepromenjen. 4. Ponovite korake da biste zamenili drugo xxx. ---> Dodavanje 123 na xxx daje xxx. ---> Dodavanje 123 na 456 daje 579. NAPOMENA: Replace mod je kao Insert mod, s tom razlikom to svaki uneti znak brie ve postojei. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.4: KOPIRANJE I LEPLJENJE TEKSTA ** Koristite operator y za kopiranje a p za lepljenje teksta. ** 1. Pomerite kursor na red sa ---> i postavite kursor posle "a)". 2. Aktivirajte Visual mod sa v i pomerite kursor sve do ispred "prvi". 3. Pritisnite y da biste kopirali oznaeni tekst u interni bafer. 4. Pomerite kursor do kraja sledeeg reda: j$ 5. Pritisnite p da biste zalepili tekst. Onda otkucajte: a drugi . 6. Upotrebite Visual mod da oznaite " red.", kopirajte sa y , kursor pomerite na kraj sledeeg reda sa j$ i tamo zalepite tekst sa p . ---> a) ovo je prvi red. b) NAPOMENA: takoe moete koristiti y kao operator; yw kopira jednu re. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.5: POSTAVLJANJE OPCIJA ** Postavite opciju tako da traenje i zamena ignoriu veliinu slova ** 1. Potraite re 'razlika': /razlika Ponovite nekoliko puta pritiskom na n . 2. Aktivirajte opciju 'ic' (Ignore case): :set ic 3. Ponovo potraite re 'razlika' pritiskom na n Primetite da su sada pronaeni i RAZLIKA i Razlika. 4. Aktivirajte opcije 'hlsearch' i 'incsearch': :set hls is 5. Ponovo otkucajte komandu traenja i uoite razlike: /razlika 6. Za deaktiviranje opcije ic kucajte: :set noic NAPOMENA: Za neoznaavanje pronaenih izraza otkucajte: :nohlsearch NAPOMENA: Ako elite da ne razlikujete veliinu slova u samo jednoj komandi traenja, dodajte \c u izraz: /razlika\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 6 1. Pritisnite o za otvaranje reda ISPOD kursora i prelazak u Insert mod. Pritisnite O za otvaranje reda IZNAD kursora. 2. Pritisnite a za unos teksta IZA kursora. Pritisnite A za unos teksta na kraju reda. 3. Komanda e pomera kursor na kraj rei. 4. Operator y kopira tekst, p ga lepi. 5. Kucanje velikog R aktivira Replace mod dok ne pritisnete . 6. Kucanje ":set xxx" aktivira opciju "xxx". Neke opcije su: 'ic' 'ignorecase' ne razlikuje velika/mala slova pri traenju 'is' 'incsearch' prikazuje pronaen tekst dok kucate izraz 'hls' 'hlsearch' oznaava inverzno sve pronaene izraze Moete koristite dugo ili kratko ime opcije. 7. Ispred imena opcije stavite "no" da je deaktivirate: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.1: DOBIJANJE POMOI ** Koristite on-line sistem za pomo ** Vim ima detaljan on-line sistem za pomo. Za poetak, pokuajte neto od sledeeg: - pritisnite taster (ako ga imate na tastaturi) - pritisnite taster (ako ga imate na tastaturi) - otkucajte :help Proitajte tekst u prozoru pomoi da biste nauili pomo radi. Kucanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi. Otkucajte :q da zatvorite prozor pomoi. Pomo o praktino bilo kojoj temi moete dobiti dodavanjem argumenta komandi ":help". Pokuajte ovo (ne zaboravite na kraju): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.2: PRAVLJENJE STARTNOG SKRIPTA ** Aktivirajte mogunosti editora ** Vim ima mnogo vie mogunosti nego Vi, ali veina nije automatski aktivirana. Za dodatne mogunosti napravite "vimrc" fajl. 1. Otvorite "vimrc" fajl. Ovo zavisi od vaeg sistema: :e ~/.vimrc za Unix :e $VIM/_vimrc za MS-Windows 2. Onda uitajte primer sadraja "vimrc" fajla: :r $VIMRUNTIME/vimrc_example.vim 3. Snimite fajl sa: :w Sledei put kada pokrenete Vim, bojenje sintakse teksta bie aktivirano. Sva svoja podeavanja moete dodati u "vimrc" fajl. Za vie informacija otkucajte :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.3: AUTOMATSKO DOVRAVANJE ** Dovravanje komandne linije sa CTRL-D i ** 1. Podesite Vim da ne bude u Vi-kompatibilnom modu: :set nocp 2. Pogledajte koji fajlovi postoje u direktorijumu: :!ls ili :!dir 3. Otkucajte poetak komande: :e 4. Otkucajte CTRL-D i Vim e prikazati spisak komandi koje poinju sa "e". 5. Pritisnite i Vim e dopuniti ime komande u ":edit". 6. Dodajte razmak i poetak imena postojeeg fajla: :edit FA 7. Pritisnite . Vim e dopuniti ime fajla (ako je jedinstveno). NAPOMENA: Mogue je dopuniti mnoge komande. Samo probajte CTRL-D i . Naroito je korisno za :help komande. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 7 1. Otkucajte :help ili pritisnite ili za pomo. 2. Otkucajte :help komanda biste dobili pomo za tu komandu. 3. Otkucajte CTRL-W CTRL-W za prelazak u drugi prozor. 4. Otkucajte :q da zatvorite prozor pomoi. 5. Napravite vimrc startni skript za aktiviranje podeavanja koja vam odgovaraju. 6. Dok kucate neku od : komandi, pritisnite CTRL-D da biste videli mogue vrednosti. Pritisnite da odaberete jednu od njih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ovim je prirunik zavren. Njegov cilj je bio kratak pregled Vim editora, koliko da omogui njegovo relativno jednostavno korienje. Prirunik nije potpun, jer Vim ima mnogo vie komandi. Kao sledee, proitajte prirunik: ":help user-manual". Za dalje itanje i uenje, preporuujemo knjigu: Vim - Vi Improved - by Steve Oualline Izdava: New Riders Prva knjiga potpuno posveena Vim-u. Naroito korisna za poetnike. Ima mnotvo primera i slika. Vidite http://iccf-holland.org/click5.html Sledea knjiga je starija i vie govori o Vi-u nego o Vim-u, ali je takoe preporuujemo: Learning the Vi Editor - by Linda Lamb Izdava: O'Reilly & Associates Inc. Dobra knjiga iz koje moete saznati skoro sve to moete raditi u Vi-ju. esto izdanje ima i informacija o Vim-u. Ovaj prirunik su napisali: Michael C. Pierce i Robert K. Ware, Colorado School of Mines koristei ideje Charlesa Smitha, Colorado State University. E-mail: bware@mines.colorado.edu. Prilagoavanje za Vim uradio je Bram Moolenaar. Prevod na srpski: Ivan Nejgebauer Verzija 1.0, maj/juni 2014. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!5aavim80/tutor/tutor.no.utf-8nu[=============================================================================== = V e l k o m m e n t i l i n n f ø r i n g e n i V i m -- Ver. 1.7 = =============================================================================== Vim er en meget kraftig editor med mange kommandoer, alt for mange til å kunne gå gjennom alle i en innføring som denne. Den er beregnet på å sette deg inn i bruken av nok kommandoer så du vil være i stand til lett å kunne bruke Vim som en editor til alle formål. Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30 minutter, avhengig av hvor mye tid du bruker til eksperimentering. MERK: Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er dette allerede en kopi). Det er viktig å huske at denne innføringen er beregnet på læring gjennom bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig. Hvis du bare leser teksten, vil du glemme kommandoene! Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for å flytte markøren helt til leksjon 1.1 fyller skjermen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.1: FLYTTING AV MARKØREN ** For å flytte markøren, trykk tastene h, j, k, l som vist. ** ^ k Tips: h-tasten er til venstre og flytter til venstre. < h l > l-tasten er til høyre og flytter til høyre. j j-tasten ser ut som en pil som peker nedover. v 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene. 2. Hold inne nedovertasten (j) til den repeterer. Nå vet du hvordan du beveger deg til neste leksjon. 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. Merk: Hvis du blir usikker på noe du har skrevet, trykk for å gå til normalmodus. Skriv deretter kommandoen du ønsket på nytt. Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til å bevege markøren mye raskere når du er blitt vant til det. Helt sant! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.2: AVSLUTTE VIM !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! 1. Trykk -tasten (for å forsikre deg om at du er i normalmodus). 2. Skriv: :q! . Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. 3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne innføringen. Den er: vimtutor 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å avslutte og starte editoren på nytt. MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen få leksjoner vil du lære hvordan du lagrer forandringene til en fil. 5. Flytt markøren ned til leksjon 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.3: REDIGERING AV TEKST -- SLETTING ** Trykk x for å slette tegnet under markøren. ** 1. Flytt markøren til den første linjen merket med --->. 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som skal slettes. 3. Trykk tasten x for å slette det uønskede tegnet. 4. Repeter punkt 2 til 4 til setningen er lik den som er under. ---> Hessstennnn brrråsnudddde ii gaaata. ---> Hesten bråsnudde i gata. 5. Nå som linjen er korrekt, gå til leksjon 1.4. MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men bruk dem helt til de sitter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING ** Trykk i for å sette inn tekst. ** 1. Flytt markøren til den første linjen som er merket med --->. 2. For å gjøre den første linjen lik den andre, flytt markøren til den står på tegnet ETTER posisjonen der teksten skal settes inn. 3. Trykk i og skriv inn teksten som mangler. 4. Etterhvert som hver feil er fikset, trykk for å returnere til normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. ---> Det er tkst som mnglr . ---> Det er ganske mye tekst som mangler her. 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen nedenfor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL ** Trykk A for å legge til tekst. ** 1. Flytt markøren til den første linjen nedenfor merket --->. Det har ikke noe å si hvor markøren er plassert på den linjen. 2. Trykk A og skriv inn det som skal legges til. 3. Når teksten er lagt til, trykk for å returnere til normalmodusen. 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og 3 for å reparere denne setningen. ---> Det mangler noe tekst p Det mangler noe tekst på denne linjen. ---> Det mangler også litt tek Det mangler også litt tekst på denne linjen. 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.6: REDIGERE EN FIL ** Bruk :wq for å lagre en fil og avslutte. ** !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! 2. Skriv denne kommandoen på kommandolinja: vim tutor «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila som du vil redigere. Bruk en fil som kan forandres. 3. Sett inn og slett tekst som du lærte i de foregående leksjonene. 4. Lagre filen med forandringene og avslutt Vim med: :wq 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger. 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 1 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. h (venstre) j (ned) k (opp) l (høyre) 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN 3. For å avslutte Vim, skriv: :q! for å forkaste endringer. ELLER skriv: :wq for å lagre forandringene. 4. For å slette tegnet under markøren, trykk: x 5. For å sette inn eller legge til tekst, trykk: i skriv innsatt tekst sett inn før markøren A skriv tillagt tekst legg til på slutten av linjen MERK: Når du trykker går du til normalmodus eller du avbryter en uønsket og delvis fullført kommando. Nå kan du gå videre til leksjon 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.1: SLETTEKOMMANDOER ** Trykk dw for å slette et ord. ** 1. Trykk for å være sikker på at du er i normalmodus. 2. Flytt markøren til den første linjen nedenfor merket --->. 3. Flytt markøren til begynnelsen av ordet som skal slettes. 4. Trykk dw og ordet vil forsvinne. MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet tegn enn d har du skrevet noe feil; trykk og start på nytt. ---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen. ---> Det er tre ord som ikke hører hjemme i denne setningen. 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå deretter til leksjon 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.2: FLERE SLETTEKOMMANDOER ** Trykk d$ for å slette til slutten av linjen. ** 1. Trykk for å være sikker på at du er i normalmodus. 2. Flytt markøren til linjen nedenfor merket --->. 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum). 4. Trykk d$ for å slette alt til slutten av linjen. ---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. 5. Gå til leksjon 2.3 for å forstå hva som skjer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.3: OM OPERATORER OG BEVEGELSER Mange kommandoer som forandrer teksten er laget ut i fra en operator og en bevegelse. Formatet for en slettekommando med sletteoperatoren d er: d bevegelse Der: d - er sletteoperatoren. bevegelse - er hva operatoren vil opere på (listet nedenfor). En kort liste med bevegelser: w - til starten av det neste ordet, UNNTATT det første tegnet. e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet. $ - til slutten av linjen, INKLUDERT det siste tegnet. Ved å skrive de vil altså alt fra markøren til slutten av ordet bli slettet. MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil markøren flyttes som spesifisert. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** 1. Flytt markøren til starten av linjen markert ---> nedenfor. 2. Skriv 2w for å flytte markøren to ord framover. 3. Skriv 3e for å flytte markøren framover til slutten av det tredje ordet. 4. Skriv 0 (null) for å flytte til starten av linjen. 5. Repeter steg 2 og 3 med forskjellige tall. ---> Dette er en linje med noen ord som du kan bevege deg rundt på. 6. Gå videre til leksjon 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER ** Et tall sammen med en operator repeterer den så mange ganger. ** I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du inn antall før bevegelsen for å slette mer: d nummer bevegelse 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert med --->. 2. Skriv 2dw for å slette de to ordene med store bokstaver. 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende ordene som har store bokstaver. ---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar. MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å bruke bevegelsen uten en operator. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.6: OPERERE PÅ LINJER ** Trykk dd for å slette en hel linje. ** På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at det vil være lettere å rett og slett trykke to d-er for å slette en linje. 1. Flytt markøren til den andre linjen i verset nedenfor. 2. Trykk dd å slette linjen. 3. Flytt deretter til den fjerde linjen. 4. Trykk 2dd for å slette to linjer. ---> 1) Roser er røde, ---> 2) Gjørme er gøy, ---> 3) Fioler er blå, ---> 4) Jeg har en bil, ---> 5) Klokker viser tiden, ---> 6) Druer er søte ---> 7) Og du er likeså. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.7: ANGRE-KOMMANDOEN ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den første feilen. 2. Trykk x for å slette det første uønskede tegnet. 3. Trykk så u for å angre den siste utførte kommandoen. 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x . 5. Trykk nå en stor U for å sette linjen tilbake til det den var originalt. 6. Trykk u noen ganger for å angre U og foregående kommandoer. 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen ganger for å gjenopprette kommandoene (omgjøre angrekommandoene). ---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av leksjon 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 2 1. For å slette fra markøren fram til det neste ordet, trykk: dw 2. For å slette fra markøren til slutten av en linje, trykk: d$ 3. For å slette en hel linje, trykk: dd 4. For å repetere en bevegelse, sett et nummer foran: 2w 5. Formatet for en forandringskommando er: operator [nummer] bevegelse der: operator - hva som skal gjøres, f.eks. d for å slette [nummer] - et valgfritt antall for å repetere bevegelsen bevegelse - hva kommandoen skal operere på, eksempelvis w (ord), $ (til slutten av linjen) og så videre. 6. For å gå til starten av en linje, bruk en null: 0 7. For å angre tidligere endringer, skriv: u (liten u) For å angre alle forandringer på en linje, skriv: U (stor U) For å omgjøre angringen, trykk: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.1: «LIM INN»-KOMMANDOEN ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** 1. Flytt markøren til den første linjen med ---> nedenfor. 2. Trykk dd for å slette linjen og lagre den i et Vim-register. 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn. 4. Trykk p for å legge linjen under markøren. 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge. ---> d) Kan du også lære? ---> b) Fioler er blå, ---> c) Intelligens må læres, ---> a) Roser er røde, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.2: «ERSTATT»-KOMMANDOEN ** Trykk rx for å erstatte tegnet under markøren med x. ** 1. Flytt markøren til den første linjen nedenfor merket --->. 2. Flytt markøren så den står oppå den første feilen. 3. Trykk r og deretter tegnet som skal være der. 4. Repeter punkt 2 og 3 til den første linjen er lik den andre. ---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! ---> Da denne linjen ble skrevet, var det noen som trykket feile taster! 5. Gå videre til leksjon 3.2. MERK: Husk at du bør lære ved å BRUKE, ikke pugge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.3: «FORANDRE»-OPERATOREN ** For å forandre til slutten av et ord, trykk ce . ** 1. Flytt markøren til den første linjen nedenfor som er merket --->. 2. Plasser markøren på u i «lubjwr». 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»). 4. Trykk og gå til det neste tegnet som skal forandres. 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre. ---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen. ---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen. Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er: c [nummer] bevegelse 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en linje). 3. Gå til den første linjen nedenfor som er merket --->. 4. Flytt markøren til den første feilen. 5. Skriv c$ og skriv resten av linjen lik den andre og trykk . ---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste. ---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen. MERK: Du kan bruke slettetasten for å rette feil mens du skriver. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 3 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet vil den bli limt inn på linjen under markøren). 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som du vil ha der. 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten av ordet, c$ for å forandre til slutten av linjen. 4. Formatet for «forandre» er: c [nummer] bevegelse Nå kan du gå til neste leksjon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. Trykk G for å gå til en spesifikk linje i filen. ** Merk: Les hele leksjonen før du utfører noen av punktene! 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i filen. Husk linjenummeret for bruk i steg 3. Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette skjer når «ruler»-valget er satt (forklart i leksjon 6). 2. Trykk G for å gå til bunnen av filen. Skriv gg for å gå til begynnelsen av filen. 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg tilbake til linjen du var på da du først trykket CTRL-G. 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.2: SØKEKOMMANDOEN ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og markøren kommer til syne på bunnen av skjermen i likhet med «:»-kommandoene. 2. Skriv «feeeiil» og trykk . Dette er teksten du vil lete etter. 3. For å finne neste forekomst av søkestrengen, trykk n . For å lete etter samme søketeksten i motsatt retning, trykk N . 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / . 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I går framover. ---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil. Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt hvis «wrapscan»-valget er resatt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.3: FINN SAMSVARENDE PARENTESER ** Trykk % for å finne en samsvarende ), ] eller } . ** 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->. 2. Trykk % . 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen. 4. Trykk % for å flytte markøren til den andre samsvarende parentesen. 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør. ---> Dette ( er en testlinje med (, [ ] og { } i den )). Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert antall parenteser! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.4: ERSTATT-KOMMANDOEN ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** 1. Flytt markøren til linjen nedenfor som er merket med --->. 2. Skriv :s/deen/den/ . Legg merke til at denne kommandoen bare forandrer den første forekomsten av «deen» på linjen. 3. Skriv :s/deen/den/g . Når g-flagget legges til, betyr dette global erstatning på linjen og erstatter alle forekomster av «deen» på linjen. ---> deen som kan kaste deen tyngste steinen lengst er deen beste 4. For å erstatte alle forekomster av en tekststreng mellom to linjer, skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for linjeområdet erstatningen skal gjøres. Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen. Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og deretter spørre om teksten skal erstattes eller ikke. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 4 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. G går til slutten av filen. nummer G går til det linjenummeret. gg går til den første linjen. 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten. Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten. Etter et søk kan du trykke n for å finne neste forekomst i den samme retningen eller N for å lete i motsatt retning. CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den som samsvarer. 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g Erstatte alle forekomster i en fil: :%s/gammel/ny/g For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av skjermen. Dette lar deg skrive en kommandolinjekommando. 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst ekstern kommando. 3. Som et eksempel, skriv ls etter utropstegnet og trykk . Du vil nå få en liste over filene i katalogen, akkurat som om du hadde kjørt kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis «ls» ikke virker. MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med parametere. MERK: Alle «:»-kommandoer må avsluttes med . Fra dette punktet er det ikke alltid vi nevner det. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.2: MER OM LAGRING AV FILER ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du vet allerede at du må trykke etter dette. 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST . 3. Skriv :w TEST (der TEST er filnavnet du velger). 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av katalogen. Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST», ville filen vært en eksakt kopi av innføringen da du lagret den. 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende operativsystem, eller :!del TEST hvis du bruker MS-DOS. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** 1. Flytt markøren til denne linjen. 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke til at teksten blir markert. 3. Trykk : (kolon). På bunnen av skjermen vil :'<,'> komme til syne. 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller at du ser :'<,'>w TEST før du trykker Enter. 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller :!ls for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for å gjøre det valgte området større eller mindre. Deretter kan du bruke en operator for å gjøre noe med teksten. For eksempel sletter d teksten. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** 1. Plasser markøren like over denne linjen. MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter NED for å se denne leksjonen igjen. 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av leksjon 5.3, originalen og denne versjonen. MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls leser utdataene av ls-kommandoen og legger dem nedenfor markøren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 5 1. :!kommando utfører en ekstern kommandio. Noen nyttige eksempler er: (MS-DOS) (Unix) :!dir :!ls - List filene i katalogen. :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN . 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen FILNAVN. 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren. 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor markørposisjonen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til innsettingsmodus ** 1. Flytt markøren til linjen nedenfor merket --->. 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i innsettingsmodus. 3. Skriv litt tekst og trykk for å gå ut av innsettingsmodusen. ---> Etter at o er skrevet blir markøren plassert på den tomme linjen. 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O istedenfor en liten o . Prøv dette på linjen nedenfor. ---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.2: «LEGG TIL»-KOMMANDOEN ** Skriv a for å legge til tekst ETTER markøren. ** 1. Flytt markøren til starten av linjen merket ---> nedenfor. 2. Trykk e til markøren er på slutten av «li». 3. Trykk a (liten a) for å legge til tekst ETTER markøren. 4. Fullfør ordet sånn som på linjen nedenfor. Trykk for å gå ut av innsettingsmodusen. 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og 4. ---> Denne li lar deg øve på å leg til tek på en linje. ---> Denne linjen lar deg øve på å legge til tekst på en linje. Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste forskjellen er hvor tegnene blir satt inn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ ** Skriv en stor R for å erstatte mer enn ett tegn. ** 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren til begynnelsen av den første «xxx»-en. 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så det erstatter xxx. 3. Trykk for å gå ut av erstatningsmodusen. Legg merke til at resten av linjen forblir uforandret. 4. Repeter stegene for å erstatte den gjenværende xxx. ---> Ved å legge 123 til xxx får vi xxx. ---> Ved å legge 123 til 456 får vi 579. MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives erstatter et eksisterende tegn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.4: KOPIERE OG LIME INN TEKST ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)». 2. Gå inn i visuell modus med v og flytt markøren til like før «første». 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten. 4. Flytt markøren til slutten av den neste linjen: j$ 5. Trykk p for å lime inn teksten. Trykk deretter: a andre . 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til slutten av den neste linjen med j$ og legg inn teksten der med p . ---> a) Dette er det første valget. b) Merk: Du kan også bruke y som en operator; yw kopierer ett ord. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.5: SETT VALG ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** 1. Let etter «ignore» ved å skrive: /ignore Repeter flere ganger ved å trykke n . 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic 3. Søk etter «ignore» igjen ved å trykke n . Legg merke til at både «Ignore» og «IGNORE» blir funnet. 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk \c i uttrykket: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 6 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i innsettingsmodus. Trykk O for å åpne en linje OVER markøren. 2. Skriv a for å sette inn tekst ETTER markøren. Skriv A for å sette inn tekst etter slutten av linjen. 3. Kommandoen e går til slutten av et ord. 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn. 5. Ved å trykke R går du inn i erstatningsmodus helt til trykkes. 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er: «ic» «ignorecase» ignorer store/små bokstaver under søk «is» «incsearch» vis delvise treff for en søketekst «hls» «hlsearch» uthev alle søketreff 7. Legg til «no» foran valget for å slå det av: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 7.1: FÅ HJELP ** Bruk det innebygde hjelpesystemet. ** Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av disse måtene: - Trykk Hjelp-tasten (hvis du har en) - Trykk F1-tasten (hvis du har en) - Skriv :help Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker. Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet Skriv :q for å lukke hjelpevinduet. Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til «:help»-kommandoen. Prøv disse (ikke glem å trykke ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 7.2: LAG ET OPPSTARTSSKRIPT ** Slå på funksjoner i Vim ** Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av som standard. For å begynne å bruke flere funksjoner må du lage en «vimrc»-fil. 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt: :e ~/.vimrc for Unix :e $VIM/_vimrc for MS Windows 2. Les inn eksempelfilen for «vimrc»: :r $VIMRUNTIME/vimrc_example.vim 3. Lagre filen med: :w Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til alle dine foretrukne oppsett i denne «vimrc»-filen. For mer informasjon, skriv :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 7.3: FULLFØRING ** Kommandolinjefullføring med CTRL-D og ** 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp 2. Se hvilke filer som er i katalogen: :!ls eller :!dir 3. Skriv starten på en kommando: :e 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med «e». 5. Trykk og Vim vil fullføre kommandonavnet til «:edit». 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL 7. Trykk . Vim vil fullføre navnet (hvis det er unikt). MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og . Det er spesielt nyttig for bruk sammen med :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 7 1. Skriv :help eller trykk eller for å åpne et hjelpevindu. 2. Skriv :help kommando for å få hjelp om kommando . 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu. 4. Trykk :q for å lukke hjelpevinduet. 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine. 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige fullføringer. Trykk for å bruke en fullføring. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Her slutter innføringen i Vim. Den var ment som en rask oversikt over editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen ved å skrive :help user-manual . For videre lesing og studier, kan denne boken anbefales: «Vim - Vi Improved» av Steve Oualline Utgiver: New Riders Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for nybegynnere. Inneholder mange eksempler og illustrasjoner. Se http://iccf-holland.org/click5.html Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også: «Learning the Vi Editor» av Linda Lamb Utgiver: O'Reilly & Associates Inc. Det er en god bok for å få vite omtrent hva som helst om Vi. Den sjette utgaven inneholder også informasjon om Vim. Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware, Colorado School of Mines med idéer av Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu . Modifisert for Vim av Bram Moolenaar. Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org Id: tutor.no 406 2007-03-18 22:48:36Z sunny ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim: set ts=8 : PK!-77vim80/tutor/README.el.txtnu[ Tutor "" Vim. . Vim. Tutor . "vim tutor" . , . Unix "vimtutor". tutor. . . Bob Ware, Colorado School of Mines, Golden, Co 80401, USA (303) 273-3987 bware@mines.colorado.edu bware@slate.mines.colorado.edu bware@mines.bitnet [ Vim Bram Moolenaar] PK!ёёvim80/tutor/tutor.nl.utf-8nu[ ========================================================================== = W e l k o m b i j d e V I M l e s s e n - Versie 1.7 = ========================================================================== Vim is een krachtige editor met veel commando's, te veel om uit te leggen in lessen zoals deze. Deze lessen zijn bedoeld om voldoende commando's te behandelen om je in staat te stellen met Vim te werken als een editor voor algemeen gebruik. Deze lessen zullen 25 tot 30 minuten in beslag nemen, afhankelijk van de tijd die wordt besteed aan het uitproberen van de commando's. LET OP: Door de commando's in deze lessen verandert de tekst. Maak een kopie van dit bestand om mee te oefenen (als je "vimtutor" uitvoerde, is dit al een kopie). Deze lessen zijn bedoeld om al doende te leren. Dat betekent dat je de commando's moet uitvoeren om ze goed te leren kennen. Als je de tekst alleen maar doorleest, zal je de commando's niet leren! Zorg ervoor dat de toets NIET is ingedrukt en druk vaak genoeg op de j-toets om de cursor zo te bewegen dat les 1.1 volledig op het scherm staat. LET OP: In deze lessen worden omwille van de duidelijkheid vaak spaties gebruikt binnen een commando (bv. "40 G" of "operator [getal] beweging"). Tik deze spaties echter NIET. Ze verstoren de werking. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 1.1: VERPLAATS DE CURSOR ** De cursor wordt verplaatst met de toetsen h, j, k, l zoals aangegeven. ** ^ k Hint: De h is de meest linkse en beweegt naar links. < h l > De l is de meest rechtse en beweegt naar rechts. j De j lijkt op een pijl naar beneden. v 1. Beweeg de cursor over het scherm om er vertrouwd mee te raken. 2. Druk de omlaag-toets (j) tot hij repeteert. Nu weet je hoe je de volgende les bereikt. 3. Gebruik de omlaag-toets om naar les 1.2 te gaan. OPMERKING: Als je twijfelt aan wat je tikte, druk om in de opdracht- modus te komen. Tik daarna het commando dat bedoeld wordt. OPMERKING: Pijltjes-toetsen werken ook. Met de hjkl-toetsen kan je sneller rondbewegen, als je er eenmaal aan gewend bent. Echt waar! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 1.2: VIM AFSLUITEN !! LET OP: Lees deze les goed door voordat je iets uitvoert!! 1. Druk de toets (om zeker in de opdrachtmodus te zitten). 2. Tik :q! Hiermee wordt de editor afgesloten. Alle veranderingen gaan VERLOREN. 3. Nu zie je de shell-prompt. Tik het commando waarmee je deze lessen hebt opgeroepen. Dat is normaal gesproken: vimtutor 4. Als je deze stappen goed hebt doorgelezen, voer dan de stappen 1 tot 3 uit om de editor te verlaten en weer op te starten. LET OP: :q! verwerpt alle veranderingen die je aanbracht. Een paar lessen verder zal je leren hoe veranderingen worden opgeslagen in een bestand. 5. Beweeg de cursor omlaag naar les 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 1.3: TEKST BEWERKEN - WISSEN ** Tik x om het teken onder de cursor te wissen. ** 1. Ga met de cursor naar de regel verderop met --->. 2. Zet de cursor op een teken dat moet worden gewist om een fout te herstellen. 3. Tik x om het ongewenste teken te wissen. 4. Herhaal deze stappen tot de regel goed is. ---> Vi kkent eenn opdracccchtmodus en een invooegmmmmodus. 5. Nu de regel gecorrigeerd is kan je naar les 1.4 gaan. LET OP: Probeer de lessen niet uit je hoofd te leren. Leer al doende. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 1.4: TEKST BEWERKEN - INVOEGEN ** Tik i ('insert') om tekst in te voegen. ** 1. Ga met de cursor naar de eerste regel verderop met --->. 2. Maak de eerste regel gelijk aan de tweede. Zet daarvoor de cursor op de plaats waar tekst moet worden ingevoegd. 3. Tik i en daarna de nodige aanvullingen. 4. Tik na elke herstelde fout om terug te keren in de opdrachtmodus. Herhaal de stappen 2 tot 4 om de zin te verbeteren. ---> Aan regel ontekt wat . ---> Aan deze regel ontbreekt wat tekst. 5. Ga naar les 1.5 als je gewend bent aan het invoegen van tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 1.5: TEKST BEWERKEN - TOEVOEGEN ** Tik A ('append') om tekst toe te voegen. ** 1. Ga met de cursor naar de eerste regel verderop met --->. Het maakt niet uit waar de cursor in deze regel staat. 2. Tik hoofdletter A en tik de nodige aanvullingen. 3. Tik nadat de tekst is aangevuld. Zo keer je terug in de opdrachtmodus. 4. Ga naar de tweede regel verderop met ---> en herhaal stap 2 en 3 om deze zin te corrigeren. ---> Er ontbreekt wat tekst aan de Er ontbreekt wat tekst aan deze regel. ---> Hier ontbreekt ook w Hier ontbreekt ook wat tekst. 5. Ga naar les 1.6 als je vertrouwd bent geraakt aan het toevoegen van tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 1.6: EEN BESTAND EDITTEN ** Gebruik :wq om een bestand op te slaan en de editor te verlaten. ** !! LET OP: Lees deze les helemaal door voordat je een van de volgende stappen uitvoert!! 1. Verlaat deze les zoals je in les 1.2 deed: :q! Of gebruik een andere terminal als je daar de beschikking over hebt. Doe daar het volgende. 2. Tik het volgende commando na de shell-prompt: vim les 'vim' (vaak ook 'vi') is het commando om de Vim-editor te starten, 'les' is de naam van het bestand, dat je gaat bewerken. Kies een andere naam als er al een bestand 'les' bestaat, dat niet veranderd mag worden. 3. Voeg naar eigen keus tekst toe, zoals je geleerd hebt in eerdere lessen. 4. Sla het bestand met de wijzigingen op en verlaat Vim met :wq 5. Herstart vimtutor als je deze bij stap 1 hebt verlaten en ga verder met de volgende samenvatting. 6. Voer deze stappen uit nadat je ze hebt gelezen en begrepen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 1 1. De cursor wordt bewogen met de pijltjestoetsen of de hjkl-toetsen. h (links) j (omlaag) k (omhoog) l (rechts) 2. Start Vim van de shell-prompt. Tik: vim BESTANDSNAAM 3. Sluit Vim af met :q! om de veranderingen weg te gooien. OF tik :wq om de veranderingen te bewaren. 4. Wis het teken onder de cursor met: x 5. Invoegen of toevoegen van tekst, tik: i en daarna de in te voegen tekst voeg in vanaf de cursor A en daarna de toe te voegen tekst voeg toe achter de regel OPMERKING: Met kom je terug in opdrachtmodus en wordt een ongewenst of gedeeltelijk uitgevoerd commando afgebroken. Ga nu verder met les 2.1. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.1: WIS-COMMANDO'S ** Tik dw ('delete word') om een woord te wissen. ** 1. Druk op om zeker in de opdrachtmodus te zijn. 2. Ga naar de regel hieronder, die met ---> begint. 3. Ga met de cursor naar het begin van een woord dat moet worden gewist. 4. Met het tikken van dw verdwijnt het woord. OPMERKING: De letter d verschijnt op de laatste regel van het scherm zodra je hem tikt. Vim is aan het wachten tot je de w tikt. Als je een ander teken dan d ziet, heb je iets verkeerds getikt. Druk op en begin opnieuw. NOG EEN OPMERKING: Dit werkt alleen als de optie 'showcmd' is ingeschakeld. Dat gebeurt met :set showcmd ---> Er zijn een het paar ggg woorden, die niet in deze len zin thuishoren. 5. Herhaal de stappen 3 en 4 tot de zin goed is en ga naar les 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.2: MEER WIS-COMMANDO'S ** Tik d$ om te wissen tot het einde van de regel. ** 1. Druk op om zeker in de opdrachtmodus te zijn. 2. Ga naar de regel hieronder, die met ---> begint. 3. Ga met de cursor naar het einde van de correcte regel (NA de eerste . ). 4. Tik d$ om te wissen tot het einde van de regel. ---> Iemand heeft het einde van deze regel dubbel getikt. dubbel getikt. 5. Ga naar les 2.3 voor uitleg. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.3: OVER OPERATOREN EN BEWEGINGEN Veel commando's die de tekst veranderen, bestaan uit een operator en een beweging. De samenstelling van een wis-commando met de operator d is: d beweging Daarbij is: d - de wis-operator beweging - het bereik waarop de operator werkt (zie het lijstje hieronder) Een korte lijst van bewegingen vanaf de cursor: w - tot het begin van het volgende woord, ZONDER het eerste teken daarvan. e - tot het einde van het huidige woord, INCLUSIEF het laatste teken. $ - tot het einde van de regel, INCLUSIEF het laatste teken. Het tikken van de wist tekst vanaf de cursor tot het eind van het woord. OPMERKING: Het intikken van alleen maar de beweging, zonder een operator, in de opdrachtmodus beweegt de cursor (respectievelijk naar het volgende woord, naar het eind van het huidige woord en naar het eind van de regel). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.4: GEBRUIK VAN EEN TELLER BIJ EEN BEWEGING ** Een getal voor een beweging herhaalt het zoveel keer. ** 1. Ga naar de regel hieronder, die met ---> begint. 2. Tik 2w zodat de cursor twee woorden vooruit gaat. 3. Tik 3e zodat de cursor naar het einde van het derde woord gaat. 4. Tik 0 (nul) om naar het begin van de regel te gaan. 5. Herhaal de stappen 2 en 3 met andere getallen. ---> Dit is een regel met woorden waarin je heen en weer kan bewegen. 6. Ga verder met les 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.5: GEBRUIK EEN TELLER OM MEER TE WISSEN ** Een getal met een operator zorgt dat deze zoveel keer wordt herhaald. ** Bij de combinatie van wis-operator en beweging kan je voor de beweging een teller zetten om meer te wissen: d [teller] beweging 1. Ga naar het eerste woord in HOOFDLETTERS in de regel na --->. 2. Met d2w worden twee woorden (in dit voorbeeld in hoofdletters) gewist. 3. Herhaal de stappen 1 en 2 met verschillende tellers om de verschillende woorden in hoofdletters met één commando te wissen. ---> deze ABC DE regel FGHI JK LMN OP is QZ RS ontdaan van rommel. OPMERKING: De teller kan ook aan het begin staan: d2w en 2dw werken allebei. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.6: BEWERKING VAN HELE REGELS ** Tik dd om een hele regel te wissen. ** Omdat het wissen van een hele regel vaak voorkomt, besloten de ontwerpers van Vi dat met het tikken van dd simpelweg een hele regel gewist wordt. 1. Ga met de cursor naar de tweede regel van de zinnetjes hieronder. 2. Tik dd om de regel te wissen. 3. Ga nu naar de vierde regel. 4. Tik 2dd om twee regels te wissen. ---> 1) Rozen zijn rood. ---> 2) Modder is leuk. ---> 3) Viooltjes zijn blauw. ---> 4) Ik heb een auto. ---> 5) De klok slaat de tijd. ---> 6) Suiker is zoet. ---> 7) En dat ben jij ook. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 2.7: HET COMMANDO HERSTEL ** u maakt het laatste commando ongedaan, U herstelt een hele regel. ** 1. Ga met de cursor naar de regel hieronder met ---> en zet hem op de eerste fout. 2. Tik x om het eerste ongewenste teken te wissen. 3. Tik nu u en maak daarmee het vorige commando ongedaan. 4. Herstel nu alle fouten in de regel met het x commando. 5. Tik een hoofdletter U om de regel in z'n oorspronkelijke staat terug te brengen. 6. Tik nu een paar keer u en herstel daarmee de U en eerdere commando's. 7. Tik nu een paar keer CTRL-R (Ctrl-toets ingedrukt houden en R tikken) en voer daarmee de commando's opnieuw uit: 'redo' oftewel 'undo de undo's'. ---> Heerstel de fouten inn deeze regel en brenng ze weer terugg met undo. 8. Dit zijn heel nuttige commando's. Ga verder met samenvatting van les 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 2 1. Wis van de cursor tot het volgende woord met dw 2. Wis van de cursor tot het eind van de regel met d$ 3. Wis de hele regel met dd 4. Herhaal een beweging door er een getal voor te zetten: 2w 5. De opbouw van een wijzigingscommando is: operator [getal] beweging daarbij is: operator - wat er moet gebeuren, bijvoorbeeld d om te wissen [getal] - een (niet-verplichte) teller om 'beweging' te herhalen beweging - een beweging door de te wijzigen tekst zoals w (woord) of $ (tot het einde van de regel) enz. 6. Ga naar het begin van de regel met nul: 0 7. Undo de voorgaande actie met u (kleine letter) Undo alle veranderingen in een regel met U (hoofdletter) Undo de undo's met CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 3.1: HET COMMANDO PLAK ** Tik p ('put') en plak daarmee zojuist gewiste tekst na te cursor. ** 1. Ga met de cursor naar de eerste regel met ---> hierna. 2. Wis de regel met dd en bewaar hem zodoende in een Vim-register. 3. Ga naar de c-regel, waar de gewiste regel ONDER moet komen. 4. Tik p om de regel terug te zetten onder de regel met de cursor. 5. Herhaal de stappen 2 tot 4 om de regels in de goede volgorde te zetten. ---> d) Krijg je het ook onder de knie? ---> b) Viooltjes zijn blauw, ---> c) Begrip is te leren, ---> a) Rozen zijn rood, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 3.2: HET COMMANDO VERVANG ** Tik rx ('replace') om het teken onder de cursor te vervangen door x. ** 1. Ga naar de eerste regel hieronder met --->. 2. Zet de cursor op de eerste fout. 3. Tik r en dan het teken dat er hoort te staan. 4. Herhaal de stappen 2 en 3 tot de eerste regel gelijk is aan de tweede. ---> Bij het tokken van dezf hegel heeft iemamd verklerde letters getikt. ---> Bij het tikken van deze regel heeft iemand verkeerde letters getikt. 5. Ga nu naar les 3.3. LET OP: Door het te doen, leer je beter dan door het uit je hoofd te leren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 3.3: HET COMMANDO VERANDER ** Tik ce om te veranderen tot het einde van een woord. ** 1. Ga met de cursor naar de eerste regel hieronder met --->. 2. Zet de cursor op de u van ruch. 3. Tik ce en de juiste letters (in dit geval "egel"). 4. Druk en ga naar het volgende teken dat moet worden veranderd. 5. Herhaal de stappen 3 en 4 tot de eerste regel gelijk is aan de tweede. ---> In deze ruch staan een paar weedrim die veranderd moud worden. ---> In deze regel staan een paar woorden die veranderd moeten worden. LET OP: Met ce wordt (het laatste deel van) een woord gewist en kom je in de invoegmodus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 3.4: MEER VERANDERINGEN MET c 1. Het commando verander ('change') werkt op dezelfde manier als wis. De opbouw is: c [teller] beweging 2. De bewegingen zijn hetzelfde, zoals w (woord) en $ (einde regel). 3. Ga naar de eerste regel hieronder met --->. 4. Zet de cursor op de eerste fout. 5. Tik c$ en tik de rest van de regel zodat hij gelijk wordt aan de tweede en sluit af met . ---> Het einde van deze regel moet precies zo worden als de tweede regel. ---> Het einde van deze regel moet gecorrigeerd worden met het commando c$. OPMERKING: Je kan de toets gebruiken om tikfouten te herstellen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 3 1. Tik p om tekst terug te plakken, die zojuist is gewist. Dit zet de gewiste tekst ACHTER de cursor (als een hele regel is gewist komt deze op de regel ONDER de cursor. 2. Het teken waarop de cursor staat wordt vervangen met r gevolgd door het teken dat je daar wilt hebben. 3. Het commando 'verander' stelt je in staat om tekst te veranderen vanaf de cursor tot waar de 'beweging' je brengt. Dat wil zeggen: tik ce om te veranderen vanaf de cursor tot het einde van het woord, c$ om te veranderen tot het einde van de regel. 4. De opbouw van het commando verander is: c [teller] beweging Ga nu naar de volgende les. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 4.1: PLAATS VAN DE CURSOR EN STATUS VAN HET BESTAND ** CTRL-G laat zien waar (regelnummer) je je bevindt en wat de status van het bestand is. Met [nummer] G ga je naar een bepaalde regel. ** LET OP: Lees de hele les voordat je een stap uitvoert!! 1. Hou de Ctrl-toets ingedrukt en tik g . Dit noemen we CTRL-G. Onderaan de pagina verschijnt een boodschap met de bestandsnaam en de positie in het bestand. Onthou het regelnummer voor stap 3. OPMERKING: Als de optie 'ruler' aan staat, wordt de positie van de cursor (regelnummer, kolom) steeds in de rechter-onderhoek van het scherm vermeld. In dit geval vermeldt CTRL-G geen regelnummer. CTRL-G geeft ook de status aan, namelijk of de tekst veranderd is ('modified') sinds het de laatste keer is opgeslagen. 2. Tik hoofdletter G om naar het einde van het bestand te gaan. Tik gg om naar het begin van het bestand te gaan. 3. Tik het regelnummer waar je bij stap 1 was en daarna G . Dit brengt je terug naar de regel waar je was toen je de eerste keer CTRL-G tikte. 4. Voer de stappen 1 tot 3 uit als je dit goed hebt gelezen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 4.2: HET COMMANDO ZOEKEN ** Met /ZOEK wordt naar de zoekterm (één of meer woorden) gezocht. ** 1. Tik in de opdrachtmodus het teken / . Je ziet dat het met de cursor aan de onderkant van het scherm verschijnt, zoals bij het :-commando. 2. Tik nu 'ffouut' . Dit is het woord waarnaar gezocht wordt. 3. Tik n om verder te zoeken met dezelfde zoekterm. Zoek met N met dezelfde zoekterm in de tegenovergestelde richting. 4. Zoek in achterwaartse richting met ?zoekterm in plaats van / . 5. Keer terug naar de vorige hit met CTRL-O (hou Ctrl-toets ingedrukt en tik letter o). Herhaal om verder terug te gaan. CTRL-I gaat vooruit. ---> "ffouut" is niet de juiste spelling van fout, ffouut is een fout. OPMERKING: Als zoeken het einde van het bestand bereikt, wordt vanaf het begin doorgezocht, tenzij de optie 'wrapscan' is uitgeschakeld. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 4.3: GA NAAR CORRESPONDERENDE HAAKJES ** Tik % om naar corresponderende ), ] of } te gaan. ** 1. Zet de cursor op een (, [ of { in de regel hieronder met --->. 2. Tik dan het teken % . 3. De cursor gaan naar het overeenkomstige haakje. 4. Met opnieuw % gaat de cursor terug naar het eerste haakje. 5. Plaats de cursor op een ander haakje en bekijk wat % doet. ---> Dit ( is een testregel met ('s, ['s ] en {'s } erin. )) OPMERKING: Dit is nuttig bij het debuggen van een programma waarin haakjes niet corresponderen. Met de optie 'showmatch' wordt ook aangegeven of haakjes corresponderen, maar de cursor wordt niet (blijvend) verplaatst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 4.4: HET VERVANG COMMANDO ** Tik :s/oud/nieuw/g om 'oud' door 'nieuw' te vervangen. ** 1. Ga met de cursor naar de regel hieronder met --->. 2. Tik :s/dee/de . Zoals je ziet, vervangt ('substitute') dit commando alleen de eerste "dee" in de regel. 3. Tik nu :s/dee/de/g . Met de g-vlag ('global') wordt elke "dee" in de regel vervangen. ---> dee beste tijd om dee bloemen te zien is in dee lente. 4. Om in (een deel van) een tekst elk 'oud' te vervangen door 'nieuw': tik :#,#s/oud/nieuw/g waar #,# de regelnummers zijn die het gebied begrenzen waarin wordt vervangen. tik :%s/oud/nieuw/g om alles te vervangen in het hele bestand. tik :%s/oud/nieuw/gc om elke 'oud' in het hele bestand te vinden en te vragen of er vervangen moet worden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 4 1. CTRL-G laat positie in het bestand zien en de status van het bestand. G verplaatst je naar het einde van het bestand. nummer G verplaatst je naar regelnummer. gg verplaatst je naar de eerste regel. 2. Met / en een zoekterm wordt VOORWAARTS gezocht naar de term. Met ? en een zoekterm wordt ACHTERWAARTS gezocht naar de term. Tik n na een zoekopdracht om de volgende hit te vinden, of tik N om in de andere richting te zoeken. CTRL-O brengt je naar eerdere hit, CTRL-I naar nieuwere. 3. Tik % terwijl de cursor op een haakje ([{}]) staat, om naar het corresponderende haakje te gaan. 4. :s/oud/nieuw vervangt het eerste 'oud' in een regel door 'nieuw'. :s/oud/nieuw/g vervangt elk 'oud' in een regel door 'nieuw'. :#,#s/oud/nieuw/g vervangt elk 'oud' door 'nieuw' tussen de regelnummers. :%s/oud/nieuw/g vervangt elk 'oud' door 'nieuw' in het hele bestand. Voeg c toe (:%s/oud/nieuw/gc) om elke keer om bevestiging ('confirmation') te vragen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 5.1: HOE EEN EXTERN COMMANDO WORDT UITGEVOERD ** Tik :! gevolgd door een extern commando om dat uit te voeren. ** 1. Tik het commando : waarmee de cursor op de onderste regel van het scherm komt te staan. Nu kan je een opdracht geven via de commando-regel. 2. Tik een ! (uitroepteken). Dit stelt je in staat om elk shell-commando uit te voeren. 3. Tik bijvoorbeeld ls na het uitroepteken en daarna . Hiermee krijg je de inhoud van je map te zien, net alsof je de opdracht gaf vanaf de shell-prompt. Probeer :!dir als het niet werkt. OPMERKING: Elk extern commando kan op deze manier uitgevoerd worden, ook met argumenten. OPMERKING: Alle commando's na : moeten worden afgesloten met . Vanaf nu zullen we dat niet meer altijd vermelden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 5.2: MEER OVER HET OPSLAAN VAN BESTANDEN ** Tik :w BESTANDSNAAM om de tekst mèt veranderingen op te slaan. ** 1. Tik :!dir of :!ls om de inhoud van je map te tonen. Je weet inmiddels dat je daarna een moet tikken. 2. Kies een bestandsnaam die nog niet bestaat, bijvoorbeeld TEST. 3. Tik nu: :w TEST (als je de naam TEST hebt gekozen). 4. Hierdoor wordt het hele bestand (de VIM lessen) opgeslagen onder de naam TEST. Tik weer :!dir of :!ls om dit te controleren. OPMERKING: Als je Vim zou verlaten en opnieuw zou starten met vim TEST is het bestand een exacte kopie van de lessen, zoals je ze opsloeg. 5. Wis het bestand nu met de opdracht (MS-DOS) :!del TEST of (Unix) :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 5.3: EEN DEEL VAN DE TEKST OPSLAAN ** Sla een deel van het bestand op met v beweging :w BESTANDSNAAM ** 1. Ga naar deze regel. 2. Tik v en ga met de cursor naar stap 5 hieronder. Je ziet dat de tekst oplicht. 3. Tik : . Onderaan het scherm zal :'<,'> verschijnen. 4. Tik w TEST , waar TEST een bestandsnaam is, die nog niet bestaat. Controleer dat je :'<,'>w TEST ziet staan voordat je tikt. 5. Vim slaat nu de geselecteerde regels op in het bestand TEST. Met :!dir of !ls kan je dat zien. Wis het nog niet! We zullen het in de volgende les gebruiken. OPMERKING: Het tikken van v zet zichtbare modus ('visual selection') aan. Je kan de cursor rondbewegen om de selectie groter of kleiner te maken. Vervolgens kan je een commando gebruiken om iets met de tekst te doen. Met d bijvoorbeeld wis je de tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 5.4: OPHALEN EN SAMENVOEGEN VAN BESTANDEN ** Tik :r BESTANDSNAAM om de inhoud van een bestand in te voegen. ** 1. Zet de cursor precies boven deze regel. OPMERKING: Na het uitvoeren van stap 2 zie je tekst van les 5.3. Scrol daarna naar beneden om deze les weer te zien. 2. Haal nu het bestand TEST op met het commando :r TEST . Het bestand dat je ophaalt komt onder de regel waarin de cursor staat. 3. Controleer dat er een bestand is opgehaald. Ga met de cursor omhoog. Dan zie je de tekst van les 5.3 dubbel, het origineel en de versie uit het bestand. OPMERKING: Je kan ook de uitvoer van een extern commando inlezen. Om een voorbeeld te geven: :r !ls leest de uitvoer van het commando ls en zet dat onder de regel waarin de cursor staat. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 5 1. :!COMMANDO voert een extern commando uit. Enkele bruikbare voorbeelden zijn: (MS-DOS) (Unix) :!dir :!ls - laat de inhoud van een map zien :!del BESTAND :!rm BESTAND - wist bestand BESTAND 2. :w BESTANDSNAAM schrijft het huidige Vim-bestand naar disk met de naam BESTANDSNAAM. 3. v beweging :w BESTANDSNAAM laat je in zichtbare modus een fragment selecteren, dat wordt opgeslagen in het bestand BESTANDSNAAM. 4. :r BESTANDSNAAM haalt het bestand BESTANDSNAAM op en voegt het onder de cursor-positie in de tekst in. 5. :r !dir leest de uitvoer van het externe commando dir en zet het onder de cursor-positie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 6.1: HET COMMANDO OPEN ** Tik o om een regel onder de cursor te openen in invoegmodus. ** 1. Ga naar de eerste regel beneden met --->. 2. Tik de kleine letter o en open daarmee een regel ONDER de cursor en ga naar de invoegmodus. 3. Tik wat tekst in en sluit af met om de invoegmodus te verlaten. ---> Als je o tikt, komt de cursor in een nieuwe regel in invoegmodus. 4. Om een regel BOVEN de cursor te openen, moet je gewoon een hoofdletter O tikken in plaats van een kleine letter. Probeer dat vanaf de volgende regel. ---> Open een regel hierboven. Tik een O terwijl de cursor hier staat. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 6.2: HET COMMANDO TOEVOEGEN ** Tik a om tekst toe te voegen ACHTER de cursor. ** 1. Ga naar het begin van de regel beneden met --->. 2. Tik e tot de cursor op het einde van "ste" staat. 3. Tik een (kleine letter) a ('append') om toe te voegen ACHTER de cursor. 4. Vul het woord aan zoals in de volgende regel. Druk om de invoegmodus te verlaten. 5. Ga met e naar het einde van het volgende onvolledige woord en herhaal de stappen 3 en 4. ---> Deze regel ste je in staat om te oef in het toevo van tekst. Deze regel stelt je in staat om te oefenen in het toevoegen van tekst. OPMERKING: a, i en A openen allemaal dezelfde invoegmodus, het enige verschil is waar tekens worden ingevoegd. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 6.3: VERVANGEN OP EEN ANDERE MANIER ** Tik een hoofdletter R om meer dan één teken te vervangen. ** 1. Ga naar de eerste regel beneden met --->. Ga met de cursor naar het begin van de eerste "xxx" . 2. Tik nu R en daarna het getal eronder in de tweede regel, zodat xxx wordt vervangen. 3. Druk om de vervangmodus te verlaten. Je ziet dat de rest van de regel ongewijzigd blijft. 4. Herhaal de stappen om de overgebleven xxx te vervangen. ---> Optellen van 123 en xxx geeft je xxx. ---> Optellen van 123 en 456 geeft je 579. OPMERKING: Vervangmodus lijkt op invoegmodus, maar elk teken dat je tikt, vervangt een bestaand teken. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 6.4: TEKST KOPIËREN EN PLAKKEN ** Gebruik y om tekst te kopiëren en p om te plakken. ** 1. Ga naar de regel beneden met ---> en zet de cursor achter "a)". 2. Zet zichtbare modus aan met v en zet de cursor juist voor "eerste". 3. Tik y ('yank') om de opgelichte tekst ("dit is het") te kopiëren. 4. Ga met j$ met de cursor naar het einde van de volgende regel. 5. Plak de gekopieerde tekst met p en tik a tweede . 6. Selecteer in zichtbare modus "onderdeel", kopieer het met y en ga met j$ naar het einde van de tweede regel. Plak de tekst daar met p . ---> a) dit is het eerste onderdeel b) OPMERKING: Je kan y ook als operator gebruiken; yw kopieert een woord, yy een hele regel. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 6.5: OPTIES GEBRUIKEN ** Gebruik een optie voor al dan niet hoofdlettergevoelig zoeken. ** 1. Zoek naar 'hoofdlettergevoelig' met /hoofdlettergevoelig Herhaal het zoeken enkele keren door n te tikken. 2. Schakel de optie 'ic' ('ignore case', niet-hoofdlettergevoelig) in met :set ic 3. Zoek met n opnieuw naar 'hoofdlettergevoelig'. Je ziet dat Hoofdlettergevoelig en HOOFDLETTERGEVOELIG nu ook gevonden worden. 4. Schakel de opties 'hlsearch' (treffers oplichten) en 'incsearch' (toon gedeeltelijke treffers bij intikken) in met :set hls is 5. Tik weer /hoofdlettergevoelig en kijk wat er gebeurt. 6. Schakel 'hoofdlettergevoelig' weer in met :set noic OPMERKING: Schakel het oplichten van treffers uit met :nohlsearch OPMERKING: Om bij een enkel zoek-commando de hoofdlettergevoeligheid om te draaien kan \c worden gebruikt na de zoekterm: /hoofdlettergevoelig\c . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 6 1. Tik o om een regel te openen ONDER de cursor en invoegmodus te starten. Tik O om een regel te openen BOVEN de cursor. 2. Tik a om tekst toe te voegen NA de cursor. Tik A om tekst toe te voegen aan het einde van de regel. 3. Het commando e beweegt de cursor naar het einde van een woord. 4. De operator y yankt (kopieert) tekst, p zet het terug (plakt). 5. Met hoofdletter R wordt de vervangmodus geopend, met afgesloten. 6. Met :set xxx wordt optie 'xxx' ingeschakeld. Opties zijn bijvoorbeeld: ic ignorecase geen verschil hoofdletters/kleine letters bij zoeken is incsearch toon gedeeltelijke treffers tijdens intikken zoekterm hls hlsearch laat alle treffers oplichten Je kan zowel de lange als de korte naam van een optie gebruiken. 7. Zet 'no' voor de naam om een optie uit te schakelen: :set noic schakelt 'ic' uit. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 7.1: HULP INROEPEN ** Het gebruik van ingebouwde hulp. ** Vim heeft een uitgebreid ingebouwd hulpsysteem. Probeer, om te beginnen, één van deze drie: - druk de toets (als je die hebt) - druk de toets (als je die hebt) - tik :help Lees de tekst in het help-venster om te leren hoe 'help' werkt. Tik CTRL-W CTRL-W om van het ene venster naar het andere te gaan. Met :q wordt het help-venster gesloten. Je kan hulp vinden over nagenoeg elk onderwerp door een argument aan het commando :help toe te voegen. Probeer deze (en vergeet niet): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 7.2: SCHRIJF EEN CONFIGURATIEBESTAND ** Mogelijkheden van Vim uitbreiden. ** Vim kent veel meer mogelijkheden dan Vi, maar de meeste zijn standaard uitgeschakeld. Om meer functies te gebruiken moet je een 'vimrc'-bestand schrijven. 1. Bewerk het bestand 'vimrc'. Hoe dat moet hangt af van je systeem: :e ~/.vimrc voor Unix :e $VIM/_vimrc voor MS-Windows 2. Lees de inhoud van het voorbeeld-bestand: :r $VIMRUNTIME/vimrc_example.vim 3. Sla het bestand op met :w De volgende keer dat je Vim start wordt 'syntaxiskleuring' gebruiken. Je kan al je voorkeursinstellingen toevoegen aan dit 'vimrc'-bestand. Tik :help vimrc-intro voor meer informatie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Les 7.3: AANVULLEN ** Aanvullen van de 'command line' met CTRL-D en . ** 1. Zorg dat Vim niet in 'compatible mode' is met :set nocp 2. Kijk welke bestanden zich in de map bevinden met :!ls of :!dir 3. Tik het begin van een commando: :e 4. Met CTRL-D toont Vim een lijst commando's, die met "e" beginnen. 5. Druk enkele keren . Vim laat aanvullingen zien, zoals ":edit", dat we hier gebruiken. 6. Voeg een spatie toe en de eerste letter(s) van een bestaande bestandsnaam: :edit BESTAND 7. Druk . Vim vult de naam aan (als hij uniek is). OPMERKING: Aanvullen werkt bij tal van commando's. Probeer gewoon CTRL-D en . Het is bijzonder nuttig bij :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SAMENVATTING Les 7 1. Tik :help of druk of om een help-venster te openen. 2. Tik :help CMD voor hulp over CMD . 3. Tik CTRL-W CTRL-W om naar een ander venster te gaan. 4. Tik :q om het help-venster te sluiten. 5. Maak een bestand met de naam 'vimrc' voor je voorkeursinstellingen. 6. Druk CTRL-D tijdens het intikken van een :-commando om mogelijke aanvullingen te zien. Druk om aanvullen te gebruiken. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Hiermee komen de Vim-lessen tot een einde. Ze waren bedoeld om een kort overzicht te geven van de Vim-editor, juist voldoende om de editor redelijk makkelijk te gebruiken. Deze lessen zijn verre van volledig. Vim kent veel meer commando's. Lees hierna de handleiding voor gebruikers: ":help user-manual". Voor verdere studie wordt aanbevolen: Vim - Vi Improved - door Steve Oualline Uitgever: New Riders Dit is het eerste boek dat geheel aan Vim is gewijd. Speciaal geschikt voor beginners. Met veel voorbeelden en afbeeldingen. Zie http://iccf-holland.org/click5.html Het volgende boek is ouder en gaat meer over Vi dan Vim, maar het wordt toch aanbevolen: Learning the Vi Editor - door Linda Lamb Uitgever: O'Reilly & Associates Inc. Het is een goed boek om nagenoeg alles te weten te komen dat je met Vi zou willen doen. De zesde en vooral de nieuwe zevende druk (onder de titel Learning the Vi and Vim Editors door Arnold Robbins, Elbert Hannah & Linda Lamb) bevat ook informatie over Vim. Deze lessen zijn geschreven door Michael C. Pierce en Robert K. Ware, Colorado School of Mines met gebruikmaking van ideeën van Charles Smith van de Colorado State University. E-mail: bware@mines.colorado.edu. Aangepast voor Vim door Bram Moolenaar. Nederlandse vertaling door Rob Bishoff, april 2012 e-mail: rob.bishoff@hccnet.nl) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!&,77vim80/tutor/README.el.cp737.txtnu[ Tutor 夘 "" 㚞 ⦬ 㩫 ᡫ Vim. 櫜 ⦠ 㩫 驦 櫜 騘. ⢜ 夘 櫠 嫜 ᤜ 嘪 ⤦ 餫 ᡫ Vim. Tutor 夘 ⤘ ⮜ 㣘 . 嫜 ⩜ "vim tutor" 㩜 圪 㣘. 㣘 礜 㩜 , . 穫 Unix 嫜 婞 㩜 暨 "vimtutor". 㩜 高 ⤘ 殜 嚨 tutor. 櫜 ਞ⤘ 㣘 嫞 椦. 驫 ⢘ 墜 㧦 驜 ᤜ. Bob Ware, Colorado School of Mines, Golden, Co 80401, USA (303) 273-3987 bware@mines.colorado.edu bware@slate.mines.colorado.edu bware@mines.bitnet [ 㟞 Vim Bram Moolenaar] PK!b:-mmvim80/tutor/tutor.it.utf-8nu[=============================================================================== = Benvenuto alla G u i d a all'Editor V I M - Versione 1.7 = =============================================================================== Vim è un Editor molto potente ed ha parecchi comandi, troppi per spiegarli tutti in una guida come questa. Questa guida serve a descrivere quei comandi che ti permettono di usare facilmente Vim come Editor di uso generale. Il tempo necessario per completare la guida è circa 25-30 minuti, a seconda di quanto tempo dedichi alla sperimentazione. ATTENZIONE! I comandi nelle lezioni modificano questo testo. Fai una copia di questo file per esercitarti (se hai usato "vimtutor", stai già usando una copia). E' importante non scordare che questa guida vuole insegnare tramite l'uso. Questo vuol dire che devi eseguire i comandi per impararli davvero. Se leggi il testo e basta, dimenticherai presto i comandi! Adesso, assicurati che il tasto BLOCCA-MAIUSCOLO non sia schiacciato e premi il tasto j tanto da muovere il cursore fino a che la Lezione 1.1 riempia completamente lo schermo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1.1: MOVIMENTI DEL CURSORE ** Per muovere il cursore, premi i tasti h,j,k,l come indicato. ** ^ k NOTA: Il tasto h è a sinistra e muove a sinistra. < h l > Il tasto l è a destra e muove a destra. j Il tasto j ricorda una freccia in giù. v 1. Muovi il cursore sullo schermo finché non ti senti a tuo agio. 2. Tieni schiacciato il tasto "giù" (j) finché non si ripete il movimento. Adesso sai come arrivare fino alla lezione seguente. 3. Usando il tasto "giù" spostati alla Lezione 1.2. NOTA: Quando non sei sicuro del tasto che hai premuto, premi per andare in Modalità Normale [Normal Mode]. Poi ri-immetti il comando che volevi. NOTA: I tasti con le frecce fanno lo stesso servizio. Ma usando hjkl riesci a muoverti molto più rapidamente, dopo che ci si abitua. Davvero! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1.2: USCIRE DA VIM !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!! 1. Premi il tasto (per assicurarti di essere in Modalità Normale). 2. Batti: :q! . Così esci dall'Editor SCARTANDO qualsiasi modifica fatta. 3. Quando vedi il PROMPT della Shell, batti il comando con cui sei arrivato qui. Sarebbe: vimtutor 4. Se hai memorizzato questi comandi e ti senti pronto, esegui i passi da 1 a 3 per uscire e rientrare nell'Editor. NOTA: :q! SCARTA qualsiasi modifica fatta. In una delle prossime lezioni imparerai come salvare un file che hai modificato. 5. Muovi in giù il cursore per passare alla lezione 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1.3: MODIFICA DI TESTI - CANCELLAZIONE ** Premere x per cancellare il carattere sotto al cursore ** 1. Muovi il cursore alla linea più sotto, indicata da --->. 2. Per correggere errori, muovi il cursore fino a posizionarlo sopra il carattere da cancellare. 3. Premi il tasto x per cancellare il carattere sbagliato. 4. Ripeti i passi da 2 a 4 finché la frase è corretta. ---> La mmucca saltòò finnoo allaa lunnna. 5. Ora che la linea è corretta, vai alla Lezione 1.4 NOTA: Mentre segui questa guida, non cercare di imparare a memoria, ma impara facendo pratica. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1.4: MODIFICA DI TESTI - INSERIMENTO ** Premere i per inserire testo. ** 1. Muovi il cursore alla prima linea qui sotto, indicata da --->. 2. Per rendere la prima linea uguale alla seconda, muovi il cursore sopra il primo carattere DOPO la posizione in cui il testo va inserito. 3. Premi i e batti le aggiunte opportune. 4. Quando un errore è corretto, premi per tornare in Modalità Normale. Ripeti i passi da 2 a 4 fino a completare la correzione della frase. ---> C'era del tsto mncnt questa . ---> C'era del testo mancante da questa linea. 5. Quando sei a tuo agio nell'inserimento di testo vai alla lezione 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1.5: MODIFICA DI TESTI - AGGIUNTA ** Premere A per aggiungere testo a fine linea. ** 1. Muovi il cursore alla prima linea qui sotto, indicata da --->. Non importa dove è posizionato il cursore sulla linea stessa. 2. Batti A e inserisci le necessarie aggiunte. 3. Alla fine della aggiunta premi per tornare in modalità Normale. 4. Muovi il cursore alla seconda linea indicata ---> e ripeti i passi 2 e 3 per correggere questa frase. ---> C'è del testo che manca da qu C'è del testo che manca da questa linea. ---> C'è anche del testo che ma C'è anche del testo che manca qui. 5. Quando sei a tuo agio nell'aggiunta di testo vai alla lezione 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1.6: MODIFICARE UN FILE ** Usare :wq per salvare un file e uscire. ** !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!! 1. Esci da Vim come hai fatto nella lezione 1.2: :q! 2. Quando vedi il PROMPT della Shell, batti il comando: vim tutor 'vim' è il comando per richiamare Vim, 'tutor' è il nome del file che desideri modificare. Usa un file che possa essere modificato. 3. Inserisci e cancella testo come hai imparato nelle lezioni precedenti. 4. Salva il file ed esci da Vim con: :wq 5. Rientra in vimtutor e scendi al sommario che segue. 6. Dopo aver letto i passi qui sopra ed averli compresi: eseguili. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 1 SOMMARIO 1. Il cursore si muove usando i tasti con le frecce o i tasti hjkl. h (sinistra) j (giù) k (su) l (destra) 2. Per eseguire Vim dal PROMPT della Shell batti: vim NOMEFILE 3. Per uscire da Vim batti: :q! per uscire senza salvare. oppure batti: :wq per uscire salvando modifiche. 4. Per cancellare il carattere sotto al cursore batti: x 5. Per inserire testo subito prima del cursore batti: i batti testo inserito inserisci prima del cursore A batti testo aggiunto aggiungi a fine linea NOTA: premendo ritornerai in Modalità Normale o annullerai un comando errato che puoi aver inserito in parte. Ora continua con la Lezione 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.1: COMANDI DI CANCELLAZIONE ** Batti dw per cancellare una parola. ** 1. Premi per accertarti di essere in Modalità Normale. 2. Muovi il cursore fino alla linea qui sotto, indicata da --->. 3. Muovi il cursore all'inizio di una parola che vuoi cancellare. 4. Batti dw per cancellare la parola. NOTA: La lettera d sarà visibile sull'ultima linea dello schermo mentre la batti. Vim attende che tu batta w . Se vedi una lettera diversa da d hai battuto qualcosa di sbagliato; premi e ricomincia. ---> Ci sono le alcune parole gioia che non c'entrano carta in questa frase. 5. Ripeti i passi 3 e 4 finché la frase è corretta, poi vai alla Lezione 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.2: ALTRI COMANDI DI CANCELLAZIONE ** Batti d$ per cancellare fino a fine linea. ** 1. Premi per accertarti di essere in Modalità Normale. 2. Muovi il cursore fino alla linea qui sotto, indicata da --->. 3. Muovi il cursore alla fine della linea corretta (DOPO il primo . ). 4. Batti d$ per cancellare fino a fine linea. ---> Qualcuno ha battuto la fine di questa linea due volte. linea due volte. 5. Vai alla Lezione 2.3 per capire il funzionamento di questo comando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.3: OPERATORI E MOVIMENTI Molti comandi di modifica testi consistono in un operatore e un movimento. Il formato del comando di cancellazione con l'operatore d è il seguente: d movimento Dove: d - è l'operatore di cancellazione movimento - indica dove l'operatore va applicato (lista qui sotto). Breve lista di movimenti: w - fino a inizio della parola seguente, ESCLUSO il suo primo carattere. e - alla fine della parola corrente, COMPRESO il suo ultimo carattere. $ - dal cursore fino a fine linea, COMPRESO l'ultimo carattere della linea. Quindi se batti de cancelli dal cursore fino a fine parola. NOTA: Se batti solo il movimento mentre sei in Modalità Normale, senza nessun operatore, il cursore si muoverà come specificato. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.4: USO DI UN CONTATORE PER UN MOVIMENTO ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. ** 1. Muovi il cursore fino all'inizio della linea qui sotto, indicata da --->. 2. Batti 2w per spostare il cursore due parole più avanti. 3. Batti 3e per spostare il cursore alla fine della terza parola seguente. 4. Batti 0 (zero) per posizionarti all'inizio della linea. 5. Ripeti i passi 2 e 3 usando numeri differenti. ---> Questa è solo una linea con parole all'interno della quale puoi muoverti. 6. Vai alla Lezione 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.5: USO DI UN CONTATORE PER CANCELLARE DI PIU' ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. ** Nella combinazione dell'operatore cancella e di un movimento, descritto prima, inserite un contatore prima del movimento per cancellare di più: d numero movimento 1. Muovi il cursore alla prima parola MAIUSCOLA nella riga indicata da --->. 2. Batti d2w per cancellare le due parole MAIUSCOLE 3. Ripeti i passi 1 e 2 con un contatore diverso per cancellare le parole MAIUSCOLE consecutive con un solo comando ---> questa ABC DE linea FGHI JK LMN OP di parole è Q RS TUV ora ripulita. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.6: LAVORARE SU LINEE INTERE ** Batti dd per cancellare un'intera linea. ** Per la frequenza con cui capita di cancellare linee intere, chi ha disegnato Vi ha deciso che sarebbe stato più semplice battere due d consecutive per cancellare una linea. 1. Muovi il cursore alla linea 2) nella frase qui sotto. 2. Batti dd per cancellare la linea. 3. Ora spostati alla linea 4). 4. Batti 2dd per cancellare due linee. ---> 1) Le rose sono rosse, ---> 2) Il fango è divertente, ---> 3) Le viole sono blu, ---> 4) Io ho un'automobile, ---> 5) Gli orologi segnano il tempo, ---> 6) Lo zucchero è dolce, ---> 7) E così sei anche tu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2.7: IL COMANDO UNDO [ANNULLA] ** Premi u per annullare gli ultimi comandi eseguiti. ** ** Premi U per annullare le modifiche all'ultima linea. ** 1. Muovi il cursore fino alla linea qui sotto, indicata da --->. e posizionati sul primo errore. 2. Batti x per cancellare il primo carattere sbagliato. 3. Adesso batti u per annullare l'ultimo comando eseguito. 4. Ora invece, correggi tutti gli errori sulla linea usando il comando x . 5. Adesso batti una U Maiuscola per riportare la linea al suo stato originale. 6. Adesso batti u più volte per annullare la U e i comandi precedenti. 7. Adesso batti più volte CTRL-r (tieni il tasto CTRL schiacciato mentre batti r) per rieseguire i comandi (annullare l'annullamento). ---> Correeggi gli errori ssu quuesta linea e riimpiazzali coon "undo". 8. Questi comandi sono molto utili. Ora spostati al Sommario della Lezione 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 2 SOMMARIO 1. Per cancellare dal cursore fino alla parola seguente batti: dw 2. Per cancellare dal cursore fino alla fine della linea batti: d$ 3. Per cancellare un'intera linea batti: dd 4. Per eseguire più volte un movimento, mettici davanti un numero: 2w 5. Il formato per un comando di modifica è: operatore [numero] movimento dove: operatore - indica il da farsi, ad es. d per [delete] cancellare [numero] - contatore facoltativo di ripetizione del movimento movimento - spostamento nel testo su cui operare, ad es. w [word] parola, $ (fino a fine linea), etc. 6. Per andare a inizio linea usate uno zero: 0 7. Per annullare i comandi precedenti, batti: u (u minuscola) Per annullare tutte le modifiche a una linea batti: U (U maiuscola) Per annullare l'annullamento ["redo"] batti: CTRL-r ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 3.1: IL COMANDO PUT [METTI, PONI] ** Batti p per porre [put] testo (cancellato prima) dopo il cursore. ** 1. Muovi il cursore alla prima linea indicata con ---> qui in basso. 2. Batti dd per cancellare la linea e depositarla in un registro di Vim. 3. Muovi il cursore fino alla linea c) SOPRA quella dove andrebbe messa la linea appena cancellata. 4. Batti p per mettere la linea sotto il cursore. 5. Ripeti i passi da 2 a 4 per mettere tutte le linee nel giusto ordine. ---> d) Puoi impararla tu? ---> b) Le viole sono blu, ---> c) La saggezza si impara, ---> a) Le rose sono rosse, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 3.2: IL COMANDO REPLACE [RIMPIAZZARE] ** Batti rx per rimpiazzare il carattere sotto al cursore con x . ** 1. Muovi il cursore alla prima linea qui sotto, indicata da --->. 2. Muovi il cursore fino a posizionarlo sopra il primo errore. 3. Batti r e poi il carattere che dovrebbe stare qui. 4. Ripeti i passi 2 e 3 finché la prima linea è uguale alla seconda. ---> Ammattendo quetta lince, qualcuno ho predato alcuni tosti sballiati! ---> Immettendo questa linea, qualcuno ha premuto alcuni tasti sbagliati! 5. Ora passa alla Lezione 3.2. NOTA: Ricordati che dovresti imparare con la pratica, non solo leggendo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 3.3: L'OPERATORE CHANGE [CAMBIA] ** Per cambiare fino alla fine di una parola, batti ce . ** 1. Muovi il cursore alla prima linea qui sotto, indicata da --->. 2. Posiziona il cursore alla u in lubw. 3. Batti ce e la parola corretta (in questo caso, batti inea ). 4. Premi e vai sul prossimo carattere da modificare. 5. Ripeti i passi 3 e 4 finché la prima frase è uguale alla seconda. ---> Questa lubw ha alcune pptfd da asdert usgfk l'operatore CHANGE. ---> Questa linea ha alcune parole da cambiare usando l'operatore CHANGE. Nota che ce cancella la parola, e ti mette anche in Modalità Inserimento [Insert Mode] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 3.4: ALTRI CAMBIAMENTI USANDO c ** L'operatore c [CHANGE] agisce sugli stessi movimenti di d [DELETE] ** 1. L'operatore CHANGE si comporta come DELETE. Il formato è: c [numero] movimento 2. I movimenti sono gli stessi, ad es. w (word, parola), $ (fine linea), etc. 3. Muovi il cursore alla prima linea qui sotto, indicata da --->. 4. Posiziona il cursore al primo errore. 5. Batti c$ e inserisci resto della linea utilizzando come modello la linea seguente, e quando hai finito premi ---> La fine di questa linea deve essere aiutata a divenire come la seguente. ---> La fine di questa linea deve essere corretta usando il comando c$ . NOTA: Puoi usare il tasto Backspace se devi correggere errori di battitura. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 3 SOMMARIO 1. Per reinserire del testo appena cancellato, batti p . Questo inserisce [pone] il testo cancellato DOPO il cursore (se era stata tolta una linea intera, questa verrà messa nella linea SOTTO il cursore). 2. Per rimpiazzare il carattere sotto il cursore, batti r e poi il carattere che vuoi sostituire. 3. L'operatore change ti permette di cambiare dal cursore fino a dove arriva il movimento. Ad es. Batti ce per cambiare dal cursore fino alla fine della parola, c$ per cambiare fino a fine linea. 4. Il formato di change è: c [numero] movimento Ora vai alla prossima Lezione. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 4.1: POSIZIONAMENTO E SITUAZIONE FILE ** Batti CTRL-G per vedere a che punto sei nel file e la situazione ** ** del file. Batti G per raggiungere una linea nel file. ** NOTA: Leggi l'intera Lezione prima di eseguire un qualsiasi passo!! 1. Tieni premuto il tasto CTRL e batti g . Ossia batti CTRL-G. Un messaggio apparirà in fondo alla pagina con il NOME FILE e la posizione nel file. Ricordati il numero della linea per il Passo 3. NOTA: La posizione del cursore si vede nell'angolo in basso a destra dello schermo, se è impostata l'opzione 'ruler' (righello, vedi :help ruler). 2. Premi G [G Maiuscolo] per posizionarti in fondo al file. Batti gg per posizionarti in cima al file. 3. Batti il numero della linea in cui ti trovavi e poi G . Questo ti riporterà fino alla linea in cui ti trovavi quando avevi battuto CTRL-g. 4. Se ti senti sicuro nel farlo, esegui i passi da 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 4.2: IL COMANDO SEARCH [RICERCA] ** Batti / seguito da una frase per ricercare quella frase. ** 1. in Modalità Normale batti il carattere / . Nota che la "/" e il cursore sono visibili in fondo dello schermo come quando si usa il comando : . 2. Adesso batti 'errroore' . Questa è la parola che vuoi ricercare. 3. Per ricercare ancora la stessa frase, batti soltanto n . Per ricercare la stessa frase in direzione opposta, batti N . 4. Per ricercare una frase nella direzione opposta, usa ? al posto di / . 5. Per tornare dove eri prima nel file premi CTRL-O (tieni il tasto CTRL schiacciato mentre premi la lettera o). Ripeti CTRL-O per andare ancora indietro. Puoi usare CTRL-I per tornare in avanti. ---> "errroore" non è il modo giusto di digitare errore; errroore è un errore. NOTA: Quando la ricerca arriva a fine file, ricomincia dall'inizio del file, a meno che l'opzione 'wrapscan' sia stata disattivata. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 4.3: RICERCA DI PARENTESI CORRISPONDENTI ** Batti % per trovare una ),], o } corrispondente. ** 1. Posiziona il cursore su una (, [, o { nella linea sotto, indicata da --->. 2. Adesso batti il carattere % . 3. Il cursore si sposterà sulla parentesi corrispondente. 4. Batti % per muovere il cursore all'altra parentesi corrispondente. ---> Questa ( è una linea di test con (, [ ] e { } al suo interno. )) NOTA: Questo è molto utile nel "debug" di un programma con parentesi errate! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 4.4: L'OPERATORE SOSTITUZIONE (SUBSTITUTE) ** Batti :s/vecchio/nuovo/g per sostituire 'nuovo' a 'vecchio'. ** 1. Muovi il cursore fino alla linea qui sotto, indicata da --->. 2. Batti :s/lla/la . Nota che questo comando cambia solo LA PRIMA occorrenza di "lla" sulla linea. 3. Adesso batti :s/lla/la/g . Aggiungendo la flag g si chiede di sostituire "globalmente" sulla linea, ossia tutte le occorrenze di "lla" sulla linea. ---> lla stagione migliore per lla fioritura è lla primavera. 4. Per cambiare ogni ricorrenza di una stringa di caratteri tra due linee, batti :#,#s/vecchio/nuovo/g dove #,# sono i numeri che delimitano il gruppo di linee in cui si vuole sostituire. Batti :%s/vecchio/nuovo/g per cambiare ogni occorrenza nell'intero file. Batti :%s/vecchio/nuovo/gc per trovare ogni occorrenza nell'intero file ricevendo per ognuna una richiesta se effettuare o meno la sostituzione. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 4 SOMMARIO 1. CTRL-G visualizza a che punto sei nel file e la situazione del file. G [G Maiuscolo] ti porta all'ultima linea del file. numero G ti porta alla linea con quel numero. gg ti porta alla prima linea del file. 2. Battendo / seguito da una frase ricerca IN AVANTI quella frase. Battendo ? seguito da una frase ricerca ALL'INDIETRO quella frase. DOPO una ricerca batti n per trovare la prossima occorrenza nella stessa direzione, oppure N per cercare in direzione opposta. CTRL-O ti porta alla posizione precedente, CTRL-I a quella più nuova. 3. Battendo % mentre il cursore si trova su (,),[,],{, oppure } ti posizioni sulla corrispondente parentesi. 4. Per sostituire "nuovo" al primo "vecchio" in 1 linea batti :s/vecchio/nuovo Per sostituire "nuovo" ad ogni "vecchio" in 1 linea batti :s/vecchio/nuovo/g Per sostituire frasi tra 2 numeri di linea [#] batti :#,#s/vecchio/nuovo/g Per sostituire tutte le occorrenze nel file batti :%s/vecchio/nuovo/g Per chiedere conferma ogni volta aggiungi 'c' :%s/vecchio/nuovo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 5.1: COME ESEGUIRE UN COMANDO ESTERNO ** Batti :! seguito da un comando esterno per eseguire quel comando. ** 1. Batti il comando : per posizionare il cursore in fondo allo schermo. Ciò ti permette di immettere un comando dalla linea comandi. 2. Adesso batti il carattere ! (punto esclamativo). Ciò ti permette di eseguire qualsiasi comando esterno si possa eseguire nella "shell". 3. Ad esempio batti ls dopo il ! e poi premi . Questo visualizza una lista della tua directory, proprio come se fossi in una "shell". Usa :!dir se ls non funziona. [Unix: ls MS-DOS: dir] NOTA: E' possibile in questo modo eseguire un comando a piacere, specificando anche dei parametri per i comandi stessi. NOTA: Tutti i comandi : devono essere terminati premendo Da qui in avanti non lo ripeteremo ogni volta. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 5.2: ANCORA SULLA SCRITTURA DEI FILE ** Per salvare le modifiche apportate a un testo batti :w NOMEFILE. ** 1. Batti :!dir or :!ls per procurarti una lista della tua directory. Già sai che devi premere dopo aver scritto il comando. 2. Scegli un NOMEFILE che ancora non esista, ad es. TEST . 3. Adesso batti: :w TEST (dove TEST è il NOMEFILE che hai scelto). 4. Questo salva l'intero file ("tutor.it") con il nome di TEST. Per verifica batti ancora :!dir o :!ls per listare la tua directory. NOTA: Se esci da Vim e riesegui Vim battendo vim TEST , il file aperto sarà una copia esatta di "tutor.it" al momento del salvataggio. 5. Ora cancella il file battendo (MS-DOS): :!del TEST o (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 5.3: SELEZIONARE IL TESTO DA SCRIVERE ** Per salvare una porzione di file, batti v movimento :w NOMEFILE ** 1. Muovi il cursore su questa linea. 2. Premi v e muovi il cursore fino alla linea numerata 5., qui sotto. Nota che il testo viene evidenziato. 3. Batti il carattere : . In fondo allo schermo apparirà :'<,'> . 4. Batti w TEST , dove TEST è il nome di un file non ancora esistente. Verifica che si veda :'<,'>w TEST prima di dare . 5. Vim scriverà nel file TEST le linee che hai selezionato. Usa :!dir o :!ls per controllare che esiste. Non cancellarlo ora! Ti servirà nella prossima lezione. NOTA: Battere v inizia una selezione visuale. Puoi muovere il cursore come vuoi, e rendere la selezione più piccola o più grande. Poi puoi usare un operatore per agire sul testo selezionato. Ad es., d cancella il testo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 5.4: INSERIRE E RIUNIRE FILE ** Per inserire il contenuto di un file, batti :r NOMEFILE ** 1. Posiziona il cursore appena sopra questa riga. NOTA: Dopo aver eseguito il Passo 2 vedrai il testo della Lezione 5.3. Quindi spostati IN GIU' per tornare ancora a questa Lezione. 2. Ora inserisci il tuo file TEST con il comando :r TEST dove TEST è il nome che hai usato per creare il file. Il file richiesto è inserito sotto la linea in cui si trova il cursore. 3. Per verificare che un file è stato inserito, torna indietro col cursore e nota che ci sono ora 2 copie della Lezione 5.3, quella originale e quella che viene dal file. NOTA: Puoi anche leggere l'output prodotto da un comando esterno. Ad es. :r !ls legge l'output del comando ls e lo inserisce sotto la linea in cui si trova il cursore. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 5 SOMMARIO 1. :!comando esegue un comando esterno. Alcuni esempi utili sono [in MSDOS]: :!dir - visualizza lista directory :!del NOMEFILE - cancella file NOMEFILE. 2. :w NOMEFILE scrive su disco il file che stai editando con nome NOMEFILE. 3. v movimento :w NOMEFILE salva le linee selezionate in maniera visuale nel file NOMEFILE. 4. :r NOMEFILE legge il file NOMEFILE da disco e lo inserisce nel file che stai modificando, dopo la linea in cui è posizionato il cursore. 5. :r !dir legge l'output del comando dir e lo inserisce dopo la linea in cui è posizionato il cursore. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 6.1: IL COMANDO OPEN [APRIRE] ** Batti o per aprire una linea sotto il cursore ** ** e passare in Modalità Inserimento. ** 1. Muovi il cursore fino alla linea qui sotto, indicata da --->. 2. Batti la lettera minuscola o per aprire una linea sotto il cursore e passare in Modalità Inserimento. 3. Poi inserisci del testo e premi per uscire dalla Modalità Inserimento. ---> Dopo battuto o il cursore è sulla linea aperta (in Modalità Inserimento). 4. Per aprire una linea SOPRA il cursore, batti una O maiuscola, invece che una o minuscola. Prova sulla linea qui sotto. ---> Apri una linea SOPRA questa battendo O mentre il cursore è su questa linea. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 6.2: IL COMANDO APPEND [AGGIUNGERE] ** Batti a per inserire testo DOPO il cursore. ** 1. Muovi il cursore all'inizio della linea qui sotto, indicata da --->. 2. Batti e finché il cursore arriva alla fine di li . 3. Batti una a (minuscola) per aggiungere testo DOPO il cursore. 4. Completa la parola come mostrato nella linea successiva. Premi per uscire dalla Modalità Inserimento. 5. Usa e per passare alla successiva parola incompleta e ripeti i passi 3 e 4. ---> Questa li ti permetterà di esercit ad aggiungere testo a una linea. ---> Questa linea ti permetterà di esercitarti ad aggiungere testo a una linea. NOTA: a, i ed A entrano sempre in Modalità Inserimento, la sola differenza è dove verranno inseriti i caratteri. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 6.3: UN ALTRO MODO DI RIMPIAZZARE [REPLACE] ** Batti una R maiuscola per rimpiazzare più di un carattere. ** 1. Muovi il cursore alla prima linea qui sotto, indicata da --->. Muovi il cursore all'inizio del primo xxx . 2. Ora batti R e batti il numero che vedi nella linea seguente, in modo che rimpiazzi l' xxx . 3. Premi per uscire dalla Modalità Replace. Nota che il resto della linea resta invariato. 4. Ripeti i passi in modo da rimpiazzare l'altro xxx . ---> Aggiungendo 123 a xxx si ottiene xxx. ---> Aggiungendo 123 a 456 si ottiene 579. NOTA: La Modalità Replace è come la Modalità Inserimento, ma ogni carattere che viene battuto ricopre un carattere esistente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 6.4: COPIA E INCOLLA DEL TESTO ** usa l'operatore y per copiare del testo e p per incollarlo ** 1. Vai alla linea indicata da ---> qui sotto, e metti il cursore dopo "a)". 2. Entra in Modalità Visuale con v e metti il cursore davanti a "primo". 3. Batti y per copiare [yank] il testo evidenziato. 4. Muovi il cursore alla fine della linea successiva: j$ 5. Batti p per incollare [paste] il testo. Poi batti: a secondo . 6. Usa la Modalità Visuale per selezionare " elemento.", copialo con y , Vai alla fine della linea successiva con j$ e incolla il testo con p . ---> a) questo è il primo elemento. b) NOTA: Puoi usare y come operatore; yw copia una parola [word]. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 6.5: SET [IMPOSTA] UN'OPZIONE ** Imposta un'opzione per ignorare maiuscole/minuscole ** ** durante la ricerca/sostituzione ** 1. Ricerca 'nota' battendo: /nota Ripeti la ricerca più volte usando il tasto n 2. Imposta l'opzione 'ic' (Ignore Case, [Ignora maiuscolo/minuscolo]) battendo: :set ic 3. Ora ricerca ancora 'nota' premendo il tasto n Troverai adesso anche Nota e NOTA . 4. Imposta le opzioni 'hlsearch' e 'incsearch' :set hls is 5. Ora batti ancora il comando di ricerca, e guarda cosa succede: /nota 6. Per disabilitare il riconoscimento di maiuscole/minuscole batti: :set noic NOTA: Per non evidenziare le occorrenze trovate batti: :nohlsearch NOTA: Per ignorare maiuscole/minuscole solo per una ricerca, usa \c nel comando di ricerca: /nota\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 6 SOMMARIO 1. Batti o per aggiungere una linea SOTTO il cursore ed entrare in Modalità Inserimento. Batti O per aggiungere una linea SOPRA il cursore. 2. Batti a per inserire testo DOPO il cursore. Batti A per inserire testo alla fine della linea. 3. Il comando e sposta il cursore alla fine di una parola. 4. L'operatore y copia del testo, p incolla del testo. 5. Batti R per entrare in Modalità Replace, e ne esci premendo . 6. Batti ":set xxx" per impostare l'opzione "xxx". Alcun opzioni sono: 'ic' 'ignorecase' ignorare maiuscole/minuscole nella ricerca 'is' 'incsearch' mostra occorrenze parziali durante una ricerca 'hls' 'hlsearch' evidenzia tutte le occorrenze di una ricerca Puoi usare sia il nome completo di un'opzione che quello abbreviato. 7. Usa il prefisso "no" per annullare una opzione: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 7.1: OTTENERE AIUTO ** Usa il sistema di aiuto on-line ** Vim ha un esauriente sistema di aiuto on-line. Per cominciare, prova una di queste alternative: - premi il tasto (se ce n'è uno) - premi il tasto (se ce n'è uno) - batti :help OPPURE :h Leggi il testo nella finestra di aiuto per vedere come funziona l'aiuto. Batti CTRL-W CTRL-W per passare da una finestra all'altra. Batti :q per chiudere la finestra di aiuto. Puoi trovare aiuto su quasi tutto, dando un argomento al comando ":help" Prova questi (non dimenticare di premere ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 7.2: PREPARARE UNO SCRIPT INIZIALE ** Attiva le opzioni Vim ** Vim ha molte più opzioni di Vi, ma molte di esse sono predefinite inattive. Per cominciare a usare più opzioni, devi creare un file "vimrc". 1. Comincia a editare il file "vimrc". Questo dipende dal tuo sistema: :e ~/.vimrc per Unix :e $VIM/_vimrc per MS-Windows 2. Ora leggi i contenuti del file "vimrc" distribuito come esempio: :r $VIMRUNTIME/vimrc_example.vim 3. Scrivi il file con: :w La prossima volta che apri Vim, sarà abilitata la colorazione sintattica. Puoi aggiungere a questo file "vimrc" tutte le tue impostazioni preferite. Per maggiori informazioni batti: :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 7.3: COMPLETAMENTO ** Completamento linea comandi con CTRL-D e ** 1. Imposta Vim in modalità compatibile: :set nocp 2. Guarda i file esistenti nella directory: :!ls o :!dir 3. Batti l'inizio di un comando: :e 4. Premi CTRL-D e Vim ti mostra una lista di comandi che iniziano per "e". 5. Premi e Vim completa per te il nome comando come ":edit". 6. Ora batti uno spazio e l'inizio del nome di un file esistente: :edit FIL 7. Premi . Vim completerà il nome del file (se è il solo possibile). NOTA: Il completamento è disponibile per molti comandi. Prova a battere CTRL-D e . Particolarmente utile per :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lezione 7 Sommario 1. Batti :help o premi o per aprire una finestra di aiuto. 2. Batti :help comando per avere aiuto su comando . 3. Batti CTRL-W CTRL-W per saltare alla prossima finestra. 4. Batti :q per chiudere la finestra di aiuto. 5. Crea uno script iniziale vimrc contenente le tue impostazioni preferite. 6. Mentre batti un comando : , premi CTRL-D per vedere i possibili completamenti. Premi per usare il completamento desiderato. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Qui finisce la Guida a Vim. Il suo intento è di fornire una breve panoramica dell'Editor Vim, che ti consenta di usare l'Editor abbastanza facilmente. Questa guida è largamente incompleta poiché Vim ha moltissimi altri comandi. Puoi anche leggere il manuale utente (anche in italiano): ":help user-manual". Per ulteriore lettura e studio, raccomandiamo: Vim - Vi Improved - di Steve Oualline Editore: New Riders Il primo libro completamente dedicato a Vim. Utile specie per principianti. Contiene molti esempi e figure. Vedi http://iccf-holland.org/click5.html Quest'altro libro è più su Vi che su Vim, ma è pure consigliato: Learning the Vi Editor - di Linda Lamb e Arnold Robbins Editore: O'Reilly & Associates Inc. E' un buon libro per imparare quasi tutto ciò che puoi voler fare con Vi. Ne esiste una traduzione italiana, basata su una vecchia edizione. Questa guida è stata scritta da Michael C. Pierce e Robert K. Ware, Colorado School of Mines, usando idee fornite da Charles Smith, Colorado State University - E-mail: bware@mines.colorado.edu Modificato per Vim da Bram Moolenaar. Segnalare refusi ad Antonio Colombo - E-mail: azc100@gmail.com ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!J||vim80/tutor/tutor.hr.utf-8nu[=============================================================================== = D o b r o d o š l i u VIM p r i r u č n i k - Verzija 1.7 = =============================================================================== Vim je vrlo moćan editor koji ima mnogo naredbi, previše da bi ih se svih ovdje spomenulo. Namjena priručnika je objasniti dovoljno naredbi kako bi početnici znatno lakše koristili ovaj svestran editor. Približno vrijeme potrebno za uspješan završetak priručnika je oko 30 minuta a ovisi o tome koliko će te vremena odvojiti za vježbanje. UPOZORENJE: Naredbe u ovom priručniku će promijeniti ovaj tekst. Napravite kopiju ove datoteke kako bi ste na istoj vježbali (ako ste pokrenuli "vimtutor" ovo je već kopija). Vrlo je važno primijetiti da je ovaj priručnik namijenjen za vježbanje. Preciznije, morate izvršiti naredbe u Vim-u kako bi ste iste naučili pravilno koristiti. Ako samo čitate tekst, zaboraviti će te naredbe! Ako je CapsLock uključen ISKLJUČITE ga. Pritiskajte tipku j kako bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.1: POMICANJE KURSORA ** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano ** ^ k Savjet: h tipka je lijevo i pomiče kursor lijevo. < h l > l tipka je desno i pomiče kursor desno. j j izgleda kao strelica usmjerena dolje. v 1. Pomičite kursor po ekranu dok se ne naviknete na korištenje. 2. Držite tipku (j) pritisnutom. Sada znate kako doći do sljedeće lekcije. 3. Koristeći tipku j prijeđite na sljedeću lekciju 1.2. NAPOMENA: Ako niste sigurni što ste zapravo pritisnuli uvijek koristite tipku kako bi prešli u Normal mod i onda pokušajte ponovno. NAPOMENA: Kursorske tipke rade isto. Korištenje hjkl tipaka je znatno brže, nakon što se jednom naviknete na njihovo korištenje. Stvarno! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.2: IZLAZ IZ VIM-a !! UPOZORENJE: Prije izvođenja bilo kojeg koraka, pročitajte cijelu lekciju!! 1. Pritisnite tipku (Vim je sada u Normal modu). 2. Otipkajte: :q! . Izlaz iz editora, GUBE se sve napravljene promjene. 3. Kada se pojavi ljuska, utipkajte naredbu koja je pokrenula ovaj priručnik: vimtutor 4. Ako ste upamtili ove korake, izvršite ih redom od 1 do 3 kako bi ponovno pokrenuli editor. NAPOMENA: :q! poništava sve promjene koje ste napravili. U sljedećim lekcijama naučit će te kako promjene sačuvati. 5. Pomaknite kursor na Lekciju 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.3: PROMJENA TEKSTA - BRISANJE ** Pritisnite x za brisanje znaka pod kursorom. ** 1. Pomaknite kursor na liniju označenu s --->. 2. Kako bi ste ispravili pogreške, pomičite kursor dok se ne bude nalazio na slovu kojeg trebate izbrisati. 3. Pritisnite tipku x kako bi uklonili neželjeno slovo. 4. Ponovite korake od 2 do 4 dok ne ispravite sve pogreške. ---> KKKravaa jee presskočila mmjeseccc. 5. Nakon što ispravite liniju, prijeđite na lekciju 1.4. NAPOMENA: Koristeći ovaj priručnik ne pokušavajte pamtiti već učite primjenom. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE ** Pritisnite i za ubacivanje teksta ispred kursora. ** 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. 2. Kako bi napravili prvu liniju istovjetnoj drugoj, pomaknite kursor na prvi znak POSLIJE kojeg će te utipkati potreban tekst. 3. Pritisnite i te utipkajte potrebne nadopune. 4. Nakon što ispravite pogrešku pritisnite kako bi vratili Vim u Normal mod. Ponovite korake od 2 do 4 kako bi ispravili sve pogreške. ---> Nedje no teka od v lin. ---> Nedostaje nešto teksta od ove linije. 5. Prijeđite na sljedeću lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE ** Pritisnite A za dodavanje teksta. ** 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. Nije važno na kojem se slovu nalazi kursor na toj liniji. 2. Pritisnite A i napravite potrebne promjene. 3. Nakon što ste dodali tekst, pritisnite za povratak u Normal mod. 4. Pomaknite kursor na drugu liniju označenu s ---> i ponovite korake 2 i 3 dok ne popravite tekst. ---> Ima nešto teksta koji nedostaje n Ima nešto teksta koji nedostaje na ovoj liniji. ---> Ima nešto teksta koji ne Ima nešto teksta koji nedostaje baš ovdje. 5. Prijeđite na lekciju 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.6: PROMJENA DATOTEKE ** Koristite :wq za spremanje teksta i napuštanje Vim-a. ** !! UPOZORENJE: Prije izvršavanja bilo kojeg koraka, pročitajte lekciju!! 1. Izađite iz programa kao sto ste napravili u lekciji 1.2: :q! 2. Iz ljuske utipkajte sljedeću naredbu: vim tutor 'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju želite uređivati. Koristite datoteku koju imate ovlasti mijenjati. 3. Ubacite i izbrišite tekst kao što ste to napravili u lekcijama prije. 4. Sačuvajte promjenjeni tekst i izađite iz Vim-a: :wq 5. Ponovno pokrenite vimtutor i nastavite čitati sažetak koji sljedi. 6. Nakon sto pročitate gornje korake i u potpunosti ih razumijete: izvršite ih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1 SAŽETAK 1. Kursor se pomiče strelicama ili pomoću hjkl tipaka. h (lijevo) j (dolje) k (gore) l (desno) 2. Pokretanje Vim-a iz ljuske: vim IME_DATOTEKE 3. Izlaz: :q! sve promjene su izgubljene. ILI: :wq promjene su sačuvane. 4. Brisanje znaka na kojem se nalazi kursor: x 5. Ubacivanja ili dodavanje teksta: i utipkajte tekst unos ispred kursora A utipkajte tekst dodavanje na kraju linije NAPOMENA: Tipkanjem tipke prebacuje Vim u Normal mod i prekida neželjenu ili djelomično završenu naredbu. Nastavite čitati Lekciju 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.1: NAREDBE BRISANJA ** Tipkajte dw za brisanje riječi. ** 1. Pritisnite kako bi bili sigurni da je Vim u Normal modu. 2. Pomaknite kursor na liniju označenu s --->. 3. Pomaknite kursor na početak riječi koju treba izbrisati. 4. Otipkajte dw kako bi uklonili riječ. NAPOMENA: Vim će prikazati slovo d na zadnjoj liniji kad ga otipkate. Vim čeka da otipkate w . Ako je prikazano neko drugo slovo, krivo ste otipkali; pritisnite i pokušajte ponovno. ---> Neke riječi smiješno ne pripadaju na papir ovoj rečenici. 5. Ponovite korake 3 i 4 dok ne ispravite rečenicu; prijeđite na Lekciju 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.2: JOŠ BRISANJA ** Otipkajte d$ za brisanje znakova do kraja linije. ** 1. Pritisnite kako bi bili sigurni da je Vim u Normal modu. 2. Pomaknite kursor na liniju označenu s --->. 3. Pomaknite kursor do kraja ispravne rečenice (POSLJE prve . ). 4. Otipkajte d$ kako bi izbrisali sve znakove do kraja linije. ---> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput. 5. Prijeđite na Lekciju 2.3 za bolje objašnjenje. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta. Oblik naredbe brisanja sa d operatorom je sljedeći: d pokret Pri čemu je: d - operator brisanja. pokret - ono na čemu će se operacija izvršavati (navedeno u nastavku). Kratka lista pokreta: w - sve do početka sljedeće riječi, NE UKLJUČUJUĆI prvo slovo. e - sve do kraja trenutačne riječi, UKLJUČUJUĆI zadnje slovo. $ - sve do kraje linije, UKLJUČUJUĆI zadnje slovo. Tipkanjem de će se brisati od kursora do kraja riječi. NAPOMENA: Pritiskajući samo pokrete dok ste u Normal modu bez operatora će pomicati kursor kao što je navedeno. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.4: KORIŠTENJE BROJANJA ZA POKRETE ** Tipkanjem nekog broja prije pokreta, pokret se izvršava toliko puta. ** 1. Pomaknite kursor na liniju označenu s --->. 2. Otipkajte 2w da pomaknete kursor dvije riječi naprijed. 3. Otipkajte 3e da pomaknete kursor na kraj treće riječi naprijed. 4. Otipkajte 0 (nulu) da pomaknete kursor na početak linije. 5. Ponovite korake 2 i 3 s nekim drugim brojevima. ---> Rečenica sa riječima po kojoj možete pomicati kursor. 6. Prijeđite na Lekciju 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.5: KORIŠTENJE BROJANJA ZA VEĆE BRISANJE ** Tipkanje broja N s operatorom ponavlja ga N-puta. ** U kombinaciji operatora brisanja i pokreta spomenutih iznad ubacujete broj prije pokreta kako bi izbrisali više znakova: d broj pokret 1. Pomaknite kursor na prvo slovo u riječi sa VELIKIM SLOVIMA označenu s --->. 2. Otipkajte 2dw da izbrišete dvije riječi sa VELIKIM SLOVIMA 3. Ponovite korake 1 i 2 sa različitim brojevima da izbrišete uzastopne riječi sa VELIKIM SLOVIMA sa samo jednom naredbom. ---> ova ABCČĆ DĐE linija FGHI JK LMN OP riječi je RSŠ TUVZŽ popravljena. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.6: OPERIRANJE NAD LINIJAMA ** Otipkajte dd za brisanje cijele linije. ** Zbog učestalosti brisanja cijelih linija, dizajneri Vi-a su odlučili da je lakše brisati linije tipkanjem d dvaput. 1. Pomaknite kursor na drugu liniju u donjoj kitici. 2. Otipkajte dd kako bi izbrisali liniju. 3. Pomaknite kursor na četvrtu liniju. 4. Otipkajte 2dd kako bi izbrisali dvije linije. ---> 1) Ruže su crvene, ---> 2) Plaža je super, ---> 3) Ljubice su plave, ---> 4) Imam auto, ---> 5) Satovi ukazuju vrijeme, ---> 6) Šećer je sladak ---> 7) Kao i ti. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.7: NAREDBA PONIŠTENJA ** Pritisnite u za poništenje zadnje naredbe, U za cijelu liniju. ** 1. Pomaknite kursor na liniju označenu s ---> i postavite kursor na prvu pogrešku. 2. Otipkajte x kako bi izbrisali prvi neželjeni znak. 3. Otipkajte u kako bi poništili zadnju izvršenu naredbu. 4. Ovaj put ispravite sve pogreške na liniji koristeći x naredbu. 5. Sada utipkajte veliko U kako bi poništili sve promjene na liniji, vraćajući je u prijašnje stanje. 6. Sada utipkajte u nekoliko puta kako bi poništili U i prijašnje naredbe. 7. Sada utipkajte CTRL-R (držeći CTRL tipku pritisnutom dok ne pritisnete R) nekoliko puta kako bi vratili promjene (poništili poništenja). ---> Poopravite pogreške nna ovvoj liniji ii pooništiteee ih. 8. Vrlo korisne naredbe. Prijeđite na sažetak Lekcije 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2 SAŽETAK 1. Brisanje od kursora do sljedeće riječi: dw 2. Brisanje od kursora do kraja linije: d$ 3. Brisanje cijele linije: dd 4. Za ponavljanje pokreta prethodite mu broj: 2w 5. Oblik naredbe mijenjanja: operator [broj] pokret gdje je: operator - što napraviti, npr. d za brisanje [broj] - neobavezan broj ponavljanja pokreta pokret - kretanje po tekstu po kojem se operira, kao što je: w (riječ), $ (kraj linije), itd. 6. Postavljanje kursora na početak linije: 0 7. Za poništenje prethodnih promjena, pritisnite: u (malo u) Za poništenje svih promjena na liniji, pritisnite: U (veliko U) Za vraćanja promjena, utipkajte: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.1: NAREDBA POSTAVI ** p za unos prethodno izbrisanog teksta iza kursora. ** 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. 2. Otipkajte dd kako bi izbrisali liniju i spremili je u Vim registar. 3. Pomaknite kursor na liniju c), IZNAD linije koju trebate unijeti. 4. Otipkajte p kako bi postavili liniju ispod kursora. 5. Ponovite korake 2 do 4 kako bi postavili sve linije u pravilnom rasporedu. ---> d) Možeš li i ti naučiti? ---> b) Ljubice su plave, ---> c) Inteligencija je naučena, ---> a) Ruže su crvene, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.2: NAREDBA PROMJENE ** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . ** 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. 2. Pomaknite kursor tako da se nalazi na prvoj pogrešci. 3. Otipkajte r i nakon toga ispravan znak na tom mjestu. 4. Ponovite korake 2 i 3 sve dok prva linije ne bude istovjetna drugoj. ---> Kede ju ovu limija tupjana, natko je protuskao kruve tupke! ---> Kada je ova linija tipkana, netko je pritiskao krive tipke! 5. Prijeđite na Lekciju 3.2. NAPOMENA: Prisjetite da trebate učiti vježbanjem, ne pamćenjem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.3: OPERATOR MIJENJANJA ** Za mijenjanje do kraja riječi, istipkajte ce . ** 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. 2. Postavite kursor na a u lackmb. 3. Otipkajte ce i ispravite riječ (u ovom slučaju otipkajte inija ). 4. Pritisnite i pomaknite kursor na sljedeći znak kojeg je potrebno ispraviti. 5. Ponovite korake 3 i 4 sve dok prva rečenica ne postane istovjetna drugoj. ---> Ova lackmb ima nekoliko rjlcah koje trfcb mijdmlfsz. ---> Ova linija ima nekoliko riječi koje treba mijenjati. Primijetite da ce briše riječ i postavlja Vim u Insert mod. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.4: JOŠ MIJENJANJA KORIŠTENJEM c ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. ** 1. Operator mijenjanja se koristi na isti način kao i operator brisanja: c [broj] pokret 2. Pokreti su isti, npr: w (riječ) i $ (kraj linije). 3. Pomaknite kursor na prvu sljedeću liniju označenu s --->. 4. Pomaknite kursor na prvu pogrešku. 5. Otipkajte c$ i utipkajte ostatak linije tako da bude istovjetna drugoj te pritisnite . ---> Kraj ove linije treba pomoć tako da izgleda kao linija ispod. ---> Kraj ove linije treba ispraviti korištenjem c$ naredbe. NAPOMENA: Možete koristiti Backspace za ispravljanje grešaka. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3 SAŽETAK 1. Za postavljanje teksta koji je upravo izbrisan, pritisnite p . Ovo postavlja tekst IZA kursora (ako je pak linija izbrisana tekst se postavlja na liniju ispod kursora). 2. Za promjenu znaka na kojem se nalazi kursor, pritisnite r i nakon toga željeni znak. 3. Operator mijenjanja dozvoljava promjenu teksta od kursora do pozicije do koje dovede pokret. tj. Otipkajte ce za mijenjanje od kursora do kraja riječi, c$ za mijenjanje od kursora do kraja linije. 4. Oblik naredbe mijenjanja: c [broj] pokret Prijeđite na sljedeću lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke. Pritisnite G za pomicanje kursora na neku liniju u datoteci. ** NAPOMENA: Pročitajte cijelu lekciju prije izvršenja bilo kojeg koraka!! 1. Držite Ctrl tipku pritisnutom i pritisnite g . Ukratko: CTRL-G. Vim će ispisati poruku na dnu ekrana sa imenom datoteke i pozicijom kursora u datoteci. Zapamtite broj linije za 3. korak. NAPOMENA: Možete vidjeti poziciju kursora u donjem desnom kutu ako je postavka 'ruler' aktivirana (objašnjeno u 6. lekciji). 2. Pritisnite G za pomicanje kursora na kraj datoteke. Otipkajte gg za pomicanje kursora na početak datoteke. 3. Otipkajte broj linije na kojoj ste bili maloprije i zatim G . Kursor će se vratiti na liniju na kojoj se nalazio kada ste otipkali CTRL-G. 4. Ako ste spremni, izvršite korake od 1 do 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.2: NAREDBE TRAŽENJA ** Otipkajte / i nakon toga izraz kojeg želite tražiti. ** 1. U Normal modu otipkajte / znak. Primijetite da se znak pojavio zajedno sa kursorom na dnu ekrana kao kod : naredbe. 2. Sada otipkajte 'grrrreška' . To je riječ koju zapravo tražite. 3. Za ponovno traženje istog izraza, otipkajte n . Za traženje istog izraza ali u suprotnom smjeru, otipkajte N . 4. Za traženje izraza unatrag, koristite ? umjesto / . 5. Za povratak na prethodnu poziciju koristite CTRL-O (držite Ctrl pritisnutim dok ne pritisnete tipku o). Ponavljajte sve dok se ne vratite na početak. CTRL-I slično kao CTRL-O ali u suprotnom smjeru. ---> "pogrrrreška" je pogrešno; umjesto pogrrrreška treba stajati pogreška. NAPOMENA: Ako se traženjem dođe do kraja datoteke nastavit će se od njenog početka osim ako je postavka 'wrapscan' deaktivirana. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.3: TRAŽENJE PRIPADAJUĆE ZAGRADE ** Otipkajte % za pronalazak pripadajuće ), ] ili } . ** 1. Postavite kursor na bilo koju od ( , [ ili { otvorenih zagrada u liniji označenoj s --->. 2. Otipkajte znak % . 3. Kursor će se pomaknuti na pripadajuću zatvorenu zagradu. 4. Otipkajte % kako bi pomakli kursor na drugu pripadajuću zagradu. 5. Pomaknite kursor na neku od (,),[,],{ ili } i ponovite % naredbu. ---> Linija ( testiranja običnih ( [ uglatih ] i { vitičastih } zagrada.)) NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadajućim zagradama! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.4: NAREDBE ZAMIJENE ** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. ** 1. Pomaknite kursor na liniju označenu s --->. 2. Otipkajte :s/cvrćč/cvrč . Primjetite da ova naredba zamjenjuje samo prvi "cvrćč" u liniji. 3. Otipkajte :s/cvrćč/cvrč/g . Dodavanje g stavke znači da će se naredba izvršiti na cijeloj liniji, zamjenjivanjem svih "cvrćč" u liniji. ---> i cvrćči cvrćči cvrćčak na čvoru crne smrče. 4. Za zamjenu svih izraza u rasponu dviju linija, otipkajte :#,#s/staro/novo/g #,# su brojevi linije datoteke na kojima te između njih će se izvršiti zamjena. Otipkajte :%s/staro/novo/g za zamjenu svih izraza u cijeloj datoteci. Otipkajte :%s/staro/novo/gc za pronalazak svakog izraza u datoteci i potvrdu zamjene. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4 SAŽETAK 1. CTRL-G prikazuje poziciju kursora u datoteci i status datoteke. G postavlja kursor na zadnju liniju datoteke. broj G postavlja kursor na broj liniju. gg postavlja kursor na prvu liniju. 2. Tipkanje / sa izrazom traži UNAPRIJED taj izraz. Tipkanje ? sa izrazom traži UNATRAG taj izraz. Nakon naredbe traženja koristite n za pronalazak izraza u istom smjeru, i N za pronalazak istog izraza ali u suprotnom smjeru. CTRL-O vraća kursor na prethodnu poziciju, CTRL-I na sljedeću poziciju. 3. Tipkanje % dok je kursor na zagradi pomiče ga na pripadajuću zagradu. 4. Za zamjenu prvog izraza staro za izraz novo :s/staro/novo Za zamjenu svih izraza staro na cijeloj liniji :s/staro/novo/g Za zamjenu svih izraza staro u rasponu linija #,# :#,#s/staro/novo/g Za zamjenu u cijeloj datoteci :%s/staro/novo/g Za potvrdu svake zamjene dodajte 'c' :%s/staro/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.1: IZVRŠAVANJE VANJSKIH NAREDBI ** Otipkajte :! sa vanjskom naredbom koju želite izvršiti. ** 1. Otipkajte poznatu naredbu : kako bi kursor premjestili na dno ekrana. Time omogućavate unos naredbe u naredbenoj liniji. 2. Otipkajte znak ! (uskličnik). Tako omogućavate izvršavanje naredbe vanjske ljuske. 3. Kao primjer otipkajte ls nakon ! te pritisnite . Ovo će prikazati sadržaj direktorija, kao da ste u ljusci. Koristite :!dir ako :!ls ne radi. NAPOMENA: Moguće je izvršavati bilo koju vanjsku naredbu na ovaj način, zajedno sa njenim argumentima. NAPOMENA: Sve : naredbe se izvršavaju nakon što pritisnete U daljnjem tekstu to neće uvijek biti napomenuto. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.2: VIŠE O SPREMANJU DATOTEKA ** Za spremanje promjena, otipkajte :w IME_DATOTEKE. ** 1. Otipkajte :!dir ili :!ls za pregled direktorija. Već znate da morate pritisnuti na kraju tipkanja. 2. Izaberite ime datoteke koja još ne postoji, npr. TEST. 3. Otipkajte: :w TEST (gdje je TEST ime koje ste prethodno odabrali.) 4. Time će te spremiti cijelu datoteku (Vim Tutor) pod imenom TEST. Za provjeru, otipkajte ponovno :!dir ili :!ls za pregled direktorija. NAPOMENA: Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST , datoteka bi bila potpuna kopija ove datoteke u trenutku kada ste je spremili. 5. Izbrišite datoteku tako da otipkate (MS-DOS): :!del TEST ili (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.3: SPREMANJE OZNAČENOG TEKSTA ** Kako bi spremili dio datoteke, otipkajte v pokret :w IME_DATOTEKE ** 1. Pomaknite kursor na ovu liniju. 2. Pritisnite v i pomaknite kursor pet linija ispod ove. Primijetite promjenu, označeni tekst se razlikuje od običnog. 3. Pritisnite : znak. Na dnu ekrana pojavit će se :'<,'> . 4. Otipkajte w TEST , pritom je TEST ime datoteke koja još ne postoji. Provjerite da zaista piše :'<,'>w TEST prije nego što pritisnite . 5. Vim će spremiti označeni tekst u TEST. Provjerite sa :!dir ili :!ls . Nemojte je još brisati! Koristiti će te je u sljedećoj lekciji. NAPOMENA: Tipka v započinje Vizualno označavanje. Možete pomicati kursor unaokolo kako bi mijenjali veličinu označenog teksta. Možete koristiti i operatore. Npr, d će izbrisati označeni tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.4: UČITAVANJE DATOTEKA ** Za ubacivanje sadržaja datoteke, otipkajte :r IME_DATOTEKE ** 1. Postavite kursor iznad ove linije. NAPOMENA: Nakon što izvršite 2. korak vidjeti će te tekst iz Lekcije 5.3. Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju. 2. Učitajte vašu TEST datoteku koristeći naredbu :r TEST gdje je TEST ime datoteke koju ste koristili u prethodnoj lekciji. Sadržaj učitane datoteke je ubačen liniju ispod kursora. 3. Kako bi provjerili da je datoteka učitana, vratite kursor unatrag i primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke. NAPOMENA: Možete također učitati ispis vanjske naredbe. Npr, :r !ls će učitati ispis ls naredbe i postaviti ispis liniju ispod kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5 SAŽETAK 1. :!naredba izvršava vanjsku naredbu. Korisni primjeri: (MS-DOS) (Unix) :!dir :!ls - pregled direktorija. :!del DATOTEKA :!rm DATOTEKA - briše datoteku DATOTEKA. 2. :w DATOTEKA zapisuje trenutačnu datoteku na disk sa imenom DATOTEKA. 3. v pokret :w IME_DATOTEKE sprema vizualno označene linije u datoteku IME_DATOTEKE. 4. :r IME_DATOTEKE učitava datoteku IME_DATOTEKE sa diska i stavlja njen sadržaj liniju ispod kursora. 5. :r !dir učitava ispis naredbe dir i postavlja sadržaj ispisa liniju ispod kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.1: NAREDBA OTVORI ** Pritisnite o kako bi otvorili liniju ispod kursora i prešli u Insert mod. ** 1. Pomaknite kursor na sljedeću liniju označenu s --->. 2. Otipkajte malo o kako bi otvorili novu liniju ISPOD kursora i prešli u Insert mod. 3. Otipkajte nešto teksta i nakon toga pritisnite kako bi napustili Insert mod. ---> Nakon što pritisnete o kursor će preći u novu liniju u Insert mod. 4. Za otvaranje linije IZNAD kursora, otipkajte umjesto malog o veliko O , Pokušajte na donjoj liniji označenoj s --->. ---> Otvorite liniju iznad ove - otipkajte O dok je kursor na ovoj liniji. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.2: NAREDBA DODAJ ** Otipkajte a za dodavanje teksta IZA kursora. ** 1. Pomaknite kursor na početak sljedeće linije označene s --->. 2. Tipkajte e dok se kursor ne nalazi na kraju li . 3. Otipkajte a (malo) kako bi dodali tekst IZA kursora. 4. Dopunite riječ kao što je na liniji ispod. Pritisnite za izlaz iz Insert moda. 5. Sa e prijeđite na sljedeću nepotpunu riječ i ponovite korake 3 i 4. ---> Ova li omogućava vje dodav teksta nekoj liniji. ---> Ova linija omogućava vježbanje dodavanja teksta nekoj liniji. NAPOMENA: Sa i, a, i A prelazite u isti Insert mod, jedina razlika je u poziciji od koje će se tekst ubacivati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.3: DRUGI NAČIN MIJENJANJA ** Otipkajte veliko R kako bi zamijelili više od jednog znaka. ** 1. Pomaknite kursor na prvu sljedeću liniju označenu s --->. Pomaknite kursor na početak prvog xxx . 2. Pritisnite R i otipkajte broj koji je liniju ispod, tako da zamijeni xxx . 3. Pritisnite za izlaz iz Replace moda. Primijetite da je ostatak linije ostao nepromjenjen. 5. Ponovite korake kako bi zamijenili preostali xxx. ---> Zbrajanje: 123 plus xxx je xxx. ---> Zbrajanje: 123 plus 456 je 579. NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, svaki otipkani znak briše već postojeći. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA ** Koristite y operator za kopiranje a p za lijepljenje teksta. ** 1. Pomaknite kursor na liniju s ---> i postavite kursor nakon "a)". 2. Pokrenite Visual mod sa v i pomaknite kursor sve do ispred "prva". 3. Pritisnite y kako bi kopirali označeni tekst. 4. Pomaknite kursor do kraja sljedeće linije: j$ 5. Pritisnite p kako bi zalijepili tekst. Onda utipkajte: druga . 6. Koristite Visual mod kako bi označili " linija.", kopirajte: y , kursor postavite na kraj sljedeće linije: j$ i ondje zalijepite tekst: p . ---> a) ovo je prva linija. b) NAPOMENA: možete koristiti y kao operator; yw kopira jednu riječ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.5: MIJENJANJE POSTAVKI ** Postavka: naredbe traženja i zamijene ne razlikuju VELIKA i mala slova ** 1. Potražite 'razlika' tipkanjem: /razlika Nekoliko puta ponovite pritiskanjem n . 2. Aktivirajte 'ic' (Ignore case) postavku: :set ic 3. Ponovno potražite 'razlika' tipkanjem n Primijetite da su sada i RAZLIKA i Razlika pronađeni. 4. Aktivirajte 'hlsearch' i 'incsearch' postavke: :set hls is 5. Otipkajte naredbu traženja i primijetite razlike: /razlika 6. Za deaktiviranje ic postavke koristite: :set noic NAPOMENA: Za neoznačavanje pronađenih izraza otipkajte: :nohlsearch NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi koristite \c u izrazu: /razlika\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6 SAŽETAK 1. Pritisnite o za otvaranje linije ISPOD kursora i prelazak u Insert mod. Pritisnite O za otvaranje linije IZNAD kursora. 2. Pritisnite a za unos teksta IZA kursora. Pritisnite A za unos teksta na kraju linije. 3. Naredba e pomiče kursor na kraj riječi. 4. Operator y kopira tekst, p ga lijepi. 5. Tipkanjem velikog R Vim prelazi u Replace mod dok ne pritisnete . 6. Tipkanjem ":set xxx" aktivira postavku "xxx". Neke postavke su: 'ic' 'ignorecase' ne razlikuje velika/mala slova pri traženju 'is' 'incsearch' traži nedovršene izraze 'hls' 'hlsearch' označi sve pronađene izraze Možete koristite dugo ili kratko ime postavke. 7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.1: DOBIVANJE POMOĆI ** Koristite on-line sustav pomoći ** Vim ima detaljan on-line sustav pomoći. Za početak, pokušajte jedno od sljedećeg: - pritisnite tipku (ako je vaša tipkovnica ima) - pritisnite tipku (ako je vaša tipkovnica ima) - utipkajte :help Pročitajte tekst u prozoru pomoći kako bi ste se znali služiti istom. Tipkanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi. Otipkajte :q kako bi zatvorili prozor pomoći. Pronaći će te pomoć o bilo kojoj temi, tako da dodate upit samoj ":help" naredbi. Pokušajte (ne zaboravite pritisnuti ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.2: PRAVLJENJE SKRIPTE ** Aktivirajte Vim mogućnosti ** Vim ima mnogo više alata od Vi-ja, ali većina njih nije aktivirana. Kako bi mogli koristiti više mogućnosti napravite "vimrc" datoteku. 1. Uredite "vimrc" datoteku. Ovo ovisi o vašem sistemu: :e ~/.vimrc za Unix :e $VIM/_vimrc za MS-Windows 2. Sada učitajte primjer sadržaja "vimrc" datoteke: :r $VIMRUNTIME/vimrc_example.vim 3. Sačuvajte datoteku sa: :w Sljedećeg puta kada pokrenete Vim, bojanje sintakse teksta biti će aktivirano. Sve vaše postavke možete dodati u "vimrc" datoteku. Za više informacija otipkajte :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.3: AUTOMATSKO DOVRŠAVANJE ** Dovršavanje iz naredbene linije pomoću CTRL-D i ** 1. Provjerite da Vim nije u Vi modu: :set nocp 2. Pogledajte koje datoteke postoje u direktoriju: :!ls or :!dir 3. Otipkajte početak naredbe: :e 4. Tipkajte CTRL-D i prikazati će se lista naredbi koje započinju sa "e". 5. Pritisnite i Vim će dopuniti unos u naredbu ":edit". 6. Dodajte razmak i početak datoteke: :edit FIL 7. Pritisnite . Vim će nadopuniti ime datoteke (ako je jedinstveno). NAPOMENA: Moguće je dopuniti mnoge naredbe. Koristite CTRL-D i . Naročito je korisno za :help naredbe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7 SAŽETAK 1. Otipkajte :help ili pritisnite ili za pomoć. 2. Otipkajte :help naredba kako bi dobili pomoć za naredba . 3. Otipkajte CTRL-W CTRL-W za prelazak u drugi prozor 4. Otipkajte :q kako bi zatvorili prozor pomoći 5. Napravite vimrc skriptu za podizanje kako bi u nju spremali vaše omiljene postavke. 6. Kada tipkate naredbu koja započinje sa : pritisnite CTRL-D kako bi vidjeli moguće valjane vrijednosti. Pritisnite kako bi odabrali jednu od njih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Kraj. Cilj priručnika je da pokaže kratak pregled Vim editora, tek toliko da omogući njegovo korištenje. Priručnik nije potpun jer Vim ima mnogo više naredbi. Za više informacija: ":help user-manual". Za čitanje i korištenje, preporučamo: Vim - Vi Improved - by Steve Oualline Izdavač: New Riders Prva knjiga potpuno posvećena Vim-u. Vrlo korisna za početnike. Sa mnogo primjera i slika. Posjetite http://iccf-holland.org/click5.html Sljedeća knjiga je nešto starija i više o Vi-u nego o Vim-u, preporučamo: Learning the Vi Editor - by Linda Lamb Izdavač: O'Reilly & Associates Inc. Solidna knjiga, možete saznati skoro sve što možete napraviti u Vi-u. Šesto izdanje ima nešto informacija i o Vim-u. Ovaj priručnik su napisali: Michael C. Pierce i Robert K. Ware, Colorado School of Mines koristeći ideje Charles Smith, Colorado State University. E-pošta: bware@mines.colorado.edu. Naknadne promjene napravio je Bram Moolenaar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Preveo na hrvatski: Paul B. Mahol Preinaka 1.42, Lipanj 2008 PK!|)>zzvim80/tutor/tutor.zh_tw.utf-8nu[=============================================================================== = 歡 迎 閱 讀 《 V I M 教 程 》 ── 版本 1.5 = =============================================================================== vim 是一個具有很多命令的功能非常強大的編輯器。限于篇幅,在本教程當中 不就詳細介紹了。本教程的設計目標是講述一些必要的基本命令,而掌握好這 些命令,您就能夠很容易將vim當作一個通用的萬能編輯器來使用了。 完成本教程的內容大約需要25-30分鐘,取決于您訓練的時間。 每一節的命令操作將會更改本文。推薦您復制本文的一個副本,然後在副本上 進行訓練(如果您是通過"vimtutor"來啟動教程的,那麼本文就已經是副本了)。 切記一點︰本教程的設計思路是在使用中進行學習的。也就是說,您需要通過 執行命令來學習它們本身的正確用法。如果您只是閱讀而不操作,那麼您可能 會很快遺忘這些命令的! 好了,現在請確定您的Shift-Lock(大小寫鎖定鍵)還沒有按下,然後按鍵盤上 的字母鍵 j 足夠多的次數來移動光標,直到第一節的內容能夠完全充滿屏幕。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一講第一節︰移動光標 ※※ 要移動光標,請依照說明分別按下 h、j、k、l 鍵。 ※※ ^ k 提示︰ h 的鍵位于左邊,每次按下就會向左移動。 < h l > l 的鍵位于右邊,每次按下就會向右移動。 j j 鍵看起來很象一支尖端方向朝下的箭頭。 v 1. 請隨意在屏幕內移動光標,直至您覺得舒服為止。 2. 按下下行鍵(j),直到出現光標重復下行。 ---> 現在您應該已經學會如何移動到下一講吧。 3. 現在請使用下行鍵,將光標移動到第一講第二節。 提示︰如果您不敢確定您所按下的字母,請按下鍵回到正常(Normal)模式。 然後再次從鍵盤輸入您想要的命令。 提示︰光標鍵應當也能正常工作的。但是使用hjkl鍵,在習慣之後您就能夠快速 地在屏幕內四處移動光標了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一講第二節︰VIM的進入和退出 !! 特別提示︰敬請閱讀完整本一節的內容,然後才能執行以下所講解的命令。 1. 請按鍵(這是為了確保您處在正常模式)。 2. 然後輸入︰ :q! <回車> ---> 這種方式的退出編輯器絕不會保存您進入編輯器以來所做的改動。 如果您想保存更改再退出,請輸入︰ :wq <回車> 3. 如果您看到了命令行提示符,請輸入能夠帶您回到本教程的命令,那就是︰ vimtutor <回車> 通常情況下您也可以用這種方式︰ vim tutor <回車> ---> 這裡的 'vim' 表示進入vim編輯器,而 'tutor'則是您準備要編輯的文件。 4. 如果您自信已經牢牢記住了這些步驟的話,請從步驟1執行到步驟3退出,然 後再次進入編輯器。接著將光標移動到第一講第三節來繼續我們的教程講解。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一講第三節︰文本編輯之刪除 ** 在正常(Normal)模式下,可以按下 x 鍵來刪除光標所在位置的字符。** 1. 請將光標移動到本節中下面標記有 ---> 的那一行。 2. 為了修正輸入錯誤,請將光標移至準備刪除的字符的位置處。 3. 然後按下 x 鍵將錯誤字符刪除掉。 4. 重復步驟2到步驟4,直到句子修正為止。 ---> The ccow jumpedd ovverr thhe mooon. 5. 好了,該行已經修正了,下一節內容是第一講第四節。 特別提示︰在您瀏覽本教程時,不要強行記憶。記住一點︰在使用中學習。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一講第四節︰文本編輯之插入 ** 在正常模式下,可以按下 i 鍵來插入文本。** 1. 請將光標移動到本節中下面標記有 ---> 的第一行。 2. 為了使得第一行內容雷同于第二行,請將光標移至文本第一個字符準備插入 的位置。 3. 然後按下 i 鍵,接著輸入必要的文本字符。 4. 所有文本都修正完畢,請按下 鍵返回正常模式。 重復步驟2至步驟4以便修正句子。 ---> There is text misng this . ---> There is some text missing from this line. 5. 如果您對文本插入操作已經很滿意,請接著閱讀下面的小結。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一講小結 1. 光標在屏幕文本中的移動既可以用箭頭鍵,也可以使用 hjkl 字母鍵。 h (左移) j (下行) k (上行) l (右移) 2. 欲進入vim編輯器(從命令行提示符),請輸入︰vim 文件名 <回車> 3. 欲退出vim編輯器,請輸入以下命令放棄所有修改︰ :q! <回車> 或者輸入以下命令保存所有修改︰ :wq <回車> 4. 在正常模式下刪除光標所在位置的字符,請按︰ x 5. 在正常模式下要在光標所在位置開始插入文本,請按︰ i 輸入必要文本 特別提示︰按下 鍵會帶您回到正常模式或者取消一個不期望或者部分完成 的命令。 好了,第一講到此結束。下面接下來繼續第二講的內容。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二講第一節︰刪除類命令 ** 輸入 dw 可以從光標處刪除至一個單字/單詞的末尾。** 1. 請按下 鍵確保您處于正常模式。 2. 請將光標移動到本節中下面標記有 ---> 的那一行。 3. 請將光標移至準備要刪除的單詞的開始。 4. 接著輸入 dw 刪除掉該單詞。 特別提示︰您所輸入的 dw 會在您輸入的同時出現在屏幕的最後一行。如果您輸 入有誤,請按下 鍵取消,然後重新再來。 ---> There are a some words fun that don't belong paper in this sentence. 5. 重復步驟3至步驟4,直至句子修正完畢。接著繼續第二講第二節內容。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二講第二節︰其他刪除類命令 ** 輸入 d$ 從當前光標刪除到行末。** 1. 請按下 鍵確保您處于正常模式。 2. 請將光標移動到本節中下面標記有 ---> 的那一行。 3. 請將光標移動到該行的尾部(也就是在第一個點號‘.’後面)。 4. 然後輸入 d$ 從光標處刪至當前行尾部。 ---> Somebody typed the end of this line twice. end of this line twice. 5. 請繼續學習第二講第三節就知道是怎麼回事了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二講第三節︰關于命令和對象 刪除命令 d 的格式如下︰ [number] d object 或者 d [number] object 其意如下︰ number - 代表執行命令的次數(可選項,缺省設置為 1 )。 d - 代表刪除。 object - 代表命令所要操作的對象(下面有相關介紹)。 一個簡短的對象列表︰ w - 從當前光標當前位置直到單字/單詞末尾,包括空格。 e - 從當前光標當前位置直到單字/單詞末尾,但是 *不* 包括空格。 $ - 從當前光標當前位置直到當前行末。 特別提示︰ 對于勇于探索者,請在正常模式下面僅按代表相應對象的鍵而不使用命令,則 將看到光標的移動正如上面的對象列表所代表的一樣。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二講第四節︰對象命令的特殊情況 ** 輸入 dd 可以刪除整一個當前行。 ** 鑒于整行刪除的高頻度,VIM 的設計者決定要簡化整行刪除,僅需要在同一行上 擊打兩次 d 就可以刪除掉光標所在的整行了。 1. 請將光標移動到本節中下面的短句段落中的第二行。 2. 輸入 dd 刪除該行。 3. 然後移動到第四行。 4. 接著輸入 2dd (還記得前面講過的 number-command-object 嗎?) 刪除兩行。 1) Roses are red, 2) Mud is fun, 3) Violets are blue, 4) I have a car, 5) Clocks tell time, 6) Sugar is sweet 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二講第五節︰撤消類命令 ** 輸入 u 來撤消最後執行的命令,輸入 U 來修正整行。** 1. 請將光標移動到本節中下面標記有 ---> 的那一行,並將其置于第一個錯誤 處。 2. 輸入 x 刪除第一個不想保留的字母。 3. 然後輸入 u 撤消最後執行的(一次)命令。 4. 這次要使用 x 修正本行的所有錯誤。 5. 現在輸入一個大寫的 U ,恢復到該行的原始狀態。 6. 接著多次輸入 u 以撤消 U 以及更前的命令。 7. 然後多次輸入 CTRL-R (先按下 CTRL 鍵不放開,接著輸入 R 鍵) ,這樣就 可以執行恢復命令,也就是撤消掉撤消命令。 ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. 這些都是非常有用的命令。下面是第二講的小結了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二講小結 1. 欲從當前光標刪除至單字/單詞末尾,請輸入︰dw 2. 欲從當前光標刪除至當前行末尾,請輸入︰d$ 3. 欲刪除整行,請輸入︰dd 4. 在正常模式下一個命令的格式是︰ [number] command object 或者 command [number] object 其意是︰ number - 代表的是命令執行的次數 command - 代表要做的事情,比如 d 代表刪除 object - 代表要操作的對象,比如 w 代表單字/單詞,$ 代表到行末等等。 $ (to the end of line), etc. 5. 欲撤消以前的操作,請輸入︰u (小寫的u) 欲撤消在一行中所做的改動,請輸入︰U (大寫的U) 欲撤消以前的撤消命令,恢復以前的操作結果,請輸入︰CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三講第一節︰置入類命令 ** 輸入 p 將最後一次刪除的內容置入光標之後 ** 1. 請將光標移動到本節中下面示范段落的首行。 2. 輸入 dd 將該行刪除,這樣會將該行保存到vim的緩沖區中。 3. 接著將光標移動到準備置入的位置的上方。記住︰是上方哦。 4. 然後在正常模式下(鍵進入),輸入 p 將該行粘貼置入。 5. 重復步驟2至步驟4,將所有的行依序放置到正確的位置上。 d) Can you learn too? b) Violets are blue, c) Intelligence is learned, a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三講第二節︰替換類命令 ** 輸入 r 和一個字符替換光標所在位置的字符。** 1. 請將光標移動到本節中下面標記有 ---> 的第一行。 2. 請移動光標到第一個錯誤的適當位置。 3. 接著輸入 r ,這樣就能將錯誤替換掉了。 4. 重復步驟2和步驟3,直到第一行已經修改完畢。 ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. 然後我們繼續學校第三講第三節。 特別提示︰切記您要在使用中學習,而不是在記憶中學習。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三講第三節︰更改類命令 ** 要改變一個單字/單詞的部分或者全部,請輸入 cw ** 1. 請將光標移動到本節中下面標記有 ---> 的第一行。 2. 接著把光標放在單詞 lubw 的字母 u 的位置那裡。 3. 然後輸入 cw 就可以修正該單詞了(在本例這裡是輸入 ine 。) 4. 最後按 鍵,然後光標定位到下一個錯誤第一個準備更改的字母處。 5. 重復步驟3和步驟4,直到第一個句子完全雷同第二個句子。 ---> This lubw has a few wptfd that mrrf changing usf the change command. ---> This line has a few words that need changing using the change command. 提示︰請注意 cw 命令不僅僅是替換了一個單詞,也讓您進入文本插入狀態了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三講第四節︰使用c指令的其他更改類命令 ** 更改類指令可以使用同刪除類命令所使用的對象參數。** 1. 更改類指令的工作方式跟刪除類命令是一致的。操作格式是︰ [number] c object 或者 c [number] object 2. 對象參數也是一樣的,比如 w 代表單字/單詞,$代表行末等等。 3. 請將光標移動到本節中下面標記有 ---> 的第一行。 4. 接著將光標移動到第一個錯誤處。 5. 然後輸入 c$ 使得該行剩下的部分更正得同第二行一樣。最後按 鍵。 ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三講小結 1. 要重新置入已經刪除的文本內容,請輸入小寫字母 p。該操作可以將已刪除 的文本內容置于光標之後。如果最後一次刪除的是一個整行,那麼該行將置 于當前光標所在行的下一行。 2. 要替換光標所在位置的字符,請輸入小寫的 r 和要替換掉原位置字符的新字 符即可。 3. 更改類命令允許您改變指定的對象,從當前光標所在位置直到對象的末尾。 比如輸入 cw 可以替換當前光標到單詞的末尾的內容;輸入 c$ 可以替換當 前光標到行末的內容。 4. 更改類命令的格式是︰ [number] c object 或者 c [number] object 下面我們繼續學習下一講。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四講第一節︰定位及文件狀態 ** 輸入 CTRL-g 顯示當前編輯文件中當前光標所在行位置以及文件狀態信息。 輸入 SHIFT-G 則直接跳轉到文件中的某一指定行。** 提示︰切記要先通讀本節內容,之後才可以執行以下步驟!!! 1. 按下 CTRL 鍵不放開然後按 g 鍵。然後就會看到頁面最底部出現一個狀態信 息行,顯示的內容是當前編輯的文件名和文件的總行數。請記住步驟3的行號。 2. 按下 SHIFT-G 鍵可以使得當前光標直接跳轉到文件最後一行。 3. 輸入您曾停留的行號,然後按下 SHIFT-G。這樣就可以返回到您第一次按下 CTRL-g 時所在的行好了。注意︰輸入行號時,行號是不會在屏幕上顯示出來 的。 4. 如果願意,您可以繼續執行步驟1至步驟三。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四講第二節︰搜索類命令 ** 輸入 / 以及尾隨的字符串可以用以在當前文件中查找該字符串。** 1. 在正常模式下輸入 / 字符。您此時會注意到該字符和光標都會出現在屏幕底 部,這跟 : 命令是一樣的。 2. 接著輸入 errroor <回車>。那個errroor就是您要查找的字符串。 3. 要查找同上一次的字符串,只需要按 n 鍵。要向相反方向查找同上一次的字 符串,請輸入 Shift-N 即可。 4. 如果您想逆向查找字符串,請使用 ? 代替 / 進行。 ---> When the search reaches the end of the file it will continue at the start. "errroor" is not the way to spell error; errroor is an error. 提示︰如果查找已經到達文件末尾,查找會自動從文件頭部繼續查找。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四講第三節︰配對括號的查找 ** 按 % 可以查找配對的括號 )、]、}。** 1. 把光標放在本節下面標記有 --> 那一行中的任何一個 (、[ 或 { 處。 2. 接著按 % 字符。 3. 此時光標的位置應當是在配對的括號處。 4. 再次按 % 就可以跳回配對的第一個括號處。 ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) 提示︰在程序調試時,這個功能用來查找不配對的括號是很有用的。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四講第四節︰修正錯誤的方法之一 ** 輸入 :s/old/new/g 可以替換 old 為 new。** 1. 請將光標移動到本節中下面標記有 ---> 的那一行。 2. 輸入 :s/thee/the <回車> 。請注意該命令只改變光標所在行的第一個匹配 串。 3. 輸入 :s/thee/the/g 則是替換全行的匹配串。 ---> the best time to see thee flowers is in thee spring. 4. 要替換兩行之間出現的每個匹配串,請輸入 :#,#s/old/new/g (#,#代表的是 兩行的行號)。輸入 :%s/old/new/g 則是替換整個文件中的每個匹配串。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四講小結 1. Ctrl-g 用于顯示當前光標所在位置和文件狀態信息。Shift-G 用于將光標跳 轉至文件最後一行。先敲入一個行號然後按 Shift-G 則是將光標移動至該行 號代表的行。 2. 輸入 / 然後緊隨一個字符串是則是在當前所編輯的文檔中向後查找該字符串。 輸入問號 ? 然後緊隨一個字符串是則是在當前所編輯的文檔中向前查找該字 符串。完成一次查找之後按 n 鍵則是重復上一次的命令,可在同一方向上查 找下一個字符串所在;或者按 Shift-N 向相反方向查找下該字符串所在。 3. 如果光標當前位置是括號(、)、[、]、{、},按 % 可以將光標移動到配對的 括號上。 4. 在一行內替換頭一個字符串 old 為新的字符串 new,請輸入 :s/old/new 在一行內替換所有的字符串 old 為新的字符串 new,請輸入 :s/old/new/g 在兩行內替換所有的字符串 old 為新的字符串 new,請輸入 :#,#s/old/new/g 在文件內替換所有的字符串 old 為新的字符串 new,請輸入 :%s/old/new/g 進行全文替換時詢問用戶確認每個替換需添加 c 選項,請輸入 :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五講第一節︰在 VIM 內執行外部命令的方法 ** 輸入 :! 然後緊隨著輸入一個外部命令可以執行該外部命令。** 1. 按下我們所熟悉的 : 命令設置光標到屏幕底部。這樣就可以讓您輸入命令了。 2. 接著輸入感嘆號 ! 這個字符,這樣就允許您執行外部的 shell 命令了。 3. 我們以 ls 命令為例。輸入 !ls <回車> 。該命令就會列舉出您當前目錄的 內容,就如同您在命令行提示符下輸入 ls 命令的結果一樣。如果 !ls 沒起 作用,您可以試試 :!dir 看看。 ---> 提示︰ 所有的外部命令都可以以這種方式執行。 ---> 提示︰ 所有的 : 命令都必須以 <回車> 告終。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五講第二節︰關于保存文件的更多信息 ** 要將對文件的改動保存到文件中,請輸入 :w FILENAME ** 1. 輸入 :!dir 或者 :!ls 獲知當前目錄的內容。您應當已知道最後還得敲 <回車> 吧。 2. 選擇一個尚未存在文件名,比如 TEST 。 3. 接著輸入 :w TEST (此處 TEST 是您所選擇的文件名。) 4. 該命令會以 TEST 為文件名保存整個文件 (VIM 教程)。為了確保正確保存, 請再次輸入 :!dir 查看您的目錄列表內容。 ---> 請注意︰如果您退出 VIM 然後在以文件名 TEST 為參數進入,那麼該文件內 容應該同您保存時的文件內容是完全一樣的。 5. 現在您可以通過輸入 :!rm TEST 來刪除 TEST 文件了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五講第三節︰一個具有選擇性的保存命令 ** 要保存文件的部分內容,請輸入 :#,# w FILENAME ** 1. 再來執行一次 :!dir 或者 :!ls 獲知當前目錄的內容,然後選擇一個合適的 不重名的文件名,比如 TEST 。 2. 接著將光標移動至本頁的最頂端,然後按 CTRL-g 找到該行的行號。別忘了 行號哦。 3. 接著把光標移動至本頁的最底端,再按一次 CTRL-g 。也別忘了這個行好哦。 4. 為了只保存文章的某個部分,請輸入 :#,# w TEST 。這裡的 #,# 就是上面 要求您記住的行號(頂端行號,底端行號),而 TEST 就是選定的文件名。 5. 最後,用 :!dir 確認文件是否正確保存。但是這次先別刪除掉。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五講第四節︰提取和合並文件 ** 要向當前文件中插入另外的文件的內容,請輸入 :r FILENAME ** 1. 請鍵入 :!dir 確認您前面創建的 TEST 文件還在。 2. 然後將光標移動至當前頁面的頂端。 特別提示︰ 執行步驟3之後您將看到第五講第三節,請屆時再往下移動回到這裡來。 3. 接著通過 :r TEST 將前面創建的名為 TEST 的文件提取進來。 特別提示︰您所提取進來的文件將從光標所在位置處開始置入。 4. 為了確認文件已經提取成功,移動光標回到原來的位置就可以注意有兩份第 五講第三節,一份是原本,另外一份是來自文件的副本。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五講小結 1. :!command 用于執行一個外部命令 command。 請看一些實際例子︰ :!dir - 用于顯示當前目錄的內容。 :!rm FILENAME - 用于刪除名為 FILENAME 的文件。 2. :w FILENAME 可將當前 VIM 中正在編輯的文件保存到名為 FILENAME 的文件中。 3. :#,#w FILENAME 可將當前編輯文件第 # 行至第 # 行的內容保存到文件 FILENAME 中。 4. :r FILENAME 可提取磁盤文件 FILENAME 並將其插入到當前文件的光標位置 後面。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六講第一節︰打開類命令 ** 輸入 o 將在光標的下方打開新的一行並進入插入模式。** 1. 請將光標移動到本節中下面標記有 ---> 的那一行。 2. 接著輸入小寫的 o 在光標 *下方* 打開新的一行並進入插入模式。 3. 然後復制標記有 ---> 的行並按 鍵退出插入模式而進入正常模式。 ---> After typing o the cursor is placed on the open line in Insert mode. 4. 為了在光標 *上方* 打開新的一行,只需要輸入大寫的 O 而不是小寫的 o 就可以了。請在下行測試一下吧。當光標處在在該行上時,按 Shift-O可以 在該行上方新開一行。 Open up a line above this by typing Shift-O while the cursor is on this line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六講第二節︰光標後插入類命令 ** 輸入 a 將可在光標之後插入文本。 ** 1. 請在正常模式下通過輸入 $ 將光標移動到本節中下面標記有 ---> 的第一行 的末尾。 2. 接著輸入小寫的 a 則可在光標之後插入文本了。大寫的 A 則可以直接在行 末插入文本。 提示︰輸入大寫 A 的操作方法可以在行末插入文本,避免了輸入 i,光標定位到 最後一個字符,輸入的文本, 回復正常模式,箭頭右鍵移動光標以及 x 刪除當前光標所在位置字符等等諸多繁雜的操作。 3. 操作之後第一行就可以補充完整了。請注意光標後插入文本與插入模式是基 本完全一致的,只是文本插入的位置定位稍有不同罷了。 ---> This line will allow you to practice ---> This line will allow you to practice appending text to the end of a line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六講第三節︰另外一個置換類命令的版本 ** 輸入大寫的 R 可連續替換多個字符。** 1. 請將光標移動到本節中下面標記有 ---> 的第一行。 2. 移動光標到第一行中不同于標有 ---> 的第二行的第一個單詞的開始,即單 詞 last 處。 3. 然後輸入大寫的 R 開始把第一行中的不同于第二行的剩余字符逐一輸入,就 可以全部替換掉原有的字符而使得第一行完全雷同第二行了。 ---> To make the first line the same as the last on this page use the keys. ---> To make the first line the same as the second, type R and the new text. 4. 請注意︰如果您按 退出置換模式回復正常模式,尚未替換的文本將仍 然保持原狀。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六講第四節︰設置類命令的選項 ** 設置可使查找或者替換可忽略大小寫的選項 ** 1. 要查找單詞 ignore 可在正常模式下輸入 /ignore 。要重復查找該詞,可以 重復按 n 鍵。 2. 然後設置 ic 選項(ic就是英文忽略大小寫Ignore Case的首字母縮寫詞),即 輸入︰ :set ic 3. 現在可以通過鍵入 n 鍵再次查找單詞 ignore。重復查找可以重復鍵入 n 鍵。 4. 然後設置 hlsearch 和 incsearch 這兩個選項,輸入以下內容︰ :set hls is 5. 現在可以再次輸入查找命令,看看會有什麼效果︰ /ignore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六講小結 1. 輸入小寫的 o 可以在光標下方打開新的一行並將光標置于新開的行首,進入 插入模式。 輸入大寫的 O 可以在光標上方打開新的一行並將光標置于新開的行首,進入 插入模式。 2. 輸入小寫的 a 可以在光標所在位置之後插入文本。 輸入大寫的 A 可以在光標所在行的行末之後插入文本。 3. 輸入大寫的 R 將進入替換模式,直至按 鍵退出替換模式而進入正常 模式。 4. 輸入 :set xxx 可以設置 xxx 選項。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第七講︰在線幫助命令 ** 使用在線幫助系統 ** Vim 擁有一個細致全面的在線幫助系統。要啟動該幫助系統,請選擇如下三種方 法之一︰ - 按下 鍵 (如果鍵盤上有的話) - 按下 鍵 (如果鍵盤上有的話) - 輸入 :help <回車> 輸入 :q <回車> 可以關閉幫助窗口。 提供一個正確的參數給":help"命令,您可以找到關于該主題的幫助。請試驗以 下參數(可別忘了按回車鍵哦。:)︰ :help w <回車> :help c_ :help insert-index <回車> :help user-manual <回車> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第八講︰創建一個啟動腳本 ** 啟用vim的功能 ** Vim的功能特性要比vi多得多,但大部分功能都沒有缺省激活。為了啟動更多的 功能,您得創建一個vimrc文件。 1. 開始編輯vimrc文件,這取決于您所使用的操作系統︰ :edit ~/.vimrc 這是Unix系統所使用的命令 :edit $VIM/_vimrc 這是Windows系統所使用的命令 2. 接著導入vimrc范例文件︰ :read $VIMRUNTIME/vimrc_example.vim 3. 保存文件,命令為︰ :write 在下次您啟動vim的時候,編輯器就會有了語法高亮的功能。您可以繼續把您喜 歡的其它功能設置添加到這個vimrc文件中。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim 教程到此結束。本教程只是為了簡明地介紹一下vim編輯器,但已足以讓您 很容易學會使用本編輯器了。毋庸質疑,vim還有很多很多的命令,本教程所介 紹的還差得遠著呢。所以您要精通的話,還望繼續努力哦。下一步您可以閱讀 vim手冊,使用的命令是︰ :help user-manual 為了更進一步的參考和學習,以下這本書值得推薦︰ Vim - Vi Improved - 作者︰Steve Oualline 出版社︰New Riders 這是第一本完全講解vim的書籍。對于初學者特別有用。其中還包含有大量實例 和圖示。欲知詳情,請訪問 http://iccf-holland.org/click5.html 以下這本書比較老了而且內容主要是vi而不是vim,但是也值得推薦︰ Learning the Vi Editor - 作者︰Linda Lamb 出版社︰O'Reilly & Associates Inc. 這是一本不錯的書,通過它您幾乎能夠了解到全部vi能夠做到的事情。此書的第 六個版本也包含了一些關于vim的信息。 本教程是由來自Calorado School of Minese的Michael C. Pierce、Robert K. Ware 所編寫的,其中來自Colorado State University的Charles Smith提供了 很多創意。編者通信地址是︰ bware@mines.colorado.edu 本教程已由Bram Moolenaar專為vim進行修訂。 譯制者附言︰ =========== 簡體中文教程翻譯版之譯制者為梁昌泰 ,還有 另外一個聯系地址︰linuxrat@gnuchina.org。 繁體中文教程是從簡體中文教程翻譯版使用 Debian GNU/Linux 中文項目小 組的于廣輝先生編寫的中文漢字轉碼器 autoconvert 轉換而成的,並對轉 換的結果做了一些細節的改動。 變更記錄︰ ========= 2002年08月30日 梁昌泰 感謝 RMS@SMTH 的指正,將多處錯誤修正。 2002年04月22日 梁昌泰 感謝 xuandong@sh163.net 的指正,將兩處錯別字修正。 2002年03月18日 梁昌泰 根據Bram Moolenaar先生在2002年03月16日的來信要求,將vimtutor1.4中譯 版升級到vimtutor1.5。 2001年11月15日 梁昌泰 將vimtutor1.4中譯版提交給Bram Moolenaar和Sven Guckes。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!8:j:jvim80/tutor/tutor.hu.cp1250nu[=============================================================================== == d v z l j k a V I M - o k t a t b a n - 1.5-s verzi == =============================================================================== A Vim egy nagyon hatkony szerkeszt, amelynek rengeteg utastsa van, tl sok, hogy egy ilyen oktatban (tutorban), mint az itteni mindet elmagyarzzuk. Ez az oktat arra trekszik, hogy annyit elmagyarzzon, amennyi elg, hogy knnyedn hasznljuk a Vim-et, az ltalnos cl szvegszerkesztt. A feladatok megoldshoz 25-30 perc szksges attl fggen, mennyit tltnk a ksrletezssel. A leckben szerepl utastsok mdostani fogjk a szveget. Ksztsen msolatot errl a fjlrl, ha gyakorolni akar. (Ha "vimtutor"-ral indtotta, akkor ez mr egy msolat.) Fontos megrteni, hogy ez az oktat cselekedve tanttat. Ez azt jelenti, hogy nnek ajnlott vgrehajtania az utastsokat, hogy megfelelen megtanulja azokat. Ha csak olvassa, elfelejti! Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, s Nyomja meg megfelel szmszor a j gombot, hogy az 1.1-es lecke teljesen a kpernyn legyen! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.1. lecke: A KURZOR MOZGATSA ** A kurzor mozgatshoz nyomja meg a h,j,k,l gombokat az albbi szerint. ** ^ k Tipp: A h billenty van balra, s balra mozgat < h l > A l billenty van jobbra, s jobbra mozgat j A j billenty olyan, mint egy lefele nyl v 1. Mozgassa a kurzort krbe az ablakban, amg hozz nem szokik! 2. Tartsa lenyomva a lefelt (j), akkor ismtldik! ---> Most tudja, hogyan mehet a kvetkez leckre. 3. A lefel gomb hasznlatval menjen a 1.2. leckre! Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az -et, hogy norml mdba kerljn, s ismtelje meg a parancsot! Megj: A kurzor gomboknak is mkdnik kell, de a hjkl hasznlatval sokkal gyorsabban tud, mozogni, ha hozzszokik. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.2. lecke: BE S KILPS A VIMBL !! MEGJ: Mieltt vgrehajtja az albbi lpseket, olvassa vgig a leckt !! 1. Nyomja meg az gombot (hogy biztosan norml mdban legyen). 2. rja: :q! . ---> Ezzel kilp a szerkesztbl a vltozsok MENTSE NLKL. Ha menteni szeretn a vltozsokat s kilpni, rja: :wq 3. Amikor a shell promptot ltja, rja be a parancsot, amely ebbe az oktatba hozza: Ez valsznleg: vimtutor Normlis esetben ezt rn: vim tutor.hu ---> 'vim' jelenti a vimbe belpst, 'tutor.hu' a fjl, amit szerkeszteni kvn. 4. Ha megjegyezte a lpseket s biztos magban, hajtsa vgre a lpseket 1-tl 3-ig, hogy kilpjen s visszatrjen a szerkesztbe. Azutn menjen az 1.3. leckre. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.3. lecke: SZVEG SZERKESZTSE - TRLS ** Norml mdban nyomjon x-et, hogy a kurzor alatti karaktert trlje. ** 1. Mozgassa a kurzort a ---> kezdet sorra! 2. A hibk kijavtshoz mozgassa a kurzort amg a trlend karakter fl nem r. 3. Nyomja meg az x gombot, hogy trlje a nem kvnt karaktert. 4. Ismtelje a 2, 3, 4-es lpseket, hogy kijavtsa a mondatot. ---> szi jjjell izziik aa galaggonya rruuhja. 5. Ha a sor helyes, ugorjon a 1.4. leckre. MEGJ: A tanuls sorn ne memorizlni prbljon, hanem hasznlat sorn tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.4. lecke: SZVEG SZERKESZTSE - BESZRS ** Norml mdban i megnyomsval lehet beilleszteni. ** 1. Az albbi els ---> kezdet sorra menjen. 2. Ahhoz, hogy az elst azonoss tegye a msodikkal, mozgassa a kurzort az els karakterre, amely UTN szveget kell beszrni. 3. Nyomjon i-t s rja be a megfelel szveget. 4. Amikor mindent bert, nyomjon -et, hogy Norml mdba visszatrjen. Ismtelje a 2 s 4 kztti lpseket, hogy kijavtsa a mondatot. ---> Az that sol hizik pr sz. ---> Az itt lthat sorbl hinyzik pr rsz. 5. Ha mr begyakorolta a beszrst, menjen az albbi sszefoglalra. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. LECKE SSZEFOGLALJA 1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja. h (balra) j (le) k (fel) l (jobbra) 2. A Vimbe (a $ prompttl) gy lphet be: vim FILENAME 3. A Vimbl gy lphet ki: :q! a vltoztatsok eldobsval. vagy gy: :wq a vltozsok mentsvel. 4. A kurzor alatti karakter trlse norml mdban: x 5. Szveg beszrsa a kurzor utn norml mdban: i gpelje be a szveget MEGJ: Az megnyomsa norml mdba viszi, vagy megszakt egy nem befejezett rszben befejezett parancsot. Most folytassuk a 2. leckvel! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.1. lecke: TRL UTASTSOK ** dw trl a sz vgig. ** 1. Nyomjon -et, hogy megbizonyosodjon, hogy norml mdban van! 2. Mozgassa a kurzort a ---> kezdet sorra! 3. Mozgassa a kurzort arra annak a sznak az elejre, amit trlni szeretne. Trlje az llatokat a mondatbl. 4. A sz trlshez rja: dw MEGJ: Ha rosszul kezdte az utastst csak nyomjon gombot a megszaktshoz. ---> Pr sz kutya nem uhu illik pingvin a mondatba tehn. 5. Ismtelje a 3 s 4 kztti utastsokat amg kell s ugorjon a 2.2 leckre! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.2. lecke: MG TBB TRL UTASTS ** d$ bersval a sor vgig trlhet. ** 1. Nyomjon -et, hogy megbizonyosodjon, hogy norml mdban van! 2. Mozgassa a kurzort a ---> kezdet sorra! 3. Mozgassa a kurzort a helyes sor vgre (az els . UTN)! 4. d$ begpelsvel trlje a sor vgt! ---> Valaki a sor vgt ktszer gpelte be. ktszer gpelte be. 5. Menjen a 2.3. leckre, hogy megrtse mi trtnt! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.3. lecke: UTASTSOKRL S MOZGSOKRL A d (delete=trls) utasts formja a kvetkez: [szm] d mozgs VAGY d [szm] mozgs Ahol: szm - hnyszor hajtdjon vgre a parancs (elhagyhat, alaprtk=1). d - a trls (delete) utasts. mozgs - amin a parancsnak teljeslnie kell (albb listzva). Mozgsok rvid listja: w - a kurzortl a sz vgig, belertve a szkzt. e - a kurzortl a sz vgig, NEM belertve a szkzt. $ - a kurzortl a sor vgig. MEGJ: Csupn a mozgs begpelsvel (parancs nlkl) a kurzor mozgs ltal megadott helyre kerl. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.4. lecke: EGSZ SOROK FELDOLGOZSA ** dd bersval trlheti az egsz sort. ** A teljes sor trlsnek gyakorisga miatt a Vi tervezi elhatroztk, hogy knnyebb lenne csupn a d-t ktszer megnyomni, hogy egy sort trljnk. 1. Mozgassa a kurzort az albbi kifejezsek msodik sorra! 2. dd begpelsvel trlje a sort! 3. Menjen a 3. (eredetileg 4.) sorra! 4. 2dd (ugyebr szm-utasts-mozgs) begpelsvel trljn kt sort! 1) Alv szegek a jghideg homokban, 2) - kezdi a klt - 3) Plaktmagnyban z jjelek. 4) Pingvinek ne fljetek, 5) Tvolrl egy vaku villant, 6) gve hagytad a folyosn a villanyt. 7) Ma ontjk vremet. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.5. lecke: A VISSZAVONS (UNDO) PARANCS ** u gpelsvel visszavonhat az utols parancs, U az egsz sort helyrelltja. ** 1. Menjnk az albbi ---> kezdet sor els hibjra! 2. x lenyomsval trlje az els felesleges karaktert! 3. u megnyomsval vonja vissza az utolsnak vgrehajtott utastst! 4. Msodjra javtson ki minden hibt a sorban az x utastssal! 5. Most nagy U -val lltsa vissza a sor eredeti llapott! 6. Nyomja meg az u gombot prszor, hogy az U s az azt megelz utastsokat visszalltsa! 7. CTRL-R (CTRL gomb lenyomsa mellett ssn R-t) prszor csinlja jra a visszavont parancsokat (redo)! ---> Javtsa a hhibkaat ebbben a sooorban majd lltsa visszaaa az eredetit. 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke sszefoglaljra. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2. LECKE SSZEFOGLALJA 1. Trls a kurzortl a sz vgig: dw 2. Trls a kurzortl a sor vgig: d$ 3. Egsz sor trlse: dd 4. Egy utasts alakja norml mdban: [szm] utasts mozgs VAGY utasts [szm] mozgs ahol: szm - hnyszor ismteljk a parancsot utasts - mit tegynk, pl. d a trlskor mozgs - mire hasson az utasts, pldul w (sz=word), $ (a sor vgig), stb. 5. Az elz tett visszavonsa (undo): u (kis u) A sor sszes vltozsnak visszavonsa: U (nagy U) Visszavonsok visszavonsa: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.1. lecke: A BEILLESZTS (PUT) PARANCS ** p letsvel az utolsnak trltet a kurzor utn illeszthetjk. ** 1. Mozgassuk a kurzort az albbi sorok els sorra. 2. dd letsvel trljk a sort s eltroldik a Vim pufferben. 3. Mozgassuk a kurzort azeltt a sor ELTTI sorba, ahov mozgatni szeretnnk a trlt sort. 4. Norml mdban rjunk p bett a trlt sor beillesztshez. 5. Folytassuk a 2-4. utastsokkal hogy a helyes sorrendet kapjuk. d) Can you learn too? b) Violets are blue, c) Intelligence is learned, a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.2. lecke: AZ TRS (REPLACE) PARANCS ** r s a karakterek letsvel a kurzor alatti karaktert megvltoztatjuk. ** 1. Mozgassuk a kurzort az els ---> kezdet sorra! 2. Mozgassuk a kurzort az els hiba fl! 3. r majd a kvnt karakter letsvel vltoztassuk meg a hibsat! 4. A 2. s 3. lpsekkel javtsuk az sszes hibt! ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. Menjnk a 3.2. leckre! MEGJ: Emlkezzen, hogy nem memorizlssal, hanem gyakorlssal tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.3. lecke: A CSERE (CHANGE) PARANCS ** A sz egy rsznek megvltoztatshoz rjuk: cw . ** 1. Mozgassuk a kurzort az els ---> kezdet sorra! 2. Vigye a kurzort a Ezen sz z betje fl! 3. cw s a helyes szrsz (itt 'bben') bersval javtsa a szt! 4. lenyomsa utn a kvetkez hibra ugorjon (az els cserlend karakterre)! 5. A 3. s 4. lpsek ismtlsvel az els mondatot tegye a msodikkal azonoss! ---> Ezen a sorrrrr pr szra meg kell vltozzanak a change utaskrs. ---> Ebben a sorban pr szt meg kell vltoztatni a change utastssal. Vegyk szre, hogy a cw nem csak a szt rja t, hanem beszr (insert) mdba vlt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.4. lecke: TBBFLE VLTOZTATS c-VEL ** A c utasts hasznlhat ugyanazokkal az mozgsokkal mint a trls ** 1. A change utasts a trlssel azonosan viselkedik. A forma: [szm] c mozgs OR c [szm] mozgs 2. A mozgsok is azonosak, pl. w (sz), $ (sorvg), stb. 3. Mozgassuk a kurzort az els ---> kezdet sorra! 4. Menjnk az els hibra! 5. c$ begpelsvel a sorvgeket tegyk azonoss s nyomjunk -et! ---> Ennek a sornak a vge kiigaztsra szorul, hogy megegyezzen a msodikkal. ---> Ennek a sornak a vge a c$ paranccsal vltoztathat meg. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3. LECKE SSZEFOGLALJA 1. A mr trlt sort beillesztshez nyomjunk p-t. Ez a trlt szveget a kurzor UTN helyezi (ha sor kerlt trlsre, a kurzor alatti sorba). 2. A kurzor alatti karakter trshoz az r-et s azt a karaktert nyomjuk, amellyel az eredetit fell szeretnnk rni. 3. A vltoztats (c) utasts a karaktertl az mozgs vgig vltoztatja meg az mozgst. Pldul a cw a kurzortl a sz vgig, a c$ a sor vgig. 4. A vltoztats formtuma: [szm] c mozgs VAGY c [szm] mozgs Ugorjunk a kvetkez leckre! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.1. lecke: HELY S FJLLLAPOT ** CTRL-g megnyomsval megnzhetjk a helynket a fjlban s a fjl llapott. SHIFT-G letsvel a fjl adott sorra ugorhatunk. ** Megj: Olvassuk el az egsz leckt a lpsek vgrehajtsa eltt!! 1. Tartsuk nyomva a Ctrl gombot s nyomjunk g-t. Az llapotsor megjelenik a lap aljn a fjlnvvel s az aktulis sor sorszmval. Jegyezzk meg a sorszmot a 3. lpshez! 2. Nyomjunk Shift-G-t a lap aljra ugrshoz! 3. ssk be az eredeti sor szmt, majd ssnk shift-G-t! Ezzel visszajutunk az eredeti sorra ahol Ctrl-g-t nyomtunk. (A bert szm NEM fog megjelenni a kpernyn.) 4. Ha megjegyezte a feladatot, hajtsa vgre az 1-3. lpseket! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.2. lecke: A KERESS (SEARCH) PARANCS ** / majd a kvnt kifejezs bersval kereshetjk meg a kifejezst. ** 1. Norml mdban ssnk / karaktert! Ez s a kurzor megjelenik a kperny aljn, ahogy a : utasts is. 2. rjuk be: 'hiibaa' ! Ez az a sz amit keresnk. 3. A kifejezs jabb keresshez ssk le egyszeren: n . A kifejezs ellenkez irnyban trtn keresshez ezt ssk be: Shift-N . 4. Ha visszafel szeretne keresni, akkor ? kell a / helyett. ---> "hiibaa" nem a helyes mdja a hiba lersnak; a hiibaa egy hiba. Megj: Ha a keress elri a fjl vgt, akkor az elejn kezdi. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.3. lecke: ZRJELEK PRJNAK KERESSE ** % letsvel megtalljuk a ),], vagy } prjt. ** 1. Helyezze a kurzort valamelyik (, [, vagy { zrjelre a ---> kezdet sorban! 2. ssn % karaktert! 3. A kurzor a zrjel prjra fog ugrani. 4. % letsvel visszaugrik az eredeti zrjelre. ---> Ez ( egy tesztsor (-ekkel, [-ekkel ] s {-ekkel } a sorban. )) Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a zrjelek nem prosak! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.4. lecke: A HIBK KIJAVTSNAK EGY MDJA ** :s/rgi/j/g begpelsvel az 'j'-ra cserljk a 'rgi'-t. ** 1. Menjnk a ---> kezdet sorra! 2. rjuk be: :s/eggy/egy . Ekkor csak az els vltozik meg a sorban. 3. Most ezt rjuk: :s/eggy/egg/g amely globlisan helyettest a sorban, azaz minden elfordulst. Ez a sorban minden elfordulst helyettest. ---> eggy heggy meggy, szembe jn eggy msik heggy. 4. Kt sor kztt a karaktersor minden elfordulsnak helyettestse: :#,#s/rgi/j/g ahol #,# a kt sor sorszma. :%s/rgi/j/g a fjlbeli sszes elforduls helyettestse. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4. LECKE SSZEFOGLALJA 1. Ctrl-g kirja az kurzor helyt a fjlban s a fjl llapott. Shift-G a fjl vgre megy, gg az elejre. Egy szm utn Shift-G az adott szm sorra ugrik. 2. / utn egy kifejezs ELREFELE keresi a kifejezst. 2. ? utn egy kifejezs VISSZAFELE keresi a kifejezst. Egy keress utn az n a kvetkez elfordulst keresi azonos irnyban Shift-N az ellenkez irnyban keres. 3. % begpelsvel, ha (,),[,],{, vagy } karakteren vagyunk a zrjel prjra ugrik. 4. az els rgi helyettestse jjal a sorban :s/rgi/j az sszes rgi helyettestse jjal a sorban :s/rgi/j/g kt sor kztti kifejezsekre :#,#s/rgi/j/g # helyn az aktulis sor (.) s az utols ($) is llhat :.,$/rgi/j/g A fjlbeli sszes elforduls helyettestse :%s/rgi/j/g Mindenkori megerstsre vr 'c' hatsra :%s/rgi/j/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.1. lecke: KLS PARANCS VGREHAJTSA ** :! utn kls parancsot rva vgrehajtdik a parancs. ** 1. rjuk be az ismers : parancsot, hogy a kurzort a kperny aljra helyezzk. Ez lehetv teszi egy parancs berst. 2. ! (felkiltjel) bersval tegyk lehetv kls hj (shell)-parancs vgrehajtst. 3. rjunk pldul ls parancsot a ! utn majd ssnk -t. Ez ki fogja listzni a knyvtrunkat ugyangy, mintha a shell promptnl lennnk. Vagy rja ezt :!dir ha az ls nem mkdik. Megj: Ilymdon brmely kls utasts vgrehajthat. Megj: Minden : parancs utn -t kell tni. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.2. lecke: BVEBBEN A FJLOK RSRL ** A fjlok vltozsait gy rhatjuk ki :w FJLNV. ** 1. :!dir vagy :!ls bersval listzzuk a knyvtrunkat! n mr tudja, hogy -t kell tnie utna. 2. Vlasszon egy fjlnevet, amely mg nem ltezik pl. TESZT! 3. rja: :w TESZT (ahol TESZT a vlasztott fjlnv)! 4. Ez elmenti a teljes fjlt (a Vim oktatjt) TESZT nven. Ellenrzskpp rjuk ismt :!dir hogy lssuk a knyvtrat! (Felfel gombbal : utn az elz utastsok visszahozhatak.) Megj: Ha n kilpne a Vimbl s s visszatrne a TESZT fjlnvvel, akkor a fjl az oktat mentskori pontos msolata lenne. 5. Tvoltsa el a fjlt (MS-DOS): :!del TESZT vagy (Unix): :!rm TESZT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.3. lecke: EGY KIVLASZTOTT RSZ KIRSA ** A fjl egy rsznek kirshoz rja :#,# w FJLNV ** 1. :!dir vagy :!ls bersval listzza a knyvtrat, s vlasszon egy megfelel fjlnevet, pl. TESZT. 2. Mozgassa a kurzort ennek az oldalnak a tetejre, s nyomjon Ctrl-g-t, hogy megtudja a sorszmot. JEGYEZZE MEG A SZMOT! 3. Most menjen a lap aljra, s sse be ismt: Ctrl-g. EZT A SZMOT IS JEGYEZZE MEG! 4. Ha csak ezt a rszt szeretn menteni a fjlnak, rja :#,# w TESZT ahol #,# a kt sorszm, amit megjegyzett, TESZT az n fjlneve. 5. Ismt nzze meg, hogy a fjl ott van (:!dir) de NE trlje. 6. Vimben ltezik egy msik lehetsg: nyomja meg a Shift-V gombprt az els menteni kvnt soron, majd menjen le az utolsra, ezutn rja :w TESZT2 Ekkor a TESZT2 fjlba kerl a kijellt rsz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.4. lecke: FJLOK VISSZALLTSA S SSZEFZSE ** Egy fjl tartalmnak beillesztshez rja :r FJLNV ** 1. :!dir bersval nzze meg, hogy az n TESZT fjlja ltezik mg. 2. Helyezze a kurzort ennek az oldalnak a tetejre. MEGJ: A 3. lps utn az 5.3. leckt fogja ltni. Azutn LEFEL indulva keresse meg ismt ezt a leckt. 3. Most szrja be a TESZT nev fjlt a :r TESZT paranccsal, ahol TESZT az n fjljnak a neve. MEGJ: A fjl, amit beillesztett a kurzora alatt helyezkedik el. 4. Hogy ellenrizzk, hogy a fjlt tnyleg beillesztettk, menjen vissza, s nzze meg, hogy ktszer szerepel az 5.3. lecke! Az eredeti mellett a fjlbl bemsolt is ott van. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5. LECKE SSZEFOGLALJA 1. :!parancs vgrehajt egy kls utastst. Pr hasznos plda: (MS-DOS) (Unix) :!dir :!ls - knyvtrlista kirsa. :!del FJLNV :!rm FJLNV - FJLNV nev fjl trlse. 2. :w FJLNV kirja a jelenlegi Vim-fjlt a lemezre FJNV nven. 3. :#,#w FJLNV kirja a kt sorszm (#) kztti sorokat FJLNV-be Msik lehetsg, hogy a kezdsornl Shift-v-t nyom lemegy az utols sorra, majd ezt ti be :w FJLNV 4. :r FJLNV beolvassa a FJLNV fjlt s behelyezi a jelenlegi fjlba a kurzorpozci utni sorba. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.1. lecke: A MEGNYITS (OPEN) PARANCS ** o bersval nyit egy j sort a kurzor alatt s beszr mdba vlt ** 1. Mozgassuk a kurzort a ---> kezdet sorra. 2. o (kicsi) bersval nyisson egy sort a kurzor ALATT! Ekkor automatikusan beszr (insert) mdba kerl. 3. Msolja le a ---> jel sort s megnyomsval lpjen ki a beszr mdbl. ---> Az o lenyomsa utn a kurzor a kvetkez sor elejn ll beszr mdban. 4. A kurzor FELETTI sor megnyitshoz egyszeren nagy O bett rjon kicsi helyett. Prblja ki a kvetkez soron! Nyisson egy j sort efelett Shift-O megnyomsval, mialatt a kurzor ezen a soron ll. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.2. lecke: AZ APPEND PARANCS ** a lenyomsval a kurzor UTN szrhatunk szveget. ** 1. Mozgassuk a kurzort a kvetkez ---> kezdet sor vgre gy, hogy norml mdban $-t r be. 2. Kis "a" letsvel szveget szrhat be AMG a karakter mg, amelyen a kurzor ll. (A nagy "A" az egsz sor vgre rja a szveget.) Megj: A Vimben a sor legvgre is lehet llni, azonban ez eldjben a Vi-ban nem lehetsges, ezrt abban az a nlkl elg krlmnyes a sor vghez szveget rni. 3. Egsztse ki az els sort. Vegye szre, hogy az a utasts (append) teljesen egyezik az i-vel (insert) csupn a beszrt szveg helye klnbzik. ---> Ez a sor lehetv teszi nnek, hogy gyakorolja ---> Ez a sor lehetv teszi nnek, hogy gyakorolja a sor vgre beillesztst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.3. lecke: AZ TRS MSIK VLTOZATA ** Nagy R bersval rhat fell tbb mint egy karaktert. ** 1. Mozgassuk a kurzort az els ---> kezdet sorra! 2. Helyezze a kurzort az els sz elejre amely eltr a msodik ---> kezdet sor tartalmtl (a 'az utolsval' rsztl). 3. Nyomjon R karaktert s rja t a szveg maradkt az els sorban gy, hogy a kt sor egyez legyen. ---> Az els sort tegye azonoss az utolsval: hasznlja a gombokat. ---> Az els sort tegye azonoss a msodikkal: rjon R-t s az j szveget. 4. Jegyezzk meg, ha -et nyomok, akkor a vltozatlanul hagyott szvegek vltozatlanok maradnak. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.4. lecke: BELLTSOK ** lltsuk be, hogy a keress s a helyettests ne fggjn kis/NAGYbetktl ** 1. Keressk meg az 'ignore'-t az berva: /ignore Ezt ismteljk tbbszr az n billentyvel 2. lltsuk be az 'ic' (Ignore case) lehetsget gy: :set ic 3. Most keressnk ismt az 'ignore'-ra n-nel Ismteljk meg tbbszr a keresst: n 4. lltsuk be a 'hlsearch' s 'incsearch' lehetsgeket: :set hls is 5. Most ismt rjuk be a keresparancsot, s lssuk mi trtnik: /ignore 6. A kiemelst szntessk meg albbi utastsok egyikvel: :set nohls vagy :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6. LECKE SSZEFOGLALJA 1. o bersval j sort nyitunk meg a sor ALATT s a kurzor az j sorban lesz beszrs-mdban. Nagy O a sor FELETT nyit j sort, s oda kerl a kurzor. 2. a bersval az aktulis karaktertl UTN (jobbra) szrhatunk be szveget. Nagy A automatikusan a sor legvghez adja hozz a szveget. 3. A nagy R betsvel tr (replace) mdba kerlnk lenyomsig. 4. ":set xxx" bersval az "xxx" opci llthat be. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7. lecke: AZ ON-LINE SG PARANCSAI ** Az online sgrendszer hasznlata ** A Vim rszletes sgval rendelkezik. Indulshoz a kvetkezk egyikt tegye: - nyomja meg a gombot (ha van ilyen) - nyomja meg az gombot (ha van ilyen) - rja be: :help :q bersval zrhatja be a sgablakot. Majdnem minden tmakrrl tallhat sgt, argumentum megadsval ":help" utasts . Prblja az albbiakat ki (-t ne felejtsk): :help w :help c_, 2006-2012 PK!>{{vim80/tutor/tutor.pl.utf-8nu[=============================================================================== = W i t a j w t u t o r i a l u V I M - a - Wersja 1.7. = =============================================================================== Vim to potężny edytor, który posiada wiele poleceń, zbyt dużo, by wyjaśnić je wszystkie w tym tutorialu. Ten przewodnik ma nauczyć Cię posługiwać się wystarczająco wieloma komendami, byś mógł łatwo używać Vima jako edytora ogólnego przeznaczenia. Czas potrzebny na ukończenie tutoriala to 25 do 30 minut i zależy od tego jak wiele czasu spędzisz na eksperymentowaniu. UWAGA: Polecenia wykonywane w czasie lekcji zmodyfikują tekst. Zrób wcześniej kopię tego pliku do ćwiczeń (jeśli zacząłeś komendą "vimtutor", to już pracujesz na kopii). Pamiętaj, że przewodnik ten został zaprojektowany do nauki poprzez ćwiczenia. Oznacza to, że musisz wykonywać polecenia, by nauczyć się ich prawidłowo. Jeśli będziesz jedynie czytał tekst, szybko zapomnisz wiele poleceń! Teraz upewnij się, że nie masz wciśniętego Caps Locka i wciskaj j tak długo dopóki Lekcja 1.1. nie wypełni całkowicie ekranu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.1.: PORUSZANIE SIĘ KURSOREM ** By wykonać ruch kursorem, wciśnij h, j, k, l jak pokazano. ** ^ k Wskazówka: h jest po lewej < h l > l jest po prawej j j wygląda jak strzałka w dół v 1. Poruszaj kursorem dopóki nie będziesz pewien, że pamiętasz polecenia. 2. Trzymaj j tak długo aż będzie się powtarzał. Teraz wiesz jak dojść do następnej lekcji. 3. Używając strzałki w dół przejdź do następnej lekcji. Uwaga: Jeśli nie jesteś pewien czegoś co wpisałeś, wciśnij , by wrócić do trybu Normal. Wtedy powtórz polecenie. Uwaga: Klawisze kursora także powinny działać, ale używając hjkl będziesz w stanie poruszać się o wiele szybciej, jak się tylko przyzwyczaisz. Naprawdę! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.2.: WYCHODZENIE Z VIM-a !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj całą lekcję !! 1. Wciśnij (aby upewnić się, że jesteś w trybie Normal). 2. Wpisz: :q!. To spowoduje wyjście z edytora PORZUCAJĄC wszelkie zmiany, jakie zdążyłeś zrobić. Jeśli chcesz zapamiętać zmiany i wyjść, wpisz: :wq 3. Kiedy widzisz znak zachęty powłoki wpisz komendę, żeby wrócić do tutoriala. Czyli: vimtutor 4. Jeśli chcesz zapamiętać polecenia, wykonaj kroki 1. do 3., aby wyjść i wrócić do edytora. UWAGA: :q! porzuca wszelkie zmiany jakie zrobiłeś. W następnych lekcjach dowiesz się jak je zapamiętywać. 5. Przenieś kursor do lekcji 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.3.: EDYCJA TEKSTU - KASOWANIE ** Wciśnij x aby usunąć znak pod kursorem. ** 1. Przenieś kursor do linii poniżej oznaczonej --->. 2. By poprawić błędy, naprowadź kursor na znak do usunięcia. 3. Wciśnij x aby usunąć niechciany znak. 4. Powtarzaj kroki 2. do 4. dopóki zdanie nie jest poprawne. ---> Kkrowa prrzeskoczyła prrzez ksiiężycc. 5. Teraz, kiedy zdanie jest poprawione, przejdź do Lekcji 1.4. UWAGA: Ucz się przez ćwiczenie, nie wkuwanie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) ** Wciśnij i aby wstawić tekst. ** 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. 2. Aby poprawić pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym, gdzie tekst ma być wstawiony. 3. Wciśnij i a następnie wpisz konieczne poprawki. 4. Po poprawieniu błędu wciśnij , by wrócić do trybu Normal. Powtarzaj kroki 2. do 4., aby poprawić całe zdanie. ---> W tej brkje trochę . ---> W tej linii brakuje trochę tekstu. 5. Kiedy czujesz się swobodnie wstawiając tekst, przejdź do podsumowania poniżej. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.5.: EDYCJA TEKSTU - APPENDING (dodawanie) ** Wciśnij A by dodać tekst. ** 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. Nie ma znaczenia, który to będzie znak. 2. Wciśnij A i wpisz odpowiednie dodatki. 3. Kiedy tekst został dodany, wciśnij i wróć do trybu Normalnego. 4. Przenieś kursor do drugiej linii oznaczonej ---> i powtórz kroki 2. i 3., aby poprawić zdanie. ---> Brakuje tu tro Brakuje tu trochę tekstu. ---> Tu też trochę bra Tu też trochę brakuje. 5. Kiedy już utrwaliłeś ćwiczenie, przejdź do lekcji 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.6.: EDYCJA PLIKU ** Użyj :wq aby zapisać plik i wyjść. ** !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj całą lekcję !! 1. Zakończ tutorial tak jak w lekcji 1.2.: :q! lub, jeśli masz dostęp do innego terminala, wykonaj kolejne kroki tam. 2. W powłoce wydaj polecenie: vim tutor "vim" jest poleceniem uruchamiającym edytor Vim. 'tutor' to nazwa pliku, jaki chcesz edytować. Użyj pliku, który może zostać zmieniony. 3. Dodaj i usuń tekst tak, jak się nauczyłeś w poprzednich lekcjach. 4. Zapisz plik ze zmianami i opuść Vima: :wq 5. Jeśli zakończyłeś vimtutor w kroku 1., uruchom go ponownie i przejdź do podsumowania poniżej. 6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 1. PODSUMOWANIE 1. Poruszasz kursorem używając "strzałek" i klawiszy hjkl . h (w lewo) j (w dół) k (do góry) l (w prawo) 2. By wejść do Vima, (z powłoki) wpisz: vim NAZWA_PLIKU 3. By wyjść z Vima, wpisz: :q! by usunąć wszystkie zmiany. LUB: :wq by zmiany zachować. 4. By usunąć znak pod kursorem, wciśnij: x 5. By wstawić tekst przed kursorem lub dodać: i wpisz tekst wstawi przed kursorem A wpisz tekst doda na końcu linii UWAGA: Wciśnięcie przeniesie Cię z powrotem do trybu Normal lub odwoła niechciane lub częściowo wprowadzone polecenia. Teraz możemy kontynuować i przejść do Lekcji 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.1.: POLECENIE DELETE (usuwanie) ** Wpisz dw by usunąć wyraz. ** 1. Wciśnij , by upewnić się, że jesteś w trybie Normal. 2. Przenieś kursor do linii poniżej oznaczonej --->. 3. Przesuń kursor na początek wyrazu, który chcesz usunąć. 4. Wpisz dw by usunąć wyraz. UWAGA: Litera d pojawi się na dole ekranu. Vim czeka na wpisanie w . Jeśli zobaczysz inny znak, oznacza to, że wpisałeś coś źle; wciśnij i zacznij od początku. ---> Jest tu parę papier wyrazów, które kamień nie należą do nożyce tego zdania. 5. Powtarzaj kroki 3. i 4. dopóki zdanie nie będzie poprawne, potem przejdź do Lekcji 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.2.: WIĘCEJ POLECEŃ USUWAJĄCYCH ** Wpisz d$ aby usunąć tekst do końca linii. ** 1. Wciśnij aby się upewnić, że jesteś w trybie Normal. 2. Przenieś kursor do linii poniżej oznaczonej --->. 3. Przenieś kursor do końca poprawnego zdania (PO pierwszej . ). 4. Wpisz d$ aby usunąć resztę linii. ---> Ktoś wpisał koniec tego zdania dwukrotnie. zdania dwukrotnie. 5. Przejdź do Lekcji 2.3., by zrozumieć co się stało. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.3.: O OPERATORACH I RUCHACH Wiele poleceń zmieniających tekst jest złożonych z operatora i ruchu. Format dla polecenia usuwającego z operatorem d jest następujący: d ruch gdzie: d - operator usuwania. ruch - na czym polecenie będzie wykonywane (lista poniżej). Krótka lista ruchów: w - do początku następnego wyrazu WYŁĄCZAJĄC pierwszy znak. e - do końca bieżącego wyrazu, WŁĄCZAJĄC ostatni znak. $ - do końca linii, WŁĄCZAJĄC ostatni znak. W ten sposób wpisanie de usunie znaki od kursora do końca wyrazu. UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor tak, jak to określono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.4.: UŻYCIE MNOŻNIKA DLA RUCHU ** Wpisanie liczby przed ruchem powtarza ruch odpowiednią ilość razy. ** 1. Przenieś kursor na początek linii poniżej zaznaczonej --->. 2. Wpisz 2w aby przenieść kursor o dwa wyrazy do przodu. 3. Wpisz 3e aby przenieść kursor do końca trzeciego wyrazu w przód. 4. Wpisz 0 (zero), aby przenieść kursor na początek linii. 5. Powtórz kroki 2. i 3. z innymi liczbami. ---> To jest zwykły wiersz z wyrazami, po których możesz się poruszać. 6. Przejdź do lekcji 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.5.: UŻYCIE MNOŻNIKA, BY WIĘCEJ USUNĄĆ ** Wpisanie liczby z operatorem powtarza go odpowiednią ilość razy. ** W wyżej wspomnianej kombinacji operatora usuwania i ruchu podaj mnożnik przed ruchem, by więcej usunąć: d liczba ruch 1. Przenieś kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->. 2. Wpisz 2dw aby usunąć dwa wyrazy KAPITALIKAMI. 3. Powtarzaj kroki 1. i 2. z innymi mnożnikami, aby usunąć kolejne wyrazy KAPITALIKAMI jednym poleceniem ---> ta ASD WE linia QWE ASDF ZXCV FG wyrazów została ERT FGH CF oczyszczona. UWAGA: Mnożnik pomiędzy operatorem d i ruchem działa podobnie do ruchu bez operatora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.6.: OPEROWANIE NA LINIACH ** Wpisz dd aby usunąć całą linię. ** Z powodu częstości usuwania całych linii, projektanci Vi zdecydowali, że będzie łatwiej wpisać dwa razy d aby usunąć linię. 1. Przenieś kursor do drugiego zdania z wierszyka poniżej. 2. Wpisz dd aby usunąć wiersz. 3. Teraz przenieś się do czwartego wiersza. 4. Wpisz 2dd aby usunąć dwa wiersze. ---> 1) Róże są czerwone, ---> 2) Błoto jest fajne, ---> 3) Fiołki są niebieskie, ---> 4) Mam samochód, ---> 5) Zegar podaje czas, ---> 6) Cukier jest słodki, ---> 7) I ty też. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.7.: POLECENIE UNDO (cofnij) ** Wciśnij u aby cofnąć skutki ostatniego polecenia. U zaś, by cofnąć skutki dla całej linii. ** 1. Przenieś kursor do zdania poniżej oznaczonego ---> i umieść go na pierwszym błędzie. 2. Wpisz x aby usunąć pierwszy niechciany znak. 3. Teraz wciśnij u aby cofnąć skutki ostatniego polecenia. 4. Tym razem popraw wszystkie błędy w linii używając polecenia x . 5. Teraz wciśnij wielkie U aby przywrócić linię do oryginalnego stanu. 6. Teraz wciśnij u kilka razy, by cofnąć U i poprzednie polecenia. 7. Teraz wpisz CTRL-R (trzymaj równocześnie wciśnięte klawisze CTRL i R) kilka razy, by cofnąć cofnięcia. ---> Poopraw błędyyy w teej liniii i zaamiień je prrzez coofnij. 8. To są bardzo pożyteczne polecenia. Przejdź teraz do podsumowania Lekcji 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 2. PODSUMOWANIE 1. By usunąć znaki od kursora do następnego wyrazu, wpisz: dw 2. By usunąć znaki od kursora do końca linii, wpisz: d$ 3. By usunąć całą linię: dd 4. By powtórzyć ruch, poprzedź go liczbą: 2w 5. Format polecenia zmiany to: operator [liczba] ruch gdzie: operator - to, co trzeba zrobić (np. d dla usuwania) [liczba] - opcjonalne, ile razy powtórzyć ruch ruch - przenosi nad tekstem do operowania, takim jak w (wyraz), $ (do końca linii) etc. 6. By przejść do początku linii, użyj zera: 0 7. By cofnąć poprzednie polecenie, wpisz: u (małe u) By cofnąć wszystkie zmiany w linii, wpisz: U (wielkie U) By cofnąć cofnięcie, wpisz: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.1.: POLECENIE PUT (wstaw) ** Wpisz p by wstawić ostatnie usunięcia za kursorem. ** 1. Przenieś kursor do pierwszej linii ---> poniżej. 2. Wpisz dd aby usunąć linię i przechować ją w rejestrze Vima. 3. Przenieś kursor do linii c), POWYŻEJ tej, gdzie usunięta linia powinna się znajdować. 4. Wciśnij p by wstawić linię poniżej kursora. 5. Powtarzaj kroki 2. do 4. aż znajdą się w odpowiednim porządku. ---> d) Jak dwa aniołki. ---> b) Na dole fiołki, ---> c) A my się kochamy, ---> a) Na górze róże, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.2.: POLECENIE REPLACE (zastąp) ** Wpisz rx aby zastąpić znak pod kursorem na x . ** 1. Przenieś kursor do pierwszej linii poniżej oznaczonej ---> 2. Ustaw kursor na pierwszym błędzie. 3. Wpisz r a potem znak jaki powinien go zastąpić. 4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie będzie taka, jak druga. ---> Kjedy ten wiersz bił wstókiwany, ktoś wciznął perę złych klawirzy! ---> Kiedy ten wiersz był wstukiwany, ktoś wcisnął parę złych klawiszy! 5. Teraz czas na Lekcję 3.3. UWAGA: Pamiętaj, by uczyć się ćwicząc, a nie pamięciowo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.3.: OPERATOR CHANGE (zmień) ** By zmienić do końca wyrazu, wpisz ce . ** 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. 2. Umieść kursor na u w lunos. 3. Wpisz ce i popraw wyraz (w tym wypadku wstaw inia ). 4. Wciśnij i przejdź do następnej planowanej zmiany. 5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie będzie takie same, jak drugie. ---> Ta lunos ma pire słów, które tżina zbnic użifajonc pcmazu zmień. ---> Ta linia ma parę słów, które trzeba zmienić używając polecenia zmień. Zauważ, że ce nie tylko zamienia wyraz, ale także zmienia tryb na Insert (wprowadzanie). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.4.: WIĘCEJ ZMIAN UŻYWAJĄC c ** Polecenie change używa takich samych ruchów, jak delete. ** 1. Operator change działa tak samo, jak delete. Format wygląda tak: c [liczba] ruch 2. Ruchy są także takie same, np.: w (wyraz), $ (koniec linii) etc. 3. Przenieś się do pierwszej linii poniżej oznaczonej ---> 4. Ustaw kursor na pierwszym błędzie. 5. Wpisz c$ , popraw koniec wiersza i wciśnij . ---> Koniec tego wiersza musi być poprawiony, aby wyglądał tak, jak drugi. ---> Koniec tego wiersza musi być poprawiony używając polecenia c$ . UWAGA: Możesz używać aby poprawiać błędy w czasie pisania. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 3. PODSUMOWANIE 1. Aby wstawić tekst, który został wcześniej usunięty wciśnij p . To polecenie wstawia skasowany tekst PO kursorze (jeśli cała linia została usunięta, zostanie ona umieszczona w linii poniżej kursora). 2. By zamienić znak pod kursorem, wciśnij r a potem znak, który ma zastąpić oryginalny. 3. Operator change pozwala Ci na zastąpienie od kursora do miejsca, gdzie zabrałby Cię ruch. Np. wpisz ce aby zamienić tekst od kursora do końca wyrazu, c$ aby zmienić tekst do końca linii. 4. Format do polecenia change (zmień): c [liczba] obiekt Teraz przejdź do następnej lekcji. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 4.1.: POŁOŻENIE KURSORA ORAZ STATUS PLIKU ** Naciśnij CTRL-G aby zobaczyć swoje położenie w pliku i status pliku. Naciśnij G aby przejść do linii w pliku. ** UWAGA: Przeczytaj całą lekcję zanim wykonasz jakieś polecenia!!! 1. Przytrzymaj klawisz CTRL i wciśnij g . Używamy notacji CTRL-G. Na dole strony pojawi się pasek statusu z nazwą pliku i pozycją w pliku. Zapamiętaj numer linii dla potrzeb kroku 3. UWAGA: Możesz też zobaczyć pozycję kursora w prawym, dolnym rogu ekranu. Dzieje się tak kiedy ustawiona jest opcja 'ruler' (więcej w lekcji 6.). 2. Wciśnij G aby przejść na koniec pliku. Wciśnij gg aby przejść do początku pliku. 3. Wpisz numer linii, w której byłeś a potem G . To przeniesie Cię z powrotem do linii, w której byłeś kiedy wcisnąłeś CTRL-G. 4. Jeśli czujesz się wystarczająco pewnie, wykonaj kroki 1-3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 4.2.: POLECENIE SZUKAJ ** Wpisz / a następnie wyrażenie, aby je znaleźć. ** 1. W trybie Normal wpisz / . Zauważ, że znak ten oraz kursor pojawią się na dole ekranu tak samo, jak polecenie : . 2. Teraz wpisz błond . To jest słowo, którego chcesz szukać. 3. By szukać tej samej frazy ponownie, po prostu wciśnij n . Aby szukać tej frazy w przeciwnym, kierunku wciśnij N . 4. Jeśli chcesz szukać frazy do tyłu, użyj polecenia ? zamiast / . 5. Aby wrócić gdzie byłeś, wciśnij CTRL-O. Powtarzaj, by wrócić dalej. CTRL-I idzie do przodu. Uwaga: 'błond' to nie jest metoda, by przeliterować błąd; 'błond' to błąd. Uwaga: Kiedy szukanie osiągnie koniec pliku, będzie kontynuowane od początku o ile opcja 'wrapscan' nie została przestawiona. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 4.3.: W POSZUKIWANIU PARUJĄCYCH NAWIASÓW ** Wpisz % by znaleźć parujący ), ], lub } . ** 1. Umieść kursor na którymś z (, [, lub { w linii poniżej oznaczonej --->. 2. Teraz wpisz znak % . 3. Kursor powinien się znaleźć na parującym nawiasie. 4. Wciśnij % aby przenieść kursor z powrotem do parującego nawiasu. 5. Przenieś kursor do innego (,),[,],{ lub } i zobacz co robi % . ---> To ( jest linia testowa z (, [, ] i {, } . )) Uwaga: Ta funkcja jest bardzo użyteczna w debuggowaniu programu z niesparowanymi nawiasami! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 4.4.: POLECENIE SUBSTITUTE (zamiana) ** Wpisz :s/stary/nowy/g aby zamienić 'stary' na 'nowy'. ** 1. Przenieś kursor do linii poniżej oznaczonej --->. 2. Wpisz :s/czaas/czas . Zauważ, że to polecenie zmienia tylko pierwsze wystąpienie 'czaas' w linii. 3. Teraz wpisz :s/czaas/czas/g . Dodane g oznacza zamianę (substytucję) globalnie w całej linii. Zmienia wszystkie wystąpienia 'czaas' w linii. ---> Najlepszy czaas na zobaczenie najładniejszych kwiatów to czaas wiosny. 4. Aby zmienić wszystkie wystąpienia łańcucha znaków pomiędzy dwoma liniami, wpisz: :#,#s/stare/nowe/g gdzie #,# są numerami linii ograniczających region, gdzie ma nastąpić zamiana. wpisz :%s/stare/nowe/g by zmienić wszystkie wystąpienia w całym pliku. wpisz :%s/stare/nowe/gc by zmienić wszystkie wystąpienia w całym pliku, prosząc o potwierdzenie za każdym razem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 4. PODSUMOWANIE 1. CTRL-G pokaże Twoją pozycję w pliku i status pliku. SHIFT-G przenosi Cię do końca pliku. G przenosi do końca pliku. liczba G przenosi do linii [liczba]. gg przenosi do pierwszej linii. 2. Wpisanie / a następnie łańcucha znaków szuka łańcucha DO PRZODU. Wpisanie ? a następnie łańcucha znaków szuka łańcucha DO TYŁU. Po wyszukiwaniu wciśnij n by znaleźć następne wystąpienie szukanej frazy w tym samym kierunku lub N by szukać w kierunku przeciwnym. CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych. 3. Wpisanie % gdy kursor znajduje się na (,),[,],{, lub } lokalizuje parujący znak. 4. By zamienić pierwszy stary na nowy w linii, wpisz :s/stary/nowy By zamienić wszystkie stary na nowy w linii, wpisz :s/stary/nowy/g By zamienić frazy pomiędzy dwoma liniami # wpisz :#,#s/stary/nowy/g By zamienić wszystkie wystąpienia w pliku, wpisz :%s/stary/nowy/g By Vim prosił Cię o potwierdzenie, dodaj 'c' :%s/stary/nowy/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.1.: JAK WYKONAĆ POLECENIA ZEWNĘTRZNE? ** Wpisz :! a następnie zewnętrzne polecenie, by je wykonać. ** 1. Wpisz znajome polecenie : by ustawić kursor na dole ekranu. To pozwala na wprowadzenie komendy linii poleceń. 2. Teraz wstaw ! (wykrzyknik). To umożliwi Ci wykonanie dowolnego zewnętrznego polecenia powłoki. 3. Jako przykład wpisz ls za ! a następnie wciśnij . To polecenie pokaże spis plików w Twoim katalogu, tak jakbyś był przy znaku zachęty powłoki. Możesz też użyć :!dir jeśli ls nie działa. Uwaga: W ten sposób można wykonać wszystkie polecenia powłoki. Uwaga: Wszystkie polecenia : muszą być zakończone . Od tego momentu nie zawsze będziemy o tym wspominać. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.2.: WIĘCEJ O ZAPISYWANIU PLIKÓW ** By zachować zmiany w tekście, wpisz :w NAZWA_PLIKU . ** 1. Wpisz :!dir lub :!ls by zobaczyć spis plików w katalogu. Już wiesz, że musisz po tym wcisnąć . 2. Wybierz nazwę pliku, jaka jeszcze nie istnieje, np. TEST. 3. Teraz wpisz: :w TEST (gdzie TEST jest nazwą pliku jaką wybrałeś.) 4. To polecenie zapamięta cały plik (Vim Tutor) pod nazwą TEST. By to sprawdzić, wpisz :!dir lub :!ls żeby znowu zobaczyć listę plików. Uwaga: Zauważ, że gdybyś teraz wyszedł z Vima, a następnie wszedł ponownie poleceniem vim TEST , plik byłby dokładną kopią tutoriala, kiedy go zapisywałeś. 5. Teraz usuń plik wpisując (MS-DOS): :!del TEST lub (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU ** By zachować część pliku, wpisz v ruch :w NAZWA_PLIKU ** 1. Przenieś kursor do tego wiersza. 2. Wciśnij v i przenieś kursor do punktu 5. Zauważ, że tekst został podświetlony. 3. Wciśnij znak : . Na dole ekranu pojawi się :'<,'> . 4. Wpisz w TEST , gdzie TEST to nazwa pliku, który jeszcze nie istnieje. Upewnij się, że widzisz :'<,'>w TEST zanim wciśniesz Enter. 5. Vim zapisze wybrane linie do pliku TEST. Użyj :!dir lub :!ls , żeby to zobaczyć. Jeszcze go nie usuwaj! Użyjemy go w następnej lekcji. UWAGA: Wciśnięcie v zaczyna tryb Wizualny. Możesz poruszać kursorem, by zmienić rozmiary zaznaczenia. Możesz też użyć operatora, by zrobić coś z tekstem. Na przykład d usuwa tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.4.: WSTAWIANIE I ŁĄCZENIE PLIKÓW ** By wstawić zawartość pliku, wpisz :r NAZWA_PLIKU ** 1. Umieść kursor tuż powyżej tej linii. UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejdź do DOŁU, by zobaczyć ponownie tę lekcję. 2. Teraz wczytaj plik TEST używając polecenia :r TEST , gdzie TEST jest nazwą pliku. Wczytany plik jest umieszczony poniżej linii z kursorem. 3. By sprawdzić czy plik został wczytany, cofnij kursor i zobacz, że teraz są dwie kopie Lekcji 5.3., oryginał i kopia z pliku. UWAGA: Możesz też wczytać wyjście zewnętrznego polecenia. Na przykład :r !ls wczytuje wyjście polecenia ls i umieszcza je pod poniżej kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 5. PODSUMOWANIE 1. :!polecenie wykonuje polecenie zewnętrzne. Użytecznymi przykładami są: :!dir - pokazuje spis plików w katalogu. :!rm NAZWA_PLIKU - usuwa plik NAZWA_PLIKU. 2. :w NAZWA_PLIKU zapisuje obecny plik Vima na dysk z nazwą NAZWA_PLIKU. 3. v ruch :w NAZWA_PLIKU zapisuje Wizualnie wybrane linie do NAZWA_PLIKU. 4. :r NAZWA_PLIKU wczytuje z dysku plik NAZWA_PLIKU i wstawia go do bieżącego pliku poniżej kursora. 5. :r !dir wczytuje wyjście polecenia dir i umieszcza je poniżej kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.1.: POLECENIE OPEN (otwórz) ** Wpisz o by otworzyć linię poniżej kursora i przenieść się do trybu Insert (wprowadzanie). ** 1. Przenieś kursor do linii poniżej oznaczonej --->. 2. Wpisz o (małe), by otworzyć linię PONIŻEJ kursora i przenieść się do trybu Insert (wprowadzanie). 3. Wpisz trochę tekstu i wciśnij by wyjść z trybu Insert (wprowadzanie). ---> Po wciśnięciu o kursor znajdzie się w otwartej linii w trybie Insert. 4. By otworzyć linię POWYŻEJ kursora, wciśnij wielkie O zamiast małego o . Wypróbuj to na linii poniżej. ---> Otwórz linię powyżej wciskając SHIFT-O gdy kursor będzie na tej linii. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.2.: POLECENIE APPEND (dodaj) ** Wpisz a by dodać tekst ZA kursorem. ** 1. Przenieś kursor do początku pierwszej linii poniżej oznaczonej ---> 2. Wciskaj e dopóki kursor nie będzie na końcu li . 3. Wpisz a (małe), aby dodać tekst ZA znakiem pod kursorem. 4. Dokończ wyraz tak, jak w linii poniżej. Wciśnij aby opuścić tryb Insert. 5. Użyj e by przejść do kolejnego niedokończonego wyrazu i powtarzaj kroki 3. i 4. ---> Ta li poz Ci ćwi dodaw teks do koń lin ---> Ta linia pozwoli Ci ćwiczyć dodawanie tekstu do końca linii. Uwaga: a , i oraz A prowadzą do trybu Insert, jedyną różnicą jest miejsce, gdzie nowe znaki będą dodawane. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.3.: INNA WERSJA REPLACE (zamiana) ** Wpisz wielkie R by zamienić więcej niż jeden znak. ** 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. Przenieś kursor do pierwszego xxx . 2. Wciśnij R i wpisz numer poniżej w drugiej linii, tak, że zastąpi on xxx. 3. Wciśnij by opuścić tryb Replace. Zauważ, że reszta linii pozostaje niezmieniona. 5. Powtarzaj kroki by wymienić wszystkie xxx. ---> Dodanie 123 do xxx daje xxx. ---> Dodanie 123 do 456 daje 579. UWAGA: Tryb Replace jest jak tryb Insert, ale każdy znak usuwa istniejący znak. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.4.: KOPIOWANIE I WKLEJANIE TEKSTU ** użyj operatora y aby skopiować tekst i p aby go wkleić ** 1. Przejdź do linii oznaczonej ---> i umieść kursor za "a)". 2. Wejdź w tryb Wizualny v i przenieś kursor na początek "pierwszy". 3. Wciśnij y aby kopiować (yankować) podświetlony tekst. 4. Przenieś kursor do końca następnej linii: j$ 5. Wciśnij p aby wkleić (wpakować) tekst. Dodaj: a drugi . 6. Użyj trybu Wizualnego, aby wybrać " element.", yankuj go y , przejdź do końca następnej linii j$ i upakuj tam tekst z p . ---> a) to jest pierwszy element. b) Uwaga: możesz użyć y jako operatora; yw kopiuje jeden wyraz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.5.: USTAWIANIE OPCJI ** Ustawianie opcji tak, by szukaj lub substytucja ignorowały wielkość liter ** 1. Szukaj 'ignore' wpisując: /ignore Powtórz szukanie kilka razy naciskając klawisz n . 2. Ustaw opcję 'ic' (Ignore case -- ignoruj wielkość liter) poprzez wpisanie: :set ic 3. Teraz szukaj 'ignore' ponownie wciskając: n Zauważ, że Ignore i IGNORE także są teraz znalezione. 4. Ustaw opcje 'hlsearch' i 'incsearch': :set hls is 5. Teraz wprowadź polecenie szukaj ponownie i zobacz co się zdarzy: /ignore 6. Aby wyłączyć ignorowanie wielkości liter: :set noic Uwaga: Aby usunąć podświetlanie dopasowań, wpisz: :nohlsearch Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 6. PODSUMOWANIE 1. Wpisanie o otwiera linię PONIŻEJ kursora. Wpisanie O otwiera linię POWYŻEJ kursora. 2. Wpisanie a wstawia tekst ZA znakiem, na którym jest kursor. Wpisanie A dodaje tekst na końcu linii. 3. Polecenie e przenosi do końca wyrazu. 4. Operator y yankuje (kopiuje) tekst, p pakuje (wkleja) go. 5. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopóki nie zostanie wciśnięty . 6. Wpisanie ":set xxx" ustawia opcję "xxx". Niektóre opcje: 'ic' 'ignorecase' ignoruj wielkość znaków 'is' 'incsearch' pokaż częściowe dopasowania 'hls' 'hlsearch' podświetl wszystkie dopasowania Możesz użyć zarówno długiej, jak i krótkiej formy. 7. Dodaj "no", aby wyłączyć opcję: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 7.1. JAK UZYSKAĆ POMOC? ** Użycie systemu pomocy on-line ** Vim posiada bardzo dobry system pomocy on-line. By zacząć, spróbuj jednej z trzech możliwości: - wciśnij klawisz (jeśli taki masz) - wciśnij klawisz (jeśli taki masz) - wpisz :help Przeczytaj tekst w oknie pomocy, aby dowiedzieć się jak działa pomoc. wpisz CTRL-W CTRL-W aby przeskoczyć z jednego okna do innego wpisz :q aby zamknąć okno pomocy. Możesz też znaleźć pomoc na każdy temat podając argument polecenia ":help". Spróbuj tych (nie zapomnij wcisnąć ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 7.2. TWORZENIE SKRYPTU STARTOWEGO ** Włącz możliwości Vima ** Vim ma o wiele więcej możliwości niż Vi, ale większość z nich jest domyślnie wyłączona. Jeśli chcesz włączyć te możliwości na starcie musisz utworzyć plik "vimrc". 1. Początek edycji pliku "vimrc" zależy od Twojego systemu: :edit ~/.vimrc dla Uniksa :edit $VIM/_vimrc dla MS-Windows 2. Teraz wczytaj przykładowy plik "vimrc": :read $VIMRUNTIME/vimrc_example.vim 3. Zapisz plik: :w Następnym razem, gdy zaczniesz pracę w Vimie będzie on używać podświetlania składni. Możesz dodać wszystkie swoje ulubione ustawienia do tego pliku "vimrc". Aby uzyskać więcej informacji, wpisz :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 7.3.: UZUPEŁNIANIE ** Uzupełnianie linii poleceń z CTRL-D i ** 1. Upewnij się, że Vim nie jest w trybie kompatybilności: :set nocp 2. Zerknij, jakie pliki są w bieżącym katalogu: :!ls lub :!dir 3. Wpisz początek polecenia: :e 4. Wciśnij CTRL-D i Vim pokaże listę poleceń, jakie zaczynają się na "e". 5. Wciśnij i Vim uzupełni polecenie do ":edit". 6. Dodaj spację i zacznij wpisywać nazwę istniejącego pliku: :edit FIL 7. Wciśnij . Vim uzupełni nazwę (jeśli jest niepowtarzalna). UWAGA: Uzupełnianie działa dla wielu poleceń. Spróbuj wcisnąć CTRL-D i . Użyteczne zwłaszcza przy :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 7. PODSUMOWANIE 1. Wpisz :help albo wciśnij lub aby otworzyć okno pomocy. 2. Wpisz :help cmd aby uzyskać pomoc o cmd . 3. Wpisz CTRL-W CTRL-W aby przeskoczyć do innego okna. 4. Wpisz :q aby zamknąć okno pomocy. 5. Utwórz plik startowy vimrc aby zachować wybrane ustawienia. 6. Po poleceniu : , wciśnij CTRL-D aby zobaczyć możliwe uzupełnienia. Wciśnij aby użyć jednego z nich. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tutaj się kończy tutorial Vima. Został on pomyślany tak, aby dać krótki przegląd jego możliwości, wystarczający byś mógł go używać. Jest on daleki od kompletności, ponieważ Vim ma o wiele, wiele więcej poleceń. Dla dalszej nauki rekomendujemy książkę: Vim - Vi Improved - autor Steve Oualline Wydawca: New Riders Pierwsza książka całkowicie poświęcona Vimowi. Użyteczna zwłaszcza dla początkujących. Zawiera wiele przykładów i ilustracji. Zobacz http://iccf-holland.org./click5.html Starsza pozycja i bardziej o Vi niż o Vimie, ale także warta polecenia: Learning the Vi Editor - autor Linda Lamb Wydawca: O'Reilly & Associates Inc. To dobra książka, by dowiedzieć się niemal wszystkiego, co chciałbyś zrobić z Vi. Szósta edycja zawiera też informacje o Vimie. Po polsku wydano: Edytor vi. Leksykon kieszonkowy - autor Arnold Robbins Wydawca: Helion 2001 (O'Reilly). ISBN: 83-7197-472-8 http://helion.pl/ksiazki/vilek.htm Jest to książeczka zawierająca spis poleceń vi i jego najważniejszych klonów (między innymi Vima). Edytor vi - autorzy Linda Lamb i Arnold Robbins Wydawca: Helion 2001 (O'Reilly) - wg 6. ang. wydania ISBN: 83-7197-539-2 http://helion.pl/ksiazki/viedyt.htm Rozszerzona wersja Learning the Vi Editor w polskim tłumaczeniu. Ten tutorial został napisany przez Michaela C. Pierce'a i Roberta K. Ware'a, Colorado School of Mines korzystając z pomocy Charlesa Smitha, Colorado State University. E-mail: bware@mines.colorado.edu. Zmodyfikowane dla Vima przez Brama Moolenaara. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Przetłumaczone przez Mikołaja Machowskiego, Sierpień 2001, rev. Marzec 2002 2nd rev. Wrzesień 2004 3rd rev. Marzec 2006 4th rev. Grudzień 2008 Wszelkie uwagi proszę kierować na: mikmach@wp.pl PK!G$VVvim80/tutor/tutor.denu[=============================================================================== = W i l l k o m m e n im V I M T u t o r - Version 1.7.de.1 = =============================================================================== Vim ist ein sehr mächtiger Editor, der viele Befehle bereitstellt; zu viele, um alle in einem Tutor wie diesem zu erklären. Dieser Tutor ist so gestaltet, um genug Befehle vorzustellen, dass Du die Fähigkeit erlangst, Vim mit Leichtigkeit als einen Allzweck-Editor zu verwenden. Die Zeit für das Durcharbeiten dieses Tutors beträgt ca. 25-30 Minuten, abhängig davon, wie viel Zeit Du mit Experimentieren verbringst. ACHTUNG: Die in den Lektionen angewendeten Kommandos werden den Text modifizieren. Erstelle eine Kopie dieser Datei, in der Du üben willst (falls Du "vimtutor" aufgerufen hast, ist dies bereits eine Kopie). Es ist wichtig, sich zu vergegenwärtigen, dass dieser Tutor für das Anwenden konzipiert ist. Das bedeutet, dass Du die Befehle anwenden musst, um sie richtig zu lernen. Wenn Du nur den Text liest, vergisst Du die Befehle! Jetzt stelle sicher, dass deine Umstelltaste NICHT gedrückt ist und betätige die j Taste genügend Mal, um den Cursor nach unten zu bewegen, so dass Lektion 1.1 den Bildschirm vollkommen ausfüllt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.1: BEWEGEN DES CURSORS ** Um den Cursor zu bewegen, drücke die h,j,k,l Tasten wie unten gezeigt. ** ^ Hilfestellung: k Die h Taste befindet sich links und bewegt nach links. < h l > Die l Taste liegt rechts und bewegt nach rechts. j Die j Taste ähnelt einem Pfeil nach unten. v 1. Bewege den Cursor auf dem Bildschirm umher, bis Du Dich sicher fühlst. 2. Halte die Nach-Unten-Taste (j) gedrückt, bis sie sich wiederholt. Jetzt weißt Du, wie Du Dich zur nächsten Lektion bewegen kannst. 3. Benutze die Nach-Unten-Taste, um Dich zu Lektion 1.2 zu bewegen. Anmerkung: Immer, wenn Du Dir unsicher bist über das, was Du getippt hast, drücke , um Dich in den Normalmodus zu begeben. Dann gib das gewünschte Kommando noch einmal ein. Anmerkung: Die Cursor-Tasten sollten ebenfalls funktionieren. Aber wenn Du hjkl benutzt, wirst Du in der Lage sein, Dich sehr viel schneller umherzubewegen, wenn Du Dich einmal daran gewöhnt hast. Wirklich! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.2: VIM BEENDEN !! Hinweis: Bevor Du einen der unten aufgeführten Schritte ausführst, lies diese gesamte Lektion!! 1. Drücke die Taste (um sicherzustellen, dass Du im Normalmodus bist). 2. Tippe: :q! . Dies beendet den Editor und VERWIRFT alle Änderungen, die Du gemacht hast. 3. Wenn Du die Eingabeaufforderung siehst, gib das Kommando ein, das Dich zu diesem Tutor geführt hat. Dies wäre: vimtutor 4. Wenn Du Dir diese Schritte eingeprägt hast und Du Dich sicher fühlst, führe Schritte 1 bis 3 aus, um den Editor zu verlassen und wieder hineinzugelangen. Anmerkung: :q! verwirft alle Änderungen, die Du gemacht hast. Einige Lektionen später lernst Du, die Änderungen in einer Datei zu speichern. 5. Bewege den Cursor abwärts zu Lektion 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.3: TEXT EDITIEREN - LÖSCHEN ** Drücke x , um das Zeichen unter dem Cursor zu löschen. ** 1. Bewege den Cursor zu der mit ---> markierten Zeile unten. 2. Um die Fehler zu beheben, bewege den Cursor, bis er über dem Zeichen steht, das gelöscht werden soll. 3. Drücke die x Taste, um das unerwünschte Zeichen zu löschen. 4. Wiederhole die Schritte 2 bis 4, bis der Satz korrekt ist. ---> Die Kkuh sprangg übberr deen Moond. 5. Nun, da die Zeile korrekt ist, gehe weiter zur Lektion 1.4. Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu lernen, lerne vielmehr durch Anwenden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.4: TEXT EDITIEREN - EINFÜGEN ** Drücke i , um Text einzufügen. ** 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. 2. Um die erste Zeile mit der zweiten gleichzumachen, bewege den Cursor auf das erste Zeichen NACH der Stelle, an der Text eingefügt werden soll. 3. Drücke i und gib die nötigen Ergänzungen ein. 4. Wenn jeweils ein Fehler beseitigt ist, drücke , um zum Normalmodus zurückzukehren. Wiederhole Schritte 2 bis 4, um den Satz zu korrigieren. ---> In dieser ft etwas . ---> In dieser Zeile fehlt etwas Text. 5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, gehe zu Lektion 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.5: TEXT EDITIEREN - ANFÜGEN ** Drücke A , um Text anzufügen. ** 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. Dabei ist gleichgültig, auf welchem Zeichen der Zeile der Cursor steht. 2. Drücke A und gib die erforderlichen Ergänzungen ein. 3. Wenn das Anfügen abgeschlossen ist, drücke , um in den Normalmodus zurückzukehren. 4. Bewege den Cursor zur zweiten mit ---> markierten Zeile und wiederhole die Schritte 2 und 3, um den Satz zu auszubessern. ---> In dieser Zeile feh In dieser Zeile fehlt etwas Text. ---> Auch hier steh Auch hier steht etwas Unvollständiges. 5. Wenn Du dich mit dem Anfügen von Text sicher fühlst, gehe zu Lektion 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.6: EINE DATEI EDITIEREN ** Benutze :wq , um eine Datei zu speichern und Vim zu verlassen. ** !! Hinweis: Bevor Du einen der unten aufgeführten Schritte ausführst, lies diese gesamte Lektion!! 1. Verlasse den Editor so wie in Lektion 1.2: :q! Oder, falls du Zugriff zu einem anderen Terminal hast, führe das Folgende dort aus. 2. Gib dieses Kommando in die Eingabeaufforderung ein: vim tutor 'vim' ist der Aufruf des Editors, 'tutor' ist die zu editierende Datei. Benutze eine Datei, die geändert werden darf. 3. Füge Text ein oder lösche ihn, wie Du in den vorangehenden Lektionen gelernt hast. 4. Speichere die geänderte Datei und verlasse Vim mit: :wq 5. Falls Du in Schritt 1 den vimtutor beendet hast, starte vimtutor neu und bewege dich abwärts bis zur folgenden Zusammenfassung. 6. Nachdem Du obige Schritte gelesen und verstanden hast: führe sie durch. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 1 1. Der Cursor wird mit den Pfeiltasten oder den Tasten hjkl bewegt. h (links) j (unten) k (aufwärts) l (rechts) 2. Um Vim aus der Eingabeaufforderung zu starten, tippe: vim DATEI 3. Um Vim zu verlassen und alle Änderungen zu verwerfen, tippe: :q! . 4. Um das Zeichen unter dem Cursor zu löschen, tippe: x 5. Um Text einzufügen oder anzufügen, tippe: i Einzufügenden Text eingeben Einfügen vor dem Cursor A Anzufügenden Text eingeben Anfügen nach dem Zeilenende Anmerkung: Drücken von bringt Dich in den Normalmodus oder bricht ein ungewolltes, erst teilweise eingegebenes Kommando ab. Nun fahre mit Lektion 2 fort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.1: LÖSCHKOMMANDOS ** Tippe dw , um ein Wort zu löschen. ** 1. Drücke , um sicherzustellen, dass Du im Normalmodus bist. 2. Bewege den Cursor zu der mit ---> markierten Zeile unten. 3. Bewege den Cursor zum Anfang eines Wortes, das gelöscht werden soll. 4. Tippe dw , um das Wort zu entfernen. Anmerkung: Der Buchstabe d erscheint auf der untersten Zeile des Schirms, wenn Du ihn eingibst. Vim wartet darauf, dass Du w eingibst. Falls Du ein anderes Zeichen als d siehst, hast Du etwas Falsches getippt; drücke und beginne noch einmal. ---> Einige Wörter lustig gehören nicht Papier in diesen Satz. 5. Wiederhole die Schritte 3 und 4, bis der Satz korrekt ist und gehe zur Lektion 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.2: WEITERE LÖSCHKOMMANDOS ** Tippe d$ , um bis zum Ende der Zeile zu löschen. ** 1. Drücke , um sicherzustellen, dass Du im Normalmodus bist. 2. Bewege den Cursor zu der mit ---> markierten Zeile unten. 3. Bewege den Cursor zum Ende der korrekten Zeile (NACH dem ersten . ). 4. Tippe d$ , um bis zum Zeilenende zu löschen. ---> Jemand hat das Ende der Zeile doppelt eingegeben. doppelt eingegeben. 5. Gehe weiter zur Lektion 2.3 , um zu verstehen, was hierbei vorgeht. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.3: ÜBER OPERATOREN UND BEWEGUNGSZÜGE Viele Kommandos, die Text ändern, setzen sich aus einem Operator und einer Bewegung zusammen. Das Format für ein Löschkommando mit dem Löschoperator d lautet wie folgt: d Bewegung wobei: d - der Löschoperator Bewegung - worauf der Löschoperator angewandt wird (unten aufgeführt). Eine kleine Auflistung von Bewegungen: w - bis zum Beginn des nächsten Wortes OHNE dessen erstes Zeichen. e - zum Ende des aktuellen Wortes MIT dessen letztem Zeichen. $ - zum Ende der Zeile MIT dem letzten Zeichen. Dementsprechend löscht die Eingabe von de vom Cursor an bis zum Wortende. Anmerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den Cursor entsprechend. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.4: ANWENDUNG EINES ZÄHLERS FÜR EINEN BEWEGUNGSSCHRITT ** Die Eingabe einer Zahl vor einem Bewegungsschritt wiederholt diesen. ** 1. Bewege den Cursor zum Beginn der mit ---> markierten Zeile unten. 2. Tippe 2w , um den Cursor zwei Wörter vorwärts zu bewegen. 3. Tippe 3e , um den Cursor zum Ende des dritten Wortes zu bewegen. 4. Tippe 0 (Null) , um zum Anfang der Zeile zu gelangen. 5. Wiederhole Schritte 2 und 3 mit verschiedenen Nummern. ---> Dies ist nur eine Zeile aus Wörtern, um sich darin herumzubewegen. 6. Gehe weiter zu Lektion 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.5: ANWENDUNG EINES ZÄHLERS FÜR MEHRERE LÖSCHVORGÄNGE ** Die Eingabe einer Zahl mit einem Operator wiederholt diesen mehrfach. ** In der Kombination aus Löschoperator und Bewegungsschritt (siehe oben) stellt man, um mehr zu löschen dem Schritt einen Zähler voran: d Nummer Bewegungsschritt 1. Bewege den Cursor zum ersten Wort in GROSSBUCHSTABEN in der mit ---> markieren Zeile. 2. Tippe d2w , um die zwei Wörter in GROSSBUCHSTABEN zu löschen. 3. Wiederhole Schritte 1 und 2 mit einem anderen Zähler, um die darauffol- genden Wörter in GROSSBUCHSTABEN mit einem einzigen Kommando zu löschen. ---> Diese ABC DE Zeile FGHI JK LMN OP mit Wörtern ist Q RS TUV bereinigt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.6: ARBEITEN AUF ZEILEN ** Tippe dd , um eine ganze Zeile zu löschen. ** Wegen der Häufigkeit, dass man ganze Zeilen löscht, kamen die Entwickler von Vi darauf, dass es leichter wäre, einfach zwei d's einzugeben, um eine Zeile zu löschen. 1. Bewege den Cursor zur zweiten Zeile in der unten stehenden Redewendung. 2. Tippe dd , um die Zeile zu löschen. 3. Nun bewege Dich zur vierten Zeile. 4. Tippe 2dd , um zwei Zeilen zu löschen. ---> 1) Rosen sind rot, ---> 2) Matsch ist lustig, ---> 3) Veilchen sind blau, ---> 4) Ich habe ein Auto, ---> 5) Die Uhr sagt die Zeit, ---> 6) Zucker ist süß, ---> 7) So wie Du auch. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.7: RÜCKGÄNGIG MACHEN (UNDO) ** Tippe u , um die letzten Kommandos rückgängig zu machen ** ** oder U , um eine ganze Zeile wiederherzustellen. ** 1. Bewege den Cursor zu der mit ---> markierten Zeile unten und setze ihn auf den ersten Fehler. 2. Tippe x , um das erste unerwünschte Zeichen zu löschen. 3. Nun tippe u , um das soeben ausgeführte Kommando rückgängig zu machen. 4. Jetzt behebe alle Fehler auf der Zeile mit Hilfe des x Kommandos. 5. Nun tippe ein großes U , um die Zeile in ihren Ursprungszustand wiederherzustellen. 6. Nun tippe u einige Male, um das U und die vorhergehenden Kommandos rückgängig zu machen. 7. Nun tippe CTRL-R (halte CTRL gedrückt und drücke R) mehrere Male, um die Kommandos wiederherzustellen (die Rückgängigmachungen rückgängig machen). ---> Beehebe die Fehller diesser Zeile und sttelle sie mitt 'undo' wieder her. 8. Dies sind sehr nützliche Kommandos. Nun gehe weiter zur Zusammenfassung von Lektion 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 2 1. Um vom Cursor bis zum nächsten Wort zu löschen, tippe: dw 2. Um vom Cursor bis zum Ende einer Zeile zu löschen, tippe: d$ 3. Um eine ganze Zeile zu löschen, tippe: dd 4. Um eine Bewegung zu wiederholen, stelle eine Nummer voran: 2w 5. Das Format für ein Änderungskommando ist: Operator [Anzahl] Bewegungsschritt wobei: Operator - gibt an, was getan werden soll, zum Beispiel d für delete [Anzahl] - ein optionaler Zähler, um den Bewegungsschritt zu wiederholen Bewegungsschritt - Bewegung über den zu ändernden Text, wie w (Wort), $ (zum Ende der Zeile), etc. 6. Um Dich zum Anfang der Zeile zu begeben, benutze die Null: 0 7. Um vorherige Aktionen rückgängig zu machen, tippe: u (kleines u) Um alle Änderungen auf einer Zeile rückgängig zu machen: U (großes U) Um die Rückgängigmachungen rückgängig zu machen, tippe: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.1: ANFÜGEN (PUT) ** Tippe p , um vorher gelöschten Text nach dem Cursor anzufügen. ** 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. 2. Tippe dd , um die Zeile zu löschen und sie in einem Vim-Register zu speichern. 3. Bewege den Cursor zur Zeile c), ÜBER derjenigen, wo die gelöschte Zeile platziert werden soll. 4. Tippe p , um die Zeile unterhalb des Cursors zu platzieren. 5. Wiederhole die Schritte 2 bis 4, um alle Zeilen in die richtige Reihenfolge zu bringen. ---> d) Kannst Du das auch? ---> b) Veilchen sind blau, ---> c) Intelligenz ist lernbar, ---> a) Rosen sind rot, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.2: ERSETZEN (REPLACE) ** Tippe rx , um das Zeichen unter dem Cursor durch x zu ersetzen. ** 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. 2. Bewege den Cursor, bis er sich auf dem ersten Fehler befindet. 3. Tippe r und anschließend das Zeichen, welches dort stehen sollte. 4. Wiederhole Schritte 2 und 3, bis die erste Zeile gleich der zweiten ist. ---> Alf diese Zeite eingegoben wurde, wurden einike falsche Tasten gelippt! ---> Als diese Zeile eingegeben wurde, wurden einige falsche Tasten getippt! 5. Nun fahre fort mit Lektion 3.2. Anmerkung: Erinnere Dich daran, dass Du durch Anwenden lernen solltest, nicht durch Auswendiglernen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.3: ÄNDERN (CHANGE) ** Um eine Änderung bis zum Wortende durchzuführen, tippe ce . ** 1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile. 2. Platziere den Cursor auf das s von Wstwr. 3. Tippe ce und die Wortkorrektur ein (in diesem Fall tippe örter ). 4. Drücke und bewege den Cursor zum nächsten zu ändernden Zeichen. 5. Wiederhole Schritte 3 und 4 bis der erste Satz gleich dem zweiten ist. ---> Einige Wstwr dieser Zlaww lasdjlaf mit dem Ändern-Operator gaaauu werden. ---> Einige Wörter dieser Zeile sollen mit dem Ändern-Operator geändert werden. Beachte, dass ce das Wort löscht und Dich in den Eingabemodus versetzt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.4: MEHR ÄNDERUNGEN MITTELS c ** Das change-Kommando arbeitet mit denselben Bewegungen wie delete. ** 1. Der change Operator arbeitet in gleicher Weise wie delete. Das Format ist: c [Anzahl] Bewegungsschritt 2. Die Bewegungsschritte sind die gleichen , so wie w (Wort) und $ (Zeilenende). 3. Bewege Dich zur ersten unten stehenden mit ---> markierten Zeile. 4. Bewege den Cursor zum ersten Fehler. 5. Tippe c$ , gib den Rest der Zeile wie in der zweiten ein, drücke . ---> Das Ende dieser Zeile soll an die zweite Zeile angeglichen werden. ---> Das Ende dieser Zeile soll mit dem c$ Kommando korrigiert werden. Anmerkung: Du kannst die Rücktaste benutzen, um Tippfehler zu korrigieren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 3 1. Um einen vorher gelöschten Text anzufügen, tippe p . Dies fügt den gelöschten Text NACH dem Cursor an (wenn eine ganze Zeile gelöscht wurde, wird diese in die Zeile unter dem Cursor eingefügt). 2. Um das Zeichen unter dem Cursor zu ersetzen, tippe r und danach das an dieser Stelle gewollte Zeichen. 3. Der Änderungs- (change) Operator erlaubt, vom Cursor bis zum Ende des Bewegungsschrittes zu ändern. Tippe ce , um eine Änderung vom Cursor bis zum Ende des Wortes vorzunehmen; c$ bis zum Ende einer Zeile. 4. Das Format für change ist: c [Anzahl] Bewegungsschritt Nun fahre mit der nächsten Lektion fort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.1: CURSORPOSITION UND DATEISTATUS ** Tippe CTRL-G , um deine Dateiposition sowie den Dateistatus anzuzeigen. ** ** Tippe G , um Dich zu einer Zeile in der Datei zu begeben. ** Anmerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!! 1. Halte die Ctrl Taste unten und drücke g . Dies nennen wir CTRL-G. Eine Statusmeldung am Fuß der Seite erscheint mit dem Dateinamen und der Position innerhalb der Datei. Merke Dir die Zeilennummer für Schritt 3. Anmerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten Bildschirmecke. Dies ist Auswirkung der 'ruler' Option (siehe :help 'ruler') 2. Drücke G , um Dich zum Ende der Datei zu begeben. Tippe gg , um Dich zum Anfang der Datei zu begeben. 3. Gib die Nummer der Zeile ein, auf der Du vorher warst, gefolgt von G . Dies bringt Dich zurück zu der Zeile, auf der Du gestanden hast, als Du das erste Mal CTRL-G gedrückt hast. 4. Wenn Du Dich sicher genug fühlst, führe die Schritte 1 bis 3 aus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.2: DAS SUCHEN - KOMMANDO ** Tippe / gefolgt von einem Ausdruck, um nach dem Ausdruck zu suchen. ** 1. Im Normalmodus, tippe das / Zeichen. Beachte, dass das / und der Cursor am Fuß des Schirms erscheinen, so wie beim : Kommando. 2. Nun tippe 'Fehhler' . Dies ist das Wort, nach dem Du suchen willst. 3. Um nach demselben Ausdruck weiterzusuchen, tippe einfach n (für next). Um nach demselben Ausdruck in der Gegenrichtung zu suchen, tippe N . 4. Um nach einem Ausdruck rückwärts zu suchen , benutze ? statt / . 5. Um dahin zurückzukehren, von wo Du gekommen bist, drücke CTRL-O (Halte Ctrl unten und drücke den Buchstaben o). Wiederhole dies, um noch weiter zurückzugehen. CTRL-I geht vorwärts. ---> Fehler schreibt sich nicht "Fehhler"; Fehhler ist ein Fehler Anmerkung: Wenn die Suche das Dateiende erreicht hat, wird sie am Anfang fortgesetzt, es sei denn, die 'wrapscan' Option wurde abgeschaltet. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.3: PASSENDE KLAMMERN FINDEN ** Tippe % , um eine gegenüberliegenden Klammer ),], oder } zu finden. ** 1. Platziere den Cursor auf irgendeinem der Zeichen (, [, oder { in der unten stehenden Zeile, die mit ---> markiert ist. 2. Nun tippe das % Zeichen. 3. Der Cursor bewegt sich zur passenden gegenüberliegenden Klammer. 4. Tippe % , um den Cursor zur passenden anderen Klammer zu bewegen. 5. Setze den Cursor auf ein anderes (,),[,],{ oder } und probiere % aus. ---> Dies ( ist eine Testzeile ( mit [ verschiedenen ] { Klammern } darin. )) Anmerkung: Diese Funktionalität ist sehr nützlich bei der Fehlersuche in einem Programmtext, in dem passende Klammern fehlen! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.4: DAS ERSETZUNGSKOMMANDO (SUBSTITUTE) ** Tippe :s/alt/neu/g , um 'alt' durch 'neu' zu ersetzen. ** 1. Bewege den Cursor zu der unten stehenden mit ---> markierten Zeile. 2. Tippe :s/diee/die . Beachte, dass der Befehl nur das erste Vorkommen von "diee" ersetzt. 3. Nun tippe :s/diee/die/g . Das Zufügen des Flags g bedeutet, eine globale Ersetzung über die Zeile durchzuführen, dies ersetzt alle Vorkommen von "diee" auf der Zeile. ---> diee schönste Zeit, um diee Blumen anzuschauen, ist diee Frühlingszeit. 4. Um alle Vorkommen einer Zeichenkette innerhalb zweier Zeilen zu ändern, tippe :#,#s/alt/neu/g wobei #,# die Zeilennummern des Bereiches sind, in dem die Ersetzung durchgeführt werden soll. Tippe :%s/alt/neu/g um alle Vorkommen in der gesamten Datei zu ändern. Tippe :%s/alt/neu/gc um alle Vorkommen in der gesamten Datei zu finden mit einem Fragedialog, ob ersetzt werden soll oder nicht. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 4 1. CTRL-G zeigt die aktuelle Dateiposition sowie den Dateistatus. G bringt Dich zum Ende der Datei. Nummer G bringt Dich zur entsprechenden Zeilennummer. gg bringt Dich zur ersten Zeile. 2. Die Eingabe von / plus einem Ausdruck sucht VORWÄRTS nach dem Ausdruck. Die Eingabe von ? plus einem Ausdruck sucht RÜCKWÄRTS nach dem Ausdruck. Tippe nach einer Suche n , um das nächste Vorkommen in der gleichen Richtung zu finden; oder N , um in der Gegenrichtung zu suchen. CTRL-O bringt Dich zurück zu älteren Positionen, CTRL-I zu neueren. 3. Die Eingabe von % , wenn der Cursor sich auf (,),[,],{, oder } befindet, bringt Dich zur Gegenklammer. 4. Um das erste Vorkommen von "alt" in einer Zeile durch "neu" zu ersetzen, tippe :s/alt/neu Um alle Vorkommen von "alt" in der Zeile ersetzen, tippe :s/alt/neu/g Um Ausdrücke innerhalb zweier Zeilen # zu ersetzen :#,#s/alt/neu/g Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe :%s/alt/neu/g Für eine jedesmalige Bestätigung, addiere 'c' (confirm) :%s/alt/neu/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.1: AUSFÜHREN EINES EXTERNEN KOMMANDOS ** Gib :! , gefolgt von einem externen Kommando ein, um es auszuführen. ** 1. Tippe das vertraute Kommando : , um den Cursor auf den Fuß des Schirms zu setzen. Dies erlaubt Dir, ein Kommandozeilen-Kommando einzugeben. 2. Nun tippe ein ! (Ausrufezeichen). Dies ermöglicht Dir, ein beliebiges, externes Shellkommando auszuführen. 3. Als Beispiel tippe ls nach dem ! und drücke . Dies liefert eine Auflistung deines Verzeichnisses; genauso, als wenn Du in der Eingabeaufforderung wärst. Oder verwende :!dir , falls ls nicht geht. Anmerkung: Mit dieser Methode kann jedes beliebige externe Kommando ausgeführt werden, auch mit Argumenten. Anmerkung: Alle : Kommandos müssen durch Eingabe von abgeschlossen werden. Von jetzt an erwähnen wir dies nicht jedesmal. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.2: MEHR ÜBER DAS SCHREIBEN VON DATEIEN ** Um am Text durchgeführte Änderungen zu speichern, tippe :w DATEINAME. ** 1. Tippe :!dir oder :!ls , um eine Auflistung deines Verzeichnisses zu erhalten. Du weißt nun bereits, dass Du danach eingeben musst. 2. Wähle einen Dateinamen, der noch nicht existiert, z.B. TEST. 3. Nun tippe: :w TEST (wobei TEST der gewählte Dateiname ist). 4. Dies speichert die ganze Datei (den Vim Tutor) unter dem Namen TEST. Um dies zu überprüfen, tippe nochmals :!ls bzw. !dir, um deinen Verzeichnisinhalt zu sehen. Anmerkung: Würdest Du Vim jetzt beenden und danach wieder mit vim TEST starten, dann wäre diese Datei eine exakte Kopie des Tutors zu dem Zeitpunkt, als Du ihn gespeichert hast. 5. Nun entferne die Datei durch Eingabe von (MS-DOS): :!del TEST oder (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.3: AUSWÄHLEN VON TEXT ZUM SCHREIBEN ** Um einen Abschnitt der Datei zu speichern, tippe v Bewegung :w DATEI ** 1. Bewege den Cursor zu dieser Zeile. 2. Tippe v und bewege den Cursor zum fünften Auflistungspunkt unten. Beachte, dass der Text hervorgehoben wird. 3. Drücke das Zeichen : . Am Fuß des Schirms erscheint :'<,'> . 4. Tippe w TEST , wobei TEST ein noch nicht vorhandener Dateiname ist. Vergewissere Dich, dass Du :'<,'>w TEST siehst, bevor Du drückst. 5. Vim schreibt die ausgewählten Zeilen in die Datei TEST. Benutze :!dir oder :!ls , um sie zu sehen. Lösche sie noch nicht! Wir werden sie in der nächsten Lektion benutzen. Hinweis: Drücken von v startet die Visuelle Auswahl. Du kannst den Cursor umherbewegen, um die Auswahl zu vergrößern oder zu verkleinern. Anschließend lässt sich ein Operator anwenden, um mit dem Text etwas zu tun. Zum Beispiel löscht d den Text. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.4: EINLESEN UND ZUSAMMENFÜHREN VON DATEIEN ** Um den Inhalt einer Datei einzulesen, tippe :r DATEINAME ** 1. Platziere den Cursor direkt über dieser Zeile. BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3 sehen. Dann bewege Dich wieder ABWÄRTS, Lektion 5.4 wiederzusehen. 2. Nun lies deine Datei TEST ein indem Du das Kommando :r TEST ausführst, wobei TEST der von Dir verwendete Dateiname ist. Die eingelesene Datei wird unterhalb der Cursorzeile eingefügt. 3. Um zu überprüfen, dass die Datei eingelesen wurde, gehe zurück und beachte, dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und die eingefügte Dateiversion. Anmerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum Beispiel liest :r !ls die Ausgabe des Kommandos ls ein und platziert sie unterhalb des Cursors. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 5 1. :!Kommando führt ein externes Kommando aus. Einige nützliche Beispiele sind (MS-DOS) (Unix) :!dir :!ls - zeigt eine Verzeichnisauflistung. :!del DATEINAME :!rm DATEINAME - entfernt Datei DATEINAME. 2. :w DATEINAME speichert die aktuelle Vim-Datei unter dem Namen DATEINAME. 3. v Bewegung :w DATEINAME schreibt die Visuell ausgewählten Zeilen in die Datei DATEINAME. 4. :r DATEINAME lädt die Datei DATEINAME und fügt sie unterhalb der Cursorposition ein. 5. :r !dir liest die Ausgabe des Kommandos dir und fügt sie unterhalb der Cursorposition ein. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.1: ZEILEN ÖFFNEN (OPEN) ** Tippe o , um eine Zeile unterhalb des Cursors zu öffnen und Dich in ** ** den Einfügemodus zu begeben. ** 1. Bewege den Cursor zu der ersten mit ---> markierten Zeile unten. 2. Tippe o (klein geschrieben), um eine Zeile UNTERHALB des Cursors zu öffnen und Dich in den Einfügemodus zu begeben. 3. Nun tippe etwas Text und drücke , um den Einfügemodus zu verlassen. ---> Mit o wird der Cursor auf der offenen Zeile im Einfügemodus platziert. 4. Um eine Zeile ÜBERHALB des Cursors aufzumachen, gib einfach ein großes O statt einem kleinen o ein. Versuche dies auf der unten stehenden Zeile. ---> Öffne eine Zeile über dieser mit O , wenn der Cursor auf dieser Zeile ist. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.2: TEXT ANFÜGEN (APPEND) ** Tippe a , um Text NACH dem Cursor einzufügen. ** 1. Bewege den Cursor zum Anfang der ersten Übungszeile mit ---> unten. 2. Drücke e , bis der Cursor am Ende von Zei steht. 3. Tippe ein kleines a , um Text NACH dem Cursor anzufügen. 4. Vervollständige das Wort so wie in der Zeile darunter. Drücke , um den Einfügemodus zu verlassen. 5. Bewege Dich mit e zum nächsten unvollständigen Wort und wiederhole Schritte 3 und 4. ---> Diese Zei bietet Gelegen , Text in einer Zeile anzufü. ---> Diese Zeile bietet Gelegenheit, Text in einer Zeile anzufügen. Anmerkung: a, i und A gehen alle gleichermaßen in den Einfügemodus; der einzige Unterschied ist, wo die Zeichen eingefügt werden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.3: EINE ANDERE ART DES ERSETZENS (REPLACE) ** Tippe ein großes R , um mehr als ein Zeichen zu ersetzen. ** 1. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile. Bewege den Cursor zum Anfang des ersten xxx . 2. Nun drücke R und tippe die Nummer, die darunter in der zweiten Zeile steht, so dass diese das xxx ersetzt. 3. Drücke , um den Ersetzungsmodus zu verlassen. Beachte, dass der Rest der Zeile unverändert bleibt. 4. Wiederhole die Schritte, um das verbliebene xxx zu ersetzen. ---> Das Addieren von 123 zu xxx ergibt xxx. ---> Das Addieren von 123 zu 456 ergibt 579. Anmerkung: Der Ersetzungsmodus ist wie der Einfügemodus, aber jedes eingetippte Zeichen löscht ein vorhandenes Zeichen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.4: TEXT KOPIEREN UND EINFÜGEN ** Benutze den y Operator, um Text zu kopieren; p , um ihn einzufügen ** 1. Gehe zu der mit ---> markierten Zeile unten; setze den Cursor hinter "a)". 2. Starte den Visuellen Modus mit v , bewege den Cursor genau vor "erste". 3. Tippe y , um den hervorgehoben Text zu kopieren. 4. Bewege den Cursor zum Ende der nächsten Zeile: j$ 5. Tippe p , um den Text einzufügen und anschließend: a zweite . 6. Benutze den Visuellen Modus, um " Eintrag." auszuwählen, kopiere mittels y , bewege Dich zum Ende der nächsten Zeile mit j$ und füge den Text dort mit p an. ---> a) dies ist der erste Eintrag. b) Anmerkung: Du kannst y auch als Operator verwenden; yw kopiert ein Wort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.5: OPTIONEN SETZEN ** Setze eine Option so, dass eine Suche oder Ersetzung Groß- ** ** und Kleinschreibung ignoriert ** 1. Suche nach 'ignoriere', indem Du /ignoriere eingibst. Wiederhole die Suche einige Male, indem Du die n - Taste drückst. 2. Setze die 'ic' (Ignore case) - Option, indem Du :set ic eingibst. 3. Nun suche wieder nach 'ignoriere', indem Du n tippst. Beachte, dass jetzt Ignoriere und auch IGNORIERE gefunden wird. 4. Setze die 'hlsearch' und 'incsearch' - Optionen: :set hls is 5. Wiederhole die Suche und beobachte, was passiert: /ignoriere 6. Um das Ignorieren von Groß/Kleinschreibung abzuschalten, tippe: :set noic Anmerkung: Um die Hervorhebung der Treffer zu entfernen, gib ein: :nohlsearch Anmerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze \c im Suchausdruck: /ignoriere\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 6 1. Tippe o , um eine Zeile UNTER dem Cursor zu öffnen und den Einfügemodus zu starten Tippe O , um eine Zeile ÜBER dem Cursor zu öffnen. 2. Tippe a , um Text NACH dem Cursor anzufügen. Tippe A , um Text nach dem Zeilenende anzufügen. 3. Das Kommando e bringt Dich zum Ende eines Wortes. 4. Der Operator y (yank) kopiert Text, p (put) fügt ihn ein. 5. Ein großes R geht in den Ersetzungsmodus bis zum Drücken von . 6. Die Eingabe von ":set xxx" setzt die Option "xxx". Einige Optionen sind: 'ic' 'ignorecase' Ignoriere Groß/Kleinschreibung bei einer Suche 'is' 'incsearch' Zeige Teilübereinstimmungen für einen Suchausdruck 'hls' 'hlsearch' Hebe alle passenden Ausdrücke hervor Der Optionsname kann in der Kurz- oder der Langform angegeben werden. 7. Stelle einer Option "no" voran, um sie abzuschalten: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 7.1 : AUFRUFEN VON HILFE ** Nutze das eingebaute Hilfesystem ** Vim besitzt ein umfassendes eingebautes Hilfesystem. Für den Anfang probiere eins der drei folgenden Dinge aus: - Drücke die - Taste (falls Du eine besitzt) - Drücke die Taste (falls Du eine besitzt) - Tippe :help Lies den Text im Hilfefenster, um zu verstehen wie die Hilfe funktioniert. Tippe CTRL-W CTRL-W , um von einem Fenster zum anderen zu springen. Tippe :q , um das Hilfefenster zu schließen. Du kannst Hilfe zu praktisch jedem Thema finden, indem Du dem ":help"- Kommando ein Argument gibst. Probiere folgendes ( nicht vergessen): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 7.2: ERSTELLE EIN START-SKRIPT ** Aktiviere die Features von Vim ** Vim besitzt viele Funktionalitäten, die über Vi hinausgehen, aber die meisten von ihnen sind standardmäßig deaktiviert. Um mehr Funktionalitäten zu nutzen, musst Du eine "vimrc" - Datei erstellen. 1. Starte das Editieren der "vimrc"-Datei, abhängig von deinem System: :e ~/.vimrc für Unix :e $VIM/_vimrc für MS-Windows 2. Nun lies den Inhalt der Beispiel-"vimrc"-Datei ein: :r $VIMRUNTIME/vimrc_example.vim 3. Speichere die Datei mit: :w Beim nächsten Start von Vim wird die Syntaxhervorhebung aktiviert sein. Du kannst all deine bevorzugten Optionen zu dieser "vimrc"-Datei zufügen. Für mehr Informationen tippe :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 7.3: VERVOLLSTÄNDIGEN ** Kommandozeilenvervollständigung mit CTRL-D und ** 1. Stelle sicher, dass Vim nicht im Vi-Kompatibilitätsmodus ist: :set nocp 2. Siehe nach, welche Dateien im Verzeichnis existieren: :!ls oder :dir 3. Tippe den Beginn eines Kommandos: :e 4. Drücke CTRL-D und Vim zeigt eine Liste mit "e" beginnender Kommandos. 5. Drücke und Vim vervollständigt den Kommandonamen zu ":edit". 6. Nun füge ein Leerzeichen und den Anfang einer existierenden Datei an: :edit DAT 7. Drücke . Vim vervollständigt den Namen (falls er eindeutig ist). Anmerkung: Vervollständigung funktioniert für viele Kommandos. Probiere einfach CTRL-D und . Dies ist insbesondere nützlich für :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZUSAMMENFASSUNG VON LEKTION 7 1. Tippe :help oder drücke oder , um ein Hilfefenster zu öffnen. 2. Tippe :help Kommando , um Hilfe über Kommando zu erhalten. 3. Tippe CTRL-W CTRL-W , um zum anderen Fenster zu springen. 4. Tippe :q , um das Hilfefenster zu schließen. 5. Erstelle ein vimrc - Startskript mit deinen bevorzugter Einstellungen. 6. Drücke CTRL-D nach dem Tippen eines : Kommandos, um mögliche Vervollständigungen anzusehen. Drücke , um eine Vervollständigung zu anzuwenden. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Damit ist der Vim Tutor beendet. Seine Intention war, einen kurzen und bündigen Überblick über den Vim Editor zu geben; gerade genug, um relativ leicht mit ihm umgehen zu können. Der Vim Tutor hat nicht den geringsten Anspruch auf Vollständigkeit; Vim hat noch weitaus mehr Kommandos. Lies als nächstes das User Manual: ":help user-manual". Für weiteres Lesen und Lernen ist folgendes Buch empfehlenswert : Vim - Vi Improved - von Steve Oualline Verlag: New Riders Das erste Buch, welches durchgängig Vim gewidmet ist. Besonders nützlich für Anfänger. Viele Beispiele und Bilder sind enthalten. Siehe http://iccf-holland.org/click5.html Folgendes Buch ist älter und mehr über Vi als Vim, aber auch empfehlenswert: Textbearbeitung mit dem Vi-Editor - von Linda Lamb und Arnold Robbins Verlag O'Reilly - ISBN: 3897211262 In diesem Buch kann man fast alles finden, was man mit Vi tun möchte. Die sechste Ausgabe enthält auch Informationen über Vim. Als aktuelle Referenz für Version 6.2 und knappe Einführung dient das folgende Buch: vim ge-packt von Reinhard Wobst mitp-Verlag, ISBN 3-8266-1425-9 Trotz der kompakten Darstellung ist es durch viele nützliche Beispiele auch für Einsteiger empfehlenswert. Probekapitel und die Beispielskripte sind online erhältlich. Siehe http://iccf-holland.org/click5.html Dieses Tutorial wurde geschrieben von Michael C. Pierce und Robert K. Ware, Colorado School of Mines. Es benutzt Ideen, die Charles Smith, Colorado State University, zur Verfügung stellte. E-Mail: bware@mines.colorado.edu. Bearbeitet für Vim von Bram Moolenaar. Deutsche Übersetzung von Joachim Hofmann 2015. E-Mail: Joachim.Hof@gmx.de ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!9vim80/tutor/tutor.runu[=============================================================================== = Д о б р о п о ж а л о в а т ь в у ч е б н и к VIM -- версия 1.7 = =============================================================================== Vim -- это очень мощный редактор, имеющий множество команд, слишком много для того, чтобы их все можно было описать в таком учебнике, как этот. Этот учебник призван объяснить достаточное число команд для того, чтобы вы могли с лёгкостью использовать Vim в качестве редактора общего назначения. Вам потребуется приблизительно 25-30 минут на освоение данного учебника в зависимости от того, сколько времени вы потратите на эксперименты. Внимание! Командами в уроках вы будете изменять этот текст. Создайте копию этого файла, чтобы попрактиковаться на ней (если вы запустили "vimtutor", то это уже копия). Важно помнить, что этот учебник предназначен для обучения в процессе использования. Это означает, что вы должны запускать команды для того, чтобы как следует их изучить. Если вы просто прочитаете этот текст, то не запомните команды! Теперь убедитесь в том, что клавиша CapsLock не включена, и нажмите клавишу j несколько раз, так, чтобы Урок 1.1 полностью поместился на экране. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.1: ПЕРЕМЕЩЕНИЕ КУРСОРА ** Для перемещения курсора нажмите клавиши h,j,k,l так, как показано ниже. ** ^ k Советы: Клавиша h находится слева и перемещает влево. < h l > Клавиша l находится справа и перемещает вправо. j Клавиша j похожа на стрелку `вниз'. v 1. Подвигайте курсор по экрану, пока не почувствуете себя уверенно. 2. Надавите клавишу `вниз' (j) пока она не начнёт повторяться. Теперь вы знаете, как перейти к следующему уроку. 3. Используя клавишу `вниз' перейдите к Уроку 1.2. Замечание! Если вы пока не уверены в том, что набираете, нажмите для перехода в обычный режим (Normal mode). После этого перенаберите требуемую команду. Замечание! Обычные клавиши управления курсором (стрелки) также должны работать. Однако, клавиши hjkl позволят вам перемещаться значительно быстрее, как только вы научитесь ими пользоваться. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.2: ЗАВЕРШЕНИЕ РАБОТЫ С VIM !! ВНИМАНИЕ! Прежде, чем выполнять любой из описанных ниже шагов, прочтите урок целиком !! 1. Нажмите клавишу (для того, чтобы удостовериться, что вы в обычном режиме (Normal mode)). 2. Наберите: :q! . (Это означает, что вы должны набрать три символа :q! и нажать клавишу ввод.) Это позволит вам выйти из редактора БЕЗ СОХРАНЕНИЯ любых сделанных изменений. 3. Когда вы увидите приглашение командной оболочки, наберите команду, которая привела вас в этот учебник. Это может быть: vimtutor 4. Если вы уверены в том, что запомнили эти шаги, выполните шаги от 1 до 3 чтобы выйти снова запустить редактор. Замечание! :q! отбрасывает любые сделанные вами изменения. Через несколько уроков вы узнаете как сохранять изменения в файл. 5. Переместите курсор вниз к Уроку 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.3: РЕДАКТИРОВАНИЕ ТЕКСТА -- УДАЛЕНИЕ ** Находясь в обычном режиме нажмите x для удаления символа под курсором. ** 1. Переместите курсор к строке ниже, помеченной --->. 2. Для исправления ошибок, переместите курсор, пока он не окажется над удаляемым символом. 3. Нажмите клавишу x для удаления требуемого символа. 4. Повторите шаги со 2 по 4 пока строка не будет исправлена. ---> От тттопота копытт пппыль ппо ппполю леттитт. 5. Теперь, когда строка откорректирована, переходите к Уроку 1.4. Замечание! В ходе освоения этого учебника не пытайтесь запоминать, учите в процессе использования. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.4: РЕДАКТИРОВАНИЕ ТЕКСТА -- ВСТАВКА ** Находясь в обычном режиме, нажмите i для вставки текста. ** 1. Переместите курсор к первой строке ниже, помеченной --->. 2. Для того, чтобы сделать первую строку идентичной второй, поместите курсор на символ ПЕРЕД которым следует вставить текст. 3. Нажмите i и наберите требуемые добавления. 4. После исправления всех ошибок нажмите для возврата в обычный режим. Повторите шаги со 2 по 4, пока фраза не будет исправлена полностью. ---> Часть текста в строке бесследно . ---> Часть текста в этой строке бесследно пропала. 5. Когда освоите вставку текста, переходите к Уроку 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.5: РЕДАКТИРОВАНИЕ ТЕКСТА -- ДОБАВЛЕНИЕ ** Находясь в обычном режиме, нажмите A для добавления текста. ** 1. Переместите курсор к первой строке ниже, помеченной --->. Не имеет значения на каком символе расположен курсор на этой строке. 2. Нажмите A и наберите требуемые добавления. 3. После добавления требуемого текста нажмите для возврата в обычный режим. 4. Переместите курсор на следующую строку, помеченную ---> и повторите шаги со 2 по 4 для исправления этой строки. ---> Часть текста в этой строке бессле Часть текста в этой строке бесследно пропала. ---> Здесь также не достаёт час Здесь также не достаёт части текста. 5. Когда освоите добавление текста, переходите к Уроку 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.6: РЕДАКТИРОВАНИЕ ФАЙЛА ** Используйте :wq для сохранения файла и выхода из Vim. ** !! ВНИМАНИЕ! Прежде, чем выполнять любой из описанных ниже шагов, прочтите урок целиком !! 1. Выйдите из Vim, как вы это узнали в Уроке 1.2: :q! Или, если у вас есть доступ к другому терминалу, можете сделать следующее в нём. 2. По приглашению командной оболочки введите следующую команду: vim tutor `vim' -- команда для запуска редактора Vim, а `tutor' -- имя файла для редактирования. Используете имя файла, который можно изменять. 3. Вставляйте и удаляйте текст, как вы научились в предыдущих уроках. 4. Сохраните файл с изменениями и выйдите из Vim выполнив: :wq 5. Если вы вышли из vimtutor на шаге 1, перезапустите vimtutor и переходите к следующему Резюме. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 1 1. Курсор перемещается либо клавишами со стрелками, либо клавишами hjkl. h (влево) j (вниз) k (вверх) l (вправо) 2. Для запуска Vim (из приглашения командной оболочки) наберите: vim ИМЯ_ФАЙЛА 3. Для завершения работы с Vim наберите: :q! чтобы отказаться от сохранения изменений. Или наберите: :wq чтобы сохранить изменения. 4. Для удаления символа под курсором в обычном режиме, нажмите: x 5. Чтобы вставить текст перед курсором в обычном режиме, наберите: i вводите вставляемый текст Чтобы добавить текст после курсора: a вводите добавляемый текст Замечание! Нажатие переместит вас в обычный режим (Normal mode) либо прервёт нежелательную и частично завершённую команду. Теперь переходите к Уроку 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.1: КОМАНДЫ УДАЛЕНИЯ ** Наберите dw для удаления участка текста до конца слова. ** 1. Нажмите , чтобы перейти в обычный режим. 2. Переместите курсор вниз, к строке помеченной --->. 3. Переместите курсор в начало слова, которое следует удалить. 4. Наберите dw для удаления этого слова. Замечание! Во время набора буквы dw появятся справа в самой нижней строке экрана. Если вы что-то наберёте неправильно, нажмите и начните сначала. ---> Несколько слов рафинад в этом предложении автокран излишни. 5. Повторите шаги 3 и 4, пока не исправите все ошибки и переходите к Уроку 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.2: ДОПОЛНИТЕЛЬНЫЕ КОМАНДЫ УДАЛЕНИЯ ** Наберите d$ для удаления текста до конца строки. ** 1. Нажмите , чтобы перейти в обычный режим. 2. Переместите курсор вниз, к строке помеченной --->. 3. Переместите курсор к концу правильной строки (ПОСЛЕ первой точки). 4. Наберите d$ для удаления остатка строки. ---> Кто-то набрал окончание этой строки дважды. окончание этой строки дважды. 5. Чтобы лучше разобраться в том, как это происходит, переходите к Уроку 2.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.3: КОМАНДЫ И ОБЪЕКТЫ Многие команды, изменяющие текст, состоят из оператора и объекта. Формат команды удаления с оператором d следующий: d объект Здесь: d - оператор удаления. объект - над чем должна быть выполнена команда (перечислено ниже). Краткий список объектов: w - от курсора до конца слова, включая последующий пробел. e - от курсора до конца слова, НЕ включая последующий пробел. $ - от курсора до конца строки. ^ - от курсора до начала строки. Замечание! Простое нажатие на символ объекта в обычном режиме (Normal mode) без предварительного оператора переместит курсор так, как указано в списке объектов. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.4: ИСПОЛЬЗОВАНИЕ СЧЁТЧИКА ДЛЯ ПЕРЕМЕЩЕНИЯ ** Ввод числа перед оператором перемещения приведёт к его повторению заданное количество раз. ** 1. Переместите курсор к началу строки отмеченной ---> ниже. 2. Наберите 2w для перемещения курсора вперёд к началу второго слова. 3. Наберите 3e для перемещения курсора вперёд к концу третьего слова. 4. Наберите 0 (нуль) для перемещения к началу строки. 5. Повторите шаги 2 и 3 с различными числами. ---> Обычная строка из слов для вашего перемещения по ней. 6. Переходите к Уроку 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.5: ИСПОЛЬЗОВАНИЕ СЧЁТЧИКА ДЛЯ УДАЛЕНИЯ ** Ввод числа перед оператором приведёт к его повторению заданное количество раз. ** Добавьте число перед перед объектом в комбинацию оператора удаления и перемещения указанную выше для удаления указанного количества объектов: d число объект 1. Переместите курсор к первому слову из прописных букв в отмеченной ---> строке ниже. 2. Наберите d2w для удаления двух слов из прописных букв. 3. Повторите шаги 1 и 2 с другими числами для удаления последовательных слов из прописных букв одной командой. ---> эта АБВ ГД строка ЕЖЗИ КЛ МНО из слов П РС ТУФ очищена. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.6: ОПЕРАЦИИ СО СТРОКАМИ ** Наберите dd для удаления целой строки. ** В связи с частой необходимостью удаления целой строки, создатели Vi решили для упрощения сделать возможным удаление строки набором двух d. 1. Переместите курсор вниз, ко второй строке фразы. 2. Наберите dd для удаления строки. 3. Теперь переместитесь к четвёртой строке. 4. Наберите 2dd для удаления двух строк. ---> 1) Летом я хожу на стадион, ---> 2) О, как внезапно кончился диван! ---> 3) Я болею за ``Зенит'', ``Зенит'' --- чемпион! ---> 4) Печально я гляжу на наше поколение! ---> 5) Его грядущее иль пусто иль темно... ---> 6) Я сижу на скамейке в ложе `Б' ---> 7) И играю на большой жестяной трубе. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.7: КОМАНДА `ОТМЕНА' ** Нажмите u для отмены результата работы предыдущей команды, U для отмены исправлений во всей строке. ** 1. Переместите курсор вниз, к строке помеченной --->, и установите его на первую ошибку. 2. Нажмите x для удаления первого неправильного символа. 3. Теперь нажмите u для отмены (отката) последней выполненной команды. 4. Исправьте все ошибки в строке, используя команду x . 5. Теперь нажмите заглавную U для того, чтобы вернуть всю строку в исходное состояние. 6. Нажмите u несколько раз для отмены команды U и предыдущих команд. 7. Нажмите теперь CTRL-R (т.е. удерживайте клавишу CTRL нажатой в момент нажатия клавиши R) несколько раз для возврата команд (откат отката). ---> Испрравьте оошибки в этойй строке и вернитте их сс помощьью `отмены'. 8. Это были очень полезные команды. Далее переходите к Резюме Урока 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 2 1. Для удаления текста от курсора до конца слова наберите: dw 2. Для удаления текста от курсора до конца строки наберите: d$ 3. Для удаления всей строки наберите: dd 4. Для повтора перемещения введите количество перед командой: 2w 5. Формат команды в обычном режиме имеет вид: [число] команда объект ИЛИ команда [число] объект где: [число] - сколько раз повторить выполнение команды, опционально команда - что выполнить, например d для удаления объект - на что должна воздействовать команда, например w (слово), $ (до конца строки), и т.д. 6. Для перехода к началу строки используйте нуль: 0 7. Для отмены (отката) предшествующих действий наберите: u (строчная u) Для отмены (отката) всех изменений в строке наберите: U (прописная U) Для отмены отката наберите: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.1: КОМАНДА ВСТАВКИ ** Наберите p для вставки последнего удалённого текста после курсора. ** 1. Переместите курсор вниз, к строке помеченной --->. 2. Наберите dd для удаления строки и её сохранения в буфере Vim'а. 3. Переместите курсор к строке НАД тем местом, куда следует вставить удалённую строку. 4. Находясь в обычном режиме наберите p для вставки строки ниже курсора. 5. Повторите шаги со 2 по 4, пока не расставите все строки в нужном порядке. ---> г) И лучше выдумать не мог. ---> б) Когда не в шутку занемог, ---> в) Он уважать себя заставил ---> а) Мой дядя самых честных правил ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.2: КОМАНДА ЗАМЕНЫ ** Наберите r и символ, заменяющий символ под курсором. ** 1. Переместите курсор вниз, к строке помеченной --->. 2. Установите курсор так, чтобы он находился над первой ошибкой. 3. Наберите r и затем символ, исправляющий ошибку. 4. Повторите шаги 2 и 3, пока первая строка не будет исправлена как вторая. ---> В момегт набтра этой чтроки кое0кто с трудом попвдал по клваишам! ---> В момент набора этой строки кое-кто с трудом попадал по клавишам! 5. Теперь переходите к Уроку 3.3. Замечание! Помните, что вы должны учиться в процессе работы, а не просто запоминая. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.3: КОМАНДА ИЗМЕНЕНИЯ ** Для изменения конечной части слова наберите ce . ** 1. Переместите курсор вниз, к строке помеченной --->. 2. Расположите курсор над буквой `o' в слове `сола'. 3. Наберите ce и исправьте слово (в данном случае, наберите `лов'). 4. Нажмите и переходите к следующей ошибке (к первому символу, который надо изменить). 5. Повторите шаги 3 и 4 пока первое предложение не станет идентичным второму. ---> Несколько сола в эьгц строке тпгшцбь редалзкуюиесвх. ---> Несколько слов в этой строке требуют редактирования. Обратите внимание, что ce не только удаляет слово, но и переводит вас в режим вставки. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.4: ПРОДОЛЖАЕМ ИЗМЕНЯТЬ С КОМАНДОЙ c ** Команда замены используется с теми же объектами, что и команда удаления. ** 1. Команда изменения применяется таким же образом, как и команда удаления. Её формат таков: [число] c объект ИЛИ c [число] объект 2. Объекты также совпадают: w (слово), $ (конец строки) и т.п. 3. Переместите курсор вниз, к строке помеченной --->. 4. Перейдите к первой ошибке. 5. Наберите c$ и отредактируйте первую строку так, чтобы она совпадала со второй, после чего нажмите . ---> Конец этой строки нуждается в помощи, чтобы стать похожим на второй. ---> Конец этой строки нуждается в помощи команды c$ . Замечание! Клавиша Backspace может использоваться для исправления при наборе. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 3 1. Для вставки текста, который только что был удалён, наберите p . Эта команда вставит удалённый текст ПОСЛЕ курсора (если была удалена строка, то она будет помещена в строке под курсором). 2. Для замены символа под курсором наберите r и затем заменяющий символ. 3. Команда изменения позволяет вам изменить указанный объект от курсора до окончания перемещения. Например, наберите ce для замены от курсора до конца слова, c$ для изменения до конца строки. 4. Формат команды изменения таков: [число] c объект ИЛИ c [число] объект Теперь переходите к следующему уроку. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.1: ИНФОРМАЦИЯ О ФАЙЛЕ И РАСПОЛОЖЕНИИ В НЕМ ** Наберите CTRL-g чтобы увидеть ваше месторасположение в файле и информацию о файле. Наберите G (SHIFT-G) для перемещения к заданной строке в файле. ** Замечание! Прочитайте весь урок прежде чем выполнять любые команды! 1. Удерживая клавишу Ctrl нажмите g . Внизу экрана появится строка статуса с именем файла и номером строки, в которой вы находитесь. Запомните номер строки, он потребуется на Шаге 3. 2. Удерживая клавишу Shift нажмите g для перемещения к концу файла. 3. Наберите номер строки, в которой вы находились и затем Shift-G. Это вернёт вас к строке, в которой вы были, когда в первый раз нажали Ctrl-g. 4. Если вы запомнили все вышесказанное, выполните шаги с 1 по 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.2: КОМАНДА ПОИСКА ** Наберите / и затем введите искомую фразу. ** 1. В обычном режиме (Normal mode) наберите символ / . Обратите внимание, что он вместе с курсором появится внизу экрана, как это происходит с командой : . 2. Теперь наберите 'ошшшибка' . Это то слово, которое вы будете искать. 3. Для того, чтобы повторить поиск, просто нажмите n . Для поиска этой же фразы в обратном направлении, нажмите Shift-N . 4. Если вы желаете сразу искать в обратном направлении, используйте команду ? вместо / . 5. Для того, чтобы вернуться туда, откуда вы начали поиск нажмите Ctrl-O. (Удерживая нажатой клавишу Ctrl нажмите o ). Повторите несколько раз для дальнейшего перехода. Для перехода вперёд используйте Ctrl-I . ---> "ошшшибка" это не способ написания слова `ошибка'; ошшшибка это ошибка. Замечание! Если при поиске будет достигнут конц файла, то поиск будет продолжен с начала. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.3: ПОИСК ПАРНЫХ СКОБОК ** Наберите % для поиска парных ), ] или } . ** 1. Поместите курсор над любой из (, [ или { в строке ниже, помеченной --->. 2. Теперь наберите символ % . 3. Курсор должен перескочить на парную скобку. 4. Наберите % для возврата курсора назад к первой скобке. ---> Это ( строка, содержащая такие (, такие [ ] и такие { } скобки. )) Замечание! Это очень удобно при отладке программ с пропущенными скобками! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.4: СПОСОБ ИСПРАВЛЕНИЯ ОШИБОК ** Наберите :s/было/стало/g для замены 'было' на 'стало'. ** 1. Переместите курсор вниз, к строке помеченной --->. 2. Наберите :s/уводю/увожу . Обратите внимание на то, что эта команда заменит только первое найденное вхождение в строке. 3. Теперь наберите :s/уводю/увожу/g , добавленная в конце g означает подстановку глобально во всей строке. Это заменит все найденные в строке вхождения. ---> Я уводю к отверженным селеньям, я уводю сквозь вековечный стон, я уводю к забытым поколеньям. 4. Для замены всех вхождений последовательности символов между двумя строками, наберите :#,#s/было/стало/g где #,# -- номера этих строк. Наберите :%s/было/стало/g для замены всех вхождений во всем файле. Наберите :%s/было/стало/gc для поиска всех вхождений во всем файле и запроса подтверждения замены. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 4 1. Ctrl-g показывает ваше положение в файле и информацию о нем. Shift-G перемещает вас в конец файла. Номер, за которым следует Shift-G позволяет перейти к строке с этим номером. gg перемещает вас к первой строке файла. 2. Нажатие / и затем ввод строки позволяет произвести поиск этой строки ВПЕРЁД по тексту. Нажатие ? и затем ввод строки позволяет произвести поиск этой строки НАЗАД по тексту. После поиска наберите n для перехода к следующему вхождению искомой строки в том же направлении или Shift-N для перехода в противоположном направлении. 3. Нажатие % , когда курсор находится на (,),[,],{, или } позволяет найти парную скобку. 4. Для подстановки `стало' вместо первого `было' в строке, наберите :s/old/new Для подстановки `стало' вместо всех `было' в строке, наберите :s/old/new/g Для замены в интервале между двумя строками, наберите :#,#s/old/new/g Для замены всех вхождений `было' на `стало' в файле, наберите :%s/old/new/g Чтобы редактор каждый раз запрашивал подтверждение, добавьте 'c' :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.1: КАК ВЫПОЛНИТЬ ВНЕШНЮЮ КОМАНДУ ** Наберите :! и затем внешнюю команду, которую следует выполнить. ** 1. Наберите уже знакомую вам команду : для установки курсора в командную строку редактора. Это позволит вам ввести команду. 2. Теперь наберите символ ! (восклицательный знак). Это позволит выполнить внешнюю команду, используя командную оболочку. 3. Для примера наберите ls после ! и нажмите . Команда выведет список файлов в текущем каталоге, точно также, как если бы вы ввели эту команду в приглашении оболочки. Или попробуйте :!dir , если команда ls не сработала. Замечание! Таким способом можно выполнить любую внешнюю команду с указанием аргументов. Замечание! Все команды, начинающиеся с : , должны завершаться нажатием . Далее на это не всегда будет обращаться особое внимание. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.2: КАК ЗАПИСАТЬ ФАЙЛ ** Для сохранения изменений, произведённых в файле, наберите :w ИМЯ_ФАЙЛА. ** 1. Наберите :!dir или :!ls для получения списка файлов в текущем каталоге. Как вам уже известно, после ввода команды надо нажать . 2. Придумайте название для файла, которое ещё не существует, например TEST. 3. Теперь наберите :w TEST (где TEST -- это имя файла, придуманное вами.) 4. Команда сохранит весь этот файл (Учебник по Vim) под именем TEST. Чтобы удостовериться в этом, снова наберите :!dir или :!ls и просмотрите каталог. Замечание! Если вы выйдете из Vim и затем запустите его снова с файлом TEST (т.е. выполните vim TEST ), этот файл будет точной копией учебника в тот момент, когда вы его сохранили. 5. Теперь удалите этот файл, набрав для MS-DOS :!del TEST для Unix :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.3: ВЫБОРОЧНОЕ СОХРАНЕНИЕ ** Для сохранения части файла, наберите v выберите часть и сохраните её :w ИМЯ_ФАЙЛА ** 1. Переместите курсор к этой строке. 2. Нажмите v и переместите курсор ниже к пятому шагу. Обратите внимание, что текст подсвечен. 3. Нажмите : и внизу экрана появится :'<,'> . 4. Введите w TEST (где TEST -- имя файла, который ещё не существует). До нажатия , проверьте что внизу экрана написано :'<,'>w TEST. 5. Vim запишет выбранные строки в файл TEST. Как и прежде, убедитесь в наличии этого файла командой :!dir или :!ls . НЕ УДАЛЯЙТЕ этот файл, он потребуется в следующем уроке. Замечание! Нажатие v начинает визуальный выбор. Вы можете перемещать курсор для изменения выбора. Затем для выбранного фрагмента можно выполнить какой-то оператор, например, удалить нажатием d. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.4: ЧТЕНИЕ И ОБЪЕДИНЕНИЕ ФАЙЛОВ ** Для вставки содержимого из файла, наберите :r ИМЯ_ФАЙЛА ** 1. Установите курсор над этой строкой. Замечание! После выполнения Шага 2 вы увидите текст из Урока 5.3. Переместитесь ВНИЗ по тексту до этого урока. 2. Теперь прочитайте ваш файл TEST, используя команду :r TEST , где TEST -- это имя файла. 3. Для проверки что содержимое файла было вставлено, переместитесь по тексту и удостоверьтесь, что теперь в нём две копии Урока 5.3: исходная и из файла TEST. Замечание! Вставить можно и вывод внешней команды. Например, :r !ls прочитает вывод команды ls и вставит его ниже курсора. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 5 1. :!команда исполняет внешнюю команду. Некоторые полезные примеры: (MS-DOS) (Unix) :!dir :!ls -- вывести список файлов в каталоге. :!del ИМЯ :!rm ИМЯ -- удалить файл по имени. 2. :w ИМЯ_ФАЙЛА записывает текущий редактируемый в Vim файл на диск под указанным именем. 3. v перемещение :w ИМЯ_ФАЙЛА сохраняет визуально выбранные строки в файл с указанным именем. 4. :r ИМЯ_ФАЙЛА считывает с диска файл с указанным именем и помещает его ниже курсора. 5. :r !dir читает вывод команды dir и помещает его ниже курсора. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.1: КОМАНДА СОЗДАНИЯ ** Наберите o чтобы создать пустую строку под курсором и перейти в режим вставки (Insert mode) ** 1. Переместите курсор вниз, к строке помеченной --->. 2. Наберите o (в нижнем регистре) для того, чтобы создать пустую строку НИЖЕ курсора и перейти в режим вставки (Insert mode). 3. Теперь наберите какой-нибудь текст и нажмите для выхода из режима вставки. ---> После нажатия o курсор перейдёт на новую пустую строку в режиме вставки. 4. Для создания строки ВЫШЕ курсора, просто наберите заглавную O , вместо строчной o . Попробуйте проделать это с нижеследующей строкой. ---> Создайте новую строку над этой, поместив на неё курсор и нажав Shift-O. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.2: КОМАНДА ДОБАВЛЕНИЯ ** Наберите a , чтобы вставить текст ПОСЛЕ курсора. ** 1. Переместите курсор вниз, в начало первой строки помеченной --->. 2. Набирайте e пока курсор не переместиться на конец cтро . 3. Наберите a (в нижнем регистре) для добавления текста ПОСЛЕ символа, находящегося под курсором. (Заглавная A позволяет добавить в конец строки.) 4. Допишите слово так, как показано в строке ниже. Нажмите для выхода из режима вставки (Insert mode). 5. Используйте e для перехода к концу следующего незавершённого слова и повторите шаги 3 и 4. ---> Эта стро позволит вам попрактиков в добавле текста. ---> Эта строчка позволит вам попрактиковаться в добавлении текста. Замечание! a , i и A переводят в один и тот же режим вставки, различие только в том, где вставляются символы. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.3: ЕЩЁ ОДИН СПОСОБ ЗАМЕНЫ ** Наберите заглавную R для замены более чем одного символа. ** 1. Переместите курсор вниз, к первой строке помеченной --->, и в начало первого слова xxx. 2. Теперь нажмите R и введите число указанный ниже во второй строке чтобы заменить xxx. 3. Нажмите для выхода из режима замены. Заметьте что остаток строки не был изменён. 4. Повторите эти шаги для замены оставшихся xxx. ---> Добавление 123 к xxx даёт xxx. ---> Добавление 123 к 456 даёт 579. Замечание! Режим замены похож на режим вставки, но каждый введённый символ удаляет существующий. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.4: КОПИРОВАНИЕ И ВСТАВКА ТЕКСТА ** Используйте команду y для копирования и p для вставки ** 1. Переместите курсор вниз, к первой строке помеченной --->, и после `а)'. 2. Переключитесь в режим визуального выбора нажав v и переместите курсор перед словом `первый'. 3. Введите y для копирования подсвеченного текста. 4. Переместите курсор в конец следующей строки комбинацией j$ . 5. Нажмите p для вставки текста. Затем введите `второй' и нажмите . ---> а) Этот элемент первый. б) Замечание! Также возможно использовать yw (команду y с оператором w ) для копирования одного слова. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.5: УСТАНОВКА ПАРАМЕТРОВ ** Установка параметра для игнорирования регистра при поиске или замене ** 1. Найдите слово `игнорировать', набрав: /игнорировать . Повторите поиск несколько раз, нажимая клавишу n . 2. Установите параметр `ic' (игнорировать регистр), набрав: :set ic 3. Теперь снова несколько раз сделайте поиск слова `игнорировать', нажимая: n Заметьте, что теперь находятся `Игнорировать' и `ИГНОРИРОВАТЬ'. 4. Установите параметры `hlsearch' и `incsearch': :set hls is 5. Теперь опять введите команду поиска и посмотрите, что получится: /игнорировать 6. Для возвращения учёта регистра при поиске наберите: :set noic Замечание! Для отключения подсветки совпадений наберите: :nohlsearch Замечание! Если вы хотите игнорировать регистр только для одного поиска, используйте \с в команде поиска: /игнорировать\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 6 1. Нажмите o для создания строки НИЖЕ курсора и перехода в режим вставки. Нажмите O для создания строки ВЫШЕ курсора. 2. Нажмите a для вставки текста ПОСЛЕ курсора. Нажмите A для вставки текста в конец строки. 3. Команда e подводит курсор к концу слова. 4. Команда y копирует текст, p -- вставляет скопированный текст. 5. Нажатие заглавной R переводит в режим замены до нажатия клавиши . 6. Наберите `:set xxx' для включения параметра `xxx', некоторые параметры: `ic' `ignorecase' игнорирование регистра при поиске `is' `incsearch' отображение частичных совпадений при поиске `hls' `hlsearch' подсветка всех совпадений при поиске 7. Добавьте `no' перед параметром для его отключения: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 7.1: ВСТРОЕННАЯ СПРАВКА ** Используйте встроенную справочную систему ** Vim обладает мощной встроенной справочной системой. Для начала попробуйте один из трёх вариантов: - нажмите клавишу (если таковая имеется на клавиатуре) - нажмите клавишу (если таковая имеется на клавиатуре) - наберите :help Прочитайте текст в окне справки для получения представления о том как работает справка. Нажмите CTRL-W CTRL-W для перехода от окна к окну. Наберите :q чтобы закрыть окно справки. Вы можете найти справку для любого понятия или команды, задав соответствующий аргумент команде `:help'. Попробуйте следующее (не забудьте нажать ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 7.2: СОЗДАНИЕ СТАРТОВОГО СЦЕНАРИЯ ** Включим возможности Vim ** Vim имеет намного больше возможностей, чем Vi, но большинство из них по умолчанию выключены. Для использования больших возможностей вам следует создать файл `vimrc'. 1. Отредактируйте новый файл `vimrc'. Его расположение зависит от используемой системы: :e ~/.vimrc для Unix :e $VIM/_vimrc для MS-Windows 2. Теперь прочитайте пример файла `vimrc': :r $VIMRUNTIME/vimrc_example.vim 3. Запишите созданный вами новый файл `vimrc': :w Теперь при следующем запуске Vim будет включена подсветка синтаксиса. Все настройки, предпочитаемые вами, могут быть добавлены в файл `vimrc'. Для дальнейшей информации наберите :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 7.3: ДОПОЛНЕНИЕ ** Командную строку можно дополнить нажав CTRL-D и ** 1. Удостоверьтесь, что Vim не в режиме совместимости: :set nocp 2. Посмотрите какие файлы есть в каталоге: :!ls или :!dir 3. Наберите начало команды: :e 4. Нажмите CTRL-D и Vim отобразит список команд начинающихся на `e'. 5. Нажмите и Vim дополнит название команды до `:edit'. 6. Теперь добавьте пробел и начало существующего имени файла: :edit ФАЙ 7. Нажмите и Vim дополнит имя файла, если оно уникальное. Замечание! Дополнение работает для многих команд. Попробуйте нажать CTRL-D и . Это особенно полезно для команды :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 7 1. Наберите :help или нажмите , или для открытия окна справки. 2. Наберите :help cmd для поиска справки по команде. 3. Нажмите CTRL-W CTRL-W для перехода к другому окну. 4. Наберите :q для закрытия окна справки (если оно активно). 5. Для хранения ваших настроек создайте стартовый сценарий `vimrc'. 6. При наборе : команды, нажмите CTRL-D для отображения возможных дополнений. Нажмите для использования дополнения. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ На этом завершается Учебник Vim. Он был предназначен дать общее представление о редакторе Vim, достаточное для того, чтобы с лёгкостью использовать его. Учебник далёк от полноты, поскольку Vim имеет очень много команд. Прочитайте теперь руководство пользователя: `:help user-manual'. Для дальнейшего чтения рекомендуется книга: Vim - Vi Improved, автор: Steve Oualline, издатель: New Riders Эта книга полностью посвящена Vim. Особенно полезна она будет новичкам. Содержит множество примеров и иллюстраций. См. http://iccf-holland.org/click5.html Следующая книга более почтенного возраста и посвящена больше Vi, чем Vim, однако также рекомендуется: Learning the Vi Editor, автор: Linda Lamb, издатель: O'Reilly & Associates Inc. Это хорошая книга, чтобы узнать всё, что только можно сделать в Vi. Шестое издание также включает информацию о Vim. Этот учебник написал Michael C. Pierce и Robert K. Ware, Colorado School of Mines с использованием идей, которые предложил Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Доработано для Vim Брамом Моленаром (Bram Moolenaar). Перевод: Андрей Киселев , 2002. Сергей Алёшин , 2014. Translators: Andrey Kiselev , 2002. Sergey Alyoshin , 2014. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!8:j:jvim80/tutor/tutor.hunu[=============================================================================== == d v z l j k a V I M - o k t a t b a n - 1.5-s verzi == =============================================================================== A Vim egy nagyon hatkony szerkeszt, amelynek rengeteg utastsa van, tl sok, hogy egy ilyen oktatban (tutorban), mint az itteni mindet elmagyarzzuk. Ez az oktat arra trekszik, hogy annyit elmagyarzzon, amennyi elg, hogy knnyedn hasznljuk a Vim-et, az ltalnos cl szvegszerkesztt. A feladatok megoldshoz 25-30 perc szksges attl fggen, mennyit tltnk a ksrletezssel. A leckben szerepl utastsok mdostani fogjk a szveget. Ksztsen msolatot errl a fjlrl, ha gyakorolni akar. (Ha "vimtutor"-ral indtotta, akkor ez mr egy msolat.) Fontos megrteni, hogy ez az oktat cselekedve tanttat. Ez azt jelenti, hogy nnek ajnlott vgrehajtania az utastsokat, hogy megfelelen megtanulja azokat. Ha csak olvassa, elfelejti! Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, s Nyomja meg megfelel szmszor a j gombot, hogy az 1.1-es lecke teljesen a kpernyn legyen! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.1. lecke: A KURZOR MOZGATSA ** A kurzor mozgatshoz nyomja meg a h,j,k,l gombokat az albbi szerint. ** ^ k Tipp: A h billenty van balra, s balra mozgat < h l > A l billenty van jobbra, s jobbra mozgat j A j billenty olyan, mint egy lefele nyl v 1. Mozgassa a kurzort krbe az ablakban, amg hozz nem szokik! 2. Tartsa lenyomva a lefelt (j), akkor ismtldik! ---> Most tudja, hogyan mehet a kvetkez leckre. 3. A lefel gomb hasznlatval menjen a 1.2. leckre! Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az -et, hogy norml mdba kerljn, s ismtelje meg a parancsot! Megj: A kurzor gomboknak is mkdnik kell, de a hjkl hasznlatval sokkal gyorsabban tud, mozogni, ha hozzszokik. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.2. lecke: BE S KILPS A VIMBL !! MEGJ: Mieltt vgrehajtja az albbi lpseket, olvassa vgig a leckt !! 1. Nyomja meg az gombot (hogy biztosan norml mdban legyen). 2. rja: :q! . ---> Ezzel kilp a szerkesztbl a vltozsok MENTSE NLKL. Ha menteni szeretn a vltozsokat s kilpni, rja: :wq 3. Amikor a shell promptot ltja, rja be a parancsot, amely ebbe az oktatba hozza: Ez valsznleg: vimtutor Normlis esetben ezt rn: vim tutor.hu ---> 'vim' jelenti a vimbe belpst, 'tutor.hu' a fjl, amit szerkeszteni kvn. 4. Ha megjegyezte a lpseket s biztos magban, hajtsa vgre a lpseket 1-tl 3-ig, hogy kilpjen s visszatrjen a szerkesztbe. Azutn menjen az 1.3. leckre. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.3. lecke: SZVEG SZERKESZTSE - TRLS ** Norml mdban nyomjon x-et, hogy a kurzor alatti karaktert trlje. ** 1. Mozgassa a kurzort a ---> kezdet sorra! 2. A hibk kijavtshoz mozgassa a kurzort amg a trlend karakter fl nem r. 3. Nyomja meg az x gombot, hogy trlje a nem kvnt karaktert. 4. Ismtelje a 2, 3, 4-es lpseket, hogy kijavtsa a mondatot. ---> szi jjjell izziik aa galaggonya rruuhja. 5. Ha a sor helyes, ugorjon a 1.4. leckre. MEGJ: A tanuls sorn ne memorizlni prbljon, hanem hasznlat sorn tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.4. lecke: SZVEG SZERKESZTSE - BESZRS ** Norml mdban i megnyomsval lehet beilleszteni. ** 1. Az albbi els ---> kezdet sorra menjen. 2. Ahhoz, hogy az elst azonoss tegye a msodikkal, mozgassa a kurzort az els karakterre, amely UTN szveget kell beszrni. 3. Nyomjon i-t s rja be a megfelel szveget. 4. Amikor mindent bert, nyomjon -et, hogy Norml mdba visszatrjen. Ismtelje a 2 s 4 kztti lpseket, hogy kijavtsa a mondatot. ---> Az that sol hizik pr sz. ---> Az itt lthat sorbl hinyzik pr rsz. 5. Ha mr begyakorolta a beszrst, menjen az albbi sszefoglalra. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. LECKE SSZEFOGLALJA 1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja. h (balra) j (le) k (fel) l (jobbra) 2. A Vimbe (a $ prompttl) gy lphet be: vim FILENAME 3. A Vimbl gy lphet ki: :q! a vltoztatsok eldobsval. vagy gy: :wq a vltozsok mentsvel. 4. A kurzor alatti karakter trlse norml mdban: x 5. Szveg beszrsa a kurzor utn norml mdban: i gpelje be a szveget MEGJ: Az megnyomsa norml mdba viszi, vagy megszakt egy nem befejezett rszben befejezett parancsot. Most folytassuk a 2. leckvel! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.1. lecke: TRL UTASTSOK ** dw trl a sz vgig. ** 1. Nyomjon -et, hogy megbizonyosodjon, hogy norml mdban van! 2. Mozgassa a kurzort a ---> kezdet sorra! 3. Mozgassa a kurzort arra annak a sznak az elejre, amit trlni szeretne. Trlje az llatokat a mondatbl. 4. A sz trlshez rja: dw MEGJ: Ha rosszul kezdte az utastst csak nyomjon gombot a megszaktshoz. ---> Pr sz kutya nem uhu illik pingvin a mondatba tehn. 5. Ismtelje a 3 s 4 kztti utastsokat amg kell s ugorjon a 2.2 leckre! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.2. lecke: MG TBB TRL UTASTS ** d$ bersval a sor vgig trlhet. ** 1. Nyomjon -et, hogy megbizonyosodjon, hogy norml mdban van! 2. Mozgassa a kurzort a ---> kezdet sorra! 3. Mozgassa a kurzort a helyes sor vgre (az els . UTN)! 4. d$ begpelsvel trlje a sor vgt! ---> Valaki a sor vgt ktszer gpelte be. ktszer gpelte be. 5. Menjen a 2.3. leckre, hogy megrtse mi trtnt! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.3. lecke: UTASTSOKRL S MOZGSOKRL A d (delete=trls) utasts formja a kvetkez: [szm] d mozgs VAGY d [szm] mozgs Ahol: szm - hnyszor hajtdjon vgre a parancs (elhagyhat, alaprtk=1). d - a trls (delete) utasts. mozgs - amin a parancsnak teljeslnie kell (albb listzva). Mozgsok rvid listja: w - a kurzortl a sz vgig, belertve a szkzt. e - a kurzortl a sz vgig, NEM belertve a szkzt. $ - a kurzortl a sor vgig. MEGJ: Csupn a mozgs begpelsvel (parancs nlkl) a kurzor mozgs ltal megadott helyre kerl. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.4. lecke: EGSZ SOROK FELDOLGOZSA ** dd bersval trlheti az egsz sort. ** A teljes sor trlsnek gyakorisga miatt a Vi tervezi elhatroztk, hogy knnyebb lenne csupn a d-t ktszer megnyomni, hogy egy sort trljnk. 1. Mozgassa a kurzort az albbi kifejezsek msodik sorra! 2. dd begpelsvel trlje a sort! 3. Menjen a 3. (eredetileg 4.) sorra! 4. 2dd (ugyebr szm-utasts-mozgs) begpelsvel trljn kt sort! 1) Alv szegek a jghideg homokban, 2) - kezdi a klt - 3) Plaktmagnyban z jjelek. 4) Pingvinek ne fljetek, 5) Tvolrl egy vaku villant, 6) gve hagytad a folyosn a villanyt. 7) Ma ontjk vremet. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.5. lecke: A VISSZAVONS (UNDO) PARANCS ** u gpelsvel visszavonhat az utols parancs, U az egsz sort helyrelltja. ** 1. Menjnk az albbi ---> kezdet sor els hibjra! 2. x lenyomsval trlje az els felesleges karaktert! 3. u megnyomsval vonja vissza az utolsnak vgrehajtott utastst! 4. Msodjra javtson ki minden hibt a sorban az x utastssal! 5. Most nagy U -val lltsa vissza a sor eredeti llapott! 6. Nyomja meg az u gombot prszor, hogy az U s az azt megelz utastsokat visszalltsa! 7. CTRL-R (CTRL gomb lenyomsa mellett ssn R-t) prszor csinlja jra a visszavont parancsokat (redo)! ---> Javtsa a hhibkaat ebbben a sooorban majd lltsa visszaaa az eredetit. 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke sszefoglaljra. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2. LECKE SSZEFOGLALJA 1. Trls a kurzortl a sz vgig: dw 2. Trls a kurzortl a sor vgig: d$ 3. Egsz sor trlse: dd 4. Egy utasts alakja norml mdban: [szm] utasts mozgs VAGY utasts [szm] mozgs ahol: szm - hnyszor ismteljk a parancsot utasts - mit tegynk, pl. d a trlskor mozgs - mire hasson az utasts, pldul w (sz=word), $ (a sor vgig), stb. 5. Az elz tett visszavonsa (undo): u (kis u) A sor sszes vltozsnak visszavonsa: U (nagy U) Visszavonsok visszavonsa: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.1. lecke: A BEILLESZTS (PUT) PARANCS ** p letsvel az utolsnak trltet a kurzor utn illeszthetjk. ** 1. Mozgassuk a kurzort az albbi sorok els sorra. 2. dd letsvel trljk a sort s eltroldik a Vim pufferben. 3. Mozgassuk a kurzort azeltt a sor ELTTI sorba, ahov mozgatni szeretnnk a trlt sort. 4. Norml mdban rjunk p bett a trlt sor beillesztshez. 5. Folytassuk a 2-4. utastsokkal hogy a helyes sorrendet kapjuk. d) Can you learn too? b) Violets are blue, c) Intelligence is learned, a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.2. lecke: AZ TRS (REPLACE) PARANCS ** r s a karakterek letsvel a kurzor alatti karaktert megvltoztatjuk. ** 1. Mozgassuk a kurzort az els ---> kezdet sorra! 2. Mozgassuk a kurzort az els hiba fl! 3. r majd a kvnt karakter letsvel vltoztassuk meg a hibsat! 4. A 2. s 3. lpsekkel javtsuk az sszes hibt! ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. Menjnk a 3.2. leckre! MEGJ: Emlkezzen, hogy nem memorizlssal, hanem gyakorlssal tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.3. lecke: A CSERE (CHANGE) PARANCS ** A sz egy rsznek megvltoztatshoz rjuk: cw . ** 1. Mozgassuk a kurzort az els ---> kezdet sorra! 2. Vigye a kurzort a Ezen sz z betje fl! 3. cw s a helyes szrsz (itt 'bben') bersval javtsa a szt! 4. lenyomsa utn a kvetkez hibra ugorjon (az els cserlend karakterre)! 5. A 3. s 4. lpsek ismtlsvel az els mondatot tegye a msodikkal azonoss! ---> Ezen a sorrrrr pr szra meg kell vltozzanak a change utaskrs. ---> Ebben a sorban pr szt meg kell vltoztatni a change utastssal. Vegyk szre, hogy a cw nem csak a szt rja t, hanem beszr (insert) mdba vlt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.4. lecke: TBBFLE VLTOZTATS c-VEL ** A c utasts hasznlhat ugyanazokkal az mozgsokkal mint a trls ** 1. A change utasts a trlssel azonosan viselkedik. A forma: [szm] c mozgs OR c [szm] mozgs 2. A mozgsok is azonosak, pl. w (sz), $ (sorvg), stb. 3. Mozgassuk a kurzort az els ---> kezdet sorra! 4. Menjnk az els hibra! 5. c$ begpelsvel a sorvgeket tegyk azonoss s nyomjunk -et! ---> Ennek a sornak a vge kiigaztsra szorul, hogy megegyezzen a msodikkal. ---> Ennek a sornak a vge a c$ paranccsal vltoztathat meg. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3. LECKE SSZEFOGLALJA 1. A mr trlt sort beillesztshez nyomjunk p-t. Ez a trlt szveget a kurzor UTN helyezi (ha sor kerlt trlsre, a kurzor alatti sorba). 2. A kurzor alatti karakter trshoz az r-et s azt a karaktert nyomjuk, amellyel az eredetit fell szeretnnk rni. 3. A vltoztats (c) utasts a karaktertl az mozgs vgig vltoztatja meg az mozgst. Pldul a cw a kurzortl a sz vgig, a c$ a sor vgig. 4. A vltoztats formtuma: [szm] c mozgs VAGY c [szm] mozgs Ugorjunk a kvetkez leckre! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.1. lecke: HELY S FJLLLAPOT ** CTRL-g megnyomsval megnzhetjk a helynket a fjlban s a fjl llapott. SHIFT-G letsvel a fjl adott sorra ugorhatunk. ** Megj: Olvassuk el az egsz leckt a lpsek vgrehajtsa eltt!! 1. Tartsuk nyomva a Ctrl gombot s nyomjunk g-t. Az llapotsor megjelenik a lap aljn a fjlnvvel s az aktulis sor sorszmval. Jegyezzk meg a sorszmot a 3. lpshez! 2. Nyomjunk Shift-G-t a lap aljra ugrshoz! 3. ssk be az eredeti sor szmt, majd ssnk shift-G-t! Ezzel visszajutunk az eredeti sorra ahol Ctrl-g-t nyomtunk. (A bert szm NEM fog megjelenni a kpernyn.) 4. Ha megjegyezte a feladatot, hajtsa vgre az 1-3. lpseket! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.2. lecke: A KERESS (SEARCH) PARANCS ** / majd a kvnt kifejezs bersval kereshetjk meg a kifejezst. ** 1. Norml mdban ssnk / karaktert! Ez s a kurzor megjelenik a kperny aljn, ahogy a : utasts is. 2. rjuk be: 'hiibaa' ! Ez az a sz amit keresnk. 3. A kifejezs jabb keresshez ssk le egyszeren: n . A kifejezs ellenkez irnyban trtn keresshez ezt ssk be: Shift-N . 4. Ha visszafel szeretne keresni, akkor ? kell a / helyett. ---> "hiibaa" nem a helyes mdja a hiba lersnak; a hiibaa egy hiba. Megj: Ha a keress elri a fjl vgt, akkor az elejn kezdi. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.3. lecke: ZRJELEK PRJNAK KERESSE ** % letsvel megtalljuk a ),], vagy } prjt. ** 1. Helyezze a kurzort valamelyik (, [, vagy { zrjelre a ---> kezdet sorban! 2. ssn % karaktert! 3. A kurzor a zrjel prjra fog ugrani. 4. % letsvel visszaugrik az eredeti zrjelre. ---> Ez ( egy tesztsor (-ekkel, [-ekkel ] s {-ekkel } a sorban. )) Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a zrjelek nem prosak! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.4. lecke: A HIBK KIJAVTSNAK EGY MDJA ** :s/rgi/j/g begpelsvel az 'j'-ra cserljk a 'rgi'-t. ** 1. Menjnk a ---> kezdet sorra! 2. rjuk be: :s/eggy/egy . Ekkor csak az els vltozik meg a sorban. 3. Most ezt rjuk: :s/eggy/egg/g amely globlisan helyettest a sorban, azaz minden elfordulst. Ez a sorban minden elfordulst helyettest. ---> eggy heggy meggy, szembe jn eggy msik heggy. 4. Kt sor kztt a karaktersor minden elfordulsnak helyettestse: :#,#s/rgi/j/g ahol #,# a kt sor sorszma. :%s/rgi/j/g a fjlbeli sszes elforduls helyettestse. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4. LECKE SSZEFOGLALJA 1. Ctrl-g kirja az kurzor helyt a fjlban s a fjl llapott. Shift-G a fjl vgre megy, gg az elejre. Egy szm utn Shift-G az adott szm sorra ugrik. 2. / utn egy kifejezs ELREFELE keresi a kifejezst. 2. ? utn egy kifejezs VISSZAFELE keresi a kifejezst. Egy keress utn az n a kvetkez elfordulst keresi azonos irnyban Shift-N az ellenkez irnyban keres. 3. % begpelsvel, ha (,),[,],{, vagy } karakteren vagyunk a zrjel prjra ugrik. 4. az els rgi helyettestse jjal a sorban :s/rgi/j az sszes rgi helyettestse jjal a sorban :s/rgi/j/g kt sor kztti kifejezsekre :#,#s/rgi/j/g # helyn az aktulis sor (.) s az utols ($) is llhat :.,$/rgi/j/g A fjlbeli sszes elforduls helyettestse :%s/rgi/j/g Mindenkori megerstsre vr 'c' hatsra :%s/rgi/j/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.1. lecke: KLS PARANCS VGREHAJTSA ** :! utn kls parancsot rva vgrehajtdik a parancs. ** 1. rjuk be az ismers : parancsot, hogy a kurzort a kperny aljra helyezzk. Ez lehetv teszi egy parancs berst. 2. ! (felkiltjel) bersval tegyk lehetv kls hj (shell)-parancs vgrehajtst. 3. rjunk pldul ls parancsot a ! utn majd ssnk -t. Ez ki fogja listzni a knyvtrunkat ugyangy, mintha a shell promptnl lennnk. Vagy rja ezt :!dir ha az ls nem mkdik. Megj: Ilymdon brmely kls utasts vgrehajthat. Megj: Minden : parancs utn -t kell tni. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.2. lecke: BVEBBEN A FJLOK RSRL ** A fjlok vltozsait gy rhatjuk ki :w FJLNV. ** 1. :!dir vagy :!ls bersval listzzuk a knyvtrunkat! n mr tudja, hogy -t kell tnie utna. 2. Vlasszon egy fjlnevet, amely mg nem ltezik pl. TESZT! 3. rja: :w TESZT (ahol TESZT a vlasztott fjlnv)! 4. Ez elmenti a teljes fjlt (a Vim oktatjt) TESZT nven. Ellenrzskpp rjuk ismt :!dir hogy lssuk a knyvtrat! (Felfel gombbal : utn az elz utastsok visszahozhatak.) Megj: Ha n kilpne a Vimbl s s visszatrne a TESZT fjlnvvel, akkor a fjl az oktat mentskori pontos msolata lenne. 5. Tvoltsa el a fjlt (MS-DOS): :!del TESZT vagy (Unix): :!rm TESZT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.3. lecke: EGY KIVLASZTOTT RSZ KIRSA ** A fjl egy rsznek kirshoz rja :#,# w FJLNV ** 1. :!dir vagy :!ls bersval listzza a knyvtrat, s vlasszon egy megfelel fjlnevet, pl. TESZT. 2. Mozgassa a kurzort ennek az oldalnak a tetejre, s nyomjon Ctrl-g-t, hogy megtudja a sorszmot. JEGYEZZE MEG A SZMOT! 3. Most menjen a lap aljra, s sse be ismt: Ctrl-g. EZT A SZMOT IS JEGYEZZE MEG! 4. Ha csak ezt a rszt szeretn menteni a fjlnak, rja :#,# w TESZT ahol #,# a kt sorszm, amit megjegyzett, TESZT az n fjlneve. 5. Ismt nzze meg, hogy a fjl ott van (:!dir) de NE trlje. 6. Vimben ltezik egy msik lehetsg: nyomja meg a Shift-V gombprt az els menteni kvnt soron, majd menjen le az utolsra, ezutn rja :w TESZT2 Ekkor a TESZT2 fjlba kerl a kijellt rsz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.4. lecke: FJLOK VISSZALLTSA S SSZEFZSE ** Egy fjl tartalmnak beillesztshez rja :r FJLNV ** 1. :!dir bersval nzze meg, hogy az n TESZT fjlja ltezik mg. 2. Helyezze a kurzort ennek az oldalnak a tetejre. MEGJ: A 3. lps utn az 5.3. leckt fogja ltni. Azutn LEFEL indulva keresse meg ismt ezt a leckt. 3. Most szrja be a TESZT nev fjlt a :r TESZT paranccsal, ahol TESZT az n fjljnak a neve. MEGJ: A fjl, amit beillesztett a kurzora alatt helyezkedik el. 4. Hogy ellenrizzk, hogy a fjlt tnyleg beillesztettk, menjen vissza, s nzze meg, hogy ktszer szerepel az 5.3. lecke! Az eredeti mellett a fjlbl bemsolt is ott van. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5. LECKE SSZEFOGLALJA 1. :!parancs vgrehajt egy kls utastst. Pr hasznos plda: (MS-DOS) (Unix) :!dir :!ls - knyvtrlista kirsa. :!del FJLNV :!rm FJLNV - FJLNV nev fjl trlse. 2. :w FJLNV kirja a jelenlegi Vim-fjlt a lemezre FJNV nven. 3. :#,#w FJLNV kirja a kt sorszm (#) kztti sorokat FJLNV-be Msik lehetsg, hogy a kezdsornl Shift-v-t nyom lemegy az utols sorra, majd ezt ti be :w FJLNV 4. :r FJLNV beolvassa a FJLNV fjlt s behelyezi a jelenlegi fjlba a kurzorpozci utni sorba. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.1. lecke: A MEGNYITS (OPEN) PARANCS ** o bersval nyit egy j sort a kurzor alatt s beszr mdba vlt ** 1. Mozgassuk a kurzort a ---> kezdet sorra. 2. o (kicsi) bersval nyisson egy sort a kurzor ALATT! Ekkor automatikusan beszr (insert) mdba kerl. 3. Msolja le a ---> jel sort s megnyomsval lpjen ki a beszr mdbl. ---> Az o lenyomsa utn a kurzor a kvetkez sor elejn ll beszr mdban. 4. A kurzor FELETTI sor megnyitshoz egyszeren nagy O bett rjon kicsi helyett. Prblja ki a kvetkez soron! Nyisson egy j sort efelett Shift-O megnyomsval, mialatt a kurzor ezen a soron ll. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.2. lecke: AZ APPEND PARANCS ** a lenyomsval a kurzor UTN szrhatunk szveget. ** 1. Mozgassuk a kurzort a kvetkez ---> kezdet sor vgre gy, hogy norml mdban $-t r be. 2. Kis "a" letsvel szveget szrhat be AMG a karakter mg, amelyen a kurzor ll. (A nagy "A" az egsz sor vgre rja a szveget.) Megj: A Vimben a sor legvgre is lehet llni, azonban ez eldjben a Vi-ban nem lehetsges, ezrt abban az a nlkl elg krlmnyes a sor vghez szveget rni. 3. Egsztse ki az els sort. Vegye szre, hogy az a utasts (append) teljesen egyezik az i-vel (insert) csupn a beszrt szveg helye klnbzik. ---> Ez a sor lehetv teszi nnek, hogy gyakorolja ---> Ez a sor lehetv teszi nnek, hogy gyakorolja a sor vgre beillesztst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.3. lecke: AZ TRS MSIK VLTOZATA ** Nagy R bersval rhat fell tbb mint egy karaktert. ** 1. Mozgassuk a kurzort az els ---> kezdet sorra! 2. Helyezze a kurzort az els sz elejre amely eltr a msodik ---> kezdet sor tartalmtl (a 'az utolsval' rsztl). 3. Nyomjon R karaktert s rja t a szveg maradkt az els sorban gy, hogy a kt sor egyez legyen. ---> Az els sort tegye azonoss az utolsval: hasznlja a gombokat. ---> Az els sort tegye azonoss a msodikkal: rjon R-t s az j szveget. 4. Jegyezzk meg, ha -et nyomok, akkor a vltozatlanul hagyott szvegek vltozatlanok maradnak. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.4. lecke: BELLTSOK ** lltsuk be, hogy a keress s a helyettests ne fggjn kis/NAGYbetktl ** 1. Keressk meg az 'ignore'-t az berva: /ignore Ezt ismteljk tbbszr az n billentyvel 2. lltsuk be az 'ic' (Ignore case) lehetsget gy: :set ic 3. Most keressnk ismt az 'ignore'-ra n-nel Ismteljk meg tbbszr a keresst: n 4. lltsuk be a 'hlsearch' s 'incsearch' lehetsgeket: :set hls is 5. Most ismt rjuk be a keresparancsot, s lssuk mi trtnik: /ignore 6. A kiemelst szntessk meg albbi utastsok egyikvel: :set nohls vagy :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6. LECKE SSZEFOGLALJA 1. o bersval j sort nyitunk meg a sor ALATT s a kurzor az j sorban lesz beszrs-mdban. Nagy O a sor FELETT nyit j sort, s oda kerl a kurzor. 2. a bersval az aktulis karaktertl UTN (jobbra) szrhatunk be szveget. Nagy A automatikusan a sor legvghez adja hozz a szveget. 3. A nagy R betsvel tr (replace) mdba kerlnk lenyomsig. 4. ":set xxx" bersval az "xxx" opci llthat be. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7. lecke: AZ ON-LINE SG PARANCSAI ** Az online sgrendszer hasznlata ** A Vim rszletes sgval rendelkezik. Indulshoz a kvetkezk egyikt tegye: - nyomja meg a gombot (ha van ilyen) - nyomja meg az gombot (ha van ilyen) - rja be: :help :q bersval zrhatja be a sgablakot. Majdnem minden tmakrrl tallhat sgt, argumentum megadsval ":help" utasts . Prblja az albbiakat ki (-t ne felejtsk): :help w :help c_, 2006-2012 PK!I9vim80/tutor/tutor.ru.utf-8nu[=============================================================================== = Д о б р о п о ж а л о в а т ь в у ч е б н и к VIM -- версия 1.7 = =============================================================================== Vim -- это очень мощный редактор, имеющий множество команд, слишком много для того, чтобы их все можно было описать в таком учебнике, как этот. Этот учебник призван объяснить достаточное число команд для того, чтобы вы могли с лёгкостью использовать Vim в качестве редактора общего назначения. Вам потребуется приблизительно 25-30 минут на освоение данного учебника в зависимости от того, сколько времени вы потратите на эксперименты. Внимание! Командами в уроках вы будете изменять этот текст. Создайте копию этого файла, чтобы попрактиковаться на ней (если вы запустили "vimtutor", то это уже копия). Важно помнить, что этот учебник предназначен для обучения в процессе использования. Это означает, что вы должны запускать команды для того, чтобы как следует их изучить. Если вы просто прочитаете этот текст, то не запомните команды! Теперь убедитесь в том, что клавиша CapsLock не включена, и нажмите клавишу j несколько раз, так, чтобы Урок 1.1 полностью поместился на экране. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.1: ПЕРЕМЕЩЕНИЕ КУРСОРА ** Для перемещения курсора нажмите клавиши h,j,k,l так, как показано ниже. ** ^ k Советы: Клавиша h находится слева и перемещает влево. < h l > Клавиша l находится справа и перемещает вправо. j Клавиша j похожа на стрелку `вниз'. v 1. Подвигайте курсор по экрану, пока не почувствуете себя уверенно. 2. Надавите клавишу `вниз' (j) пока она не начнёт повторяться. Теперь вы знаете, как перейти к следующему уроку. 3. Используя клавишу `вниз' перейдите к Уроку 1.2. Замечание! Если вы пока не уверены в том, что набираете, нажмите для перехода в обычный режим (Normal mode). После этого перенаберите требуемую команду. Замечание! Обычные клавиши управления курсором (стрелки) также должны работать. Однако, клавиши hjkl позволят вам перемещаться значительно быстрее, как только вы научитесь ими пользоваться. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.2: ЗАВЕРШЕНИЕ РАБОТЫ С VIM !! ВНИМАНИЕ! Прежде, чем выполнять любой из описанных ниже шагов, прочтите урок целиком !! 1. Нажмите клавишу (для того, чтобы удостовериться, что вы в обычном режиме (Normal mode)). 2. Наберите: :q! . (Это означает, что вы должны набрать три символа :q! и нажать клавишу ввод.) Это позволит вам выйти из редактора БЕЗ СОХРАНЕНИЯ любых сделанных изменений. 3. Когда вы увидите приглашение командной оболочки, наберите команду, которая привела вас в этот учебник. Это может быть: vimtutor 4. Если вы уверены в том, что запомнили эти шаги, выполните шаги от 1 до 3 чтобы выйти и снова запустить редактор. Замечание! :q! отбрасывает любые сделанные вами изменения. Через несколько уроков вы узнаете как сохранять изменения в файл. 5. Переместите курсор вниз к Уроку 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.3: РЕДАКТИРОВАНИЕ ТЕКСТА -- УДАЛЕНИЕ ** Находясь в обычном режиме нажмите x для удаления символа под курсором. ** 1. Переместите курсор к строке ниже, помеченной --->. 2. Для исправления ошибок, переместите курсор, пока он не окажется над удаляемым символом. 3. Нажмите клавишу x для удаления требуемого символа. 4. Повторите шаги со 2 по 4 пока строка не будет исправлена. ---> От тттопота копытт пппыль ппо ппполю леттитт. 5. Теперь, когда строка откорректирована, переходите к Уроку 1.4. Замечание! В ходе освоения этого учебника не пытайтесь запоминать, учите в процессе использования. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.4: РЕДАКТИРОВАНИЕ ТЕКСТА -- ВСТАВКА ** Находясь в обычном режиме, нажмите i для вставки текста. ** 1. Переместите курсор к первой строке ниже, помеченной --->. 2. Для того, чтобы сделать первую строку идентичной второй, поместите курсор на символ ПЕРЕД которым следует вставить текст. 3. Нажмите i и наберите требуемые добавления. 4. После исправления всех ошибок нажмите для возврата в обычный режим. Повторите шаги со 2 по 4, пока фраза не будет исправлена полностью. ---> Часть текста в строке бесследно . ---> Часть текста в этой строке бесследно пропала. 5. Когда освоите вставку текста, переходите к Уроку 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.5: РЕДАКТИРОВАНИЕ ТЕКСТА -- ДОБАВЛЕНИЕ ** Находясь в обычном режиме, нажмите A для добавления текста. ** 1. Переместите курсор к первой строке ниже, помеченной --->. Не имеет значения на каком символе расположен курсор на этой строке. 2. Нажмите A и наберите требуемые добавления. 3. После добавления требуемого текста нажмите для возврата в обычный режим. 4. Переместите курсор на следующую строку, помеченную ---> и повторите шаги со 2 по 4 для исправления этой строки. ---> Часть текста в этой строке бессле Часть текста в этой строке бесследно пропала. ---> Здесь также не достаёт час Здесь также не достаёт части текста. 5. Когда освоите добавление текста, переходите к Уроку 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.6: РЕДАКТИРОВАНИЕ ФАЙЛА ** Используйте :wq для сохранения файла и выхода из Vim. ** !! ВНИМАНИЕ! Прежде, чем выполнять любой из описанных ниже шагов, прочтите урок целиком !! 1. Выйдите из Vim, как вы это узнали в Уроке 1.2: :q! Или, если у вас есть доступ к другому терминалу, можете сделать следующее в нём. 2. По приглашению командной оболочки введите следующую команду: vim tutor `vim' -- команда для запуска редактора Vim, а `tutor' -- имя файла для редактирования. Используете имя файла, который можно изменять. 3. Вставляйте и удаляйте текст, как вы научились в предыдущих уроках. 4. Сохраните файл с изменениями и выйдите из Vim выполнив: :wq 5. Если вы вышли из vimtutor на шаге 1, перезапустите vimtutor и переходите к следующему Резюме. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 1 1. Курсор перемещается либо клавишами со стрелками, либо клавишами hjkl. h (влево) j (вниз) k (вверх) l (вправо) 2. Для запуска Vim (из приглашения командной оболочки) наберите: vim ИМЯ_ФАЙЛА 3. Для завершения работы с Vim наберите: :q! чтобы отказаться от сохранения изменений. Или наберите: :wq чтобы сохранить изменения. 4. Для удаления символа под курсором в обычном режиме, нажмите: x 5. Чтобы вставить текст перед курсором в обычном режиме, наберите: i вводите вставляемый текст Чтобы добавить текст после курсора: a вводите добавляемый текст Замечание! Нажатие переместит вас в обычный режим (Normal mode) либо прервёт нежелательную и частично завершённую команду. Теперь переходите к Уроку 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.1: КОМАНДЫ УДАЛЕНИЯ ** Наберите dw для удаления участка текста до конца слова. ** 1. Нажмите , чтобы перейти в обычный режим. 2. Переместите курсор вниз, к строке помеченной --->. 3. Переместите курсор в начало слова, которое следует удалить. 4. Наберите dw для удаления этого слова. Замечание! Во время набора буквы dw появятся справа в самой нижней строке экрана. Если вы что-то наберёте неправильно, нажмите и начните сначала. ---> Несколько слов рафинад в этом предложении автокран излишни. 5. Повторите шаги 3 и 4, пока не исправите все ошибки и переходите к Уроку 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.2: ДОПОЛНИТЕЛЬНЫЕ КОМАНДЫ УДАЛЕНИЯ ** Наберите d$ для удаления текста до конца строки. ** 1. Нажмите , чтобы перейти в обычный режим. 2. Переместите курсор вниз, к строке помеченной --->. 3. Переместите курсор к концу правильной строки (ПОСЛЕ первой точки). 4. Наберите d$ для удаления остатка строки. ---> Кто-то набрал окончание этой строки дважды. окончание этой строки дважды. 5. Чтобы лучше разобраться в том, как это происходит, переходите к Уроку 2.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.3: КОМАНДЫ И ОБЪЕКТЫ Многие команды, изменяющие текст, состоят из оператора и объекта. Формат команды удаления с оператором d следующий: d объект Здесь: d - оператор удаления. объект - над чем должна быть выполнена команда (перечислено ниже). Краткий список объектов: w - от курсора до конца слова, включая последующий пробел. e - от курсора до конца слова, НЕ включая последующий пробел. $ - от курсора до конца строки. ^ - от курсора до начала строки. Замечание! Простое нажатие на символ объекта в обычном режиме (Normal mode) без предварительного оператора переместит курсор так, как указано в списке объектов. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.4: ИСПОЛЬЗОВАНИЕ СЧЁТЧИКА ДЛЯ ПЕРЕМЕЩЕНИЯ ** Ввод числа перед оператором перемещения приведёт к его повторению заданное количество раз. ** 1. Переместите курсор к началу строки отмеченной ---> ниже. 2. Наберите 2w для перемещения курсора вперёд к началу второго слова. 3. Наберите 3e для перемещения курсора вперёд к концу третьего слова. 4. Наберите 0 (нуль) для перемещения к началу строки. 5. Повторите шаги 2 и 3 с различными числами. ---> Обычная строка из слов для вашего перемещения по ней. 6. Переходите к Уроку 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.5: ИСПОЛЬЗОВАНИЕ СЧЁТЧИКА ДЛЯ УДАЛЕНИЯ ** Ввод числа перед оператором приведёт к его повторению заданное количество раз. ** Добавьте число перед перед объектом в комбинацию оператора удаления и перемещения указанную выше для удаления указанного количества объектов: d число объект 1. Переместите курсор к первому слову из прописных букв в отмеченной ---> строке ниже. 2. Наберите d2w для удаления двух слов из прописных букв. 3. Повторите шаги 1 и 2 с другими числами для удаления последовательных слов из прописных букв одной командой. ---> эта АБВ ГД строка ЕЖЗИ КЛ МНО из слов П РС ТУФ очищена. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.6: ОПЕРАЦИИ СО СТРОКАМИ ** Наберите dd для удаления целой строки. ** В связи с частой необходимостью удаления целой строки, создатели Vi решили для упрощения сделать возможным удаление строки набором двух d. 1. Переместите курсор вниз, ко второй строке фразы. 2. Наберите dd для удаления строки. 3. Теперь переместитесь к четвёртой строке. 4. Наберите 2dd для удаления двух строк. ---> 1) Летом я хожу на стадион, ---> 2) О, как внезапно кончился диван! ---> 3) Я болею за ``Зенит'', ``Зенит'' --- чемпион! ---> 4) Печально я гляжу на наше поколение! ---> 5) Его грядущее иль пусто иль темно... ---> 6) Я сижу на скамейке в ложе `Б' ---> 7) И играю на большой жестяной трубе. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.7: КОМАНДА `ОТМЕНА' ** Нажмите u для отмены результата работы предыдущей команды, U для отмены исправлений во всей строке. ** 1. Переместите курсор вниз, к строке помеченной --->, и установите его на первую ошибку. 2. Нажмите x для удаления первого неправильного символа. 3. Теперь нажмите u для отмены (отката) последней выполненной команды. 4. Исправьте все ошибки в строке, используя команду x . 5. Теперь нажмите заглавную U для того, чтобы вернуть всю строку в исходное состояние. 6. Нажмите u несколько раз для отмены команды U и предыдущих команд. 7. Нажмите теперь CTRL-R (т.е. удерживайте клавишу CTRL нажатой в момент нажатия клавиши R) несколько раз для возврата команд (откат отката). ---> Испрравьте оошибки в этойй строке и вернитте их сс помощьью `отмены'. 8. Это были очень полезные команды. Далее переходите к Резюме Урока 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 2 1. Для удаления текста от курсора до конца слова наберите: dw 2. Для удаления текста от курсора до конца строки наберите: d$ 3. Для удаления всей строки наберите: dd 4. Для повтора перемещения введите количество перед командой: 2w 5. Формат команды в обычном режиме имеет вид: [число] команда объект ИЛИ команда [число] объект где: [число] - сколько раз повторить выполнение команды, опционально команда - что выполнить, например d для удаления объект - на что должна воздействовать команда, например w (слово), $ (до конца строки), и т.д. 6. Для перехода к началу строки используйте нуль: 0 7. Для отмены (отката) предшествующих действий наберите: u (строчная u) Для отмены (отката) всех изменений в строке наберите: U (прописная U) Для отмены отката наберите: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.1: КОМАНДА ВСТАВКИ ** Наберите p для вставки последнего удалённого текста после курсора. ** 1. Переместите курсор вниз, к строке помеченной --->. 2. Наберите dd для удаления строки и её сохранения в буфере Vim'а. 3. Переместите курсор к строке НАД тем местом, куда следует вставить удалённую строку. 4. Находясь в обычном режиме наберите p для вставки строки ниже курсора. 5. Повторите шаги со 2 по 4, пока не расставите все строки в нужном порядке. ---> г) И лучше выдумать не мог. ---> б) Когда не в шутку занемог, ---> в) Он уважать себя заставил ---> а) Мой дядя самых честных правил ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.2: КОМАНДА ЗАМЕНЫ ** Наберите r и символ, заменяющий символ под курсором. ** 1. Переместите курсор вниз, к строке помеченной --->. 2. Установите курсор так, чтобы он находился над первой ошибкой. 3. Наберите r и затем символ, исправляющий ошибку. 4. Повторите шаги 2 и 3, пока первая строка не будет исправлена как вторая. ---> В момегт набтра этой чтроки кое0кто с трудом попвдал по клваишам! ---> В момент набора этой строки кое-кто с трудом попадал по клавишам! 5. Теперь переходите к Уроку 3.3. Замечание! Помните, что вы должны учиться в процессе работы, а не просто запоминая. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.3: КОМАНДА ИЗМЕНЕНИЯ ** Для изменения конечной части слова наберите ce . ** 1. Переместите курсор вниз, к строке помеченной --->. 2. Расположите курсор над буквой `o' в слове `сола'. 3. Наберите ce и исправьте слово (в данном случае, наберите `лов'). 4. Нажмите и переходите к следующей ошибке (к первому символу, который надо изменить). 5. Повторите шаги 3 и 4 пока первое предложение не станет идентичным второму. ---> Несколько сола в эьгц строке тпгшцбь редалзкуюиесвх. ---> Несколько слов в этой строке требуют редактирования. Обратите внимание, что ce не только удаляет слово, но и переводит вас в режим вставки. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.4: ПРОДОЛЖАЕМ ИЗМЕНЯТЬ С КОМАНДОЙ c ** Команда замены используется с теми же объектами, что и команда удаления. ** 1. Команда изменения применяется таким же образом, как и команда удаления. Её формат таков: [число] c объект ИЛИ c [число] объект 2. Объекты также совпадают: w (слово), $ (конец строки) и т.п. 3. Переместите курсор вниз, к строке помеченной --->. 4. Перейдите к первой ошибке. 5. Наберите c$ и отредактируйте первую строку так, чтобы она совпадала со второй, после чего нажмите . ---> Конец этой строки нуждается в помощи, чтобы стать похожим на второй. ---> Конец этой строки нуждается в помощи команды c$ . Замечание! Клавиша Backspace может использоваться для исправления при наборе. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 3 1. Для вставки текста, который только что был удалён, наберите p . Эта команда вставит удалённый текст ПОСЛЕ курсора (если была удалена строка, то она будет помещена в строке под курсором). 2. Для замены символа под курсором наберите r и затем заменяющий символ. 3. Команда изменения позволяет вам изменить указанный объект от курсора до окончания перемещения. Например, наберите ce для замены от курсора до конца слова, c$ для изменения до конца строки. 4. Формат команды изменения таков: [число] c объект ИЛИ c [число] объект Теперь переходите к следующему уроку. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.1: ИНФОРМАЦИЯ О ФАЙЛЕ И РАСПОЛОЖЕНИИ В НЕМ ** Наберите CTRL-g чтобы увидеть ваше месторасположение в файле и информацию о файле. Наберите G (SHIFT-G) для перемещения к заданной строке в файле. ** Замечание! Прочитайте весь урок прежде чем выполнять любые команды! 1. Удерживая клавишу Ctrl нажмите g . Внизу экрана появится строка статуса с именем файла и номером строки, в которой вы находитесь. Запомните номер строки, он потребуется на Шаге 3. 2. Удерживая клавишу Shift нажмите g для перемещения к концу файла. 3. Наберите номер строки, в которой вы находились и затем Shift-G. Это вернёт вас к строке, в которой вы были, когда в первый раз нажали Ctrl-g. 4. Если вы запомнили все вышесказанное, выполните шаги с 1 по 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.2: КОМАНДА ПОИСКА ** Наберите / и затем введите искомую фразу. ** 1. В обычном режиме (Normal mode) наберите символ / . Обратите внимание, что он вместе с курсором появится внизу экрана, как это происходит с командой : . 2. Теперь наберите 'ошшшибка' . Это то слово, которое вы будете искать. 3. Для того, чтобы повторить поиск, просто нажмите n . Для поиска этой же фразы в обратном направлении, нажмите Shift-N . 4. Если вы желаете сразу искать в обратном направлении, используйте команду ? вместо / . 5. Для того, чтобы вернуться туда, откуда вы начали поиск нажмите Ctrl-O. (Удерживая нажатой клавишу Ctrl нажмите o ). Повторите несколько раз для дальнейшего перехода. Для перехода вперёд используйте Ctrl-I . ---> "ошшшибка" это не способ написания слова `ошибка'; ошшшибка это ошибка. Замечание! Если при поиске будет достигнут конц файла, то поиск будет продолжен с начала. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.3: ПОИСК ПАРНЫХ СКОБОК ** Наберите % для поиска парных ), ] или } . ** 1. Поместите курсор над любой из (, [ или { в строке ниже, помеченной --->. 2. Теперь наберите символ % . 3. Курсор должен перескочить на парную скобку. 4. Наберите % для возврата курсора назад к первой скобке. ---> Это ( строка, содержащая такие (, такие [ ] и такие { } скобки. )) Замечание! Это очень удобно при отладке программ с пропущенными скобками! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.4: СПОСОБ ИСПРАВЛЕНИЯ ОШИБОК ** Наберите :s/было/стало/g для замены 'было' на 'стало'. ** 1. Переместите курсор вниз, к строке помеченной --->. 2. Наберите :s/уводю/увожу . Обратите внимание на то, что эта команда заменит только первое найденное вхождение в строке. 3. Теперь наберите :s/уводю/увожу/g , добавленная в конце g означает подстановку глобально во всей строке. Это заменит все найденные в строке вхождения. ---> Я уводю к отверженным селеньям, я уводю сквозь вековечный стон, я уводю к забытым поколеньям. 4. Для замены всех вхождений последовательности символов между двумя строками, наберите :#,#s/было/стало/g где #,# -- номера этих строк. Наберите :%s/было/стало/g для замены всех вхождений во всем файле. Наберите :%s/было/стало/gc для поиска всех вхождений во всем файле и запроса подтверждения замены. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 4 1. Ctrl-g показывает ваше положение в файле и информацию о нем. Shift-G перемещает вас в конец файла. Номер, за которым следует Shift-G позволяет перейти к строке с этим номером. gg перемещает вас к первой строке файла. 2. Нажатие / и затем ввод строки позволяет произвести поиск этой строки ВПЕРЁД по тексту. Нажатие ? и затем ввод строки позволяет произвести поиск этой строки НАЗАД по тексту. После поиска наберите n для перехода к следующему вхождению искомой строки в том же направлении или Shift-N для перехода в противоположном направлении. 3. Нажатие % , когда курсор находится на (,),[,],{, или } позволяет найти парную скобку. 4. Для подстановки `стало' вместо первого `было' в строке, наберите :s/old/new Для подстановки `стало' вместо всех `было' в строке, наберите :s/old/new/g Для замены в интервале между двумя строками, наберите :#,#s/old/new/g Для замены всех вхождений `было' на `стало' в файле, наберите :%s/old/new/g Чтобы редактор каждый раз запрашивал подтверждение, добавьте 'c' :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.1: КАК ВЫПОЛНИТЬ ВНЕШНЮЮ КОМАНДУ ** Наберите :! и затем внешнюю команду, которую следует выполнить. ** 1. Наберите уже знакомую вам команду : для установки курсора в командную строку редактора. Это позволит вам ввести команду. 2. Теперь наберите символ ! (восклицательный знак). Это позволит выполнить внешнюю команду, используя командную оболочку. 3. Для примера наберите ls после ! и нажмите . Команда выведет список файлов в текущем каталоге, точно также, как если бы вы ввели эту команду в приглашении оболочки. Или попробуйте :!dir , если команда ls не сработала. Замечание! Таким способом можно выполнить любую внешнюю команду с указанием аргументов. Замечание! Все команды, начинающиеся с : , должны завершаться нажатием . Далее на это не всегда будет обращаться особое внимание. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.2: КАК ЗАПИСАТЬ ФАЙЛ ** Для сохранения изменений, произведённых в файле, наберите :w ИМЯ_ФАЙЛА. ** 1. Наберите :!dir или :!ls для получения списка файлов в текущем каталоге. Как вам уже известно, после ввода команды надо нажать . 2. Придумайте название для файла, которое ещё не существует, например TEST. 3. Теперь наберите :w TEST (где TEST -- это имя файла, придуманное вами.) 4. Команда сохранит весь этот файл (Учебник по Vim) под именем TEST. Чтобы удостовериться в этом, снова наберите :!dir или :!ls и просмотрите каталог. Замечание! Если вы выйдете из Vim и затем запустите его снова с файлом TEST (т.е. выполните vim TEST ), этот файл будет точной копией учебника в тот момент, когда вы его сохранили. 5. Теперь удалите этот файл, набрав для MS-DOS :!del TEST для Unix :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.3: ВЫБОРОЧНОЕ СОХРАНЕНИЕ ** Для сохранения части файла, наберите v выберите часть и сохраните её :w ИМЯ_ФАЙЛА ** 1. Переместите курсор к этой строке. 2. Нажмите v и переместите курсор ниже к пятому шагу. Обратите внимание, что текст подсвечен. 3. Нажмите : и внизу экрана появится :'<,'> . 4. Введите w TEST (где TEST -- имя файла, который ещё не существует). До нажатия , проверьте что внизу экрана написано :'<,'>w TEST. 5. Vim запишет выбранные строки в файл TEST. Как и прежде, убедитесь в наличии этого файла командой :!dir или :!ls . НЕ УДАЛЯЙТЕ этот файл, он потребуется в следующем уроке. Замечание! Нажатие v начинает визуальный выбор. Вы можете перемещать курсор для изменения выбора. Затем для выбранного фрагмента можно выполнить какой-то оператор, например, удалить нажатием d. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.4: ЧТЕНИЕ И ОБЪЕДИНЕНИЕ ФАЙЛОВ ** Для вставки содержимого из файла, наберите :r ИМЯ_ФАЙЛА ** 1. Установите курсор над этой строкой. Замечание! После выполнения Шага 2 вы увидите текст из Урока 5.3. Переместитесь ВНИЗ по тексту до этого урока. 2. Теперь прочитайте ваш файл TEST, используя команду :r TEST , где TEST -- это имя файла. 3. Для проверки что содержимое файла было вставлено, переместитесь по тексту и удостоверьтесь, что теперь в нём две копии Урока 5.3: исходная и из файла TEST. Замечание! Вставить можно и вывод внешней команды. Например, :r !ls прочитает вывод команды ls и вставит его ниже курсора. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 5 1. :!команда исполняет внешнюю команду. Некоторые полезные примеры: (MS-DOS) (Unix) :!dir :!ls -- вывести список файлов в каталоге. :!del ИМЯ :!rm ИМЯ -- удалить файл по имени. 2. :w ИМЯ_ФАЙЛА записывает текущий редактируемый в Vim файл на диск под указанным именем. 3. v перемещение :w ИМЯ_ФАЙЛА сохраняет визуально выбранные строки в файл с указанным именем. 4. :r ИМЯ_ФАЙЛА считывает с диска файл с указанным именем и помещает его ниже курсора. 5. :r !dir читает вывод команды dir и помещает его ниже курсора. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.1: КОМАНДА СОЗДАНИЯ ** Наберите o чтобы создать пустую строку под курсором и перейти в режим вставки (Insert mode) ** 1. Переместите курсор вниз, к строке помеченной --->. 2. Наберите o (в нижнем регистре) для того, чтобы создать пустую строку НИЖЕ курсора и перейти в режим вставки (Insert mode). 3. Теперь наберите какой-нибудь текст и нажмите для выхода из режима вставки. ---> После нажатия o курсор перейдёт на новую пустую строку в режиме вставки. 4. Для создания строки ВЫШЕ курсора, просто наберите заглавную O , вместо строчной o . Попробуйте проделать это с нижеследующей строкой. ---> Создайте новую строку над этой, поместив на неё курсор и нажав Shift-O. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.2: КОМАНДА ДОБАВЛЕНИЯ ** Наберите a , чтобы вставить текст ПОСЛЕ курсора. ** 1. Переместите курсор вниз, в начало первой строки помеченной --->. 2. Набирайте e пока курсор не переместиться на конец cтро . 3. Наберите a (в нижнем регистре) для добавления текста ПОСЛЕ символа, находящегося под курсором. (Заглавная A позволяет добавить в конец строки.) 4. Допишите слово так, как показано в строке ниже. Нажмите для выхода из режима вставки (Insert mode). 5. Используйте e для перехода к концу следующего незавершённого слова и повторите шаги 3 и 4. ---> Эта стро позволит вам попрактиков в добавле текста. ---> Эта строчка позволит вам попрактиковаться в добавлении текста. Замечание! a , i и A переводят в один и тот же режим вставки, различие только в том, где вставляются символы. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.3: ЕЩЁ ОДИН СПОСОБ ЗАМЕНЫ ** Наберите заглавную R для замены более чем одного символа. ** 1. Переместите курсор вниз, к первой строке помеченной --->, и в начало первого слова xxx. 2. Теперь нажмите R и введите число, указанное ниже во второй строке, чтобы заменить xxx. 3. Нажмите для выхода из режима замены. Заметьте, что остаток строки не был изменён. 4. Повторите эти шаги для замены оставшихся xxx. ---> Добавление 123 к xxx даёт xxx. ---> Добавление 123 к 456 даёт 579. Замечание! Режим замены похож на режим вставки, но каждый введённый символ удаляет существующий. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.4: КОПИРОВАНИЕ И ВСТАВКА ТЕКСТА ** Используйте команду y для копирования и p для вставки ** 1. Переместите курсор вниз, к первой строке помеченной --->, и после `а)'. 2. Переключитесь в режим визуального выбора нажав v и переместите курсор перед словом `первый'. 3. Введите y для копирования подсвеченного текста. 4. Переместите курсор в конец следующей строки комбинацией j$ . 5. Нажмите p для вставки текста. Затем введите `второй' и нажмите . ---> а) Этот элемент первый. б) Замечание! Также возможно использовать yw (команду y с оператором w ) для копирования одного слова. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.5: УСТАНОВКА ПАРАМЕТРОВ ** Установка параметра для игнорирования регистра при поиске или замене ** 1. Найдите слово `игнорировать', набрав: /игнорировать . Повторите поиск несколько раз, нажимая клавишу n . 2. Установите параметр `ic' (игнорировать регистр), набрав: :set ic 3. Теперь снова несколько раз сделайте поиск слова `игнорировать', нажимая: n Заметьте, что теперь находятся `Игнорировать' и `ИГНОРИРОВАТЬ'. 4. Установите параметры `hlsearch' и `incsearch': :set hls is 5. Теперь опять введите команду поиска и посмотрите, что получится: /игнорировать 6. Для возвращения учёта регистра при поиске наберите: :set noic Замечание! Для отключения подсветки совпадений наберите: :nohlsearch Замечание! Если вы хотите игнорировать регистр только для одного поиска, используйте \с в команде поиска: /игнорировать\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 6 1. Нажмите o для создания строки НИЖЕ курсора и перехода в режим вставки. Нажмите O для создания строки ВЫШЕ курсора. 2. Нажмите a для вставки текста ПОСЛЕ курсора. Нажмите A для вставки текста в конец строки. 3. Команда e подводит курсор к концу слова. 4. Команда y копирует текст, p -- вставляет скопированный текст. 5. Нажатие заглавной R переводит в режим замены до нажатия клавиши . 6. Наберите `:set xxx' для включения параметра `xxx', некоторые параметры: `ic' `ignorecase' игнорирование регистра при поиске `is' `incsearch' отображение частичных совпадений при поиске `hls' `hlsearch' подсветка всех совпадений при поиске 7. Добавьте `no' перед параметром для его отключения: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 7.1: ВСТРОЕННАЯ СПРАВКА ** Используйте встроенную справочную систему ** Vim обладает мощной встроенной справочной системой. Для начала попробуйте один из трёх вариантов: - нажмите клавишу (если таковая имеется на клавиатуре) - нажмите клавишу (если таковая имеется на клавиатуре) - наберите :help Прочитайте текст в окне справки для получения представления о том как работает справка. Нажмите CTRL-W CTRL-W для перехода от окна к окну. Наберите :q чтобы закрыть окно справки. Вы можете найти справку для любого понятия или команды, задав соответствующий аргумент команде `:help'. Попробуйте следующее (не забудьте нажать ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 7.2: СОЗДАНИЕ СТАРТОВОГО СЦЕНАРИЯ ** Включим возможности Vim ** Vim имеет намного больше возможностей, чем Vi, но большинство из них по умолчанию выключены. Для использования больших возможностей вам следует создать файл `vimrc'. 1. Отредактируйте новый файл `vimrc'. Его расположение зависит от используемой системы: :e ~/.vimrc для Unix :e $VIM/_vimrc для MS-Windows 2. Теперь прочитайте пример файла `vimrc': :r $VIMRUNTIME/vimrc_example.vim 3. Запишите созданный вами новый файл `vimrc': :w Теперь при следующем запуске Vim будет включена подсветка синтаксиса. Все настройки, предпочитаемые вами, могут быть добавлены в файл `vimrc'. Для дальнейшей информации наберите :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 7.3: ДОПОЛНЕНИЕ ** Командную строку можно дополнить нажав CTRL-D и ** 1. Удостоверьтесь, что Vim не в режиме совместимости: :set nocp 2. Посмотрите какие файлы есть в каталоге: :!ls или :!dir 3. Наберите начало команды: :e 4. Нажмите CTRL-D и Vim отобразит список команд начинающихся на `e'. 5. Нажмите и Vim дополнит название команды до `:edit'. 6. Теперь добавьте пробел и начало существующего имени файла: :edit ФАЙ 7. Нажмите и Vim дополнит имя файла, если оно уникальное. Замечание! Дополнение работает для многих команд. Попробуйте нажать CTRL-D и . Это особенно полезно для команды :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ РЕЗЮМЕ УРОКА 7 1. Наберите :help или нажмите , или для открытия окна справки. 2. Наберите :help cmd для поиска справки по команде. 3. Нажмите CTRL-W CTRL-W для перехода к другому окну. 4. Наберите :q для закрытия окна справки (если оно активно). 5. Для хранения ваших настроек создайте стартовый сценарий `vimrc'. 6. При наборе : команды, нажмите CTRL-D для отображения возможных дополнений. Нажмите для использования дополнения. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ На этом завершается Учебник Vim. Он был предназначен дать общее представление о редакторе Vim, достаточное для того, чтобы с лёгкостью использовать его. Учебник далёк от полноты, поскольку Vim имеет очень много команд. Прочитайте теперь руководство пользователя: `:help user-manual'. Для дальнейшего чтения рекомендуется книга: Vim - Vi Improved, автор: Steve Oualline, издатель: New Riders Эта книга полностью посвящена Vim. Особенно полезна она будет новичкам. Содержит множество примеров и иллюстраций. См. http://iccf-holland.org/click5.html Следующая книга более почтенного возраста и посвящена больше Vi, чем Vim, однако также рекомендуется: Learning the Vi Editor, автор: Linda Lamb, издатель: O'Reilly & Associates Inc. Это хорошая книга, чтобы узнать всё, что только можно сделать в Vi. Шестое издание также включает информацию о Vim. Этот учебник написал Michael C. Pierce и Robert K. Ware, Colorado School of Mines с использованием идей, которые предложил Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Доработано для Vim Брамом Моленаром (Bram Moolenaar). Перевод: Андрей Киселев , 2002. Сергей Алёшин , 2014. Translators: Andrey Kiselev , 2002. Sergey Alyoshin , 2014. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!{ ppvim80/tutor/tutor.svnu[=============================================================================== = V ä l k o m m e n t i l l h a n d l e d n i n g e n i V i m - Ver. 1.5 = =============================================================================== Vim är en väldigt kraftfull redigerare som har många kommandon, alltför många att förklara i en handledning som denna. Den här handledningen är gjord för att förklara tillräckligt många kommandon så att du enkelt ska kunna använda Vim som en redigerare för alla ändamål. Den beräknade tiden för att slutföra denna handledning är 25-30 minuter, beroende på hur mycket tid som läggs ned på experimentering. Kommandona i lektionerna kommer att modifiera texten. Gör en kopia av den här filen att öva på (om du startade "vimtutor är det här redan en kopia). Det är viktigt att komma ihåg att den här handledningen är konstruerad att lära vid användning. Det betyder att du måste köra kommandona för att lära dig dem ordentligt. Om du bara läser texten så kommer du att glömma kommandona! Försäkra dig nu om att din Caps-Lock tangent INTE är aktiv och tryck på j-tangenten tillräckligt många gånger för att förflytta markören så att Lektion 1.1 fyller skärmen helt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.1: FLYTTA MARKÖREN ** För att flytta markören, tryck på tangenterna h,j,k,l som indikerat. ** ^ k Tips: < h l > h-tangenten är till vänster och flyttar till vänster. j l-tangenten är till höger och flyttar till höger. v j-tangenten ser ut som en pil ned. 1. Flytta runt markören på skärmen tills du känner dig bekväm. 2. Håll ned tangenten pil ned (j) tills att den repeterar. ---> Nu vet du hur du tar dig till nästa lektion. 3. Flytta till Lektion 1.2, med hjälp av ned tangenten. Notera: Om du är osäker på någonting du skrev, tryck för att placera dig dig i Normal-läge. Skriv sedan om kommandot. Notera: Piltangenterna borde också fungera. Men om du använder hjkl så kommer du att kunna flytta omkring mycket snabbare, när du väl vant dig vid det. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.2: STARTA OCH AVSLUTA VIM !! NOTERA: Innan du utför någon av punkterna nedan, läs hela lektionen!! 1. Tryck -tangenten (för att se till att du är i Normal-läge). 2. Skriv: :q! . ---> Detta avslutar redigeraren UTAN att spara några ändringar du gjort. Om du vill spara ändringarna och avsluta skriv: :wq 3. När du ser skal-prompten, skriv kommandot som tog dig in i den här handledningen. Det kan vara: vimtutor Normalt vill du använda: vim tutor ---> 'vim' betyder öppna redigeraren vim, 'tutor' är filen du vill redigera. 4. Om du har memorerat dessa steg och känner dig självsäker, kör då stegen 1 till 3 för att avsluta och starta om redigeraren. Flytta sedan ned markören till Lektion 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.3: TEXT REDIGERING - BORTTAGNING ** När du är i Normal-läge tryck x för att ta bort tecknet under markören. ** 1. Flytta markören till raden nedan med markeringen --->. 2. För att rätta felen, flytta markören tills den står på tecknet som ska tas bort. fix the errors, move the cursor until it is on top of the 3. Tryck på x-tangenten för att ta bort det felaktiga tecknet. 4. Upprepa steg 2 till 4 tills meningen är korrekt. ---> Kkon hoppadee övverr måånen. 5. Nu när raden är korrekt, gå till Lektion 1.4. NOTERA: När du går igenom den här handledningen, försök inte att memorera, lär genom användning. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.4: TEXT REDIGERING - INFOGNING ** När du är i Normal-läge tryck i för att infoga text. ** 1. Flytta markören till den första raden nedan med markeringen --->. 2. För att göra den första raden likadan som den andra, flytta markören till det första tecknet EFTER där text ska infogas. 3. Tryck i och skriv in det som saknas. 4. När du rättat ett fel tryck för att återgå till Normal-läge. Upprepa steg 2 till 4 för att rätta meningen. ---> Det sakns här . ---> Det saknas lite text från den här raden. 5. När du känner dig bekväm med att infoga text, gå till sammanfattningen nedan. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 1 SAMMANFATTNING 1. Markören flyttas genom att använda piltangenterna eller hjkl-tangenterna. h (vänster) j (ned) k (upp) l (höger) 2. För att starta Vim (från %-prompten) skriv: vim FILNAMN 3. För att avsluta Vim skriv: :q! för att kasta ändringar. ELLER skriv: :wq för att spara ändringar. 4. För att ta bort tecknet under markören i Normal-läge skriv: x 5. För att infoga text vid markören i Normal-läge skriv: i skriv in text NOTERA: Genom att trycka kommer du att placeras i Normal-läge eller avbryta ett delvis färdigskrivet kommando. Fortsätt nu med Lektion 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.1: BORTTAGNINGSKOMMANDON ** Skriv dw för att radera till slutet av ett ord. ** 1. Tryck för att försäkra dig om att du är i Normal-läge. 2. Flytta markören till raden nedan markerad --->. 3. Flytta markören till början av ett ord som måste raderas. 4. Skriv dw för att radera ordet. NOTERA: Bokstäverna dw kommer att synas på den sista raden på skärmen när du skriver dem. Om du skrev något fel, tryck och börja om. ---> Det är ett några ord roliga att som inte hör hemma i den här meningen. 5. Upprepa stegen 3 och 4 tills meningen är korrekt och gå till Lektion 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.2: FLER BORTTAGNINGSKOMMANDON ** Skriv d$ för att radera till slutet på raden. ** 1. Tryck för att försäkra dig om att du är i Normal-läge. 2. Flytta markören till raden nedan markerad --->. 3. Flytta markören till slutet på den rätta raden (EFTER den första . ). 4. Skriv d$ för att radera till slutet på raden. ---> Någon skrev slutet på den här raden två gånger. den här raden två gånger. 5. Gå vidare till Lektion 2.3 för att förstå vad det är som händer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.3: KOMMANDON OCH OBJEKT Syntaxen för d raderingskommandot är följande: [nummer] d objekt ELLER d [nummer] objekt Var: nummer - är antalet upprepningar av kommandot (valfritt, standard=1). d - är kommandot för att radera. objekt - är vad kommandot kommer att operera på (listade nedan). En kort lista över objekt: w - från markören till slutet av ordet, inklusive blanksteget. e - från markören till slutet av ordet, EJ inklusive blanksteget. $ - från markören till slutet på raden. NOTERA: För den äventyrslystne, genom att bara trycka på objektet i Normal-läge (utan kommando) så kommer markören att flyttas som angivet i objektlistan. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.4: ETT UNDANTAG TILL 'KOMMANDO-OBJEKT' ** Skriv dd för att radera hela raden. ** På grund av hur vanligt det är att ta bort hela rader, valde upphovsmannen till Vi att det skulle vara enklare att bara trycka d två gånger i rad för att ta bort en rad. 1. Flytta markören till den andra raden i frasen nedan. 2. Skriv dd för att radera raden. 3. Flytta nu till den fjärde raden. 4. Skriv 2dd (kom ihåg: nummer-kommando-objekt) för att radera de två raderna. 1) Roses are red, 2) Mud is fun, 3) Violets are blue, 4) I have a car, 5) Clocks tell time, 6) Sugar is sweet 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.5: ÅNGRA-KOMMANDOT ** Skriv u för att ångra det senaste kommandona, U för att fixa en hel rad. ** 1. Flytta markören till slutet av raden nedan markerad ---> och placera den på det första felet. 2. Skriv x för att radera den första felaktiga tecknet. 3. Skriv nu u för att ångra det senaste körda kommandot. 4. Rätta den här gången alla felen på raden med x-kommandot. 5. Skriv nu U för att återställa raden till dess ursprungliga utseende. 6. Skriv nu u några gånger för att ångra U och tidigare kommandon. 7. Tryck nu CTRL-R (håll inne CTRL samtidigt som du trycker R) några gånger för att upprepa kommandona (ångra ångringarna). ---> Fiixa felen ppå deen häär meningen och återskapa dem med ångra. 8. Det här är väldigt användbara kommandon. Gå nu vidare till Lektion 2 Sammanfattning. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 2 SAMMANFATTNING 1. För att radera från markören till slutet av ett ord skriv: dw 2. För att radera från markören till slutet av en rad skriv: d$ 3. För att radera en hel rad skriv: dd 4. Syntaxen för ett kommando i Normal-läge är: [nummer] kommando objekt ELLER kommando [nummer] objekt där: nummer - är hur många gånger kommandot kommandot ska repeteras kommando - är vad som ska göras, t.ex. d för att radera objekt - är vad kommandot ska operera på, som t.ex. w (ord), $ (till slutet av raden), etc. 5. För att ångra tidigare kommandon, skriv: u (litet u) För att ångra alla tidigare ändringar på en rad skriv: U (stort U) För att ångra ångringar tryck: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.1: KLISTRA IN-KOMMANDOT ** Skriv p för att klistra in den senaste raderingen efter markören. ** 1. Flytta markören till den första raden i listan nedan. 2. Skriv dd för att radera raden och lagra den i Vims buffert. 3. Flytta markören till raden OVANFÖR där den raderade raden borde vara. 4. När du är i Normal-läge, skriv p för att byta ut raden. 5. Repetera stegen 2 till 4 för att klistra in alla rader i rätt ordning. d) Kan du lära dig också? b) Violetter är blå, c) Intelligens fås genom lärdom, a) Rosor är röda, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.2: ERSÄTT-KOMMANDOT ** Skriv r och ett tecken för att ersätta tecknet under markören. ** 1. Flytta markören till den första raden nedan markerad --->. 2. Flytta markören så att den står på det första felet. 3. Skriv r och sedan det tecken som borde ersätta felet. 4. Repetera steg 2 och 3 tills den första raden är korrekt. ---> När drn här ruden skrevs, trickte någon på fil knappar! ---> När den här raden skrevs, tryckte någon på fel knappar! 5. Gå nu vidare till Lektion 3.2. NOTERA: Kom ihåg att du skall lära dig genom användning, inte genom memorering. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.3: ÄNDRA-KOMMANDOT ** För att ändra en del eller ett helt ord, skriv cw . ** 1. Flytta markören till den första redan nedan markerad --->. 2. Placera markören på d i rdrtn. 3. Skriv cw och det rätta ordet (i det här fallet, skriv "aden".) 4. Tryck och flytta markören till nästa fel (det första tecknet som ska ändras.) 5. Repetera steg 3 och 4 tills den första raden är likadan som den andra. ---> Den här rdrtn har några otf som brhotrt ändras mrf ändra-komjendit. ---> Den här raden har några ord som behöver ändras med ändra-kommandot. Notera att cw inte bara ändrar ordet, utan även placerar dig i infogningsläge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.4: FLER ÄNDRINGAR MED c ** Ändra-kommandot används på samma objekt som radera. ** 1. Ändra-kommandot fungerar på samma sätt som radera. Syntaxen är: [nummer] c objekt ELLER c [nummer] objekt 2. Objekten är också de samma, som t.ex. w (ord), $ (slutet av raden), etc. 3. Flytta till den första raden nedan markerad -->. 4. Flytta markören till det första felet. 5. Skriv c$ för att göra resten av raden likadan som den andra och tryck . ---> Slutet på den här raden behöver hjälp med att få den att likna den andra. ---> Slutet på den här raden behöver rättas till med c$-kommandot. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 3 SAMMANFATTNING 1. För att ersätta text som redan har blivit raderad, skriv p . Detta klistrar in den raderade texten EFTER markören (om en rad raderades kommer den att hamna på raden under markören. 2. För att ersätta tecknet under markören, skriv r och sedan tecknet som kommer att ersätta orginalet. 3. Ändra-kommandot låter dig ändra det angivna objektet från markören till slutet på objektet. eg. Skriv cw för att ändra från markören till slutet på ordet, c$ för att ändra till slutet på en rad. 4. Syntaxen för ändra-kommandot är: [nummer] c objekt ELLER c [nummer] objekt Gå nu till nästa lektion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.1: POSITION OCH FILSTATUS ** Tryck CTRL-g för att visa din position i filen och filstatusen. Tryck SHIFT-G för att flytta till en rad i filen. ** Notera: Läsa hela den lektion innan du utför något av stegen!! 1. Håll ned Ctrl-tangenten och tryck g . En statusrad med filnamn och raden du befinner dig på kommer att synas. Kom ihåg radnummret till Steg 3. 2. Tryck shift-G för att flytta markören till slutet på filen. 3. Skriv in nummret på raden du var på och tryck sedan shift-G. Detta kommer att ta dig tillbaka till raden du var på när du först tryckte Ctrl-g. (När du skriver in nummren, kommer de INTE att visas på skärmen.) 4. Om du känner dig säker på det här, utför steg 1 till 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.2: SÖK-KOMMANDOT ** Skriv / följt av en fras för att söka efter frasen. ** 1. I Normal-läge skriv /-tecknet. Notera att det och markören blir synlig längst ned på skärmen precis som med :-kommandot. 2. Skriv nu "feeel" . Det här är ordet du vill söka efter. 3. För att söka efter samma fras igen, tryck helt enkelt n . För att söka efter samma fras igen i motsatt riktning, tryck Shift-N . 4. Om du vill söka efter en fras bakåt i filen, använd kommandot ? istället för /. ---> "feeel" är inte rätt sätt att stava fel: feeel är ett fel. Notera: När sökningen når slutet på filen kommer den att fortsätta vid början. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.3: SÖKNING EFTER MATCHANDE PARENTESER ** Skriv % för att hitta en matchande ),], or } . ** 1. Placera markören på någon av (, [, or { på raden nedan markerad --->. 2. Skriv nu %-tecknet. 3. Markören borde vara på den matchande parentesen eller hakparentesen. 4. Skriv % för att flytta markören tillbaka till den första hakparentesen (med matchning). ---> Det ( här är en testrad med (, [ ] och { } i den. )) Notera: Det här är väldigt användbart vid avlusning av ett program med icke matchande parenteser! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.4: ETT SÄTT ATT ÄNDRA FEL ** Skriv :s/gammalt/nytt/g för att ersätta "gammalt" med "nytt". ** 1. Flytta markören till raden nedan markerad --->. 2. Skriv :s/denn/den . Notera att det här kommandot bara ändrar den första förekomsten på raden. 3. Skriv nu :s/denn/den/g vilket betyder ersätt globalt på raden. Det ändrar alla förekomster på raden. ---> denn bästa tiden att se blommor blomma är denn på våren. 4. För att ändra alla förekomster av en teckensträng mellan två rader, skriv :#,#s/gammalt/nytt/g där #,# är de två radernas radnummer. Skriv :%s/gammtl/nytt/g för att ändra varje förekomst i hela filen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 4 SAMMANFATTNING 1. Ctrl-g visar din position i filen och filstatusen. Shift-G flyttar till slutet av filen. Ett radnummer följt Shift-G flyttar till det radnummret. 2. Skriver man / följt av en fras söks det FRAMMÅT efter frasen. Skriver man ? följt av en fras söks det BAKÅT efter frasen. Efter en sökning skriv n för att hitta nästa förekomst i samma riktning eller Shift-N för att söka i den motsatta riktningen. 3. Skriver man % när markören är på ett (,),[,],{, eller } hittas dess matchande par. 4. För att ersätta den första gammalt med nytt på en rad skriv :s/gammlt/nytt För att ersätta alla gammlt med nytt på en rad skriv :s/gammlt/nytt/g För att ersätta fraser mellan rad # och rad # skriv :#,#s/gammlt/nytt/g För att ersätta alla förekomster i filen skriv :%s/gammlt/nytt/g För att bekräfta varje gång lägg till "c" :%s/gammlt/nytt/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.1: HUR MAN KÖR ETT EXTERNT KOMMANDO ** Skriv :! följt av ett externt kommando för att köra det kommandot. ** 1. Skriv det välbekanta kommandot : för att placera markören längst ned på skärmen på skärmen. Detta låter dig skriva in ett kommando. 2. Skriv nu ! (utropstecken). Detta låter dig köra ett godtyckligt externt skalkommando. 3. Som ett exempel skriv ls efter ! och tryck sedan . Detta kommer att visa dig en listning av din katalog, precis som om du kört det vid skalprompten. Använd :!dir om ls inte fungerar. Notera: Det är möjligt att köra vilket externt kommando som helst på det här sättet. Notera: Alla :-kommandon måste avslutas med att trycka på ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.2: MER OM ATT SPARA FILER ** För att spara ändringar gjorda i en fil, skriv :w FILNAMN. ** 1. Skriv :!dir eller :!ls för att få en listning av din katalog. Du vet redan att du måste trycka efter det här. 2. Välj ett filnamn som inte redan existerar, som t.ex. TEST. 3. Skriv nu: :w TEST (där TEST är filnamnet du valt.) 4. Det här sparar hela filen (Vim handledningen) under namnet TEST. För att verifiera detta, skriv :!dir igen för att se din katalog Notera: Om du skulle avsluta Vim och sedan öppna igen med filnamnet TEST så skulle filen vara en exakt kopia av handledningen när du sparade den. 5. Ta nu bort filen genom att skriva (MS-DOS): :!del TEST eller (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.3: ETT SELEKTIVT SPARA-KOMMANDO ** För att spara en del av en fil, skriv :#,# w FILNAMN ** 1. Ännu en gång, skriv :!dir eller :!ls för att få en listning av din katalog och välj ett passande filnamn som t.ex. TEST. 2. Flytta markören högst upp på den här sidan och tryck Ctrl-g för att få reda på radnumret på den raden. KOM IHÅG DET NUMMRET! 3. Flytta nu längst ned på sidan och skriv Ctrl-g igen. KOM IHÅG DET RADNUMMRET OCKSÅ! 4. För att BARA spara en sektion till en fil, skriv :#,# w TEST där #,# är de två nummren du kom ihåg (toppen, botten) och TEST är ditt filnamn. 5. Ännu en gång, kolla så att filen är där med :!dir men radera den INTE. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.4: TA EMOT OCH FÖRENA FILER ** För att infoga innehållet av en fil, skriv :r FILNAMN ** 1. Skriv :!dir för att försäkra dig om att TEST-filen från tidigare fortfarande är kvar. 2. Placera markören högst upp på den här sidan. NOTERA: Efter att du kört Steg 3 kommer du att se Lektion 5.3. Flytta då NED till den här lektionen igen. 3. Ta nu emot din TEST-fil med kommandot :r TEST där TEST är namnet på filen. NOTERA: Filen du tar emot placeras där markören är placerad. 4. För att verifiera att filen togs emot, gå tillbaka och notera att det nu finns två kopior av Lektion 5.3, orginalet och filversionen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 5 SAMMANFATTNING 1. :!kommando kör ett externt kommando. Några användbara exempel är: (MS-DOS) (Unix) :!dir :!ls - visar en kataloglistning. :!del FILNAMN :!rm FILNAMN - tar bort filen FILNAMN. 2. :w FILNAMN sparar den aktuella Vim-filen med namnet FILNAMN. 3. :#,#w FILNAMN sparar raderna # till # i filen FILNAMN. 4. :r FILNAMN tar emot filen FILNAMN och infogar den i den aktuella filen efter markören. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.1: ÖPPNA-KOMMANDOT ** Skriv o för att öppna en rad under markören och placera dig i Infoga-läge. ** 1. Flytta markören till raden nedan markerad --->. 2. Skriv o (litet o) för att öppna upp en rad NEDANFÖR markören och placera dig i Infoga-mode. 3. Kopiera nu raden markerad ---> och tryck för att avsluta Infoga-läget. ---> Efter du skrivit o placerad markören på en öppen rad i Infoga-läge. 4. För att öppna upp en rad OVANFÖR markören, skriv ett stort O , istället för ett litet o. Pröva detta på raden nedan. Öppna upp en rad ovanför denna genom att trycka Shift-O när markören står här. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.2: LÄGG TILL-KOMMANDOT ** Skriv a för att infoga text EFTER markören. ** 1. Flytta markören till slutet av den första raden nedan markerad ---> genom att skriv $ i Normal-läge. 2. Skriv ett a (litet a) för att lägga till text EFTER tecknet under markören. (Stort A lägger till i slutet av raden.) Notera: Detta undviker att behöva skriva i , det sista tecknet, texten att infoga, , högerpil, och slutligen, x, bara för att lägga till i slutet på en rad! 3. Gör nu färdigt den första raden. Notera också att lägga till är likadant som Infoga-läge, enda skillnaden är positionen där texten blir infogad. ---> Här kan du träna ---> Här kan du träna på att lägga till text i slutet på en rad. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.3: EN ANNAN VERSION AV ERSÄTT ** Skriv ett stort R för att ersätta fler än ett tecken. ** 1. Flytta markören till den första raden nedan markerad --->. 2. Placera markören vid början av det första ordet som är annorlunda jämfört med den andra raden markerad ---> (ordet "sista"). 3. Skriv nu R och ersätt resten av texten på den första raden genom att skriva över den gamla texten så att den första raden blir likadan som den andra. ---> För att få den första raden lika som den sista, använd tangenterna. ---> För att få den första raden lika som den andra, skriv R och den nya texten. 4. Notera att när du trycker för att avsluta, så blir eventuell oförändrad text kvar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.4: SÄTT FLAGGOR ** Sätt en flagga så att en sökning eller ersättning ignorerar storlek ** 1. Sök efter "ignore" genom att skriva: /ignore Repetera flera gånger genom att trycka på n-tangenten 2. Sätt 'ic' (Ignore Case) flaggan genom att skriva: :set ic 3. Sök nu efter "ignore" igen genom att trycka: n Repeat search several more times by hitting the n key 4. Sätt 'hlsearch' and 'incsearch' flaggorna: :set hls is 5. Skriv nu in sök-kommandot igen, och se vad som händer: /ignore 6. För att ta bort framhävningen av träffar, skriv :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 6 SAMMANFATTNING 1. Genom att skriva o öpnnas en rad NEDANFÖR markören och markören placeras på den öppna raden i Infoga-läge. Genom att skriva ett stort O öppnas raden OVANFÖR raden som markören är på. 2. Skriv ett a för att infoga text EFTER tecknet som markören står på. Genom att skriva ett stort A läggs text automatiskt till i slutet på raden. 3. Genom att skriva ett stort R hamnar du i Ersätt-läge till trycks för att avsluta. 4. Genom att skriva ":set xxx" sätts flaggan "xxx" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 7: ON-LINE HJÄLP-KOMMANDON ** Använd on-line hjälpsystemet ** Vim har ett omfattande on-line hjälpsystem. För att komma igång pröva ett av dessa tre: - tryck tangenten (om du har någon) - tryck tangenten (om du har någon) - skriv :help Skriv :q för att stränga hjälpfönstret. Du kan hitta hjälp om nästan allting, genom att ge ett argument till ":help" kommandot. Pröva dessa (glöm inte att trycka ): :help w :help c_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!>{{vim80/tutor/tutor.plnu[=============================================================================== = W i t a j w t u t o r i a l u V I M - a - Wersja 1.7. = =============================================================================== Vim to potężny edytor, który posiada wiele poleceń, zbyt dużo, by wyjaśnić je wszystkie w tym tutorialu. Ten przewodnik ma nauczyć Cię posługiwać się wystarczająco wieloma komendami, byś mógł łatwo używać Vima jako edytora ogólnego przeznaczenia. Czas potrzebny na ukończenie tutoriala to 25 do 30 minut i zależy od tego jak wiele czasu spędzisz na eksperymentowaniu. UWAGA: Polecenia wykonywane w czasie lekcji zmodyfikują tekst. Zrób wcześniej kopię tego pliku do ćwiczeń (jeśli zacząłeś komendą "vimtutor", to już pracujesz na kopii). Pamiętaj, że przewodnik ten został zaprojektowany do nauki poprzez ćwiczenia. Oznacza to, że musisz wykonywać polecenia, by nauczyć się ich prawidłowo. Jeśli będziesz jedynie czytał tekst, szybko zapomnisz wiele poleceń! Teraz upewnij się, że nie masz wciśniętego Caps Locka i wciskaj j tak długo dopóki Lekcja 1.1. nie wypełni całkowicie ekranu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.1.: PORUSZANIE SIĘ KURSOREM ** By wykonać ruch kursorem, wciśnij h, j, k, l jak pokazano. ** ^ k Wskazówka: h jest po lewej < h l > l jest po prawej j j wygląda jak strzałka w dół v 1. Poruszaj kursorem dopóki nie będziesz pewien, że pamiętasz polecenia. 2. Trzymaj j tak długo aż będzie się powtarzał. Teraz wiesz jak dojść do następnej lekcji. 3. Używając strzałki w dół przejdź do następnej lekcji. Uwaga: Jeśli nie jesteś pewien czegoś co wpisałeś, wciśnij , by wrócić do trybu Normal. Wtedy powtórz polecenie. Uwaga: Klawisze kursora także powinny działać, ale używając hjkl będziesz w stanie poruszać się o wiele szybciej, jak się tylko przyzwyczaisz. Naprawdę! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.2.: WYCHODZENIE Z VIM-a !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj całą lekcję !! 1. Wciśnij (aby upewnić się, że jesteś w trybie Normal). 2. Wpisz: :q!. To spowoduje wyjście z edytora PORZUCAJĄC wszelkie zmiany, jakie zdążyłeś zrobić. Jeśli chcesz zapamiętać zmiany i wyjść, wpisz: :wq 3. Kiedy widzisz znak zachęty powłoki wpisz komendę, żeby wrócić do tutoriala. Czyli: vimtutor 4. Jeśli chcesz zapamiętać polecenia, wykonaj kroki 1. do 3., aby wyjść i wrócić do edytora. UWAGA: :q! porzuca wszelkie zmiany jakie zrobiłeś. W następnych lekcjach dowiesz się jak je zapamiętywać. 5. Przenieś kursor do lekcji 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.3.: EDYCJA TEKSTU - KASOWANIE ** Wciśnij x aby usunąć znak pod kursorem. ** 1. Przenieś kursor do linii poniżej oznaczonej --->. 2. By poprawić błędy, naprowadź kursor na znak do usunięcia. 3. Wciśnij x aby usunąć niechciany znak. 4. Powtarzaj kroki 2. do 4. dopóki zdanie nie jest poprawne. ---> Kkrowa prrzeskoczyła prrzez ksiiężycc. 5. Teraz, kiedy zdanie jest poprawione, przejdź do Lekcji 1.4. UWAGA: Ucz się przez ćwiczenie, nie wkuwanie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) ** Wciśnij i aby wstawić tekst. ** 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. 2. Aby poprawić pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym, gdzie tekst ma być wstawiony. 3. Wciśnij i a następnie wpisz konieczne poprawki. 4. Po poprawieniu błędu wciśnij , by wrócić do trybu Normal. Powtarzaj kroki 2. do 4., aby poprawić całe zdanie. ---> W tej brkje trochę . ---> W tej linii brakuje trochę tekstu. 5. Kiedy czujesz się swobodnie wstawiając tekst, przejdź do podsumowania poniżej. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.5.: EDYCJA TEKSTU - APPENDING (dodawanie) ** Wciśnij A by dodać tekst. ** 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. Nie ma znaczenia, który to będzie znak. 2. Wciśnij A i wpisz odpowiednie dodatki. 3. Kiedy tekst został dodany, wciśnij i wróć do trybu Normalnego. 4. Przenieś kursor do drugiej linii oznaczonej ---> i powtórz kroki 2. i 3., aby poprawić zdanie. ---> Brakuje tu tro Brakuje tu trochę tekstu. ---> Tu też trochę bra Tu też trochę brakuje. 5. Kiedy już utrwaliłeś ćwiczenie, przejdź do lekcji 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.6.: EDYCJA PLIKU ** Użyj :wq aby zapisać plik i wyjść. ** !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj całą lekcję !! 1. Zakończ tutorial tak jak w lekcji 1.2.: :q! lub, jeśli masz dostęp do innego terminala, wykonaj kolejne kroki tam. 2. W powłoce wydaj polecenie: vim tutor "vim" jest poleceniem uruchamiającym edytor Vim. 'tutor' to nazwa pliku, jaki chcesz edytować. Użyj pliku, który może zostać zmieniony. 3. Dodaj i usuń tekst tak, jak się nauczyłeś w poprzednich lekcjach. 4. Zapisz plik ze zmianami i opuść Vima: :wq 5. Jeśli zakończyłeś vimtutor w kroku 1., uruchom go ponownie i przejdź do podsumowania poniżej. 6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 1. PODSUMOWANIE 1. Poruszasz kursorem używając "strzałek" i klawiszy hjkl . h (w lewo) j (w dół) k (do góry) l (w prawo) 2. By wejść do Vima, (z powłoki) wpisz: vim NAZWA_PLIKU 3. By wyjść z Vima, wpisz: :q! by usunąć wszystkie zmiany. LUB: :wq by zmiany zachować. 4. By usunąć znak pod kursorem, wciśnij: x 5. By wstawić tekst przed kursorem lub dodać: i wpisz tekst wstawi przed kursorem A wpisz tekst doda na końcu linii UWAGA: Wciśnięcie przeniesie Cię z powrotem do trybu Normal lub odwoła niechciane lub częściowo wprowadzone polecenia. Teraz możemy kontynuować i przejść do Lekcji 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.1.: POLECENIE DELETE (usuwanie) ** Wpisz dw by usunąć wyraz. ** 1. Wciśnij , by upewnić się, że jesteś w trybie Normal. 2. Przenieś kursor do linii poniżej oznaczonej --->. 3. Przesuń kursor na początek wyrazu, który chcesz usunąć. 4. Wpisz dw by usunąć wyraz. UWAGA: Litera d pojawi się na dole ekranu. Vim czeka na wpisanie w . Jeśli zobaczysz inny znak, oznacza to, że wpisałeś coś źle; wciśnij i zacznij od początku. ---> Jest tu parę papier wyrazów, które kamień nie należą do nożyce tego zdania. 5. Powtarzaj kroki 3. i 4. dopóki zdanie nie będzie poprawne, potem przejdź do Lekcji 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.2.: WIĘCEJ POLECEŃ USUWAJĄCYCH ** Wpisz d$ aby usunąć tekst do końca linii. ** 1. Wciśnij aby się upewnić, że jesteś w trybie Normal. 2. Przenieś kursor do linii poniżej oznaczonej --->. 3. Przenieś kursor do końca poprawnego zdania (PO pierwszej . ). 4. Wpisz d$ aby usunąć resztę linii. ---> Ktoś wpisał koniec tego zdania dwukrotnie. zdania dwukrotnie. 5. Przejdź do Lekcji 2.3., by zrozumieć co się stało. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.3.: O OPERATORACH I RUCHACH Wiele poleceń zmieniających tekst jest złożonych z operatora i ruchu. Format dla polecenia usuwającego z operatorem d jest następujący: d ruch gdzie: d - operator usuwania. ruch - na czym polecenie będzie wykonywane (lista poniżej). Krótka lista ruchów: w - do początku następnego wyrazu WYŁĄCZAJĄC pierwszy znak. e - do końca bieżącego wyrazu, WŁĄCZAJĄC ostatni znak. $ - do końca linii, WŁĄCZAJĄC ostatni znak. W ten sposób wpisanie de usunie znaki od kursora do końca wyrazu. UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor tak, jak to określono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.4.: UŻYCIE MNOŻNIKA DLA RUCHU ** Wpisanie liczby przed ruchem powtarza ruch odpowiednią ilość razy. ** 1. Przenieś kursor na początek linii poniżej zaznaczonej --->. 2. Wpisz 2w aby przenieść kursor o dwa wyrazy do przodu. 3. Wpisz 3e aby przenieść kursor do końca trzeciego wyrazu w przód. 4. Wpisz 0 (zero), aby przenieść kursor na początek linii. 5. Powtórz kroki 2. i 3. z innymi liczbami. ---> To jest zwykły wiersz z wyrazami, po których możesz się poruszać. 6. Przejdź do lekcji 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.5.: UŻYCIE MNOŻNIKA, BY WIĘCEJ USUNĄĆ ** Wpisanie liczby z operatorem powtarza go odpowiednią ilość razy. ** W wyżej wspomnianej kombinacji operatora usuwania i ruchu podaj mnożnik przed ruchem, by więcej usunąć: d liczba ruch 1. Przenieś kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->. 2. Wpisz 2dw aby usunąć dwa wyrazy KAPITALIKAMI. 3. Powtarzaj kroki 1. i 2. z innymi mnożnikami, aby usunąć kolejne wyrazy KAPITALIKAMI jednym poleceniem ---> ta ASD WE linia QWE ASDF ZXCV FG wyrazów została ERT FGH CF oczyszczona. UWAGA: Mnożnik pomiędzy operatorem d i ruchem działa podobnie do ruchu bez operatora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.6.: OPEROWANIE NA LINIACH ** Wpisz dd aby usunąć całą linię. ** Z powodu częstości usuwania całych linii, projektanci Vi zdecydowali, że będzie łatwiej wpisać dwa razy d aby usunąć linię. 1. Przenieś kursor do drugiego zdania z wierszyka poniżej. 2. Wpisz dd aby usunąć wiersz. 3. Teraz przenieś się do czwartego wiersza. 4. Wpisz 2dd aby usunąć dwa wiersze. ---> 1) Róże są czerwone, ---> 2) Błoto jest fajne, ---> 3) Fiołki są niebieskie, ---> 4) Mam samochód, ---> 5) Zegar podaje czas, ---> 6) Cukier jest słodki, ---> 7) I ty też. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.7.: POLECENIE UNDO (cofnij) ** Wciśnij u aby cofnąć skutki ostatniego polecenia. U zaś, by cofnąć skutki dla całej linii. ** 1. Przenieś kursor do zdania poniżej oznaczonego ---> i umieść go na pierwszym błędzie. 2. Wpisz x aby usunąć pierwszy niechciany znak. 3. Teraz wciśnij u aby cofnąć skutki ostatniego polecenia. 4. Tym razem popraw wszystkie błędy w linii używając polecenia x . 5. Teraz wciśnij wielkie U aby przywrócić linię do oryginalnego stanu. 6. Teraz wciśnij u kilka razy, by cofnąć U i poprzednie polecenia. 7. Teraz wpisz CTRL-R (trzymaj równocześnie wciśnięte klawisze CTRL i R) kilka razy, by cofnąć cofnięcia. ---> Poopraw błędyyy w teej liniii i zaamiień je prrzez coofnij. 8. To są bardzo pożyteczne polecenia. Przejdź teraz do podsumowania Lekcji 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 2. PODSUMOWANIE 1. By usunąć znaki od kursora do następnego wyrazu, wpisz: dw 2. By usunąć znaki od kursora do końca linii, wpisz: d$ 3. By usunąć całą linię: dd 4. By powtórzyć ruch, poprzedź go liczbą: 2w 5. Format polecenia zmiany to: operator [liczba] ruch gdzie: operator - to, co trzeba zrobić (np. d dla usuwania) [liczba] - opcjonalne, ile razy powtórzyć ruch ruch - przenosi nad tekstem do operowania, takim jak w (wyraz), $ (do końca linii) etc. 6. By przejść do początku linii, użyj zera: 0 7. By cofnąć poprzednie polecenie, wpisz: u (małe u) By cofnąć wszystkie zmiany w linii, wpisz: U (wielkie U) By cofnąć cofnięcie, wpisz: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.1.: POLECENIE PUT (wstaw) ** Wpisz p by wstawić ostatnie usunięcia za kursorem. ** 1. Przenieś kursor do pierwszej linii ---> poniżej. 2. Wpisz dd aby usunąć linię i przechować ją w rejestrze Vima. 3. Przenieś kursor do linii c), POWYŻEJ tej, gdzie usunięta linia powinna się znajdować. 4. Wciśnij p by wstawić linię poniżej kursora. 5. Powtarzaj kroki 2. do 4. aż znajdą się w odpowiednim porządku. ---> d) Jak dwa aniołki. ---> b) Na dole fiołki, ---> c) A my się kochamy, ---> a) Na górze róże, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.2.: POLECENIE REPLACE (zastąp) ** Wpisz rx aby zastąpić znak pod kursorem na x . ** 1. Przenieś kursor do pierwszej linii poniżej oznaczonej ---> 2. Ustaw kursor na pierwszym błędzie. 3. Wpisz r a potem znak jaki powinien go zastąpić. 4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie będzie taka, jak druga. ---> Kjedy ten wiersz bił wstókiwany, ktoś wciznął perę złych klawirzy! ---> Kiedy ten wiersz był wstukiwany, ktoś wcisnął parę złych klawiszy! 5. Teraz czas na Lekcję 3.3. UWAGA: Pamiętaj, by uczyć się ćwicząc, a nie pamięciowo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.3.: OPERATOR CHANGE (zmień) ** By zmienić do końca wyrazu, wpisz ce . ** 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. 2. Umieść kursor na u w lunos. 3. Wpisz ce i popraw wyraz (w tym wypadku wstaw inia ). 4. Wciśnij i przejdź do następnej planowanej zmiany. 5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie będzie takie same, jak drugie. ---> Ta lunos ma pire słów, które tżina zbnic użifajonc pcmazu zmień. ---> Ta linia ma parę słów, które trzeba zmienić używając polecenia zmień. Zauważ, że ce nie tylko zamienia wyraz, ale także zmienia tryb na Insert (wprowadzanie). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.4.: WIĘCEJ ZMIAN UŻYWAJĄC c ** Polecenie change używa takich samych ruchów, jak delete. ** 1. Operator change działa tak samo, jak delete. Format wygląda tak: c [liczba] ruch 2. Ruchy są także takie same, np.: w (wyraz), $ (koniec linii) etc. 3. Przenieś się do pierwszej linii poniżej oznaczonej ---> 4. Ustaw kursor na pierwszym błędzie. 5. Wpisz c$ , popraw koniec wiersza i wciśnij . ---> Koniec tego wiersza musi być poprawiony, aby wyglądał tak, jak drugi. ---> Koniec tego wiersza musi być poprawiony używając polecenia c$ . UWAGA: Możesz używać aby poprawiać błędy w czasie pisania. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 3. PODSUMOWANIE 1. Aby wstawić tekst, który został wcześniej usunięty wciśnij p . To polecenie wstawia skasowany tekst PO kursorze (jeśli cała linia została usunięta, zostanie ona umieszczona w linii poniżej kursora). 2. By zamienić znak pod kursorem, wciśnij r a potem znak, który ma zastąpić oryginalny. 3. Operator change pozwala Ci na zastąpienie od kursora do miejsca, gdzie zabrałby Cię ruch. Np. wpisz ce aby zamienić tekst od kursora do końca wyrazu, c$ aby zmienić tekst do końca linii. 4. Format do polecenia change (zmień): c [liczba] obiekt Teraz przejdź do następnej lekcji. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 4.1.: POŁOŻENIE KURSORA ORAZ STATUS PLIKU ** Naciśnij CTRL-G aby zobaczyć swoje położenie w pliku i status pliku. Naciśnij G aby przejść do linii w pliku. ** UWAGA: Przeczytaj całą lekcję zanim wykonasz jakieś polecenia!!! 1. Przytrzymaj klawisz CTRL i wciśnij g . Używamy notacji CTRL-G. Na dole strony pojawi się pasek statusu z nazwą pliku i pozycją w pliku. Zapamiętaj numer linii dla potrzeb kroku 3. UWAGA: Możesz też zobaczyć pozycję kursora w prawym, dolnym rogu ekranu. Dzieje się tak kiedy ustawiona jest opcja 'ruler' (więcej w lekcji 6.). 2. Wciśnij G aby przejść na koniec pliku. Wciśnij gg aby przejść do początku pliku. 3. Wpisz numer linii, w której byłeś a potem G . To przeniesie Cię z powrotem do linii, w której byłeś kiedy wcisnąłeś CTRL-G. 4. Jeśli czujesz się wystarczająco pewnie, wykonaj kroki 1-3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 4.2.: POLECENIE SZUKAJ ** Wpisz / a następnie wyrażenie, aby je znaleźć. ** 1. W trybie Normal wpisz / . Zauważ, że znak ten oraz kursor pojawią się na dole ekranu tak samo, jak polecenie : . 2. Teraz wpisz błond . To jest słowo, którego chcesz szukać. 3. By szukać tej samej frazy ponownie, po prostu wciśnij n . Aby szukać tej frazy w przeciwnym, kierunku wciśnij N . 4. Jeśli chcesz szukać frazy do tyłu, użyj polecenia ? zamiast / . 5. Aby wrócić gdzie byłeś, wciśnij CTRL-O. Powtarzaj, by wrócić dalej. CTRL-I idzie do przodu. Uwaga: 'błond' to nie jest metoda, by przeliterować błąd; 'błond' to błąd. Uwaga: Kiedy szukanie osiągnie koniec pliku, będzie kontynuowane od początku o ile opcja 'wrapscan' nie została przestawiona. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 4.3.: W POSZUKIWANIU PARUJĄCYCH NAWIASÓW ** Wpisz % by znaleźć parujący ), ], lub } . ** 1. Umieść kursor na którymś z (, [, lub { w linii poniżej oznaczonej --->. 2. Teraz wpisz znak % . 3. Kursor powinien się znaleźć na parującym nawiasie. 4. Wciśnij % aby przenieść kursor z powrotem do parującego nawiasu. 5. Przenieś kursor do innego (,),[,],{ lub } i zobacz co robi % . ---> To ( jest linia testowa z (, [, ] i {, } . )) Uwaga: Ta funkcja jest bardzo użyteczna w debuggowaniu programu z niesparowanymi nawiasami! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 4.4.: POLECENIE SUBSTITUTE (zamiana) ** Wpisz :s/stary/nowy/g aby zamienić 'stary' na 'nowy'. ** 1. Przenieś kursor do linii poniżej oznaczonej --->. 2. Wpisz :s/czaas/czas . Zauważ, że to polecenie zmienia tylko pierwsze wystąpienie 'czaas' w linii. 3. Teraz wpisz :s/czaas/czas/g . Dodane g oznacza zamianę (substytucję) globalnie w całej linii. Zmienia wszystkie wystąpienia 'czaas' w linii. ---> Najlepszy czaas na zobaczenie najładniejszych kwiatów to czaas wiosny. 4. Aby zmienić wszystkie wystąpienia łańcucha znaków pomiędzy dwoma liniami, wpisz: :#,#s/stare/nowe/g gdzie #,# są numerami linii ograniczających region, gdzie ma nastąpić zamiana. wpisz :%s/stare/nowe/g by zmienić wszystkie wystąpienia w całym pliku. wpisz :%s/stare/nowe/gc by zmienić wszystkie wystąpienia w całym pliku, prosząc o potwierdzenie za każdym razem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 4. PODSUMOWANIE 1. CTRL-G pokaże Twoją pozycję w pliku i status pliku. SHIFT-G przenosi Cię do końca pliku. G przenosi do końca pliku. liczba G przenosi do linii [liczba]. gg przenosi do pierwszej linii. 2. Wpisanie / a następnie łańcucha znaków szuka łańcucha DO PRZODU. Wpisanie ? a następnie łańcucha znaków szuka łańcucha DO TYŁU. Po wyszukiwaniu wciśnij n by znaleźć następne wystąpienie szukanej frazy w tym samym kierunku lub N by szukać w kierunku przeciwnym. CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych. 3. Wpisanie % gdy kursor znajduje się na (,),[,],{, lub } lokalizuje parujący znak. 4. By zamienić pierwszy stary na nowy w linii, wpisz :s/stary/nowy By zamienić wszystkie stary na nowy w linii, wpisz :s/stary/nowy/g By zamienić frazy pomiędzy dwoma liniami # wpisz :#,#s/stary/nowy/g By zamienić wszystkie wystąpienia w pliku, wpisz :%s/stary/nowy/g By Vim prosił Cię o potwierdzenie, dodaj 'c' :%s/stary/nowy/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.1.: JAK WYKONAĆ POLECENIA ZEWNĘTRZNE? ** Wpisz :! a następnie zewnętrzne polecenie, by je wykonać. ** 1. Wpisz znajome polecenie : by ustawić kursor na dole ekranu. To pozwala na wprowadzenie komendy linii poleceń. 2. Teraz wstaw ! (wykrzyknik). To umożliwi Ci wykonanie dowolnego zewnętrznego polecenia powłoki. 3. Jako przykład wpisz ls za ! a następnie wciśnij . To polecenie pokaże spis plików w Twoim katalogu, tak jakbyś był przy znaku zachęty powłoki. Możesz też użyć :!dir jeśli ls nie działa. Uwaga: W ten sposób można wykonać wszystkie polecenia powłoki. Uwaga: Wszystkie polecenia : muszą być zakończone . Od tego momentu nie zawsze będziemy o tym wspominać. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.2.: WIĘCEJ O ZAPISYWANIU PLIKÓW ** By zachować zmiany w tekście, wpisz :w NAZWA_PLIKU . ** 1. Wpisz :!dir lub :!ls by zobaczyć spis plików w katalogu. Już wiesz, że musisz po tym wcisnąć . 2. Wybierz nazwę pliku, jaka jeszcze nie istnieje, np. TEST. 3. Teraz wpisz: :w TEST (gdzie TEST jest nazwą pliku jaką wybrałeś.) 4. To polecenie zapamięta cały plik (Vim Tutor) pod nazwą TEST. By to sprawdzić, wpisz :!dir lub :!ls żeby znowu zobaczyć listę plików. Uwaga: Zauważ, że gdybyś teraz wyszedł z Vima, a następnie wszedł ponownie poleceniem vim TEST , plik byłby dokładną kopią tutoriala, kiedy go zapisywałeś. 5. Teraz usuń plik wpisując (MS-DOS): :!del TEST lub (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU ** By zachować część pliku, wpisz v ruch :w NAZWA_PLIKU ** 1. Przenieś kursor do tego wiersza. 2. Wciśnij v i przenieś kursor do punktu 5. Zauważ, że tekst został podświetlony. 3. Wciśnij znak : . Na dole ekranu pojawi się :'<,'> . 4. Wpisz w TEST , gdzie TEST to nazwa pliku, który jeszcze nie istnieje. Upewnij się, że widzisz :'<,'>w TEST zanim wciśniesz Enter. 5. Vim zapisze wybrane linie do pliku TEST. Użyj :!dir lub :!ls , żeby to zobaczyć. Jeszcze go nie usuwaj! Użyjemy go w następnej lekcji. UWAGA: Wciśnięcie v zaczyna tryb Wizualny. Możesz poruszać kursorem, by zmienić rozmiary zaznaczenia. Możesz też użyć operatora, by zrobić coś z tekstem. Na przykład d usuwa tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.4.: WSTAWIANIE I ŁĄCZENIE PLIKÓW ** By wstawić zawartość pliku, wpisz :r NAZWA_PLIKU ** 1. Umieść kursor tuż powyżej tej linii. UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejdź do DOŁU, by zobaczyć ponownie tę lekcję. 2. Teraz wczytaj plik TEST używając polecenia :r TEST , gdzie TEST jest nazwą pliku. Wczytany plik jest umieszczony poniżej linii z kursorem. 3. By sprawdzić czy plik został wczytany, cofnij kursor i zobacz, że teraz są dwie kopie Lekcji 5.3., oryginał i kopia z pliku. UWAGA: Możesz też wczytać wyjście zewnętrznego polecenia. Na przykład :r !ls wczytuje wyjście polecenia ls i umieszcza je pod poniżej kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 5. PODSUMOWANIE 1. :!polecenie wykonuje polecenie zewnętrzne. Użytecznymi przykładami są: :!dir - pokazuje spis plików w katalogu. :!rm NAZWA_PLIKU - usuwa plik NAZWA_PLIKU. 2. :w NAZWA_PLIKU zapisuje obecny plik Vima na dysk z nazwą NAZWA_PLIKU. 3. v ruch :w NAZWA_PLIKU zapisuje Wizualnie wybrane linie do NAZWA_PLIKU. 4. :r NAZWA_PLIKU wczytuje z dysku plik NAZWA_PLIKU i wstawia go do bieżącego pliku poniżej kursora. 5. :r !dir wczytuje wyjście polecenia dir i umieszcza je poniżej kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.1.: POLECENIE OPEN (otwórz) ** Wpisz o by otworzyć linię poniżej kursora i przenieść się do trybu Insert (wprowadzanie). ** 1. Przenieś kursor do linii poniżej oznaczonej --->. 2. Wpisz o (małe), by otworzyć linię PONIŻEJ kursora i przenieść się do trybu Insert (wprowadzanie). 3. Wpisz trochę tekstu i wciśnij by wyjść z trybu Insert (wprowadzanie). ---> Po wciśnięciu o kursor znajdzie się w otwartej linii w trybie Insert. 4. By otworzyć linię POWYŻEJ kursora, wciśnij wielkie O zamiast małego o . Wypróbuj to na linii poniżej. ---> Otwórz linię powyżej wciskając SHIFT-O gdy kursor będzie na tej linii. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.2.: POLECENIE APPEND (dodaj) ** Wpisz a by dodać tekst ZA kursorem. ** 1. Przenieś kursor do początku pierwszej linii poniżej oznaczonej ---> 2. Wciskaj e dopóki kursor nie będzie na końcu li . 3. Wpisz a (małe), aby dodać tekst ZA znakiem pod kursorem. 4. Dokończ wyraz tak, jak w linii poniżej. Wciśnij aby opuścić tryb Insert. 5. Użyj e by przejść do kolejnego niedokończonego wyrazu i powtarzaj kroki 3. i 4. ---> Ta li poz Ci ćwi dodaw teks do koń lin ---> Ta linia pozwoli Ci ćwiczyć dodawanie tekstu do końca linii. Uwaga: a , i oraz A prowadzą do trybu Insert, jedyną różnicą jest miejsce, gdzie nowe znaki będą dodawane. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.3.: INNA WERSJA REPLACE (zamiana) ** Wpisz wielkie R by zamienić więcej niż jeden znak. ** 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. Przenieś kursor do pierwszego xxx . 2. Wciśnij R i wpisz numer poniżej w drugiej linii, tak, że zastąpi on xxx. 3. Wciśnij by opuścić tryb Replace. Zauważ, że reszta linii pozostaje niezmieniona. 5. Powtarzaj kroki by wymienić wszystkie xxx. ---> Dodanie 123 do xxx daje xxx. ---> Dodanie 123 do 456 daje 579. UWAGA: Tryb Replace jest jak tryb Insert, ale każdy znak usuwa istniejący znak. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.4.: KOPIOWANIE I WKLEJANIE TEKSTU ** użyj operatora y aby skopiować tekst i p aby go wkleić ** 1. Przejdź do linii oznaczonej ---> i umieść kursor za "a)". 2. Wejdź w tryb Wizualny v i przenieś kursor na początek "pierwszy". 3. Wciśnij y aby kopiować (yankować) podświetlony tekst. 4. Przenieś kursor do końca następnej linii: j$ 5. Wciśnij p aby wkleić (wpakować) tekst. Dodaj: a drugi . 6. Użyj trybu Wizualnego, aby wybrać " element.", yankuj go y , przejdź do końca następnej linii j$ i upakuj tam tekst z p . ---> a) to jest pierwszy element. b) Uwaga: możesz użyć y jako operatora; yw kopiuje jeden wyraz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.5.: USTAWIANIE OPCJI ** Ustawianie opcji tak, by szukaj lub substytucja ignorowały wielkość liter ** 1. Szukaj 'ignore' wpisując: /ignore Powtórz szukanie kilka razy naciskając klawisz n . 2. Ustaw opcję 'ic' (Ignore case -- ignoruj wielkość liter) poprzez wpisanie: :set ic 3. Teraz szukaj 'ignore' ponownie wciskając: n Zauważ, że Ignore i IGNORE także są teraz znalezione. 4. Ustaw opcje 'hlsearch' i 'incsearch': :set hls is 5. Teraz wprowadź polecenie szukaj ponownie i zobacz co się zdarzy: /ignore 6. Aby wyłączyć ignorowanie wielkości liter: :set noic Uwaga: Aby usunąć podświetlanie dopasowań, wpisz: :nohlsearch Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 6. PODSUMOWANIE 1. Wpisanie o otwiera linię PONIŻEJ kursora. Wpisanie O otwiera linię POWYŻEJ kursora. 2. Wpisanie a wstawia tekst ZA znakiem, na którym jest kursor. Wpisanie A dodaje tekst na końcu linii. 3. Polecenie e przenosi do końca wyrazu. 4. Operator y yankuje (kopiuje) tekst, p pakuje (wkleja) go. 5. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopóki nie zostanie wciśnięty . 6. Wpisanie ":set xxx" ustawia opcję "xxx". Niektóre opcje: 'ic' 'ignorecase' ignoruj wielkość znaków 'is' 'incsearch' pokaż częściowe dopasowania 'hls' 'hlsearch' podświetl wszystkie dopasowania Możesz użyć zarówno długiej, jak i krótkiej formy. 7. Dodaj "no", aby wyłączyć opcję: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 7.1. JAK UZYSKAĆ POMOC? ** Użycie systemu pomocy on-line ** Vim posiada bardzo dobry system pomocy on-line. By zacząć, spróbuj jednej z trzech możliwości: - wciśnij klawisz (jeśli taki masz) - wciśnij klawisz (jeśli taki masz) - wpisz :help Przeczytaj tekst w oknie pomocy, aby dowiedzieć się jak działa pomoc. wpisz CTRL-W CTRL-W aby przeskoczyć z jednego okna do innego wpisz :q aby zamknąć okno pomocy. Możesz też znaleźć pomoc na każdy temat podając argument polecenia ":help". Spróbuj tych (nie zapomnij wcisnąć ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 7.2. TWORZENIE SKRYPTU STARTOWEGO ** Włącz możliwości Vima ** Vim ma o wiele więcej możliwości niż Vi, ale większość z nich jest domyślnie wyłączona. Jeśli chcesz włączyć te możliwości na starcie musisz utworzyć plik "vimrc". 1. Początek edycji pliku "vimrc" zależy od Twojego systemu: :edit ~/.vimrc dla Uniksa :edit $VIM/_vimrc dla MS-Windows 2. Teraz wczytaj przykładowy plik "vimrc": :read $VIMRUNTIME/vimrc_example.vim 3. Zapisz plik: :w Następnym razem, gdy zaczniesz pracę w Vimie będzie on używać podświetlania składni. Możesz dodać wszystkie swoje ulubione ustawienia do tego pliku "vimrc". Aby uzyskać więcej informacji, wpisz :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 7.3.: UZUPEŁNIANIE ** Uzupełnianie linii poleceń z CTRL-D i ** 1. Upewnij się, że Vim nie jest w trybie kompatybilności: :set nocp 2. Zerknij, jakie pliki są w bieżącym katalogu: :!ls lub :!dir 3. Wpisz początek polecenia: :e 4. Wciśnij CTRL-D i Vim pokaże listę poleceń, jakie zaczynają się na "e". 5. Wciśnij i Vim uzupełni polecenie do ":edit". 6. Dodaj spację i zacznij wpisywać nazwę istniejącego pliku: :edit FIL 7. Wciśnij . Vim uzupełni nazwę (jeśli jest niepowtarzalna). UWAGA: Uzupełnianie działa dla wielu poleceń. Spróbuj wcisnąć CTRL-D i . Użyteczne zwłaszcza przy :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 7. PODSUMOWANIE 1. Wpisz :help albo wciśnij lub aby otworzyć okno pomocy. 2. Wpisz :help cmd aby uzyskać pomoc o cmd . 3. Wpisz CTRL-W CTRL-W aby przeskoczyć do innego okna. 4. Wpisz :q aby zamknąć okno pomocy. 5. Utwórz plik startowy vimrc aby zachować wybrane ustawienia. 6. Po poleceniu : , wciśnij CTRL-D aby zobaczyć możliwe uzupełnienia. Wciśnij aby użyć jednego z nich. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tutaj się kończy tutorial Vima. Został on pomyślany tak, aby dać krótki przegląd jego możliwości, wystarczający byś mógł go używać. Jest on daleki od kompletności, ponieważ Vim ma o wiele, wiele więcej poleceń. Dla dalszej nauki rekomendujemy książkę: Vim - Vi Improved - autor Steve Oualline Wydawca: New Riders Pierwsza książka całkowicie poświęcona Vimowi. Użyteczna zwłaszcza dla początkujących. Zawiera wiele przykładów i ilustracji. Zobacz http://iccf-holland.org./click5.html Starsza pozycja i bardziej o Vi niż o Vimie, ale także warta polecenia: Learning the Vi Editor - autor Linda Lamb Wydawca: O'Reilly & Associates Inc. To dobra książka, by dowiedzieć się niemal wszystkiego, co chciałbyś zrobić z Vi. Szósta edycja zawiera też informacje o Vimie. Po polsku wydano: Edytor vi. Leksykon kieszonkowy - autor Arnold Robbins Wydawca: Helion 2001 (O'Reilly). ISBN: 83-7197-472-8 http://helion.pl/ksiazki/vilek.htm Jest to książeczka zawierająca spis poleceń vi i jego najważniejszych klonów (między innymi Vima). Edytor vi - autorzy Linda Lamb i Arnold Robbins Wydawca: Helion 2001 (O'Reilly) - wg 6. ang. wydania ISBN: 83-7197-539-2 http://helion.pl/ksiazki/viedyt.htm Rozszerzona wersja Learning the Vi Editor w polskim tłumaczeniu. Ten tutorial został napisany przez Michaela C. Pierce'a i Roberta K. Ware'a, Colorado School of Mines korzystając z pomocy Charlesa Smitha, Colorado State University. E-mail: bware@mines.colorado.edu. Zmodyfikowane dla Vima przez Brama Moolenaara. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Przetłumaczone przez Mikołaja Machowskiego, Sierpień 2001, rev. Marzec 2002 2nd rev. Wrzesień 2004 3rd rev. Marzec 2006 4th rev. Grudzień 2008 Wszelkie uwagi proszę kierować na: mikmach@wp.pl PK!y ?DDvim80/tutor/tutor.nbnu[=============================================================================== = V e l k o m m e n t i l i n n f r i n g e n i V i m -- Ver. 1.7 = =============================================================================== Vim er en meget kraftig editor med mange kommandoer, alt for mange til kunne g gjennom alle i en innfring som denne. Den er beregnet p sette deg inn i bruken av nok kommandoer s du vil vre i stand til lett kunne bruke Vim som en editor til alle forml. Tiden som kreves for g gjennom denne innfringen tar ca. 25-30 minutter, avhengig av hvor mye tid du bruker til eksperimentering. MERK: Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne filen som du kan ve deg p (hvis du kjrte vimtutor-kommandoen, er dette allerede en kopi). Det er viktig huske at denne innfringen er beregnet p lring gjennom bruk. Det betyr at du m utfre kommandoene for lre dem skikkelig. Hvis du bare leser teksten, vil du glemme kommandoene! Frst av alt, sjekk at Caps Lock IKKE er aktiv og trykk j-tasten for flytte markren helt til leksjon 1.1 fyller skjermen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.1: FLYTTING AV MARKREN ** For flytte markren, trykk tastene h, j, k, l som vist. ** ^ k Tips: h-tasten er til venstre og flytter til venstre. < h l > l-tasten er til hyre og flytter til hyre. j j-tasten ser ut som en pil som peker nedover. v 1. Flytt markren rundt p skjermen til du har ftt det inn i fingrene. 2. Hold inne nedovertasten (j) til den repeterer. N vet du hvordan du beveger deg til neste leksjon. 3. G til leksjon 1.2 ved hjelp av nedovertasten. Merk: Hvis du blir usikker p noe du har skrevet, trykk for g til normalmodus. Skriv deretter kommandoen du nsket p nytt. Merk: Piltastene skal ogs virke. Men ved bruke hjkl vil du vre i stand til bevege markren mye raskere nr du er blitt vant til det. Helt sant! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.2: AVSLUTTE VIM !! MERK: Fr du utfrer noen av punktene nedenfor, les hele leksjonen!! 1. Trykk -tasten (for forsikre deg om at du er i normalmodus). 2. Skriv: :q! . Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. 3. Nr du ser kommandolinjen i skallet, skriv kommandoen som startet denne innfringen. Den er: vimtutor 4. Hvis du er sikker p at du husker dette, utfr punktene 1 til 3 for avslutte og starte editoren p nytt. MERK: :q! forkaster alle forandringer som du gjorde. I lpet av noen f leksjoner vil du lre hvordan du lagrer forandringene til en fil. 5. Flytt markren ned til leksjon 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.3: REDIGERING AV TEKST -- SLETTING ** Trykk x for slette tegnet under markren. ** 1. Flytt markren til den frste linjen merket med --->. 2. For ordne feilene p linjen, flytt markren til den er opp tegnet som skal slettes. 3. Trykk tasten x for slette det unskede tegnet. 4. Repeter punkt 2 til 4 til setningen er lik den som er under. ---> Hessstennnn brrrsnudddde ii gaaata. ---> Hesten brsnudde i gata. 5. N som linjen er korrekt, g til leksjon 1.4. MERK: Nr du gr gjennom innfringen, ikke bare prv huske kommandoene, men bruk dem helt til de sitter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING ** Trykk i for sette inn tekst. ** 1. Flytt markren til den frste linjen som er merket med --->. 2. For gjre den frste linjen lik den andre, flytt markren til den str p tegnet ETTER posisjonen der teksten skal settes inn. 3. Trykk i og skriv inn teksten som mangler. 4. Etterhvert som hver feil er fikset, trykk for returnere til normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. ---> Det er tkst som mnglr . ---> Det er ganske mye tekst som mangler her. 5. Nr du fler deg komfortabel med sette inn tekst, g til oppsummeringen nedenfor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL ** Trykk A for legge til tekst. ** 1. Flytt markren til den frste linjen nedenfor merket --->. Det har ikke noe si hvor markren er plassert p den linjen. 2. Trykk A og skriv inn det som skal legges til. 3. Nr teksten er lagt til, trykk for returnere til normalmodusen. 4. Flytt markren til den andre linjen markert med ---> og repeter steg 2 og 3 for reparere denne setningen. ---> Det mangler noe tekst p Det mangler noe tekst p denne linjen. ---> Det mangler ogs litt tek Det mangler ogs litt tekst p denne linjen. 5. Nr du fler at du behersker legge til tekst, g til leksjon 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.6: REDIGERE EN FIL ** Bruk :wq for lagre en fil og avslutte. ** !! MERK: Fr du utfrer noen av stegene nedenfor, les hele denne leksjonen!! 1. Avslutt denne innfringen som du gjorde i leksjon 1.2: :q! 2. Skriv denne kommandoen p kommandolinja: vim tutor vim er kommandoen for starte Vim-editoren, tutor er navnet p fila som du vil redigere. Bruk en fil som kan forandres. 3. Sett inn og slett tekst som du lrte i de foregende leksjonene. 4. Lagre filen med forandringene og avslutt Vim med: :wq 5. Start innfringen p nytt og flytt ned til oppsummeringen som flger. 6. Etter ha lest og forsttt stegene ovenfor: Sett i gang. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 1 1. Markren beveges ved hjelp av piltastene eller hjkl-tastene. h (venstre) j (ned) k (opp) l (hyre) 2. For starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN 3. For avslutte Vim, skriv: :q! for forkaste endringer. ELLER skriv: :wq for lagre forandringene. 4. For slette tegnet under markren, trykk: x 5. For sette inn eller legge til tekst, trykk: i skriv innsatt tekst sett inn fr markren A skriv tillagt tekst legg til p slutten av linjen MERK: Nr du trykker gr du til normalmodus eller du avbryter en unsket og delvis fullfrt kommando. N kan du g videre til leksjon 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.1: SLETTEKOMMANDOER ** Trykk dw for slette et ord. ** 1. Trykk for vre sikker p at du er i normalmodus. 2. Flytt markren til den frste linjen nedenfor merket --->. 3. Flytt markren til begynnelsen av ordet som skal slettes. 4. Trykk dw og ordet vil forsvinne. MERK: Bokstaven d vil komme til syne p den nederste linjen p skjermen nr du skriver den. Vim venter p at du skal skrive w . Hvis du ser et annet tegn enn d har du skrevet noe feil; trykk og start p nytt. ---> Det er agurk tre ord eple som ikke hrer pre hjemme i denne setningen. ---> Det er tre ord som ikke hrer hjemme i denne setningen. 5. Repeter punkt 3 og 4 til den frste setningen er lik den andre. G deretter til leksjon 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.2: FLERE SLETTEKOMMANDOER ** Trykk d$ for slette til slutten av linjen. ** 1. Trykk for vre sikker p at du er i normalmodus. 2. Flytt markren til linjen nedenfor merket --->. 3. Flytt markren til punktet der linjen skal kuttes (ETTER frste punktum). 4. Trykk d$ for slette alt til slutten av linjen. ---> Noen skrev slutten p linjen en gang for mye. linjen en gang for mye. 5. G til leksjon 2.3 for forst hva som skjer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.3: OM OPERATORER OG BEVEGELSER Mange kommandoer som forandrer teksten er laget ut i fra en operator og en bevegelse. Formatet for en slettekommando med sletteoperatoren d er: d bevegelse Der: d - er sletteoperatoren. bevegelse - er hva operatoren vil opere p (listet nedenfor). En kort liste med bevegelser: w - til starten av det neste ordet, UNNTATT det frste tegnet. e - til slutten av det nvrende ordet, INKLUDERT det siste tegnet. $ - til slutten av linjen, INKLUDERT det siste tegnet. Ved skrive de vil alts alt fra markren til slutten av ordet bli slettet. MERK: Ved skrive kun bevegelsen i normalmodusen uten en operator vil markren flyttes som spesifisert. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE ** Ved skrive et tall foran en bevegelse repeterer den s mange ganger. ** 1. Flytt markren til starten av linjen markert ---> nedenfor. 2. Skriv 2w for flytte markren to ord framover. 3. Skriv 3e for flytte markren framover til slutten av det tredje ordet. 4. Skriv 0 (null) for flytte til starten av linjen. 5. Repeter steg 2 og 3 med forskjellige tall. ---> Dette er en linje med noen ord som du kan bevege deg rundt p. 6. G videre til leksjon 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.5: BRUK AV ANTALL FOR SLETTE MER ** Et tall sammen med en operator repeterer den s mange ganger. ** I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du inn antall fr bevegelsen for slette mer: d nummer bevegelse 1. Flytt markren til det frste ordet med STORE BOKSTAVER p linjen markert med --->. 2. Skriv 2dw for slette de to ordene med store bokstaver. 3. Repeter steg 1 og 2 med forskjelling antall for slette de etterflgende ordene som har store bokstaver. ---> Denne ABC DE linjen FGHI JK LMN OP er n Q RS TUV litt mer lesbar. MERK: Et antall mellom operatoren d og bevegelsen virker p samme mte som bruke bevegelsen uten en operator. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.6: OPERERE P LINJER ** Trykk dd for slette en hel linje. ** P grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at det vil vre lettere rett og slett trykke to d-er for slette en linje. 1. Flytt markren til den andre linjen i verset nedenfor. 2. Trykk dd slette linjen. 3. Flytt deretter til den fjerde linjen. 4. Trykk 2dd for slette to linjer. ---> 1) Roser er rde, ---> 2) Gjrme er gy, ---> 3) Fioler er bl, ---> 4) Jeg har en bil, ---> 5) Klokker viser tiden, ---> 6) Druer er ste ---> 7) Og du er likes. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.7: ANGRE-KOMMANDOEN ** Trykk u for angre siste kommando, U for fikse en hel linje. ** 1. Flytt markren til linjen nedenfor merket ---> og plasser den p den frste feilen. 2. Trykk x for slette det frste unskede tegnet. 3. Trykk s u for angre den siste utfrte kommandoen. 4. Deretter ordner du alle feilene p linjene ved bruke kommandoen x . 5. Trykk n en stor U for sette linjen tilbake til det den var originalt. 6. Trykk u noen ganger for angre U og foregende kommandoer. 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen ganger for gjenopprette kommandoene (omgjre angrekommandoene). ---> RReparer feiilene p denne linnnjen oog erssstatt dem meed angre. 8. Dette er meget nyttige kommandoer. N kan du g til oppsummeringen av leksjon 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 2 1. For slette fra markren fram til det neste ordet, trykk: dw 2. For slette fra markren til slutten av en linje, trykk: d$ 3. For slette en hel linje, trykk: dd 4. For repetere en bevegelse, sett et nummer foran: 2w 5. Formatet for en forandringskommando er: operator [nummer] bevegelse der: operator - hva som skal gjres, f.eks. d for slette [nummer] - et valgfritt antall for repetere bevegelsen bevegelse - hva kommandoen skal operere p, eksempelvis w (ord), $ (til slutten av linjen) og s videre. 6. For g til starten av en linje, bruk en null: 0 7. For angre tidligere endringer, skriv: u (liten u) For angre alle forandringer p en linje, skriv: U (stor U) For omgjre angringen, trykk: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.1: LIM INN-KOMMANDOEN ** Trykk p for lime inn tidligere slettet tekst etter markren ** 1. Flytt markren til den frste linjen med ---> nedenfor. 2. Trykk dd for slette linjen og lagre den i et Vim-register. 3. Flytt markren til c)-linjen, OVER posisjonen linjen skal settes inn. 4. Trykk p for legge linjen under markren. 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkeflge. ---> d) Kan du ogs lre? ---> b) Fioler er bl, ---> c) Intelligens m lres, ---> a) Roser er rde, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.2: ERSTATT-KOMMANDOEN ** Trykk rx for erstatte tegnet under markren med x. ** 1. Flytt markren til den frste linjen nedenfor merket --->. 2. Flytt markren s den str opp den frste feilen. 3. Trykk r og deretter tegnet som skal vre der. 4. Repeter punkt 2 og 3 til den frste linjen er lik den andre. ---> Da dfnne lynjxn ble zkrevet, var det nen som tjykket feite taster! ---> Da denne linjen ble skrevet, var det noen som trykket feile taster! 5. G videre til leksjon 3.2. MERK: Husk at du br lre ved BRUKE, ikke pugge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.3: FORANDRE-OPERATOREN ** For forandre til slutten av et ord, trykk ce . ** 1. Flytt markren til den frste linjen nedenfor som er merket --->. 2. Plasser markren p u i lubjwr. 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv injen). 4. Trykk og g til det neste tegnet som skal forandres. 5. Repeter punkt 3 og 4 helt til den frste setningen er lik den andre. ---> Denne lubjwr har noen wgh som m forkwp med forkzryas-kommandoen. ---> Denne linjen har noen ord som m forandres med forandre-kommandoen. Vr oppmerksom p at ce sletter ordet og gr inn i innsettingsmodus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c ** Forandringskommandoen blir brukt med de samme bevegelser som slett. ** 1. Forandringsoperatoren fungerer p samme mte som slett. Formatet er: c [nummer] bevegelse 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en linje). 3. G til den frste linjen nedenfor som er merket --->. 4. Flytt markren til den frste feilen. 5. Skriv c$ og skriv resten av linjen lik den andre og trykk . ---> Slutten p denne linjen trenger litt hjelp for gjre den lik den neste. ---> Slutten p denne linjen trenger bli rettet ved bruk av c$-kommandoen. MERK: Du kan bruke slettetasten for rette feil mens du skriver. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 3 1. For legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette limer inn den slettede teksten ETTER markren (hvis en linje ble slettet vil den bli limt inn p linjen under markren). 2. For erstatte et tegn under markren, trykk r og deretter tegnet som du vil ha der. 3. Forandringsoperatoren lar deg forandre fra markren til dit bevegelsen tar deg. Det vil si, skriv ce for forandre fra markren til slutten av ordet, c$ for forandre til slutten av linjen. 4. Formatet for forandre er: c [nummer] bevegelse N kan du g til neste leksjon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.1: POSISJONERING AV MARKREN OG FILSTATUS ** Trykk CTRL-G for vise posisjonen i filen og filstatusen. Trykk G for g til en spesifikk linje i filen. ** Merk: Les hele leksjonen fr du utfrer noen av punktene! 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding vil komme til syne p bunnen av skjermen med filnavnet og posisjonen i filen. Husk linjenummeret for bruk i steg 3. Merk: Du kan se markrposisjonen i nederste hyre hjrne av skjermen. Dette skjer nr ruler-valget er satt (forklart i leksjon 6). 2. Trykk G for g til bunnen av filen. Skriv gg for g til begynnelsen av filen. 3. Skriv inn linjenummeret du var p og deretter G . Dette vil fre deg tilbake til linjen du var p da du frst trykket CTRL-G. 4. Utfr steg 1 til 3 hvis du fler deg sikker p prosedyren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.2: SKEKOMMANDOEN ** Skriv / etterfulgt av en skestreng som du vil lete etter. ** 1. Trykk / nr du er i normalmodusen. Legg merke til at skrstreken og markren kommer til syne p bunnen av skjermen i likhet med :-kommandoene. 2. Skriv feeeiil og trykk . Dette er teksten du vil lete etter. 3. For finne neste forekomst av skestrengen, trykk n . For lete etter samme sketeksten i motsatt retning, trykk N . 4. For lete etter en tekst bakover i filen, bruk ? istedenfor / . 5. For g tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens du trykker bokstaven o ). Repeter for g enda lengre tilbake. CTRL-I gr framover. ---> feeeiil er ikke mten skrive feil p, feeeiil er helt feil. Merk: Nr skingen nr slutten av filen, vil den fortsette fra starten unntatt hvis wrapscan-valget er resatt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.3: FINN SAMSVARENDE PARENTESER ** Trykk % for finne en samsvarende ), ] eller } . ** 1. Plasser markren p en (, [ eller { p linjen nedenfor merket --->. 2. Trykk % . 3. Markren vil g til den samsvarende parentesen eller hakeparentesen. 4. Trykk % for flytte markren til den andre samsvarende parentesen. 5. Flytt markren til en annen (, ), [, ], { eller } og se hva % gjr. ---> Dette ( er en testlinje med (, [ ] og { } i den )). Merk: Dette er veldig nyttig til feilsking i programmer som har ubalansert antall parenteser! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.4: ERSTATT-KOMMANDOEN ** Skriv :s/gammel/ny/g for erstatte gammel med ny. ** 1. Flytt markren til linjen nedenfor som er merket med --->. 2. Skriv :s/deen/den/ . Legg merke til at denne kommandoen bare forandrer den frste forekomsten av deen p linjen. 3. Skriv :s/deen/den/g . Nr g-flagget legges til, betyr dette global erstatning p linjen og erstatter alle forekomster av deen p linjen. ---> deen som kan kaste deen tyngste steinen lengst er deen beste 4. For erstatte alle forekomster av en tekststreng mellom to linjer, skriv :#,#s/gammel/ny/g der #,# er linjenumrene p de to linjene for linjeomrdet erstatningen skal gjres. Skriv :%s/gammel/ny/g for erstatte tekst i hele filen. Skriv :%s/gammel/ny/gc for finne alle forekomster i hele filen, og deretter sprre om teksten skal erstattes eller ikke. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 4 1. Ctrl-G viser nvrende posisjon i filen og filstatusen. G gr til slutten av filen. nummer G gr til det linjenummeret. gg gr til den frste linjen. 2. Skriv / etterfulgt av en sketekst for lete FRAMOVER etter teksten. Skriv ? etterfulgt av en sketekst for lete BAKOVER etter teksten. Etter et sk kan du trykke n for finne neste forekomst i den samme retningen eller N for lete i motsatt retning. CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. 3. Skriv % nr markren str p en (, ), [, ], { eller } for finne den som samsvarer. 4. Erstatte gammel med frste ny p en linje: :s/gammel/ny Erstatte alle gammel med ny p en linje: :s/gammel/ny/g Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g Erstatte alle forekomster i en fil: :%s/gammel/ny/g For godkjenne hver erstatning, legg til c: :%s/gammel/ny/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.1: HVORDAN UTFRE EN EKSTERN KOMMANDO ** Skriv :! etterfulgt av en ekstern kommando for utfre denne. ** 1. Skriv den velkjente kommandoen : for plassere markren p bunnen av skjermen. Dette lar deg skrive en kommandolinjekommando. 2. N kan du skrive tegnet ! . Dette lar deg utfre en hvilken som helst ekstern kommando. 3. Som et eksempel, skriv ls etter utropstegnet og trykk . Du vil n f en liste over filene i katalogen, akkurat som om du hadde kjrt kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis ls ikke virker. MERK: Det er mulig kjre alle eksterne kommandoer p denne mten, ogs med parametere. MERK: Alle :-kommandoer m avsluttes med . Fra dette punktet er det ikke alltid vi nevner det. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.2: MER OM LAGRING AV FILER ** For lagre endringene gjort i en tekst, skriv :w FILNAVN. ** 1. Skriv :!dir eller :!ls for f en liste over filene i katalogen. Du vet allerede at du m trykke etter dette. 2. Velg et filnavn p en fil som ikke finnes, som for eksempel TEST . 3. Skriv :w TEST (der TEST er filnavnet du velger). 4. Dette lagrer hele filen (denne innfringen) under navnet TEST . For sjekke dette, skriv :!dir eller :!ls igjen for se innholdet av katalogen. Merk: Hvis du n hadde avsluttet Vim og startet p nytt igjen med vim TEST, ville filen vrt en eksakt kopi av innfringen da du lagret den. 5. Fjern filen ved skrive :!rm TEST hvis du er p et Unix-lignende operativsystem, eller :!del TEST hvis du bruker MS-DOS. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES ** For lagre en del av en fil, skriv v bevegelse :w FILNAVN ** 1. Flytt markren til denne linjen. 2. Trykk v og flytt markren til det femte elementet nedenfor. Legg merke til at teksten blir markert. 3. Trykk : (kolon). P bunnen av skjermen vil :'<,'> komme til syne. 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller at du ser :'<,'>w TEST fr du trykker Enter. 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller :!ls for se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. MERK: Ved trykke v startes visuelt valg. Du kan flytte markren rundt for gjre det valgte omrdet strre eller mindre. Deretter kan du bruke en operator for gjre noe med teksten. For eksempel sletter d teksten. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.4: HENTING OG SAMMENSLING AV FILER ** For lese inn en annen fil inn i nvrende buffer, skriv :r FILNAVN ** 1. Plasser markren like over denne linjen. MERK: Etter ha utfrt steg 2 vil du se teksten fra leksjon 5.3. G deretter NED for se denne leksjonen igjen. 2. Hent TEST-filen ved bruke kommandoen :r TEST der TEST er navnet p filen du brukte. Filen du henter blir plassert nedenfor markrlinjen. 3. For sjekke at filen ble hentet, g tilbake og se at det er to kopier av leksjon 5.3, originalen og denne versjonen. MERK: Du kan ogs lese utdataene av en ekstern kommando. For eksempel, :r !ls leser utdataene av ls-kommandoen og legger dem nedenfor markren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 5 1. :!kommando utfrer en ekstern kommandio. Noen nyttige eksempler er: (MS-DOS) (Unix) :!dir :!ls - List filene i katalogen. :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. 2. :w FILNAVN skriver den nvrende Vim-filen disken med navnet FILNAVN . 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen FILNAVN. 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markren. 5. :r !dir leser utdataene fra dir-kommandoen og legger dem nedenfor markrposisjonen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.1: PNE LINJE-KOMMANDOEN ** Skriv o for pne opp for en ny linje etter markren og g til innsettingsmodus ** 1. Flytt markren til linjen nedenfor merket --->. 2. Skriv o (liten o) for pne opp en linje NEDENFOR markren og g inn i innsettingsmodus. 3. Skriv litt tekst og trykk for g ut av innsettingsmodusen. ---> Etter at o er skrevet blir markren plassert p den tomme linjen. 4. For pne en ny linje OVER markren, trykk rett og slett en stor O istedenfor en liten o . Prv dette p linjen nedenfor. ---> Lag ny linje over denne ved trykke O mens markren er p denne linjen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.2: LEGG TIL-KOMMANDOEN ** Skriv a for legge til tekst ETTER markren. ** 1. Flytt markren til starten av linjen merket ---> nedenfor. 2. Trykk e til markren er p slutten av li. 3. Trykk a (liten a) for legge til tekst ETTER markren. 4. Fullfr ordet snn som p linjen nedenfor. Trykk for g ut av innsettingsmodusen. 5. Bruk e for g til det neste ufullstendige ordet og repeter steg 3 og 4. ---> Denne li lar deg ve p leg til tek p en linje. ---> Denne linjen lar deg ve p legge til tekst p en linje. Merk: a, i og A gr alle til den samme innsettingsmodusen, den eneste forskjellen er hvor tegnene blir satt inn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.3: EN ANNEN MTE ERSTATTE P ** Skriv en stor R for erstatte mer enn ett tegn. ** 1. Flytt markren til den frste linjen nedenfor merket --->. Flytt markren til begynnelsen av den frste xxx-en. 2. Trykk R og skriv inn tallet som str nedenfor p den andre linjen s det erstatter xxx. 3. Trykk for g ut av erstatningsmodusen. Legg merke til at resten av linjen forblir uforandret. 4. Repeter stegene for erstatte den gjenvrende xxx. ---> Ved legge 123 til xxx fr vi xxx. ---> Ved legge 123 til 456 fr vi 579. MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives erstatter et eksisterende tegn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.4: KOPIERE OG LIME INN TEKST ** Bruk y-operatoren for kopiere tekst og p for lime den inn ** 1. G til linjen merket ---> nedenfor og plasser markren etter a). 2. G inn i visuell modus med v og flytt markren til like fr frste. 3. Trykk y for kopiere (engelsk: yank) den uthevede teksten. 4. Flytt markren til slutten av den neste linjen: j$ 5. Trykk p for lime inn teksten. Trykk deretter: a andre . 6. Bruk visuell modus for velge valget., kopier det med y , g til slutten av den neste linjen med j$ og legg inn teksten der med p . ---> a) Dette er det frste valget. b) Merk: Du kan ogs bruke y som en operator; yw kopierer ett ord. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.5: SETT VALG ** Sett et valg s sk eller erstatning ignorerer store/sm bokstaver. ** 1. Let etter ignore ved skrive: /ignore Repeter flere ganger ved trykke n . 2. Sett ic-valget (Ignore Case) ved skrive: :set ic 3. Sk etter ignore igjen ved trykke n . Legg merke til at bde Ignore og IGNORE blir funnet. 4. Sett hlsearch- og incsearch-valgene: :set hls is 5. Skriv skekommandoen igjen og se hva som skjer: /ignore 6. For sl av ignorering av store/sm bokstaver, skriv: :set noic Merk: For fjerne uthevingen av treff, skriv: :nohlsearch Merk: Hvis du vil ignorere store/sm bokstaver for kun en skekommando, bruk \c i uttrykket: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 6 1. Trykk o for legge til en linje NEDENFOR markren og g inn i innsettingsmodus. Trykk O for pne en linje OVER markren. 2. Skriv a for sette inn tekst ETTER markren. Skriv A for sette inn tekst etter slutten av linjen. 3. Kommandoen e gr til slutten av et ord. 4. Operatoren y (yank) kopierer tekst, p (paste) limer den inn. 5. Ved trykke R gr du inn i erstatningsmodus helt til trykkes. 6. Skriv :set xxx for sette valget xxx. Noen valg er: ic ignorecase ignorer store/sm bokstaver under sk is incsearch vis delvise treff for en sketekst hls hlsearch uthev alle sketreff 7. Legg til no foran valget for sl det av: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 7.1: F HJELP ** Bruk det innebygde hjelpesystemet. ** Vim har et omfattende innebygget hjelpesystem. For starte det, prv en av disse mtene: - Trykk Hjelp-tasten (hvis du har en) - Trykk F1-tasten (hvis du har en) - Skriv :help Les teksten i hjelpevinduet for finne ut hvordan hjelpen virker. Skriv CTRL-W CTRL-W for hoppe fra et vindu til et annet Skriv :q for lukke hjelpevinduet. Du kan f hjelp for omtrent alle temaer om Vim ved skrive et parameter til :help-kommandoen. Prv disse (ikke glem trykke ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 7.2: LAG ET OPPSTARTSSKRIPT ** Sl p funksjoner i Vim ** Vim har mange flere funksjoner enn Vi, men flesteparten av dem er sltt av som standard. For begynne bruke flere funksjoner m du lage en vimrc-fil. 1. Start redigeringen av vimrc-filen. Dette avhenger av systemet ditt: :e ~/.vimrc for Unix :e $VIM/_vimrc for MS Windows 2. Les inn eksempelfilen for vimrc: :r $VIMRUNTIME/vimrc_example.vim 3. Lagre filen med: :w Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til alle dine foretrukne oppsett i denne vimrc-filen. For mer informasjon, skriv :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 7.3: FULLFRING ** Kommandolinjefullfring med CTRL-D og ** 1. Vr sikker p at Vim ikke er i Vi-kompatibel modus: :set nocp 2. Se hvilke filer som er i katalogen: :!ls eller :!dir 3. Skriv starten p en kommando: :e 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med e. 5. Trykk og Vim vil fullfre kommandonavnet til :edit. 6. Legg til et mellomrom og starten p et eksisterende filnavn: :edit FIL 7. Trykk . Vim vil fullfre navnet (hvis det er unikt). MERK: Fullfring fungerer for mange kommandoer. Prv ved trykke CTRL-D og . Det er spesielt nyttig for bruk sammen med :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 7 1. Skriv :help eller trykk eller for pne et hjelpevindu. 2. Skriv :help kommando for f hjelp om kommando . 3. Trykk CTRL-W CTRL-W for hoppe til et annet vindu. 4. Trykk :q for lukke hjelpevinduet. 5. Opprett et vimrc-oppstartsskript for lagre favorittvalgene dine. 6. Nr du skriver en :-kommando, trykk CTRL-D for se mulige fullfringer. Trykk for bruke en fullfring. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Her slutter innfringen i Vim. Den var ment som en rask oversikt over editoren, akkurat nok til la deg sette i gang med enkel bruk. Den er p langt nr komplett, da Vim har mange flere kommandoer. Les bruksanvisningen ved skrive :help user-manual . For videre lesing og studier, kan denne boken anbefales: Vim - Vi Improved av Steve Oualline Utgiver: New Riders Den frste boken som er fullt og helt dedisert til Vim. Spesielt nyttig for nybegynnere. Inneholder mange eksempler og illustrasjoner. Se http://iccf-holland.org/click5.html Denne boken er eldre og handler mer om Vi enn Vim, men anbefales ogs: Learning the Vi Editor av Linda Lamb Utgiver: O'Reilly & Associates Inc. Det er en god bok for f vite omtrent hva som helst om Vi. Den sjette utgaven inneholder ogs informasjon om Vim. Denne innfringen er skrevet av Michael C. Pierce og Robert K. Ware, Colorado School of Mines med ider av Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu . Modifisert for Vim av Bram Moolenaar. Oversatt av yvind A. Holm. E-mail: vimtutor _AT_ sunbase.org Id: tutor.no 406 2007-03-18 22:48:36Z sunny ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim: set ts=8 : PK!LD߁߁vim80/tutor/tutor.utf-8nu[=============================================================================== = W e l c o m e t o t h e V I M T u t o r - Version 1.7 = =============================================================================== Vim is a very powerful editor that has many commands, too many to explain in a tutor such as this. This tutor is designed to describe enough of the commands that you will be able to easily use Vim as an all-purpose editor. The approximate time required to complete the tutor is 25-30 minutes, depending upon how much time is spent with experimentation. ATTENTION: The commands in the lessons will modify the text. Make a copy of this file to practice on (if you started "vimtutor" this is already a copy). It is important to remember that this tutor is set up to teach by use. That means that you need to execute the commands to learn them properly. If you only read the text, you will forget the commands! Now, make sure that your Caps-Lock key is NOT depressed and press the j key enough times to move the cursor so that Lesson 1.1 completely fills the screen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.1: MOVING THE CURSOR ** To move the cursor, press the h,j,k,l keys as indicated. ** ^ k Hint: The h key is at the left and moves left. < h l > The l key is at the right and moves right. j The j key looks like a down arrow. v 1. Move the cursor around the screen until you are comfortable. 2. Hold down the down key (j) until it repeats. Now you know how to move to the next lesson. 3. Using the down key, move to Lesson 1.2. NOTE: If you are ever unsure about something you typed, press to place you in Normal mode. Then retype the command you wanted. NOTE: The cursor keys should also work. But using hjkl you will be able to move around much faster, once you get used to it. Really! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.2: EXITING VIM !! NOTE: Before executing any of the steps below, read this entire lesson!! 1. Press the key (to make sure you are in Normal mode). 2. Type: :q! . This exits the editor, DISCARDING any changes you have made. 3. Get back here by executing the command that got you into this tutor. That might be: vimtutor 4. If you have these steps memorized and are confident, execute steps 1 through 3 to exit and re-enter the editor. NOTE: :q! discards any changes you made. In a few lessons you will learn how to save the changes to a file. 5. Move the cursor down to Lesson 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.3: TEXT EDITING - DELETION ** Press x to delete the character under the cursor. ** 1. Move the cursor to the line below marked --->. 2. To fix the errors, move the cursor until it is on top of the character to be deleted. 3. Press the x key to delete the unwanted character. 4. Repeat steps 2 through 4 until the sentence is correct. ---> The ccow jumpedd ovverr thhe mooon. 5. Now that the line is correct, go on to Lesson 1.4. NOTE: As you go through this tutor, do not try to memorize, learn by usage. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.4: TEXT EDITING - INSERTION ** Press i to insert text. ** 1. Move the cursor to the first line below marked --->. 2. To make the first line the same as the second, move the cursor on top of the first character AFTER where the text is to be inserted. 3. Press i and type in the necessary additions. 4. As each error is fixed press to return to Normal mode. Repeat steps 2 through 4 to correct the sentence. ---> There is text misng this . ---> There is some text missing from this line. 5. When you are comfortable inserting text move to lesson 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.5: TEXT EDITING - APPENDING ** Press A to append text. ** 1. Move the cursor to the first line below marked --->. It does not matter on what character the cursor is in that line. 2. Press A and type in the necessary additions. 3. As the text has been appended press to return to Normal mode. 4. Move the cursor to the second line marked ---> and repeat steps 2 and 3 to correct this sentence. ---> There is some text missing from th There is some text missing from this line. ---> There is also some text miss There is also some text missing here. 5. When you are comfortable appending text move to lesson 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.6: EDITING A FILE ** Use :wq to save a file and exit. ** !! NOTE: Before executing any of the steps below, read this entire lesson!! 1. Exit this tutor as you did in lesson 1.2: :q! Or, if you have access to another terminal, do the following there. 2. At the shell prompt type this command: vim tutor 'vim' is the command to start the Vim editor, 'tutor' is the name of the file you wish to edit. Use a file that may be changed. 3. Insert and delete text as you learned in the previous lessons. 4. Save the file with changes and exit Vim with: :wq 5. If you have quit vimtutor in step 1 restart the vimtutor and move down to the following summary. 6. After reading the above steps and understanding them: do it. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1 SUMMARY 1. The cursor is moved using either the arrow keys or the hjkl keys. h (left) j (down) k (up) l (right) 2. To start Vim from the shell prompt type: vim FILENAME 3. To exit Vim type: :q! to trash all changes. OR type: :wq to save the changes. 4. To delete the character at the cursor type: x 5. To insert or append text type: i type inserted text insert before the cursor A type appended text append after the line NOTE: Pressing will place you in Normal mode or will cancel an unwanted and partially completed command. Now continue with Lesson 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.1: DELETION COMMANDS ** Type dw to delete a word. ** 1. Press to make sure you are in Normal mode. 2. Move the cursor to the line below marked --->. 3. Move the cursor to the beginning of a word that needs to be deleted. 4. Type dw to make the word disappear. NOTE: The letter d will appear on the last line of the screen as you type it. Vim is waiting for you to type w . If you see another character than d you typed something wrong; press and start over. ---> There are a some words fun that don't belong paper in this sentence. 5. Repeat steps 3 and 4 until the sentence is correct and go to Lesson 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.2: MORE DELETION COMMANDS ** Type d$ to delete to the end of the line. ** 1. Press to make sure you are in Normal mode. 2. Move the cursor to the line below marked --->. 3. Move the cursor to the end of the correct line (AFTER the first . ). 4. Type d$ to delete to the end of the line. ---> Somebody typed the end of this line twice. end of this line twice. 5. Move on to Lesson 2.3 to understand what is happening. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.3: ON OPERATORS AND MOTIONS Many commands that change text are made from an operator and a motion. The format for a delete command with the d delete operator is as follows: d motion Where: d - is the delete operator. motion - is what the operator will operate on (listed below). A short list of motions: w - until the start of the next word, EXCLUDING its first character. e - to the end of the current word, INCLUDING the last character. $ - to the end of the line, INCLUDING the last character. Thus typing de will delete from the cursor to the end of the word. NOTE: Pressing just the motion while in Normal mode without an operator will move the cursor as specified. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.4: USING A COUNT FOR A MOTION ** Typing a number before a motion repeats it that many times. ** 1. Move the cursor to the start of the line marked ---> below. 2. Type 2w to move the cursor two words forward. 3. Type 3e to move the cursor to the end of the third word forward. 4. Type 0 (zero) to move to the start of the line. 5. Repeat steps 2 and 3 with different numbers. ---> This is just a line with words you can move around in. 6. Move on to Lesson 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.5: USING A COUNT TO DELETE MORE ** Typing a number with an operator repeats it that many times. ** In the combination of the delete operator and a motion mentioned above you insert a count before the motion to delete more: d number motion 1. Move the cursor to the first UPPER CASE word in the line marked --->. 2. Type d2w to delete the two UPPER CASE words 3. Repeat steps 1 and 2 with a different count to delete the consecutive UPPER CASE words with one command ---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.6: OPERATING ON LINES ** Type dd to delete a whole line. ** Due to the frequency of whole line deletion, the designers of Vi decided it would be easier to simply type two d's to delete a line. 1. Move the cursor to the second line in the phrase below. 2. Type dd to delete the line. 3. Now move to the fourth line. 4. Type 2dd to delete two lines. ---> 1) Roses are red, ---> 2) Mud is fun, ---> 3) Violets are blue, ---> 4) I have a car, ---> 5) Clocks tell time, ---> 6) Sugar is sweet ---> 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.7: THE UNDO COMMAND ** Press u to undo the last commands, U to fix a whole line. ** 1. Move the cursor to the line below marked ---> and place it on the first error. 2. Type x to delete the first unwanted character. 3. Now type u to undo the last command executed. 4. This time fix all the errors on the line using the x command. 5. Now type a capital U to return the line to its original state. 6. Now type u a few times to undo the U and preceding commands. 7. Now type CTRL-R (keeping CTRL key pressed while hitting R) a few times to redo the commands (undo the undo's). ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. These are very useful commands. Now move on to the Lesson 2 Summary. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2 SUMMARY 1. To delete from the cursor up to the next word type: dw 2. To delete from the cursor to the end of a line type: d$ 3. To delete a whole line type: dd 4. To repeat a motion prepend it with a number: 2w 5. The format for a change command is: operator [number] motion where: operator - is what to do, such as d for delete [number] - is an optional count to repeat the motion motion - moves over the text to operate on, such as w (word), $ (to the end of line), etc. 6. To move to the start of the line use a zero: 0 7. To undo previous actions, type: u (lowercase u) To undo all the changes on a line, type: U (capital U) To undo the undo's, type: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.1: THE PUT COMMAND ** Type p to put previously deleted text after the cursor. ** 1. Move the cursor to the first ---> line below. 2. Type dd to delete the line and store it in a Vim register. 3. Move the cursor to the c) line, ABOVE where the deleted line should go. 4. Type p to put the line below the cursor. 5. Repeat steps 2 through 4 to put all the lines in correct order. ---> d) Can you learn too? ---> b) Violets are blue, ---> c) Intelligence is learned, ---> a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.2: THE REPLACE COMMAND ** Type rx to replace the character at the cursor with x . ** 1. Move the cursor to the first line below marked --->. 2. Move the cursor so that it is on top of the first error. 3. Type r and then the character which should be there. 4. Repeat steps 2 and 3 until the first line is equal to the second one. ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. Now move on to Lesson 3.3. NOTE: Remember that you should be learning by doing, not memorization. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.3: THE CHANGE OPERATOR ** To change until the end of a word, type ce . ** 1. Move the cursor to the first line below marked --->. 2. Place the cursor on the u in lubw. 3. Type ce and the correct word (in this case, type ine ). 4. Press and move to the next character that needs to be changed. 5. Repeat steps 3 and 4 until the first sentence is the same as the second. ---> This lubw has a few wptfd that mrrf changing usf the change operator. ---> This line has a few words that need changing using the change operator. Notice that ce deletes the word and places you in Insert mode. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.4: MORE CHANGES USING c ** The change operator is used with the same motions as delete. ** 1. The change operator works in the same way as delete. The format is: c [number] motion 2. The motions are the same, such as w (word) and $ (end of line). 3. Move to the first line below marked --->. 4. Move the cursor to the first error. 5. Type c$ and type the rest of the line like the second and press . ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. NOTE: You can use the Backspace key to correct mistakes while typing. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3 SUMMARY 1. To put back text that has just been deleted, type p . This puts the deleted text AFTER the cursor (if a line was deleted it will go on the line below the cursor). 2. To replace the character under the cursor, type r and then the character you want to have there. 3. The change operator allows you to change from the cursor to where the motion takes you. eg. Type ce to change from the cursor to the end of the word, c$ to change to the end of a line. 4. The format for change is: c [number] motion Now go on to the next lesson. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.1: CURSOR LOCATION AND FILE STATUS ** Type CTRL-G to show your location in the file and the file status. Type G to move to a line in the file. ** NOTE: Read this entire lesson before executing any of the steps!! 1. Hold down the Ctrl key and press g . We call this CTRL-G. A message will appear at the bottom of the page with the filename and the position in the file. Remember the line number for Step 3. NOTE: You may see the cursor position in the lower right corner of the screen This happens when the 'ruler' option is set (see :help 'ruler' ) 2. Press G to move you to the bottom of the file. Type gg to move you to the start of the file. 3. Type the number of the line you were on and then G . This will return you to the line you were on when you first pressed CTRL-G. 4. If you feel confident to do this, execute steps 1 through 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.2: THE SEARCH COMMAND ** Type / followed by a phrase to search for the phrase. ** 1. In Normal mode type the / character. Notice that it and the cursor appear at the bottom of the screen as with the : command. 2. Now type 'errroor' . This is the word you want to search for. 3. To search for the same phrase again, simply type n . To search for the same phrase in the opposite direction, type N . 4. To search for a phrase in the backward direction, use ? instead of / . 5. To go back to where you came from press CTRL-O (Keep Ctrl down while pressing the letter o). Repeat to go back further. CTRL-I goes forward. ---> "errroor" is not the way to spell error; errroor is an error. NOTE: When the search reaches the end of the file it will continue at the start, unless the 'wrapscan' option has been reset. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.3: MATCHING PARENTHESES SEARCH ** Type % to find a matching ),], or } . ** 1. Place the cursor on any (, [, or { in the line below marked --->. 2. Now type the % character. 3. The cursor will move to the matching parenthesis or bracket. 4. Type % to move the cursor to the other matching bracket. 5. Move the cursor to another (,),[,],{ or } and see what % does. ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) NOTE: This is very useful in debugging a program with unmatched parentheses! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.4: THE SUBSTITUTE COMMAND ** Type :s/old/new/g to substitute 'new' for 'old'. ** 1. Move the cursor to the line below marked --->. 2. Type :s/thee/the . Note that this command only changes the first occurrence of "thee" in the line. 3. Now type :s/thee/the/g . Adding the g flag means to substitute globally in the line, change all occurrences of "thee" in the line. ---> thee best time to see thee flowers is in thee spring. 4. To change every occurrence of a character string between two lines, type :#,#s/old/new/g where #,# are the line numbers of the range of lines where the substitution is to be done. Type :%s/old/new/g to change every occurrence in the whole file. Type :%s/old/new/gc to find every occurrence in the whole file, with a prompt whether to substitute or not. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4 SUMMARY 1. CTRL-G displays your location in the file and the file status. G moves to the end of the file. number G moves to that line number. gg moves to the first line. 2. Typing / followed by a phrase searches FORWARD for the phrase. Typing ? followed by a phrase searches BACKWARD for the phrase. After a search type n to find the next occurrence in the same direction or N to search in the opposite direction. CTRL-O takes you back to older positions, CTRL-I to newer positions. 3. Typing % while the cursor is on a (,),[,],{, or } goes to its match. 4. To substitute new for the first old in a line type :s/old/new To substitute new for all 'old's on a line type :s/old/new/g To substitute phrases between two line #'s type :#,#s/old/new/g To substitute all occurrences in the file type :%s/old/new/g To ask for confirmation each time add 'c' :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.1: HOW TO EXECUTE AN EXTERNAL COMMAND ** Type :! followed by an external command to execute that command. ** 1. Type the familiar command : to set the cursor at the bottom of the screen. This allows you to enter a command-line command. 2. Now type the ! (exclamation point) character. This allows you to execute any external shell command. 3. As an example type ls following the ! and then hit . This will show you a listing of your directory, just as if you were at the shell prompt. Or use :!dir if ls doesn't work. NOTE: It is possible to execute any external command this way, also with arguments. NOTE: All : commands must be finished by hitting From here on we will not always mention it. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.2: MORE ON WRITING FILES ** To save the changes made to the text, type :w FILENAME. ** 1. Type :!dir or :!ls to get a listing of your directory. You already know you must hit after this. 2. Choose a filename that does not exist yet, such as TEST. 3. Now type: :w TEST (where TEST is the filename you chose.) 4. This saves the whole file (the Vim Tutor) under the name TEST. To verify this, type :!dir or :!ls again to see your directory. NOTE: If you were to exit Vim and start it again with vim TEST , the file would be an exact copy of the tutor when you saved it. 5. Now remove the file by typing (MS-DOS): :!del TEST or (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.3: SELECTING TEXT TO WRITE ** To save part of the file, type v motion :w FILENAME ** 1. Move the cursor to this line. 2. Press v and move the cursor to the fifth item below. Notice that the text is highlighted. 3. Press the : character. At the bottom of the screen :'<,'> will appear. 4. Type w TEST , where TEST is a filename that does not exist yet. Verify that you see :'<,'>w TEST before you press . 5. Vim will write the selected lines to the file TEST. Use :!dir or :!ls to see it. Do not remove it yet! We will use it in the next lesson. NOTE: Pressing v starts Visual selection. You can move the cursor around to make the selection bigger or smaller. Then you can use an operator to do something with the text. For example, d deletes the text. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.4: RETRIEVING AND MERGING FILES ** To insert the contents of a file, type :r FILENAME ** 1. Place the cursor just above this line. NOTE: After executing Step 2 you will see text from Lesson 5.3. Then move DOWN to see this lesson again. 2. Now retrieve your TEST file using the command :r TEST where TEST is the name of the file you used. The file you retrieve is placed below the cursor line. 3. To verify that a file was retrieved, cursor back and notice that there are now two copies of Lesson 5.3, the original and the file version. NOTE: You can also read the output of an external command. For example, :r !ls reads the output of the ls command and puts it below the cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5 SUMMARY 1. :!command executes an external command. Some useful examples are: (MS-DOS) (Unix) :!dir :!ls - shows a directory listing. :!del FILENAME :!rm FILENAME - removes file FILENAME. 2. :w FILENAME writes the current Vim file to disk with name FILENAME. 3. v motion :w FILENAME saves the Visually selected lines in file FILENAME. 4. :r FILENAME retrieves disk file FILENAME and puts it below the cursor position. 5. :r !dir reads the output of the dir command and puts it below the cursor position. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.1: THE OPEN COMMAND ** Type o to open a line below the cursor and place you in Insert mode. ** 1. Move the cursor to the line below marked --->. 2. Type the lowercase letter o to open up a line BELOW the cursor and place you in Insert mode. 3. Now type some text and press to exit Insert mode. ---> After typing o the cursor is placed on the open line in Insert mode. 4. To open up a line ABOVE the cursor, simply type a capital O , rather than a lowercase o. Try this on the line below. ---> Open up a line above this by typing O while the cursor is on this line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.2: THE APPEND COMMAND ** Type a to insert text AFTER the cursor. ** 1. Move the cursor to the start of the line below marked --->. 2. Press e until the cursor is on the end of li . 3. Type an a (lowercase) to append text AFTER the cursor. 4. Complete the word like the line below it. Press to exit Insert mode. 5. Use e to move to the next incomplete word and repeat steps 3 and 4. ---> This li will allow you to pract appendi text to a line. ---> This line will allow you to practice appending text to a line. NOTE: a, i and A all go to the same Insert mode, the only difference is where the characters are inserted. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.3: ANOTHER WAY TO REPLACE ** Type a capital R to replace more than one character. ** 1. Move the cursor to the first line below marked --->. Move the cursor to the beginning of the first xxx . 2. Now press R and type the number below it in the second line, so that it replaces the xxx . 3. Press to leave Replace mode. Notice that the rest of the line remains unmodified. 4. Repeat the steps to replace the remaining xxx. ---> Adding 123 to xxx gives you xxx. ---> Adding 123 to 456 gives you 579. NOTE: Replace mode is like Insert mode, but every typed character deletes an existing character. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.4: COPY AND PASTE TEXT ** Use the y operator to copy text and p to paste it ** 1. Go to the line marked with ---> below and place the cursor after "a)". 2. Start Visual mode with v and move the cursor to just before "first". 3. Type y to yank (copy) the highlighted text. 4. Move the cursor to the end of the next line: j$ 5. Type p to put (paste) the text. Then type: a second . 6. Use Visual mode to select " item.", yank it with y , move to the end of the next line with j$ and put the text there with p . ---> a) this is the first item. b) NOTE: you can also use y as an operator; yw yanks one word. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.5: SET OPTION ** Set an option so a search or substitute ignores case ** 1. Search for 'ignore' by entering: /ignore Repeat several times by pressing n . 2. Set the 'ic' (Ignore case) option by entering: :set ic 3. Now search for 'ignore' again by pressing n Notice that Ignore and IGNORE are now also found. 4. Set the 'hlsearch' and 'incsearch' options: :set hls is 5. Now type the search command again and see what happens: /ignore 6. To disable ignoring case enter: :set noic NOTE: To remove the highlighting of matches enter: :nohlsearch NOTE: If you want to ignore case for just one search command, use \c in the phrase: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6 SUMMARY 1. Type o to open a line BELOW the cursor and start Insert mode. Type O to open a line ABOVE the cursor. 2. Type a to insert text AFTER the cursor. Type A to insert text after the end of the line. 3. The e command moves to the end of a word. 4. The y operator yanks (copies) text, p puts (pastes) it. 5. Typing a capital R enters Replace mode until is pressed. 6. Typing ":set xxx" sets the option "xxx". Some options are: 'ic' 'ignorecase' ignore upper/lower case when searching 'is' 'incsearch' show partial matches for a search phrase 'hls' 'hlsearch' highlight all matching phrases You can either use the long or the short option name. 7. Prepend "no" to switch an option off: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 7.1: GETTING HELP ** Use the on-line help system ** Vim has a comprehensive on-line help system. To get started, try one of these three: - press the key (if you have one) - press the key (if you have one) - type :help Read the text in the help window to find out how the help works. Type CTRL-W CTRL-W to jump from one window to another. Type :q to close the help window. You can find help on just about any subject, by giving an argument to the ":help" command. Try these (don't forget pressing ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 7.2: CREATE A STARTUP SCRIPT ** Enable Vim features ** Vim has many more features than Vi, but most of them are disabled by default. To start using more features you have to create a "vimrc" file. 1. Start editing the "vimrc" file. This depends on your system: :e ~/.vimrc for Unix :e $VIM/_vimrc for MS-Windows 2. Now read the example "vimrc" file contents: :r $VIMRUNTIME/vimrc_example.vim 3. Write the file with: :w The next time you start Vim it will use syntax highlighting. You can add all your preferred settings to this "vimrc" file. For more information type :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 7.3: COMPLETION ** Command line completion with CTRL-D and ** 1. Make sure Vim is not in compatible mode: :set nocp 2. Look what files exist in the directory: :!ls or :!dir 3. Type the start of a command: :e 4. Press CTRL-D and Vim will show a list of commands that start with "e". 5. Press and Vim will complete the command name to ":edit". 6. Now add a space and the start of an existing file name: :edit FIL 7. Press . Vim will complete the name (if it is unique). NOTE: Completion works for many commands. Just try pressing CTRL-D and . It is especially useful for :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 7 SUMMARY 1. Type :help or press or to open a help window. 2. Type :help cmd to find help on cmd . 3. Type CTRL-W CTRL-W to jump to another window 4. Type :q to close the help window 5. Create a vimrc startup script to keep your preferred settings. 6. When typing a : command, press CTRL-D to see possible completions. Press to use one completion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This concludes the Vim Tutor. It was intended to give a brief overview of the Vim editor, just enough to allow you to use the editor fairly easily. It is far from complete as Vim has many many more commands. Read the user manual next: ":help user-manual". For further reading and studying, this book is recommended: Vim - Vi Improved - by Steve Oualline Publisher: New Riders The first book completely dedicated to Vim. Especially useful for beginners. There are many examples and pictures. See http://iccf-holland.org/click5.html This book is older and more about Vi than Vim, but also recommended: Learning the Vi Editor - by Linda Lamb Publisher: O'Reilly & Associates Inc. It is a good book to get to know almost anything you want to do with Vi. The sixth edition also includes information on Vim. This tutorial was written by Michael C. Pierce and Robert K. Ware, Colorado School of Mines using ideas supplied by Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Modified for Vim by Bram Moolenaar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!j<vim80/tutor/tutor.fr.utf-8nu[=============================================================================== = B i e n v e n u e dans l e T u t o r i e l de V I M - Version 1.7 = =============================================================================== Vim est un éditeur très puissant qui a trop de commandes pour pouvoir toutes les expliquer dans un cours comme celui-ci, qui est conçu pour en décrire suffisamment afin de vous permettre d'utiliser simplement Vim. Le temps requis pour suivre ce cours est d'environ 25 à 30 minutes, selon le temps que vous passerez à expérimenter. ATTENTION : Les commandes utilisées dans les leçons modifieront le texte. Faites une copie de ce fichier afin de vous entraîner dessus (si vous avez lancé "vimtutor" ceci est déjà une copie). Il est important de garder en tête que ce cours est conçu pour apprendre par la pratique. Cela signifie que vous devez exécuter les commandes pour les apprendre correctement. Si vous vous contentez de lire le texte, vous oublierez les commandes ! Maintenant, vérifiez que votre clavier n'est PAS verrouillé en majuscules, et appuyez la touche j le nombre de fois suffisant pour que la Leçon 1.1 remplisse complètement l'écran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 1.1 : DÉPLACEMENT DU CURSEUR ** Pour déplacer le curseur, appuyez les touches h,j,k,l comme indiqué. ** ^ k Astuce : La touche h est à gauche et déplace à gauche. < h l > La touche l est à droite et déplace à droite. j La touche j ressemble à une flèche vers le bas. v 1. Déplacez le curseur sur l'écran jusqu'à vous sentir à l'aise. 2. Maintenez la touche Bas (j) enfoncée jusqu'à ce qu'elle se répète. Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante. 3. En utilisant la touche Bas, allez à la Leçon 1.2. NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap> pour revenir en mode Normal. Puis retapez la commande que vous vouliez. NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisant hjkl vous pourrez vous déplacer beaucoup plus rapidement, une fois que vous aurez pris l'habitude. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 1.2 : SORTIR DE VIM !! NOTE : Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !! 1. Appuyez la touche <Échap> (pour être sûr d'être en mode Normal). 2. Tapez : :q! Ceci quitte l'éditeur SANS enregistrer les changements que vous avez faits. 3. Revenez ici en tapant la commande qui vous a mené à ce tutoriel. Cela pourrait être : vimtutor 4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes 1 à 3 pour sortir puis rentrer dans l'éditeur. NOTE : :q! annule tous les changements que vous avez faits. Dans quelques leçons, vous apprendrez à enregistrer les changements. 5. Déplacez le curseur à la Leçon 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT ** Appuyez x pour effacer le caractère sous le curseur. ** 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. 2. Pour corriger les erreurs, déplacez le curseur jusqu'à ce qu'il soit sur un caractère à effacer. 3. Appuyez la touche x pour effacer le caractère redondant. 4. Répétez les étapes 2 à 4 jusqu'à ce que la phrase soit correcte. ---> La vvache a sautéé au-ddessus dde la luune. 5. Maintenant que la ligne est correcte, passez à la Leçon 1.4. NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par la pratique. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 1.4 : ÉDITION DE TEXTE - INSERTION ** Appuyez i pour insérer du texte. ** 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. 2. Pour rendre la première ligne identique à la seconde, mettez le curseur sur le premier caractère APRÈS l'endroit où insérer le texte. 3. Appuyez i et tapez les caractères qui manquent. 4. Une fois qu'une erreur est corrigée, appuyez <Échap> pour revenir en mode Normal. Répétez les étapes 2 à 4 pour corriger la phrase. ---> Il mnqe caractères cette . ---> Il manque des caractères dans cette ligne. 5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez à la Leçon 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 1.5 : ÉDITION DE TEXTE - AJOUTER ** Appuyez A pour ajouter du texte. ** 1. Déplacez le curseur sur la première ligne ci-dessous marquée --->. Peu importe sur quel caractère se trouve le curseur sur cette ligne. 2. Appuyez A et tapez les ajouts nécessaires. 3. Quand le texte a été ajouté, appuyez <Échap> pour revenir en mode Normal. 4. Déplacez le curseur sur la seconde ligne marquée ---> et répétez les étapes 2 et 3 pour corriger la phrase. ---> Il manque du texte à partir de cet Il manque du texte à partir de cette ligne. ---> Il manque aussi du te Il manque aussi du texte ici. 5. Quand vous vous sentez suffisamment à l'aise pour ajouter du texte, allez à la Leçon 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 1.6 : ÉDITER UN FICHIER ** Utilisez :wq pour enregistrer un fichier et sortir. ** !! NOTE : Lisez toute la leçon avant d'exécuter les instructions ci-dessous !! 1. Sortez de ce tutoriel comme vous l'avez fait dans la Leçon 1.2 : :q! Ou, si vous avez accès à un autre terminal, exécutez-y les actions qui suivent. 2. À l'invite du shell, tapez cette commande : vim tutor 'vim' est la commande pour démarrer l'éditeur Vim, 'tutor' est le nom du fichier que vous souhaitez éditer. Utilisez un fichier qui peut être modifié. 3. Insérez et effacez du texte comme vous l'avez appris dans les leçons précédentes. 4. Enregistrez le fichier avec les changements et sortez de Vim avec : :wq 5. Si vous avez quitté vimtutor à l'étape 1, recommencez vimtutor et déplacez-vous en bas vers le résumé suivant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 1 1. Le curseur se déplace avec les touches fléchées ou les touches hjkl. h (gauche) j (bas) k (haut) l (droite) 2. Pour démarrer Vim à l'invite du shell tapez : vim FICHIER 3. Pour quitter Vim tapez : <Échap> :q! pour perdre tous les changements. OU tapez : <Échap> :wq pour enregistrer les changements. 4. Pour effacer un caractère sous le curseur tapez : x 5. Pour insérer ou ajouter du texte tapez : i tapez le texte à insérer avant le curseur <Échap> A tapez le texte à ajouter en fin de ligne <Échap> NOTE : Appuyer <Échap> vous place en mode Normal ou annule une commande partiellement tapée dont vous ne voulez plus. Passez maintenant à la leçon 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.1 : COMMANDES D'EFFACEMENT ** Tapez dw pour effacer un mot. ** 1. Appuyez <Échap> pour être sûr d'être en mode Normal. 2. Déplacez le curseur sur la ligne marquée ---> ci-dessous. 3. Placez le curseur sur le début d'un mot qui a besoin d'être effacé. 4. Tapez dw pour faire disparaître ce mot. NOTE : La lettre d apparaîtra sur la dernière ligne de l'écran lors de votre frappe. Vim attend que vous tapiez w . Si vous voyez un autre caractère que d vous avez tapé autre chose ; appuyez <Échap> et recommencez. ---> Il y a quelques drôle mots qui n'ont rien à faire papier sur cette ligne. 5. Répétez les étapes 3 et 4 jusqu'à ce que la phrase soit correcte et allez à la Leçon 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.2 : PLUS DE COMMANDES D'EFFACEMENTS ** Tapez d$ pour effacer jusqu'à la fin de la ligne. ** 1. Appuyez <Échap> pour être sûr d'être en mode Normal. 2. Déplacez le curseur sur la ligne marquée ---> ci-dessous. 3. Déplacez le curseur jusqu'à la fin de la ligne correcte (APRÈS le premier . ). 4. Tapez d$ pour effacer jusqu'à la fin de la ligne. ---> Quelqu'un a tapé la fin de cette ligne deux fois. cette ligne deux fois. 5. Allez à la Leçon 2.3 pour comprendre ce qui se passe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.3 : À PROPOS DES OPÉRATEURS ET DES MOUVEMENTS Plusieurs commandes qui changent le texte sont constituées d'un opérateur et d'un mouvement. Le format pour une commande d'effacement avec l'opérateur d d'effacement est le suivant : d mouvement Où : d - est l'opérateur d'effacement mouvement - est le mouvement sur lequel agit l'opérateur (listés ci-dessous) Une courte liste de mouvements : w - jusqu'au début du prochain mot, en EXCLUANT son premier caractère. e - jusqu'à la fin du mot courant, en EXCLUANT son dernier caractère. $ - jusqu'à la fin de la ligne, en INCLUANT son dernier caractère. Ainsi, taper de va effacer depuis le curseur jusqu'à la fin du mot. NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le curseur comme indiqué. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT ** Taper un nombre avant un mouvement le répète autant de fois. ** 1. Déplacez le curseur au début de la ligne marquée ---> ci-dessous. 2. Tapez 2w pour déplacer le curseur de 2 mots vers l'avant. 3. Tapez 3e pour déplacer le curseur à la fin du troisième mot vers l'avant. 4. Tapez 0 (zéro) pour déplacer au début de la ligne. 5. Répétez les étapes 2 et 3 avec des quantificateurs différents. ---> Ceci est juste une ligne avec des mots où vous pouvez vous déplacer. 6. Déplacez-vous à la Leçon 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS ** Taper un nombre avec un opérateur le répète autant de fois. ** Outre la combinaison de l'opérateur d'effacement avec un déplacement mentionné ci-dessus, vous pouvez insérer un nombre (quantificateur) pour effacer encore plus : d nombre déplacement 1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne marquée --->. 2. Tapez d2w pour effacer les deux mots en MAJUSCULES. 3. Répétez les étapes 1 et 2 avec des quantificateurs différents pour effacer les mots suivants en MAJUSCULES à l'aide d'une commande. ---> Cette ABC DE ligne FGHI JK LMN OP de mots est Q RS TUV nettoyée. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.6 : OPÉREZ SUR DES LIGNES ** Tapez dd pour effacer une ligne complète. ** Vu le nombre de fois où l'on efface des lignes complètes, les concepteurs de Vi ont décidé qu'il serait plus facile de taper simplement deux d pour effacer une ligne. 1. Placez le curseur sur la seconde ligne de la phrase ci-dessous. 2. Tapez dd pour effacer la ligne. 3. Maintenant allez à la quatrième ligne. 4. Tapez 2dd pour effacer deux lignes. ---> 1) Les roses sont rouges, ---> 2) La boue c'est drôle, ---> 3) Les violettes sont bleues, ---> 4) J'ai une voiture, ---> 5) Les horloges donnent l'heure, ---> 6) Le sucre est doux ---> 7) Tout comme vous. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.7 : L'ANNULATION ** Tapez u pour annuler les dernières commandes. ** ** Tapez U pour récupérer toute une ligne. ** 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous et placez-le sur la première erreur. 2. Tapez x pour effacer le premier caractère redondant. 3. Puis tapez u pour annuler la dernière commande exécutée. 4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande x . 5. Puis tapez un U majuscule pour remettre la ligne dans son état initial. 6. Puis tapez u deux-trois fois pour annuler le U et les commandes précédentes. 7. Maintenant tapez CTRL-R (maintenez la touche CTRL enfoncée pendant que vous appuyez R) deux-trois fois pour refaire les commandes (annuler les annulations). ---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'. 8. Ce sont des commandes très utiles. Maintenant, allez au résumé de la Leçon 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 2 1. Pour effacer du curseur jusqu'au mot suivant tapez : dw 2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez : d$ 3. Pour effacer toute une ligne tapez : dd 4. Pour répéter un déplacement ajoutez un quantificateur : 2w 5. Le format d'une commande de changement est : opérateur [nombre] déplacement Où : opérateur - est ce qu'il faut faire, comme d pour effacer. [nombre] - un quantificateur optionnel pour répéter le déplacement. déplacement - déplace le long du texte à opérer, tel que w (mot), $ (jusqu'à la fin de ligne), etc. 6. Pour se déplacer au début de ligne, utilisez un zéro : 0 5. Pour annuler des actions précédentes, tapez : u (u minuscule) Pour annuler tous les changements sur une ligne tapez : U (U majuscule) Pour annuler l'annulation tapez : CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 3.1 : LE COLLAGE ** Tapez p pour placer après le curseur ce qui vient d'être effacé. ** 1. Placez le curseur sur la première ligne ci-dessous marquée --->. 2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim. 3. Déplacez le curseur sur la ligne c) au-dessus où vous voulez remettre la ligne effacée. 4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur. 5. Répétez les étapes 2 à 4 pour mettre toutes les lignes dans le bon ordre. ---> d) Et vous, qu'apprenez-vous ? ---> b) Les violettes sont bleues, ---> c) L'intelligence s'apprend, ---> a) Les roses sont rouges, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 3.2 : LA COMMANDE DE REMPLACEMENT ** Tapez rx pour remplacer un caractère sous le curseur par x . ** 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. 2. Placez le curseur de manière à ce qu'il surplombe la première erreur. 3. Tapez r suivi du caractère qui doit corriger l'erreur. 4. Répétez les étapes 2 et 3 jusqu'à ce que la première ligne soit égale à la seconde. ---> Quand cette ligne a été sauvie, quelqu'un a lait des faunes de frappe ! ---> Quand cette ligne a été saisie, quelqu'un a fait des fautes de frappe ! 5. Maintenant, allez à la Leçon 3.3. NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par mémorisation. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 3.3 : L'OPÉRATEUR DE CHANGEMENT ** Pour changer jusqu'à la fin d'un mot, tapez ce .** 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. 2. Placez le curseur sur le u de luhko. 3. Tapez ce et corrigez le mot (dans notre cas, tapez 'igne'.) 4. Appuyez <Échap> et placez-vous sur le prochain caractère qui doit être changé. 5. Répétez les étapes 3 et 4 jusqu'à ce que la première phrase soit identique à la seconde. ---> Cette luhko contient quelques myqa qui ont ricne d'être chantufip. ---> Cette ligne contient quelques mots qui ont besoin d'être changés. Notez que ce efface le mot et vous place ensuite en mode Insertion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c ** L'opérateur de changement fonctionne avec les mêmes déplacements que l'effacement. ** 1. L'opérateur de changement fonctionne de la même manière que l'effacement. Le format est : c [nombre] déplacement 2. Les déplacements sont identiques : w (mot) et $ (fin de ligne). 3. Déplacez-vous sur la première ligne marquée ---> ci-dessous. 4. Placez le curseur sur la première erreur. 5. Tapez c$ et tapez le reste de la ligne afin qu'elle soit identique à la seconde ligne, puis tapez <Échap>. ---> La fin de cette ligne doit être rendue identique à la seconde. ---> La fin de cette ligne doit être corrigée avec la commande c$ . NOTE : Vous pouvez utiliser la touche Retour Arrière pour corriger les erreurs lorsque vous tapez. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 3 1. Pour remettre le texte qui a déjà été effacé, tapez p . Cela Place le texte effacé APRÈS le curseur (si une ligne complète a été effacée, elle sera placée sous la ligne du curseur). 2. Pour remplacer le caractère sous le curseur, tapez r suivi du caractère qui remplacera l'original. 3. L'opérateur de changement vous permet de changer depuis la position du curseur jusqu'où le déplacement vous amène. Par exemple, tapez ce pour changer du curseur jusqu'à la fin du mot, c$ pour changer jusqu'à la fin d'une ligne. 4. Le format pour le changement est : c [nombre] déplacement Passez maintenant à la leçon suivante. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 4.1 : POSITION DU CURSEUR ET ÉTAT DU FICHIER ** Tapez CTRL-G pour afficher votre position dans le fichier et son état. Tapez G pour vous rendre à une ligne donnée du fichier. ** NOTE : Lisez toute cette leçon avant d'effectuer l'une des étapes !! 1. Maintenez enfoncée la touche CTRL et appuyez sur g . On appelle cela CTRL-G. Une ligne d'état va apparaître en bas de l'écran avec le nom du fichier et le numéro de la ligne où vous êtes. Notez ce numéro, il servira lors de l'étape 3. NOTE : Vous pouvez peut-être voir le curseur en bas à droite de l'écran. Ceci arrive quand l'option 'ruler' est activée (voir :help 'ruler') 2. Tapez G pour vous déplacer à la fin du fichier. Tapez gg pour vous déplacer au début du fichier. 3. Tapez le numéro de la ligne où vous étiez suivi de G . Cela vous ramènera à la ligne où vous étiez au départ quand vous aviez appuyé CTRL-G. 4. Si vous vous sentez prêt à faire ceci, effectuez les étapes 1 à 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 4.2 : LA RECHERCHE ** Tapez / suivi d'un texte pour rechercher ce texte. ** 1. Tapez le caractère / en mode Normal. Notez que celui-ci et le curseur apparaissent en bas de l'écran, comme lorsque l'on utilise : . 2. Puis tapez 'errreuur' . C'est le mot que vous voulez rechercher. 3. Pour rechercher à nouveau le même texte, tapez simplement n . Pour rechercher le même texte dans la direction opposée, tapez N . 4. Pour rechercher une phrase dans la direction opposée, utilisez ? au lieu de / . ---> erreur ne s'écrit pas "errreuur" ; errreuur est une erreur. NOTE : Quand la recherche atteint la fin du fichier, elle reprend au début sauf si l'option 'wrapscan' est désactivée. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES ** Tapez % pour trouver des ), ] ou } correspondants. ** 1. Placez le curseur sur l'un des (, [ ou { de la ligne marquée ---> ci-dessous. 2. Puis tapez le caractère % . 3. Le curseur se déplacera sur la parenthèse ou crochet correspondant. 4. Tapez % pour replacer le curseur sur la parenthèse ou crochet correspondant. 5. Déplacez le curseur sur un autre (,),[,],{ ou } et regardez ce que fait % . ---> Voici ( une ligne de test contenant des (, des [ ] et des { } )). NOTE : Cette fonctionnalité est très utile lors du débogage d'un programme qui contient des parenthèses déséquilibrées ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 4.4 : LA COMMANDE DE SUBSTITUTION ** Tapez :s/ancien/nouveau/g pour remplacer 'ancien' par 'nouveau'. ** 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. 2. Tapez :s/lee/le . Notez que cette commande change seulement la première occurrence de "lee" dans la ligne. 3. Puis tapez :s/lee/le/g . L'ajout du drapeau g ordonne de faire une substitution globale sur la ligne, et change toutes les occurrences de "lee" sur la ligne. ---> lee meilleur moment pour regarder lees fleurs est pendant lee printemps. 4. Pour changer toutes les occurrences d'un texte, entre deux lignes, tapez :#,#s/ancien/nouveau/g où #,# sont les numéros de lignes de la plage où la substitution doit être faite. Tapez :%s/ancien/nouveau/g pour changer toutes les occurrences dans tout le fichier. Tapez :%s/ancien/nouveau/gc pour trouver toutes les occurrences dans tout le fichier avec une invite pour confirmer ou infirmer chaque substitution. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 4 1. CTRL-G affiche la position dans le fichier et l'état de celui-ci. G déplace à la fin du fichier. nombre G déplace au numéro de ligne. gg déplace à la première ligne. 2. Taper / suivi d'un texte recherche ce texte vers l'AVANT. Taper ? suivi d'un texte recherche ce texte vers l'ARRIÈRE. Après une recherche tapez n pour trouver l'occurrence suivante dans la même direction ou Maj-N pour rechercher dans la direction opposée. 3. Taper % lorsque le curseur est sur (, ), [, ], { ou } déplace celui-ci sur le caractère correspondant. 4. Pour remplacer le premier aa par bb sur une ligne tapez :s/aa/bb Pour remplacer tous les aa par bb sur une ligne tapez :s/aa/bb/g Pour remplacer du texte entre deux numéros de ligne tapez :#,#s/aa/bb/g Pour remplacer toutes les occurrences dans le fichier tapez :%s/aa/bb/g Pour demander une confirmation à chaque fois ajoutez 'c' :%s/aa/bb/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE ** Tapez :! suivi d'une commande externe pour exécuter cette commande. ** 1. Tapez le : familier pour mettre le curseur en bas de l'écran. Cela vous permet de saisir une commande. 2. Puis tapez un ! (point d'exclamation). Cela vous permet d'exécuter n'importe quelle commande valide pour votre interpréteur (shell). 3. Par exemple, tapez ls après le ! et appuyez . Ceci affichera la liste des fichiers du répertoire courant, comme si vous aviez tapé la commande à l'invite du shell. Utilisez :!dir si :!ls ne marche pas. NOTE : Il est possible d'exécuter n'importe quelle commande externe de cette manière, avec ou sans argument. NOTE : Toutes les commandes : doivent finir par la frappe de . À partir de maintenant, nous ne le mentionnerons plus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS ** Pour enregistrer les changements faits au texte, tapez :w FICHIER . ** 1. Tapez :!dir ou :!ls pour avoir la liste des fichiers dans le répertoire courant. Vous savez déjà qu'il faut appuyer après cela. 2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST. 3. Puis tapez :w TEST (où TEST est le nom que vous avez choisi). 4. Cela enregistre tout le fichier (Tutoriel Vim) sous le nom TEST. Pour le vérifier, tapez :!dir ou :!ls de nouveau pour revisualiser votre répertoire. NOTE : Si vous quittez Vim et le redémarrez de nouveau avec le fichier TEST, celui-ci sera une copie exacte de ce cours au moment où vous l'avez enregistré. 5. Maintenant, effacez le fichier en tapant (MS-DOS) : :!del TEST ou (Unix) : :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 5.3 : SÉLECTION DU TEXTE À ENREGISTRER ** Pour enregistrer une portion du fichier, tapez : v déplacement :w FICHIER ** 1. Déplacez le curseur sur cette ligne. 2. Appuyez v et déplacez le curseur vers la cinquième ligne plus bas. Remarquez que le texte est en surbrillance. 3. Appuyez : . En bas de l'écran :'<,'> va apparaître. 4. Tapez w TEST , où TEST est un nom de fichier qui n'existe pas. Vérifiez que vous voyez :'<,'>w TEST avant d'appuyer sur . 5. Vim va enregistrer les lignes sélectionnées dans le fichier TEST. Utilisez :!dir ou :!ls pour le voir. Ne l'effacez pas encore ! Nous allons l'utiliser dans la leçon suivante. NOTE : L'appui de v démarre la sélection Visuelle. Vous pouvez déplacer le curseur pour agrandir ou rétrécir la sélection. Puis vous pouvez utiliser un opérateur pour faire quelque chose sur le texte. Par exemple, d efface le texte. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS ** Pour insérer le contenu d'un fichier, tapez :r FICHIER ** 1. Placez le curseur juste au-dessus de cette ligne. NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3. Puis déplacez-vous vers le bas pour voir cette leçon à nouveau. 2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST où TEST est le nom de votre fichier. Le fichier que vous récupérez est placé au-dessous de la ligne du curseur. 4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle contenue dans le fichier. NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple, :r !ls lit la sortie de la commande ls et la place sous la ligne du curseur. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 5 1. :!commande exécute une commande externe. Quelques exemples pratiques : (MS-DOS) (Unix) :!dir :!ls affiche le contenu du répertoire courant. :!del FICHIER :!rm FICHIER efface FICHIER. 2. :w FICHIER enregistre le fichier Vim courant sur le disque avec pour nom FICHIER. 3. v déplacement :w FICHIER sauvegarde les lignes de la sélection Visuelle dans le fichier FICHIER. 4. :r FICHIER récupère le contenu du fichier FICHIER et l'insère sous la position du curseur. 5. :r !dir lit la sortie de la commande dir et l'insère sous la position du curseur. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 6.1 : LA COMMANDE D'OUVERTURE ** Tapez o pour ouvrir une ligne sous le curseur et y aller en Insertion. ** 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. 2. Tapez la lettre o minuscule pour ouvrir une ligne SOUS le curseur et vous y placer en mode Insertion. 3. Puis tapez du texte et appuyez <Échap> pour sortir du mode Insertion. ---> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion. 4. Pour ouvrir une ligne au-DESSUS du curseur, tapez simplement un O majuscule, plutôt qu'un o minuscule. Faites un essai sur la ligne ci-dessous. ---> Ouvrez une ligne ci-dessus en tapant O lorsque le curseur est ici. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 6.2 : LA COMMANDE D'AJOUT ** Tapez a pour insérer du texte APRÈS le curseur. ** 1. Placez le curseur au début de la ligne marquée ---> ci-dessous. 2. Appuyez e jusqu'à ce que le curseur soit sur la fin de li . 3. Appuyez a (minuscule) pour ajouter du texte APRÈS le curseur. 4. Complétez le mot comme dans la ligne dessous. Appuyez <Échap> pour sortir du mode Insertion. 5. Utilisez e pour vous déplacer vers le mot incomplet suivant et répétez les étapes 3 et 4. ---> Cette li vous perm de pratiq l'ajout de t dans une ligne. ---> Cette ligne vous permet de pratiquer l'ajout de texte dans une ligne. NOTE : a, i, A vont tous dans le même mode Insertion, la seule différence est l'endroit où les caractères sont insérés. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 6.3 : UNE AUTRE MANIÈRE DE REMPLACER ** Tapez un R majuscule pour remplacer plus d'un caractère. ** 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. Déplacez le curseur sur le début du premier xxx . 2. Appuyez maintenant R et tapez le nombre dessous dans la deuxième ligne, de manière à remplacer le xxx . 3. Appuyez <Échap> pour quitter le mode Remplacement. Notez que le reste de la ligne demeure inchangé. 4. Répétez les étapes pour remplacer les xxx restants. ---> L'ajout de 123 à xxx donne xxx. ---> L'ajout de 123 à 456 donne 579. NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les caractères tapés effacent un caractère existant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 6.4 : COPIER ET COLLER DU TEXTE ** Utilisez l'opérateur y pour copier du texte et p pour le coller ** 1. Allez à la ligne marquée ---> ci-dessous et placez le curseur après "a)". 2. Démarrez le mode Visuel avec v et déplacez le curseur juste devant "premier". 3. Tapez y pour copier le texte en surbrillance. 4. Déplacez le curseur à la fin de la ligne suivante : j$ 5. Tapez p pour coller le texte. Puis tapez : un second <Échap> . 6. Utilisez le mode Visuel pour sélectionner "élément", copiez-le avec y , déplacez-vous à la fin de la ligne suivante avec j$ et collez le texte à cet endroit avec p . ---> a) ceci est le premier élément. b) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 6.5 : RÉGLAGE DES OPTIONS ** Réglons une option afin que la recherche et la substitution ignorent la casse des caractères. ** 1. Recherchez 'ignore' en tapant : /ignore Répétez ceci plusieurs fois en utilisant la touche n . 2. Activez l'option 'ic' (ignorer casse) en tapant :set ic . 3. Puis cherchez 'ignore' de nouveau en utilisant n . Remarquez que Ignore et IGNORE sont maintenant aussi trouvés. 4. Activez les options 'hlsearch' et 'incsearch' avec :set hls is . 5. Puis recommencez une recherche, et faites bien attention à ce qui se produit : /ignore 6. Pour désactiver 'ignorer casse', entrez : :set noic NOTE : Pour enlever la surbrillance des résultats, entrez : :nohlsearch NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez \c dans la phrase : /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 6 1. Taper o ouvre une ligne SOUS le curseur et démarre le mode Insertion. Taper O ouvre une ligne au-DESSUS du curseur. 2. Taper a pour insérer du texte APRÈS le curseur. Taper A pour insérer du texte après la fin de ligne. 3. Taper e déplace à la fin du mot. 4. Taper y copie du texte, p le colle. 5. Taper R majuscule active le mode Remplacement jusqu'à ce qu' <Échap> soit appuyé. 6. Taper ":set xxx" active l'option "xxx". Quelques options sont : 'ic' 'ingnorecase' pour ignorer la casse lors des recherches. 'is' 'incsearch' pour montrer les appariements partiels. 'hls' 'hlsearch' pour mettre en surbrillance les appariements. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 7.1 : OBTENIR DE L'AIDE ** Utiliser le système d'aide en ligne. ** Vim a un système complet d'aide en ligne. Pour y accéder, essayez l'une de ces trois méthodes : - appuyez la touche (si vous en avez une) - appuyez la touche (si vous en avez une) - tapez :help Lisez le texte dans la fenêtre d'aide pour savoir comment fonctionne l'aide. Tapez CTRL-W CTRL-W pour sauter d'une fenêtre à l'autre. Tapez :q pour fermer la fenêtre d'aide. Vous pouvez accéder à l'aide sur à peu près n'importe quel sujet en donnant des arguments à la commande :help . Essayez par exemple (n'oubliez pas d'appuyer sur ) : :help w :help c_CTRL-D :help c_ ** 1. Mettez Vim soit en mode non compatible : set nocp 2. Regardez quels fichiers existent dans le répertoire : !ls ou !dir 3. Tapez le début d'une commande : :e 4. Appuyez CTRL-D et Vim affichera une liste de commandes qui commencent par "e". 5. Appuyez et Vim complétera le nom de la commande : ":edit" 6. Ajoutez maintenant un espace et le début d'un fichier existant : :edit FIC 7 Appuyez . Vim va compléter le nom (s'il est unique). NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez d'appuyer CTRL-D et . C'est utile en particulier pour :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 7 1. Tapez :help ou appuyez ou pour ouvrir la fenêtre d'aide. 2. Tapez :help cmd pour trouver l'aide sur cmd . 3. Tapez CTRL-W CTRL-W pour sauter à une autre fenêtre. 4. Tapez :q pour fermer la fenêtre d'aide. 5. Créez un script de démarrage vimrc pour conserver vos réglages préférés. 6. Quand vous tapez une commande : appuyez CTRL-D pour voir les complètements possibles. Appuyez pour utiliser un complètement. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en anglais : :help user-manual Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en français. Il parle plus de Vi que de Vim, mais pourra vous être utile. L'éditeur Vi - Collection Précis et concis - par Arnold Robbins Éditeur : O'Reilly France ISBN : 2-84177-102-4 Deux livres en anglais sont également mentionnés dans la version originale de ce tutoriel, dont un qui traite spécifiquement de Vim. Merci de vous y référer si vous êtes intéressés. Ce tutoriel a été écrit par Michael C. Pierce et Robert K. Ware de l'École des Mines du Colorado et reprend des idées fournies par Charles Smith, Université d'État du Colorado. E-mail : bware@mines.colorado.edu. Modifié pour Vim par Bram Moolenaar. Traduit en français par Adrien Beau, en avril 2001. Dernières mises à jour par Dominique Pellé. E-mail : dominique.pelle@gmail.com Last Change : 2017 Jun 30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!5aavim80/tutor/tutor.nonu[=============================================================================== = V e l k o m m e n t i l i n n f ø r i n g e n i V i m -- Ver. 1.7 = =============================================================================== Vim er en meget kraftig editor med mange kommandoer, alt for mange til å kunne gå gjennom alle i en innføring som denne. Den er beregnet på å sette deg inn i bruken av nok kommandoer så du vil være i stand til lett å kunne bruke Vim som en editor til alle formål. Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30 minutter, avhengig av hvor mye tid du bruker til eksperimentering. MERK: Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er dette allerede en kopi). Det er viktig å huske at denne innføringen er beregnet på læring gjennom bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig. Hvis du bare leser teksten, vil du glemme kommandoene! Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for å flytte markøren helt til leksjon 1.1 fyller skjermen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.1: FLYTTING AV MARKØREN ** For å flytte markøren, trykk tastene h, j, k, l som vist. ** ^ k Tips: h-tasten er til venstre og flytter til venstre. < h l > l-tasten er til høyre og flytter til høyre. j j-tasten ser ut som en pil som peker nedover. v 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene. 2. Hold inne nedovertasten (j) til den repeterer. Nå vet du hvordan du beveger deg til neste leksjon. 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. Merk: Hvis du blir usikker på noe du har skrevet, trykk for å gå til normalmodus. Skriv deretter kommandoen du ønsket på nytt. Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til å bevege markøren mye raskere når du er blitt vant til det. Helt sant! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.2: AVSLUTTE VIM !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! 1. Trykk -tasten (for å forsikre deg om at du er i normalmodus). 2. Skriv: :q! . Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. 3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne innføringen. Den er: vimtutor 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å avslutte og starte editoren på nytt. MERK: :q! forkaster alle forandringer som du gjorde. I løpet av noen få leksjoner vil du lære hvordan du lagrer forandringene til en fil. 5. Flytt markøren ned til leksjon 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.3: REDIGERING AV TEKST -- SLETTING ** Trykk x for å slette tegnet under markøren. ** 1. Flytt markøren til den første linjen merket med --->. 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som skal slettes. 3. Trykk tasten x for å slette det uønskede tegnet. 4. Repeter punkt 2 til 4 til setningen er lik den som er under. ---> Hessstennnn brrråsnudddde ii gaaata. ---> Hesten bråsnudde i gata. 5. Nå som linjen er korrekt, gå til leksjon 1.4. MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men bruk dem helt til de sitter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING ** Trykk i for å sette inn tekst. ** 1. Flytt markøren til den første linjen som er merket med --->. 2. For å gjøre den første linjen lik den andre, flytt markøren til den står på tegnet ETTER posisjonen der teksten skal settes inn. 3. Trykk i og skriv inn teksten som mangler. 4. Etterhvert som hver feil er fikset, trykk for å returnere til normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. ---> Det er tkst som mnglr . ---> Det er ganske mye tekst som mangler her. 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen nedenfor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL ** Trykk A for å legge til tekst. ** 1. Flytt markøren til den første linjen nedenfor merket --->. Det har ikke noe å si hvor markøren er plassert på den linjen. 2. Trykk A og skriv inn det som skal legges til. 3. Når teksten er lagt til, trykk for å returnere til normalmodusen. 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og 3 for å reparere denne setningen. ---> Det mangler noe tekst p Det mangler noe tekst på denne linjen. ---> Det mangler også litt tek Det mangler også litt tekst på denne linjen. 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 1.6: REDIGERE EN FIL ** Bruk :wq for å lagre en fil og avslutte. ** !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! 2. Skriv denne kommandoen på kommandolinja: vim tutor «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila som du vil redigere. Bruk en fil som kan forandres. 3. Sett inn og slett tekst som du lærte i de foregående leksjonene. 4. Lagre filen med forandringene og avslutt Vim med: :wq 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger. 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 1 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. h (venstre) j (ned) k (opp) l (høyre) 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN 3. For å avslutte Vim, skriv: :q! for å forkaste endringer. ELLER skriv: :wq for å lagre forandringene. 4. For å slette tegnet under markøren, trykk: x 5. For å sette inn eller legge til tekst, trykk: i skriv innsatt tekst sett inn før markøren A skriv tillagt tekst legg til på slutten av linjen MERK: Når du trykker går du til normalmodus eller du avbryter en uønsket og delvis fullført kommando. Nå kan du gå videre til leksjon 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.1: SLETTEKOMMANDOER ** Trykk dw for å slette et ord. ** 1. Trykk for å være sikker på at du er i normalmodus. 2. Flytt markøren til den første linjen nedenfor merket --->. 3. Flytt markøren til begynnelsen av ordet som skal slettes. 4. Trykk dw og ordet vil forsvinne. MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet tegn enn d har du skrevet noe feil; trykk og start på nytt. ---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen. ---> Det er tre ord som ikke hører hjemme i denne setningen. 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå deretter til leksjon 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.2: FLERE SLETTEKOMMANDOER ** Trykk d$ for å slette til slutten av linjen. ** 1. Trykk for å være sikker på at du er i normalmodus. 2. Flytt markøren til linjen nedenfor merket --->. 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum). 4. Trykk d$ for å slette alt til slutten av linjen. ---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. 5. Gå til leksjon 2.3 for å forstå hva som skjer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.3: OM OPERATORER OG BEVEGELSER Mange kommandoer som forandrer teksten er laget ut i fra en operator og en bevegelse. Formatet for en slettekommando med sletteoperatoren d er: d bevegelse Der: d - er sletteoperatoren. bevegelse - er hva operatoren vil opere på (listet nedenfor). En kort liste med bevegelser: w - til starten av det neste ordet, UNNTATT det første tegnet. e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet. $ - til slutten av linjen, INKLUDERT det siste tegnet. Ved å skrive de vil altså alt fra markøren til slutten av ordet bli slettet. MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil markøren flyttes som spesifisert. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** 1. Flytt markøren til starten av linjen markert ---> nedenfor. 2. Skriv 2w for å flytte markøren to ord framover. 3. Skriv 3e for å flytte markøren framover til slutten av det tredje ordet. 4. Skriv 0 (null) for å flytte til starten av linjen. 5. Repeter steg 2 og 3 med forskjellige tall. ---> Dette er en linje med noen ord som du kan bevege deg rundt på. 6. Gå videre til leksjon 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER ** Et tall sammen med en operator repeterer den så mange ganger. ** I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du inn antall før bevegelsen for å slette mer: d nummer bevegelse 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert med --->. 2. Skriv 2dw for å slette de to ordene med store bokstaver. 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende ordene som har store bokstaver. ---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar. MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å bruke bevegelsen uten en operator. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.6: OPERERE PÅ LINJER ** Trykk dd for å slette en hel linje. ** På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at det vil være lettere å rett og slett trykke to d-er for å slette en linje. 1. Flytt markøren til den andre linjen i verset nedenfor. 2. Trykk dd å slette linjen. 3. Flytt deretter til den fjerde linjen. 4. Trykk 2dd for å slette to linjer. ---> 1) Roser er røde, ---> 2) Gjørme er gøy, ---> 3) Fioler er blå, ---> 4) Jeg har en bil, ---> 5) Klokker viser tiden, ---> 6) Druer er søte ---> 7) Og du er likeså. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 2.7: ANGRE-KOMMANDOEN ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den første feilen. 2. Trykk x for å slette det første uønskede tegnet. 3. Trykk så u for å angre den siste utførte kommandoen. 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x . 5. Trykk nå en stor U for å sette linjen tilbake til det den var originalt. 6. Trykk u noen ganger for å angre U og foregående kommandoer. 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen ganger for å gjenopprette kommandoene (omgjøre angrekommandoene). ---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av leksjon 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 2 1. For å slette fra markøren fram til det neste ordet, trykk: dw 2. For å slette fra markøren til slutten av en linje, trykk: d$ 3. For å slette en hel linje, trykk: dd 4. For å repetere en bevegelse, sett et nummer foran: 2w 5. Formatet for en forandringskommando er: operator [nummer] bevegelse der: operator - hva som skal gjøres, f.eks. d for å slette [nummer] - et valgfritt antall for å repetere bevegelsen bevegelse - hva kommandoen skal operere på, eksempelvis w (ord), $ (til slutten av linjen) og så videre. 6. For å gå til starten av en linje, bruk en null: 0 7. For å angre tidligere endringer, skriv: u (liten u) For å angre alle forandringer på en linje, skriv: U (stor U) For å omgjøre angringen, trykk: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.1: «LIM INN»-KOMMANDOEN ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** 1. Flytt markøren til den første linjen med ---> nedenfor. 2. Trykk dd for å slette linjen og lagre den i et Vim-register. 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn. 4. Trykk p for å legge linjen under markøren. 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge. ---> d) Kan du også lære? ---> b) Fioler er blå, ---> c) Intelligens må læres, ---> a) Roser er røde, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.2: «ERSTATT»-KOMMANDOEN ** Trykk rx for å erstatte tegnet under markøren med x. ** 1. Flytt markøren til den første linjen nedenfor merket --->. 2. Flytt markøren så den står oppå den første feilen. 3. Trykk r og deretter tegnet som skal være der. 4. Repeter punkt 2 og 3 til den første linjen er lik den andre. ---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! ---> Da denne linjen ble skrevet, var det noen som trykket feile taster! 5. Gå videre til leksjon 3.2. MERK: Husk at du bør lære ved å BRUKE, ikke pugge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.3: «FORANDRE»-OPERATOREN ** For å forandre til slutten av et ord, trykk ce . ** 1. Flytt markøren til den første linjen nedenfor som er merket --->. 2. Plasser markøren på u i «lubjwr». 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»). 4. Trykk og gå til det neste tegnet som skal forandres. 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre. ---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen. ---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen. Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er: c [nummer] bevegelse 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en linje). 3. Gå til den første linjen nedenfor som er merket --->. 4. Flytt markøren til den første feilen. 5. Skriv c$ og skriv resten av linjen lik den andre og trykk . ---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste. ---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen. MERK: Du kan bruke slettetasten for å rette feil mens du skriver. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 3 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet vil den bli limt inn på linjen under markøren). 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som du vil ha der. 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten av ordet, c$ for å forandre til slutten av linjen. 4. Formatet for «forandre» er: c [nummer] bevegelse Nå kan du gå til neste leksjon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. Trykk G for å gå til en spesifikk linje i filen. ** Merk: Les hele leksjonen før du utfører noen av punktene! 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i filen. Husk linjenummeret for bruk i steg 3. Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette skjer når «ruler»-valget er satt (forklart i leksjon 6). 2. Trykk G for å gå til bunnen av filen. Skriv gg for å gå til begynnelsen av filen. 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg tilbake til linjen du var på da du først trykket CTRL-G. 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.2: SØKEKOMMANDOEN ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og markøren kommer til syne på bunnen av skjermen i likhet med «:»-kommandoene. 2. Skriv «feeeiil» og trykk . Dette er teksten du vil lete etter. 3. For å finne neste forekomst av søkestrengen, trykk n . For å lete etter samme søketeksten i motsatt retning, trykk N . 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / . 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I går framover. ---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil. Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt hvis «wrapscan»-valget er resatt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.3: FINN SAMSVARENDE PARENTESER ** Trykk % for å finne en samsvarende ), ] eller } . ** 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->. 2. Trykk % . 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen. 4. Trykk % for å flytte markøren til den andre samsvarende parentesen. 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør. ---> Dette ( er en testlinje med (, [ ] og { } i den )). Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert antall parenteser! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 4.4: ERSTATT-KOMMANDOEN ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** 1. Flytt markøren til linjen nedenfor som er merket med --->. 2. Skriv :s/deen/den/ . Legg merke til at denne kommandoen bare forandrer den første forekomsten av «deen» på linjen. 3. Skriv :s/deen/den/g . Når g-flagget legges til, betyr dette global erstatning på linjen og erstatter alle forekomster av «deen» på linjen. ---> deen som kan kaste deen tyngste steinen lengst er deen beste 4. For å erstatte alle forekomster av en tekststreng mellom to linjer, skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for linjeområdet erstatningen skal gjøres. Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen. Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og deretter spørre om teksten skal erstattes eller ikke. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 4 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. G går til slutten av filen. nummer G går til det linjenummeret. gg går til den første linjen. 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten. Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten. Etter et søk kan du trykke n for å finne neste forekomst i den samme retningen eller N for å lete i motsatt retning. CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den som samsvarer. 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g Erstatte alle forekomster i en fil: :%s/gammel/ny/g For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av skjermen. Dette lar deg skrive en kommandolinjekommando. 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst ekstern kommando. 3. Som et eksempel, skriv ls etter utropstegnet og trykk . Du vil nå få en liste over filene i katalogen, akkurat som om du hadde kjørt kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis «ls» ikke virker. MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med parametere. MERK: Alle «:»-kommandoer må avsluttes med . Fra dette punktet er det ikke alltid vi nevner det. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.2: MER OM LAGRING AV FILER ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du vet allerede at du må trykke etter dette. 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST . 3. Skriv :w TEST (der TEST er filnavnet du velger). 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av katalogen. Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST», ville filen vært en eksakt kopi av innføringen da du lagret den. 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende operativsystem, eller :!del TEST hvis du bruker MS-DOS. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** 1. Flytt markøren til denne linjen. 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke til at teksten blir markert. 3. Trykk : (kolon). På bunnen av skjermen vil :'<,'> komme til syne. 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller at du ser :'<,'>w TEST før du trykker Enter. 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller :!ls for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for å gjøre det valgte området større eller mindre. Deretter kan du bruke en operator for å gjøre noe med teksten. For eksempel sletter d teksten. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** 1. Plasser markøren like over denne linjen. MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter NED for å se denne leksjonen igjen. 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av leksjon 5.3, originalen og denne versjonen. MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls leser utdataene av ls-kommandoen og legger dem nedenfor markøren. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 5 1. :!kommando utfører en ekstern kommandio. Noen nyttige eksempler er: (MS-DOS) (Unix) :!dir :!ls - List filene i katalogen. :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN . 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen FILNAVN. 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren. 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor markørposisjonen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til innsettingsmodus ** 1. Flytt markøren til linjen nedenfor merket --->. 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i innsettingsmodus. 3. Skriv litt tekst og trykk for å gå ut av innsettingsmodusen. ---> Etter at o er skrevet blir markøren plassert på den tomme linjen. 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O istedenfor en liten o . Prøv dette på linjen nedenfor. ---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.2: «LEGG TIL»-KOMMANDOEN ** Skriv a for å legge til tekst ETTER markøren. ** 1. Flytt markøren til starten av linjen merket ---> nedenfor. 2. Trykk e til markøren er på slutten av «li». 3. Trykk a (liten a) for å legge til tekst ETTER markøren. 4. Fullfør ordet sånn som på linjen nedenfor. Trykk for å gå ut av innsettingsmodusen. 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og 4. ---> Denne li lar deg øve på å leg til tek på en linje. ---> Denne linjen lar deg øve på å legge til tekst på en linje. Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste forskjellen er hvor tegnene blir satt inn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ ** Skriv en stor R for å erstatte mer enn ett tegn. ** 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren til begynnelsen av den første «xxx»-en. 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så det erstatter xxx. 3. Trykk for å gå ut av erstatningsmodusen. Legg merke til at resten av linjen forblir uforandret. 4. Repeter stegene for å erstatte den gjenværende xxx. ---> Ved å legge 123 til xxx får vi xxx. ---> Ved å legge 123 til 456 får vi 579. MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives erstatter et eksisterende tegn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.4: KOPIERE OG LIME INN TEKST ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)». 2. Gå inn i visuell modus med v og flytt markøren til like før «første». 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten. 4. Flytt markøren til slutten av den neste linjen: j$ 5. Trykk p for å lime inn teksten. Trykk deretter: a andre . 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til slutten av den neste linjen med j$ og legg inn teksten der med p . ---> a) Dette er det første valget. b) Merk: Du kan også bruke y som en operator; yw kopierer ett ord. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 6.5: SETT VALG ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** 1. Let etter «ignore» ved å skrive: /ignore Repeter flere ganger ved å trykke n . 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic 3. Søk etter «ignore» igjen ved å trykke n . Legg merke til at både «Ignore» og «IGNORE» blir funnet. 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk \c i uttrykket: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 6 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i innsettingsmodus. Trykk O for å åpne en linje OVER markøren. 2. Skriv a for å sette inn tekst ETTER markøren. Skriv A for å sette inn tekst etter slutten av linjen. 3. Kommandoen e går til slutten av et ord. 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn. 5. Ved å trykke R går du inn i erstatningsmodus helt til trykkes. 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er: «ic» «ignorecase» ignorer store/små bokstaver under søk «is» «incsearch» vis delvise treff for en søketekst «hls» «hlsearch» uthev alle søketreff 7. Legg til «no» foran valget for å slå det av: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 7.1: FÅ HJELP ** Bruk det innebygde hjelpesystemet. ** Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av disse måtene: - Trykk Hjelp-tasten (hvis du har en) - Trykk F1-tasten (hvis du har en) - Skriv :help Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker. Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet Skriv :q for å lukke hjelpevinduet. Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til «:help»-kommandoen. Prøv disse (ikke glem å trykke ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 7.2: LAG ET OPPSTARTSSKRIPT ** Slå på funksjoner i Vim ** Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av som standard. For å begynne å bruke flere funksjoner må du lage en «vimrc»-fil. 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt: :e ~/.vimrc for Unix :e $VIM/_vimrc for MS Windows 2. Les inn eksempelfilen for «vimrc»: :r $VIMRUNTIME/vimrc_example.vim 3. Lagre filen med: :w Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til alle dine foretrukne oppsett i denne «vimrc»-filen. For mer informasjon, skriv :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leksjon 7.3: FULLFØRING ** Kommandolinjefullføring med CTRL-D og ** 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp 2. Se hvilke filer som er i katalogen: :!ls eller :!dir 3. Skriv starten på en kommando: :e 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med «e». 5. Trykk og Vim vil fullføre kommandonavnet til «:edit». 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL 7. Trykk . Vim vil fullføre navnet (hvis det er unikt). MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og . Det er spesielt nyttig for bruk sammen med :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OPPSUMMERING AV LEKSJON 7 1. Skriv :help eller trykk eller for å åpne et hjelpevindu. 2. Skriv :help kommando for å få hjelp om kommando . 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu. 4. Trykk :q for å lukke hjelpevinduet. 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine. 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige fullføringer. Trykk for å bruke en fullføring. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Her slutter innføringen i Vim. Den var ment som en rask oversikt over editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen ved å skrive :help user-manual . For videre lesing og studier, kan denne boken anbefales: «Vim - Vi Improved» av Steve Oualline Utgiver: New Riders Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for nybegynnere. Inneholder mange eksempler og illustrasjoner. Se http://iccf-holland.org/click5.html Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også: «Learning the Vi Editor» av Linda Lamb Utgiver: O'Reilly & Associates Inc. Det er en god bok for å få vite omtrent hva som helst om Vi. Den sjette utgaven inneholder også informasjon om Vim. Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware, Colorado School of Mines med idéer av Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu . Modifisert for Vim av Bram Moolenaar. Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org Id: tutor.no 406 2007-03-18 22:48:36Z sunny ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim: set ts=8 : PK!zeevim80/tutor/tutor.pl.cp1250nu[=============================================================================== = W i t a j w t u t o r i a l u V I M - a - Wersja 1.7. = =============================================================================== Vim to potny edytor, ktry posiada wiele polece, zbyt duo, by wyjani je wszystkie w tym tutorialu. Ten przewodnik ma nauczy Ci posugiwa si wystarczajco wieloma komendami, by mg atwo uywa Vima jako edytora oglnego przeznaczenia. Czas potrzebny na ukoczenie tutoriala to 25 do 30 minut i zaley od tego jak wiele czasu spdzisz na eksperymentowaniu. UWAGA: Polecenia wykonywane w czasie lekcji zmodyfikuj tekst. Zrb wczeniej kopi tego pliku do wicze (jeli zacze komend "vimtutor", to ju pracujesz na kopii). Pamitaj, e przewodnik ten zosta zaprojektowany do nauki poprzez wiczenia. Oznacza to, e musisz wykonywa polecenia, by nauczy si ich prawidowo. Jeli bdziesz jedynie czyta tekst, szybko zapomnisz wiele polece! Teraz upewnij si, e nie masz wcinitego Caps Locka i wciskaj j tak dugo dopki Lekcja 1.1. nie wypeni cakowicie ekranu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.1.: PORUSZANIE SI KURSOREM ** By wykona ruch kursorem, wcinij h, j, k, l jak pokazano. ** ^ k Wskazwka: h jest po lewej < h l > l jest po prawej j j wyglda jak strzaka w d v 1. Poruszaj kursorem dopki nie bdziesz pewien, e pamitasz polecenia. 2. Trzymaj j tak dugo a bdzie si powtarza. Teraz wiesz jak doj do nastpnej lekcji. 3. Uywajc strzaki w d przejd do nastpnej lekcji. Uwaga: Jeli nie jeste pewien czego co wpisae, wcinij , by wrci do trybu Normal. Wtedy powtrz polecenie. Uwaga: Klawisze kursora take powinny dziaa, ale uywajc hjkl bdziesz w stanie porusza si o wiele szybciej, jak si tylko przyzwyczaisz. Naprawd! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.2.: WYCHODZENIE Z VIM-a !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca lekcj !! 1. Wcinij (aby upewni si, e jeste w trybie Normal). 2. Wpisz: :q!. To spowoduje wyjcie z edytora PORZUCAJC wszelkie zmiany, jakie zdye zrobi. Jeli chcesz zapamita zmiany i wyj, wpisz: :wq 3. Kiedy widzisz znak zachty powoki wpisz komend, eby wrci do tutoriala. Czyli: vimtutor 4. Jeli chcesz zapamita polecenia, wykonaj kroki 1. do 3., aby wyj i wrci do edytora. UWAGA: :q! porzuca wszelkie zmiany jakie zrobie. W nastpnych lekcjach dowiesz si jak je zapamitywa. 5. Przenie kursor do lekcji 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.3.: EDYCJA TEKSTU - KASOWANIE ** Wcinij x aby usun znak pod kursorem. ** 1. Przenie kursor do linii poniej oznaczonej --->. 2. By poprawi bdy, naprowad kursor na znak do usunicia. 3. Wcinij x aby usun niechciany znak. 4. Powtarzaj kroki 2. do 4. dopki zdanie nie jest poprawne. ---> Kkrowa prrzeskoczya prrzez ksiiycc. 5. Teraz, kiedy zdanie jest poprawione, przejd do Lekcji 1.4. UWAGA: Ucz si przez wiczenie, nie wkuwanie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.4.: EDYCJA TEKSTU - INSERT (wprowadzanie) ** Wcinij i aby wstawi tekst. ** 1. Przenie kursor do pierwszej linii poniej oznaczonej --->. 2. Aby poprawi pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym, gdzie tekst ma by wstawiony. 3. Wcinij i a nastpnie wpisz konieczne poprawki. 4. Po poprawieniu bdu wcinij , by wrci do trybu Normal. Powtarzaj kroki 2. do 4., aby poprawi cae zdanie. ---> W tej brkje troch . ---> W tej linii brakuje troch tekstu. 5. Kiedy czujesz si swobodnie wstawiajc tekst, przejd do podsumowania poniej. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.5.: EDYCJA TEKSTU - APPENDING (dodawanie) ** Wcinij A by doda tekst. ** 1. Przenie kursor do pierwszej linii poniej oznaczonej --->. Nie ma znaczenia, ktry to bdzie znak. 2. Wcinij A i wpisz odpowiednie dodatki. 3. Kiedy tekst zosta dodany, wcinij i wr do trybu Normalnego. 4. Przenie kursor do drugiej linii oznaczonej ---> i powtrz kroki 2. i 3., aby poprawi zdanie. ---> Brakuje tu tro Brakuje tu troch tekstu. ---> Tu te troch bra Tu te troch brakuje. 5. Kiedy ju utrwalie wiczenie, przejd do lekcji 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.6.: EDYCJA PLIKU ** Uyj :wq aby zapisa plik i wyj. ** !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj ca lekcj !! 1. Zakocz tutorial tak jak w lekcji 1.2.: :q! lub, jeli masz dostp do innego terminala, wykonaj kolejne kroki tam. 2. W powoce wydaj polecenie: vim tutor "vim" jest poleceniem uruchamiajcym edytor Vim. 'tutor' to nazwa pliku, jaki chcesz edytowa. Uyj pliku, ktry moe zosta zmieniony. 3. Dodaj i usu tekst tak, jak si nauczye w poprzednich lekcjach. 4. Zapisz plik ze zmianami i opu Vima: :wq 5. Jeli zakoczye vimtutor w kroku 1., uruchom go ponownie i przejd do podsumowania poniej. 6. Po przeczytaniu wszystkich krokw i ich zrozumieniu: wykonaj je. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 1. PODSUMOWANIE 1. Poruszasz kursorem uywajc "strzaek" i klawiszy hjkl . h (w lewo) j (w d) k (do gry) l (w prawo) 2. By wej do Vima, (z powoki) wpisz: vim NAZWA_PLIKU 3. By wyj z Vima, wpisz: :q! by usun wszystkie zmiany. LUB: :wq by zmiany zachowa. 4. By usun znak pod kursorem, wcinij: x 5. By wstawi tekst przed kursorem lub doda: i wpisz tekst wstawi przed kursorem A wpisz tekst doda na kocu linii UWAGA: Wcinicie przeniesie Ci z powrotem do trybu Normal lub odwoa niechciane lub czciowo wprowadzone polecenia. Teraz moemy kontynuowa i przej do Lekcji 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.1.: POLECENIE DELETE (usuwanie) ** Wpisz dw by usun wyraz. ** 1. Wcinij , by upewni si, e jeste w trybie Normal. 2. Przenie kursor do linii poniej oznaczonej --->. 3. Przesu kursor na pocztek wyrazu, ktry chcesz usun. 4. Wpisz dw by usun wyraz. UWAGA: Litera d pojawi si na dole ekranu. Vim czeka na wpisanie w . Jeli zobaczysz inny znak, oznacza to, e wpisae co le; wcinij i zacznij od pocztku. ---> Jest tu par papier wyrazw, ktre kamie nie nale do noyce tego zdania. 5. Powtarzaj kroki 3. i 4. dopki zdanie nie bdzie poprawne, potem przejd do Lekcji 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.2.: WICEJ POLECE USUWAJCYCH ** Wpisz d$ aby usun tekst do koca linii. ** 1. Wcinij aby si upewni, e jeste w trybie Normal. 2. Przenie kursor do linii poniej oznaczonej --->. 3. Przenie kursor do koca poprawnego zdania (PO pierwszej . ). 4. Wpisz d$ aby usun reszt linii. ---> Kto wpisa koniec tego zdania dwukrotnie. zdania dwukrotnie. 5. Przejd do Lekcji 2.3., by zrozumie co si stao. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.3.: O OPERATORACH I RUCHACH Wiele polece zmieniajcych tekst jest zoonych z operatora i ruchu. Format dla polecenia usuwajcego z operatorem d jest nastpujcy: d ruch gdzie: d - operator usuwania. ruch - na czym polecenie bdzie wykonywane (lista poniej). Krtka lista ruchw: w - do pocztku nastpnego wyrazu WYCZAJC pierwszy znak. e - do koca biecego wyrazu, WCZAJC ostatni znak. $ - do koca linii, WCZAJC ostatni znak. W ten sposb wpisanie de usunie znaki od kursora do koca wyrazu. UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor tak, jak to okrelono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.4.: UYCIE MNONIKA DLA RUCHU ** Wpisanie liczby przed ruchem powtarza ruch odpowiedni ilo razy. ** 1. Przenie kursor na pocztek linii poniej zaznaczonej --->. 2. Wpisz 2w aby przenie kursor o dwa wyrazy do przodu. 3. Wpisz 3e aby przenie kursor do koca trzeciego wyrazu w przd. 4. Wpisz 0 (zero), aby przenie kursor na pocztek linii. 5. Powtrz kroki 2. i 3. z innymi liczbami. ---> To jest zwyky wiersz z wyrazami, po ktrych moesz si porusza. 6. Przejd do lekcji 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.5.: UYCIE MNONIKA, BY WICEJ USUN ** Wpisanie liczby z operatorem powtarza go odpowiedni ilo razy. ** W wyej wspomnianej kombinacji operatora usuwania i ruchu podaj mnonik przed ruchem, by wicej usun: d liczba ruch 1. Przenie kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->. 2. Wpisz 2dw aby usun dwa wyrazy KAPITALIKAMI. 3. Powtarzaj kroki 1. i 2. z innymi mnonikami, aby usun kolejne wyrazy KAPITALIKAMI jednym poleceniem ---> ta ASD WE linia QWE ASDF ZXCV FG wyrazw zostaa ERT FGH CF oczyszczona. UWAGA: Mnonik pomidzy operatorem d i ruchem dziaa podobnie do ruchu bez operatora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.6.: OPEROWANIE NA LINIACH ** Wpisz dd aby usun ca lini. ** Z powodu czstoci usuwania caych linii, projektanci Vi zdecydowali, e bdzie atwiej wpisa dwa razy d aby usun lini. 1. Przenie kursor do drugiego zdania z wierszyka poniej. 2. Wpisz dd aby usun wiersz. 3. Teraz przenie si do czwartego wiersza. 4. Wpisz 2dd aby usun dwa wiersze. ---> 1) Re s czerwone, ---> 2) Boto jest fajne, ---> 3) Fioki s niebieskie, ---> 4) Mam samochd, ---> 5) Zegar podaje czas, ---> 6) Cukier jest sodki, ---> 7) I ty te. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.7.: POLECENIE UNDO (cofnij) ** Wcinij u aby cofn skutki ostatniego polecenia. U za, by cofn skutki dla caej linii. ** 1. Przenie kursor do zdania poniej oznaczonego ---> i umie go na pierwszym bdzie. 2. Wpisz x aby usun pierwszy niechciany znak. 3. Teraz wcinij u aby cofn skutki ostatniego polecenia. 4. Tym razem popraw wszystkie bdy w linii uywajc polecenia x . 5. Teraz wcinij wielkie U aby przywrci lini do oryginalnego stanu. 6. Teraz wcinij u kilka razy, by cofn U i poprzednie polecenia. 7. Teraz wpisz CTRL-R (trzymaj rwnoczenie wcinite klawisze CTRL i R) kilka razy, by cofn cofnicia. ---> Poopraw bdyyy w teej liniii i zaamiie je prrzez coofnij. 8. To s bardzo poyteczne polecenia. Przejd teraz do podsumowania Lekcji 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 2. PODSUMOWANIE 1. By usun znaki od kursora do nastpnego wyrazu, wpisz: dw 2. By usun znaki od kursora do koca linii, wpisz: d$ 3. By usun ca lini: dd 4. By powtrzy ruch, poprzed go liczb: 2w 5. Format polecenia zmiany to: operator [liczba] ruch gdzie: operator - to, co trzeba zrobi (np. d dla usuwania) [liczba] - opcjonalne, ile razy powtrzy ruch ruch - przenosi nad tekstem do operowania, takim jak w (wyraz), $ (do koca linii) etc. 6. By przej do pocztku linii, uyj zera: 0 7. By cofn poprzednie polecenie, wpisz: u (mae u) By cofn wszystkie zmiany w linii, wpisz: U (wielkie U) By cofn cofnicie, wpisz: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.1.: POLECENIE PUT (wstaw) ** Wpisz p by wstawi ostatnie usunicia za kursorem. ** 1. Przenie kursor do pierwszej linii ---> poniej. 2. Wpisz dd aby usun lini i przechowa j w rejestrze Vima. 3. Przenie kursor do linii c), POWYEJ tej, gdzie usunita linia powinna si znajdowa. 4. Wcinij p by wstawi lini poniej kursora. 5. Powtarzaj kroki 2. do 4. a znajd si w odpowiednim porzdku. ---> d) Jak dwa anioki. ---> b) Na dole fioki, ---> c) A my si kochamy, ---> a) Na grze re, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.2.: POLECENIE REPLACE (zastp) ** Wpisz rx aby zastpi znak pod kursorem na x . ** 1. Przenie kursor do pierwszej linii poniej oznaczonej ---> 2. Ustaw kursor na pierwszym bdzie. 3. Wpisz r a potem znak jaki powinien go zastpi. 4. Powtarzaj kroki 2. i 3. dopki pierwsza linia nie bdzie taka, jak druga. ---> Kjedy ten wiersz bi wstkiwany, kto wcizn per zych klawirzy! ---> Kiedy ten wiersz by wstukiwany, kto wcisn par zych klawiszy! 5. Teraz czas na Lekcj 3.3. UWAGA: Pamitaj, by uczy si wiczc, a nie pamiciowo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.3.: OPERATOR CHANGE (zmie) ** By zmieni do koca wyrazu, wpisz ce . ** 1. Przenie kursor do pierwszej linii poniej oznaczonej --->. 2. Umie kursor na u w lunos. 3. Wpisz ce i popraw wyraz (w tym wypadku wstaw inia ). 4. Wcinij i przejd do nastpnej planowanej zmiany. 5. Powtarzaj kroki 3. i 4. dopki pierwsze zdanie nie bdzie takie same, jak drugie. ---> Ta lunos ma pire sw, ktre tina zbnic uifajonc pcmazu zmie. ---> Ta linia ma par sw, ktre trzeba zmieni uywajc polecenia zmie. Zauwa, e ce nie tylko zamienia wyraz, ale take zmienia tryb na Insert (wprowadzanie). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.4.: WICEJ ZMIAN UYWAJC c ** Polecenie change uywa takich samych ruchw, jak delete. ** 1. Operator change dziaa tak samo, jak delete. Format wyglda tak: c [liczba] ruch 2. Ruchy s take takie same, np.: w (wyraz), $ (koniec linii) etc. 3. Przenie si do pierwszej linii poniej oznaczonej ---> 4. Ustaw kursor na pierwszym bdzie. 5. Wpisz c$ , popraw koniec wiersza i wcinij . ---> Koniec tego wiersza musi by poprawiony, aby wyglda tak, jak drugi. ---> Koniec tego wiersza musi by poprawiony uywajc polecenia c$ . UWAGA: Moesz uywa aby poprawia bdy w czasie pisania. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 3. PODSUMOWANIE 1. Aby wstawi tekst, ktry zosta wczeniej usunity wcinij p . To polecenie wstawia skasowany tekst PO kursorze (jeli caa linia zostaa usunita, zostanie ona umieszczona w linii poniej kursora). 2. By zamieni znak pod kursorem, wcinij r a potem znak, ktry ma zastpi oryginalny. 3. Operator change pozwala Ci na zastpienie od kursora do miejsca, gdzie zabraby Ci ruch. Np. wpisz ce aby zamieni tekst od kursora do koca wyrazu, c$ aby zmieni tekst do koca linii. 4. Format do polecenia change (zmie): c [liczba] obiekt Teraz przejd do nastpnej lekcji. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 4.1.: POOENIE KURSORA ORAZ STATUS PLIKU ** Nacinij CTRL-G aby zobaczy swoje pooenie w pliku i status pliku. Nacinij G aby przej do linii w pliku. ** UWAGA: Przeczytaj ca lekcj zanim wykonasz jakie polecenia!!! 1. Przytrzymaj klawisz CTRL i wcinij g . Uywamy notacji CTRL-G. Na dole strony pojawi si pasek statusu z nazw pliku i pozycj w pliku. Zapamitaj numer linii dla potrzeb kroku 3. UWAGA: Moesz te zobaczy pozycj kursora w prawym, dolnym rogu ekranu. Dzieje si tak kiedy ustawiona jest opcja 'ruler' (wicej w lekcji 6.). 2. Wcinij G aby przej na koniec pliku. Wcinij gg aby przej do pocztku pliku. 3. Wpisz numer linii, w ktrej bye a potem G . To przeniesie Ci z powrotem do linii, w ktrej bye kiedy wcisne CTRL-G. 4. Jeli czujesz si wystarczajco pewnie, wykonaj kroki 1-3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 4.2.: POLECENIE SZUKAJ ** Wpisz / a nastpnie wyraenie, aby je znale. ** 1. W trybie Normal wpisz / . Zauwa, e znak ten oraz kursor pojawi si na dole ekranu tak samo, jak polecenie : . 2. Teraz wpisz bond . To jest sowo, ktrego chcesz szuka. 3. By szuka tej samej frazy ponownie, po prostu wcinij n . Aby szuka tej frazy w przeciwnym, kierunku wcinij N . 4. Jeli chcesz szuka frazy do tyu, uyj polecenia ? zamiast / . 5. Aby wrci gdzie bye, wcinij CTRL-O. Powtarzaj, by wrci dalej. CTRL-I idzie do przodu. Uwaga: 'bond' to nie jest metoda, by przeliterowa bd; 'bond' to bd. Uwaga: Kiedy szukanie osignie koniec pliku, bdzie kontynuowane od pocztku o ile opcja 'wrapscan' nie zostaa przestawiona. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 4.3.: W POSZUKIWANIU PARUJCYCH NAWIASW ** Wpisz % by znale parujcy ), ], lub } . ** 1. Umie kursor na ktrym z (, [, lub { w linii poniej oznaczonej --->. 2. Teraz wpisz znak % . 3. Kursor powinien si znale na parujcym nawiasie. 4. Wcinij % aby przenie kursor z powrotem do parujcego nawiasu. 5. Przenie kursor do innego (,),[,],{ lub } i zobacz co robi % . ---> To ( jest linia testowa z (, [, ] i {, } . )) Uwaga: Ta funkcja jest bardzo uyteczna w debuggowaniu programu z niesparowanymi nawiasami! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 4.4.: POLECENIE SUBSTITUTE (zamiana) ** Wpisz :s/stary/nowy/g aby zamieni 'stary' na 'nowy'. ** 1. Przenie kursor do linii poniej oznaczonej --->. 2. Wpisz :s/czaas/czas . Zauwa, e to polecenie zmienia tylko pierwsze wystpienie 'czaas' w linii. 3. Teraz wpisz :s/czaas/czas/g . Dodane g oznacza zamian (substytucj) globalnie w caej linii. Zmienia wszystkie wystpienia 'czaas' w linii. ---> Najlepszy czaas na zobaczenie najadniejszych kwiatw to czaas wiosny. 4. Aby zmieni wszystkie wystpienia acucha znakw pomidzy dwoma liniami, wpisz: :#,#s/stare/nowe/g gdzie #,# s numerami linii ograniczajcych region, gdzie ma nastpi zamiana. wpisz :%s/stare/nowe/g by zmieni wszystkie wystpienia w caym pliku. wpisz :%s/stare/nowe/gc by zmieni wszystkie wystpienia w caym pliku, proszc o potwierdzenie za kadym razem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 4. PODSUMOWANIE 1. CTRL-G pokae Twoj pozycj w pliku i status pliku. SHIFT-G przenosi Ci do koca pliku. G przenosi do koca pliku. liczba G przenosi do linii [liczba]. gg przenosi do pierwszej linii. 2. Wpisanie / a nastpnie acucha znakw szuka acucha DO PRZODU. Wpisanie ? a nastpnie acucha znakw szuka acucha DO TYU. Po wyszukiwaniu wcinij n by znale nastpne wystpienie szukanej frazy w tym samym kierunku lub N by szuka w kierunku przeciwnym. CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych. 3. Wpisanie % gdy kursor znajduje si na (,),[,],{, lub } lokalizuje parujcy znak. 4. By zamieni pierwszy stary na nowy w linii, wpisz :s/stary/nowy By zamieni wszystkie stary na nowy w linii, wpisz :s/stary/nowy/g By zamieni frazy pomidzy dwoma liniami # wpisz :#,#s/stary/nowy/g By zamieni wszystkie wystpienia w pliku, wpisz :%s/stary/nowy/g By Vim prosi Ci o potwierdzenie, dodaj 'c' :%s/stary/nowy/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.1.: JAK WYKONA POLECENIA ZEWNTRZNE? ** Wpisz :! a nastpnie zewntrzne polecenie, by je wykona. ** 1. Wpisz znajome polecenie : by ustawi kursor na dole ekranu. To pozwala na wprowadzenie komendy linii polece. 2. Teraz wstaw ! (wykrzyknik). To umoliwi Ci wykonanie dowolnego zewntrznego polecenia powoki. 3. Jako przykad wpisz ls za ! a nastpnie wcinij . To polecenie pokae spis plikw w Twoim katalogu, tak jakby by przy znaku zachty powoki. Moesz te uy :!dir jeli ls nie dziaa. Uwaga: W ten sposb mona wykona wszystkie polecenia powoki. Uwaga: Wszystkie polecenia : musz by zakoczone . Od tego momentu nie zawsze bdziemy o tym wspomina. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.2.: WICEJ O ZAPISYWANIU PLIKW ** By zachowa zmiany w tekcie, wpisz :w NAZWA_PLIKU . ** 1. Wpisz :!dir lub :!ls by zobaczy spis plikw w katalogu. Ju wiesz, e musisz po tym wcisn . 2. Wybierz nazw pliku, jaka jeszcze nie istnieje, np. TEST. 3. Teraz wpisz: :w TEST (gdzie TEST jest nazw pliku jak wybrae.) 4. To polecenie zapamita cay plik (Vim Tutor) pod nazw TEST. By to sprawdzi, wpisz :!dir lub :!ls eby znowu zobaczy list plikw. Uwaga: Zauwa, e gdyby teraz wyszed z Vima, a nastpnie wszed ponownie poleceniem vim TEST , plik byby dokadn kopi tutoriala, kiedy go zapisywae. 5. Teraz usu plik wpisujc (MS-DOS): :!del TEST lub (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU ** By zachowa cz pliku, wpisz v ruch :w NAZWA_PLIKU ** 1. Przenie kursor do tego wiersza. 2. Wcinij v i przenie kursor do punktu 5. Zauwa, e tekst zosta podwietlony. 3. Wcinij znak : . Na dole ekranu pojawi si :'<,'> . 4. Wpisz w TEST , gdzie TEST to nazwa pliku, ktry jeszcze nie istnieje. Upewnij si, e widzisz :'<,'>w TEST zanim wciniesz Enter. 5. Vim zapisze wybrane linie do pliku TEST. Uyj :!dir lub :!ls , eby to zobaczy. Jeszcze go nie usuwaj! Uyjemy go w nastpnej lekcji. UWAGA: Wcinicie v zaczyna tryb Wizualny. Moesz porusza kursorem, by zmieni rozmiary zaznaczenia. Moesz te uy operatora, by zrobi co z tekstem. Na przykad d usuwa tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.4.: WSTAWIANIE I CZENIE PLIKW ** By wstawi zawarto pliku, wpisz :r NAZWA_PLIKU ** 1. Umie kursor tu powyej tej linii. UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejd do DOU, by zobaczy ponownie t lekcj. 2. Teraz wczytaj plik TEST uywajc polecenia :r TEST , gdzie TEST jest nazw pliku. Wczytany plik jest umieszczony poniej linii z kursorem. 3. By sprawdzi czy plik zosta wczytany, cofnij kursor i zobacz, e teraz s dwie kopie Lekcji 5.3., orygina i kopia z pliku. UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad :r !ls wczytuje wyjcie polecenia ls i umieszcza je pod poniej kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 5. PODSUMOWANIE 1. :!polecenie wykonuje polecenie zewntrzne. Uytecznymi przykadami s: :!dir - pokazuje spis plikw w katalogu. :!rm NAZWA_PLIKU - usuwa plik NAZWA_PLIKU. 2. :w NAZWA_PLIKU zapisuje obecny plik Vima na dysk z nazw NAZWA_PLIKU. 3. v ruch :w NAZWA_PLIKU zapisuje Wizualnie wybrane linie do NAZWA_PLIKU. 4. :r NAZWA_PLIKU wczytuje z dysku plik NAZWA_PLIKU i wstawia go do biecego pliku poniej kursora. 5. :r !dir wczytuje wyjcie polecenia dir i umieszcza je poniej kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.1.: POLECENIE OPEN (otwrz) ** Wpisz o by otworzy lini poniej kursora i przenie si do trybu Insert (wprowadzanie). ** 1. Przenie kursor do linii poniej oznaczonej --->. 2. Wpisz o (mae), by otworzy lini PONIEJ kursora i przenie si do trybu Insert (wprowadzanie). 3. Wpisz troch tekstu i wcinij by wyj z trybu Insert (wprowadzanie). ---> Po wciniciu o kursor znajdzie si w otwartej linii w trybie Insert. 4. By otworzy lini POWYEJ kursora, wcinij wielkie O zamiast maego o . Wyprbuj to na linii poniej. ---> Otwrz lini powyej wciskajc SHIFT-O gdy kursor bdzie na tej linii. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.2.: POLECENIE APPEND (dodaj) ** Wpisz a by doda tekst ZA kursorem. ** 1. Przenie kursor do pocztku pierwszej linii poniej oznaczonej ---> 2. Wciskaj e dopki kursor nie bdzie na kocu li . 3. Wpisz a (mae), aby doda tekst ZA znakiem pod kursorem. 4. Dokocz wyraz tak, jak w linii poniej. Wcinij aby opuci tryb Insert. 5. Uyj e by przej do kolejnego niedokoczonego wyrazu i powtarzaj kroki 3. i 4. ---> Ta li poz Ci wi dodaw teks do ko lin ---> Ta linia pozwoli Ci wiczy dodawanie tekstu do koca linii. Uwaga: a , i oraz A prowadz do trybu Insert, jedyn rnic jest miejsce, gdzie nowe znaki bd dodawane. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.3.: INNA WERSJA REPLACE (zamiana) ** Wpisz wielkie R by zamieni wicej ni jeden znak. ** 1. Przenie kursor do pierwszej linii poniej oznaczonej --->. Przenie kursor do pierwszego xxx . 2. Wcinij R i wpisz numer poniej w drugiej linii, tak, e zastpi on xxx. 3. Wcinij by opuci tryb Replace. Zauwa, e reszta linii pozostaje niezmieniona. 5. Powtarzaj kroki by wymieni wszystkie xxx. ---> Dodanie 123 do xxx daje xxx. ---> Dodanie 123 do 456 daje 579. UWAGA: Tryb Replace jest jak tryb Insert, ale kady znak usuwa istniejcy znak. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.4.: KOPIOWANIE I WKLEJANIE TEKSTU ** uyj operatora y aby skopiowa tekst i p aby go wklei ** 1. Przejd do linii oznaczonej ---> i umie kursor za "a)". 2. Wejd w tryb Wizualny v i przenie kursor na pocztek "pierwszy". 3. Wcinij y aby kopiowa (yankowa) podwietlony tekst. 4. Przenie kursor do koca nastpnej linii: j$ 5. Wcinij p aby wklei (wpakowa) tekst. Dodaj: a drugi . 6. Uyj trybu Wizualnego, aby wybra " element.", yankuj go y , przejd do koca nastpnej linii j$ i upakuj tam tekst z p . ---> a) to jest pierwszy element. b) Uwaga: moesz uy y jako operatora; yw kopiuje jeden wyraz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.5.: USTAWIANIE OPCJI ** Ustawianie opcji tak, by szukaj lub substytucja ignoroway wielko liter ** 1. Szukaj 'ignore' wpisujc: /ignore Powtrz szukanie kilka razy naciskajc klawisz n . 2. Ustaw opcj 'ic' (Ignore case -- ignoruj wielko liter) poprzez wpisanie: :set ic 3. Teraz szukaj 'ignore' ponownie wciskajc: n Zauwa, e Ignore i IGNORE take s teraz znalezione. 4. Ustaw opcje 'hlsearch' i 'incsearch': :set hls is 5. Teraz wprowad polecenie szukaj ponownie i zobacz co si zdarzy: /ignore 6. Aby wyczy ignorowanie wielkoci liter: :set noic Uwaga: Aby usun podwietlanie dopasowa, wpisz: :nohlsearch Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 6. PODSUMOWANIE 1. Wpisanie o otwiera lini PONIEJ kursora. Wpisanie O otwiera lini POWYEJ kursora. 2. Wpisanie a wstawia tekst ZA znakiem, na ktrym jest kursor. Wpisanie A dodaje tekst na kocu linii. 3. Polecenie e przenosi do koca wyrazu. 4. Operator y yankuje (kopiuje) tekst, p pakuje (wkleja) go. 5. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopki nie zostanie wcinity . 6. Wpisanie ":set xxx" ustawia opcj "xxx". Niektre opcje: 'ic' 'ignorecase' ignoruj wielko znakw 'is' 'incsearch' poka czciowe dopasowania 'hls' 'hlsearch' podwietl wszystkie dopasowania Moesz uy zarwno dugiej, jak i krtkiej formy. 7. Dodaj "no", aby wyczy opcj: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 7.1. JAK UZYSKA POMOC? ** Uycie systemu pomocy on-line ** Vim posiada bardzo dobry system pomocy on-line. By zacz, sprbuj jednej z trzech moliwoci: - wcinij klawisz (jeli taki masz) - wcinij klawisz (jeli taki masz) - wpisz :help Przeczytaj tekst w oknie pomocy, aby dowiedzie si jak dziaa pomoc. wpisz CTRL-W CTRL-W aby przeskoczy z jednego okna do innego wpisz :q aby zamkn okno pomocy. Moesz te znale pomoc na kady temat podajc argument polecenia ":help". Sprbuj tych (nie zapomnij wcisn ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 7.2. TWORZENIE SKRYPTU STARTOWEGO ** Wcz moliwoci Vima ** Vim ma o wiele wicej moliwoci ni Vi, ale wikszo z nich jest domylnie wyczona. Jeli chcesz wczy te moliwoci na starcie musisz utworzy plik "vimrc". 1. Pocztek edycji pliku "vimrc" zaley od Twojego systemu: :edit ~/.vimrc dla Uniksa :edit $VIM/_vimrc dla MS-Windows 2. Teraz wczytaj przykadowy plik "vimrc": :read $VIMRUNTIME/vimrc_example.vim 3. Zapisz plik: :w Nastpnym razem, gdy zaczniesz prac w Vimie bdzie on uywa podwietlania skadni. Moesz doda wszystkie swoje ulubione ustawienia do tego pliku "vimrc". Aby uzyska wicej informacji, wpisz :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 7.3.: UZUPENIANIE ** Uzupenianie linii polece z CTRL-D i ** 1. Upewnij si, e Vim nie jest w trybie kompatybilnoci: :set nocp 2. Zerknij, jakie pliki s w biecym katalogu: :!ls lub :!dir 3. Wpisz pocztek polecenia: :e 4. Wcinij CTRL-D i Vim pokae list polece, jakie zaczynaj si na "e". 5. Wcinij i Vim uzupeni polecenie do ":edit". 6. Dodaj spacj i zacznij wpisywa nazw istniejcego pliku: :edit FIL 7. Wcinij . Vim uzupeni nazw (jeli jest niepowtarzalna). UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i . Uyteczne zwaszcza przy :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 7. PODSUMOWANIE 1. Wpisz :help albo wcinij lub aby otworzy okno pomocy. 2. Wpisz :help cmd aby uzyska pomoc o cmd . 3. Wpisz CTRL-W CTRL-W aby przeskoczy do innego okna. 4. Wpisz :q aby zamkn okno pomocy. 5. Utwrz plik startowy vimrc aby zachowa wybrane ustawienia. 6. Po poleceniu : , wcinij CTRL-D aby zobaczy moliwe uzupenienia. Wcinij aby uy jednego z nich. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tutaj si koczy tutorial Vima. Zosta on pomylany tak, aby da krtki przegld jego moliwoci, wystarczajcy by mg go uywa. Jest on daleki od kompletnoci, poniewa Vim ma o wiele, wiele wicej polece. Dla dalszej nauki rekomendujemy ksik: Vim - Vi Improved - autor Steve Oualline Wydawca: New Riders Pierwsza ksika cakowicie powicona Vimowi. Uyteczna zwaszcza dla pocztkujcych. Zawiera wiele przykadw i ilustracji. Zobacz http://iccf-holland.org./click5.html Starsza pozycja i bardziej o Vi ni o Vimie, ale take warta polecenia: Learning the Vi Editor - autor Linda Lamb Wydawca: O'Reilly & Associates Inc. To dobra ksika, by dowiedzie si niemal wszystkiego, co chciaby zrobi z Vi. Szsta edycja zawiera te informacje o Vimie. Po polsku wydano: Edytor vi. Leksykon kieszonkowy - autor Arnold Robbins Wydawca: Helion 2001 (O'Reilly). ISBN: 83-7197-472-8 http://helion.pl/ksiazki/vilek.htm Jest to ksieczka zawierajca spis polece vi i jego najwaniejszych klonw (midzy innymi Vima). Edytor vi - autorzy Linda Lamb i Arnold Robbins Wydawca: Helion 2001 (O'Reilly) - wg 6. ang. wydania ISBN: 83-7197-539-2 http://helion.pl/ksiazki/viedyt.htm Rozszerzona wersja Learning the Vi Editor w polskim tumaczeniu. Ten tutorial zosta napisany przez Michaela C. Pierce'a i Roberta K. Ware'a, Colorado School of Mines korzystajc z pomocy Charlesa Smitha, Colorado State University. E-mail: bware@mines.colorado.edu. Zmodyfikowane dla Vima przez Brama Moolenaara. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Przetumaczone przez Mikoaja Machowskiego, Sierpie 2001, rev. Marzec 2002 2nd rev. Wrzesie 2004 3rd rev. Marzec 2006 4th rev. Grudzie 2008 Wszelkie uwagi prosz kierowa na: mikmach@wp.pl PK! Y%vim80/tutor/tutor.sr.utf-8nu[=============================================================================== = D o b r o d o š l i u VIM p r i r u č n i k - Verzija 1.7 = =============================================================================== Vim je moćan editor sa mnogo komandi, suviše da bismo ih ovde sve opisali. Priručnik je zamišljen da opiše dovoljno komandi da biste mogli lagodno da koristite Vim kao editor opšte namene. Približno vreme potrebno za uspešan završetak priručnika je između 25 i 30 minuta, u zavisnosti od vremena potrošenog na vežbu. UPOZORENJE: Komande u lekcijama će menjati tekst. Iskopirajte ovaj fajl i vežbajte na kopiji (ako ste pokrenuli "vimtutor" ovo je već kopija). Važno je upamtiti da je ovaj priručnik zamišljen za aktivnu vežbu. To znači da morate upotrebljavati komande o kojima čitate da biste ih naučili. Ako samo čitate tekst, zaboravićete komande! Ako je Caps Lock uključen ISKLJUČITE ga. Pritisnite taster j dovoljno puta da lekcija 1.1 cela stane na ekran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.1: POMERANJE KURSORA ** Za pomeranje kursora, pritiskajte tastere h,j,k,l kako je prikazano ** ^ k Savet: h je s leve strane i pomera kursor u levo. < h l > l je s desne strane i pomera kursor u desno. j j izgleda kao strelica naniže. v 1. Pomerajte kursor po ekranu dok se ne naviknete na komande. 2. Pritisnite taster (j) dok ne počne da se ponavlja. Sada znate kako da dođete do naredne lekcije. 3. Koristeći taster j pređite na lekciju 1.2. NAPOMENA: Ako niste sigurni šta ste zapravo pritisnuli, pritisnite za prelazak u Normal mod i pokušajte ponovo. NAPOMENA: Strelice takođe pomeraju kursor, ali korišćenje tastera hjkl je znatno brže, kad se jednom naviknete na njih. Zaista! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.2: IZLAZAK IZ VIM-a !! UPOZORENJE: Pre izvođenja bilo kog koraka, pročitajte celu lekciju!! 1. Pritisnite (editor je sada u Normal modu). 2. Otkucajte: :q! . Ovime se izlazi iz editora, sa GUBITKOM svih izmena. 3. Kada se pojavi komandni prompt, unesite komandu koja je pokrenula ovaj priručnik: vimtutor 4. Ako ste upamtili ove korake, izvršite ih redom od 1 do 3 da biste izašli iz editora i ponovo ga pokrenuli. NAPOMENA: :q! poništava sve izmene koje ste napravili. U narednim lekcijama naučićete kako da sačuvate izmene. 5. Pomerite kursor na lekciju 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.3: IZMENA TEKSTA - BRISANJE ** Pritisnite x za brisanje znaka pod kursorom. ** 1. Pomerite kursor na red označen sa --->. 2. Da biste ispravili greške, pomerajte kursor dok se ne nađe na slovu koje treba izbrisati. 3. Pritisnite taster x da izbrišete neželjeno slovo. 4. Ponavljajte korake od 2 do 4 dok ne ispravite sve greške. ---> RRRibaa riibi grizzze rrreepp. 5. Kad ispravite red, pređite na lekciju 1.4. NAPOMENA: Dok koristite priručnik, nemojte učiti komande napamet, već vežbajte njihovu primenu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.4: IZMENA TEKSTA - UBACIVANJE ** Pritisnite i za ubacivanje teksta ispred kursora. ** 1. Pomerite kursor na prvi sledeći red označen sa --->. 2. Da biste tekst prvog reda izjednačili s tekstom drugog, namestite kursor na prvi znak POSLE kog ćete ubaciti potreban tekst. 3. Pritisnite i pa unesite potrebne dopune. 4. Po ispravci svake greške pritisnite da se vratite u Normal mod. Ponovite korake od 2 do 4 da biste ispravili celu rečenicu. ---> Do teka neoje v red. ---> Deo teksta nedostaje iz ovog reda. 5. Pređite na sledeću lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.5: IZMENA TEKSTA - DODAVANJE ** Pritisnite A za dodavanje teksta. ** 1. Pomerite kursor na prvi sledeći red označen sa --->. Nije važno gde se nalazi kursor u tom redu. 2. Pritisnite A i unesite dodatni tekst. 3. Pošto ste dodali tekst, pritisnite za povratak u Normal mod. 4. Pomerite kursor na drugi red označen sa ---> i ponavljajte korake 2 i 3 dok ne ispravite tekst. ---> Deo teksta nedostaje u Deo teksta nedostaje u ovom redu. ---> Deo teksta nedostaje Deo teksta nedostaje i ovde. 5. Pređite na lekciju 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.6: IZMENA FAJLA ** Upotrebite :wq za snimanje teksta i izlazak iz editora. ** !! UPOZORENJE: Pre izvođenja bilo kog koraka, pročitajte celu lekciju!! 1. Izađite iz editora kao u lekciji 1.2: :q! 2. Na komandnom promptu unesite sledeću komandu: vim tutor 'vim' je komanda za pokretanja Vim editora, 'tutor' je ime fajla koji želite da menjate. Koristite fajl koji imate pravo da menjate. 3. Ubacujte i brišite tekst kao u prethodnim lekcijama. 4. Snimite izmenjeni tekst i izađite iz Vim-a: :wq 5. Ponovo pokrenite vimtutor i pročitajte rezime koji sledi. 6. Pošto pročitate korake iznad i u potpunosti ih razumete: izvršite ih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 1 1. Kursor se pomera strelicama ili pomoću tastera hjkl . h (levo) j (dole) k (gore) l (desno) 2. Za pokretanje Vim-a iz shell-a: vim IME_FAJLA 3. Izlaz: :q! sve promene su izgubljene. ILI: :wq promene su sačuvane. 4. Brisanje znaka na kome se nalazi kursor: x 5. Ubacivanja ili dodavanje teksta: i unesite tekst unos ispred kursora A unesite tekst dodavanje na kraju reda NAPOMENA: Pritiskom na prebacujete Vim u Normal mod i prekidate neželjenu ili delimično izvršenu komandu. Nastavite sa lekcijom 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.1: NAREDBE BRISANJA ** Otkucajte dw za brisanje reči. ** 1. Pritisnite da biste bili sigurni da ste u Normal modu. 2. Pomerite kursor na red označen sa --->. 3. Pomerite kursor na početak reči koju treba izbrisati. 4. Otkucajte dw da biste uklonili reč. NAPOMENA: Slovo d će se pojaviti na dnu ekrana kad ga otkucate. Vim čeka da otkucate w . Ako je prikazano neko drugo slovo, pogrešili ste u kucanju; pritisnite i pokušajte ponovo. (Ako se ne pojavi ništa, možda je isključena opcija 'showcmd': vidi lekciju 6.5.) ---> Neke reči smešno ne pripadaju na papir ovoj rečenici. 5. Ponavljajte korake 3 i 4 dok ne ispravite rečenicu, pa pređite na lekciju 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.2: JOŠ BRISANJA ** Otkucajte d$ za brisanje znakova do kraja reda. ** 1. Pritisnite da biste bili sigurni da ste u Normal modu. 2. Pomerite kursor na red označen sa --->. 3. Pomerite kursor do kraja ispravnog dela rečenice (POSLE prve . ). 4. Otkucajte d$ za brisanje ostatka reda. ---> Neko je uneo kraj ovog reda dvaput. kraj ovog reda dvaput. 5. Pređite na lekciju 2.3 za podrobnije objašnjenje. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.3: O OPERATORIMA I POKRETIMA Mnoge komande za izmenu teksta sastoje se od operatora i pokreta. Oblik komande brisanja sa d operatorom je sledeći: d pokret Pri čemu je: d - operator brisanja. pokret - ono na čemu će se operacija izvršavati (opisano u nastavku). Kratak spisak pokreta: w - sve do početka sledeće reči, NE UKLJUČUJUĆI prvo slovo. e - sve do kraja tekuće reči, UKLJUČUJUĆI poslednje slovo. $ - sve do kraje reda, UKLJUČUJUĆI poslednje slovo. Kucanjem de brisaće se tekst od kursora do kraja reči. NAPOMENA: Pritiskom samo na taster pokreta dok ste u Normal modu, bez operatora, kursor se pomera kao što je opisano. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.4: KORIŠĆENJE BROJANJA ZA POKRETE ** Unošenjem nekog broja pre pokreta, pokret se izvršava taj broj puta. ** 1. Pomerite kursor na red označen sa --->. 2. Otkucajte 2w da pomerite kursor dve reči napred. 3. Otkucajte 3e da pomerite kursor na kraj treće reči napred. 4. Otkucajte 0 (nulu) da pomerite kursor na početak reda. 5. Ponovite korake 2 i 3 s nekim drugim brojevima. ---> Rečenica sa rečima po kojoj možete pomerati kursor. 6. Pređite na lekciju 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.5: KORIŠĆENJE BROJANJA ZA VEĆE BRISANJE ** Unošenje nekog broja s operatorom ponavlja operator taj broj puta. ** U kombinaciji operatora brisanja s pokretima spomenutim iznad možete uneti broj pre pokreta da biste izbrisali više znakova: d broj pokret 1. Pomerite kursor na prvo slovo u reči s VELIKIM SLOVIMA u redu označenom sa --->. 2. Otkucajte d2w da izbrišete dve reči sa VELIKIM SLOVIMA 3. Ponovite korake 1 i 2 sa različitim brojevima da izbrišete uzastopne reči sa VELIKIM SLOVIMA korišćenjem samo jedne komande. ---> ovaj ABCČĆ DĐE red FGHI JK LMN OP s rečima je RSŠ TUVZŽ ispravljen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.6: OPERACIJE NAD REDOVIMA ** Otkucajte dd za brisanje celog reda. ** Zbog učestalosti brisanja celih redova, autori Vi-ja odlučili su da je lakše brisati redove ako se otkuca d dvaput. 1. Pomerite kursor na drugi red u donjoj strofi. 2. Otkucajte dd da ga izbrišete. 3. Pomerite kursor na četvrti red. 4. Otkucajte 2dd da biste izbrisali dva reda. ---> 1) Sedlo mi je od marame, ---> 2) blato na sve strane, ---> 3) uzda od kanapa, ---> 4) auto mi je ovde, ---> 5) satovi pokazuju vreme, ---> 6) a bič mi je od očina ---> 7) prebijena štapa. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.7: PONIŠTAVANJE PROMENA ** Pritisnite u za poništavanje poslednje komande, U za ceo red. ** 1. Pomerite kursor na red označen sa ---> i postavite ga na mesto prve greške. 2. Otkucajte x da izbrišete prvi neželjeni znak. 3. Otkucajte u da poništite poslednju izvršenu komandu. 4. Sad ispravite sve greške u redu koristeći komandu x . 5. Otkucajte veliko U da biste vratili sadržaj reda u prvobitno stanje. 6. Onda otkucajte u nekoliko puta da biste poništili U i prethodne komande. 7. Sad otkucajte CTRL-R (držeći CTRL dok pritiskate R) nekoliko puta da biste vratili izmene (poništili poništavanja). ---> Iiisspravite greške uu ovvom redu ii pooništiteee ih. 8. Ovo su veoma korisne komande. Pređite na rezime lekcije 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 2 1. Brisanje od kursora do sledeće reči: dw 2. Brisanje od kursora do kraja reda: d$ 3. Brisanje celog reda: dd 4. Za ponavljanje pokreta prethodno unesite broj: 2w 5. Oblik komande za izmenu: operator [broj] pokret gde je: operator - šta uraditi, recimo d za brisanje [broj] - neobavezan broj ponavljanja pokreta pokret - kretanje po tekstu na kome se radi, kao što je: w (reč), $ (kraj reda), itd. 6. Pomeranje kursora na početak reda: 0 7. Za poništavanje prethodnih izmena, pritisnite: u (malo u) Za poništavanje svih promena u redu, pritisnite: U (veliko U) Za vraćanja promena, otkucajte: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.1: KOMANDA POSTAVLJANJA ** Otkucajte p da postavite prethodno izbrisan tekst iza kursora. ** 1. Pomerite kursor na prvi sledeći red označen sa --->. 2. Otkucajte dd da izbrišete red i smestite ga u Vim registar. 3. Pomerite kursor na red c), IZNAD mesta gde treba postaviti izbrisan red. 4. Otkucajte p da postavite red ispod kursora. 5. Ponavljajte korake 2 do 4 da biste postavili sve linije u pravilnom redosledu. ---> d) prebijena štapa. ---> b) uzda od kanapa, ---> c) a bič mi je od očina ---> a) Sedlo mi je od marame, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.2: KOMANDA ZAMENE ** Otkucajte rx da zamenite znak ispod kursora slovom x . ** 1. Pomerite kursor na prvi sledeći red označen sa --->. 2. Pomerite kursor tako da se nalazi na prvoj grešci. 3. Otkucajte r i onda znak koji treba da tu stoji. 4. Ponavljajte korake 2 i 3 sve dok prvi red ne bude isti kao drugi. ---> Kedi ju ovej red ugašen, nako je protresao pustašne testere! ---> Kada je ovaj red unošen, neko je pritiskao pogrešne tastere! 5. Pređite na lekciju 3.2. NAPOMENA: Setite se da treba da učite vežbanjem, ne pamćenjem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.3: OPERATOR IZMENE ** Za izmenu teksta do kraja reči, otkucajte ce .** 1. Pomerite kursor na prvi sledeći red označen sa --->. 2. Postavite kursor na a u rakdur. 3. Otkucajte ce i ispravite reč (u ovom slučaju otkucajte ed ). 4. Pritisnite i pomerite kursor na sledeći znak koji treba ispraviti. 5. Ponavljajte korake 3 i 4 sve dok prva rečenica ne bude ista kao druga. ---> Ovaj rakdur ima nekoliko rejga koje treflja isprpikati operagrom izmene. ---> Ovaj red ima nekoliko reči koje treba ispraviti operatorom izmene. Uočite da ce briše reč i postavlja editor u Insert mod. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.4: DALJE IZMENE UPOTREBOM c ** Komanda izmene se koristi sa istim pokretima kao i brisanje. ** 1. Operator izmene se koristi na isti način kao i operator brisanja: c [broj] pokret 2. Pokreti su isti, recimo: w (reč) i $ (kraj reda). 3. Pomerite kursor na prvi sledeći red označen sa --->. 4. Pomerite kursor na prvu grešku. 5. Otkucajte c$ i unesite ostatak reda tako da bude isti kao drugi red, pa pritisnite . ---> Kraj ovog reda treba izmeniti tako da izgleda kao red ispod. ---> Kraj ovog reda treba ispraviti korišćenjem c$ komande. NAPOMENA: Za ispravljanje grešaka možete koristiti Backspace . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 3 1. Za postavljanje teksta koji ste upravo izbrisali, pritisnite p . Ovo postavlja tekst IZA kursora (ako je bio izbrisan jedan ili više redova sadržaj će doći na red ispod kursora). 2. Za zamenu znaka na kome se nalazi kursor, pritisnite r i onda željeni znak. 3. Operator izmene dozvoljava promenu teksta od kursora do pozicije gde se završava pokret. Primera radi, kucajte ce za izmenu od kursora do kraja reči, ili c$ za izmenu od kursora do kraja reda. 4. Oblik operacije izmene je: c [broj] pokret Pređite na narednu lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.1: POZICIJA KURSORA I STATUS FAJLA ** Pritisnite CTRL-G za prikaz pozicije kursora u tekstu i status fajla. Pritisnite G za pomeranje kursora na neki red u tekstu. ** NAPOMENA: Pročitajte celu lekciju pre izvođenja bilo kog koraka!! 1. Držite taster CTRL i pritisnite g . Ovo zovemo CTRL-G. Editor će na dnu ekrana ispisati poruku sa imenom fajla i pozicijom kursora u tekstu. Zapamtite broj reda za 3. korak. NAPOMENA: U donjem desnom uglu može se videti poziciju kursora ako je uključena opcija 'ruler' (vidi :help ruler ili lekciju 6.5.) 2. Pritisnite G za pomeranje kursora na kraj teksta. Pritisnite 1G ili gg za pomranje kursora na početak teksta. 3. Otkucajte broj reda na kome ste malopre bili i onda G . Kursor će se vratiti na red na kome je bio kad ste otkucali CTRL-G. 4. Ako ste spremni, izvršite korake od 1 do 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.2: KOMANDE PRETRAŽIVANJA ** Otkucajte / i onda izraz koji želite da potražite. ** 1. U Normal modu otkucajte znak / . Primietite da se znak pojavio zajedno sa kursorom na dnu ekrana kao i kod komande : . 2. Sada otkucajte 'grrreška' . (Bez razmaka i navodnika.) To je reč koju tražite. 3. Za ponovno traženje istog izraza, otkucajte n . Za traženje istog izraza u suprotnom smeru, otkucajte N . 4. Za traženje izraza unatrag, koristite ? umesto / . 5. Za povratak na prethodnu poziciju otkucajte CTRL-O (držite CTRL dok pritiskate O ). Ponavljajte za ranije pozicije. CTRL-I ide napred. ---> "grrreška" je pogrešno; umesto grrreška treba da stoji greška. NAPOMENA: Ako pretraga dođe do kraja teksta traženje će se nastaviti od njegovog početka osim ako je opcija 'wrapscan' isključena. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.3: TRAŽENJE PARA ZAGRADE ** Otkucajte % za nalaženje para ), ] ili } . ** 1. Postavite kursor na bilo koju od ( , [ ili { otvorenih zagrada u redu označenom sa --->. 2. Otkucajte znak % . 3. Kursor će se pomeriti na odgovarajuću zatvorenu zagradu. 4. Otkucajte % da pomerite kursor na prvu zagradu u paru. 5. Pomerite kursor na neku od (,),[,],{ ili } i ponovite komandu % . ---> Red ( testiranja običnih ( [ uglastih ] i { vitičastih } zagrada.)) NAPOMENA: Vrlo korisno u ispravljanju koda sa rasparenim zagradama! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.4: KOMANDA ZAMENE ** Otkucajte :s/staro/novo/g da zamenite 'staro' za 'novo'. ** 1. Pomerite kursor na red označen sa --->. 2. Otkucajte :s/rdi/ri/ . Primetite da ova komanda zamenjuje samo prvo "rdi" u redu. 3. Otkucajte :s/rdi/ri/g . Dodavanje opcije g znači da će se komanda izvršiti u celom redu, zamenom svih pojava niza "rdi". ---> rdiba rdibi grdize rep. 4. Za zamenu svih izraza između neka dva reda, otkucajte :#,#s/staro/novo/g gde su #,# krajnji brojevi redova u opsegu u kome će se obaviti zamena. Otkucajte :%s/staro/novo/g za zamenu svih izraza u celom tekstu. Otkucajte :%s/staro/novo/gc za nalaženje svih izraza u tekstu i potvrdu zamene. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 4 1. CTRL-G prikazuje poziciju kursora u tekstu i status fajla. G pomera kursor na kraj teksta. broj G pomera kursor na navedeni red. gg pomera kursor na prvi red teksta. 2. Kucanjem / sa izrazom taj izraz se traži UNAPRED. Kucanjem ? sa izrazom taj izraz se traži UNAZAD. Posle komande traženja koristite n za nalaženje izraza u istom smeru, a N za nalaženje u suprotnom smeru. CTRL-O vraća kursor na prethodnu poziciju, a CTRL-I na narednu. 3. Kucanjem % kad je kursor na zagradi on se pomera na njen par. 4. Za zamenu prvog izraza staro za izraz novo :s/staro/novo/ Za zamenu svih izraza u celom redu :s/staro/novo/g Za zamenu svih izraza u opsegu linija #,# :#,#s/staro/novo/g Za zamenu u celom tekstu :%s/staro/novo/g Za potvrdu svake zamene dodajte 'c' :%s/staro/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.1: IZVRŠAVANJE SPOLJAŠNJIH KOMANDI ** Otkucajte :! pa spoljašnju komandu koju želite da izvršite. ** 1. Otkucajte poznatu komandu : da biste namestili kursor na dno ekrana. Time omogućavate unos komande u komandnoj liniji editora. 2. Otkucajte znak ! (uzvičnik). Ovime omogućavate izvršavanje bilo koje spoljašnje komande. 3. Kao primer otkucajte ls posle ! i pritisnite . Ovo će prikazati sadržaj direktorijuma, kao da ste na komandnom promptu. Otkucajte :!dir ako :!ls ne radi. NAPOMENA: Na ovaj način moguće je izvršiti bilo koju spoljašnju komandu, zajedno sa njenim argumentima. NAPOMENA: Sve : komande se izvršavaju pošto pritisnete . U daljem tekstu to nećemo uvek napominjati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.2: VIŠE O SNIMANJU FAJLOVA ** Za snimanje promena, otkucajte :w IME_FAJLA . ** 1. Otkucajte :!dir ili :!ls za pregled sadržaja direktorijuma. Već znate da morate pritisnuti posle toga. 2. Izaberite ime fajla koji još ne postoji, npr. TEST. 3. Otkucajte: :w TEST (gde je TEST ime koje ste izabrali.) 4. Time ćete snimiti ceo fajl (Vim Tutor) pod imenom TEST. Za proveru, otkucajte opet :!dir ili :!ls za pregled sadržaja direktorijuma. NAPOMENA: Ako biste napustili Vim i ponovo ga pokrenuli sa vim TEST , tekst bi bio tačna kopija ovog fajla u trenutku kad ste ga snimili. 5. Izbrišite fajl tako što ćete otkucati (MS-DOS): :!del TEST ili (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.3: SNIMANJE OZNAČENOG TEKSTA ** Da biste snimili deo teksta, otkucajte v pokret :w IME_FAJLA ** 1. Pomerite kursor na ovu liniju. 2. Pritisnite v i pomerite kursor pet redova ispod. Primetite da je tekst označen inverzno. 3. Pritisnite : . Na dnu ekrana pojaviće se :'<,'> . 4. Otkucajte w TEST , gde je TEST ime fajla koji još ne postoji. Proverite da zaista piše :'<,'>w TEST pre nego što pritisnete . 5. Vim će snimiti označeni tekst u TEST. Proverite sa :!dir ili !ls . Nemojte još brisati fajl! Koristićemo ga u narednoj lekciji. NAPOMENA: Komanda v započinje vizuelno označavanje. Možete pomerati kursor i tako menjati veličinu označenog teksta. Onda možete upotrebiti operatore nad tekstom. Na primer, d će izbrisati označeni tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.4: UČITAVANJE FAJLA U TEKST ** Za ubacivanje sadržaja fajla, otkucajte :r IME_FAJLA ** 1. Postavite kursor iznad ove linije. NAPOMENA: Pošto izvršite 2. korak videćete tekst iz lekcije 5.3. Tada pomerite kursor DOLE da biste ponovo videli ovu lekciju. 2. Učitajte fajl TEST koristeći komandu :r TEST gde je TEST ime fajla koje ste koristili u prethodnoj lekciji. Sadržaj učitanog fajla je ubačen ispod kursora. 3. Da biste proverili da je fajl učitan, vratite kursor unazad i primetite dve kopije lekcije 5.3, originalnu i onu iz fajla. NAPOMENA: Takođe možete učitati izlaz spoljašnje komande. Na primer, :r !ls će učitati izlaz komande ls i postaviti ga ispod kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 5 1. :!komanda izvršava spoljašnju komandu. Korisni primeri: (MS-DOS) (Unix) :!dir :!ls - pregled sadržaja direktorijuma. :!del FAJL :!rm FAJL - briše fajl FAJL. 2. :w FAJL zapisuje trenutni tekst na disk pod imenom FAJL. 3. v pokret :w IME_FAJLA snima vizuelno označene redove u fajl IME_FAJLA. 4. :r IME_FAJLA učitava fajl IME_FAJLA sa diska i stavlja njegov sadržaj ispod kursora. 5. :r !dir učitava izlaz komande dir i postavlja ga ispod kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.1: KOMANDA OTVORI ** Pritisnite o da biste otvorili red ispod kursora i prešli u Insert mod. ** 1. Pomerite kursor na sledeći red označen sa --->. 2. Otkucajte malo o da biste otvorili novi red ISPOD kursora i prešli u Insert mod. 3. Otkucajte neki tekst i onda pritisnite da biste izašli iz Insert moda. ---> Kad pritisnete o kursor prelazi u novootvoreni red u Insert modu. 4. Za otvaranje reda IZNAD kursora, umesto malog otkucajte veliko O . Isprobajte na donjem redu označenom sa --->. ---> Otvorite red iznad ovog kucanjem velikog O dok je kursor u ovom redu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.2: KOMANDA DODAJ ** Otkucajte a za dodavanje teksta IZA kursora. ** 1. Pomerite kursor na početak sledećeg reda označenog sa --->. 2. Kucajte e dok kursor ne dođe na kraj reči re . 3. Otkucajte a (malo) da biste dodali tekst IZA kursora. 4. Dopunite reč kao što je u redu ispod. Pritisnite za izlazak iz Insert moda. 5. Sa e pređite na narednu nepotpunu reč i ponovite korake 3 i 4. ---> Ovaj re omogućava ve dodav teksta u nekom redu. ---> Ovaj red omogućava vežbanje dodavanja teksta u nekom redu. NAPOMENA: Komande a, i, i A aktiviraju isti Insert mod, jedina razlika je u poziciji od koje će se tekst ubacivati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.3: DRUGI NAČIN ZAMENE ** Otkucajte veliko R da biste zamenili više od jednog znaka. ** 1. Pomerite kursor na prvi sledeći red označen sa --->. Pomerite kursor na početak prvog xxx . 2. Pritisnite R i otkucajte broj koji je red ispod, tako da zameni xxx . 3. Pritisnite za izlazak iz Replace moda. Primetite da je ostatak reda ostao nepromenjen. 4. Ponovite korake da biste zamenili drugo xxx. ---> Dodavanje 123 na xxx daje xxx. ---> Dodavanje 123 na 456 daje 579. NAPOMENA: Replace mod je kao Insert mod, s tom razlikom što svaki uneti znak briše već postojeći. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.4: KOPIRANJE I LEPLJENJE TEKSTA ** Koristite operator y za kopiranje a p za lepljenje teksta. ** 1. Pomerite kursor na red sa ---> i postavite kursor posle "a)". 2. Aktivirajte Visual mod sa v i pomerite kursor sve do ispred "prvi". 3. Pritisnite y da biste kopirali označeni tekst u interni bafer. 4. Pomerite kursor do kraja sledećeg reda: j$ 5. Pritisnite p da biste zalepili tekst. Onda otkucajte: a drugi . 6. Upotrebite Visual mod da označite " red.", kopirajte sa y , kursor pomerite na kraj sledećeg reda sa j$ i tamo zalepite tekst sa p . ---> a) ovo je prvi red. b) NAPOMENA: takođe možete koristiti y kao operator; yw kopira jednu reč. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.5: POSTAVLJANJE OPCIJA ** Postavite opciju tako da traženje i zamena ignorišu veličinu slova ** 1. Potražite reč 'razlika': /razlika Ponovite nekoliko puta pritiskom na n . 2. Aktivirajte opciju 'ic' (Ignore case): :set ic 3. Ponovo potražite reč 'razlika' pritiskom na n Primetite da su sada pronađeni i RAZLIKA i Razlika. 4. Aktivirajte opcije 'hlsearch' i 'incsearch': :set hls is 5. Ponovo otkucajte komandu traženja i uočite razlike: /razlika 6. Za deaktiviranje opcije ic kucajte: :set noic NAPOMENA: Za neoznačavanje pronađenih izraza otkucajte: :nohlsearch NAPOMENA: Ako želite da ne razlikujete veličinu slova u samo jednoj komandi traženja, dodajte \c u izraz: /razlika\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 6 1. Pritisnite o za otvaranje reda ISPOD kursora i prelazak u Insert mod. Pritisnite O za otvaranje reda IZNAD kursora. 2. Pritisnite a za unos teksta IZA kursora. Pritisnite A za unos teksta na kraju reda. 3. Komanda e pomera kursor na kraj reči. 4. Operator y kopira tekst, p ga lepi. 5. Kucanje velikog R aktivira Replace mod dok ne pritisnete . 6. Kucanje ":set xxx" aktivira opciju "xxx". Neke opcije su: 'ic' 'ignorecase' ne razlikuje velika/mala slova pri traženju 'is' 'incsearch' prikazuje pronađen tekst dok kucate izraz 'hls' 'hlsearch' označava inverzno sve pronađene izraze Možete koristite dugo ili kratko ime opcije. 7. Ispred imena opcije stavite "no" da je deaktivirate: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.1: DOBIJANJE POMOĆI ** Koristite on-line sistem za pomoć ** Vim ima detaljan on-line sistem za pomoć. Za početak, pokušajte nešto od sledećeg: - pritisnite taster (ako ga imate na tastaturi) - pritisnite taster (ako ga imate na tastaturi) - otkucajte :help Pročitajte tekst u prozoru pomoći da biste naučili pomoć radi. Kucanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi. Otkucajte :q da zatvorite prozor pomoći. Pomoć o praktično bilo kojoj temi možete dobiti dodavanjem argumenta komandi ":help". Pokušajte ovo (ne zaboravite na kraju): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.2: PRAVLJENJE STARTNOG SKRIPTA ** Aktivirajte mogućnosti editora ** Vim ima mnogo više mogućnosti nego Vi, ali većina nije automatski aktivirana. Za dodatne mogućnosti napravite "vimrc" fajl. 1. Otvorite "vimrc" fajl. Ovo zavisi od vašeg sistema: :e ~/.vimrc za Unix :e $VIM/_vimrc za MS-Windows 2. Onda učitajte primer sadržaja "vimrc" fajla: :r $VIMRUNTIME/vimrc_example.vim 3. Snimite fajl sa: :w Sledeći put kada pokrenete Vim, bojenje sintakse teksta biće aktivirano. Sva svoja podešavanja možete dodati u "vimrc" fajl. Za više informacija otkucajte :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.3: AUTOMATSKO DOVRŠAVANJE ** Dovršavanje komandne linije sa CTRL-D i ** 1. Podesite Vim da ne bude u Vi-kompatibilnom modu: :set nocp 2. Pogledajte koji fajlovi postoje u direktorijumu: :!ls ili :!dir 3. Otkucajte početak komande: :e 4. Otkucajte CTRL-D i Vim će prikazati spisak komandi koje počinju sa "e". 5. Pritisnite i Vim će dopuniti ime komande u ":edit". 6. Dodajte razmak i početak imena postojećeg fajla: :edit FA 7. Pritisnite . Vim će dopuniti ime fajla (ako je jedinstveno). NAPOMENA: Moguće je dopuniti mnoge komande. Samo probajte CTRL-D i . Naročito je korisno za :help komande. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REZIME lekcije 7 1. Otkucajte :help ili pritisnite ili za pomoć. 2. Otkucajte :help komanda biste dobili pomoć za tu komandu. 3. Otkucajte CTRL-W CTRL-W za prelazak u drugi prozor. 4. Otkucajte :q da zatvorite prozor pomoći. 5. Napravite vimrc startni skript za aktiviranje podešavanja koja vam odgovaraju. 6. Dok kucate neku od : komandi, pritisnite CTRL-D da biste videli moguće vrednosti. Pritisnite da odaberete jednu od njih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ovim je priručnik završen. Njegov cilj je bio kratak pregled Vim editora, koliko da omogući njegovo relativno jednostavno korišćenje. Priručnik nije potpun, jer Vim ima mnogo više komandi. Kao sledeće, pročitajte priručnik: ":help user-manual". Za dalje čitanje i učenje, preporučujemo knjigu: Vim - Vi Improved - by Steve Oualline Izdavač: New Riders Prva knjiga potpuno posvećena Vim-u. Naročito korisna za početnike. Ima mnoštvo primera i slika. Vidite http://iccf-holland.org/click5.html Sledeća knjiga je starija i više govori o Vi-u nego o Vim-u, ali je takođe preporučujemo: Learning the Vi Editor - by Linda Lamb Izdavač: O'Reilly & Associates Inc. Dobra knjiga iz koje možete saznati skoro sve što možete raditi u Vi-ju. Šesto izdanje ima i informacija o Vim-u. Ovaj priručnik su napisali: Michael C. Pierce i Robert K. Ware, Colorado School of Mines koristeći ideje Charlesa Smitha, Colorado State University. E-mail: bware@mines.colorado.edu. Prilagođavanje za Vim uradio je Bram Moolenaar. Prevod na srpski: Ivan Nejgebauer Verzija 1.0, maj/juni 2014. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!{ ppvim80/tutor/tutor.sv.utf-8nu[=============================================================================== = V ä l k o m m e n t i l l h a n d l e d n i n g e n i V i m - Ver. 1.5 = =============================================================================== Vim är en väldigt kraftfull redigerare som har många kommandon, alltför många att förklara i en handledning som denna. Den här handledningen är gjord för att förklara tillräckligt många kommandon så att du enkelt ska kunna använda Vim som en redigerare för alla ändamål. Den beräknade tiden för att slutföra denna handledning är 25-30 minuter, beroende på hur mycket tid som läggs ned på experimentering. Kommandona i lektionerna kommer att modifiera texten. Gör en kopia av den här filen att öva på (om du startade "vimtutor är det här redan en kopia). Det är viktigt att komma ihåg att den här handledningen är konstruerad att lära vid användning. Det betyder att du måste köra kommandona för att lära dig dem ordentligt. Om du bara läser texten så kommer du att glömma kommandona! Försäkra dig nu om att din Caps-Lock tangent INTE är aktiv och tryck på j-tangenten tillräckligt många gånger för att förflytta markören så att Lektion 1.1 fyller skärmen helt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.1: FLYTTA MARKÖREN ** För att flytta markören, tryck på tangenterna h,j,k,l som indikerat. ** ^ k Tips: < h l > h-tangenten är till vänster och flyttar till vänster. j l-tangenten är till höger och flyttar till höger. v j-tangenten ser ut som en pil ned. 1. Flytta runt markören på skärmen tills du känner dig bekväm. 2. Håll ned tangenten pil ned (j) tills att den repeterar. ---> Nu vet du hur du tar dig till nästa lektion. 3. Flytta till Lektion 1.2, med hjälp av ned tangenten. Notera: Om du är osäker på någonting du skrev, tryck för att placera dig dig i Normal-läge. Skriv sedan om kommandot. Notera: Piltangenterna borde också fungera. Men om du använder hjkl så kommer du att kunna flytta omkring mycket snabbare, när du väl vant dig vid det. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.2: STARTA OCH AVSLUTA VIM !! NOTERA: Innan du utför någon av punkterna nedan, läs hela lektionen!! 1. Tryck -tangenten (för att se till att du är i Normal-läge). 2. Skriv: :q! . ---> Detta avslutar redigeraren UTAN att spara några ändringar du gjort. Om du vill spara ändringarna och avsluta skriv: :wq 3. När du ser skal-prompten, skriv kommandot som tog dig in i den här handledningen. Det kan vara: vimtutor Normalt vill du använda: vim tutor ---> 'vim' betyder öppna redigeraren vim, 'tutor' är filen du vill redigera. 4. Om du har memorerat dessa steg och känner dig självsäker, kör då stegen 1 till 3 för att avsluta och starta om redigeraren. Flytta sedan ned markören till Lektion 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.3: TEXT REDIGERING - BORTTAGNING ** När du är i Normal-läge tryck x för att ta bort tecknet under markören. ** 1. Flytta markören till raden nedan med markeringen --->. 2. För att rätta felen, flytta markören tills den står på tecknet som ska tas bort. fix the errors, move the cursor until it is on top of the 3. Tryck på x-tangenten för att ta bort det felaktiga tecknet. 4. Upprepa steg 2 till 4 tills meningen är korrekt. ---> Kkon hoppadee övverr måånen. 5. Nu när raden är korrekt, gå till Lektion 1.4. NOTERA: När du går igenom den här handledningen, försök inte att memorera, lär genom användning. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 1.4: TEXT REDIGERING - INFOGNING ** När du är i Normal-läge tryck i för att infoga text. ** 1. Flytta markören till den första raden nedan med markeringen --->. 2. För att göra den första raden likadan som den andra, flytta markören till det första tecknet EFTER där text ska infogas. 3. Tryck i och skriv in det som saknas. 4. När du rättat ett fel tryck för att återgå till Normal-läge. Upprepa steg 2 till 4 för att rätta meningen. ---> Det sakns här . ---> Det saknas lite text från den här raden. 5. När du känner dig bekväm med att infoga text, gå till sammanfattningen nedan. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 1 SAMMANFATTNING 1. Markören flyttas genom att använda piltangenterna eller hjkl-tangenterna. h (vänster) j (ned) k (upp) l (höger) 2. För att starta Vim (från %-prompten) skriv: vim FILNAMN 3. För att avsluta Vim skriv: :q! för att kasta ändringar. ELLER skriv: :wq för att spara ändringar. 4. För att ta bort tecknet under markören i Normal-läge skriv: x 5. För att infoga text vid markören i Normal-läge skriv: i skriv in text NOTERA: Genom att trycka kommer du att placeras i Normal-läge eller avbryta ett delvis färdigskrivet kommando. Fortsätt nu med Lektion 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.1: BORTTAGNINGSKOMMANDON ** Skriv dw för att radera till slutet av ett ord. ** 1. Tryck för att försäkra dig om att du är i Normal-läge. 2. Flytta markören till raden nedan markerad --->. 3. Flytta markören till början av ett ord som måste raderas. 4. Skriv dw för att radera ordet. NOTERA: Bokstäverna dw kommer att synas på den sista raden på skärmen när du skriver dem. Om du skrev något fel, tryck och börja om. ---> Det är ett några ord roliga att som inte hör hemma i den här meningen. 5. Upprepa stegen 3 och 4 tills meningen är korrekt och gå till Lektion 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.2: FLER BORTTAGNINGSKOMMANDON ** Skriv d$ för att radera till slutet på raden. ** 1. Tryck för att försäkra dig om att du är i Normal-läge. 2. Flytta markören till raden nedan markerad --->. 3. Flytta markören till slutet på den rätta raden (EFTER den första . ). 4. Skriv d$ för att radera till slutet på raden. ---> Någon skrev slutet på den här raden två gånger. den här raden två gånger. 5. Gå vidare till Lektion 2.3 för att förstå vad det är som händer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.3: KOMMANDON OCH OBJEKT Syntaxen för d raderingskommandot är följande: [nummer] d objekt ELLER d [nummer] objekt Var: nummer - är antalet upprepningar av kommandot (valfritt, standard=1). d - är kommandot för att radera. objekt - är vad kommandot kommer att operera på (listade nedan). En kort lista över objekt: w - från markören till slutet av ordet, inklusive blanksteget. e - från markören till slutet av ordet, EJ inklusive blanksteget. $ - från markören till slutet på raden. NOTERA: För den äventyrslystne, genom att bara trycka på objektet i Normal-läge (utan kommando) så kommer markören att flyttas som angivet i objektlistan. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.4: ETT UNDANTAG TILL 'KOMMANDO-OBJEKT' ** Skriv dd för att radera hela raden. ** På grund av hur vanligt det är att ta bort hela rader, valde upphovsmannen till Vi att det skulle vara enklare att bara trycka d två gånger i rad för att ta bort en rad. 1. Flytta markören till den andra raden i frasen nedan. 2. Skriv dd för att radera raden. 3. Flytta nu till den fjärde raden. 4. Skriv 2dd (kom ihåg: nummer-kommando-objekt) för att radera de två raderna. 1) Roses are red, 2) Mud is fun, 3) Violets are blue, 4) I have a car, 5) Clocks tell time, 6) Sugar is sweet 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 2.5: ÅNGRA-KOMMANDOT ** Skriv u för att ångra det senaste kommandona, U för att fixa en hel rad. ** 1. Flytta markören till slutet av raden nedan markerad ---> och placera den på det första felet. 2. Skriv x för att radera den första felaktiga tecknet. 3. Skriv nu u för att ångra det senaste körda kommandot. 4. Rätta den här gången alla felen på raden med x-kommandot. 5. Skriv nu U för att återställa raden till dess ursprungliga utseende. 6. Skriv nu u några gånger för att ångra U och tidigare kommandon. 7. Tryck nu CTRL-R (håll inne CTRL samtidigt som du trycker R) några gånger för att upprepa kommandona (ångra ångringarna). ---> Fiixa felen ppå deen häär meningen och återskapa dem med ångra. 8. Det här är väldigt användbara kommandon. Gå nu vidare till Lektion 2 Sammanfattning. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 2 SAMMANFATTNING 1. För att radera från markören till slutet av ett ord skriv: dw 2. För att radera från markören till slutet av en rad skriv: d$ 3. För att radera en hel rad skriv: dd 4. Syntaxen för ett kommando i Normal-läge är: [nummer] kommando objekt ELLER kommando [nummer] objekt där: nummer - är hur många gånger kommandot kommandot ska repeteras kommando - är vad som ska göras, t.ex. d för att radera objekt - är vad kommandot ska operera på, som t.ex. w (ord), $ (till slutet av raden), etc. 5. För att ångra tidigare kommandon, skriv: u (litet u) För att ångra alla tidigare ändringar på en rad skriv: U (stort U) För att ångra ångringar tryck: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.1: KLISTRA IN-KOMMANDOT ** Skriv p för att klistra in den senaste raderingen efter markören. ** 1. Flytta markören till den första raden i listan nedan. 2. Skriv dd för att radera raden och lagra den i Vims buffert. 3. Flytta markören till raden OVANFÖR där den raderade raden borde vara. 4. När du är i Normal-läge, skriv p för att byta ut raden. 5. Repetera stegen 2 till 4 för att klistra in alla rader i rätt ordning. d) Kan du lära dig också? b) Violetter är blå, c) Intelligens fås genom lärdom, a) Rosor är röda, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.2: ERSÄTT-KOMMANDOT ** Skriv r och ett tecken för att ersätta tecknet under markören. ** 1. Flytta markören till den första raden nedan markerad --->. 2. Flytta markören så att den står på det första felet. 3. Skriv r och sedan det tecken som borde ersätta felet. 4. Repetera steg 2 och 3 tills den första raden är korrekt. ---> När drn här ruden skrevs, trickte någon på fil knappar! ---> När den här raden skrevs, tryckte någon på fel knappar! 5. Gå nu vidare till Lektion 3.2. NOTERA: Kom ihåg att du skall lära dig genom användning, inte genom memorering. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.3: ÄNDRA-KOMMANDOT ** För att ändra en del eller ett helt ord, skriv cw . ** 1. Flytta markören till den första redan nedan markerad --->. 2. Placera markören på d i rdrtn. 3. Skriv cw och det rätta ordet (i det här fallet, skriv "aden".) 4. Tryck och flytta markören till nästa fel (det första tecknet som ska ändras.) 5. Repetera steg 3 och 4 tills den första raden är likadan som den andra. ---> Den här rdrtn har några otf som brhotrt ändras mrf ändra-komjendit. ---> Den här raden har några ord som behöver ändras med ändra-kommandot. Notera att cw inte bara ändrar ordet, utan även placerar dig i infogningsläge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 3.4: FLER ÄNDRINGAR MED c ** Ändra-kommandot används på samma objekt som radera. ** 1. Ändra-kommandot fungerar på samma sätt som radera. Syntaxen är: [nummer] c objekt ELLER c [nummer] objekt 2. Objekten är också de samma, som t.ex. w (ord), $ (slutet av raden), etc. 3. Flytta till den första raden nedan markerad -->. 4. Flytta markören till det första felet. 5. Skriv c$ för att göra resten av raden likadan som den andra och tryck . ---> Slutet på den här raden behöver hjälp med att få den att likna den andra. ---> Slutet på den här raden behöver rättas till med c$-kommandot. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 3 SAMMANFATTNING 1. För att ersätta text som redan har blivit raderad, skriv p . Detta klistrar in den raderade texten EFTER markören (om en rad raderades kommer den att hamna på raden under markören. 2. För att ersätta tecknet under markören, skriv r och sedan tecknet som kommer att ersätta orginalet. 3. Ändra-kommandot låter dig ändra det angivna objektet från markören till slutet på objektet. eg. Skriv cw för att ändra från markören till slutet på ordet, c$ för att ändra till slutet på en rad. 4. Syntaxen för ändra-kommandot är: [nummer] c objekt ELLER c [nummer] objekt Gå nu till nästa lektion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.1: POSITION OCH FILSTATUS ** Tryck CTRL-g för att visa din position i filen och filstatusen. Tryck SHIFT-G för att flytta till en rad i filen. ** Notera: Läsa hela den lektion innan du utför något av stegen!! 1. Håll ned Ctrl-tangenten och tryck g . En statusrad med filnamn och raden du befinner dig på kommer att synas. Kom ihåg radnummret till Steg 3. 2. Tryck shift-G för att flytta markören till slutet på filen. 3. Skriv in nummret på raden du var på och tryck sedan shift-G. Detta kommer att ta dig tillbaka till raden du var på när du först tryckte Ctrl-g. (När du skriver in nummren, kommer de INTE att visas på skärmen.) 4. Om du känner dig säker på det här, utför steg 1 till 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.2: SÖK-KOMMANDOT ** Skriv / följt av en fras för att söka efter frasen. ** 1. I Normal-läge skriv /-tecknet. Notera att det och markören blir synlig längst ned på skärmen precis som med :-kommandot. 2. Skriv nu "feeel" . Det här är ordet du vill söka efter. 3. För att söka efter samma fras igen, tryck helt enkelt n . För att söka efter samma fras igen i motsatt riktning, tryck Shift-N . 4. Om du vill söka efter en fras bakåt i filen, använd kommandot ? istället för /. ---> "feeel" är inte rätt sätt att stava fel: feeel är ett fel. Notera: När sökningen når slutet på filen kommer den att fortsätta vid början. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.3: SÖKNING EFTER MATCHANDE PARENTESER ** Skriv % för att hitta en matchande ),], or } . ** 1. Placera markören på någon av (, [, or { på raden nedan markerad --->. 2. Skriv nu %-tecknet. 3. Markören borde vara på den matchande parentesen eller hakparentesen. 4. Skriv % för att flytta markören tillbaka till den första hakparentesen (med matchning). ---> Det ( här är en testrad med (, [ ] och { } i den. )) Notera: Det här är väldigt användbart vid avlusning av ett program med icke matchande parenteser! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 4.4: ETT SÄTT ATT ÄNDRA FEL ** Skriv :s/gammalt/nytt/g för att ersätta "gammalt" med "nytt". ** 1. Flytta markören till raden nedan markerad --->. 2. Skriv :s/denn/den . Notera att det här kommandot bara ändrar den första förekomsten på raden. 3. Skriv nu :s/denn/den/g vilket betyder ersätt globalt på raden. Det ändrar alla förekomster på raden. ---> denn bästa tiden att se blommor blomma är denn på våren. 4. För att ändra alla förekomster av en teckensträng mellan två rader, skriv :#,#s/gammalt/nytt/g där #,# är de två radernas radnummer. Skriv :%s/gammtl/nytt/g för att ändra varje förekomst i hela filen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 4 SAMMANFATTNING 1. Ctrl-g visar din position i filen och filstatusen. Shift-G flyttar till slutet av filen. Ett radnummer följt Shift-G flyttar till det radnummret. 2. Skriver man / följt av en fras söks det FRAMMÅT efter frasen. Skriver man ? följt av en fras söks det BAKÅT efter frasen. Efter en sökning skriv n för att hitta nästa förekomst i samma riktning eller Shift-N för att söka i den motsatta riktningen. 3. Skriver man % när markören är på ett (,),[,],{, eller } hittas dess matchande par. 4. För att ersätta den första gammalt med nytt på en rad skriv :s/gammlt/nytt För att ersätta alla gammlt med nytt på en rad skriv :s/gammlt/nytt/g För att ersätta fraser mellan rad # och rad # skriv :#,#s/gammlt/nytt/g För att ersätta alla förekomster i filen skriv :%s/gammlt/nytt/g För att bekräfta varje gång lägg till "c" :%s/gammlt/nytt/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.1: HUR MAN KÖR ETT EXTERNT KOMMANDO ** Skriv :! följt av ett externt kommando för att köra det kommandot. ** 1. Skriv det välbekanta kommandot : för att placera markören längst ned på skärmen på skärmen. Detta låter dig skriva in ett kommando. 2. Skriv nu ! (utropstecken). Detta låter dig köra ett godtyckligt externt skalkommando. 3. Som ett exempel skriv ls efter ! och tryck sedan . Detta kommer att visa dig en listning av din katalog, precis som om du kört det vid skalprompten. Använd :!dir om ls inte fungerar. Notera: Det är möjligt att köra vilket externt kommando som helst på det här sättet. Notera: Alla :-kommandon måste avslutas med att trycka på ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.2: MER OM ATT SPARA FILER ** För att spara ändringar gjorda i en fil, skriv :w FILNAMN. ** 1. Skriv :!dir eller :!ls för att få en listning av din katalog. Du vet redan att du måste trycka efter det här. 2. Välj ett filnamn som inte redan existerar, som t.ex. TEST. 3. Skriv nu: :w TEST (där TEST är filnamnet du valt.) 4. Det här sparar hela filen (Vim handledningen) under namnet TEST. För att verifiera detta, skriv :!dir igen för att se din katalog Notera: Om du skulle avsluta Vim och sedan öppna igen med filnamnet TEST så skulle filen vara en exakt kopia av handledningen när du sparade den. 5. Ta nu bort filen genom att skriva (MS-DOS): :!del TEST eller (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.3: ETT SELEKTIVT SPARA-KOMMANDO ** För att spara en del av en fil, skriv :#,# w FILNAMN ** 1. Ännu en gång, skriv :!dir eller :!ls för att få en listning av din katalog och välj ett passande filnamn som t.ex. TEST. 2. Flytta markören högst upp på den här sidan och tryck Ctrl-g för att få reda på radnumret på den raden. KOM IHÅG DET NUMMRET! 3. Flytta nu längst ned på sidan och skriv Ctrl-g igen. KOM IHÅG DET RADNUMMRET OCKSÅ! 4. För att BARA spara en sektion till en fil, skriv :#,# w TEST där #,# är de två nummren du kom ihåg (toppen, botten) och TEST är ditt filnamn. 5. Ännu en gång, kolla så att filen är där med :!dir men radera den INTE. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 5.4: TA EMOT OCH FÖRENA FILER ** För att infoga innehållet av en fil, skriv :r FILNAMN ** 1. Skriv :!dir för att försäkra dig om att TEST-filen från tidigare fortfarande är kvar. 2. Placera markören högst upp på den här sidan. NOTERA: Efter att du kört Steg 3 kommer du att se Lektion 5.3. Flytta då NED till den här lektionen igen. 3. Ta nu emot din TEST-fil med kommandot :r TEST där TEST är namnet på filen. NOTERA: Filen du tar emot placeras där markören är placerad. 4. För att verifiera att filen togs emot, gå tillbaka och notera att det nu finns två kopior av Lektion 5.3, orginalet och filversionen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 5 SAMMANFATTNING 1. :!kommando kör ett externt kommando. Några användbara exempel är: (MS-DOS) (Unix) :!dir :!ls - visar en kataloglistning. :!del FILNAMN :!rm FILNAMN - tar bort filen FILNAMN. 2. :w FILNAMN sparar den aktuella Vim-filen med namnet FILNAMN. 3. :#,#w FILNAMN sparar raderna # till # i filen FILNAMN. 4. :r FILNAMN tar emot filen FILNAMN och infogar den i den aktuella filen efter markören. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.1: ÖPPNA-KOMMANDOT ** Skriv o för att öppna en rad under markören och placera dig i Infoga-läge. ** 1. Flytta markören till raden nedan markerad --->. 2. Skriv o (litet o) för att öppna upp en rad NEDANFÖR markören och placera dig i Infoga-mode. 3. Kopiera nu raden markerad ---> och tryck för att avsluta Infoga-läget. ---> Efter du skrivit o placerad markören på en öppen rad i Infoga-läge. 4. För att öppna upp en rad OVANFÖR markören, skriv ett stort O , istället för ett litet o. Pröva detta på raden nedan. Öppna upp en rad ovanför denna genom att trycka Shift-O när markören står här. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.2: LÄGG TILL-KOMMANDOT ** Skriv a för att infoga text EFTER markören. ** 1. Flytta markören till slutet av den första raden nedan markerad ---> genom att skriv $ i Normal-läge. 2. Skriv ett a (litet a) för att lägga till text EFTER tecknet under markören. (Stort A lägger till i slutet av raden.) Notera: Detta undviker att behöva skriva i , det sista tecknet, texten att infoga, , högerpil, och slutligen, x, bara för att lägga till i slutet på en rad! 3. Gör nu färdigt den första raden. Notera också att lägga till är likadant som Infoga-läge, enda skillnaden är positionen där texten blir infogad. ---> Här kan du träna ---> Här kan du träna på att lägga till text i slutet på en rad. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.3: EN ANNAN VERSION AV ERSÄTT ** Skriv ett stort R för att ersätta fler än ett tecken. ** 1. Flytta markören till den första raden nedan markerad --->. 2. Placera markören vid början av det första ordet som är annorlunda jämfört med den andra raden markerad ---> (ordet "sista"). 3. Skriv nu R och ersätt resten av texten på den första raden genom att skriva över den gamla texten så att den första raden blir likadan som den andra. ---> För att få den första raden lika som den sista, använd tangenterna. ---> För att få den första raden lika som den andra, skriv R och den nya texten. 4. Notera att när du trycker för att avsluta, så blir eventuell oförändrad text kvar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lektion 6.4: SÄTT FLAGGOR ** Sätt en flagga så att en sökning eller ersättning ignorerar storlek ** 1. Sök efter "ignore" genom att skriva: /ignore Repetera flera gånger genom att trycka på n-tangenten 2. Sätt 'ic' (Ignore Case) flaggan genom att skriva: :set ic 3. Sök nu efter "ignore" igen genom att trycka: n Repeat search several more times by hitting the n key 4. Sätt 'hlsearch' and 'incsearch' flaggorna: :set hls is 5. Skriv nu in sök-kommandot igen, och se vad som händer: /ignore 6. För att ta bort framhävningen av träffar, skriv :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 6 SAMMANFATTNING 1. Genom att skriva o öpnnas en rad NEDANFÖR markören och markören placeras på den öppna raden i Infoga-läge. Genom att skriva ett stort O öppnas raden OVANFÖR raden som markören är på. 2. Skriv ett a för att infoga text EFTER tecknet som markören står på. Genom att skriva ett stort A läggs text automatiskt till i slutet på raden. 3. Genom att skriva ett stort R hamnar du i Ersätt-läge till trycks för att avsluta. 4. Genom att skriva ":set xxx" sätts flaggan "xxx" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKTION 7: ON-LINE HJÄLP-KOMMANDON ** Använd on-line hjälpsystemet ** Vim har ett omfattande on-line hjälpsystem. För att komma igång pröva ett av dessa tre: - tryck tangenten (om du har någon) - tryck tangenten (om du har någon) - skriv :help Skriv :q för att stränga hjälpfönstret. Du kan hitta hjälp om nästan allting, genom att ge ett argument till ":help" kommandot. Pröva dessa (glöm inte att trycka ): :help w :help c_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!N^^vim80/tutor/README.txtnu[Tutor is a "hands on" tutorial for new users of the Vim editor. Most new users can get through it in less than one hour. The result is that you can do a simple editing task using the Vim editor. Tutor is a file that contains the tutorial lessons. You can simply execute "vim tutor" and then follow the instructions in the lessons. The lessons tell you to modify the file, so DON'T DO THIS ON YOUR ORIGINAL COPY. On Unix you can also use the "vimtutor" program. It will make a scratch copy of the tutor first. I have considered adding more advanced lessons but have not found the time. Please let me know how you like it and send any improvements you make. Bob Ware, Colorado School of Mines, Golden, Co 80401, USA (303) 273-3987 bware@mines.colorado.edu bware@slate.mines.colorado.edu bware@mines.bitnet [This file was modified for Vim by Bram Moolenaar] PK!=ggvim80/tutor/tutor.lvnu[=============================================================================== = Ī s a p a m ā c ī b a V I M - Versija 1.7 = =============================================================================== Vim ir jaudīgs teksta redaktors ar pārāk daudzām komandām, lai to aprakstītu tik īsā aprakstā kā šis. Šī pamācība ir paredzēta, lai spētu iemācīties tik daudz, cik nepieciešams, lietojot Vim, kā plaša pielietojuma teksta redaktoru. Atkarībā no tā, cik daudz laika veltīsiet eksperimentiem, šīs pamācības aptuvenais izpildīšanas laiks ir 25 — 30 minūtes. UZMANĪBU: Darbojoties ar komandām, jūs izmainīsiet šo tekstu, tāpēc izveidojiet šī faila kopiju (ja jūs palaidāt "vimtutor" komandu, šī jau ir kopija). Svarīgi atcerēties, ka šo pamācību ir paredzēts izpildīt praktiski! Ja jūs tikai lasīsiet šo tekstu, jūs komandas aizmirsīsiet! Tagad pārliecinieties, ka tastatūrai nav nospiesti SHIFT vai CAPS-LOCK taustiņi un spiediet j taustiņu, līdz pilnībā redzat 1.1 nodarbības saturu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.1 nodarbība: KURSORA PĀRVIETOŠANA ** Lai pārvietotu kursoru, spiediet taustiņus h, j, k, l ** Lai atcerētos, izmantojiet vārdus: k "Kaugšup" ^ pa "Heisi" h < > l pa "Labi" v j "Jejup" 1. Pārvietojiet kursoru pa ekrānu tik ilgi, kamēr pierodat. 2. Turiet j taustiņu tik ilgi, kamēr ieslēdzas tā auto-atkārtošana. Un dodieties uz nākamo nodarbību. PIEZĪME: Ja neesat pārliecināts par nospiesto taustiņu, spiediet , lai atgrieztos normālajā režīmā, un spiediet vajadzīgo taustiņu atkal. PIEZĪME: Kursora vadībai var izmantot arī bultiņu taustiņus, bet ticiet — iemācīties vadīt ar j, k, l, h taustiņiem ir daudz parocīgāk! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.2 nodarbība: IZIEŠANA NO VIM !! PIEZĪME: Pirms izpildīt šīs nodarbības soļus, izlasiet visu instrukciju! 1. Lai būtu drošs, ka esat normālajā režīmā, nospiediet taustiņu. 2. Ievadiet komandu: :q! . Ievadot šo komandu, jūs iziesiet no redaktora nesaglabājot izmaiņas. 3. Ja palaidāt vim komandrindā, tad pēc tam atkal to izsauciet, ievadot vimtutor 4. Kad esat iegaumējis 1. — 3. soli, izpildiet tos, lai atgrieztos redaktorā. PIEZĪME: :q! komanda atceļ visas failā radītās izmaiņas. Pēc dažām nodarbībām jūs uzzināsiet, kā izmaiņas varat saglabāt. 5. Pārvietojiet kursoru, uz 1.3 nodarbību. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.3 nodarbība: TEKSTA REDIĢĒŠANA – DZĒŠANA ** Lai izdzēstu zem kursora atrodošos burtu, spiediet x ** 1. Pārvietojiet kursoru uz līniju ar atzīmi --->. 2. Lai izlabotu kļūdas, pārvietojiet kursoru uz vajadzīgo burtu. 3. Spiediet x taustiņu, lai izdzēstu nevajadzīgo burtu. 4. Atkārtojiet 2. līdz 4. soļus, līdz teksts ir pareizs. ---> Hiiipijiiii čččauuukstiiina celllofānu. 5. Kad augstāk parādītā rinda ir izlabota, dodieties uz 1.4. nodarbību. PIEZĪME: Izpildot šo pamācību, centieties mācīties nevis domājot, bet gan praktiski trenējot kustību atmiņu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.4 nodarbība: TEKSTA REDIĢĒŠANA — IEVIETOŠANA ** Lai ievietotu tekstu, spiediet i ** 1. Pārvietojiet kursoru uz pirmo līniju ar atzīmi --->. 2. Lai ierakstītu tekstu augšējā rindā tieši tādu pašu kā apakšējā, novietojiet kursoru tieši PĒC ievietojamā teksta. 3. Spiediet i un ievadiet visu nepieciešamo tekstu. 4. Pēc katra papildinājuma, spiediet lai atgrieztos normālajā režīmā. Atkārtojiet 2. līdz 4. soļus, līdz teksts ir pareizs. ---> Šaā lnij no tksta rūkt dai buti. Šajā līnijā no teksta trūkst daži burti. 5. Kad esat apguvis šīs darbības, dodieties uz 1.5. nodarbību. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.5 nodarbība: TEKSTA REDIĢĒŠANA — PIEVIENOŠANA ** Lai pievienotu tekstu, spiediet A ** 1. Pārvietojiet kursoru uz pirmo līniju ar atzīmi --->. Nav svarīgi, uz kura šīs rindas burta atrodas kursors. 2. Spiediet A un pievienojiet iztrūkstošo tekstu. 3. Kad nepieciešamais teksts ir pievienots, spiediet , lai atgrieztos normālajā režīmā. 4. Pārvietojiet kursoru uz otro līniju ar atzīmi ---> un atkārtojiet 2. un 3. soļus. ---> Šajā līnijā tekstam Šajā līnijā tekstam pietrūkst beigas. ---> Šajā līnijā t Šajā līnijā tekstam pietrūkst beigas. 5. Kad esat apguvis šīs darbības, dodieties uz 1.6. nodarbību. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.6 nodarbība: FAILA SAGLABĀŠANA ** Lai saglabātu failu un izietu no redaktora, spiediet :wq ** !! PIEZĪME: Pirms izpildīt šo nodarbību, izlasiet visus tās soļus! 1. Pārliecinieties, ka esat pareizi izpildījis visas iepriekšējās nodarbības. 2. Ja neesat pārliecināts, izejiet no redaktora, kā 1.2. nodarbībā ar komandu: :q! 3. Tad atkal palaidiet pamācību, un, ja nepieciešams, veiciet failā izmaiņas. 4. Saglabājiet faila izmaiņas, redaktorā ievadot :w tutor Izejiet no redaktora, ievadot komandu :wq 5. Palaidiet atkal šo pamācību, terminālī ievadot komandu: vim tutor Šajā komandā vārds "vim" izsauc teksta redaktoru, bet vārds "tutor" ir faila nosaukums, kurā ir saglabāta izmainītā pamācība. 5. Kad esat sapratis veicamās darbības, izpildiet tās. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. nodarbības APKOPOJUMS 1. Kursoru pārvieto ar bultiņu vai arī h,j,k,l taustiņiem: h (pa kreisi) j (lejup) k (augšup) l (pa labi) 2. Lai ar Vim rediģētu noteiktu failu, ievadiet komandu: vim fails 3. Lai izietu no Vim ievadiet: :q! lai pazaudētu izmaiņas. :wq lai saglabātu izmaiņas. 4. Lai izdzēstu burtu zem kursora, spiediet x 5. Lai ievietotu vai pievienotu tekstu, spiediet: i ievadāmais teksts lai ievietotu pirms kursora A pievienojamais teksts lai pievienotu rindas beigās PIEZĪME: spiešana atgriezīs jūs normālajā režīmā, vai arī atcels nepareizu vai daļēji ievadītu komandu. Tagad dodieties uz 2. nodarbību. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.1 nodarbība: DZĒŠANAS KOMANDAS ** Lai izdzēstu vārdu, spiediet dw ** 1. Nospiediet lai pārliecinātos, ka esat normālajā režīmā. 2. Pārvietojiet kursoru uz rindu ar atzīmi --->. 3. Pārvietojiet kursoru uz izdzēšamā vārda sākumu. 4. Ievadiet dw lai izdzēstu nepieciešamo vārdu. PIEZĪME: Nospiežot d, ekrāna labajā apakšējā stūrī parādīsies d burts. Tas ir tāpēc, ka Vim gaida nākamo komandu (burtu w). Ja jūs redzat citu burtu, vai neredzat neko, esat kaut ko izdarījis nepareizi. Tad spiediet un sāciet no sākuma. ---> Šajā kuku teikumā ir tata daži lala vārdi, kuri mumu nav vajadzīgi. 5. Izpildiet 3. — 4. soļus, līdz teksts ir pareizs un dodieties uz 2.2. nodarbību. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.2 nodarbība: CITAS DZĒŠANAS KOMANDAS ** Lai izdzēstu līdz rindas beigām, spiediet d$ ** 1. Nospiediet lai pārliecinātos, ka esat normālajā režīmā. 2. Pārvietojiet kursoru uz rindu ar atzīmi --->. 3. Pārvietojiet kursoru līdz pirmā teikuma beigām (PĒC pirmā punkta). 4. Ievadiet d$ lai izdzēstu tekstu no kursora līdz rindas beigām. ---> Kāds ir ievadījis teikuma beigas divreiz. ievadījis teikuma beigas divreiz. 5. Dodieties uz 2.3 nodarbību, lai labāk izprastu, kā tas notiek. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.3 nodarbība: OPERATORI UN KOMANDAS Daudzas tekstu mainošās komandas sastāv no operatora un kustības. Dzēšanas komanda, kuru izsauc ar d operatoru vispārīgā gadījumā ir sekojoša: d kustība Kur: d - ir dzēšanas operators. kustība - ir operators, kas nosaka dzēšanas veidu. Biežāk izplatītās kustības ir: w - līdz nākamā vārda sākumam, NEIESKAITOT tā pirmo burtu. e - līdz tekošā vārda beigām, IESKAITOT pēdējo burtu. $ - līdz rindas beigām, IESKAITOT tās pēdējo burtu. Piemēram, ievadot de tiks izdzēsts teksts no kursora līdz rindas beigām. PIEZĪME: Ievadot kustības komandu normālajā režīmā, tā pārvietos kursoru uz norādīto vietu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.4 nodarbība: KUSTĪBAS SKAITA IZMANTOŠANA ** Pirms kustības ievadot skaitli, tā tiks atkārtota norādās reizes. ** 1. Pārvietojiet kursoru uz līniju ar atzīmi --->. 2. Ievadiet 2w lai pārvietotu kursoru par 2 vārdiem uz priekšu. 3. Ievadiet 3e lai pārvietotu kursoru par 3 vārdiem atpakaļ. 4. Ievadiet 0 (nulli), lai pārvietotu kursoru uz rindas sākumu. 5. Atkārtojiet 2. — 3. soļus ar dažādiem skaitļiem. ---> Šī ir rinda ar vārdiem, kurā jūs varat pārvietoties. 6. Dodieties uz nodarbību 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.5 nodarbība: SKAITĻA IZMANTOŠANA DZĒŠANAI ** Ievadot skaitli pirms operatora, tas tiks atkārtots norādītās reizes. ** Pirms augšminētajām dzēšanas un pārvietošanās darbībām var ievadīt skaitli, lai norādītu cik reizes to izpildīt, formā: d skaitlis kustība 1. Pārvietojiet kursoru uz pirmo vārdu ar LIELAJIEM BURTIEM rindā ar atzīmi --->. 2. Ievadiet komandu d2w lai izdzēstu divus vārdus ar LIELAJIEM BURTIEM 3. Atkārtojiet pirmo soli, dzēšanas komandai norādot dažādus skaitļus, lai izdzēstu visus vārdus ar LIELAJIEM BURTIEM ---> šajā ABC DE rindā FGHI JK LMN OP ir jāizdzēš liekie Q RS TUV vārdi ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.6 nodarbība: DARBĪBAS AR RINDĀM ** Ievadiet dd lai izdzēstu visu teksta rindu. ** Tā kā veselas rindas izdzēšana ir izplatīta darbība, Vi dizaineri nolēma tās dzēšanu realizēt ar dubultu d ievadīšanu. 1. Pārvietojiet kursoru uz otro rindu ar atzīmi ---> 2. Ievadiet dd lai izdzēstu rindu. 3. Pārvietojiet kursoru uz ceturto rindu. 4. Ievadiet 2dd lai izdzēstu divas rindas. ---> 1) Astoņi kustoņi, ---> 2) astoņi kustoņi, ---> 3) kas tos astoņus kustoņus pirks? ---> 4) Zirgs. ---> 5) Astoņi kustoņi, ---> 6) astoņi kustoņi, ---> 7) kas tos astoņus kustoņus pirks? ---> 8) Cirks. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.7 nodarbība: ATCELŠANAS KOMANDA ** Lai atceltu darbību, spiediet u ** ** Lai atceltu visas darbības tekošajā rindā, spiediet U ** 1. Pārvietojiet kursoru uz rindu ar atzīmi ---> un novietojiet to uz pirmās kļūdas. 2. Pārvietojiet kursoru un ievadiet x lai izdzēstu visus liekos burtus. 3. Ievadiet u lai atceltu iepriekšējo komandu. 4. Šī darbība atcels iepriekšējo darbību, kuru veicāt, ievadot x 5. Ievadiet U lai atgrieztos sākuma stāvoklī. 6. Ievadiet u vairākas reizes, lai atceltu U un iepriekšējās komandas. 7. Ievadiet CTRL-R t.i.: nospiediet CTRL un, to neatlaižot, Shift un to neatlaižot un r vairākas reizes, lai atceltu atcelšanas darbības. ---> Iizlabojiet kļūudas šaajā riindā, aatceliet tās un aatceliet aatcelšanu. 8. Šīs ir svarīgas un noderīgas iespējas. Tagad pārejiet uz 2. nodarbības apkopojumu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2. nodarbības APKOPOJUMS 1. Lai izdzēstu vārdu, uz kura atrodas kursors, ievada: dw 2. Lai izdzēstu rindu no kursora līdz tās beigām, ievada: d$ 3. Lai izdzēstu visu rindu, ievada: dd 4. Lai atkārtotu kustības darbību, pirms tās ievada skaitli, piemēram: 2w 5. Lai atkārtotu izmaiņu darbību, komandu formāts ir sekojošs: operators [skaitlis] kustība kur: operators - ir veicamā darbība, piemēram, d lai dzēstu [skaitlis] - ir neobligāts darbības atkārtojumu skaits kustība - pārvieto kursoru tik tālu, cik ir veicama darbība, piem: w lai pārvietotos par vienu vārdu, $ lai pārvietotos līdz rindas beigām u.tml. 6. Lai pārvietotos uz rindas sākumu, ievada: 0 (nulli) 7. Lai atceltu iepriekšējo darbību, ievada: u (mazo u) Lai atceltu visas rindā veiktās izmaiņas, ievada: U (Shift+U) Lai atceltu atcelšanas darbības, ievada: CTRL-R (Ctrl+Shift+r) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.1 nodarbība: IEVIETOŠANAS DARBĪBA ** Lai pēc kursora ievietotu iepriekš izdzēstu tekstu, spiediet p ** 1. Pārvietojiet kursoru uz pirmo rindu ar atzīmi ---> 2. Ievadiet dd lai izdzēstu visu rindu un saglabātu to reģistrā. 3. Pārvietojiet kursoru uz c) rindu (virs vietas, kur būtu jāievieto dzēstā rinda). 4. Spiediet p lai ievietotu reģistrā saglabāto rindu. 5. Atkārtojiet soļus 2 līdz 4 līdz rindas ir pareizajā secībā. ---> d) Zirgs. ---> c) kas tos astoņus kustoņus pirks? ---> b) astoņi kustoņi, ---> a) Astoņi kustoņi, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.2 nodarbība: AIZVIETOŠANAS KOMANDA ** Lai aizvietotu burtu ar citu, ievadiet r un nepieciešamo burtu. ** 1. Pārvietojiet kursoru uz pirmo rindu ar atzīmi ---> 2. Pārvietojiet kursoru, lai iezīmētu pirmo nepareizo burtu. 3. Ievadiet r un tad burtu, uz kuru iezīmēto ir nepieciešams nomainīt. 4. Atkārtojiet soļus 2 un 3 līdz ir pirmā rinda atbilst otrajai rindai. ---> Iavadut šo rixdu, kuds ar nuspeedis napariizus teusteņus! ---> Ievadot šo rindu, kāds ir nospiedis nepareizus taustiņus! 5. Tagad dodieties uz 3.3. nodarbību. PIEZĪME: Atcerieties, ka jums ir jāmācās darbojoties, nevis vienkārši mēģinot atcerēties! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.3 nodarbība: IZMAIŅU DARBĪBA ** Lai izmainītu tekstu līdz vārda beigām, spiediet ce ** 1. Pārvietojiet kursoru uz pirmo rindu ar atzīmi ---> 2. Novietojiet kursoru virs pirmā Š vārdā Šma. 3. Ievadiet ce un izlabojiet vārdu uz pareizu (šajā gad. "Šīs"). 4. Spiediet un pārvietojiet kursoru uz nākamo maināmo vārdu. 5. Atkārtojiet soļus 3 un 4 līdz pirmā un otrā rinda ir vienādas. ---> Šma rindas vamula nepieciešams šimahaļ, lietojot šašābiļabita darbību. ---> Šīs rindas vārdus nepieciešams izlabot, lietojot izmainīšanas darbību. Ievērojiet, ka pēc ce un vārda ievades jūs paliekat ievietošanas režīmā. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.4 nodarbība: CITAS MAINĪŠANAS DARBĪBAS AR c ** Izmaiņu kustības operatoru lieto tieši tāpat kā dzēšanai. ** 1. Izmaiņu kustības operators darbojas tāpat kā dzēšanai. Formāts ir: c [skaitlis] kustība 2. Var lietot tos pašus kustības operatorus w (vārds) un $ (rindas beigas). 3. Pārvietojiet kursoru uz pirmo rindu ar atzīmi --->. 4. Pārvietojiet kursoru uz pirmo kļūdu. 5. Ievadiet c$ rakstiet nomaināmo tekstu līdz rindas beigām un spiediet . ---> Šī teksta beigas nepieciešams izlabot, lietojot c$ komandu. ---> Šī teksta beigas nepieciešams izlabot, lietojot c$ šari-vari-traļi-muļi. PIEZĪME: Lai labotu nepareizi ievadītu tekstu, spiediet taustiņu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3. NODARBĪBAS APKOPOJUMS 1. Lai ievietotu izdzēsto tekstu, spiediet p taustiņu. Ar to ievietosiet dzēsto tekstu PĒC kursora. (Ja bija izdzēsta vesela rinda, tā tiks ievietota rindā VIRS kursora.) 2. Lai izmainītu burtu zem kursora, spiediet r un pēc tam jums nepieciešamo rakstzīmi. 3. Izmaiņu operators ļauj jums nomainīt tekstu no kursora līdz kustības operatora norādītajai vietai. Piemēram, ievadot ce jūs izmaināt tekstu no kursora līdz VĀRDA beigām, bet ievadot c$ jūs nomaināt tekstu no kursora līdz RINDAS beigām. 4. Izmaiņu komandas formāts ir: c [skaitlis] kustība Tagad dodieties uz nākamo nodarbību. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.1 nodarbība: KURSORA VIETA FAILĀ UN FAILA STATUSS ** Lai noteiktu kursora atrašanās vietu failā un faila statusu, spiediet CTRL-g Lai pārvietotu kursoru uz noteiktu faila rindu, spiediet G ** PIEZĪME: Pirms pildīt šo uzdevumu, izlasiet visas tā darbības līdz beigām! 1. Spiediet Ctrl taustiņu, un neatlaižot to, spiediet g saīsināti CTRL-g. Redaktora ekrāna apakšā parādīsies statusa rinda, ar faila statusu un rindu kurā atrodas kursors, kā arī citu informāciju. Atcerieties šo vietu, lai izpildītu 3. darbību. PIEZĪME: Jūs varat redzēt kursora atrašanās vietu failā vienmēr ekrāna labajā apakšējā stūrī, ja redaktoram ir ieslēgta ruler opcija. (Skatiet palīdzību par šo komandu, ievadot :help 'ruler') 2. Lai pārvietotu kursoru uz faila beigām, ievadiet G Lai pārvietotu kursoru uz faila sākumu, ievadiet gg 3. Ievadiet iepriekš iegaumētās rindas numuru un tad ievadiet G Ar šo jūs pārvietosiet kursoru atpakaļ rindā, kurā jūs sākāt šo nodarbību. 4. Atkārtojiet darbības 1. — 3. tik ilgi, kamēr droši atceraties šīs komandas. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.2 nodarbība: MEKLĒŠANAS KOMANDA ** Lai meklētu tekstā, spiediet / un ievadiet meklējamo frāzi. ** 1. Normālajā režīmā spiediet / taustiņu. Ievērojiet, ka kursors pārvietojas uz redaktora apakšējo rindu, līdzīgi, kā nospiežot taustiņu : lai ievadītu dažādas komandas. 2. Tad ievadiet vārdu kļūūūda un spiediet . Ar šo jūs izgaismosiet atrasto meklējamo redaktorā. 3. Lai atrastu nākošo vārdu, spiediet n taustiņu. Lai pārvietotu kursoru uz nākamo atrasto vietu tekstā uz augšu, ievadiet N 4. Lai meklētu frāzi augšupejošā virzienā / vietā lietojiet ? 5. Lai atgrieztos uz vietu, kurā sākāt meklēšanu, spiediet CTRL-O (spiediet Ctrl, tad, to neatlaižot spiediet arī o). To var turpināt, lai dotos tālāk atpakaļ, vai arī spiest CTRL-i, lai dotos uz priekšu. ---> "kļūūūda" nav pareizs vārds; kļūda ir vienkārši kļūda. PIEZĪME: Ja ir atrasta pēdējā meklējamā frāze faila beigās vai sākumā, pēc nākamā meklējuma tiks atrasta pirmā/pēdējā faila sākumā/beigās, ja vien nav atslēgta wrapscan opcija. PIEZĪME: Ja vairs nevēlaties izgaismot meklējamo tekstu, spiediet / un ievadiet nesakarīgu/neatrodamu frāzi. (VIM speciālisti parasti piekārto savu taustiņu kombināciju šai darbībai.) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.3 nodarbība: SAISTĪTO IEKAVU MEKLĒŠANA ** Lai atrastu saistīto ),], vai } iekavu, ievadiet % ** 1. Novietojiet kursoru uz iekavām (, [, { rindā ar atzīmi --->. 2. Ievadiet % simbolu. 3. Kursors pārvietosies uz izvēlētajai iekavai atbilstošo pretējo iekavu. 4. Ievadiet % lai pārvietotos atpakaļ uz atbilstošo pretējo iekavu. 5. Pārvietojiet kursoru uz cita veida iekavu (,),[,],{ or } un pārbaudiet, kas notiek atkārtoti ievadot % ---> Šī ir (testa rinda ar dažādām (-veida, [-veida] un {-veida} iekavām.)) PIEZĪME: Šī iespēja ir ļoti noderīga, lai pārbaudītu nelīdzsvarotas iekavas programmas kodā ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.4 nodarbība: AIZVIETOŠANAS KOMANDA ** Ievadiet :s/vecais/jaunais/g lai aizvietotu 'vecais' ar 'jaunais'. ** 1. Novietojiet kursoru rindā ar atzīmi --->. 2. Ievadiet :s/ss/s Ievērojiet, ka šī komanda nomaina tikai pirmo atrasto frāzi. 3. Tagad ievadiet :s/ss/s/g Ievērojiet, ka slēdzis g liek aizvietot frāzi visās atrastajās vietās. ---> visslabākaiss laikss vērot ziedus ir pavassariss. 4. Aizvietošanas komandai var norādīt darbības diapazonu: ievadiet :#,#s/vecais/jaunais/g kur #,# ir diapazona sākuma un beigu rinda ievadiet :%s/vecais/jaunais/g lai aizvietotu frāzi visā failā ievadiet :%s/vecais/jaunais/gc lai aizvietotu visā failā ar uzaicinājumu apstiprināt katru aizvietošanu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.5 nodarbība: DARBĪBAS ATKĀRTOŠANA ** Lai atkārtotu iepriekšējo darbību, spiediet . ** Atšķirībā no citiem teksta redaktoriem, Vim par vienu darbību uzskata vairāku ievadīto komandu virkni ārpus normālā režīma (t.i. ievietošanas, aizstāšanas u.tml.). Tas ļauj viegli atkārtot sarežģītas darbības, spiežot . taustiņu. 1. Pārliecinieties, ka esat normālajā režīmā, spiežot . 2. Sameklējiet pirmo skaitli rindā ar --->, ievadot: /11 3. Ievadiet komandu 2sll un atgriezieties normālajā režīmā. 4. Lai sameklētu nākamo skaitli un atkārtotu iepriekšējo aizstāšanas darbību, spiediet: n. ---> ba11e ce11e ha11e le11e ka11a mu11a nu11e ra11ijs šte11e ti11s ze11is ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4. nodarbības APKOPOJUMS 1. CTRL-G statusa rindā parāda faila nosaukumu, statusu un kursora atrašanās vietu G pārvieto kursoru uz faila beigām. skaitlis G pārvieto kursoru uz norādīto rindu. gg pārvieto kursoru uz faila sākumu. 2. Ievadot / un frāzi, to meklē failā uz priekšu Ievadot ? un frāzi, to meklē failā atpakaļ Pēc pirmās atrastās frāzes, spiežot n sameklē nākamo frāzi tajā pašā virzienā vai arī, spiežot N, sameklē nākamo frāzi pretējā virzienā. CTRL-o pārvieto kursoru uz iepriekšējo izmaiņu vietu, CTRL-i uz nākamo vietu. . atkārto iepriekšējo darbību, ko var apvienot ar meklēšanu: n. vai N. 3. Ja kursors atrodas uz (,),[,],{, vai }, ievadot % kursors pārvietojas uz pretējo iekavu. 4. Lai aizvietotu frāzi tekošajā rindā vienreiz, ievadiet: :s/vecais/jaunais Lai aizvietotu visas frāzes tekošajā rindā, ievadiet: :s/vecais/jaunais/g Lai aizvietotu visas frāzes starp norādītajām rindām: :#,#s/vecais/jaunais/g Lai aizvietotu visas frāzes failā, ievadiet: :%s/vecais/jaunais/g Lai aizvietotu visas frāzes failā ar apstiprinājumu: :%s/vecais/jaunais/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.1 nodarbība: KĀ IZPILDĪT ĀRĒJU KOMANDU ** Ievadiet :! un pēc tam sekojošo ārējo komandu. ** 1. Nospiediet ierasto : lai parādītu uzaicinājumu statusa rindā 2. Šajā rindā ievadiet ! (izsaukuma zīmi). Tā norāda VIM, ka būs jāizpilda ārēja (komandrindas čaulas) komanda 3. Pēc tam ievadiet, piemēram ls un spiediet Šī komanda ekrāna apakšējā daļā parādīs failu sarakstu. Ja lietojat Windows, ls komandas vietā ievadiet dir PIEZĪME: Izsaucamās komandas izpilda nospiežot taustiņu, kopš šī brīža mēs to vairs īpaši neuzsvērsim. Lai aizvērtu komandas izvadīto saturu, arī jāspiež taustiņš. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.2 nodarbība: VAIRĀK PAR FAILU SAGLABĀŠANU ** Lai saglabātu failu ar noteiktu nosaukumu, ievadiet :w NOSAUKUMS ** 1. Ievadiet :!ls (vai :!dir), lai apskatītu failu sarakstu. Atcerieties, ka pēc komandu nosaukuma ievades jānospiež ! 2. Izdomājiet jaunu faila nosaukumu, piemēram, test 3. Tagad ievadiet: :w test1 (kur test ir jūsu izvēlētais faila nosaukums) 4. Šī komanda saglabās vim pamācību failā test Lai pārbaudītu, ievadiet :!ls vai :!dir un sameklējiet failu sarakstā PIEZĪME: Ja jūs iziesiet no vim un palaidīsiet to ar komandu vim test vim atvērs jūsu saglabāto test failu. 5. Tagad izdzēsiet šo failu, ievadot komandu: :!rm test Vai, ja lietojat Windows, komandu: :!del test ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.3 nodarbība: TEKSTA DAĻĒJA SAGLABĀŠANA ** Lai saglabātu tikai daļu no faila, ievadiet: v kustība :w fails ** 1. Pārvietojiet kursoru uz šo rindu 2. Spiediet v un pārvietojiet kursoru līdz piektajam punktam. 3. Spiediet : simbolu. Statusa rindā parādīsies :'<,'> 4. Ievadiet w test kur test ir izvēlētais faila nosaukums. Pirms spiest , pārliecinieties, ka redzat :'<,'>w test 5. Vim saglabās iezīmēto tekstu failā test. Neizdzēsiet šo failu, mēs to izmantosim nākošajā nodarbībā! PIEZĪME: Spiežot v VIM pārslēdzas vizuālā iezīmēšanas režīmā. Jūs varat izmantot kursora pārvietošanas komandas, lai iezīmētu nepieciešamo tekstu. Pēc teksta iezīmēšanas, jūs varat izmantot dažādus operatorus, lai kaut ko darītu ar iezīmēto tekstu. Piemēram, spiežot d jūs izdzēsīsit iezīmēto tekstu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.4 nodarbība: FAILU SATURA IEGŪŠANA UN APVIENOŠANA ** Lai ievietotu faila saturu, ievadiet :r fails ** 1. Novietojiet kursoru tieši virs šīs rindas. PIEZĪME: Pēc 2. soļa izpildes, jūs redzēsiet tekstu no 5.3 nodarbības. Pēc tam pārvietojiet kursoru uz leju, lai lasītu tālāk šīs nodarbības saturu. 2. Iegūstiet test faila saturu, ievadot komandas :r test kur test ir jūsu iepriekšējā nodarbībā saglabātais fails. Ielasītā faila saturs tiek ievietots zem kursora. 3. Lai pārbaudītu, ka darbība ir izdevusies, pārliecinieties, ka 5.4 nodarbības aprakstā ir saturs no 5.3 nodarbības. PIEZĪME: Jūs varat ievadīt saturu failā, izpildot ārēju komandu. Piemēram, ar komandu :r !ls jūs ievietosiet failā tekošās mapes failu sarakstu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5. nodarbības APKOPOJUMS 1. :!komanda izpilda ārēju komandu Daži noderīgi piemēri: (MS-DOS) (Unix) :!dir :!ls - parāda mapes saturu :!del fails :!rm fails - izdzēš norādīto failu 2. :w fails saglabā tekošo failu failā ar norādīto nosaukumu. 3. v kustība :w fails saglabā vizuāli iezīmēto tekstu norādītajā failā. 4. :r fails ielasa faila saturu tekošajā failā zem kursora. 5. :r !ls ielasa izpildītās komandas atgriezto saturu failā zem kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.1 nodarbība: ATVĒRŠANAS KOMANDA ** Ievadiet o lai ievadītu jaunu rindu virs kursora un pārietu ievades režīmā. ** 1. Pārvietojiet kursoru uz rindu ar atzīmi --->. 2. Ievadiet mazo o lai ievadītu jaunu rindu virs kursora un pārslēgtos ievades režīmā. 3. Ievadiet kādu tekstu un spiediet , lai izietu no ievades režīma. ---> Ievadot o izveidosiet rindu virs šīs un pāriesiet ievades režīmā. 4. Lai izveidotu rindu ZEM kursora, ievadiet lielo O. ---> Ievadot O izveidosiet rindu zem šīs un pāriesiet ievades režīmā. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.2 nodarbība: PIEVIENOŠANAS KOMANDA ** Ievadiet a lai ievietotu jaunu tekstu PĒC kursora. ** 1. Pārvietojiet kursoru uz pirmo rindu ar atzīmi --->. 2. Spiediet e līdz kursors ir pirmā nepabeigtā vārda beigās. 3. Ievadiet a (mazo a), lai pievienotu tekstu pēc kursora. 4. Ievadiet tekstu, lai abas rindas ar atzīmi ---> sakrīt. Spiediet , lai pārietu normālajā režīmā. 5. Ievadiet e, lai novietotu kursoru nākamā nepabiegtā vārda beigās, un atkārtojiet soļus 3 un 4. ---> Šī rin ju palīd praktiz tekst pievienoš vārd bei ---> Šī rinda jums palīdzēs praktizēties teksta pievienošanā vārdu beigās. PIEZĪME: No normālā režīma pāriet uz ievades režīmu ievadot a, i, A un I. Atšķirība ir tikai tā, kur tiek uzsākta teksta ievade: a – pēc kursora, i — pirms kursora, A — rindas beigās, I — rindas sākumā. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.3 nodarbība: VĒL VIENS AIZVIETOŠANAS VEIDS ** Lai aizvietotu vairāk kā vienu rakstzīmi, spiediet R ** 1. Pārvietojiet kursoru uz rindu ar atzīmi --->. 2. Pārvietojiet kursoru uz pirmo no xxx 3. Spiediet R un ievadiet skaitli, kas norādīts apakšējā rindā tā, lai ievadītie cipari pārraksta xxx. 4. Lai izietu no aizvietošanas režīma, spiediet . Pārliecinieties, ka pārējais rindas saturs nav izmainīts. 5. Atkārtojiet 2. — 4. soļa darbības, lai līdzīgi aizvietotu pārējos xxx. ---> Saskaitot xxx ar xxx iegūstam xxx. ---> Saskaitot 123 ar 456 iegūstam 579. PIEZĪME: Aizvietošanas režīms darbojas līdzīgi ievietošanas režīmam, ar tikai ievadītās rakstzīmes aizvieto esošās. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.4 nodarbība: TEKSTA KOPĒŠANA UN IEVIETOŠANA ** Lai kopētu tekstu, izmantojiet y, bet lai ievietotu — p ** 1. Pārvietojiet kursoru uz rindu ar atzīmi ---> un novietojiet kursoru pēc "a)" 2. Ieslēdziet vizuālo režīmu, spiežot v un pārvietojiet kursoru līdz "pirmais" (to neskaitot) 3. Spiediet y lai iekopētu izcelto tekstu 4. Pārvietojiet kursoru uz nākamās rindas beigām, spiežot j$ 5. Spiediet p lai ievietotu nokopēto tekstu. Pēc tam spiediet 6. Ierakstiet otrās rindas beigās vārdu "otrais" 7. Līdzīgi, lietojot v y un p, nokopējiet vārdu "simtdivdesmitpiecgadnieks", lai iegūtu rindu: šis ir otrais simtdivdesmitpiecgadnieks. ---> a) šis ir pirmais simtdivdesmitpiecgadnieks. b) PIEZĪME: y var lietot kopā ar pārvietošanās operatoru, piemēram, spiežot yw var nokopēt izvēlēto vārdu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.5 nodarbība: IESTATĪJUMU MAIŅA ** Iestatiet meklēšana un aizstāšana, neievērojot lielos/mazos burtus ** 1. Sameklējiet vārdu 'neievērot', ievadot: /neievērot Atkārtojiet meklēšanu, spiežot n 2. Iestatiet 'ic' (Neievērot lielos/mazos burtus) iestatījumu, ievadot: :set ic 3. Tagad sameklējiet 'neievērot' atkārtoti, spiežot n Ievērojiet, ka tiek atrasti vārdi Neievērot un NEIEVĒROT. 4. Iestatiet 'hlsearch' un 'incsearch' opcijas, ievadot: :set hls is 5. Ievadiet atkal sekojošo komandu, un skatieties, kas notiek: /neievērot 6. Lai atceltu lielo/mazo burtu neievērošanu, ievadiet: :set noic PIEZĪME: Lai atceltu atrasto vietu izcelšanu, ievadiet: :nohlsearch PIEZĪME: Ja vēlaties meklēt gan lielos, gan mazos burtus vienā meklējumā, ievadiet papildu komandu \c Piemēram: /neievērot\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6. nodarbības APKOPOJUMS Lai pārietu uz ievietošanas režīmu un: 1. lai ievietotu jaunu rindu zem tekošās, ievadiet o lai ievietotu jaunu rindu virs tekošās, ievadiet O 2. Lai ievietotu tekstu pēc kursora, ievadiet a Lai ievietotu tekstu rindas beigās, ievadiet A Normālajā režīmā: 3. e komanda pārvieto kursoru uz vārda beigām. 4. y komanda nokopē tekstu, bet p komanda ievieto to. 5. R ieslēdz aizvietošanas režīmu, līdz tiek nospiests . 6. Ievadot ":set xxx" iestata "xxx" opciju. Dažas no tām ir sekojošas: 'ic' 'ignorecase' meklējot neievēro lielos/mazos burtus. 'is' 'incsearch' uzreiz meklē daļēji ievadīto frāzi. 'hls' 'hlsearch' izgaismo atrastās frāzes. Var norādīt gan īso, gan garo opcijas nosaukumu. 7. Lai opciju izslēgtu, pievieno priedēkli "no". Piemēram, :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7.1 nodarbība: PALĪDZĪBAS IEGŪŠANA ** Iebūvētās palīdzības izmantošana ** Vim ir plaša iebūvētā palīdzības sistēma. Lai sāktu to lietot, ievadiet vieno no sekojošām komandām: - spiediet taustiņu (ja jūsu tastatūrā tāds pastāv) - spiediet taustiņu (ja jūsu tastatūrai ir tāds) - ievadiet :help Izlasiet palīdzības aprakstu, lai saprastu, kā tas darbojas. Ievadiet CTRL-W CTRL-W lai pārslēgtos uz citu logu. Ievadiet :q lai aizvērtu palīdzības logu. Jūs varat atrast konkrētu palīdzību par jebkuru komandu, ievadot: ":help" komanda. Piemēram (neaizmirstiet komandas beigās nospiest ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7.2 nodarbība: IZVEIDOJIET SĀKŠANAS SKRIPTU ** Ieslēdziet Vim iespējas ** Vim ir daudz plašākas iespējas, nekā Vi, bet vairums no tām, pēc noklusēšanas, nav ieslēgtas. Lai tās ieslēgtu, izveidojiet "vimrc" failu. 1. Atkarībā no lietotās operētājsistēmas, atveriet "vimrc" failu sekojoši: :e ~/.vimrc Unix-veidīgā (t.sk. MacOS un Linux) :e $VIM/_vimrc VMS-veidīgā (t.sk. MS-Windows) 2. Ielasiet "vimrc" šablona faila saturu, ievadot: :r $VIMRUNTIME/vimrc_example.vim 3. Saglabājiet šablona saturu savā iestatījumu failā: :w Kad nākamo reizi atvērsiet Vim, tajā tiks izmantota sintakses izgaismošana. Jūs varat ievietot arī citas iestatījumu iespējas savā "vimrc" failā. Papildu informācijai ievadiet :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7.3 nodarbība: AUTOMĀTISKĀ PABEIGŠANA ** Automātisko pabeigšanu komandrindā izsauc ar CTRL-D un ** 1. Pārliecinieties, ka Vim ir ar Vi nesavietojamā režīmā: :set nocp 2. Apskatiet tekošās mapes saturu Vim, ievadot: :!ls vai :!dir 3. Ievadiet komandas sākumu ar: :e 4. Spiediet CTRL-D un Vim parādīs visas komandas, kuras sākas ar "e". 5. Spiediet un Vim automātiski pabeigs komandu uz ":edit". 6. Spiediet atstarpes taustiņu un sāciet ievadīt faila nosaukumu, piemēram: :edit FIL 7. Spiediet un Vim pabeigs faila nosaukumu, ja norādītais sākums ir unikāls. PIEZĪME: Pabeigšana strādā dažādām komandām. Vienkārši mēģiniet spiest CTRL-D un . Šī iespēja var būt īpaši noderīga, ievadot :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7. nodarbības APKOPOJUMS 1. Lai atvērtu palīdzības logu, ievadiet :help vai spiediet vai 2. Lai atvērtu palīdzību par "komanda", ievadiet :help komanda 3. Lai pārslēgtos uz citu logu, spiediet: CTRL-W CTRL-W 4. Lai aizvērtu tekošo logu, ievadiet: :q 5. Izveidojiet savu "vimrc" sākšanas skriptu ar saviem iestatījumiem. 6. Ievadot : komanda spiediet CTRL-D, lai apskatītu iespējamos pabeigšanas veidus. Lai pabeigtu komandu, spiediet . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ar šo Vim ievads ir pabeigts. Tajā tika sniegts īss Vim redaktora apraksts, ar kuru pietiek, lai Vim lietotu vienkāršām darbībām. Vim iespējas ir daudz plašākas, un tajā ir daudz vairāk komandu. Lai apskatītu tās, ievadiet: ":help user-manual". Tālākai apmācībai tiek rekomendētas sekojošas grāmatas: Vim - Vi Improved, Steve Oualline, New Riders Šī grāmata ir tieši par Vim, un ir ļoti ieteicama iesācējiem. Daudzi piemēri un attēli no tās pieejami: http://iccf-holland.org/click5.html Otra, vecāka grāmata ir par Vi, nevis Vim, bet arī ir ļoti noderīga: Learning the Vi Editor, Linda Lamb, O'Reilly & Associates Inc. Tajā ir visplašākais Vi iespēju apraksts, grāmatas sestajā laidienā ir aprakstītas arī Vim iespējas. Šīs pamācības variantu angļu valodā izveidoja: * Michael C. Pierce, * Robert K. Ware, * Charles Smith, * Bram Moolenaar. Pamācību latviešu valodā tulkoja: * Valdis Vītoliņš ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!PEqqvim80/tutor/tutor.hu.utf-8nu[=============================================================================== == Ü d v ö z ö l j ü k a V I M - o k t a t ó b a n - 1.5-ös verzió == =============================================================================== A Vim egy nagyon hatékony szerkesztő, amelynek rengeteg utasítása van, túl sok, hogy egy ilyen oktatóban (tutorban), mint az itteni mindet elmagyarázzuk. Ez az oktató arra törekszik, hogy annyit elmagyarázzon, amennyi elég, hogy könnyedén használjuk a Vim-et, az általános célú szövegszerkesztőt. A feladatok megoldásához 25-30 perc szükséges attól függően, mennyit töltünk a kísérletezéssel. A leckében szereplő utasítások módosítani fogják a szöveget. Készítsen másolatot erről a fájlról, ha gyakorolni akar. (Ha "vimtutor"-ral indította, akkor ez már egy másolat.) Fontos megérteni, hogy ez az oktató cselekedve taníttat. Ez azt jelenti, hogy Önnek ajánlott végrehajtania az utasításokat, hogy megfelelően megtanulja azokat. Ha csak olvassa, elfelejti! Most bizonyosodjon, meg, hogy a Caps-Lock gombja NINCS lenyomva, és Nyomja meg megfelelő számúszor a j gombot, hogy az 1.1-es lecke teljesen a képernyőn legyen! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.1. lecke: A KURZOR MOZGATÁSA ** A kurzor mozgatásához nyomja meg a h,j,k,l gombokat az alábbi szerint. ** ^ k Tipp: A h billentyű van balra, és balra mozgat < h l > A l billentyű van jobbra, és jobbra mozgat j A j billentyű olyan, mint egy lefele nyíl v 1. Mozgassa a kurzort körbe az ablakban, amíg hozzá nem szokik! 2. Tartsa lenyomva a lefelét (j), akkor ismétlődik! ---> Most tudja, hogyan mehet a következő leckére. 3. A lefelé gomb használatával menjen a 1.2. leckére! Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az -et, hogy normál módba kerüljön, és ismételje meg a parancsot! Megj: A kurzor gomboknak is működniük kell, de a hjkl használatával sokkal gyorsabban tud, mozogni, ha hozzászokik. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.2. lecke: BE ÉS KILÉPÉS A VIMBŐL !! MEGJ: Mielőtt végrehajtja az alábbi lépéseket, olvassa végig a leckét !! 1. Nyomja meg az gombot (hogy biztosan normál módban legyen). 2. Írja: :q! . ---> Ezzel kilép a szerkesztőből a változások MENTÉSE NÉLKÜL. Ha menteni szeretné a változásokat és kilépni, írja: :wq 3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe az oktatóba hozza: Ez valószínűleg: vimtutor Normális esetben ezt írná: vim tutor.hu ---> 'vim' jelenti a vimbe belépést, 'tutor.hu' a fájl, amit szerkeszteni kíván. 4. Ha megjegyezte a lépéseket és biztos magában, hajtsa végre a lépéseket 1-től 3-ig, hogy kilépjen és visszatérjen a szerkesztőbe. Azután menjen az 1.3. leckére. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.3. lecke: SZÖVEG SZERKESZTÉSE - TÖRLÉS ** Normál módban nyomjon x-et, hogy a kurzor alatti karaktert törölje. ** 1. Mozgassa a kurzort a ---> kezdetű sorra! 2. A hibák kijavításához mozgassa a kurzort amíg a törlendő karakter fölé nem ér. 3. Nyomja meg az x gombot, hogy törölje a nem kívánt karaktert. 4. Ismételje a 2, 3, 4-es lépéseket, hogy kijavítsa a mondatot. ---> ŐŐszi éjjjell izziik aa galaggonya rruuhája. 5. Ha a sor helyes, ugorjon a 1.4. leckére. MEGJ: A tanulás során ne memorizálni próbáljon, hanem használat során tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.4. lecke: SZÖVEG SZERKESZTÉSE - BESZÚRÁS ** Normál módban i megnyomásával lehet beilleszteni. ** 1. Az alábbi első ---> kezdetű sorra menjen. 2. Ahhoz, hogy az elsőt azonossá tegye a másodikkal, mozgassa a kurzort az első karakterre, amely UTÁN szöveget kell beszúrni. 3. Nyomjon i-t és írja be a megfelelő szöveget. 4. Amikor mindent beírt, nyomjon -et, hogy Normál módba visszatérjen. Ismételje a 2 és 4 közötti lépéseket, hogy kijavítsa a mondatot. ---> Az átható soól hizik pár ész. ---> Az itt látható sorból hiányzik pár rész. 5. Ha már begyakorolta a beszúrást, menjen az alábbi összefoglalóra. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. LECKE ÖSSZEFOGLALÓJA 1. A kurzort vagy a nyilakkal vagy a hjkl gombokkal mozgathatja. h (balra) j (le) k (fel) l (jobbra) 2. A Vimbe (a $ prompttól) így léphet be: vim FILENAME 3. A Vimből így léphet ki: :q! a változtatások eldobásával. vagy így: :wq a változások mentésével. 4. A kurzor alatti karakter törlése normál módban: x 5. Szöveg beszúrása a kurzor után normál módban: i gépelje be a szöveget MEGJ: Az megnyomása normál módba viszi, vagy megszakít egy nem befejezett részben befejezett parancsot. Most folytassuk a 2. leckével! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.1. lecke: TÖRLŐ UTASÍTÁSOK ** dw töröl a szó végéig. ** 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! 2. Mozgassa a kurzort a ---> kezdetű sorra! 3. Mozgassa a kurzort arra annak a szónak az elejére, amit törölni szeretne. Törölje az állatokat a mondatból. 4. A szó törléséhez írja: dw MEGJ: Ha rosszul kezdte az utasítást csak nyomjon gombot a megszakításához. ---> Pár szó kutya nem uhu illik pingvin a mondatba tehén. 5. Ismételje a 3 és 4 közötti utasításokat amíg kell és ugorjon a 2.2 leckére! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.2. lecke: MÉG TÖBB TÖRLŐ UTASÍTÁS ** d$ beírásával a sor végéig törölhet. ** 1. Nyomjon -et, hogy megbizonyosodjon, hogy normál módban van! 2. Mozgassa a kurzort a ---> kezdetű sorra! 3. Mozgassa a kurzort a helyes sor végére (az első . UTÁN)! 4. d$ begépelésével törölje a sor végét! ---> Valaki a sor végét kétszer gépelte be. kétszer gépelte be. 5. Menjen a 2.3. leckére, hogy megértse mi történt! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.3. lecke: UTASÍTÁSOKRÓL ÉS MOZGÁSOKRÓL A d (delete=törlés) utasítás formája a következő: [szám] d mozgás VAGY d [szám] mozgás Ahol: szám - hányszor hajtódjon végre a parancs (elhagyható, alapérték=1). d - a törlés (delete) utasítás. mozgás - amin a parancsnak teljesülnie kell (alább listázva). Mozgások rövid listája: w - a kurzortól a szó végéig, beleértve a szóközt. e - a kurzortól a szó végéig, NEM beleértve a szóközt. $ - a kurzortól a sor végéig. MEGJ: Csupán a mozgás begépelésével (parancs nélkül) a kurzor mozgás által megadott helyre kerül. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.4. lecke: EGÉSZ SOROK FELDOLGOZÁSA ** dd beírásával törölheti az egész sort. ** A teljes sor törlésének gyakorisága miatt a Vi tervezői elhatározták, hogy könnyebb lenne csupán a d-t kétszer megnyomni, hogy egy sort töröljünk. 1. Mozgassa a kurzort az alábbi kifejezések második sorára! 2. dd begépelésével törölje a sort! 3. Menjen a 3. (eredetileg 4.) sorra! 4. 2dd (ugyebár szám-utasítás-mozgás) begépelésével töröljön két sort! 1) Alvó szegek a jéghideg homokban, 2) - kezdi a költő - 3) Plakátmagányban ázó éjjelek. 4) Pingvinek ne féljetek, 5) Távolról egy vaku villant, 6) Égve hagytad a folyosón a villanyt. 7) Ma ontják véremet. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.5. lecke: A VISSZAVONÁS (UNDO) PARANCS ** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. ** 1. Menjünk az alábbi ---> kezdetű sor első hibájára! 2. x lenyomásával törölje az első felesleges karaktert! 3. u megnyomásával vonja vissza az utolsónak végrehajtott utasítást! 4. Másodjára javítson ki minden hibát a sorban az x utasítással! 5. Most nagy U -val állítsa vissza a sor eredeti állapotát! 6. Nyomja meg az u gombot párszor, hogy az U és az azt megelőző utasításokat visszaállítsa! 7. CTRL-R (CTRL gomb lenyomása mellett üssön R-t) párszor csinálja újra a visszavont parancsokat (redo)! ---> Javíítsa a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit. 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke összefoglalójára. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2. LECKE ÖSSZEFOGLALÓJA 1. Törlés a kurzortól a szó végéig: dw 2. Törlés a kurzortól a sor végéig: d$ 3. Egész sor törlése: dd 4. Egy utasítás alakja normál módban: [szám] utasítás mozgás VAGY utasítás [szám] mozgás ahol: szám - hányszor ismételjük a parancsot utasítás - mit tegyünk, pl. d a törléskor mozgás - mire hasson az utasítás, például w (szó=word), $ (a sor végéig), stb. 5. Az előző tett visszavonása (undo): u (kis u) A sor összes változásának visszavonása: U (nagy U) Visszavonások visszavonása: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.1. lecke: A BEILLESZTÉS (PUT) PARANCS ** p leütésével az utolsónak töröltet a kurzor után illeszthetjük. ** 1. Mozgassuk a kurzort az alábbi sorok első sorára. 2. dd leütésével töröljük a sort és eltárolódik a Vim pufferében. 3. Mozgassuk a kurzort azelőtt a sor ELŐTTI sorba, ahová mozgatni szeretnénk a törölt sort. 4. Normál módban írjunk p betűt a törölt sor beillesztéséhez. 5. Folytassuk a 2-4. utasításokkal hogy a helyes sorrendet kapjuk. d) Can you learn too? b) Violets are blue, c) Intelligence is learned, a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.2. lecke: AZ ÁTÍRÁS (REPLACE) PARANCS ** r és a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. ** 1. Mozgassuk a kurzort az első ---> kezdetű sorra! 2. Mozgassuk a kurzort az első hiba fölé! 3. r majd a kívánt karakter leütésével változtassuk meg a hibásat! 4. A 2. és 3. lépésekkel javítsuk az összes hibát! ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. Menjünk a 3.2. leckére! MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.3. lecke: A CSERE (CHANGE) PARANCS ** A szó egy részének megváltoztatásához írjuk: cw . ** 1. Mozgassuk a kurzort az első ---> kezdetű sorra! 2. Vigye a kurzort a Ezen szó z betűje fölé! 3. cw és a helyes szórész (itt 'bben') beírásával javítsa a szót! 4. lenyomása után a következő hibára ugorjon (az első cserélendő karakterre)! 5. A 3. és 4. lépések ismétlésével az első mondatot tegye a másodikkal azonossá! ---> Ezen a sorrrrr pár szóra meg kell változzanak a change utaskíréső. ---> Ebben a sorban pár szót meg kell változtatni a change utasítással. Vegyük észre, hogy a cw nem csak a szót írja át, hanem beszúró (insert) módba vált. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.4. lecke: TÖBBFÉLE VÁLTOZTATÁS c-VEL ** A c utasítás használható ugyanazokkal az mozgásokkal mint a törlés ** 1. A change utasítás a törléssel azonosan viselkedik. A forma: [szám] c mozgás OR c [szám] mozgás 2. A mozgások is azonosak, pl. w (szó), $ (sorvég), stb. 3. Mozgassuk a kurzort az első ---> kezdetű sorra! 4. Menjünk az első hibára! 5. c$ begépelésével a sorvégeket tegyük azonossá és nyomjunk -et! ---> Ennek a sornak a vége kiigazításra szorul, hogy megegyezzen a másodikkal. ---> Ennek a sornak a vége a c$ paranccsal változtatható meg. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3. LECKE ÖSSZEFOGLALÓJA 1. A már törölt sort beillesztéséhez nyomjunk p-t. Ez a törölt szöveget a kurzor UTÁN helyezi (ha sor került törlésre, a kurzor alatti sorba). 2. A kurzor alatti karakter átírásához az r-et és azt a karaktert nyomjuk, amellyel az eredetit felül szeretnénk írni. 3. A változtatás (c) utasítás a karaktertől az mozgás végéig változtatja meg az mozgást. Például a cw a kurzortól a szó végéig, a c$ a sor végéig. 4. A változtatás formátuma: [szám] c mozgás VAGY c [szám] mozgás Ugorjunk a következő leckére! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.1. lecke: HELY ÉS FÁJLÁLLAPOT ** CTRL-g megnyomásával megnézhetjük a helyünket a fájlban és a fájl állapotát. SHIFT-G leütésével a fájl adott sorára ugorhatunk. ** Megj: Olvassuk el az egész leckét a lépések végrehajtása előtt!! 1. Tartsuk nyomva a Ctrl gombot és nyomjunk g-t. Az állapotsor megjelenik a lap alján a fájlnévvel és az aktuális sor sorszámával. Jegyezzük meg a sorszámot a 3. lépéshez! 2. Nyomjunk Shift-G-t a lap aljára ugráshoz! 3. Üssük be az eredeti sor számát, majd üssünk shift-G-t! Ezzel visszajutunk az eredeti sorra ahol Ctrl-g-t nyomtunk. (A beírt szám NEM fog megjelenni a képernyőn.) 4. Ha megjegyezte a feladatot, hajtsa végre az 1-3. lépéseket! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.2. lecke: A KERESÉS (SEARCH) PARANCS ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. ** 1. Normál módban üssünk / karaktert! Ez és a kurzor megjelenik a képernyő alján, ahogy a : utasítás is. 2. Írjuk be: 'hiibaa' ! Ez az a szó amit keresünk. 3. A kifejezés újabb kereséséhez üssük le egyszerűen: n . A kifejezés ellenkező irányban történő kereséséhez ezt üssük be: Shift-N . 4. Ha visszafelé szeretne keresni, akkor ? kell a / helyett. ---> "hiibaa" nem a helyes módja a hiba leírásának; a hiibaa egy hiba. Megj: Ha a keresés eléri a fájl végét, akkor az elején kezdi. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.3. lecke: ZÁRÓJELEK PÁRJÁNAK KERESÉSE ** % leütésével megtaláljuk a ),], vagy } párját. ** 1. Helyezze a kurzort valamelyik (, [, vagy { zárójelre a ---> kezdetű sorban! 2. Üssön % karaktert! 3. A kurzor a zárójel párjára fog ugrani. 4. % leütésével visszaugrik az eredeti zárójelre. ---> Ez ( egy tesztsor (-ekkel, [-ekkel ] és {-ekkel } a sorban. )) Megj: Ez nagyon hasznos, ha olyan programot debugolunk, amelyben a zárójelek nem párosak! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.4. lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA ** :s/régi/új/g begépelésével az 'új'-ra cseréljük a 'régi'-t. ** 1. Menjünk a ---> kezdetű sorra! 2. Írjuk be: :s/eggy/egy . Ekkor csak az első változik meg a sorban. 3. Most ezt írjuk: :s/eggy/egg/g amely globálisan helyettesít a sorban, azaz minden előfordulást. Ez a sorban minden előfordulást helyettesít. ---> eggy heggy meggy, szembe jön eggy másik heggy. 4. Két sor között a karaktersor minden előfordulásának helyettesítése: :#,#s/régi/új/g ahol #,# a két sor sorszáma. :%s/régi/új/g a fájlbeli összes előfordulás helyettesítése. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4. LECKE ÖSSZEFOGLALÓJA 1. Ctrl-g kiírja az kurzor helyét a fájlban és a fájl állapotát. Shift-G a fájl végére megy, gg az elejére. Egy szám után Shift-G az adott számú sorra ugrik. 2. / után egy kifejezés ELŐREFELE keresi a kifejezést. 2. ? után egy kifejezés VISSZAFELE keresi a kifejezést. Egy keresés után az n a következő előfordulást keresi azonos irányban Shift-N az ellenkező irányban keres. 3. % begépelésével, ha (,),[,],{, vagy } karakteren vagyunk a zárójel párjára ugrik. 4. az első régi helyettesítése újjal a sorban :s/régi/új az összes régi helyettesítése újjal a sorban :s/régi/új/g két sor közötti kifejezésekre :#,#s/régi/új/g # helyén az aktuális sor (.) és az utolsó ($) is állhat :.,$/régi/új/g A fájlbeli összes előfordulás helyettesítése :%s/régi/új/g Mindenkori megerősítésre vár 'c' hatására :%s/régi/új/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.1. lecke: KÜLSŐ PARANCS VÉGREHAJTÁSA ** :! után külső parancsot írva végrehajtódik a parancs. ** 1. Írjuk be az ismerős : parancsot, hogy a kurzort a képernyő aljára helyezzük. Ez lehetővé teszi egy parancs beírását. 2. ! (felkiáltójel) beírásával tegyük lehetővé külső héj (shell)-parancs végrehajtását. 3. Írjunk például ls parancsot a ! után majd üssünk -t. Ez ki fogja listázni a könyvtárunkat ugyanúgy, mintha a shell promptnál lennénk. Vagy írja ezt :!dir ha az ls nem működik. Megj: Ilymódon bármely külső utasítás végrehajtható. Megj: Minden : parancs után -t kell ütni. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.2. lecke: BŐVEBBEN A FÁJLOK ÍRÁSÁRÓL ** A fájlok változásait így írhatjuk ki :w FÁJLNÉV. ** 1. :!dir vagy :!ls beírásával listázzuk a könyvtárunkat! Ön már tudja, hogy -t kell ütnie utána. 2. Válasszon egy fájlnevet, amely még nem létezik pl. TESZT! 3. Írja: :w TESZT (ahol TESZT a választott fájlnév)! 4. Ez elmenti a teljes fájlt (a Vim oktatóját) TESZT néven. Ellenőrzésképp írjuk ismét :!dir hogy lássuk a könyvtárat! (Felfelé gombbal : után az előző utasítások visszahozhatóak.) Megj: Ha Ön kilépne a Vimből és és visszatérne a TESZT fájlnévvel, akkor a fájl az oktató mentéskori pontos másolata lenne. 5. Távolítsa el a fájlt (MS-DOS): :!del TESZT vagy (Unix): :!rm TESZT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.3. lecke: EGY KIVÁLASZTOTT RÉSZ KIÍRÁSA ** A fájl egy részének kiírásához írja :#,# w FÁJLNÉV ** 1. :!dir vagy :!ls beírásával listázza a könyvtárat, és válasszon egy megfelelő fájlnevet, pl. TESZT. 2. Mozgassa a kurzort ennek az oldalnak a tetejére, és nyomjon Ctrl-g-t, hogy megtudja a sorszámot. JEGYEZZE MEG A SZÁMOT! 3. Most menjen a lap aljára, és üsse be ismét: Ctrl-g. EZT A SZÁMOT IS JEGYEZZE MEG! 4. Ha csak ezt a részét szeretné menteni a fájlnak, írja :#,# w TESZT ahol #,# a két sorszám, amit megjegyzett, TESZT az Ön fájlneve. 5. Ismét nézze meg, hogy a fájl ott van (:!dir) de NE törölje. 6. Vimben létezik egy másik lehetőség: nyomja meg a Shift-V gombpárt az első menteni kívánt soron, majd menjen le az utolsóra, ezután írja :w TESZT2 Ekkor a TESZT2 fájlba kerül a kijelölt rész. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.4. lecke: FÁJLOK VISSZAÁLLÍTÁSA ÉS ÖSSZEFŰZÉSE ** Egy fájl tartalmának beillesztéséhez írja :r FÁJLNÉV ** 1. :!dir beírásával nézze meg, hogy az Ön TESZT fájlja létezik még. 2. Helyezze a kurzort ennek az oldalnak a tetejére. MEGJ: A 3. lépés után az 5.3. leckét fogja látni. Azután LEFELÉ indulva keresse meg ismét ezt a leckét. 3. Most szúrja be a TESZT nevű fájlt a :r TESZT paranccsal, ahol TESZT az Ön fájljának a neve. MEGJ: A fájl, amit beillesztett a kurzora alatt helyezkedik el. 4. Hogy ellenőrizzük, hogy a fájlt tényleg beillesztettük, menjen vissza, és nézze meg, hogy kétszer szerepel az 5.3. lecke! Az eredeti mellett a fájlból bemásolt is ott van. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5. LECKE ÖSSZEFOGLALÓJA 1. :!parancs végrehajt egy külső utasítást. Pár hasznos példa: (MS-DOS) (Unix) :!dir :!ls - könyvtárlista kiírása. :!del FÁJLNÉV :!rm FÁJLNÉV - FÁJLNÉV nevű fájl törlése. 2. :w FÁJLNÉV kiírja a jelenlegi Vim-fájlt a lemezre FÁJNÉV néven. 3. :#,#w FÁJLNÉV kiírja a két sorszám (#) közötti sorokat FÁJLNÉV-be Másik lehetőség, hogy a kezdősornál Shift-v-t nyom lemegy az utolsó sorra, majd ezt üti be :w FÁJLNÉV 4. :r FÁJLNÉV beolvassa a FÁJLNÉV fájlt és behelyezi a jelenlegi fájlba a kurzorpozíció utáni sorba. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.1. lecke: A MEGNYITÁS (OPEN) PARANCS ** o beírásával nyit egy új sort a kurzor alatt és beszúró módba vált ** 1. Mozgassuk a kurzort a ---> kezdetű sorra. 2. o (kicsi) beírásával nyisson egy sort a kurzor ALATT! Ekkor automatikusan beszúró (insert) módba kerül. 3. Másolja le a ---> jelű sort és megnyomásával lépjen ki a beszúró módból. ---> Az o lenyomása után a kurzor a következő sor elején áll beszúró módban. 4. A kurzor FELETTI sor megnyitásához egyszerűen nagy O betűt írjon kicsi helyett. Próbálja ki a következő soron! Nyisson egy új sort efelett Shift-O megnyomásával, mialatt a kurzor ezen a soron áll. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.2. lecke: AZ APPEND PARANCS ** a lenyomásával a kurzor UTÁN szúrhatunk szöveget. ** 1. Mozgassuk a kurzort a következő ---> kezdetű sor végére úgy, hogy normál módban $-t ír be. 2. Kis "a" leütésével szöveget szúrhat be AMÖGÉ a karakter mögé, amelyen a kurzor áll. (A nagy "A" az egész sor végére írja a szöveget.) Megj: A Vimben a sor legvégére is lehet állni, azonban ez elődjében a Vi-ban nem lehetséges, ezért abban az a nélkül elég körülményes a sor végéhez szöveget írni. 3. Egészítse ki az első sort. Vegye észre, hogy az a utasítás (append) teljesen egyezik az i-vel (insert) csupán a beszúrt szöveg helye különbözik. ---> Ez a sor lehetővé teszi Önnek, hogy gyakorolja ---> Ez a sor lehetővé teszi Önnek, hogy gyakorolja a sor végére beillesztést. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.3. lecke: AZ ÁTÍRÁS MÁSIK VÁLTOZATA ** Nagy R beírásával írhat felül több mint egy karaktert. ** 1. Mozgassuk a kurzort az első ---> kezdetű sorra! 2. Helyezze a kurzort az első szó elejére amely eltér a második ---> kezdetű sor tartalmától (a 'az utolsóval' résztől). 3. Nyomjon R karaktert és írja át a szöveg maradékát az első sorban úgy, hogy a két sor egyező legyen. ---> Az első sort tegye azonossá az utolsóval: használja a gombokat. ---> Az első sort tegye azonossá a másodikkal: írjon R-t és az új szöveget. 4. Jegyezzük meg, ha -et nyomok, akkor a változatlanul hagyott szövegek változatlanok maradnak. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.4. lecke: BEÁLLÍTÁSOK ** Állítsuk be, hogy a keresés és a helyettesítés ne függjön kis/NAGYbetűktől ** 1. Keressük meg az 'ignore'-t az beírva: /ignore Ezt ismételjük többször az n billentyűvel 2. Állítsuk be az 'ic' (Ignore case) lehetőséget így: :set ic 3. Most keressünk ismét az 'ignore'-ra n-nel Ismételjük meg többször a keresést: n 4. Állítsuk be a 'hlsearch' és 'incsearch' lehetőségeket: :set hls is 5. Most ismét írjuk be a keresőparancsot, és lássuk mi történik: /ignore 6. A kiemelést szüntessük meg alábbi utasítások egyikével: :set nohls vagy :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6. LECKE ÖSSZEFOGLALÓJA 1. o beírásával új sort nyitunk meg a sor ALATT és a kurzor az új sorban lesz beszúrás-módban. Nagy O a sor FELETT nyit új sort, és oda kerül a kurzor. 2. a beírásával az aktuális karaktertől UTÁN (jobbra) szúrhatunk be szöveget. Nagy A automatikusan a sor legvégéhez adja hozzá a szöveget. 3. A nagy R beütésével átíró (replace) módba kerülünk lenyomásáig. 4. ":set xxx" beírásával az "xxx" opció állítható be. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7. lecke: AZ ON-LINE SÚGÓ PARANCSAI ** Az online súgórendszer használata ** A Vim részletes súgóval rendelkezik. Induláshoz a következők egyikét tegye: - nyomja meg a gombot (ha van ilyen) - nyomja meg az gombot (ha van ilyen) - írja be: :help :q beírásával zárhatja be a súgóablakot. Majdnem minden témakörről találhat súgót, argumentum megadásával ":help" utasítás . Próbálja az alábbiakat ki (-t ne felejtsük): :help w :help c_, 2006-2012 PK!M=<<vim80/tutor/tutor.uk.utf-8nu[=============================================================================== = Ласкаво простимо в уроки VIM = =============================================================================== Vim дуже потужний редактор, що має багато команд. Всі команди неможливо помістити в підручнику на зразок цього, але цих уроків достатньо, щоб ви навчились з легкістю користуватись Vim як універсальним редактором. УВАГА: Уроки цього підручника вимагають зміни тексту. Зробіть копію файлу, щоб практикуватись на ньому. Важливо пам'ятати, що цей підручник має на меті навчання на практиці. Це означає що ви маєте застосовувати команди щоб вивчити їх. Просто прочитавши текст, ви забудете команди. Кнопки на клавіатурі, будемо позначати квадратними дужками: [кнопка]. А зараз переконайтесь, що включена англійська розкладка і не затиснутий Caps Lock, і натисніть кнопку j щоб переміститись до першого уроку. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.1: ПЕРЕМІЩЕННЯ КУРСОРА ** Щоб переміщати курсор використовуйте кнопки [h],[j],[k],[l], як вказано на схемі: ^ [k] <[h] [l]> [j] v Таке розміщення спочатку може видатись трохи дивним. Як наприклад те, що кнопка [l] переміщує курсор вправо. Але клавіші розміщені так, щоб мінімізувати кількість рухів. Найчастіша дія яку користувач робить з текстовим файлом - це читає його. А при читанні прокручують текст вниз. Тому вниз прокручує [j] - вона знаходиться якраз під вказівним пальцем правої руки. Курсор можна переміщувати і класичним способом (курсорними клавішами), але зручніше буде, якщо ви опануєте спосіб Vim. (Особливо якщо ви вже вмієте набирати всліпу). 1. Попереміщуйте курсор по екрану, поки не призвичаїтесь. 2. Перемістіться до наступного уроку. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.2: Вихід з Vim Увага! Перед тим як виконувати цей урок прочитайте його повністю. 1. Натисніть [ESC] (щоб впевнитись що ви в звичайному режимі). 2. Наберіть: :q! [ENTER]. Це завершує роботу, відкидаючи всі зміни які ви здійснили. 3. Коли ви побачите привітання терміналу введіть команду яку ви використали щоб відкрити цей підручник. Скоріш за все це було: vim tutor.txt [ENTER] 4. Якщо ви запам'ятали кроки з 1 по 3, виконайте їх, і переходьте до наступного уроку. Зауваження: Команда :q! [ENTER] завершує роботу і відкидає всі зміни. Через кілька уроків ви навчитесь зберігати зміни в файл. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.3:РЕДАГУВАННЯ ТЕКСТУ. ВИДАЛЕННЯ. ** Натисніть [x] щоб видалити символ під курсором. ** 1. Перемістіть курсор до лінії нижче, яка позначена так: --->. 2. Щоб виправити помилки перемістіть курсор так, щоб він став над символом який треба видалити. 3. Натисніть [x] щоб видалити непотрібний символ. 4. Повторіть кроки з другого по четвертий, поки речення не стане правильним. ---> Ккоровва перрестрибнуууууула ччерезз мііісяццць. 5. Тепер, коли речення правильне, можна перейти до уроку 1.4. Зауваження: Протягом навчання не старайтесь запам'ятати все. Вчіться практикою. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.4: РЕДАГУВАННЯ ТЕКСТУ. ВСТАВКА ** Натисніть [i] щоб вставити текст. ** 1. Перемістіть курсор на перший рядок позначений: --->. 2. Перемістіть курсор на символ, ПІСЛЯ якого потрібно вставити текст. 3. Натисніть [i] і наберіть необхідні вставки. 4. Коли всі помилки виправлені натисніть [ESC] щоб повернутись в звичайний режим. ---> З прав текст. ---> З цього рядка пропав деякий текст. 5. Коли призвичаїтесь вставляти текст - переходьте до уроку 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.5: РЕДАГУВАННЯ ТЕКСТУ. ДОДАВАННЯ. ** Натисніть [A] щоб додати текст. ** Увага! Тут і далі, коли мають наувазі клавішу з буквою в верхньому регістрі, то це означає що її натискають з затиснутою [SHIFT]. 1. Перемістіть курсор до першої лінії внизу позначеної --->. Не має значення над яким символом знаходиться курсор. 2. Натисніть [A] і введіть необхідне доповнення. 3. Коли додавання завершене натисніть [ESC] щоб повернутись в звичайний режим. 4. Перемістіть курсор до другої лінії позначеної ---> і повторіть кроки 2 і 3 щоб виправити речення. ---> З цього рядка пропущ З цього рядка пропущений текст. ---> З цього рядка також З цього рядка також пропущений текст. 5. Після виконання вправ, переходьте до наступного уроку. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.6: РЕДАГУВАННЯ ФАЙЛУ ** Використайте :wq щоб зберегти файл і вийти.** Увага! Перед виконанням уроку прочитайте його повністю. 1. Вийдіть з цього підручника як ви робили в уроці 1.2: :q![ENTER] Або якщо ви маєте доступ до іншого терміналу виконуйте наступні дії в ньому. 2. В терміналі наберіть команду: vim НазваФайлу [ENTER] 'vim' - команда для запуску редактора, НазваФайлу - файл який будемо редагувати. Якщо ввести неіснуючий файл, то він створиться 3. Відредагуйте текст, як навчились у попередніх уроках. 4. Щоб зберегти зміни у файлі, і вийти з Vim наберіть: :wq [ENTER] 5. Якщо ви вийшли з підручника на першому кроці, то зайдіть в нього знову і переходьте до підсумку. 6. Після прочитання і засвоєння попередніх кроків виконайте їх. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ПІДСУМОК УРОКУ 1 1. Курсор керується курсорними клавішами, або клавішами [h][j][k][l] [h] (вліво) [j] (вниз) [k] (вверх) [l] (вправо) 2. Щоб запустити Vim з терміналу наберіть: vim Назва файлу [ENTER] 3. Щоб вийти з Vim наберіть: [ESC] :q! [ENTER] щоб відкинути всі зміни. або наберіть: [ESC] :wq [ENTER] щоб зберегти всі зміни. 4. Щоб видалити символ під курсором натисніть [x]. 5. Щоб вставити, чи доповнити текст наберіть: [i] текст що вставляєтсья [ESC] вставиться перед курсором [A] текст до додається [ESC] додасть текст до рядка Зауваження: Натискання [ESC] перенесе вас в звичайний режим, чи відмінить не до кінця введену команду. Тепер переходьте до уроку 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.1: КОМАНДИ ВИДАЛЕННЯ ** Введіть dw щоб видалити слово. ** 1. Натисніть [ESC], щоб переконатись що ви в звичайному режимі. 2. Перемістіть курсор до лінії нижче позначеної --->. 3. Перемістіть курсор до початку слова що має бути видалене. 4. Введіть dw щоб слово пропало. Зауваження: Буква d з'явиться в останньому рядку екрану, якщо ви її натиснули. Vim чекає введення наступного символа. Якщо з'явилось щось інше значить ви щось не так ввели. Натисніть [ESC] і почніть спочатку. ---> Є деякі слова весело, які не потрібні папір в цьому реченні. 5. Повторюйте кроки 3 і 4 поки речення не стане правильне, а тоді переходьте до уроку 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.2: БІЛЬШЕ КОМАНД ВИДАЛЕННЯ ** Наберіть d$ щоб видалити символи від курсора до кінця рядка. ** 1. Натисніть [ESC] щоб переконатись що ви в звичайному режимі. 2. Перемістіть курсор до лінії нижче, що позначена --->. 3. Перемістіть курсор до кінця правильного рядка (ПІСЛЯ першої крапки). 4. Введіть d$ щоб видалити все до кінця рядка. ---> Хтось надрукував кінець цього рядка двічі. кінець цього рядка двічі. 5. Перейдіть до уроку 2.3 щоб розібратись в цьому детальніше. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.3:ОПЕРАТОРИ І ПЕРЕМІЩЕННЯ Багато команд що змінюють текст утворені з оператора і переміщення. Формат команди видалення з оператором d подано нижче: d переміщення Де: d - оператор видалення. переміщення - з чим працює оператор (описано нижче). Короткий список переміщень: w - до початку наступного слова, НЕ ВКЛЮЧАЮЧИ його перший символ. e - до кінця поточного слова, ВКЛЮЧАЮЧИ останній символ. $ - до кінця рядка, ВКЛЮЧАЮЧИ останній символ. Тому введення de видалить символи від курсора, до кінця слова. Зауваження: Натискання тільки переміщення в звичайному режимі відповідно переміщує курсор. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.4: ВИКОРИСТАННЯ ЛІЧИЛЬНИКА ДЛЯ ПЕРЕМІЩЕННЯ ** Введення числа перед переміщенням повторює його стільки раз. ** 1. Перемістіть курсор до початку рядка позначеного ---> 2. Введіть 2w щоб перемістити курсор на два слова вперед. 3. Введіть 3e щоб перемістити курсор в кінець третього слова. 4. Введіть 0 (нуль) щоб переміститись на початок рядка. 5. Повторіть кроки 2 і 3 з різними числами. ---> А це просто рядок зі словами, серед яких можна рухати курсором. 6. Переходьте до уроку 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.5: БАГАТОРАЗОВЕ ВИДАЛЕННЯ ** Введення числа з оператором повторює його стільки ж разів. ** В комбінації з оператором видалення, і переміщення з лічильника можна видаляти потрібне число елементів. Для цього введіть d число переміщення 1. Перемістіться до першого слова в ВЕРХНЬОМУ РЕГІСТРІ в рядку позначеному --->. 2. Введіть d2w щоб видалити два слова. 3. Повторіть кроки 1 і 2 з різними числами, щоб видалити все зайве. ---> цей ABC DE рядок FGHI JK LMN OP слів Q RS TUV почищений. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.6: ОПЕРАЦІЇ З РЯДКАМИ ** Введіть dd щоб видалити весь рядок. ** Через те, що видалення всього рядка є доволі частою дією розробники Vi вирішили що для цієї операції потрібна проста команда, як dd. 1. Перемістіть курсор до другого рядка в вірші нижче. 2. Введіть dd щоб видалити рядок. 3. Потім перемістіться до четвертого рядка. 4. Введіть 2dd щоб видалити два рядки. ---> 1) Троянди червоні, ---> 2) Багнюка весела, ---> 3) Волошки голубі, ---> 4) В мене є машина, ---> 5) Годинник каже час, ---> 6) Цукерки солодкі, ---> 7) Дарую тобі. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.7: ВІДКИНУТИ ЗМІНИ ** Натисніть u щоб скасувати останні команди, U щоб виправити ввесь рядок. ** 1. Перемістіть курсор до рядка нижче позначеного ---> на місце першої помилки. 2. Натисніть x щоб видалити непотрібний символ. 3. Потім натисніть u щоб відмінити виправлення. 4. Цього разу виправте всі помилки в рядку використовуючи команду x . 5. Після цього введіть U, і відкиньте всі зміни в цілому рядку. 6. Натисніть u кілька разів, щоб відмінити U і попередні команди. 7. Тепер натисніть CTRL-R кілька разів, щоб повторити відмінені команди (відмінити відміну). ---> Вииправте помилки наа цьоому рядку і вііідмініть їх. 8. Тепер можна переходити до підсумків другого уроку. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ПІДСУМОК УРОКУ 2 1. Щоб видалити все від курсора аж до початку наступного слова введіть: dw 2. Щоб видалити від курсора до кінця рядка: d$ 3. Щоб видалити увесь рядок: dd 4. Щоб повторити переміщення, поставте перед ним число повторів: 2w 5. Формат команди зміни: оператор [число] переміщення де: оператор - що робити, як наприклад d для видалення [число] - кількість повторів переміщення - куди переміститись перед виконанням оператора, як як наприклад w (слово), $ (кінець рядка), і т.і. 6. Щоб переміститись до початку рядка використовуйте нуль: 0 7. Щоб відмінити попередню дію введіть: u (u в нижньому регістрі) Щоб відмінити всі зміни рядка введіть: U (U в верхньому регістрі) Щоб скасувати відміну натисніть: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.1: КОМАНДА PUT ** Введіть p щоб вставити перед тим видалений текст після курсору. ** 1. Перемістіть курсор до першої ---> лінії внизу. 2. Введіть dd щоб видалити рядок і зберегти його в регістрі Vim. 3. Перемістіть курсор до рядка в), НАД тим місцем де має бути видалений рядок. 4. Натисніть p щоб вставити рядок під курсором. 5. Повторіть кроки від 2 до 4 щоб вставити всі рядки в правильному порядку. ---> г) всіх до кузні іззива. ---> б) а в коваля серце тепле, ---> в) а він клепче та й співа, ---> а) А в тій кузні коваль клепле, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.2: Команда заміни ** Наберіть rx щоб замінити символ під курсором на x . ** 1. Перемістіть курсор до першого рядка нижче, позначеного --->. 2. Помістіть курсор над першою помилкою. 3. Наберіть r а потім символ який має стояти там. 4. Повторіть кроки з 2 по 3 поки перший рядок не стане еквівалентним другому. ---> Коли ця лігія набираламт. хтось наьтснкв геправмльні унопкм! ---> Коли ця лінія набиралась, хтось натиснув неправильні кнопки! 5. Зараз переходьте до уроку 3.3. Примітка: Ви маєте вчитись діями, а не простим заучуванням, пам'ятаєте? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.3: ОПЕРАТОР ЗАМІНИ ** Щоб зробити заміну до кінця слова введіть ce . ** 1. Перемістіть курсор до першого рядка позначеного --->. 2. Помістіть курсор над у в слові рукра. 3. Введіть ce і правильне закінчення слова (ядок в цьому випадку). 4. Натисніть [ESC] і переходьте до наступного символа, який потрібно замінити. 5. Повторюйте кроки 3 і 4 поки перше речення не стане таким самим як і друге. ---> Цей рукра має кілька слів що потретамув заміни за допоцкщшг оператора. ---> Цей рядок має кілька слів що потребують заміни за допомогою оператора. Зауважте що ce видаляє слово, і поміщає вас в режим вставки. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.4: БІЛЬШЕ ЗМІН З c ** Оператор заміни використовується з тими ж переміщеннями що і видалення. ** 1. Оператор заміни працює в такий же спосіб що і видалення. Формат: c [число] переміщення 2. Переміщення ті ж самі, такі як w (слово) і $ (кінець рядка). 3. Перемістіться до першого рядка позначеного --->. 4. Перемістіть курсор до першої помилки. 5. Наберіть c$ і решту рядка, щоб він став таким як другий і натисніть [ESC]. ---> Кінець цього рядка потребує якихось дій щоб стати таким як кінець другого. ---> Кінець цього рядка можна виправити за допомогою команди c$. Примітка: Можна використовувати кнопку Backspace щоб виправляти опечатки при наборі. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ПІДСУМОК УРОКУ 3 1. Щоб вставити текст який був видалений наберіть p . Це вставляє видалений текст ПІСЛЯ курсора (якщо був видалений рядок, вставка продовжиться з рядка під курсором). 2. Щоб замінити символ під курсором наберіть r і необхідний символ. 3. Оператор заміни дозволяє робити заміну тексту від курсору, до потрібного переміщення. Наприклад щоб замінити все від курсора до кінця слова вводять ce . Щоб замінити закінчення рядка тиснуть c$ . 4. Формат заміни: c [число] переміщення Почнемо наступний урок. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.1: ПОЗИЦІЯ КУРСОРА І СТАТУС ФАЙЛУ ** Введіть CTRL-G щоб побачити вашу позицію в файлі, і його статус. Введіть G щоб переміститись на потрібний рядок файлу. ** ПРИМІТКА: Прочитайте увесь урок перед виконанням будь-яких кроків!! 1. Затисніть кнопку Ctrl і натисніть g . Це називається CTRL-G. Внизу з'явиться повідомлення з назвою файлу, і позицією в файлі. Запам'ятайте номер рядка для кроку 3. ПРИМІТКА: Ви бачите позицію курсора в нижньому правому кутку екрану. Це трапляється коли включена опція 'ruler' (читайте :help 'ruler' ) 2. Натисніть G щоб переміститись до кінця файлу. Наберіть gg щоб переміститись до початку файлу. 3. Наберіть номер рядка де ви були а потім G. Це перенесе вас до потрібного рядка. 4. Якщо ви запам'ятали три попередні кроки, то виконуйте. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.2: КОМАНДА ПОШУКУ ** Введіть / (слеш) і фразу, щоб шукати її в тексті. ** 1. В звичайному режимі введіть символ / . Зауважте що він і курсор з'являються в низу екрану, як і з командою : . 2. Тепер введіть 'очепятка' . Це буде словом яке ви шукатимете. 3. Щоб здійснити пошук цієї фрази ще раз введіть n . Щоб шукати в протилежному напрямку введіть N . 4. Щоб шукати фразу в зворотньому напрямку використайте ? замість / . 5. Щоб переміститись назад до того місця звідки прийшли натисніть CTRL-O. Повторіть щоб повернутись ще далі. (Це як кнопка назад в браузері) CTRL-I переміщує вперед. ---> "очепятка" не є способом написати опечатка; очепятка це опечатка. Примітка: Коли пошук досягає кінця файлу він продовжує з початку, хіба що опція 'wrapscan' була виключена. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.3: ПОШУК ПАРНИХ ДУЖОК ** Введіть % щоб знайти парну ),], чи } . ** 1. Помістіть курсор над будь-якою (, [, чи { в рядку нижче позначеному --->. 2. Тепер введіть символ % . 3. Курсор переміститься до відповідної дужки. 4. Введіть % щоб перемістити курсор до іншої парної дужки. 5. Спробуйте з іншими дужками, і подивіться що вийде. ---> Це ( тестовий рядок ( з такими [ такими ] і такими { дужками } в ньому. )) Примітка: Це корисно при відлагоджуванні програми з неправильними дужками. І взагалі в кожному тексті дужки мають стояти правильно! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.4: КОМАНДА ЗАМІНИ ** Наберіть :s/старе/нове/g щоб замінити 'старе' на 'нове'. ** 1. Перемістіть курсор до лінії нижче позначеної --->. 2. Введіть :s/(біп)/блять [ENTER] . Зауважте що ця команда змінює тільки перше входження (біп) в рядку. 3. Потім наберіть :s/(біп)/блять/g . Додавання g вказує що заміни робляться у всьому рядку глобально. ---> люди не лю(біп), коли в слові "лю(біп)" "(біп)" заміняють на "(бiп)". 4. Щоб замінити кожне входження послідовності символів між двома рядками наберіть :#,#s/старе/нове/g де #,# діапазон рядків в яких робиться заміна. Введіть :%s/старе/нове/g щоб змінити кожне входження у цілому файлі. Введіть :%s/старе/нове/gc щоб замінити, кожне входження у файлі з підтвердженням кожної заміни. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ПІДСУМОК УРОКУ 4 1. CTRL-G виводить вашу позицію в файлі і назву файлу. G переміщує в кінець файлу. число G переміщує до рядка з вказаним номером. gg переміщує до першого рядка. 2. Ввід / і послідовності символів шукає послідовність ПІСЛЯ курсора. Ввід ? і послідовності символів шукає послідовність ПЕРЕД курсором. Після пошуку введіть n щоб знайти наступне входження в тому ж напрямку або N щоб шукати в протилежному напрямку. CTRL-O відносить вас до старішої позиції, CTRL-I до новішої позиції. 3. Ввід % коли курсор знаходиться над дужкою (,),[,],{, чи } переносить курсор до протилежної дужки. 4. Щоб замінити перше входження старого слова на нове :s/старе/нове Щоб замінити всі старі слова рядка на нові :s/старе/нове/g Щоб замінити фрази між двома рядками :#,#s/старе/нове/g Щоб замінити всі входження в файлі :%s/старе/нове/g Щоб щоразу підтверджувати заміну додайте 'c' :%s/старе/нове/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.1: ЯК ВИКОНАТИ ЗОВНІШНЮ КОМАНДУ ** Введіть :! і зовнішню команду, щоб виконати ту команду. ** 1. Введіть відому команду : щоб встановити курсор в низу екрану. Це дозволяє вводити команди командного рядка. 2. Тепер введіть ! (символ знаку оклику) . Це дозволить вам виконати будь-яку зовнішню команду. 3. Як приклад введіть :!ls [ENTER]. Це покаже список файлів каталогу, так так ніби ви знаходитесь в оболонці терміналу. Або використайте :!dir якщо ви раптом знаходитесь в Windows. Примітка: Можна запускати будь-яку зовнішню команду таким способом, навіть з аргументами. Примітка: Всі команди що починаються з : мають закінчуватись натисканням [ENTER]. Більше на цьому не наголошуватиметься. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.2: ЩЕ ПРО ЗАПИС ФАЙЛІВ ** Щоб зберегти змінений текст, введіть :w НАЗВА_ФАЙЛУ ** 1. Введіть :!dir чи :!ls щоб переглянути вміст вашої директорії. Вам вже казали що після цього тиснуть [ENTER]. 2. Виберіть ім'я файлу яке ще не використовується, наприклад TEST. (Взагалі то це не обов'язково, якщо вміст обраного файлу не є цінним) 3. Тепер введіть: :w TEST (де TEST це назва яку ви обрали.) 4. Це зберігає увесь файл (підручник Vim ) під ім'ям TEST. Щоб перевірити знову наберіть :!ls щоб побачити зміни в каталозі. Примітка: Якщо ви вийдете з Vim і запустите його знову командою vim TEST, файл що ви відкриєте буде точною копією цього, коли ви його зберегли. 5. Зараз видаліть файл ввівши (Unix): :!rm TEST чи (MS-DOS): :!del TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.3: ВИБІР ТЕКСТУ ДЛЯ ЗАПИСУ ** Щоб зберегти частину файлу, наберіть v переміщення :w НАЗВА_ФАЙЛУ ** 1. Перемістіть курсор до цього рядка. 2. Натисніть v і перемістіть курсор на п'ять пунктів нижче. Зауважте, що текст виділяється. 3. Натисніть символ : . Внизу екрану з'являються символи :'<,'> . 4. Введіть w TEST , де TEST назва файлу що ще не використовується. Переконайтесь що ви бачите :'<,'>w TEST перед тим як натиснути [ENTER]. 5. Vim запише вибрані рядки в файл TEST. Використайте :!dir чи !ls щоб побачити це. Поки що не видаляйте його! Ми використаємо TEST в наступному уроці. Зауваження: Натискання v починає режим візуального виділення. Ви можете переміщувати курсор щоб змінити розмір вибраної частини. Потім можна використати оператор щоб зробити щось з текстом. Наприклад d видалить текст. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.4: ОТРИМАННЯ І ЗЛИТТЯ ФАЙЛІВ ** Щоб вставити вміст файлу введіть :r НАЗВА_ФАЙЛУ ** 1. Помістіть курсор десь над цим рядком. Зауваження: Після виконання кроку 2 ви побачите текст з уроку 5.3. Тоді перемістіться вниз, щоб побачити вміст цього уроку знову. 2. Тоді отримайте вміст вашого файлу TEST використавши команду :r TEST , де TEST назва файлу що ви використали. Файл що ви отримуєте поміщується під рядком курсора. 3. Щоб перевірити що файл вставлено, прокрутіть текст назад, і переконаєтесь що тепер є дві копії урок 5.3, the original and the file version. Примітка: Також ви можете вставляти вивід зовнішньої програми. Наприклад :r !ls читає вивід команди ls і вставляє його під курсором. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Підсумок 5 уроку 1. :!команда виконує зовнішню команду. 2. :w НАЗВА_ФАЙЛУ записує поточний файл на диск під назвою НАЗВА_ФАЙЛУ. 3. v переміщення :w НАЗВА_ФАЙЛУ зберігає візуально виділену частину тексту в файл НАЗВА_ФАЙЛУ. 4. :r НАЗВА_ФАЙЛУ отримує з диску файл НАЗВА_ФАЙЛУ і вставляє його під курсором. 5. :r !ls читає вивід команди ls і вставляє її під поточною позицією курсора ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.1: КОМАНДА ВСТАВКИ ** Введіть o щоб вставити новий рядок під курсором. ** 1. Перемістіть курсор на рядок нижче, позначений --->. 2. Натисніть o щоб вставити новий рядок ПІД курсором та перейти в режим вставки. 3. Тепер введіть текст і натисніть [ESC] щоб вийти з режиму вставки. ---> Після натискання o курсор ставиться на наступний рядок в режимі вставки. 4. Щоб вставити рядок НАД ABOVE курсором пишуть O в верхньому регістрі, замість o. Спробуйте на рядку нижче. ---> Щоб вставити рядок над цим введіть O . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.2: КОМАНДА ДОПИСУВАННЯ ** Натисніть a щоб вставити текст після курсору. ** 1. Перемістіть курсор до початку рядка внизу позначеного --->. 2. Тисніть e поки курсор не буде в кінці ря . 3. Натисніть a (маленьке) щоб додати текст ПІСЛЯ курсору. 4. Допишіть слова як рядок внизу. Натисніть [ESC] щоб вийти з режиму вставки. 5. Використайте e щоб переміститись до наступного неповного слова та to move to the next incomplete word and repeat steps 3 and 4. ---> Цей ря дозволить вам попрактикува в дописува тексту до рядка. ---> Цей рядок дозволить вам попрактикуватись в дописуванні тексту до рядка. Примітка: a, i і A переходять в один і той же режим вставки, єдиною різницею є тільки те, де вставляються символи. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.3: ІНШИЙ СПОСІБ ЗАМІНИ ** Введіть велику R щоб замінити більш ніж один символ. ** 1. Перемістіть курсор до першого рядка внизу позначеного --->. Перемістіть курсор до першого xxx . 2. Тепер натисніть R і введіть номер під ним з другого рядка, так що він замінює xxx . 3. Натисніть [ESC] щоб покинути режим заміни. Зауважте, що решта рядка залишається незмінною. 4. Повторіть кроки від 1 до 3 щоб замінити всі xxx на числа з другого рядка. ---> Додавання 123 до xxx дає xxx. ---> Додавання 123 до 456 дає 579. Зауваження: Режим заміни подібний до режиму вставки, тільки кожен введений символ видаляє символ який стояв на його місці. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.4: КОПІЮВАННЯ І ВСТАВКА ** Використайте оператор y щоб копіювати текст і p щоб його вставити ** 1. Перейдіть до рядка нижче позначеного ---> і покладіть курсор після "а)". 2. Перейдіть в візуальний режим за допомогою клавіші v і перемістіть курсор якраз перед словом "один". 3. Введіть y щоб копіювати (yank) виділений текст. 4. Перемістіть курсор до кінця наступного рядка: j$ 5. Натисніть p щоб вставити (put) текст. Тоді введіть : два [ESC] . 6. так само додайте третій рядочок. ---> а) це рядок номер один б) Зауваження: також можна використовувати y як оператор; yw копіює одне слово. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.5: ВСТАНОВЛЕННЯ ОПЦІЙ ** Встановити опцію так що пошук чи заміна буде ігнорувати регістр ** 1. Знайдіть слово 'ігнорувати' ввівши : /ігнорувати Повторіть кілька разів натискаючи n . 2. Встановіть опцію ігнорування регістру 'ic' (Ignore case) ввівши: :set ic 3. Тепер пошукайте 'ігнорувати' знову ввівши n Зауважте що Ігнорувати та ІГНОРУВАТИ тепер також знаходяться. 4. Ввімкніть 'hlsearch' (підсвітку пошуку) і 'incsearch' (інтерактивність) командою :set hls is . 5. Тепер пошукайте щось знову і зауважте зміни: /ігнорувати [ENTER] 6. Щоб вимкнути ігнорування регістру напишіть: :set noic Примітка: Щоб вимкнути підсвітку співпадінь введіть: :nohlsearch Примітка: Якщо ви хочете не брати до уваги регістр тільки під час одного пошуку використайте ключ \c. Наприклад: /ігнорувати\c [ENTER] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ПІДСУМОК УРОКУ 6 1. Введіть о щоб додати рядок ПІД курсором і почати режим вставки. Введіть O щоб додати рядок НАД курсором. 2. Введіть a щоб вставити текст ПІСЛЯ курсора. Введіть A щоб додати текст до рядка. 3. Переміщення e переміщує нас до кінця слова. 4. Оператор y копіює текст, p вставляє його. 5. Введення R переносить нас в режим заміни до натискання [ESC]. 6. Набір ":set xxx" встановлює опцію "xxx". Деякі опції: 'ic' 'ignorecase' ігнорувати верхній/нижній регістр при пошуку 'is' 'incsearch' показувати співпадіння пошуку під час введення фрази 'hls' 'hlsearch' пісвічувати всі співпадіння Можна одночасно використовувати і коротку і довгу форму запису опції. 7. Використайте префікс "no" щоб вимкнути опцію: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 7.1: ОТРИМАННЯ ДОПОМОГИ ** Використання вбудованої довідкової системи ** Vim має всеосяжну систему довідки. Щоб ознайомитись з нею спробуйте один з таких способів: - натисніть кнопку [HELP] (якщо така є) - натисніть [F1] - наберіть :help Прочитайте текст в вікні допомоги, щоб вияснити як вона працює. Натисніть CTRL-W двічі щоб змінити вікно Наберіть :q щоб закрити вікно довідки. Можна знайти довідку майже на будь-яку тему додаючи аргумент після команди ":help" . Спробуйте одну з наступних (не забувайте натискати [ENTER]): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 7.2: СТВОРЕННЯ СКРИПТА АВТОЗАПУСКУ ** Ввімкнення додаткових функцій Vim ** Vim має набагато більше функцій ніж Vi, але більшість з них відключені за замовчуванням. Щоб почати використання додаткових функцій потрібно створити файл "vimrc". 1. Почніть редагування файлу "vimrc" . Це залежить від вашої системи: :e ~/.vimrc для Unix :e $VIM/_vimrc для MS-Windows 2. Тепер прочитайте приклад вмісту "vimrc" : :r $VIMRUNTIME/vimrc_example.vim 3. Збережіть файл: :w Наступного разу коли ви запустите Vim він буде використовувати підсвітку синтаксису. Можна додати всі ваші улюблені налаштування в цей файл. Для більш детальної інформації введіть :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 7.3: АВТОДОПОВНЕННЯ ** Автодоповнення за допомогою CTRL-D і [TAB] ** 1. Переконайтесь що в Vim не включена зворотня сумісність: :set nocp 2. Подивіться що за файли існують в каталозі: :!ls чи :!dir 3. Введіть початок команди: :e 4. Натисніть CTRL-D і Vim покаже список команд що починаються з "e". 5. Натисніть [TAB] і Vim доповнить команду до ":edit". 6. Тепер додайте пропуск і початок існуючого імені файлу: :edit FIL 7. Натисніть [TAB]. Vim доповнить ім'я (якщо воно унікальне). Зауваження: Доповнення працює для багатьох команд. Просто натискайте CTRL-D і [TAB]. Це особливо корисно для команди :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ПІДСУМОК УРОКУ 7 1. Введіть :help або натисніть [F1] щоб відкрити вікно довідки. 2. Введіть :help тема щоб знайти довідку про тему . 3. Введіть CTRL-W CTRL-W щоб змінити вікно. 4. Наберіть :q щоб закрити вікно 5. Створіть скрипт vimrc щоб змінювати ваші налаштування при запуску. 6. При наборі команди що починається з двокрапки : натисніть CTRL-D щоб побачити можливі доповнення. Натисніть [TAB] щоб побачити одне з доповнень. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Це завершує уроки Vim . Вони були націлені щоб дати вам короткий вступ в редактор Vim, достатній для того щоб використовувати редактор комфортно. Ці уроки зовсім далеко від повних, бо Vim має набагато більше команд. Можна прочитати інструкцію користувача : ":help user-manual". Для подальшого читання і вивчення рекомендується така книжка: Vim - Vi Improved - by Steve Oualline Publisher: New Riders Особливо корисна для початківців. Там багато прикладів і ілюстрацій. Дивіться http://iccf-holland.org/click5.html Ці уроки були написані Майклом С. Пірсом та Робертом Уаром. Модифіковано для Vim Бремом Муленаром. Переклад на українську Буник Т. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!IO v vvim80/tutor/tutor.el.cp737nu[=============================================================================== = V I M T u t o r - 롛 1.5 = =============================================================================== Vim 夘 ⤘ 婮 ᡫ ⮜ , ᨘ 㩦 㚞 . 㚞 ᩫ ᯜ ᤦ 嫜 硦 Vim ⤘ 㩞 ᡫ. ⚚ 椦 嫘 驜 㚞 夘 25-30 , 餫 橦 椦 ⯜ . 㣘 㩦 壜. 㩫 ⤘ 嚨 妬 嫜 ( 㩘 "Vimtutor" 夘 㛞 ⤘ 嚨). 夘 ᩫ 櫠 㚞 夘 ⤞ ⫩ 驫 ᩡ 㩞. 夜 櫠 ᝜ 嫜 ៜ ੫. ᝜ 椦 壜, ᩜ! 騘, 嫜 櫠 㡫 Caps-Lock 夘 ⤦ 㩫 㡫 j 㩜 ⫩ 驫 ៞ 1.1 婜 椞. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 1.1: ** 㩜 , 㩫 㡫 h,j,k,l 室. ** ^ k Hint: 㡫 h 夘 ' . < h l > 㡫 l 夘 . j 㡫 j ᝜ ᡠ . v 1. 婫 椞 ⮨ 韜 ᤜ. 2. 㩫 ⤦ 㡫 (j) ⮨ . ---> 騘 ⨜ 嫜 棜 ៞. 3. 餫 㡫, 嫜 ៞ 1.2. ਫ਼: ᢢ ᫠ 㩘, 㩫 嫜 ᩫ. 㩫 ⢘. ਫ਼: 㡫 ⧜ 婞 禬. hjkl 嫜 嫜 櫜, 梠 婜. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 1.2: VIM !! : ⩜ ᧦ 㣘, ᩫ 梦 ៞!! 1. 㩫 㡫 ( 婫 嚦 ᩫ). 2. 㩫: :q! . ---> ⨮ ᡫ 驜 槦 ⮜ ᤜ. ⢜ 驜 ⨟ 㩫: :wq 3.  嫜 , 㩫 㡘 㚞. 夘: vimtutor 穘: vim tutor ---> 'vim' 夜 ᡫ vim, 'tutor' 夘 ⢦ 驦. 4. ⮜ 穜 㣘 ⮜ 埞, ⩫ 㣘 1 3 嫜 嫜 ᡫ. 㩫 ៞ 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 1.3: - **  婫 ᩫ 㩫 x ᯜ 㨘 . ** 1. 婫 ⤞ --->. 2. 驜 ៞, 婫 ⮨ 夘 㨘 . 3. 㩫 㡫 x ᯜ 磞 㨘. 4. ᙜ 㣘 2 ⮨ 4 ⮨ 櫘 夘 ੫. ---> The ccow jumpedd ovverr thhe mooon. 5. 騘 夘 ੫, 夫 ៞ 1.4. : ⮜ 㚞, 㩫 眫, 夜 㩞. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 1.4: - **  婫 ᩫ 㩫 i ᢢ 壜. ** 1. 婫 ⮨ 髞 ⤞ --->. 2. ᤜ 髞 因 竜, 婫 髦 㨘 槦 壜. 3. 㩫 i 㩫 嫞 㡜. 4. 餜 ៜ ៦ 㩫 ⯜ ᩫ. ᙜ 㣘 2 ⮨ 4 驜 櫘. ---> There is text misng this . ---> There is some text missing from this line. 5.  婫 ᤜ ⤦ 嫜 增. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 1. ☪ 嫘 餫 嫜 㡫 hjkl. h (⨘) j () k () l () 2. 嫜 Vim ( %) ᯫ: vim 3. 嫜 ᯫ: :q! 樨 . ᯫ: :wq 㡜 . 4. ᯜ ⤘ 㨘 ᩫ 㩫: x 5. ᚜ 壜 橦 婫 ᩫ ᯫ: i 㩫 壜 : 餫 嫜 ᩫ 驜 磞 ⤞ . 騘 婫 ៞ 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 2.1: ** ᯫ dw ᯜ ⮨ ⢦ 嘪 ⥞. ** 1. 㩫 嫜 櫠 婫 ᩫ. 2. 婫 ⤞ --->. 3. 夜 ⥞ ⧜ . 4. ᯫ dw ᤜ ⥞ . : ᣣ dw 椞 橦 嫜. ᯘ ᫠ ៦, 㩫 㩫 . ---> There are a some words fun that don't belong paper in this sentence. 5. ᙜ 㣘 3 4 ⮨ 櫘 夘 ੫ 夜 ៞ 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 2.2: ** 㩫 d$ ᯜ ⮨ ⢦ . ** 1. 㩫 嫜 櫠 婫 ᩫ. 2. 婫 ⤞ --->. 3. 婫 ⢦ ੫ ( 髞 . ). 4. 㩫 d$ ᯜ ⮨ ⢦ . ---> Somebody typed the end of this line twice. end of this line twice. 5. 夜 ៞ 2.3 ᙜ 夜. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 2.3: d 夘 : [] d 壜 d [] 壜 : - 橜 (, ' =1). d - . 壜 - 㩜 ( 婫). 婫 壜: w - ⮨ ⢦ ⥞, ᤦ ᩫ. e - ⮨ ⢦ ⥞, ᩫ. $ - ⮨ ⢦ . : 秦 ⫝̸, 餫 壜 橦 婫 ᩫ ᧦ 㩜 坜 婫 . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 2.4: '-' ** 㩫 dd ᯜ 梞 . ** 嘪 櫞 桢 , Vim ᩠ 櫠 㫘 櫜 ᭜ d ᯜ . 1. 婫 竜 ᩞ. 2. ᯫ dd ᯜ . 3. 騘 嫜 ⫘ . 4. ᯫ 2dd (嫜 --壜) ᯜ . 1) Roses are red, 2) Mud is fun, 3) Violets are blue, 4) I have a car, 5) Clocks tell time, 6) Sugar is sweet 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 2.5: ** 㩫 u ⩜ 圪 , U 驜 梞 . ** 1. 婫 ⤞ ---> 㩫 髦 ៦. 2. 㩫 x ᯜ 髦 磞 㨘. 3. 騘 㩫 u ⩜ ⤞ . 4. 驫 梘 ៞ 餫 x. 5. 騘 㩫 ⤘ U ⯜ ᩫ. 6. 騘 㩫 u ⩜ U 磜 . 7. 騘 㩫 CTRL-R (餫 ⤦ 㡫 CTRL ᫜ R) ⨜ (娜 ⩜). ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. 夘 㩠 . 騘 夜 增 㣘 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 1. ᯜ ⮨ ⢦ ⥞ ᯫ: dw 2. ᯜ ⮨ ⢦ ᯫ: d$ 3. ᯜ 桢 ᯫ: dd 4. ᩫ 夘: [] 壜 [] 壜 槦: - 橜 - 夜, d 壜 - 㩜 , w (⥞), $ (⢦ ), . 5. ⩜ 磜 ⨚, 㩫: u ( u) ⩜ 梜 , 㩫: U ( U) ⩜ ⩜, 㩫: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 3.1: ** 㩫 p 㩜 . ** 1. 婫 髞 ᛘ. 2. 㩫 dd ᯜ 穜 ਠ 㣞 Vim. 3. 婫 ⧜ ᜠ ⤞ . 4.  婫 ᩫ, 㩫 p ᢜ . 5. ᙜ 㣘 2 4 ᢜ 梜 ੫ . d) Can you learn too? b) Violets are blue, c) Intelligence is learned, a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 3.2: ** 㩫 r 㨘 ᥜ 夘 . ** 1. 婫 髞 ⤞ --->. 2. 婫 ⫩ 驫 夘 髦 ៦. 3. 㩫 r 㨘 妪 餜 ៦. 4. ᙜ 㣘 2 3 ⮨ 夘 ੫ 髞 . ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. 騘 夜 ៞ 3.2. : ᩫ 櫠 ⧜ 夜 㩞, 殠 検. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 3.3: ** ᥜ 㣘 梞 ⥞, 㩫 cw . ** 1. 婫 髞 ⤞ --->. 2. 㩫 u ⥞ lubw. 3. 㩫 cw ੫ ⥞ ( 姫ਫ਼ , ᯫ 'ine'.) 4. 㩫 夜 棜 ៦ ( 髦 㨘 ). 5. ᙜ 㣘 3 4 ⮨ 櫦 髞 櫘 夘 因 竜. ---> This lubw has a few wptfd that mrrf changing usf the change command. ---> This line has a few words that need changing using the change command. 婫 櫠 cw 殠 椦 ᜠ ⥞, ᚜ 婞 . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 3.4: c ** 嫘 因 壜 . ** 1. 眠 因 槦 . 夘: [] c 壜 c [] 壜 2. 壜 夘 ᢠ 因, w (⥞), $ (⢦ ), . 3. 嫜 髞 ⤞ --->. 4. 婫 髦 ៦. 5. ᯫ c$ ᤜ 梦 因 竜 㩫 . ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 1. 㩜 壜 梠 ⮜ , 㩫 p . ⤦ 壜 ( ᭫ ᜠ . 2. 㩜 㨘 , 㩫 r 㨘 㩜 . 3. ⧜ ᥜ ⤦ 壜 ⮨ ⢦ 壜. .. ᯫ cw ᥜ ⮨ ⢦ ⥞, c$ ᥜ ⮨ ⢦ . 4. 夘: [] c 壜 c [] 壜 騘 婫 棜 ៞. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 4.1: ** 㩫 CTRL-g ⩞ ᩫ . 㩫 SHIFT-G ᫜ . ** ਫ਼: ᩫ 桢 ៞ ⩜ ᧦ 㣘!! 1. 㩫 ⤦ 㡫 Ctrl 㩫 g . ᩫ ⨦ 囘 椦 妬 婫. 嫜 㣘 3. 2. 㩫 shift-G 嫜 ⢦ 妬. 3. 㩫 㩘 shift-G. ⯜ 㩘 㩜 髞 Ctrl-g. ( 嫜 , 坦 椞). 4. 韜 嚦 , ⩫ 㣘 1 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 4.2: ** 㩫 / 磜 ᩞ ᮤ. ** 1. ᩫ 㩫 㨘 / . 㩫 櫠 ☪ 坦 ⨦ 椞 : . 2. 騘 ᯫ 'errroor' . 夘 ⥞ ⢜ ᥜ. 3. ᥜ 因 ᩞ, 㩫 n . ᥜ 因 ᩞ 埜 矬, 㩫 Shift-N . 4. ⢜ ᥜ ᩞ , 㩫 ? / . --->  㫞 ᩜ ⢦ 妬 婜 . "errroor" is not the way to spell error; errroor is an error. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 4.3: ** 㩫 % 嫜 婫 ), ], } . ** 1. 㩫 ᧦ (, [, { ⤞ --->. 2. 騘 㩫 㨘 % . 3. ☪ ⧜ 夘 婫 ⤟ 碞. 4. 㩫 % 㩜 髞 碞 ( ). ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) : 夘 㩠 ਫ਼ ᣣ ⩜! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 4.4: ** ᯫ :s/old/new/g ᥜ 'new' 'old'. ** 1. 婫 ⤞ --->. 2. ᯫ :s/thee/the . 驫 櫠 ᝜ 椦 髞 ᤠ . 3. 騘 ᯫ :s/thee/the/g 餫 ᩫ . ᝜ 梜 婜 . ---> thee best time to see thee flowers is in thee spring. 4. ᥜ ៜ ᤠ 嘪 , ᯫ :#,#s/old/new/g 槦 #,# . ᯫ :%s/old/new/g ᥜ ៜ ᤠ 梦 . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 1. Ctrl-g 坜 ⩞ ᩫ . Shift-G 夜 ⢦ 妬. 뤘 磜 Shift-G 夜 夞 . 2. ᭦ / 磜 ᩞ ᮤ ᩞ. ᭦ ? 磜 ᩞ ᮤ ᩞ. 㫞 㩫 n 嫜 棜 ᤠ 因 矬 Shift-N ᥜ 埜 矬. 3. 餫 % 橦 ☪ 夘 (,),[,],{, } 坜 婫 娠 . 4. ᩫ new 髦 old ᯫ :s/old/new ᩫ new 'old' ᯫ :s/old/new/g ᩫ ᩜ # ᯫ :#,#s/old/new/g ᩫ 婜 ᯫ :%s/old/new/g 髞 ਫ਼ ៜ ⩫ ⤘ 'c' "%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 5.1: ** ᯫ :! 磜 ૜ ⩜. ** 1. 㩫 : ⩜ ⨦ 椞. ⧜ 驜 . 2. 騘 㩫 ! (). ⧜ ⩜ 㧦 ૜ . 3. ᛜ ᯫ ls ! 㩫 . 婜 婫 暦 , 㩘 . 㩫 :!dir ls 眠. ---> ਫ਼: 夘 ⩜ 㧦 ૜ 槦. ---> ਫ਼:  : ⧜ 坦 餫 . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 5.2: ** 驜 ᚜ ᤘ , ᯫ :w . ** 1. ᯫ :!dir :!ls ᨜ 婫 暦 . 웞 ⨜ 櫠 ⧜ 㩜 . 2. ⥫ ⤘ 椦 妬 ᨮ 棘, TEST. 3. 騘 ᯫ: :w TEST (槦 TEST 夘 椦 妬 ⥘). 4. 靜 梦 (vim Tutor) 椦 TEST. 穜, ᯫ :!dir 嫜 ᢦ . ---> 驫 櫠 夘 Vim 夘 椦 妬 TEST, 㫘 嚨 tutor 櫘 驘. 5. 騘 ᯫ ᭦ (MS-DOS): :!del TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 5.3: ** 驜 㣘 妬, ᯫ :#,# w ** 1. ꢢ , ᯫ :!dir :!ls ᨜ 婫 ᢦ ⥫ ⤘ ᢢ 椦 妬 TEST. 2. 婫 ⨦ 囘 㩫 Ctrl-g 嫜 . ! 3. 騘 夜 ⨦ 囘 㩫 Ctrl-g . ! 4. 驜 ⤘ 㣘 , ᯫ :#,# w TEST 槦 #,# 穘 (,) TEST 椦 妬 . 5. , 嫜 櫠 夘 :!dir ᯜ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 5.4: ** ᚜ 棜 妬, ᯫ :r ** 1. ᯫ :!dir 嫜 櫠 TEST ᨮ . 2. 㩫 ⨦ 囘. : 櫦 ⩜ 㣘 3 嫜 ៞ 5.3. 嫜 ៞ . 3. 騘 㩫 TEST 餫 :r TEST 槦 TEST 夘 椦 妬. : ᫜ 嫘 餫 婡 ☪. 4. 穜 櫠 㟞, 㩫 櫠 ᨮ 騘 嚨 㣘 5.3, ⡛ 妬. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 1. :! ૜ . 㩠 嚣 夘 (MS-DOS): :!dir - ᤠ 婫 暦. :!del - ᭜ . 2. :w ᭜ Vim 婡 椦 . 3. :#,#w 靜 # ⮨ # . 4. :r 婡 ᢢ ⩘ ⮦ ⩞ . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 6.1: ** 㩫 o 奜 嫜 ᩫ ⤦. ** 1. 婫 ⤞ --->. 2. 㩫 o () 奜 嫜 ᩫ ⤦. 3. 騘 ᯫ ⤞ ---> 㩫 嫜 ᩫ ⤦. ---> After typing o the cursor is placed on the open line in Insert mode. 4. 奜 , 㩫 ⤘ O, ⤘ o. ᩫ . 嚜 餫 Shift-O 橦 ☪ 夘 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 6.2: ** 㩫 a ᚜ 壜 . ** 1. 婫 ⢦ 髞 ⤞ ---> 餫 $ ᩫ. 2. 㩫 ⤘ a () ⩜ 壜 㨘 夘 . ( A ⫝̸ ⢦ ). ਫ਼: 皜 ᫞ i , 㨘, 壜 , , -, ⢦, x, 椦 椦 ⩜ ⢦ ! 3. 驫 騘 髞 . 驫 婞 櫠 㡞 夘 因 ᩫ ⤦ ᩫ , ⩞ ᚜ 壜. ---> This line will allow you to practice ---> This line will allow you to practice appending text to the end of a line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 6.3: ** 㩫 R ᥜ 櫜 ⤘ 㨜. ** 1. 婫 髞 ⤞ --->. 2. 㩫 髞 ⥞ 夘 竜 ⤞ ---> ( ⥞ 'last'). 3. 㩫 騘 R ᥫ 梦 ⤦ 髞 ᭦ 壜 驫 ᤜ 髞 因 竜. ---> To make the first line the same as the last on this page use the keys. ---> To make the first line the same as the second, type R and the new text. 4. 驫 櫠 櫘 ᫜ 嫜, ⤜ 㧦 ૦ 壜. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ៞ 6.4: ** 婫 ⫩ 驫 㫞 ᩫ - ** 1. ᥫ 'ignore' ᚦ: /ignore 婫 餫 㡫 n. 2. ⩫ 'ic' (Ignore case) ᭦: :set ic 3. ᥫ 騘 'ignore' 餫: n 婫 㫞 棘 餫 㡫 n 4. ⩫ 'hlsearch' 'incsearch': :set hls is 5. ᚜ 騘 㫞, 嫜 夜 /ignore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 1. 餫 o 嚜 ᩫ ⤦. 2. 㩫 a ᚜ 壜 㨘 夘 ☪. 餫 A 棘 ⫝̸ 壜 ⢦ . 3. 餫 R ⨮ ᩫ ᩫ ⮨ ⢟. 4. ᭦ ":set xxx" 坜 "xxx". ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7: ON-LINE ** 㩫 on-line 穫 㟜 ** Vim ⮜ ⤘ on-line 穫 㟜. 㩜, ᩫ ᧦ : - 㩫 㡫 ( ⮜ ᧦) - 㩫 㡫 ( ⮜ ᧦) - ᯫ :help ᯫ :q 婜 ៬ 㟜. 嫜 嫜 㟜 ៜ 壜, 夦 ᣜ ":help". ᩫ ( ᫜ ᫜ ): :help w :help c_ l Ű ʿ , j Դϴ. v j Ű Ʒ ȭǥó ϴ. 1. ͼ Ŀ ũ 󿡼 ʽÿ. 2. Ʒ Ű (j) ݺԷ ʽÿ. ---> lesson ˰ Ǿϴ. 3. Ʒ Ű ̿Ͽ, Lesson 1.2 ʽÿ. : ʴ 𰡰 Է Ǿٸ, , ưʽÿ. Ŀ ϴ ٽ ԷϽʽÿ. : ĿŰ ۵ Դϴ. hjkl ͼ, ĿŰ ξ ̵ Դϴ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.2: ϰ !! : Ʒ ִ ܰ踦 ϱ , lesson ü ʽÿ!! 1. Ű Ȯϰ ɴϴ. 2. Էմϴ: :q! ---> ̷ ϸ, ٲ * ʰ* ⸦ ϴ. Էմϴ: :wq 3. Ʈ δٸ, ٽ ̷ ƿ Էմϴ. vimtutor Ǵ ֽϴ. vim tutor.ko ---> 'vim'  ϸ, 'tutor.ko' Ϸ մϴ. 4. ̾߱ ܰ踦 Ͽ, Ȯ , 1 3 Ͽ ⸦ ٰ ٽ ͺʽÿ. Ŀ Ʒ Lesson 1.3 ʽÿ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.3: ؽƮ - ** 忡 x Ŀ ġ ڸ ֽϴ. ** 1. ----> ǥõ Ŀ Űܺʽÿ. 2. Ÿ ϱ , Ŀ ʽÿ. 3. x Ű ڸ ʽÿ. 4. 2 4 ݺϿ ùٸ ǵ Ͽ ʽÿ. ---> The ccow jumpedd ovverr thhe mooon. 5. Ȯٸ, Lesson 1.4 ʽÿ. : ̸ 鼭 ܿ , غ鼭 ٶϴ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.4: ؽƮ - (INSERTION) ** 忡 i ؽƮ Է ֽϴ. ** 1. Ŀ ù° ---> ǥõ ٷ Դϴ. 2. ù° ι° ٰ Ȱ Դϴ. ؽƮ  ù° Ŀ Ű ϴ. 3. i Ű , ʿ Էմϴ. 4. Ŀ ưϴ. ùٸ 2 4 ݺմϴ. ---> There is text misng this . ---> There is some text missing from this line. 5. ؽƮ ϴ ͼٸ, ֽʽÿ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 1 1. Ŀ ȭǥ Ű hjkl Ű ̿մϴ. h () j (Ʒ) k () l () 2. Ʈ Ϸ vim FILENAME 3. ä :q! :wq 4. 忡 Ŀ ġ ڸ x Էմϴ. 5. 忡 Ŀ ġ ؽƮ Ϸ i ؽƮ Էϰ ϴ. : ư , ġ ʴ ̳ Էµ ϴ ϴ. ׷ Lesson 2 սô. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.1: (DELETION) ** ܾ dw ġ ˴ϴ. ** 1. Ű Ȯϰ ɴϴ. 2. Ʒ ---> ǥõ Ŀ űϴ. 3. ܾ ó Ŀ űϴ. 4. dw ļ ܾ ϴ. : Ѵ ϸ ȭ ٿ dw ڰ ǥõ˴ϴ. ߸ ƴٸ, ٽ Ͻʽÿ. ---> There are a some words fun that don't belong paper in this sentence. 5. 3, 4 ٽ Ͽ Ȯϰ Lesson 2.2 ʽÿ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.2: ٸ ** d$ ġ ϴ. ** 1. Ű Ȯϰ ɴϴ. 2. Ʒ ---> ǥõ Ŀ űϴ. 3. ùٸ Ŀ űϴ. (ù° . Դϴ.) 4. d$ ļ ϴ. ---> Somebody typed the end of this line twice. end of this line twice. 5.  Ͼ ϱ Lesson 2.3 ʽÿ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.3: ɰ d ϴ. [Ƚ] d Ǵ d [Ƚ] ⼭ Ƚ - (ɼ, ⺻=1). d - - Ʒ õ : w - Ŀ ܾ ( .) e - Ŀ ܾ ( .) $ - Ŀ : ȣ ִٸ, 忡 Էغʽÿ. ̾߱ Ͽ Ŀ ̰ ˴ϴ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.4: '-' ** dd ġ ü ϴ. ** ü , Vi , d ι ޾ ġ ֵ Ͽϴ. 1. Ŀ Ʒ ܶ ι° ٷ ʽÿ. 2. dd ԷϿ ʽÿ. 3. ׷ ׹° ٷ ʽÿ. 4. 2dd ԷϿ ϴ. ( Ƚ-- ϼ. ) 1) Roses are red, 2) Mud is fun, 3) Violets are blue, 4) I have a car, 5) Clocks tell time, 6) Sugar is sweet 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.5: (UNDO) ** u ҵǸ, U ü մϴ. ** 1. Ŀ ---> ǥõ ٷ ̵ ù° ߸ κ űϴ. 2. x ԷϿ ù° ߸ ڸ ϴ. 3. ׷ u ԷϿ մϴ. 4. ̹ x ̿Ͽ غô. 5. 빮 U · ʽÿ. 6. ̹ u U غô. 7. CTRL-R (CTRL Ű ¿ R ) ٽ غô. ( .) ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. ſ մϴ. ׷ Lesson 2 Ѿ սô. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 2 1. Ŀ ġ ܾ : dw 2. Ŀ ġ : d$ 3. ü : dd 4. 忡 ϴ: [Ƚ] Ǵ [Ƚ] ⼭: Ƚ - ݺ ΰ -  ΰ ( , d ) - , w (ܾ), $ ( ) . 5. ൿ Ϸ: u (ҹ u) ٿ Ϸ: U (빮 U) ٽ Ϸ: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.1: ̱(PUT) ** p ԷϿ Ŀ ڿ Դϴ. ** 1. Ʒ ִ ù ٷ Ŀ ̽ʽÿ. 2. dd ԷϿ ۿ մϴ. 3. Ʊ ġ *ٷ* Ŀ űϴ. 4. 忡, p ԷϿ ڸ űϴ. 5. 2 4 ݺϿ ٷ ʽÿ. d) Can you learn too? b) Violets are blue, c) Intelligence is learned, a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.2: ġȯ(REPLACE) ** Ŀ Ʒ ϳ ٲٷ, r ٲ ڸ Էմϴ. ** 1. Ŀ ---> ǥõ ù ٷ űϴ. 2. Ŀ ߸ ù κ űϴ. 3. r , ߸ κ ڸ Էմϴ. 4. 2 3 ݺϿ, ù Ͻʽÿ. ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. Lesson 3.2 ̵սô. : ܿ , غ鼭 Ѵٴ ʽÿ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.3: ȯ(CHANGE) ** ܾ Ϻγ ü ٲٷ, cw ġʽÿ. ** 1. Ŀ ---> ǥõ ùٷ űϴ. 2. Ŀ lubw u ÷ϴ. 3. cw ܾ Ȯϰ մϴ. ( , 'ine' Ĩϴ.) 4. ϴ (Ǿ ù ڷ ϴ.) 5. 3 4 ݺϿ ù° ι° ϴ. ---> This lubw has a few wptfd that mrrf changing usf the change command. ---> This line has a few words that need changing using the change command. cw ܾ ġȯϴ Ӹ ƴ϶, ֵ Ѵٴ Ϳ սô. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.4: c ̿ ٸ ȯ ** ȯ ̿ ֽϴ. ** 1. ȯ մϴ. ϴ: [Ƚ] c Ǵ c [Ƚ] 2. ϴ. w (ܾ), $ ( ) ֽϴ. 3. ---> ǥõ ùٷ ̵մϴ. 4. ù Ŀ űϴ. 5. c$ ԷϿ, ι° ó ǵ ʽÿ. ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 3 1. ̹ ǵ, p ʽÿ. Ŀ ** Դϴ(PUT). ( 쿡 Ŀ ٿ ٽϴ.) 2. Ŀ Ʒ ڸ ġȯϷ(REPLACE), r ٲپ ڸ Էմϴ. 3. ȯ (CHANGE) Ŀ ٲ ִ Դϴ. , Ŀ ġ ܾ ٲٷ, cw Էϸ Ǹ, c$ ٲٴ Դϴ. 4. ȯ ϴ: [Ƚ] c Ǵ c [Ƚ] ؼ Lesson սô. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.1: ġ ** CTRL-g ġ ¸ ֽϴ. SHIFT-G ٷ ̵մϴ. ** : Ʒ ܰ踦 ϱ , Lesson ü ʽÿ. 1. CTRL Ű ¿ g ϴ. ̸ ġ ǥõ ȭ Ʒ ǥõ Դϴ. 3° ܰ踦 ȣ ϰ ʽÿ. 2. SHIFT-G ̵մϴ. 3. Ʊ ߴ ȣ Է SHIFT-G ʽÿ. ̷ ϸ ó CTRL-g ҷ ǵư Դϴ. (ȣ Է , ̰ ȭ鿡 ǥõ ʽϴ.) 4. ڽ ٸ, 1 3 غʽÿ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.2: ã ** / ˻ ԷϽʽÿ. ** 1. 忡 / ԷϽʽÿ. : ɿ , ȭ Ʒ / Ŀ ǥõ Դϴ. 2. 'errroor' ģ ġʽÿ. ܾ ã մϴ. 3. ٽ ã, n ԷϽʽÿ. ݴ ã, Shift-N ԷϽʽÿ. 4. ã, / ? ̿ϸ ˴ϴ. ---> "errroor" is not the way to spell error; errroor is an error. : ã ߿ ٴٸ Ǹ, ó ٽ ã ˴ϴ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.3: ȣ ¦ ã ** % ), ], } ¦ ãϴ. ** 1. Ŀ ---> ǥõ (, [, { ϳ ϴ. 2. % Է ô. 3. Ŀ ¦ ´ ȣ ̵ Դϴ. 4. % ԷϿ, ȣ ǵ ɽô. ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) : ¦ ʴ ȣ ִ α׷ ſ մϴ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.4: ϴ ** :s/old/new/g ϸ 'old' 'new' ġȯ(SUBTITUTE)մϴ. ** 1. Ŀ ---> ǥõ ٿ ϴ. 2. :s/thee/the Է Ĩϴ. ٿ ó ߰ߵ ͸ ٲ۴ٴ Ϳ Ͻʽÿ. 3. ̹ :s/thee/the/g Էմϴ. ̴ ü(globally) ġȯѴٴ ǹմϴ. ---> thee best time to see thee flowers is in thee spring. 4. ڿ ġȯϷ մϴ, :#,#s/old/new/g #,# ٹȣ մϴ. :%s/old/new/g ü ߰ߵ ġȯϴ Դϴ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 4 1. CTRL-g ¿ ġ ǥմϴ. SHIFT-G ̵մϴ. ٹȣ Է SHIFT-G Էϸ, ٷ ̵մϴ. 2. / Է Էϸ Ʒ ãϴ. ? Է Էϸ ãϴ. ˻ , n Էϸ ã, Shift-N Էϸ ݴ ãϴ. 3. Ŀ (,),[,],{,} % Էϸ ϴ ¦ ãưϴ. 4.  ٿ ó ϴ old new ٲٷ :s/old/new ٿ ϴ old new ٲٷ :s/old/new/g #,# ̿ ġȯ Ϸ :#,#s/old/new/g ġȯϷ :%s/old/new/g ٲ Ȯ ġ 'c' ٿ :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.1: ܺ ϴ ** :! Է Ϸ ԷϽʽÿ. ** 1. ģ : Էϸ Ŀ ȭ Ʒ ̵մϴ. Է ְ ˴ϴ. 2. ! (ǥ) ԷϽʽÿ. ̷ ϸ ܺ ֽϴ. 3. ! ls Է ĺʽÿ. Ʈ ó 丮 µ Դϴ. ls ʴ´ٸ :!dir õ ʽÿ. :  ܺ ɵ ֽϴ. : : ľ ˴ϴ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.2: ڼ ** Ϸ Ϸ, :w FILENAME Ͻʽÿ. ** 1. :!dir Ǵ :!ls ԷϿ 丮 Ʈ ɴϴ. ľѴٴ ̹ ˰ Դϴ. 2. TEST ó ʴ ̸ ϳ ʽÿ. 3. :w TEST ԷϽʽÿ. (TEST ̸Դϴ.) 4. ̷ ϸ ü TEST ̸ մϴ. ȮϷ, :!dir ٽ ԷϿ, 丮 캸ʽÿ. : , ٽ Ͽ TEST , Ϻ 纻 Դϴ. 5. ô. (MS-DOS): !del TEST (Unix): !rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.3: ϴ ** Ϻθ Ϸ, :#,# w FILENAME Ͻʽÿ. ** 1. ٽ ѹ, :!dir ̳ :!ls ԷϿ 丮 ޾ƿ TEST ̸ մϴ. 2. Ŀ ó ű , Ctrl-g ԷϿ ٹȣ ˾Ƴϴ. ȣ Ͻʽÿ! 3. Ctrl-g ٽ ԷϽʽÿ. ٹȣ Ͻʽÿ! 4.  Ǹ Ϸ Ϸ, :#,# w TEST Էϸ ˴ϴ. #,# Ʊ ߴ ۰ ٹȣ Դϴ. TEST ̸Դϴ. 5. :!dir ̿Ͽ ȮϽʽÿ. ʽÿ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.4: о̱, ġ **  Ϸ, :r FILENAME Ͻʽÿ ** 1. :!dir ԷϿ Ʊ TEST ״ ִ ȮϽʽÿ. 2. Ŀ ó ̽ʽÿ. : 3° ܰ踦 ϸ, Lesson 5.3 Դϴ. ׷ Ǹ lesson ٽ ʽÿ. 3. TEST оԽô. :r TEST Ͻʽÿ. TEST ̸Դϴ. : о Ŀ ġ ̰ ˴ϴ. 4. о鿩 Ȯϱ , ڷ ̵ؼ Ͽ о , ̷ Lesson 5.3 ι ݺǾ ȮϽʽÿ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 5 1. :!command ̿Ͽ ܺ մϴ. : (MS-DOS) (Unix) :!dir :!ls - 丮 ش. :!del FILENAME :!rm FILENAME - FILENAME̶ . 2. :w FILENAME ϸ ϴ FILENAME̶ ̸ ũ մϴ. 3. :#,#w FILENAME ϸ # # FILENAME̶ Ϸ մϴ. 4. :r FILENAME ũ FILENAME̶ ҷ鿩 Ŀ ġ ڿ ֽϴ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.1: (OPEN) ** o Ŀ Ʒ 尡 ˴ϴ. ** 1. Ʒ ---> ǥõ ٷ Ŀ űʽÿ. 2. o (ҹ) ļ Ŀ *Ʒ* ϳ ʽÿ. 尡 ˴ϴ. Insert mode. 3. ---> ǥõ 忡 ʽÿ. ---> After typing o the cursor is placed on the open line in Insert mode. 4. Ŀ ** ϳ , ҹ o 빮 O ġ ˴ϴ. Ʒ ִ ٿ ʽÿ. Open up a line above this by typing Shift-O while the cursor is on this line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.2: ߰(APPEND) ** a Ŀ ** Է ֽϴ. ** 1. Ŀ ---> ǥõ ù° űϴ. 忡 $ ̿Ͻʽÿ. 2. ҹ a Ŀ Ʒ ** ߰ ֽϴ. (빮 A ߰մϴ.) : ׷ Ͻø ߰ ϱ i , Ŀ Ʒ ִ ڸ ݺϰ, ְ, ƿͼ, Ŀ ű x ϴ ŷο Ͻ ֽϴ. 3. ù ϼϽʽÿ. ߰ ؽƮ ԷµǴ ġ ܿ ٴ Ͻʽÿ. ---> This line will allow you to practice ---> This line will allow you to practice appending text to the end of a line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.3: ġȯ(REPLACE) ٸ ** 빮 R Էϸ ϳ ̻ ڸ ٲ ֽϴ. ** 1. Ŀ ---> ǥõ ù° ٷ űʽÿ. 2. Ŀ ---> ǥõ ι° ٰ ٸ ù° ܾ űʽÿ. ('last' Դϴ.) 3. R Է ù° ؽƮ ο ԷϿ ι° ٰ ٲ߽ô. ---> To make the first line the same as the last on this page use the keys. ---> To make the first line the same as the second, type R and the new text. 4. , ٲ ؽƮ ״ ˴ϴ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.4: ɼ (SET) ** ã⳪ ٲٱ⿡ ҹ ֱ ɼ մϴ ** 1. ԷϿ 'ignore' ãʽÿ: /ignore n Ű ̿Ͽ ݺϽʽÿ. 2. 'ic' (ҹ , Ignore case) ɼ Ͻʽÿ: :set ic 3. n Ű 'ignore' ٽ ãƺʽÿ. n Ű ãʽÿ. 4. 'hlsearch' 'incsearch' ɼ սô. :set hls is 5. ã ٽ ԷϿ,  Ͼ Ȯ ʽÿ: /ignore 6. ã (HIGHLIGHT) ַ, Էմϴ: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 6 1. o Էϸ Ŀ *Ʒ* , Ŀ ġϰ ˴ϴ. 빮 O Էϸ Ŀ ִ ** ˴ϴ. 2. a Էϸ Ŀ ** Է ֽϴ. 빮 A Էϸ ڵ ڸ ߰ϰ ˴ϴ. 3. 빮 R Էϸ ٲٱ 尡 ˴ϴ. 4. ":set xxx" ϸ "xxx" ɼ ˴ϴ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 7: ¶ ** ¶ ý ϱ ** ¶ ý մϴ. , ϳ õغʽÿ: - Ű . (Ű ִ ) - Ű . (Ű ִ ) - :help ԷѴ. â :q ԷϽʽÿ. ":help" ɿ ڸ ָ  ã ֽϴ. ʽÿ. ( Ű ʽÿ.) :help w :help c_ gördüğünüz yerde bu tuşa basmanız gerekir. ** İmleci hareket ettirmek için, h,j,k,l tuşlarına gösterildiği gibi basın. ** ^ k İpucu: h tuşu soldadır ve sola hareket eder. < h l > l tuşu sağdadır ve sağa hareket eder. j j tuşu aşağı yönlü bir ok gibidir. v 1. Yeterli hissedinceye kadar imleci ekranda hareket ettirin. 2. Aşağı tuşunu (j) tekrar edene kadar basılı tutun. ---> Şimdi, bir sonraki derse nasıl geçeceğinizi biliyorsunuz. 3. Aşağı tuşunu kullanarak, Ders 1.2'ye geçin. Not: Eğer yazdığınız bir şeyden emin değilseniz, Normal kipe geçmek için tuşuna basın. Daha sonra istediğiniz komutu yeniden yazın. Not: İmleç tuşları da aynı zamanda işe yararlar ancak hjkl tuşlarını kullanmaya alıştığınızda etrafta daha hızlı hareket edersiniz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 1.2: VIM'E GİRİŞ VE VIM'DEN ÇIKIŞ !! NOT: Aşağıdaki adımları yapmadan önce, bu dersi tamamen okuyun. 1. tuşuna basın (Normal kipte olmayı garantilemek için). 2. Yazın: :q! . ---> Bu düzenleyicinin yaptığınız değişiklikleri KAYDETMEDEN kapanmasını sağlar. Eğer yaptıklarınızın kaydedilmesini istiyorsanız şunu yazın: :wq 3. Kabuk istemcisini (shell prompt) gördüğünüzde, sizi bu eğitmene getiren komutu yazın. Bu: vimtutor komutudur. Normalde: vim tutor komutu kullanılır. ---> 'vim' vim düzenleyicisine gir anlamına gelir, 'tutor' ise açmak istediğiniz dosyadır. 4. Eğer bu adımları ezberlediyseniz ve kendinizden eminseniz, 1'den 3'e kadar olan adımları, düzenleyiciden çıkmak ve yeniden girmek için uygulayın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 1.3: METİN DÜZENLEME - SİLME ** Normal kipteyken imlecin altındaki karakteri silmek için x 'e basın.** 1. İmleci aşağıda işaretlenmiş (-->) satıra götürün. 2. Hataları düzeltmek için, imleci silinmesi gereken karakterin üzerine getirin 3. İstenmeyen karakteri silmek için x tuşuna basın. 4. Cümle düzelene kadar 2'den 4'e kadar olan adımları tekrar edin. ---> İinek ayyın üzzerinden attladı. 5. Şimdi satır düzeldi, Ders 1.4'e geçin. NOT: Bu eğitmende ilerledikçe ezberlemeye çalışmayın, kullanarak öğrenin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 1.4: METİN DÜZENLEME - EKLEME ** Normal kipteyken metin eklemek için i 'ye basın. ** 1. İmleci aşağıdaki işaretlenmiş (-->) ilk satıra götürün. 2. İlk satırı ikincisinin aynısı gibi yapmak için, imleci eklenmesi gereken metinden sonraki ilk karakterin üzerine götürün. 3. i 'ye basın ve gerekli eklemeleri yapın. 4. Her hata düzeltildiğinde tuşuna basarak Normal kipe dönün. Cümleyi düzeltmek için 2'den 4'e kadar olan adımları tekrar edin. ---> Bu metinde eksk. ---> Bu metinde birşey eksik. 5. Metin ekleme çalışmalarını yeterli görüyorsanız aşağıdaki özete geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DERS 1 ÖZET 1. İmleç hem ok tuşları hem de hjkl tuşları ile hareket ettirilir. h (sol) j (aşağı) k (yukarı) l (sağ) 2. (Konsoldan) Vim'e girmek içn yazın: vim DOSYAİSMİ 3. Tüm değişiklikleri göz ardı edip vimden çıkmak için yazın: :q! veya tüm değişiklikleri kaydetmek için yazın: :wq 4. İmlecin altındaki bir karakteri silmek için Normal kipte x yazın. 5. İmlecin altında metin eklemek için Normal kipte yazın: i yazılacak metin NOT: tuşuna basmak sizi Normal kipe götürür ya da istenmeyen tamamlanmamış bir komutu iptal eder. Şimdi Ders 2 ile devam edin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 2.1: SİLME KOMUTLARI ** Bir kelimeyi silmek için dw yazın.** 1. Normal kipte olmakten emin olmak için tuşuna basın. 2. İmleci aşağıdaki işaretlenmiş (-->) satıra götürün. 3. İmleci silinmesi gereken kelimenin başına götürün. 4. Kelimeyi silmek için dw yazın. NOT: dw harfleri siz yazdıkça ekranın son satırında görülecektir. Eğer yanlış bir şeyler yazarsanız, yeniden başlamak için tuşuna basın. ---> Bu satırda çerez cümleye ait olmayan leblebi kelimeler var. 5. Cümle düzelene kadar adım 3 ve 4'ü tekrar edin, daha sonra Ders 2.2'ye gidin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 2.2: DAHA FAZLA SİLME KOMUTU ** Satırı sonuna kadar silmek için d$ yazın.** 1. Normal kipte olmaktan emin olmak için tuşuna basın. 2. İmleci aşağıdaki işaretlenmiş (-->) satıra götürün. 3. İmleci doğru olan satırın sonuna götürün. (Birinciden SONRA. ) 4. Satırı sonuna kadar silmek için d$ yazın. ( d$ yazarken d'den sonra ile beraber $ tuşuna basın) ---> Birileri bu satırın sonunu iki defa yazmış. Birileri bu satırın sonunu iki defa yazmış. 5. Neler olduğunu anlamak için Ders 2.3'e gidin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 2.3: KOMUTLAR VE NESNELER d silme komutu için biçim aşağıdaki gibidir: [sayı] d nesne VEYA d [sayı] nesne Burada: sayı - komutun kaç defa çalıştırlacağı (isteğe bağlı, varsayılan=1). d - silme komutu nesne - komutun ne şekilde çalışacağı (aşağıda listlendi). Nesnelerin kısa bir listesi. w - Boşluğu da içererek, imleçten itibaren kelimenin sonuna kadar. e - Boşluğu İÇERMEDEN, imleçten itibaren kelimenin sonuna kadar. $ - imleçten satırın sonuna kadar. NOT: Serüven sevenler için, Normal kipte iken, komut olmadan sadece nesnenin kendisine basmak imleci yukardaki listede olduğu gibi hareket ettirecektir. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 2.4: 'KOMUT-NESNE'ye BİR İSTİSNA ** Bütün bir satırı silmek için dd yazın. ** Bütün bir satır silme sıklığından dolayı, Vi tasarımcıları bir satırı tamamen silmek için iki d yazmanın daha kolay olacağına karar verdiler. 1. İmleci aşağıdaki tümceciğin ikinci satırına götürün. 2. Satırı silmek için dd yazın. 3. Şimdi de dördüncü satıra gidin. 4. İki satırı birden silmek için 2dd (sayı-komut-nesne'yi hatırlayın) yazın. 1) Güller kırmızıdır, 2) Çamur eğlenceli, 3) Menekşeler mavi, 4) Bir arabam var, 5) Saat bana söyler, 6) Şeker tatlıdır 7) Ve sen de öylesin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 2.5: GERİ AL KOMUTU ** Son komutu geri almak için u , bütün bir satırı düzeltmek için U yazın.** 1. İmleci aşağıdaki işaretlenmiş (-->) satırdaki ilk hatanın üzerine götürün. 2. İlk istenmeyen karakteri silmek için x yazın. 3. Şimdi son çalıştırılan komutu geri almak için u yazın. 4. Bu sefer x komutunu kullanarak satırdaki tüm hataları düzeltin. 5. Şimdi satırı ilk haline çevirmek için büyük U yazın. 6. Şimdi U ve daha önceki komutları geri almak için birkaç defa u yazın. 7. Şimdi birkaç defa CTRL-R (CTRL'yi basılı tutarken R ye basın) yazarak geri almaları da geri alın. ---> Buu satıırdaki hataları düüzeltinn ve sonra koomutu geri alllın. 8. Bunlar son derece kullanışlı komutlardır. Şimdi Ders 2 Özete geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DERS 2 ÖZET 1. İmleçten itibaren bir kelimeyi silmek için yazın: dw 2. İmleçten itibaren bir satırı silmek için yazın: d$ 3. Bütün bir satırı silmek için yazın: dd 4. Normal kipte bir komut biçimi şöyledir: [sayı] komut nesne VEYA komut [sayı] nesne burada: sayı - komutun kaç kere tekrar edeceği komut - ne yapılacağı, silmek için d olduğu gibi nesne - komutun nasıl davranacağı, w (kelime), $ (satır sonu), vb gibi. 5. Önceki hareketleri geri almak için yazın: u (küçük u) Bir satırdaki tüm değişiklikleri geri almak için yazın: U (büyük u) Geri almaları geri almak için yazın: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 3.1: KOY KOMUTU ** Son yaptığınız silme işlemini imleçten sona geri yerleştirmek için p yazın.** 1. İmleci aşağıdaki tümceciğin ilk satırına götürün. 2. Satırı silip Vim'in tamponuna yerleştirmek için dd yazın. 3. İmleci, silinmiş satırı nereye yerleştirmek istiyorsanız, o satırın ÜZERİNE götürün. 4. Normal kipteyken, satırı yerleştirmek için p yazın. 5. Tüm satırları doğru sıraya koymak için 2'den 4'e kadar olan adımları tekrar edin. d) Sen de öğrendin mi? b) Menekşeler mavidir, c) Akıl öğrenilir, a) Güller kırmızıdır, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 3.2: YERLEŞTİR KOMUTU ** İmlecin altında bir karakter yerleştirmek için r yazın.** 1. İmleci aşağıdaki işaretlenmiş(--->) ilk satıra götürün. 2. İmleci satırdaki ilk hatanın üzerine götürün. 3. Hatayı düzeltmek için önce r ardından da doğru karakteri yazın. 4. İlk satır düzelene kadar adım 2 ve 3'ü tekrar edin. ---> Bu satıv yazılıvken, bivileri yamlış tuştara basmış. ---> Bu satır yazılırken, birileri yanlış tuşlara basmış. 5. Ders 3.2'ye geçin. NOT: Unutmayın, ezberleyerek değil kullanarak öğrenin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 3.3: DEĞİŞTİR KOMUTU ** Bir kelimenin tamamını veya parçasını değiştirmek için cw yazın. 1. İmleci aşağıdaki işaretlenmiş(--->) satıra götürün. 2. İmleci "sutar" daki u'nun üzerine yerleştirin. 3. Önce cw ardından doğru kelimeyi girin (bu durumda 'atır'.) 4. tuşuna basın ve bir sonraki hataya gidin (değişmesi gereken ilk karakter.) 5. İlk cümle ikincisiyle aynı olana kadar adım 3 ve 4'ü tekrar edin. ---> Bu sutar değiştir komutu ile değişneli gereken birkaç petime içeriyor. ---> Bu satır değiştir komutu ile değişmesi gereken birkaç kelime içeriyor. cw'nin sadece kelimeyi değiştirmediğini, aynı zamanda sizi insert kipine götürdüğüne de dikkat edin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 3.4: c'Yİ KULLANARAK DAHA FAZLA DEĞİŞTİRME ** Değiştir komutu sil komutu ile aynı nesnelerle kullanılır.** 1. Değiştir komutu sil ile aynı yolla çalışır. Biçim şöyledir: [sayı] c nesne VEYA c [sayı] nesne 2. Nesneler de aynı zamanda aynıdır. Örneğin w (word), $ (satır sonu), vb. gibi. 3. Aşağıdaki işaretlenmiş(--->) ilk satıra gidin. 4. İmleci ilk hataya götürün. 5. Satırın geri kalan kısmını ikincisi gibi yapmak için c$ yazın ve daha sonra tuşuna basın. ---> Bu satırın sonu düzeltilmek için biraz yardıma ihtiyaç duyuyor. ---> Bu satırın sonu düzeltilmek için c$ komutu kullanılarak yardıma ihtiyaç duyuyor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DERS 3 ÖZET 1. Silinmiş olan bir metini geri yerleştirmek için p yazın. Bu silinmiş metini imleçten hemen SONRA geri yerleştirir (eğer bir satır silinmişse hemen imleçten sonra, alta yerleştirilecektir) 2. İmlecin altındaki karakteri değiştirmek için önce r ardından da asıl karakteri yazın. 3. Değiştir komutu belirlenen nesneyi, imleçten nesnenin sonuna kadar değiştirme imkanı verir. Örneğin, bir kelimeyi imleçten sonuna kadar değiştirmek için cw , bir satırın tamamını değiştirmek içinse c$ yazın. 4. Değiştir için biçim şöyledir: [sayı] c nesne VEYA c [sayı] nesne Şimdi bir sonraki derse geçin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 4.1: KONUM VE DOSYA DURUMU ** Dosya içerisindeki konumunuzu ve dosyanın durumunu görmek için CTRL-g yazın. ** ** Dosya içerisindeki bir satıra gitmek için SHIFT-g yazın. ** Not: Adımlardan herhangi birini yapmadan önce dersin tamamını okuyun!! 1. Ctrl tuşunu basılı tutun ve g'ye basın. Dosyanın sonunda dosya ismini ve bulunduğunuz konumu gösteren bir durum satırı görünecektir. Adım 3 için satır numarasını unutmayın. 2. Dosyanın sonuna gitmek için shift-G 'ye basın. 3. Daha önce bulunduğunuz satır numarasını yazın ve daha sonra shift-G 'ye basın. Bu sizi daha önce bulunduğunuz ve Ctrl-g 'ye bastığınız satıra geri götürecektir. (Sayılar yazılırken ekranda GÖRÜNMEYECEKLERDİR.) 4. Yapabileceğinizi düşündüğünüzde, adım 1'den 3'e kadar yapın. Ç.N: Bu kısım orijinal metinde de biraz eksik anlatılmış gibi. Bir satır hakkında bilgi almak için Ctrl-g'yi kullanın. Herhangi bir satıra gitmek içinse, önce satır numarasını yazın ve ardınan shift-g'ye basın. Satır numarası girmeden basılan shift-g sizi satır sonuna götürür. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 4.2: ARAMA KOMUTU ** Bir kelime öbeğini aramak için / ile beraber kelime öbeğini girin. ** 1. Normal kipteyken / karakterini yazın. Komut bölümü yerine / karakterinin ve imlecin ekranın sonunda göründüğüne dikkat edin. 2. Şimdi, 'hatttaa' yazıp 'a basın. Bu sizin aramak istediğiniz kelime. 3. Aynı kelime öbeğini tekrar aramak için, basitçe n yazın. Aynı kelime öbeğini zıt yönde aramak için, Shift-N yazın. 4. Eğer zıt yöne doğru bir arama yapmak istiyorsanız, / komutu yerine ? komutunu kullanın. ---> "hatttaa" hatayı yazmanın doğru yolu değil; hatttaa bir hata. Not: Arama dosyanın sonuna ulaştığında, tekrar baştan başlayacaktır. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 4.3: UYAN PARANTEZ ARAMASI ** Uyan bir ),] veya } bulmak için % yazın. ** 1. İmleci işaretli (--->) satırdaki herhangi bir (, [ veya { karakterinin üzerine götürün. 2. Şimdi % karakterini yazın. 3. İmleç uyan parantez veya ayracın üzerine gider. 4. Uyan ilk parantezin üzerine geri dönmek için yine % yazın. ---> Bu ( içerisinde ('ler, ['ler ] ve {'ler } bulunan bir satırdır. )) Not: Bu içerisinde uymayan parantezler bulunan bir programın yanlışını ayıklamak için son derece yararlıdır. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 4.4: HATALARI DÜZELTMEK İÇİN BİR YOL ** 'eski' yerine 'yeni' yerleştirmek için :s/eski/yeni/g yazın. ** 1. İmleci aşağıdaki işaretli (--->) satıra götürün. 2. :s/buu/bu yazıp 'a basın. Bu komutun sadece satırdaki ilk karşılaşmayı düzelttiğine dikkat edin. 3. Şimdi genel olarak satırdaki tüm değişikliği yapmak için :s/buu/bu/g yazın. ---> Buu birinci, buu ikinci, buu üçüncü bölüm. 4. İki satır arasındaki bir karakter katarının tümünü değiştirmek için, :#,#s/eski/yeni/g yazın, burada #,# iki satırın sayılarıdır. Tüm dosyadaki karşılaşılan kelimeleri değiştirmek için :%s/eski/yeni/g yazın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DERS 4 ÖZET 1. Ctrl-g sizin dosyadaki konumunuzu ve dosya durumunu gösterir. Shift-G dosyanın sonuna gider. Shift-G 'den önce bir sayı yazılırsa, o satıra gidilir. 2. Bir sözcük öbeğinden önce / yazmak, İLERİ yönde o öbeği aratır. Bir sözcük öbeğinden önce ? yazmak, GERİ yönde o öbeği aratır. Bir aramadan sonra, aynı yöndeki bir sonraki karşılaşmayı bulmak için n , veya zıt yöndekini bulmak için Shift-N yazın. 3. İmleç bir (,),[,],{,} parantezi üzerindeyken % yazmak, uyan diğer eş parantezi bulur. 4. Bir satırdaki ilk 'eski'yi 'yeni' ile değiştirmek için :s/eski/yeni yazın. Bir satırdaki tüm 'eski'leri 'yeni' ile değiştirmek için :s/eski/yeni/g yazın. İki satır arasındaki öbekleri değiştirmek için :#,#s/eski/yeni/g yazın. (#'lar satır numaraları) Bir dosyadaki tüm karşılaşmaları değiştirmek için :%s/eski/yeni/g yazın. Her seferinde onay sorması için 'c' ekleyin. :%s/eski/yeni/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 5.1: BIR DIŞ KOMUT ÇALIŞTIRMAK ** Bir dış komutu çalıştırmak için :! ve ardından istediğiniz dış komutu yazın. ** 1. İmleci ekranın altına götürmek için alışık olduğunuz : komutunu yazın. Bu size bir komut yazma imkanı verir. 2. Şimdi ! (ünlem) karakterini yazın. Bu size bir dış komut çalıştırma imkanı verir. 3. Örnek olarak ! karakterini takiben ls yazın ve 'a basın. Bu size o anda bulunduğunuz dizindeki dosyaları gösterecektir. Veya ls çalışmazsa :!dir komutunu kullanın. Not: Herhangi bir dış komutu bu yolla çalıştırmak mümkündür. Not: Tüm : komutlarından sonra tuşuna basılmalıdır. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 5.2: DOSYA YAZMAYA DEVAM ** Dosyaya yapılan değişikliği kaydetmek için, :w DOSYAİSMİ yazın. ** 1. Bulunduğunuz dizini listelemek için :!dir veya :!ls yazın. Komuttan sonra tuşuna basıcağınızı zaten biliyorsunuz. 2. Mevcut olmayan bir dosya ismi seçin, örneğin DENEME. 3. Şimdi :w DENEME yazın (DENEME sizin seçtiğiniz dosya ismi). 4. Bu tüm dosyayı (Vim Tutor) DENEME isminde başka bir dosyaya yazar. Bunu doğrulamak için, :!dir yazın ve yeniden bulunduğunuz dizini listeleyin. Not: Eğer Vim'den çıkıp kaydettiğiniz DENEME dosyasını açarsanız, bunun kaydettiğiniz vimtutor'un gerçek bir kopyası olduğunu görürsünüz. 5. Şimdi dosyayı şu komutları vererek silin (MS-DOS) :!del DENEME (veya UNIX) :!rm DENEME ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 5.3: SEÇMELİ YAZ KOMUTU ** Dosyanın bir bölümünü kaydetmek için, :#,# w DOSYAİSMİ yazın. ** 1. Bir kez daha bulunduğunuz dizini görmek için :!dir veya :!ls yazın, ardından DENEME gibi uygun bir dosya ismi seçin. 2. İmleci bu sayfanın başına götürün ve ardından CTRL-g'ye basarak satır numarasını öğrenin. BU NUMARAYI UNUTMAYIN! 3. Şimdi sayfanın sonuna gidib ve yine CTRL-g'ye basarak satır numarasını öğrenin. BU NUMARAYI DA UNUTMAYIN! 4. Bir dosyaya sadece bir bölümü kaydetmek için, :#,# w DENEME yazın. #,# sizin baktığınız sayılar (üst,alt) ve DENEME dosyanızın ismidir. 5. Yine, :!dir yazarak dosyanın orada olduğuna bakın ama SİLMEYİN. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 5.4: DOSYALARI BİRLEŞTİRMEK-BÖLÜM EKLEMEK ** Bir dosyanın içeriğini eklemek için :r DOSYAİSMİ yazın. ** 1. DENEME dosyanızın önceden bulunduğundan emin olmak için :!dir yazın. 2. İmleci bu sayfanın başına yerleştirin. NOT: Adım 3'ü uyguladıktan sonra Ders 5.3'ü görüyor olacaksınız. Daha sonra bu derse sayfasına dönün. 3. Şimdi DENEME sayfasını :r DENEME yazarak aktarın. NOT: Aktardığınız dosya imlecinizin hemen altına eklenecektir. 4. Dosyanın eklendiğini görmek için, geriye gidin. Ders 5.3'ten iki kopya olduğunu göreceksiniz; asıl ve kopya olanı. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DERS 5 ÖZET 1. :!komut bir dış komut çalıştırır. Bazı yararlı örnekler: (MS-DOS) (Unix) :!dir :!ls - bir dizini listeler. :!del DOSYA :!rm DOSYA - DOSYA'yı siler. 2. :w DOSYAİSMİ o anki Vim dosyasını diske DOSYAİSMİ ile kaydeder. 3. :#,#w DOSYAİSMİ # ile # satır arasını DOSYAİSMİ ile kaydeder. 4. :r DOSYAİSMİ imlecin altından başlayarak DOSYAİSMİ isimli dosyanın içeriğini ekler. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 6.1: AÇ KOMUTU ** İmlecin aşağısına bir satır açmak ve Insert kipine geçmek için o yazın. ** 1. İmleci aşağıdaki işaretlenmiş (--->) satıra götürün. 2. İmlecin aşağısına bir satır açmak ve Insert kipine geçmek için o (küçük harfle) yazın. 3. Şimdi işaretlenmiş satırı kopyalayın ve Insert kipinden çıkmak için tuşuna basın. ---> o yazdıktan sonra imlec açılan satıra gidicek ve Insert kipine geçilecek. 4. İmlecin üzerinde bir satır açmak için, basitçe büyük O yazın. Bunu aşağıdaki satırda deneyin. Bu satırın üzerine bir satır açmak için imleç bu satırdayken Shift-o yazın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 6.2: EKLE KOMUTU ** İmleçten sonra metin eklemek için a yazın. ** 1. İmleci aşağıdaki işaretlenmiş (--->) satırın sonuna götürmek için Normal Kipteyken $ yazın. 2. İmlecin altındaki karakterden sonra metin eklemek için a (küçük harfle) yazın. (Büyük A satırın sonuna ekler). 3. Şimdi ilk satırı tamamlayın. Ekle komutunun Insert kipiyle aynı işi yaptığına dikkat edin. Tek fark metinin eklendiği yer. Ç.N: Eğer a yazarsanız imlecin altındaki karakterden hemen sonra ekleme yapabilirsiniz. Eğer Shift-a yazarsanız imleç satır sonuna gidecek ve hemen ardına ekleme yapabileceksiniz. Doğal olarak bizim örneğimizde Shift-A'yı kullanmak daha güzel olacaktır. Önce $ ardınan a yazmamıza gerek kalmaz. ---> Bu satırda çalışabilirsiniz ---> Bu satırda çalışabilirsiniz. Çalışırken metin eklemeyi kullanın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 6.3: BİR BAŞKA DEĞİŞTİR KOMUTU ** Birden fazla karakter değiştirmek için büyük R yazın. ** 1. İmleci aşağıdaki işaretli (--->) satırların ilkine götürün. 2. İmleci işaretli olan ikinci satırdakinden farklı olan ilk kelimenin başına götürün. ( "tuşları" kelimesi ) 3. Şimdi büyük R yazın ve ilk satırı ikincisinin aynısı yapmak için eski metinin üzerinden yenisini yazın. Siz yazdıkça metin değişecektir. ---> Bu satırı ikincisinin aynısı yapmak için tuşları kullanın. ---> Bu satırı ikincisinin aynısı yapmak için R yazın ve metini girin. 4. Çıkmak için tuşuna bastığınızda, değişmemiş metinin aynen kaldığına dikkat edin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 6.4: SET SEÇENEĞİ ** Bir seçenek ayarlayın , böylece bir arama veya değiştirme ** ** durumu görmezden gelsin. ** 1. 'ignore' kelimesini aramak için: /ignore yazın. Bunu n tuşuna basarak birkaç kez tekrar edin 2. :set ic yazarak 'ic' (Ignore case) ayarını seçin. 3. Tekrar n tuşuna basarak 'ignore' kelimseini arayın. n tuşuna basarak bu aramayı birden çok defa tekrar edin. 4. :set hls is yazarak 'hlsearch' ve 'incsearch' ayarlarını seçin. 5. /ignore yazarak arama komutunu tekrar verin ve ne olacağını görün. 6. Karşılaşma vurgularını iptal etmek için, :nohlsearch yazın. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DERS 6 ÖZET 1. o yazmak imlecin altında bir satır açar ve imleci bu açılmış satıra Insert kipinde yerleştirir. Büyük O yazmak imlecin üzerinde bir satır açar. 2. İmlecin üzerindeki karakterden hemen sonra metin eklemek için a yazın. Büyük A yazmak hemen satır sonuna giderek metin eklemeye hazır hale getirir. 3. Büyük R yazmak Değiştir kipine girer ve çıkmak için tuşuna basılana kadar sizi bu kipte bırakır. 4. ":set xxx" yazmak "xxx" seçeneğini ayarlar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 7: ÇEVİRİMİÇİ (ON-LINE) YARDIM KOMUTLARI ** Çevirimiçi yardım sistemini kullanın ** Vim geniş bir çevirimiçi yardım sistemine sahiptir. Başlamak için şu üçünü deneyebilirsiniz. - (eğer sahipseniz) tuşuna basın - (eğer sahipseniz) tuşuna basın - :help yazın ve tuşuna basın Yardım penceresini kapatmak için :q yazıp tuşuna basın. ":help" komutuna değişken (argüman) vererek herhangi bir konu hakkında yardım alabilirsini. Şunları deneyin ( tuşuna basmayı unutmayın) : :help w :help c_ phím l ở bên phải và di chuyển sang phải. j phím j trong như một mũi tên chỉ xuống v 1. Di chuyển con trỏ quanh màn hình cho đến khi bạn quen dùng. 2. Nhấn và giữ phím (j) cho đến khi nó lặp lại. ---> Bây giờ bạn biết cách chuyển tới bài học thứ hai. 3. Sử dụng phím di chuyển xuống bài 1.2. Chú ý: Nếu bạn không chắc chắn về những gì đã gõ, hãy nhấn để chuyển vào chế độ Câu lệnh, rồi gõ lại những câu lệnh mình muốn. Chú ý: Các phím mũi tên cũng làm việc. Nhưng một khi sử dụng thành thạo hjkl, bạn sẽ di chuyển con trỏ nhanh hơn so với các phím mũi tên. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 1.2: VÀO VÀ THOÁT VIM !! CHÚ Ý: Trước khi thực hiện bất kỳ lệnh nào, xin hãy đọc cả bài học này!! 1. Nhấn phím (để chắc chắn là bạn đang ở chế độ Câu lệnh). 2. Gõ: :q! . ---> Lệnh này sẽ thoát trình soạn thảo mà KHÔNG ghi nhớ bất kỳ thay đổi nào mà bạn đã làm. Nếu bạn muốn ghi nhớ những thay đổi đó và thoát thì hãy gõ: :wq 3. Khi thấy dấu nhắc shell, hãy gõ câu lệnh đã đưa bạn tới hướng dẫn này. Có thể là lệnh: vimtutor vi Thông thường bạn dùng: vim tutor.vi ---> 'vim' là trình soạn thảo vim, 'tutor.vi' là tập tin bạn muốn soạn thảo. 4. Nếu bạn đã nhớ và nắm chắc những câu lệnh trên, hãy thực hiện các bước từ 1 tới 3 để thoát và quay vào trình soạn thảo. Sau đó di chuyển con trỏ tới Bài 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 1.3: SOẠN THẢO VĂN BẢN - XÓA ** Trong chế độ Câu lệnh nhấn x để xóa ký tự nằm dưới con trỏ. ** 1. Di chuyển con trỏ tới dòng có dấu --->. 2. Để sửa lỗi, di chuyển con trỏ để nó nằm trên ký tự sẽ bị xóa. 3. Nhấn phím x để xóa ký tự không mong muốn. 4. Lặp lại các bước từ 2 tới 4 để sửa lại câu. ---> Emm xiinh em đứnng chỗ nào cũnkg xinh. 5. Câu trên đã sửa xong, hãy chuyển tới Bài 1.4. Chú ý: Khi học theo cuốn hướng dẫn này đừng cố nhớ, mà học từ thực hành. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 1.4: SOẠN THẢO VĂN BẢN - CHÈN ** Trong chế độ Câu lệnh nhấn i để chèn văn bản. ** 1. Di chuyển con trỏ tới dòng có dấu ---> đầu tiên. 2. Để dòng thứ nhất giống hệt với dòng thứ hai, di chuyển con trỏ lên ký tự đầu tiên NGAY SAU chỗ muốn chèn văn bản. 3. Nhấn i và gõ văn bản cần thêm. 4. Sau mỗi lần chèn từ còn thiếu nhấn để trở lại chế dộ Câu lệnh. Lặp lại các bước từ 2 tới 4 để sửa câu này. ---> Mot lam chang nen , ba cay chum lai hon cao. ---> Mot cay lam chang nen non, ba cay chum lai nen hon nui cao. 5. Sau khi thấy quen với việc chèn văn bản hãy chuyển tới phần tổng kết ở dưới. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TỔNG KẾT BÀI 1 1. Con trỏ được di chuyển bởi các phím mũi tên hoặc các phím hjkl. h (trái) j (xuống) k (lên) l (phải) 2. Để vào Vim (từ dấu nhắc %) gõ: vim TÊNTẬPTIN 3. Muốn thoát Vim gõ: :q! để vứt bỏ mọi thay đổi. HOẶC gõ: :wq để ghi nhớ thay đổi. 4. Để xóa bỏ ký tự nằm dưới con trỏ trong chế độ Câu lệnh gõ: x 5. Để chèn văn bản tại vị trí con trỏ trong chế độ Câu lệnh gõ: i văn bản sẽ nhập CHÚ Ý: Nhấn sẽ đưa bạn vào chế độ Câu lệnh hoặc sẽ hủy bỏ một câu lệnh hay đoạn câu lệnh không mong muốn. Bây giờ chúng ta tiếp tục với Bài 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 2.1: CÁC LỆNH XÓA ** Gõ dw để xóa tới cuối một từ. ** 1. Nhấn để chắc chắn là bạn đang trong chế độ Câu lệnh. 2. Di chuyển con trỏ tới dòng có dấu --->. 3. Di chuyển con trỏ tới ký tự đầu của từ cần xóa. 4. Gõ dw để làm từ đó biến mất. CHÚ Ý: các ký tự dw sẽ xuất hiện trên dòng cuối cùng của màn hình khi bạn gõ chúng. Nếu bạn gõ nhầm, hãy nhấn và làm lại từ đầu. ---> Khi trái tỉm tìm tim ai như mùa đông giá lạnh lanh Anh đâu thành cánh én nhỏ trùng khơi. 5. Lặp lại các bước cho đến khi sửa xong câu thơ rồi chuyển tới Bài 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 2.2: CÁC CÂU LỆNH XÓA KHÁC ** gõ d$ để xóa tới cuối một dòng. ** 1. Nhấn để chắc chắn là bạn đang trong chế độ Câu lệnh. 2. Di chuyển con trỏ tới dòng có dấu --->. 3. Di chuyển con trỏ tới cuối câu đúng (SAU dấu . đầu tiên). 4. Gõ d$ để xóa tới cuối dòng. ---> Đã qua đi những tháng năm khờ dại. thừa thãi. 5. Chuyển tới Bài 2.3 để hiểu cái gì đang xảy ra. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 2.3: CÂU LỆNH VÀ ĐỐI TƯỢNG Câu lệnh xóa d có dạng như sau: [số] d đối_tượng HOẶC d [số] đối_tượng Trong đó: số - là số lần thực hiện câu lệnh (không bắt buộc, mặc định=1). d - là câu lệnh xóa. đối_tượng - câu lệnh sẽ thực hiện trên chúng (liệt kê phía dưới). Danh sách ngắn của đối tượng: w - từ con trỏ tới cuối một từ, bao gồm cả khoảng trắng. e - từ con trỏ tới cuối một từ, KHÔNG bao gồm khoảng trắng. $ - từ con trỏ tới cuối một dòng. CHÚ Ý: Dành cho những người ham tìm hiểu, chỉ nhấn đối tượng trong chế độ Câu lệnh mà không có câu lệnh sẽ di chuyển con trỏ như trong danh sách trên. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 2.4: TRƯỜNG HỢP NGOẠI LỆ CỦA QUY LUẬT 'CÂU LỆNH-ĐỐI TƯỢNG' ** Gõ dd để xóa cả một dòng. ** Người dùng thường xuyên xóa cả một dòng, vì thế các nhà phát triển Vi đã quyết định dùng hai chữ d để đơn giản hóa thao tác này. 1. Di chuyển con trỏ tới dòng thứ hai trong cụm phía dưới. 2. Gõ dd để xóa dòng này. 3. Bây giờ di chuyển tới dòng thứ tư. 4. Gõ 2dd (hãy nhớ lại bộ ba số-câu lệnh-đối tượng) để xóa hai dòng. 1) Trong tim em khắc sâu bao kỉ niệm 2) Tình yêu chân thành em dành cả cho anh 3) Dẫu cuộc đời như bể dâu thay đổi 4) Anh mãi là ngọn lửa ấm trong đêm 5) Đã qua đi những tháng năm khờ dại 7) Hãy để tự em lau nước mắt của mình 8) Lặng lẽ sống những đêm dài bất tận 9) Bao khổ đau chờ tia nắng bình minh ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 2.5: CÂU LỆNH "HỦY THAO TÁC" ** Nhấn u để hủy bỏ những câu lệnh cuối cùng, U để sửa cả một dòng. ** 1. Di chuyển con trỏ tới dòng có dấu ---> và đặt con trỏ trên từ có lỗi đầu tiên 2. Gõ x để xóa chữ cái gây ra lỗi đầu tiên. 3. Bây giờ gõ u để hủy bỏ câu lệnh vừa thự hiện (xóa chữ cái). 4. Dùng câu lệnh x để sửa lỗi cả dòng này. 5. Bây giờ gõ chữ U hoa để phục hồi trạng thái ban đầu của dòng. 6. Bây giờ gõ u vài lần để hủy bỏ câu lệnh U và các câu lệnh trước. 7. Bây giờ gõ CTRL-R (giữ phím CTRL và gõ R) và lầu để thực hiện lại các câu lệnh (hủy bỏ các câu lệnh hủy bỏ). ---> Câyy ccó cộii, nuước csó nguuồn. 8. Đây là những câu lệnh rất hữu ích. Bây giờ chuyển tới Tổng kết Bài 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TỔNG KẾT BÀI 2 1. Để xóa từ con trỏ tới cuối một từ gõ: dw 2. Để xóa từ con trỏ tới cuối một dòng gõ: d$ 3. Để xóa cả một dòng gõ: dd 4. Một câu lệnh trong chế độ Câu lệnh có dạng: [số] câu_lệnh đối_tượng HOẶC câu_lệnh [số] đối_tượng trong đó: số - là số lần thực hiện câu lệnh (không bắt buộc, mặc định=1). câu_lệnh - là những gì thực hiện, ví dụ d dùng để xóa. đối_tượng - câu lệnh sẽ thực hiện trên chúng, ví dụ w (từ), $ (tới cuối một dòng), v.v... 5. Để hủy bỏ thao tác trước, gõ: u (chữ u thường) Để hủy bỏ tất cả các thao tác trên một dòng, gõ: U (chữ U hoa) Để hủy bỏ các câu lệnh hủy bỏ, gõ: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 3.1: CÂU LỆNH DÁN ** Gõ p để dán những gì vừa xóa tới sau con trỏ. ** 1. Di chuyển con trỏ tới dòng đầu tiên trong cụm ở dưới. 2. Gõ dd để xóa và ghi lại một dòng trong bộ nhớ đệm của Vim. 3. Di chuyển con trỏ tới dòng Ở TRÊN chỗ cần dán. 4. Trong chế độ Câu lệnh, gõ p để thay thế dòng. 5. Lặp lại các bước từ 2 tới 4 để đặt các dòng theo đúng thứ tự của chúng. d) Niềm vui như gió xưa bay nhè nhẹ b) Em vẫn mong anh sẽ đến với em c) Đừng để em mất đi niềm hy vọng đó a) Ai sẽ giúp em vượt qua sóng gió e) Dễ ra đi khó giữ lại bên mình ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 3.2: CÂU LỆNH THAY THẾ ** Gõ r và một ký tự để thay thế ký tự nằm dưới con trỏ. ** 1. Di chuyển con trỏ tới dòng có dấu --->. 2. Di chuyển con trỏ tới ký tự gõ sai đầu tiên. 3. Gõ r và ký tự đúng. 4. Lặp lại các bước từ 2 đến 4 để sửa cả dòng. ---> "Trên đời nài làm gì có đườmg, người to đi mãi rồi thànk đường là tHôi" ---> "Trên đời này làm gì có đường, người ta đi mãi rồi thành đường mà thôi" 5. Bây giờ chuyển sang Bài 3.3. CHÚ Ý: Hãy nhớ rằng bạn cần thực hành, không nên "học vẹt". ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 3.3: CÂU LỆNH THAY ĐỔI ** Để thay đổi một phần hay cả một từ, gõ cw . ** 1. Di chuyển con trỏ tới dòng có dấu --->. 2. Đặt con trỏ trên chữ trong. 3. Gõ cw và sửa lại từ (trong trường hợp này, gõ 'ine'.) 4. Gõ và chuyển tới lỗi tiếp theo (chữ cái đầu tiên trong số cần thay.) 5. Lặp lại các bước 3 và 4 cho tới khi thu được dòng như dòng thứ hai. ---> Trên dùgn này có một dầy từ cần tyays đổi, sử dunk câu lệnh thay đổi. ---> Trên dong này có một vai từ cần thay đổi, sử dung câu lệnh thay đổi. Chú ý rằng cw không chỉ thay đổi từ, nhưng còn đưa bạn vào chế độ chèn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 3.4: TIẾP TỤC THAY ĐỔI VỚI c ** Câu lệnh thay đổi được sử dụng với cùng đối tượng như câu lệnh xóa. ** 1. Câu lệnh thay đổi làm việc tương tự như câu lệnh xóa. Định dạng như sau: [số] c đối_tượng HOẶC c [số] đối_tượng 2. Đối tượng cũng giống như ở trên, ví dụ w (từ), $ (cuối dòng), v.v... 3. Di chuyển con trỏ tới dòng có dấu --->. 4. Di chuyển con trỏ tới dòng có lỗi đầu tiên. 5. Gõ c$ để sửa cho giống với dòng thứ hai và gõ . ---> Doan cuoi dong nay can sua de cho giong voi dong thu hai. ---> Doan cuoi dong nay can su dung cau lenh c$ de sua. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TỔNG KẾT BÀI 3 1. Để dán đoạn văn bản vừa xóa, gõ p. Câu lệnh này sẽ đặt đoạn văn bản này PHÍA SAU con trỏ (nếu một dòng vừa bị xóa, dòng này sẽ được đặt vào dòng nằm dưới con trỏ). 2. Để thay thế ký tự dưới con trỏ, gõ r và sau đó gõ ký tự muốn thay vào. 3. Câu lệnh thay đổi cho phép bạn thay đổi đối tượng chỉ ra từ con trỏ tới cuối đối tượng. vd. Gõ cw để thay đổi từ con trỏ tới cuối một từ, c$ để thay đổi tới cuối một dòng. 4. Định dạng để thay đổi: [số] c đối_tượng HOẶC c [số] đối_tượng Bây giờ chúng ta tiếp tục bài học mới. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 4.1: THÔNG TIN VỀ TẬP TIN VÀ VỊ TRÍ TRONG TẬP TIN ** Gõ CTRL-g để hiển thị vị trí của bạn trong tập tin và thông tin về tập tin. Gõ SHIFT-G để chuyển tới một dòng trong tập tin. ** Chú ý: Đọc toàn bộ bài học này trước khi thực hiện bất kỳ bước nào!! 1. Giữ phím Ctrl và nhấn g . Một dòng thông tin xuất hiện tại cuối trang với tên tập tin và dòng mà bạn đang nằm trên. Hãy nhớ số dòng này Cho bước số 3. 2. Nhấn shift-G để chuyển tới cuối tập tin. 3. Gõ số dòng mà bạn đã nằm trên và sau đó shift-G. Thao tác này sẽ đưa bạn trở lại dòng mà con trỏ đã ở trước khi nhấn tổ hợp Ctrl-g. (Khi bạn gõ số, chúng sẽ KHÔNG hiển thị trên màn hình.) 4. Nếu bạn cảm thấy đã hiểu rõ, hãy thực hiện các bước từ 1 tới 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 4.2: CÂU LỆNH TÌM KIẾM ** Gõ / và theo sau là cụm từ muốn tìm kiếm. ** 1. Trong chế độ Câu lệnh gõ ký tự / .Chú ý rằng ký tự này và con trỏ sẽ xuất hiện tại cuối màn hình giống như câu lệnh : . 2. Bây giờ gõ 'loiiiii' . Đây là từ bạn muốn tìm. 3. Để tìm kiếm cụm từ đó lần nữa, đơn giản gõ n . Để tìm kiếm cụm từ theo hướng ngược lại, gõ Shift-N . 4. Nếu bạn muối tìm kiếm cụm từ theo hướng ngược lại đầu tập tin, sử dụng câu lệnh ? thay cho /. ---> "loiiiii" là những gì không đúng lắm; loiiiii thường xuyên xảy ra. Chú ý: Khi tìm kiếm đến cuối tập tin, việc tìm kiếm sẽ tiếp tục từ đầu tập tin này. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 4.3: TÌM KIẾM CÁC DẤU NGOẶC SÁNH ĐÔI ** Gõ % để tìm kiếm ),], hay } . ** 1. Đặt con trỏ trên bất kỳ một (, [, hay { nào trong dòng có dấu --->. 2. Bây giờ gõ ký tự % . 3. Con trỏ sẽ di chuyển đến dấu ngoặc tạo cặp (dấu đóng ngoặc). 4. Gõ % để chuyển con trỏ trở lại dấu ngoặc đầu tiên (dấu mở ngoặc). ---> Đây là ( một dòng thử nghiệm với các dấu ngoặc (, [ ] và { } . )) Chú ý: Rất có ích khi sửa lỗi chương trình, khi có các lỗi thừa thiếu dấu ngoặc! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 4.4: MỘT CÁCH SỬA LỖI ** Gõ :s/cũ/mới/g để thay thế 'mới' vào 'cũ'. ** 1. Di chuyển con trỏ tới dòng có dấu --->. 2. Gõ :s/duou/ruou . Chú ý rằng câu lệnh này chỉ thay đổi từ tìm thấy đầu tiên trên dòng (từ 'duou' đầu dòng). 3. Bây giờ gõ :s/duou/ruou/g để thực hiện thay thế trên toàn bộ dòng. Lệnh này sẽ thay thế tất cả những từ ('duou') tìm thấy trên dòng. ---> duou ngon phai co ban hie. Khong duou cung khong hoa. 4. Để thay thế thực hiện trong đoạn văn bản giữa hai dòng, gõ :#,#s/cũ/mới/g trong đó #,# là số thứ tự của hai dòng. Gõ :%s/cũ/mới/g để thực hiện thay thế trong toàn bộ tập tin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TỔNG KẾT BÀI 4 1. Ctrl-g vị trí của con trỏ trong tập tin và thông tin về tập tin. Shift-G di chuyển con trỏ tới cuối tập tin. Số dòng và theo sau là Shift-G di chuyển con trỏ tới dòng đó. 2. Gõ / và cụm từ theo sau để tìm kiếm cụm từ VỀ PHÍA TRƯỚC. Gõ ? và cụm từ theo sau để tìm kiếm cụm từ NGƯỢC TRỞ LẠI. Sau một lần tìm kiếm gõ n để tìm kiếm cụm từ lại một lần nữa theo hướng đã tìm hoặc Shift-N để tìm kiếm theo hướng ngược lại. 3. Gõ % khi con trỏ nằm trên một (,),[,],{, hay } sẽ chỉ ra vị trí của dấu ngoặc còn lại trong cặp. 4. Để thay thế 'mới' cho 'cũ' đầu tiên trên dòng, gõ :s/cũ/mới Để thay thế 'mới' cho tất cả 'cũ' trên dòng, gõ :s/cũ/mới/g Để thay thế giữa hai dòng, gõ :#,#s/cũ/mới/g Để thay thế trong toàn bộ tập tin, gõ :%s/cũ/mới/g Để chương trình hỏi lại trước khi thay thế, thêm 'c' :%s/cũ/mới/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.1: CÁCH THỰC HIỆN MỘT CÂU LỆNH NGOẠI TRÚ ** Gõ :! theo sau là một câu lệnh ngoại trú để thực hiện câu lệnh đó. ** 1. Gõ câu lệnh quen thuộc : để đặt con trỏ tại cuối màn hình. Thao tác này cho phép bạn nhập một câu lệnh. 2. Bây giờ gõ ký tự ! (chấm than). Ký tự này cho phép bạn thực hiện bất kỳ một câu lệnh shell nào. 3. Ví dụ gõ ls theo sau dấu ! và gõ . Lệnh này sẽ hiển thị nội dung của thư mục hiện thời, hoặc sử dụng lệnh :!dir nếu ls không làm việc. Chú ý: Có thể thực hiện bất kỳ câu lệnh ngoại trú nào theo cách này. Chú ý: Tất cả các câu lệnh : cần kết thúc bởi phím ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 5.2: GHI LẠI CÁC TẬP TIN ** Để ghi lại các thay đổi, gõ :w TÊNTỆPTIN. ** 1. Gõ :!dir hoặc :!ls để lấy bảng liệt kê thư mục hiện thời. Như bạn đã biết, bạn cần gõ để thực hiện. 2. Chọn một tên tập tin chưa có, ví dụ TEST. 3. Bây giờ gõ: :w TEST (trong đó TEST là tên tập tin bạn đã chọn.) 4. Thao tác này ghi toàn bộ tập tin (Hướng dẫn dùng Vim) dưới tên TEST. Để kiểm tra lại, gõ :!dir một lần nữa để liệt kê thư mục. Chú ý: Nếu bạn thoát khỏi Vim và quay trở lại với tên tập tin TEST, thì tập tin sẽ là bản sao của hướng dẫn tại thời điểm bạn ghi lại. 5. Bây giờ xóa bỏ tập tin (MS-DOS): :!del TEST hay (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 5.3: CÂU LỆNH GHI CHỌN LỌC ** Để ghi một phần của tập tin, gõ :#,# w TÊNTẬPTIN ** 1. Gõ lại một lần nữa :!dir hoặc :!ls để liệt kê nội dung thư mục rồi chọn một tên tập tin thích hợp, ví dụ TEST. 2. Di chuyển con trỏ tới đầu trang này, rồi gõ Ctrl-g để tìm ra số thứ tự của dòng đó. HÃY NHỚ SỐ THỨ TỰ NÀY! 3. Bây giờ di chuyển con trỏ tới dòng cuối trang và gõ lại Ctrl-g lần nữa. HÃY NHỚ CẢ SỐ THỨ TỰ NÀY! 4. Để CHỈ ghi lại một phần vào một tập tin, gõ :#,# w TEST trong đó #,# là hai số thứ tự bạn đã nhớ (đầu,cuối) và TEST là tên tập tin. 5. Nhắc lại, xem tập tin của bạn có ở đó không với :!dir nhưng ĐỪNG xóa. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 5.4: ĐỌC VÀ KẾT HỢP CÁC TẬP TIN ** Để chèn nội dung của một tập tin, gõ :r TÊNTẬPTIN ** 1. Gõ :!dir để chắc chắn là có tệp tin TEST. 2. Đặt con trỏ tại đầu trang này. CHÚ Ý: Sau khi thực hiện Bước 3 bạn sẽ thấy Bài 5.3. Sau đó cần di chuyển XUỐNG bài học này lần nữa. 3. Bây giờ dùng câu lệnh :r TEST để đọc tập tin TEST, trong đó TEST là tên của tập tin. CHÚ Ý: Tập tin được đọc sẽ đặt bắt đầu từ vị trí của con trỏ. 4. Để kiểm tra lại, di chuyển con trỏ ngược trở lại và thấy rằng bây giờ có hai Bài 5.3, bản gốc và bản vừa chèn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TỔNG KẾT BÀI 5 1. :!câulệnh thực hiện một câu lệnh ngoại trú Một vài ví dụ hữu ích: (MS-DOS) (Unix) :!dir :!ls - liệt kê nội dung một thư mục. :!del TÊNTẬPTIN :!rm TÊNTẬPTIN - xóa bỏ tập tin TÊNTẬPTIN. 2. :w TÊNTẬPTIN ghi tập tin hiện thời của Vim lên đĩa với tên TÊNTẬPTIN. 3. :#,#w TÊNTẬPTIN ghi các dòng từ # tới # vào tập tin TÊNTẬPTIN. 4. :r TÊNTẬPTIN đọc tập tin trên đĩa TÊNTẬPTIN và chèn nội dung của nó vào tập tin hiện thời sau vị trí của con trỏ. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 6.1: CÂU LỆNH TẠO DÒNG ** Gõ o để mở một dòng phía dưới con trỏ và chuyển vào chế độ Soạn thảo. ** 1. Di chuyển con trỏ tới dòng có dấu --->. 2. Gõ o (chữ thường) để mở một dòng BÊN DƯỚI con trỏ và chuyển vào chế độ Soạn thảo. 3. Bây giờ sao chép dòng có dấu ---> và nhấn để thoát khỏi chế độ Soạn thảo. ---> Sau khi gõ o con trỏ sẽ đặt trên dòng vừa mở trong chế độ Soạn thảo. 4. Để mở một dòng Ở TRÊN con trỏ, đơn giản gõ một chữ O hoa, thay cho chữ o thường. Hãy thử thực hiện trên dòng dưới đây. Di chuyển con trỏ tới dòng này, rồi gõ Shift-O sẽ mở một dòng trên nó. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 6.2: CÂU LỆNH THÊM VÀO ** Gõ a để chèn văn bản vào SAU con trỏ. ** 1. Di chuyển con trỏ tới cuối dòng đầu tiên có ký hiệu ---> bằng cách gõ $ trong chế độ câu lệnh. 2. Gõ a (chữ thường) để thêm văn bản vào SAU ký tự dưới con trỏ. (Chữ A hoa thêm văn bản vào cuối một dòng.) Chú ý: Lệnh này thay cho việc gõ i , ký tự cuối cùng, văn bản muốn chèn, , mũi tên sang phải, và cuối cùng, x , chỉ để thêm vào cuối dòng! 3. Bây giờ thêm cho đủ dòng thứ nhất. Chú ý rằng việc thêm giống hệt với việc chèn, trừ vị trí chèn văn bản. ---> Dong nay cho phep ban thuc hanh ---> Dong nay cho phep ban thuc hanh viec them van ban vao cuoi dong. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 6.3: MỘT CÁCH THAY THẾ KHÁC ** Gõ chữ cái R hoa để thay thế nhiều ký tự. ** 1. Di chuyển con trỏ tới cuối dòng đầu tiên có ký hiệu --->. 2. Đặt con trỏ tại chữ cái đầu của từ đầu tiên khác với dòng có dấu ---> tiếp theo (từ 'tren'). 3. Bây giờ gõ R và thay thế phần còn lại của dòng thứ nhất bằng cách gõ đè lên văn bản cũ để cho hai dòng giống nhau. ---> De cho dong thu nhat giong voi dong thu hai tren trang nay. ---> De cho dong thu nhat giong voi dong thu hai, go R va van ban moi. 4. Chú ý rằng khi bạn nhấn để thoát, đoạn văn bản không sửa đổi sẽ được giữ nguyên. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 6.4: THIẾT LẬP CÁC THAM SỐ ** Thiết lập một tùy chọn để việc tìm kiếm hay thay thế lờ đi kiểu chữ ** 1. Tìm kiếm từ 'lodi' bằng cách gõ: /lodi Lặp lại vài lần bằng phím n. 2. Đặt tham số 'ic' (Lodi - ignore case) bằng cách gõ: :set ic 3. Bây giờ thử lại tìm kiếm 'lodi' bằng cách gõ: n Lặp lại vài lần bằng phím n. 4. Đặt các tham số 'hlsearch' và 'incsearch': :set hls is 5. Bây giờ nhập lại câu lệnh tìm kiếm một lần nữa và xem cái gì xảy ra: /lodi 6. Để xóa bỏ việc hiện sáng từ tìm thấy, gõ: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TỔNG KẾT BÀI 6 1. Gõ o mở một dòng phía DƯỚI con trỏ và đặt con trỏ trên dòng vừa mở trong chế độ Soạn thảo. Gõ một chữ O hoa để mở dòng phía TRÊN dòng của con trỏ. 2. Gõ a để chèn văn bản vào SAU ký tự nằm dưới con trỏ. Gõ một chữ A hoa tự động thêm văn bản vào cuối một dòng. 3. Gõ một chữ R hoa chuyển vào chế độ Thay thế cho đến khi nhấn . 4. Gõ ":set xxx" sẽ đặt tham số "xxx" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bài 7: CÂU LỆNH TRỢ GIÚP ** Sử dụng hệ thống trợ giúp có sẵn ** Vim có một hệ thống trợ giúp đầy đủ. Để bắt đầu, thử một trong ba lệnh sau: - nhấn phím (nếu bàn phím có) - nhấn phím (nếu bàn phím có) - gõ :help Gõ :q để đóng cửa sổ trợ giúp. Bạn có thể tìm thấy trợ giúp theo một đề tài, bằng cách đưa tham số tới câu lệnh ":help". Hãy thử (đừng quên gõ ): :help w :help c_, 2005 Translator: Phan Vinh Thịnh , 2005 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!Snnvim80/tutor/tutor.tr.iso9nu[=============================================================================== = V I M T u t o r'a Ho Geldiniz - Srm 1.5 = =============================================================================== Vim, bu gibi bir eitmen ile aklanmas gereken ok fazla komut barndran, olduka kuvvetli bir metin dzenleyicidir. Bu eitmen Vim'i ok amal bir dzenleyici olarak kolaylkla kullanabileceiniz yeterli sayda komutu aklamak iin tasarlanmtr. Eitmeni tamamlama sresi yapacanz denemelere bal olarak 25-30 dakikadr. Derslerdeki komutlar bu metini deitirecektir. zerinde almak iin bu dosyann bir kopyasn aln (eer "vimtutor" uygulamasn altrdysanz zaten bir kopyasn alm oldunuz). Bu eitmenin, kullanarak retmeye ayarlandn unutmamak nemlidir. Bu u anlama gelir; komutlar renmek iin doru bir ekilde altrmanz gerekir. Eer sadece yazlanlar okursanz komutlar unutursunuz. imdi Caps-Lock tularnzn basl olmadna emin olun ve Ders 1.1'in ekran tamamen doldurmas iin j tuuna yeterli miktarda basn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 1.1: MLEC HAREKET ETTRMEK .N: Tm derslerde grdnz yerde bu tua basmanz gerekir. ** mleci hareket ettirmek iin, h,j,k,l tularna gsterildii gibi basn. ** ^ k pucu: h tuu soldadr ve sola hareket eder. < h l > l tuu sadadr ve saa hareket eder. j j tuu aa ynl bir ok gibidir. v 1. Yeterli hissedinceye kadar imleci ekranda hareket ettirin. 2. Aa tuunu (j) tekrar edene kadar basl tutun. ---> imdi, bir sonraki derse nasl geeceinizi biliyorsunuz. 3. Aa tuunu kullanarak, Ders 1.2'ye gein. Not: Eer yazdnz bir eyden emin deilseniz, Normal kipe gemek iin tuuna basn. Daha sonra istediiniz komutu yeniden yazn. Not: mle tular da ayn zamanda ie yararlar ancak hjkl tularn kullanmaya altnzda etrafta daha hzl hareket edersiniz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 1.2: VIM'E GR VE VIM'DEN IKI !! NOT: Aadaki admlar yapmadan nce, bu dersi tamamen okuyun. 1. tuuna basn (Normal kipte olmay garantilemek iin). 2. Yazn: :q! . ---> Bu dzenleyicinin yaptnz deiiklikleri KAYDETMEDEN kapanmasn salar. Eer yaptklarnzn kaydedilmesini istiyorsanz unu yazn: :wq 3. Kabuk istemcisini (shell prompt) grdnzde, sizi bu eitmene getiren komutu yazn. Bu: vimtutor komutudur. Normalde: vim tutor komutu kullanlr. ---> 'vim' vim dzenleyicisine gir anlamna gelir, 'tutor' ise amak istediiniz dosyadr. 4. Eer bu admlar ezberlediyseniz ve kendinizden eminseniz, 1'den 3'e kadar olan admlar, dzenleyiciden kmak ve yeniden girmek iin uygulayn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 1.3: METN DZENLEME - SLME ** Normal kipteyken imlecin altndaki karakteri silmek iin x 'e basn.** 1. mleci aada iaretlenmi (-->) satra gtrn. 2. Hatalar dzeltmek iin, imleci silinmesi gereken karakterin zerine getirin 3. stenmeyen karakteri silmek iin x tuuna basn. 4. Cmle dzelene kadar 2'den 4'e kadar olan admlar tekrar edin. ---> inek ayyn zzerinden attlad. 5. imdi satr dzeldi, Ders 1.4'e gein. NOT: Bu eitmende ilerledike ezberlemeye almayn, kullanarak renin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 1.4: METN DZENLEME - EKLEME ** Normal kipteyken metin eklemek iin i 'ye basn. ** 1. mleci aadaki iaretlenmi (-->) ilk satra gtrn. 2. lk satr ikincisinin ayns gibi yapmak iin, imleci eklenmesi gereken metinden sonraki ilk karakterin zerine gtrn. 3. i 'ye basn ve gerekli eklemeleri yapn. 4. Her hata dzeltildiinde tuuna basarak Normal kipe dnn. Cmleyi dzeltmek iin 2'den 4'e kadar olan admlar tekrar edin. ---> Bu metinde eksk. ---> Bu metinde birey eksik. 5. Metin ekleme almalarn yeterli gryorsanz aadaki zete gein. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DERS 1 ZET 1. mle hem ok tular hem de hjkl tular ile hareket ettirilir. h (sol) j (aa) k (yukar) l (sa) 2. (Konsoldan) Vim'e girmek in yazn: vim DOSYASM 3. Tm deiiklikleri gz ard edip vimden kmak iin yazn: :q! veya tm deiiklikleri kaydetmek iin yazn: :wq 4. mlecin altndaki bir karakteri silmek iin Normal kipte x yazn. 5. mlecin altnda metin eklemek iin Normal kipte yazn: i yazlacak metin NOT: tuuna basmak sizi Normal kipe gtrr ya da istenmeyen tamamlanmam bir komutu iptal eder. imdi Ders 2 ile devam edin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 2.1: SLME KOMUTLARI ** Bir kelimeyi silmek iin dw yazn.** 1. Normal kipte olmakten emin olmak iin tuuna basn. 2. mleci aadaki iaretlenmi (-->) satra gtrn. 3. mleci silinmesi gereken kelimenin bana gtrn. 4. Kelimeyi silmek iin dw yazn. NOT: dw harfleri siz yazdka ekrann son satrnda grlecektir. Eer yanl bir eyler yazarsanz, yeniden balamak iin tuuna basn. ---> Bu satrda erez cmleye ait olmayan leblebi kelimeler var. 5. Cmle dzelene kadar adm 3 ve 4' tekrar edin, daha sonra Ders 2.2'ye gidin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 2.2: DAHA FAZLA SLME KOMUTU ** Satr sonuna kadar silmek iin d$ yazn.** 1. Normal kipte olmaktan emin olmak iin tuuna basn. 2. mleci aadaki iaretlenmi (-->) satra gtrn. 3. mleci doru olan satrn sonuna gtrn. (Birinciden SONRA. ) 4. Satr sonuna kadar silmek iin d$ yazn. ( d$ yazarken d'den sonra ile beraber $ tuuna basn) ---> Birileri bu satrn sonunu iki defa yazm. Birileri bu satrn sonunu iki defa yazm. 5. Neler olduunu anlamak iin Ders 2.3'e gidin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 2.3: KOMUTLAR VE NESNELER d silme komutu iin biim aadaki gibidir: [say] d nesne VEYA d [say] nesne Burada: say - komutun ka defa altrlaca (istee bal, varsaylan=1). d - silme komutu nesne - komutun ne ekilde alaca (aada listlendi). Nesnelerin ksa bir listesi. w - Boluu da iererek, imleten itibaren kelimenin sonuna kadar. e - Boluu ERMEDEN, imleten itibaren kelimenin sonuna kadar. $ - imleten satrn sonuna kadar. NOT: Serven sevenler iin, Normal kipte iken, komut olmadan sadece nesnenin kendisine basmak imleci yukardaki listede olduu gibi hareket ettirecektir. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 2.4: 'KOMUT-NESNE'ye BR STSNA ** Btn bir satr silmek iin dd yazn. ** Btn bir satr silme sklndan dolay, Vi tasarmclar bir satr tamamen silmek iin iki d yazmann daha kolay olacana karar verdiler. 1. mleci aadaki tmceciin ikinci satrna gtrn. 2. Satr silmek iin dd yazn. 3. imdi de drdnc satra gidin. 4. ki satr birden silmek iin 2dd (say-komut-nesne'yi hatrlayn) yazn. 1) Gller krmzdr, 2) amur elenceli, 3) Menekeler mavi, 4) Bir arabam var, 5) Saat bana syler, 6) eker tatldr 7) Ve sen de ylesin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 2.5: GER AL KOMUTU ** Son komutu geri almak iin u , btn bir satr dzeltmek iin U yazn.** 1. mleci aadaki iaretlenmi (-->) satrdaki ilk hatann zerine gtrn. 2. lk istenmeyen karakteri silmek iin x yazn. 3. imdi son altrlan komutu geri almak iin u yazn. 4. Bu sefer x komutunu kullanarak satrdaki tm hatalar dzeltin. 5. imdi satr ilk haline evirmek iin byk U yazn. 6. imdi U ve daha nceki komutlar geri almak iin birka defa u yazn. 7. imdi birka defa CTRL-R (CTRL'yi basl tutarken R ye basn) yazarak geri almalar da geri aln. ---> Buu satrdaki hatalar dzeltinn ve sonra koomutu geri allln. 8. Bunlar son derece kullanl komutlardr. imdi Ders 2 zete gein. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DERS 2 ZET 1. mleten itibaren bir kelimeyi silmek iin yazn: dw 2. mleten itibaren bir satr silmek iin yazn: d$ 3. Btn bir satr silmek iin yazn: dd 4. Normal kipte bir komut biimi yledir: [say] komut nesne VEYA komut [say] nesne burada: say - komutun ka kere tekrar edecei komut - ne yaplaca, silmek iin d olduu gibi nesne - komutun nasl davranaca, w (kelime), $ (satr sonu), vb gibi. 5. nceki hareketleri geri almak iin yazn: u (kk u) Bir satrdaki tm deiiklikleri geri almak iin yazn: U (byk u) Geri almalar geri almak iin yazn: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 3.1: KOY KOMUTU ** Son yaptnz silme ilemini imleten sona geri yerletirmek iin p yazn.** 1. mleci aadaki tmceciin ilk satrna gtrn. 2. Satr silip Vim'in tamponuna yerletirmek iin dd yazn. 3. mleci, silinmi satr nereye yerletirmek istiyorsanz, o satrn ZERNE gtrn. 4. Normal kipteyken, satr yerletirmek iin p yazn. 5. Tm satrlar doru sraya koymak iin 2'den 4'e kadar olan admlar tekrar edin. d) Sen de rendin mi? b) Menekeler mavidir, c) Akl renilir, a) Gller krmzdr, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 3.2: YERLETR KOMUTU ** mlecin altnda bir karakter yerletirmek iin r yazn.** 1. mleci aadaki iaretlenmi(--->) ilk satra gtrn. 2. mleci satrdaki ilk hatann zerine gtrn. 3. Hatay dzeltmek iin nce r ardndan da doru karakteri yazn. 4. lk satr dzelene kadar adm 2 ve 3' tekrar edin. ---> Bu satv yazlvken, bivileri yaml tutara basm. ---> Bu satr yazlrken, birileri yanl tulara basm. 5. Ders 3.2'ye gein. NOT: Unutmayn, ezberleyerek deil kullanarak renin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 3.3: DETR KOMUTU ** Bir kelimenin tamamn veya parasn deitirmek iin cw yazn. 1. mleci aadaki iaretlenmi(--->) satra gtrn. 2. mleci "sutar" daki u'nun zerine yerletirin. 3. nce cw ardndan doru kelimeyi girin (bu durumda 'atr'.) 4. tuuna basn ve bir sonraki hataya gidin (deimesi gereken ilk karakter.) 5. lk cmle ikincisiyle ayn olana kadar adm 3 ve 4' tekrar edin. ---> Bu sutar deitir komutu ile deineli gereken birka petime ieriyor. ---> Bu satr deitir komutu ile deimesi gereken birka kelime ieriyor. cw'nin sadece kelimeyi deitirmediini, ayn zamanda sizi insert kipine gtrdne de dikkat edin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 3.4: c'Y KULLANARAK DAHA FAZLA DETRME ** Deitir komutu sil komutu ile ayn nesnelerle kullanlr.** 1. Deitir komutu sil ile ayn yolla alr. Biim yledir: [say] c nesne VEYA c [say] nesne 2. Nesneler de ayn zamanda ayndr. rnein w (word), $ (satr sonu), vb. gibi. 3. Aadaki iaretlenmi(--->) ilk satra gidin. 4. mleci ilk hataya gtrn. 5. Satrn geri kalan ksmn ikincisi gibi yapmak iin c$ yazn ve daha sonra tuuna basn. ---> Bu satrn sonu dzeltilmek iin biraz yardma ihtiya duyuyor. ---> Bu satrn sonu dzeltilmek iin c$ komutu kullanlarak yardma ihtiya duyuyor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DERS 3 ZET 1. Silinmi olan bir metini geri yerletirmek iin p yazn. Bu silinmi metini imleten hemen SONRA geri yerletirir (eer bir satr silinmise hemen imleten sonra, alta yerletirilecektir) 2. mlecin altndaki karakteri deitirmek iin nce r ardndan da asl karakteri yazn. 3. Deitir komutu belirlenen nesneyi, imleten nesnenin sonuna kadar deitirme imkan verir. rnein, bir kelimeyi imleten sonuna kadar deitirmek iin cw , bir satrn tamamn deitirmek iinse c$ yazn. 4. Deitir iin biim yledir: [say] c nesne VEYA c [say] nesne imdi bir sonraki derse gein. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 4.1: KONUM VE DOSYA DURUMU ** Dosya ierisindeki konumunuzu ve dosyann durumunu grmek iin CTRL-g yazn. ** ** Dosya ierisindeki bir satra gitmek iin SHIFT-g yazn. ** Not: Admlardan herhangi birini yapmadan nce dersin tamamn okuyun!! 1. Ctrl tuunu basl tutun ve g'ye basn. Dosyann sonunda dosya ismini ve bulunduunuz konumu gsteren bir durum satr grnecektir. Adm 3 iin satr numarasn unutmayn. 2. Dosyann sonuna gitmek iin shift-G 'ye basn. 3. Daha nce bulunduunuz satr numarasn yazn ve daha sonra shift-G 'ye basn. Bu sizi daha nce bulunduunuz ve Ctrl-g 'ye bastnz satra geri gtrecektir. (Saylar yazlrken ekranda GRNMEYECEKLERDR.) 4. Yapabileceinizi dndnzde, adm 1'den 3'e kadar yapn. .N: Bu ksm orijinal metinde de biraz eksik anlatlm gibi. Bir satr hakknda bilgi almak iin Ctrl-g'yi kullann. Herhangi bir satra gitmek iinse, nce satr numarasn yazn ve ardnan shift-g'ye basn. Satr numaras girmeden baslan shift-g sizi satr sonuna gtrr. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 4.2: ARAMA KOMUTU ** Bir kelime beini aramak iin / ile beraber kelime beini girin. ** 1. Normal kipteyken / karakterini yazn. Komut blm yerine / karakterinin ve imlecin ekrann sonunda grndne dikkat edin. 2. imdi, 'hatttaa' yazp 'a basn. Bu sizin aramak istediiniz kelime. 3. Ayn kelime beini tekrar aramak iin, basite n yazn. Ayn kelime beini zt ynde aramak iin, Shift-N yazn. 4. Eer zt yne doru bir arama yapmak istiyorsanz, / komutu yerine ? komutunu kullann. ---> "hatttaa" hatay yazmann doru yolu deil; hatttaa bir hata. Not: Arama dosyann sonuna ulatnda, tekrar batan balayacaktr. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 4.3: UYAN PARANTEZ ARAMASI ** Uyan bir ),] veya } bulmak iin % yazn. ** 1. mleci iaretli (--->) satrdaki herhangi bir (, [ veya { karakterinin zerine gtrn. 2. imdi % karakterini yazn. 3. mle uyan parantez veya ayracn zerine gider. 4. Uyan ilk parantezin zerine geri dnmek iin yine % yazn. ---> Bu ( ierisinde ('ler, ['ler ] ve {'ler } bulunan bir satrdr. )) Not: Bu ierisinde uymayan parantezler bulunan bir programn yanln ayklamak iin son derece yararldr. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 4.4: HATALARI DZELTMEK N BR YOL ** 'eski' yerine 'yeni' yerletirmek iin :s/eski/yeni/g yazn. ** 1. mleci aadaki iaretli (--->) satra gtrn. 2. :s/buu/bu yazp 'a basn. Bu komutun sadece satrdaki ilk karlamay dzelttiine dikkat edin. 3. imdi genel olarak satrdaki tm deiiklii yapmak iin :s/buu/bu/g yazn. ---> Buu birinci, buu ikinci, buu nc blm. 4. ki satr arasndaki bir karakter katarnn tmn deitirmek iin, :#,#s/eski/yeni/g yazn, burada #,# iki satrn saylardr. Tm dosyadaki karlalan kelimeleri deitirmek iin :%s/eski/yeni/g yazn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DERS 4 ZET 1. Ctrl-g sizin dosyadaki konumunuzu ve dosya durumunu gsterir. Shift-G dosyann sonuna gider. Shift-G 'den nce bir say yazlrsa, o satra gidilir. 2. Bir szck beinden nce / yazmak, LER ynde o bei aratr. Bir szck beinden nce ? yazmak, GER ynde o bei aratr. Bir aramadan sonra, ayn yndeki bir sonraki karlamay bulmak iin n , veya zt yndekini bulmak iin Shift-N yazn. 3. mle bir (,),[,],{,} parantezi zerindeyken % yazmak, uyan dier e parantezi bulur. 4. Bir satrdaki ilk 'eski'yi 'yeni' ile deitirmek iin :s/eski/yeni yazn. Bir satrdaki tm 'eski'leri 'yeni' ile deitirmek iin :s/eski/yeni/g yazn. ki satr arasndaki bekleri deitirmek iin :#,#s/eski/yeni/g yazn. (#'lar satr numaralar) Bir dosyadaki tm karlamalar deitirmek iin :%s/eski/yeni/g yazn. Her seferinde onay sormas iin 'c' ekleyin. :%s/eski/yeni/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 5.1: BIR DI KOMUT ALITIRMAK ** Bir d komutu altrmak iin :! ve ardndan istediiniz d komutu yazn. ** 1. mleci ekrann altna gtrmek iin alk olduunuz : komutunu yazn. Bu size bir komut yazma imkan verir. 2. imdi ! (nlem) karakterini yazn. Bu size bir d komut altrma imkan verir. 3. rnek olarak ! karakterini takiben ls yazn ve 'a basn. Bu size o anda bulunduunuz dizindeki dosyalar gsterecektir. Veya ls almazsa :!dir komutunu kullann. Not: Herhangi bir d komutu bu yolla altrmak mmkndr. Not: Tm : komutlarndan sonra tuuna baslmaldr. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 5.2: DOSYA YAZMAYA DEVAM ** Dosyaya yaplan deiiklii kaydetmek iin, :w DOSYASM yazn. ** 1. Bulunduunuz dizini listelemek iin :!dir veya :!ls yazn. Komuttan sonra tuuna bascanz zaten biliyorsunuz. 2. Mevcut olmayan bir dosya ismi sein, rnein DENEME. 3. imdi :w DENEME yazn (DENEME sizin setiiniz dosya ismi). 4. Bu tm dosyay (Vim Tutor) DENEME isminde baka bir dosyaya yazar. Bunu dorulamak iin, :!dir yazn ve yeniden bulunduunuz dizini listeleyin. Not: Eer Vim'den kp kaydettiiniz DENEME dosyasn aarsanz, bunun kaydettiiniz vimtutor'un gerek bir kopyas olduunu grrsnz. 5. imdi dosyay u komutlar vererek silin (MS-DOS) :!del DENEME (veya UNIX) :!rm DENEME ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 5.3: SEMEL YAZ KOMUTU ** Dosyann bir blmn kaydetmek iin, :#,# w DOSYASM yazn. ** 1. Bir kez daha bulunduunuz dizini grmek iin :!dir veya :!ls yazn, ardndan DENEME gibi uygun bir dosya ismi sein. 2. mleci bu sayfann bana gtrn ve ardndan CTRL-g'ye basarak satr numarasn renin. BU NUMARAYI UNUTMAYIN! 3. imdi sayfann sonuna gidib ve yine CTRL-g'ye basarak satr numarasn renin. BU NUMARAYI DA UNUTMAYIN! 4. Bir dosyaya sadece bir blm kaydetmek iin, :#,# w DENEME yazn. #,# sizin baktnz saylar (st,alt) ve DENEME dosyanzn ismidir. 5. Yine, :!dir yazarak dosyann orada olduuna bakn ama SLMEYN. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 5.4: DOSYALARI BRLETRMEK-BLM EKLEMEK ** Bir dosyann ieriini eklemek iin :r DOSYASM yazn. ** 1. DENEME dosyanzn nceden bulunduundan emin olmak iin :!dir yazn. 2. mleci bu sayfann bana yerletirin. NOT: Adm 3' uyguladktan sonra Ders 5.3' gryor olacaksnz. Daha sonra bu derse sayfasna dnn. 3. imdi DENEME sayfasn :r DENEME yazarak aktarn. NOT: Aktardnz dosya imlecinizin hemen altna eklenecektir. 4. Dosyann eklendiini grmek iin, geriye gidin. Ders 5.3'ten iki kopya olduunu greceksiniz; asl ve kopya olan. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DERS 5 ZET 1. :!komut bir d komut altrr. Baz yararl rnekler: (MS-DOS) (Unix) :!dir :!ls - bir dizini listeler. :!del DOSYA :!rm DOSYA - DOSYA'y siler. 2. :w DOSYASM o anki Vim dosyasn diske DOSYASM ile kaydeder. 3. :#,#w DOSYASM # ile # satr arasn DOSYASM ile kaydeder. 4. :r DOSYASM imlecin altndan balayarak DOSYASM isimli dosyann ieriini ekler. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 6.1: A KOMUTU ** mlecin aasna bir satr amak ve Insert kipine gemek iin o yazn. ** 1. mleci aadaki iaretlenmi (--->) satra gtrn. 2. mlecin aasna bir satr amak ve Insert kipine gemek iin o (kk harfle) yazn. 3. imdi iaretlenmi satr kopyalayn ve Insert kipinden kmak iin tuuna basn. ---> o yazdktan sonra imlec alan satra gidicek ve Insert kipine geilecek. 4. mlecin zerinde bir satr amak iin, basite byk O yazn. Bunu aadaki satrda deneyin. Bu satrn zerine bir satr amak iin imle bu satrdayken Shift-o yazn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 6.2: EKLE KOMUTU ** mleten sonra metin eklemek iin a yazn. ** 1. mleci aadaki iaretlenmi (--->) satrn sonuna gtrmek iin Normal Kipteyken $ yazn. 2. mlecin altndaki karakterden sonra metin eklemek iin a (kk harfle) yazn. (Byk A satrn sonuna ekler). 3. imdi ilk satr tamamlayn. Ekle komutunun Insert kipiyle ayn ii yaptna dikkat edin. Tek fark metinin eklendii yer. .N: Eer a yazarsanz imlecin altndaki karakterden hemen sonra ekleme yapabilirsiniz. Eer Shift-a yazarsanz imle satr sonuna gidecek ve hemen ardna ekleme yapabileceksiniz. Doal olarak bizim rneimizde Shift-A'y kullanmak daha gzel olacaktr. nce $ ardnan a yazmamza gerek kalmaz. ---> Bu satrda alabilirsiniz ---> Bu satrda alabilirsiniz. alrken metin eklemeyi kullann. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 6.3: BR BAKA DETR KOMUTU ** Birden fazla karakter deitirmek iin byk R yazn. ** 1. mleci aadaki iaretli (--->) satrlarn ilkine gtrn. 2. mleci iaretli olan ikinci satrdakinden farkl olan ilk kelimenin bana gtrn. ( "tular" kelimesi ) 3. imdi byk R yazn ve ilk satr ikincisinin ayns yapmak iin eski metinin zerinden yenisini yazn. Siz yazdka metin deiecektir. ---> Bu satr ikincisinin ayns yapmak iin tular kullann. ---> Bu satr ikincisinin ayns yapmak iin R yazn ve metini girin. 4. kmak iin tuuna bastnzda, deimemi metinin aynen kaldna dikkat edin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 6.4: SET SEENE ** Bir seenek ayarlayn , bylece bir arama veya deitirme ** ** durumu grmezden gelsin. ** 1. 'ignore' kelimesini aramak iin: /ignore yazn. Bunu n tuuna basarak birka kez tekrar edin 2. :set ic yazarak 'ic' (Ignore case) ayarn sein. 3. Tekrar n tuuna basarak 'ignore' kelimseini arayn. n tuuna basarak bu aramay birden ok defa tekrar edin. 4. :set hls is yazarak 'hlsearch' ve 'incsearch' ayarlarn sein. 5. /ignore yazarak arama komutunu tekrar verin ve ne olacan grn. 6. Karlama vurgularn iptal etmek iin, :nohlsearch yazn. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DERS 6 ZET 1. o yazmak imlecin altnda bir satr aar ve imleci bu alm satra Insert kipinde yerletirir. Byk O yazmak imlecin zerinde bir satr aar. 2. mlecin zerindeki karakterden hemen sonra metin eklemek iin a yazn. Byk A yazmak hemen satr sonuna giderek metin eklemeye hazr hale getirir. 3. Byk R yazmak Deitir kipine girer ve kmak iin tuuna baslana kadar sizi bu kipte brakr. 4. ":set xxx" yazmak "xxx" seeneini ayarlar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ders 7: EVRM (ON-LINE) YARDIM KOMUTLARI ** evirimii yardm sistemini kullann ** Vim geni bir evirimii yardm sistemine sahiptir. Balamak iin u n deneyebilirsiniz. - (eer sahipseniz) tuuna basn - (eer sahipseniz) tuuna basn - :help yazn ve tuuna basn Yardm penceresini kapatmak iin :q yazp tuuna basn. ":help" komutuna deiken (argman) vererek herhangi bir konu hakknda yardm alabilirsini. unlar deneyin ( tuuna basmay unutmayn) : :help w :help c_ Klávesa l je napravo a vykoná pohyb doprava. j Klávesa j vyzerá ako šípka dole v 1. Pohybuj kurzorom po obrazovke, kým si na to nezvykneš. 2. Drž stlačenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje. ---> Teraz sa už vieš pohybovať na nasledujúcu lekciu. 3. Použitím klávesy pre pohyb dole prejdi na Lekciu 1.2. Poznámka: Ak si niesi istý tým čo si napísal, stlač na prechod do normálneho módu. Poznámka: Kurzorové klávesy sú tiež funkčné. Ale používaním hjkl sa budeš schopný pohybovať rýchlejšie, keď si zvykneš ich používať. Naozaj! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 1.2: ZATVÁRANIE VIMU !! POZNÁMKA: Pred vykonaním týchto krokov si prečítaj celú túto lekciu !! 1. Stlač klávesu (aby si sa učite nachádzal v normálnom móde) 2. Napíš: :q! . Tým ukončíš prácu s editorom BEZ uloženia zmien, ktoré si vykonal. 3. Keď sa dostaneš na príkazový riadok, napíš príkaz, ktorým sa dostaneš speť do tejto výuky. To môže byť: vimtutor 4. Ak si si tieto kroky spoľahlivo zapamätal, vykonaj kroky 1 až 3, pre ukončenie a znovu spustenie editora. POZNÁMKA: :q! neuloží zmeny, ktoré si vykonal. O niekoľko lekcií sa naučíš ako uložiť zmeny do súboru 5. presuň kurzor dole na lekciu 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.3: EDITÁCIA TEXTU - MAZANIE ** Stlačenie klávesy x v normálnom móde zmaže znak na mieste kurzora. ** 1. Presuň kurzor nižšie na riadok označený značkou --->. 2. Aby si mohol odstrániť chyby, pohybuj kurzorom kým neprejde na znak, ktorý chceš zmazať. 3. Stlač klávesu x aby sa zmazal nechcený znak. 4. Zopakuj kroky 2 až 4 až kým veta nieje správna. ---> Kraava skoočilla ccezz mesiiac. 5. Ak je veta správna, prejdi na lekciu 1.4. POZNÁMKA: Neskúšaj si zapamätať obsah tejto výuky, ale sa uč používaním. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.4: EDITÁCIA TEXTU - VKLADANIE ** Stlačenie klávesy i umožňuje vkladanie textu. ** 1. Presuň kurzor nižšie na prvý riadok za značku --->. 2. Pre upravenie prvého riadku do rovnakého tvaru ako je druhý riadok, presuň kurzor na prvý znak za misto, kde má byť text vložený. 3. Stlač klávesu i a napíš potrebný text. 4. Po opravení každej chyby, stlač pre návrat do normálneho módu. Zopakuj kroky 2 až 4 kým nieje veta správna. ---> Tu je text chýbajúci tejto. ---> Tu je nejaký text chýbajúci od tejto čiary. 5. Keď sa dostatočne naučíš vkladať text, prejdi na nasledujúce zhrnutie. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.5: EDITÁCIA TEXTU - PRIDÁVANIE ** Stlačenie klávesy A umožňuje pridávať text. ** 1. Presuň kurozr nižšie na prvý riadok za značkou --->. Nezáleží na tom, na ktorom znaku sa kurzor v tom riadku nachádza. 2. Stlač klávesu A a napíš potrebný text. 3. Po pridaní textu stlač klávesu pre návrat do Normálneho módu. 4. Presuň kurozr na druhý riadok označený ---> a zopakuj kroky 2 a 3 kým nieje veta správna. ---> Tu je nejaký text chýbajúci o Tu je nejaký text chýbajúci od tiaľto. ---> Tu tiež chýba nej Tu tiež chýba nejaký text. 5. Keď sa dostatočne naučíš pridávať text, prejdi na lekciu 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 1.6: EDITÁCIA SÚBORU ** Napísaním :wq sa súbor uloží a zavrie ** !! POZNÁMKA: Pred vykonaním týchto krokov si prečítaj celú lekciu!! 1. Opusti túto výuku, ako si to urobil v lekcii 1.2: :q! 2. Do príkazového riadku napíš príkaz: vim tutor 'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru, ktorý chceš editovať. Použi taký súbor, ktorý môžeš meniť. 3. Vlož a zmaž text tak, ako si sa naučil v predošlých lekciach. 4. Ulož súbor so zmenami a opusti Vim príkazom: :wq 5. Reštartuj vimtutor a presuň sa dole na nasledujúce zhrnutie. 6. Urob tak po prečítaní predošlých krokov a porozumeniu im. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZHRNUTIE LEKCIE 1 1. Kurzor sa pohybuje použitím kláves so šípkami alebo klávesmi hjkl. h (do lava) j (dole) k (hore) l (doprava) 2. Pre spustenie Vimu (z príkazového riadku) napíš: vim FILENAME 3. Na ukončenie Vimu napíš: :q! pre zrušenie všetkých zmien alebo napíš: :wq pre uloženie zmien. 4. Na zmazanie znaku na mieste kurzora napíš: x 5. Pre vloženie textu na mieste kurzora v normálnom móde napíš: i napíš vkladaný text vkladanie pred kurzor A napíš pridávaný text vkladanie za riadok POZNÁMKA: Stlačenie ťa premiestní do normálneho módu alebo zruší nejaký nechcený a čiastočne dokončený príkaz. Teraz pokračuj lekciou 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.1: Mazacie príkazy ** Napísanie príkazu dw zmaže znaky do konca slova. ** 1. Stlač aby si bol bezpečne v normálnom móde. 2. Presuň kurzor nižšie na riadok označený značkou --->. 3. Presuň kurzor na začiatok slova, ktoré je potrebné zmazať. 4. Napíš dw aby slovo zmizlo. POZNÁMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky keď ho napíšeš. Vim na teba počká, aby si mohol napísať písmeno w. Ak vidíš niečo iné ako d , tak si napísal nesprávny znak; stlač a začni znova. ---> Tu je niekoľko slov zábava, ktoré nie patria list do tejto vety. 5. Zopakuj kroky 3 až 4 kým veta nieje správna a prejdi na lekciu 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.2: VIAC MAZACÍCH PRÍKAZOV ** Napísanie príkazu d$ zmaže znaky do konca riadku ** 1. Stlač aby si bol bezpečne v normálnom móde. 2. Presuň kurzor nižšie na riadok označený značkou --->. 3. Presuň kurzor na koniec správnej vety (ZA prvú bodku). 4. Napíš d$ aby sa zmazali znaky do konca riadku. ---> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát. 5. Prejdi na lekciu 2.3 pre pochopenie toho čo sa stalo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.3: OPERÁTORY A POHYBY Veľa príkazov, ktoré menia text sú odvodené od operátorov a pohybov. Formát pre príkaz mazania klávesou d je nasledovný: d pohyb kde: d - je mazací operátor pohyb - je to čo operátor vykonáva (vypísané nižšie) Krátky list pohybov: w - do začiatku ďalšieho slova, okrem jeho prvého písmena. e - do konca terajšieho slova, vrátane posledného znaku. $ - do konca riadku, vrátane posledného znaku Takže napísaním de sa zmaže všetko od kurzora do konca slova. POZNÁMKA: Stlačením iba pohybu v normálnom móde bez operátora sa presunie kurzor tak ako je to špecivikované. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.4: Použitie viacnásobného pohybu ** Napísaním čísla pred pohyb ho zopakuje zadný počet krát ** 1. Presuň kurozr nižšie na začiatok riadku označeného --->. 2. Napíš 2w a kurozr sa presunie o dve slová vpred. 3. Napíš 3e a kurozr sa presunie vpred na koniec tretieho slova. 4. Napíš 0 (nula) a kurozr sa presunie na začiatok riadku. 5. Zopakuj kroky 2 a 3 s rôznymi číslami. ---> Toto je riadok so slovami po kotrých sa môžete pohybovať. 6. Prejdi na lekciu 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.5: POUŽITIE VIACNÁSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE ** Napísanie čísla spolu s operátorom ho zopakuje zadaný počet krát ** V kombinácii operátorov mazania a pohybu spomínaného vyššie vlož počet pred pohyb pre docielenie hromadného mazania: d číslo pohyb 1. Presuň kurzor na prvé slovo písané VEĽKÝMI PÍSMENAMI v riadku označenom --->. 2. Napíš 2dw a zmažeš dve slová písané VEĽKÝMI PÍSMENAMI 3. Zopakuj kroky 1 a 2 s použitím rôzneho čísla tak aby si zmazal slová písané veľkými písmenami jedným príkazom. ---> Tento ABC DE riadok FGHI JK LMN OP so slovamI je Q RS TUV vycisteny. POZNÁMKA: Číslo medzi operátorom d a pohybom funguje podobne ako pri použití s pohybom bez operátora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.6: OPERÁCIE S RIADKAMI ** Napísanie príkazu dd zmaže celý riadok. ** Vzhľadom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli, že bude jednoduchšie mazať celý riadok napísaním dvoch písmen d. 1. Presuň kurzor na druhý riadok v texte na spodu. 2. Napíš dd aby si zmazal riadok. 3. Prejdi na štvrtý riadok. 4. Napíš 2dd aby si zmazal dva riadky. 1) Ruže sú červené, 2) Blato je zábavné, 3) Fialky sú modré, 4) Mám auto, 5) Hodinky ukazujú čas, 6) Cukor je sladký, 7) A to si ty. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 2.7: PRÍKAZ UNDO ** Stlač u pre vrátenie posledného príkazu, U pre úpravu celého riadku. ** 1. Presuň kurzor nižšie na riadok označený značkou ---> a premiestni ho na prvú chybu. 2. Napíš x pre zmazanie prvého nechceného riadku. 3. Teraz napíš u čím vrátíš späť posledne vykonaný príkaz. 4. Teraz oprav všetky chyby na riadku použitím príkazu x . 5. Teraz napíš veľké U čím vrátíš riadok do pôvodného stavu. 6. Teraz napíš u niekoľko krát, čím vrátíš späť príkaz U. 7. Teraz napíš CTRL-R (drž klávesu CTRL stlačenú kým stláčaš R) niekoľko krát, čím vrátíš späť predtým vrátené príkazy (undo z undo). ---> Opprav chybby nna toomto riadku a zmeeň ich pommocou undo. 8. Tieto príkazy sú často používané. Teraz prejdi na zhrnutie lekcie 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 2 ZHRNUTIE 1. Pre zmazanie znakov od kurzora do konca slova napíš: dw 2. Pre zmazanie znakov od kurzora do konca riadku napíš: d$ 3. Pre zmazanie celého riadku napíš: dd 4. Pre zopakovanie pohybu, napíš pred neho číslo: 2w 5. Formát pre píkaz: operátor [číslo] pohyb kde: operátor - čo treba robiť, napríklad d pre zmazanie [číslo] - je voliteľný počet pre opakovanie pohybu pohyb - pohyb po texte vzhľadom na operátor, napríklad w (slovo), $ (do konca riadku), atď. 6. Pre pohyb na začiatok riadku použi nulu: 0 7. Pre vrátenie späť predošlej operácie napíš: u (malé u) Pre vrátenie všetkých úprav na riadku napíš: U (veľké U) Pre vrátenie vrátených úprav napíš: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 3.1: PRÍKAZ VLOŽIŤ ** Napísanie príkazu p vloží psledný výmaz za kurzor. ** 1. Presuň kurzor nižšie na prvý riadok textu. 2. Napíš dd čím zmažeš riadok a uložíš ho do buffera editora Vim. 3. Presuň kurzor vyššie tam, kam zmazaný riadok patrí. 4. Ak napíšeš v normálnom móde p zmazaný riadk sa vloží. 5. Zopakuj kroky 2 až 4, kým riadky niesú v správnom poradí. ---> d) Tiež sa dokážeš vzdelávať? ---> b) Fialky sú modré, ---> c) Inteligencia sa vzdeláva, ---> a) Ruže sú červené, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 3.2: PRÍKAZ NAHRADENIA ** Napísaním rx sa nahradí znak na mieste kurzora znakom x . ** 1. Presuň kurzor nižšie na prví riadok textu označeného značkou --->. 2. Presuň kurzor na začiatok prvej chyby. 3. napíš r a potom znak, ktorý tam má byť. 4. Zopakuj kroky 2 a 3, kým prvý riadok nieje zhodný s druhým. ---> Kaď bol tento riasok píaaný, niekro stlašil nesprábne klávesy! ---> Keď bol tento riadok písaný, niekto stlačil nesprávne klávesy! 5. Teraz prejdi na lekciu 3.2. POZNÁMKA: Pamätaj si, že naučiť sa môžeš len používanim, nie pamätaním. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 3.3. PRÍKAZ ÚPRAVY ** Ak chceš zmeniť časť slova do konca slova, napíš ce . ** 1. Presuň kurzor nižšie na prvý riadok označený značkou --->. 2. Umiestni kurzor na písmeno o v slove rosfpl. 3. Napíš ce a oprav slovo (v tomto prípade napíš 'iadok'.) 4. Stlač a prejdi na ďalší znak, ktorý treba zmeniť. 5. Zopakuj kroky 3 a 4, kým prvá veta nieje rovnaká ako druhá. ---> Tento rosfpl má niekoľko skic, ktoré je pirewvbí zmeniť piyťučán príkazu. ---> Tento riadok má niekoľko slov, ktoré je potrebné zmeniť použitím príkazu. Poznámka, že ce zmaže slovo a nastaví vkladací mód. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 3.4: VIAC ZMIEN POUŽITÍM c ** Príkaz pre úpravy sa používa s rovnakými pohybmi ako pre mazanie ** 1. Príkaz pre úpravy pracuje rovnako ako pre mazanie. Formát je: c [číslo] pohyb 2. Pohyby sú rovnaké, ako napríklad w (slovo) a $ (koniec riadku). 3. Presuň kurzor nižšie na prvý riadok označený značkou --->. 4. Presuň kurzor na prvú chybu. 5. napíš c$ aby si mohol upraviť zvyšok riadku podľa druhého a stlač . ---> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy. ---> Koniec tohto riadku potrebuje opraviť použitím príkazu c$ . POZNÁMKA: Môžeš použiť klávesu backspace na úpravu zmien počas písania. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 3 ZHRNUTIE 1. Na vloženie textu, ktorý už bol zmazaný, napíš p . To vloží zmazaný text ZA kurzor (ak bol riadok zmazaný prejde na riadok pod kurzorom). 2. Pre naradenie znaku na mieste kurzora, napíš r a potom znak, ktorý nahradí pôvodný znak. 3. Príkaz na upravenie umožňuje zmeniť od kurzora až po miesto, ktoré určuje pohyb. napr. Napíš ce čím zmníš text od pozície kurzora do konca slova, c$ zmení text do konca riadku. 4. Formát pre nahradenie je: c [číslo] pohyb Teraz prejdi na nalsedujúcu lekciu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 4.1: POZÍCIA A STATUS SÚBORU ** Stlač CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru. Napíš G pre presun na riadok v súbore. ** Poznámka: Prečítaj si celú túto lekciu skôr ako začneš vykonávať kroky!! 1. Drž stlačenú klávesu Ctrl a stlač g . Toto nazývame CTRL-G. Na spodu obrazovky sa zobrazí správa s názvom súboru a pozíciou v súbore. Zapamätajsi si číslo riadku pre použitie v kroku 3. 2. Stlač G čím sa dostaneš na spodok súboru. Napíš gg čím sa dostaneš na začiatok súboru. 3. Napíš číslo riadku na ktorom si sa nachádzal a stlač G. To ťa vráti na riadok, na ktorom si prvý krát stlačil CTRL-G. 4. Ak sa cítíš schopný vykonať teto kroky, vykonaj kroky 1 až 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 4.2: PRÍKAZ VYHĽADÁVANIA ** Napíš / nasledované reťazcom pre vyhľadanie príslušného reťazca. ** 1. Napíš znak / v normálnom móde. Poznámka, že tento znak sa spolu s kurzorom zobrazí v dolnej časti obrazovky s : príkazom. 2. Teraz napíš 'errroor' . To je slovo, ktoré chceš vyhľadať. 3. Pre vyhľadanie ďalšieho výskytu rovnakého reťazca, stlač jednoducho n. Pre vyhľadanie ďalšieho výskytu rovnakého reťazca opačným smerom, N. 4. Ak chceš vyhľadať reťazec v spätnom smere, použí príkaz ? miesto príkazu /. 5. Pre návrat na miesto z ktorého si prišiel stlač CTRL-O (drž stlačenú klávesu Ctrl počas stlačenia klávesy o). Zopakuj pre ďalší návrat späť. CTRL-I ide vpred. POZNÁMKA: "errroor" nieje spôsob hláskovania error; errroor je error. POZNÁMKA: Keď vyhľadávanie dosiahne koniec tohto súboru, bude pokračovať na začiatku, dokiaľ nieje resetované nastavenie 'wrapscan' . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 4.3: VYHĽADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK ** Napíš % pre vyhľadanie príslušného znaku ),], alebo } . ** 1. Premiestni kurzor na hocaký zo znakov (, [, alebo { v riadku nižšie označeného značkou --->. 2. Teraz napíš znak % . 3. Kurzor sa premiestni na zodpovedajúcu zátvorku. 4. Napíš % pre presun kurzoru späť na otvárajúcu zátvorku. 5. Presuň kurzor na iný zo znakov (,),[,],{ alebo } a všimni si čo % vykonáva. ---> Toto ( je testovací riadok s ('s, ['s ] a {'s } v riadku. )) Poznámka: Toto je veľmi výhodné použíť pri ladení programu s chýbajúcimi uzatvárajúcimi zátvorkami! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 4.4: PRÍKAZ NAHRADENIA ** Napíš :s/starý/nový/g pre nahradenie slova 'starý' za slovo 'nový'. ** 1. Presuň kurzor nižšie na riadok označený značkou --->. 2. Napíš :s/thee/the . Poznamka, že tento príkaz zmení len prvý výskyt "thee" v riadku. 3. Teraz napíš :s/thee/the/g čo znamená celkové nahradenie v riadku. Toto nahradí všetky výskyty v riadku. ---> Thee best time to see thee flowers in thee spring. 4. Pre zmenu všetkých výskytov daného reťazca medzi dvomi ridakami, napíš :#,#s/starý/nový/g kde #,# sú čísla dvoch riadkov, v rozsahu ktorých sa nahradenie vykoná. napíš :%s/starý/nový/g pre zmenu všetkých výskytov v celom riadku napíš :%s/starý/nový/gc nájde všetky výskyty v celom súbore, s otázkou či nahradiť alebo nie ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 4 ZHRNUTIE 1. CTRL-g vypíše tvoju pozíciu v súbore a status súboru. G ťa premiestni na koniec riadku. číslo G ťa premiestni na riadok s číslom. gg ťa presunie na prvý riadok 2. Napísanie / nasledované reťazcom vyhľadá reťazec smerom DOPREDU. Napísanie ? nasledované reťazcom vyhľada reťazec smerom DOZADU. Napísanie n po vyhľadávaní, vyhľadá nasledujúci výskyt reťazca v rovnakom smere, pričom N vyhľadá v opačnom smere. CTRL-O ťa vráti späť na staršiu pozíciu, CTRL-I na novšiu pozíciu. 3. Napísanie % keď kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu párnu zátvorku. 4. Pre nahradenie nového za prvý starý v riadku napíš :s/starý/nový Pre nahradenie nového za všetky staré v riadku napíš :s/starý/nový/g Pre nahradenie reťazcov medzi dvoma riadkami 3 napíš :#,#/starý/nový/g Pre nahradenie všetkých výskytov v súbore napíš :%s/starý/nový/g Pre potvrdenie každého nahradenia pridaj 'c' :%s/starý/nový/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 5.1 AKO SPUSTIŤ VONKAJŠÍ PRÍKAZ ** Napíš príkaz :! nasledovaný vonkajším príkazom pre spustenie príkazu ** 1. Napíš obvyklý píkaz : ktorý nastaví kurzor na spodok obrazovky. To umožní napísať príkaz. 2. Teraz napíš ! (výkričník). To umožní spustiť hociaký vonkajší príkaz z príkazového riadku. 3. Ako príklad napíš ls za ! a stlač . Tento príkaz zobrazí obsah tvojho adresára rovnako ako na príkazovom riadku. Alebo použi :!dir ak ls nefunguje. Poznámka: Takto je možné spustiť hociaký vonkajší príkaz s argumentami. Poznámka: Všetky príkazy : musia byť dokončené stlačením ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 5.2: VIAC O UKLADANÍ SÚBOROV ** Pre uloženie zmien v súbore, napíš :w FILENAME. ** 1. Napíš :!dir alebo :!ls pre výpis aktuálneho adresára. Už vieš, že musíš za týmto stlačiť . 2. Vyber názov súboru, ktorý ešte neexistuje, ako napr. TEST. 3. Teraz napíš: :w TEST (kde TEST je názov vybratého súboru.) 4. To uloží celý súbor (Vim Tutor) pod názovm TEST. Pre overenie napíš :!dir , čím zobrazíš obsah adresára. Poznámka: že ak ukončíš prácu s editorom Vim a znovu ho spustíš príkazom vim TEST, súbor bude kópia výuky, keď si ho uložil. 5. Teraz odstráň súbor napísaním (MS-DOS): :!del TEST alebo (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 5.3 VÝBER TEXTU PRE ULOŽENIE ** Pre uloženie časti súboru, napíš v pohyb :w FILENAME ** 1. Presuň kurozr na tento riadok. 2. Stlač v a presuň kurozr na piatu položku dole. Poznámka, že tento text je vyznačený (highlighted). 3. Stlač klávesu : . V spodnej časti okna sa objaví :'<,'>. 4. Napíš w TEST , kde TEST je meno súboru, ktorý zatial neexistuje. Skontroluj, e vidíš :'<,'>w TEST predtým než stlačíš Enter. 5. Vim zapíše označené riadky do súboru TEST. Použi :!dir alebo :!ls pre overenie. Zatial ho ešte nemaž! Použijeme ho v ďalšej lekcii. POZNÁMKA: Stlačením klávesy v sa spustí vizuálne označovanie. Môžeš pohybovať kurzorom pre upresnenie vyznačeného textu. Potom môžeš použiť operátor pre vykonanie nejakej akcie s textom. Napríklad d zmaže vyznačený text. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 5.4: VÝBER A ZLUČOVANIE SÚBOROV ** Pre vloženie obsahu súboru, napíš :r FILENAME ** 1. Premiestni kurzor nad tento riadok. POZNÁMKA: Po vykonaní kroku 2 uvidíš text z lekcie 5.3. Potom sa presuň dole, aby si videl túto lekciu. 3. Teraz vlož súbor TEST použitím príkazu :r TEST kde TEST je názov súboru. Súbor, ktorý si použil je umiestnený pod riadkom s kurzorom. POZNÁMKA: Môžeš tiež načítať výstup vonkajšieho príkazu. Napríklad :r !ls načíta výstup príkazu ls a umiestni ho za pozíciu kurzora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 5 ZHRNUTIE 1. :!príkaz spustí vonkajší príkaz. Niektoré využiteľné príklady sú: (MS_DOS) (UNIX) :!dir :!ls - zobrazí obsah adresára :!del FILENAME :!rm FILENAME - odstráni súbor FILENAME 2. :w FILENAME uloží aktuálny súbor na disk pod menom FILENAME. 3. v pohyb :w FILENAME uloží vizuálne označené riadky do súboru FILENAME. 4. :r FILENAME vyberie z disku súbor FILENAME a vloží ho do aktuálneho súboru za pozíciou kurzora. 5. :r !dir načíta výstup z príkazu dir a vloží ho za pozíciu kurzora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.1: PRÍKAZ OTVORIŤ ** Napíš o pre vloženie riadku pod kurzor a prepnutie do vkladacieho módu ** 1. Presuň kurzor nižšie na riadok označený značkou --->. 2. Napíš o (malé písmeno) pre vloženie čistého riadku pod kurzorm a prepnutie do vkladacieho módu. 3. Teraz skopíruj riadok označený ---> a stlač pre ukončenie vkladacieho módu. ---> Po napísaní o sa kurzor premiestní na vložený riadok do vkladacieho módu. 4. Pre otvorenie riadku nad kurzorom, jednotucho napíš veľké O , namiesto malého o. Vyskúšaj si to na riadku dole. ---> Vlož riadok nad týmto napísaním O, keď kurzor je na tomto riadku. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.2: PRÍKAZ PRIDAŤ ** Napíš a pre vloženie textu ZA kurzor. ** 1. Presuň kurzor nižšie na koniec prvého riadku označeného značkou ---> 2. Stlač klávesu e dokiaľ kurozr nieje na konci riadku. 3. Napíš a (malé písmeno) pre pridanie textu ZA kurzorom. 4. Dokončí slovo tak ako je to v druhom riadku. Stlaš pre opustenie vkladacieho módu. 5. Použi e na presun na ďalšie nedokončené slovo a zopakuj kroky 3 a 4. ---> Tento ri ti dovoľuje nácv priávan testu na koniec riadku. ---> Tento riadok ti dovoľuje nácvik pridávania textu na koniec riadku. POZNÁMKA: a, i, A štartujú rovnaký vkladací mód, jediný rozidel je, kde sa znaky vkladajú. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.3: INÝ SPOSOB NAHRADZOVANIA ** Napíš veľké R pre nahradenie viac ako jedného znaku. ** 1. Presuň kurzor nižšie na prvý riadok označený značkou --->. Premiestni kurzor na začiatok prvého výskytu xxx. 2. Teraz napíš R a napíš číslo uvedené v druhom riadku, takže sa ním nahradí pôvodné xxx. 3. Stlač pre opustenie nahradzovacieho módu. Poznámka, že zvyšok riadku zostane nezmenený. 4. Zopakuj tieto kroky pre nahradenie zvyšných xxx. ---> Pridaním 123 ku xxx dostaneš xxx. ---> Pridaním 123 ku 456 dostaneš 579. POZNÁMKA: Nahradzovací mód je ako vkladací mód, ale každý napísaný znak zmaže existujúci znak. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.4: Copy Paste textu ** použí operátor y pre copy textku a p pre jeho paste ** 1. Choď nižšie na riadok označený ---> a umiestni kurozr za "a)". 2. Naštartuj vizuálny mód použitím v a presuň kurozr pred "first". 3. Napíš y pre vystrihnutie (copy) označeného textu. 4. Presuň kurozr na koniec ďalšieho riadku: j$ 5. Napíš p pre vložnie (paste) textu. Potom napíš: a druha . 6. Použi vizuálny mód pre označenie "položka.", vystrihni to použitím y, presuň sa na koniec nasledujúceho riadku použitím j$ a vlož sem text použitím p. ---> a) toto je prvá položka ---> b) POZNÁMKA: Môžeš použiť tiež y ako operátor; yw vystrihne jedno slovo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcia 6.5: NASTAVENIE MOŽNOSTÍ ** Nastav možnosti, takže vyhľadávanie alebo nahradzovanie ignoruje rozlišovanie ** 1. Vyhľadaj reťazec 'ignore' napísaním: /ignore Zopakuj vyhľadávanie niekoľko krát stlačením klávesy n . 2. Nastav možnosť 'ic' (Ignore case) napísaním príkazu: :set ic 3. Teraz vyhľadaj reťazec 'ingore' znova stlačením klávesy n Poznámka, že teraz sú vyhľadané aj Ignore a IGNORE. 4. Nastav možnosťi 'hlsearch' a 'incsearch': :set hls is 5. Teraz spusti vyhľadávací príkaz znovu, a pozri čo sa stalo: /ignore 6. Pre opetovné zapnutie rozlyšovania veľkých a malých písmen napíš: :set noic POZNÁMKA: Na odstránenie zvýraznenia výrazov napíš: :nohlsearch POZNÁMKA: Ak chceš nerozlyšovať veľkosť písmen len pre jedno použitie vyhľadávacieho príkazu, použi \c: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 6 ZHRNUTIE 1. Napíš o pre otvorenie riadku pod kurzorom a štart vkladacieho módu. Napíš O pre otvorenie riadku nad kurzorom. 2. Napíš a pre vkladanie textu ZA kurzor. Napíš A pre vkladanie textu za koncom riadku. 3. Príkaz e presunie kurozr na koniec slova 4. Operátor y vystrihne (skopíruje) text, p ho vloží. 5. Napísanie veľkého R prepne do nahradzovacieho módu, kým nieje stlačené . 6. Napísanie ":set xxx" nastaví možnosť "xxx". Niektoré nastavenia sú: 'ic' 'ignorecase' ignoruje veľké a malé písmená počas vyhľadávania. 'is' 'incsearch' zobrazuje čiastočné reťazce vyhľadávaného reťazca. 'hls' 'hlsearch' vyznačí všetky vyhľadávané reťazce. Môžeš použiť hociktorý z dlhých a krátkych názvov možností. 7. Vlož "no" pred nastavenie pre jeho vypnutie: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 7.1: ZÍSKANIE NÁPOVEDY ** Používaj on-line systém nápovedy ** Vim má obsiahly on-line systém nápovedy. Pre odštartovanie, vyskúšaj jeden z týchto troch: - stlač klávesu (ak nejakú máš) - stlač klávesu (ak nejakú máš) - napíš :help Čítaj text v okne nápovedy pre získanie predstavy ako nápoveda funguje. Napíš CTRL-W CTRL-W pre skok z jedného okna do druhého. Napíš :q čím zatvoríš okno nápovedy. Môžeš nájsť help ku hociakej téme pridaním argumentu ku príkazu ":help". Vyskúšaj tieto (nezabudni stlačiť ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 7.2: VYTVORENIE ŠTARTOVACIEHO SKRIPTU ** Zapni funkcie editora Vim ** Vim má omnoho viac funkcii než Vi, ale večšina z nich je implicitne vypnutá. Pre používanie viac Vim funkcii vytvor "vimrc" súbor. 1. Začni editovať "vimrc" súbor, to závisí na použitom systéme: :e ~/.vimrc pre Unix :e $VIM/_vimrc pre MS-Windows 2. Teraz si prečítaj text príkladu "vimrc" súboru: :r $VIMRUNTIME/vimrc_example.vim 3. Ulož súbor: :w Pri nasledujúcom štarte editora Vim sa použije zvýrazňovanie syntaxe. Do "vimrc" súboru môžeš pridať všetky svoje uprednostňované nastavenia. Pre viac informácii napíš :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 7.3 DOKONČENIE ** Dokonči príkaz na príkazovom riadku použitím CTRL-D a ** 1. Uisti sa, že Vim nieje v kompatibilnom móde: :set nocp 2. Pozri sa aké súbory sa nachádzajú v adresári: :!ls alebo :!dir 3. Napíš začiatok príkazu: :e 4. Stlač CTRL-D a Vim zobrazí zoznam príkazov začínajúcich "e". 5. Stlač a Vim dokončí meno príkazu na ":edit". 6. Teraz pridaj medzerník a začiatok mena existujúceho súboru: :edit FIL 7. Stlač . Vim dokončí meno (ak je jedinečné). POZNÁMKA: Dokončovanie funguje pre veľa príkazov. Vyskúšaj stlačenie CTRL-D a . Špeciálne je to užitočné pre príkaz :help. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCIA 7 ZHRNUTIE 1. Napíš :help alebo stlač alebo pre otvorenie okna nápovedy. 2. Napíš :help príkaz pre vyhľadanie nápovedy ku príkazu príkaz. 3. Napíš CTRL-W CTRL-W na preskočenie do iného okna. 4. Napíš :q pre zatvorenie okna nápovedy 5. Vytvor štartovací skript vimrc pre udržanie uprednostňovaných nastavení. 6. Počas písania príkazu : stlač CTRL-D pre zobrazenie dokončení. Stlač pre použitie jedného z dokončení. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Toto vymedzuje výuku Vimu. Toto je určené pre strucný prehľad o editore Vim, úplne postačujúce pre ľahké a obstojné používanie tohto editora. Táto výuka je ďaleko od kompletnosti, pretože Vim má omnoho viacej príkazov. Ako ďalšie si prečítaj užívatľský manuál: ":help user-manual". Pre ďalšie čítanie a štúdium je odporúčaná kniha: Vim - Vi Improved - od Steve Oualline Vydavateľ: New Riders Prvá kniha určená pre Vim. Špeciálne vhodná pre začiatočníkov. Obsahuje množstvo príkladov a obrázkov. Pozri na http://iccf-holland.org/click5.html Táto kniha je staršia a je viac o Vi ako o Vim, ale je tiež odporúčaná: Learning the Vi Editor - od Linda Lamb Vydavateľ: O'Reilly & Associates Inc. Je to dobrá kniha pre získanie vedomostí o práci s editorom Vi. Šieste vydanie obsahuje tiež informácie o editore Vim. Táto výuka bola napísaná autormi Michael C. Pierce a Robert K. Ware, Colorado School of Mines s použitím myšlienok dodanými od Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Modifikované pre Vim od Bram Moolenaar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Preklad do Slovenčiny: Ľuboš Čelko e-mail: celbos@inmail.sk Last Change: 2006 Apr 18 encoding: iso8859-2 PK! Lvim80/tutor/tutor.frnu[=============================================================================== = B i e n v e n u e dans l e T u t o r i e l de V I M - Version 1.7 = =============================================================================== Vim est un éditeur très puissant qui a trop de commandes pour pouvoir toutes les expliquer dans un cours comme celui-ci, qui est conçu pour en décrire suffisamment afin de vous permettre d'utiliser simplement Vim. Le temps requis pour suivre ce cours est d'environ 25 à 30 minutes, selon le temps que vous passerez à expérimenter. ATTENTION : Les commandes utilisées dans les leçons modifieront le texte. Faites une copie de ce fichier afin de vous entraîner dessus (si vous avez lancé "vimtutor" ceci est déjà une copie). Il est important de garder en tête que ce cours est conçu pour apprendre par la pratique. Cela signifie que vous devez exécuter les commandes pour les apprendre correctement. Si vous vous contentez de lire le texte, vous oublierez les commandes ! Maintenant, vérifiez que votre clavier n'est PAS verrouillé en majuscules, et appuyez la touche j le nombre de fois suffisant pour que la Leçon 1.1 remplisse complètement l'écran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 1.1 : DÉPLACEMENT DU CURSEUR ** Pour déplacer le curseur, appuyez les touches h,j,k,l comme indiqué. ** ^ k Astuce : La touche h est à gauche et déplace à gauche. < h l > La touche l est à droite et déplace à droite. j La touche j ressemble à une flèche vers le bas. v 1. Déplacez le curseur sur l'écran jusqu'à vous sentir à l'aise. 2. Maintenez la touche Bas (j) enfoncée jusqu'à ce qu'elle se répète. Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante. 3. En utilisant la touche Bas, allez à la Leçon 1.2. NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap> pour revenir en mode Normal. Puis retapez la commande que vous vouliez. NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisant hjkl vous pourrez vous déplacer beaucoup plus rapidement, une fois que vous aurez pris l'habitude. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 1.2 : SORTIR DE VIM !! NOTE : Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !! 1. Appuyez la touche <Échap> (pour être sûr d'être en mode Normal). 2. Tapez : :q! Ceci quitte l'éditeur SANS enregistrer les changements que vous avez faits. 3. Revenez ici en tapant la commande qui vous a mené à ce tutoriel. Cela pourrait être : vimtutor 4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes 1 à 3 pour sortir puis rentrer dans l'éditeur. NOTE : :q! annule tous les changements que vous avez faits. Dans quelques leçons, vous apprendrez à enregistrer les changements. 5. Déplacez le curseur à la Leçon 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT ** Appuyez x pour effacer le caractère sous le curseur. ** 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. 2. Pour corriger les erreurs, déplacez le curseur jusqu'à ce qu'il soit sur un caractère à effacer. 3. Appuyez la touche x pour effacer le caractère redondant. 4. Répétez les étapes 2 à 4 jusqu'à ce que la phrase soit correcte. ---> La vvache à sautéé au-ddessus dde la luune. 5. Maintenant que la ligne est correcte, passez à la Leçon 1.4. NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par la pratique. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 1.4 : ÉDITION DE TEXTE - INSERTION ** Appuyez i pour insérer du texte. ** 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. 2. Pour rendre la première ligne identique à la seconde, mettez le curseur sur le premier caractère APRÈS l'endroit où insérer le texte. 3. Appuyez i et tapez les caractères qui manquent. 4. Une fois qu'une erreur est corrigée, appuyez <Échap> pour revenir en mode Normal. Répétez les étapes 2 à 4 pour corriger la phrase. ---> Il mnqe caractères cette . ---> Il manque des caractères dans cette ligne. 5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez à la Leçon 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 1.5 : ÉDITION DE TEXTE - AJOUTER ** Appuyez A pour ajouter du texte. ** 1. Déplacez le curseur sur la première ligne ci-dessous marquée --->. Peu importe sur quel caractère se trouve le curseur sur cette ligne. 2. Appuyez A et tapez les ajouts nécessaires. 3. Quand le texte a été ajouté, appuyez <Échap> pour revenir en mode Normal. 4. Déplacez le curseur sur la seconde ligne marquée ---> et répétez les étapes 2 et 3 pour corriger la phrase. ---> Il manque du texte à partir de cet Il manque du texte à partir de cette ligne. ---> Il manque aussi du te Il manque aussi du texte ici. 5. Quand vous vous sentez suffisamment à l'aise pour ajouter du texte, allez à la Leçon 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 1.6 : ÉDITER UN FICHIER ** Utilisez :wq pour enregistrer un fichier et sortir. ** !! NOTE : Lisez toute la leçon avant d'exécuter les instructions ci-dessous !! 1. Sortez de ce tutoriel comme vous l'avez fait dans la Leçon 1.2 : :q! Ou, si vous avez accès à un autre terminal, exécutez-y les actions qui suivent. 2. À l'invite du shell, tapez cette commande : vim tutor 'vim' est la commande pour démarrer l'éditeur Vim, 'tutor' est le nom du fichier que vous souhaitez éditer. Utilisez un fichier qui peut être modifié. 3. Insérez et effacez du texte comme vous l'avez appris dans les leçons précédentes. 4. Enregistrez le fichier avec les changements et sortez de Vim avec : :wq 5. Si vous avez quitté vimtutor à l'étape 1, recommencez vimtutor et déplacez-vous en bas vers le résumé suivant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 1 1. Le curseur se déplace avec les touches fléchées ou les touches hjkl. h (gauche) j (bas) k (haut) l (droite) 2. Pour démarrer Vim à l'invite du shell tapez : vim FICHIER 3. Pour quitter Vim tapez : <Échap> :q! pour perdre tous les changements. OU tapez : <Échap> :wq pour enregistrer les changements. 4. Pour effacer un caractère sous le curseur tapez : x 5. Pour insérer ou ajouter du texte tapez : i tapez le texte à insérer avant le curseur <Échap> A tapez le texte à ajouter en fin de ligne <Échap> NOTE : Appuyer <Échap> vous place en mode Normal ou annule une commande partiellement tapée dont vous ne voulez plus. Passez maintenant à la leçon 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.1 : COMMANDES D'EFFACEMENT ** Tapez dw pour effacer un mot. ** 1. Appuyez <Échap> pour être sûr d'être en mode Normal. 2. Déplacez le curseur sur la ligne marquée ---> ci-dessous. 3. Placez le curseur sur le début d'un mot qui a besoin d'être effacé. 4. Tapez dw pour faire disparaître ce mot. NOTE : La lettre d apparaîtra sur la dernière ligne de l'écran lors de votre frappe. Vim attend que vous tapiez w . Si vous voyez un autre caractère que d vous avez tapé autre chose ; appuyez <Échap> et recommencez. ---> Il y a quelques drôle mots qui n'ont rien à faire papier sur cette ligne. 5. Répétez les étapes 3 et 4 jusqu'à ce que la phrase soit correcte et allez à la Leçon 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.2 : PLUS DE COMMANDES D'EFFACEMENTS ** Tapez d$ pour effacer jusqu'à la fin de la ligne. ** 1. Appuyez <Échap> pour être sûr d'être en mode Normal. 2. Déplacez le curseur sur la ligne marquée ---> ci-dessous. 3. Déplacez le curseur jusqu'à la fin de la ligne correcte (APRÈS le premier . ). 4. Tapez d$ pour effacer jusqu'à la fin de la ligne. ---> Quelqu'un a tapé la fin de cette ligne deux fois. cette ligne deux fois. 5. Allez à la Leçon 2.3 pour comprendre ce qui se passe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.3 : À PROPOS DES OPÉRATEURS ET DES MOUVEMENTS Plusieurs commandes qui changent le texte sont constituées d'un opérateur et d'un mouvement. Le format pour une commande d'effacement avec l'opérateur d d'effacement est le suivant : d mouvement Où : d - est l'opérateur d'effacement mouvement - est le mouvement sur lequel agit l'opérateur (listés ci-dessous) Une courte liste de mouvements : w - jusqu'au début du prochain mot, en EXCLUANT son premier caractère. e - jusqu'à la fin du mot courant, en EXCLUANT son dernier caractère. $ - jusqu'à la fin de la ligne, en INCLUANT son dernier caractère. Ainsi, taper de va effacer depuis le curseur jusqu'à la fin du mot. NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le curseur comme indiqué. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT ** Taper un nombre avant un mouvement le répète autant de fois. ** 1. Déplacez le curseur au début de la ligne marquée ---> ci-dessous. 2. Tapez 2w pour déplacer le curseur de 2 mots vers l'avant. 3. Tapez 3e pour déplacer le curseur à la fin du troisième mot vers l'avant. 4. Tapez 0 (zéro) pour déplacer au début de la ligne. 5. Répétez les étapes 2 et 3 avec des quantificateurs différents. ---> Ceci est juste une ligne avec des mots où vous pouvez vous déplacer. 6. Déplacez-vous à la Leçon 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS ** Taper un nombre avec un opérateur le répète autant de fois. ** Outre la combinaison de l'opérateur d'effacement avec un déplacement mentionné ci-dessus, vous pouvez insérer un nombre (quantificateur) pour effacer encore plus : d nombre déplacement 1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne marquée --->. 2. Tapez d2w pour effacer les deux mots en MAJUSCULES. 3. Répétez les étapes 1 et 2 avec des quantificateurs différents pour effacer les mots suivants en MAJUSCULES à l'aide d'une commande. ---> Cette ABC DE ligne FGHI JK LMN OP de mots est Q RS TUV nettoyée. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.6 : OPÉREZ SUR DES LIGNES ** Tapez dd pour effacer une ligne complète. ** Vu le nombre de fois où l'on efface des lignes complètes, les concepteurs de Vi ont décidé qu'il serait plus facile de taper simplement deux d pour effacer une ligne. 1. Placez le curseur sur la seconde ligne de la phrase ci-dessous. 2. Tapez dd pour effacer la ligne. 3. Maintenant allez à la quatrième ligne. 4. Tapez 2dd pour effacer deux lignes. ---> 1) Les roses sont rouges, ---> 2) La boue c'est drôle, ---> 3) Les violettes sont bleues, ---> 4) J'ai une voiture, ---> 5) Les horloges donnent l'heure, ---> 6) Le sucre est doux ---> 7) Tout comme vous. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 2.7 : L'ANNULATION ** Tapez u pour annuler les dernières commandes. ** ** Tapez U pour récupérer toute une ligne. ** 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous et placez-le sur la première erreur. 2. Tapez x pour effacer le premier caractère redondant. 3. Puis tapez u pour annuler la dernière commande exécutée. 4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande x . 5. Puis tapez un U majuscule pour remettre la ligne dans son état initial. 6. Puis tapez u deux-trois fois pour annuler le U et les commandes précédentes. 7. Maintenant tapez CTRL-R (maintenez la touche CTRL enfoncée pendant que vous appuyez R) deux-trois fois pour refaire les commandes (annuler les annulations). ---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'. 8. Ce sont des commandes très utiles. Maintenant, allez au résumé de la Leçon 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 2 1. Pour effacer du curseur jusqu'au mot suivant tapez : dw 2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez : d$ 3. Pour effacer toute une ligne tapez : dd 4. Pour répéter un déplacement ajoutez un quantificateur : 2w 5. Le format d'une commande de changement est : opérateur [nombre] déplacement Où : opérateur - est ce qu'il faut faire, comme d pour effacer. [nombre] - un quantificateur optionnel pour répéter le déplacement. déplacement - déplace le long du texte à opérer, tel que w (mot), $ (jusqu'à la fin de ligne), etc. 6. Pour se déplacer au début de ligne, utilisez un zéro : 0 5. Pour annuler des actions précédentes, tapez : u (u minuscule) Pour annuler tous les changements sur une ligne tapez : U (U majuscule) Pour annuler l'annulation tapez : CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 3.1 : LE COLLAGE ** Tapez p pour placer après le curseur ce qui vient d'être effacé. ** 1. Placez le curseur sur la première ligne ci-dessous marquée --->. 2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim. 3. Déplacez le curseur sur la ligne c) au-dessus où vous voulez remettre la ligne effacée. 4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur. 5. Répétez les étapes 2 à 4 pour mettre toutes les lignes dans le bon ordre. ---> d) Et vous, qu'apprenez-vous ? ---> b) Les violettes sont bleues, ---> c) L'intelligence s'apprend, ---> a) Les roses sont rouges, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 3.2 : LA COMMANDE DE REMPLACEMENT ** Tapez rx pour remplacer un caractère sous le curseur par x . ** 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. 2. Placez le curseur de manière à ce qu'il surplombe la première erreur. 3. Tapez r suivi du caractère qui doit corriger l'erreur. 4. Répétez les étapes 2 et 3 jusqu'à ce que la première ligne soit égale à la seconde. ---> Quand cette ligne a été sauvie, quelqu'un a lait des faunes de frappe ! ---> Quand cette ligne a été saisie, quelqu'un a fait des fautes de frappe ! 5. Maintenant, allez à la Leçon 3.3. NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par mémorisation. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 3.3 : L'OPÉRATEUR DE CHANGEMENT ** Pour changer jusqu'à la fin d'un mot, tapez ce .** 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. 2. Placez le curseur sur le u de luhko. 3. Tapez ce et corrigez le mot (dans notre cas, tapez 'igne'.) 4. Appuyez <Échap> et placez-vous sur le prochain caractère qui doit être changé. 5. Répétez les étapes 3 et 4 jusqu'à ce que la première phrase soit identique à la seconde. ---> Cette luhko contient quelques myqa qui ont ricne d'être chantufip. ---> Cette ligne contient quelques mots qui ont besoin d'être changés. Notez que ce efface le mot et vous place ensuite en mode Insertion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c ** L'opérateur de changement fonctionne avec les mêmes déplacements que l'effacement. ** 1. L'opérateur de changement fonctionne de la même manière que l'effacement. Le format est : c [nombre] déplacement 2. Les déplacements sont identiques : w (mot) et $ (fin de ligne). 3. Déplacez-vous sur la première ligne marquée ---> ci-dessous. 4. Placez le curseur sur la première erreur. 5. Tapez c$ et tapez le reste de la ligne afin qu'elle soit identique à la seconde ligne, puis tapez <Échap>. ---> La fin de cette ligne doit être rendue identique à la seconde. ---> La fin de cette ligne doit être corrigée avec la commande c$ . NOTE : Vous pouvez utiliser la touche Retour Arrière pour corriger les erreurs lorsque vous tapez. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 3 1. Pour remettre le texte qui a déjà été effacé, tapez p . Cela Place le texte effacé APRÈS le curseur (si une ligne complète a été effacée, elle sera placée sous la ligne du curseur). 2. Pour remplacer le caractère sous le curseur, tapez r suivi du caractère qui remplacera l'original. 3. L'opérateur de changement vous permet de changer depuis la position du curseur jusqu'où le déplacement vous amène. Par exemple, tapez ce pour changer du curseur jusqu'à la fin du mot, c$ pour changer jusqu'à la fin d'une ligne. 4. Le format pour le changement est : c [nombre] déplacement Passez maintenant à la leçon suivante. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 4.1 : POSITION DU CURSEUR ET ÉTAT DU FICHIER ** Tapez CTRL-G pour afficher votre position dans le fichier et son état. Tapez G pour vous rendre à une ligne donnée du fichier. ** NOTE : Lisez toute cette leçon avant d'effectuer l'une des étapes !! 1. Maintenez enfoncée la touche CTRL et appuyez sur g . On appelle cela CTRL-G. Une ligne d'état va apparaître en bas de l'écran avec le nom du fichier et le numéro de la ligne où vous êtes. Notez ce numéro, il servira lors de l'étape 3. NOTE : Vous pouvez peut-être voir le curseur en bas à droite de l'écran. Ceci arrive quand l'option 'ruler' est activée (voir :help 'ruler') 2. Tapez G pour vous déplacer à la fin du fichier. Tapez gg pour vous déplacer au début du fichier. 3. Tapez le numéro de la ligne où vous étiez suivi de G . Cela vous ramènera à la ligne où vous étiez au départ quand vous aviez appuyé CTRL-G. 4. Si vous vous sentez prêt à faire ceci, effectuez les étapes 1 à 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 4.2 : LA RECHERCHE ** Tapez / suivi d'un texte pour rechercher ce texte. ** 1. Tapez le caractère / en mode Normal. Notez que celui-ci et le curseur apparaissent en bas de l'écran, comme lorsque l'on utilise : . 2. Puis tapez 'errreuur' . C'est le mot que vous voulez rechercher. 3. Pour rechercher à nouveau le même texte, tapez simplement n . Pour rechercher le même texte dans la direction opposée, tapez N . 4. Pour rechercher une phrase dans la direction opposée, utilisez ? au lieu de / . ---> erreur ne s'écrit pas "errreuur" ; errreuur est une erreur. NOTE : Quand la recherche atteint la fin du fichier, elle reprend au début sauf si l'option 'wrapscan' est désactivée. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES ** Tapez % pour trouver des ), ] ou } correspondants. ** 1. Placez le curseur sur l'un des (, [ ou { de la ligne marquée ---> ci-dessous. 2. Puis tapez le caractère % . 3. Le curseur se déplacera sur la parenthèse ou crochet correspondant. 4. Tapez % pour replacer le curseur sur la parenthèse ou crochet correspondant. 5. Déplacez le curseur sur un autre (,),[,],{ ou } et regardez ce que fait % . ---> Voici ( une ligne de test contenant des (, des [ ] et des { } )). NOTE : Cette fonctionnalité est très utile lors du débogage d'un programme qui contient des parenthèses déséquilibrées ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 4.4 : LA COMMANDE DE SUBSTITUTION ** Tapez :s/ancien/nouveau/g pour remplacer 'ancien' par 'nouveau'. ** 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. 2. Tapez :s/lee/le . Notez que cette commande change seulement la première occurrence de "lee" dans la ligne. 3. Puis tapez :s/lee/le/g . L'ajout du drapeau g ordonne de faire une substitution globale sur la ligne, et change toutes les occurrences de "lee" sur la ligne. ---> lee meilleur moment pour regarder lees fleurs est pendant lee printemps. 4. Pour changer toutes les occurrences d'un texte, entre deux lignes, tapez :#,#s/ancien/nouveau/g où #,# sont les numéros de lignes de la plage où la substitution doit être faite. Tapez :%s/ancien/nouveau/g pour changer toutes les occurrences dans tout le fichier. Tapez :%s/ancien/nouveau/gc pour trouver toutes les occurrences dans tout le fichier avec une invite pour confirmer ou infirmer chaque substitution. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 4 1. CTRL-G affiche la position dans le fichier et l'état de celui-ci. G déplace à la fin du fichier. nombre G déplace au numéro de ligne. gg déplace à la première ligne. 2. Taper / suivi d'un texte recherche ce texte vers l'AVANT. Taper ? suivi d'un texte recherche ce texte vers l'ARRIÈRE. Après une recherche tapez n pour trouver l'occurrence suivante dans la même direction ou Maj-N pour rechercher dans la direction opposée. 3. Taper % lorsque le curseur est sur (, ), [, ], { ou } déplace celui-ci sur le caractère correspondant. 4. Pour remplacer le premier aa par bb sur une ligne tapez :s/aa/bb Pour remplacer tous les aa par bb sur une ligne tapez :s/aa/bb/g Pour remplacer du texte entre deux numéros de ligne tapez :#,#s/aa/bb/g Pour remplacer toutes les occurrences dans le fichier tapez :%s/aa/bb/g Pour demander une confirmation à chaque fois ajoutez 'c' :%s/aa/bb/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE ** Tapez :! suivi d'une commande externe pour exécuter cette commande. ** 1. Tapez le : familier pour mettre le curseur en bas de l'écran. Cela vous permet de saisir une commande. 2. Puis tapez un ! (point d'exclamation). Cela vous permet d'exécuter n'importe quelle commande valide pour votre interpréteur (shell). 3. Par exemple, tapez ls après le ! et appuyez . Ceci affichera la liste des fichiers du répertoire courant, comme si vous aviez tapé la commande à l'invite du shell. Utilisez :!dir si :!ls ne marche pas. NOTE : Il est possible d'exécuter n'importe quelle commande externe de cette manière, avec ou sans argument. NOTE : Toutes les commandes : doivent finir par la frappe de . À partir de maintenant, nous ne le mentionnerons plus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS ** Pour enregistrer les changements faits au texte, tapez :w FICHIER . ** 1. Tapez :!dir ou :!ls pour avoir la liste des fichiers dans le répertoire courant. Vous savez déjà qu'il faut appuyer après cela. 2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST. 3. Puis tapez :w TEST (où TEST est le nom que vous avez choisi). 4. Cela enregistre tout le fichier (Tutoriel Vim) sous le nom TEST. Pour le vérifier, tapez :!dir ou :!ls de nouveau pour revisualiser votre répertoire. NOTE : Si vous quittez Vim et le redémarrez de nouveau avec le fichier TEST, celui-ci sera une copie exacte de ce cours au moment où vous l'avez enregistré. 5. Maintenant, effacez le fichier en tapant (MS-DOS) : :!del TEST ou (Unix) : :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 5.3 : SÉLECTION DU TEXTE À ENREGISTRER ** Pour enregistrer une portion du fichier, tapez : v déplacement :w FICHIER ** 1. Déplacez le curseur sur cette ligne. 2. Appuyez v et déplacez le curseur vers la cinquième ligne plus bas. Remarquez que le texte est en surbrillance. 3. Appuyez : . En bas de l'écran :'<,'> va apparaître. 4. Tapez w TEST , où TEST est un nom de fichier qui n'existe pas. Vérifiez que vous voyez :'<,'>w TEST avant d'appuyer sur . 5. Vim va enregistrer les lignes sélectionnées dans le fichier TEST. Utilisez :!dir ou :!ls pour le voir. Ne l'effacez pas encore ! Nous allons l'utiliser dans la leçon suivante. NOTE : L'appui de v démarre la sélection Visuelle. Vous pouvez déplacer le curseur pour agrandir ou rétrécir la sélection. Puis vous pouvez utiliser un opérateur pour faire quelque chose sur le texte. Par exemple, d efface le texte. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS ** Pour insérer le contenu d'un fichier, tapez :r FICHIER ** 1. Placez le curseur juste au-dessus de cette ligne. NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3. Puis déplacez-vous vers le bas pour voir cette leçon à nouveau. 2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST où TEST est le nom de votre fichier. Le fichier que vous récupérez est placé au-dessous de la ligne du curseur. 4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle contenue dans le fichier. NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple, :r !ls lit la sortie de la commande ls et la place sous la ligne du curseur. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 5 1. :!commande exécute une commande externe. Quelques exemples pratiques : (MS-DOS) (Unix) :!dir :!ls affiche le contenu du répertoire courant. :!del FICHIER :!rm FICHIER efface FICHIER. 2. :w FICHIER enregistre le fichier Vim courant sur le disque avec pour nom FICHIER. 3. v déplacement :w FICHIER sauvegarde les lignes de la sélection Visuelle dans le fichier FICHIER. 4. :r FICHIER récupère le contenu du fichier FICHIER et l'insère sous la position du curseur. 5. :r !dir lit la sortie de la commande dir et l'insère sous la position du curseur. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 6.1 : LA COMMANDE D'OUVERTURE ** Tapez o pour ouvrir une ligne sous le curseur et y aller en Insertion. ** 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. 2. Tapez la lettre o minuscule pour ouvrir une ligne SOUS le curseur et vous y placer en mode Insertion. 3. Puis tapez du texte et appuyez <Échap> pour sortir du mode Insertion. ---> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion. 4. Pour ouvrir une ligne au-DESSUS du curseur, tapez simplement un O majuscule, plutôt qu'un o minuscule. Faites un essai sur la ligne ci-dessous. ---> Ouvrez une ligne ci-dessus en tapant O lorsque le curseur est ici. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 6.2 : LA COMMANDE D'AJOUT ** Tapez a pour insérer du texte APRÈS le curseur. ** 1. Placez le curseur au début de la ligne marquée ---> ci-dessous. 2. Appuyez e jusqu'à ce que le curseur soit sur la fin de li . 3. Appuyez a (minuscule) pour ajouter du texte APRÈS le curseur. 4. Complétez le mot comme dans la ligne dessous. Appuyez <Échap> pour sortir du mode Insertion. 5. Utilisez e pour vous déplacer vers le mot incomplet suivant et répétez les étapes 3 et 4. ---> Cette li vous perm de pratiq l'ajout de t dans une ligne. ---> Cette ligne vous permet de pratiquer l'ajout de texte dans une ligne. NOTE : a, i, A vont tous dans le même mode Insertion, la seule différence est l'endroit où les caractères sont insérés. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 6.3 : UNE AUTRE MANIÈRE DE REMPLACER ** Tapez un R majuscule pour remplacer plus d'un caractère. ** 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. Déplacez le curseur sur le début du premier xxx . 2. Appuyez maintenant R et tapez le nombre dessous dans la deuxième ligne, de manière à remplacer le xxx . 3. Appuyez <Échap> pour quitter le mode Remplacement. Notez que le reste de la ligne demeure inchangé. 4. Répétez les étapes pour remplacer les xxx restants. ---> L'ajout de 123 à xxx donne xxx. ---> L'ajout de 123 à 456 donne 579. NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les caractères tapés effacent un caractère existant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 6.4 : COPIER ET COLLER DU TEXTE ** Utilisez l'opérateur y pour copier du texte et p pour le coller ** 1. Allez à la ligne marquée ---> ci-dessous et placez le curseur après "a)". 2. Démarrez le mode Visuel avec v et déplacez le curseur juste devant "premier". 3. Tapez y pour copier le texte en surbrillance. 4. Déplacez le curseur à la fin de la ligne suivante : j$ 5. Tapez p pour coller le texte. Puis tapez : un second <Échap> . 6. Utilisez le mode Visuel pour sélectionner "élément", copiez-le avec y , déplacez-vous à la fin de la ligne suivante avec j$ et collez le texte à cet endroit avec p . ---> a) ceci est le premier élément. b) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 6.5 : RÉGLAGE DES OPTIONS ** Réglons une option afin que la recherche et la substitution ignorent la casse des caractères. ** 1. Recherchez 'ignore' en tapant : /ignore Répétez ceci plusieurs fois en utilisant la touche n . 2. Activez l'option 'ic' (ignorer casse) en tapant :set ic . 3. Puis cherchez 'ignore' de nouveau en utilisant n . Remarquez que Ignore et IGNORE sont maintenant aussi trouvés. 4. Activez les options 'hlsearch' et 'incsearch' avec :set hls is . 5. Puis recommencez une recherche, et faites bien attention à ce qui se produit : /ignore 6. Pour désactiver 'ignorer casse', entrez : :set noic NOTE : Pour enlever la surbrillance des résultats, entrez : :nohlsearch NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez \c dans la phrase : /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 6 1. Taper o ouvre une ligne SOUS le curseur et démarre le mode Insertion. Taper O ouvre une ligne au-DESSUS du curseur. 2. Taper a pour insérer du texte APRÈS le curseur. Taper A pour insérer du texte après la fin de ligne. 3. Taper e déplace à la fin du mot. 4. Taper y copie du texte, p le colle. 5. Taper R majuscule active le mode Remplacement jusqu'à ce qu' <Échap> soit appuyé. 6. Taper ":set xxx" active l'option "xxx". Quelques options sont : 'ic' 'ingnorecase' pour ignorer la casse lors des recherches. 'is' 'incsearch' pour montrer les appariements partiels. 'hls' 'hlsearch' pour mettre en surbrillance les appariements. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leçon 7.1 : OBTENIR DE L'AIDE ** Utiliser le système d'aide en ligne. ** Vim a un système complet d'aide en ligne. Pour y accéder, essayez l'une de ces trois méthodes : - appuyez la touche (si vous en avez une) - appuyez la touche (si vous en avez une) - tapez :help Lisez le texte dans la fenêtre d'aide pour savoir comment fonctionne l'aide. Tapez CTRL-W CTRL-W pour sauter d'une fenêtre à l'autre. Tapez :q pour fermer la fenêtre d'aide. Vous pouvez accéder à l'aide sur à peu près n'importe quel sujet en donnant des arguments à la commande :help . Essayez par exemple (n'oubliez pas d'appuyer sur ) : :help w :help c_CTRL-D :help c_ ** 1. Mettez Vim soit en mode non compatible : set nocp 2. Regardez quels fichiers existent dans le répertoire : !ls ou !dir 3. Tapez le début d'une commande : :e 4. Appuyez CTRL-D et Vim affichera une liste de commandes qui commencent par "e". 5. Appuyez et Vim complétera le nom de la commande : ":edit" 6. Ajoutez maintenant un espace et le début d'un fichier existant : :edit FIC 7 Appuyez . Vim va compléter le nom (s'il est unique). NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez d'appuyer CTRL-D et . C'est utile en particulier pour :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RÉSUMÉ DE LA LEÇON 7 1. Tapez :help ou appuyez ou pour ouvrir la fenêtre d'aide. 2. Tapez :help cmd pour trouver l'aide sur cmd . 3. Tapez CTRL-W CTRL-W pour sauter à une autre fenêtre. 4. Tapez :q pour fermer la fenêtre d'aide. 5. Créez un script de démarrage vimrc pour conserver vos réglages préférés. 6. Quand vous tapez une commande : appuyez CTRL-D pour voir les complètements possibles. Appuyez pour utiliser un complètement. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en anglais : :help user-manual Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en français. Il parle plus de Vi que de Vim, mais pourra vous être utile. L'éditeur Vi - Collection Précis et concis - par Arnold Robbins Éditeur : O'Reilly France ISBN : 2-84177-102-4 Deux livres en anglais sont également mentionnés dans la version originale de ce tutoriel, dont un qui traite spécifiquement de Vim. Merci de vous y référer si vous êtes intéressés. Ce tutoriel a été écrit par Michael C. Pierce et Robert K. Ware de l'École des Mines du Colorado et reprend des idées fournies par Charles Smith, Université d'État du Colorado. E-mail : bware@mines.colorado.edu. Modifié pour Vim par Bram Moolenaar. Traduit en français par Adrien Beau, en avril 2001. Dernières mises à jour par Dominique Pellé. E-mail : dominique.pelle@gmail.com Last Change : 2017 Jan 16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!ݻۃۃvim80/tutor/tutor.ko.utf-8nu[=============================================================================== = 빔 길잡이 (VIM Tutor) 에 오신 것을 환영합니다 - Version 1.5 = =============================================================================== 빔(Vim)은 이 길잡이에서 다 설명할 수 없을 만큼 많은 명령을 가진 매우 강력한 편집기입니다. 이 길잡이는 빔을 쉽게 전천후 편집기로 사용할 수 있도록 충분한 명령에 대해 설명하고 있습니다. 이 길잡이를 떼는 데에는 실습하는 데에 얼마나 시간을 쓰는 가에 따라서 25-30 분 정도가 걸립니다. 이 연습에 포함된 명령은 내용을 고칩니다. 이 파일의 복사본을 만들어서 연습하세요. (vimtutor 를 통해 시작했다면, 이미 복사본을 사용하는 중입니다.) 중요한 것은, 이 길잡이가 직접 써보면서 배우도록 고려되어 있다는 것입니다. 명령을 제대로 익히려면, 직접 실행해보는 것이 필요합니다. 내용을 읽는 것만으로는, 명령을 잊어버리게 될 것입니다. 자 이제, Caps Lock(Shift-Lock) 키가 눌려있지 않은지 확인해보시고, j 키를 충분히 눌러서 Lesson 1.1이 화면에 가득 차도록 움직여봅시다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.1: 커서 움직이기 ** 커서를 움직이려면, 표시된 대로 h,j,k,l 키를 누르십시오. ** ^ k 힌트: h 키는 왼쪽에 있으며, 왼쪽으로 움직입니다. < h l > l 키는 오른쪽에 있으며, 오른쪽으로 j 움직입니다. v j 키는 아래방향 화살표처럼 생겼습니다. 1. 익숙해질 때까지 커서를 스크린 상에서 움직여 보십시오. 2. 아래 방향키 (j)를 반복입력이 될 때까지 누르고 계십시오. ---> 이제 다음 lesson으로 가는 방법을 알게 되었습니다. 3. 아래 방향키를 이용하여, Lesson 1.2 로 가십시오. 참고: 원하지 않는 무언가가 입력이 되었다면, 를 눌러서, 명령 모드로 돌아가십시오. 그 후에 원하는 명령을 다시 입력하십시오. 참고: 커서키 또한 작동할 것입니다. 하지만 hjkl에 익숙해지면, 커서키보다 훨씬 빠르게 이동할 수 있을 것입니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.2: 빔을 시작하고 끝내기 !! 주의: 아래 있는 단계를 실행하기 전에, 이 lesson 전체를 읽으십시오!! 1. 키를 눌러서 확실하게 명령 모드로 빠져 나옵니다. 2. 다음과 같이 입력합니다: :q! ---> 이렇게 하면, 바뀐 내용을 *저장하지 않고* 편집기를 빠져나갑니다. 저장한 후 빠져나가려면 다음과 같이 입력합니다: :wq 3. 쉘 프롬프트가 보인다면, 다시 길잡이로 돌아오기 위해 다음과 같이 입력합니다. vimtutor 또는 다음과 같을 수도 있습니다. vim tutor.ko ---> 'vim' 은 빔 편집기로 들어가는 것을 뜻하며, 'tutor.ko'는 편집하려는 파일을 뜻합니다. 4. 위에서 이야기한 단계를 기억하였으며, 확신이 서면, 1에서 3까지를 수행하여 편집기를 나갔다가 다시 들어와보십시오. 그 후 커서를 아래로 움직여 Lesson 1.3 으로 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.3: 텍스트 편집 - 지우기 ** 명령 모드에서 x 를 누르면 커서가 위치한 곳의 글자를 지울 수 있습니다. ** 1. ----> 로 표시된 곳으로 커서를 옮겨보십시오. 2. 오타를 수정하기 위해, 커서를 지울 글자 위로 움직여 보십시오. 3. x 키를 눌러서 지워야할 글자를 지우십시오. 4. 2에서 4까지를 반복하여 문장이 올바르게 되도록 하여 보십시오. ---> The ccow jumpedd ovverr thhe mooon. 5. 문장이 정확해졌다면, Lesson 1.4로 가십시오. 주의: 이 길잡이를 보면서 외우려고 하지말고, 직접 사용해보면서 익히길 바랍니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.4: 텍스트 편집 - 삽입 (INSERTION) ** 명령 모드에서 i 를 누르면 텍스트를 입력할 수 있습니다. ** 1. 커서를 첫번째 ---> 로 표시된 줄로 움직입니다. 2. 첫번째 줄을 두번째 줄과 똑같이 만들것입니다. 텍스트가 들어가야할 곳 다음부터 첫번째 글자 위에 커서를 옮겨 놓습니다. 3. i 키를 누른 후, 필요한 내용을 입력합니다. 4. 수정한 후에는 를 눌러서 명령 모드로 돌아갑니다. 문장을 올바르게 만들기 위해 2에서 4의 과정을 반복합니다. ---> There is text misng this . ---> There is some text missing from this line. 5. 텍스트를 삽입하는 데에 익숙해졌다면, 요약을 봐주십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 1 요약 1. 커서를 움직일 때에는 화살표 키나 hjkl 키를 이용합니다. h (왼쪽) j (아래) k (위) l (오른쪽) 2. 쉘 프롬프트에서 빔을 시작하려면 vim FILENAME 3. 수정한 내용을 무시한 채로 빔에서 빠져나가려면 :q! 저장한 후 빔에서 빠져나가려면 :wq 4. 명령 모드에서 커서가 위치한 곳의 글자를 지우려면 x 를 입력합니다. 5. 명령 모드에서 커서가 위치한 곳에 텍스트를 삽입하려면 i 를 누른 후 텍스트를 입력하고 를 누릅니다. 참고: 는 명령 모드로 돌아가는 데 쓰며, 원치 않는 명령이나 완전히 입력되지 않은 명령을 취소하는 데에도 씁니다. 그럼 Lesson 2를 시작합시다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.1: 삭제(DELETION) 명령 ** 한 단어를 끝까지 지우려면 dw 라고 치면 됩니다. ** 1. 키를 눌러서 확실하게 명령 모드로 빠져 나옵니다. 2. 아래에 ---> 로 표시된 줄 까지 커서를 옮깁니다. 3. 지워야할 단어의 처음으로 커서를 옮깁니다. 4. dw 라고 쳐서 그 단어를 지웁니다. 주의: 위에서 말한대로 하면 화면의 마지막 줄에 dw 라는 글자가 표시됩니다. 잘못 쳤다면, 를 눌러서 다시 시작하십시오. ---> There are a some words fun that don't belong paper in this sentence. 5. 3, 4번 과정을 다시 하여 문장을 정확하게 만든 뒤 Lesson 2.2로 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.2: 다른 삭제 명령 ** d$ 라고 치면 그 줄 끝까지 지워집니다. ** 1. 키를 눌러서 확실하게 명령 모드로 빠져 나옵니다. 2. 아래에 ---> 로 표시된 줄 까지 커서를 옮깁니다. 3. 올바른 줄의 끝으로 커서를 옮깁니다. (첫번째로 나오는 . 다음입니다.) 4. d$ 라고 쳐서 줄 끝까지 지웁니다. ---> Somebody typed the end of this line twice. end of this line twice. 5. 어떤 일이 일어났는지 이해하기 위해 Lesson 2.3 으로 가십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.3: 명령과 적용 대상에 대해 삭제 명령 d의 형식은 다음과 같습니다. [횟수] d 대상 또는 d [횟수] 대상 여기서 횟수 - 명령을 몇 번 수행할 지 (옵션, 기본값=1). d - 지우는 명령 대상 - 아래에 제시된 대상에 대해 명령을 수행 적용 가능한 대상의 종류: w - 커서에서 그 단어의 끝까지 (공백 포함.) e - 커서에서 그 단어의 끝까지 (공백을 포함하지 않음.) $ - 커서에서 그 줄의 끝까지 참고: 호기심이 있다면, 명령 모드에서 명령 없이 대상을 입력해보십시오. 위에서 이야기한 대상의 목록에 따라 커서가 움직이게 됩니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.4: '명령-대상' 에 대한 예외 ** dd 라고 치면 줄 전체를 지웁니다. ** 줄 전체를 지우는 일이 잦기 때문에, Vi를 디자인 한 사람들은, 간단히 d를 두번 연달아 치면 한 줄을 지울 수 있도록 하였습니다. 1. 커서를 아래 나온 단락의 두번째 줄로 가져가십시오. 2. dd 를 입력하여 그 줄을 지우십시오. 3. 그런 다음 네번째 줄로 가십시오. 4. 2dd 라고 입력하여 두줄을 지웁니다. ( 횟수-명령-대상을 기억하세요. ) 1) Roses are red, 2) Mud is fun, 3) Violets are blue, 4) I have a car, 5) Clocks tell time, 6) Sugar is sweet 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.5: 취소(UNDO) 명령 ** u 를 누르면 마지막 명령이 취소되며, U 는 줄 전체를 수정합니다. ** 1. 커서를 ---> 로 표시된 줄로 이동한 후 첫번째 잘못된 부분 위로 옮깁니다. 2. x 를 입력하여 첫번째 잘못된 글자를 지웁니다. 3. 그럼 이제 u 를 입력하여 마지막으로 수행된 명령을 취소합니다. 4. 이번에는 x 명령을 이용하여 그 줄의 모든 에러를 수정해봅시다. 5. 대문자 U 를 눌러서 그 줄을 원래 상태로 돌려놓아 보십시오. 6. 이번에는 u 를 몇 번 눌러서 U 와 이전 명령을 취소해봅시다. 7. CTRL-R (CTRL 키를 누른 상태에서 R을 누르는 것) 을 몇 번 눌러서 명령을 다시 실행해봅시다. (취소한 것을 취소함.) ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. 이 명령은 매우 유용합니다. 그럼 Lesson 2 요약으로 넘어가도록 합시다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 2 요약 1. 커서가 위치한 곳부터 단어의 끝까지 지우려면: dw 2. 커서가 위치한 곳부터 줄 끝까지 지우려면: d$ 3. 줄 전체를 지우려면: dd 4. 명령 모드에서 내리는 명령의 형식은 다음과 같습니다: [횟수] 명령 대상 또는 명령 [횟수] 대상 여기서: 횟수 - 그 명령을 몇 번 반복할 것인가 명령 - 어떤 명령을 내릴 것인가 ( 예를 들어, 삭제인 경우는 d ) 대상 - 명령이 동작할 대상, 예를 들어 w (단어), $ (줄의 끝) 등. 5. 이전 행동을 취소하려면: u (소문자 u) 한 줄에서 수정한 것을 모두 취소하려면: U (대문자 U) 취소한 것을 다시 실행하려면: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.1: 붙이기(PUT) 명령 ** p 를 입력하여 마지막으로 지운 내용을 커서 뒤에 붙입니다. ** 1. 아래에 있는 문단의 첫 줄로 커서를 움직이십시오. 2. dd 를 입력하여 그 줄을 지워서 빔의 버퍼에 저장합니다. 3. 아까 지운 줄이 가야할 위치의 *윗줄로* 커서를 옮깁니다. 4. 명령 모드에서, p 를 입력하여 그 줄을 제대로 된 자리로 옮깁니다. 5. 2에서 4를 반복하여 모든 줄의 순서를 바로 잡으십시오. d) Can you learn too? b) Violets are blue, c) Intelligence is learned, a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.2: 치환(REPLACE) 명령 ** 커서 아래의 글자 하나를 바꾸려면, r 을 누른 후 바꿀 글자를 입력합니다. ** 1. 커서를 ---> 로 표시된 첫 줄로 옮깁니다. 2. 커서를 잘못된 첫 부분으로 옮깁니다. 3. r 을 누른 후, 잘못된 부분을 고쳐 쓸 글자를 입력합니다. 4. 2에서 3의 과정을 반복하여, 첫 줄의 오류를 수정하십시오. ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. Lesson 3.2 로 이동합시다. 주의: 외우지 말고, 직접 해보면서 익혀야 한다는 것을 잊지 마십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.3: 변환(CHANGE) 명령 ** 한 단어의 일부나 전체를 바꾸려면, cw 를 치십시오. ** 1. 커서를 ---> 로 표시된 첫줄로 옮깁니다. 2. 커서를 lubw 에서 u 위에 올려놓습니다. 3. cw 라고 명령한 후 단어를 정확하게 수정합니다. (이 경우, 'ine' 를 칩니다.) 4. 를 누른 후 다음 에러로 갑니다 (수정되어야할 첫 글자로 갑니다.) 5. 3에서 4의 과정을 반복하여 첫번째 문장을 두번째 문장과 같도록 만듭니다. ---> This lubw has a few wptfd that mrrf changing usf the change command. ---> This line has a few words that need changing using the change command. cw 는 단어를 치환하는 것 뿐만 아니라, 내용을 삽입할 수 있도록 한다는 것에 주의합시다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.4: c 를 이용한 다른 변환 명령 ** 변환 명령은 삭제할 때 이용한 대상에 대해 적용할 수 있습니다. ** 1. 변환 명령은 삭제와 동일한 방식으로 동작합니다. 형식은 다음과 같습니다: [횟수] c 대상 또는 c [횟수] 대상 2. 적용 가능한 대상 역시 같습니다. w (단어), $ (줄의 끝) 등이 있습니다. 3. ---> 로 표시된 첫줄로 이동합니다. 4. 첫 에러 위로 커서를 옮깁니다. 5. c$ 를 입력하여, 그 줄의 나머지가 두번째 줄처럼 되도록 수정한 후 를 누르십시오. ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 3 요약 1. 이미 지운 내용을 되돌리려면, p 를 누르십시오. 이 명령은 커서 *다음에* 지워진 내용을 붙입니다(PUT). (한 줄을 지운 경우에는 커서 다음 줄에 지워진 내용이 붙습니다.) 2. 커서 아래의 글자를 치환하려면(REPLACE), r 을 누른 후 원래 글자 대신 바꾸어 넣을 글자를 입력합니다. 3. 변환 명령(CHANGE)은 커서에서 부터 지정한 대상의 끝까지 바꿀 수 있는 명령입니다. 예를 들어, 커서 위치에서 단어의 끝까지 바꾸려면, cw 를 입력하면 되며, c$ 는 줄 끝까지 바꾸는 데 쓰입니다. 4. 변환 명령의 형식은 다음과 같습니다: [횟수] c 대상 또는 c [횟수] 대상 계속해서 다음 Lesson 을 진행합시다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.1: 위치와 파일의 상태 ** CTRL-g 를 누르면 파일 내에서의 현재 위치와 파일의 상태를 볼 수 있습니다. SHIFT-G 를 누르면 파일 내의 줄로 이동합니다. ** 주의: 아래의 단계를 따라하기 전에, 이 Lesson 전체를 먼저 읽으십시오. 1. CTRL 키를 누른 상태에서 g 를 누릅니다. 파일 이름과 현재 위치한 줄이 표시된 상태줄이 화면 아래에 표시될 것입니다. 3번째 단계를 위해 그 줄 번호를 기억하고 계십시오. 2. SHIFT-G 를 누르면 파일의 마지막으로 이동합니다. 3. 아까 기억했던 줄 번호를 입력한 후 SHIFT-G 를 누르십시오. 이렇게 하면 처음에 CTRL-g 를 눌렀던 장소로 되돌아가게 될 것입니다. (번호를 입력할 때, 이것은 화면에 표시되지 않습니다.) 4. 자신이 생겼다면, 1에서 3까지를 실행해보십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.2: 찾기 명령 ** / 를 누른 후 검색할 문구를 입력하십시오. ** 1. 명령 모드에서 / 를 입력하십시오. : 명령에서와 마찬가지로, 화면 아래에 / 와 커서가 표시될 것입니다. 2. 'errroor' 라고 친 후 를 치십시오. 이 단어를 찾으려고 합니다. 3. 같은 문구를 다시 찾으려면, 간단히 n 을 입력하십시오. 같은 문구를 반대 방향으로 찾으려면, Shift-N 을 입력하십시오. 4. 문구를 역방향으로 찾으려면, / 대신 ? 를 이용하면 됩니다. ---> "errroor" is not the way to spell error; errroor is an error. 참고: 찾는 중에 파일의 끝에 다다르게 되면, 파일의 처음부터 다시 찾게 됩니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.3: 괄호의 짝 찾기 ** % 를 눌러서 ), ], } 의 짝을 찾습니다. ** 1. 커서를 ---> 로 표시된 줄의 (, [, { 중 하나에 가져다 놓습니다. 2. % 를 입력해 봅시다. 3. 커서가 짝이 맞는 괄호로 이동할 것입니다. 4. % 를 입력하여, 이전 괄호로 되돌아 옵시다. ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) 참고: 짝이 맞지 않는 괄호가 있는 프로그램을 디버깅할 때에 매우 유용합니다! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.4: 에러를 수정하는 방법 ** :s/old/new/g 하면 'old' 를 'new' 로 치환(SUBTITUTE)합니다. ** 1. 커서를 ---> 로 표시된 줄에 가져다 놓습니다. 2. :s/thee/the 를 입력한 후 를 칩니다. 이 명령은 그 줄에서 처음으로 발견된 것만 바꾼다는 것에 주의하십시오. 3. 이번에는 :s/thee/the/g 를 입력합니다. 이는 그 줄 전체(globally)를 치환한다는 것을 의미합니다. ---> thee best time to see thee flowers is in thee spring. 4. 두 줄 사이의 모든 문자열에 대해 치환하려면 다음과 같이 합니다, :#,#s/old/new/g #,# 는 두 줄의 줄번호를 뜻합니다. :%s/old/new/g 파일 전체에서 발견된 모든 것을 치환하는 경우입니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 4 요약 1. CTRL-g 는 파일의 상태와 파일 내에서의 현재 위치를 표시합니다. SHIFT-G 는 파일의 끝으로 이동합니다. 줄번호를 입력한 후 SHIFT-G를 입력하면, 그 줄로 이동합니다. 2. / 를 입력한 후 문구를 입력하면 그 문구를 아랫방향으로 찾습니다. ? 를 입력한 후 문구를 입력하면 윗방향으로 찾습니다. 검색 후, n 을 입력하면 같은 방향으로 다음 문구를 찾으며, Shift-N 을 입력하면 반대 방향으로 찾습니다. 3. 커서가 (,),[,],{,} 위에 있을 때에 % 를 입력하면 상응하는 짝을 찾아갑니다. 4. 어떤 줄에 처음 등장하는 old를 new로 바꾸려면 :s/old/new 한 줄에 등장하는 모든 old를 new로 바꾸려면 :s/old/new/g 두 줄 #,# 사이에서 치환을 하려면 :#,#s/old/new/g 파일 내의 모든 문구를 치환하려면 :%s/old/new/g 바꿀 때마다 확인을 거치려면 'c'를 붙여서 :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.1: 외부 명령 실행하는 방법 ** :! 을 입력한 후 실행하려는 명령을 입력하십시오. ** 1. 친숙한 명령인 : 를 입력하면 커서가 화면 아래로 이동합니다. 명령을 입력할 수 있게 됩니다. 2. 이제 ! (느낌표) 를 입력하십시오. 이렇게 하면 외부 쉘 명령을 실행할 수 있습니다. 3. 시험삼아 ! 다음에 ls 를 입력한 후 를 쳐보십시오. 쉘 프롬프트 에서처럼 디렉토리의 목록이 출력될 것입니다. ls 가 동작하지 않는다면 :!dir 을 시도해 보십시오. 참고: 어떤 외부 명령도 이 방법으로 실행할 수 있습니다. 참고: 모든 : 명령은 를 쳐야 마무리 됩니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.2: 보다 자세한 파일 저장 ** 수정된 내용을 파일로 저장하려면, :w FILENAME 하십시오. ** 1. :!dir 또는 :!ls 를 입력하여 디렉토리의 리스트를 얻어옵니다. 위의 명령 후 를 쳐야한다는 것은 이미 알고 있을 것입니다. 2. TEST 처럼 존재하지 않는 파일 이름을 하나 고르십시오. 3. 이제 :w TEST 라고 입력하십시오. (TEST는 당신이 선택한 파일 이름입니다.) 4. 이렇게 하면 빔 길잡이 파일 전체를 TEST라는 이름으로 저장합니다. 확인하려면, :!dir 을 다시 입력하여, 디렉토리를 살펴보십시오. 참고: 빔을 종료한 후, 빔을 다시 실행하여 TEST라는 파일을 열면, 그 파일은 저장했을 때와 완벽히 같은 복사본일 것입니다. 5. 이제 그 파일을 지웁시다. (MS-DOS에서): !del TEST (Unix에서): !rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.3: 선택적으로 저장하는 명령 ** 파일의 일부를 저장하려면, :#,# w FILENAME 하십시오. ** 1. 다시 한번, :!dir 이나 :!ls 를 입력하여 디렉토리의 목록을 받아온 후 TEST 같은 적합한 이름을 선택합니다. 2. 커서를 이 페이지의 처음으로 옮긴 후, Ctrl-g 를 입력하여 그 줄의 줄번호를 알아냅니다. 이 번호를 기억하십시오! 3. 이제 이 페이지의 마지막으로 가서 Ctrl-g 를 다시 입력하십시오. 이 줄의 줄번호 또한 기억하십시오! 4. 어떤 섹션만 파일로 저장하려면, :#,# w TEST 를 입력하면 됩니다. 이 때 #,# 는 아까 기억했던 시작과 끝 줄번호 입니다. TEST는 파일 이름입니다. 5. :!dir 을 이용하여 파일이 만들어졌는지 확인하십시오. 지우지는 마십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.4: 파일 읽어들이기, 합치기 ** 어떤 파일의 내용을 삽입하려면, :r FILENAME 하십시오 ** 1. :!dir 을 입력하여 아까 만든 TEST 파일이 그대로 있는지 확인하십시오. 2. 커서를 이 페이지의 처음으로 움직이십시오. 주의: 3번째 단계를 실행하면, Lesson 5.3 을 보게 될 것입니다. 그렇게 되면 이 lesson으로 다시 내려오십시오. 3. 이제 TEST 파일을 읽어들입시다. :r TEST 명령을 사용하십시오. TEST 는 파일의 이름입니다. 참고: 읽어들인 파일은 커서가 위치한 지점에서부터 놓이게 됩니다. 4. 파일이 읽어들여진 것을 확인하기 위해, 뒤로 이동해서 기존 버전과 파일에서 읽어들인 버전, 이렇게 Lesson 5.3 이 두번 반복되었음을 확인하십시오. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 5 요약 1. :!command 를 이용하여 외부 명령을 실행합니다. 유용한 예: (MS-DOS) (Unix) :!dir :!ls - 디렉토리의 목록을 보여준다. :!del FILENAME :!rm FILENAME - FILENAME이라는 파일을 지운다. 2. :w FILENAME 하면 현재 빔에서 사용하는 파일을 FILENAME이라는 이름으로 디스크에 저장합니다. 3. :#,#w FILENAME 하면 #부터 #까지의 줄을 FILENAME이라는 파일로 저장합니다. 4. :r FILENAME 은 디스크에서 FILENAME이라는 파일을 불러들여서 커서 위치 뒤에 현재 파일을 집어넣습니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.1: 새 줄 열기(OPEN) 명령 ** o 를 누르면 커서 아래에 줄을 만들고 편집 모드가 됩니다. ** 1. 아래에 ---> 로 표시된 줄로 커서를 옮기십시오. 2. o (소문자)를 쳐서 커서 *아래에* 줄을 하나 여십시오. 편집 모드가 됩니다. Insert mode. 3. ---> 로 표시된 줄을 복사한 후 를 눌러서 편집 모드에서 나오십시오. ---> After typing o the cursor is placed on the open line in Insert mode. 4. 커서 *위에* 줄을 하나 만드려면, 소문자 o 대신 대문자 O 를 치면 됩니다. 아래 있는 줄에 대해 이 명령을 내려보십시오. Open up a line above this by typing Shift-O while the cursor is on this line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.2: 추가(APPEND) 명령 ** a 를 누르면 커서 *다음에* 글을 입력할 수 있습니다. ** 1. 커서를 ---> 로 표시된 첫번째 줄의 끝으로 옮깁니다. 명령 모드에서 $ 를 이용하십시오. 2. 소문자 a 를 커서 아래 글자 *다음*에 글을 추가할 수 있습니다. (대문자 A는 그 줄의 끝에 추가합니다.) 참고: 그렇게 하시면 고작 줄의 끝에 추가를 하기 위해 i를 누르고, 커서 아래에 있던 글자를 반복하고, 글을 끼워넣고, 를 눌러 명령 모드로 돌아와서, 커서를 오른쪽으로 옮기고 마지막으로 x까지 눌러야 하는 번거로움을 피하실 수 있습니다. 3. 이제 첫 줄을 완성하십시오. 추가 명령은 텍스트가 입력되는 위치 외에는 편집 모드와 완전히 같다는 것을 유념하십시오. ---> This line will allow you to practice ---> This line will allow you to practice appending text to the end of a line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.3: 치환(REPLACE) 의 다른 버전 ** 대문자 R 을 입력하면 하나 이상의 글자를 바꿀 수 있습니다. ** 1. 커서를 ---> 로 표시된 첫번째 줄로 옮기십시오. 2. 커서를 ---> 로 표시된 두번째 줄과 다른 첫번째 단어 위로 옮기십시오. ('last' 입니다.) 3. R 을 입력한 후 첫번째 줄의 예전 텍스트 위에 새로운 글을 입력하여 나머지 내용이 두번째 줄과 같아지도록 바꿉시다. ---> To make the first line the same as the last on this page use the keys. ---> To make the first line the same as the second, type R and the new text. 4. 를 눌러서 나가면, 바뀌지 않은 텍스트는 그대로 남게 됩니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.4: 옵션 설정(SET) ** 찾기나 바꾸기에서 대소문자 구분을 없애기 위해 옵션을 설정합니다 ** 1. 다음을 입력하여 'ignore' 를 찾으십시오: /ignore n 키를 이용하여 여러번 반복하십시오. 2. 'ic' (대소문자 구별 안함, Ignore case) 옵션을 설정하십시오: :set ic 3. n 키를 눌러서 'ignore' 를 다시 찾아보십시오. n 키를 계속 눌러서 여러번 찾으십시오. 4. 'hlsearch' 와 'incsearch' 옵션을 설정합시다. :set hls is 5. 찾기 명령을 다시 입력하여, 어떤 일이 일어나는지 확인해 보십시오: /ignore 6. 찾은 내용이 강조(HIGHLIGHT)된 것을 없애려면, 다음과 같이 입력합니다: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 6 요약 1. o 를 입력하면 커서 *아래에* 한 줄이 열리며, 커서는 편집 모드로 열린 줄 위에 위치하게 됩니다. 대문자 O 를 입력하면 커서가 있는 줄의 *위로* 새 줄을 열게 됩니다. 2. a 를 입력하면 커서 *다음에* 글을 입력할 수 있습니다. 대문자 A 를 입력하면 자동으로 그 줄의 끝에 글자를 추가하게 됩니다. 3. 대문자 R 을 입력하면 를 눌러서 나가기 전까지 바꾸기 모드가 됩니다. 4. ":set xxx" 를 하면 "xxx" 옵션이 설정됩니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LESSON 7: 온라인 도움말 명령 ** 온라인 도움말 시스템 사용하기 ** 빔은 폭 넓은 온라인 도움말 시스템을 제공합니다. 도움말을 보려면, 다음 세가지 중 하나를 시도해보십시오: - 키를 누른다. (키가 있는 경우) - 키를 누른다. (키가 있는 경우) - :help 라고 입력한다. 도움말 창을 닫으려면 :q 라고 입력하십시오. ":help" 라는 명령에 인자를 주면 어떤 주제에 관한 도움말을 찾을 수 있습니다. 다음 명령을 내려 보십시오. ( 키를 누르는 것을 잊지 마십시오.) :help w :help c_ l キーは右方向に移動します。 j j キーは下矢印キーのようなキーです。 v 1. 移動に慣れるまで、スクリーンでカーソル移動させましょう。 2. 下へのキー(j)を押しつづけると、連続して移動できます。 これで次のレッスンに移動する方法がわかりましたね。 3. 下へのキーを使って、レッスン1.2 に移動しましょう。 NOTE: 何をタイプしているか判らなくなったら、を押してノーマルモードにし ます。それから入力しようとしていたコマンドを再入力しましょう。 NOTE: カーソルキーでも移動できます。しかし hjkl に一度慣れてしまえば、はるか に速く移動することができるでしょう。いやマジで! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 1.2: VIM の起動と終了 !! NOTE: 以下のあらゆるステップを行う前に、このレッスンを読みましょう!! 1. キーを押しましょう。(確実にノーマルモードにするため) 2. 次のようにタイプ: :q! これにより編集した内容を保存せずにエディタが終了します。 3. このチュートリアルを始める為のコマンドを実行すると、ここに戻れます。 そのコマンドは: vimtutor 4. これまでのステップを覚え自信がついたならば、ステップ 1 から 3 までを実 際に試して、Vim を1度終了してから再び起動しましょう。 NOTE: :q! は全ての変更を破棄します。レッスンにて変更をファイルに保 存する方法についても勉強していきましょう。 5. 1.3までカーソルを移動させましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 1.3: テキスト編集 - 削除 ** ノーマルモードにてカーソルの下の文字を削除するには x を押します ** 1. 以下の ---> と示された行にカーソルを移動しましょう。 2. 間違いを修正するために、削除する最初の文字までカーソルを移動します。 3. 不必要な文字を x を押して削除しましょう。 4. 文が正しくなるまで ステップ 2 から 4 を繰り返しましょう。 ---> その ううさぎ は つつきき を こええてて とびはねたた 5. 行が正しくなったら、レッスン 1.4 へ進みましょう。 NOTE: 全てのレッスンを通じて、覚えようとするのではなく実際にやってみましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 1.4: テキスト編集 - 挿入 ** ノーマルモードにてテキストを挿入するには i を押します ** 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 2. 1行目を2行目と同じ様にするために、テキストを挿入しなければならない位置 の次の文字にカーソルを移動します。 3. i キーを押してから、追加が必要な文字をタイプしましょう。 4. 間違いを修正したら を押してコマンドモードに戻り、正しい文になる様 にステップ 2 から 4 を繰り返しましょう。 ---> この には 足りない テキスト ある。 ---> この 行 には 幾つか 足りない テキスト が ある。 5. 挿入の方法がわかったらレッスン 1.5 へ進みましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 1.5: テキスト編集 - 追加 ** テキストを追加するには A を押しましょう ** 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 カーソルがその文字上にあってもかまいません。 2. 追加が必要な場所で A をタイプしましょう。 3. テキストを追加し終えたら、 を押してノーマルモードに戻りましょう。 4. 2行目の ---> と示された場所へ移動し、ステップ 2 から 3 を繰り返して文法 を修正しましょう。 ---> ここには間違ったテキストがあり ここには間違ったテキストがあります。 ---> ここにも間違ったテキス ここにも間違ったテキストがあります。 5. テキストの追加が軽快になってきたらレッスン 1.6 へ進みましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 1.6: ファイルの編集 ** ファイルを保存して終了するには :wq とタイプします ** !! NOTE: 以下のステップを実行する前に、まず全体を読んでください!! 1. レッスン 1.2 でやったように :q! をタイプして、このチュートリアルを終了 します。あるいは、別の端末がある場合はそこで以下の内容を行ってもかまい ません。 2. シェルプロンプトでこのコマンドをタイプします: vim tutor 'vim'が Vim エディタを起動するコマンド、'tutor' は編集したいファイルの 名前です。変更してもよいファイルを使いましょう。 3. 前のレッスンで学んだように、テキストを挿入、削除します。 4. 変更をファイルに保存します: :wq 5. ステップ 1 で vimtutuor を終了した場合は vimtutor を再度起動し、以下の 要約へ進みましょう。 6. 以上のステップを読んで理解した上でこれを実行しましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 1 要約 1. カーソルは矢印キーもしくは hjkl キーで移動します。 h (左) j (下) k (上) l (右) 2. Vim を起動するにはプロンプトから vim ファイル名 とタイプします。 3. Vim を終了するには :q! とタイプします(変更を破棄)。 もしくは :wq とタイプします(変更を保存)。 4. カーソルの下の文字を削除するには、ノーマルモードで x とタイプします。 5. カーソルの位置に文字を挿入するには、ノーマルモードで i とタイプします。 i テキストのタイプ カーソル位置に追加 A テキストの追加 行末に追加 NOTE: キーを押すとノーマルモードに移行します。その際、間違ったり入力途 中のコマンドを取り消すことができます。 さて、続けてレッスン 2 を始めましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 2.1: 削除コマンド ** 単語の末尾までを削除するには dw とタイプしましょう ** 1. ノーマルモードであることを確認するために を押しましょう。 2. 以下の ---> と示された行にカーソルを移動しましょう。 3. 消したい単語の先頭にカーソルを移動しましょう。 4. 単語を削除するために dw とタイプしましょう。 NOTE: タイプすると、dw という文字がスクリーンの最下行に現われます。 タイプを間違ってしまった時には を押してやり直しましょう。 ---> この 文 紙 には いくつかの たのしい 必要のない 単語 が 含まれて います。 5. 3 から 4 までを文が正しくなるまで繰り返し、レッスン 2.2 へ進みましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 2.2: その他の削除コマンド ** 行の末尾までを削除するには d$ とタイプしましょう ** 1. ノーマルモードであることを確認するのに を押しましょう。 2. 以下の ---> と示された行にカーソルを移動しましょう。 3. 正しい文の末尾へカーソルを移動しましょう(最初の 。 の後です)。 4. 行末まで削除するのに d$ とタイプしましょう。 ---> 誰かがこの行の最後を2度タイプしました。 2度タイプしました。 5. どういうことか理解するために、レッスン 2.3 へ進みましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 2.3: オペレータとモーション 多くのコマンドはオペレータとモーションからテキストに変更を加えます。 削除コマンド d のオペレータは次の様になっています: d モーション それぞれ: d - 削除コマンド。 モーション - 何に対して働きかけるか(以下に挙げます)。 モーション一覧の一部: w - カーソル位置から空白を含む単語の末尾まで。 e - カーソル位置から空白を含まない単語の末尾まで。 $ - カーソル位置から行末まで。 つまり de とタイプすると、カーソル位置から単語の終わりまでを削除します。 NOTE: 冒険したい人は、ノーマルモードにてコマンドなしにモーションを押して みましょう。カーソルが目的語一覧で示される位置に移動するはずです。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 2.4: モーションにカウントを使用する ** 何回も行いたい繰り返しのモーションの前に数値をタイプします。 ** 1. 以下の ---> と示された行の先頭にカーソルを移動します。 2. 2w をタイプして単語2つ分前に移動します。 3. 3e をタイプして3つ目の単語の終端に移動します。 4. 0 (ゼロ)をタイプして行頭に移動します。 5. ステップ 2 と 3 を違う数値を使って繰り返します。 ---> This is just a line with words you can move around in. 6. レッスン 2.5 に進みましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 2.5: より多くを削除するためにカウントを使用する ** オペレータとカウントをタイプすると、その操作が複数回繰り返されます。 ** 既述の削除のオペレータとモーションの組み合わせにカウントを追加することで、 より多くの削除が行えます: d 数値 モーション 1. ---> と示された行の行頭部分にカーソルを移動しましょう。 2. UPPER CASE の単語2つを d2w とタイプして削除します。 3. UPPER CASE という連続した単語を、1つのコマンドと異なるカウントを指定し、 ステップ 1 と 2 を繰り返します。 ---> このABC DE行のFGHI JK LMN OP単語はQ RS TUV綺麗になった。 NOTE: オペレータ d とモーションの間にカウントを使った場合、オペレータのない 場合のモーションのように動作します。 例: 3dw と d3w は同等で、3w を削除します。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 2.6: 行の操作 ** 行全体を削除するには dd とタイプします ** 行全体を削除する頻度が多いので、Viのデザイナーは行の削除を d の2回タイプと いう簡単なものに決めました。 1. 以下の句の2行目にカーソルを移動します。 2. dd とタイプして行を削除します。 3. さらに4行目に移動します。 4. 2dd とタイプして2行を削除します。 ---> 1) バラは赤い、 ---> 2) つまらないものは楽しい、 ---> 3) スミレは青い、 ---> 4) 私は車をもっている、 ---> 5) 時計が時刻を告げる、 ---> 6) 砂糖は甘い ---> 7) オマエモナー ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 2.7: やり直しコマンド ** 最後のコマンドを取り消すには u を押します。U は行全体の取消です。 ** 1. 以下の ---> と示された行にカーソルを移動し、最初の間違いにカーソル を移動しましょう。 2. x をタイプしていらない先頭の文字を削除しましょう。 3. さぁ、u をタイプして最後に実行したコマンドを取り消しましょう。 4. 今度は、x を使用して誤りを全て修正しましょう。 5. 大文字の U をタイプして、行を元の状態に戻しましょう。 6. u をタイプして直前の U コマンドを取消しましょう。 7. ではコマンドを再実行するのに CTRL-R (CTRL を押したまま R を打つ)を数回 タイプしてみましょう(取消の取消)。 ---> このの行のの間違いを修正々し、後でそれらの修正をを取消しまますす。 8. これはとても便利なコマンドです。さぁレッスン 2 要約へ進みましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 2 要約 1. カーソル位置から単語の末尾までを削除するには dw とタイプします。 2. カーソル位置から行の末尾までを削除するには d$ とタイプします。 3. 行全体を削除するには dd とタイプします。 4. モーションを繰り返すには数値を付与します: 2w 5. 変更に用いるコマンドの形式は オペレータ [数値] モーション それぞれ: オペレータ - 削除 d の類で何をするか。 数値 - そのコマンドを何回繰り返すか。 モーション - w (単語)や $ (行末)などの類で、テキストの何に対して働きか けるか。 6. 行の先頭に移動するにはゼロを使用します: 0 7. 前回の動作を取消す: u (小文字 u) 行全体の変更を取消す: U (大文字 U) 取消しの取消し: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 3.1: 貼り付けコマンド ** 最後に削除された行をカーソルの後に貼り付けるには p をタイプします ** 1. 以下の段落の最初の行にカーソルを移動しましょう。 2. dd とタイプして行を削除し、Vim のバッファに格納しましょう。 3. 削除した行が本来あるべき位置の上の行まで、カーソルを移動させましょう。 4. ノーマルモードで p をタイプして格納した行を画面に戻します。 5. 順番が正しくなる様にステップ 2 から 4 を繰り返しましょう。 d) 貴方も学ぶことができる? b) スミレは青い、 c) 知恵とは学ぶもの、 a) バラは赤い、 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 3.2: 置き換えコマンド ** カーソルの下の文字を置き換えるには r をタイプします ** 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 2. 最初の間違いの先頭にカーソルを移動しましょう。 3. r とタイプし、間違っている文字を置き換える、正しい文字をタイプしましょう。 4. 最初の行が正しくなるまでステップ 2 から 3 を繰り返しましょう。 ---> この合を人力した時ね、その人は幾つか問違ったキーを押しもした! ---> この行を入力した時に、その人は幾つか間違ったキーを押しました! 5. さぁ、レッスン 3.3 へ進みましょう。 NOTE: 実際に試しましょう。決して覚えるだけにはしないこと。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 3.3: 変更コマンド ** 単語の一部、もしくは全体を変更するには cw とタイプします ** 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 2. lubw の u の位置にカーソルを移動しましょう。 3. cw とタイプし、正しい単語をタイプしましょう(この場合 'ine' とタイプ)。 4. 次の間違い(変更すべき文字の先頭)に移動するために をタイプします。 5. 最初の行が次の行の様になるまでステップ 3 と 4 を繰り返します。 ---> This lubw has a few wptfd that mrrf changing usf the change operator. ---> This line has a few words that need changing using the change operator. cw は単語を変更するだけでなく、挿入も行えることに注意しましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 3.4: c を使用したその他の変更 ** 変更コマンドは、削除コマンドと同じ様にオブジェクトを使用します ** 1. 変更コマンドは、削除コマンドと同じような動作をします。その形式は c [数値] モーション 2. オブジェクトも同じで、w は単語、 $ は行末などといったものです。 3. 以下の ---> と示された行にカーソルを移動しましょう。 4. 最初の間違いへカーソルを移動しましょう。 5. c$ とタイプして行の残りを2行目の様にし、 を押しましょう。 ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. NOTE: タイプ中の間違いはバックスペースキーを使って直すこともできます。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 3 要約 1. 既に削除されたテキストを再配置するには、p をタイプします。これは削除さ れたテキストをカーソルの後に挿入します(行単位で削除されたのならば、カー ソルのある次の行に挿入されます)。 2. カーソルの下の文字を置き換えるには、r をタイプした後、それを置き換える 文字をタイプします。 3. 変更コマンドではカーソル位置から特定のモーションで指定される終端までを変 更することが可能です。例えば cw ならばカーソル位置から単語の終わりまで、 c$ ならば行の終わりまでを変更します。 4. 変更コマンドの形式は c [数値] モーション さぁ、次のレッスンへ進みましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 4.1: 位置とファイルの情報 ** ファイル内での位置とファイルの状態を表示するには CTRL-G をタイプします。 ファイル内のある行に移動するには G をタイプします ** NOTE: ステップを実行する前に、このレッスン全てに目を通しましょう!! 1. CTRL を押したまま g を押しましょう。この操作を CTRL-G と呼んでいます。 ページの一番下にファイル名と行番号が表示されるはずです。 ステップ 3のため に行番号を覚えておきましょう。 NOTE: 画面の右下隅にカーソルの位置が表示されているかもしれません。これは 'ruler' オプション(:help 'ruler' を参照)を設定することで表示されます。 2. 最下行に移動するために G をタイプしましょう。 ファイルの先頭に移動するには gg とタイプしましょう。 3. 先ほどの行の番号をタイプし G をタイプしましょう。最初に CTRL-G を押した行 に戻って来るはずです。 4. 自信が持てたらステップ 1 から 3 を実行しましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 4.2: 検索コマンド ** 語句を検索するには / と、前方検索する語句をタイプします。** 1. ノーマルモードで / という文字をタイプします。画面一番下に : コマンドと 同じ様に / が現れることに気づくでしょう。 2. では、'errroor' とタイプしましょう。これが検索したい単語です。 3. 同じ語をもう一度検索するときは 単に n をタイプします。 逆方向に語句を検索するときは N をタイプします。 4. 逆方向に語句を検索する場合は、/ の代わりに ? コマンドを使用します。 5. 元の場所に戻るには CTRL-O (Ctrl を押し続けながら o 文字タイプ)をタイプし ます。さらに戻るにはこれを繰り返します。CTRL-I は前方向です。 ---> "errroor" は error とスペルが違います; errroor はいわゆる error です。 NOTE: 検索がファイルの終わりに達すると、オプション 'wrapscan' が設定されている 場合は、ファイルの先頭から検索を続行します。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 4.3: 対応する括弧を検索 ** 対応する ),] や } を検索するには % をタイプします ** 1. 下の ---> で示された行で (,[ か { のどれかにカーソルを移動しましょう。 2. そこで % とタイプしましょう。 3. カーソルは対応する括弧に移動するはずです。 4. 最初の括弧に移動するには % とタイプしましょう。 5. 他の (,),[,],{ や } でカーソルを移動し、% が何をしているか確認しましょう。 ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) NOTE: この機能は括弧が一致していないプログラムをデバッグするのにとても役立ち ます。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 4.4: 間違いを変更する方法 ** 'old' を 'new' に置換するには :s/old/new/g とタイプします ** 1. 以下の ---> と示された行にカーソルを移動しましょう。 2. :s/thee/the とタイプしましょう。このコマンドはその行で最初に見 つかったものにだけ行なわれることに気をつけましょう。 3. では :s/thee/the/g とタイプしましょう。行全体を置換することを意味します。 この変更はその行で見つかった全ての箇所に対して行なわれます。 ---> thee best time to see thee flowers is in thee spring. 4. 複数行から見つかる文字を変更するには :#,#s/old/new/g #,# には置き換える範囲の開始と終了の行番号を指定しま す。 :%s/old/new/g ファイル全体で見つかるものに対して変更する。 :%s/old/new/gc ファイル全体で見つかるものに対して、1つ1つ確認をとりな がら変更する。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 4 要約 1. CTRL-G はファイルでの位置とファイルの詳細を表示します。 G はファイルの最下行に移動します。 数値 G はその行に移動します。 gg は先頭行に移動します。 2. / の後に語句をタイプすると前方に語句を検索します。 ? の後に語句をタイプすると後方に語句を検索します。 検索の後の n は同じ方向の次の検索を、N は逆方向の検索をします。 CTRL-O は場所を前に移し、CTRL-I は場所を次に移動します。 3. (,),[,],{, もしくは } 上にカーソルがある状態で % をタイプすると対になる文 字へ移動します。 4. 現在行の最初の old を new に置換する。 :s/old/new 現在行の全ての old を new に置換する。 :s/old/new/g 2つの # 間で語句を置換する。 :#,#s/old/new/g ファイルの中の全ての検索語句を置換する。 :%s/old/new/g 'c' を加えると置換の度に確認を求める。 :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 5.1: 外部コマンドを実行する方法 ** :! の後に実行する外部コマンドをタイプします ** 1. 画面の最下部にカーソルが移動するよう、慣れ親しんだ : をタイプしましょう。 これでコマンドがタイプできる様になります。 2. ここで ! という文字(感嘆符)をタイプしましょう。 これで外部シェルコマンドが実行できる様になります。 3. 例として ! に続けて ls とタイプし を押しましょう。 シェルプロンプトのようにディレクトリの一覧が表示されるはずです。 もしくは ls が動かないならば :!dir を使用しましょう。 NOTE: この方法によってあらゆるコマンドが実行することができます。もちろん引数 も与えられます。 NOTE: 全ての : コマンドは を押して終了しなければなりません。 以降ではこのことに言及しません。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 5.2: その他のファイルへ書き込み ** ファイルへ変更を保存するには :w ファイル名 とタイプします ** 1. ディレクトリの一覧を得るために :!dir もしくは :!ls とタイプしましょう。 このあと を押すのは既にご存知ですね。 2. TEST のように、そのディレクトリに無いファイル名を一つ選びます。 3. では :w TEST とタイプしましょう (TEST は、選んだファイル名です)。 4. これによりファイル全体が TEST という名前で保存されます。 もう一度 :!dir もしくは :!ls とタイプして確認してみましょう。 NOTE: ここで Vim を終了し、ファイル名 TEST と共に起動すると、保存した時の チュートリアルの複製ができ上がるはずです。 5. さらに、次のようにタイプしてファイルを消しましょう(MS-DOS): :!del TEST もしくは(Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 5.3: 選択した書き込み ** ファイルの位置を保存するには、v モーションと :w FILENAME をタイプします。 ** 1. この行にカーソルを移動します。 2. v を押し、以下の第5項目にカーソルを移動します。テキストが強調表示されるの に注目して下さい。 3. 文字 : を押すと、画面の最下部に :'<,'> が現れます。 4. w TEST (TEST は存在しないファイル名)をタイプします。 を押す前に :'<,'>w TEST となっていることを確認して下さい。 5. Vim は TEST というファイルに選択された行を書き込むでしょう。 !dir もしくは !ls でそれを確認します。 それは削除しないでおいて下さい。次のレッスンで使用します。 NOTE: v を押すと、Visual 選択が始まります。カーソルを動かすことで、選択範囲を 大きくも小さくもできます。さらに、その選択範囲に対してオペレータを適用 きます。例えば d はテキストを削除します。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 5.4: ファイルの取込と合併 ** ファイルの中身を挿入するには :r ファイル名 とタイプします ** 1. カーソルを以下の行に合わせます。 NOTE: ステップ 2 の実行後、レッスン 5.3 のテキストが現れます。下に下がってこ のレッスンに移動しましょう。 2. では TEST というファイルを :r TEST というコマンドで読み込みましょう。 ここでいう TEST は使うファイルの名前のことです。 読み込まれたファイルは、カーソル行の下にあります。 3. 取込んだファイルを確認してみましょう。カーソルを戻すと、レッスン5.3 の オリジナルとファイルによるものの2つがあることがわかります。 NOTE: 外部コマンドの出力を読み込むことも出来ます。例えば、 :r !ls は ls コマンドの出力をカーソル以下に読み込みます。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 5 要約 1. :!command によって 外部コマンドを実行します。 よく使う例: (MS-DOS) (Unix) :!dir :!ls - ディレクトリ内の一覧を見る。 :!del FILENAME :!rm FILENAME - ファイルを削除する。 2. :w ファイル名 によってファイル名というファイルがディスクに書き込まれる。 3. v モーションで :w FILENAME とすると、ビジュアル選択行がファイルに保存さ れる。 4. :r ファイル名 によりファイル名というファイルがディスクより取り込まれ、 カーソル位置の下に挿入される。 5. :r !dir は dir コマンドの出力をカーソル位置以下に読み込む。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 6.1: オープンコマンド ** o をタイプすると、カーソルの下の行が開き、挿入モードに入ります ** 1. 以下の ---> と示された行にカーソルを移動しましょう。 2. o (小文字) をタイプして、カーソルの下の行を開き、挿入モードに入ります。 3. さらに挿入モードを終了する為に をタイプします。 ---> o をタイプするとカーソルは開いた行へ移動し挿入モードに入ります。 4. カーソルの上の行に挿入するには、小文字の o ではなく、単純に大文字の O をタイプします。次の行で試してみましょう。 ---> この行の上へ挿入するには、この行へカーソルを置いて O をタイプします。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 6.2: 追加コマンド ** カーソルの次の位置からテキストを追加するには a とタイプします ** 1. カーソルを ---> で示された行へ移動しましょう。 2. e を押して li の終端部までカーソルを移動します。 3. カーソルの後ろにテキストを追加するために a (小文字) をタイプします。 4. その下の行のような単語に完成させます。挿入モードを抜ける為に を押 します。 5. e を使って次の不完全な単語へ移動し、ステップ 3 と 4 を繰り返します。 ---> This li will allow you to pract appendi text to a line. ---> This line will allow you to practice appending text to a line. NOTE: a, i と A は同じ挿入モードへ移りますが、文字が挿入される位置だけが異なり ます。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 6.3: その他の置換方法 ** 1文字以上を置き換えるには大文字の R とタイプしましょう ** 1. 以下の ---> と示された行にカーソルを移動します。最初の xxx の先頭に移動し ます。 2. R を押して、2行目の数値をタイプすることで、xxx が置換されます。 3. 置換モードを抜けるには を押します。行の残りが変更されていないままに なることに注意してください。 4. 残った xxx をステップを繰り返して置換しましょう。 ---> Adding 123 to xxx gives you xxx. ---> Adding 123 to 456 gives you 579. NOTE: 置換モードは挿入モードに似ていますが、全てのタイプされた文字は既存の文字 を削除します。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 6.4: テキストのコピーとペースト ** テキストのコピーにはオペレータ y を、ペーストには p を使います ** 1. ---> と示された行へ移動し、カーソルを "a)" の後に置いておきます。 2. v でビジュアルモードを開始し、"first" の手前までカーソルを移動します。 3. y をタイプして強調表示されたテキストを yank (コピー)します。 4. 次の行の行末までカーソルを移動します: j$ 5. p を押して貼り付け(put)てから、次をタイプします: a second 6. ビジュアルモードで " item." を選択し、y でヤンク、次の行の行末まで j$ で 移動し、 p でテキストをそこに put します。 ---> a) this is the first item. b) NOTE: 単語を1つ yank するのに y をオペレータとして yw とすることも出来ます。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 6.5: オプションの設定 ** 検索や置換の際に大文字/小文字を無視するには、オプションを設定します ** 1. 次の様に入力して 'ignore' を検索しましょう: /ignore n を押して何度か検索を繰り返します。 2. 次の様に入力して 'ic' (Ignore Case の略) オプションを設定します: :set ic 3. では n によってもう1度 'ignore' を検索します。 n を押してさらに数回検索を繰り返しましょう。 4. 'hlsearch' と 'incsearch' オプションを設定しましょう: :set hls is 5. 検索コマンドを再入力して、何が起こるか見てみましょう: /ignore 6. 大文字小文字の区別を無効にするには次の様に入力します: :set noic NOTE: マッチの強調表示をやめるには次の様に入力します: :nohlsearch NOTE: 1つの検索コマンドだけ大文字小文字の区別をやめたいならば、フレーズに \c を使用します: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 6 要約 1. o をタイプするとカーソルの下の行を開けて、そこで挿入モードになる。 O (大文字) をタイプするとカーソルの上の行で挿入モードになる。 2. カーソル上の文字の次からテキストを追加するには a とタイプする。 行末に自動でテキストを挿入するには大文字 A をタイプする。 3. e コマンドは単語の終端部カーソルを移動する。 4. y オペレータはテキストを yank (コピー)し、p はそれを put (ペースト)する。 5. 大文字の R をタイプすると置換モードに入り、を押すと抜ける。 6. ":set xxx" とタイプするとオプション "xxx" が設定される。 'ic' 'ignorecase' 検索時に大文字小文字の区別しない 'is' 'incsearch' 検索フレーズに部分マッチしている部分を表示する 'hls' 'hlsearch' マッチするすべを強調表示する 長い方、短い方、どちらのオプション名でも使用できます。 7. "no" を付与し、オプションを無効にします: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 7.1: オンラインヘルプコマンド ** オンラインヘルプを使用しましょう ** Vim には広範にわたるオンラインヘルプシステムがあります。 ヘルプを開始するには、これら3つのどれか1つを試してみましょう: - ヘルプキー を押す(もしあるならば)。 - キーを押す(もしあるならば)。 - :help とタイプする。 ヘルプウィンドウのテキストを読むと、ヘルプの動作が理解できます。 CTRL-W CTRL-W とタイプすると ヘルプウィンドウへジャンプします。 :q とタイプすると ヘルプウィンドウが閉じられます。 ":help" コマンドに引数を与えることにより、あらゆる題名のヘルプを見つけること ができます。これらを試してみましょう( をタイプし忘れないように): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 7.2: 起動スクリプトの作成 ** Vim の特徴を発揮する ** Vim には Vi よりも多くの特徴を踏まえていますが、そのほとんどは初期状態にて 使用不可となっています。より多くの特徴を使いはじめるには "vimrc" ファイル を作成します。 1. "vimrc" ファイルの編集を開始する。これはシステムに依存します。 :edit ~/.vimrc UNIX 向け :edit $VIM/_vimrc MS-Windows 向け 2. ここでサンプルの "vimrc" を読み込みます。 :read $VIMRUNTIME/vimrc_example.vim 3. 以下のようにファイルへ書き込みます。 :write 次回 Vim を起動すると、色づけ構文が使えるようになるでしょう。 この "vimrc" ファイルへ、お好みの設定を追加することができます。 より多くの情報を得るには :help vimrc-intro とタイプします。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 7.3: 補完 ** CTRL-D と でコマンドラインを補完する ** 1. 互換モードでないことを確認します: :set nocp 2. 現在のディレクトリに在るファイルを :!ls か :!dir で確認します。 3. コマンドの開始をタイプします: :e 4. CTRL-D を押すと Vim は "e" から始まるコマンドの一覧を表示します。 5. を押すと Vim は ":edit" というコマンド名を補完します。 6. さらに空白と、既存のファイル名の始まりを加えます: :edit FIL 7. を押すと Vim は名前を補完します。(もし一つしか無かった場合) NOTE: 補完は多くのコマンドで動作します。そして CTRL-D と 押してみてくだ さい。特に :help の際に役立ちます。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 7 要約 1. ヘルプウィンドウを開くには :help とするか もしくは を押す。 2. コマンド(cmd)のヘルプを検索するには :help cmd とタイプする。 3. 別のウィンドウへジャンプするには CTRL-W CTRL-W とタイプする。 4. ヘルプウィンドウを閉じるには :q とタイプする。 5. お好みの設定を保つには vimrc 起動スクリプトを作成する。 6. : command で可能な補完を見るには CTRL-D をタイプする。 補完を使用するには を押す。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ これにて Vim のチュートリアルを終わります。エディタを簡単に、しかも充分に 使うことができるようにと、Vim の持つ概念の要点のみを伝えようとしました。 Vim にはさらに多くのコマンドがあり、ここで全てを説明することはできません。 以降はユーザーマニュアルを参照ください: ":help user-manual" これ以後の学習のために、次の本を推薦します。 Vim - Vi Improved - by Steve Oualline 出版社: New Riders 最初の本は完全に Vim のために書かれました。とりわけ初心者にはお奨めです。 多くの例題や図版が掲載されています。 次のURLを参照して下さい http://iccf-holland.org/click5.html 次は Vim よりも Vi について書かれた古い本ですが推薦します: Learning the Vi Editor - by Linda Lamb 出版社: O'Reilly & Associates Inc. Vi でやりたいと思うことほぼ全てを知ることができる良書です。 第6版では、Vim についての情報も含まれています。 このチュートリアルは Colorado State University の Charles Smith のアイデア を基に、Colorado School of Mines の Michael C. Pierce と Robert K. Ware の 両名によって書かれました。 E-mail: bware@mines.colorado.edu. Modified for Vim by Bram Moolenaar. 日本語訳 松本 泰弘 監修 村岡 太郎 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vi:set ts=8 sts=4 sw=4 tw=78: PK!|)>zzvim80/tutor/tutor.zh.utf-8nu[=============================================================================== = 歡 迎 閱 讀 《 V I M 教 程 》 ── 版本 1.5 = =============================================================================== vim 是一個具有很多命令的功能非常強大的編輯器。限于篇幅,在本教程當中 不就詳細介紹了。本教程的設計目標是講述一些必要的基本命令,而掌握好這 些命令,您就能夠很容易將vim當作一個通用的萬能編輯器來使用了。 完成本教程的內容大約需要25-30分鐘,取決于您訓練的時間。 每一節的命令操作將會更改本文。推薦您復制本文的一個副本,然後在副本上 進行訓練(如果您是通過"vimtutor"來啟動教程的,那麼本文就已經是副本了)。 切記一點︰本教程的設計思路是在使用中進行學習的。也就是說,您需要通過 執行命令來學習它們本身的正確用法。如果您只是閱讀而不操作,那麼您可能 會很快遺忘這些命令的! 好了,現在請確定您的Shift-Lock(大小寫鎖定鍵)還沒有按下,然後按鍵盤上 的字母鍵 j 足夠多的次數來移動光標,直到第一節的內容能夠完全充滿屏幕。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一講第一節︰移動光標 ※※ 要移動光標,請依照說明分別按下 h、j、k、l 鍵。 ※※ ^ k 提示︰ h 的鍵位于左邊,每次按下就會向左移動。 < h l > l 的鍵位于右邊,每次按下就會向右移動。 j j 鍵看起來很象一支尖端方向朝下的箭頭。 v 1. 請隨意在屏幕內移動光標,直至您覺得舒服為止。 2. 按下下行鍵(j),直到出現光標重復下行。 ---> 現在您應該已經學會如何移動到下一講吧。 3. 現在請使用下行鍵,將光標移動到第一講第二節。 提示︰如果您不敢確定您所按下的字母,請按下鍵回到正常(Normal)模式。 然後再次從鍵盤輸入您想要的命令。 提示︰光標鍵應當也能正常工作的。但是使用hjkl鍵,在習慣之後您就能夠快速 地在屏幕內四處移動光標了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一講第二節︰VIM的進入和退出 !! 特別提示︰敬請閱讀完整本一節的內容,然後才能執行以下所講解的命令。 1. 請按鍵(這是為了確保您處在正常模式)。 2. 然後輸入︰ :q! <回車> ---> 這種方式的退出編輯器絕不會保存您進入編輯器以來所做的改動。 如果您想保存更改再退出,請輸入︰ :wq <回車> 3. 如果您看到了命令行提示符,請輸入能夠帶您回到本教程的命令,那就是︰ vimtutor <回車> 通常情況下您也可以用這種方式︰ vim tutor <回車> ---> 這裡的 'vim' 表示進入vim編輯器,而 'tutor'則是您準備要編輯的文件。 4. 如果您自信已經牢牢記住了這些步驟的話,請從步驟1執行到步驟3退出,然 後再次進入編輯器。接著將光標移動到第一講第三節來繼續我們的教程講解。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一講第三節︰文本編輯之刪除 ** 在正常(Normal)模式下,可以按下 x 鍵來刪除光標所在位置的字符。** 1. 請將光標移動到本節中下面標記有 ---> 的那一行。 2. 為了修正輸入錯誤,請將光標移至準備刪除的字符的位置處。 3. 然後按下 x 鍵將錯誤字符刪除掉。 4. 重復步驟2到步驟4,直到句子修正為止。 ---> The ccow jumpedd ovverr thhe mooon. 5. 好了,該行已經修正了,下一節內容是第一講第四節。 特別提示︰在您瀏覽本教程時,不要強行記憶。記住一點︰在使用中學習。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一講第四節︰文本編輯之插入 ** 在正常模式下,可以按下 i 鍵來插入文本。** 1. 請將光標移動到本節中下面標記有 ---> 的第一行。 2. 為了使得第一行內容雷同于第二行,請將光標移至文本第一個字符準備插入 的位置。 3. 然後按下 i 鍵,接著輸入必要的文本字符。 4. 所有文本都修正完畢,請按下 鍵返回正常模式。 重復步驟2至步驟4以便修正句子。 ---> There is text misng this . ---> There is some text missing from this line. 5. 如果您對文本插入操作已經很滿意,請接著閱讀下面的小結。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一講小結 1. 光標在屏幕文本中的移動既可以用箭頭鍵,也可以使用 hjkl 字母鍵。 h (左移) j (下行) k (上行) l (右移) 2. 欲進入vim編輯器(從命令行提示符),請輸入︰vim 文件名 <回車> 3. 欲退出vim編輯器,請輸入以下命令放棄所有修改︰ :q! <回車> 或者輸入以下命令保存所有修改︰ :wq <回車> 4. 在正常模式下刪除光標所在位置的字符,請按︰ x 5. 在正常模式下要在光標所在位置開始插入文本,請按︰ i 輸入必要文本 特別提示︰按下 鍵會帶您回到正常模式或者取消一個不期望或者部分完成 的命令。 好了,第一講到此結束。下面接下來繼續第二講的內容。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二講第一節︰刪除類命令 ** 輸入 dw 可以從光標處刪除至一個單字/單詞的末尾。** 1. 請按下 鍵確保您處于正常模式。 2. 請將光標移動到本節中下面標記有 ---> 的那一行。 3. 請將光標移至準備要刪除的單詞的開始。 4. 接著輸入 dw 刪除掉該單詞。 特別提示︰您所輸入的 dw 會在您輸入的同時出現在屏幕的最後一行。如果您輸 入有誤,請按下 鍵取消,然後重新再來。 ---> There are a some words fun that don't belong paper in this sentence. 5. 重復步驟3至步驟4,直至句子修正完畢。接著繼續第二講第二節內容。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二講第二節︰其他刪除類命令 ** 輸入 d$ 從當前光標刪除到行末。** 1. 請按下 鍵確保您處于正常模式。 2. 請將光標移動到本節中下面標記有 ---> 的那一行。 3. 請將光標移動到該行的尾部(也就是在第一個點號‘.’後面)。 4. 然後輸入 d$ 從光標處刪至當前行尾部。 ---> Somebody typed the end of this line twice. end of this line twice. 5. 請繼續學習第二講第三節就知道是怎麼回事了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二講第三節︰關于命令和對象 刪除命令 d 的格式如下︰ [number] d object 或者 d [number] object 其意如下︰ number - 代表執行命令的次數(可選項,缺省設置為 1 )。 d - 代表刪除。 object - 代表命令所要操作的對象(下面有相關介紹)。 一個簡短的對象列表︰ w - 從當前光標當前位置直到單字/單詞末尾,包括空格。 e - 從當前光標當前位置直到單字/單詞末尾,但是 *不* 包括空格。 $ - 從當前光標當前位置直到當前行末。 特別提示︰ 對于勇于探索者,請在正常模式下面僅按代表相應對象的鍵而不使用命令,則 將看到光標的移動正如上面的對象列表所代表的一樣。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二講第四節︰對象命令的特殊情況 ** 輸入 dd 可以刪除整一個當前行。 ** 鑒于整行刪除的高頻度,VIM 的設計者決定要簡化整行刪除,僅需要在同一行上 擊打兩次 d 就可以刪除掉光標所在的整行了。 1. 請將光標移動到本節中下面的短句段落中的第二行。 2. 輸入 dd 刪除該行。 3. 然後移動到第四行。 4. 接著輸入 2dd (還記得前面講過的 number-command-object 嗎?) 刪除兩行。 1) Roses are red, 2) Mud is fun, 3) Violets are blue, 4) I have a car, 5) Clocks tell time, 6) Sugar is sweet 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二講第五節︰撤消類命令 ** 輸入 u 來撤消最後執行的命令,輸入 U 來修正整行。** 1. 請將光標移動到本節中下面標記有 ---> 的那一行,並將其置于第一個錯誤 處。 2. 輸入 x 刪除第一個不想保留的字母。 3. 然後輸入 u 撤消最後執行的(一次)命令。 4. 這次要使用 x 修正本行的所有錯誤。 5. 現在輸入一個大寫的 U ,恢復到該行的原始狀態。 6. 接著多次輸入 u 以撤消 U 以及更前的命令。 7. 然後多次輸入 CTRL-R (先按下 CTRL 鍵不放開,接著輸入 R 鍵) ,這樣就 可以執行恢復命令,也就是撤消掉撤消命令。 ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. 這些都是非常有用的命令。下面是第二講的小結了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二講小結 1. 欲從當前光標刪除至單字/單詞末尾,請輸入︰dw 2. 欲從當前光標刪除至當前行末尾,請輸入︰d$ 3. 欲刪除整行,請輸入︰dd 4. 在正常模式下一個命令的格式是︰ [number] command object 或者 command [number] object 其意是︰ number - 代表的是命令執行的次數 command - 代表要做的事情,比如 d 代表刪除 object - 代表要操作的對象,比如 w 代表單字/單詞,$ 代表到行末等等。 $ (to the end of line), etc. 5. 欲撤消以前的操作,請輸入︰u (小寫的u) 欲撤消在一行中所做的改動,請輸入︰U (大寫的U) 欲撤消以前的撤消命令,恢復以前的操作結果,請輸入︰CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三講第一節︰置入類命令 ** 輸入 p 將最後一次刪除的內容置入光標之後 ** 1. 請將光標移動到本節中下面示范段落的首行。 2. 輸入 dd 將該行刪除,這樣會將該行保存到vim的緩沖區中。 3. 接著將光標移動到準備置入的位置的上方。記住︰是上方哦。 4. 然後在正常模式下(鍵進入),輸入 p 將該行粘貼置入。 5. 重復步驟2至步驟4,將所有的行依序放置到正確的位置上。 d) Can you learn too? b) Violets are blue, c) Intelligence is learned, a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三講第二節︰替換類命令 ** 輸入 r 和一個字符替換光標所在位置的字符。** 1. 請將光標移動到本節中下面標記有 ---> 的第一行。 2. 請移動光標到第一個錯誤的適當位置。 3. 接著輸入 r ,這樣就能將錯誤替換掉了。 4. 重復步驟2和步驟3,直到第一行已經修改完畢。 ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. 然後我們繼續學校第三講第三節。 特別提示︰切記您要在使用中學習,而不是在記憶中學習。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三講第三節︰更改類命令 ** 要改變一個單字/單詞的部分或者全部,請輸入 cw ** 1. 請將光標移動到本節中下面標記有 ---> 的第一行。 2. 接著把光標放在單詞 lubw 的字母 u 的位置那裡。 3. 然後輸入 cw 就可以修正該單詞了(在本例這裡是輸入 ine 。) 4. 最後按 鍵,然後光標定位到下一個錯誤第一個準備更改的字母處。 5. 重復步驟3和步驟4,直到第一個句子完全雷同第二個句子。 ---> This lubw has a few wptfd that mrrf changing usf the change command. ---> This line has a few words that need changing using the change command. 提示︰請注意 cw 命令不僅僅是替換了一個單詞,也讓您進入文本插入狀態了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三講第四節︰使用c指令的其他更改類命令 ** 更改類指令可以使用同刪除類命令所使用的對象參數。** 1. 更改類指令的工作方式跟刪除類命令是一致的。操作格式是︰ [number] c object 或者 c [number] object 2. 對象參數也是一樣的,比如 w 代表單字/單詞,$代表行末等等。 3. 請將光標移動到本節中下面標記有 ---> 的第一行。 4. 接著將光標移動到第一個錯誤處。 5. 然後輸入 c$ 使得該行剩下的部分更正得同第二行一樣。最後按 鍵。 ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三講小結 1. 要重新置入已經刪除的文本內容,請輸入小寫字母 p。該操作可以將已刪除 的文本內容置于光標之後。如果最後一次刪除的是一個整行,那麼該行將置 于當前光標所在行的下一行。 2. 要替換光標所在位置的字符,請輸入小寫的 r 和要替換掉原位置字符的新字 符即可。 3. 更改類命令允許您改變指定的對象,從當前光標所在位置直到對象的末尾。 比如輸入 cw 可以替換當前光標到單詞的末尾的內容;輸入 c$ 可以替換當 前光標到行末的內容。 4. 更改類命令的格式是︰ [number] c object 或者 c [number] object 下面我們繼續學習下一講。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四講第一節︰定位及文件狀態 ** 輸入 CTRL-g 顯示當前編輯文件中當前光標所在行位置以及文件狀態信息。 輸入 SHIFT-G 則直接跳轉到文件中的某一指定行。** 提示︰切記要先通讀本節內容,之後才可以執行以下步驟!!! 1. 按下 CTRL 鍵不放開然後按 g 鍵。然後就會看到頁面最底部出現一個狀態信 息行,顯示的內容是當前編輯的文件名和文件的總行數。請記住步驟3的行號。 2. 按下 SHIFT-G 鍵可以使得當前光標直接跳轉到文件最後一行。 3. 輸入您曾停留的行號,然後按下 SHIFT-G。這樣就可以返回到您第一次按下 CTRL-g 時所在的行好了。注意︰輸入行號時,行號是不會在屏幕上顯示出來 的。 4. 如果願意,您可以繼續執行步驟1至步驟三。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四講第二節︰搜索類命令 ** 輸入 / 以及尾隨的字符串可以用以在當前文件中查找該字符串。** 1. 在正常模式下輸入 / 字符。您此時會注意到該字符和光標都會出現在屏幕底 部,這跟 : 命令是一樣的。 2. 接著輸入 errroor <回車>。那個errroor就是您要查找的字符串。 3. 要查找同上一次的字符串,只需要按 n 鍵。要向相反方向查找同上一次的字 符串,請輸入 Shift-N 即可。 4. 如果您想逆向查找字符串,請使用 ? 代替 / 進行。 ---> When the search reaches the end of the file it will continue at the start. "errroor" is not the way to spell error; errroor is an error. 提示︰如果查找已經到達文件末尾,查找會自動從文件頭部繼續查找。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四講第三節︰配對括號的查找 ** 按 % 可以查找配對的括號 )、]、}。** 1. 把光標放在本節下面標記有 --> 那一行中的任何一個 (、[ 或 { 處。 2. 接著按 % 字符。 3. 此時光標的位置應當是在配對的括號處。 4. 再次按 % 就可以跳回配對的第一個括號處。 ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) 提示︰在程序調試時,這個功能用來查找不配對的括號是很有用的。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四講第四節︰修正錯誤的方法之一 ** 輸入 :s/old/new/g 可以替換 old 為 new。** 1. 請將光標移動到本節中下面標記有 ---> 的那一行。 2. 輸入 :s/thee/the <回車> 。請注意該命令只改變光標所在行的第一個匹配 串。 3. 輸入 :s/thee/the/g 則是替換全行的匹配串。 ---> the best time to see thee flowers is in thee spring. 4. 要替換兩行之間出現的每個匹配串,請輸入 :#,#s/old/new/g (#,#代表的是 兩行的行號)。輸入 :%s/old/new/g 則是替換整個文件中的每個匹配串。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四講小結 1. Ctrl-g 用于顯示當前光標所在位置和文件狀態信息。Shift-G 用于將光標跳 轉至文件最後一行。先敲入一個行號然後按 Shift-G 則是將光標移動至該行 號代表的行。 2. 輸入 / 然後緊隨一個字符串是則是在當前所編輯的文檔中向後查找該字符串。 輸入問號 ? 然後緊隨一個字符串是則是在當前所編輯的文檔中向前查找該字 符串。完成一次查找之後按 n 鍵則是重復上一次的命令,可在同一方向上查 找下一個字符串所在;或者按 Shift-N 向相反方向查找下該字符串所在。 3. 如果光標當前位置是括號(、)、[、]、{、},按 % 可以將光標移動到配對的 括號上。 4. 在一行內替換頭一個字符串 old 為新的字符串 new,請輸入 :s/old/new 在一行內替換所有的字符串 old 為新的字符串 new,請輸入 :s/old/new/g 在兩行內替換所有的字符串 old 為新的字符串 new,請輸入 :#,#s/old/new/g 在文件內替換所有的字符串 old 為新的字符串 new,請輸入 :%s/old/new/g 進行全文替換時詢問用戶確認每個替換需添加 c 選項,請輸入 :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五講第一節︰在 VIM 內執行外部命令的方法 ** 輸入 :! 然後緊隨著輸入一個外部命令可以執行該外部命令。** 1. 按下我們所熟悉的 : 命令設置光標到屏幕底部。這樣就可以讓您輸入命令了。 2. 接著輸入感嘆號 ! 這個字符,這樣就允許您執行外部的 shell 命令了。 3. 我們以 ls 命令為例。輸入 !ls <回車> 。該命令就會列舉出您當前目錄的 內容,就如同您在命令行提示符下輸入 ls 命令的結果一樣。如果 !ls 沒起 作用,您可以試試 :!dir 看看。 ---> 提示︰ 所有的外部命令都可以以這種方式執行。 ---> 提示︰ 所有的 : 命令都必須以 <回車> 告終。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五講第二節︰關于保存文件的更多信息 ** 要將對文件的改動保存到文件中,請輸入 :w FILENAME ** 1. 輸入 :!dir 或者 :!ls 獲知當前目錄的內容。您應當已知道最後還得敲 <回車> 吧。 2. 選擇一個尚未存在文件名,比如 TEST 。 3. 接著輸入 :w TEST (此處 TEST 是您所選擇的文件名。) 4. 該命令會以 TEST 為文件名保存整個文件 (VIM 教程)。為了確保正確保存, 請再次輸入 :!dir 查看您的目錄列表內容。 ---> 請注意︰如果您退出 VIM 然後在以文件名 TEST 為參數進入,那麼該文件內 容應該同您保存時的文件內容是完全一樣的。 5. 現在您可以通過輸入 :!rm TEST 來刪除 TEST 文件了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五講第三節︰一個具有選擇性的保存命令 ** 要保存文件的部分內容,請輸入 :#,# w FILENAME ** 1. 再來執行一次 :!dir 或者 :!ls 獲知當前目錄的內容,然後選擇一個合適的 不重名的文件名,比如 TEST 。 2. 接著將光標移動至本頁的最頂端,然後按 CTRL-g 找到該行的行號。別忘了 行號哦。 3. 接著把光標移動至本頁的最底端,再按一次 CTRL-g 。也別忘了這個行好哦。 4. 為了只保存文章的某個部分,請輸入 :#,# w TEST 。這裡的 #,# 就是上面 要求您記住的行號(頂端行號,底端行號),而 TEST 就是選定的文件名。 5. 最後,用 :!dir 確認文件是否正確保存。但是這次先別刪除掉。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五講第四節︰提取和合並文件 ** 要向當前文件中插入另外的文件的內容,請輸入 :r FILENAME ** 1. 請鍵入 :!dir 確認您前面創建的 TEST 文件還在。 2. 然後將光標移動至當前頁面的頂端。 特別提示︰ 執行步驟3之後您將看到第五講第三節,請屆時再往下移動回到這裡來。 3. 接著通過 :r TEST 將前面創建的名為 TEST 的文件提取進來。 特別提示︰您所提取進來的文件將從光標所在位置處開始置入。 4. 為了確認文件已經提取成功,移動光標回到原來的位置就可以注意有兩份第 五講第三節,一份是原本,另外一份是來自文件的副本。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五講小結 1. :!command 用于執行一個外部命令 command。 請看一些實際例子︰ :!dir - 用于顯示當前目錄的內容。 :!rm FILENAME - 用于刪除名為 FILENAME 的文件。 2. :w FILENAME 可將當前 VIM 中正在編輯的文件保存到名為 FILENAME 的文件中。 3. :#,#w FILENAME 可將當前編輯文件第 # 行至第 # 行的內容保存到文件 FILENAME 中。 4. :r FILENAME 可提取磁盤文件 FILENAME 並將其插入到當前文件的光標位置 後面。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六講第一節︰打開類命令 ** 輸入 o 將在光標的下方打開新的一行並進入插入模式。** 1. 請將光標移動到本節中下面標記有 ---> 的那一行。 2. 接著輸入小寫的 o 在光標 *下方* 打開新的一行並進入插入模式。 3. 然後復制標記有 ---> 的行並按 鍵退出插入模式而進入正常模式。 ---> After typing o the cursor is placed on the open line in Insert mode. 4. 為了在光標 *上方* 打開新的一行,只需要輸入大寫的 O 而不是小寫的 o 就可以了。請在下行測試一下吧。當光標處在在該行上時,按 Shift-O可以 在該行上方新開一行。 Open up a line above this by typing Shift-O while the cursor is on this line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六講第二節︰光標後插入類命令 ** 輸入 a 將可在光標之後插入文本。 ** 1. 請在正常模式下通過輸入 $ 將光標移動到本節中下面標記有 ---> 的第一行 的末尾。 2. 接著輸入小寫的 a 則可在光標之後插入文本了。大寫的 A 則可以直接在行 末插入文本。 提示︰輸入大寫 A 的操作方法可以在行末插入文本,避免了輸入 i,光標定位到 最後一個字符,輸入的文本, 回復正常模式,箭頭右鍵移動光標以及 x 刪除當前光標所在位置字符等等諸多繁雜的操作。 3. 操作之後第一行就可以補充完整了。請注意光標後插入文本與插入模式是基 本完全一致的,只是文本插入的位置定位稍有不同罷了。 ---> This line will allow you to practice ---> This line will allow you to practice appending text to the end of a line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六講第三節︰另外一個置換類命令的版本 ** 輸入大寫的 R 可連續替換多個字符。** 1. 請將光標移動到本節中下面標記有 ---> 的第一行。 2. 移動光標到第一行中不同于標有 ---> 的第二行的第一個單詞的開始,即單 詞 last 處。 3. 然後輸入大寫的 R 開始把第一行中的不同于第二行的剩余字符逐一輸入,就 可以全部替換掉原有的字符而使得第一行完全雷同第二行了。 ---> To make the first line the same as the last on this page use the keys. ---> To make the first line the same as the second, type R and the new text. 4. 請注意︰如果您按 退出置換模式回復正常模式,尚未替換的文本將仍 然保持原狀。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六講第四節︰設置類命令的選項 ** 設置可使查找或者替換可忽略大小寫的選項 ** 1. 要查找單詞 ignore 可在正常模式下輸入 /ignore 。要重復查找該詞,可以 重復按 n 鍵。 2. 然後設置 ic 選項(ic就是英文忽略大小寫Ignore Case的首字母縮寫詞),即 輸入︰ :set ic 3. 現在可以通過鍵入 n 鍵再次查找單詞 ignore。重復查找可以重復鍵入 n 鍵。 4. 然後設置 hlsearch 和 incsearch 這兩個選項,輸入以下內容︰ :set hls is 5. 現在可以再次輸入查找命令,看看會有什麼效果︰ /ignore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六講小結 1. 輸入小寫的 o 可以在光標下方打開新的一行並將光標置于新開的行首,進入 插入模式。 輸入大寫的 O 可以在光標上方打開新的一行並將光標置于新開的行首,進入 插入模式。 2. 輸入小寫的 a 可以在光標所在位置之後插入文本。 輸入大寫的 A 可以在光標所在行的行末之後插入文本。 3. 輸入大寫的 R 將進入替換模式,直至按 鍵退出替換模式而進入正常 模式。 4. 輸入 :set xxx 可以設置 xxx 選項。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第七講︰在線幫助命令 ** 使用在線幫助系統 ** Vim 擁有一個細致全面的在線幫助系統。要啟動該幫助系統,請選擇如下三種方 法之一︰ - 按下 鍵 (如果鍵盤上有的話) - 按下 鍵 (如果鍵盤上有的話) - 輸入 :help <回車> 輸入 :q <回車> 可以關閉幫助窗口。 提供一個正確的參數給":help"命令,您可以找到關于該主題的幫助。請試驗以 下參數(可別忘了按回車鍵哦。:)︰ :help w <回車> :help c_ :help insert-index <回車> :help user-manual <回車> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第八講︰創建一個啟動腳本 ** 啟用vim的功能 ** Vim的功能特性要比vi多得多,但大部分功能都沒有缺省激活。為了啟動更多的 功能,您得創建一個vimrc文件。 1. 開始編輯vimrc文件,這取決于您所使用的操作系統︰ :edit ~/.vimrc 這是Unix系統所使用的命令 :edit $VIM/_vimrc 這是Windows系統所使用的命令 2. 接著導入vimrc范例文件︰ :read $VIMRUNTIME/vimrc_example.vim 3. 保存文件,命令為︰ :write 在下次您啟動vim的時候,編輯器就會有了語法高亮的功能。您可以繼續把您喜 歡的其它功能設置添加到這個vimrc文件中。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim 教程到此結束。本教程只是為了簡明地介紹一下vim編輯器,但已足以讓您 很容易學會使用本編輯器了。毋庸質疑,vim還有很多很多的命令,本教程所介 紹的還差得遠著呢。所以您要精通的話,還望繼續努力哦。下一步您可以閱讀 vim手冊,使用的命令是︰ :help user-manual 為了更進一步的參考和學習,以下這本書值得推薦︰ Vim - Vi Improved - 作者︰Steve Oualline 出版社︰New Riders 這是第一本完全講解vim的書籍。對于初學者特別有用。其中還包含有大量實例 和圖示。欲知詳情,請訪問 http://iccf-holland.org/click5.html 以下這本書比較老了而且內容主要是vi而不是vim,但是也值得推薦︰ Learning the Vi Editor - 作者︰Linda Lamb 出版社︰O'Reilly & Associates Inc. 這是一本不錯的書,通過它您幾乎能夠了解到全部vi能夠做到的事情。此書的第 六個版本也包含了一些關于vim的信息。 本教程是由來自Calorado School of Minese的Michael C. Pierce、Robert K. Ware 所編寫的,其中來自Colorado State University的Charles Smith提供了 很多創意。編者通信地址是︰ bware@mines.colorado.edu 本教程已由Bram Moolenaar專為vim進行修訂。 譯制者附言︰ =========== 簡體中文教程翻譯版之譯制者為梁昌泰 ,還有 另外一個聯系地址︰linuxrat@gnuchina.org。 繁體中文教程是從簡體中文教程翻譯版使用 Debian GNU/Linux 中文項目小 組的于廣輝先生編寫的中文漢字轉碼器 autoconvert 轉換而成的,並對轉 換的結果做了一些細節的改動。 變更記錄︰ ========= 2002年08月30日 梁昌泰 感謝 RMS@SMTH 的指正,將多處錯誤修正。 2002年04月22日 梁昌泰 感謝 xuandong@sh163.net 的指正,將兩處錯別字修正。 2002年03月18日 梁昌泰 根據Bram Moolenaar先生在2002年03月16日的來信要求,將vimtutor1.4中譯 版升級到vimtutor1.5。 2001年11月15日 梁昌泰 將vimtutor1.4中譯版提交給Bram Moolenaar和Sven Guckes。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!=mmvim80/tutor/tutor.es.utf-8nu[=============================================================================== = B i e n v e n i d o a l t u t o r d e V I M - Versión 1.4 = =============================================================================== Vim es un editor muy potente que dispone de muchos mandatos, demasiados para ser explicados en un tutor como éste. Este tutor está diseñado para describir suficientes mandatos para que usted sea capaz de aprender fácilmente a usar Vim como un editor de propósito general. El tiempo necesario para completar el tutor es aproximadamente de 25-30 minutos, dependiendo de cuanto tiempo se dedique a la experimentación. Los mandatos de estas lecciones modificarán el texto. Haga una copia de este fichero para practicar (con «vimtutor» esto ya es una copia). Es importante recordar que este tutor está pensado para enseñar con la práctica. Esto significa que es necesario ejecutar los mandatos para aprenderlos adecuadamente. Si únicamente se lee el texto, se olvidarán los mandatos. Ahora, asegúrese de que la tecla de bloqueo de mayúsculas no está activada y pulse la tecla j lo suficiente para mover el cursor de forma que la Lección 1.1 ocupe completamente la pantalla. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 1.1: MOVIMIENTOS DEL CURSOR ** Para mover el cursor, pulse las teclas h,j,k,l de la forma que se indica. ** ^ k Indicación: La tecla h está a la izquierda y mueve a la izquierda. < h l > La tecla l está a la derecha y mueve a la derecha. j La tecla j parece una flecha que apunta hacia abajo. v 1. Mueva el cursor por la pantalla hasta que se sienta cómodo con ello. 2. Mantenga pulsada la tecla j hasta que se repita «automágicamente». ---> Ahora ya sabe como llegar a la lección siguiente. 3. Utilizando la tecla abajo, vaya a la Lección 1.2. Nota: Si alguna vez no está seguro sobre algo que ha tecleado, pulse para situarse en modo Normal. Luego vuelva a teclear la orden que deseaba. Nota: Las teclas de movimiento del cursor también funcionan. Pero usando hjkl podrá moverse mucho más rápido una vez que se acostumbre a ello. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 1.2: ENTRANDO Y SALIENDO DE VIM ¡¡ NOTA: Antes de ejecutar alguno de los pasos siguientes lea primero la lección entera!! 1. Pulse la tecla (para asegurarse de que está en modo Normal). 2. Escriba: :q! ---> Esto provoca la salida del editor SIN guardar ningún cambio que se haya hecho. Si quiere guardar los cambios y salir escriba: :wq 3. Cuando vea el símbolo del sistema, escriba el mandato que le trajo a este tutor. Éste puede haber sido: vimtutor Normalmente se usaría: vim tutor ---> 'vim' significa entrar al editor, 'tutor' es el fichero a editar. 4. Si ha memorizado estos pasos y se se siente con confianza, ejecute los pasos 1 a 3 para salir y volver a entrar al editor. Después mueva el cursor hasta la Lección 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 1.3: EDICIÓN DE TEXTO - BORRADO ** Estando en modo Normal pulse x para borrar el carácter sobre el cursor. **j 1. Mueva el cursor a la línea de abajo señalada con --->. 2. Para corregir los errores, mueva el cursor hasta que esté bajo el carácter que va aser borrado. 3. Pulse la tecla x para borrar el carácter sobrante. 4. Repita los pasos 2 a 4 hasta que la frase sea la correcta. ---> La vvaca saltóó soobree laa luuuuna. 5. Ahora que la línea esta correcta, continúe con la Lección 1.4. NOTA: A medida que vaya avanzando en este tutor no intente memorizar, aprenda practicando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 1.4: EDICIÓN DE TEXTO - INSERCIÓN ** Estando en modo Normal pulse i para insertar texto. ** 1. Mueva el cursor a la primera línea de abajo señalada con --->. 2. Para que la primera línea se igual a la segunda mueva el cursor bajo el primer carácter que sigue al texto que ha de ser insertado. 3. Pulse i y escriba los caracteres a añadir. 4. A medida que sea corregido cada error pulse para volver al modo Normal. Repita los pasos 2 a 4 para corregir la frase. ---> Flta texto en esta . ---> Falta algo de texto en esta línea. 5. Cuando se sienta cómodo insertando texto pase al resumen que esta más abajo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 1 1. El cursor se mueve utilizando las teclas de las flechas o las teclas hjkl. h (izquierda) j (abajo) k (arriba) l (derecha) 2. Para acceder a Vim (desde el símbolo del sistema %) escriba: vim FILENAME 3. Para salir de Vim escriba: :q! para eliminar todos los cambios. 4. Para borrar un carácter sobre el cursor en modo Normal pulse: x 5. Para insertar texto en la posición del cursor estando en modo Normal: pulse i escriba el texto pulse NOTA: Pulsando se vuelve al modo Normal o cancela un mandato no deseado o incompleto. Ahora continúe con la Lección 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 2.1: MANDATOS PARA BORRAR ** Escriba dw para borrar hasta el final de una palabra ** 1. Pulse para asegurarse de que está en el modo Normal. 2. Mueva el cursor a la línea de abajo señalada con --->. 3. Mueva el cursor al comienzo de una palabra que desee borrar. 4. Pulse dw para hacer que la palabra desaparezca. NOTA: Las letras dw aparecerán en la última línea de la pantalla cuando las escriba. Si escribe algo equivocado pulse y comience de nuevo. ---> Hay algunas palabras pásalo bien que no pertenecen papel a esta frase. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 2.2: MÁS MANDATOS PARA BORRAR ** Escriba d$ para borrar hasta el final de la línea. ** 1. Pulse para asegurarse de que está en el modo Normal. 2. Mueva el cursor a la línea de abajo señalada con --->. 3. Mueva el cursor al final de la línea correcta (DESPUÉS del primer . ). 4. Escriba d$ para borrar hasta el final de la línea. ---> Alguien ha escrito el final de esta línea dos veces. esta línea dos veces. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 2.3: SOBRE MANDATOS Y OBJETOS El formato del mandato de borrar d es como sigue: [número] d objeto O d [número] objeto donde: número - es cuántas veces se ha de ejecutar el mandato (opcional, defecto=1). d - es el mandato para borrar. objeto - es sobre lo que el mandato va a operar (lista, abajo). Una lista corta de objetos: w - desde el cursor hasta el final de la palabra, incluyendo el espacio. e - desde el cursor hasta el final de la palabra, SIN incluir el espacio. $ - desde el cursor hasta el final de la línea. NOTE: Para los aventureros, pulsando sólo el objeto estando en modo Normal sin un mandato moverá el cursor como se especifica en la lista de objetos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 2.4: UNA EXCEPCIÓN AL 'MANDATO-OBJETO' ** Escriba dd para borrar una línea entera. ** Debido a la frecuencia con que se borran líneas enteras, los diseñadores de Vim decidieron que sería más fácil el escribir simplemente dos des en una fila para borrar una línea. 1. Mueva el cursor a la segunda línea de la lista de abajo. 2. Escriba dd para borrar la línea. 3. Muévase ahora a la cuarta línea. 4. Escriba 2dd (recuerde número-mandato-objeto) para borrar las dos líneas. 1) Las rosas son rojas, 2) El barro es divertido, 3) El cielo es azul, 4) Yo tengo un coche, 5) Los relojes marcan la hora, 6) El azucar es dulce, 7) Y así eres tu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 2.5: EL MANDATO DESHACER ** Pulse u para deshacer los últimos mandatos, U para deshacer una línea entera. ** 1. Mueva el cursor a la línea de abajo señalada con ---> y sitúelo bajo el primer error. 2. Pulse x para borrar el primer caráter erróneo. 3. Pulse ahora u para deshacer el último mandato ejecutado. 4. Ahora corrija todos los errores de la línea usando el mandato x. 5. Pulse ahora U mayúscula para devolver la línea a su estado original. 6. Pulse ahora u unas pocas veces para deshacer lo hecho por U y los mandatos previos. 7. Ahora pulse CTRL-R (mantenga pulsada la tecla CTRL y pulse R) unas pocas veces para volver a ejecutar los mandatos (deshacer lo deshecho). ---> Corrrija los errores dee esttta línea y vuuelva a ponerlos coon deshacer. 8. Estos mandatos son muy útiles. Ahora pase al resumen de la Lección 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 2 1. Para borrar desde el cursor hasta el final de una palabra pulse: dw 2. Para borrar desde el cursor hasta el final de una línea pulse: d$ 3. Para borrar una línea enter pulse: dd 4. El formato de un mandato en modo Normal es: [número] mandato objeto O mandato [número] objeto donde: número - es cuántas veces se ha de ejecutar el mandato mandato - es lo que hay que hacer, por ejemplo, d para borrar objeto - es sobre lo que el mandato va a operar, por ejemplo w (palabra), $ (hasta el final de la línea), etc. 5. Para deshacer acciones previas pulse: u (u minúscula) Para deshacer todos los cambios de una línea pulse: U (U mayúscula) Para deshacer lo deshecho pulse: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 3.1: EL MANDATO «PUT» (poner) ** Pulse p para poner lo último que ha borrado después del cursor. ** 1. Mueva el cursor al final de la lista de abajo. 2. Escriba dd para borrar la línea y almacenarla en el buffer de Vim. 3. Mueva el cursor a la línea que debe quedar por debajo de la línea a mover. 4. Estando en mod Normal, pulse p para restituir la línea borrada. 5. Repita los pasos 2 a 4 para poner todas las líneas en el orden correcto. d) ¿Puedes aprenderla tu? b) Las violetas son azules, c) La inteligencia se aprende, a) Las rosas son rojas, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 3.2: EL MANDATO «REPLACE» (remplazar) ** Pulse r y un carácter para sustituir el carácter sobre el cursor. ** 1. Mueva el cursor a la primera línea de abajo señalada con --->. 2. Mueva el cursor para situarlo bajo el primer error. 3. Pulse r y el carácter que debe sustituir al erróneo. 4. Repita los pasos 2 y 3 hasta que la primera línea esté corregida. ---> ¡Cuendo esta línea fue rscrita alguien pulso algunas teclas equibocadas! ---> ¡Cuando esta línea fue escrita alguien pulsó algunas teclas equivocadas! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 3.3: EL MANDATO «CHANGE» (cambiar) ** Para cambiar parte de una palabra o toda ella escriba cw . ** 1. Mueva el cursor a la primera línea de abajo señalada con --->. 2. Sitúe el cursor en la u de lubrs. 3. Escriba cw y corrija la palabra (en este caso, escriba 'ínea'). 4. Pulse y mueva el cursor al error siguiente (el primer carácter que deba cambiarse). 5. Repita los pasos 3 y 4 hasta que la primera frase sea igual a la segunda. ---> Esta lubrs tiene unas pocas pskavtad que corregir usem el mandato change. ---> Esta línea tiene unas pocas palabras que corregir usando el mandato change. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 3.4: MÁS CAMBIOS USANDO c ** El mandato change se utiliza con los mismos objetos que delete. ** 1. El mandato change funciona de la misma forma que delete. El formato es: [número] c objeto O c [número] objeto 2. Los objetos son tambiém los mismos, tales como w (palabra), $ (fin de la línea), etc. 3. Mueva el cursor a la primera línea de abajo señalada con --->. 4. Mueva el cursor al primer error. 5. Escriba c$ para hacer que el resto de la línea sea como la segunda y pulse . ---> El final de esta línea necesita alguna ayuda para que sea como la segunda. ---> El final de esta línea necesita ser corregido usando el mandato c$. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 3 1. Para sustituir texto que ha sido borrado, pulse p . Esto Pone el texto borrado DESPUÉS del cursor (si lo que se ha borrado es una línea se situará sobre la línea que está sobre el cursor). 2. Para sustituir el carácter bajo el cursor, pulse r y luego el carácter que sustituirá al original. 3. El mandato change le permite cambiar el objeto especificado desde la posición del cursor hasta el final del objeto; e.g. Pulse cw para cambiar desde el cursor hasta el final de la palabra, c$ para cambiar hasta el final de la línea. 4. El formato para change es: [número] c objeto O c [número] objeto Pase ahora a la lección siguiente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 4.1: SITUACIÓN EN EL FICHERO Y SU ESTADO ** Pulse CTRL-g para mostrar su situación en el fichero y su estado. Pulse MAYU-G para moverse a una determinada línea del fichero. ** Nota: ¡¡Lea esta lección entera antes de ejecutar alguno de los pasos!! 1. Mantenga pulsada la tecla Ctrl y pulse g . Aparece una línea de estado al final de la pantalla con el nombre del fichero y la línea en la que está situado. Recuerde el número de la línea para el Paso 3. 2. Pulse Mayu-G para ir al final del fichero. 3. Escriba el número de la línea en la que estaba y despúes Mayu-G. Esto le volverá a la línea en la que estaba cuando pulsó Ctrl-g. (Cuando escriba los números NO se mostrarán en la pantalla). 4. Si se siente confiado en poder hacer esto ejecute los pasos 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 4.2: EL MANDATO «SEARCH» (buscar) ** Escriba / seguido de una frase para buscar la frase. ** 1. En modo Normal pulse el carácter / . Fíjese que tanto el carácter / como el cursor aparecen en la última línea de la pantalla, lo mismo que el mandato : . 2. Escriba ahora errroor . Esta es la palabra que quiere buscar. 3. Para repetir la búsqueda, simplemente pulse n . Para busacar la misma frase en la dirección opuesta, pulse Mayu-N . 4. Si quiere buscar una frase en la dirección opuesta (hacia arriba), utilice el mandato ? en lugar de / . ---> Cuando la búsqueda alcanza el final del fichero continuará desde el principio. «errroor» no es la forma de deletrear error; errroor es un error. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 4.3: BÚSQUEDA PARA COMPROBAR PARÉNTESIS ** Pulse % para encontrar el paréntesis correspondiente a ),] o } . ** 1. Sitúe el cursor en cualquiera de los caracteres ), ] o } en la línea de abajo señalada con --->. 2. Pulse ahora el carácter % . 3. El cursor debería situarse en el paréntesis (, corchete [ o llave { correspondiente. 4. Pulse % para mover de nuevo el cursor al paréntesis, corchete o llave correspondiente. ---> Esto ( es una línea de prueba con (, [, ], {, y } en ella. )). Nota: ¡Esto es muy útil en la detección de errores en un programa con paréntesis, corchetes o llaves disparejos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 4.4: UNA FORMA DE CAMBIAR ERRORES ** Escriba :s/viejo/nuevo/g para sustituir 'viejo' por 'nuevo'. ** 1. Mueva el cursor a la línea de abajo señalada con --->. 2. Escriba :s/laas/las/ . Tenga en cuenta que este mandato cambia sólo la primera aparición en la línea de la expresión a cambiar. ---> Laas mejores épocas para ver laas flores son laas primaveras. 4. Para cambiar todas las apariciones de una expresión ente dos líneas escriba :#,#s/viejo/nuevo/g donde #,# son los números de las dos líneas. Escriba :%s/viejo/nuevo/g para hacer los cambios en todo el fichero. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 4 1. Ctrl-g muestra la posición del cursor en el fichero y su estado. Mayu-G mueve el cursor al final del fichero. Un número de línea seguido de Mayu-G mueve el cursor a la línea con ese número. 2. Pulsando / seguido de una frase busca la frase hacia ADELANTE. Pulsando ? seguido de una frase busca la frase hacia ATRÁS. Después de una búsqueda pulse n para encontrar la aparición siguiente en la misma dirección. 3. Pulsando % cuando el cursor esta sobre (,), [,], { o } localiza la pareja correspondiente. 4. Para cambiar viejo por nuevo en una línea pulse :s/viejo/nuevo Para cambiar todos los viejo por nuevo en una línea pulse :s/viejo/nuevo/g Para cambiar frases entre dos números de líneas pulse :#,#s/viejo/nuevo/g Para cambiar viejo por nuevo en todo el fichero pulse :%s/viejo/nuevo/g Para pedir confirmación en cada caso añada 'c' :%s/viejo/nuevo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 5.1: CÓMO EJECUTAR UN MANDATO EXTERNO ** Escriba :! seguido de un mandato externo para ejecutar ese mandato. ** 1. Escriba el conocido mandato : para situar el cursor al final de la pantalla. Esto le permitirá introducir un mandato. 2. Ahora escriba el carácter ! (signo de admiración). Esto le permitirá ejecutar cualquier mandato del sistema. 3. Como ejemplo escriba ls después del ! y luego pulse . Esto le mostrará una lista de su directorio, igual que si estuviera en el símbolo del sistema. Si ls no funciona utilice !:dir . --->Nota: De esta manera es posible ejecutar cualquier mandato externo. --->Nota: Todos los mandatos : deben finalizarse pulsando . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 5.2: MÁS SOBRE GUARDAR FICHEROS ** Para guardar los cambios hechos en un fichero, escriba :w NOMBRE_DE_FICHERO. ** 1. Escriba :!dir o :!ls para ver una lista de su directorio. Ya sabe que debe pulsar después de ello. 2. Elija un nombre de fichero que todavía no exista, como TEST. 3. Ahora escriba :w TEST (donde TEST es el nombre de fichero elegido). 4. Esta acción guarda todo el fichero (Vim Tutor) bajo el nombre TEST. Para comprobarlo escriba :!dir de nuevo y vea su directorio. ---> Tenga en cuenta que si sale de Vim y entra de nuevo con el nombre de fichero TEST, el fichero sería una copia exacta del tutor cuando lo ha guardado. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 5.3: UN MANDATO DE ESCRITURA SELECTIVO ** Para guardar parte del fuchero escriba :#,# NOMBRE_DEL_FICHERO ** 1. Escriba de nuevo, una vez más, :!dir o :!ls para obtener una lista de su directorio y elija nombre de fichero adecuado, como TEST. 2. Mueva el cursor al principio de la pantalla y pulse Ctrl-g para saber el número de la línea correspondiente. ¡RECUERDE ESTE NÚMERO! 3. Ahora mueva el cursor a la última línea de la pantalla y pulse Ctrl-g de nuevo. ¡RECUERDE TAMBIÉN ESTE NÚMERO! 4. Para guardar SOLAMENTE una parte de un fichero, escriba :#,# w TEST donde #,# son los números que usted ha recordado (primera línea, última línea) y TEST es su nombre de dichero. 5. De nuevo, vea que el fichero esta ahí con :!dir pero NO lo borre. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 5.4: RECUPERANDO Y MEZCLANDO FICHEROS ** Para insertar el contenido de un fichero escriba :r NOMBRE_DEL_FICHERO ** 1. Escriba :!dir para asegurarse de que su fichero TEST del ejercicio anterior está presente. 2. Situe el cursor al principio de esta pantalla. NOTA: Después de ejecutar el paso 3 se verá la Lección 5.3. Luego muévase hacia ABAJO para ver esta lección de nuevo. 3. Ahora recupere el fichero TEST utilizando el mandato :r TEST donde TEST es el nombre del fichero. NOTA: El fichero recuperado se sitúa a partir de la posición del cursor. 4. Para verificar que el fichero ha sido recuperado, mueva el cursor hacia arriba y vea que hay dos copias de la Lección 5.3, la original y la versión del fichero. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 5 1. :!mandato ejecuta un mandato externo. Algunos ejemplos útiles son: :!dir - muestra el contenido de un directorio. :!del NOMBRE_DE_FICHERO - borra el fichero NOMBRE_DE FICHERO. 2. :#,#w NOMBRE_DE _FICHERO guarda desde las líneas # hasta la # en el fichero NOMBRE_DE_FICHERO. 3. :r NOMBRE_DE _FICHERO recupera el fichero del disco NOMBRE_DE FICHERO y lo inserta en el fichero en curso a partir de la posición del cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 6.1: EL MANDATO «OPEN» (abrir) ** Pulse o para abrir una línea debajo del cursor y situarle en modo Insert ** 1. Mueva el cursor a la línea de abajo señalada con --->. 2. Pulse o (minúscula) para abrir una línea por DEBAJO del cursor y situarle en modo Insert. 3. Ahora copie la línea señalada con ---> y pulse para salir del modo Insert. ---> Luego de pulsar o el cursor se sitúa en la línea abierta en modo Insert. 4. Para abrir una línea por encima del cursor, simplemente pulse una O mayúscula, en lugar de una o minúscula. Pruebe este en la línea siguiente. Abra una línea sobre ésta pulsando Mayu-O cuando el curso está en esta línea. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 6.2: EL MANDATO «APPEND» (añadir) ** Pulse a para insertar texto DESPUÉS del cursor. ** 1. Mueva el cursor al final de la primera línea de abajo señalada con ---> pulsando $ en modo Normal. 2. Escriba una a (minúscula) para añadir texto DESPUÉS del carácter que está sobre el cursor. (A mayúscula añade texto al final de la línea). Nota: ¡Esto evita el pulsar i , el último carácter, el texto a insertar, , cursor a la derecha y, finalmente, x , sólo para añadir algo al final de una línea! 3. Complete ahora la primera línea. Nótese que append es exactamente lo mismo que modo Insert, excepto por el lugar donde se inserta el texto. ---> Esta línea le permitirá praticar ---> Esta línea le permitirá praticar el añadido de texto al final de una línea. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 6.3: OTRA VERSIÓN DE «REPLACE» (remplazar) ** Pulse una R mayúscula para sustituir más de un carácter. ** 1. Mueva el cursor a la primera línea de abajo señalada con --->. 2. Sitúe el cursor al comienzo de la primera palabra que sea diferente de las de la segunda línea marcada con ---> (la palabra 'anterior'). 3. Ahora pulse R y sustituya el resto del texto de la primera línea escribiendo sobre el viejo texto para que la primera línea sea igual que la primera. ---> Para hacer que esta línea sea igual que la anterior use las teclas. ---> Para hacer que esta línea sea igual que la siguiente escriba R y el texto. 4. Nótese que cuando pulse para salir, el texto no alterado permanece. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 6.4: FIJAR OPCIONES ** Fijar una opción de forma que una búsqueda o sustitución ignore la caja ** (Para el concepto de caja de una letra, véase la nota al final del fichero) 1. Busque 'ignorar' introduciendo: /ignorar Repita varias veces la búsque pulsando la tecla n 2. Fije la opción 'ic' (Ignorar la caja de la letra) escribiendo: :set ic 3. Ahora busque 'ignorar' de nuevo pulsando n Repita la búsqueda varias veces más pulsando la tecla n 4. Fije las opciones 'hlsearch' y 'insearch': :set hls is 5. Ahora introduzca la orden de búsqueda otra vez, y vea qué pasa: /ignore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMEN DE LA LECCIÓN 6 1. Pulsando o abre una línea por DEBAJO del cursor y sitúa el cursor en la línea abierta en modo Insert. Pulsando una O mayúscula se abre una línea SOBRE la que está el cursor. 2. Pulse una a para insertar texto DESPUÉS del carácter sobre el cursor. Pulsando una A mayúscula añade automáticamente texto al final de la línea. 3. Pulsando una R mayúscula se entra en modo Replace hasta que, para salir, se pulse . 4. Escribiendo «:set xxx» fija la opción «xxx» ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lección 7: MANDATOS PARA LA AYUDA EN LÍNEA ** Utilice el sistema de ayuda en línea ** Vim dispone de un sistema de ayuda en línea. Para activarlo, pruebe una de estas tres formas: - pulse la tecla (si dispone de ella) - pulse la tecla (si dispone de ella) - escriba :help Escriba :q para cerrar la ventana de ayuda. Puede encontrar ayuda en casi cualquier tema añadiendo un argumento al mandato «:help» mandato. Pruebe éstos: :help w :help c_ :help insert-index ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aquí concluye el tutor de Vim. Está pensado para dar una visión breve del editor Vim, lo suficiente para permitirle usar el editor de forma bastante sencilla. Está muy lejos de estar completo pues Vim tiene muchísimos más mandatos. Para lecturas y estudios posteriores se recomienda el libro: Learning the Vi Editor - por Linda Lamb Editorial: O'Reilly & Associates Inc. Es un buen libro para llegar a saber casi todo lo que desee hacer con Vi. La sexta edición incluye también información sobre Vim. Este tutorial ha sido escrito por Michael C. Pierce y Robert K. Ware, Colorado School of Mines utilizando ideas suministradas por Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Modificado para Vim por Bram Moolenaar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Traducido del inglés por: Eduardo F. Amatria Correo electrónico: eferna1@platea.pntic.mec.es ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!uuvim80/tutor/tutor.hrnu[=============================================================================== = D o b r o d o l i u VIM p r i r u n i k - Verzija 1.7 = =============================================================================== Vim je vrlo moan editor koji ima mnogo naredbi, previe da bi ih se svih ovdje spomenulo. Namjena prirunika je objasniti dovoljno naredbi kako bi poetnici znatno lake koristili ovaj svestran editor. Priblino vrijeme potrebno za uspjean zavretak prirunika je oko 30 minuta a ovisi o tome koliko e te vremena odvojiti za vjebanje. UPOZORENJE: Naredbe u ovom priruniku e promijeniti ovaj tekst. Napravite kopiju ove datoteke kako bi ste na istoj vjebali (ako ste pokrenuli "vimtutor" ovo je ve kopija). Vrlo je vano primijetiti da je ovaj prirunik namijenjen za vjebanje. Preciznije, morate izvriti naredbe u Vim-u kako bi ste iste nauili pravilno koristiti. Ako samo itate tekst, zaboraviti e te naredbe! Ako je CapsLock ukljuen ISKLJUITE ga. Pritiskajte tipku j kako bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.1: POMICANJE KURSORA ** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano ** ^ k Savjet: h tipka je lijevo i pomie kursor lijevo. < h l > l tipka je desno i pomie kursor desno. j j izgleda kao strelica usmjerena dolje. v 1. Pomiite kursor po ekranu dok se ne naviknete na koritenje. 2. Drite tipku (j) pritisnutom. Sada znate kako doi do sljedee lekcije. 3. Koristei tipku j prijeite na sljedeu lekciju 1.2. NAPOMENA: Ako niste sigurni to ste zapravo pritisnuli uvijek koristite tipku kako bi preli u Normal mod i onda pokuajte ponovno. NAPOMENA: Kursorske tipke rade isto. Koritenje hjkl tipaka je znatno bre, nakon to se jednom naviknete na njihovo koritenje. Stvarno! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.2: IZLAZ IZ VIM-a !! UPOZORENJE: Prije izvoenja bilo kojeg koraka, proitajte cijelu lekciju!! 1. Pritisnite tipku (Vim je sada u Normal modu). 2. Otipkajte: :q! . Izlaz iz editora, GUBE se sve napravljene promjene. 3. Kada se pojavi ljuska, utipkajte naredbu koja je pokrenula ovaj prirunik: vimtutor 4. Ako ste upamtili ove korake, izvrite ih redom od 1 do 3 kako bi ponovno pokrenuli editor. NAPOMENA: :q! ponitava sve promjene koje ste napravili. U sljedeim lekcijama nauit e te kako promjene sauvati. 5. Pomaknite kursor na Lekciju 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.3: PROMJENA TEKSTA - BRISANJE ** Pritisnite x za brisanje znaka pod kursorom. ** 1. Pomaknite kursor na liniju oznaenu s --->. 2. Kako bi ste ispravili pogreke, pomiite kursor dok se ne bude nalazio na slovu kojeg trebate izbrisati. 3. Pritisnite tipku x kako bi uklonili neeljeno slovo. 4. Ponovite korake od 2 do 4 dok ne ispravite sve pogreke. ---> KKKravaa jee presskoila mmjeseccc. 5. Nakon to ispravite liniju, prijeite na lekciju 1.4. NAPOMENA: Koristei ovaj prirunik ne pokuavajte pamtiti ve uite primjenom. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE ** Pritisnite i za ubacivanje teksta ispred kursora. ** 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. 2. Kako bi napravili prvu liniju istovjetnoj drugoj, pomaknite kursor na prvi znak POSLIJE kojeg e te utipkati potreban tekst. 3. Pritisnite i te utipkajte potrebne nadopune. 4. Nakon to ispravite pogreku pritisnite kako bi vratili Vim u Normal mod. Ponovite korake od 2 do 4 kako bi ispravili sve pogreke. ---> Nedje no teka od v lin. ---> Nedostaje neto teksta od ove linije. 5. Prijeite na sljedeu lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE ** Pritisnite A za dodavanje teksta. ** 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. Nije vano na kojem se slovu nalazi kursor na toj liniji. 2. Pritisnite A i napravite potrebne promjene. 3. Nakon to ste dodali tekst, pritisnite za povratak u Normal mod. 4. Pomaknite kursor na drugu liniju oznaenu s ---> i ponovite korake 2 i 3 dok ne popravite tekst. ---> Ima neto teksta koji nedostaje n Ima neto teksta koji nedostaje na ovoj liniji. ---> Ima neto teksta koji ne Ima neto teksta koji nedostaje ba ovdje. 5. Prijeite na lekciju 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.6: PROMJENA DATOTEKE ** Koristite :wq za spremanje teksta i naputanje Vim-a. ** !! UPOZORENJE: Prije izvravanja bilo kojeg koraka, proitajte lekciju!! 1. Izaite iz programa kao sto ste napravili u lekciji 1.2: :q! 2. Iz ljuske utipkajte sljedeu naredbu: vim tutor 'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju elite ureivati. Koristite datoteku koju imate ovlasti mijenjati. 3. Ubacite i izbriite tekst kao to ste to napravili u lekcijama prije. 4. Sauvajte promjenjeni tekst i izaite iz Vim-a: :wq 5. Ponovno pokrenite vimtutor i nastavite itati saetak koji sljedi. 6. Nakon sto proitate gornje korake i u potpunosti ih razumijete: izvrite ih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1 SAETAK 1. Kursor se pomie strelicama ili pomou hjkl tipaka. h (lijevo) j (dolje) k (gore) l (desno) 2. Pokretanje Vim-a iz ljuske: vim IME_DATOTEKE 3. Izlaz: :q! sve promjene su izgubljene. ILI: :wq promjene su sauvane. 4. Brisanje znaka na kojem se nalazi kursor: x 5. Ubacivanja ili dodavanje teksta: i utipkajte tekst unos ispred kursora A utipkajte tekst dodavanje na kraju linije NAPOMENA: Tipkanjem tipke prebacuje Vim u Normal mod i prekida neeljenu ili djelomino zavrenu naredbu. Nastavite itati Lekciju 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.1: NAREDBE BRISANJA ** Tipkajte dw za brisanje rijei. ** 1. Pritisnite kako bi bili sigurni da je Vim u Normal modu. 2. Pomaknite kursor na liniju oznaenu s --->. 3. Pomaknite kursor na poetak rijei koju treba izbrisati. 4. Otipkajte dw kako bi uklonili rije. NAPOMENA: Vim e prikazati slovo d na zadnjoj liniji kad ga otipkate. Vim eka da otipkate w . Ako je prikazano neko drugo slovo, krivo ste otipkali; pritisnite i pokuajte ponovno. ---> Neke rijei smijeno ne pripadaju na papir ovoj reenici. 5. Ponovite korake 3 i 4 dok ne ispravite reenicu; prijeite na Lekciju 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.2: JO BRISANJA ** Otipkajte d$ za brisanje znakova do kraja linije. ** 1. Pritisnite kako bi bili sigurni da je Vim u Normal modu. 2. Pomaknite kursor na liniju oznaenu s --->. 3. Pomaknite kursor do kraja ispravne reenice (POSLJE prve . ). 4. Otipkajte d$ kako bi izbrisali sve znakove do kraja linije. ---> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput. 5. Prijeite na Lekciju 2.3 za bolje objanjenje. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta. Oblik naredbe brisanja sa d operatorom je sljedei: d pokret Pri emu je: d - operator brisanja. pokret - ono na emu e se operacija izvravati (navedeno u nastavku). Kratka lista pokreta: w - sve do poetka sljedee rijei, NE UKLJUUJUI prvo slovo. e - sve do kraja trenutane rijei, UKLJUUJUI zadnje slovo. $ - sve do kraje linije, UKLJUUJUI zadnje slovo. Tipkanjem de e se brisati od kursora do kraja rijei. NAPOMENA: Pritiskajui samo pokrete dok ste u Normal modu bez operatora e pomicati kursor kao to je navedeno. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.4: KORITENJE BROJANJA ZA POKRETE ** Tipkanjem nekog broja prije pokreta, pokret se izvrava toliko puta. ** 1. Pomaknite kursor na liniju oznaenu s --->. 2. Otipkajte 2w da pomaknete kursor dvije rijei naprijed. 3. Otipkajte 3e da pomaknete kursor na kraj tree rijei naprijed. 4. Otipkajte 0 (nulu) da pomaknete kursor na poetak linije. 5. Ponovite korake 2 i 3 s nekim drugim brojevima. ---> Reenica sa rijeima po kojoj moete pomicati kursor. 6. Prijeite na Lekciju 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.5: KORITENJE BROJANJA ZA VEE BRISANJE ** Tipkanje broja N s operatorom ponavlja ga N-puta. ** U kombinaciji operatora brisanja i pokreta spomenutih iznad ubacujete broj prije pokreta kako bi izbrisali vie znakova: d broj pokret 1. Pomaknite kursor na prvo slovo u rijei sa VELIKIM SLOVIMA oznaenu s --->. 2. Otipkajte 2dw da izbriete dvije rijei sa VELIKIM SLOVIMA 3. Ponovite korake 1 i 2 sa razliitim brojevima da izbriete uzastopne rijei sa VELIKIM SLOVIMA sa samo jednom naredbom. ---> ova ABC DE linija FGHI JK LMN OP rijei je RS TUVZ popravljena. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.6: OPERIRANJE NAD LINIJAMA ** Otipkajte dd za brisanje cijele linije. ** Zbog uestalosti brisanja cijelih linija, dizajneri Vi-a su odluili da je lake brisati linije tipkanjem d dvaput. 1. Pomaknite kursor na drugu liniju u donjoj kitici. 2. Otipkajte dd kako bi izbrisali liniju. 3. Pomaknite kursor na etvrtu liniju. 4. Otipkajte 2dd kako bi izbrisali dvije linije. ---> 1) Rue su crvene, ---> 2) Plaa je super, ---> 3) Ljubice su plave, ---> 4) Imam auto, ---> 5) Satovi ukazuju vrijeme, ---> 6) eer je sladak ---> 7) Kao i ti. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.7: NAREDBA PONITENJA ** Pritisnite u za ponitenje zadnje naredbe, U za cijelu liniju. ** 1. Pomaknite kursor na liniju oznaenu s ---> i postavite kursor na prvu pogreku. 2. Otipkajte x kako bi izbrisali prvi neeljeni znak. 3. Otipkajte u kako bi ponitili zadnju izvrenu naredbu. 4. Ovaj put ispravite sve pogreke na liniji koristei x naredbu. 5. Sada utipkajte veliko U kako bi ponitili sve promjene na liniji, vraajui je u prijanje stanje. 6. Sada utipkajte u nekoliko puta kako bi ponitili U i prijanje naredbe. 7. Sada utipkajte CTRL-R (drei CTRL tipku pritisnutom dok ne pritisnete R) nekoliko puta kako bi vratili promjene (ponitili ponitenja). ---> Poopravite pogreke nna ovvoj liniji ii poonititeee ih. 8. Vrlo korisne naredbe. Prijeite na saetak Lekcije 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2 SAETAK 1. Brisanje od kursora do sljedee rijei: dw 2. Brisanje od kursora do kraja linije: d$ 3. Brisanje cijele linije: dd 4. Za ponavljanje pokreta prethodite mu broj: 2w 5. Oblik naredbe mijenjanja: operator [broj] pokret gdje je: operator - to napraviti, npr. d za brisanje [broj] - neobavezan broj ponavljanja pokreta pokret - kretanje po tekstu po kojem se operira, kao to je: w (rije), $ (kraj linije), itd. 6. Postavljanje kursora na poetak linije: 0 7. Za ponitenje prethodnih promjena, pritisnite: u (malo u) Za ponitenje svih promjena na liniji, pritisnite: U (veliko U) Za vraanja promjena, utipkajte: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.1: NAREDBA POSTAVI ** p za unos prethodno izbrisanog teksta iza kursora. ** 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. 2. Otipkajte dd kako bi izbrisali liniju i spremili je u Vim registar. 3. Pomaknite kursor na liniju c), IZNAD linije koju trebate unijeti. 4. Otipkajte p kako bi postavili liniju ispod kursora. 5. Ponovite korake 2 do 4 kako bi postavili sve linije u pravilnom rasporedu. ---> d) Moe li i ti nauiti? ---> b) Ljubice su plave, ---> c) Inteligencija je nauena, ---> a) Rue su crvene, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.2: NAREDBA PROMJENE ** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . ** 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. 2. Pomaknite kursor tako da se nalazi na prvoj pogreci. 3. Otipkajte r i nakon toga ispravan znak na tom mjestu. 4. Ponovite korake 2 i 3 sve dok prva linije ne bude istovjetna drugoj. ---> Kede ju ovu limija tupjana, natko je protuskao kruve tupke! ---> Kada je ova linija tipkana, netko je pritiskao krive tipke! 5. Prijeite na Lekciju 3.2. NAPOMENA: Prisjetite da trebate uiti vjebanjem, ne pamenjem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.3: OPERATOR MIJENJANJA ** Za mijenjanje do kraja rijei, istipkajte ce . ** 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. 2. Postavite kursor na a u lackmb. 3. Otipkajte ce i ispravite rije (u ovom sluaju otipkajte inija ). 4. Pritisnite i pomaknite kursor na sljedei znak kojeg je potrebno ispraviti. 5. Ponovite korake 3 i 4 sve dok prva reenica ne postane istovjetna drugoj. ---> Ova lackmb ima nekoliko rjlcah koje trfcb mijdmlfsz. ---> Ova linija ima nekoliko rijei koje treba mijenjati. Primijetite da ce brie rije i postavlja Vim u Insert mod. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.4: JO MIJENJANJA KORITENJEM c ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. ** 1. Operator mijenjanja se koristi na isti nain kao i operator brisanja: c [broj] pokret 2. Pokreti su isti, npr: w (rije) i $ (kraj linije). 3. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. 4. Pomaknite kursor na prvu pogreku. 5. Otipkajte c$ i utipkajte ostatak linije tako da bude istovjetna drugoj te pritisnite . ---> Kraj ove linije treba pomo tako da izgleda kao linija ispod. ---> Kraj ove linije treba ispraviti koritenjem c$ naredbe. NAPOMENA: Moete koristiti Backspace za ispravljanje greaka. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3 SAETAK 1. Za postavljanje teksta koji je upravo izbrisan, pritisnite p . Ovo postavlja tekst IZA kursora (ako je pak linija izbrisana tekst se postavlja na liniju ispod kursora). 2. Za promjenu znaka na kojem se nalazi kursor, pritisnite r i nakon toga eljeni znak. 3. Operator mijenjanja dozvoljava promjenu teksta od kursora do pozicije do koje dovede pokret. tj. Otipkajte ce za mijenjanje od kursora do kraja rijei, c$ za mijenjanje od kursora do kraja linije. 4. Oblik naredbe mijenjanja: c [broj] pokret Prijeite na sljedeu lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke. Pritisnite G za pomicanje kursora na neku liniju u datoteci. ** NAPOMENA: Proitajte cijelu lekciju prije izvrenja bilo kojeg koraka!! 1. Drite Ctrl tipku pritisnutom i pritisnite g . Ukratko: CTRL-G. Vim e ispisati poruku na dnu ekrana sa imenom datoteke i pozicijom kursora u datoteci. Zapamtite broj linije za 3. korak. NAPOMENA: Moete vidjeti poziciju kursora u donjem desnom kutu ako je postavka 'ruler' aktivirana (objanjeno u 6. lekciji). 2. Pritisnite G za pomicanje kursora na kraj datoteke. Otipkajte gg za pomicanje kursora na poetak datoteke. 3. Otipkajte broj linije na kojoj ste bili maloprije i zatim G . Kursor e se vratiti na liniju na kojoj se nalazio kada ste otipkali CTRL-G. 4. Ako ste spremni, izvrite korake od 1 do 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.2: NAREDBE TRAENJA ** Otipkajte / i nakon toga izraz kojeg elite traiti. ** 1. U Normal modu otipkajte / znak. Primijetite da se znak pojavio zajedno sa kursorom na dnu ekrana kao kod : naredbe. 2. Sada otipkajte 'grrrreka' . To je rije koju zapravo traite. 3. Za ponovno traenje istog izraza, otipkajte n . Za traenje istog izraza ali u suprotnom smjeru, otipkajte N . 4. Za traenje izraza unatrag, koristite ? umjesto / . 5. Za povratak na prethodnu poziciju koristite CTRL-O (drite Ctrl pritisnutim dok ne pritisnete tipku o). Ponavljajte sve dok se ne vratite na poetak. CTRL-I slino kao CTRL-O ali u suprotnom smjeru. ---> "pogrrrreka" je pogreno; umjesto pogrrrreka treba stajati pogreka. NAPOMENA: Ako se traenjem doe do kraja datoteke nastavit e se od njenog poetka osim ako je postavka 'wrapscan' deaktivirana. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.3: TRAENJE PRIPADAJUE ZAGRADE ** Otipkajte % za pronalazak pripadajue ), ] ili } . ** 1. Postavite kursor na bilo koju od ( , [ ili { otvorenih zagrada u liniji oznaenoj s --->. 2. Otipkajte znak % . 3. Kursor e se pomaknuti na pripadajuu zatvorenu zagradu. 4. Otipkajte % kako bi pomakli kursor na drugu pripadajuu zagradu. 5. Pomaknite kursor na neku od (,),[,],{ ili } i ponovite % naredbu. ---> Linija ( testiranja obinih ( [ uglatih ] i { vitiastih } zagrada.)) NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadajuim zagradama! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.4: NAREDBE ZAMIJENE ** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. ** 1. Pomaknite kursor na liniju oznaenu s --->. 2. Otipkajte :s/cvr/cvr . Primjetite da ova naredba zamjenjuje samo prvi "cvr" u liniji. 3. Otipkajte :s/cvr/cvr/g . Dodavanje g stavke znai da e se naredba izvriti na cijeloj liniji, zamjenjivanjem svih "cvr" u liniji. ---> i cvri cvri cvrak na voru crne smre. 4. Za zamjenu svih izraza u rasponu dviju linija, otipkajte :#,#s/staro/novo/g #,# su brojevi linije datoteke na kojima te izmeu njih e se izvriti zamjena. Otipkajte :%s/staro/novo/g za zamjenu svih izraza u cijeloj datoteci. Otipkajte :%s/staro/novo/gc za pronalazak svakog izraza u datoteci i potvrdu zamjene. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4 SAETAK 1. CTRL-G prikazuje poziciju kursora u datoteci i status datoteke. G postavlja kursor na zadnju liniju datoteke. broj G postavlja kursor na broj liniju. gg postavlja kursor na prvu liniju. 2. Tipkanje / sa izrazom trai UNAPRIJED taj izraz. Tipkanje ? sa izrazom trai UNATRAG taj izraz. Nakon naredbe traenja koristite n za pronalazak izraza u istom smjeru, i N za pronalazak istog izraza ali u suprotnom smjeru. CTRL-O vraa kursor na prethodnu poziciju, CTRL-I na sljedeu poziciju. 3. Tipkanje % dok je kursor na zagradi pomie ga na pripadajuu zagradu. 4. Za zamjenu prvog izraza staro za izraz novo :s/staro/novo Za zamjenu svih izraza staro na cijeloj liniji :s/staro/novo/g Za zamjenu svih izraza staro u rasponu linija #,# :#,#s/staro/novo/g Za zamjenu u cijeloj datoteci :%s/staro/novo/g Za potvrdu svake zamjene dodajte 'c' :%s/staro/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.1: IZVRAVANJE VANJSKIH NAREDBI ** Otipkajte :! sa vanjskom naredbom koju elite izvriti. ** 1. Otipkajte poznatu naredbu : kako bi kursor premjestili na dno ekrana. Time omoguavate unos naredbe u naredbenoj liniji. 2. Otipkajte znak ! (usklinik). Tako omoguavate izvravanje naredbe vanjske ljuske. 3. Kao primjer otipkajte ls nakon ! te pritisnite . Ovo e prikazati sadraj direktorija, kao da ste u ljusci. Koristite :!dir ako :!ls ne radi. NAPOMENA: Mogue je izvravati bilo koju vanjsku naredbu na ovaj nain, zajedno sa njenim argumentima. NAPOMENA: Sve : naredbe se izvravaju nakon to pritisnete U daljnjem tekstu to nee uvijek biti napomenuto. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.2: VIE O SPREMANJU DATOTEKA ** Za spremanje promjena, otipkajte :w IME_DATOTEKE. ** 1. Otipkajte :!dir ili :!ls za pregled direktorija. Ve znate da morate pritisnuti na kraju tipkanja. 2. Izaberite ime datoteke koja jo ne postoji, npr. TEST. 3. Otipkajte: :w TEST (gdje je TEST ime koje ste prethodno odabrali.) 4. Time e te spremiti cijelu datoteku (Vim Tutor) pod imenom TEST. Za provjeru, otipkajte ponovno :!dir ili :!ls za pregled direktorija. NAPOMENA: Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST , datoteka bi bila potpuna kopija ove datoteke u trenutku kada ste je spremili. 5. Izbriite datoteku tako da otipkate (MS-DOS): :!del TEST ili (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.3: SPREMANJE OZNAENOG TEKSTA ** Kako bi spremili dio datoteke, otipkajte v pokret :w IME_DATOTEKE ** 1. Pomaknite kursor na ovu liniju. 2. Pritisnite v i pomaknite kursor pet linija ispod ove. Primijetite promjenu, oznaeni tekst se razlikuje od obinog. 3. Pritisnite : znak. Na dnu ekrana pojavit e se :'<,'> . 4. Otipkajte w TEST , pritom je TEST ime datoteke koja jo ne postoji. Provjerite da zaista pie :'<,'>w TEST prije nego to pritisnite . 5. Vim e spremiti oznaeni tekst u TEST. Provjerite sa :!dir ili :!ls . Nemojte je jo brisati! Koristiti e te je u sljedeoj lekciji. NAPOMENA: Tipka v zapoinje Vizualno oznaavanje. Moete pomicati kursor unaokolo kako bi mijenjali veliinu oznaenog teksta. Moete koristiti i operatore. Npr, d e izbrisati oznaeni tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.4: UITAVANJE DATOTEKA ** Za ubacivanje sadraja datoteke, otipkajte :r IME_DATOTEKE ** 1. Postavite kursor iznad ove linije. NAPOMENA: Nakon to izvrite 2. korak vidjeti e te tekst iz Lekcije 5.3. Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju. 2. Uitajte vau TEST datoteku koristei naredbu :r TEST gdje je TEST ime datoteke koju ste koristili u prethodnoj lekciji. Sadraj uitane datoteke je ubaen liniju ispod kursora. 3. Kako bi provjerili da je datoteka uitana, vratite kursor unatrag i primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke. NAPOMENA: Moete takoer uitati ispis vanjske naredbe. Npr, :r !ls e uitati ispis ls naredbe i postaviti ispis liniju ispod kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5 SAETAK 1. :!naredba izvrava vanjsku naredbu. Korisni primjeri: (MS-DOS) (Unix) :!dir :!ls - pregled direktorija. :!del DATOTEKA :!rm DATOTEKA - brie datoteku DATOTEKA. 2. :w DATOTEKA zapisuje trenutanu datoteku na disk sa imenom DATOTEKA. 3. v pokret :w IME_DATOTEKE sprema vizualno oznaene linije u datoteku IME_DATOTEKE. 4. :r IME_DATOTEKE uitava datoteku IME_DATOTEKE sa diska i stavlja njen sadraj liniju ispod kursora. 5. :r !dir uitava ispis naredbe dir i postavlja sadraj ispisa liniju ispod kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.1: NAREDBA OTVORI ** Pritisnite o kako bi otvorili liniju ispod kursora i preli u Insert mod. ** 1. Pomaknite kursor na sljedeu liniju oznaenu s --->. 2. Otipkajte malo o kako bi otvorili novu liniju ISPOD kursora i preli u Insert mod. 3. Otipkajte neto teksta i nakon toga pritisnite kako bi napustili Insert mod. ---> Nakon to pritisnete o kursor e prei u novu liniju u Insert mod. 4. Za otvaranje linije IZNAD kursora, otipkajte umjesto malog o veliko O , Pokuajte na donjoj liniji oznaenoj s --->. ---> Otvorite liniju iznad ove - otipkajte O dok je kursor na ovoj liniji. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.2: NAREDBA DODAJ ** Otipkajte a za dodavanje teksta IZA kursora. ** 1. Pomaknite kursor na poetak sljedee linije oznaene s --->. 2. Tipkajte e dok se kursor ne nalazi na kraju li . 3. Otipkajte a (malo) kako bi dodali tekst IZA kursora. 4. Dopunite rije kao to je na liniji ispod. Pritisnite za izlaz iz Insert moda. 5. Sa e prijeite na sljedeu nepotpunu rije i ponovite korake 3 i 4. ---> Ova li omoguava vje dodav teksta nekoj liniji. ---> Ova linija omoguava vjebanje dodavanja teksta nekoj liniji. NAPOMENA: Sa i, a, i A prelazite u isti Insert mod, jedina razlika je u poziciji od koje e se tekst ubacivati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.3: DRUGI NAIN MIJENJANJA ** Otipkajte veliko R kako bi zamijelili vie od jednog znaka. ** 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. Pomaknite kursor na poetak prvog xxx . 2. Pritisnite R i otipkajte broj koji je liniju ispod, tako da zamijeni xxx . 3. Pritisnite za izlaz iz Replace moda. Primijetite da je ostatak linije ostao nepromjenjen. 5. Ponovite korake kako bi zamijenili preostali xxx. ---> Zbrajanje: 123 plus xxx je xxx. ---> Zbrajanje: 123 plus 456 je 579. NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, svaki otipkani znak brie ve postojei. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA ** Koristite y operator za kopiranje a p za lijepljenje teksta. ** 1. Pomaknite kursor na liniju s ---> i postavite kursor nakon "a)". 2. Pokrenite Visual mod sa v i pomaknite kursor sve do ispred "prva". 3. Pritisnite y kako bi kopirali oznaeni tekst. 4. Pomaknite kursor do kraja sljedee linije: j$ 5. Pritisnite p kako bi zalijepili tekst. Onda utipkajte: druga . 6. Koristite Visual mod kako bi oznaili " linija.", kopirajte: y , kursor postavite na kraj sljedee linije: j$ i ondje zalijepite tekst: p . ---> a) ovo je prva linija. b) NAPOMENA: moete koristiti y kao operator; yw kopira jednu rije. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.5: MIJENJANJE POSTAVKI ** Postavka: naredbe traenja i zamijene ne razlikuju VELIKA i mala slova ** 1. Potraite 'razlika' tipkanjem: /razlika Nekoliko puta ponovite pritiskanjem n . 2. Aktivirajte 'ic' (Ignore case) postavku: :set ic 3. Ponovno potraite 'razlika' tipkanjem n Primijetite da su sada i RAZLIKA i Razlika pronaeni. 4. Aktivirajte 'hlsearch' i 'incsearch' postavke: :set hls is 5. Otipkajte naredbu traenja i primijetite razlike: /razlika 6. Za deaktiviranje ic postavke koristite: :set noic NAPOMENA: Za neoznaavanje pronaenih izraza otipkajte: :nohlsearch NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi koristite \c u izrazu: /razlika\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6 SAETAK 1. Pritisnite o za otvaranje linije ISPOD kursora i prelazak u Insert mod. Pritisnite O za otvaranje linije IZNAD kursora. 2. Pritisnite a za unos teksta IZA kursora. Pritisnite A za unos teksta na kraju linije. 3. Naredba e pomie kursor na kraj rijei. 4. Operator y kopira tekst, p ga lijepi. 5. Tipkanjem velikog R Vim prelazi u Replace mod dok ne pritisnete . 6. Tipkanjem ":set xxx" aktivira postavku "xxx". Neke postavke su: 'ic' 'ignorecase' ne razlikuje velika/mala slova pri traenju 'is' 'incsearch' trai nedovrene izraze 'hls' 'hlsearch' oznai sve pronaene izraze Moete koristite dugo ili kratko ime postavke. 7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.1: DOBIVANJE POMOI ** Koristite on-line sustav pomoi ** Vim ima detaljan on-line sustav pomoi. Za poetak, pokuajte jedno od sljedeeg: - pritisnite tipku (ako je vaa tipkovnica ima) - pritisnite tipku (ako je vaa tipkovnica ima) - utipkajte :help Proitajte tekst u prozoru pomoi kako bi ste se znali sluiti istom. Tipkanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi. Otipkajte :q kako bi zatvorili prozor pomoi. Pronai e te pomo o bilo kojoj temi, tako da dodate upit samoj ":help" naredbi. Pokuajte (ne zaboravite pritisnuti ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.2: PRAVLJENJE SKRIPTE ** Aktivirajte Vim mogunosti ** Vim ima mnogo vie alata od Vi-ja, ali veina njih nije aktivirana. Kako bi mogli koristiti vie mogunosti napravite "vimrc" datoteku. 1. Uredite "vimrc" datoteku. Ovo ovisi o vaem sistemu: :e ~/.vimrc za Unix :e $VIM/_vimrc za MS-Windows 2. Sada uitajte primjer sadraja "vimrc" datoteke: :r $VIMRUNTIME/vimrc_example.vim 3. Sauvajte datoteku sa: :w Sljedeeg puta kada pokrenete Vim, bojanje sintakse teksta biti e aktivirano. Sve vae postavke moete dodati u "vimrc" datoteku. Za vie informacija otipkajte :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.3: AUTOMATSKO DOVRAVANJE ** Dovravanje iz naredbene linije pomou CTRL-D i ** 1. Provjerite da Vim nije u Vi modu: :set nocp 2. Pogledajte koje datoteke postoje u direktoriju: :!ls or :!dir 3. Otipkajte poetak naredbe: :e 4. Tipkajte CTRL-D i prikazati e se lista naredbi koje zapoinju sa "e". 5. Pritisnite i Vim e dopuniti unos u naredbu ":edit". 6. Dodajte razmak i poetak datoteke: :edit FIL 7. Pritisnite . Vim e nadopuniti ime datoteke (ako je jedinstveno). NAPOMENA: Mogue je dopuniti mnoge naredbe. Koristite CTRL-D i . Naroito je korisno za :help naredbe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7 SAETAK 1. Otipkajte :help ili pritisnite ili za pomo. 2. Otipkajte :help naredba kako bi dobili pomo za naredba . 3. Otipkajte CTRL-W CTRL-W za prelazak u drugi prozor 4. Otipkajte :q kako bi zatvorili prozor pomoi 5. Napravite vimrc skriptu za podizanje kako bi u nju spremali vae omiljene postavke. 6. Kada tipkate naredbu koja zapoinje sa : pritisnite CTRL-D kako bi vidjeli mogue valjane vrijednosti. Pritisnite kako bi odabrali jednu od njih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Kraj. Cilj prirunika je da pokae kratak pregled Vim editora, tek toliko da omogui njegovo koritenje. Prirunik nije potpun jer Vim ima mnogo vie naredbi. Za vie informacija: ":help user-manual". Za itanje i koritenje, preporuamo: Vim - Vi Improved - by Steve Oualline Izdava: New Riders Prva knjiga potpuno posveena Vim-u. Vrlo korisna za poetnike. Sa mnogo primjera i slika. Posjetite http://iccf-holland.org/click5.html Sljedea knjiga je neto starija i vie o Vi-u nego o Vim-u, preporuamo: Learning the Vi Editor - by Linda Lamb Izdava: O'Reilly & Associates Inc. Solidna knjiga, moete saznati skoro sve to moete napraviti u Vi-u. esto izdanje ima neto informacija i o Vim-u. Ovaj prirunik su napisali: Michael C. Pierce i Robert K. Ware, Colorado School of Mines koristei ideje Charles Smith, Colorado State University. E-pota: bware@mines.colorado.edu. Naknadne promjene napravio je Bram Moolenaar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Preveo na hrvatski: Paul B. Mahol Preinaka 1.42, Lipanj 2008 PK!55vim80/tutor/tutor.el.utf-8nu[=============================================================================== = Κ αλ ω σ ή ρ θ α τ ε σ τ ο V I M T u t o r - Έκδοση 1.5 = =============================================================================== Ο Vim είναι ένας πανίσχυρος συντάκτης που έχει πολλές εντολές, πάρα πολλές για να εξηγήσουμε σε μία περιήγηση όπως αυτή. Αυτή η περιήγηση σχεδιάστηκε για να περιγράψει ικανοποιητικά τις εντολές που θα σας κάνουν να χρησιμοποιείτε εύκολα τον Vim σαν έναν γενικής χρήσης συντάκτη. Ο κατά προσέγγιση χρόνος που απαιτείται για να ολοκληρώσετε την περιήγηση είναι 25-30 λεπτά, εξαρτώντας από το πόσο χρόνο θα ξοδέψετε για πειραματισμούς. Οι εντολές στα μαθήματα θα τροποποιήσουν το κείμενο. Δημιουργήστε ένα αντίγραφο αυτού του αρχείου για να εξασκηθείτε (αν ξεκινήσατε το "Vimtutor" αυτό είναι ήδη ένα αντίγραφο). Είναι σημαντικό να θυμάστε ότι αυτή η περιήγηση είναι οργανωμένη έτσι ώστε να διδάσκει μέσω της χρήσης. Αυτό σημαίνει ότι χρειάζεται να εκτελείτε τις εντολές για να τις μάθετε σωστά. Αν διαβάζετε μόνο το κείμενο, θα τις ξεχάσετε! Τώρα, βεβαιωθείτε ότι το πλήκτρο Caps-Lock ΔΕΝ είναι πατημένο και πατήστε το πλήκτρο j αρκετές φορές για να μετακινήσετε τον δρομέα έτσι ώστε το Μάθημα 1.1 να γεμίσει πλήρως την οθόνη. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 1.1: ΜΕΤΑΚΙΝΟΝΤΑΣ ΤΟΝ ΔΡΟΜΕΑ ** Για να κινήσετε τον δρομέα, πατήστε τα πλήκτρα h,j,k,l όπως δείχνεται. ** ^ k Hint: Το πλήκτρο h είναι αριστερά και κινεί στ' αριστερά. < h l > Το πλήκτρο l είναι δεξιά και κινεί στα δεξιά. j Το πλήκτρο j μοιάζει με βελάκι προς τα κάτω. v 1. Μετακινείστε τον δρομέα τριγύρω στην οθόνη μέχρι να νοιώθετε άνετα. 2. Κρατήστε πατημένο το κάτω πλήκτρο (j) μέχρι να επαναληφθεί. ---> Τώρα ξέρετε πώς να μετακινηθείτε στο επόμενο μάθημα. 3. Χρησιμοποιώντας το κάτω πλήκτρο, μετακινηθείτε στο Μάθημα 1.2. Σημείωση: Αν αμφιβάλλετε για κάτι που πατήσατε, πατήστε για να βρεθείτε στην Κανονική Κατάσταση. Μετά πατήστε ξανά την εντολή που θέλατε. Σημείωση: Τα πλήκτρα του δρομέα θα πρέπει επίσης να δουλεύουν. Αλλά με τα hjkl θα μπορείτε να κινηθείτε πολύ γρηγορότερα, μόλις τα συνηθίσετε. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 1.2: ΜΠΑΙΝΟΝΤΑΣ ΚΑΙ ΒΓΑΙΝΟΝΤΑΣ ΣΤΟΝ VIM !! ΣΗΜΕΙΩΣΗ: Πριν εκτελέσετε κάποιο από τα βήματα, διαβάστε όλο το μάθημα!! 1. Πατήστε το πλήκτρο (για να είστε σίγουρα στην Κανονική Κατάσταση). 2. Πληκτρολογήστε: :q! . ---> Αυτό εξέρχεται από τον συντάκτη ΧΩΡΙΣ να σώσει όποιες αλλαγές έχετε κάνει. Αν θέλετε να σώσετε τις αλλαγές και να εξέρθετε πληκτρολογήστε: :wq 3. Όταν δείτε την προτροπή του φλοιού, πληκτρολογήστε την εντολή με την οποία μπήκατε σε αυτήν την περιήγηση. Μπορεί να είναι: vimtutor Κανονικά θα χρησιμοποιούσατε: vim tutor ---> 'vim' σημαίνει εισαγωγή στον συντάκτη vim, 'tutor' είναι το αρχείο που θέλουμε να διορθώσουμε. 4. Αν έχετε απομνημονεύσει αυτά τα βήματα και έχετε αυτοπεποίθηση, εκτελέστε τα βήματα 1 έως 3 για να βγείτε και να μπείτε ξανά στον συντάκτη. Μετά μετακινήστε τον δρομέα κάτω στο Μάθημα 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 1.3: ΔΙΟΡΘΩΣΗ ΚΕΙΜΕΝΟΥ - ΔΙΑΓΡΑΦΗ ** Όσο είστε στην Κανονική Κατάσταση πατήστε x για να διαγράψετε τον χαρακτήρα κάτω από τον δρομέα. ** 1. Μετακινείστε τον δρομέα στην παρακάτω γραμμή σημειωμένη με --->. 2. Για να διορθώσετε τα λάθη, κινείστε τον δρομέα μέχρι να είναι πάνω από τον χαρακτήρα που θα διαγραφεί. 3. Πατήστε το πλήκτρο x για να διαγράψετε τον ανεπιθύμητο χαρακτήρα. 4. Επαναλάβετε τα βήματα 2 μέχρι 4 μέχρι η πρόταση να είναι σωστή. ---> The ccow jumpedd ovverr thhe mooon. 5. Τώρα που η γραμμή είναι σωστή, πηγαίντε στο Μάθημα 1.4. ΣΗΜΕΙΩΣΗ: Καθώς διατρέχετε αυτήν την περιήγηση, προσπαθήστε να μην απομνημονεύετε, μαθαίνετε με τη χρήση. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 1.4: ΔΙΟΡΘΩΣΗ ΚΕΙΜΕΝΟΥ - ΠΑΡΕΜΒΟΛΗ ** Όσο είστε σε Κανονική Κατάσταση πατήστε i για να παρεμβάλλετε κείμενο. ** 1. Μετακινείστε τον δρομέα μέχρι την πρώτη γραμμή παρακάτω σημειωμένη με --->. 2. Για να κάνετε την πρώτη γραμμή ίδια με την δεύτερη, μετακινείστε τον δρομέα πάνω στον πρώτο χαρακτήρα ΜΕΤΑ από όπου θα παρεμβληθεί το κείμενο. 3. Πατήστε το i και πληκτρολογήστε τις απαραίτητες προσθήκες. 4. Καθώς διορθώνετε κάθε λάθος πατήστε για να επιστρέψετε στην Κανονική Κατάσταση. Επαναλάβετε τα βήματα 2 μέχρι 4 για να διορθώσετε την πρόταση. ---> There is text misng this . ---> There is some text missing from this line. 5. Όταν είστε άνετοι με την παρεμβολή κειμένου μετακινηθείτε στην παρακάτω περίληψη. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ΜΑΘΗΜΑ 1 ΠΕΡΙΛΗΨΗ 1. Ο δρομέας κινείται χρησιμοποιώντας είτε τα πλήκτρα δρομέα ή τα hjkl. h (αριστέρα) j (κάτω) k (πάνω) l (δεξιά) 2. Για να μπείτε στον Vim (από την προτροπή %) γράψτε: vim ΑΡΧΕΙΟ 3. Για να βγείτε γράψτε: :q! για απόρριψη των αλλαγών. Ή γράψτε: :wq για αποθήκευση των αλλαγών. 4. Για να διαγράψετε έναν χαρακτήρα κάτω από τον δρομέα σε Κανονική Κατάσταση πατήστε: x 5. Για να εισάγετε κείμενο στον δρομέα όσο είστε σε Κανονική Κατάσταση γράψτε: i πληκτρολογήστε το κείμενο ΣΗΜΕΙΩΣΗ: Πατώντας θα τοποθετηθείτε στην Κανονική Κατάσταση ή θα ακυρώσετε μία ανεπιθύμητη και μερικώς ολοκληρωμένη εντολή. Τώρα συνεχίστε με το Μάθημα 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 2.1: ΕΝΤΟΛΕΣ ΔΙΑΓΡΑΦΗΣ ** Γράψτε dw για να διαγράψετε μέχρι το τέλος μίας λέξης. ** 1. Πατήστε για να βεβαιωθείτε ότι είστε στην Κανονική Κατάσταση. 2. Μετακινείστε τον δρομέα στην παρακάτω γραμμή σημειωμένη με --->. 3. Πηγαίνετε τον δρομέα στην αρχή της λέξης που πρέπει να διαγραφεί. 4. Γράψτε dw για να κάνετε την λέξη να εξαφανιστεί. ΣΗΜΕΙΩΣΗ: Τα γράμματα dw θα εμφανιστούν στην τελευταία γραμμή της οθόνης όσο τα πληκτρολογείτε. Αν γράψατε κάτι λάθος, πατήστε και ξεκινήστε από την αρχή. ---> There are a some words fun that don't belong paper in this sentence. 5. Επαναλάβετε τα βήματα 3 και 4 μέχρι η πρόταση να είναι σωστή και πηγαίνετε στο Μάθημα 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 2.2: ΠΕΡΙΣΣΟΤΕΡΕΣ ΕΝΤΟΛΕΣ ΔΙΑΓΡΑΦΗΣ ** Πληκτρολογήστε d$ για να διαγράψετε μέχρι το τέλος της γραμμής. ** 1. Πατήστε για να βεβαιωθείτε ότι είστε στην Κανονική Κατάσταση. 2. Μετακινείστε τον δρομέα στην παρακάτω γραμμή σημειωμένη με --->. 3. Μετακινείστε τον δρομέα στο τέλος της σωστής γραμμής (ΜΕΤΑ την πρώτη . ). 4. Πατήστε d$ για να διαγράψετε μέχρι το τέλος της γραμμής. ---> Somebody typed the end of this line twice. end of this line twice. 5. Πηγαίνετε στο Μάθημα 2.3 για να καταλάβετε τι συμβαίνει. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 2.3: ΠΕΡΙ ΕΝΤΟΛΩΝ ΚΑΙ ΑΝΤΙΚΕΙΜΕΝΩΝ Η μορφή της εντολής διαγραφής d είναι ως εξής: [αριθμός] d αντικείμενο Ή d [αριθμός] αντικείμενο Όπου: αριθμός - πόσες φορές θα εκτελεστεί η εντολή (προαιρετικό, εξ' ορισμού=1). d - η εντολή της διαγραφής. αντικείμενο - πάνω σε τι θα λειτουργήσει η εντολή (παρακάτω λίστα). Μία μικρή λίστα από αντικείμενα: w - από τον δρομέα μέχρι το τέλος της λέξης, περιλαμβάνοντας το διάστημα. e - από τον δρομέα μέχρι το τέλος της λέξης, ΧΩΡΙΣ το διάστημα. $ - από τον δρομέα μέχρι το τέλος της γραμμής. ΣΗΜΕΙΩΣΗ: Για τους τύπους της περιπέτειας, πατώντας απλώς το αντικείμενο όσο είστε στην Κανονική Κατάσταση χωρίς κάποια εντολή θα μετακινήσετε τον δρομέα όπως καθορίζεται στην λίστα αντικειμένων. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 2.4: ΜΙΑ ΕΞΑΙΡΕΣΗ ΣΤΗΝ 'ΕΝΤΟΛΗ-ΑΝΤΙΚΕΙΜΕΝΟ' ** Πληκτρολογήστε dd για να διαγράψετε όλη τη γραμμή. ** Εξαιτίας της συχνότητας της διαγραφής ολόκληρης γραμμής, οι σχεδιαστές του Vim αποφάσισαν ότι θα ήταν ευκολότερο να γράφετε απλώς δύο d στη σειρά για να διαγράψετε μία γραμμή. 1. Μετακινείστε τον δρομέα στη δεύτερη γραμμή της παρακάτω φράσης. 2. Γράψτε dd για να διαγράψετε τη γραμμή. 3. Τώρα μετακινηθείτε στην τέταρτη γραμμή. 4. Γράψτε 2dd (θυμηθείτε αριθμός-εντολή-αντικείμενο) για να διαγράψετε δύο γραμμές. 1) Roses are red, 2) Mud is fun, 3) Violets are blue, 4) I have a car, 5) Clocks tell time, 6) Sugar is sweet 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 2.5: Η ΕΝΤΟΛΗ ΑΝΑΙΡΕΣΗΣ ** Πατήστε u για να αναιρέσετε τις τελευταίες εντολές, U για να διορθώσετε όλη τη γραμμή. ** 1. Μετακινείστε τον δρομέα στην παρακάτω γραμμή σημειωμένη με ---> και τοποθετήστε τον πάνω στο πρώτο λάθος. 2. Πατήστε x για να διαγράψετε τον πρώτο ανεπιθύμητο χαρακτήρα. 3. Τώρα πατήστε u για να αναιρέσετε την τελευταία εκτελεσμένη εντολή. 4. Αυτή τη φορά διορθώστε όλα τα λάθη στη γραμμή χρησιμοποιώντας την εντολή x. 5. Τώρα πατήστε ένα κεφαλαίο U για να επιστρέψετε τη γραμμή στην αρχική της κατάσταση. 6. Τώρα πατήστε u μερικές φορές για να αναιρέσετε την U και προηγούμενες εντολές. 7. Τώρα πατήστε CTRL-R (κρατώντας πατημένο το πλήκτρο CTRL καθώς πατάτε το R) μερικές φορές για να επαναφέρετε τις εντολές (αναίρεση των αναιρέσεων). ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. Αυτές είναι πολύ χρήσιμες εντολές. Τώρα πηγαίνετε στην Περίληψη του Μαθήματος 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ΜΑΘΗΜΑ 2 ΠΕΡΙΛΗΨΗ 1. Για να διαγράψετε από τον δρομέα μέχρι το τέλος λέξης γράψτε: dw 2. Για να διαγράψετε από τον δρομέα μέχρι το τέλος γραμμής γράψτε: d$ 3. Για να διαγράψετε ολόκληρη τη γραμμή γράψτε: dd 4. Η μορφή για μία εντολή στην Κανονική Κατάσταση είναι: [αριθμός] εντολή αντικείμενο Ή εντολή [αριθμός] αντικείμενο όπου: αριθμός - πόσες φορές να επαναληφθεί η εντολή εντολή - τι να γίνει, όπως η d για διαγραφή αντικείμενο - πάνω σε τι να ενεργήσει η εντολή, όπως w (λέξη), $ (τέλος της γραμμής), κτλ. 5. Για να αναιρέσετε προηγούμενες ενέργειες, πατήστε: u (πεζό u) Για να αναιρέσετε όλες τις αλλαγές στη γραμμή, πατήστε: U (κεφαλαίο U) Για να αναιρέσετε τις αναιρέσεις, πατήστε: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 3.1: Η ΕΝΤΟΛΗ ΤΟΠΟΘΕΤΗΣΗΣ ** Πατήστε p για να τοποθετήσετε την τελευταία διαγραφή μετά τον δρομέα. ** 1. Μετακινείστε τον δρομέα στην πρώτη γραμμή της παρακάτω ομάδας. 2. Πατήστε dd για να διαγράψετε τη γραμμή και να την αποθηκεύσετε σε προσωρινή μνήμη του Vim. 3. Μετακινείστε τον δρομέα στη γραμμή ΠΑΝΩ από εκεί που θα πρέπει να πάει η διαγραμμένη γραμμή. 4. Όσο είστε σε Κανονική Κατάσταση, πατήστε p για να βάλετε τη γραμμή. 5. Επαναλάβετε τα βήματα 2 έως 4 για να βάλετε όλες τις γραμμές στη σωστή σειρά. d) Can you learn too? b) Violets are blue, c) Intelligence is learned, a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 3.2: Η ΕΝΤΟΛΗ ΑΝΤΙΚΑΤΑΣΤΑΣΗΣ ** Πατήστε r και χαρακτήρα για να αλλάξετε αυτόν που είναι κάτω από τον δρομέα. ** 1. Μετακινείστε τον δρομέα στην πρώτη γραμμή παρακάτω σημειωμένη με --->. 2. Μετακινείστε τον δρομέα έτσι ώστε να είναι πάνω στο πρώτο λάθος. 3. Πατήστε r και μετά τον χαρακτήρα ο οποίος διορθώνει το λάθος. 4. Επαναλάβετε τα βήματα 2 και 3 μέχρι να είναι σωστή η πρώτη γραμμή. ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. Τώρα πηγαίνετε στο Μάθημα 3.2. ΣΗΜΕΙΩΣΗ: Να θυμάστε ότι πρέπει να μαθαίνετε με τη χρήση, και όχι με την απομνημόνευση. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 3.3: Η ΕΝΤΟΛΗ ΑΛΛΑΓΗΣ ** Για να αλλάξετε τμήμα ή όλη τη λέξη, πατήστε cw . ** 1. Μετακινείστε τον δρομέα στην πρώτη γραμμή παρακάτω σημειωμένη με --->. 2. Τοποθετήστε τον δρομέα πάνω στο u της λέξης lubw. 3. Πατήστε cw και τη σωστή λέξη (στην περίπτωση αυτή, γράψτε 'ine'.) 4. Πατήστε και πηγαίνετε στο επόμενο λάθος (στον πρώτο χαρακτήρα προς αλλαγή). 5. Επαναλάβετε τα βήματα 3 και 4 μέχρις ότου η πρώτη πρόταση να είναι ίδια με τη δεύτερη. ---> This lubw has a few wptfd that mrrf changing usf the change command. ---> This line has a few words that need changing using the change command. Παρατηρείστε ότι η cw όχι μόνο αντικαθιστάει τη λέξη, αλλά σας εισάγει επίσης σε παρεμβολή. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 3.4: ΠΕΡΙΣΣΟΤΕΡΕΣ ΑΛΛΑΓΕΣ ΜΕ c ** Η εντολή αλλαγής χρησιμοποιείται με τα ίδια αντικείμενα της διαγραφής. ** 1. Η εντολή αλλαγής δουλεύει με τον ίδιο τρόπο όπως η διαγραφή. Η μορφή είναι: [αριθμός] c αντικείμενο Ή c [αριθμός] αντικείμενο 2. Τα αντικείμενα είναι πάλι τα ίδια, όπως w (λέξη), $ (τέλος γραμμής), κτλ. 3. Μετακινηθείτε στην πρώτη γραμμή παρακάτω σημειωμένη με --->. 4. Μετακινείστε τον δρομέα στο πρώτο λάθος. 5. Γράψτε c$ για να κάνετε το υπόλοιπο της γραμμής ίδιο με τη δεύτερη και πατήστε . ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ΜΑΘΗΜΑ 3 ΠΕΡΙΛΗΨΗ 1. Για να τοποθετήσετε κείμενο που μόλις έχει διαγραφεί, πατήστε p . Αυτό τοποθετεί το διαγραμμένο κείμενο ΜΕΤΑ τον δρομέα (αν διαγράφτηκε γραμμή θα πάει μετά στη γραμμή κάτω από τον δρομέα. 2. Για να αντικαταστήσετε τον χαρακτήρα κάτω από τον δρομέα, πατήστε r και μετά τον χαρακτήρα που θα αντικαταστήσει τον αρχικό. 3. Η εντολή αλλαγής σας επιτρέπει να αλλάξετε το καθορισμένο αντικείμενο από τον δρομέα μέχρι το τέλος του αντικείμενο. Π.χ. γράψτε cw για να αλλάξετε από τον δρομέα μέχρι το τέλος της λέξης, c$ για να αλλάξετε μέχρι το τέλος γραμμής. 4. Η μορφή για την αλλαγή είναι: [αριθμός] c αντικείμενο Ή c [αριθμός] αντικείμενο Τώρα συνεχίστε με το επόμενο μάθημα. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 4.1: ΘΕΣΗ ΚΑΙ ΚΑΤΑΣΤΑΣΗ ΑΡΧΕΙΟΥ ** Πατήστε CTRL-g για να εμφανιστεί η θέση σας στο αρχείο και η κατάστασή του. Πατήστε SHIFT-G για να πάτε σε μία γραμμή στο αρχείο. ** Σημείωση: Διαβάστε ολόκληρο το μάθημα πριν εκτελέσετε κάποιο από τα βήματα!! 1. Κρατήστε πατημένο το πλήκτρο Ctrl και πατήστε g . Μία γραμμή κατάστασης θα εμφανιστεί στο κάτω μέρος της σελίδας με το όνομα αρχείου και τη γραμμή που είστε. Θυμηθείτε τον αριθμό γραμμής για το Βήμα 3. 2. Πατήστε shift-G για να μετακινηθείτε στο τέλος του αρχείου. 3. Πατήστε τον αριθμό της γραμμής που ήσασταν και μετά shift-G. Αυτό θα σας επιστρέψει στη γραμμή που ήσασταν πριν πατήσετε για πρώτη φορά Ctrl-g. (Όταν πληκτρολογείτε τους αριθμούς, ΔΕΝ θα εμφανίζονται στην οθόνη). 4. Αν νοιώθετε σίγουρος για αυτό, εκτελέστε τα βήματα 1 έως 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 4.2: Η ΕΝΤΟΛΗ ΑΝΑΖΗΤΗΣΗΣ ** Πατήστε / ακολουθούμενο από τη φράση που ψάχνετε. ** 1. Σε Κανονική Κατάσταση πατήστε τον χαρακτήρα / . Παρατηρήστε ότι αυτός και ο δρομέας εμφανίζονται στο κάτω μέρος της οθόνης όπως με την εντολή : . 2. Τώρα γράψτε 'errroor' . Αυτή είναι η λέξη που θέλετε να ψάξετε. 3. Για να ψάξετε ξανά για την ίδια φράση, πατήστε απλώς n . Για να ψάξετε την ίδια φράση στην αντίθετη κατεύθυνση, πατήστε Shift-N . 4. Αν θέλετε να ψάξετε για μία φράση προς τα πίσω, χρησιμοποιήστε την εντολή ? αντί της / . ---> Όταν η αναζήτηση φτάσει στο τέλος του αρχείου θα συνεχίσει από την αρχή. "errroor" is not the way to spell error; errroor is an error. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 4.3: ΕΥΡΕΣΗ ΤΑΙΡΙΑΣΤΩΝ ΠΑΡΕΝΘΕΣΕΩΝ ** Πατήστε % για να βρείτε την αντίστοιχη ), ], ή } . ** 1. Τοποθετήστε τον δρομέα σε κάποια (, [, ή { στην παρακάτω γραμμή σημειωμένη με --->. 2. Τώρα πατήστε τον χαρακτήρα % . 3. Ο δρομέας θα πρέπει να είναι στην αντίστοιχη παρένθεση ή αγκύλη. 4. Πατήστε % για να μετακινήσετε τον δρομέα πίσω στην πρώτη αγκύλη (του ζευγαριού). ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) ΣΗΜΕΙΩΣΗ: Αυτό είναι πολύ χρήσιμο στην αποσφαλμάτωση ενός προγράμματος με μη ταιριαστές παρενθέσεις! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 4.4: ΕΝΑΣ ΤΡΟΠΟΣ ΓΙΑ ΑΛΛΑΓΗ ΛΑΘΩΝ ** Γράψτε :s/old/new/g για να αλλάξετε το 'new' με το 'old'. ** 1. Μετακινείστε τον δρομέα στην παρακάτω γραμμή σημειωμένη με --->. 2. Γράψτε :s/thee/the . Σημειώστε ότι αυτή η εντολή αλλάζει μόνο την πρώτη εμφάνιση στη γραμμή. 3. Τώρα γράψτε :s/thee/the/g εννοώντας γενική αντικατάσταση στη γραμμή. Αυτό αλλάζει όλες τις εμφανίσεις επί της γραμμής. ---> thee best time to see thee flowers is in thee spring. 4. Για να αλλάξετε κάθε εμφάνιση μίας συμβολοσειράς μεταξύ δύο γραμμών, γράψτε :#,#s/old/new/g όπου #,# οι αριθμοί των δύο γραμμών. Γράψτε :%s/old/new/g για να αλλάξετε κάθε εμφάνιση σε όλο το αρχείο. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ΜΑΘΗΜΑ 4 ΠΕΡΙΛΗΨΗ 1. Το Ctrl-g εμφανίζει τη θέση σας στο αρχείο και την κατάστασή του. Το Shift-G πηγαίνει στο τέλος του αρχείου. Ένας αριθμός γραμμής ακολουθούμενος από Shift-G πηγαίνει σε εκείνη τη γραμμή. 2. Γράφοντας / ακολουθούμενο από μία φράση ψάχνει προς τα ΜΠΡΟΣΤΑ για τη φράση. Γράφοντας ? ακολουθούμενο από μία φράση ψάχνει προς τα ΠΙΣΩ για τη φράση. Μετά από μία αναζήτηση πατήστε n για να βρείτε την επόμενη εμφάνιση προς την ίδια κατεύθυνση ή Shift-N για να ψάξετε προς την αντίθετη κατεύθυνση. 3. Πατώντας % όσο ο δρομέας είναι πάνω σε μία (,),[,],{, ή } εντοπίζει το αντίστοιχο ταίρι του ζευγαριού. 4. Για αντικατάσταση με new του πρώτου old στη γραμμή γράψτε :s/old/new Για αντικατάσταση με new όλων των 'old' στη γραμμή γράψτε :s/old/new/g Για αντικατάσταση φράσεων μεταξύ δύο # γραμμών γράψτε :#,#s/old/new/g Για αντικατάσταση όλων των εμφανίσεων στο αρχείο γράψτε :%s/old/new/g Για ερώτηση επιβεβαίωσης κάθε φορά προσθέστε ένα 'c' "%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 5.1: ΠΩΣ ΕΚΤΕΛΩ ΜΙΑ ΕΞΩΤΕΡΙΚΗ ΕΝΤΟΛΗ ** Γράψτε :! ακολουθούμενο από μία εξωτερική εντολή για να την εκτελέσετε. ** 1. Πατήστε την οικεία εντολή : για να θέσετε τον δρομέα στο κάτω μέρος της οθόνης. Αυτό σας επιτρέπει να δώσετε μία εντολή. 2. Τώρα πατήστε το ! (θαυμαστικό). Αυτό σας επιτρέπει να εκτελέσετε οποιαδήποτε εξωτερική εντολή του φλοιού. 3. Σαν παράδειγμα γράψτε ls μετά από το ! και πατήστε . Αυτό θα σας εμφανίσει μία λίστα του καταλόγου σας, ακριβώς σαν να ήσασταν στην προτροπή του φλοιού. Ή χρησιμοποιήστε :!dir αν το ls δεν δουλεύει. ---> Σημείωση: Είναι δυνατόν να εκτελέσετε οποιαδήποτε εξωτερική εντολή με αυτόν τον τρόπο. ---> Σημείωση: Όλες οι εντολές : πρέπει να τερματίζονται πατώντας το . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 5.2: ΠΕΡΙΣΣΟΤΕΡΑ ΠΕΡΙ ΕΓΓΡΑΦΗΣ ΑΡΧΕΙΩΝ ** Για να σώσετε τις αλλάγες που κάνατε στο αρχείο, γράψτε :w ΑΡΧΕΙΟ. ** 1. Γράψτε :!dir ή :!ls για να πάρετε μία λίστα του καταλόγου σας. Ήδη ξέρετε ότι πρέπει να πατήσετε μετά από αυτό. 2. Διαλέξτε ένα όνομα αρχείου που δεν υπάρχει ακόμα, όπως το TEST. 3. Τώρα γράψτε: :w TEST (όπου TEST είναι το όνομα αρχείου που διαλέξατε). 4. Αυτό σώζει όλο το αρχείο (vim Tutor) με το όνομα TEST. Για να το επαληθεύσετε, γράψτε ξανά :!dir για να δείτε τον κατάλογό σας. ---> Σημειώστε ότι αν βγαίνατε από τον Vim και μπαίνατε ξανά με το όνομα αρχείου TEST, το αρχείο θα ήταν ακριβές αντίγραφο του tutor όταν το σώσατε. 5. Τώρα διαγράψτε το αρχείο γράφοντας (MS-DOS): :!del TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 5.3: ΕΠΙΛΕΚΤΙΚΗ ΕΝΤΟΛΗ ΕΓΓΡΑΦΗΣ ** Για να σώσετε τμήμα του αρχείου, γράψτε :#,# w ΑΡΧΕΙΟ ** 1. Άλλη μια φορά, γράψτε :!dir ή :!ls για να πάρετε μία λίστα από τον κατάλογό σας και διαλέξτε ένα κατάλληλο όνομα αρχείου όπως το TEST. 2. Μετακινείστε τον δρομέα στο πάνω μέρος αυτής της σελίδας και πατήστε Ctrl-g για να βρείτε τον αριθμό αυτής της γραμμής. ΝΑ ΘΥΜΑΣΤΕ ΑΥΤΟΝ ΤΟΝ ΑΡΙΘΜΟ! 3. Τώρα πηγαίνετε στο κάτω μέρος της σελίδας και πατήστε Ctrl-g ξανά. ΝΑ ΘΥΜΑΣΤΕ ΚΑΙ ΑΥΤΟΝ ΤΟΝ ΑΡΙΘΜΟ! 4. Για να σώσετε ΜΟΝΟ ένα τμήμα σε αρχείο, γράψτε :#,# w TEST όπου #,# οι δύο αριθμοί που απομνημονεύσατε (πάνω,κάτω) και TEST το όνομα του αρχείου σας. 5. Ξανά, δείτε ότι το αρχείο είναι εκεί με την :!dir αλλά ΜΗΝ το διαγράψετε. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 5.4: ΑΝΑΚΤΩΝΤΑΣ ΚΑΙ ΕΝΩΝΟΝΤΑΣ ΑΡΧΕΙΑ ** Για να εισάγετε τα περιεχόμενα ενός αρχείου, γράψτε :r ΑΡΧΕΙΟ ** 1. Γράψτε :!dir για να βεβαιωθείτε ότι το TEST υπάρχει από πριν. 2. Τοποθετήστε τον δρομέα στο πάνω μέρος της σελίδας. ΣΗΜΕΙΩΣΗ: Αφότου εκτελέσετε το Βήμα 3 θα δείτε το Μάθημα 5.3. Μετά κινηθείτε ΚΑΤΩ ξανά προς το μάθημα αυτό. 3. Τώρα ανακτήστε το αρχείο σας TEST χρησιμοποιώντας την εντολή :r TEST όπου TEST είναι το όνομα του αρχείου. ΣΗΜΕΙΩΣΗ: Το αρχείο που ανακτάτε τοποθετείται ξεκινώντας εκεί που βρίσκεται ο δρομέας. 4. Για να επαληθεύσετε ότι το αρχείο ανακτήθηκε, πίσω τον δρομέα και παρατηρήστε ότι υπάρχουν τώρα δύο αντίγραφα του Μαθήματος 5.3, το αρχικό και η έκδοση του αρχείου. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ΜΑΘΗΜΑ 5 ΠΕΡΙΛΗΨΗ 1. :!εντολή εκτελεί μία εξωτερική εντολή. Μερικά χρήσιμα παραδείγματα είναι (MS-DOS): :!dir - εμφάνιση λίστας ενός καταλόγου. :!del ΑΡΧΕΙΟ - διαγράφει το ΑΡΧΕΙΟ. 2. :w ΑΡΧΕΙΟ γράφει το τρέχων αρχείο του Vim στο δίσκο με όνομα ΑΡΧΕΙΟ. 3. :#,#w ΑΡΧΕΙΟ σώζει τις γραμμές από # μέχρι # στο ΑΡΧΕΙΟ. 4. :r ΑΡΧΕΙΟ ανακτεί το αρχείο δίσκου ΑΡΧΕΙΟ και το παρεμβάλλει μέσα στο τρέχον αρχείο μετά από τη θέση του δρομέα. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 6.1: Η ΕΝΤΟΛΗ ΑΝΟΙΓΜΑΤΟΣ ** Πατήστε o για να ανοίξετε μία γραμμή κάτω από τον δρομέα και να βρεθείτε σε Κατάσταση Κειμένου. ** 1. Μετακινείστε τον δρομέα στην παρακάτω γραμμή σημειωμένη με --->. 2. Πατήστε o (πεζό) για να ανοίξετε μία γραμμή ΚΑΤΩ από τον δρομέα και να βρεθείτε σε Κατάσταση Κειμένου. 3. Τώρα αντιγράψτε τη σημειωμένη με ---> γραμμή και πατήστε για να βγείτε από την Κατάσταση Κειμένου. ---> After typing o the cursor is placed on the open line in Insert mode. 4. Για να ανοίξετε μία γραμμή ΠΑΝΩ από τον δρομέα, πατήστε απλά ένα κεφαλαίο O, αντί για ένα πεζό o. Δοκιμάστε το στην παρακάτω γραμμή. Ανοίγετε γραμμή πάνω από αυτήν πατώντας Shift-O όσο ο δρομέας είναι στη γραμμή ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 6.2: Η ΕΝΤΟΛΗ ΠΡΟΣΘΗΚΗΣ ** Πατήστε a για να εισάγετε κείμενο ΜΕΤΑ τον δρομέα. ** 1. Μετακινείστε τον δρομέα στο τέλος της πρώτης γραμμής παρακάτω σημειωμένη με ---> πατώντας $ στην Κανονική Κατάσταση. 2. Πατήστε ένα a (πεζό) για να προσθέσετε κείμενο ΜΕΤΑ από τον χαρακτήρα που είναι κάτω από τον δρομέα. (Το κεφαλαίο A προσθέτει στο τέλος της γραμμής). Σημείωση: Αυτό αποφεύγει το πάτημα του i , τον τελευταίο χαρακτήρα, το κείμενο της εισαγωγής, , δρομέα-δεξιά, και τέλος, x, μόνο και μόνο για να προσθέσετε στο τέλος της γραμμής! 3. Συμπληρώστε τώρα την πρώτη γραμμή. Σημειώστε επίσης ότι η προσθήκη είναι ακριβώς ίδια στην Κατάσταση Κειμένου με την Κατάσταση Εισαγωγής, εκτός από τη θέση που εισάγεται το κείμενο. ---> This line will allow you to practice ---> This line will allow you to practice appending text to the end of a line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 6.3: ΑΛΛΗ ΕΚΔΟΣΗ ΤΗΣ ΑΝΤΙΚΑΤΑΣΤΑΣΗΣ ** Πατήστε κεφαλαίο R για να αλλάξετε περισσότερους από έναν χαρακτήρες. ** 1. Μετακινείστε τον δρομέα στην πρώτη γραμμή παρακάτω σημειωμένη με --->. 2. Τοποθετήστε τον δρομέα στην αρχή της πρώτης λέξης που είναι διαφορετική από τη δεύτερη γραμμή σημειωμένη με ---> (η λέξη 'last'). 3. Πατήστε τώρα R και αλλάξτε το υπόλοιπο του κειμένου στην πρώτη γραμμή γράφοντας πάνω από το παλιό κείμενο ώστε να κάνετε την πρώτη γραμμή ίδια με τη δεύτερη. ---> To make the first line the same as the last on this page use the keys. ---> To make the first line the same as the second, type R and the new text. 4. Σημειώστε ότι όταν πατάτε για να βγείτε, παραμένει οποιοδήποτε αναλλοίωτο κείμενο. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Μάθημα 6.4: ΡΥΘΜΙΣΗ ΕΠΙΛΟΓΗΣ ** Ρυθμίστε μία επιλογή έτσι ώστε η αναζήτηση ή η αντικατάσταση να αγνοεί τη διαφορά πεζών-κεφαλαίων ** 1. Ψάξτε για 'ignore' εισάγοντας: /ignore Συνεχίστε αρκετές φορές πατώντας το πλήκτρο n. 2. Θέστε την επιλογή 'ic' (Ignore case) γράφοντας: :set ic 3. Ψάξτε τώρα ξανά για 'ignore' πατώντας: n Συνεχίστε την αναζήτηση μερικές ακόμα φορές πατώντας το πλήκτρο n 4. Θέστε τις επιλογές 'hlsearch' και 'incsearch': :set hls is 5. Εισάγετε τώρα ξανά την εντολή αναζήτησης, και δείτε τι συμβαίνει /ignore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ΜΑΘΗΜΑ 6 ΠΕΡΙΛΗΨΗ 1. Πατώντας o ανοίγει μία γραμμή ΚΑΤΩ από τον δρομέα και τοποθετεί τον δρομέα στην ανοιχτή γραμμή σε Κατάσταση Κειμένου. 2. Πατήστε a για να εισάγετε κείμενο ΜΕΤΑ τον χαρακτήρα στον οποίο είναι ο δρομέας. Πατώντας κεφαλαίο A αυτόματα προσθέτει κείμενο στο τέλος της γραμμής. 3. Πατώντας κεφαλαίο R εισέρχεται στην Κατάσταη Αντικατάστασης μέχρι να πατηθεί το και να εξέλθει. 4. Γράφοντας ":set xxx" ρυθμίζει την επιλογή "xxx". ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ΜΑΘΗΜΑ 7: ON-LINE ΕΝΤΟΛΕΣ ΒΟΗΘΕΙΑΣ ** Χρησιμοποιήστε το on-line σύστημα βοήθειας ** Ο Vim έχει ένα περιεκτικό on-line σύστημα βοήθειας. Για να ξεκινήσει, δοκιμάστε κάποιο από τα τρία: - πατήστε το πλήκτρο (αν έχετε κάποιο) - πατήστε το πλήκτρο (αν έχετε κάποιο) - γράψτε :help Γράψτε :q για να κλείσετε το παράθυρο της βοήθειας. Μπορείτε να βρείτε βοήθεια πάνω σε κάθε αντικείμενο, δίνοντας μία παράμετρο στην εντολή ":help". Δοκιμάστε αυτά (μην ξεχνάτε να πατάτε ): :help w :help c_ La l és a la dreta i mou el cursor cap a la dreta. j La j sembla una fletxa cap avall. v 1. Moveu el cursor per la pantalla fins que us sentiu confortables. 2. Mantingueu premuda la tecla avall (j) una estona. ---> Ara sabeu com moure-us fins a la pròxima lliçó. 3. Usant la tecla avall, aneu a la lliçó 1.2. Nota: Si no esteu segurs de la tecla que heu premut, premeu per tornar al mode Normal. Llavors torneu a teclejar l'ordre que volíeu. Nota: Les tecles de moviment del cursor (fletxes) també funcionen. Però usant hjkl anireu més ràpid, quan us hi hàgiu acostumant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 1.2: ENTRAR I SORTIR DEL VIM !! NOTA: Abans de seguir els passos següents llegiu *tota* la lliçó!! 1. Premeu (per estar segurs que esteu en el mode Normal). 2. Teclegeu: :q! . ---> Amb això sortireu de l'editor SENSE desar els canvis que hàgiu pogut fer. Si voleu desar els canvis teclegeu: :wq 3. Quan vegeu l'introductor de la shell escriviu l'ordre amb la qual heu arribat a aquest tutor. Podria ser: vimtutor O bé: vim tutor ---> 'vim' és l'editor vim, i 'tutor' és el fitxer que voleu editar. 4. Si heu memoritzat les ordres, feu els passos anteriors, de l'1 al 3, per sortir i tornar a entrar a l'editor. Llavors moveu el cursor avall fins la lliçó 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 1.3: EDITAR TEXT - ESBORRAR ** En mode Normal premeu x per esborrar el caràcter de sota el cursor. ** 1. Moveu el cursor fins la línia que hi ha més avall marcada amb --->. 2. Poseu el cursor a sobre el caràcter que cal esborrar, per corregir els errors. 3. Premeu la tecla x per esborrar el caràcter. 4. Repetiu els passos 2 i 3 fins que la frase sigui correcta. ---> Unna vaaca vva salttar sobbree la llluna. 5. Ara que la línia és correcta, aneu a la lliçó 1.4. NOTA: Mentre aneu fent no tracteu de memoritzar, practiqueu i prou. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 1.4: EDITAR TEXT - INSERIR ** En mode Normal premeu i per inserir text. ** 1. Moveu el cursor avall fins la primera línia marcada amb --->. 2. Per fer la primera línia igual que la segona poseu el cursor sobre el primer caràcter POSTERIOR al text que s'ha d'inserir. 3. Premeu la tecla i i escriviu el text que falta. 4. Quan hàgiu acabat premeu per tornar al mode Normal. Repetiu els passos 2, 3 i 4 per corregir la frase. ---> Falten carctrs en aquesta . ---> Falten alguns caràcters en aquesta línia. 5. Quan us trobeu còmodes inserint text aneu al sumari de baix. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 1 SUMARI 1. El cursor es mou amb les fletxes o bé amb les tecles hjkl. h (esquerra) j (avall) k (amunt) l (dreta) 2. Per entrar al Vim (des de la shell) escriviu: vim FITXER 3. Per sortir teclegeu: :q! per descartar els canvis. O BÉ teclegeu: :wq per desar els canvis. 4. Per esborrar el caràcter de sota el cursor en el mode Normal premeu: x 5. Per inserir text on hi ha el cursor, en mode Normal, premeu: i escriviu el text NOTA: La tecla us portarà al mode Normal o cancel·larà una ordre que estigui a mitges. Ara continueu amb la lliçó 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 2.1: ORDRES PER ESBORRAR ** Teclegeu dw per esborrar fins al final d'una paraula. ** 1. Premeu per estar segurs que esteu en mode normal. 2. Moveu el cursor avall fins la línia marcada amb --->. 3. Moveu el cursor fins el principi de la paraula que s'ha d'esborrar. 4. Teclegeu dw per fer desaparèixer la paraula. NOTA: Les lletres dw apareixeran a la línia de baix de la pantalla mentre les aneu escrivint. Si us equivoqueu premeu i torneu a començar. ---> Hi han algunes paraules divertit que no pertanyen paper a aquesta frase. 5. Repetiu el passos 3 i 4 fins que la frase sigui correcta i continueu a la lliçó 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 2.2: MÉS ORDRES PER ESBORRAR ** Escriviu d$ per esborrar fins al final de la línia. ** 1. Premeu per estar segurs que esteu en el mode Normal. 2. Moveu el cursor avall fins a la línia marcada amb --->. 3. Moveu el cursor fins el final de la línia correcta (DESPRÉS del primer . ). 4. Teclegeu d$ per esborrar fins al final de la línia. ---> Algú ha escrit el final d'aquesta línia dos cops. línia dos cops. 5. Aneu a la lliçó 2.3 per entendre què està passant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 2.3: SOBRE ORDRES I OBJECTES El format de l'ordre d'esborrar d és el següent: [nombre] d objecte O BÉ d [nombre] objecte On: nombre - és el nombre de cops que s'ha d'executar (opcional, omissió=1). d - és l'ordre per esborrar. objecte - és la cosa amb la qual operar (llista a baix). Una petita llista d'objectes: w - des del cursor fins al final de la paraula, incloent-hi l'espai. e - des del cursor fins al final de la paraula, SENSE incloure l'espai. $ - des del cursor fins al final de la línia. NOTA: Per als aventurers: si teclegeu només l'objecte, en el mode Normal, sense cap ordre, el cursor es mourà tal com està especificat a la llista d'objectes. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 2.4: UNA EXCEPCIÓ A 'ORDRE-OBJECTE' ** Teclegeu dd esborrar tota la línia. ** Com que molt sovint s'han d'eliminar línies senceres els dissenyadors del Vi van creure que seria més fàcil teclejar dd per esborrar tota la línia. 1. Moveu el cursor a la segona línia de la frase de baix. 2. Teclegeu dd per esborrar la línia. 3. Ara aneu a la quarta línia. 4. Teclegeu 2dd per esborrar dues línies (recordeu nombre-ordre-objecte). 1) Les roses són vermelles, 2) El fang és divertit, 3) Les violetes són blaves, 4) Tinc un cotxe, 5) Els rellotges diuen l'hora, 6) El sucre és dolç, 7) Igual que tu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 2.5: L'ORDRE DESFER ** Premeu u per desfer els últims canvis, U per arreglar tota la línia. ** 1. Moveu el cursor sobre el primer error de línia de baix marcada amb ---> 2. Premeu x per esborrar el caràcter no desitjat. 3. Ara premeu u per desfer l'última ordre executada. 4. Aquest cop corregiu tots els errors de la línia amb l'ordre x. 5. Ara premeu U per restablir la línia al seu estat original. 6. Ara premeu u uns quants cops per desfer U i les ordres anteriors. 7. Ara premeu CONTROL-R (les dues tecles al mateix temps) uns quants cops per refer les ordres. ---> Correegiu els errors d'aqquesta línia i dessfeu-los aamb desfer. 8. Aquestes ordres són molt útils. Ara aneu al sumari de la lliçó 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 2 SUMARI 1. Per esborrar del cursor al final de la paraula teclegeu: dw 2. Per esborrar del cursor al final de la línia teclegeu: d$ 3. Per esborrar una línia sencera teclegeu: dd 4. El format de qualsevol ordre del mode Normal és: [nombre] ordre objecte O BÉ ordre [nombre] objecte on: nombre - és quants cops repetir l'ordre ordre - és què fer, com ara d per esborrar objecte - és amb què s'ha d'actuar, com ara w (paraula), $ (fins a final de línia), etc. 5. Per desfer les accions anteriors premeu: u Per desfer tots el canvis en una línia premeu: U Per desfer l'ordre desfer premeu: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 3.1: L'ORDRE 'POSAR' ** Premeu p per posar l'última cosa que heu esborrat després del cursor. ** 1. Moveu el cursor a la primera línia de llista de baix. 2. Teclegeu dd per esborrar la línia i desar-la a la memòria. 3. Moveu el cursor a la línia ANTERIOR on hauria d'anar. 4. En mode Normal, premeu p per inserir la línia. 5. Repetiu els passos 2, 3 i 4 per ordenar les línies correctament. d) Pots aprendre tu? b) Les violetes són blaves, c) L'intel·ligència s'aprèn, a) Les roses són vermelles, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 3.2: L'ORDRE SUBSTITUIR ** Premeu r i un caràcter per substituir el caràcter de sota el cursor. ** 1. Moveu el cursor a la primera línia de sota marcada amb --->. 2. Moveu el cursor a sobre del primer caràcter equivocat. 3. Premeu r i tot seguit el caràcter correcte per corregir l'error. 4. Repetiu els passos 2 i 3 fins que la línia sigui correcta. ---> Quen van escroure aquerta línia, algh va apretar tikles equivocades! ---> Quan van escriure aquesta línia, algú va apretar tecles equivocades! 5. Ara continueu a la lliçó 3.2. NOTA: Recordeu que heu de practicar, no memoritzar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 3.3: L'ORDRE CANVIAR ** Per canviar una part o tota la paraula, escriviu cw . ** 1. Moveu el cursor a la primera línia de sota marcada amb --->. 2. Poseu el cursor sobre la u de 'lughc'. 3. Teclegeu cw i corregiu la paraula (en aquest cas escriviu 'ínia'.) 4. Premeu i aneu al següent error. 5. Repetiu els passos 3 i 4 fins que les dues frases siguin iguals. ---> Aquesta lughc té algunes paradskl que s'han de cdddf. ---> Aquesta línia té algunes paraules que s'han de canviar. Noteu que cw no només canvia la paraula, també us posa en mode d'inserció. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 3.4: MÉS CANVIS AMB c ** L'ordre canviar s'usa amb els mateixos objectes que l'ordre esborrar. ** 1. L'ordre canviar funciona igual que la d'esborrar. El format és: [nombre] c objecte O BÉ c [nombre] objecte 2. Els objectes són els mateixos, com w (paraula), $ (final de línia), etc. 3. Moveu el cursor fins la primera línia marcada amb --->. 4. Avanceu fins al primer error. 5. Premeu c$ per fer la línia igual que la segona i premeu . ---> El final d'aquesta línia necessita canvis per ser igual que la segona. ---> El final d'aquesta línia s'ha de corregir amb l'ordre c$. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 3 SUMARI 1. Per tornar a posar el text que s'ha esborrat, premeu p . Això posa el text esborrat DESPRÉS del cursor (si heu esborrat una línia anirà a parar a la línia SEGÜENT d'on hi ha el cursor). 2. Per substituir el caràcter de sota el cursor, premeu r i tot seguit el caràcter que ha de reemplaçar l'original. 3. L'ordre canviar permet canviar l'objecte especificat des del cursor fins el final de l'objecte. Per exemple, cw canvia el que hi ha des del cursor fins al final de la paraula, i c$ fins al final de línia. 4. El format de l'ordre canviar és: [nombre] c objecte O BÉ c [nombre] objecte Ara aneu a la pròxima lliçó. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 4.1: SITUACIÓ I ESTAT DEL FITXER ** Premeu CTRL-g per veure la situació dins del fitxer i el seu estat. Premeu SHIFT-G per anar a una línia determinada. ** Nota: No proveu res fins que hàgiu llegit TOTA la lliçó!! 1. Mantingueu premuda la tecla Control i premeu g . A la part de baix de la pàgina apareixerà un línia amb el nom del fitxer i la línia en la qual us trobeu. Recordeu el número de la línia pel Pas 3. 2. Premeu Shift-G per anar al final de tot del fitxer. 3. Teclegeu el número de la línia on éreu i després premeu Shift-G. Això us tornarà a la línia on éreu quan heu premut per primer cop Ctrl-g. (Quan teclegeu el número NO es veurà a la pantalla.) 4. Ara executeu els passos de l'1 al 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 4.2: L'ORDRE CERCAR ** Premeu / seguit de la frase que vulgueu cercar. ** 1. En el mode Normal premeu el caràcter / . Noteu que el cursor apareix a la part de baix de la pantalla igual que amb l'ordre : . 2. Ara escriviu 'errroor' . Aquesta és la paraula que voleu cercar. 3. Per tornar a cercar la mateixa frase, premeu n . Per cercar la mateixa frase en direcció contraria, premeu Shift-N . 4. Si voleu cercar una frase en direcció ascendent, useu l'ordre ? en lloc de /. ---> "errroor" no és com s'escriu error; errroor és un error. Note: Quan la cerca arribi al final del fitxer continuarà a l'inici. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 4.3: CERCA DE PARÈNTESIS ** Premeu % per cercar el ),], o } corresponent. ** 1. Poseu el cursor en qualsevol (, [, o { de la línia marcada amb --->. 2. Ara premeu el caràcter % . 3. El cursor hauria d'anar a la clau o parèntesis corresponent. 4. Premeu % per tornar el cursor al primer parèntesi. ---> Això ( és una línia amb caràcters (, [ ] i { } de prova. )) Nota: Això és molt útil per trobar errors en programes informàtics! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 4.4: UNA MANERA DE CANVIAR ERRORS ** Escriviu :s/vell/nou/g per substituir 'vell' per 'nou'. ** 1. Moveu el cursor a la línia de sota marcada amb --->. 2. Escriviu :s/laa/la . Aquesta ordre només canvia la primera coincidència que es trobi a la línia. 3. Ara escriviu :s/laa/la/g per fer una substitució global. Això canviarà totes les coincidències que es trobin a la línia. ---> laa millor època per veure laa flor és laa primavera. 4. Per canviar totes les coincidències d'una cadena entre dues línies, escriviu :#,#s/vell/nou/g on #,# són els nombres de les línies. Escriviu :%s/vell/nou/g per substituir la cadena a tot el fitxer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 4 SUMARI 1. Ctrl-g mostra la posició dins del fitxer i l'estat del mateix. Shift-G us porta al final del fitxer. Un número seguit de Shift-G us porta a la línia corresponent. 2. L'ordre / seguida d'una frase cerca la frase ENDAVANT. L'ordre ? seguida d'una frase cerca la frase ENDARRERE. Després d'una cerca premeu n per trobar la pròxima coincidència en la mateixa direcció, o Shift-N per cercar en la direcció contrària. 3. L'ordre % quan el cursor és a sobre un (,),[,],{, o } troba la parella corresponent. 4. Per substituir el primer 'vell' per 'nou' en una línia :s/vell/nou Per substituir tots els 'vell' per 'nou' en una línia :s/vell/nou/g Per substituir frases entre les línies # i # :#,#s/vell/nou/g Per substituir totes les coincidències en el fitxer :%s/vell/nou/g Per demanar confirmació cada cop afegiu 'c' :%s/vell/nou/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 5.1: COM EXECUTAR UNA ORDRE EXTERNA ** Teclegeu :! seguit d'una ordre externa per executar-la. ** 1. Premeu el familiar : per col·locar el cursor a la part de baix de la pantalla. Això us permet entrar una ordre. 2. Ara teclegeu el caràcter ! (signe d'exclamació). Això us permet executar qualsevol ordre de la shell. 3. Com a exemple escriviu ls i tot seguit premeu . Això us mostrarà el contingut del directori, tal com si estiguéssiu a la línia d'ordres. Feu servir :!dir si ls no funciona. Nota: D'aquesta manera es pot executar qualsevol ordre externa. Nota: Totes les ordres : s'han d'acabar amb la tecla ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 5.2: MÉS SOBRE L'ESCRIPTURA DE FITXERS ** Per desar els canvis fets, escriviu :w FITXER. *** 1. Escriviu :!dir o bé :!ls per obtenir un llistat del directori. Ja sabeu que heu de prémer després d'això. 2. Trieu un nom de fitxer que no existeixi, com ara PROVA. 3. Ara feu: :w PROVA (on PROVA és el nom que heu triat.) 4. Això desa tot el fitxer amb el nom de PROVA. Per comprovar-ho escriviu :!dir per veure el contingut del directori. Note: Si sortiu del Vim i entreu una altra vegada amb el fitxer PROVA, el fitxer serà una còpia exacta del tutor que heu desat. 5. Ara esborreu el fitxer teclejant (MS-DOS): :!del PROVA o bé (Unix): :!rm PROVA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 5.3: UNA ORDRE SELECTIVA PER DESAR ** Per desar una part del fitxer, escriviu :#,# w FITXER ** 1. Un altre cop, feu :!dir o :!ls per obtenir un llistat del directori i trieu un nom de fitxer adequat com ara PROVA. 2. Moveu el cursor a dalt de tot de la pàgina i premeu Ctrl-g per saber el número de la línia. RECORDEU AQUEST NÚMERO! 3. Ara aneu a baix de tot de la pàgina i torneu a prémer Ctrl-g. RECORDEU AQUEST NÚMERO TAMBÉ! 4. Per desar NOMÉS una secció en un fitxer, escriviu :#,# w PROVA on #,# són els dos números que heu recordat (dalt,baix) i PROVA el nom del fitxer. 5. Mireu que el fitxer nou hi sigui amb :!dir però no l'esborreu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 5.4: OBTENIR I AJUNTAR FITXERS ** Per inserir el contingut d'un fitxer, feu :r FITXER ** 1. Assegureu-vos, amb l'ordre :!dir , que el fitxer PROVA encara hi és. 2. Poseu el cursor a dalt de tot d'aquesta pàgina. NOTA: Després d'executar el Pas 3 veureu la lliçó 5.3. Aleshores moveu-vos cap avall fins a aquesta lliçó un altre cop. 3. Ara obtingueu el fitxer PROVA amb l'ordre :r PROVA on PROVA és el nom del fitxer. NOTA: El fitxer que obtingueu es posa en el lloc on hi hagi el cursor. 4. Per comprovar que s'ha obtingut el fitxer tireu enrere i mireu com ara hi han dues còpies de la lliçó 5.3: l'original i la del fitxer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 5 SUMARI 1. :!ordre executa una ordre externa. Alguns exemples útils són: (MS-DOS) (Unix) :!dir :!ls - mostra un llistat del directori :!del FITXER :!rm FITXER - esborra el fitxer FITXER 2. :w FITXER escriu el fitxer editat al disc dur, amb el nom FITXER. 3. :#,#w FITXER desa les línies de # a # en el fitxer FITXER. 4. :r FITXER llegeix el fitxer FITXER del disc dur i l'insereix en el fitxer editat a la posició on hi ha el cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 6.1: L'ORDRE OBRIR ** Premeu o per obrir una línia sota el cursor i entrar en mode inserció. ** 1. Moveu el cursor a la línia de sota marcada amb --->. 2. Premeu o (minúscula) per obrir una línia SOTA el cursor i situar-vos en mode d'inserció. 3. Ara copieu la línia marcada amb ---> i premeu per tornar al mode normal. ---> Després de prémer o el cursor es situa a la línia nova en mode inserció. 4. Per obrir una línia SOBRE el cursor, premeu la O majúscula, en lloc de la minúscula. Proveu-ho amb la línia de sota. Obriu una línia sobre aquesta amb Shift-O amb el cursor en aquesta línia. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 6.2: L'ORDRE AFEGIR ** Premeu a per afegir text DESPRÉS del cursor. ** 1. Moveu el cursor al final de la primera línia de sota marcada amb ---> prement $ en el mode Normal. 2. Premeu la lletra a (minúscula) per afegir text DESPRÉS del caràcter sota el cursor. (La A majúscula afegeix text al final de línia.) Nota: Així s'evita haver de prémer i , l'últim caràcter, el text a inserir, la tecla , cursor a la dreta, i finalment x , només per afegir text a final de línia. 3. Ara completeu la primera línia. Tingueu en compte que aquesta ordre és exactament igual que la d'inserir, excepte pel que fa al lloc on s'insereix el text. ---> Aquesta línia us permetrà practicar ---> Aquesta línia us permetrà practicar afegir text a final de línia. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 6.3: UNA ALTRA MANERA DE SUBSTITUIR ** Teclegeu una R majúscula per substituir més d'un caràcter. ** 1. Moveu el cursor a la línia de sota marcada amb --->. 2. Poseu el cursor al principi de la primera paraula que es diferent respecte a la segona línia marcada amb ---> (la paraula "l'última"). 3. Ara premeu R i substituïu el que queda de text a la primera línia escrivint sobre el text vell, per fer-la igual que la segona. ---> Per fer aquesta línia igual que l'última useu les tecles. ---> Per fer aquesta línia igual que la segona, premeu R i el text nou. 4. Tingueu en compte que en prémer per sortir, el text que no s'hagi alterat es manté. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 6.4: ESTABLIR OPCIONS ** Feu que les ordres cercar o substituir ignorin les diferències entre majúscules i minúscules ** 1. Cerqueu la paraula 'ignorar' amb: /ignorar Repetiu-ho uns quants cops amb la tecla n. 2. Establiu l'opció 'ic' (Ignorar Capitals) escrivint: :set ic 3. Ara cerqueu 'ignorar' un altre cop amb la tecla n. Repetiu-ho uns quants cops més. 4. Establiu les opcions 'hlsearch' i 'incsearch': :set hls is 5. Ara torneu a executar una ordre de cerca, i mireu què passa: /ignorar 6. Per treure el ressalt dels resultats, feu: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 6 SUMARI 1. L'ordre o obre una línia SOTA la del cursor i mou el cursor a la nova línia, en mode Inserció. La O majúscula obre la línia a SOBRE la que hi ha el cursor. 2. Premeu una a per afegir text DESPRÉS del caràcter sota el cursor. La A majúscula afegeix automàticament el text a final de línia. 3. L'ordre R majúscula us posa en mode substitució fins que premeu . 4. Escriviu ":set xxx" per establir l'opció "xxx" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 7: ORDRES D'AJUDA ** Utilitzeu el sistema intern d'ajuda ** El Vim té un extens sistema d'ajuda. Per llegir una introducció proveu una d'aquestes tres coses: - premeu la tecla (si en teniu alguna) - premeu la tecla (si en teniu alguna) - escriviu :help Teclegeu :q per tancar la finestra d'ajuda. Podeu trobar ajuda sobre pràcticament qualsevol tema donant un argument a l'ordre ":help". Proveu això (no oblideu prémer ): :help w :help c_ l _kACUN|VkʡC j j ݰ_ӫܶH@yݤV¤UbYC v 1. HNb̹ʥСAܱzıoΪAC 2. UU(j)AX{Э_UC ---> {bzӤwgǷ|p󲾰ʨU@aC 3. {bШϥΤUANвʨĤGC ܡJpGzTwzҫUrAЫU^쥿`(Normal)ҦC MAqLJzQnROC ܡJ]ॿ`u@COϥhjklAbߺDzNֳt ab̹|BʥФFC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ĥ@ĤG`JVIMiJMhX !! SOܡJqо\Ū㥻@`eAM~HUѪROC 1. Ы(oOFTOzBb`Ҧ)C 2. MJJ :q! <^> ---> oؤ覡hXs边|OsziJs边HөҰʡC pGzQOsAhXAпJJ :wq <^> 3. pGzݨFRO洣ܲšAпJaz^쥻е{ROANOJ vimtutor <^> q`pUz]iHγoؤ覡J vim tutor <^> ---> o̪ 'vim' ܶiJvims边A 'tutor'hOzdzƭns誺C 4. pGz۫HwgccOFoǨBJܡAбqBJ1BJ3hXAM AiJs边C۱NвʨĤ@ĤT`~ڭ̪е{ѡC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ĥ@ĤT`J奻s褧R ** b`(Normal)ҦUAiHU x ӧRЩҦbmršC** 1. бNвʨ쥻`UаO ---> @C 2. FץJ~AбNвܷdzƧRrŪmBC 3. MU x N~rŧRC 4. _BJ2BJ4AylץC ---> The ccow jumpedd ovverr thhe mooon. 5. nFAӦwgץFAU@`eOĤ@ĥ|`C SOܡJbzsе{ɡAnjOСCO@IJbϥΤDzߡC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ĥ@ĥ|`J奻s褧J ** b`ҦUAiHU i ӴJ奻C** 1. бNвʨ쥻`UаO ---> Ĥ@C 2. FϱoĤ@椺epP_ĤGAбNвܤ奻Ĥ@ӦrŷdzƴJ mC 3. MU i AۿJn奻ršC 4. Ҧ奻ץAЫU ^`ҦC _BJ2ܨBJ4HKץylC ---> There is text misng this . ---> There is some text missing from this line. 5. pGz奻Jާ@wgܺNAб۾\ŪUpC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ĥ@p 1. Цb̹奻ʬJiHνbYA]iHϥ hjkl rC h () j (U) k (W) l (k) 2. iJvims边(qRO洣ܲ)AпJJvim W <^> 3. hXvims边AпJHUROҦקJ :q! <^> Ϊ̿JHUROOsҦקJ :wq <^> 4. b`ҦURЩҦbmršAЫJ x 5. b`ҦUnbЩҦbm}lJ奻AЫJ i Jn奻 SOܡJU |az^쥿`ҦΪ̨@ӤΪ̳ ROC nFAĤ@즹CUU~ĤGeC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤGĤ@`JRRO ** J dw iHqгBRܤ@ӳr/C** 1. ЫU TOzB_`ҦC 2. бNвʨ쥻`UаO ---> @C 3. бNвܷdzƭnR}lC 4. ۿJ dw RӳC SOܡJzҿJ dw |bzJPɥX{b̹̫@CpGz J~AЫU AM᭫sAӡC ---> There are a some words fun that don't belong paper in this sentence. 5. _BJ3ܨBJ4AܥylץC~ĤGĤG`eC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤGĤG`JLRRO ** J d$ qeЧR楽C** 1. ЫU TOzB_`ҦC 2. бNвʨ쥻`UаO ---> @C 3. бNвʨӦ檺(]NObĤ@I.᭱)C 4. MJ d$ qгBRܷeC ---> Somebody typed the end of this line twice. end of this line twice. 5. ~Dz߲ĤGĤT`NDO^ƤFC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤGĤT`J_ROMH RRO d 榡pUJ [number] d object Ϊ d [number] object NpUJ number - NRO(iﶵAʬٳ]m 1 )C d - NRC object - NROҭnާ@H(U)C @²uHCJ w - qeзemr/A]AŮC e - qeзemr/AO ** ]AŮC $ - qeзeme楽C SOܡJ _i_̡AЦb`ҦUȫNHӤϥΩROAh NݨЪʥpWHCҥN@ˡC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤGĥ|`JHROSp ** J dd iHR@ӷeC ** ų_RWסAVIM ]p̨Mwn²ƾRAȻݭnbP@W ⦸ d NiHRЩҦbFC 1. бNвʨ쥻`UuyqĤGC 2. J dd RӦC 3. MᲾʨĥ|C 4. ۿJ 2dd (ٰOoeL number-command-object ܡH) RC 1) Roses are red, 2) Mud is fun, 3) Violets are blue, 4) I have a car, 5) Clocks tell time, 6) Sugar is sweet 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤGĤ`JMRO ** J u ӺM̫檺ROAJ U ӭץC** 1. бNвʨ쥻`UаO ---> @AñNm_Ĥ@ӿ~ BC 2. J x RĤ@ӤQOdrC 3. MJ u M̫檺(@)ROC 4. onϥ x ץ檺Ҧ~C 5. {bJ@Ӥjg U A_Ӧ檺lAC 6. ۦhJ u HM U HΧeROC 7. MhJ CTRL-R (U CTRL 䤣}AۿJ R ) Ao˴N iH_ROA]NOMMROC ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. odzOD`ΪROCUOĤGpFC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤGp 1. qeЧRܳr/AпJJdw 2. qeЧRܷe楽AпJJd$ 3. RAпJJdd 4. b`ҦU@өRO榡OJ [number] command object Ϊ command [number] object NOJ number - NORO檺 command - NnƱAp d NR object - Nnާ@HAp w Nr/A$ N楽C $ (to the end of line), etc. 5. MHeާ@AпJJu (pgu) Mb@椤ҰʡAпJJU (jgU) MHeMROA_Heާ@GAпJJCTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤTĤ@`JmJRO ** J p N̫@RemJФ ** 1. бNвʨ쥻`UܭSqC 2. J dd NӦRAo˷|NӦOsvimwRϤC 3. ۱NвʨdzƸmJmWCOJOW@C 4. Mb`ҦU(iJ)AJ p NӦ߶KmJC 5. _BJ2ܨBJ4ANҦ̧ǩm쥿TmWC d) Can you learn too? b) Violets are blue, c) Intelligence is learned, a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤTĤG`JRO ** J r M@ӦrŴЩҦbmršC** 1. бNвʨ쥻`UаO ---> Ĥ@C 2. вʥШĤ@ӿ~AmC 3. ۿJ r Ao˴NN~FC 4. _BJ2MBJ3AĤ@wgק粒C ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. Mڭ~ǮղĤTĤT`C SOܡJOznbϥΤDzߡAӤObOФDzߡC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤTĤT`JRO ** nܤ@ӳr/Ϊ̥AпJ cw ** 1. бNвʨ쥻`UаO ---> Ĥ@C 2. ۧЩb lubw r u m̡C 3. MJ cw NiHץӳF(bҳo̬OJ ine C) 4. ̫ AMЩwU@ӿ~Ĥ@ӷdzƧ諸rBC 5. _BJ3MBJ4AĤ@ӥylpPĤGӥylC ---> This lubw has a few wptfd that mrrf changing usf the change command. ---> This line has a few words that need changing using the change command. ܡJЪ`N cw ROȶȬOF@ӳA]ziJ奻JAFC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤTĥ|`JϥcOLRO ** OiHϥΦPRROҨϥΪHѼơC** 1. Ou@覡RROO@PCާ@榡OJ [number] c object Ϊ c [number] object 2. HѼƤ]O@˪Ap w Nr/A$N楽C 3. бNвʨ쥻`UаO ---> Ĥ@C 4. ۱NвʨĤ@ӿ~BC 5. MJ c$ ϱoӦѤU󥿱oPĤG@ˡC̫ C ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤTp 1. nsmJwgR奻eAпJpgr pCӾާ@iHNwR 奻em_ФCpG̫@RO@ӾAӦNm _eЩҦb檺U@C 2. nЩҦbmršAпJpg r MnmrŪsr ŧYiC 3. RO\zܫwHAqeЩҦbmHC pJ cw iHeШeFJ c$ iH eШ楽eC 4. RO榡OJ [number] c object Ϊ c [number] object Uڭ~DzߤU@C ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĥ|Ĥ@`JwΤ󪬺A ** J CTRL-g ܷes󤤷eЩҦbmHΤ󪬺AHC J SHIFT-G h󤤪Y@wC** ܡJOnqŪ`eA~iHHUBJ!!! 1. U CTRL 䤣}M g CMN|ݨ쭶̩X{@ӪAH AܪeOes誺WM`ơCаOBJ3渹C 2. U SHIFT-G iHϱoeЪ̫@C 3. Jzd渹AMU SHIFT-GCo˴NiH^zĤ@U CTRL-g ɩҦbnFC`NJJ渹ɡA渹O|b̹WܥX C 4. pG@NAziH~BJ1ܨBJTC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĥ|ĤG`JjRO ** J / HΧHrŦiHΥHbe󤤬dӦrŦC** 1. b`ҦUJ / ršCzɷ|`NӦrũMг|X{b̹ Ao : ROO@˪C 2. ۿJ errroor <^>CerrroorNOznd䪺rŦC 3. ndPW@rŦAuݭn n CnVۤϤVdPW@r ŦAпJ Shift-N YiC 4. pGzQfVdrŦAШϥ ? N / iC ---> When the search reaches the end of the file it will continue at the start. "errroor" is not the way to spell error; errroor is an error. ܡJpGdwgF󥽧Ad|۰ʱqY~dC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĥ|ĤT`JtAd ** % iHdt諸A )B]B}C** 1. Щb`UаO --> @椤@ (B[ { BC 2. ۫ % ršC 3. ɥЪmObt諸ABC 4. A % NiH^t諸Ĥ@ӬABC ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) ܡJb{ǽոծɡAoӥ\ΨӬd䤣t諸AOܦΪC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĥ|ĥ|`Jץ~k@ ** J :s/old/new/g iH old newC** 1. бNвʨ쥻`UаO ---> @C 2. J :s/thee/the <^> CЪ`NөROuܥЩҦb檺Ĥ@Ӥǰt C 3. J :s/thee/the/g hO檺ǰtC ---> the best time to see thee flowers is in thee spring. 4. n椧X{CӤǰtAпJ :#,#s/old/new/g (#,#NO 檺渹)CJ :%s/old/new/g hOӤ󤤪CӤǰtC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĥ|p 1. Ctrl-g Τ_ܷeЩҦbmM󪬺AHCShift-G Τ_Nи ܤ̫@CVJ@Ӧ渹M Shift-G hONвʦܸӦ NC 2. J / MH@ӦrŦOhObeҽs誺ɤVdӦrŦC Jݸ ? MH@ӦrŦOhObeҽs誺ɤVedӦr ŦC@d䤧 n hO_W@ROAibP@VWd U@ӦrŦҦbFΪ̫ Shift-N VۤϤVdUӦrŦҦbC 3. pGзemOA(B)B[B]B{B}A % iHNвʨt諸 AWC 4. b@椺Y@ӦrŦ old srŦ newAпJ :s/old/new b@椺ҦrŦ old srŦ newAпJ :s/old/new/g b椺ҦrŦ old srŦ newAпJ :#,#s/old/new/g b󤺴ҦrŦ old srŦ newAпJ :%s/old/new/g iɸ߰ݥΤT{CӴݲK[ c ﶵAпJ :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤĤ@`Jb VIM ~ROk ** J :! MHۿJ@ӥ~ROiHӥ~ROC** 1. Uڭ̩Ҽx : RO]mШ̹Co˴NiHzJROFC 2. ۿJPĸ ! oӦršAo˴N\z~ shell ROFC 3. ڭ̥H ls ROҡCJ !ls <^> CөRON|C|Xzeؿ eANpPzbRO洣ܲŤUJ ls ROG@ˡCpG !ls S_ @ΡAziHո :!dir ݬݡC ---> ܡJ Ҧ~ROiHHoؤ覡C ---> ܡJ Ҧ : ROH <^> iסC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤĤG`J_Os󪺧hH ** nN󪺧ʫOs󤤡AпJ :w FILENAME ** 1. J :!dir Ϊ :!ls 򪾷eؿeCzwD̫ٱoV <^> aC 2. ܤ@ө|sbWAp TEST C 3. ۿJ :w TEST (B TEST OzҿܪWC) 4. өRO|H TEST WOsӤ (VIM е{)CFTOTOsA ЦAJ :!dir dݱzؿCeC ---> Ъ`NJpGzhX VIM MbHW TEST ѼƶiJAӤ eӦPzOsɪ󤺮eO@˪C 5. {bziHqLJ :!rm TEST ӧR TEST FC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤĤT`J@Ө㦳ܩʪOsRO ** nOs󪺳eAпJ :#,# w FILENAME ** 1. AӰ@ :!dir Ϊ :!ls 򪾷eؿeAMܤ@ӦXA WWAp TEST C 2. ۱Nвʦܥ̳ݡAM CTRL-g Ӧ檺渹COѤF 渹@C 3. ۧвʦܥ̩ݡAA@ CTRL-g C]OѤFoӦn@C 4. FuOs峹YӳAпJ :#,# w TEST Co̪ #,# NOW nDzO渹(ݦ渹,ݦ渹)A TEST NOwWC 5. ̫A :!dir T{O_TOsCOoORC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ĥĥ|`JMXä ** nVe󤤴Jt~󪺤eAпJ :r FILENAME ** 1. J :!dir T{zeЫت TEST ٦bC 2. MNвʦܷeݡC SOܡJ BJ3zNݨĤĤT`AЩɦAUʦ^ǫӡC 3. ۳qL :r TEST NeЫتW TEST 󴣨iӡC SOܡJzҴiӪNqЩҦbmB}lmJC 4. FT{wg\AʥЦ^ӪmNiH`N ĤT`A@O쥻At~@OӦۤ󪺰ƥC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ĥp 1. :!command Τ_@ӥ~RO commandC Ьݤ@ǹڨҤlJ :!dir - Τ_ܷeؿeC :!rm FILENAME - Τ_RW FILENAME C 2. :w FILENAME iNe VIM bs誺OsW FILENAME 󤤡C 3. :#,#w FILENAME iNes # ܲ # 檺eOs FILENAME C 4. :r FILENAME iϽL FILENAME ñN䴡Je󪺥Цm ᭱C ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤĤ@`J}RO ** J o NbЪU襴}s@öiJJҦC** 1. бNвʨ쥻`UаO ---> @C 2. ۿJpg o b *U* }s@öiJJҦC 3. M_аO ---> ë hXJҦӶiJ`ҦC ---> After typing o the cursor is placed on the open line in Insert mode. 4. Fb *W* }s@AuݭnJjg O ӤOpg o NiHFCЦbUդ@UaCгBbbӦWɡA Shift-OiH bӦWs}@C Open up a line above this by typing Shift-O while the cursor is on this line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤĤG`JЫᴡJRO ** J a NibФᴡJ奻C ** 1. Цb`ҦUqLJ $ Nвʨ쥻`UаO ---> Ĥ@ C 2. ۿJpg a hibФᴡJ奻FCjg A hiHb J奻C ܡJJjg A ާ@kiHb楽J奻AקKFJ iAЩw ̫@ӦršAJ奻A ^_`ҦAbYk䲾ʥХH x ReЩҦbmrŵѦhcާ@C 3. ާ@Ĥ@NiHɥRFCЪ`NЫᴡJ奻PJҦO @PAuO奻JmwyP}FC ---> This line will allow you to practice ---> This line will allow you to practice appending text to the end of a line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤĤT`Jt~@ӸmRO ** Jjg R ishӦršC** 1. бNвʨ쥻`UаO ---> Ĥ@C 2. ʥШĤ@椤P_Ц ---> ĤG檺Ĥ@ӳ}lAY last BC 3. MJjg R }lĤ@椤P_ĤG檺ѧErųv@JAN iH즳rŦӨϱoĤ@槹pPĤGFC ---> To make the first line the same as the last on this page use the keys. ---> To make the first line the same as the second, type R and the new text. 4. Ъ`NJpGz hXmҦ^_`ҦA|奻N MO쪬C ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ĥĥ|`J]mROﶵ ** ]miϬdΪ̴ijpgﶵ ** 1. nd ignore ib`ҦUJ /ignore Cn_dӵAiH _ n C 2. M]m ic ﶵ(icNO^婿jpgIgnore CaserYg)AY JJ :set ic 3. {biHqLJ n Ad ignoreC_diH_J n C 4. M]m hlsearch M incsearch oӿﶵAJHUeJ :set hls is 5. {biHAJdROAݬݷ|ĪGJ /ignore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ĥp 1. Jpg o iHbФU襴}s@ñNиm_s}歺AiJ JҦC Jjg O iHbФW襴}s@ñNиm_s}歺AiJ JҦC 2. Jpg a iHbЩҦbmᴡJ奻C Jjg A iHbЩҦb檺楽ᴡJ奻C 3. Jjg R NiJҦAܫ hXҦӶiJ` ҦC 4. J :set xxx iH]m xxx ﶵC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤCJbuURO ** ϥΦbuUt ** Vim ֦@ӲӭPbuUtΡCnҰʸUtΡAпܦpUTؤ k@J - U (pGLW) - U (pGLW) - J :help <^> J :q <^> iHUfC Ѥ@ӥTѼƵ":help"ROAziH_ӥDDUCиH UѼ(iOѤF^@C:)J :help w <^> :help c_ :help insert-index <^> :help user-manual <^> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ĤKJЫؤ@ӱҰʸ} ** ҥvim\ ** Vim\SʭnvihohAj\ೣSʬٿECFҰʧh \AzoЫؤ@vimrcC 1. }lsvimrcAoM_zҨϥΪާ@tΡJ :edit ~/.vimrc oOUnixtΩҨϥΪRO :edit $VIM/_vimrc oOWindowstΩҨϥΪRO 2. ۾ɤJvimrcSҤJ :read $VIMRUNTIME/vimrc_example.vim 3. OsAROJ :write bUzҰvimɭԡAs边N|FykG\CziH~z w䥦\]mK[ovimrc󤤡C ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim е{즹Cе{uOF²aФ@Uvims边AwHz ܮeǷ|ϥΥs边FCeáAvim٦ܦhܦhROAе{Ҥ Ъٮto۩OCҥHznqܡAٱ~VO@CU@BziH\Ū vimUAϥΪROOJ :help user-manual Fi@BѦҩMDzߡAHUoѭȱoˡJ Vim - Vi Improved - @̡JSteve Oualline XJNew Riders oOĤ@vimyC_Ǫ̯SOΡC䤤٥]tjq MϥܡCԱAгX http://iccf-holland.org/click5.html HUoѤѤFӥBeDnOviӤOvimAO]ȱoˡJ Learning the Vi Editor - @̡JLinda Lamb XJO'Reilly & Associates Inc. oO@ѡAqLzXGFѨvi쪺ƱCѪ Ӫ]]tF@_vimHC е{OѨӦCalorado School of MineseMichael C. PierceBRobert K. Ware ҽsgA䤤ӦColorado State UniversityCharles SmithѤF ܦhзNCs̳qHa}OJ bware@mines.colorado.edu е{wBram MoolenaarMvimi׭qC Ķ̪J =========== ²餤е{½ĶĶ̬ A٦ t~@pta}Jlinuxrat@gnuchina.orgC c餤е{Oq²餤е{½Ķϥ Debian GNU/Linux 嶵ؤp ժ_sͽsg~rX autoconvert ഫӦAù GF@DzӸ`ʡC ܧOJ ========= 2002~0830 P RMS@SMTH ANhB~ץC 2002~0422 P xuandong@sh163.net ANBOrץC 2002~0318 ھBram Moolenaarͦb2002~0316骺ӫHnDANvimtutor1.4Ķ ɯŨvimtutor1.5C 2001~1115 Nvimtutor1.4Ķ浹Bram MoolenaarMSven GuckesC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK![.*vim80/tutor/tutor.barnu[=============================================================================== = G o t i k a m i n n W I M M - S c h a i n e r - Fassung 1.7 = =============================================================================== Dyr Wimm ist ayn gro mchtigs Blat, ds was mit aynn Wsn Befelh aufwartt; z vil, d myn s allsand in aynn Schainer wie dnn daader unterbrng. Der Schainer ist yso aufbaut, d yr halt netty die Befelh allsand bringt, wost brauchst, dst mit iem fr s Eerste wirklich bbs anfangen kanst. Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; ds haisst, wennst di nit groo mit n Prbln und Tftln aufhaltst. OBACHT: Die Faudungen, wost daader finddst, gaand istig s Gwort ndern. Dsswgn machst eyn n Bstn glei ayn Aamum von derer Dautticht daader. Haast alsnan ds Gwort daader mit n Befelh "vimtutor bar" ausherlaassn, ist s ee schoon ayn Aamum. Mir kan s nit oft gnueg sagn, d der Schainer daader istig gan n ebn ghoert. Also muesst schoon aau die Befelh +ausfern, wennst ys gscheid ler- nen willst. Mit n Lsn yllain ist s +nit taan! Ietz schaust grad non, d dein Fststlltastn nit druckt ist; und aft geest glei aynmaal mit dyr j-Tastn abwrts (yso laaufft ds nmlich), hinst dst de gantze Letzn 1.1 auf n Bildschirm haast. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 1.1: MIT N MRKL UMAYNANDFARN ** Dyrmitst mit n Mrkl umaynandkimmst, druck h, j, k und l wie unt zaigt. ** ^ Ayn slsbrugg: k De Tastn h ist winster und +geet aau gan winster. < h l > S l leit zesm und richtt si gan zesm. j S j kan myn wie aynn Pfeil gan unt seghn. v Mit n k kimmst gan n KOPF. 1. Ietz ruedertst ainfach mit n Mrkl auf n Bildschirm umaynand, hinst dst di sicher felst. 2. Halt d Abhin-Tastn (j) druckt; aft rumplt s ainfach weiter. Netty yso kimmst gan dyr naehstn Letzn. 3. Wie gsait, ietz bewgst di also mit derer Tastn gan dyr Letzn 1.2. Non bbs: Allweil, wenn dyr niemer ganz wol ist, wasst bbenn druckt haast, aft zipfst ; naacher bist wider ganz gwon in dyr Befelhs-Artweis. Nbnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter. Aber hjkl seind z haissn s Wimm-Urgstain; und de "Hrtn" seind ganz dyr- fr, d myn bei +dene bleibt. Prblt s ainfach aus! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 1.2: NN WIMM AUSSCHALTTN ALSO, EE WENNST BBS VON DAA UNT AUSFERST, LIS LIEBER ZEERST DE GANTZE LET- ZN! 1. Druck d -Tastn, dyrmitst aau gwi in dyr Befelhs-Artweis bist. 2. Demmlt :q! . Daa dyrmit benddst ys Blat und verwirffst allss, wasst bbenn gndert haast. 3. Balst nn Eingib seghst, gib d Faudung ein, wo di zo dnn Schainer brun- gen haat, also vimtutor bar . 4. Also, wenn ietz allsse sitzt, naacherd ferst d Schritt 1 hinst 3 aus, mit wasst ys Blat verlaasst und aft wider einhinkimmst. Anmrkung: Mit :q! verwirffst allss, wasst gndert older enther gschribn haast. In aynn ttlych Letznen lernst acht, wiest ds allss in ayner Dautticht speichertst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 1.3: GWORT BARECHTN - LSCHN ** Druck x , dyrmitst ds Zaichen unter n Mrkl lschst. ** 1. Bewg di mit n Mrkl auf de mit ---> angmrkte Zeil unt. 2. Zo n Faeler Verbssern farst mit n Mrkl netty auf ds Zaichen, ds wo glscht ghoert. 3. Druck de Tastn x , dst ds berflssige Zaichen lschst. 4. Ietz tuest so lang weiter mit 2 hinst 4, hinst d dyr Saz stimmt. ---> De Kkuue sprangg bber nn Maanad. 5. Wenn ietz de Zeil verbssert ist, geest gan dyr Letzn 1.4. weiter. Und ganz wichtig: Dyrweilst dnn Schainer durcharechtst, versuech nit bbenn, allss auswendig z lernen; nn, lern ainfach mit n Anwenddn! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 1.4: GWORT BARECHTN - EINFEGN ** Druck i , dyrmitst bbs einfegst. ** 1. Bewg nn Mrkl zo dyr eerstn untignen Zeil, wo mit ---> angeet. 2. Dyrmitst de eerste Zeil wie de zwaitte machst, bewg nn Mrkl auf ds eerste Zaichen NAACH derer Stll, daa wo s Gwort eingfegt werdn sollt. 3. Druck i und gib ds ein, was abgeet. 4. Wenn ieweils ayn Faeler verweitert ist, aft druck ; dyrmit kimmst gan dyr Befelhsartweis zrugg. So, und ietz tuest ainfach yso weiter, hinst d dyr Saz stimmt. ---> Daader gt dd bbs b. ---> Daader geet diend bbs ab. 5. Balst mainst, dst ys Gwort-Einfegn kanst, aft geest gan dyr Letzn 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 1.5: GWORT BARECHTN - ANFEGN ** Druck A gan n Gwort Anfegn. ** 1. Gee mit n Mrkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat. Daa ist s gleich, wo gnaun dyr Mrkl in derer Zeil steet. 2. Demmlt A und gib de entsprchetn Ergntzungen ein. 3. Wennst mit n Anfegn frtig bist, aft druckst , dst wider eyn de Befelhsartweis zruggkimmst. 4. So, und ietz geest aft non gan dyr zwaittn mit ---> angmrktn Zeil; und daadl machst ys netty yso. ---> In derer Zeil gee In derer Zeil geet ayn Weeng ayn Gwort ab. ---> Aau daader stee Aau daader steet bbs Unvollstndigs. 5. Wennst s Anfegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 1.6: AYN DAUTTICHT BARECHTN ** Mit :wq speichertst ayn Dautticht und verlaasst nn Wimm ganz. ** !! OBACHT: Ee wennst mit dnn alln daa unt weitertuest, lis zeerst de gantze Letzn durch!! 1. Verlaa also s Blat, wie s in dyr Letzn 1.2. haisst, mit :q! ! 2. Gib d Faudung eyn n Eingib ein: vim Schainer . 'vim' ruefft s Blat auf, und 'Schainer' haisst de Dautticht, wost barechtn willst. Dyrmit haast also ayn Dautticht, d wost barechtn kanst. 3. Ietz fegst bbs ein older lschst bbs, wiest ys in de vorignen Letznen glernt haast. 4. Speichert de gnderte Dautticht und verlaa nn Wimm mit :wq . 5. Schmei nn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung. 6. Aft dst de obignen Schritt glsn und kppt haast, kanst ys durchfern. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 1 1. Dyr Mrkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert. h (winst) j (ab) k (auf) l (zes) 2. Um nn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT . 3. Willst nn Wimm verlaassn und aau allss verwerffen, aft gibst ein: und :q! . Gan n Verlaassn und Speichern aber zipfst und :wq . 4. Willst ds Zaichen lschn, daa wo dyr Mrkl drauf ist, demmltst x . 5. Willst bbs vor n Mrkl eingbn, zipfst i und drafter . Mechst ys aber eyn s Zeilnend anhinhngen, benutzt ys A . Und ainfach naach n Mrkl fegst ys mit a ein. Anmrkung: Druckst , kimmst eyn de Befelhsartweis zrugg older brichst ayn Faudung ab, d wo dyr schiefgangen ist. Ietz tue mit dyr Letzn 2 weiter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.1.: LSHFAUDUNGEN ** Demmlt dw , dyrmitst ayn Wort lschst. ** 1. Druck , dyrmit s aau gwi ist, dst in dyr Befelhsartweis bist. 2. Bewg nn Mrkl zo dyr mit ---> angmrktn Zeil unt. 3. Und daa geest ietz auf n Anfang von aynn Wort, ds wo glscht ghoert. 4. Zipf dw , dst ds gantze Wort lschst. Nbnbei: Dyr Buechstabn d erscheint auf dyr lsstn Zeil von n Bildschirm, sobaldst n eingibst. Dyr Wimm wartt ietz drauf, d bbs kimmt, al- so daader ayn w . Seghst freilich bbs Anderts wie ayn d , naacherd haast bbs Falschs demmlt. Druck aft und prblt s non aynmaal. ---> Ayn ttlych Wrter lustig ghoernd nit Fisper eyn dnn Saz einhin. 5. fert d Schritt 3 und 4, hinst d dyr Saz psst, und gee aft gan dyr Letzn 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.2.: NON MEERER LSHFAUDUNGEN ** Gib d$ ein, dst hinst eyn s Zeilnend lschst. ** 1. Druck , dyrmitst aau gwi in dyr Befelhsartweis bist. 2. Bewg nn Mrkl hinst eyn de mit ---> angmrkte Zeil untn. 3. Gee mit n Mrkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn . . 4. Zipf d$ , dst hinst eyn s End von dyr Zeil lschst. ---> bber haat s End von dyr Zeil doplt eingbn. doplt eingbn. 5. Gee weiter gan dyr Letzn 2.3, dyrmitst versteest, was daader ablaaufft. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.3: PFEMERER UND WOLENDER Vil Faudungen, wo s Gwort ndernd, stznd si aus aynn Pfemerer und aynn Wo- lend zamm. Bal i also bbs lschn will, schreib i ainsting d und aft s "Wo- lend", ds haisst also, "wolend", "wohin" d i will - older was i halt gnaun lschn will. Daader also, was i wie lschn kan: w - hinst eyn n Anfang von n naehstn Wort AANE dnn sein eersts Zaichen. e - gan n End von n ietzundn Wort MIT dnn seinn lsstn Zaichen. $ - zo n End von dyr Zeil MIT derer irn lsstn Zaichen. Also lscht de Tastnfolg de allss umbb n Mrkl hinst eyn s Wortend. Anmrkung: Gib i grad ds zwaitte Zaichen yllain ein, ruckt halt dyr Mrkl entsprchet weiter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.4: MIT AYNN ZLER D WOLENDER FERN ** Gib i ayn Zal vor aynn Wolend ein, werd ds Sel entsprchet oft gangen. ** 1. Bewg nn Mrkl gan n Anfang von dyr Zeil mit ---> dyrvor unt. 2. Zipf 2w , dst mit n Mrkl zwai Wrter weitergeest. 3. Zipf 3e , dst mit n Mrkl auf s End von n drittn Wort kimmst. 4. Zipf 0 (aynn Nuller), dst eyn n Anfang von dyr Zeil hinkimmst. 5. Widerhol d Schritt 2 und 3 mit verschaidne Zler. ---> Ds ist ietz grad ayn Zeil zo n drinn Umaynanderruedern. 6. Gee weiter gan dyr Letzn 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.5: DURCH AYNN ZLER GLEI MEERER LSCHN ** Ayn Zal vor aynn Pfemerer fert dnn entsprchet oft aus. ** Also, i mecht lschn, und zwaar bbs Bestimmts, und ds so und so oft: Daa dyrzue benutz i aynn Zler: d Zler Wolend (also nn Bewgungsschrit) 1. Bewg nn Mrkl zo n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an- gmrktn Zeil. 2. Demmlt d2w , dyrmitst de ganz groogschribnen Wrter lschst. 3. fert d Schritt 1 und 2 mit dnn entsprchetn Zler, dyrmitst de drauf- folgetn ganz grogschribnen Wrter mit ayner ainzignen Faudung lschst: ---> D ABC DE Zeil FGHI JK LMN OP mit Wrter ist Q RS TUV ietz berichtigt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.6: ARECHTN AUF ZEILN ** Zipf dd , um ayn gantze Zeil z lschn. ** Weil s gro oft vrkimmt, d myn gantze Zeiln lscht, kaamend schoon d Ent- wickler von n Urwimm daa drauf, d myn ainfach dd gan dnn Zwk schreibt. 1. Bewg nn Mrkl gan dyr zwaittn Zeil in n untignen "Gedicht". 2. Zipf dd , um d Zeil z lschn. 3. Ietz bewgst di gan dyr viertn Zeil. 4. Zipf 2dd , um zwo Zeiln zo n Lschn. ---> 1) Roosn seind root; ---> 2) Drunter ist s Koot. ---> 3) Veigerln seind blau. ---> 4) Umgrabn tuet s d Sau. ---> 5) D Ur sait de Zeit, ---> 6) Sait, d s mi freut, ---> 7) Dirndl, dein Gschau. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.7: RUGGGNGIG MACHEN (RUGGLN) ** Zipf u , dyrmitst de lsstn Faudungen ruggltst ** ** older U , um ayn gantze Zeil widerherzstlln. ** 1. Bewg nn Mrkl gan dyr mit ---> angmrktn Zeil unt und gee dyrmit auf n eerstn Faeler. 2. Zipf x , dst ds eerste z vile Zaichen lschst. 3. Ietz demmlt u , dyrmitst de lsste Faudung ruggltst. 4. Ietz behb allsand Faeler auf dyr Zeil mit dyr Hilf von n Befelh x . 5. Aft gibst ayn U (groo) ein, dst de Zeil wider yso hinbringst, wie s gwsn ist. 6. So, und ietz demmltst so oft u , hinst dst s U und de andern Fau- dungen rugggngig gmacht haast. 7. Und ietzet widerum schreibst so oft r , hinst dst allsand Be- felh widerhergstllt, z haissn allsse rugg-grugglt haast (also d Rugggn- gigmachungen rugggngig gmacht). ---> Beerichtig d Faeller voon dehrer Zeiil und sttll s mitt n Ruggruggln wi- der her. 8. Die Faudungen seind gro wichtig; s helffend ainn nrrisch weiter. Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 2 1. Um von n Mrkl aus hinst eyn s naehste Wort zo n Lschn, zipf: dw 2. Um umbb n Mrkl hinst eyn s End von dyr Zeil zo n Lschn, demmlt d$ 3. Dyrmitst ayn gantze Zeil lschst, gib ein: dd 4. Mechst ayn Bewgung, ayn "Wolend", fters, stll de entsprchete Zal dyr- vor: 3dw older aau: d3w 5. Dyr Pfueg fr ayn nderungsfaudung lautt yso: Pfemerer [Zal] Bewgungsschrit (Wolend) Und ds haisst: Dyr PFEMERER gibt an, WAS taan ghoert, bbenn d = lschn (delete). [ZAL] - Ayn Zal KAN myn angbn, wenn myn halt ayn Wolend fter habn will. S WOLEND, also dyr Schrit WOHIN, besagt, auf was i aushin will, bbenn auf aynn Wortanfang ( w ), s End von dyr Zeil ( $ ) und so weiter. 6. Dst eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller: 0 7. Um bbs Vorigs wider z ruggln, gib ein: u (klain also) Um allsand nderungen in ayner Zeil z ruggln, haast: U (also groo) Um "rugg-z-ruggln", also allss wider herzstlln, zipf: r ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 3.1: ANFEGN (put) ** Zipf p , dyrmitst bbs gnetty Glschts naach n Mrkl anfegst. ** 1. Bewg nn Mrkl gan dyr eerstn untignen Zeil mit ---> dyrvor. 2. Zipf dd , um sele Zeil z lschn und dyrmit in ayner Wimm-Osn zo n Spei- chern. 3. Bewg nn Mrkl gan dyr Zeil c), BER derer, daa wo de glschte Zeil ein- hinkemmen sollt. 4. So, und ietz gibst ainfach p ein, und schoon haast d Zeil unter derer mit n Mrkl drinn. 5. fert d Schritt 2 hinst 4, hinst dst allsand Zeiln yso naachynaynand haast, wie s hinghoernd. ---> d) Kanst du ds aau? ---> b) Veigerln seind blau. ---> c) Bedachtn kan myn lernen. ---> a) Roosn seind root. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 3.2: ERSTZN (replace) ** Zipf rx , um ds Zaichen unter n Mrkl durch x z erstzn. ** 1. Bewg nn Mrkl zo dyr eerstn untignen Zeil mit ---> dyrvor. 2. Bewg nn Mrkl, hinst d yr auf n eerstn Faeler steet. 3. Zipf r und drafter ds Zaichen, wo dyrfr daa hinghoert. 4. Widerhol d Schritt 2 und 3, hinst dst de eerste Zeil gmae dyr zwaittn berichtigt haast: ---> Wie d Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft! ---> Wie d Zeil eingbn wurd, wurdnd ainige falsche Tastnen zipft! 5. Ietz tue mit dyr Letzn 3.3 weiter. Anmrkung: Vergi nit drauf, dst mit n Anwenddn lernen solltst und nit bbenn mit n Auswendiglernen! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 3.3: NDERN (change) ** Um hinst eyn s Wortend z ndern, zipf ce . ** 1. Gee mit n Mrkl auf de eerste mit ---> angmrkte Zeil. 2. Ietz farst netty auf s "s" von Wstwr hin. 3. Zipf ce ein und aft d Wortberichtigung, daader also rter . 4. Druck und bewg nn Mrkl zo n naehstn Zaichen, wo gndert ghoert. 5. fert d Schritt 3 und 4, hinst d dyr eerste Saz wie dyr zwaitte ist. ---> Ainige Wstwr von derer Zlww ghhnnd mit n ndern-Pfemerer gaauu. ---> Ainige Wrter von derer Zeil ghoernd mit n ndern-Pfemerer gndert. ce lscht also s Wort und schlaaufft di eyn d Eingaab-Artweis. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 3.4.: NON MEERER NDERUNGEN PFELFS c ** D Lshfaudung c arechtt mit de nmlichnen Wolender wie d mit d ** 1. Dyr nder-Pfemerer arechtt anleich wie d Lshfaudung mit d , und zwaar yso: c [Zal] Bewgungsschrit (Wolend) 2. D Wolender seind de gleichn, bbenn w fr Wort und $ fr s Zeilnend. 3. Bewg di zo dyr eerstn untignen Zeil mit ---> . 4. Ietz geest auf dnn eerstn Faeler. 5. Zipf c$ , gib nn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft . ---> S End von derer Zeil sollt an de zwaitte daader anglichen werdn. ---> S End von derer Zeil sollt mit n Befelh c$ berichtigt werdn. Denk allweil dran, dst iederzeit mit dyr Ruggtastn Faeler ausbssern kanst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 3 1. Um ayn vorher glschts Gwort anzfegn, zipf p . Daa dyrmit werd ds gantze Gwort NAACH n Mrkl angfegt. Wenn s ayn gantze Zeil gwsn ist, werd d sel als de Zeil unterhalb n Mrkl eingfegt. 2. Um ds Zaichen unter n Mrkl, also wo dyr Mrkl ist, z erstzn, zipf r und aft ds Zaichen, wost daadl habn willst. 3. Dyr nderungspfemerer ( c = change) laasst ainn umbb n Mrkl hinst eyn s End von n Wolend ndern. Zipf ce , dyrmitst umbb n Mrkl hinst eyn s End von n Wort ndertst, und c$ hinst eyn s End von dyr Zeil. 4. Fr d nderung lautt dyr Pfueg: c [Zal] Wolend Ietz tue mit dyr naehstn Letzn weiter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 4.1: MRKLSTLLUNG UND DAUTTICHTDARSTAND ** Demmlt g, dst nn Befand und Darstand von dyr Dautticht anzaigst. ** ** Zipf G , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. ** Anmrkung: Lis d gantze Letzn daader durch, ee wennst iewign bbs unternimmst! 1. Druck g . Auf ds hin erscheint auf derer Seitt ganz unt ayn Dar- standsmeldung mit n Dauttichtnam und n Befand innerhalb dyr Dautticht. Mrk dyr de Zeilnnummer fr n Schrit 3. Anmrkung: Mglicherweis seghst aau nn Mrklbefand in n zesmen untern Bild- schirmgg. Aft ist s "Lindl" (ruler) eingstllt; meerer ber ds laasst dyr dyr Befelh :help 'ruler' ausher. 2. Druck G , um an s End von dyr Dautticht z kemmen. gg gibst ein, dst gan n Anfang von dyr Dautticht aufhinkimmst. 3. Gib d Nummer von derer Zeil ein, daa wost vorher warst, und aft non G . Ds bringt di zrugg gan seler Zeil, daa wost stuenddst, wiest ds eerste Maal g gadruckst. 4. Wennst di sicher gnueg felst, aft fer d Schritt 1 hinst 3 aus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 4.2: DYR BEFELH ZO N SUECHEN ** Zipf / und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. ** 1. Du gibst also in dyr Befelhsartweis s Zaichen / ein. Ds sel wie aau dyr Mrkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung : . 2. Ietz zipf Faeeler . Netty um ds 'Faeeler' willst ietz suechen. 3. Willst um gnaun dnn Ausdruk weitersuechen, zipf ainfach n (wie next). Willst hinzrugg suechen, aft gibst N ein. 4. Um von Haus aus zruggaus z suechen, nimm ? statt / her. 5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, nimm o , und ds fter, wennst weiter zrugg willst. Mit i widerum kimmst vorwrts. ---> Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler Anmrkung: Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi- der weiter dyrmit, men Sach dyr Schaltter 'wrapscan' wr auf aus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 4.3: DE GGNKLAMMERN FINDDN ** Zipf % , um de entsprchete Klammer ) , ] older } z finddn. ** 1. Stz nn Mrkl auf iewign aine von dene drei Klammern ( , [ older { in dyr untignen Zeil, wo mit ---> angmrkt ist. 2. Ietzet zipf s Zaichen % . 3. Dyr Mrkl geet ietz auf de pssete schliessete Klammer. 4. Ietz demmlt % , und dyrmit kimmst gan dyr ffneretn Klammer zrugg. 5. Stz nn Mrkl auf ayn anderne Klammer von ({[]}) und prblt % aus. ---> Ds ( ist bloo ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. )) Anmrkung: Um d Mglichkeit gaast bsunders froo sein, wennst aynmaal in aynn Spaichgwort verzweiflt ayn faelete Ggnklammer suechst! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 4.4: D ERSTZUNGSFAUDUNG (substitute) ** Zipf :s/alt/neu/g , um 'alt' durch 'neu' zo n Erstzn. ** 1. Gee mit n Mrkl zo dyr unt steehetn mit ---> angmrktn Zeil. 2. Zipf :s/dee/de . Der Befelh erstzt alsnan grad ds +eerste "dee", wo vrkimmt. 3. Ietz prblt s mit :s/dee/de/g . Ds zuestzliche g ("Pflok" nennt myn bbs Slchers) bewirkt, d allss, was dyrmit kennzaichnet ist, innerhalb von dyr ainn Zeil erstzt werd. ---> Dee schoenste Zeit, d myn dee Blemln anschaut, ist dee schoene Lan- gesszeit. 4. Um ietz allsand Suechbegriff innerhalb von zwo Zeiln zo n ndern, zipf :#,#s/alt/neu/g , wobei # ieweils fr de eerste und lsste Zeil von dnn Pfraich steet. :%s/alt/neu/g zipfst, dst d Vrkemmen in dyr gantzn Dautticht ndertst. Mit :%s/alt/neu/gc finddst allsand Vrkemmen in dyr gsamtn Dautticht; daa werst aber zeerst non gfraagt, obst ys erstzn willst older nity. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 4 1. g zaigt dnn ietzundn Dauttichtbefand und nn Darstand dyrvon an. G bringt di an s End von dyr Dautticht. G bringt di gan dyr entsprchetn Zeilnnummer. gg geet +grad yso. gg bringt di zo dyr eerstn Zeil. 2. D Eingaab von / mit aynn Ausdruk suecht VRSHLING um dnn Ausdruk. Gibst ? und aynn Suechbegrif ein, suecht s um dnn RSHLING. Zipf naach ayner Suech n ; naacherd werd in de gleiche Richtung weiter- gsuecht. Mit N geet s umkeerter weiter. o bringt di zo lterne Befndd zrugg, i zo neuerne. 3. D Eingaab von % , wenn dyr Mrkl auf ainer von dene Klammern steet: ({[ )]} , bringt di zo dyr Ggnklammer. 4. Um ds eerste Vrkemmen von "alt" in ayner Zeil durch "neu" z erstzn, zipf :s/alt/neu . Um allsand in ayner Zeil z erstzn, zipf :s/alt/neu/g . Mechst allss in zwo Zeiln erstzn, demmlt zo n Beispil :5,6s/alt/neu/g . Mechst allss in dyr gantzn Dautticht erstzn, gib ein: :%s/alt/neu/g . Willst ayn ieds Maal bstaetln, hng 'c' wie confirm hint anhin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFERN ** Willst ayn Gffaudung ausfern, gib ainfach d sel naach :! ein. ** 1. Zipf dnn bekanntn Befelh : , dyrmitst mit n Mrkl auf n Bildschirm ganz abhin kimmst. Draufhin kanst aynn gwonen Gfbefelh eingbn. 2. Zeerst kimmt aber non ayn Ruefzaichen ! . Und ietzet haast d Mglich- keit, ayn beliebige ausserige Gffaudung auszfern. 3. Als Beispil zipf :!ls ; und schoon haast ayn Auflistung von deinn Verzaichniss, netty wie wennst ganz gwon in n Eingib wrst. Geet ls aus iewign aynn Grund nit, aft prblt s mit :!dir . Also non aynmaal: Mit dnn Angang kan ayn iede beliebige ausserige Faudung aus- gfert werdn, aau mit Auerwerdd. Und wolgmrkt: Alle Befelh, wo mit : angeend, messend mit bst- tigt werdn. Ds dyrsagn myr frba +niemer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 5.2: NON MEERER DRBER, WIE MYN DAUTTICHTN SCHREIBT ** Um bbs Gnderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM . ** 1. Zipf :!dir older :!ls , dst dyr ayn Auflistung von deinn Verzaich- niss ausherlaasst. Dst drafter eingbn muesst, waisst ee schoon. 2. Suech dyr aynn Dauttichtnam aus, dnn wo s non nit geit, bbenn POCH . 3. Ietz demmlt: :w POCH (also mit POCH als dnn neuen Dauttichtnam). 4. Ds speichert ietz de gantze Dautticht, also nn Wimmschainer, unter dnn Nam POCH. Ds kanst leicht berpreffen, indem dst ainfach :!ls older :!dir zipfst und dyrmit deinn Verzaichnissinhalt seghst. Anmrkung: Stigst ietz aus n Wimm aus und gnnst n aft wider mit vim POCH , naacherd wr d Dautticht ayn gnaune Aamum von n Schainer dyrselbn, wiest n gspeichert haast. 5. Ietz verweitert d Dautticht - fallsst s Fenstl haast - , mit :!del POCH beziehungsweis bei aynn Unixgebu mit :!rm POCH . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN ** Um aynn Tail von dyr Dautticht z speichern, zipf v [Wolend] :w DAUTTICHT ** 1. Ruck nn Mrkl auf netty d Zeil daader. 2. Demmlt v und gee mit n Mrkl auf dnn fmftn Auflistungspunt untet. Du seghst glei, d s Gwort vrherghbt erscheint. 3. Druck s Zaichen : . Ganz unt auf n Bildschirm erscheint :'<,'> . 4. Zipf w POCH , wobei s dnn Dauttichtnam POCH non nit geit. Vergwi di, dst ds :'<,'>w POCH aau +seghst, ee wennst druckst. 5. Dyr Wimm schreibt de ausgwaltn Zeiln eyn de Dautticht POCH einhin. Benutz :!dir older :!ls , dst ds berpreffst. Lsh s fein nit bbenn! Mir brauchend s nmlich fr de naehste Letzn. Anmrkung: Druckt myn v , ginnt d Sichtisch-Auswal. Du kanst mit n Mrkl um- aynandfarn, um d Auswal z verndern. Drafter kan myn mit yn aynn Pfemerer mit dnn Gwort bbs machen. Zo n Beispil lscht d ds Gwort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 5.4: EINLSN UND ZAMMENFERN VON DAUTTICHTN ** Um nn Inhalt von ayner Dautticht einzlsn, zipf :r DAUTTICHTNAM ** 1. Stz nn Mrkl ber d Zeil daader. OBACHT: Aft dst nn Schrit 2 ausgfert haast, seghst auf aynmaal bbs aus dyr Letzn 5.3. Bewg di naacherd wider abwrts, dyrmitst d Letzn wi- derfinddst. 2. Ietz lis dein Dautticht POCH ein, indem dst d Faudung :r POCH aus- ferst, wobei wie gsait POCH fr dnn von dir ausgsuechtn Dauttichtnam steet. De einglsne Dautticht werd unterhalb dyr Mrklzeil eingfegt. 3. Um zo n berpreffen, ob de Dautticht aau gwi einglsn ist, gee zrugg; und du seghst, d s ietz zwo Ausfrtigungen von dyr Letzn 5.3. geit, s Urniss und de eingfegte Dauttichtfassung. Anmrkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlsn. Zo n Bei- spil list :r !ls d Ausgaab von dyr Faudung ls ein und fegt s unterhalb n Mrkl ein. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 5 1. :!FAUDUNG fert aynn ausserignen Befelh aus. Daader ayn ttlych gwnddte Beispiler: (Fenstl) (Unix - Linux) :!dir :!ls - listt s Verzaichniss auf. :!del DAUTTICHT :!rm DAUTTICHT - verweitert sele Dautticht. 2. :w DAUTTICHT speichert de ietzunde Wimmdautticht unter dnn besagtn Nam. 3. v WOLEND :w DAUTTICHTNAM schreibt de sichtisch ausgwaltn Zeiln eyn de Dautticht mit seln Nam. 4. :r DAUTTICHTNAM ladt sele Dautticht und fegt s unterhalb n Mrklbefand ein. 5. :r !dir list d Ausgaab von dyr Faudung dir und fegt s unterhalb n Mrklbefand ein. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 6.1: ZEIL FFNEN (open) ** Zipf o , um ayn Zeil unterhalb n Mrkl z ffnen und eyn d ** ** Einfegartweis z kemmen. ** 1. Bewg nn Mrkl zo dyr eerstn mit ---> angmrktn Zeil unt. 2. Zipf o (klain), um ayn Zeil UNTERHALB n Mrkl z ffnen und mit dyr Ein- fegartweis weiterztuen. 3. Ietzet zipf ayn Weeng bbs und druck , um d Einfegartweis z ver- laassn. ---> Mit o werd dyr Mrkl in dyr Einfegartweis auf de offene Zeil gstzt. 4. Um ayn Zeil OBERHALB n Mrkl aufzmachen, gib ainfach ayn groosss O statt yn aynn klainen ein. Versuech ds auf dyr untignen Zeil. ---> ffnet ayn Zeil ber derer daader mit O , wenn dyr Mrkl auf derer Zeil ist. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 6.2: GWORT ANFEGN (append) ** Zipf a , um bbs NAACH n Mrkl einzfegn. ** 1. Bewg nn Mrkl gan n Anfang von dyr eerstn ebungszeil mit ---> unt. 2. Druck e , hinst d dyr Mrkl an n End von Zei steet. 3. Zipf ayn klains a , um bbs NAACH n Mrkl anzfegn. 4. Vergntz ds Wort wie in dyr Zeil drunter. Druck , um d Schreib- Artweis z verlaassn. 5. Bewg di mit e zo n naehstn ungantzn Wort und widerhol d Schritt 3 und 4. ---> D Ze biett ayn Glgn , ayn Gwort in ayner Zeil anzf. ---> D Zeil biett ayn Glgnet, ayn Gwort in ayner Zeil anzfegn. Anmrkung: a , i und A bringend ainn gleichermaan eyn d Einfegartweis; dyr ainzige Unterschaid ist, WO mit n Einfegn angfangt werd. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 6.3: AYN ANDERNE WEIS ZO N ERSTZN (replace) ** Demmlt ayn groosss R , um meerer als wie grad ain Zaichen z erstzn. ** 1. Bewg nn Mrkl zo dyr eerstn untignen, mit ---> angmrktn Zeil. Gee mit n Mrkl gan n Anfang von n eerstn xxx . 2. Ietz druck R und zipf sele Zal, wo drunter in dyr zwaittn Zeil steet, yso d de sel s xxx erstzt. 3. Druck , um d Erstzungsartweis z verlaassn. Du gspannst, d dyr Rest von dyr Zeil unverndert bleibt. 4. fert die Schritt, um ds berblibne xxx z erstzn. ---> S Zunddn von 123 zo xxx ergibt xxx. ---> S Zunddn von 123 zo 456 ergibt 579. Anmrkung: D Erstzungsartweis ist wie d Einfegartweis, aber ayn ieds eindem- mlte Zaichen lscht ayn vorhanddns. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 6.4: GWORT AAMEN UND EINFEGN ** Benutz nn Pfemerer y , um bbs z aamen, und p , um bbs einzfegn. ** 1. Gee zo dyr mit ---> angmrktn Zeil unt und stz nn Mrkl hinter "a)". 2. Ginn d Sichtisch-Artweis mit v und bewg nn Mrkl gnaun vor "eerste". 3. Zipf y , um dnn vrherghbtn Tail z aamen. 4. Bewg nn Mrkl gan n End von dyr naehstn Zeil: j$ 5. Demmlt p , um ds Gwort einzfegn, und aft: a zwaitte . 6. Benutz d Sichtischartweis, um " Eintrag." auszwaln, aam s mittls y , be- wg di gan n End von dyr naehstn Zeil mit j$ und feg s Gwort dortn mit p an. ---> a) ds ist dyr eerste Eintrag. b) Anmrkung: Du kanst y aau als Pfemerer verwenddn; yw zo n Beispil aamt hinst eyn n naehstn Wortanfang (aane dnn selber). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 6.5: SCHALTTER STZN ** Stz aynn Schaltter yso, d ayn Suech older Erstzung Groo- und Klain- ** ** schreibung bergeet. ** 1. Suech um 'bergee", indem dst /bergee eingibst. Widerhol d Suech ayn ttlych Maal, indem dst de Tastn n druckst. 2. Stz de Zwisl - nn Schaltter - 'ic' (ignore case), indem dst :set ic eingibst. 3. Ietz suech wider um 'bergee' und tue aau wider mit n weiter. Daa fallt dyr auf, d ietz bbenn aau bergee und BERGEE hergeet. 4. Stz de Zwisln 'hlsearch' und 'incsearch' pfelfs: :set hls is 5. Widerhol d Suech und bobacht, was ietz gschieght: /bergee 6. Dst groo und klain wider gwon unterscheidst, zipf: :set noic Anmrkung: Mechst de Trffer niemer vrherghbt seghn, gib ein: :nohlsearch Anmrkung: Sollt klain/groo bei ayner ainzignen Suech wurst sein, benutz \c in n Suechausdruk: /bergee\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 6 1. Zipf o , um ayn Zeil UNTERHALB n Mrkl z ffnen und d Einfegartweis z ginnen. Zipf O , um ayn Zeil OBERHALB n Mrkl z ffnen. 2. Zipf a , um NAACH n Mrkl ayn Gwort einzfegn. Zipf A , um ayn Gwort naach n Zeilnend anzfegn. 3. D Faudung e bringt di gan n End von aynn Wort. 4. Dyr Pfemerer y (yank) aamt bbs, p (put) fegt ds ein. 5. Ayn groosss R geet eyn d Erstzungsartweis, hinst d myn druckt. 6. D Eingaab von ":set xxx" stzt de Zwisl "xxx". Ayn ttlych Zwisln seind: 'ic' 'ignorecase' Groo/klain wurst bei ayner Suech 'is' 'incsearch' Zaig aau schoon ayn Tailberainstimmung 'hls' 'hlsearch' Hb allsand pssetn Ausdrck vrher Dyr Schaltternam kan in dyr Kurz- older Langform angbn werdn. 7. Stll yn ayner Zwisl "no" voran, dst ys abschalttst: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 7.1: AYN HILFGWORT AUFRUEFFEN ** Nutz ds einbaute Hilfgebu, de "Betribsanlaittung". ** Eyn n Wimm ist ayn ausferliche "Gebrauchsanweisung" einbaut. Fr s Eerste prblt ainfach ains von dene dreu aus: - Druck d -Tastn, wennst bbenn aine haast. - Druck de Tastn , fallsst ys haast. - Zipf :help Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie ds mit dyr Hilf geet. Demmlt w w , um von ainn Fenster zo n andern zo n Springen. Demmlt :q , um s Hilffenster zo n Schliessn. Du kanst zo so guet wie allssand ayn Hilf finddn, indem dst yn dyr Faudung :help aynn Auerwerd naachstllst und istig nit vergisst. Prblt ds: :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 7.2: ERSTLL AYN GIN-SCHRIPF ** Mutz nn Wimm mit de einbautn Faehigkeitn auf. ** Dyr Wimm besitzt ayn Wsn Schftungen, wo ber n Urwimm aushingeend, aber de meerern dyrvon seind in dyr Vorgaab ausgschaltt. Dyrmitst meerer aus n Wimm ausherholst, erstllst ayn "vimrc"-Dautticht. 1. Lg ayn "vimrc"-Dautticht an; ds geet ie naach Betribsgebu verschidn: :e ~/.vimrc fr s Unix :e $VIM/_vimrc bei n Fenstl 2. Ietz lis nn Inhalt von dyr Beispil-"vimrc"-Dautticht ein: :r $VIMRUNTIME/vimrc_example.vim 3. Speichert de Dautticht mit: :w 4. Bei n naehstn Gin von n Wimm ist aft d Fegnussvrherhbung zuegschalttn. Du kanst dyr allss eyn d Dautticht einhinschreibn, wasst bstndig habn willst. Meerer dyrzue erfarst unter: :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 7.3: VERGNTZN ** Befelhszeilnvergntzung mit d und ** 1. Vergwi di, d dyr Wimm nit auf n Urwimm-"Glais" fart: :set nocp 2. Schaug naach, wlcherne Dauttichtn d s in n Verzaichniss geit: :!ls older :!dir 3. Zipf nn Anfang von ayner Faudung: :e 4. Druck d , und dyr Wimm zaigt ayn Listn von Faudungen, wo mit "e" angeend. 5. Druck , und dyr Wimm vervollstndigt nn Faudungsnam zo ":edit". 6. Feg ayn Laerzaichen und nn Anfang von ayner besteehetn Dautticht an: :edit DAU 7. Druck . Dyr Wimm vergntzt nn Nam, ds haisst, wenn yr aindeuttig ist. Anmrkung: D Vergntzung geit s fr aynn Hauffen Faudungen. Versuech ainfach d und . Bsunders ntzlich ist ds bei :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 7 1. Zipf :help oder druck oder , um ayn Hilffenster z ffnen. 2. Zipf :help FAUDUNG , um auf ayn Hilf gan aynn Befelh z kemmen. 3. Zipf w w , um zo n andern Fenster z springen. 4. Zipf :q , um s Hilffenster z schliessn. 5. Erstll ayn vimrc-Ginschripf zuer Sicherung von deine Mtzneinstllungen. 6. Druck d , aft dst naach : ayn Faudung angfangt haast, dyr- mitst mgliche Vergntzungen anzaigt kriegst. Druck fr ain Vervollstndigung yllain. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ds wr ietzet s End von n Wimmschainer. Gangen ist s daa drum, aynn kurtzn und bndignen berblik ber s Blat WIMM z lifern, netty vil gnueg, d myn fr s Eerste wirklich bbs dyrmit anfangen kan. Dyrmit ist s aber auf kain Weitn non nit taan; dyr Wimm haat schoon non vil meerer auf Lager. Lis als Naehsts aynmaal s Benutzerhandbuech: :help user-manual Zo n Weiterlsn und Weiterlernen wr ds Buech daader zo n Empfelhen: Vim - Vi Improved - von n OUALLINE Steve Verlaag: New Riders Ds ist ds eerste Buech, wo ganz yn n Wimm gwidmt ist, netty ds Grechte fr Anfnger. Es haat ayn Wsn Beispiler und aau Bilder drinn. See http://iccf-holland.org/click5.html Ds folgete Buech ist schoon lter und meerer ber n Urwimm als wie ber n Wimm, aber aau zo n Empfelhen: Textbearbeitung mit dem vi-Editor - von dyr LAMB Linda und n ROBBINS Arnold - Verlaag O'Reilly - Buechlaittzal (ISBN): 3897211262 In dnn Buech kan myn fast allss finddn, was myn mit n Urwimm angeen mecht. De sxte Ausgaab enthaltt aau schoon bbs ber n Wimm. Als ietzunde Bezugniss fr d Fassung 7 und ayn pfrenge Einferung dient ds folgete Buech: vim ge-packt von n WOBST Reinhard mitp-Verlaag, Buechlaittzal 978-3-8266-1781-2 Trotz dyr recht pfrengen Darstllung ist s durch seine viln ntzlichnen Bei- spiler aau fr Einsteiger grad grecht. Probhaeupster und de Beispilschripfer seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html Verfasst habnd dnn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entwrff, wo dyr SMITH Charles von dyr Kolraader Allschuel (Colorado State University) zuer Verfegung gstllt haat. Gundpost: bware@mines.colorado.edu Fr n Wimm haat n dyr MOOLENAAR Bram barechtt. De bairische berstzung stammt von n HELL Sepp 2009, ayn Weeng berarechtt 2011. Sein Gundpostbrcht ist sturmibund@t-online.de ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!3vim80/tutor/tutor.ru.cp1251nu[=============================================================================== = VIM -- 1.7 = =============================================================================== Vim -- , , , , . , Vim . 25-30 , . ! . , ( "vimtutor", ). , . , , . , ! , CapsLock , j , , 1.1 . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.1: ** h,j,k,l , . ** ^ k : h . < h l > l . j j `'. v 1. , . 2. `' (j) . , . 3. `' 1.2. ! , , (Normal mode). . ! () . , hjkl , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.2: VIM !! ! , , !! 1. ( , , (Normal mode)). 2. : :q! . ( , :q! .) . 3. , , . : vimtutor 4. , , 1 3 . ! :q! . . 5. 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.3: -- ** x . ** 1. , --->. 2. , , . 3. x . 4. 2 4 . ---> . 5. , , 1.4. ! , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.4: -- ** , i . ** 1. , --->. 2. , , . 3. i . 4. . 2 4, . ---> . ---> . 5. , 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.5: -- ** , A . ** 1. , --->. . 2. A . 3. . 4. , ---> 2 4 . ---> . ---> . 5. , 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.6: ** :wq Vim. ** !! ! , , !! 1. Vim, 1.2: :q! , , . 2. : vim tutor `vim' -- Vim, `tutor' -- . , . 3. , . 4. Vim : :wq 5. vimtutor 1, vimtutor . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 1. , hjkl. h () j () k () l () 2. Vim ( ) : vim _ 3. Vim : :q! . : :wq . 4. , : x 5. , : i : a ! (Normal mode) . 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.1: ** dw . ** 1. , . 2. , --->. 3. , . 4. dw . ! dw . - , . ---> . 5. 3 4, 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.2: ** d$ . ** 1. , . 2. , --->. 3. ( ). 4. d$ . ---> - . . 5. , , 2.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.3: , , . d : d : d - . - ( ). : w - , . e - , . $ - . ^ - . ! (Normal mode) , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.4: ר ** . ** 1. ---> . 2. 2w . 3. 3e . 4. 0 () . 5. 2 3 . ---> . 6. 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.5: ר ** . ** : d 1. ---> . 2. d2w . 3. 1 2 . ---> . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.6: ** dd . ** , Vi d. 1. , . 2. dd . 3. . 4. 2dd . ---> 1) , ---> 2) , ! ---> 3) ``'', ``'' --- ! ---> 4) ! ---> 5) ... ---> 6) `' ---> 7) . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.7: `' ** u , U . ** 1. , --->, . 2. x . 3. u () . 4. , x . 5. U , . 6. u U . 7. CTRL-R (.. CTRL R) ( ). ---> `'. 8. . 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 1. : dw 2. : d$ 3. : dd 4. : 2w 5. : [] [] : [] - , - , d - , w (), $ ( ), .. 6. : 0 7. () : u ( u) () : U ( U) : CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.1: ** p . ** 1. , --->. 2. dd Vim'. 3. , . 4. p . 5. 2 4, . ---> ) . ---> ) , ---> ) ---> ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.2: ** r , . ** 1. , --->. 2. , . 3. r , . 4. 2 3, . ---> 0 ! ---> - ! 5. 3.3. ! , , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.3: ** ce . ** 1. , --->. 2. `o' `'. 3. ce ( , `'). 4. ( , ). 5. 3 4 . ---> . ---> . , ce , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.4: c ** , . ** 1. , . Ÿ : [] c c [] 2. : w (), $ ( ) .. 3. , --->. 4. . 5. c$ , , . ---> , . ---> c$ . ! Backspace . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 1. , , p . ( , ). 2. r . 3. . , ce , c$ . 4. : [] c c [] . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.1: ** CTRL-g . G (SHIFT-G) . ** ! ! 1. Ctrl g . , . , 3. 2. Shift g . 3. , Shift-G. , , Ctrl-g. 4. , 1 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.2: ** / . ** 1. (Normal mode) / . , , : . 2. '' . , . 3. , , n . , Shift-N . 4. , ? / . 5. , , Ctrl-O. ( Ctrl o ). . Ctrl-I . ---> "" `'; . ! , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.3: ** % ), ] } . ** 1. (, [ { , --->. 2. % . 3. . 4. % . ---> ( , (, [ ] { } . )) ! ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.4: ** :s///g '' ''. ** 1. , --->. 2. :s// . , . 3. :s///g , g . . ---> , , . 4. , :#,#s///g #,# -- . :%s///g . :%s///gc . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 1. Ctrl-g . Shift-G . , Shift-G . gg . 2. / Ш . ? . n Shift-N . 3. % , (,),[,],{, } . 4. `' `' , :s/old/new `' `' , :s/old/new/g , :#,#s/old/new/g `' `' , :%s/old/new/g , 'c' :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.1: ** :! , . ** 1. : . . 2. ! ( ). , . 3. ls ! . , , . :!dir , ls . ! . ! , : , . . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.2: ** , , :w _. ** 1. :!dir :!ls . , . 2. , , TEST. 3. :w TEST ( TEST -- , .) 4. ( Vim) TEST. , :!dir :!ls . ! Vim TEST (.. vim TEST ), , . 5. , MS-DOS :!del TEST Unix :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.3: ** , v :w _ ** 1. . 2. v . , . 3. : :'<,'> . 4. w TEST ( TEST -- , ). , :'<,'>w TEST. 5. Vim TEST. , :!dir :!ls . , . ! v . . - , , d. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.4: ** , :r _ ** 1. . ! 2 5.3. . 2. TEST, :r TEST , TEST -- . 3. , , 5.3: TEST. ! . , :r !ls ls . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 1. :! . : (MS-DOS) (Unix) :!dir :!ls -- . :!del :!rm -- . 2. :w _ Vim . 3. v :w _ . 4. :r _ . 5. :r !dir dir . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.1: ** o (Insert mode) ** 1. , --->. 2. o ( ) , (Insert mode). 3. - . ---> o . 4. , O , o . . ---> , Shift-O. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.2: ** a , . ** 1. , --->. 2. e c . 3. a ( ) , . ( A .) 4. , . (Insert mode). 5. e 3 4. ---> . ---> . ! a , i A , , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.3: ٨ ** R . ** 1. , --->, xxx. 2. R xxx. 3. . . 4. xxx. ---> 123 xxx xxx. ---> 123 456 579. ! , . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.4: ** y p ** 1. , --->, `)'. 2. v `'. 3. y . 4. j$ . 5. p . `' . ---> ) . ) ! yw ( y w ) . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6.5: ** ** 1. `', : / . , n . 2. `ic' ( ), : :set ic 3. `', : n , `' `'. 4. `hlsearch' `incsearch': :set hls is 5. , : / 6. : :set noic ! : :nohlsearch ! , \ : /\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 1. o . O . 2. a . A . 3. e . 4. y , p -- . 5. R . 6. `:set xxx' `xxx', : `ic' `ignorecase' `is' `incsearch' `hls' `hlsearch' 7. `no' : :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7.1: ** ** Vim . : - ( ) - ( ) - :help . CTRL-W CTRL-W . :q . , `:help'. ( ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7.2: ** Vim ** Vim , Vi, . `vimrc'. 1. `vimrc'. : :e ~/.vimrc Unix :e $VIM/_vimrc MS-Windows 2. `vimrc': :r $VIMRUNTIME/vimrc_example.vim 3. `vimrc': :w Vim . , , `vimrc'. :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7.3: ** CTRL-D ** 1. , Vim : :set nocp 2. : :!ls :!dir 3. : :e 4. CTRL-D Vim `e'. 5. Vim `:edit'. 6. : :edit 7. Vim , . ! . CTRL-D . :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7 1. :help , . 2. :help cmd . 3. CTRL-W CTRL-W . 4. :q ( ). 5. `vimrc'. 6. : , CTRL-D . . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Vim. Vim, , . , Vim . : `:help user-manual'. : Vim - Vi Improved, : Steve Oualline, : New Riders Vim. . . . http://iccf-holland.org/click5.html Vi, Vim, : Learning the Vi Editor, : Linda Lamb, : O'Reilly & Associates Inc. , , Vi. Vim. Michael C. Pierce Robert K. Ware, Colorado School of Mines , Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Vim (Bram Moolenaar). : , 2002. , 2014. Translators: Andrey Kiselev , 2002. Sergey Alyoshin , 2014. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!wm vim80/tutor/tutor.bg.utf-8nu[=============================================================================== = Добре дошли в самоучителя на V I M - Версия 1.7 = =============================================================================== Vim е много мощен редактор с много команди, твърде много, за да бъдат обяснени в ръководство като това. Този самоучител е създаден, за да обясни достатъчно от тях, така че да можете да използвате Vim за всякакви цели. Приблизителното време, необходимо, за да направите уроците е 25-30 минути, в зависимост от това колко време използвате за да се упражнявате. ВНИМАНИЕ! Командите в уроците ще променят текста им. Запишете файла другаде, за да се упражнявате (ако сте отворили самоучителя с "vimtutor", това вече е направено). Важно е да се запомни, че този самоучител е съставен с цел да се учите чрез употреба. Това означава да изпълнявате командите, за да ги научите правилно. Ако просто четете текста, ще забравите командите! Сега, уверете се, че клавишът CapsLock не е натиснат и натиснете клавиша j няколко пъти, така че Урок 1.1 да да се побере на екрана. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.1: ПРИДВИЖВАНЕ НА ПОКАЗАЛЕЦА ** За да преместите показалеца, натискайте клавишите h,j,k,l както е указано. ** ^ k Подсказка: Клавишът h е вляво и премества показалеца наляво. < h l > Клавишът l е вдясно и премества показалеца надясно. j Клавишът j прилича на стрелка, насочена надолу. v 1. Движете показалеца насам-натам по екрана, докато свикнете. 2. Задръжте клавиша за преместване надолу(j), докато започне да повтаря действието си. Сега знаете как да се придвижите до следващия урок. 3. Използвайте клавиша за движение надолу, за да стигнете до Урок 1.2. Важно! Ако се окаже, че не сте сигурни какво сте въвели, натиснете , за да отидете в нормален режим. След това въведете желаната команда отново. Важно! Клавишите със стрелки би трябвало също да работят, но ако използвате hjkl ще можете да се придвижвате по-бързо, като свикнете. Наистина! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.2: Излизане от VIM (quit) Важно!!! Преди да изпълните която и да е от стъпките по-долу, прочетете целия урок!!! 1. Натиснете клавиша (за да се уверите, че сте в нормален режим). 2. Напишете: :q! . Така излизате от редактора без да записвате промените, които сте направили. 3. Върнете се тук като изпълните командата, с която пуснахте този самоучител. Това ще да е: vimtutor 4. Ако сте сигурни, че сте запомнили стъпките от 1 до 3, изпълнете ги и влезте отново в редактора. Внимание! :q! отхвърля всички промени, които сте направили. След няколко урока ще се научите как да записвате промени във файл. 5. Придвижете показалеца надолу до Урок 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.3: ПРОМЯНА НА ТЕКСТ - ИЗТРИВАНЕ (DELETE) ** Натиснете x , за да изтриете буквата под показалеца. ** 1. Придвижете показалеца до реда по-долу, означен със --->. 2. За да поправите грешките, придвижете показалеца върху буквата, която ще триете. 3. Натиснете клавиша x , за да изтриете нежеланата буква. 4. Повтаряйте стъпки от 2 до 4 докато поправите изречението. ---> Кккравата сскоочии връъъъзз ллуннатааа. 5. След като горния ред е вече поправен, можем да отидем на Урок 1.4. Важно! Като правите този урок, не се опитвайте да помните, учете се с правене. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.4: ПРОМЯНА НА ТЕКСТ - ВЪВЕЖДАНЕ (INSERT) ** Бележка на преводача ** В упражненията нататък ще ви се налага да въвеждате текст на български. Vim притежава собствена система за въвеждане на не-латински букви. За да можете да пишете български букви, докато сте в режим за въвеждане, и едновременно с това командите ви да се въвеждат с латински букви, направете следното: Натиснете , за да се уверите, че не сте в режим за въвеждане. Въведете ":setlocal keymap=bulgarian-phonetic" или ":setlocal keymap=bulgarian-bds", без кавичките, в зависимост от това коя подредба предпочитате. Забележете, че щом въведете : , те ще се появят в дъното на екрана. Вече можете да въвеждате български букви без да ползвате системната клавиатурна подредба. За да превключвате между двете подредби, докато сте в режим за въвеждане натискайте CTRL-^ (дръжте натиснати CTRL и SHIFT и натиснете ^). ** Натиснете i за да въведете текст. ** 1. Придвижете показалеца до първия ред долу, означен със --->. 2. За да направите първия ред същия като втория, придвижете показалеца върху първата буква СЛЕД мястото, където трябва да бъде въведен текста. 3. Натиснете i и напишете каквото трябва да се добави. 4. След поправяне на всяка грешка, натискайте , за да се върнете към Нормален режим. Повтаряйте стъпки от 2 до 4, докато поправите изречението. ---> Част текс липс н тзи . ---> Част от текста липсва на този ред. 5. След като усвоите въвеждането на текст, отидете на Урок 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.5: ПРОМЯНА НА ТЕКСТ - ДОБАВЯНЕ (APPEND) ** Натиснете A (SHIFT+a) , за да добавите текст. ** 1. Придвижете показалеца до реда долу, означен със --->. Няма значение на коя буква в реда се намира показалеца. 2. Натиснете A и добавете каквото е нужно. 3. След като сте добавили каквото е нужно, натиснете , за да се върнете в Нормален режим. 4. Придвижете показалеца до втория ред означен със ---> и повторете стъпки 2, и 3, за да поправите изречението. ---> Има текст, който липсва Има текст, които липсва на този ред. ---> Тук също има текст, Тук също има текст, който липсва. 5. След като овладеете добавянето на текст, отидете на Урок 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1.6: ПРОМЯНА НА ФАЙЛ ** Използвайте :wq (write and quit), за да запишете файла и излезете. ** Внимание! Преди да изпълните която и да е от стъпките долу, прочетете целия урок!! 1. Излезте от самоучителя, както направихте в Урок 1.2: :q! Или, ако имате достъп до друг терминал, направете следното там. 2. На командния ред напишете следното и натиснете : vim tutor 'vim' е командата, която стартира редактора Vim, 'tutor' е името на файла, които искате да промените. Използвайте файл който може да бъде променян. 3. Въвеждайте и изтривайте текст по начините, научени в предишните уроци. 4. Запишете файла и излезте от Vim с: :wq 5. Ако сте излезли от vimtutor в стъпка 1, пуснете го отново и се придвижете надолу до обобщението, което следва. 6. След като прочетете и разберете горните стъпки, направете ги. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 1 ОБОБЩЕНИЕ 1. Показалецът се премества като използвате клавишите със стрелки или с клавишите. h (наляво) j (надолу) k (нагоре) l (надясно) 2. За да пуснете Vim от командния ред, напишете: vim ИМЕ-НА-ФАЙЛ 3. За да излезете от Vim, напишете: :q! за да отхвърлите всички промени. ИЛИ напишете: :wq за да запишете промените. 4. За да изтриете буква намираща се под показалеца, натиснете: x . 5. За да въведете или добавите текст, натиснете: i въведете текста, натиснете . Въвежда преди показалеца. A добавете текста, натиснете . Добавя в края на реда. Внимание! С натискане на преминавате в Нормален режим или отменяте нежелана, недописана команда. Сега продължете с Урок 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.1: КОМАНДИ ЗА ИЗТРИВАНЕ ** Въведете dw , за да изтриете дума. ** 1. Натиснете , за да се уверите, че сте в Нормален режим. 2. Придвижете показалеца до реда по-долу, означен със --->. 3. Придвижете показалеца до началото на думата, която трябва да бъде изтрита. 4. Натиснете последователно dw и думата ще изчезне. Забележка! Буквата d ще се появи на последния ред от екрана, когато я натиснете. Vim ви чака да натиснете w . Ако видите друга буква, значи сте натиснали грешен клавиш. Натиснете и започнете отначало. ---> Има някои думи хартия, които забава не са част от това изречение. 5. Повтаряйте стъпки 3 и 4, докато поправите изречението и преминете към Урок 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.2: ОЩЕ КОМАНДИ ЗА ИЗТРИВАНЕ ** Въведете d$ , за да изтриете всичко до края на реда. ** 1. Натиснете , за да се уверите, че сте в Нормален режим. 2. Придвижете показалеца до реда по-долу, означен със --->. 3. Придвижете показалеца до правилния ред (СЛЕД първата .). 4. Натиснете последователно d$ , за да изтриете всичко до края на реда. ---> Някой е въвел края на този ред двукратно. края на този ред двукратно. 5. Отидете до Урок 2.3, за да разберете какво се случва. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.3: ЗА ОПЕРАТОРИТЕ И ДВИЖЕНИЯТА Много команди, които променят текст се състоят от оператор и движение. Форматът за командата за изтриване с оператора d (delete) е както следва. d движение Където: d е операторът за изтриване. движение - върху какво ще се приложи операторът (списъкът долу). Кратък списък с движения: w - (word) до началото на следващата дума като се ИЗКЛЮЧВА първата ѝ буква. e - (end of word) до края на текущата дума, ВКЛЮЧИТЕЛНО последната буква. $ - До края на реда, ВКЛЮЧИТЕЛНО последния символ. Така, като въведете de ще изтриете от мястото на показалеца до края на думата. Забележка! Като натиснете само клавиша за движение, ще преместите показалеца на съответното място. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.4: ИЗПОЛЗВАНЕ НА БРОЯЧ ПРИ ДВИЖЕНИЕ ** Ако въведете число преди движението, то се повтаря толкова пъти колкото е числото. ** 1. Придвижете показалеца до началото на реда долу, означен със --->. 2. Въведете 2w , за да преместите показалеца с две думи напред. 3. Въведете 3e , за да преместите показалеца до края на третата дума напред. 4. Въведете 0 (нула), за да отидете в началото на реда. 5. Повтаряйте стъпки 2 и 3 с различни числа. ---> Това е просто ред с думи, в който можете да се движите. 6. Отидете на Урок 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.5: ИЗПОЛЗВАЙТЕ БРОЯЧ, ЗА ДА ТРИЕТЕ ПОВЕЧЕ ** Ако въведете число преди оператор, действието се повтаря толкова пъти колкото е числото. ** Както е упоменато горе, за да изтриете повече при използване на оператора за изтриване заедно с движение, трябва да въведете числото преди движението: d число движение 1. Придвижете показалеца до първата дума, изписана с ГЛАВНИ БУКВИ в реда, означен със --->. 2. Въведете d2w , за да изтриете думите, написани с ГЛАВНИ БУКВИ. 3. Повторете стъпки 1 и 2, за да изтриете последователните думи, изписани с големи букви с една команда. ---> този АБВ ГДЕ ред ЖЗИЙ КЛ МНОП РСТ с думи УФХ ЦЧШ ЩЪЬЮЯ е почистен. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.6: РАБОТА С РЕДОВЕ ** Въведете dd , за да изтриете цял ред. ** Понеже често се налага да се трие цял ред, създателите на Vi са решили, че ще е по-лесно да се натисне два пъти d, за да се изтрие ред. 1. Придвижете показалеца на втория ред в абзаца долу. 2. Въведете dd , за да изтриете реда. 3. Сега отидете на четвъртия ред. 4. Въведете 2dd , за да изтриете два реда. ---> 1) Розите са червени, ---> 2) Калта е забавление, ---> 3) Теменужките са сини, ---> 4) Аз имам кола, ---> 5) Часовниците показват часа, ---> 6) Захарта е сладка, ---> 7) Както и ти. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2.7: ОТМЯНА ** Натиснете u , за да отмените (undo) последната команда; U , за отмяна на всички команди на текущия ред. ** 1. Придвижете показалеца до началото на реда долу , означен със ---> и го поставете на първата грешка. 2. Въведете x , за да изтриете първата нежелана буква. 3. Сега натиснете u , за да отмените последната изпълнена команда. 4. Този път поправете всички грешки като използвате командата x . 5. Сега въведете главно U (SHIFT+U), за да върнете реда в първоначалния му вид. 6. Сега натиснете u няколко пъти, за да отмените предишното U и командите преди него. 7. Сега натиснете CTRL-R (redo) (дръжте клавиша CTRL натиснат, докато натискате R), неколкократно, за да изпълните отново командите (да отмените отмените). ---> Пооправеете грешшките нна този реди и ги заменете с отмянаа. 8. Това са много полезни команди. Сега отидете на обобщението за Урок 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 2 ОБОБЩЕНИЕ 1. За да изтриете всичко от показалеца до началото на следващата дума, въведете dw 2. За да изтриете всичко от показалеца до края на реда, въведете d$ 3. За да изтриете цял ред, въведете dd 4. За да повторите движение въведете преди него число 2w 5. Форматът за команда за промяна е: команда [число] движение където: оператор - това, което трябва да се направи (заповед), например d за изтриване [число] - незадължителен брой повторения на движението движение - придвижване в текста, върху който се работи, например w (word), $ (до края на реда) и т.н. 6. За да се придвижите до началото на ред, натиснете нула - 0 7. За да отмените предишни действия, натиснете u (малка буква u) За да отмените всички промени на един ред, въведете U (главна буква U) За да отмените отмените, натиснете CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.1: КОМАНДАТА ЗА ПОСТАВЯНЕ (PUT) ** Въведете p , за да поставите изтрит преди това текст след показалеца.** 1. Придвижете показалеца до първия ред, означен със ---> долу. 2. Въведете dd , за да изтриете реда и да го запишете в регистъра на Vim. 3. Придвижете показалеца до реда, означен със c), НАД мястото, където трябва да се постави изтрития ред. 4. Въведете p , за да поставите (put) реда под реда, на който е показалеца. 5. Повтаряйте стъпки от 2 до 4, за да подредите правилно редовете. ---> d) Ти можеш ли да учиш? ---> b) Теменужките са сини, ---> c) Уменията се научават, ---> a) Розите са червени, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.2: КОМАНДАТА ЗА ЗАМЕСТВАНЕ (REPLACE) ** Въведете rx , за да заместите буквата под показалеца с x . ** 1. Придвижете показалеца до първия ред, означен със ---> долу. 2. Наместете показалеца така, че да се окаже върху първата грешка. 3. Въведете r и след това буквата, с която ще замествате. 4. Повтаряйте стъпки 2 и 3 докато първият ред стане същия като втория. ---> Катишо тизе гад и песен, никей а нарескъл гришнета бливочи! ---> Когато този ред е писан, някой е натискал грешните клавиши! 5. Сега отидете на урок 3.3. Забележка! Помнете, че трябва да се учите, като се упражнявате, а не като се опитвате да запомните. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.3: ОПЕРАТОРЪТ ЗА ПРОМЯНА (CHANGE) ** За да промените от мястото на показалеца до края на дума, въведете ce . ** 1. Придвижете показалеца до първия ред долу, означен със --->. 2. Поставете показалеца върху з в тзии. 3. Въведете ce и правилния остатък от думата ( в този случай ози). 4. Натиснете и отидете на следващата група букви, които трябва да се променят. 5. Повтаряйте стъпки 3 и 4, докато първото изречение стане същото като второто. ---> На тзии ред иам неклико дмуи, ктоио требав да се прмнеято като се изповлза оепртореа за промяна. ---> На този ред има няколко думи, които трябва да се променят като се използва оператора за промяна. Забележете, че ce изтрива думата и преминавате в режим за въвеждане. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3.4: ОЩЕ ПРОМЕНИ С ИЗПОЛЗВАНЕ НА c ** Операторът за промяна се използва със същите движения както при триене ** 1. Операторът за промяна работи по същия начин като оператора за триене. Форматът е: c [число] движение 2. Движенията са същите, например: w (word) и $ (край на ред). 3. Отидете на първия ред долу, отбелязан с --->. 4. Придвижете показалеца до първата грешка. 5. Въведете c$ и допишете остатъка от реда така, че да стане същия като долния ред. След това натиснете . ---> Краят на този ред трябва да изглежда като долния. ---> Краят на този ред трябва да бъде поправен с командата c$. Забележка! Можете да използвате клавиша Backspace за поправка на грешки, докато въвеждате. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 3 ОБОБЩЕНИЕ 1. За да поставите изтрит преди това отнякъде текст, въведете p . Това поставя изтрития текст СЛЕД мястото, на което се намира показалеца. Ако сте изтрили преди това цял ред, той ще бъде поставен като следващ ред. 2. За да заместите буква, намираща се под показалеца, въведете r и след това буквата, с която искате да заместите. 3. Операторът за промяна ви позволява да променяте текста от мястото на показалеца до мястото, указано от съответното движение. Например, въведете ce за да изтриете от мястото на показалеца до края на думата, или, въведете c$ ,за да замените с нов текст до края на реда. 4. Форматът на оператора за промяна е: c [число] движение Сега отидете на следващия урок. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.1: МЕСТОПОЛОЖЕНИЕ НА ПОКАЗАЛЕЦА И СЪСТОЯНИЕ НА ФАЙЛА ** Въведете CTRL-G, за да видите къде се намирате във файла и неговото състояние. Въведете G , за да отидете на някой ред. ** Внимание! Прочетете целия урок, преди да изпълните стъпките в него! 1. Задръжте натиснат клавиша Ctrl и натиснете g . Това действие го наричаме CTRL-G. В дъното на екрана ще се появи съобщение с името на файла и мястото, където се намира показалеца. Запомнете номера на реда за стъпка 3. Забележка: Може би виждате мястото на показалеца в долния десен ъгъл на екрана. Това се случва, когато настройката 'ruler' е зададена (вижте :help 'ruler' ) 2. Натиснете G , за да отидете в края на файла. Въведете gg , за да отидете в началото на файла. 3. Въведете номера на реда, на който бяхте и след това натиснете G . Това ще ви върне на мястото където бяхте, когато натиснахте CTRL-G. 4. Ако вече се чувствате уверени, изпълнете стъпките от 1 до 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.2: КОМАНДАТА ЗА ТЪРСЕНЕ ** Въведете / , последвана от фраза, за да потърсите фразата. ** 1. В Нормален режим въведете знака / . Забележете, че / (наклонената черта) и показалецът се появяват в дъното на екрана, както се случва при използването на командата : . 2. Сега въведете 'грешшшка' . Това е думата, която ще търсите. 3. За да търсите същата дума отново, натиснете n . За да търсите същата дума отново, но в обратната посока, натиснете N . 4. За да търсите за фраза в обратната посока използвайте ? вместо / . 5. За да се върнете, там където сте били, натиснете CTRL-O (задръжте Ctrl натиснат докато натискате клавиша o). Повторете, за да отидете още по-назад. С CTRL-I пък отивате напред. ---> "грешшшка" се се пише "грешка" грешшшка е грешка. Внимание! Когато търсенето достигне до края на файла, то ще продължи от началото на файла, освен ако настройката 'wrapscan' е била нулирана. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.3: ТЪРСЕНЕ НА СЪОТВЕТСТВАЩИ СКОБИ ** Въведете % , за да на мерите съответната ),], или } . ** 1. Поставете показалеца върху някоя скоба (, [, или { в реда долу, означен със --->. 2. Сега Въведете символа % . 3. Показалецът ще се премести върху съответстващата фигурна, квадратна или обикновена скоба. 4. Въведете % , за да преместите показалеца на другата съответстваща скоба. 5. Придвижете показалеца до друга (,),[,],{ или } скоба и вижте какво прави % . ---> Това ( е ред за проверка с различни скоби като (, [ ] и { } в него. )) Забележка! Това е много полезно при откриване на грешки в програми с несъответстващи скоби. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4.4: КОМАНДАТА ЗА ЗАМЕСТВАНЕ (SUBSTITUTE) ** Въведете :s/старо/ново/g за да заместите 'старо' със 'ново'. ** 1. Придвижете показалеца до реда долу, означен със --->. 2. Въведете :s/тоо/то . Забележете, че командата замества само първото съвпадение с "тоо" на реда. 3. Сега въведете :s/тоо/то/g . Като добавите знака g (globally) това означава, че искате да се заместят всички съвпадения, навсякъде в реда. ---> Най-добротоо време да сте на полетоо е лятотоо. 4. За да заместите всяко съвпадение на дадена последователност от символи между два реда: Въведете :#,#s/old/new/g където #,# са числата на редовете (първи и последен), обхватът, в който искате да стане заместването. Въведете :%s/old/new/g за да промените всяко съвпадение в целия файл. Въведете :%s/old/new/gc да бъдете питани при всяко съвпадение, дали да се замести или не. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 4 ОБОБЩЕНИЕ 1. CTRL-G показва къде се намирате във файл и състоянието му. G ви отвежда до края на файла. число G ви отвежда до съответния ред. gg ви отвежда до първия ред. 2. Ако натиснете / , последвана от низ за търсене, търсите НАПРЕД. Ако натиснете / , последвана от низ за търсене, търсите НАЗАД. След търсене, въведете n , за да намерите следващо съвпадение с низа, който търсите в същата посока, в която търсите или N , за да търсите в обратната посока. CTRL-O ви отвежда назад до старо място във файла, CTRL-I обратно до по-нови места. 3. Ако натиснете % докато показалеца се намира на (,),[,],{, или }, той отива до съответстващата скоба. 4. За да заместите един низ с друг, въведете :s/низ/друг За да заместите един низ с друг навсякъде в един ред, въведете :s/низ/друг/g За да заместите в даден обхват от редове, въведете :#,#s/низ/друг/g За да заместите всички съвпадения във файл, въведете :%s/низ/друг/g За да бъдете питани при всяко съвпадение, добавете 'c' :%s/низ/друг/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.1: КАК ДА ИЗПЪЛНИМ ВЪНШНА КОМАНДА ** Въведете :! , последвано от външна команда, за да я изпълните. ** 1. Въведете познатото ви вече : , за да поставите показалеца в дъното на екрана. Това ви позволява да въвеждате команда. 2. Сега въведете ! (удивителен знак). Това ви позволява да изпълнявате всякакви външни команди. 3. Например, след ! въведете ls и след това натиснете . Това ще ви покаже списък с файловете и папките точно както ако сте в терминал. Напишете :!dir ако ls не работи. Забележка: По този начин можете да изпълнявате всякакви външни команди и с аргументи. Забележка: Всички команди, започващи с : завършват с натискането на От сега нататък няма да го споменаваме постоянно. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.2: ПОВЕЧЕ ЗА ЗАПИСВАНЕТО НА ФАЙЛОВЕ ** За да запишете промените, направени в текста въведете :w ИМЕНАФАЙЛ. ** 1. Въведете :!dir или :!ls за да видите списък със съдържанието на текущата папка. Вече знаете, че трябва да натиснете след това. 2. Изберете име на файла, което не съществува, например TEST. 3. Сега въведете :w TEST (където TEST е името на файла). 4. Това записва целия файл (Самоучителя за Vim) под името TEST. За да проверите, напишете :!dir или :!ls отново и вижте съдържанието на вашата папка. Забележете! Ако излезете от Vim и го пуснете отново, като напишете на командния ред vim TEST , файлът ще бъде точно копие на самоучителя, когато сте го записали. 5. Сега изтрийте файла като напишете (в MS-DOS): :!del TEST или (в какъвто и да е Unix) :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.3: ИЗБОР НА ТЕКСТ ЗА ЗАПИС ** За да запишете част от файла, натиснете v , следвано от движение :w FILENAME ** 1. Придвижете показалеца на този ред. 2. Натиснете v и придвижете показалеца пет реда надолу. Забележете, че текстът се осветява. 3. Натиснете : . В дъното на екрана ще се появи :'<,'> . 4. Напишете w TEST , където TEST е име на файл, който все още не съществува. Уверете се, че виждате :'<,'>w TEST преди да натиснете . 5. Vim ще запише избраните редове във файла TEST. Използвайте :!dir или :!ls , за да го видите. Не го изтривайте все още! Ще го използваме в следващия урок. Забележете! Като натиснете v , започвате видимо избиране (Visual selection). Може да движите показалеца наоколо, за да направите избраното по-голямо или по-малко. След което, можете да използвате оператор, за да направите нещо с текста. Например, d изтрива текста. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5.4: ИЗВЛИЧАНЕ И СЛИВАНЕ НА ФАЙЛОВЕ ** За да вмъкнете съдържание на файл в текущия, въведете :r ИМЕНАФАЙЛ ** 1. Поставете показалеца над този ред. Важно! След като изпълните стъпка 2, ще видите текста от Урок 5.3. След това отидете НАДОЛУ, за да видите този урок отново. 2. Сега извлечете файла TEST, като използвате командата :r TEST , където TEST е името на файла, което сте използвали. Файла, който извлекохте е вмъкнат под реда, на който се намира показалеца. 3. За да проверите, че файла е извлечен, отидете назад и ще забележите, че има два урока 5.3 - оригинала и копието от извлечения файл. Важно! Също така можете да четете изхода от външна команда. :r !ls прочита показаното от ls и го поставя под показалеца. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 5 ОБОБЩЕНИЕ 1. :!команда изпълнява външна команда. Някои полезни примери са: (MS-DOS) (Unix) :!dir :!ls - показва съдържанието на директорията, в която се намирате. :!del FILENAME :!rm FILENAME - изтрива файла FILENAME. 2. :w FILENAME записва текущия файл под името FILENAME. 3. v движение :w FILENAME записва видимо избраните редове във файл с име FILENAME. 4. :r FILENAME извлича съдържанието на файла с име FILENAME и го вмъква под мястото, където се намира показалеца 5. :r !dir чете изхода на командата dir и го поставя под мястото, на което се намира показалеца. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.1: КОМАНДАТА ЗА ОТВАРЯНЕ (OPEN) ** Натиснете o , за да отворите ред под показалеца и да преминете в режим за въвеждане. ** 1. Придвижете показалеца до реда долу, означен със --->. 2. Натиснете клавиша o , за да отворите нов ред ПОД показалеца и да преминете в режим за въвеждане. 3. Сега въведете някакъв текст и натиснете , за да излезете от режима за въвеждане. ---> След като натиснете o , показалеца отива на новоотворения ред и преминавате в режим за въвеждане. 4. За да отворите нов ред НАД показалеца, просто въведете главно O вместо малко. Пробвайте това на долния ред. ---> Отворете нов ред над този, като натиснете O , докато показалеца е на този ред. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.2: КОМАНДАТА ЗА ДОБАВЯНЕ (APPEND) ** Натиснете a , за да въведете текст СЛЕД показалеца. ** 1. Придвижете показалеца до началото на реда долу, означен със --->. 2. Натискайте e , докато показалеца отиде до края на ре . 3. Натиснете a (малка буква), за да добавите текст СЛЕД показалеца. 4. Допълнете думата както е на следващия ред. Натиснете , за да излезете от режима за въвеждане. 5. Използвайте e , за да се придвижите до следващата непълна дума и повторете стъпки 3 и 4. ---> Този ре ви позволява да упраж добав на тек в ред. ---> Този ред ви позволява да упражнявате добавяне на текст в ред. Важно! a, i и A - с всички тях отивате в режим за въвеждане. Единствената разлика е в това, къде се въвеждат знаците. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.3: ДРУГ НАЧИН ЗА ЗАМЕСТВАНЕ ** Натиснете главно R , за да заместите повече от един знак. ** 1. Придвижете показалеца до първия ред долу означен със --->. Придвижете показалеца до началото на първото xxx. 2. Сега натиснете R и въведете числото от долния ред, така че да замести xxx . 3. Натиснете , за да излезете от режима за заместване. Забележете, че остатъка от реда остава непроменен. 4. Повторете стъпките, за да заместите другото xxx. ---> Ако добавите 123 към xxx ще получите xxx. ---> Ако добавите 123 към 456 ще получите 579. Важно! Режимът за заместване е същия като режима за въвеждане, но всеки въведен знак изтрива съществуващ знак. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.4: КОПИРАНЕ И ЗАМЕСТВАНЕ ** Използвайте операторът y (yank), за да копирате текст и p (paste), за да го поставите. ** 1. Отидете до реда, означен със ---> долу и поставете показалеца след "a)". 2. Преминете във режим за видимо избиране като използвате v и преместете показалеца точно пред "първата". 3. Натиснете y , за да копирате (yank) осветения текст. 4. Преместете показалеца на края на следващия ред с j$ 5. Натиснете p ,за да поставите (paste) текста. След това натиснете пак . 6. Използвайте режима за видимо избиране, за да изберете " точка.", вземете го с y , отидете на края на следващия ред с j$ и поставете текста с p . ---> a) това е първата точка. b) Важно! Можете да използвате y също и като оператор. yw взима цяла дума. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6.5: ЗАДАВАНЕ НА НАСТРОЙКА ** Задайте настройка, та при търсене и заместване, да не се различават големи и малки букви. ** 1. Търсете 'разли' като въведете /разли Повторете няколко пъти като натискате n . 2. Задайте настройката 'ic' (Ignore case) като въведете :set ic 3.Сега търсете 'разли' отново като натискате n . Забележете, че сега Разлика и РАЗЛИКА също биват намерени. 4. Задайте настройките 'hlsearch' (highlight search) и 'incsearch' (incremental search): :set hls is Тези настройки означават съответно "осветяване на намереното" и "частично търсене". 5. Сега въведете отново командата за търсене и вижте какво се случва: /разли 6. За да изключите нечувствителното към регистъра на буквите търсене, въведете :set noic Забележка! За да премахнете осветяването, въведете :nohlsearch Забележка! Ако искате да не се прави разлика между главни и малки букви само при едно търсене, въведете \c (латинско ц) в края на низа, който търсите: /разлика\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 6 ОБОБЩЕНИЕ 1. Натиснете o , за да отворите нов ред ПОД показалеца и да преминете в режим за въвеждане. Натиснете O , за да отворите ред НАД показалеца. 2. Натиснете a , за да въведете текст СЛЕД показалеца. Натиснете A , за да въведете текст след края на реда. 3. Командата e ви отвежда в края на дума. 4. Операторът y взима (yank) текст, а p го поставя (paste). 5. Ако въведете R , докато сте в нормален режим, преминавате в режим за заместване, докато натиснете . 6. Ако напишете ":set xxx", задавате настройката "xxx". Ето някои настройки: 'ic' 'ignorecase' Търсенето не прави разлика между главни и малки букви 'is' 'incsearch' Показва частични съвпадения на търсеното 'hls' 'hlsearch' Осветява всички намерени съвпадения Можете да ползвате кратките или дългите наименувания на настройките 7. Поставете "no" отпред за да изключите настройка: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 7.1: КАК ДА НАМЕРИМ ПОМОЩ ** Ползвайте наличната система за помощ ** Vim върви с изчерпателна система за помощ. За да започнете, опитайте някоя от следните три възможности: - натиснете клавиша (ако имате такъв на клавиатурата си) - натиснете клавиша (ако имате такъв на клавиатурата си) - напишете :help Прочетете текста в прозореца за помощ, за да разберете как работи системата. Натиснете CTRL-W CTRL-W (два пъти CTRL-W), за да прескочите от един прозорец в друг. Въведете :q , за да затворите прозореца за помощ. Можете да намерите помощ по всякакъв въпрос, като напишете ":help" именакоманда. Опитайте следните (не забравяйте да натискате ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 7.2: СЪЗДАЙТЕ СКРИПТ ЗА СТАРТИРАНЕ ** Включване на възможностите на Vim ** Vim има много повече възможности от Vi, но по подразбиране повечето от тях не са включени. За да започнете да ползвате тези възможности, трябва да създадете файл, наречен "vimrc". 1. Създайте вашия файл "vimrc". В зависимост от вашата операционна система: :e ~/.vimrc за всеки вид Unix :e $VIM/_vimrc за MS-Windows 2. Сега прочетете съдържанието на примерния файл "vimrc": :r $VIMRUNTIME/vimrc_example.vim 3. Запишете файла с: :w Следващият път като пуснете Vim той ще осветява текста във файловете, които отваряте в зависимост от синтаксиса им. Можете да добавите всичките си предпочитани настройки в този файл. За повече информация, въведете :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 7.3: ДОВЪРШВАНЕ ** Довършване на команди с CTRL-D и ** 1. Уверете се, че Vim е в несъвместим режим: :set nocp 2. Вижте какви файлове има в папката ви: :!ls или :!dir 3. Въведете началото на команда: :e 4. Натиснете CTRL-D и Vim ще ви покаже команди, започващи с "e". 5. Натиснете и Vim ще допълни командата до ":edit". 6. Сега добавете празно пространство и началото на името на съществуващ файл: :edit FIL 7. Натиснете . Vim ще допълни името (ако е единствено). Важно! Допълването работи за много команди. Просто натиснете CTRL-D и/или . Особено полезно е при намиране на помощ :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Урок 7 ОБОБЩЕНИЕ 1. Напишете :help или натиснете или за да отворите помощния прозорец. 2. Напишете :help cmd , за да намерите помощ за cmd . 3. Натиснете CTRL-W CTRL-W , за да прескочите в друг прозорец. 4. Напишете :q , за да затворите помощния прозорец. 5. Създайте файл за стартиране vimrc, за да запазите предпочитаните от вас настройки. 6. Когато въвеждате команда след : , натиснете CTRL-D , за да видите възможностите за допълване. Натиснете , за да използвате някоя от предложените възможности за допълване. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ С това завършва Самоучителят на Vim. Той бе предназначен да даде кратък преглед на текстовия редактор Vim. Съвсем достатъчно, за да можете да ползвате редактора лесно. Самоучителят е доста непълен, понеже Vim има много повече команди. Сега прочете наръчника за потребителя: ":help user-manual". Препоръчваме следната книга за по-нататъшно четене: Vim - Vi Improved - от Steve Oualline Издател: New Riders Това е първата книга, изцяло посветена на Vim. Особено полезна е за начинаещи. В нея ще намерите много примери и картинки. Вижте http://iccf-holland.org/click5.html Следната книга е по-стара и по-скоро за Vi отколкото за Vim, но също се препоръчва: Learning the Vi Editor - от Linda Lamb Издател: O'Reilly & Associates Inc. Това е книга, която ще ви запознае с почти всичко във Vi. Шестото издание включва и информация за Vim. Този самоучител е написан от Michael C. Pierce и Robert K. Ware, Colorado School of Mines, като използва идеи предоставени от Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Променен за Vim от Bram Moolenaar. Превод от Красимир Беров , юли 2016. Този превод е подарък за сина ми Павел и е посветен на българските деца. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK! y@țvim80/tutor/tutor.zh_cn.utf-8nu[=============================================================================== = 欢 迎 阅 读 《 V I M 教 程 》 —— 版本 1.7 = =============================================================================== Vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程当中 就不详细介绍了。本教程的设计目标是讲述一些必要的基本命令,而掌握好这 些命令,您就能够很容易地将 Vim 当作一个通用编辑器来使用了。 完成本教程的内容大约需要25-30分钟,取决于您训练的时间。 注意: 每一节的命令操作将会更改本文。推荐您复制本文的一个副本,然后在副本上 进行训练(如果您是通过"vimtutor"来启动教程的,那么本文就已经是副本了)。 切记一点:本教程的设计思路是在使用中进行学习的。也就是说,您需要通过 执行命令来学习它们本身的正确用法。如果您只是阅读而不操作,那么您可能 会很快遗忘这些命令的! 好了,现在请确定您的Shift-Lock(大小写锁定键)还没有按下,然后按键盘上 的字母键 j 足够多次来移动光标,直到第一节的内容能够完全充满屏幕。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一讲第一节:移动光标 ** 要移动光标,请依照说明分别按下 h、j、k、l 键。 ** ^ k 提示: h 的键位于左边,每次按下就会向左移动。 < h l > l 的键位于右边,每次按下就会向右移动。 j j 键看起来很象一支尖端方向朝下的箭头。 v 1. 请随意在屏幕内移动光标,直至您觉得舒服为止。 2. 按下下行键(j),直到出现光标重复下行。 ---> 现在您应该已经学会如何移动到下一讲吧。 3. 现在请使用下行键,将光标移动到第一讲第二节。 提示:如果您不敢确定您所按下的字母,请按下键回到正常(Normal)模式。 然后再次从键盘输入您想要的命令。 提示:光标键应当也能正常工作的。但是使用hjkl键,在习惯之后您就能够更快 地在屏幕内四处移动光标。真的是这样! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一讲第二节:VIM的进入和退出 !! 特别提示:敬请阅读本一节的完整内容,然后再执行以下所讲解的命令。 1. 按键(这是为了确保您处在正常模式)。 2. 然后输入: :q! <回车> 这种方式的退出编辑器会丢弃您进入编辑器以来所做的改动。 3. 如果您看到了命令行提示符,请输入能够带您回到本教程的命令,那就是: vimtutor <回车> 4. 如果您自信已经牢牢记住了这些步骤的话,请从步骤1执行到步骤3退出,然 后再次进入编辑器。 提示: :q! <回车> 会丢弃您所做的任何改动。几讲之后您将学会如何保存改动到文件。 5. 将光标下移到第一讲第三节。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一讲第三节:文本编辑之删除 ** 在正常(Normal)模式下,可以按下 x 键来删除光标所在位置的字符。** 1. 请将光标移动到本节中下面标记有 ---> 的那一行。 2. 为了修正输入错误,请将光标移至准备删除的字符的位置处。 3. 然后按下 x 键将错误字符删除掉。 4. 重复步骤2到步骤4,直到句子修正为止。 ---> The ccow jumpedd ovverr thhe mooon. 5. 好了,该行已经修正了,下面是第一讲第四节。 特别提示:在浏览本教程时,不要强行记忆。记住一点:在使用中学习。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一讲第四节:文本编辑之插入 ** 在正常模式下,可以按下 i 键来插入文本。** 1. 请将光标移动到本节中下面标记有 ---> 的第一行。 2. 为了使得第一行内容雷同于第二行,请将光标移至文本第一个准备插入字符 的位置。 3. 然后按下 i 键,接着输入必要的文本字符。 4. 每个错误修正完毕后,请按下 键返回正常模式。 重复步骤2至步骤4以便修正句子。 ---> There is text misng this . ---> There is some text missing from this line. 5. 如果您对文本插入操作已经很满意,请接着阅读下面的第一讲第五节。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一讲第五节:文本编辑之添加 ** 按 A 键以添加文本。 ** 1. 移动光标到下面第一个标记有 ---> 的一行。 光标放在那一行的哪个字符上并不重要。 2. 按 A 键输入必要的添加内容。 3. 文本添加完毕后,按 键回到正常模式。 4. 移动光标到下面第二个标记有 ---> 的一行。重复步骤2和步骤3以改正这个句子。 ---> There is some text missing from th There is some text missing from this line. ---> There is also some text miss There is also some text missing here. 5. 当您对添加文本操作感到满意时,请继续学习第一讲第六节。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一讲第六节:编辑文件 ** 使用 :wq 以保存文件并退出。 ** 特别提示:在执行以下步骤之前,请先读完整个小节! 1. 如您在第一讲第二节中所做的那样退出本教程: :q! 或者,如果您可以访问另一个终端,请在那里执行以下操作。 2. 在 shell 的提示符下输入命令: vim tutor <回车> 'vim'是启动 Vim 编辑器的命令,'tutor'是您希望编辑的文件的名字。 请使用一个可以改动的文件。 3. 使用您在前面的教程中学到的命令插入删除文本。 4. 保存改动过的文件并退出 Vim,按这些键: :wq <回车> 5. 如果您在步骤1中已经退出 vimtutor,请重启 vimtutor 移动到下面的小结一节。 6. 阅读完以上步骤,弄懂它们的意义,然后在实践中进行练习。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第一讲小结 1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。 h (左移) j (下行) k (上行) l (右移) 2. 欲进入 Vim 编辑器(从命令行提示符),请输入:vim 文件名 <回车> 3. 欲退出 Vim 编辑器,请输入 :q! <回车> 放弃所有改动。 或者输入 :wq <回车> 保存改动。 4. 在正常模式下删除光标所在位置的字符,请按: x 5. 欲插入或添加文本,请输入: i 输入欲插入文本 在光标前插入文本 A 输入欲添加文本 在一行后添加文本 特别提示:按下 键会带您回到正常模式或者撤消一个不想输入或部分完整 的命令。 好了,第一讲到此结束。下面接下来继续第二讲的内容。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二讲第一节:删除类命令 ** 输入 dw 可以从光标处删除至一个单词的末尾。** 1. 请按下 键确保您处于正常模式。 2. 请将光标移动到本节中下面标记有 ---> 的那一行。 3. 请将光标移至准备要删除的单词的起始处。 4. 接着输入 dw 删除掉该单词。 特别提示:当您输入时,字母 d 会同时出现在屏幕的最后一行。Vim 在等待您输入 字母 w。如果您看到的是除 d 外的其他字符,那表明您按错了;请按下 键, 然后重新再来。 ---> There are a some words fun that don't belong paper in this sentence. 5. 重复步骤3和步骤4,直至句子修正完毕。接着继续第二讲第二节内容。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二讲第二节:更多删除类命令 ** 输入 d$ 从当前光标删除到行末。** 1. 请按下 键确保您处于正常模式。 2. 请将光标移动到本节中下面标记有 ---> 的那一行。 3. 请将光标移动到该行的尾部(也就是在第一个点号‘.’后面)。 4. 然后输入 d$ 从光标处删至当前行尾部。 ---> Somebody typed the end of this line twice. end of this line twice. 5. 请继续学习第二讲第三节就知道是怎么回事了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二讲第三节:关于命令和对象 许多改变文本的命令都由一个操作符和一个动作构成。 使用删除操作符 d 的删除命令的格式如下: d motion 其中: d - 删除操作符。 motion - 操作符的操作对象(在下面列出)。 一个简短的动作列表: w - 从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符。 e - 从当前光标当前位置直到单词末尾,包括最后一个字符。 $ - 从当前光标当前位置直到当前行末。 因此输入 de 会从当前光标位置删除到单词末尾。 特别提示: 对于勇于探索者,请在正常模式下面仅按代表相应动作的键而不使用操作符,您 将看到光标的移动正如上面的对象列表所代表的一样。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二讲第四节:使用计数指定动作 ** 在动作前输入数字会使它重复那么多次。 ** 1. 移动光标到下面标记有 ---> 的一行的开始。 2. 输入 2w 使光标向前移动两个单词。 3. 输入 3e 使光标向前移动到第三个单词的末尾。 4. 输入 0 (数字零) 移动光标到行首。 5. 重复步骤2和步骤3,尝试不同的数字。 ---> This is just a line with words you can move around in. 6. 请继续学习第二讲第五节。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二讲第五节:使用计数以删除更多 ** 使用操作符时输入数字可以使它重复那么多次。 ** 上面已经提到过删除操作符和动作的组合,您可以在组合中动作之前插入一个数字以 删除更多: d number(数字) motion 1. 移动光标到下面标记有 ---> 的一行中第一个大写字母单词上。 2. 输入 d2w 以删除两个大写字母单词。 3. 重复步骤1和步骤2,使用不同的数字使得用一个命令就能删除全部相邻的大写字母 单词 ---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二讲第六节:操作整行 ** 输入 dd 可以删除整一个当前行。 ** 鉴于整行删除的高频度,Vi 的设计者决定要简化整行删除操作,您仅需要在同一行上 击打两次 d 就可以删除掉光标所在的整行了。 1. 请将光标移动到本节中下面的短句段落中的第二行。 2. 输入 dd 删除该行。 3. 然后移动到第四行。 4. 接着输入 2dd 删除两行。 ---> 1) Roses are red, ---> 2) Mud is fun, ---> 3) Violets are blue, ---> 4) I have a car, ---> 5) Clocks tell time, ---> 6) Sugar is sweet ---> 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二讲第七节:撤消类命令 ** 输入 u 来撤消最后执行的命令,输入 U 来撤消对整行的修改。 ** 1. 请将光标移动到本节中下面标记有 ---> 的那一行,并将其置于第一个错误 处。 2. 输入 x 删除第一个不想保留的字母。 3. 然后输入 u 撤消最后执行的(一次)命令。 4. 这次要使用 x 修正本行的所有错误。 5. 现在输入一个大写的 U ,恢复到该行的原始状态。 6. 接着多次输入 u 以撤消 U 以及更前的命令。 7. 然后多次输入 CTRL-R (先按下 CTRL 键不放开,接着按 R 键),这样就 可以重做被撤消的命令,也就是撤消掉撤消命令。 ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. 这些都是非常有用的命令。下面是第二讲的小结了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第二讲小结 1. 欲从当前光标删除至下一个单词,请输入:dw 2. 欲从当前光标删除至当前行末尾,请输入:d$ 3. 欲删除整行,请输入:dd 4. 欲重复一个动作,请在它前面加上一个数字:2w 5. 在正常模式下修改命令的格式是: operator [number] motion 其中: operator - 操作符,代表要做的事情,比如 d 代表删除 [number] - 可以附加的数字,代表动作重复的次数 motion - 动作,代表在所操作的文本上的移动,例如 w 代表单词(word), $ 代表行末等等。 6. 欲移动光标到行首,请按数字0键:0 7. 欲撤消以前的操作,请输入:u (小写的u) 欲撤消在一行中所做的改动,请输入:U (大写的U) 欲撤消以前的撤消命令,恢复以前的操作结果,请输入:CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三讲第一节:置入类命令 ** 输入 p 将最后一次删除的内容置入光标之后。 ** 1. 请将光标移动到本节中下面第一个标记有 ---> 的一行。 2. 输入 dd 将该行删除,这样会将该行保存到 Vim 的一个寄存器中。 3. 接着将光标移动到 c) 一行,即准备置入的位置的上方。记住:是上方哦。 4. 然后在正常模式下(键进入)输入 p 将该行粘贴置入。 5. 重复步骤2至步骤4,将所有的行依序放置到正确的位置上。 ---> d) Can you learn too? ---> b) Violets are blue, ---> c) Intelligence is learned, ---> a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三讲第二节:替换类命令 ** 输入 r 和一个字符替换光标所在位置的字符。** 1. 请将光标移动到本节中下面标记有 ---> 的第一行。 2. 请移动光标到第一个出错的位置。 3. 接着输入 r 和要替换成的字符,这样就能将错误替换掉了。 4. 重复步骤2和步骤3,直到第一行已经修改完毕。 ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. 然后我们继续学习第三讲第三节。 特别提示:切记您要在使用中学习,而不是在记忆中学习。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三讲第三节:更改类命令 ** 要改变文本直到一个单词的末尾,请输入 ce ** 1. 请将光标移动到本节中下面标记有 ---> 的第一行。 2. 接着把光标放在单词 lubw 的字母 u 的位置那里。 3. 然后输入 cw 以及正确的单词(在本例中是输入 ine )。 4. 最后按 键,然后光标定位到下一个错误第一个准备更改的字母处。 5. 重复步骤3和步骤4,直到第一个句子完全雷同第二个句子。 ---> This lubw has a few wptfd that mrrf changing usf the change operator. ---> This line has a few words that need changing using the change operator. 提示:请注意 ce 命令不仅仅是删除了一个单词,它也让您进入插入模式了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三讲第四节:使用c更改更多 ** 更改类操作符可以与删除中使用的同样的动作配合使用。 ** 1. 更改类操作符的工作方式跟删除类是一致的。操作格式是: c [number] motion 2. 动作参数(motion)也是一样的,比如 w 代表单词,$代表行末等等。 3. 请将光标移动到本节中下面标记有 ---> 的第一行。 4. 接着将光标移动到第一个错误处。 5. 然后输入 c$ 使得该行剩下的部分更正得同第二行一样。最后按 键。 ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第三讲小结 1. 要重新置入已经删除的文本内容,请按小写字母 p 键。该操作可以将已删除 的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置 于当前光标所在行的下一行。 2. 要替换光标所在位置的字符,请输入小写的 r 和要替换掉原位置字符的新字 符即可。 3. 更改类命令允许您改变从当前光标所在位置直到动作指示的位置中间的文本。 比如输入 ce 可以替换当前光标到单词的末尾的内容;输入 c$ 可以替换当 前光标到行末的内容。 4. 更改类命令的格式是: c [number] motion 现在我们继续学习下一讲。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四讲第一节:定位及文件状态 ** 输入 CTRL-G 显示当前编辑文件中当前光标所在行位置以及文件状态信息。 输入大写 G 则直接跳转到文件中的某一指定行。** 提示:切记要先通读本节内容,之后才可以执行以下步骤!!! 1. 按下 CTRL 键不放开然后按 g 键。我们称这个键组合为 CTRL-G。 您会看到页面最底部出现一个状态信息行,显示的内容是当前编辑的文件名 和文件中光标位置。请记住行号,它会在步骤3中用到。 提示:您也许会在屏幕的右下角看到光标位置,这会在 'ruler' 选项设置时发生 (参见 :help 'ruler') 2. 输入大写 G 可以使得当前光标直接跳转到文件最后一行。 输入 gg 可以使得当前光标直接跳转到文件第一行。 3. 输入您曾停留的行号,然后输入大写 G。这样就可以返回到您第一次按下 CTRL-G 时所在的行了。 4. 如果您觉得没问题的话,请执行步骤1至步骤3的操作进行练习。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四讲第二节:搜索类命令 ** 输入 / 加上一个字符串可以用以在当前文件中查找该字符串。** 1. 在正常模式下输入 / 字符。您此时会注意到该字符和光标都会出现在屏幕底 部,这跟 : 命令是一样的。 2. 接着输入 errroor <回车>。那个errroor就是您要查找的字符串。 3. 要查找同上一次的字符串,只需要按 n 键。要向相反方向查找同上一次的字 符串,请输入大写 N 即可。 4. 如果您想逆向查找字符串,请使用 ? 代替 / 进行。 5. 要回到您之前的位置按 CTRL-O (按住 Ctrl 键不放同时按下字母 o)。重复按可以 回退更多步。CTRL-I 会跳转到较新的位置。 ---> "errroor" is not the way to spell error; errroor is an error. 提示:如果查找已经到达文件末尾,查找会自动从文件头部继续查找,除非 'wrapscan' 选项被复位。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四讲第三节:配对括号的查找 ** 输入 % 可以查找配对的括号 )、]、}。** 1. 把光标放在本节下面标记有 --> 那一行中的任何一个 (、[ 或 { 处。 2. 接着按 % 字符。 3. 此时光标的位置应当是在配对的括号处。 4. 再次按 % 就可以跳回配对的第一个括号处。 5. 移动光标到另一个 (、)、[、]、{ 或 } 处,按 % 查看其所作所为。 ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) 提示:在程序调试时,这个功能用来查找不配对的括号是很有用的。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四讲第四节:替换命令 ** 输入 :s/old/new/g 可以替换 old 为 new。** 1. 请将光标移动到本节中下面标记有 ---> 的那一行。 2. 输入 :s/thee/the <回车> 。请注意该命令只改变光标所在行的第一个匹配 串。 3. 输入 :s/thee/the/g 则是替换全行的匹配串,该行中所有的 "thee" 都会被 改变。 ---> thee best time to see thee flowers is in thee spring. 4. 要替换两行之间出现的每个匹配串,请 输入 :#,#s/old/new/g 其中 #,# 代表的是替换操作的若干行中 首尾两行的行号。 输入 :%s/old/new/g 则是替换整个文件中的每个匹配串。 输入 :%s/old/new/gc 会找到整个文件中的每个匹配串,并且对每个匹配串 提示是否进行替换。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第四讲小结 1. CTRL-G 用于显示当前光标所在位置和文件状态信息。 G 用于将光标跳转至文件最后一行。 先敲入一个行号然后输入大写 G 则是将光标移动至该行号代表的行。 gg 用于将光标跳转至文件第一行。 2. 输入 / 然后紧随一个字符串是在当前所编辑的文档中正向查找该字符串。 输入 ? 然后紧随一个字符串则是在当前所编辑的文档中反向查找该字符串。 完成一次查找之后按 n 键是重复上一次的命令,可在同一方向上查 找下一个匹配字符串所在;或者按大写 N 向相反方向查找下一匹配字符串所在。 CTRL-O 带您跳转回较旧的位置,CTRL-I 则带您到较新的位置。 3. 如果光标当前位置是括号(、)、[、]、{、},按 % 会将光标移动到配对的括号上。 4. 在一行内替换头一个字符串 old 为新的字符串 new,请输入 :s/old/new 在一行内替换所有的字符串 old 为新的字符串 new,请输入 :s/old/new/g 在两行内替换所有的字符串 old 为新的字符串 new,请输入 :#,#s/old/new/g 在文件内替换所有的字符串 old 为新的字符串 new,请输入 :%s/old/new/g 进行全文替换时询问用户确认每个替换需添加 c 标志 :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五讲第一节:在 VIM 内执行外部命令的方法 ** 输入 :! 然后紧接着输入一个外部命令可以执行该外部命令。** 1. 按下我们所熟悉的 : 命令使光标移动到屏幕底部。这样您就可以输入一行命令了。 2. 接着输入感叹号 ! 这个字符,这样就允许您执行外部的 shell 命令了。 3. 我们以 ls 命令为例。输入 !ls <回车> 。该命令就会列举出您当前目录的 内容,就如同您在命令行提示符下输入 ls 命令的结果一样。如果 !ls 没起 作用,您可以试试 :!dir 看看。 提示:所有的外部命令都可以以这种方式执行,包括带命令行参数的那些。 提示:所有的 : 命令都必须以敲 <回车> 键结束。从今以后我们就不会总是提到这一点 了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五讲第二节:关于保存文件的更多信息 ** 要将对文件的改动保存到文件中,请输入 :w FILENAME 。** 1. 输入 :!dir 或者 :!ls 获知当前目录的内容。您应当已知道最后还得敲 <回车> 吧。 2. 选择一个未被用到的文件名,比如 TEST。 3. 接着输入 :w TEST (此处 TEST 是您所选择的文件名。) 4. 该命令会以 TEST 为文件名保存整个文件 (Vim 教程)。为了验证这一点, 请再次输入 :!dir 或 :!ls 查看您的目录列表内容。 请注意:如果您退出 Vim 然后在以命令 vim TEST 再次启动 Vim,那么该文件内 容应该同您保存时的文件内容是完全一样的。 5. 现在您可以删除 TEST 文件了。在 MS-DOS 下,请输入: :!del TEST 在 Unix 下,请输入: :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五讲第三节:一个具有选择性的保存命令 ** 要保存文件的部分内容,请输入 v motion :w FILENAME ** 1. 移动光标到本行。 2. 接着按 v 键,将光标移动至下面第五个条目上。您会注意到之间的文本被高亮了。 3. 然后按 : 字符。您将看到屏幕底部会出现 :'<,'> 。 4. 现在请输入 w TEST,其中 TEST 是一个未被使用的文件名。确认您看到了 :'<,'>w TEST 之后按 <回车> 键。 5. 这时 Vim 会把选中的行写入到以 TEST 命名的文件中去。使用 :!dir 或 :!ls 确认文件被正确保存。这次先别删除它!我们在下一讲中会用到它。 提示:按 v 键使 Vim 进入可视模式进行选取。您可以四处移动光标使选取区域变大或 变小。接着您可以使用一个操作符对选中文本进行操作。例如,按 d 键会删除 选中的文本内容。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五讲第四节:提取和合并文件 ** 要向当前文件中插入另外的文件的内容,请输入 :r FILENAME ** 1. 请把光标移动到本行上面一行。 特别提示:执行步骤2之后您将看到第五讲第三节的文字,请届时往下移动 以再次看到本讲内容。 2. 接着通过命令 :r TEST 将前面创建的名为 TEST 的文件提取进来。 您所提取进来的文件将从光标所在位置处开始置入。 3. 为了确认文件已经提取成功,移动光标回到原来的位置就可以注意有两份第 五讲第三节的内容,一份是原始内容,另外一份是来自文件的副本。 提示:您还可以读取外部命令的输出。例如, :r !ls 可以读取 ls 命令的输出,并 把它放置在光标下面。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第五讲小结 1. :!command 用于执行一个外部命令 command。 请看一些实际例子: (MS-DOS) (Unix) :!dir :!ls - 用于显示当前目录的内容。 :!del FILENAME :!rm FILENAME - 用于删除名为 FILENAME 的文件。 2. :w FILENAME 可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文 件中。 3. v motion :w FILENAME 可将当前编辑文件中可视模式下选中的内容保存到文件 FILENAME 中。 4. :r FILENAME 可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置 后面。 5. :r !dir 可以读取 dir 命令的输出并将其放置到当前文件的光标位置后面。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六讲第一节:打开类命令 ** 输入 o 将在光标的下方打开新的一行并进入插入模式。** 1. 请将光标移动到本节中下面标记有 ---> 的那一行。 2. 接着输入小写的 o 在光标 *下方* 打开新的一行,这个命令会使您 进入插入模式。 3. 然后输入一些文字,之后按 键退出插入模式而进入正常模式。 ---> After typing o the cursor is placed on the open line in Insert mode. 4. 为了在光标 *上方* 打开新的一行,只需要输入大写的 O 而不是小写的 o 就可以了。请在下行测试一下吧。 ---> Open up a line above this by typing O while the cursor is on this line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六讲第二节:附加类命令 ** 输入 a 将可在光标之后插入文本。 ** 1. 请在正常模式下将光标移动到本节中下面标记有 ---> 的第一行的行首。 2. 接着输入 e 直到光标位于 li 的末尾。 3. 输入小写的 a 则可在光标之后插入文本了。 4. 将单词补充完整,就像下一行中的那样。之后按 键退出插入模式回到 正常模式。 5. 使用 e 移动光标到下一步不完整的单词,重复步骤3和步骤4。 ---> This li will allow you to pract appendi text to a line. ---> This line will allow you to practice appending text to a line. 提示:a、i 和 A 都会带您进入插入模式,惟一的区别在于字符插入的位置。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六讲第三节:另外一个置换类命令的版本 ** 输入大写的 R 可连续替换多个字符。** 1. 请将光标移动到本节中下面标记有 ---> 的第一行。移动光标到第一个 xxx 的 起始位置。 2. 然后输入大写的 R 开始把第一行中的不同于第二行的剩余字符逐一输入,就 可以全部替换掉原有的字符而使得第一行完全雷同第二行了。 3. 接着按 键退出替换模式回到正常模式。您可以注意到尚未替换的文本 仍然保持原状。 4. 重复以上步骤,将剩余的 xxx 也替换掉。 ---> Adding 123 to xxx gives you xxx. ---> Adding 123 to 456 gives you 579. 提示:替换模式与插入模式相似,不过每个输入的字符都会删除一个已有的字符。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六讲第四节:复制粘贴文本 ** 使用操作符 y 复制文本,使用 p 粘贴文本 ** 1. 定位到下面标记有 ---> 的一行,将光标移动到 "a)" 之后。 2. 接着使用 v 进入可视模式,移动光标到 "first" 的前面。 3. 现在输入 y 以抽出(复制)高亮的文本。 4. 然后移动光标到下一行的末尾:j$ 5. 接着输入 p 以放置(粘贴)复制了的文本。然后输入:a second 。 6. 使用可视模式选中 " item.",用 y 复制,再用 j$ 将光标移动到下一行末尾, 用 p 将文本粘贴到那里。 ---> a) this is the first item. b) 提示:您还可以把 y 当作操作符来使用;例如 yw 可以用来复制一个单词。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六讲第五节:设置类命令的选项 ** 设置可使查找或者替换可忽略大小写的选项 ** 1. 要查找单词 ignore 可在正常模式下输入 /ignore <回车>。 要重复查找该词,可以重复按 n 键。 2. 然后设置 ic 选项(Ignore Case,忽略大小写),请输入: :set ic 3. 现在可以通过键入 n 键再次查找单词 ignore。注意到 Ignore 和 IGNORE 现在 也被找到了。 4. 然后设置 hlsearch 和 incsearch 这两个选项,请输入: :set hls is 5. 现在可以再次输入查找命令,看看会有什么效果: /ignore <回车> 6. 要禁用忽略大小写,请输入: :set noic 提示:要移除匹配项的高亮显示,请输入: :nohlsearch 提示:如果您想要仅在一次查找时忽略字母大小写,您可以使用 \c: /ignore\c <回车> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第六讲小结 1. 输入小写的 o 可以在光标下方打开新的一行并进入插入模式。 输入大写的 O 可以在光标上方打开新的一行。 2. 输入小写的 a 可以在光标所在位置之后插入文本。 输入大写的 A 可以在光标所在行的行末之后插入文本。 3. e 命令可以使光标移动到单词末尾。 4. 操作符 y 复制文本,p 粘贴先前复制的文本。 5. 输入大写的 R 将进入替换模式,直至按 键回到正常模式。 6. 输入 :set xxx 可以设置 xxx 选项。一些有用的选项如下: 'ic' 'ignorecase' 查找时忽略字母大小写 'is' 'incsearch' 查找短语时显示部分匹配 'hls' 'hlsearch' 高亮显示所有的匹配短语 选项名可以用完整版本,也可以用缩略版本。 7. 在选项前加上 no 可以关闭选项: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第七讲第一节:获取帮助信息 ** 使用在线帮助系统 ** Vim 拥有一个细致全面的在线帮助系统。要启动该帮助系统,请选择如下三种方 法之一: - 按下 键 (如果键盘上有的话) - 按下 键 (如果键盘上有的话) - 输入 :help <回车> 请阅读帮助窗口中的文字以了解帮助是如何工作的。 输入 CTRL-W CTRL-W 可以使您在窗口之间跳转。 输入 :q <回车> 可以关闭帮助窗口。 提供一个正确的参数给":help"命令,您可以找到关于该主题的帮助。请试验以 下参数(可别忘了按回车键哦): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第七讲第二节:创建启动脚本 ** 启用 Vim 的特性 ** Vim 的功能特性要比 Vi 多得多,但其中大部分都没有缺省启用。为了使用更多的 特性,您得创建一个 vimrc 文件。 1. 开始编辑 vimrc 文件,具体命令取决于您所使用的操作系统: :edit ~/.vimrc 这是 Unix 系统所使用的命令 :edit $VIM/_vimrc 这是 MS-Windows 系统所使用的命令 2. 接着读取 vimrc 示例文件的内容: :r $VIMRUNTIME/vimrc_example.vim 3. 保存文件,命令为: :write 下次您启动 Vim 时,编辑器就会有了语法高亮的功能。 您可以把您喜欢的各种设置添加到这个 vimrc 文件中。 要了解更多信息请输入 :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第七讲第三节:补全功能 ** 使用 CTRL-D 和 可以进行命令行补全 ** 1. 请确保 Vim 不是在以兼容模式运行: :set nocp 2. 查看一下当前目录下已经存在哪些文件,输入: :!ls 或者 :!dir 3. 现在输入一个目录的起始部分,例如输入: :e 4. 接着按 CTRL-D 键,Vim 会显示以 e 开始的命令的列表。 5. 然后按 键,Vim 会补全命令为 :edit 。 6. 现在添加一个空格,以及一个已有文件的文件名的起始部分,例如: :edit FIL 7. 接着按 键,Vim 会补全文件名(如果它是惟一匹配的)。 提示:补全对于许多命令都有效。您只需尝试按 CTRL-D 和 。 它对于 :help 命令非常有用。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 第七讲小结 1. 输入 :help 或者按 键或 键可以打开帮助窗口。 2. 输入 :help cmd 可以找到关于 cmd 命令的帮助。 3. 输入 CTRL-W CTRL-W 可以使您在窗口之间跳转。 4. 输入 :q 以关闭帮助窗口 5. 您可以创建一个 vimrc 启动脚本文件用来保存您偏好的设置。 6. 当输入 : 命令时,按 CTRL-D 可以查看可能的补全结果。 按 可以使用一个补全。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim 教程到此就结束了。本教程只是为了简明地介绍一下 Vim 编辑器,但已足以让您 很容易使用这个编辑器了。毋庸质疑,vim还有很多很多的命令,本教程所介 绍的距离完整的差得很远。所以您要精通的话,还望继续努力哦。下一步您可以阅读 Vim 的用户手册,使用的命令是: :help user-manual 下面这本书值得推荐用于更进一步的阅读和学习: Vim - Vi Improved - 作者:Steve Oualline 出版社:New Riders 这是第一本完全讲解 Vim 的书籍。它对于初学者特别有用。其中包含有大量实例 和图示。 欲知详情,请访问 http://iccf-holland.org/click5.html 以下这本书比较老了而且内容更多是关于 Vi 而非 Vim,但是也值得推荐: Learning the Vi Editor - 作者:Linda Lamb 出版社:O'Reilly & Associates Inc. 这是一本不错的书,通过它您几乎能够了解到任何您想要使用 Vi 做的事情。 此书的第六个版本也包含了一些关于 Vim 的信息。 本教程是由来自 Calorado School of Mines 的 Michael C. Pierce 和 Robert K. Ware 所编写的,其中很多创意由来自 Colorado State University 的 Charles Smith 提供。编者的电子邮箱是:bware@mines.colorado.edu 本教程已由 Bram Moolenaar 专为 Vim 进行修订。 译制者附言: =========== 简体中文教程翻译版之译制者为梁昌泰 ,还有 另外一个联系地址:linuxrat@gnuchina.org。 繁体中文教程是从简体中文教程翻译版使用 Debian GNU/Linux 中文项目小 组的于广辉先生编写的中文汉字转码器 autoconvert 转换而成的,并对转 换的结果做了一些细节的改动。 变更记录: ========= 2012年10月01日 赵涛 将 vimtutor 中译版从 1.5 升级到 1.7。 2002年08月30日 梁昌泰 感谢 RMS@SMTH 的指正,将多处错误修正。 2002年04月22日 梁昌泰 感谢 xuandong@sh163.net 的指正,将两处错别字修正。 2002年03月18日 梁昌泰 根据Bram Moolenaar先生在2002年03月16日的来信要求,将vimtutor1.4中译 版升级到vimtutor1.5。 2001年11月15日 梁昌泰 将vimtutor1.4中译版提交给Bram Moolenaar和Sven Guckes。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!bEuuvim80/tutor/tutor.bar.utf-8nu[=============================================================================== = G o t i k a m i n n W I M M - S c h a i n e r - Fassung 1.7 = =============================================================================== Dyr Wimm ist ayn gro mächtigs Blat, dös was mit aynn Wösn Befelh aufwartt; z vil, däß myn s allsand in aynn Schainer wie dönn daader unterbräng. Der Schainer ist yso aufbaut, däß yr halt netty die Befelh allsand bringt, wost brauchst, däßst mit iem für s Eerste wirklich öbbs anfangen kanst. Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; dös haisst, wennst di nit grooß mit n Pröbln und Tüftln aufhaltst. OBACHT: Die Faudungen, wost daader finddst, gaand istig s Gwort öndern. Dösswögn machst eyn n Böstn glei ayn Aamum von derer Dautticht daader. Haast alsnan dös Gwort daader mit n Befelh "vimtutor bar" ausherlaassn, ist s ee schoon ayn Aamum. Mir kan s nit oft gnueg sagn, däß der Schainer daader istig gan n Üebn ghoert. Also muesst schoon aau die Befelh +ausfüern, wennst ys gscheid ler- nen willst. Mit n Lösn yllain ist s +nit taan! Ietz schaust grad non, däß dein Föststölltastn nit druckt ist; und aft geest glei aynmaal mit dyr j-Tastn abwärts (yso laaufft dös nömlich), hinst däßst de gantze Letzn 1.1 auf n Bildschirm haast. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 1.1: MIT N MÖRKL UMAYNANDFARN ** Dyrmitst mit n Mörkl umaynandkimmst, druck h, j, k und l wie unt zaigt. ** ^ Ayn Öslsbrugg: k De Tastn h ist winster und +geet aau gan winster. < h l > S l leit zesm und richtt si gan zesm. j S j kan myn wie aynn Pfeil gan unt seghn. v Mit n k kimmst gan n KOPF. 1. Ietz ruedertst ainfach mit n Mörkl auf n Bildschirm umaynand, hinst däßst di sicher füelst. 2. Halt d Abhin-Tastn (j) druckt; aft rumplt s ainfach weiter. Netty yso kimmst gan dyr naehstn Letzn. 3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.2. Non öbbs: Allweil, wenn dyr niemer ganz wol ist, wasst öbbenn druckt haast, aft zipfst ; naacher bist wider ganz gwon in dyr Befelhs-Artweis. Nöbnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter. Aber hjkl seind z haissn s Wimm-Urgstain; und de "Hörtn" seind ganz dyr- für, däß myn bei +dene bleibt. Pröblt s ainfach aus! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 1.2: ÖNN WIMM AUSSCHALTTN ALSO, EE WENNST ÖBBS VON DAA UNT AUSFÜERST, LIS LIEBER ZEERST DE GANTZE LET- ZN! 1. Druck d -Tastn, dyrmitst aau gwiß in dyr Befelhs-Artweis bist. 2. Demmlt :q! . Daa dyrmit benddst ys Blat und verwirffst allss, wasst öbbenn göndert haast. 3. Balst önn Eingib seghst, gib dö Faudung ein, wo di zo dönn Schainer brun- gen haat, also vimtutor bar . 4. Also, wenn ietz allsse sitzt, naacherd füerst d Schritt 1 hinst 3 aus, mit wasst ys Blat verlaasst und aft wider einhinkimmst. Anmörkung: Mit :q! verwirffst allss, wasst göndert older enther gschribn haast. In aynn Öttlych Letznen lernst acht, wiest dös allss in ayner Dautticht speichertst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 1.3: GWORT BARECHTN - LÖSCHN ** Druck x , dyrmitst dös Zaichen unter n Mörkl löschst. ** 1. Bewög di mit n Mörkl auf de mit ---> angmörkte Zeil unt. 2. Zo n Faeler Verbössern farst mit n Mörkl netty auf dös Zaichen, dös wo glöscht ghoert. 3. Druck de Tastn x , däßst dös überflüssige Zaichen löschst. 4. Ietz tuest so lang weiter mit 2 hinst 4, hinst däß dyr Saz stimmt. ---> De Kkuue sprangg übber nn Maanad. 5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.4. weiter. Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn, allss auswendig z lernen; nän, lern ainfach mit n Anwenddn! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 1.4: GWORT BARECHTN - EINFÜEGN ** Druck i , dyrmitst öbbs einfüegst. ** 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil, wo mit ---> angeet. 2. Dyrmitst de eerste Zeil wie de zwaitte machst, bewög önn Mörkl auf dös eerste Zaichen NAACH derer Stöll, daa wo s Gwort eingfüegt werdn sollt. 3. Druck i und gib dös ein, was abgeet. 4. Wenn ieweils ayn Faeler verweitert ist, aft druck ; dyrmit kimmst gan dyr Befelhsartweis zrugg. So, und ietz tuest ainfach yso weiter, hinst däß dyr Saz stimmt. ---> Daader gt dd öbbs b. ---> Daader geet diend öbbs ab. 5. Balst mainst, däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 1.5: GWORT BARECHTN - ANFÜEGN ** Druck A gan n Gwort Anfüegn. ** 1. Gee mit n Mörkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat. Daa ist s gleich, wo gnaun dyr Mörkl in derer Zeil steet. 2. Demmlt A und gib de entspröchetn Ergöntzungen ein. 3. Wennst mit n Anfüegn förtig bist, aft druckst , däßst wider eyn de Befelhsartweis zruggkimmst. 4. So, und ietz geest aft non gan dyr zwaittn mit ---> angmörktn Zeil; und daadl machst ys netty yso. ---> In derer Zeil gee In derer Zeil geet ayn Weeng ayn Gwort ab. ---> Aau daader stee Aau daader steet öbbs Unvollstöndigs. 5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 1.6: AYN DAUTTICHT BARECHTN ** Mit :wq speichertst ayn Dautticht und verlaasst önn Wimm ganz. ** !! OBACHT: Ee wennst mit dönn alln daa unt weitertuest, lis zeerst de gantze Letzn durch!! 1. Verlaaß also s Blat, wie s in dyr Letzn 1.2. haisst, mit :q! ! 2. Gib dö Faudung eyn n Eingib ein: vim Schainer . 'vim' ruefft s Blat auf, und 'Schainer' haisst de Dautticht, wost barechtn willst. Dyrmit haast also ayn Dautticht, dö wost barechtn kanst. 3. Ietz füegst öbbs ein older löschst öbbs, wiest ys in de vorignen Letznen glernt haast. 4. Speichert de gönderte Dautticht und verlaaß önn Wimm mit :wq . 5. Schmeiß önn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung. 6. Aft däßst de obignen Schritt glösn und käppt haast, kanst ys durchfüern. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 1 1. Dyr Mörkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert. h (winst) j (ab) k (auf) l (zes) 2. Um önn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT . 3. Willst önn Wimm verlaassn und aau allss verwerffen, aft gibst ein: und :q! . Gan n Verlaassn und Speichern aber zipfst und :wq . 4. Willst dös Zaichen löschn, daa wo dyr Mörkl drauf ist, demmltst x . 5. Willst öbbs vor n Mörkl eingöbn, zipfst i und drafter . Mechst ys aber eyn s Zeilnend anhinhöngen, benutzt ys A . Und ainfach naach n Mörkl füegst ys mit a ein. Anmörkung: Druckst , kimmst eyn de Befelhsartweis zrugg older brichst ayn Faudung ab, dö wo dyr schiefgangen ist. Ietz tue mit dyr Letzn 2 weiter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.1.: LÖSHFAUDUNGEN ** Demmlt dw , dyrmitst ayn Wort löschst. ** 1. Druck , dyrmit s aau gwiß ist, däßst in dyr Befelhsartweis bist. 2. Bewög önn Mörkl zo dyr mit ---> angmörktn Zeil unt. 3. Und daa geest ietz auf n Anfang von aynn Wort, dös wo glöscht ghoert. 4. Zipf dw , däßst dös gantze Wort löschst. Nöbnbei: Dyr Buechstabn d erscheint auf dyr lösstn Zeil von n Bildschirm, sobaldst n eingibst. Dyr Wimm wartt ietz drauf, däß öbbs kimmt, al- so daader ayn w . Seghst freilich öbbs Anderts wie ayn d , naacherd haast öbbs Falschs demmlt. Druck aft und pröblt s non aynmaal. ---> Ayn Öttlych Wörter lustig ghoernd nit Fisper eyn dönn Saz einhin. 5. Äfert d Schritt 3 und 4, hinst däß dyr Saz pässt, und gee aft gan dyr Letzn 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.2.: NON MEERER LÖSHFAUDUNGEN ** Gib d$ ein, däßst hinst eyn s Zeilnend löschst. ** 1. Druck , dyrmitst aau gwiß in dyr Befelhsartweis bist. 2. Bewög önn Mörkl hinst eyn de mit ---> angmörkte Zeil untn. 3. Gee mit n Mörkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn . . 4. Zipf d$ , däßst hinst eyn s End von dyr Zeil löschst. ---> Öbber haat s End von dyr Zeil doplt eingöbn. doplt eingöbn. 5. Gee weiter gan dyr Letzn 2.3, dyrmitst versteest, was daader ablaaufft. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.3: PFEMERER UND WOLENDER Vil Faudungen, wo s Gwort öndernd, sötznd si aus aynn Pfemerer und aynn Wo- lend zamm. Bal i also öbbs löschn will, schreib i ainsting d und aft s "Wo- lend", dös haisst also, "wolend", "wohin" däß i will - older was i halt gnaun löschn will. Daader also, was i wie löschn kan: w - hinst eyn n Anfang von n naehstn Wort AANE dönn sein eersts Zaichen. e - gan n End von n ietzundn Wort MIT dönn seinn lösstn Zaichen. $ - zo n End von dyr Zeil MIT derer irn lösstn Zaichen. Also löscht de Tastnfolg de allss umbb n Mörkl hinst eyn s Wortend. Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mörkl entspröchet weiter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN ** Gib i ayn Zal vor aynn Wolend ein, werd dös Sel entspröchet oft gangen. ** 1. Bewög önn Mörkl gan n Anfang von dyr Zeil mit ---> dyrvor unt. 2. Zipf 2w , däßst mit n Mörkl zwai Wörter weitergeest. 3. Zipf 3e , däßst mit n Mörkl auf s End von n drittn Wort kimmst. 4. Zipf 0 (aynn Nuller), däßst eyn n Anfang von dyr Zeil hinkimmst. 5. Widerhol d Schritt 2 und 3 mit verschaidne Zöler. ---> Dös ist ietz grad ayn Zeil zo n drinn Umaynanderruedern. 6. Gee weiter gan dyr Letzn 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN ** Ayn Zal vor aynn Pfemerer füert dönn entspröchet oft aus. ** Also, i mecht löschn, und zwaar öbbs Bestimmts, und dös so und so oft: Daa dyrzue benutz i aynn Zöler: d Zöler Wolend (also önn Bewögungsschrit) 1. Bewög önn Mörkl zo n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an- gmörktn Zeil. 2. Demmlt d2w , dyrmitst de ganz grooßgschribnen Wörter löschst. 3. Äfert d Schritt 1 und 2 mit dönn entspröchetn Zöler, dyrmitst de drauf- folgetn ganz großgschribnen Wörter mit ayner ainzignen Faudung löschst: ---> Dö ABC DE Zeil FGHI JK LMN OP mit Wörter ist Q RS TUV ietz berichtigt. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.6: ARECHTN AUF ZEILN ** Zipf dd , um ayn gantze Zeil z löschn. ** Weil s gro oft vürkimmt, däß myn gantze Zeiln löscht, kaamend schoon d Ent- wickler von n Urwimm daa drauf, däß myn ainfach dd gan dönn Zwök schreibt. 1. Bewög önn Mörkl gan dyr zwaittn Zeil in n untignen "Gedicht". 2. Zipf dd , um dö Zeil z löschn. 3. Ietz bewögst di gan dyr viertn Zeil. 4. Zipf 2dd , um zwo Zeiln zo n Löschn. ---> 1) Roosn seind root; ---> 2) Drunter ist s Koot. ---> 3) Veigerln seind blau. ---> 4) Umgrabn tuet s d Sau. ---> 5) D Ur sait de Zeit, ---> 6) Sait, däß s mi freut, ---> 7) Dirndl, dein Gschau. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 2.7: RUGGGÖNGIG MACHEN (RUGGLN) ** Zipf u , dyrmitst de lösstn Faudungen ruggltst ** ** older U , um ayn gantze Zeil widerherzstölln. ** 1. Bewög önn Mörkl gan dyr mit ---> angmörktn Zeil unt und gee dyrmit auf n eerstn Faeler. 2. Zipf x , däßst dös eerste z vile Zaichen löschst. 3. Ietz demmlt u , dyrmitst de lösste Faudung ruggltst. 4. Ietz behöb allsand Faeler auf dyr Zeil mit dyr Hilf von n Befelh x . 5. Aft gibst ayn U (grooß) ein, däßst de Zeil wider yso hinbringst, wie s gwösn ist. 6. So, und ietz demmltst so oft u , hinst däßst s U und de andern Fau- dungen rugggöngig gmacht haast. 7. Und ietzet widerum schreibst so oft r , hinst däßst allsand Be- felh widerhergstöllt, z haissn allsse rugg-grugglt haast (also d Rugggön- gigmachungen rugggöngig gmacht). ---> Beerichtig d Faeller voon dehrer Zeiil und sttöll s mitt n Ruggruggln wi- der her. 8. Die Faudungen seind gro wichtig; sö helffend ainn närrisch weiter. Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 2 1. Um von n Mörkl aus hinst eyn s naehste Wort zo n Löschn, zipf: dw 2. Um umbb n Mörkl hinst eyn s End von dyr Zeil zo n Löschn, demmlt d$ 3. Dyrmitst ayn gantze Zeil löschst, gib ein: dd 4. Mechst ayn Bewögung, ayn "Wolend", öfters, stöll de entspröchete Zal dyr- vor: 3dw older aau: d3w 5. Dyr Pfueg für ayn Önderungsfaudung lautt yso: Pfemerer [Zal] Bewögungsschrit (Wolend) Und dös haisst: Dyr PFEMERER gibt an, WAS taan ghoert, öbbenn d = löschn (»delete«). [ZAL] - Ayn Zal KAN myn angöbn, wenn myn halt ayn Wolend öfter habn will. S WOLEND, also dyr Schrit WOHIN, besagt, auf was i aushin will, öbbenn auf aynn Wortanfang ( w ), s End von dyr Zeil ( $ ) und so weiter. 6. Däßst eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller: 0 7. Um öbbs Vorigs wider z ruggln, gib ein: u (klain also) Um allsand Önderungen in ayner Zeil z ruggln, haast: U (also grooß) Um "rugg-z-ruggln", also allss wider herzstölln, zipf: r ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 3.1: ANFÜEGN (»put«) ** Zipf p , dyrmitst öbbs gnetty Glöschts naach n Mörkl anfüegst. ** 1. Bewög önn Mörkl gan dyr eerstn untignen Zeil mit ---> dyrvor. 2. Zipf dd , um sele Zeil z löschn und dyrmit in ayner Wimm-Osn zo n Spei- chern. 3. Bewög önn Mörkl gan dyr Zeil c), ÜBER derer, daa wo de glöschte Zeil ein- hinkemmen sollt. 4. So, und ietz gibst ainfach p ein, und schoon haast dö Zeil unter derer mit n Mörkl drinn. 5. Äfert d Schritt 2 hinst 4, hinst däßst allsand Zeiln yso naachynaynand haast, wie s hinghoernd. ---> d) Kanst du dös aau? ---> b) Veigerln seind blau. ---> c) Bedachtn kan myn lernen. ---> a) Roosn seind root. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 3.2: ERSÖTZN (»replace«) ** Zipf rx , um dös Zaichen unter n Mörkl durch x z ersötzn. ** 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil mit ---> dyrvor. 2. Bewög önn Mörkl, hinst däß yr auf n eerstn Faeler steet. 3. Zipf r und drafter dös Zaichen, wo dyrfür daa hinghoert. 4. Widerhol d Schritt 2 und 3, hinst däßst de eerste Zeil gmaeß dyr zwaittn berichtigt haast: ---> Wie dö Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft! ---> Wie dö Zeil eingöbn wurd, wurdnd ainige falsche Tastnen zipft! 5. Ietz tue mit dyr Letzn 3.3 weiter. Anmörkung: Vergiß nit drauf, däßst mit n Anwenddn lernen solltst und nit öbbenn mit n Auswendiglernen! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 3.3: ÖNDERN (»change«) ** Um hinst eyn s Wortend z öndern, zipf ce . ** 1. Gee mit n Mörkl auf de eerste mit ---> angmörkte Zeil. 2. Ietz farst netty auf s "s" von Wstwr hin. 3. Zipf ce ein und aft d Wortberichtigung, daader also örter . 4. Druck und bewög önn Mörkl zo n naehstn Zaichen, wo göndert ghoert. 5. Äfert d Schritt 3 und 4, hinst däß dyr eerste Saz wie dyr zwaitte ist. ---> Ainige Wstwr von derer Zlww ghhnnd mit n Öndern-Pfemerer gaauu. ---> Ainige Wörter von derer Zeil ghoernd mit n Öndern-Pfemerer göndert. ce löscht also s Wort und schlaaufft di eyn d Eingaab-Artweis. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 3.4.: NON MEERER ÖNDERUNGEN PFELFS c ** D Löshfaudung c arechtt mit de nömlichnen Wolender wie dö mit d ** 1. Dyr Önder-Pfemerer arechtt anleich wie d Löshfaudung mit d , und zwaar yso: c [Zal] Bewögungsschrit (Wolend) 2. D Wolender seind de gleichn, öbbenn w für Wort und $ für s Zeilnend. 3. Bewög di zo dyr eerstn untignen Zeil mit ---> . 4. Ietz geest auf dönn eerstn Faeler. 5. Zipf c$ , gib önn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft . ---> S End von derer Zeil sollt an de zwaitte daader anglichen werdn. ---> S End von derer Zeil sollt mit n Befelh c$ berichtigt werdn. Denk allweil dran, däßst iederzeit mit dyr Ruggtastn Faeler ausbössern kanst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 3 1. Um ayn vorher glöschts Gwort anzfüegn, zipf p . Daa dyrmit werd dös gantze Gwort NAACH n Mörkl angfüegt. Wenn s ayn gantze Zeil gwösn ist, werd dö sel als de Zeil unterhalb n Mörkl eingfüegt. 2. Um dös Zaichen unter n Mörkl, also wo dyr Mörkl ist, z ersötzn, zipf r und aft dös Zaichen, wost daadl habn willst. 3. Dyr Önderungspfemerer ( c = »change«) laasst ainn umbb n Mörkl hinst eyn s End von n Wolend öndern. Zipf ce , dyrmitst umbb n Mörkl hinst eyn s End von n Wort öndertst, und c$ hinst eyn s End von dyr Zeil. 4. Für d Önderung lautt dyr Pfueg: c [Zal] Wolend Ietz tue mit dyr naehstn Letzn weiter. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND ** Demmlt g, däßst önn Befand und Darstand von dyr Dautticht anzaigst. ** ** Zipf G , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. ** Anmörkung: Lis dö gantze Letzn daader durch, ee wennst iewign öbbs unternimmst! 1. Druck g . Auf dös hin erscheint auf derer Seitt ganz unt ayn Dar- standsmeldung mit n Dauttichtnam und n Befand innerhalb dyr Dautticht. Mörk dyr de Zeilnnummer für n Schrit 3. Anmörkung: Müglicherweis seghst aau önn Mörklbefand in n zesmen untern Bild- schirmögg. Aft ist s "Lindl" (»ruler«) eingstöllt; meerer über dös laasst dyr dyr Befelh :help 'ruler' ausher. 2. Druck G , um an s End von dyr Dautticht z kemmen. gg gibst ein, däßst gan n Anfang von dyr Dautticht aufhinkimmst. 3. Gib d Nummer von derer Zeil ein, daa wost vorher warst, und aft non G . Dös bringt di zrugg gan seler Zeil, daa wost stuenddst, wiest dös eerste Maal g gadruckst. 4. Wennst di sicher gnueg füelst, aft füer d Schritt 1 hinst 3 aus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 4.2: DYR BEFELH ZO N SUECHEN ** Zipf / und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. ** 1. Du gibst also in dyr Befelhsartweis s Zaichen / ein. Dös sel wie aau dyr Mörkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung : . 2. Ietz zipf Faeeler . Netty um dös 'Faeeler' willst ietz suechen. 3. Willst um gnaun dönn Ausdruk weitersuechen, zipf ainfach n (wie »next«). Willst hinzrugg suechen, aft gibst N ein. 4. Um von Haus aus zruggaus z suechen, nimm ? statt / her. 5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, nimm o , und dös öfter, wennst weiter zrugg willst. Mit i widerum kimmst vorwärts. ---> Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler Anmörkung: Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi- der weiter dyrmit, men Sach dyr Schaltter 'wrapscan' wär auf aus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 4.3: DE GÖGNKLAMMERN FINDDN ** Zipf % , um de entspröchete Klammer ) , ] older } z finddn. ** 1. Sötz önn Mörkl auf iewign aine von dene drei Klammern ( , [ older { in dyr untignen Zeil, wo mit ---> angmörkt ist. 2. Ietzet zipf s Zaichen % . 3. Dyr Mörkl geet ietz auf de pässete schliessete Klammer. 4. Ietz demmlt % , und dyrmit kimmst gan dyr öffneretn Klammer zrugg. 5. Sötz önn Mörkl auf ayn anderne Klammer von ({[]}) und pröblt % aus. ---> Dös ( ist blooß ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. )) Anmörkung: Um dö Müglichkeit gaast bsunders froo sein, wennst aynmaal in aynn Spaichgwort verzweiflt ayn faelete Gögnklammer suechst! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 4.4: D ERSÖTZUNGSFAUDUNG (»substitute«) ** Zipf :s/alt/neu/g , um 'alt' durch 'neu' zo n Ersötzn. ** 1. Gee mit n Mörkl zo dyr unt steehetn mit ---> angmörktn Zeil. 2. Zipf :s/dee/de . Der Befelh ersötzt alsnan grad dös +eerste "dee", wo vürkimmt. 3. Ietz pröblt s mit :s/dee/de/g . Dös zuesötzliche g ("Pflok" nennt myn öbbs Sölchers) bewirkt, däß allss, was dyrmit kennzaichnet ist, innerhalb von dyr ainn Zeil ersötzt werd. ---> Dee schoenste Zeit, däß myn dee Blüemln anschaut, ist dee schoene Lan- gesszeit. 4. Um ietz allsand Suechbegriff innerhalb von zwo Zeiln zo n Öndern, zipf :#,#s/alt/neu/g , wobei # ieweils für de eerste und lösste Zeil von dönn Pfraich steet. :%s/alt/neu/g zipfst, däßst d Vürkemmen in dyr gantzn Dautticht öndertst. Mit :%s/alt/neu/gc finddst allsand Vürkemmen in dyr gsamtn Dautticht; daa werst aber zeerst non gfraagt, obst ys ersötzn willst older nity. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 4 1. g zaigt dönn ietzundn Dauttichtbefand und önn Darstand dyrvon an. G bringt di an s End von dyr Dautticht. G bringt di gan dyr entspröchetn Zeilnnummer. gg geet +grad yso. gg bringt di zo dyr eerstn Zeil. 2. D Eingaab von / mit aynn Ausdruk suecht VÜRSHLING um dönn Ausdruk. Gibst ? und aynn Suechbegrif ein, suecht s um dönn ÄRSHLING. Zipf naach ayner Suech n ; naacherd werd in de gleiche Richtung weiter- gsuecht. Mit N geet s umkeerter weiter. o bringt di zo ölterne Befändd zrugg, i zo neuerne. 3. D Eingaab von % , wenn dyr Mörkl auf ainer von dene Klammern steet: ({[ )]} , bringt di zo dyr Gögnklammer. 4. Um dös eerste Vürkemmen von "alt" in ayner Zeil durch "neu" z ersötzn, zipf :s/alt/neu . Um allsand in ayner Zeil z ersötzn, zipf :s/alt/neu/g . Mechst allss in zwo Zeiln ersötzn, demmlt zo n Beispil :5,6s/alt/neu/g . Mechst allss in dyr gantzn Dautticht ersötzn, gib ein: :%s/alt/neu/g . Willst ayn ieds Maal bstaetln, höng 'c' wie »confirm« hint anhin. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÜERN ** Willst ayn Gfäßfaudung ausfüern, gib ainfach dö sel naach :! ein. ** 1. Zipf dönn bekanntn Befelh : , dyrmitst mit n Mörkl auf n Bildschirm ganz abhin kimmst. Draufhin kanst aynn gwonen Gfäßbefelh eingöbn. 2. Zeerst kimmt aber non ayn Ruefzaichen ! . Und ietzet haast d Müglich- keit, ayn beliebige ausserige Gfäßfaudung auszfüern. 3. Als Beispil zipf :!ls ; und schoon haast ayn Auflistung von deinn Verzaichniss, netty wie wennst ganz gwon in n Eingib wärst. Geet ls aus iewign aynn Grund nit, aft pröblt s mit :!dir . Also non aynmaal: Mit dönn Angang kan ayn iede beliebige ausserige Faudung aus- gfüert werdn, aau mit Auerwerdd. Und wolgmörkt: Alle Befelh, wo mit : angeend, müessend mit bstö- tigt werdn. Dös dyrsagn myr fürbaß +niemer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 5.2: NON MEERER DRÜBER, WIE MYN DAUTTICHTN SCHREIBT ** Um öbbs Gönderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM . ** 1. Zipf :!dir older :!ls , däßst dyr ayn Auflistung von deinn Verzaich- niss ausherlaasst. Däßst drafter eingöbn muesst, waisst ee schoon. 2. Suech dyr aynn Dauttichtnam aus, dönn wo s non nit geit, öbbenn POCH . 3. Ietz demmlt: :w POCH (also mit POCH als dönn neuen Dauttichtnam). 4. Dös speichert ietz de gantze Dautticht, also önn Wimmschainer, unter dönn Nam POCH. Dös kanst leicht überprüeffen, indem däßst ainfach :!ls older :!dir zipfst und dyrmit deinn Verzaichnissinhalt seghst. Anmörkung: Stigst ietz aus n Wimm aus und gännst n aft wider mit vim POCH , naacherd wär dö Dautticht ayn gnaune Aamum von n Schainer dyrselbn, wiest n gspeichert haast. 5. Ietz verweitert dö Dautticht - fallsst s Fenstl haast - , mit :!del POCH beziehungsweis bei aynn Unixgebäu mit :!rm POCH . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN ** Um aynn Tail von dyr Dautticht z speichern, zipf v [Wolend] :w DAUTTICHT ** 1. Ruck önn Mörkl auf netty dö Zeil daader. 2. Demmlt v und gee mit n Mörkl auf dönn fümftn Auflistungspunt untet. Du seghst glei, däß s Gwort vürherghöbt erscheint. 3. Druck s Zaichen : . Ganz unt auf n Bildschirm erscheint :'<,'> . 4. Zipf w POCH , wobei s dönn Dauttichtnam POCH non nit geit. Vergwiß di, däßst dös :'<,'>w POCH aau +seghst, ee wennst druckst. 5. Dyr Wimm schreibt de ausgwaltn Zeiln eyn de Dautticht POCH einhin. Benutz :!dir older :!ls , däßst dös überprüeffst. Lösh s fein nit öbbenn! Mir brauchend s nömlich für de naehste Letzn. Anmörkung: Druckt myn v , ginnt d Sichtisch-Auswal. Du kanst mit n Mörkl um- aynandfarn, um d Auswal z veröndern. Drafter kan myn mit yn aynn Pfemerer mit dönn Gwort öbbs machen. Zo n Beispil löscht d dös Gwort. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 5.4: EINLÖSN UND ZAMMENFÜERN VON DAUTTICHTN ** Um önn Inhalt von ayner Dautticht einzlösn, zipf :r DAUTTICHTNAM ** 1. Sötz önn Mörkl über dö Zeil daader. OBACHT: Aft däßst önn Schrit 2 ausgfüert haast, seghst auf aynmaal öbbs aus dyr Letzn 5.3. Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi- derfinddst. 2. Ietz lis dein Dautticht POCH ein, indem däßst d Faudung :r POCH aus- füerst, wobei wie gsait POCH für dönn von dir ausgsuechtn Dauttichtnam steet. De einglösne Dautticht werd unterhalb dyr Mörklzeil eingfüegt. 3. Um zo n Überprüeffen, ob de Dautticht aau gwiß einglösn ist, gee zrugg; und du seghst, däß s ietz zwo Ausförtigungen von dyr Letzn 5.3. geit, s Urniss und de eingfüegte Dauttichtfassung. Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei- spil list :r !ls d Ausgaab von dyr Faudung ls ein und füegt s unterhalb n Mörkl ein. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 5 1. :!FAUDUNG füert aynn ausserignen Befelh aus. Daader ayn Öttlych gwänddte Beispiler: (Fenstl) (Unix - Linux) :!dir :!ls - listt s Verzaichniss auf. :!del DAUTTICHT :!rm DAUTTICHT - verweitert sele Dautticht. 2. :w DAUTTICHT speichert de ietzunde Wimmdautticht unter dönn besagtn Nam. 3. v WOLEND :w DAUTTICHTNAM schreibt de sichtisch ausgwaltn Zeiln eyn de Dautticht mit seln Nam. 4. :r DAUTTICHTNAM ladt sele Dautticht und füegt s unterhalb n Mörklbefand ein. 5. :r !dir list d Ausgaab von dyr Faudung dir und füegt s unterhalb n Mörklbefand ein. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 6.1: ZEIL ÖFFNEN (»open«) ** Zipf o , um ayn Zeil unterhalb n Mörkl z öffnen und eyn d ** ** Einfüegartweis z kemmen. ** 1. Bewög önn Mörkl zo dyr eerstn mit ---> angmörktn Zeil unt. 2. Zipf o (klain), um ayn Zeil UNTERHALB n Mörkl z öffnen und mit dyr Ein- füegartweis weiterztuen. 3. Ietzet zipf ayn Weeng öbbs und druck , um d Einfüegartweis z ver- laassn. ---> Mit o werd dyr Mörkl in dyr Einfüegartweis auf de offene Zeil gsötzt. 4. Um ayn Zeil OBERHALB n Mörkl aufzmachen, gib ainfach ayn groosss O statt yn aynn klainen ein. Versuech dös auf dyr untignen Zeil. ---> Öffnet ayn Zeil über derer daader mit O , wenn dyr Mörkl auf derer Zeil ist. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 6.2: GWORT ANFÜEGN (»append«) ** Zipf a , um öbbs NAACH n Mörkl einzfüegn. ** 1. Bewög önn Mörkl gan n Anfang von dyr eerstn Üebungszeil mit ---> unt. 2. Druck e , hinst däß dyr Mörkl an n End von Zei steet. 3. Zipf ayn klains a , um öbbs NAACH n Mörkl anzfüegn. 4. Vergöntz dös Wort wie in dyr Zeil drunter. Druck , um d Schreib- Artweis z verlaassn. 5. Bewög di mit e zo n naehstn ungantzn Wort und widerhol d Schritt 3 und 4. ---> Dö Ze biett ayn Glögn , ayn Gwort in ayner Zeil anzfü. ---> Dö Zeil biett ayn Glögnet, ayn Gwort in ayner Zeil anzfüegn. Anmörkung: a , i und A bringend ainn gleichermaaßn eyn d Einfüegartweis; dyr ainzige Unterschaid ist, WO mit n Einfüegn angfangt werd. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«) ** Demmlt ayn groosss R , um meerer als wie grad ain Zaichen z ersötzn. ** 1. Bewög önn Mörkl zo dyr eerstn untignen, mit ---> angmörktn Zeil. Gee mit n Mörkl gan n Anfang von n eerstn xxx . 2. Ietz druck R und zipf sele Zal, wo drunter in dyr zwaittn Zeil steet, yso däß de sel s xxx ersötzt. 3. Druck , um d Ersötzungsartweis z verlaassn. Du gspannst, däß dyr Rest von dyr Zeil unveröndert bleibt. 4. Äfert die Schritt, um dös überblibne xxx z ersötzn. ---> S Zunddn von 123 zo xxx ergibt xxx. ---> S Zunddn von 123 zo 456 ergibt 579. Anmörkung: D Ersötzungsartweis ist wie d Einfüegartweis, aber ayn ieds eindem- mlte Zaichen löscht ayn vorhanddns. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 6.4: GWORT AAMEN UND EINFÜEGN ** Benutz önn Pfemerer y , um öbbs z aamen, und p , um öbbs einzfüegn. ** 1. Gee zo dyr mit ---> angmörktn Zeil unt und sötz önn Mörkl hinter "a)". 2. Ginn d Sichtisch-Artweis mit v und bewög önn Mörkl gnaun vor "eerste". 3. Zipf y , um dönn vürherghöbtn Tail z aamen. 4. Bewög önn Mörkl gan n End von dyr naehstn Zeil: j$ 5. Demmlt p , um dös Gwort einzfüegn, und aft: a zwaitte . 6. Benutz d Sichtischartweis, um " Eintrag." auszwaln, aam s mittls y , be- wög di gan n End von dyr naehstn Zeil mit j$ und füeg s Gwort dortn mit p an. ---> a) dös ist dyr eerste Eintrag. b) Anmörkung: Du kanst y aau als Pfemerer verwenddn; yw zo n Beispil aamt hinst eyn n naehstn Wortanfang (aane dönn selber). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 6.5: SCHALTTER SÖTZN ** Sötz aynn Schaltter yso, däß ayn Suech older Ersötzung Grooß- und Klain- ** ** schreibung übergeet. ** 1. Suech um 'übergee", indem däßst /übergee eingibst. Widerhol d Suech ayn Öttlych Maal, indem däßst de Tastn n druckst. 2. Sötz de Zwisl - önn Schaltter - 'ic' (»ignore case«), indem däßst :set ic eingibst. 3. Ietz suech wider um 'übergee' und tue aau wider mit n weiter. Daa fallt dyr auf, däß ietz öbbenn aau Übergee und ÜBERGEE hergeet. 4. Sötz de Zwisln 'hlsearch' und 'incsearch' pfelfs: :set hls is 5. Widerhol d Suech und bobacht, was ietz gschieght: /übergee 6. Däßst grooß und klain wider gwon unterscheidst, zipf: :set noic Anmörkung: Mechst de Tröffer niemer vürherghöbt seghn, gib ein: :nohlsearch Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \c in n Suechausdruk: /übergee\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 6 1. Zipf o , um ayn Zeil UNTERHALB n Mörkl z öffnen und d Einfüegartweis z ginnen. Zipf O , um ayn Zeil OBERHALB n Mörkl z öffnen. 2. Zipf a , um NAACH n Mörkl ayn Gwort einzfüegn. Zipf A , um ayn Gwort naach n Zeilnend anzfüegn. 3. D Faudung e bringt di gan n End von aynn Wort. 4. Dyr Pfemerer y (»yank«) aamt öbbs, p (»put«) füegt dös ein. 5. Ayn groosss R geet eyn d Ersötzungsartweis, hinst däß myn druckt. 6. D Eingaab von ":set xxx" sötzt de Zwisl "xxx". Ayn Öttlych Zwisln seind: 'ic' 'ignorecase' Grooß/klain wurst bei ayner Suech 'is' 'incsearch' Zaig aau schoon ayn Tailüberainstimmung 'hls' 'hlsearch' Höb allsand pässetn Ausdrück vürher Dyr Schaltternam kan in dyr Kurz- older Langform angöbn werdn. 7. Stöll yn ayner Zwisl "no" voran, däßst ys abschalttst: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 7.1: AYN HILFGWORT AUFRUEFFEN ** Nutz dös einbaute Hilfgebäu, de "Betribsanlaittung". ** Eyn n Wimm ist ayn ausfüerliche "Gebrauchsanweisung" einbaut. Für s Eerste pröblt ainfach ains von dene dreu aus: - Druck d -Tastn, wennst öbbenn aine haast. - Druck de Tastn , fallsst ys haast. - Zipf :help Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie dös mit dyr Hilf geet. Demmlt w w , um von ainn Fenster zo n andern zo n Springen. Demmlt :q , um s Hilffenster zo n Schliessn. Du kanst zo so guet wie allssand ayn Hilf finddn, indem däßst yn dyr Faudung :help aynn Auerwerd naachstöllst und istig nit vergisst. Pröblt dös: :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 7.2: ERSTÖLL AYN GIN-SCHRIPF ** Mutz önn Wimm mit de einbautn Faehigkeitn auf. ** Dyr Wimm besitzt ayn Wösn Schäftungen, wo über n Urwimm aushingeend, aber de meerern dyrvon seind in dyr Vorgaab ausgschaltt. Dyrmitst meerer aus n Wimm ausherholst, erstöllst ayn "vimrc"-Dautticht. 1. Lög ayn "vimrc"-Dautticht an; dös geet ie naach Betribsgebäu verschidn: :e ~/.vimrc für s Unix :e $VIM/_vimrc bei n Fenstl 2. Ietz lis önn Inhalt von dyr Beispil-"vimrc"-Dautticht ein: :r $VIMRUNTIME/vimrc_example.vim 3. Speichert de Dautticht mit: :w 4. Bei n naehstn Gin von n Wimm ist aft d Füegnussvürherhöbung zuegschalttn. Du kanst dyr allss eyn dö Dautticht einhinschreibn, wasst bständig habn willst. Meerer dyrzue erfarst unter: :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Letzn 7.3: VERGÖNTZN ** Befelhszeilnvergöntzung mit d und ** 1. Vergwiß di, däß dyr Wimm nit auf n Urwimm-"Glais" fart: :set nocp 2. Schaug naach, wölcherne Dauttichtn däß s in n Verzaichniss geit: :!ls older :!dir 3. Zipf önn Anfang von ayner Faudung: :e 4. Druck d , und dyr Wimm zaigt ayn Listn von Faudungen, wo mit "e" angeend. 5. Druck , und dyr Wimm vervollstöndigt önn Faudungsnam zo ":edit". 6. Füeg ayn Laerzaichen und önn Anfang von ayner besteehetn Dautticht an: :edit DAU 7. Druck . Dyr Wimm vergöntzt önn Nam, dös haisst, wenn yr aindeuttig ist. Anmörkung: D Vergöntzung geit s für aynn Hauffen Faudungen. Versuech ainfach d und . Bsunders nützlich ist dös bei :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ZAMMENFASSUNG VON DYR LETZN 7 1. Zipf :help oder druck oder , um ayn Hilffenster z öffnen. 2. Zipf :help FAUDUNG , um auf ayn Hilf gan aynn Befelh z kemmen. 3. Zipf w w , um zo n andern Fenster z springen. 4. Zipf :q , um s Hilffenster z schliessn. 5. Erstöll ayn vimrc-Ginschripf zuer Sicherung von deine Mötzneinstöllungen. 6. Druck d , aft däßst naach : ayn Faudung angfangt haast, dyr- mitst mügliche Vergöntzungen anzaigt kriegst. Druck für ain Vervollstöndigung yllain. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dös wär ietzet s End von n Wimmschainer. Gangen ist s daa drum, aynn kurtzn und bündignen Überblik über s Blat WIMM z lifern, netty vil gnueg, däß myn für s Eerste wirklich öbbs dyrmit anfangen kan. Dyrmit ist s aber auf kain Weitn non nit taan; dyr Wimm haat schoon non vil meerer auf Lager. Lis als Naehsts aynmaal s Benutzerhandbuech: :help user-manual Zo n Weiterlösn und Weiterlernen wör dös Buech daader zo n Empfelhen: Vim - Vi Improved - von n OUALLINE Steve Verlaag: New Riders Dös ist dös eerste Buech, wo ganz yn n Wimm gwidmt ist, netty dös Grechte für Anfönger. Es haat ayn Wösn Beispiler und aau Bilder drinn. See http://iccf-holland.org/click5.html Dös folgete Buech ist schoon ölter und meerer über n Urwimm als wie über n Wimm, aber aau zo n Empfelhen: Textbearbeitung mit dem vi-Editor - von dyr LAMB Linda und n ROBBINS Arnold - Verlaag O'Reilly - Buechlaittzal (ISBN): 3897211262 In dönn Buech kan myn fast allss finddn, was myn mit n Urwimm angeen mecht. De söxte Ausgaab enthaltt aau schoon öbbs über n Wimm. Als ietzunde Bezugniss für d Fassung 7 und ayn pfrenge Einfüerung dient dös folgete Buech: vim ge-packt von n WOBST Reinhard mitp-Verlaag, Buechlaittzal 978-3-8266-1781-2 Trotz dyr recht pfrengen Darstöllung ist s durch seine viln nützlichnen Bei- spiler aau für Einsteiger grad grecht. Probhaeupster und de Beispilschripfer seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html Verfasst habnd dönn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entwürff, wo dyr SMITH Charles von dyr Kolraader Allschuel (Colorado State University) zuer Verfüegung gstöllt haat. Gundpost: bware@mines.colorado.edu Für n Wimm haat n dyr MOOLENAAR Bram barechtt. De bairische Übersötzung stammt von n HELL Sepp 2009, ayn Weeng überarechtt 2011. Sein Gundpostbrächt ist sturmibund@t-online.de ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!#ppvim80/tutor/tutor.canu[=============================================================================== = B e n v i n g u t s a l t u t o r d e l V I M - Versió 1.5 = =============================================================================== El Vim és un editor potent i té moltes ordres, massa com per a explicar-les totes un tutor com aquest. Aquest tutor està pensat per a ensenyar les ordres bàsiques que us permetin fer servir el Vim com a editor de propòsit general. El temps aproximat de completar el tutor és d'uns 25 o 30 minuts depenent de quant temps dediqueu a experimentar. Feu una còpia d'aquest fitxer per a practicar-hi (si heu començat amb el programa vimtutor això que esteu llegint ja és una còpia). És important recordar que aquest tutor està pensat per a ensenyar practicant, és a dir que haureu d'executar les ordres si les voleu aprendre. Si només llegiu el text el més probable és que les oblideu. Ara assegureu-vos que la tecla de bloqueig de majúscules no està activada i premeu la tecla j per a moure el cursor avall, fins que la lliçó 1.1 ocupi completament la pantalla. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 1.1: MOURE EL CURSOR ** Per a moure el cursor premeu les tecles h, j, k, l tal com s'indica. ** ^ k Pista: La h és a l'esquerra i mou el cursor cap a l'esquerra. < h l > La l és a la dreta i mou el cursor cap a la dreta. j La j sembla una fletxa cap avall. v 1. Moveu el cursor per la pantalla fins que us sentiu confortables. 2. Mantingueu premuda la tecla avall (j) una estona. ---> Ara ja sabeu com moure-us fins a la següent lliçó. 3. Usant la tecla avall, aneu a la lliçó 1.2. Nota: Si no esteu segurs de la tecla que heu premut, premeu per a tornar al mode Normal. Llavors torneu a teclejar l'ordre que volíeu. Nota: Les tecles de moviment del cursor (fletxes) també funcionen. Però usant hjkl anireu més ràpid un cop us hi hagueu acostumant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 1.2: ENTRAR I SORTIR DEL VIM !! NOTA: Abans de seguir els passos següents llegiu *tota* la lliçó!! 1. Premeu (per a estar segurs que esteu en el mode Normal). 2. Teclegeu: :q! . ---> Amb això sortireu de l'editor SENSE desar els canvis que hagueu pogut fer. Si voleu desar els canvis teclegeu: :wq 3. Quan vegeu l'introductor de l'intèrpret escriviu l'ordre amb la qual heu arribat a aquest tutor. Podria ser: vimtutor O bé: vim tutor ---> 'vim' és l'editor vim, i 'tutor' és el fitxer que voleu editar. 4. Si heu memoritzat les ordres, feu els passos anteriors, de l'1 al 3, per a sortir i tornar a entrar a l'editor. Llavors moveu el cursor avall fins a la lliçó 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 1.3: EDITAR TEXT - ESBORRAR ** En mode Normal premeu x per a esborrar el caràcter sota el cursor. ** 1. Moveu el cursor fins a la línia que hi ha més avall senyalada amb --->. 2. Poseu el cursor a sobre el caràcter que cal esborrar per a corregir els errors. 3. Premeu la tecla x per a esborrar el caràcter. 4. Repetiu els passos 2 i 3 fins que la frase sigui correcta. ---> Unna vaaca vva salttar perr sobbree la llluna. 5. Ara que la línia és correcta, aneu a la lliçó 1.4. NOTA: Mentre aneu fent no tracteu de memoritzar, practiqueu i prou. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 1.4: EDITAR TEXT - INSERIR ** En mode Normal premeu i per a inserir text. ** 1. Moveu el cursor avall fins la primera línia senyalada amb --->. 2. Per a fer la primera línia igual que la segona poseu el cursor sobre el primer caràcter POSTERIOR al text que s'ha d'inserir. 3. Premeu la tecla i i escriviu el text que falta. 4. Quan hageu acabat premeu per tornar al mode Normal. Repetiu els passos 2, 3 i 4 fins a corregir la frase. ---> Falten carctrs en aquesta . ---> Falten alguns caràcters en aquesta línia. 5. Quan us trobeu còmodes inserint text aneu al sumari de baix. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 1 SUMARI 1. El cursor es mou amb les fletxes o bé amb les tecles hjkl. h (esquerra) j (avall) k (amunt) l (dreta) 2. Per a entrar al Vim (des de l'intèrpret) escriviu: vim FITXER 3. Per a sortir teclegeu: :q! per a descartar els canvis. O BÉ teclegeu: :wq per a desar els canvis. 4. Per a esborrar el caràcter de sota el cursor en el mode Normal premeu: x 5. Per a inserir text on hi ha el cursor, en mode Normal, premeu: i escriviu el text NOTA: La tecla us porta al mode Normal o cancel·la una ordre que estigui a mitges. Ara continueu a la lliçó 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 2.1: ORDRES PER ESBORRAR ** Teclegeu dw per a esborrar fins al final d'una paraula. ** 1. Premeu per estar segurs que esteu en mode normal. 2. Moveu el cursor avall fins a la línia senyalada amb --->. 3. Moveu el cursor fins al principi de la paraula que s'ha d'esborrar. 4. Teclegeu dw per a fer desaparèixer la paraula. NOTA: Les lletres dw apareixeran a la línia de baix de la pantalla mentre les aneu escrivint. Si us equivoqueu premeu i torneu a començar. ---> Hi ha algunes paraules divertit que no pertanyen paper a aquesta frase. 5. Repetiu el passos 3 i 4 fins que la frase sigui correcta i continueu a la lliçó 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 2.2: MÉS ORDRES PER ESBORRAR ** Escriviu d$ per a esborrar fins al final de la línia. ** 1. Premeu per a estar segurs que esteu en el mode Normal. 2. Moveu el cursor avall fins a la línia senyalada amb --->. 3. Moveu el cursor fins al final de la línia correcta (DESPRÉS del primer . ). 4. Teclegeu d$ per a esborrar fins al final de la línia. ---> Algú ha escrit el final d'aquesta línia dos cops. línia dos cops. 5. Aneu a la lliçó 2.3 per a entendre què està passant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 2.3: SOBRE ORDRES I OBJECTES El format de l'ordre d'esborrar d és el següent: [nombre] d objecte O BÉ d [nombre] objecte On: nombre - és el nombre de cops que s'ha d'executar (opcional, omissió=1). d - és l'ordre d'esborrar. objecte - és la cosa amb la qual operar (llista a baix). Una petita llista d'objectes: w - des del cursor fins al final de la paraula, incloent l'espai. e - des del cursor fins al final de la paraula, SENSE incloure l'espai. $ - des del cursor fins al final de la línia. NOTA: Per als aventurers: si teclegeu només l'objecte, en el mode Normal, sense cap ordre, el cursor es mourà tal com està descrit a la llista d'objectes. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 2.4: UNA EXCEPCIÓ A 'ORDRE-OBJECTE' ** Teclegeu dd per a esborrar tota la línia. ** Com que molt sovint s'han d'eliminar línies senceres, els programadors del Vi van creure que seria més convenient teclejar dd per a esborrar tota la línia. 1. Moveu el cursor a la segona línia de la frase de baix. 2. Teclegeu dd per a esborrar la línia. 3. Ara aneu a la quarta línia. 4. Teclegeu 2dd per a esborrar dues línies (recordeu nombre-ordre-objecte). 1) Les roses són vermelles, 2) El fang és divertit, 3) Les violetes són blaves, 4) Tinc un cotxe, 5) Els rellotges diuen l'hora, 6) El sucre és dolç, 7) Igual que tu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 2.5: L'ORDRE DESFER ** Premeu u per a desfer els canvis, U per a restaurar tota la línia. ** 1. Moveu el cursor sobre el primer error de línia de baix senyalada amb ---> 2. Premeu x per a esborrar el caràcter no desitjat. 3. Ara premeu u per a desfer l'última ordre executada. 4. Aquest cop corregiu tots els errors de la línia amb l'ordre x. 5. Ara premeu U per a restablir la línia al seu estat original. 6. Ara premeu u uns quants cops per a desfer U i les ordres anteriors. 7. Ara premeu CONTROL-R (les dues tecles al mateix temps) uns quants cops per a refer les ordres. ---> Correegiu els errors d'aqquesta línia i dessfeu-los aamb desfer. 8. Aquestes ordres són molt útils. Ara aneu al sumari de la lliçó 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 2 SUMARI 1. Per a esborrar del cursor al final de la paraula teclegeu: dw 2. Per a esborrar del cursor al final de la línia teclegeu: d$ 3. Per a esborrar una línia sencera teclegeu: dd 4. El format de qualsevol ordre del mode Normal és: [nombre] ordre objecte O BÉ ordre [nombre] objecte on: nombre - és quants cops repetir l'ordre ordre - és què fer, com ara d per esborrar objecte - és amb què s'ha d'actuar, com ara w (paraula), $ (fins a final de línia), etc. 5. Per a desfer les accions anteriors premeu: u Per a desfer tots el canvis en una línia premeu: U Per a desfer l'ordre desfer premeu: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 3.1: L'ORDRE 'POSAR' ** Premeu p per a inserir l'última cosa que heu esborrat després del cursor. ** 1. Moveu el cursor a la primera línia de llista de baix. 2. Teclegeu dd per a esborrar la línia i desar-la a la memòria. 3. Moveu el cursor a la línia ANTERIOR d'on hauria d'anar. 4. En mode Normal, premeu p per a inserir la línia. 5. Repetiu els passos 2, 3 i 4 per a ordenar les línies correctament. d) Pots aprendre tu? b) Les violetes són blaves, c) La intel·ligència s'aprèn, a) Les roses són vermelles, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 3.2: L'ORDRE SUBSTITUIR ** Premeu r i un caràcter per a substituir el caràcter de sota el cursor. ** 1. Moveu el cursor a la primera línia de sota senyalada amb --->. 2. Moveu el cursor a sobre del primer caràcter equivocat. 3. Premeu r i tot seguit el caràcter correcte per a corregir l'error. 4. Repetiu els passos 2 i 3 fins que la línia sigui correcta. ---> Quen van escroure aquerta línia, algh va prémer tikles equivocades! ---> Quan van escriure aquesta línia, algú va prémer tecles equivocades! 5. Ara continueu a la lliçó 3.2. NOTA: Recordeu que heu de practicar, no memoritzar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 3.3: L'ORDRE CANVIAR ** Per a canviar una part o tota la paraula, escriviu cw . ** 1. Moveu el cursor a la primera línia de sota senyalada amb --->. 2. Poseu el cursor sobre la u de 'lughc'. 3. Teclegeu cw i corregiu la paraula (en aquest cas, escrivint 'ínia'.) 4. Premeu i aneu al següent error. 5. Repetiu els passos 3 i 4 fins que les dues frases siguin iguals. ---> Aquesta lughc té algunes paradskl que s'han de cdddf. ---> Aquesta línia té algunes paraules que s'han de canviar. Noteu que cw no només canvia la paraula, també us posa en mode d'inserció. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 3.4: MÉS CANVIS AMB c ** L'ordre canviar s'usa amb els mateixos objectes que l'ordre esborrar. ** 1. L'ordre canviar funciona igual que la d'esborrar. El format és: [nombre] c objecte O BÉ c [nombre] objecte 2. Els objectes són els mateixos, w (paraula), $ (final de línia), etc. 3. Moveu el cursor fins la primera línia senyalada amb --->. 4. Avanceu fins al primer error. 5. Premeu c$ per fer la línia igual que la segona i premeu . ---> El final d'aquesta línia necessita canvis per ser igual que la segona. ---> El final d'aquesta línia s'ha de corregir amb l'ordre c$. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 3 SUMARI 1. Per a tornar a posar el text que heu esborrat, premeu p . Això posa el text esborrat DESPRÉS del cursor (si heu esborrat una línia anirà a parar a la línia SEGÜENT d'on hi ha el cursor). 2. Per a substituir el caràcter de sota el cursor, premeu r i tot seguit el caràcter que ha de reemplaçar l'original. 3. L'ordre canviar permet canviar l'objecte especificat, des del cursor fins el final de l'objecte. Per exemple, cw canvia el que hi ha des del cursor fins al final de la paraula, i c$ fins al final de línia. 4. El format de l'ordre canviar és: [nombre] c objecte O BÉ c [nombre] objecte Ara aneu a la següent lliçó. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 4.1: SITUACIÓ I ESTAT DEL FITXER ** Premeu CTRL-g per a veure la situació dins del fitxer i el seu estat. Premeu SHIFT-g per a anar a una línia determinada. ** Nota: No proveu res fins que hagueu llegit TOTA la lliçó!! 1. Mantingueu premuda la tecla Control i premeu g . A la part de baix de la pàgina apareixerà un línia amb el nom del fitxer i la línia en la qual us trobeu. Recordeu el número de la línia pel Pas 3. 2. Premeu Shift-g per a anar al final de tot del fitxer. 3. Teclegeu el número de la línia on éreu i després premeu Shift-g. Això us tornarà a la línia on éreu quan heu premut per primer cop Ctrl-g. (Quan teclegeu el número NO es veurà a la pantalla.) 4. Ara executeu els passos de l'1 al 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 4.2: L'ORDRE CERCAR ** Premeu / seguit de la frase que vulgueu cercar. ** 1. En el mode Normal premeu el caràcter / . Noteu que el cursor apareix a la part de baix de la pantalla igual que amb l'ordre : . 2. Ara escriviu 'errroor' . Aquesta és la paraula que voleu cercar. 3. Per a tornar a cercar la mateixa frase, premeu n . Per a cercar la mateixa frase en direcció contraria, premeu Shift-n . 4. Si voleu cercar una frase en direcció ascendent, useu l'ordre ? en lloc de /. ---> "errroor" no és com s'escriu error; errroor és un error. Nota: Quan la cerca arribi al final del fitxer continuarà a l'inici. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 4.3: CERCA DE PARÈNTESIS ** Premeu % per cercar el ), ], o } corresponent. ** 1. Poseu el cursor a qualsevol (, [, o { de la línia senyalada amb --->. 2. Ara premeu el caràcter % . 3. El cursor hauria d'anar a la clau o parèntesis corresponent. 4. Premeu % per a tornar el cursor al primer parèntesi. ---> Això ( és una línia amb caràcters (, [ ] i { } de prova. )) Nota: Això és molt útil per a trobar errors en programes informàtics! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 4.4: UNA MANERA DE CORREGIR ERRORS ** Escriviu :s/vell/nou/g per a substituir 'vell' per 'nou'. ** 1. Moveu el cursor a la línia de sota senyalada amb --->. 2. Escriviu :s/laa/la . Aquesta ordre només canvia la primera coincidència que es trobi a la línia. 3. Ara escriviu :s/laa/la/g per a fer una substitució global. Això canviarà totes les coincidències que es trobin a la línia. ---> laa millor època per a veure laa flor és laa primavera. 4. Per a canviar totes les coincidències d'una cadena entre dues línies, escriviu :#,#s/vell/nou/g on #,# són els nombres de les línies. Escriviu :%s/vell/nou/g per a substituir la cadena a tot el fitxer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 4 SUMARI 1. Ctrl-g mostra la posició dins del fitxer i l'estat del mateix. Shift-g us porta al final del fitxer. Un número seguit de Shift-g us porta a la línia corresponent. 2. L'ordre / seguida d'una frase cerca la frase cap ENDAVANT. L'ordre ? seguida d'una frase cerca la frase cap ENDARRERE. Després d'una cerca premeu n per a trobar la pròxima coincidència en la mateixa direcció, o Shift-n per a cercar en la direcció contrària. 3. L'ordre % quan el cursor es troba en un (, ), [, ], {, o } troba la parella corresponent. 4. Per a substituir el primer 'vell' per 'nou' en una línia :s/vell/nou Per a substituir tots els 'vell' per 'nou' en una línia :s/vell/nou/g Per a substituir frases entre les línies # i # :#,#s/vell/nou/g Per a substituir totes les coincidències en el fitxer :%s/vell/nou/g Per a demanar confirmació cada cop afegiu 'c' :%s/vell/nou/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 5.1: COM EXECUTAR UNA ORDRE EXTERNA ** Teclegeu :! seguit d'una ordre externa per a executar-la. ** 1. Premeu el familiar : per a col·locar el cursor a la part de baix de la pantalla. Això us permet entrar una ordre. 2. Ara teclegeu el caràcter ! (signe d'exclamació). Això us permet executar qualsevol ordre de l'intèrpret del sistema. 3. Per exemple, escriviu ls i tot seguit premeu . Això us mostrarà el contingut del directori, tal com si estiguéssiu a la línia d'ordres. Proveu :!dir si ls no funciona. Nota: D'aquesta manera és possible executar qualsevol ordre externa. Nota: Totes les ordres : s'han d'acabar amb la tecla ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 5.2: MÉS SOBRE L'ESCRIPTURA DE FITXERS ** Per a desar els canvis fets, escriviu :w FITXER. ** 1. Escriviu :!dir o bé :!ls per a obtenir un llistat del directori. Ja sabeu que heu de prémer després d'això. 2. Trieu un nom de fitxer que no existeixi, com ara PROVA. 3. Ara feu: :w PROVA (on PROVA és el nom que heu triat.) 4. Això desa el text en un fitxer amb el nom de PROVA. Per a comprovar-ho escriviu :!dir i mireu el contingut del directori. Note: Si sortiu del Vim i entreu una altra vegada amb el fitxer PROVA, el fitxer serà una còpia exacta del tutor que heu desat. 5. Ara esborreu el fitxer teclejant (MS-DOS): :!del PROVA o bé (Unix): :!rm PROVA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 5.3: UNA ORDRE SELECTIVA PER A DESAR ** Per a desar una part del fitxer, escriviu :#,# w FITXER ** 1. Un altre cop, feu :!dir o :!ls per a obtenir un llistat del directori i trieu un nom de fitxer adequat com ara PROVA. 2. Moveu el cursor a dalt de tot de la pàgina i premeu Ctrl-g per saber el número de la línia. RECORDEU AQUEST NÚMERO! 3. Ara aneu a baix de tot de la pàgina i torneu a prémer Ctrl-g. RECORDEU AQUEST NÚMERO TAMBÉ! 4. Per a desar NOMÉS una secció en un fitxer, escriviu :#,# w PROVA on #,# són els dos números que heu recordat (dalt, baix) i PROVA el nom del fitxer. 5. Comproveu que el fitxer nou hi sigui amb :!dir però no l'esborreu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 5.4: OBTENIR I AJUNTAR FITXERS ** Per a inserir el contingut d'un fitxer, feu :r FITXER ** 1. Assegureu-vos, amb l'ordre :!dir , que el fitxer PROVA encara hi és. 2. Situeu el cursor a dalt de tot d'aquesta pàgina. NOTA: Després d'executar el Pas 3 veureu la lliçó 5.3. Tireu cap avall fins a aquesta lliçó un altre cop. 3. Ara obtingueu el fitxer PROVA amb l'ordre :r PROVA on PROVA és el nom del fitxer. NOTA: El fitxer que obtingueu s'insereix en el lloc on hi hagi el cursor. 4. Per a comprovar que s'ha obtingut el fitxer tireu enrere i mireu com ara hi ha dues còpies de la lliçó 5.3, l'original i la del fitxer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 5 SUMARI 1. :!ordre executa una ordre externa. Alguns exemples útils: (MS-DOS) (Unix) :!dir :!ls - mostra un llistat del directori :!del FITXER :!rm FITXER - esborra el fitxer FITXER 2. :w FITXER escriu el fitxer editat al disc dur, amb el nom FITXER. 3. :#,#w FITXER desa les línies de # a # en el fitxer FITXER. 4. :r FITXER llegeix el fitxer FITXER del disc dur i l'insereix en el fitxer editat a la posició on hi ha el cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 6.1: L'ORDRE OBRIR ** Premeu o per a obrir una línia i entrar en mode inserció. ** 1. Moveu el cursor a la línia de sota senyalada amb --->. 2. Premeu o (minúscula) per a obrir una línia a BAIX del cursor i situar-vos en mode d'inserció. 3. Copieu la línia senyalada amb ---> i premeu per a tornar al mode normal. ---> Després de prémer o el cursor se situa a la línia nova en mode inserció. 4. Per a obrir una línia a SOBRE del cursor, premeu la O majúscula, en lloc de la minúscula. Proveu-ho amb la línia de sota. Obriu una línia sobre aquesta prement Shift-o amb el cursor en aquesta línia. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 6.2: L'ORDRE AFEGIR ** Premeu a per a afegir text DESPRÉS del cursor. ** 1. Moveu el cursor al final de la primera línia de sota senyalada amb ---> prement $ en el mode Normal. 2. Premeu la lletra a (minúscula) per a afegir text DESPRÉS del caràcter sota el cursor. (La A majúscula afegeix text al final de la línia.) Nota: Així s'evita haver de prémer i , l'últim caràcter, el text a inserir, la tecla , cursor a la dreta, i finalment x , només per afegir text a final de línia. 3. Ara completeu la primera línia. Tingueu en compte que aquesta ordre és exactament igual que la d'inserir, excepte pel que fa al lloc on s'insereix el text. ---> Aquesta línia us permetrà practicar ---> Aquesta línia us permetrà practicar afegir text a final de línia. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 6.3: UNA ALTRA MANERA DE SUBSTITUIR ** Teclegeu una R majúscula per a substituir més d'un caràcter. ** 1. Moveu el cursor a la línia de sota senyalada amb --->. 2. Poseu el cursor al principi de la primera paraula que és diferent respecte a la segona línia senyalada amb ---> (la paraula "l'última"). 3. Ara premeu R i substituïu el que queda de text a la primera línia escrivint sobre el text vell, per a fer-la igual que la segona. ---> Per a fer aquesta línia igual que l'última useu les tecles. ---> Per a fer aquesta línia igual que la segona, premeu R i el text nou. 4. Tingueu en compte que en prémer per a sortir, el text que no s'hagi alterat es manté. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lliçó 6.4: ESTABLIR OPCIONS ** Feu que les ordres cercar o substituir ignorin les diferències entre majúscules i minúscules ** 1. Cerqueu la paraula 'ignorar' amb: /ignorar Repetiu-ho uns quants cops amb la tecla n. 2. Establiu l'opció 'ic' (ignore case) escrivint: :set ic 3. Ara cerqueu 'ignorar' un altre cop amb la tecla n. Repetiu-ho uns quants cops més. 4. Establiu les opcions 'hlsearch' i 'incsearch': :set hls is 5. Ara torneu a executar una ordre de cerca, i mireu què passa: /ignorar 6. Per a treure el ressaltat dels resultats, feu: :nohlsearch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 6 SUMARI 1. L'ordre o obre una línia a SOTA la del cursor i mou el cursor a la nova línia, en mode Inserció. La O majúscula obre la línia a SOBRE la que hi ha el cursor. 2. Premeu una a per a afegir text DESPRÉS del caràcter a sota del cursor. La A majúscula afegeix automàticament el text a final de línia. 3. L'ordre R majúscula us posa en mode substitució fins que premeu . 4. Escriviu ":set xxx" per a establir l'opció "xxx" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLIÇÓ 7: ORDRES D'AJUDA ** Utilitzeu el sistema intern d'ajuda ** El Vim té un extens sistema d'ajuda. Per a llegir una introducció proveu una d'aquestes tres coses: - premeu la tecla (si la teniu) - premeu la tecla (si la teniu) - escriviu :help Teclegeu :q per a tancar la finestra d'ajuda. Podeu trobar ajuda sobre pràcticament qualsevol tema passant un argument a l'ordre ":help". Proveu el següent (no oblideu prémer ): :help w :help c_ l tipka je desno i pomie kursor desno. j j izgleda kao strelica usmjerena dolje. v 1. Pomiite kursor po ekranu dok se ne naviknete na koritenje. 2. Drite tipku (j) pritisnutom. Sada znate kako doi do sljedee lekcije. 3. Koristei tipku j prijeite na sljedeu lekciju 1.2. NAPOMENA: Ako niste sigurni to ste zapravo pritisnuli uvijek koristite tipku kako bi preli u Normal mod i onda pokuajte ponovno. NAPOMENA: Kursorske tipke rade isto. Koritenje hjkl tipaka je znatno bre, nakon to se jednom naviknete na njihovo koritenje. Stvarno! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.2: IZLAZ IZ VIM-a !! UPOZORENJE: Prije izvoenja bilo kojeg koraka, proitajte cijelu lekciju!! 1. Pritisnite tipku (Vim je sada u Normal modu). 2. Otipkajte: :q! . Izlaz iz editora, GUBE se sve napravljene promjene. 3. Kada se pojavi ljuska, utipkajte naredbu koja je pokrenula ovaj prirunik: vimtutor 4. Ako ste upamtili ove korake, izvrite ih redom od 1 do 3 kako bi ponovno pokrenuli editor. NAPOMENA: :q! ponitava sve promjene koje ste napravili. U sljedeim lekcijama nauit e te kako promjene sauvati. 5. Pomaknite kursor na Lekciju 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.3: PROMJENA TEKSTA - BRISANJE ** Pritisnite x za brisanje znaka pod kursorom. ** 1. Pomaknite kursor na liniju oznaenu s --->. 2. Kako bi ste ispravili pogreke, pomiite kursor dok se ne bude nalazio na slovu kojeg trebate izbrisati. 3. Pritisnite tipku x kako bi uklonili neeljeno slovo. 4. Ponovite korake od 2 do 4 dok ne ispravite sve pogreke. ---> KKKravaa jee presskoila mmjeseccc. 5. Nakon to ispravite liniju, prijeite na lekciju 1.4. NAPOMENA: Koristei ovaj prirunik ne pokuavajte pamtiti ve uite primjenom. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE ** Pritisnite i za ubacivanje teksta ispred kursora. ** 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. 2. Kako bi napravili prvu liniju istovjetnoj drugoj, pomaknite kursor na prvi znak POSLIJE kojeg e te utipkati potreban tekst. 3. Pritisnite i te utipkajte potrebne nadopune. 4. Nakon to ispravite pogreku pritisnite kako bi vratili Vim u Normal mod. Ponovite korake od 2 do 4 kako bi ispravili sve pogreke. ---> Nedje no teka od v lin. ---> Nedostaje neto teksta od ove linije. 5. Prijeite na sljedeu lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE ** Pritisnite A za dodavanje teksta. ** 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. Nije vano na kojem se slovu nalazi kursor na toj liniji. 2. Pritisnite A i napravite potrebne promjene. 3. Nakon to ste dodali tekst, pritisnite za povratak u Normal mod. 4. Pomaknite kursor na drugu liniju oznaenu s ---> i ponovite korake 2 i 3 dok ne popravite tekst. ---> Ima neto teksta koji nedostaje n Ima neto teksta koji nedostaje na ovoj liniji. ---> Ima neto teksta koji ne Ima neto teksta koji nedostaje ba ovdje. 5. Prijeite na lekciju 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1.6: PROMJENA DATOTEKE ** Koristite :wq za spremanje teksta i naputanje Vim-a. ** !! UPOZORENJE: Prije izvravanja bilo kojeg koraka, proitajte lekciju!! 1. Izaite iz programa kao sto ste napravili u lekciji 1.2: :q! 2. Iz ljuske utipkajte sljedeu naredbu: vim tutor 'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju elite ureivati. Koristite datoteku koju imate ovlasti mijenjati. 3. Ubacite i izbriite tekst kao to ste to napravili u lekcijama prije. 4. Sauvajte promjenjeni tekst i izaite iz Vim-a: :wq 5. Ponovno pokrenite vimtutor i nastavite itati saetak koji sljedi. 6. Nakon sto proitate gornje korake i u potpunosti ih razumijete: izvrite ih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 1 SAETAK 1. Kursor se pomie strelicama ili pomou hjkl tipaka. h (lijevo) j (dolje) k (gore) l (desno) 2. Pokretanje Vim-a iz ljuske: vim IME_DATOTEKE 3. Izlaz: :q! sve promjene su izgubljene. ILI: :wq promjene su sauvane. 4. Brisanje znaka na kojem se nalazi kursor: x 5. Ubacivanja ili dodavanje teksta: i utipkajte tekst unos ispred kursora A utipkajte tekst dodavanje na kraju linije NAPOMENA: Tipkanjem tipke prebacuje Vim u Normal mod i prekida neeljenu ili djelomino zavrenu naredbu. Nastavite itati Lekciju 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.1: NAREDBE BRISANJA ** Tipkajte dw za brisanje rijei. ** 1. Pritisnite kako bi bili sigurni da je Vim u Normal modu. 2. Pomaknite kursor na liniju oznaenu s --->. 3. Pomaknite kursor na poetak rijei koju treba izbrisati. 4. Otipkajte dw kako bi uklonili rije. NAPOMENA: Vim e prikazati slovo d na zadnjoj liniji kad ga otipkate. Vim eka da otipkate w . Ako je prikazano neko drugo slovo, krivo ste otipkali; pritisnite i pokuajte ponovno. ---> Neke rijei smijeno ne pripadaju na papir ovoj reenici. 5. Ponovite korake 3 i 4 dok ne ispravite reenicu; prijeite na Lekciju 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.2: JO BRISANJA ** Otipkajte d$ za brisanje znakova do kraja linije. ** 1. Pritisnite kako bi bili sigurni da je Vim u Normal modu. 2. Pomaknite kursor na liniju oznaenu s --->. 3. Pomaknite kursor do kraja ispravne reenice (POSLJE prve . ). 4. Otipkajte d$ kako bi izbrisali sve znakove do kraja linije. ---> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput. 5. Prijeite na Lekciju 2.3 za bolje objanjenje. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta. Oblik naredbe brisanja sa d operatorom je sljedei: d pokret Pri emu je: d - operator brisanja. pokret - ono na emu e se operacija izvravati (navedeno u nastavku). Kratka lista pokreta: w - sve do poetka sljedee rijei, NE UKLJUUJUI prvo slovo. e - sve do kraja trenutane rijei, UKLJUUJUI zadnje slovo. $ - sve do kraje linije, UKLJUUJUI zadnje slovo. Tipkanjem de e se brisati od kursora do kraja rijei. NAPOMENA: Pritiskajui samo pokrete dok ste u Normal modu bez operatora e pomicati kursor kao to je navedeno. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.4: KORITENJE BROJANJA ZA POKRETE ** Tipkanjem nekog broja prije pokreta, pokret se izvrava toliko puta. ** 1. Pomaknite kursor na liniju oznaenu s --->. 2. Otipkajte 2w da pomaknete kursor dvije rijei naprijed. 3. Otipkajte 3e da pomaknete kursor na kraj tree rijei naprijed. 4. Otipkajte 0 (nulu) da pomaknete kursor na poetak linije. 5. Ponovite korake 2 i 3 s nekim drugim brojevima. ---> Reenica sa rijeima po kojoj moete pomicati kursor. 6. Prijeite na Lekciju 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.5: KORITENJE BROJANJA ZA VEE BRISANJE ** Tipkanje broja N s operatorom ponavlja ga N-puta. ** U kombinaciji operatora brisanja i pokreta spomenutih iznad ubacujete broj prije pokreta kako bi izbrisali vie znakova: d broj pokret 1. Pomaknite kursor na prvo slovo u rijei sa VELIKIM SLOVIMA oznaenu s --->. 2. Otipkajte 2dw da izbriete dvije rijei sa VELIKIM SLOVIMA 3. Ponovite korake 1 i 2 sa razliitim brojevima da izbriete uzastopne rijei sa VELIKIM SLOVIMA sa samo jednom naredbom. ---> ova ABC DE linija FGHI JK LMN OP rijei je RS TUVZ popravljena. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.6: OPERIRANJE NAD LINIJAMA ** Otipkajte dd za brisanje cijele linije. ** Zbog uestalosti brisanja cijelih linija, dizajneri Vi-a su odluili da je lake brisati linije tipkanjem d dvaput. 1. Pomaknite kursor na drugu liniju u donjoj kitici. 2. Otipkajte dd kako bi izbrisali liniju. 3. Pomaknite kursor na etvrtu liniju. 4. Otipkajte 2dd kako bi izbrisali dvije linije. ---> 1) Rue su crvene, ---> 2) Plaa je super, ---> 3) Ljubice su plave, ---> 4) Imam auto, ---> 5) Satovi ukazuju vrijeme, ---> 6) eer je sladak ---> 7) Kao i ti. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2.7: NAREDBA PONITENJA ** Pritisnite u za ponitenje zadnje naredbe, U za cijelu liniju. ** 1. Pomaknite kursor na liniju oznaenu s ---> i postavite kursor na prvu pogreku. 2. Otipkajte x kako bi izbrisali prvi neeljeni znak. 3. Otipkajte u kako bi ponitili zadnju izvrenu naredbu. 4. Ovaj put ispravite sve pogreke na liniji koristei x naredbu. 5. Sada utipkajte veliko U kako bi ponitili sve promjene na liniji, vraajui je u prijanje stanje. 6. Sada utipkajte u nekoliko puta kako bi ponitili U i prijanje naredbe. 7. Sada utipkajte CTRL-R (drei CTRL tipku pritisnutom dok ne pritisnete R) nekoliko puta kako bi vratili promjene (ponitili ponitenja). ---> Poopravite pogreke nna ovvoj liniji ii poonititeee ih. 8. Vrlo korisne naredbe. Prijeite na saetak Lekcije 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 2 SAETAK 1. Brisanje od kursora do sljedee rijei: dw 2. Brisanje od kursora do kraja linije: d$ 3. Brisanje cijele linije: dd 4. Za ponavljanje pokreta prethodite mu broj: 2w 5. Oblik naredbe mijenjanja: operator [broj] pokret gdje je: operator - to napraviti, npr. d za brisanje [broj] - neobavezan broj ponavljanja pokreta pokret - kretanje po tekstu po kojem se operira, kao to je: w (rije), $ (kraj linije), itd. 6. Postavljanje kursora na poetak linije: 0 7. Za ponitenje prethodnih promjena, pritisnite: u (malo u) Za ponitenje svih promjena na liniji, pritisnite: U (veliko U) Za vraanja promjena, utipkajte: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.1: NAREDBA POSTAVI ** p za unos prethodno izbrisanog teksta iza kursora. ** 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. 2. Otipkajte dd kako bi izbrisali liniju i spremili je u Vim registar. 3. Pomaknite kursor na liniju c), IZNAD linije koju trebate unijeti. 4. Otipkajte p kako bi postavili liniju ispod kursora. 5. Ponovite korake 2 do 4 kako bi postavili sve linije u pravilnom rasporedu. ---> d) Moe li i ti nauiti? ---> b) Ljubice su plave, ---> c) Inteligencija je nauena, ---> a) Rue su crvene, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.2: NAREDBA PROMJENE ** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . ** 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. 2. Pomaknite kursor tako da se nalazi na prvoj pogreci. 3. Otipkajte r i nakon toga ispravan znak na tom mjestu. 4. Ponovite korake 2 i 3 sve dok prva linije ne bude istovjetna drugoj. ---> Kede ju ovu limija tupjana, natko je protuskao kruve tupke! ---> Kada je ova linija tipkana, netko je pritiskao krive tipke! 5. Prijeite na Lekciju 3.2. NAPOMENA: Prisjetite da trebate uiti vjebanjem, ne pamenjem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.3: OPERATOR MIJENJANJA ** Za mijenjanje do kraja rijei, istipkajte ce . ** 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. 2. Postavite kursor na a u lackmb. 3. Otipkajte ce i ispravite rije (u ovom sluaju otipkajte inija ). 4. Pritisnite i pomaknite kursor na sljedei znak kojeg je potrebno ispraviti. 5. Ponovite korake 3 i 4 sve dok prva reenica ne postane istovjetna drugoj. ---> Ova lackmb ima nekoliko rjlcah koje trfcb mijdmlfsz. ---> Ova linija ima nekoliko rijei koje treba mijenjati. Primijetite da ce brie rije i postavlja Vim u Insert mod. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3.4: JO MIJENJANJA KORITENJEM c ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. ** 1. Operator mijenjanja se koristi na isti nain kao i operator brisanja: c [broj] pokret 2. Pokreti su isti, npr: w (rije) i $ (kraj linije). 3. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. 4. Pomaknite kursor na prvu pogreku. 5. Otipkajte c$ i utipkajte ostatak linije tako da bude istovjetna drugoj te pritisnite . ---> Kraj ove linije treba pomo tako da izgleda kao linija ispod. ---> Kraj ove linije treba ispraviti koritenjem c$ naredbe. NAPOMENA: Moete koristiti Backspace za ispravljanje greaka. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 3 SAETAK 1. Za postavljanje teksta koji je upravo izbrisan, pritisnite p . Ovo postavlja tekst IZA kursora (ako je pak linija izbrisana tekst se postavlja na liniju ispod kursora). 2. Za promjenu znaka na kojem se nalazi kursor, pritisnite r i nakon toga eljeni znak. 3. Operator mijenjanja dozvoljava promjenu teksta od kursora do pozicije do koje dovede pokret. tj. Otipkajte ce za mijenjanje od kursora do kraja rijei, c$ za mijenjanje od kursora do kraja linije. 4. Oblik naredbe mijenjanja: c [broj] pokret Prijeite na sljedeu lekciju. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke. Pritisnite G za pomicanje kursora na neku liniju u datoteci. ** NAPOMENA: Proitajte cijelu lekciju prije izvrenja bilo kojeg koraka!! 1. Drite Ctrl tipku pritisnutom i pritisnite g . Ukratko: CTRL-G. Vim e ispisati poruku na dnu ekrana sa imenom datoteke i pozicijom kursora u datoteci. Zapamtite broj linije za 3. korak. NAPOMENA: Moete vidjeti poziciju kursora u donjem desnom kutu ako je postavka 'ruler' aktivirana (objanjeno u 6. lekciji). 2. Pritisnite G za pomicanje kursora na kraj datoteke. Otipkajte gg za pomicanje kursora na poetak datoteke. 3. Otipkajte broj linije na kojoj ste bili maloprije i zatim G . Kursor e se vratiti na liniju na kojoj se nalazio kada ste otipkali CTRL-G. 4. Ako ste spremni, izvrite korake od 1 do 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.2: NAREDBE TRAENJA ** Otipkajte / i nakon toga izraz kojeg elite traiti. ** 1. U Normal modu otipkajte / znak. Primijetite da se znak pojavio zajedno sa kursorom na dnu ekrana kao kod : naredbe. 2. Sada otipkajte 'grrrreka' . To je rije koju zapravo traite. 3. Za ponovno traenje istog izraza, otipkajte n . Za traenje istog izraza ali u suprotnom smjeru, otipkajte N . 4. Za traenje izraza unatrag, koristite ? umjesto / . 5. Za povratak na prethodnu poziciju koristite CTRL-O (drite Ctrl pritisnutim dok ne pritisnete tipku o). Ponavljajte sve dok se ne vratite na poetak. CTRL-I slino kao CTRL-O ali u suprotnom smjeru. ---> "pogrrrreka" je pogreno; umjesto pogrrrreka treba stajati pogreka. NAPOMENA: Ako se traenjem doe do kraja datoteke nastavit e se od njenog poetka osim ako je postavka 'wrapscan' deaktivirana. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.3: TRAENJE PRIPADAJUE ZAGRADE ** Otipkajte % za pronalazak pripadajue ), ] ili } . ** 1. Postavite kursor na bilo koju od ( , [ ili { otvorenih zagrada u liniji oznaenoj s --->. 2. Otipkajte znak % . 3. Kursor e se pomaknuti na pripadajuu zatvorenu zagradu. 4. Otipkajte % kako bi pomakli kursor na drugu pripadajuu zagradu. 5. Pomaknite kursor na neku od (,),[,],{ ili } i ponovite % naredbu. ---> Linija ( testiranja obinih ( [ uglatih ] i { vitiastih } zagrada.)) NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadajuim zagradama! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4.4: NAREDBE ZAMIJENE ** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. ** 1. Pomaknite kursor na liniju oznaenu s --->. 2. Otipkajte :s/cvr/cvr . Primjetite da ova naredba zamjenjuje samo prvi "cvr" u liniji. 3. Otipkajte :s/cvr/cvr/g . Dodavanje g stavke znai da e se naredba izvriti na cijeloj liniji, zamjenjivanjem svih "cvr" u liniji. ---> i cvri cvri cvrak na voru crne smre. 4. Za zamjenu svih izraza u rasponu dviju linija, otipkajte :#,#s/staro/novo/g #,# su brojevi linije datoteke na kojima te izmeu njih e se izvriti zamjena. Otipkajte :%s/staro/novo/g za zamjenu svih izraza u cijeloj datoteci. Otipkajte :%s/staro/novo/gc za pronalazak svakog izraza u datoteci i potvrdu zamjene. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 4 SAETAK 1. CTRL-G prikazuje poziciju kursora u datoteci i status datoteke. G postavlja kursor na zadnju liniju datoteke. broj G postavlja kursor na broj liniju. gg postavlja kursor na prvu liniju. 2. Tipkanje / sa izrazom trai UNAPRIJED taj izraz. Tipkanje ? sa izrazom trai UNATRAG taj izraz. Nakon naredbe traenja koristite n za pronalazak izraza u istom smjeru, i N za pronalazak istog izraza ali u suprotnom smjeru. CTRL-O vraa kursor na prethodnu poziciju, CTRL-I na sljedeu poziciju. 3. Tipkanje % dok je kursor na zagradi pomie ga na pripadajuu zagradu. 4. Za zamjenu prvog izraza staro za izraz novo :s/staro/novo Za zamjenu svih izraza staro na cijeloj liniji :s/staro/novo/g Za zamjenu svih izraza staro u rasponu linija #,# :#,#s/staro/novo/g Za zamjenu u cijeloj datoteci :%s/staro/novo/g Za potvrdu svake zamjene dodajte 'c' :%s/staro/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.1: IZVRAVANJE VANJSKIH NAREDBI ** Otipkajte :! sa vanjskom naredbom koju elite izvriti. ** 1. Otipkajte poznatu naredbu : kako bi kursor premjestili na dno ekrana. Time omoguavate unos naredbe u naredbenoj liniji. 2. Otipkajte znak ! (usklinik). Tako omoguavate izvravanje naredbe vanjske ljuske. 3. Kao primjer otipkajte ls nakon ! te pritisnite . Ovo e prikazati sadraj direktorija, kao da ste u ljusci. Koristite :!dir ako :!ls ne radi. NAPOMENA: Mogue je izvravati bilo koju vanjsku naredbu na ovaj nain, zajedno sa njenim argumentima. NAPOMENA: Sve : naredbe se izvravaju nakon to pritisnete U daljnjem tekstu to nee uvijek biti napomenuto. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.2: VIE O SPREMANJU DATOTEKA ** Za spremanje promjena, otipkajte :w IME_DATOTEKE. ** 1. Otipkajte :!dir ili :!ls za pregled direktorija. Ve znate da morate pritisnuti na kraju tipkanja. 2. Izaberite ime datoteke koja jo ne postoji, npr. TEST. 3. Otipkajte: :w TEST (gdje je TEST ime koje ste prethodno odabrali.) 4. Time e te spremiti cijelu datoteku (Vim Tutor) pod imenom TEST. Za provjeru, otipkajte ponovno :!dir ili :!ls za pregled direktorija. NAPOMENA: Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST , datoteka bi bila potpuna kopija ove datoteke u trenutku kada ste je spremili. 5. Izbriite datoteku tako da otipkate (MS-DOS): :!del TEST ili (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.3: SPREMANJE OZNAENOG TEKSTA ** Kako bi spremili dio datoteke, otipkajte v pokret :w IME_DATOTEKE ** 1. Pomaknite kursor na ovu liniju. 2. Pritisnite v i pomaknite kursor pet linija ispod ove. Primijetite promjenu, oznaeni tekst se razlikuje od obinog. 3. Pritisnite : znak. Na dnu ekrana pojavit e se :'<,'> . 4. Otipkajte w TEST , pritom je TEST ime datoteke koja jo ne postoji. Provjerite da zaista pie :'<,'>w TEST prije nego to pritisnite . 5. Vim e spremiti oznaeni tekst u TEST. Provjerite sa :!dir ili :!ls . Nemojte je jo brisati! Koristiti e te je u sljedeoj lekciji. NAPOMENA: Tipka v zapoinje Vizualno oznaavanje. Moete pomicati kursor unaokolo kako bi mijenjali veliinu oznaenog teksta. Moete koristiti i operatore. Npr, d e izbrisati oznaeni tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5.4: UITAVANJE DATOTEKA ** Za ubacivanje sadraja datoteke, otipkajte :r IME_DATOTEKE ** 1. Postavite kursor iznad ove linije. NAPOMENA: Nakon to izvrite 2. korak vidjeti e te tekst iz Lekcije 5.3. Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju. 2. Uitajte vau TEST datoteku koristei naredbu :r TEST gdje je TEST ime datoteke koju ste koristili u prethodnoj lekciji. Sadraj uitane datoteke je ubaen liniju ispod kursora. 3. Kako bi provjerili da je datoteka uitana, vratite kursor unatrag i primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke. NAPOMENA: Moete takoer uitati ispis vanjske naredbe. Npr, :r !ls e uitati ispis ls naredbe i postaviti ispis liniju ispod kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 5 SAETAK 1. :!naredba izvrava vanjsku naredbu. Korisni primjeri: (MS-DOS) (Unix) :!dir :!ls - pregled direktorija. :!del DATOTEKA :!rm DATOTEKA - brie datoteku DATOTEKA. 2. :w DATOTEKA zapisuje trenutanu datoteku na disk sa imenom DATOTEKA. 3. v pokret :w IME_DATOTEKE sprema vizualno oznaene linije u datoteku IME_DATOTEKE. 4. :r IME_DATOTEKE uitava datoteku IME_DATOTEKE sa diska i stavlja njen sadraj liniju ispod kursora. 5. :r !dir uitava ispis naredbe dir i postavlja sadraj ispisa liniju ispod kursora. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.1: NAREDBA OTVORI ** Pritisnite o kako bi otvorili liniju ispod kursora i preli u Insert mod. ** 1. Pomaknite kursor na sljedeu liniju oznaenu s --->. 2. Otipkajte malo o kako bi otvorili novu liniju ISPOD kursora i preli u Insert mod. 3. Otipkajte neto teksta i nakon toga pritisnite kako bi napustili Insert mod. ---> Nakon to pritisnete o kursor e prei u novu liniju u Insert mod. 4. Za otvaranje linije IZNAD kursora, otipkajte umjesto malog o veliko O , Pokuajte na donjoj liniji oznaenoj s --->. ---> Otvorite liniju iznad ove - otipkajte O dok je kursor na ovoj liniji. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.2: NAREDBA DODAJ ** Otipkajte a za dodavanje teksta IZA kursora. ** 1. Pomaknite kursor na poetak sljedee linije oznaene s --->. 2. Tipkajte e dok se kursor ne nalazi na kraju li . 3. Otipkajte a (malo) kako bi dodali tekst IZA kursora. 4. Dopunite rije kao to je na liniji ispod. Pritisnite za izlaz iz Insert moda. 5. Sa e prijeite na sljedeu nepotpunu rije i ponovite korake 3 i 4. ---> Ova li omoguava vje dodav teksta nekoj liniji. ---> Ova linija omoguava vjebanje dodavanja teksta nekoj liniji. NAPOMENA: Sa i, a, i A prelazite u isti Insert mod, jedina razlika je u poziciji od koje e se tekst ubacivati. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.3: DRUGI NAIN MIJENJANJA ** Otipkajte veliko R kako bi zamijelili vie od jednog znaka. ** 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->. Pomaknite kursor na poetak prvog xxx . 2. Pritisnite R i otipkajte broj koji je liniju ispod, tako da zamijeni xxx . 3. Pritisnite za izlaz iz Replace moda. Primijetite da je ostatak linije ostao nepromjenjen. 5. Ponovite korake kako bi zamijenili preostali xxx. ---> Zbrajanje: 123 plus xxx je xxx. ---> Zbrajanje: 123 plus 456 je 579. NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom, svaki otipkani znak brie ve postojei. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA ** Koristite y operator za kopiranje a p za lijepljenje teksta. ** 1. Pomaknite kursor na liniju s ---> i postavite kursor nakon "a)". 2. Pokrenite Visual mod sa v i pomaknite kursor sve do ispred "prva". 3. Pritisnite y kako bi kopirali oznaeni tekst. 4. Pomaknite kursor do kraja sljedee linije: j$ 5. Pritisnite p kako bi zalijepili tekst. Onda utipkajte: druga . 6. Koristite Visual mod kako bi oznaili " linija.", kopirajte: y , kursor postavite na kraj sljedee linije: j$ i ondje zalijepite tekst: p . ---> a) ovo je prva linija. b) NAPOMENA: moete koristiti y kao operator; yw kopira jednu rije. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6.5: MIJENJANJE POSTAVKI ** Postavka: naredbe traenja i zamijene ne razlikuju VELIKA i mala slova ** 1. Potraite 'razlika' tipkanjem: /razlika Nekoliko puta ponovite pritiskanjem n . 2. Aktivirajte 'ic' (Ignore case) postavku: :set ic 3. Ponovno potraite 'razlika' tipkanjem n Primijetite da su sada i RAZLIKA i Razlika pronaeni. 4. Aktivirajte 'hlsearch' i 'incsearch' postavke: :set hls is 5. Otipkajte naredbu traenja i primijetite razlike: /razlika 6. Za deaktiviranje ic postavke koristite: :set noic NAPOMENA: Za neoznaavanje pronaenih izraza otipkajte: :nohlsearch NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi koristite \c u izrazu: /razlika\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 6 SAETAK 1. Pritisnite o za otvaranje linije ISPOD kursora i prelazak u Insert mod. Pritisnite O za otvaranje linije IZNAD kursora. 2. Pritisnite a za unos teksta IZA kursora. Pritisnite A za unos teksta na kraju linije. 3. Naredba e pomie kursor na kraj rijei. 4. Operator y kopira tekst, p ga lijepi. 5. Tipkanjem velikog R Vim prelazi u Replace mod dok ne pritisnete . 6. Tipkanjem ":set xxx" aktivira postavku "xxx". Neke postavke su: 'ic' 'ignorecase' ne razlikuje velika/mala slova pri traenju 'is' 'incsearch' trai nedovrene izraze 'hls' 'hlsearch' oznai sve pronaene izraze Moete koristite dugo ili kratko ime postavke. 7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.1: DOBIVANJE POMOI ** Koristite on-line sustav pomoi ** Vim ima detaljan on-line sustav pomoi. Za poetak, pokuajte jedno od sljedeeg: - pritisnite tipku (ako je vaa tipkovnica ima) - pritisnite tipku (ako je vaa tipkovnica ima) - utipkajte :help Proitajte tekst u prozoru pomoi kako bi ste se znali sluiti istom. Tipkanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi. Otipkajte :q kako bi zatvorili prozor pomoi. Pronai e te pomo o bilo kojoj temi, tako da dodate upit samoj ":help" naredbi. Pokuajte (ne zaboravite pritisnuti ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.2: PRAVLJENJE SKRIPTE ** Aktivirajte Vim mogunosti ** Vim ima mnogo vie alata od Vi-ja, ali veina njih nije aktivirana. Kako bi mogli koristiti vie mogunosti napravite "vimrc" datoteku. 1. Uredite "vimrc" datoteku. Ovo ovisi o vaem sistemu: :e ~/.vimrc za Unix :e $VIM/_vimrc za MS-Windows 2. Sada uitajte primjer sadraja "vimrc" datoteke: :r $VIMRUNTIME/vimrc_example.vim 3. Sauvajte datoteku sa: :w Sljedeeg puta kada pokrenete Vim, bojanje sintakse teksta biti e aktivirano. Sve vae postavke moete dodati u "vimrc" datoteku. Za vie informacija otipkajte :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7.3: AUTOMATSKO DOVRAVANJE ** Dovravanje iz naredbene linije pomou CTRL-D i ** 1. Provjerite da Vim nije u Vi modu: :set nocp 2. Pogledajte koje datoteke postoje u direktoriju: :!ls or :!dir 3. Otipkajte poetak naredbe: :e 4. Tipkajte CTRL-D i prikazati e se lista naredbi koje zapoinju sa "e". 5. Pritisnite i Vim e dopuniti unos u naredbu ":edit". 6. Dodajte razmak i poetak datoteke: :edit FIL 7. Pritisnite . Vim e nadopuniti ime datoteke (ako je jedinstveno). NAPOMENA: Mogue je dopuniti mnoge naredbe. Koristite CTRL-D i . Naroito je korisno za :help naredbe. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcija 7 SAETAK 1. Otipkajte :help ili pritisnite ili za pomo. 2. Otipkajte :help naredba kako bi dobili pomo za naredba . 3. Otipkajte CTRL-W CTRL-W za prelazak u drugi prozor 4. Otipkajte :q kako bi zatvorili prozor pomoi 5. Napravite vimrc skriptu za podizanje kako bi u nju spremali vae omiljene postavke. 6. Kada tipkate naredbu koja zapoinje sa : pritisnite CTRL-D kako bi vidjeli mogue valjane vrijednosti. Pritisnite kako bi odabrali jednu od njih. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Kraj. Cilj prirunika je da pokae kratak pregled Vim editora, tek toliko da omogui njegovo koritenje. Prirunik nije potpun jer Vim ima mnogo vie naredbi. Za vie informacija: ":help user-manual". Za itanje i koritenje, preporuamo: Vim - Vi Improved - by Steve Oualline Izdava: New Riders Prva knjiga potpuno posveena Vim-u. Vrlo korisna za poetnike. Sa mnogo primjera i slika. Posjetite http://iccf-holland.org/click5.html Sljedea knjiga je neto starija i vie o Vi-u nego o Vim-u, preporuamo: Learning the Vi Editor - by Linda Lamb Izdava: O'Reilly & Associates Inc. Solidna knjiga, moete saznati skoro sve to moete napraviti u Vi-u. esto izdanje ima neto informacija i o Vim-u. Ovaj prirunik su napisali: Michael C. Pierce i Robert K. Ware, Colorado School of Mines koristei ideje Charles Smith, Colorado State University. E-pota: bware@mines.colorado.edu. Naknadne promjene napravio je Bram Moolenaar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Preveo na hrvatski: Paul B. Mahol Preinaka 1.42, Lipanj 2008 PK!&0vim80/tutor/tutor.ptnu[=============================================================================== = B e m - v i n d o ao t u t o r i a l do V I M - Verso 1.8 pt_BR = =============================================================================== Vim um poderoso editor que possui muitos comandos, tantos que seria impossvel ensin-los num tutorial como este, que concebido para apresentar os comandos suficientes para permiti-lo usar facilmente o Vim como um editor de textos genrico. O tempo necessrio para completar o tutorial de cerca de 25-30 minutos, dependendo de quanto tempo gasto praticando os comandos. ATENO: Os comandos nas lies modificam este texto. Faa uma cpia deste arquivo para praticar os comandos (se usou o "vimtutor", esta j uma cpia). importante lembrar que este tutorial concebido para ensinar pela prtica. Isso significa que voc precisa executar os comandos para aprend-los adequadamente. Se voc somente ler o texto, esquecer os comandos! Agora, certifique-se de que sua tecla Shift-Lock (ou Caps Lock) no esteja ativada e pressione a tecla j o bastante para mover o cursor at que a Lio 1.1 aparea inteiramente na tela. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 1.1: MOVER O CURSOR ** Para mover o cursor, pressione as teclas h,j,k,l conforme indicado. ** ^ k Dica: A tecla h est esquerda e move esquerda. < h l > A tecla l est direita e move direita. j A tecla j se parece com uma seta para baixo. v 1. Mova o cursor pela tela at que voc se sinta confortvel. 2. Segure pressionada a tecla (j) at haver repetio. Agora voc j sabe como ir para a prxima lio. 3. Usando a tecla j, v para a Lio 1.2. NOTA: Se est inseguro sobre o que digitou, pressione para coloc-lo no modo Normal. Ento redigite o comando que queria. NOTA: As teclas de cursor funcionam tambm. Mas usando hjkl, to logo esteja acostumado, voc poder se mover muito mais rapidamente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 1.2: SAIR DO VIM !! NOTA: Antes de executar quaisquer dos passos abaixo, leia a lio inteira !! 1. Pressione (para ter certeza de que est no modo Normal). 2. Digite: :q! . Assim, sai do editor SEM salvar qualquer mudana feita. 3. Repita o procedimento que o trouxe a este tutorial. O procedimento pode ter sido a digitao de: vimtutor . 4. Se memorizou estes passos e est confiante, execute os passos de 1 a 3 para sair e reentrar no editor. NOTA: :q! descarta qualquer mudana. Em uma prxima lio ser ensinado como salvar as mudanas feitas em um arquivo. 5. Desa o cursor at a Lio 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 1.3: EDITAR TEXTOS - REMOO ** Pressione x para deletar o caractere sob o cursor. ** 1. Mova o cursor para a linha abaixo marcada com --->. 2. Para corrigir os erros, mova o cursor at que ele esteja sobre o caractere a ser deletado. 3. Pressione a tecla x para remover o caractere incorreto. 4. Repita os passos 2 at 4 at que a frase esteja correta. ---> A vvaca pullouu por ccimaa dda luuua. 5. Agora que a frase est correta, prossiga para a Lio 1.4. NOTA: Enquanto segue este tutorial, no tente memorizar, aprenda pelo uso. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 1.4: EDITAR TEXTOS - INSERO ** Pressione i para inserir texto. ** 1. Mova o cursor at a primeira linha abaixo marcada com --->. 2. Para deixar a primeira linha igual segunda, mova o cursor para o primeiro caractere DEPOIS de onde o texto dever ser inserido. 3. Pressione i e digite as adies necessrias. 4. Assim que cada erro for corrigido pressione para retornar ao modo Normal. Repita os passos 2 at 4 para corrigir a frase. ---> Tem text fatado nesta . ---> Tem algum texto faltando nesta linha. 5. Quando se sentir vontade com a insero de texto, mova o cursor para a Lio 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 1.5: EDITAR TEXTO - ADICIONAR ** Pressione A para adicionar texto. ** 1. Mova o cursor para a primeira linha abaixo marcada com --->. No importa sobre qual caractere o cursor estar na linha. 2. Pressione A e digite as adies necessrias. 3. Quando adicionar o texto, pressione para retornar ao modo Normal. 4. Mova o cursor para a segunda linha marcada ---> e repita os passos 2 e 3 para corrigir a frase. ---> H algum texto faltando nes H algum texto faltando nesta linha. H algum texto faltan ---> H algum texto faltando aqui. 5. Quando se sentir confortvel adicionando texto, v para a Lio 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 1.6: EDITAR UM ARQUIVO ** Use :wq para salvar um arquivo e sair. ** !! NOTA: Leia toda a lio antes de executar as instrues!! 1. Saia deste tutorial como o fez na lio 1.2: :q! Ou, se tiver acesso a outro terminal, faa o seguinte nele. 2. No prompt do shell, digite esse comando: vim tutor 'vim' o comando para iniciar o editor Vim e 'tutor' o nome do arquivo que voc quer editar. Use um arquivo que possa ser modificado. 3. Insira e apague texto tal como aprendeu nas lies anteriores. 4. Salve o arquivo com as mudanas e saia do Vim com: :wq 5. Se tiver sado do vimtutor no passo 1, reinicie o vimtutor e v para o resumo seguinte. 6. Aps ler os passos acima e compreend-los, execute-os. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIO 1 1. O cursor movido usando tanto as teclas de seta quanto as teclas hjkl. h (esquerda) j (para baixo) k (para cima) l (direita) 2. Para entrar no Vim a partir de um shell digite: vim NOMEDOARQUIVO 3. Para sair do Vim digite: :q! para descartar as alteraes. OU digite: :wq para salvar as alteraes. 4. Para deletar um caractere sob o cursor no modo Normal digite: x 5. Para inserir texto na posio do cursor enquanto estiver no modo Normal digite: i digite o texto inserir depois do cursor A digite o texto adicionar no final da linha NOTA: Pressionando voc ir para o modo Normal ou cancelar um comando ainda incompleto. Agora continue com a Lio 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 2.1: COMANDOS DE REMOO ** Digite dw para apagar uma palavra. ** 1. Pressione para ter certeza de que est no modo Normal. 2. Mova o cursor at a linha abaixo marcada com --->. 3. Mova o cursor at o comeo da palavra que precisa ser deletada. 4. Digite dw para fazer a palavra desaparecer. NOTA: A letra d vai aparecer na ltima linha da tela enquanto voc a digita. O Vim o est esperando digitar um w . Se digitou alguma coisa errada, pressione e comece de novo. ---> Tem a algumas oi palavras diverso que no pertencem papel a esta frase. 5. Repita os passos 3 ao 4 at que a frase esteja correta e v para a Lio 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 2.2: MAIS COMANDOS DE REMOO ** Digite d$ para deletar at o fim da linha. ** 1. Pressione para ter certeza de estar no modo Normal. 2. Mova o cursor at a linha abaixo marcada com --->. 3. Mova o cursor at o fim da linha correta (DEPOIS do primeiro . ). 4. Digite d$ para apagar at o fim da linha. ---> Algum digitou o fim desta linha duas vezes. desta linha duas vezes. 5. V para a lio 2.3 para entender o funcionamento deste comando. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 2.3: SOBRE OPERADORES E MOVIMENTOS Muitos comandos que mudam texto so feitos de um operador e de um movimento. O formato para um comando apagar com o operador de remoo d tem a seguinte forma: d movimento Onde: d - o operador apagar. movimento - o movimento sobre o qual o operador age (listado abaixo). Uma pequena lista de teclas de movimento: w - at o incio da prxima palavra, excluindo seu primeiro caractere. e - at o fim da palavra atual, incluindo seu ltimo caractere. $ - at o fim da linha, incluindo seu ltimo caractere. Portanto, digitar de apaga do cursor ao fim da palavra. NOTA: Pressionar apenas a tecla de movimento em modo Normal, sem o operador, faz o cursor se mover como especificado na lista de teclas de movimento. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 2.4: USAR UM CONTADOR PARA UM MOVIMENTO ** Digitar um nmero antes de um movimento repete-o o tanto de vezes. ** 1. Mova o cursor para o comeo da linha marcada com ---> abaixo. 2. Digite 2w para mover o cursor duas palavras adiante. 3. Digite 3e para mover o cursor para o fim da terceira palavra adiante. 4. Digite 0 (zero) para mover para o incio da linha. 5. Repita os passos 2 e 3 com diferentes nmeros. ---> Esta uma linha com algumas palavras para permiti-lo fazer movimentos. 6. V para a Lio 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 2.5: USAR UM CONTADOR PARA APAGAR MAIS ** Digitar um nmero com um operador repete-o esse nmero de vezes. ** Voc deve inserir um contador entre o operador de remoo e o de movimento mencionados acima para apagar mais: d nmero movimento 1. Movimente o cursor para a primeira palavra em LETRAS MAISCULAS na linha marcada com --->. 2. Digite d2w para deletar as duas palavras em LETRAS MAISCULAS. 3. Repita os passos 1 e 2 com diferentes contadores para deletar as palavras em LETRAS MAISCULAS com um comando. ---> esta ABC DE linha FGHI JK LMN OP de palavras est Q RS TUV limpa. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 2.6: TRABALHAR COM LINHAS ** Digite dd para apagar uma linha inteira. ** Em virtude da frequncia em deletar uma linha inteira, os desenvolvedores do Vi decidiram que seria mais simples digitar dois d para apagar uma linha. 1. Mova o cursor at a segunda linha da frase abaixo. 2. Digite dd para apagar a linha. 3. Agora mova at a quarta linha. 4. Digite 2dd para apagar duas linhas. ---> 1) Rosas so vermelhas, ---> 2) Lama divertida, ---> 3) Violetas so azuis, ---> 4) Eu tenho um carro, ---> 5) Relgios dizem as horas, ---> 6) Acar doce, ---> 7) Assim como voc. Notas do tradutor: Lama (mud) em ingls pode significar fofoca, difamao. H rima no texto original. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 2.7: O COMANDO UNDO (DESFAZER) ** Pressione u para desfazer os ltimos comandos, U recupera a linha inteira.** 1. Mova o cursor para a linha abaixo marcada com ---> e posicione-o sobre o primeiro erro. 2. Digite x para deletar o primeiro caractere errado. 3. Agora, digite u para desfazer o ltimo comando executado. 4. Desta vez, corrija todos os erros na linha usando o comando x . 5. Agora, digite um U maisculo para retornar a linha ao seu estado original. 6. Digite u algumas vezes para desfazer o U e os comandos anteriores. 7. Digite CTRL-R (segurando a tecla CTRL enquanto digita R) algumas vezes para refazer os comandos (desfazer os undos). ---> Corriija os erros nnesta linha e reetorne-os com undo. 8. Esses comandos so muito teis. Agora v para o resumo da Lio 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIO 2 1. Para apagar do cursor at a prxima palavra, digite: dw 2. Para apagar do cursor at o fim de uma linha, digite: d$ 3. Para apagar uma linha inteira, digite: dd 4. Para repetir um movimento, adicione antes um nmero: 2w 5. O formato para um comando no modo Normal : operador [nmero] movimento onde: operador - o que ser feito, como d para apagar [nmero] - quantas vezes o comando ser repetido movimento - movimento sobre o texto que receber a operao, como w (palavra), $ (at o fim da linha), etc. 6. Para ir ao incio da linha, use um zero: 0 7. Para desfazer uma ao anterior, digite: u (minsculo) Para desfazer todas as alteraes em uma linha, digite: U (maisculo) Para desfazer o que foi desfeito, digite: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 3.1: O COMANDO COLAR ** Digite p para colar aps o cursor o que acabou de apagar. ** 1. Mova o cursor at a primeira linha marcada com --->. 2. Digite dd para apagar a linha e guard-la num registro do Vim. 3. Mova o cursor at a linha c) ACIMA de onde a linha apagada deveria estar. 4. No modo Normal, digite p para inserir a linha. 5. Repita os passos 2 ao 4 para pr todas as linhas na ordem correta. ---> d) Voc pode aprender tambm? ---> b) Violetas so azuis, ---> c) Inteligncia se aprende, ---> a) Rosas so vermelhas, Nota do tradutor: H rima no original. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 3.2: O COMANDO SUBSTITUIR ** Digite rx para substituir o caractere sob o cursor por x . ** 1. Mova o cursor at a primeira linha abaixo marcada com --->. 2. Mova o cursor at que esteja sobre o primeiro erro. 3. Digite r e ento o caractere que deveria estar l. 4. Repita os passos 2 e 3 at que a primeira linha esteja igual segunda. ---> Quendo este limha foi dugitada, alguem pressioniu algumas teclas erradzs! ---> Quando esta linha foi digitada, algum pressionou algumas teclas erradas! 5. Agora v para a Lio 3.3. NOTA: Lembre-se que voc deve aprender pelo uso, no pela memorizao. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 3.3: O OPERADOR CHANGE (MUDAR) ** Para alterar at o fim de uma palavra, digite ce . ** 1. Mova o cursor at a primeira linha abaixo marcada com --->. 2. Posicione o cursor sobre o u em lunba. 3. Digite ce e a palavra correta (nesse caso, digite 'inha'.) 4. Pressione e mova para o prximo caractere a ser alterado. 5. Repita os passos 3 e 4 at que a primeira frase esteja igual segunda. ---> Essa lunba tem pwlesmfr que ocrimmm soi alteradas cup o comando change. ---> Essa linha tem palavras que precisam ser alteradas com o comando change. Note que ce no somente substitui a palavra, mas tambm o coloca no modo de Insero. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 3.4: MAIS MUDANAS USANDO c ** O operador change usado com os mesmos movimentos que o delete. ** 1. O operador change trabalha da mesma maneira que o delete. O formato : c [nmero] movimento 2. Os movimentos tambm so os mesmos: w (palavra) e $ (fim da linha). 3. Mova at a primeira linha abaixo marcada com --->. 4. Mova o cursor at o primeiro erro. 5. Digite c$ e digite o resto da segunda para torn-las iguais e pressione . ---> O fim desta linha precisa de ajuda para ficar igual segunda. ---> O fim desta linha precisa ser corrigido usando o comando c$. NOTA: Voc pode usar a tecla Backspace para corrigir erros enquanto digita. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIO 3 1. Para reinserir um texto que j foi apagado, digite p . Isso coloca o texto deletado APS o cursor (se uma linha deletada ela ser inserida na linha abaixo do cursor). 2. Para substituir o caractere sob o cursor, digite r e ento o caractere que substituir o original. 3. O comando change possibilita mudar do cursor at onde o movimento for. Ex: Digite ce para mudar do cursor at o fim de uma palavra, c$ para mudar at o fim da linha. 4. O formato para uma operao change : c [nmero] movimento Agora v para a prxima lio. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 4.1: LOCALIZAO DO CURSOR E ESTADO DO ARQUIVO ** Digite CTRL-G para mostrar sua localizao no arquivo e seu estado. Digite G para mover para uma linha do arquivo. ** Nota: Leia esta lio inteira antes de executar qualquer um dos passos!! 1. Segure pressionada a tecla Ctrl e pressione g . Chamamos isso de CTRL-G. Uma mensagem aparecer no rodap da pgina com o nome do arquivo e a sua posio no arquivo. Lembre-se do nmero da linha para o Passo 3. NOTA: A posio do cursor pode estar visvel no canto direito inferior da tela. Isso acontece quando a opo 'ruler' est ativa (veja :help 'ruler' ). 2. Pressione G para se mover at o fim do arquivo. Digite gg para se mover at o incio do arquivo. 3. Digite o nmero da linha em que estava e ento G . Assim o cursor retornar linha em que estava quando pressionou CTRL-G. 4. Se estiver seguro para faz-los, execute os passos 1 a 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 4.2: O COMANDO BUSCAR ** Digite / seguido por uma frase para procurar por ela. ** 1. No modo Normal digite o caractere / . Note que ele e o cursor aparecem no rodap da tela, como ocorre com o comando : . 2. Agora digite 'errroo' . Esta a palavra que quer procurar. 3. Para buscar a mesma palavra de novo, simplesmente tecle n . Para buscar a mesma palavra na direo oposta, tecle N . 4. Se quer procurar por uma frase de trs para frente, use ? em vez de / . 5. Para voltar aonde estava, pressione CTRL-O (mantenha a tecla Ctrl pressionada e pressione a tecla o). Repita para voltar a outras posies. CTRL-I segue para posies mais recentes. ---> "errroo" no uma maneira de escrever erro; errroo um erro. NOTA: Quando a busca atinge o fim do arquivo ela continuar do comeo, a menos que a opo 'wrapscan' esteja desativada. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 4.3: BUSCA DE PARNTESES CORRESPONDENTES ** Digite % para encontrar um ),], ou } correspondente. ** 1. Posicione o cursor em qualquer (, [, ou { na linha abaixo marcada com --->. 2. Agora digite o caractere % . 3. O cursor deve estar no parntese ou colchete que casa com o primeiro. 4. Digite % para mover o cursor de volta ao primeiro colchete ou parntese (por casamento). ---> Isto ( uma linha de teste contendo (, [ ] e { }. )) Nota: Isso muito til para corrigir um programa com parntese no-casado! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 4.4: O COMANDO SUBSTITUIR ** Digite :s/velho/novo/g para substituir 'velho' por 'novo'. ** 1. Mova o cursor para a linha abaixo marcada com --->. 2. Digite :s/aa/a . Note que este comando somente muda a primeira ocorrncia na linha. 3. Agora digite :s/aa/a/g significando substituir globalmente na linha. Isto muda todas as ocorrncias na linha. ---> aa melhor poca para ver aas flores aa primavera. 4. Para mudar toda ocorrncia de uma string entre duas linhas, digite :#,#s/velho/novo/g onde #,# so os nmeros das duas linhas. Digite :%s/velho/novo/g para mudar todas as ocorrncias no arquivo inteiro. Digite :%s/velho/novo/gc para mudar todas as ocorrncias no arquivo inteiro, com a opo de confirmar cada substituio. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIO 4 1. CTRL-G mostra em que ponto do arquivo est e o estado dele. G move para o fim do arquivo. nmero G move para a linha com esse nmero. gg move para a primeira linha. 2. Digitando / seguido por uma expresso procura FRENTE por ela. Digitando ? seguido por uma expresso procura pela expresso de TRS PARA FRENTE. Aps uma busca, digite n para achar a prxima ocorrncia na mesma direo ou N para procurar na direo oposta. CTRL-O leva a posies antigas e CTRL-I a posies mais recentes. 3. Digitando % enquanto o cursor est sobre um (,),[,],{, ou } localiza o par que casa com ele. 4. Para substituir: o primeiro 'velho' de uma linha por 'novo' digite :s/velho/novo todos os 'velho' em uma linha por 'novo' digite :s/velho/novo/g expresses entre dois nmeros (#) de linhas digite :#,#s/velho/novo todas as ocorrncias no arquivo digite :%s/velho/novo/g Para confirmar cada substituio adicione 'c' :%s/velho/novo/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 5.1: COMO EXECUTAR UM COMANDO EXTERNO ** Digite :! seguido por um comando externo para execut-lo. ** 1. Digite o familiar comando : para levar o cursor ao rodap da tela. Isso o permite entrar um comando. 2. Agora digite o caractere ! (ponto de exclamao). Isso o permite executar qualquer comando do shell. 3. Como um exemplo digite ls seguindo o ! e ento tecle . Isto mostrar uma listagem do seu diretrio, como se voc estivesse no prompt do shell. Ou use :!dir se ls no funcionar. NOTA: possvel executar qualquer comando externo dessa maneira, inclusive com argumentos. NOTA: Todos os comandos : devem ser finalizados teclando-se Daqui em diante no mencionaremos isso todas as vezes. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 5.2: MAIS SOBRE SALVAR ARQUIVOS ** Para salvar as alteraes no texto, digite :w NOMEDOARQUIVO. ** 1. Digite :!dir ou :!ls para ter uma listagem de seu diretrio. Voc j deve saber que precisa teclar depois disso. 2. Escolha um nome de arquivo que ainda no exista, como TESTE. 3. Agora digite: :w TESTE (onde TESTE o nome que voc escolheu.) 4. Isto salva o arquivo inteiro (o Vim Tutor) com o nome TESTE. Para verificar isso, digite :!ls de novo para ver seu diretrio. NOTA: Se sair do Vim e entrar de novo com o nome do arquivo TESTE, o arquivo deve ser uma cpia exata do tutorial quando voc o salvou. 5. Agora remova o arquivo digitando (MS-DOS): :!del TESTE ou (Unix): :!rm TESTE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 5.3: SELECIONAR O TEXTO A SER SALVO ** Para salvar parte de um arquivo, digite v movimento :w NOMEDOARQUIVO ** 1. Mova o cursor para esta linha. 2. Pressione v e mova o cursor para o quinto item abaixo. Note que o texto realado. 3. Pressione o caractere : e note que aparecer :'<,'> no lado inferior da tela. 4. Digite w TESTE , sendo TESTE um nome de arquivo que no existe ainda. Certifique-se de ver :'<,'>w TESTE antes de pressionar . 5. O Vim salvar as linhas selecionadas no arquivo TESTE. Use :!dir ou !:ls para v-lo. No o apague ainda! Ns o usaremos na prxima lio. NOTA: Pressionar v inicia o modo Visual de seleo. Voc pode mover o cursor pela tela para tornar a seleo maior ou menor. Pode, ento, usar um operador para executar alguma ao. Por exemplo, d apaga o texto. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 5.4: RECUPERAR E UNIR ARQUIVOS ** Para inserir o contedo de um arquivo, digite :r NOMEDOARQUIVO ** 1. Posicione o cursor logo acima desta linha. NOTA: Depois de executar o Passo 2 voc ver a Lio 5.3. Ento DESA o cursor para ver esta lio novamente. 2. Agora recupere o arquivo TESTE usando o comando :r TESTE onde TESTE o nome do arquivo. O arquivo recuperado colocado abaixo da linha atual do cursor. 3. Para verificar que o arquivo foi recuperado, volte com o cursor e verifique que agora existem duas cpias da Lio 5.3, a original e a verso do arquivo. NOTA: Voc tambm pode ler a sada de um comando externo. Por exemplo, :r !ls l a sada do comando ls e coloca o resultado abaixo do cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIO 5 1. :!comando executa um comando externo. Alguns exemplos teis so: (MS-DOS) (UNIX) :!dir :!ls - lista contedo do diretrio. :!del ARQUIVO :!rm ARQUIVO - remove ARQUIVO. 2. :w ARQUIVO salva o atual arquivo do Vim para o disco com o nome ARQUIVO. 3. v movimento :w ARQUIVO salva as linhas Visualmente selecionadas em ARQUIVO. 4. :r ARQUIVO recupera ARQUIVO do disco e o insere dentro do arquivo atual na posio do cursor. 5. :r !dir l a sada do comando dir e coloca o resultado abaixo da posio atual do cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 6.1: O COMANDO ABRIR ** Digite o para abrir uma linha em baixo do cursor e ir para o modo de Insero. ** 1. Mova o cursor para a linha abaixo marcada com --->. 2. Digite o (minsculo) para abrir uma linha ABAIXO do cursor e ir para o modo de Insero. 3. Agora digite algum texto e pressione para sair do modo de Insero. ---> Aps teclar o o cursor colocado na linha aberta no modo de Insero. 4. Para abrir uma linha ACIMA do cursor, simplesmente tecle um O maisculo, em vez de um o minsculo. Tente isso na linha abaixo. ---> Abra uma linha acima desta teclando O enquanto o cursor est nesta linha. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 6.2: O COMANDO ADICIONAR ** Digite a para inserir texto DEPOIS do cursor. ** 1. Mova o cursor para o incio da linha marcada com ---> . 2. Pressione e at o cursor ficar sobre o final de li . 3. Digite um a (minsculo) para adicionar texto DEPOIS do caractere sob o cursor. 4. Complete a palavra conforme a linha abaixo. Pressione para sair do modo de Insero. 5. Use e para mover para a prxima palavra incompleta repita os passos 3 e 4. ---> Esta lin o permite pratic a adi de texto a uma linha. ---> Esta linha o permite praticar a adio de texto a uma linha. NOTA: a, i e A levam ao mesmo modo de Insero, a nica diferena onde os caracteres so inseridos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 6.3: UMA OUTRA VERSO DO SUBSTITUIR ** Digite um R maisculo para substituir mais de um caractere. ** 1. Mova o cursor para a primeira linha abaixo marcada com --->. Mova o cursor para o incio do primeiro xxx . 2. Agora pressione R e digite os nmeros que esto abaixo dele, na segunda linha, para substituir o xxx . 3. Pressione para sair do modo de Substituio. Note que o resto da linha permanece inalterado. 4. Repita os passos para substituir os xxx restantes. ---> Adicionando 123 a xxx resulta em xxx. ---> Adicionando 123 a 456 resulta em 579. NOTA: O modo de Substituio como o modo de Insero, mas cada caractere digitado apaga um caractere existente. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 6.4: COPIAR E COLAR TEXTO ** Use o operador y para copiar texto e p para col-lo. ** 1. V linha marcada com ---> abaixo e posicione o cursor aps "a)". 2. Inicie o modo Visual com v e mova o cursor para logo antes de "primeiro". 3. Digite y para copiar o texto selecionado. 4. Mova o cursor para o fim da prxima linha: j$ 5. Digite p para colar o texto. Ento, digite: o segundo . 6. Use o modo Visual para selecionar " item.", copie-o com y , mova para o fim da prxima linha com j$ e cole o texto com p . ---> a) esse o primeiro item. b) NOTA: Voc tambm pode usar y como um operador; por exemplo, yw copia uma palavra. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 6.5: CONFIGURAR PREFERNCIAS ** Configure uma preferncia de modo que uma busca ou substituio ignore se as letras so maisculas ou minsculas. ** 1. Procure por 'ignore' entrando: /ignore Repita vrias vezes teclando n . 2. Configure a opo 'ic' (Ignore case) digitando: :set ic 3. Agora procure por 'ignore' de novo teclando: n Repita vrias vezes. 4. Configure as opes 'hlsearch' e 'incsearch': :set hls is 5. Agora entre com o comando buscar de novo, e veja o que acontece: /ignore 6. Para desabilitar a diferenciao entre maisculas e minsculas: :set noic NOTA: Para remover o realce dos termos localizados entre: :nohlsearch NOTA: Se quiser ignorar a diferena entre maisculas e minsculas em apenas uma pesquisa, use \c no comando: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIO 6 1. Digite o para abrir uma linha ABAIXO do cursor e iniciar o modo de Insero. Digite O para abrir uma linha ACIMA da linha onde o cursor est. 2. Digite a para adicionar texto DEPOIS do caractere onde est o cursor. Digite A para adicionar texto ao fim da linha. 3. O comando e move o cursor para o fim de uma palavra. 4. O operador y copia texto, p cola o texto copiado. 5. Digitando R entra-se no modo de Substituio at que seja pressionado. 6. Digitando ":set xxx" modifica-se a opo "xxx". Algumas opes so: 'ic' 'ignorecase' ignora diferena entre maisculas/minsculas 'is' 'incsearch' realiza a busca enquanto se digita 'hls' 'hlsearch' reala todos os trechos localizados Voc tanto pode usar o nome curto quanto o nome longo da opo. 7. Adicione o prefixo "no" para desabilitar uma opo: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LIO 7.1: OBTENDO AJUDA ** Use o sistema de ajuda do prprio Vim ** O Vim possui sistema de ajuda abrangente. Para comear, tente algum desses trs: - pressione a tecla (se voc tiver uma) - pressione a tecla (se voc tiver uma) - digite :help Leia o texto da ajuda para aprender como o sistema de ajuda funciona. Digite CTRL-W CTRL-W para pular de uma janela a outra. Digite :q para fechar a janela da ajuda. Voc pode encontrar ajuda sobre qualquer assunto, fornecendo um argumento para o comando ":help". Tente isto (no se esquea de pressionar ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 7.2: CRIAR UM SCRIPT DE INICIALIZAO ** Habilite recursos do Vim ** O Vim tem muito mais recursos do que o Vi, mas na sua maioria eles so desabilitados por padro. Para usar mais recursos, voc tem que criar um arquivo "vimrc". 1. Comece a editar o arquivo "vimrc". Isso depende do sistema: :e ~/.vimrc para Unix :e $VIM/_vimrc para MS-Windows 2. Agora, leia o contedo do arquivo "vimrc" de exemplo: :r $VIMRUNTIME/vimrc_example.vim 3. Salve o arquivo com: :w Da prxima vez que o Vim for iniciado, ele usar realce de sintaxe. Voc pode adicionar suas configuraes preferidas para esse arquivo "vimrc". Para maiores informaes, digite: :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lio 7.3: COMPLETAO ** Completao da linha de comando com CTRL-D e ** 1. Certifique-se de que o Vim no est no modo compatvel: :set nocp 2. Veja quais arquivos existem no diretrio: :!ls ou :!dir 3. Digite o incio de um comando: :e 4. Pressione CTRL-D e o Vim mostrar a lista dos comandos iniciados com "e". 5. Pressione e o Vim completar o nome do comando para ":edit". 6. Agora, adicione um espao e o incio do nome de um arquivo existente: :edit ARQ 7. Pressione . O Vim completar o nome (se ele for nico). NOTA: A completao funciona com muitos comandos. Basta pressionar CTRL-D e . Isso especialmente til para :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RESUMO DA LIO 7 1. Digite :help ou pressione ou para abrir a janela de ajuda. 2. Digite :help cmd para achar a ajuda sobre cmd . 3. Digite CTRL-W CTRL-W para pular de uma janela a outra. 4. Digite :q para fechar a janela de ajuda. 5. Crie um script de inicializao vimrc para ativar automaticamente as suas configuraes preferidas. 6. Quando pressionar um comando : , pressione CTRL-D para ver as possibilidades de completao. Pressione para us-la. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Isto conclui o tutorial do Vim, uma breve apresentao do editor Vim, somente o bastante para que voc possa usar o editor com facilidade. Ele est longe de ser completo, uma vez que o Vim possui muitos, muitos mais comandos. O prximo passo ler o manual: ":help user-manual". Livro recomendado em Portugus sobre o Vim: O editor de texto Vim - de Srgio Luiz Arajo da Silva et al. http://code.google.com/p/vimbook/ Para futura leitura e estudo, este livro recomendado: Vim - Vi Improved - de Steve Oualline Editora: New Riders Este o primeiro livro completamente dedicado ao Vim. Especialmente til para iniciantes, com muitos exemplos e ilustraes. Veja http://iccf-holland.org/click5.html Esse livro mais antigo e mais sobre o Vi do que sobre o Vim, mas tambm recomendado: Learning the Vi Editor - de Linda Lamb Editora: O'Reilly & Associates Inc. Este um bom livro para aprender quase tudo o que voc quer fazer com o Vi. A sexta edio tambm inclui informaes sobre o Vim. Este tutorial foi escrito por Michael C. Pierce e Robert K. Ware, Colorado School of Mines, usando idias fornecidas por Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Modificado para o Vim por Bram Moolenaar. Verso 1.4 traduzida para o portugus por Marcelo Drudi Miranda, Escola Politcnica da Universidade de So Paulo. Reviso e atualizao da traduo para a verso 1.7 por Jakson Aquino, Universidade Federal do Cear: E-mail: jalvesaq@gmail.com Nova reviso e atualizao para a verso 1.8 por Ron Gonalves, Universidade Federal de Uberlndia. Last Change: 2017 Feb 11 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PK!*  vim80/autoload/gzip.vimnu[" Vim autoload file for editing compressed files. " Maintainer: Bram Moolenaar " Last Change: 2016 Sep 28 " These functions are used by the gzip plugin. " Function to check that executing "cmd [-f]" works. " The result is cached in s:have_"cmd" for speed. fun s:check(cmd) let name = substitute(a:cmd, '\(\S*\).*', '\1', '') if !exists("s:have_" . name) let e = executable(name) if e < 0 let r = system(name . " --version") let e = (r !~ "not found" && r != "") endif exe "let s:have_" . name . "=" . e endif exe "return s:have_" . name endfun " Set b:gzip_comp_arg to the gzip argument to be used for compression, based on " the flags in the compressed file. " The only compression methods that can be detected are max speed (-1) and max " compression (-9). fun s:set_compression(line) " get the Compression Method let l:cm = char2nr(a:line[2]) " if it's 8 (DEFLATE), we can check for the compression level if l:cm == 8 " get the eXtra FLags let l:xfl = char2nr(a:line[8]) " max compression if l:xfl == 2 let b:gzip_comp_arg = "-9" " min compression elseif l:xfl == 4 let b:gzip_comp_arg = "-1" endif endif endfun " After reading compressed file: Uncompress text in buffer with "cmd" fun gzip#read(cmd) " don't do anything if the cmd is not supported if !s:check(a:cmd) return endif " for gzip check current compression level and set b:gzip_comp_arg. silent! unlet b:gzip_comp_arg if a:cmd[0] == 'g' call s:set_compression(getline(1)) endif " make 'patchmode' empty, we don't want a copy of the written file let pm_save = &pm set pm= " remove 'a' and 'A' from 'cpo' to avoid the alternate file changes let cpo_save = &cpo set cpo-=a cpo-=A " set 'modifiable' let ma_save = &ma setlocal ma " set 'write' let write_save = &write set write " Reset 'foldenable', otherwise line numbers get adjusted. if has("folding") let fen_save = &fen setlocal nofen endif " when filtering the whole buffer, it will become empty let empty = line("'[") == 1 && line("']") == line("$") let tmp = tempname() let tmpe = tmp . "." . expand(":e") if exists('*fnameescape') let tmp_esc = fnameescape(tmp) let tmpe_esc = fnameescape(tmpe) else let tmp_esc = escape(tmp, ' ') let tmpe_esc = escape(tmpe, ' ') endif " write the just read lines to a temp file "'[,']w tmp.gz" execute "silent '[,']w " . tmpe_esc " uncompress the temp file: call system("gzip -dn tmp.gz") call system(a:cmd . " " . s:escape(tmpe)) if !filereadable(tmp) " uncompress didn't work! Keep the compressed file then. echoerr "Error: Could not read uncompressed file" let ok = 0 else let ok = 1 " delete the compressed lines; remember the line number let l = line("'[") - 1 if exists(":lockmarks") lockmarks '[,']d _ else '[,']d _ endif " read in the uncompressed lines "'[-1r tmp" " Use ++edit if the buffer was empty, keep the 'ff' and 'fenc' options. setlocal nobin if exists(":lockmarks") if empty execute "silent lockmarks " . l . "r ++edit " . tmp_esc else execute "silent lockmarks " . l . "r " . tmp_esc endif else execute "silent " . l . "r " . tmp_esc endif " if buffer became empty, delete trailing blank line if empty silent $delete _ 1 endif " delete the temp file and the used buffers call delete(tmp) silent! exe "bwipe " . tmp_esc silent! exe "bwipe " . tmpe_esc endif " Store the OK flag, so that we can use it when writing. let b:uncompressOk = ok " Restore saved option values. let &pm = pm_save let &cpo = cpo_save let &l:ma = ma_save let &write = write_save if has("folding") let &l:fen = fen_save endif " When uncompressed the whole buffer, do autocommands if ok && empty if exists('*fnameescape') let fname = fnameescape(expand("%:r")) else let fname = escape(expand("%:r"), " \t\n*?[{`$\\%#'\"|!<") endif if &verbose >= 8 execute "doau BufReadPost " . fname else execute "silent! doau BufReadPost " . fname endif endif endfun " After writing compressed file: Compress written file with "cmd" fun gzip#write(cmd) if exists('b:uncompressOk') && !b:uncompressOk echomsg "Not compressing file because uncompress failed; reset b:uncompressOk to compress anyway" " don't do anything if the cmd is not supported elseif s:check(a:cmd) " Rename the file before compressing it. let nm = resolve(expand("")) let nmt = s:tempname(nm) if rename(nm, nmt) == 0 if exists("b:gzip_comp_arg") call system(a:cmd . " " . b:gzip_comp_arg . " -- " . s:escape(nmt)) else call system(a:cmd . " -- " . s:escape(nmt)) endif call rename(nmt . "." . expand(":e"), nm) endif endif endfun " Before appending to compressed file: Uncompress file with "cmd" fun gzip#appre(cmd) " don't do anything if the cmd is not supported if s:check(a:cmd) let nm = expand("") " for gzip check current compression level and set b:gzip_comp_arg. silent! unlet b:gzip_comp_arg if a:cmd[0] == 'g' call s:set_compression(readfile(nm, "b", 1)[0]) endif " Rename to a weird name to avoid the risk of overwriting another file let nmt = expand(":p:h") . "/X~=@l9q5" let nmte = nmt . "." . expand(":e") if rename(nm, nmte) == 0 if &patchmode != "" && getfsize(nm . &patchmode) == -1 " Create patchmode file by creating the decompressed file new call system(a:cmd . " -c -- " . s:escape(nmte) . " > " . s:escape(nmt)) call rename(nmte, nm . &patchmode) else call system(a:cmd . " -- " . s:escape(nmte)) endif call rename(nmt, nm) endif endif endfun " find a file name for the file to be compressed. Use "name" without an " extension if possible. Otherwise use a weird name to avoid overwriting an " existing file. fun s:tempname(name) let fn = fnamemodify(a:name, ":r") if !filereadable(fn) && !isdirectory(fn) return fn endif return fnamemodify(a:name, ":p:h") . "/X~=@l9q5" endfun fun s:escape(name) " shellescape() was added by patch 7.0.111 if exists("*shellescape") return shellescape(a:name) endif return "'" . a:name . "'" endfun " vim: set sw=2 : PK![jcjcvim80/autoload/htmlcomplete.vimnu[" Vim completion script " Language: HTML and XHTML " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " Last Change: 2014 Jun 20 " Distinguish between HTML versions. " To use with other HTML versions add another "elseif" condition to match " proper DOCTYPE. function! htmlcomplete#DetectOmniFlavor() if &filetype == 'xhtml' let b:html_omni_flavor = 'xhtml10s' else let b:html_omni_flavor = 'html401t' endif let i = 1 let line = "" while i < 10 && i < line("$") let line = getline(i) if line =~ '' let b:html_omni_flavor = 'html40' endif if line =~ '\' let b:html_omni_flavor .= 't' elseif line =~ '\' let b:html_omni_flavor .= 'f' else let b:html_omni_flavor .= 's' endif endif endif endfunction function! htmlcomplete#CompleteTags(findstart, base) if a:findstart " locate the start of the word let line = getline('.') let start = col('.') - 1 let curline = line('.') let compl_begin = col('.') - 2 while start >= 0 && line[start - 1] =~ '\(\k\|[!:.-]\)' let start -= 1 endwhile " Handling of entities {{{ if start >= 0 && line[start - 1] =~ '&' let b:entitiescompl = 1 let b:compl_context = '' return start endif " }}} " Handling of ') if style_start > 0 && style_end > 0 let buf_styles = getline(style_start + 1, style_end - 1) for a_style in buf_styles if index(style, a_style) == -1 if diff_style_start == 0 if a_style =~ '\\_s\+.*id='oneCharWidth'.*\_s\+.*id='oneInputWidth'.*\_s\+.*id='oneEmWidth'\)\?\zs/d_ $ ??,$d_ let temp = getline(1,'$') " clean out id on the main content container because we already set it on " the table let temp[0] = substitute(temp[0], " id='vimCodeElement[^']*'", "", "") " undo deletion of start and end part " so we can later save the file as valid html " TODO: restore using grabbed lines if undolevel is 1? normal! 2u if s:settings.use_css call add(html, '
') elseif s:settings.use_xhtml call add(html, '
') else call add(html, '
') endif let html += temp call add(html, '
') " Close this buffer " TODO: the comment above says we're going to allow saving the file " later...but here we discard it? quit! endfor let html[body_line_num] = body_line call add(html, '') call add(html, '') call add(html, s:body_end_line) call add(html, '') " The generated HTML is admittedly ugly and takes a LONG time to fold. " Make sure the user doesn't do syntax folding when loading a generated file, " using a modeline. call add(html, '') let i = 1 let name = "Diff" . (s:settings.use_xhtml ? ".xhtml" : ".html") " Find an unused file name if current file name is already in use while filereadable(name) let name = substitute(name, '\d*\.x\?html$', '', '') . i . '.' . fnamemodify(copy(name), ":t:e") let i += 1 endwhile exe "topleft new " . name setlocal modifiable " just in case some user autocmd creates content in the new buffer, make sure " it is empty before proceeding %d " set the fileencoding to match the charset we'll be using let &l:fileencoding=s:settings.vim_encoding " According to http://www.w3.org/TR/html4/charset.html#doc-char-set, the byte " order mark is highly recommend on the web when using multibyte encodings. But, " it is not a good idea to include it on UTF-8 files. Otherwise, let Vim " determine when it is actually inserted. if s:settings.vim_encoding == 'utf-8' setlocal nobomb else setlocal bomb endif call append(0, html) if len(style) > 0 1 let style_start = search('^')-1 " add required javascript in reverse order so we can just call append again " and again without adjusting {{{ " insert script closing tag call append(style_start, [ \ '', \ s:settings.use_xhtml ? '//]]>' : '-->', \ "" \ ]) " insert script which corrects the size of small input elements in " prevent_copy mode. See 2html.vim for details on why this is needed and how " it works. if !empty(s:settings.prevent_copy) call append(style_start, [ \ '', \ '/* simulate a "ch" unit by asking the browser how big a zero character is */', \ 'function FixCharWidth() {', \ ' /* get the hidden element which gives the width of a single character */', \ ' var goodWidth = document.getElementById("oneCharWidth").clientWidth;', \ ' /* get all input elements, we''ll filter on class later */', \ ' var inputTags = document.getElementsByTagName("input");', \ ' var ratio = 5;', \ ' var inputWidth = document.getElementById("oneInputWidth").clientWidth;', \ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;', \ ' if (inputWidth > goodWidth) {', \ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {', \ ' ratio += 5;', \ ' }', \ ' document.getElementById("vimCodeElement'.s:settings.id_suffix.'").className = "em"+ratio;', \ ' }', \ '}' \ ]) endif " " insert javascript to get IDs from line numbers, and to open a fold before " jumping to any lines contained therein call append(style_start, [ \ " /* Always jump to new location even if the line was hidden inside a fold, or", \ " * we corrected the raw number to a line ID.", \ " */", \ " if (lineElem) {", \ " lineElem.scrollIntoView(true);", \ " }", \ " return true;", \ "}", \ "if ('onhashchange' in window) {", \ " window.onhashchange = JumpToLine;", \ "}" \ ]) if s:settings.dynamic_folds call append(style_start, [ \ "", \ " /* navigate upwards in the DOM tree to open all folds containing the line */", \ " var node = lineElem;", \ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')", \ " {", \ " if (node.className == 'closed-fold')", \ " {", \ " /* toggle open the fold ID (remove window ID) */", \ " toggleFold(node.id.substr(4));", \ " }", \ " node = node.parentNode;", \ " }", \ ]) endif call append(style_start, [ \ "", \ "/* function to open any folds containing a jumped-to line before jumping to it */", \ "function JumpToLine()", \ "{", \ " var lineNum;", \ " lineNum = window.location.hash;", \ " lineNum = lineNum.substr(1); /* strip off '#' */", \ "", \ " if (lineNum.indexOf('L') == -1) {", \ " lineNum = 'L'+lineNum;", \ " }", \ " if (lineNum.indexOf('W') == -1) {", \ " lineNum = 'W1'+lineNum;", \ " }", \ " lineElem = document.getElementById(lineNum);" \ ]) " Insert javascript to toggle matching folds open and closed in all windows, " if dynamic folding is active. if s:settings.dynamic_folds call append(style_start, [ \ " function toggleFold(objID)", \ " {", \ " for (win_num = 1; win_num <= ".len(a:buf_list)."; win_num++)", \ " {", \ " var fold;", \ ' fold = document.getElementById("win"+win_num+objID);', \ " if(fold.className == 'closed-fold')", \ " {", \ " fold.className = 'open-fold';", \ " }", \ " else if (fold.className == 'open-fold')", \ " {", \ " fold.className = 'closed-fold';", \ " }", \ " }", \ " }", \ ]) endif " insert script tag; javascript is always needed for the line number " normalization for URL hashes call append(style_start, [ \ "' let b:InPHPcode = 0 let b:InPHPcode_tofind = s:PHP_startindenttag endif endif " }}} if 1 > b:InPHPcode && !b:InPHPcode_and_script return -1 endif " Indent successive // or # comment the same way the first is {{{ let addSpecial = 0 if cline =~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)' let addSpecial = b:PHP_outdentSLComments if b:PHP_LastIndentedWasComment == 1 return indent(real_PHP_lastindented) endif let b:PHP_LastIndentedWasComment = 1 else let b:PHP_LastIndentedWasComment = 0 endif " }}} " Indent multiline /* comments correctly {{{ if b:PHP_InsideMultilineComment || b:UserIsTypingComment if cline =~ '^\s*\*\%(\/\)\@!' if last_line =~ '^\s*/\*' return indent(lnum) + 1 else return indent(lnum) endif else let b:PHP_InsideMultilineComment = 0 endif endif if !b:PHP_InsideMultilineComment && cline =~ '^\s*/\*\%(.*\*/\)\@!' if getline(v:lnum + 1) !~ '^\s*\*' return -1 endif let b:PHP_InsideMultilineComment = 1 endif " }}} " Things always indented at col 1 (PHP delimiter: , Heredoc end) {{{ if cline =~# '^\s*' && b:PHP_outdentphpescape return 0 endif if cline =~ '^\s*?>' && cline !~# '' let b:PHP_CurrentIndentLevel = b:PHP_default_indenting return indent(FindTheIfOfAnElse(v:lnum, 1)) elseif cline =~# s:defaultORcase return FindTheSwitchIndent(v:lnum) + shiftwidth() * b:PHP_vintage_case_default_indent elseif cline =~ '^\s*)\=\s*{' let previous_line = last_line let last_line_num = lnum while last_line_num > 1 if previous_line =~ terminated || previous_line =~ s:structureHead let ind = indent(last_line_num) if b:PHP_BracesAtCodeLevel let ind = ind + shiftwidth() endif return ind endif let last_line_num = GetLastRealCodeLNum(last_line_num - 1) let previous_line = getline(last_line_num) endwhile elseif last_line =~# unstated && cline !~ '^\s*);\='.endline let ind = ind + shiftwidth() " we indent one level further when the preceding line is not stated return ind + addSpecial elseif (ind != b:PHP_default_indenting || last_line =~ '^[)\]]' ) && last_line =~ terminated let previous_line = last_line let last_line_num = lnum let LastLineClosed = 1 let isSingleLineBlock = 0 while 1 if ! isSingleLineBlock && previous_line =~ '^\s*}\|;\s*}'.endline " XXX call cursor(last_line_num, 1) if previous_line !~ '^}' call search('}\|;\s*}'.endline, 'W') end let oldLastLine = last_line_num let last_line_num = searchpair('{', '', '}', 'bW', 'Skippmatch()') if getline(last_line_num) =~ '^\s*{' let last_line_num = GetLastRealCodeLNum(last_line_num - 1) elseif oldLastLine == last_line_num let isSingleLineBlock = 1 continue endif let previous_line = getline(last_line_num) continue else let isSingleLineBlock = 0 if getline(last_line_num) =~# '^\s*else\%(if\)\=\>' let last_line_num = FindTheIfOfAnElse(last_line_num, 0) continue endif let last_match = last_line_num let one_ahead_indent = indent(last_line_num) let last_line_num = GetLastRealCodeLNum(last_line_num - 1) let two_ahead_indent = indent(last_line_num) let after_previous_line = previous_line let previous_line = getline(last_line_num) if previous_line =~# s:defaultORcase.'\|{'.endline break endif if after_previous_line=~# '^\s*'.s:blockstart.'.*)'.endline && previous_line =~# '[;}]'.endline break endif if one_ahead_indent == two_ahead_indent || last_line_num < 1 if previous_line =~# '\%(;\|^\s*}\)'.endline || last_line_num < 1 break endif endif endif endwhile if indent(last_match) != ind let ind = indent(last_match) let b:PHP_CurrentIndentLevel = b:PHP_default_indenting return ind + addSpecial endif endif if (last_line !~ '^\s*}\%(}}\)\@!') let plinnum = GetLastRealCodeLNum(lnum - 1) else let plinnum = GetLastRealCodeLNum(FindOpenBracket(lnum, 1) - 1) endif let AntepenultimateLine = getline(plinnum) let last_line = substitute(last_line,"\\(//\\|#\\)\\(\\(\\([^\"']*\\([\"']\\)[^\"']*\\5\\)\\+[^\"']*$\\)\\|\\([^\"']*$\\)\\)",'','') if ind == b:PHP_default_indenting if last_line =~ terminated && last_line !~# s:defaultORcase let LastLineClosed = 1 endif endif if !LastLineClosed if last_line =~# '[{(\[]'.endline || last_line =~? '\h\w*\s*(.*,$' && AntepenultimateLine !~ '[,(\[]'.endline && BalanceDirection(last_line) > 0 let dontIndent = 0 if last_line =~ '\S\+\s*{'.endline && last_line !~ '^\s*[)\]]\+\s*{'.endline && last_line !~ s:structureHead let dontIndent = 1 endif if !dontIndent && (!b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{') let ind = ind + shiftwidth() endif if b:PHP_BracesAtCodeLevel || b:PHP_vintage_case_default_indent == 1 let b:PHP_CurrentIndentLevel = ind return ind + addSpecial endif elseif last_line =~ '\S\+\s*),'.endline && BalanceDirection(last_line) < 0 call cursor(lnum, 1) call search('),'.endline, 'W') " line never begins with ) so no need for 'c' flag let openedparent = searchpair('(', '', ')', 'bW', 'Skippmatch()') if openedparent != lnum let ind = indent(openedparent) endif elseif last_line =~ '^\s*'.s:blockstart let ind = ind + shiftwidth() elseif AntepenultimateLine =~ '{'.endline && AntepenultimateLine !~? '^\s*use\>' || AntepenultimateLine =~ terminated || AntepenultimateLine =~# s:defaultORcase let ind = ind + shiftwidth() endif endif if cline =~ '^\s*[)\]];\=' let ind = ind - shiftwidth() endif let b:PHP_CurrentIndentLevel = ind return ind + addSpecial endfunction PK!-#4))vim80/indent/vb.vimnu[" Vim indent file " Language: VisualBasic (ft=vb) / Basic (ft=basic) / SaxBasic (ft=vb) " Author: Johannes Zellner " Last Change: Fri, 18 Jun 2004 07:22:42 CEST " Small update 2010 Jul 28 by Maxim Kim if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal autoindent setlocal indentexpr=VbGetIndent(v:lnum) setlocal indentkeys& setlocal indentkeys+==~else,=~elseif,=~end,=~wend,=~case,=~next,=~select,=~loop,<:> let b:undo_indent = "set ai< indentexpr< indentkeys<" " Only define the function once. if exists("*VbGetIndent") finish endif fun! VbGetIndent(lnum) " labels and preprocessor get zero indent immediately let this_line = getline(a:lnum) let LABELS_OR_PREPROC = '^\s*\(\<\k\+\>:\s*$\|#.*\)' if this_line =~? LABELS_OR_PREPROC return 0 endif " Find a non-blank line above the current line. " Skip over labels and preprocessor directives. let lnum = a:lnum while lnum > 0 let lnum = prevnonblank(lnum - 1) let previous_line = getline(lnum) if previous_line !~? LABELS_OR_PREPROC break endif endwhile " Hit the start of the file, use zero indent. if lnum == 0 return 0 endif let ind = indent(lnum) " Add if previous_line =~? '^\s*\<\(begin\|\%(\%(private\|public\|friend\)\s\+\)\=\%(function\|sub\|property\)\|select\|case\|default\|if\|else\|elseif\|do\|for\|while\|enum\|with\)\>' let ind = ind + shiftwidth() endif " Subtract if this_line =~? '^\s*\\s\+\' if previous_line !~? '^\s*\' let ind = ind - 2 * shiftwidth() else " this case is for an empty 'select' -- 'end select' " (w/o any case statements) like: " " select case readwrite " end select let ind = ind - shiftwidth() endif elseif this_line =~? '^\s*\<\(end\|else\|elseif\|until\|loop\|next\|wend\)\>' let ind = ind - shiftwidth() elseif this_line =~? '^\s*\<\(case\|default\)\>' if previous_line !~? '^\s*\' let ind = ind - shiftwidth() endif endif return ind endfun " vim:sw=4 PK! cvim80/indent/less.vimnu[" Vim indent file " Language: less " Maintainer: Alessandro Vioni " URL: https://github.com/genoma/vim-less " Last Change: 2014 November 24 if exists("b:did_indent") finish endif runtime! indent/css.vim " vim:set sw=2: PK!/FFvim80/indent/rpl.vimnu[" Vim indent file " Language: RPL/2 " Version: 0.2 " Last Change: 2017 Jun 13 " Maintainer: BERTRAND Jol " Only load this indent file when no other was loaded. if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal autoindent setlocal indentkeys+==~end,=~case,=~if,=~then,=~else,=~do,=~until,=~while,=~repeat,=~select,=~default,=~for,=~start,=~next,=~step,<<>,<>> " Define the appropriate indent function but only once setlocal indentexpr=RplGetFreeIndent() if exists("*RplGetFreeIndent") finish endif let b:undo_indent = "set ai< indentkeys< indentexpr<" function RplGetIndent(lnum) let ind = indent(a:lnum) let prevline=getline(a:lnum) " Strip tail comment let prevstat=substitute(prevline, '!.*$', '', '') " Add a shiftwidth to statements following if, iferr, then, else, elseif, " case, select, default, do, until, while, repeat, for, start if prevstat =~? '\<\(if\|iferr\|do\|while\)\>' && prevstat =~? '\' elseif prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)' && prevstat =~? '\s\+>>\($\|\s\+\)' elseif prevstat =~? '\<\(if\|iferr\|then\|else\|elseif\|select\|case\|do\|until\|while\|repeat\|for\|start\|default\)\>' || prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)' let ind = ind + shiftwidth() endif " Subtract a shiftwidth from then, else, elseif, end, until, repeat, next, " step let line = getline(v:lnum) if line =~? '^\s*\(then\|else\|elseif\|until\|repeat\|next\|step\|default\|end\)\>' let ind = ind - shiftwidth() elseif line =~? '^\s*>>\($\|\s\+\)' let ind = ind - shiftwidth() endif return ind endfunction function RplGetFreeIndent() " Find the previous non-blank line let lnum = prevnonblank(v:lnum - 1) " Use zero indent at the top of the file if lnum == 0 return 0 endif let ind=RplGetIndent(lnum) return ind endfunction " vim:sw=2 tw=130 PK!1vim80/indent/html.vimnu[" Vim indent script for HTML " Header: "{{{ " Maintainer: Bram Moolenaar " Original Author: Andy Wokula " Last Change: 2018 Mar 28 " Version: 1.0 " Description: HTML indent script with cached state for faster indenting on a " range of lines. " Supports template systems through hooks. " Supports Closure stylesheets. " " Credits: " indent/html.vim (2006 Jun 05) from J. Zellner " indent/css.vim (2006 Dec 20) from N. Weibull " " History: " 2014 June (v1.0) overhaul (Bram) " 2012 Oct 21 (v0.9) added support for shiftwidth() " 2011 Sep 09 (v0.8) added HTML5 tags (thx to J. Zuckerman) " 2008 Apr 28 (v0.6) revised customization " 2008 Mar 09 (v0.5) fixed 'indk' issue (thx to C.J. Robinson) "}}} " Init Folklore, check user settings (2nd time ++) if exists("b:did_indent") "{{{ finish endif " Load the Javascript indent script first, it defines GetJavascriptIndent(). " Undo the rest. " Load base python indent. if !exists('*GetJavascriptIndent') runtime! indent/javascript.vim endif let b:did_indent = 1 setlocal indentexpr=HtmlIndent() setlocal indentkeys=o,O,,<>>,{,},!^F " Needed for % to work when finding start/end of a tag. setlocal matchpairs+=<:> let b:undo_indent = "setlocal inde< indk<" " b:hi_indent keeps state to speed up indenting consecutive lines. let b:hi_indent = {"lnum": -1} """""" Code below this is loaded only once. """"" if exists("*HtmlIndent") && !exists('g:force_reload_html') call HtmlIndent_CheckUserSettings() finish endif " Allow for line continuation below. let s:cpo_save = &cpo set cpo-=C "}}} " Pattern to match the name of a tag, including custom elements. let s:tagname = '\w\+\(-\w\+\)*' " Check and process settings from b:html_indent and g:html_indent... variables. " Prefer using buffer-local settings over global settings, so that there can " be defaults for all HTML files and exceptions for specific types of HTML " files. func! HtmlIndent_CheckUserSettings() "{{{ let inctags = '' if exists("b:html_indent_inctags") let inctags = b:html_indent_inctags elseif exists("g:html_indent_inctags") let inctags = g:html_indent_inctags endif let b:hi_tags = {} if len(inctags) > 0 call s:AddITags(b:hi_tags, split(inctags, ",")) endif let autotags = '' if exists("b:html_indent_autotags") let autotags = b:html_indent_autotags elseif exists("g:html_indent_autotags") let autotags = g:html_indent_autotags endif let b:hi_removed_tags = {} if len(autotags) > 0 call s:RemoveITags(b:hi_removed_tags, split(autotags, ",")) endif " Syntax names indicating being inside a string of an attribute value. let string_names = [] if exists("b:html_indent_string_names") let string_names = b:html_indent_string_names elseif exists("g:html_indent_string_names") let string_names = g:html_indent_string_names endif let b:hi_insideStringNames = ['htmlString'] if len(string_names) > 0 for s in string_names call add(b:hi_insideStringNames, s) endfor endif " Syntax names indicating being inside a tag. let tag_names = [] if exists("b:html_indent_tag_names") let tag_names = b:html_indent_tag_names elseif exists("g:html_indent_tag_names") let tag_names = g:html_indent_tag_names endif let b:hi_insideTagNames = ['htmlTag', 'htmlScriptTag'] if len(tag_names) > 0 for s in tag_names call add(b:hi_insideTagNames, s) endfor endif let indone = {"zero": 0 \,"auto": "indent(prevnonblank(v:lnum-1))" \,"inc": "b:hi_indent.blocktagind + shiftwidth()"} let script1 = '' if exists("b:html_indent_script1") let script1 = b:html_indent_script1 elseif exists("g:html_indent_script1") let script1 = g:html_indent_script1 endif if len(script1) > 0 let b:hi_js1indent = get(indone, script1, indone.zero) else let b:hi_js1indent = 0 endif let style1 = '' if exists("b:html_indent_style1") let style1 = b:html_indent_style1 elseif exists("g:html_indent_style1") let style1 = g:html_indent_style1 endif if len(style1) > 0 let b:hi_css1indent = get(indone, style1, indone.zero) else let b:hi_css1indent = 0 endif if !exists('b:html_indent_line_limit') if exists('g:html_indent_line_limit') let b:html_indent_line_limit = g:html_indent_line_limit else let b:html_indent_line_limit = 200 endif endif endfunc "}}} " Init Script Vars "{{{ let b:hi_lasttick = 0 let b:hi_newstate = {} let s:countonly = 0 "}}} " Fill the s:indent_tags dict with known tags. " The key is "tagname" or "/tagname". {{{ " The value is: " 1 opening tag " 2 "pre" " 3 "script" " 4 "style" " 5 comment start " 6 conditional comment start " -1 closing tag " -2 "/pre" " -3 "/script" " -4 "/style" " -5 comment end " -6 conditional comment end let s:indent_tags = {} let s:endtags = [0,0,0,0,0,0,0] " long enough for the highest index "}}} " Add a list of tag names for a pair of to "tags". func! s:AddITags(tags, taglist) "{{{ for itag in a:taglist let a:tags[itag] = 1 let a:tags['/' . itag] = -1 endfor endfunc "}}} " Take a list of tag name pairs that are not to be used as tag pairs. func! s:RemoveITags(tags, taglist) "{{{ for itag in a:taglist let a:tags[itag] = 1 let a:tags['/' . itag] = 1 endfor endfunc "}}} " Add a block tag, that is a tag with a different kind of indenting. func! s:AddBlockTag(tag, id, ...) "{{{ if !(a:id >= 2 && a:id < len(s:endtags)) echoerr 'AddBlockTag ' . a:id return endif let s:indent_tags[a:tag] = a:id if a:0 == 0 let s:indent_tags['/' . a:tag] = -a:id let s:endtags[a:id] = "" else let s:indent_tags[a:1] = -a:id let s:endtags[a:id] = a:1 endif endfunc "}}} " Add known tag pairs. " Self-closing tags and tags that are sometimes {{{ " self-closing (e.g.,

) are not here (when encountering

we can find " the matching

, but not the other way around). Known self-closing tags: " 'p', 'img', 'source'. " Old HTML tags: call s:AddITags(s:indent_tags, [ \ 'a', 'abbr', 'acronym', 'address', 'b', 'bdo', 'big', \ 'blockquote', 'body', 'button', 'caption', 'center', 'cite', 'code', \ 'colgroup', 'del', 'dfn', 'dir', 'div', 'dl', 'em', 'fieldset', 'font', \ 'form', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'html', \ 'i', 'iframe', 'ins', 'kbd', 'label', 'legend', 'li', \ 'map', 'menu', 'noframes', 'noscript', 'object', 'ol', \ 'optgroup', 'q', 's', 'samp', 'select', 'small', 'span', 'strong', 'sub', \ 'sup', 'table', 'textarea', 'title', 'tt', 'u', 'ul', 'var', 'th', 'td', \ 'tr', 'tbody', 'tfoot', 'thead']) " New HTML5 elements: call s:AddITags(s:indent_tags, [ \ 'area', 'article', 'aside', 'audio', 'bdi', 'canvas', \ 'command', 'data', 'datalist', 'details', 'embed', 'figcaption', \ 'figure', 'footer', 'header', 'keygen', 'main', 'mark', 'meter', \ 'nav', 'output', 'picture', 'progress', 'rp', 'rt', 'ruby', 'section', \ 'summary', 'svg', 'time', 'track', 'video', 'wbr']) " Tags added for web components: call s:AddITags(s:indent_tags, [ \ 'content', 'shadow', 'template']) "}}} " Add Block Tags: these contain alien content "{{{ call s:AddBlockTag('pre', 2) call s:AddBlockTag('script', 3) call s:AddBlockTag('style', 4) call s:AddBlockTag('') call s:AddBlockTag('') "}}} " Return non-zero when "tagname" is an opening tag, not being a block tag, for " which there should be a closing tag. Can be used by scripts that include " HTML indenting. func! HtmlIndent_IsOpenTag(tagname) "{{{ if get(s:indent_tags, a:tagname) == 1 return 1 endif return get(b:hi_tags, a:tagname) == 1 endfunc "}}} " Get the value for "tagname", taking care of buffer-local tags. func! s:get_tag(tagname) "{{{ let i = get(s:indent_tags, a:tagname) if (i == 1 || i == -1) && get(b:hi_removed_tags, a:tagname) != 0 return 0 endif if i == 0 let i = get(b:hi_tags, a:tagname) endif return i endfunc "}}} " Count the number of start and end tags in "text". func! s:CountITags(text) "{{{ " Store the result in s:curind and s:nextrel. let s:curind = 0 " relative indent steps for current line [unit &sw]: let s:nextrel = 0 " relative indent steps for next line [unit &sw]: let s:block = 0 " assume starting outside of a block let s:countonly = 1 " don't change state call substitute(a:text, '<\zs/\=' . s:tagname . '\>\|\|', '\=s:CheckTag(submatch(0))', 'g') let s:countonly = 0 endfunc "}}} " Count the number of start and end tags in text. func! s:CountTagsAndState(text) "{{{ " Store the result in s:curind and s:nextrel. Update b:hi_newstate.block. let s:curind = 0 " relative indent steps for current line [unit &sw]: let s:nextrel = 0 " relative indent steps for next line [unit &sw]: let s:block = b:hi_newstate.block let tmp = substitute(a:text, '<\zs/\=' . s:tagname . '\>\|\|', '\=s:CheckTag(submatch(0))', 'g') if s:block == 3 let b:hi_newstate.scripttype = s:GetScriptType(matchstr(tmp, '\C.*\zs[^>]*')) endif let b:hi_newstate.block = s:block endfunc "}}} " Used by s:CountITags() and s:CountTagsAndState(). func! s:CheckTag(itag) "{{{ " Returns an empty string or "SCRIPT". " a:itag can be "tag" or "/tag" or "" if (s:CheckCustomTag(a:itag)) return "" endif let ind = s:get_tag(a:itag) if ind == -1 " closing tag if s:block != 0 " ignore itag within a block return "" endif if s:nextrel == 0 let s:curind -= 1 else let s:nextrel -= 1 endif elseif ind == 1 " opening tag if s:block != 0 return "" endif let s:nextrel += 1 elseif ind != 0 " block-tag (opening or closing) return s:CheckBlockTag(a:itag, ind) " else ind==0 (other tag found): keep indent endif return "" endfunc "}}} " Used by s:CheckTag(). Returns an empty string or "SCRIPT". func! s:CheckBlockTag(blocktag, ind) "{{{ if a:ind > 0 " a block starts here if s:block != 0 " already in a block (nesting) - ignore " especially ignore comments after other blocktags return "" endif let s:block = a:ind " block type if s:countonly return "" endif let b:hi_newstate.blocklnr = v:lnum " save allover indent for the endtag let b:hi_newstate.blocktagind = b:hi_indent.baseindent + (s:nextrel + s:curind) * shiftwidth() if a:ind == 3 return "SCRIPT" " all except this must be lowercase " line is to be checked again for the type attribute endif else let s:block = 0 " we get here if starting and closing a block-tag on the same line endif return "" endfunc "}}} " Used by s:CheckTag(). func! s:CheckCustomTag(ctag) "{{{ " Returns 1 if ctag is the tag for a custom element, 0 otherwise. " a:ctag can be "tag" or "/tag" or "" let pattern = '\%\(\w\+-\)\+\w\+' if match(a:ctag, pattern) == -1 return 0 endif if matchstr(a:ctag, '\/\ze.\+') == "/" " closing tag if s:block != 0 " ignore ctag within a block return 1 endif if s:nextrel == 0 let s:curind -= 1 else let s:nextrel -= 1 endif else " opening tag if s:block != 0 return 1 endif let s:nextrel += 1 endif return 1 endfunc "}}} " Return the See |mysyntaxfile-add| for installing script languages permanently. APACHE *apache.vim* *ft-apache-syntax* The apache syntax file provides syntax highlighting for Apache HTTP server version 2.2.3. *asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k* ASSEMBLY *ft-asm-syntax* *ft-asmh8300-syntax* *ft-nasm-syntax* *ft-masm-syntax* *ft-asm68k-syntax* *fasm.vim* Files matching "*.i" could be Progress or Assembly. If the automatic detection doesn't work for you, or you don't edit Progress at all, use this in your startup vimrc: > :let filetype_i = "asm" Replace "asm" with the type of assembly you use. There are many types of assembly languages that all use the same file name extensions. Therefore you will have to select the type yourself, or add a line in the assembly file that Vim will recognize. Currently these syntax files are included: asm GNU assembly (the default) asm68k Motorola 680x0 assembly asmh8300 Hitachi H-8300 version of GNU assembly ia64 Intel Itanium 64 fasm Flat assembly (http://flatassembler.net) masm Microsoft assembly (probably works for any 80x86) nasm Netwide assembly tasm Turbo Assembly (with opcodes 80x86 up to Pentium, and MMX) pic PIC assembly (currently for PIC16F84) The most flexible is to add a line in your assembly file containing: > asmsyntax=nasm Replace "nasm" with the name of the real assembly syntax. This line must be one of the first five lines in the file. No non-white text must be immediately before or after this text. Note that specifying asmsyntax=foo is equivalent to setting ft=foo in a |modeline|, and that in case of a conflict between the two settings the one from the modeline will take precedence (in particular, if you have ft=asm in the modeline, you will get the GNU syntax highlighting regardless of what is specified as asmsyntax). The syntax type can always be overruled for a specific buffer by setting the b:asmsyntax variable: > :let b:asmsyntax = "nasm" If b:asmsyntax is not set, either automatically or by hand, then the value of the global variable asmsyntax is used. This can be seen as a default assembly language: > :let asmsyntax = "nasm" As a last resort, if nothing is defined, the "asm" syntax is used. Netwide assembler (nasm.vim) optional highlighting ~ To enable a feature: > :let {variable}=1|set syntax=nasm To disable a feature: > :unlet {variable} |set syntax=nasm Variable Highlight ~ nasm_loose_syntax unofficial parser allowed syntax not as Error (parser dependent; not recommended) nasm_ctx_outside_macro contexts outside macro not as Error nasm_no_warn potentially risky syntax not as ToDo ASPPERL and ASPVBS *ft-aspperl-syntax* *ft-aspvbs-syntax* *.asp and *.asa files could be either Perl or Visual Basic script. Since it's hard to detect this you can set two global variables to tell Vim what you are using. For Perl script use: > :let g:filetype_asa = "aspperl" :let g:filetype_asp = "aspperl" For Visual Basic use: > :let g:filetype_asa = "aspvbs" :let g:filetype_asp = "aspvbs" BAAN *baan.vim* *baan-syntax* The baan.vim gives syntax support for BaanC of release BaanIV upto SSA ERP LN for both 3 GL and 4 GL programming. Large number of standard defines/constants are supported. Some special violation of coding standards will be signalled when one specify in ones |.vimrc|: > let baan_code_stds=1 *baan-folding* Syntax folding can be enabled at various levels through the variables mentioned below (Set those in your |.vimrc|). The more complex folding on source blocks and SQL can be CPU intensive. To allow any folding and enable folding at function level use: > let baan_fold=1 Folding can be enabled at source block level as if, while, for ,... The indentation preceding the begin/end keywords has to match (spaces are not considered equal to a tab). > let baan_fold_block=1 Folding can be enabled for embedded SQL blocks as SELECT, SELECTDO, SELECTEMPTY, ... The indentation preceding the begin/end keywords has to match (spaces are not considered equal to a tab). > let baan_fold_sql=1 Note: Block folding can result in many small folds. It is suggested to |:set| the options 'foldminlines' and 'foldnestmax' in |.vimrc| or use |:setlocal| in .../after/syntax/baan.vim (see |after-directory|). Eg: > set foldminlines=5 set foldnestmax=6 BASIC *basic.vim* *vb.vim* *ft-basic-syntax* *ft-vb-syntax* Both Visual Basic and "normal" basic use the extension ".bas". To detect which one should be used, Vim checks for the string "VB_Name" in the first five lines of the file. If it is not found, filetype will be "basic", otherwise "vb". Files with the ".frm" extension will always be seen as Visual Basic. C *c.vim* *ft-c-syntax* A few things in C highlighting are optional. To enable them assign any value to the respective variable. Example: > :let c_comment_strings = 1 To disable them use ":unlet". Example: > :unlet c_comment_strings Variable Highlight ~ *c_gnu* GNU gcc specific items *c_comment_strings* strings and numbers inside a comment *c_space_errors* trailing white space and spaces before a *c_no_trail_space_error* ... but no trailing spaces *c_no_tab_space_error* ... but no spaces before a *c_no_bracket_error* don't highlight {}; inside [] as errors *c_no_curly_error* don't highlight {}; inside [] and () as errors; except { and } in first column Default is to highlight them, otherwise you can't spot a missing ")". *c_curly_error* highlight a missing }; this forces syncing from the start of the file, can be slow *c_no_ansi* don't do standard ANSI types and constants *c_ansi_typedefs* ... but do standard ANSI types *c_ansi_constants* ... but do standard ANSI constants *c_no_utf* don't highlight \u and \U in strings *c_syntax_for_h* for *.h files use C syntax instead of C++ and use objc syntax instead of objcpp *c_no_if0* don't highlight "#if 0" blocks as comments *c_no_cformat* don't highlight %-formats in strings *c_no_c99* don't highlight C99 standard items *c_no_c11* don't highlight C11 standard items *c_no_bsd* don't highlight BSD specific types When 'foldmethod' is set to "syntax" then /* */ comments and { } blocks will become a fold. If you don't want comments to become a fold use: > :let c_no_comment_fold = 1 "#if 0" blocks are also folded, unless: > :let c_no_if0_fold = 1 If you notice highlighting errors while scrolling backwards, which are fixed when redrawing with CTRL-L, try setting the "c_minlines" internal variable to a larger number: > :let c_minlines = 100 This will make the syntax synchronization start 100 lines before the first displayed line. The default value is 50 (15 when c_no_if0 is set). The disadvantage of using a larger number is that redrawing can become slow. When using the "#if 0" / "#endif" comment highlighting, notice that this only works when the "#if 0" is within "c_minlines" from the top of the window. If you have a long "#if 0" construct it will not be highlighted correctly. To match extra items in comments, use the cCommentGroup cluster. Example: > :au Syntax c call MyCadd() :function MyCadd() : syn keyword cMyItem contained Ni : syn cluster cCommentGroup add=cMyItem : hi link cMyItem Title :endfun ANSI constants will be highlighted with the "cConstant" group. This includes "NULL", "SIG_IGN" and others. But not "TRUE", for example, because this is not in the ANSI standard. If you find this confusing, remove the cConstant highlighting: > :hi link cConstant NONE If you see '{' and '}' highlighted as an error where they are OK, reset the highlighting for cErrInParen and cErrInBracket. If you want to use folding in your C files, you can add these lines in a file in the "after" directory in 'runtimepath'. For Unix this would be ~/.vim/after/syntax/c.vim. > syn sync fromstart set foldmethod=syntax CH *ch.vim* *ft-ch-syntax* C/C++ interpreter. Ch has similar syntax highlighting to C and builds upon the C syntax file. See |c.vim| for all the settings that are available for C. By setting a variable you can tell Vim to use Ch syntax for *.h files, instead of C or C++: > :let ch_syntax_for_h = 1 CHILL *chill.vim* *ft-chill-syntax* Chill syntax highlighting is similar to C. See |c.vim| for all the settings that are available. Additionally there is: chill_space_errors like c_space_errors chill_comment_string like c_comment_strings chill_minlines like c_minlines CHANGELOG *changelog.vim* *ft-changelog-syntax* ChangeLog supports highlighting spaces at the start of a line. If you do not like this, add following line to your .vimrc: > let g:changelog_spacing_errors = 0 This works the next time you edit a changelog file. You can also use "b:changelog_spacing_errors" to set this per buffer (before loading the syntax file). You can change the highlighting used, e.g., to flag the spaces as an error: > :hi link ChangelogError Error Or to avoid the highlighting: > :hi link ChangelogError NONE This works immediately. CLOJURE *ft-clojure-syntax* The default syntax groups can be augmented through the *g:clojure_syntax_keywords* and *b:clojure_syntax_keywords* variables. The value should be a |Dictionary| of syntax group names to a |List| of custom identifiers: > let g:clojure_syntax_keywords = { \ 'clojureMacro': ["defproject", "defcustom"], \ 'clojureFunc': ["string/join", "string/replace"] \ } < Refer to the Clojure syntax script for valid syntax group names. If the |buffer-variable| *b:clojure_syntax_without_core_keywords* is set, only language constants and special forms are matched. Setting *g:clojure_fold* enables folding Clojure code via the syntax engine. Any list, vector, or map that extends over more than one line can be folded using the standard Vim |fold-commands|. Please note that this option does not work with scripts that redefine the bracket syntax regions, such as rainbow-parentheses plugins. This option is off by default. > " Default let g:clojure_fold = 0 < COBOL *cobol.vim* *ft-cobol-syntax* COBOL highlighting has different needs for legacy code than it does for fresh development. This is due to differences in what is being done (maintenance versus development) and other factors. To enable legacy code highlighting, add this line to your .vimrc: > :let cobol_legacy_code = 1 To disable it again, use this: > :unlet cobol_legacy_code COLD FUSION *coldfusion.vim* *ft-coldfusion-syntax* The ColdFusion has its own version of HTML comments. To turn on ColdFusion comment highlighting, add the following line to your startup file: > :let html_wrong_comments = 1 The ColdFusion syntax file is based on the HTML syntax file. CPP *cpp.vim* *ft-cpp-syntax* Most of things are same as |ft-c-syntax|. Variable Highlight ~ cpp_no_cpp11 don't highlight C++11 standard items cpp_no_cpp14 don't highlight C++14 standard items CSH *csh.vim* *ft-csh-syntax* This covers the shell named "csh". Note that on some systems tcsh is actually used. Detecting whether a file is csh or tcsh is notoriously hard. Some systems symlink /bin/csh to /bin/tcsh, making it almost impossible to distinguish between csh and tcsh. In case VIM guesses wrong you can set the "filetype_csh" variable. For using csh: *g:filetype_csh* > :let g:filetype_csh = "csh" For using tcsh: > :let g:filetype_csh = "tcsh" Any script with a tcsh extension or a standard tcsh filename (.tcshrc, tcsh.tcshrc, tcsh.login) will have filetype tcsh. All other tcsh/csh scripts will be classified as tcsh, UNLESS the "filetype_csh" variable exists. If the "filetype_csh" variable exists, the filetype will be set to the value of the variable. CYNLIB *cynlib.vim* *ft-cynlib-syntax* Cynlib files are C++ files that use the Cynlib class library to enable hardware modelling and simulation using C++. Typically Cynlib files have a .cc or a .cpp extension, which makes it very difficult to distinguish them from a normal C++ file. Thus, to enable Cynlib highlighting for .cc files, add this line to your .vimrc file: > :let cynlib_cyntax_for_cc=1 Similarly for cpp files (this extension is only usually used in Windows) > :let cynlib_cyntax_for_cpp=1 To disable these again, use this: > :unlet cynlib_cyntax_for_cc :unlet cynlib_cyntax_for_cpp < CWEB *cweb.vim* *ft-cweb-syntax* Files matching "*.w" could be Progress or cweb. If the automatic detection doesn't work for you, or you don't edit Progress at all, use this in your startup vimrc: > :let filetype_w = "cweb" DESKTOP *desktop.vim* *ft-desktop-syntax* Primary goal of this syntax file is to highlight .desktop and .directory files according to freedesktop.org standard: http://standards.freedesktop.org/desktop-entry-spec/latest/ But actually almost none implements this standard fully. Thus it will highlight all Unix ini files. But you can force strict highlighting according to standard by placing this in your vimrc file: > :let enforce_freedesktop_standard = 1 DIFF *diff.vim* The diff highlighting normally finds translated headers. This can be slow if there are very long lines in the file. To disable translations: > :let diff_translations = 0 Also see |diff-slow|. DIRCOLORS *dircolors.vim* *ft-dircolors-syntax* The dircolors utility highlighting definition has one option. It exists to provide compatibility with the Slackware GNU/Linux distributions version of the command. It adds a few keywords that are generally ignored by most versions. On Slackware systems, however, the utility accepts the keywords and uses them for processing. To enable the Slackware keywords add the following line to your startup file: > let dircolors_is_slackware = 1 DOCBOOK *docbk.vim* *ft-docbk-syntax* *docbook* DOCBOOK XML *docbkxml.vim* *ft-docbkxml-syntax* DOCBOOK SGML *docbksgml.vim* *ft-docbksgml-syntax* There are two types of DocBook files: SGML and XML. To specify what type you are using the "b:docbk_type" variable should be set. Vim does this for you automatically if it can recognize the type. When Vim can't guess it the type defaults to XML. You can set the type manually: > :let docbk_type = "sgml" or: > :let docbk_type = "xml" You need to do this before loading the syntax file, which is complicated. Simpler is setting the filetype to "docbkxml" or "docbksgml": > :set filetype=docbksgml or: > :set filetype=docbkxml You can specify the DocBook version: > :let docbk_ver = 3 When not set 4 is used. DOSBATCH *dosbatch.vim* *ft-dosbatch-syntax* There is one option with highlighting DOS batch files. This covers new extensions to the Command Interpreter introduced with Windows 2000 and is controlled by the variable dosbatch_cmdextversion. For Windows NT this should have the value 1, and for Windows 2000 it should be 2. Select the version you want with the following line: > :let dosbatch_cmdextversion = 1 If this variable is not defined it defaults to a value of 2 to support Windows 2000. A second option covers whether *.btm files should be detected as type "dosbatch" (MS-DOS batch files) or type "btm" (4DOS batch files). The latter is used by default. You may select the former with the following line: > :let g:dosbatch_syntax_for_btm = 1 If this variable is undefined or zero, btm syntax is selected. DOXYGEN *doxygen.vim* *doxygen-syntax* Doxygen generates code documentation using a special documentation format (similar to Javadoc). This syntax script adds doxygen highlighting to c, cpp, idl and php files, and should also work with java. There are a few of ways to turn on doxygen formatting. It can be done explicitly or in a modeline by appending '.doxygen' to the syntax of the file. Example: > :set syntax=c.doxygen or > // vim:syntax=c.doxygen It can also be done automatically for C, C++, C#, IDL and PHP files by setting the global or buffer-local variable load_doxygen_syntax. This is done by adding the following to your .vimrc. > :let g:load_doxygen_syntax=1 There are a couple of variables that have an effect on syntax highlighting, and are to do with non-standard highlighting options. Variable Default Effect ~ g:doxygen_enhanced_color g:doxygen_enhanced_colour 0 Use non-standard highlighting for doxygen comments. doxygen_my_rendering 0 Disable rendering of HTML bold, italic and html_my_rendering underline. doxygen_javadoc_autobrief 1 Set to 0 to disable javadoc autobrief colour highlighting. doxygen_end_punctuation '[.]' Set to regexp match for the ending punctuation of brief There are also some hilight groups worth mentioning as they can be useful in configuration. Highlight Effect ~ doxygenErrorComment The colour of an end-comment when missing punctuation in a code, verbatim or dot section doxygenLinkError The colour of an end-comment when missing the \endlink from a \link section. DTD *dtd.vim* *ft-dtd-syntax* The DTD syntax highlighting is case sensitive by default. To disable case-sensitive highlighting, add the following line to your startup file: > :let dtd_ignore_case=1 The DTD syntax file will highlight unknown tags as errors. If this is annoying, it can be turned off by setting: > :let dtd_no_tag_errors=1 before sourcing the dtd.vim syntax file. Parameter entity names are highlighted in the definition using the 'Type' highlighting group and 'Comment' for punctuation and '%'. Parameter entity instances are highlighted using the 'Constant' highlighting group and the 'Type' highlighting group for the delimiters % and ;. This can be turned off by setting: > :let dtd_no_param_entities=1 The DTD syntax file is also included by xml.vim to highlight included dtd's. EIFFEL *eiffel.vim* *ft-eiffel-syntax* While Eiffel is not case-sensitive, its style guidelines are, and the syntax highlighting file encourages their use. This also allows to highlight class names differently. If you want to disable case-sensitive highlighting, add the following line to your startup file: > :let eiffel_ignore_case=1 Case still matters for class names and TODO marks in comments. Conversely, for even stricter checks, add one of the following lines: > :let eiffel_strict=1 :let eiffel_pedantic=1 Setting eiffel_strict will only catch improper capitalization for the five predefined words "Current", "Void", "Result", "Precursor", and "NONE", to warn against their accidental use as feature or class names. Setting eiffel_pedantic will enforce adherence to the Eiffel style guidelines fairly rigorously (like arbitrary mixes of upper- and lowercase letters as well as outdated ways to capitalize keywords). If you want to use the lower-case version of "Current", "Void", "Result", and "Precursor", you can use > :let eiffel_lower_case_predef=1 instead of completely turning case-sensitive highlighting off. Support for ISE's proposed new creation syntax that is already experimentally handled by some compilers can be enabled by: > :let eiffel_ise=1 Finally, some vendors support hexadecimal constants. To handle them, add > :let eiffel_hex_constants=1 to your startup file. EUPHORIA *euphoria3.vim* *euphoria4.vim* *ft-euphoria-syntax* Two syntax highlighting files exists for Euphoria. One for Euphoria version 3.1.1, which is the default syntax highlighting file, and one for Euphoria version 4.0.5 or later. Euphoria version 3.1.1 (http://www.rapideuphoria.com/) is still necessary for developing applications for the DOS platform, which Euphoria version 4 (http://www.openeuphoria.org/) does not support. The following file extensions are auto-detected as Euphoria file type: *.e, *.eu, *.ew, *.ex, *.exu, *.exw *.E, *.EU, *.EW, *.EX, *.EXU, *.EXW To select syntax highlighting file for Euphoria, as well as for auto-detecting the *.e and *.E file extensions as Euphoria file type, add the following line to your startup file: > :let filetype_euphoria="euphoria3" or :let filetype_euphoria="euphoria4" ERLANG *erlang.vim* *ft-erlang-syntax* Erlang is a functional programming language developed by Ericsson. Files with the following extensions are recognized as Erlang files: erl, hrl, yaws. The BIFs (built-in functions) are highlighted by default. To disable this, put the following line in your vimrc: > :let g:erlang_highlight_bifs = 0 To enable highlighting some special atoms, put this in your vimrc: > :let g:erlang_highlight_special_atoms = 1 FLEXWIKI *flexwiki.vim* *ft-flexwiki-syntax* FlexWiki is an ASP.NET-based wiki package available at http://www.flexwiki.com NOTE: this site currently doesn't work, on Wikipedia is mentioned that development stopped in 2009. Syntax highlighting is available for the most common elements of FlexWiki syntax. The associated ftplugin script sets some buffer-local options to make editing FlexWiki pages more convenient. FlexWiki considers a newline as the start of a new paragraph, so the ftplugin sets 'tw'=0 (unlimited line length), 'wrap' (wrap long lines instead of using horizontal scrolling), 'linebreak' (to wrap at a character in 'breakat' instead of at the last char on screen), and so on. It also includes some keymaps that are disabled by default. If you want to enable the keymaps that make "j" and "k" and the cursor keys move up and down by display lines, add this to your .vimrc: > :let flexwiki_maps = 1 FORM *form.vim* *ft-form-syntax* The coloring scheme for syntax elements in the FORM file uses the default modes Conditional, Number, Statement, Comment, PreProc, Type, and String, following the language specifications in 'Symbolic Manipulation with FORM' by J.A.M. Vermaseren, CAN, Netherlands, 1991. If you want include your own changes to the default colors, you have to redefine the following syntax groups: - formConditional - formNumber - formStatement - formHeaderStatement - formComment - formPreProc - formDirective - formType - formString Note that the form.vim syntax file implements FORM preprocessor commands and directives per default in the same syntax group. A predefined enhanced color mode for FORM is available to distinguish between header statements and statements in the body of a FORM program. To activate this mode define the following variable in your vimrc file > :let form_enhanced_color=1 The enhanced mode also takes advantage of additional color features for a dark gvim display. Here, statements are colored LightYellow instead of Yellow, and conditionals are LightBlue for better distinction. FORTRAN *fortran.vim* *ft-fortran-syntax* Default highlighting and dialect ~ Highlighting appropriate for Fortran 2008 is used by default. This choice should be appropriate for most users most of the time because Fortran 2008 is almost a superset of previous versions (Fortran 2003, 95, 90, and 77). Fortran source code form ~ Fortran code can be in either fixed or free source form. Note that the syntax highlighting will not be correct if the form is incorrectly set. When you create a new fortran file, the syntax script assumes fixed source form. If you always use free source form, then > :let fortran_free_source=1 in your .vimrc prior to the :syntax on command. If you always use fixed source form, then > :let fortran_fixed_source=1 in your .vimrc prior to the :syntax on command. If the form of the source code depends, in a non-standard way, upon the file extension, then it is most convenient to set fortran_free_source in a ftplugin file. For more information on ftplugin files, see |ftplugin|. Note that this will work only if the "filetype plugin indent on" command precedes the "syntax on" command in your .vimrc file. When you edit an existing fortran file, the syntax script will assume free source form if the fortran_free_source variable has been set, and assumes fixed source form if the fortran_fixed_source variable has been set. If neither of these variables have been set, the syntax script attempts to determine which source form has been used by examining the file extension using conventions common to the ifort, gfortran, Cray, NAG, and PathScale compilers (.f, .for, .f77 for fixed-source, .f90, .f95, .f03, .f08 for free-source). If none of this works, then the script examines the first five columns of the first 500 lines of your file. If no signs of free source form are detected, then the file is assumed to be in fixed source form. The algorithm should work in the vast majority of cases. In some cases, such as a file that begins with 500 or more full-line comments, the script may incorrectly decide that the fortran code is in fixed form. If that happens, just add a non-comment statement beginning anywhere in the first five columns of the first twenty-five lines, save (:w) and then reload (:e!) the file. Tabs in fortran files ~ Tabs are not recognized by the Fortran standards. Tabs are not a good idea in fixed format fortran source code which requires fixed column boundaries. Therefore, tabs are marked as errors. Nevertheless, some programmers like using tabs. If your fortran files contain tabs, then you should set the variable fortran_have_tabs in your .vimrc with a command such as > :let fortran_have_tabs=1 placed prior to the :syntax on command. Unfortunately, the use of tabs will mean that the syntax file will not be able to detect incorrect margins. Syntax folding of fortran files ~ If you wish to use foldmethod=syntax, then you must first set the variable fortran_fold with a command such as > :let fortran_fold=1 to instruct the syntax script to define fold regions for program units, that is main programs starting with a program statement, subroutines, function subprograms, block data subprograms, interface blocks, and modules. If you also set the variable fortran_fold_conditionals with a command such as > :let fortran_fold_conditionals=1 then fold regions will also be defined for do loops, if blocks, and select case constructs. If you also set the variable fortran_fold_multilinecomments with a command such as > :let fortran_fold_multilinecomments=1 then fold regions will also be defined for three or more consecutive comment lines. Note that defining fold regions can be slow for large files. If fortran_fold, and possibly fortran_fold_conditionals and/or fortran_fold_multilinecomments, have been set, then vim will fold your file if you set foldmethod=syntax. Comments or blank lines placed between two program units are not folded because they are seen as not belonging to any program unit. More precise fortran syntax ~ If you set the variable fortran_more_precise with a command such as > :let fortran_more_precise=1 then the syntax coloring will be more precise but slower. In particular, statement labels used in do, goto and arithmetic if statements will be recognized, as will construct names at the end of a do, if, select or forall construct. Non-default fortran dialects ~ The syntax script supports two Fortran dialects: f08 and F. You will probably find the default highlighting (f08) satisfactory. A few legacy constructs deleted or declared obsolescent in the 2008 standard are highlighted as todo items. If you use F, the advantage of setting the dialect appropriately is that other legacy features excluded from F will be highlighted as todo items and that free source form will be assumed. The dialect can be selected in various ways. If all your fortran files use the same dialect, set the global variable fortran_dialect in your .vimrc prior to your syntax on statement. The case-sensitive, permissible values of fortran_dialect are "f08" or "F". Invalid values of fortran_dialect are ignored. If the dialect depends upon the file extension, then it is most convenient to set a buffer-local variable in a ftplugin file. For more information on ftplugin files, see |ftplugin|. For example, if all your fortran files with an .f90 extension are written in the F subset, your ftplugin file should contain the code > let s:extfname = expand("%:e") if s:extfname ==? "f90" let b:fortran_dialect="F" else unlet! b:fortran_dialect endif Note that this will work only if the "filetype plugin indent on" command precedes the "syntax on" command in your .vimrc file. Finer control is necessary if the file extension does not uniquely identify the dialect. You can override the default dialect, on a file-by-file basis, by including a comment with the directive "fortran_dialect=xx" (where xx=F or f08) in one of the first three lines in your file. For example, your older .f files may be legacy code but your newer ones may be F codes, and you would identify the latter by including in the first three lines of those files a Fortran comment of the form > ! fortran_dialect=F For previous versions of the syntax, you may have set fortran_dialect to the now-obsolete values "f77", "f90", "f95", or "elf". Such settings will be silently handled as "f08". Users of "elf" may wish to experiment with "F" instead. The syntax/fortran.vim script contains embedded comments that tell you how to comment and/or uncomment some lines to (a) activate recognition of some non-standard, vendor-supplied intrinsics and (b) to prevent features deleted or declared obsolescent in the 2008 standard from being highlighted as todo items. Limitations ~ Parenthesis checking does not catch too few closing parentheses. Hollerith strings are not recognized. Some keywords may be highlighted incorrectly because Fortran90 has no reserved words. For further information related to fortran, see |ft-fortran-indent| and |ft-fortran-plugin|. FVWM CONFIGURATION FILES *fvwm.vim* *ft-fvwm-syntax* In order for Vim to recognize Fvwm configuration files that do not match the patterns *fvwmrc* or *fvwm2rc* , you must put additional patterns appropriate to your system in your myfiletypes.vim file. For these patterns, you must set the variable "b:fvwm_version" to the major version number of Fvwm, and the 'filetype' option to fvwm. For example, to make Vim identify all files in /etc/X11/fvwm2/ as Fvwm2 configuration files, add the following: > :au! BufNewFile,BufRead /etc/X11/fvwm2/* let b:fvwm_version = 2 | \ set filetype=fvwm If you'd like Vim to highlight all valid color names, tell it where to find the color database (rgb.txt) on your system. Do this by setting "rgb_file" to its location. Assuming your color database is located in /usr/X11/lib/X11/, you should add the line > :let rgb_file = "/usr/X11/lib/X11/rgb.txt" to your .vimrc file. GSP *gsp.vim* *ft-gsp-syntax* The default coloring style for GSP pages is defined by |html.vim|, and the coloring for java code (within java tags or inline between backticks) is defined by |java.vim|. The following HTML groups defined in |html.vim| are redefined to incorporate and highlight inline java code: htmlString htmlValue htmlEndTag htmlTag htmlTagN Highlighting should look fine most of the places where you'd see inline java code, but in some special cases it may not. To add another HTML group where you will have inline java code where it does not highlight correctly, just copy the line you want from |html.vim| and add gspJava to the contains clause. The backticks for inline java are highlighted according to the htmlError group to make them easier to see. GROFF *groff.vim* *ft-groff-syntax* The groff syntax file is a wrapper for |nroff.vim|, see the notes under that heading for examples of use and configuration. The purpose of this wrapper is to set up groff syntax extensions by setting the filetype from a |modeline| or in a personal filetype definitions file (see |filetype.txt|). HASKELL *haskell.vim* *lhaskell.vim* *ft-haskell-syntax* The Haskell syntax files support plain Haskell code as well as literate Haskell code, the latter in both Bird style and TeX style. The Haskell syntax highlighting will also highlight C preprocessor directives. If you want to highlight delimiter characters (useful if you have a light-coloured background), add to your .vimrc: > :let hs_highlight_delimiters = 1 To treat True and False as keywords as opposed to ordinary identifiers, add: > :let hs_highlight_boolean = 1 To also treat the names of primitive types as keywords: > :let hs_highlight_types = 1 And to treat the names of even more relatively common types as keywords: > :let hs_highlight_more_types = 1 If you want to highlight the names of debugging functions, put in your .vimrc: > :let hs_highlight_debug = 1 The Haskell syntax highlighting also highlights C preprocessor directives, and flags lines that start with # but are not valid directives as erroneous. This interferes with Haskell's syntax for operators, as they may start with #. If you want to highlight those as operators as opposed to errors, put in your .vimrc: > :let hs_allow_hash_operator = 1 The syntax highlighting for literate Haskell code will try to automatically guess whether your literate Haskell code contains TeX markup or not, and correspondingly highlight TeX constructs or nothing at all. You can override this globally by putting in your .vimrc > :let lhs_markup = none for no highlighting at all, or > :let lhs_markup = tex to force the highlighting to always try to highlight TeX markup. For more flexibility, you may also use buffer local versions of this variable, so e.g. > :let b:lhs_markup = tex will force TeX highlighting for a particular buffer. It has to be set before turning syntax highlighting on for the buffer or loading a file. HTML *html.vim* *ft-html-syntax* The coloring scheme for tags in the HTML file works as follows. The <> of opening tags are colored differently than the of a closing tag. This is on purpose! For opening tags the 'Function' color is used, while for closing tags the 'Type' color is used (See syntax.vim to check how those are defined for you) Known tag names are colored the same way as statements in C. Unknown tag names are colored with the same color as the <> or respectively which makes it easy to spot errors Note that the same is true for argument (or attribute) names. Known attribute names are colored differently than unknown ones. Some HTML tags are used to change the rendering of text. The following tags are recognized by the html.vim syntax coloring file and change the way normal text is shown: ( is used as an alias for , while as an alias for ),

-
, , and <A>, but only if used as a link (that is, it must include a href as in <A href="somefile.html">). If you want to change how such text is rendered, you must redefine the following syntax groups: - htmlBold - htmlBoldUnderline - htmlBoldUnderlineItalic - htmlUnderline - htmlUnderlineItalic - htmlItalic - htmlTitle for titles - htmlH1 - htmlH6 for headings To make this redefinition work you must redefine them all with the exception of the last two (htmlTitle and htmlH[1-6], which are optional) and define the following variable in your vimrc (this is due to the order in which the files are read during initialization) > :let html_my_rendering=1 If you'd like to see an example download mysyntax.vim at http://www.fleiner.com/vim/download.html You can also disable this rendering by adding the following line to your vimrc file: > :let html_no_rendering=1 HTML comments are rather special (see an HTML reference document for the details), and the syntax coloring scheme will highlight all errors. However, if you prefer to use the wrong style (starts with <!-- and ends with -->) you can define > :let html_wrong_comments=1 JavaScript and Visual Basic embedded inside HTML documents are highlighted as 'Special' with statements, comments, strings and so on colored as in standard programming languages. Note that only JavaScript and Visual Basic are currently supported, no other scripting language has been added yet. Embedded and inlined cascading style sheets (CSS) are highlighted too. There are several html preprocessor languages out there. html.vim has been written such that it should be trivial to include it. To do so add the following two lines to the syntax coloring file for that language (the example comes from the asp.vim file): runtime! syntax/html.vim syn cluster htmlPreproc add=asp Now you just need to make sure that you add all regions that contain the preprocessor language to the cluster htmlPreproc. HTML/OS (by Aestiva) *htmlos.vim* *ft-htmlos-syntax* The coloring scheme for HTML/OS works as follows: Functions and variable names are the same color by default, because VIM doesn't specify different colors for Functions and Identifiers. To change this (which is recommended if you want function names to be recognizable in a different color) you need to add the following line to either your ~/.vimrc: > :hi Function term=underline cterm=bold ctermfg=LightGray Of course, the ctermfg can be a different color if you choose. Another issues that HTML/OS runs into is that there is no special filetype to signify that it is a file with HTML/OS coding. You can change this by opening a file and turning on HTML/OS syntax by doing the following: > :set syntax=htmlos Lastly, it should be noted that the opening and closing characters to begin a block of HTML/OS code can either be << or [[ and >> or ]], respectively. IA64 *ia64.vim* *intel-itanium* *ft-ia64-syntax* Highlighting for the Intel Itanium 64 assembly language. See |asm.vim| for how to recognize this filetype. To have *.inc files be recognized as IA64, add this to your .vimrc file: > :let g:filetype_inc = "ia64" INFORM *inform.vim* *ft-inform-syntax* Inform highlighting includes symbols provided by the Inform Library, as most programs make extensive use of it. If do not wish Library symbols to be highlighted add this to your vim startup: > :let inform_highlight_simple=1 By default it is assumed that Inform programs are Z-machine targeted, and highlights Z-machine assembly language symbols appropriately. If you intend your program to be targeted to a Glulx/Glk environment you need to add this to your startup sequence: > :let inform_highlight_glulx=1 This will highlight Glulx opcodes instead, and also adds glk() to the set of highlighted system functions. The Inform compiler will flag certain obsolete keywords as errors when it encounters them. These keywords are normally highlighted as errors by Vim. To prevent such error highlighting, you must add this to your startup sequence: > :let inform_suppress_obsolete=1 By default, the language features highlighted conform to Compiler version 6.30 and Library version 6.11. If you are using an older Inform development environment, you may with to add this to your startup sequence: > :let inform_highlight_old=1 IDL *idl.vim* *idl-syntax* IDL (Interface Definition Language) files are used to define RPC calls. In Microsoft land, this is also used for defining COM interfaces and calls. IDL's structure is simple enough to permit a full grammar based approach to rather than using a few heuristics. The result is large and somewhat repetitive but seems to work. There are some Microsoft extensions to idl files that are here. Some of them are disabled by defining idl_no_ms_extensions. The more complex of the extensions are disabled by defining idl_no_extensions. Variable Effect ~ idl_no_ms_extensions Disable some of the Microsoft specific extensions idl_no_extensions Disable complex extensions idlsyntax_showerror Show IDL errors (can be rather intrusive, but quite helpful) idlsyntax_showerror_soft Use softer colours by default for errors JAVA *java.vim* *ft-java-syntax* The java.vim syntax highlighting file offers several options: In Java 1.0.2 it was never possible to have braces inside parens, so this was flagged as an error. Since Java 1.1 this is possible (with anonymous classes), and therefore is no longer marked as an error. If you prefer the old way, put the following line into your vim startup file: > :let java_mark_braces_in_parens_as_errors=1 All identifiers in java.lang.* are always visible in all classes. To highlight them use: > :let java_highlight_java_lang_ids=1 You can also highlight identifiers of most standard Java packages if you download the javaid.vim script at http://www.fleiner.com/vim/download.html. If you prefer to only highlight identifiers of a certain package, say java.io use the following: > :let java_highlight_java_io=1 Check the javaid.vim file for a list of all the packages that are supported. Function names are not highlighted, as the way to find functions depends on how you write Java code. The syntax file knows two possible ways to highlight functions: If you write function declarations that are always indented by either a tab, 8 spaces or 2 spaces you may want to set > :let java_highlight_functions="indent" However, if you follow the Java guidelines about how functions and classes are supposed to be named (with respect to upper and lowercase), use > :let java_highlight_functions="style" If both options do not work for you, but you would still want function declarations to be highlighted create your own definitions by changing the definitions in java.vim or by creating your own java.vim which includes the original one and then adds the code to highlight functions. In Java 1.1 the functions System.out.println() and System.err.println() should only be used for debugging. Therefore it is possible to highlight debugging statements differently. To do this you must add the following definition in your startup file: > :let java_highlight_debug=1 The result will be that those statements are highlighted as 'Special' characters. If you prefer to have them highlighted differently you must define new highlightings for the following groups.: Debug, DebugSpecial, DebugString, DebugBoolean, DebugType which are used for the statement itself, special characters used in debug strings, strings, boolean constants and types (this, super) respectively. I have opted to chose another background for those statements. Javadoc is a program that takes special comments out of Java program files and creates HTML pages. The standard configuration will highlight this HTML code similarly to HTML files (see |html.vim|). You can even add Javascript and CSS inside this code (see below). There are four differences however: 1. The title (all characters up to the first '.' which is followed by some white space or up to the first '@') is colored differently (to change the color change the group CommentTitle). 2. The text is colored as 'Comment'. 3. HTML comments are colored as 'Special' 4. The special Javadoc tags (@see, @param, ...) are highlighted as specials and the argument (for @see, @param, @exception) as Function. To turn this feature off add the following line to your startup file: > :let java_ignore_javadoc=1 If you use the special Javadoc comment highlighting described above you can also turn on special highlighting for Javascript, visual basic scripts and embedded CSS (stylesheets). This makes only sense if you actually have Javadoc comments that include either Javascript or embedded CSS. The options to use are > :let java_javascript=1 :let java_css=1 :let java_vb=1 In order to highlight nested parens with different colors define colors for javaParen, javaParen1 and javaParen2, for example with > :hi link javaParen Comment or > :hi javaParen ctermfg=blue guifg=#0000ff If you notice highlighting errors while scrolling backwards, which are fixed when redrawing with CTRL-L, try setting the "java_minlines" internal variable to a larger number: > :let java_minlines = 50 This will make the syntax synchronization start 50 lines before the first displayed line. The default value is 10. The disadvantage of using a larger number is that redrawing can become slow. LACE *lace.vim* *ft-lace-syntax* Lace (Language for Assembly of Classes in Eiffel) is case insensitive, but the style guide lines are not. If you prefer case insensitive highlighting, just define the vim variable 'lace_case_insensitive' in your startup file: > :let lace_case_insensitive=1 LEX *lex.vim* *ft-lex-syntax* Lex uses brute-force synchronizing as the "^%%$" section delimiter gives no clue as to what section follows. Consequently, the value for > :syn sync minlines=300 may be changed by the user if s/he is experiencing synchronization difficulties (such as may happen with large lex files). LIFELINES *lifelines.vim* *ft-lifelines-syntax* To highlight deprecated functions as errors, add in your .vimrc: > :let g:lifelines_deprecated = 1 < LISP *lisp.vim* *ft-lisp-syntax* The lisp syntax highlighting provides two options: > g:lisp_instring : if it exists, then "(...)" strings are highlighted as if the contents of the string were lisp. Useful for AutoLisp. g:lisp_rainbow : if it exists and is nonzero, then differing levels of parenthesization will receive different highlighting. < The g:lisp_rainbow option provides 10 levels of individual colorization for the parentheses and backquoted parentheses. Because of the quantity of colorization levels, unlike non-rainbow highlighting, the rainbow mode specifies its highlighting using ctermfg and guifg, thereby bypassing the usual colorscheme control using standard highlighting groups. The actual highlighting used depends on the dark/bright setting (see |'bg'|). LITE *lite.vim* *ft-lite-syntax* There are two options for the lite syntax highlighting. If you like SQL syntax highlighting inside Strings, use this: > :let lite_sql_query = 1 For syncing, minlines defaults to 100. If you prefer another value, you can set "lite_minlines" to the value you desire. Example: > :let lite_minlines = 200 LPC *lpc.vim* *ft-lpc-syntax* LPC stands for a simple, memory-efficient language: Lars Pensj| C. The file name of LPC is usually *.c. Recognizing these files as LPC would bother users writing only C programs. If you want to use LPC syntax in Vim, you should set a variable in your .vimrc file: > :let lpc_syntax_for_c = 1 If it doesn't work properly for some particular C or LPC files, use a modeline. For a LPC file: // vim:set ft=lpc: For a C file that is recognized as LPC: // vim:set ft=c: If you don't want to set the variable, use the modeline in EVERY LPC file. There are several implementations for LPC, we intend to support most widely used ones. Here the default LPC syntax is for MudOS series, for MudOS v22 and before, you should turn off the sensible modifiers, and this will also assert the new efuns after v22 to be invalid, don't set this variable when you are using the latest version of MudOS: > :let lpc_pre_v22 = 1 For LpMud 3.2 series of LPC: > :let lpc_compat_32 = 1 For LPC4 series of LPC: > :let lpc_use_lpc4_syntax = 1 For uLPC series of LPC: uLPC has been developed to Pike, so you should use Pike syntax instead, and the name of your source file should be *.pike LUA *lua.vim* *ft-lua-syntax* The Lua syntax file can be used for versions 4.0, 5.0, 5.1 and 5.2 (5.2 is the default). You can select one of these versions using the global variables lua_version and lua_subversion. For example, to activate Lua 5.1 syntax highlighting, set the variables like this: :let lua_version = 5 :let lua_subversion = 1 MAIL *mail.vim* *ft-mail.vim* Vim highlights all the standard elements of an email (headers, signatures, quoted text and URLs / email addresses). In keeping with standard conventions, signatures begin in a line containing only "--" followed optionally by whitespaces and end with a newline. Vim treats lines beginning with ']', '}', '|', '>' or a word followed by '>' as quoted text. However Vim highlights headers and signatures in quoted text only if the text is quoted with '>' (optionally followed by one space). By default mail.vim synchronises syntax to 100 lines before the first displayed line. If you have a slow machine, and generally deal with emails with short headers, you can change this to a smaller value: > :let mail_minlines = 30 MAKE *make.vim* *ft-make-syntax* In makefiles, commands are usually highlighted to make it easy for you to spot errors. However, this may be too much coloring for you. You can turn this feature off by using: > :let make_no_commands = 1 MAPLE *maple.vim* *ft-maple-syntax* Maple V, by Waterloo Maple Inc, supports symbolic algebra. The language supports many packages of functions which are selectively loaded by the user. The standard set of packages' functions as supplied in Maple V release 4 may be highlighted at the user's discretion. Users may place in their .vimrc file: > :let mvpkg_all= 1 to get all package functions highlighted, or users may select any subset by choosing a variable/package from the table below and setting that variable to 1, also in their .vimrc file (prior to sourcing $VIMRUNTIME/syntax/syntax.vim). Table of Maple V Package Function Selectors > mv_DEtools mv_genfunc mv_networks mv_process mv_Galois mv_geometry mv_numapprox mv_simplex mv_GaussInt mv_grobner mv_numtheory mv_stats mv_LREtools mv_group mv_orthopoly mv_student mv_combinat mv_inttrans mv_padic mv_sumtools mv_combstruct mv_liesymm mv_plots mv_tensor mv_difforms mv_linalg mv_plottools mv_totorder mv_finance mv_logic mv_powseries MATHEMATICA *mma.vim* *ft-mma-syntax* *ft-mathematica-syntax* Empty *.m files will automatically be presumed to be Matlab files unless you have the following in your .vimrc: > let filetype_m = "mma" MOO *moo.vim* *ft-moo-syntax* If you use C-style comments inside expressions and find it mangles your highlighting, you may want to use extended (slow!) matches for C-style comments: > :let moo_extended_cstyle_comments = 1 To disable highlighting of pronoun substitution patterns inside strings: > :let moo_no_pronoun_sub = 1 To disable highlighting of the regular expression operator '%|', and matching '%(' and '%)' inside strings: > :let moo_no_regexp = 1 Unmatched double quotes can be recognized and highlighted as errors: > :let moo_unmatched_quotes = 1 To highlight builtin properties (.name, .location, .programmer etc.): > :let moo_builtin_properties = 1 Unknown builtin functions can be recognized and highlighted as errors. If you use this option, add your own extensions to the mooKnownBuiltinFunction group. To enable this option: > :let moo_unknown_builtin_functions = 1 An example of adding sprintf() to the list of known builtin functions: > :syn keyword mooKnownBuiltinFunction sprintf contained MSQL *msql.vim* *ft-msql-syntax* There are two options for the msql syntax highlighting. If you like SQL syntax highlighting inside Strings, use this: > :let msql_sql_query = 1 For syncing, minlines defaults to 100. If you prefer another value, you can set "msql_minlines" to the value you desire. Example: > :let msql_minlines = 200 N1QL *n1ql.vim* *ft-n1ql-syntax* N1QL is a SQL-like declarative language for manipulating JSON documents in Couchbase Server databases. Vim syntax highlights N1QL statements, keywords, operators, types, comments, and special values. Vim ignores syntactical elements specific to SQL or its many dialects, like COLUMN or CHAR, that don't exist in N1QL. NCF *ncf.vim* *ft-ncf-syntax* There is one option for NCF syntax highlighting. If you want to have unrecognized (by ncf.vim) statements highlighted as errors, use this: > :let ncf_highlight_unknowns = 1 If you don't want to highlight these errors, leave it unset. NROFF *nroff.vim* *ft-nroff-syntax* The nroff syntax file works with AT&T n/troff out of the box. You need to activate the GNU groff extra features included in the syntax file before you can use them. For example, Linux and BSD distributions use groff as their default text processing package. In order to activate the extra syntax highlighting features for groff, add the following option to your start-up files: > :let b:nroff_is_groff = 1 Groff is different from the old AT&T n/troff that you may still find in Solaris. Groff macro and request names can be longer than 2 characters and there are extensions to the language primitives. For example, in AT&T troff you access the year as a 2-digit number with the request \(yr. In groff you can use the same request, recognized for compatibility, or you can use groff's native syntax, \[yr]. Furthermore, you can use a 4-digit year directly: \[year]. Macro requests can be longer than 2 characters, for example, GNU mm accepts the requests ".VERBON" and ".VERBOFF" for creating verbatim environments. In order to obtain the best formatted output g/troff can give you, you should follow a few simple rules about spacing and punctuation. 1. Do not leave empty spaces at the end of lines. 2. Leave one space and one space only after an end-of-sentence period, exclamation mark, etc. 3. For reasons stated below, it is best to follow all period marks with a carriage return. The reason behind these unusual tips is that g/n/troff have a line breaking algorithm that can be easily upset if you don't follow the rules given above. Unlike TeX, troff fills text line-by-line, not paragraph-by-paragraph and, furthermore, it does not have a concept of glue or stretch, all horizontal and vertical space input will be output as is. Therefore, you should be careful about not using more space between sentences than you intend to have in your final document. For this reason, the common practice is to insert a carriage return immediately after all punctuation marks. If you want to have "even" text in your final processed output, you need to maintain regular spacing in the input text. To mark both trailing spaces and two or more spaces after a punctuation as an error, use: > :let nroff_space_errors = 1 Another technique to detect extra spacing and other errors that will interfere with the correct typesetting of your file, is to define an eye-catching highlighting definition for the syntax groups "nroffDefinition" and "nroffDefSpecial" in your configuration files. For example: > hi def nroffDefinition term=italic cterm=italic gui=reverse hi def nroffDefSpecial term=italic,bold cterm=italic,bold \ gui=reverse,bold If you want to navigate preprocessor entries in your source file as easily as with section markers, you can activate the following option in your .vimrc file: > let b:preprocs_as_sections = 1 As well, the syntax file adds an extra paragraph marker for the extended paragraph macro (.XP) in the ms package. Finally, there is a |groff.vim| syntax file that can be used for enabling groff syntax highlighting either on a file basis or globally by default. OCAML *ocaml.vim* *ft-ocaml-syntax* The OCaml syntax file handles files having the following prefixes: .ml, .mli, .mll and .mly. By setting the following variable > :let ocaml_revised = 1 you can switch from standard OCaml-syntax to revised syntax as supported by the camlp4 preprocessor. Setting the variable > :let ocaml_noend_error = 1 prevents highlighting of "end" as error, which is useful when sources contain very long structures that Vim does not synchronize anymore. PAPP *papp.vim* *ft-papp-syntax* The PApp syntax file handles .papp files and, to a lesser extend, .pxml and .pxsl files which are all a mixture of perl/xml/html/other using xml as the top-level file format. By default everything inside phtml or pxml sections is treated as a string with embedded preprocessor commands. If you set the variable: > :let papp_include_html=1 in your startup file it will try to syntax-hilight html code inside phtml sections, but this is relatively slow and much too colourful to be able to edit sensibly. ;) The newest version of the papp.vim syntax file can usually be found at http://papp.plan9.de. PASCAL *pascal.vim* *ft-pascal-syntax* Files matching "*.p" could be Progress or Pascal. If the automatic detection doesn't work for you, or you don't edit Progress at all, use this in your startup vimrc: > :let filetype_p = "pascal" The Pascal syntax file has been extended to take into account some extensions provided by Turbo Pascal, Free Pascal Compiler and GNU Pascal Compiler. Delphi keywords are also supported. By default, Turbo Pascal 7.0 features are enabled. If you prefer to stick with the standard Pascal keywords, add the following line to your startup file: > :let pascal_traditional=1 To switch on Delphi specific constructions (such as one-line comments, keywords, etc): > :let pascal_delphi=1 The option pascal_symbol_operator controls whether symbol operators such as +, *, .., etc. are displayed using the Operator color or not. To colorize symbol operators, add the following line to your startup file: > :let pascal_symbol_operator=1 Some functions are highlighted by default. To switch it off: > :let pascal_no_functions=1 Furthermore, there are specific variables for some compilers. Besides pascal_delphi, there are pascal_gpc and pascal_fpc. Default extensions try to match Turbo Pascal. > :let pascal_gpc=1 or > :let pascal_fpc=1 To ensure that strings are defined on a single line, you can define the pascal_one_line_string variable. > :let pascal_one_line_string=1 If you dislike <Tab> chars, you can set the pascal_no_tabs variable. Tabs will be highlighted as Error. > :let pascal_no_tabs=1 PERL *perl.vim* *ft-perl-syntax* There are a number of possible options to the perl syntax highlighting. Inline POD highlighting is now turned on by default. If you don't wish to have the added complexity of highlighting POD embedded within Perl files, you may set the 'perl_include_pod' option to 0: > :let perl_include_pod = 0 To reduce the complexity of parsing (and increase performance) you can switch off two elements in the parsing of variable names and contents. > To handle package references in variable and function names not differently from the rest of the name (like 'PkgName::' in '$PkgName::VarName'): > :let perl_no_scope_in_variables = 1 (In Vim 6.x it was the other way around: "perl_want_scope_in_variables" enabled it.) If you do not want complex things like '@{${"foo"}}' to be parsed: > :let perl_no_extended_vars = 1 (In Vim 6.x it was the other way around: "perl_extended_vars" enabled it.) The coloring strings can be changed. By default strings and qq friends will be highlighted like the first line. If you set the variable perl_string_as_statement, it will be highlighted as in the second line. "hello world!"; qq|hello world|; ^^^^^^^^^^^^^^NN^^^^^^^^^^^^^^^N (unlet perl_string_as_statement) S^^^^^^^^^^^^SNNSSS^^^^^^^^^^^SN (let perl_string_as_statement) (^ = perlString, S = perlStatement, N = None at all) The syncing has 3 options. The first two switch off some triggering of synchronization and should only be needed in case it fails to work properly. If while scrolling all of a sudden the whole screen changes color completely then you should try and switch off one of those. Let me know if you can figure out the line that causes the mistake. One triggers on "^\s*sub\s*" and the other on "^[$@%]" more or less. > :let perl_no_sync_on_sub :let perl_no_sync_on_global_var Below you can set the maximum distance VIM should look for starting points for its attempts in syntax highlighting. > :let perl_sync_dist = 100 If you want to use folding with perl, set perl_fold: > :let perl_fold = 1 If you want to fold blocks in if statements, etc. as well set the following: > :let perl_fold_blocks = 1 Subroutines are folded by default if 'perl_fold' is set. If you do not want this, you can set 'perl_nofold_subs': > :let perl_nofold_subs = 1 Anonymous subroutines are not folded by default; you may enable their folding via 'perl_fold_anonymous_subs': > :let perl_fold_anonymous_subs = 1 Packages are also folded by default if 'perl_fold' is set. To disable this behavior, set 'perl_nofold_packages': > :let perl_nofold_packages = 1 PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* [note: previously this was called "php3", but since it now also supports php4 it has been renamed to "php"] There are the following options for the php syntax highlighting. If you like SQL syntax highlighting inside Strings: > let php_sql_query = 1 For highlighting the Baselib methods: > let php_baselib = 1 Enable HTML syntax highlighting inside strings: > let php_htmlInStrings = 1 Using the old colorstyle: > let php_oldStyle = 1 Enable highlighting ASP-style short tags: > let php_asp_tags = 1 Disable short tags: > let php_noShortTags = 1 For highlighting parent error ] or ): > let php_parent_error_close = 1 For skipping a php end tag, if there exists an open ( or [ without a closing one: > let php_parent_error_open = 1 Enable folding for classes and functions: > let php_folding = 1 Selecting syncing method: > let php_sync_method = x x = -1 to sync by search (default), x > 0 to sync at least x lines backwards, x = 0 to sync from start. PLAINTEX *plaintex.vim* *ft-plaintex-syntax* TeX is a typesetting language, and plaintex is the file type for the "plain" variant of TeX. If you never want your *.tex files recognized as plain TeX, see |ft-tex-plugin|. This syntax file has the option > let g:plaintex_delimiters = 1 if you want to highlight brackets "[]" and braces "{}". PPWIZARD *ppwiz.vim* *ft-ppwiz-syntax* PPWizard is a preprocessor for HTML and OS/2 INF files This syntax file has the options: - ppwiz_highlight_defs : determines highlighting mode for PPWizard's definitions. Possible values are ppwiz_highlight_defs = 1 : PPWizard #define statements retain the colors of their contents (e.g. PPWizard macros and variables) ppwiz_highlight_defs = 2 : preprocessor #define and #evaluate statements are shown in a single color with the exception of line continuation symbols The default setting for ppwiz_highlight_defs is 1. - ppwiz_with_html : If the value is 1 (the default), highlight literal HTML code; if 0, treat HTML code like ordinary text. PHTML *phtml.vim* *ft-phtml-syntax* There are two options for the phtml syntax highlighting. If you like SQL syntax highlighting inside Strings, use this: > :let phtml_sql_query = 1 For syncing, minlines defaults to 100. If you prefer another value, you can set "phtml_minlines" to the value you desire. Example: > :let phtml_minlines = 200 POSTSCRIPT *postscr.vim* *ft-postscr-syntax* There are several options when it comes to highlighting PostScript. First which version of the PostScript language to highlight. There are currently three defined language versions, or levels. Level 1 is the original and base version, and includes all extensions prior to the release of level 2. Level 2 is the most common version around, and includes its own set of extensions prior to the release of level 3. Level 3 is currently the highest level supported. You select which level of the PostScript language you want highlighted by defining the postscr_level variable as follows: > :let postscr_level=2 If this variable is not defined it defaults to 2 (level 2) since this is the most prevalent version currently. Note, not all PS interpreters will support all language features for a particular language level. In particular the %!PS-Adobe-3.0 at the start of PS files does NOT mean the PostScript present is level 3 PostScript! If you are working with Display PostScript, you can include highlighting of Display PS language features by defining the postscr_display variable as follows: > :let postscr_display=1 If you are working with Ghostscript, you can include highlighting of Ghostscript specific language features by defining the variable postscr_ghostscript as follows: > :let postscr_ghostscript=1 PostScript is a large language, with many predefined elements. While it useful to have all these elements highlighted, on slower machines this can cause Vim to slow down. In an attempt to be machine friendly font names and character encodings are not highlighted by default. Unless you are working explicitly with either of these this should be ok. If you want them to be highlighted you should set one or both of the following variables: > :let postscr_fonts=1 :let postscr_encodings=1 There is a stylistic option to the highlighting of and, or, and not. In PostScript the function of these operators depends on the types of their operands - if the operands are booleans then they are the logical operators, if they are integers then they are binary operators. As binary and logical operators can be highlighted differently they have to be highlighted one way or the other. By default they are treated as logical operators. They can be highlighted as binary operators by defining the variable postscr_andornot_binary as follows: > :let postscr_andornot_binary=1 < *ptcap.vim* *ft-printcap-syntax* PRINTCAP + TERMCAP *ft-ptcap-syntax* *ft-termcap-syntax* This syntax file applies to the printcap and termcap databases. In order for Vim to recognize printcap/termcap files that do not match the patterns *printcap*, or *termcap*, you must put additional patterns appropriate to your system in your |myfiletypefile| file. For these patterns, you must set the variable "b:ptcap_type" to either "print" or "term", and then the 'filetype' option to ptcap. For example, to make Vim identify all files in /etc/termcaps/ as termcap files, add the following: > :au BufNewFile,BufRead /etc/termcaps/* let b:ptcap_type = "term" | \ set filetype=ptcap If you notice highlighting errors while scrolling backwards, which are fixed when redrawing with CTRL-L, try setting the "ptcap_minlines" internal variable to a larger number: > :let ptcap_minlines = 50 (The default is 20 lines.) PROGRESS *progress.vim* *ft-progress-syntax* Files matching "*.w" could be Progress or cweb. If the automatic detection doesn't work for you, or you don't edit cweb at all, use this in your startup vimrc: > :let filetype_w = "progress" The same happens for "*.i", which could be assembly, and "*.p", which could be Pascal. Use this if you don't use assembly and Pascal: > :let filetype_i = "progress" :let filetype_p = "progress" PYTHON *python.vim* *ft-python-syntax* There are six options to control Python syntax highlighting. For highlighted numbers: > :let python_no_number_highlight = 1 For highlighted builtin functions: > :let python_no_builtin_highlight = 1 For highlighted standard exceptions: > :let python_no_exception_highlight = 1 For highlighted doctests and code inside: > :let python_no_doctest_highlight = 1 or > :let python_no_doctest_code_highlight = 1 (first option implies second one). For highlighted trailing whitespace and mix of spaces and tabs: > :let python_space_error_highlight = 1 If you want all possible Python highlighting (the same as setting the preceding last option and unsetting all other ones): > :let python_highlight_all = 1 Note: only existence of these options matter, not their value. You can replace 1 above with anything. QUAKE *quake.vim* *ft-quake-syntax* The Quake syntax definition should work for most any FPS (First Person Shooter) based on one of the Quake engines. However, the command names vary a bit between the three games (Quake, Quake 2, and Quake 3 Arena) so the syntax definition checks for the existence of three global variables to allow users to specify what commands are legal in their files. The three variables can be set for the following effects: set to highlight commands only available in Quake: > :let quake_is_quake1 = 1 set to highlight commands only available in Quake 2: > :let quake_is_quake2 = 1 set to highlight commands only available in Quake 3 Arena: > :let quake_is_quake3 = 1 Any combination of these three variables is legal, but might highlight more commands than are actually available to you by the game. READLINE *readline.vim* *ft-readline-syntax* The readline library is primarily used by the BASH shell, which adds quite a few commands and options to the ones already available. To highlight these items as well you can add the following to your |vimrc| or just type it in the command line before loading a file with the readline syntax: > let readline_has_bash = 1 This will add highlighting for the commands that BASH (version 2.05a and later, and part earlier) adds. RESTRUCTURED TEXT *rst.vim* *ft-rst-syntax* You may set what syntax definitions should be used for code blocks via > let rst_syntax_code_list = ['vim', 'lisp', ...] < REXX *rexx.vim* *ft-rexx-syntax* If you notice highlighting errors while scrolling backwards, which are fixed when redrawing with CTRL-L, try setting the "rexx_minlines" internal variable to a larger number: > :let rexx_minlines = 50 This will make the syntax synchronization start 50 lines before the first displayed line. The default value is 10. The disadvantage of using a larger number is that redrawing can become slow. Vim tries to guess what type a ".r" file is. If it can't be detected (from comment lines), the default is "r". To make the default rexx add this line to your .vimrc: *g:filetype_r* > :let g:filetype_r = "r" RUBY *ruby.vim* *ft-ruby-syntax* Ruby: Operator highlighting |ruby_operators| Ruby: Whitespace errors |ruby_space_errors| Ruby: Folding |ruby_fold| |ruby_foldable_groups| Ruby: Reducing expensive operations |ruby_no_expensive| |ruby_minlines| Ruby: Spellchecking strings |ruby_spellcheck_strings| *ruby_operators* Ruby: Operator highlighting ~ Operators can be highlighted by defining "ruby_operators": > :let ruby_operators = 1 < *ruby_space_errors* Ruby: Whitespace errors ~ Whitespace errors can be highlighted by defining "ruby_space_errors": > :let ruby_space_errors = 1 < This will highlight trailing whitespace and tabs preceded by a space character as errors. This can be refined by defining "ruby_no_trail_space_error" and "ruby_no_tab_space_error" which will ignore trailing whitespace and tabs after spaces respectively. *ruby_fold* *ruby_foldable_groups* Ruby: Folding ~ Folding can be enabled by defining "ruby_fold": > :let ruby_fold = 1 < This will set the value of 'foldmethod' to "syntax" locally to the current buffer or window, which will enable syntax-based folding when editing Ruby filetypes. Default folding is rather detailed, i.e., small syntax units like "if", "do", "%w[]" may create corresponding fold levels. You can set "ruby_foldable_groups" to restrict which groups are foldable: > :let ruby_foldable_groups = 'if case %' < The value is a space-separated list of keywords: keyword meaning ~ -------- ------------------------------------- ~ ALL Most block syntax (default) NONE Nothing if "if" or "unless" block def "def" block class "class" block module "module" block do "do" block begin "begin" block case "case" block for "for", "while", "until" loops { Curly bracket block or hash literal [ Array literal % Literal with "%" notation, e.g.: %w(STRING), %!STRING! / Regexp string String and shell command output (surrounded by ', ", `) : Symbol # Multiline comment << Here documents __END__ Source code after "__END__" directive *ruby_no_expensive* Ruby: Reducing expensive operations ~ By default, the "end" keyword is colorized according to the opening statement of the block it closes. While useful, this feature can be expensive; if you experience slow redrawing (or you are on a terminal with poor color support) you may want to turn it off by defining the "ruby_no_expensive" variable: > :let ruby_no_expensive = 1 < In this case the same color will be used for all control keywords. *ruby_minlines* If you do want this feature enabled, but notice highlighting errors while scrolling backwards, which are fixed when redrawing with CTRL-L, try setting the "ruby_minlines" variable to a value larger than 50: > :let ruby_minlines = 100 < Ideally, this value should be a number of lines large enough to embrace your largest class or module. *ruby_spellcheck_strings* Ruby: Spellchecking strings ~ Ruby syntax will perform spellchecking of strings if you define "ruby_spellcheck_strings": > :let ruby_spellcheck_strings = 1 < SCHEME *scheme.vim* *ft-scheme-syntax* By default only R7RS keywords are highlighted and properly indented. scheme.vim also supports extensions of the CHICKEN Scheme->C compiler. Define b:is_chicken or g:is_chicken, if you need them. SDL *sdl.vim* *ft-sdl-syntax* The SDL highlighting probably misses a few keywords, but SDL has so many of them it's almost impossibly to cope. The new standard, SDL-2000, specifies that all identifiers are case-sensitive (which was not so before), and that all keywords can be used either completely lowercase or completely uppercase. To have the highlighting reflect this, you can set the following variable: > :let sdl_2000=1 This also sets many new keywords. If you want to disable the old keywords, which is probably a good idea, use: > :let SDL_no_96=1 The indentation is probably also incomplete, but right now I am very satisfied with it for my own projects. SED *sed.vim* *ft-sed-syntax* To make tabs stand out from regular blanks (accomplished by using Todo highlighting on the tabs), define "highlight_sedtabs" by putting > :let highlight_sedtabs = 1 in the vimrc file. (This special highlighting only applies for tabs inside search patterns, replacement texts, addresses or text included by an Append/Change/Insert command.) If you enable this option, it is also a good idea to set the tab width to one character; by doing that, you can easily count the number of tabs in a string. Bugs: The transform command (y) is treated exactly like the substitute command. This means that, as far as this syntax file is concerned, transform accepts the same flags as substitute, which is wrong. (Transform accepts no flags.) I tolerate this bug because the involved commands need very complex treatment (95 patterns, one for each plausible pattern delimiter). SGML *sgml.vim* *ft-sgml-syntax* The coloring scheme for tags in the SGML file works as follows. The <> of opening tags are colored differently than the </> of a closing tag. This is on purpose! For opening tags the 'Function' color is used, while for closing tags the 'Type' color is used (See syntax.vim to check how those are defined for you) Known tag names are colored the same way as statements in C. Unknown tag names are not colored which makes it easy to spot errors. Note that the same is true for argument (or attribute) names. Known attribute names are colored differently than unknown ones. Some SGML tags are used to change the rendering of text. The following tags are recognized by the sgml.vim syntax coloring file and change the way normal text is shown: <varname> <emphasis> <command> <function> <literal> <replaceable> <ulink> and <link>. If you want to change how such text is rendered, you must redefine the following syntax groups: - sgmlBold - sgmlBoldItalic - sgmlUnderline - sgmlItalic - sgmlLink for links To make this redefinition work you must redefine them all and define the following variable in your vimrc (this is due to the order in which the files are read during initialization) > let sgml_my_rendering=1 You can also disable this rendering by adding the following line to your vimrc file: > let sgml_no_rendering=1 (Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>) *ft-posix-synax* *ft-dash-syntax* SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax* This covers syntax highlighting for the older Unix (Bourne) sh, and newer shells such as bash, dash, posix, and the Korn shells. Vim attempts to determine which shell type is in use by specifying that various filenames are of specific types: > ksh : .kshrc* *.ksh bash: .bashrc* bashrc bash.bashrc .bash_profile* *.bash < If none of these cases pertain, then the first line of the file is examined (ex. looking for /bin/sh /bin/ksh /bin/bash). If the first line specifies a shelltype, then that shelltype is used. However some files (ex. .profile) are known to be shell files but the type is not apparent. Furthermore, on many systems sh is symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh" (Posix). One may specify a global default by instantiating one of the following variables in your <.vimrc>: ksh: > let g:is_kornshell = 1 < posix: (using this is the nearly the same as setting g:is_kornshell to 1) > let g:is_posix = 1 < bash: > let g:is_bash = 1 < sh: (default) Bourne shell > let g:is_sh = 1 < (dash users should use posix) If there's no "#! ..." line, and the user hasn't availed himself/herself of a default sh.vim syntax setting as just shown, then syntax/sh.vim will assume the Bourne shell syntax. No need to quote RFCs or market penetration statistics in error reports, please -- just select the default version of the sh your system uses and install the associated "let..." in your <.vimrc>. The syntax/sh.vim file provides several levels of syntax-based folding: > let g:sh_fold_enabled= 0 (default, no syntax folding) let g:sh_fold_enabled= 1 (enable function folding) let g:sh_fold_enabled= 2 (enable heredoc folding) let g:sh_fold_enabled= 4 (enable if/do/for folding) > then various syntax items (ie. HereDocuments and function bodies) become syntax-foldable (see |:syn-fold|). You also may add these together to get multiple types of folding: > let g:sh_fold_enabled= 3 (enables function and heredoc folding) If you notice highlighting errors while scrolling backwards which are fixed when one redraws with CTRL-L, try setting the "sh_minlines" internal variable to a larger number. Example: > let sh_minlines = 500 This will make syntax synchronization start 500 lines before the first displayed line. The default value is 200. The disadvantage of using a larger number is that redrawing can become slow. If you don't have much to synchronize on, displaying can be very slow. To reduce this, the "sh_maxlines" internal variable can be set. Example: > let sh_maxlines = 100 < The default is to use the twice sh_minlines. Set it to a smaller number to speed up displaying. The disadvantage is that highlight errors may appear. syntax/sh.vim tries to flag certain problems as errors; usually things like extra ']'s, 'done's, 'fi's, etc. If you find the error handling problematic for your purposes, you may suppress such error highlighting by putting the following line in your .vimrc: > let g:sh_no_error= 1 < *sh-embed* *sh-awk* Sh: EMBEDDING LANGUAGES~ You may wish to embed languages into sh. I'll give an example courtesy of Lorance Stinson on how to do this with awk as an example. Put the following file into $HOME/.vim/after/syntax/sh/awkembed.vim: > " AWK Embedding: " ============== " Shamelessly ripped from aspperl.vim by Aaron Hope. if exists("b:current_syntax") unlet b:current_syntax endif syn include @AWKScript syntax/awk.vim syn region AWKScriptCode matchgroup=AWKCommand start=+[=\\]\@<!'+ skip=+\\'+ end=+'+ contains=@AWKScript contained syn region AWKScriptEmbedded matchgroup=AWKCommand start=+\<awk\>+ skip=+\\$+ end=+[=\\]\@<!'+me=e-1 contains=@shIdList,@shExprList2 nextgroup=AWKScriptCode syn cluster shCommandSubList add=AWKScriptEmbedded hi def link AWKCommand Type < This code will then let the awk code in the single quotes: > awk '...awk code here...' be highlighted using the awk highlighting syntax. Clearly this may be extended to other languages. SPEEDUP *spup.vim* *ft-spup-syntax* (AspenTech plant simulator) The Speedup syntax file has some options: - strict_subsections : If this variable is defined, only keywords for sections and subsections will be highlighted as statements but not other keywords (like WITHIN in the OPERATION section). - highlight_types : Definition of this variable causes stream types like temperature or pressure to be highlighted as Type, not as a plain Identifier. Included are the types that are usually found in the DECLARE section; if you defined own types, you have to include them in the syntax file. - oneline_comments : this value ranges from 1 to 3 and determines the highlighting of # style comments. oneline_comments = 1 : allow normal Speedup code after an even number of #s. oneline_comments = 2 : show code starting with the second # as error. This is the default setting. oneline_comments = 3 : show the whole line as error if it contains more than one #. Since especially OPERATION sections tend to become very large due to PRESETting variables, syncing may be critical. If your computer is fast enough, you can increase minlines and/or maxlines near the end of the syntax file. SQL *sql.vim* *ft-sql-syntax* *sqlinformix.vim* *ft-sqlinformix-syntax* *sqlanywhere.vim* *ft-sqlanywhere-syntax* While there is an ANSI standard for SQL, most database engines add their own custom extensions. Vim currently supports the Oracle and Informix dialects of SQL. Vim assumes "*.sql" files are Oracle SQL by default. Vim currently has SQL support for a variety of different vendors via syntax scripts. You can change Vim's default from Oracle to any of the current SQL supported types. You can also easily alter the SQL dialect being used on a buffer by buffer basis. For more detailed instructions see |ft_sql.txt|. TCSH *tcsh.vim* *ft-tcsh-syntax* This covers the shell named "tcsh". It is a superset of csh. See |csh.vim| for how the filetype is detected. Tcsh does not allow \" in strings unless the "backslash_quote" shell variable is set. If you want VIM to assume that no backslash quote constructs exist add this line to your .vimrc: > :let tcsh_backslash_quote = 0 If you notice highlighting errors while scrolling backwards, which are fixed when redrawing with CTRL-L, try setting the "tcsh_minlines" internal variable to a larger number: > :let tcsh_minlines = 1000 This will make the syntax synchronization start 1000 lines before the first displayed line. If you set "tcsh_minlines" to "fromstart", then synchronization is done from the start of the file. The default value for tcsh_minlines is 100. The disadvantage of using a larger number is that redrawing can become slow. TEX *tex.vim* *ft-tex-syntax* *latex-syntax* Tex Contents~ Tex: Want Syntax Folding? |tex-folding| Tex: No Spell Checking Wanted |g:tex_nospell| Tex: Don't Want Spell Checking In Comments? |tex-nospell| Tex: Want Spell Checking in Verbatim Zones? |tex-verb| Tex: Run-on Comments or MathZones |tex-runon| Tex: Slow Syntax Highlighting? |tex-slow| Tex: Want To Highlight More Commands? |tex-morecommands| Tex: Excessive Error Highlighting? |tex-error| Tex: Need a new Math Group? |tex-math| Tex: Starting a New Style? |tex-style| Tex: Taking Advantage of Conceal Mode |tex-conceal| Tex: Selective Conceal Mode |g:tex_conceal| Tex: Controlling iskeyword |g:tex_isk| Tex: Fine Subscript and Superscript Control |tex-supersub| *tex-folding* *g:tex_fold_enabled* Tex: Want Syntax Folding? ~ As of version 28 of <syntax/tex.vim>, syntax-based folding of parts, chapters, sections, subsections, etc are supported. Put > let g:tex_fold_enabled=1 in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a modeline at the end of your LaTeX file: > % vim: fdm=syntax If your system becomes too slow, then you might wish to look into > https://vimhelp.appspot.com/vim_faq.txt.html#faq-29.7 < *g:tex_nospell* Tex: No Spell Checking Wanted~ If you don't want spell checking anywhere in your LaTeX document, put > let g:tex_nospell=1 into your .vimrc. If you merely wish to suppress spell checking inside comments only, see |g:tex_comment_nospell|. *tex-nospell* *g:tex_comment_nospell* Tex: Don't Want Spell Checking In Comments? ~ Some folks like to include things like source code in comments and so would prefer that spell checking be disabled in comments in LaTeX files. To do this, put the following in your <.vimrc>: > let g:tex_comment_nospell= 1 If you want to suppress spell checking everywhere inside your LaTeX document, see |g:tex_nospell|. *tex-verb* *g:tex_verbspell* Tex: Want Spell Checking in Verbatim Zones?~ Often verbatim regions are used for things like source code; seldom does one want source code spell-checked. However, for those of you who do want your verbatim zones spell-checked, put the following in your <.vimrc>: > let g:tex_verbspell= 1 < *tex-runon* *tex-stopzone* Tex: Run-on Comments or MathZones ~ The <syntax/tex.vim> highlighting supports TeX, LaTeX, and some AmsTeX. The highlighting supports three primary zones/regions: normal, texZone, and texMathZone. Although considerable effort has been made to have these zones terminate properly, zones delineated by $..$ and $$..$$ cannot be synchronized as there's no difference between start and end patterns. Consequently, a special "TeX comment" has been provided > %stopzone which will forcibly terminate the highlighting of either a texZone or a texMathZone. *tex-slow* *tex-sync* Tex: Slow Syntax Highlighting? ~ If you have a slow computer, you may wish to reduce the values for > :syn sync maxlines=200 :syn sync minlines=50 (especially the latter). If your computer is fast, you may wish to increase them. This primarily affects synchronizing (i.e. just what group, if any, is the text at the top of the screen supposed to be in?). Another cause of slow highlighting is due to syntax-driven folding; see |tex-folding| for a way around this. *g:tex_fast* Finally, if syntax highlighting is still too slow, you may set > :let g:tex_fast= "" in your .vimrc. Used this way, the g:tex_fast variable causes the syntax highlighting script to avoid defining any regions and associated synchronization. The result will be much faster syntax highlighting; the price: you will no longer have as much highlighting or any syntax-based folding, and you will be missing syntax-based error checking. You may decide that some syntax is acceptable; you may use the following table selectively to enable just some syntax highlighting: > b : allow bold and italic syntax c : allow texComment syntax m : allow texMatcher syntax (ie. {...} and [...]) M : allow texMath syntax p : allow parts, chapter, section, etc syntax r : allow texRefZone syntax (nocite, bibliography, label, pageref, eqref) s : allow superscript/subscript regions S : allow texStyle syntax v : allow verbatim syntax V : allow texNewEnv and texNewCmd syntax < As an example, let g:tex_fast= "M" will allow math-associated highlighting but suppress all the other region-based syntax highlighting. (also see: |g:tex_conceal| and |tex-supersub|) *tex-morecommands* *tex-package* Tex: Want To Highlight More Commands? ~ LaTeX is a programmable language, and so there are thousands of packages full of specialized LaTeX commands, syntax, and fonts. If you're using such a package you'll often wish that the distributed syntax/tex.vim would support it. However, clearly this is impractical. So please consider using the techniques in |mysyntaxfile-add| to extend or modify the highlighting provided by syntax/tex.vim. Please consider uploading any extensions that you write, which typically would go in $HOME/after/syntax/tex/[pkgname].vim, to http://vim.sf.net/. *tex-error* *g:tex_no_error* Tex: Excessive Error Highlighting? ~ The <tex.vim> supports lexical error checking of various sorts. Thus, although the error checking is ofttimes very useful, it can indicate errors where none actually are. If this proves to be a problem for you, you may put in your <.vimrc> the following statement: > let g:tex_no_error=1 and all error checking by <syntax/tex.vim> will be suppressed. *tex-math* Tex: Need a new Math Group? ~ If you want to include a new math group in your LaTeX, the following code shows you an example as to how you might do so: > call TexNewMathZone(sfx,mathzone,starform) You'll want to provide the new math group with a unique suffix (currently, A-L and V-Z are taken by <syntax/tex.vim> itself). As an example, consider how eqnarray is set up by <syntax/tex.vim>: > call TexNewMathZone("D","eqnarray",1) You'll need to change "mathzone" to the name of your new math group, and then to the call to it in .vim/after/syntax/tex.vim. The "starform" variable, if true, implies that your new math group has a starred form (ie. eqnarray*). *tex-style* *b:tex_stylish* Tex: Starting a New Style? ~ One may use "\makeatletter" in *.tex files, thereby making the use of "@" in commands available. However, since the *.tex file doesn't have one of the following suffices: sty cls clo dtx ltx, the syntax highlighting will flag such use of @ as an error. To solve this: > :let b:tex_stylish = 1 :set ft=tex Putting "let g:tex_stylish=1" into your <.vimrc> will make <syntax/tex.vim> always accept such use of @. *tex-cchar* *tex-cole* *tex-conceal* Tex: Taking Advantage of Conceal Mode~ If you have |'conceallevel'| set to 2 and if your encoding is utf-8, then a number of character sequences can be translated into appropriate utf-8 glyphs, including various accented characters, Greek characters in MathZones, and superscripts and subscripts in MathZones. Not all characters can be made into superscripts or subscripts; the constraint is due to what utf-8 supports. In fact, only a few characters are supported as subscripts. One way to use this is to have vertically split windows (see |CTRL-W_v|); one with |'conceallevel'| at 0 and the other at 2; and both using |'scrollbind'|. *g:tex_conceal* Tex: Selective Conceal Mode~ You may selectively use conceal mode by setting g:tex_conceal in your <.vimrc>. By default, g:tex_conceal is set to "admgs" to enable concealment for the following sets of characters: > a = accents/ligatures b = bold and italic d = delimiters m = math symbols g = Greek s = superscripts/subscripts < By leaving one or more of these out, the associated conceal-character substitution will not be made. *g:tex_isk* *g:tex_stylish* Tex: Controlling iskeyword~ Normally, LaTeX keywords support 0-9, a-z, A-z, and 192-255 only. Latex keywords don't support the underscore - except when in *.sty files. The syntax highlighting script handles this with the following logic: * If g:tex_stylish exists and is 1 then the file will be treated as a "sty" file, so the "_" will be allowed as part of keywords (regardless of g:tex_isk) * Else if the file's suffix is sty, cls, clo, dtx, or ltx, then the file will be treated as a "sty" file, so the "_" will be allowed as part of keywords (regardless of g:tex_isk) * If g:tex_isk exists, then it will be used for the local 'iskeyword' * Else the local 'iskeyword' will be set to 48-57,a-z,A-Z,192-255 *tex-supersub* *g:tex_superscripts* *g:tex_subscripts* Tex: Fine Subscript and Superscript Control~ See |tex-conceal| for how to enable concealed character replacement. See |g:tex_conceal| for selectively concealing accents, bold/italic, math, Greek, and superscripts/subscripts. One may exert fine control over which superscripts and subscripts one wants syntax-based concealment for (see |:syn-cchar|). Since not all fonts support all characters, one may override the concealed-replacement lists; by default these lists are given by: > let g:tex_superscripts= "[0-9a-zA-W.,:;+-<>/()=]" let g:tex_subscripts= "[0-9aehijklmnoprstuvx,+-/().]" < For example, I use Luxi Mono Bold; it doesn't support subscript characters for "hklmnpst", so I put > let g:tex_subscripts= "[0-9aeijoruvx,+-/().]" < in ~/.vim/ftplugin/tex/tex.vim in order to avoid having inscrutable utf-8 glyphs appear. TF *tf.vim* *ft-tf-syntax* There is one option for the tf syntax highlighting. For syncing, minlines defaults to 100. If you prefer another value, you can set "tf_minlines" to the value you desire. Example: > :let tf_minlines = your choice < VIM *vim.vim* *ft-vim-syntax* *g:vimsyn_minlines* *g:vimsyn_maxlines* There is a trade-off between more accurate syntax highlighting versus screen updating speed. To improve accuracy, you may wish to increase the g:vimsyn_minlines variable. The g:vimsyn_maxlines variable may be used to improve screen updating rates (see |:syn-sync| for more on this). > g:vimsyn_minlines : used to set synchronization minlines g:vimsyn_maxlines : used to set synchronization maxlines < (g:vim_minlines and g:vim_maxlines are deprecated variants of these two options) *g:vimsyn_embed* The g:vimsyn_embed option allows users to select what, if any, types of embedded script highlighting they wish to have. > g:vimsyn_embed == 0 : don't support any embedded scripts g:vimsyn_embed =~ 'l' : support embedded lua g:vimsyn_embed =~ 'm' : support embedded mzscheme g:vimsyn_embed =~ 'p' : support embedded perl g:vimsyn_embed =~ 'P' : support embedded python g:vimsyn_embed =~ 'r' : support embedded ruby g:vimsyn_embed =~ 't' : support embedded tcl < By default, g:vimsyn_embed is a string supporting interpreters that your vim itself supports. Concatenate multiple characters to support multiple types of embedded interpreters; ie. g:vimsyn_embed= "mp" supports embedded mzscheme and embedded perl. *g:vimsyn_folding* Some folding is now supported with syntax/vim.vim: > g:vimsyn_folding == 0 or doesn't exist: no syntax-based folding g:vimsyn_folding =~ 'a' : augroups g:vimsyn_folding =~ 'f' : fold functions g:vimsyn_folding =~ 'l' : fold lua script g:vimsyn_folding =~ 'm' : fold mzscheme script g:vimsyn_folding =~ 'p' : fold perl script g:vimsyn_folding =~ 'P' : fold python script g:vimsyn_folding =~ 'r' : fold ruby script g:vimsyn_folding =~ 't' : fold tcl script < *g:vimsyn_noerror* Not all error highlighting that syntax/vim.vim does may be correct; Vim script is a difficult language to highlight correctly. A way to suppress error highlighting is to put the following line in your |vimrc|: > let g:vimsyn_noerror = 1 < XF86CONFIG *xf86conf.vim* *ft-xf86conf-syntax* The syntax of XF86Config file differs in XFree86 v3.x and v4.x. Both variants are supported. Automatic detection is used, but is far from perfect. You may need to specify the version manually. Set the variable xf86conf_xfree86_version to 3 or 4 according to your XFree86 version in your .vimrc. Example: > :let xf86conf_xfree86_version=3 When using a mix of versions, set the b:xf86conf_xfree86_version variable. Note that spaces and underscores in option names are not supported. Use "SyncOnGreen" instead of "__s yn con gr_e_e_n" if you want the option name highlighted. XML *xml.vim* *ft-xml-syntax* Xml namespaces are highlighted by default. This can be inhibited by setting a global variable: > :let g:xml_namespace_transparent=1 < *xml-folding* The xml syntax file provides syntax |folding| (see |:syn-fold|) between start and end tags. This can be turned on by > :let g:xml_syntax_folding = 1 :set foldmethod=syntax Note: syntax folding might slow down syntax highlighting significantly, especially for large files. X Pixmaps (XPM) *xpm.vim* *ft-xpm-syntax* xpm.vim creates its syntax items dynamically based upon the contents of the XPM file. Thus if you make changes e.g. in the color specification strings, you have to source it again e.g. with ":set syn=xpm". To copy a pixel with one of the colors, yank a "pixel" with "yl" and insert it somewhere else with "P". Do you want to draw with the mouse? Try the following: > :function! GetPixel() : let c = getline(".")[col(".") - 1] : echo c : exe "noremap <LeftMouse> <LeftMouse>r".c : exe "noremap <LeftDrag> <LeftMouse>r".c :endfunction :noremap <RightMouse> <LeftMouse>:call GetPixel()<CR> :set guicursor=n:hor20 " to see the color beneath the cursor This turns the right button into a pipette and the left button into a pen. It will work with XPM files that have one character per pixel only and you must not click outside of the pixel strings, but feel free to improve it. It will look much better with a font in a quadratic cell size, e.g. for X: > :set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-* YAML *yaml.vim* *ft-yaml-syntax* *g:yaml_schema* *b:yaml_schema* A YAML schema is a combination of a set of tags and a mechanism for resolving non-specific tags. For user this means that YAML parser may, depending on plain scalar contents, treat plain scalar (which can actually be only string and nothing else) as a value of the other type: null, boolean, floating-point, integer. `g:yaml_schema` option determines according to which schema values will be highlighted specially. Supported schemas are Schema Description ~ failsafe No additional highlighting. json Supports JSON-style numbers, booleans and null. core Supports more number, boolean and null styles. pyyaml In addition to core schema supports highlighting timestamps, but there are some differences in what is recognized as numbers and many additional boolean values not present in core schema. Default schema is `core`. Note that schemas are not actually limited to plain scalars, but this is the only difference between schemas defined in YAML specification and the only difference defined in the syntax file. ZSH *zsh.vim* *ft-zsh-syntax* The syntax script for zsh allows for syntax-based folding: > :let g:zsh_fold_enable = 1 ============================================================================== 5. Defining a syntax *:syn-define* *E410* Vim understands three types of syntax items: 1. Keyword It can only contain keyword characters, according to the 'iskeyword' option. It cannot contain other syntax items. It will only match with a complete word (there are no keyword characters before or after the match). The keyword "if" would match in "if(a=b)", but not in "ifdef x", because "(" is not a keyword character and "d" is. 2. Match This is a match with a single regexp pattern. 3. Region This starts at a match of the "start" regexp pattern and ends with a match with the "end" regexp pattern. Any other text can appear in between. A "skip" regexp pattern can be used to avoid matching the "end" pattern. Several syntax ITEMs can be put into one syntax GROUP. For a syntax group you can give highlighting attributes. For example, you could have an item to define a "/* .. */" comment and another one that defines a "// .." comment, and put them both in the "Comment" group. You can then specify that a "Comment" will be in bold font and have a blue color. You are free to make one highlight group for one syntax item, or put all items into one group. This depends on how you want to specify your highlighting attributes. Putting each item in its own group results in having to specify the highlighting for a lot of groups. Note that a syntax group and a highlight group are similar. For a highlight group you will have given highlight attributes. These attributes will be used for the syntax group with the same name. In case more than one item matches at the same position, the one that was defined LAST wins. Thus you can override previously defined syntax items by using an item that matches the same text. But a keyword always goes before a match or region. And a keyword with matching case always goes before a keyword with ignoring case. PRIORITY *:syn-priority* When several syntax items may match, these rules are used: 1. When multiple Match or Region items start in the same position, the item defined last has priority. 2. A Keyword has priority over Match and Region items. 3. An item that starts in an earlier position has priority over items that start in later positions. DEFINING CASE *:syn-case* *E390* :sy[ntax] case [match | ignore] This defines if the following ":syntax" commands will work with matching case, when using "match", or with ignoring case, when using "ignore". Note that any items before this are not affected, and all items until the next ":syntax case" command are affected. :sy[ntax] case Show either "syntax case match" or "syntax case ignore" (translated). SPELL CHECKING *:syn-spell* :sy[ntax] spell [toplevel | notoplevel | default] This defines where spell checking is to be done for text that is not in a syntax item: toplevel: Text is spell checked. notoplevel: Text is not spell checked. default: When there is a @Spell cluster no spell checking. For text in syntax items use the @Spell and @NoSpell clusters |spell-syntax|. When there is no @Spell and no @NoSpell cluster then spell checking is done for "default" and "toplevel". To activate spell checking the 'spell' option must be set. :sy[ntax] spell Show either "syntax spell toplevel", "syntax spell notoplevel" or "syntax spell default" (translated). SYNTAX ISKEYWORD SETTING *:syn-iskeyword* :sy[ntax] iskeyword [clear | {option}] This defines the keyword characters. It's like the 'iskeyword' option for but only applies to syntax highlighting. clear: Syntax specific iskeyword setting is disabled and the buffer-local 'iskeyword' setting is used. {option} Set the syntax 'iskeyword' option to a new value. Example: > :syntax iskeyword @,48-57,192-255,$,_ < This would set the syntax specific iskeyword option to include all alphabetic characters, plus the numeric characters, all accented characters and also includes the "_" and the "$". If no argument is given, the current value will be output. Setting this option influences what |/\k| matches in syntax patterns and also determines where |:syn-keyword| will be checked for a new match. It is recommended when writing syntax files, to use this command to set the correct value for the specific syntax language and not change the 'iskeyword' option. DEFINING KEYWORDS *:syn-keyword* :sy[ntax] keyword {group-name} [{options}] {keyword} .. [{options}] This defines a number of keywords. {group-name} Is a syntax group name such as "Comment". [{options}] See |:syn-arguments| below. {keyword} .. Is a list of keywords which are part of this group. Example: > :syntax keyword Type int long char < The {options} can be given anywhere in the line. They will apply to all keywords given, also for options that come after a keyword. These examples do exactly the same: > :syntax keyword Type contained int long char :syntax keyword Type int long contained char :syntax keyword Type int long char contained < *E789* *E890* When you have a keyword with an optional tail, like Ex commands in Vim, you can put the optional characters inside [], to define all the variations at once: > :syntax keyword vimCommand ab[breviate] n[ext] < Don't forget that a keyword can only be recognized if all the characters are included in the 'iskeyword' option. If one character isn't, the keyword will never be recognized. Multi-byte characters can also be used. These do not have to be in 'iskeyword'. See |:syn-iskeyword| for defining syntax specific iskeyword settings. A keyword always has higher priority than a match or region, the keyword is used if more than one item matches. Keywords do not nest and a keyword can't contain anything else. Note that when you have a keyword that is the same as an option (even one that isn't allowed here), you can not use it. Use a match instead. The maximum length of a keyword is 80 characters. The same keyword can be defined multiple times, when its containment differs. For example, you can define the keyword once not contained and use one highlight group, and once contained, and use a different highlight group. Example: > :syn keyword vimCommand tag :syn keyword vimSetting contained tag < When finding "tag" outside of any syntax item, the "vimCommand" highlight group is used. When finding "tag" in a syntax item that contains "vimSetting", the "vimSetting" group is used. DEFINING MATCHES *:syn-match* :sy[ntax] match {group-name} [{options}] [excludenl] [keepend] {pattern} [{options}] This defines one match. {group-name} A syntax group name such as "Comment". [{options}] See |:syn-arguments| below. [excludenl] Don't make a pattern with the end-of-line "$" extend a containing match or region. Must be given before the pattern. |:syn-excludenl| keepend Don't allow contained matches to go past a match with the end pattern. See |:syn-keepend|. {pattern} The search pattern that defines the match. See |:syn-pattern| below. Note that the pattern may match more than one line, which makes the match depend on where Vim starts searching for the pattern. You need to make sure syncing takes care of this. Example (match a character constant): > :syntax match Character /'.'/hs=s+1,he=e-1 < DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end* *E398* *E399* :sy[ntax] region {group-name} [{options}] [matchgroup={group-name}] [keepend] [extend] [excludenl] start={start_pattern} .. [skip={skip_pattern}] end={end_pattern} .. [{options}] This defines one region. It may span several lines. {group-name} A syntax group name such as "Comment". [{options}] See |:syn-arguments| below. [matchgroup={group-name}] The syntax group to use for the following start or end pattern matches only. Not used for the text in between the matched start and end patterns. Use NONE to reset to not using a different group for the start or end match. See |:syn-matchgroup|. keepend Don't allow contained matches to go past a match with the end pattern. See |:syn-keepend|. extend Override a "keepend" for an item this region is contained in. See |:syn-extend|. excludenl Don't make a pattern with the end-of-line "$" extend a containing match or item. Only useful for end patterns. Must be given before the patterns it applies to. |:syn-excludenl| start={start_pattern} The search pattern that defines the start of the region. See |:syn-pattern| below. skip={skip_pattern} The search pattern that defines text inside the region where not to look for the end pattern. See |:syn-pattern| below. end={end_pattern} The search pattern that defines the end of the region. See |:syn-pattern| below. Example: > :syntax region String start=+"+ skip=+\\"+ end=+"+ < The start/skip/end patterns and the options can be given in any order. There can be zero or one skip pattern. There must be one or more start and end patterns. This means that you can omit the skip pattern, but you must give at least one start and one end pattern. It is allowed to have white space before and after the equal sign (although it mostly looks better without white space). When more than one start pattern is given, a match with one of these is sufficient. This means there is an OR relation between the start patterns. The last one that matches is used. The same is true for the end patterns. The search for the end pattern starts right after the start pattern. Offsets are not used for this. This implies that the match for the end pattern will never overlap with the start pattern. The skip and end pattern can match across line breaks, but since the search for the pattern can start in any line it often does not do what you want. The skip pattern doesn't avoid a match of an end pattern in the next line. Use single-line patterns to avoid trouble. Note: The decision to start a region is only based on a matching start pattern. There is no check for a matching end pattern. This does NOT work: > :syn region First start="(" end=":" :syn region Second start="(" end=";" < The Second always matches before the First (last defined pattern has higher priority). The Second region then continues until the next ';', no matter if there is a ':' before it. Using a match does work: > :syn match First "(\_.\{-}:" :syn match Second "(\_.\{-};" < This pattern matches any character or line break with "\_." and repeats that with "\{-}" (repeat as few as possible). *:syn-keepend* By default, a contained match can obscure a match for the end pattern. This is useful for nesting. For example, a region that starts with "{" and ends with "}", can contain another region. An encountered "}" will then end the contained region, but not the outer region: { starts outer "{}" region { starts contained "{}" region } ends contained "{}" region } ends outer "{} region If you don't want this, the "keepend" argument will make the matching of an end pattern of the outer region also end any contained item. This makes it impossible to nest the same region, but allows for contained items to highlight parts of the end pattern, without causing that to skip the match with the end pattern. Example: > :syn match vimComment +"[^"]\+$+ :syn region vimCommand start="set" end="$" contains=vimComment keepend < The "keepend" makes the vimCommand always end at the end of the line, even though the contained vimComment includes a match with the <EOL>. When "keepend" is not used, a match with an end pattern is retried after each contained match. When "keepend" is included, the first encountered match with an end pattern is used, truncating any contained matches. *:syn-extend* The "keepend" behavior can be changed by using the "extend" argument. When an item with "extend" is contained in an item that uses "keepend", the "keepend" is ignored and the containing region will be extended. This can be used to have some contained items extend a region while others don't. Example: > :syn region htmlRef start=+<a>+ end=+</a>+ keepend contains=htmlItem,htmlScript :syn match htmlItem +<[^>]*>+ contained :syn region htmlScript start=+<script+ end=+</script[^>]*>+ contained extend < Here the htmlItem item does not make the htmlRef item continue further, it is only used to highlight the <> items. The htmlScript item does extend the htmlRef item. Another example: > :syn region xmlFold start="<a>" end="</a>" fold transparent keepend extend < This defines a region with "keepend", so that its end cannot be changed by contained items, like when the "</a>" is matched to highlight it differently. But when the xmlFold region is nested (it includes itself), the "extend" applies, so that the "</a>" of a nested region only ends that region, and not the one it is contained in. *:syn-excludenl* When a pattern for a match or end pattern of a region includes a '$' to match the end-of-line, it will make a region item that it is contained in continue on the next line. For example, a match with "\\$" (backslash at the end of the line) can make a region continue that would normally stop at the end of the line. This is the default behavior. If this is not wanted, there are two ways to avoid it: 1. Use "keepend" for the containing item. This will keep all contained matches from extending the match or region. It can be used when all contained items must not extend the containing item. 2. Use "excludenl" in the contained item. This will keep that match from extending the containing match or region. It can be used if only some contained items must not extend the containing item. "excludenl" must be given before the pattern it applies to. *:syn-matchgroup* "matchgroup" can be used to highlight the start and/or end pattern differently than the body of the region. Example: > :syntax region String matchgroup=Quote start=+"+ skip=+\\"+ end=+"+ < This will highlight the quotes with the "Quote" group, and the text in between with the "String" group. The "matchgroup" is used for all start and end patterns that follow, until the next "matchgroup". Use "matchgroup=NONE" to go back to not using a matchgroup. In a start or end pattern that is highlighted with "matchgroup" the contained items of the region are not used. This can be used to avoid that a contained item matches in the start or end pattern match. When using "transparent", this does not apply to a start or end pattern match that is highlighted with "matchgroup". Here is an example, which highlights three levels of parentheses in different colors: > :sy region par1 matchgroup=par1 start=/(/ end=/)/ contains=par2 :sy region par2 matchgroup=par2 start=/(/ end=/)/ contains=par3 contained :sy region par3 matchgroup=par3 start=/(/ end=/)/ contains=par1 contained :hi par1 ctermfg=red guifg=red :hi par2 ctermfg=blue guifg=blue :hi par3 ctermfg=darkgreen guifg=darkgreen < *E849* The maximum number of syntax groups is 19999. ============================================================================== 6. :syntax arguments *:syn-arguments* The :syntax commands that define syntax items take a number of arguments. The common ones are explained here. The arguments may be given in any order and may be mixed with patterns. Not all commands accept all arguments. This table shows which arguments can not be used for all commands: *E395* contains oneline fold display extend concealends~ :syntax keyword - - - - - - :syntax match yes - yes yes yes - :syntax region yes yes yes yes yes yes These arguments can be used for all three commands: conceal cchar contained containedin nextgroup transparent skipwhite skipnl skipempty conceal *conceal* *:syn-conceal* When the "conceal" argument is given, the item is marked as concealable. Whether or not it is actually concealed depends on the value of the 'conceallevel' option. The 'concealcursor' option is used to decide whether concealable items in the current line are displayed unconcealed to be able to edit the line. Another way to conceal text is with |matchadd()|. concealends *:syn-concealends* When the "concealends" argument is given, the start and end matches of the region, but not the contents of the region, are marked as concealable. Whether or not they are actually concealed depends on the setting on the 'conceallevel' option. The ends of a region can only be concealed separately in this way when they have their own highlighting via "matchgroup" cchar *:syn-cchar* *E844* The "cchar" argument defines the character shown in place of the item when it is concealed (setting "cchar" only makes sense when the conceal argument is given.) If "cchar" is not set then the default conceal character defined in the 'listchars' option is used. The character cannot be a control character such as Tab. Example: > :syntax match Entity "&" conceal cchar=& See |hl-Conceal| for highlighting. contained *:syn-contained* When the "contained" argument is given, this item will not be recognized at the top level, but only when it is mentioned in the "contains" field of another match. Example: > :syntax keyword Todo TODO contained :syntax match Comment "//.*" contains=Todo display *:syn-display* If the "display" argument is given, this item will be skipped when the detected highlighting will not be displayed. This will speed up highlighting, by skipping this item when only finding the syntax state for the text that is to be displayed. Generally, you can use "display" for match and region items that meet these conditions: - The item does not continue past the end of a line. Example for C: A region for a "/*" comment can't contain "display", because it continues on the next line. - The item does not contain items that continue past the end of the line or make it continue on the next line. - The item does not change the size of any item it is contained in. Example for C: A match with "\\$" in a preprocessor match can't have "display", because it may make that preprocessor match shorter. - The item does not allow other items to match that didn't match otherwise, and that item may extend the match too far. Example for C: A match for a "//" comment can't use "display", because a "/*" inside that comment would match then and start a comment which extends past the end of the line. Examples, for the C language, where "display" can be used: - match with a number - match with a label transparent *:syn-transparent* If the "transparent" argument is given, this item will not be highlighted itself, but will take the highlighting of the item it is contained in. This is useful for syntax items that don't need any highlighting but are used only to skip over a part of the text. The "contains=" argument is also inherited from the item it is contained in, unless a "contains" argument is given for the transparent item itself. To avoid that unwanted items are contained, use "contains=NONE". Example, which highlights words in strings, but makes an exception for "vim": > :syn match myString /'[^']*'/ contains=myWord,myVim :syn match myWord /\<[a-z]*\>/ contained :syn match myVim /\<vim\>/ transparent contained contains=NONE :hi link myString String :hi link myWord Comment Since the "myVim" match comes after "myWord" it is the preferred match (last match in the same position overrules an earlier one). The "transparent" argument makes the "myVim" match use the same highlighting as "myString". But it does not contain anything. If the "contains=NONE" argument would be left out, then "myVim" would use the contains argument from myString and allow "myWord" to be contained, which will be highlighted as a Constant. This happens because a contained match doesn't match inside itself in the same position, thus the "myVim" match doesn't overrule the "myWord" match here. When you look at the colored text, it is like looking at layers of contained items. The contained item is on top of the item it is contained in, thus you see the contained item. When a contained item is transparent, you can look through, thus you see the item it is contained in. In a picture: look from here | | | | | | V V V V V V xxxx yyy more contained items .................... contained item (transparent) ============================= first item The 'x', 'y' and '=' represent a highlighted syntax item. The '.' represent a transparent group. What you see is: =======xxxx=======yyy======== Thus you look through the transparent "....". oneline *:syn-oneline* The "oneline" argument indicates that the region does not cross a line boundary. It must match completely in the current line. However, when the region has a contained item that does cross a line boundary, it continues on the next line anyway. A contained item can be used to recognize a line continuation pattern. But the "end" pattern must still match in the first line, otherwise the region doesn't even start. When the start pattern includes a "\n" to match an end-of-line, the end pattern must be found in the same line as where the start pattern ends. The end pattern may also include an end-of-line. Thus the "oneline" argument means that the end of the start pattern and the start of the end pattern must be within one line. This can't be changed by a skip pattern that matches a line break. fold *:syn-fold* The "fold" argument makes the fold level increase by one for this item. Example: > :syn region myFold start="{" end="}" transparent fold :syn sync fromstart :set foldmethod=syntax This will make each {} block form one fold. The fold will start on the line where the item starts, and end where the item ends. If the start and end are within the same line, there is no fold. The 'foldnestmax' option limits the nesting of syntax folds. {not available when Vim was compiled without |+folding| feature} *:syn-contains* *E405* *E406* *E407* *E408* *E409* contains={group-name},.. The "contains" argument is followed by a list of syntax group names. These groups will be allowed to begin inside the item (they may extend past the containing group's end). This allows for recursive nesting of matches and regions. If there is no "contains" argument, no groups will be contained in this item. The group names do not need to be defined before they can be used here. contains=ALL If the only item in the contains list is "ALL", then all groups will be accepted inside the item. contains=ALLBUT,{group-name},.. If the first item in the contains list is "ALLBUT", then all groups will be accepted inside the item, except the ones that are listed. Example: > :syntax region Block start="{" end="}" ... contains=ALLBUT,Function contains=TOP If the first item in the contains list is "TOP", then all groups will be accepted that don't have the "contained" argument. contains=TOP,{group-name},.. Like "TOP", but excluding the groups that are listed. contains=CONTAINED If the first item in the contains list is "CONTAINED", then all groups will be accepted that have the "contained" argument. contains=CONTAINED,{group-name},.. Like "CONTAINED", but excluding the groups that are listed. The {group-name} in the "contains" list can be a pattern. All group names that match the pattern will be included (or excluded, if "ALLBUT" is used). The pattern cannot contain white space or a ','. Example: > ... contains=Comment.*,Keyw[0-3] The matching will be done at moment the syntax command is executed. Groups that are defined later will not be matched. Also, if the current syntax command defines a new group, it is not matched. Be careful: When putting syntax commands in a file you can't rely on groups NOT being defined, because the file may have been sourced before, and ":syn clear" doesn't remove the group names. The contained groups will also match in the start and end patterns of a region. If this is not wanted, the "matchgroup" argument can be used |:syn-matchgroup|. The "ms=" and "me=" offsets can be used to change the region where contained items do match. Note that this may also limit the area that is highlighted containedin={group-name}... *:syn-containedin* The "containedin" argument is followed by a list of syntax group names. The item will be allowed to begin inside these groups. This works as if the containing item has a "contains=" argument that includes this item. The {group-name}... can be used just like for "contains", as explained above. This is useful when adding a syntax item afterwards. An item can be told to be included inside an already existing item, without changing the definition of that item. For example, to highlight a word in a C comment after loading the C syntax: > :syn keyword myword HELP containedin=cComment contained Note that "contained" is also used, to avoid that the item matches at the top level. Matches for "containedin" are added to the other places where the item can appear. A "contains" argument may also be added as usual. Don't forget that keywords never contain another item, thus adding them to "containedin" won't work. nextgroup={group-name},.. *:syn-nextgroup* The "nextgroup" argument is followed by a list of syntax group names, separated by commas (just like with "contains", so you can also use patterns). If the "nextgroup" argument is given, the mentioned syntax groups will be tried for a match, after the match or region ends. If none of the groups have a match, highlighting continues normally. If there is a match, this group will be used, even when it is not mentioned in the "contains" field of the current group. This is like giving the mentioned group priority over all other groups. Example: > :syntax match ccFoobar "Foo.\{-}Bar" contains=ccFoo :syntax match ccFoo "Foo" contained nextgroup=ccFiller :syntax region ccFiller start="." matchgroup=ccBar end="Bar" contained This will highlight "Foo" and "Bar" differently, and only when there is a "Bar" after "Foo". In the text line below, "f" shows where ccFoo is used for highlighting, and "bbb" where ccBar is used. > Foo asdfasd Bar asdf Foo asdf Bar asdf fff bbb fff bbb Note the use of ".\{-}" to skip as little as possible until the next Bar. when ".*" would be used, the "asdf" in between "Bar" and "Foo" would be highlighted according to the "ccFoobar" group, because the ccFooBar match would include the first "Foo" and the last "Bar" in the line (see |pattern|). skipwhite *:syn-skipwhite* skipnl *:syn-skipnl* skipempty *:syn-skipempty* These arguments are only used in combination with "nextgroup". They can be used to allow the next group to match after skipping some text: skipwhite skip over space and tab characters skipnl skip over the end of a line skipempty skip over empty lines (implies a "skipnl") When "skipwhite" is present, the white space is only skipped if there is no next group that matches the white space. When "skipnl" is present, the match with nextgroup may be found in the next line. This only happens when the current item ends at the end of the current line! When "skipnl" is not present, the nextgroup will only be found after the current item in the same line. When skipping text while looking for a next group, the matches for other groups are ignored. Only when no next group matches, other items are tried for a match again. This means that matching a next group and skipping white space and <EOL>s has a higher priority than other items. Example: > :syn match ifstart "\<if.*" nextgroup=ifline skipwhite skipempty :syn match ifline "[^ \t].*" nextgroup=ifline skipwhite skipempty contained :syn match ifline "endif" contained Note that the "[^ \t].*" match matches all non-white text. Thus it would also match "endif". Therefore the "endif" match is put last, so that it takes precedence. Note that this example doesn't work for nested "if"s. You need to add "contains" arguments to make that work (omitted for simplicity of the example). IMPLICIT CONCEAL *:syn-conceal-implicit* :sy[ntax] conceal [on|off] This defines if the following ":syntax" commands will define keywords, matches or regions with the "conceal" flag set. After ":syn conceal on", all subsequent ":syn keyword", ":syn match" or ":syn region" defined will have the "conceal" flag set implicitly. ":syn conceal off" returns to the normal state where the "conceal" flag must be given explicitly. :sy[ntax] conceal Show either "syntax conceal on" or "syntax conceal off" (translated). ============================================================================== 7. Syntax patterns *:syn-pattern* *E401* *E402* In the syntax commands, a pattern must be surrounded by two identical characters. This is like it works for the ":s" command. The most common to use is the double quote. But if the pattern contains a double quote, you can use another character that is not used in the pattern. Examples: > :syntax region Comment start="/\*" end="\*/" :syntax region String start=+"+ end=+"+ skip=+\\"+ See |pattern| for the explanation of what a pattern is. Syntax patterns are always interpreted like the 'magic' option is set, no matter what the actual value of 'magic' is. And the patterns are interpreted like the 'l' flag is not included in 'cpoptions'. This was done to make syntax files portable and independent of 'compatible' and 'magic' settings. Try to avoid patterns that can match an empty string, such as "[a-z]*". This slows down the highlighting a lot, because it matches everywhere. *:syn-pattern-offset* The pattern can be followed by a character offset. This can be used to change the highlighted part, and to change the text area included in the match or region (which only matters when trying to match other items). Both are relative to the matched pattern. The character offset for a skip pattern can be used to tell where to continue looking for an end pattern. The offset takes the form of "{what}={offset}" The {what} can be one of seven strings: ms Match Start offset for the start of the matched text me Match End offset for the end of the matched text hs Highlight Start offset for where the highlighting starts he Highlight End offset for where the highlighting ends rs Region Start offset for where the body of a region starts re Region End offset for where the body of a region ends lc Leading Context offset past "leading context" of pattern The {offset} can be: s start of the matched pattern s+{nr} start of the matched pattern plus {nr} chars to the right s-{nr} start of the matched pattern plus {nr} chars to the left e end of the matched pattern e+{nr} end of the matched pattern plus {nr} chars to the right e-{nr} end of the matched pattern plus {nr} chars to the left {nr} (for "lc" only): start matching {nr} chars right of the start Examples: "ms=s+1", "hs=e-2", "lc=3". Although all offsets are accepted after any pattern, they are not always meaningful. This table shows which offsets are actually used: ms me hs he rs re lc ~ match item yes yes yes yes - - yes region item start yes - yes - yes - yes region item skip - yes - - - - yes region item end - yes - yes - yes yes Offsets can be concatenated, with a ',' in between. Example: > :syn match String /"[^"]*"/hs=s+1,he=e-1 < some "string" text ^^^^^^ highlighted Notes: - There must be no white space between the pattern and the character offset(s). - The highlighted area will never be outside of the matched text. - A negative offset for an end pattern may not always work, because the end pattern may be detected when the highlighting should already have stopped. - Before Vim 7.2 the offsets were counted in bytes instead of characters. This didn't work well for multi-byte characters, so it was changed with the Vim 7.2 release. - The start of a match cannot be in a line other than where the pattern matched. This doesn't work: "a\nb"ms=e. You can make the highlighting start in another line, this does work: "a\nb"hs=e. Example (match a comment but don't highlight the /* and */): > :syntax region Comment start="/\*"hs=e+1 end="\*/"he=s-1 < /* this is a comment */ ^^^^^^^^^^^^^^^^^^^ highlighted A more complicated Example: > :syn region Exa matchgroup=Foo start="foo"hs=s+2,rs=e+2 matchgroup=Bar end="bar"me=e-1,he=e-1,re=s-1 < abcfoostringbarabc mmmmmmmmmmm match sssrrreee highlight start/region/end ("Foo", "Exa" and "Bar") Leading context *:syn-lc* *:syn-leading* *:syn-context* Note: This is an obsolete feature, only included for backwards compatibility with previous Vim versions. It's now recommended to use the |/\@<=| construct in the pattern. The "lc" offset specifies leading context -- a part of the pattern that must be present, but is not considered part of the match. An offset of "lc=n" will cause Vim to step back n columns before attempting the pattern match, allowing characters which have already been matched in previous patterns to also be used as leading context for this match. This can be used, for instance, to specify that an "escaping" character must not precede the match: > :syn match ZNoBackslash "[^\\]z"ms=s+1 :syn match WNoBackslash "[^\\]w"lc=1 :syn match Underline "_\+" < ___zzzz ___wwww ^^^ ^^^ matches Underline ^ ^ matches ZNoBackslash ^^^^ matches WNoBackslash The "ms" offset is automatically set to the same value as the "lc" offset, unless you set "ms" explicitly. Multi-line patterns *:syn-multi-line* The patterns can include "\n" to match an end-of-line. Mostly this works as expected, but there are a few exceptions. When using a start pattern with an offset, the start of the match is not allowed to start in a following line. The highlighting can start in a following line though. Using the "\zs" item also requires that the start of the match doesn't move to another line. The skip pattern can include the "\n", but the search for an end pattern will continue in the first character of the next line, also when that character is matched by the skip pattern. This is because redrawing may start in any line halfway a region and there is no check if the skip pattern started in a previous line. For example, if the skip pattern is "a\nb" and an end pattern is "b", the end pattern does match in the second line of this: > x x a b x x Generally this means that the skip pattern should not match any characters after the "\n". External matches *:syn-ext-match* These extra regular expression items are available in region patterns: */\z(* */\z(\)* *E50* *E52* *E879* \z(\) Marks the sub-expression as "external", meaning that it can be accessed from another pattern match. Currently only usable in defining a syntax region start pattern. */\z1* */\z2* */\z3* */\z4* */\z5* \z1 ... \z9 */\z6* */\z7* */\z8* */\z9* *E66* *E67* Matches the same string that was matched by the corresponding sub-expression in a previous start pattern match. Sometimes the start and end patterns of a region need to share a common sub-expression. A common example is the "here" document in Perl and many Unix shells. This effect can be achieved with the "\z" special regular expression items, which marks a sub-expression as "external", in the sense that it can be referenced from outside the pattern in which it is defined. The here-document example, for instance, can be done like this: > :syn region hereDoc start="<<\z(\I\i*\)" end="^\z1$" As can be seen here, the \z actually does double duty. In the start pattern, it marks the "\(\I\i*\)" sub-expression as external; in the end pattern, it changes the \z1 back-reference into an external reference referring to the first external sub-expression in the start pattern. External references can also be used in skip patterns: > :syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1" Note that normal and external sub-expressions are completely orthogonal and indexed separately; for instance, if the pattern "\z(..\)\(..\)" is applied to the string "aabb", then \1 will refer to "bb" and \z1 will refer to "aa". Note also that external sub-expressions cannot be accessed as back-references within the same pattern like normal sub-expressions. If you want to use one sub-expression as both a normal and an external sub-expression, you can nest the two, as in "\(\z(...\)\)". Note that only matches within a single line can be used. Multi-line matches cannot be referred to. ============================================================================== 8. Syntax clusters *:syn-cluster* *E400* :sy[ntax] cluster {cluster-name} [contains={group-name}..] [add={group-name}..] [remove={group-name}..] This command allows you to cluster a list of syntax groups together under a single name. contains={group-name}.. The cluster is set to the specified list of groups. add={group-name}.. The specified groups are added to the cluster. remove={group-name}.. The specified groups are removed from the cluster. A cluster so defined may be referred to in a contains=.., containedin=.., nextgroup=.., add=.. or remove=.. list with a "@" prefix. You can also use this notation to implicitly declare a cluster before specifying its contents. Example: > :syntax match Thing "# [^#]\+ #" contains=@ThingMembers :syntax cluster ThingMembers contains=ThingMember1,ThingMember2 As the previous example suggests, modifications to a cluster are effectively retroactive; the membership of the cluster is checked at the last minute, so to speak: > :syntax keyword A aaa :syntax keyword B bbb :syntax cluster AandB contains=A :syntax match Stuff "( aaa bbb )" contains=@AandB :syntax cluster AandB add=B " now both keywords are matched in Stuff This also has implications for nested clusters: > :syntax keyword A aaa :syntax keyword B bbb :syntax cluster SmallGroup contains=B :syntax cluster BigGroup contains=A,@SmallGroup :syntax match Stuff "( aaa bbb )" contains=@BigGroup :syntax cluster BigGroup remove=B " no effect, since B isn't in BigGroup :syntax cluster SmallGroup remove=B " now bbb isn't matched within Stuff < *E848* The maximum number of clusters is 9767. ============================================================================== 9. Including syntax files *:syn-include* *E397* It is often useful for one language's syntax file to include a syntax file for a related language. Depending on the exact relationship, this can be done in two different ways: - If top-level syntax items in the included syntax file are to be allowed at the top level in the including syntax, you can simply use the |:runtime| command: > " In cpp.vim: :runtime! syntax/c.vim :unlet b:current_syntax < - If top-level syntax items in the included syntax file are to be contained within a region in the including syntax, you can use the ":syntax include" command: :sy[ntax] include [@{grouplist-name}] {file-name} All syntax items declared in the included file will have the "contained" flag added. In addition, if a group list is specified, all top-level syntax items in the included file will be added to that list. > " In perl.vim: :syntax include @Pod <sfile>:p:h/pod.vim :syntax region perlPOD start="^=head" end="^=cut" contains=@Pod < When {file-name} is an absolute path (starts with "/", "c:", "$VAR" or "<sfile>") that file is sourced. When it is a relative path (e.g., "syntax/pod.vim") the file is searched for in 'runtimepath'. All matching files are loaded. Using a relative path is recommended, because it allows a user to replace the included file with his own version, without replacing the file that does the ":syn include". *E847* The maximum number of includes is 999. ============================================================================== 10. Synchronizing *:syn-sync* *E403* *E404* Vim wants to be able to start redrawing in any position in the document. To make this possible it needs to know the syntax state at the position where redrawing starts. :sy[ntax] sync [ccomment [group-name] | minlines={N} | ...] There are four ways to synchronize: 1. Always parse from the start of the file. |:syn-sync-first| 2. Based on C-style comments. Vim understands how C-comments work and can figure out if the current line starts inside or outside a comment. |:syn-sync-second| 3. Jumping back a certain number of lines and start parsing there. |:syn-sync-third| 4. Searching backwards in the text for a pattern to sync on. |:syn-sync-fourth| *:syn-sync-maxlines* *:syn-sync-minlines* For the last three methods, the line range where the parsing can start is limited by "minlines" and "maxlines". If the "minlines={N}" argument is given, the parsing always starts at least that many lines backwards. This can be used if the parsing may take a few lines before it's correct, or when it's not possible to use syncing. If the "maxlines={N}" argument is given, the number of lines that are searched for a comment or syncing pattern is restricted to N lines backwards (after adding "minlines"). This is useful if you have few things to sync on and a slow machine. Example: > :syntax sync maxlines=500 ccomment < *:syn-sync-linebreaks* When using a pattern that matches multiple lines, a change in one line may cause a pattern to no longer match in a previous line. This means has to start above where the change was made. How many lines can be specified with the "linebreaks" argument. For example, when a pattern may include one line break use this: > :syntax sync linebreaks=1 The result is that redrawing always starts at least one line before where a change was made. The default value for "linebreaks" is zero. Usually the value for "minlines" is bigger than "linebreaks". First syncing method: *:syn-sync-first* > :syntax sync fromstart The file will be parsed from the start. This makes syntax highlighting accurate, but can be slow for long files. Vim caches previously parsed text, so that it's only slow when parsing the text for the first time. However, when making changes some part of the text needs to be parsed again (worst case: to the end of the file). Using "fromstart" is equivalent to using "minlines" with a very large number. Second syncing method: *:syn-sync-second* *:syn-sync-ccomment* For the second method, only the "ccomment" argument needs to be given. Example: > :syntax sync ccomment When Vim finds that the line where displaying starts is inside a C-style comment, the last region syntax item with the group-name "Comment" will be used. This requires that there is a region with the group-name "Comment"! An alternate group name can be specified, for example: > :syntax sync ccomment javaComment This means that the last item specified with "syn region javaComment" will be used for the detected C comment region. This only works properly if that region does have a start pattern "\/*" and an end pattern "*\/". The "maxlines" argument can be used to restrict the search to a number of lines. The "minlines" argument can be used to at least start a number of lines back (e.g., for when there is some construct that only takes a few lines, but it hard to sync on). Note: Syncing on a C comment doesn't work properly when strings are used that cross a line and contain a "*/". Since letting strings cross a line is a bad programming habit (many compilers give a warning message), and the chance of a "*/" appearing inside a comment is very small, this restriction is hardly ever noticed. Third syncing method: *:syn-sync-third* For the third method, only the "minlines={N}" argument needs to be given. Vim will subtract {N} from the line number and start parsing there. This means {N} extra lines need to be parsed, which makes this method a bit slower. Example: > :syntax sync minlines=50 "lines" is equivalent to "minlines" (used by older versions). Fourth syncing method: *:syn-sync-fourth* The idea is to synchronize on the end of a few specific regions, called a sync pattern. Only regions can cross lines, so when we find the end of some region, we might be able to know in which syntax item we are. The search starts in the line just above the one where redrawing starts. From there the search continues backwards in the file. This works just like the non-syncing syntax items. You can use contained matches, nextgroup, etc. But there are a few differences: - Keywords cannot be used. - The syntax items with the "sync" keyword form a completely separated group of syntax items. You can't mix syncing groups and non-syncing groups. - The matching works backwards in the buffer (line by line), instead of forwards. - A line continuation pattern can be given. It is used to decide which group of lines need to be searched like they were one line. This means that the search for a match with the specified items starts in the first of the consecutive that contain the continuation pattern. - When using "nextgroup" or "contains", this only works within one line (or group of continued lines). - When using a region, it must start and end in the same line (or group of continued lines). Otherwise the end is assumed to be at the end of the line (or group of continued lines). - When a match with a sync pattern is found, the rest of the line (or group of continued lines) is searched for another match. The last match is used. This is used when a line can contain both the start end the end of a region (e.g., in a C-comment like /* this */, the last "*/" is used). There are two ways how a match with a sync pattern can be used: 1. Parsing for highlighting starts where redrawing starts (and where the search for the sync pattern started). The syntax group that is expected to be valid there must be specified. This works well when the regions that cross lines cannot contain other regions. 2. Parsing for highlighting continues just after the match. The syntax group that is expected to be present just after the match must be specified. This can be used when the previous method doesn't work well. It's much slower, because more text needs to be parsed. Both types of sync patterns can be used at the same time. Besides the sync patterns, other matches and regions can be specified, to avoid finding unwanted matches. [The reason that the sync patterns are given separately, is that mostly the search for the sync point can be much simpler than figuring out the highlighting. The reduced number of patterns means it will go (much) faster.] *syn-sync-grouphere* *E393* *E394* :syntax sync match {sync-group-name} grouphere {group-name} "pattern" .. Define a match that is used for syncing. {group-name} is the name of a syntax group that follows just after the match. Parsing of the text for highlighting starts just after the match. A region must exist for this {group-name}. The first one defined will be used. "NONE" can be used for when there is no syntax group after the match. *syn-sync-groupthere* :syntax sync match {sync-group-name} groupthere {group-name} "pattern" .. Like "grouphere", but {group-name} is the name of a syntax group that is to be used at the start of the line where searching for the sync point started. The text between the match and the start of the sync pattern searching is assumed not to change the syntax highlighting. For example, in C you could search backwards for "/*" and "*/". If "/*" is found first, you know that you are inside a comment, so the "groupthere" is "cComment". If "*/" is found first, you know that you are not in a comment, so the "groupthere" is "NONE". (in practice it's a bit more complicated, because the "/*" and "*/" could appear inside a string. That's left as an exercise to the reader...). :syntax sync match .. :syntax sync region .. Without a "groupthere" argument. Define a region or match that is skipped while searching for a sync point. *syn-sync-linecont* :syntax sync linecont {pattern} When {pattern} matches in a line, it is considered to continue in the next line. This means that the search for a sync point will consider the lines to be concatenated. If the "maxlines={N}" argument is given too, the number of lines that are searched for a match is restricted to N. This is useful if you have very few things to sync on and a slow machine. Example: > :syntax sync maxlines=100 You can clear all sync settings with: > :syntax sync clear You can clear specific sync patterns with: > :syntax sync clear {sync-group-name} .. ============================================================================== 11. Listing syntax items *:syntax* *:sy* *:syn* *:syn-list* This command lists all the syntax items: > :sy[ntax] [list] To show the syntax items for one syntax group: > :sy[ntax] list {group-name} To list the syntax groups in one cluster: *E392* > :sy[ntax] list @{cluster-name} See above for other arguments for the ":syntax" command. Note that the ":syntax" command can be abbreviated to ":sy", although ":syn" is mostly used, because it looks better. ============================================================================== 12. Highlight command *:highlight* *:hi* *E28* *E411* *E415* There are three types of highlight groups: - The ones used for specific languages. For these the name starts with the name of the language. Many of these don't have any attributes, but are linked to a group of the second type. - The ones used for all syntax languages. - The ones used for the 'highlight' option. *hitest.vim* You can see all the groups currently active with this command: > :so $VIMRUNTIME/syntax/hitest.vim This will open a new window containing all highlight group names, displayed in their own color. *:colo* *:colorscheme* *E185* :colo[rscheme] Output the name of the currently active color scheme. This is basically the same as > :echo g:colors_name < In case g:colors_name has not been defined :colo will output "default". When compiled without the |+eval| feature it will output "unknown". :colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath' for the file "colors/{name}.vim". The first one that is found is loaded. Also searches all plugins in 'packpath', first below "start" and then under "opt". Doesn't work recursively, thus you can't use ":colorscheme" in a color scheme script. To customize a colorscheme use another name, e.g. "~/.vim/colors/mine.vim", and use `:runtime` to load the original colorscheme: > runtime colors/evening.vim hi Statement ctermfg=Blue guifg=Blue < After the color scheme has been loaded the |ColorScheme| autocommand event is triggered. For info about writing a colorscheme file: > :edit $VIMRUNTIME/colors/README.txt :hi[ghlight] List all the current highlight groups that have attributes set. :hi[ghlight] {group-name} List one highlight group. :hi[ghlight] clear Reset all highlighting to the defaults. Removes all highlighting for groups added by the user! Uses the current value of 'background' to decide which default colors to use. :hi[ghlight] clear {group-name} :hi[ghlight] {group-name} NONE Disable the highlighting for one highlight group. It is _not_ set back to the default colors. :hi[ghlight] [default] {group-name} {key}={arg} .. Add a highlight group, or change the highlighting for an existing group. See |highlight-args| for the {key}={arg} arguments. See |:highlight-default| for the optional [default] argument. Normally a highlight group is added once when starting up. This sets the default values for the highlighting. After that, you can use additional highlight commands to change the arguments that you want to set to non-default values. The value "NONE" can be used to switch the value off or go back to the default value. A simple way to change colors is with the |:colorscheme| command. This loads a file with ":highlight" commands such as this: > :hi Comment gui=bold Note that all settings that are not included remain the same, only the specified field is used, and settings are merged with previous ones. So, the result is like this single command has been used: > :hi Comment term=bold ctermfg=Cyan guifg=#80a0ff gui=bold < *:highlight-verbose* When listing a highlight group and 'verbose' is non-zero, the listing will also tell where it was last set. Example: > :verbose hi Comment < Comment xxx term=bold ctermfg=4 guifg=Blue ~ Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim ~ When ":hi clear" is used then the script where this command is used will be mentioned for the default values. See |:verbose-cmd| for more information. *highlight-args* *E416* *E417* *E423* There are three types of terminals for highlighting: term a normal terminal (vt100, xterm) cterm a color terminal (MS-DOS console, color-xterm, these have the "Co" termcap entry) gui the GUI For each type the highlighting can be given. This makes it possible to use the same syntax file on all terminals, and use the optimal highlighting. 1. highlight arguments for normal terminals *bold* *underline* *undercurl* *inverse* *italic* *standout* *nocombine* *strikethrough* term={attr-list} *attr-list* *highlight-term* *E418* attr-list is a comma separated list (without spaces) of the following items (in any order): bold underline undercurl not always available strikethrough not always available reverse inverse same as reverse italic standout nocombine override attributes instead of combining them NONE no attributes used (used to reset it) Note that "bold" can be used here and by using a bold font. They have the same effect. "undercurl" is a curly underline. When "undercurl" is not possible then "underline" is used. In general "undercurl" and "strikethrough" is only available in the GUI. The color is set with |highlight-guisp|. start={term-list} *highlight-start* *E422* stop={term-list} *term-list* *highlight-stop* These lists of terminal codes can be used to get non-standard attributes on a terminal. The escape sequence specified with the "start" argument is written before the characters in the highlighted area. It can be anything that you want to send to the terminal to highlight this area. The escape sequence specified with the "stop" argument is written after the highlighted area. This should undo the "start" argument. Otherwise the screen will look messed up. The {term-list} can have two forms: 1. A string with escape sequences. This is any string of characters, except that it can't start with "t_" and blanks are not allowed. The <> notation is recognized here, so you can use things like "<Esc>" and "<Space>". Example: start=<Esc>[27h;<Esc>[<Space>r; 2. A list of terminal codes. Each terminal code has the form "t_xx", where "xx" is the name of the termcap entry. The codes have to be separated with commas. White space is not allowed. Example: start=t_C1,t_BL The terminal codes must exist for this to work. 2. highlight arguments for color terminals cterm={attr-list} *highlight-cterm* See above for the description of {attr-list} |attr-list|. The "cterm" argument is likely to be different from "term", when colors are used. For example, in a normal terminal comments could be underlined, in a color terminal they can be made Blue. Note: Many terminals (e.g., DOS console) can't mix these attributes with coloring. Use only one of "cterm=" OR "ctermfg=" OR "ctermbg=". ctermfg={color-nr} *highlight-ctermfg* *E421* ctermbg={color-nr} *highlight-ctermbg* The {color-nr} argument is a color number. Its range is zero to (not including) the number given by the termcap entry "Co". The actual color with this number depends on the type of terminal and its settings. Sometimes the color also depends on the settings of "cterm". For example, on some systems "cterm=bold ctermfg=3" gives another color, on others you just get color 3. For an xterm this depends on your resources, and is a bit unpredictable. See your xterm documentation for the defaults. The colors for a color-xterm can be changed from the .Xdefaults file. Unfortunately this means that it's not possible to get the same colors for each user. See |xterm-color| for info about color xterms. The MSDOS standard colors are fixed (in a console window), so these have been used for the names. But the meaning of color names in X11 are fixed, so these color settings have been used, to make the highlighting settings portable (complicated, isn't it?). The following names are recognized, with the color number used: *cterm-colors* NR-16 NR-8 COLOR NAME ~ 0 0 Black 1 4 DarkBlue 2 2 DarkGreen 3 6 DarkCyan 4 1 DarkRed 5 5 DarkMagenta 6 3 Brown, DarkYellow 7 7 LightGray, LightGrey, Gray, Grey 8 0* DarkGray, DarkGrey 9 4* Blue, LightBlue 10 2* Green, LightGreen 11 6* Cyan, LightCyan 12 1* Red, LightRed 13 5* Magenta, LightMagenta 14 3* Yellow, LightYellow 15 7* White The number under "NR-16" is used for 16-color terminals ('t_Co' greater than or equal to 16). The number under "NR-8" is used for 8-color terminals ('t_Co' less than 16). The '*' indicates that the bold attribute is set for ctermfg. In many 8-color terminals (e.g., "linux"), this causes the bright colors to appear. This doesn't work for background colors! Without the '*' the bold attribute is removed. If you want to set the bold attribute in a different way, put a "cterm=" argument AFTER the "ctermfg=" or "ctermbg=" argument. Or use a number instead of a color name. The case of the color names is ignored. Note that for 16 color ansi style terminals (including xterms), the numbers in the NR-8 column is used. Here '*' means 'add 8' so that Blue is 12, DarkGray is 8 etc. Note that for some color terminals these names may result in the wrong colors! You can also use "NONE" to remove the color. *:hi-normal-cterm* When setting the "ctermfg" or "ctermbg" colors for the Normal group, these will become the colors used for the non-highlighted text. Example: > :highlight Normal ctermfg=grey ctermbg=darkblue < When setting the "ctermbg" color for the Normal group, the 'background' option will be adjusted automatically, under the condition that the color is recognized and 'background' was not set explicitly. This causes the highlight groups that depend on 'background' to change! This means you should set the colors for Normal first, before setting other colors. When a colorscheme is being used, changing 'background' causes it to be reloaded, which may reset all colors (including Normal). First delete the "g:colors_name" variable when you don't want this. When you have set "ctermfg" or "ctermbg" for the Normal group, Vim needs to reset the color when exiting. This is done with the "op" termcap entry |t_op|. If this doesn't work correctly, try setting the 't_op' option in your .vimrc. *E419* *E420* When Vim knows the normal foreground and background colors, "fg" and "bg" can be used as color names. This only works after setting the colors for the Normal group and for the MS-DOS console. Example, for reverse video: > :highlight Visual ctermfg=bg ctermbg=fg < Note that the colors are used that are valid at the moment this command are given. If the Normal group colors are changed later, the "fg" and "bg" colors will not be adjusted. 3. highlight arguments for the GUI gui={attr-list} *highlight-gui* These give the attributes to use in the GUI mode. See |attr-list| for a description. Note that "bold" can be used here and by using a bold font. They have the same effect. Note that the attributes are ignored for the "Normal" group. font={font-name} *highlight-font* font-name is the name of a font, as it is used on the system Vim runs on. For X11 this is a complicated name, for example: > font=-misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1 < The font-name "NONE" can be used to revert to the default font. When setting the font for the "Normal" group, this becomes the default font (until the 'guifont' option is changed; the last one set is used). The following only works with Motif and Athena, not with other GUIs: When setting the font for the "Menu" group, the menus will be changed. When setting the font for the "Tooltip" group, the tooltips will be changed. All fonts used, except for Menu and Tooltip, should be of the same character size as the default font! Otherwise redrawing problems will occur. To use a font name with an embedded space or other special character, put it in single quotes. The single quote cannot be used then. Example: > :hi comment font='Monospace 10' guifg={color-name} *highlight-guifg* guibg={color-name} *highlight-guibg* guisp={color-name} *highlight-guisp* These give the foreground (guifg), background (guibg) and special (guisp) color to use in the GUI. "guisp" is used for undercurl and strikethrough. There are a few special names: NONE no color (transparent) bg use normal background color background use normal background color fg use normal foreground color foreground use normal foreground color To use a color name with an embedded space or other special character, put it in single quotes. The single quote cannot be used then. Example: > :hi comment guifg='salmon pink' < *gui-colors* Suggested color names (these are available on most systems): Red LightRed DarkRed Green LightGreen DarkGreen SeaGreen Blue LightBlue DarkBlue SlateBlue Cyan LightCyan DarkCyan Magenta LightMagenta DarkMagenta Yellow LightYellow Brown DarkYellow Gray LightGray DarkGray Black White Orange Purple Violet In the Win32 GUI version, additional system colors are available. See |win32-colors|. You can also specify a color by its Red, Green and Blue values. The format is "#rrggbb", where "rr" is the Red value "gg" is the Green value "bb" is the Blue value All values are hexadecimal, range from "00" to "ff". Examples: > :highlight Comment guifg=#11f0c3 guibg=#ff00ff < *highlight-groups* *highlight-default* These are the default highlighting groups. These groups are used by the 'highlight' option default. Note that the highlighting depends on the value of 'background'. You can see the current settings with the ":highlight" command. *hl-ColorColumn* ColorColumn used for the columns set with 'colorcolumn' *hl-Conceal* Conceal placeholder characters substituted for concealed text (see 'conceallevel') *hl-Cursor* Cursor the character under the cursor *hl-CursorIM* CursorIM like Cursor, but used when in IME mode |CursorIM| *hl-CursorColumn* CursorColumn the screen column that the cursor is in when 'cursorcolumn' is set *hl-CursorLine* CursorLine the screen line that the cursor is in when 'cursorline' is set *hl-Directory* Directory directory names (and other special names in listings) *hl-DiffAdd* DiffAdd diff mode: Added line |diff.txt| *hl-DiffChange* DiffChange diff mode: Changed line |diff.txt| *hl-DiffDelete* DiffDelete diff mode: Deleted line |diff.txt| *hl-DiffText* DiffText diff mode: Changed text within a changed line |diff.txt| *hl-EndOfBuffer* EndOfBuffer filler lines (~) after the last line in the buffer. By default, this is highlighted like |hl-NonText|. *hl-ErrorMsg* ErrorMsg error messages on the command line *hl-VertSplit* VertSplit the column separating vertically split windows *hl-Folded* Folded line used for closed folds *hl-FoldColumn* FoldColumn 'foldcolumn' *hl-SignColumn* SignColumn column where |signs| are displayed *hl-IncSearch* IncSearch 'incsearch' highlighting; also used for the text replaced with ":s///c" *hl-LineNr* LineNr Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set. *hl-CursorLineNr* CursorLineNr Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line. *hl-MatchParen* MatchParen The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt| *hl-ModeMsg* ModeMsg 'showmode' message (e.g., "-- INSERT --") *hl-MoreMsg* MoreMsg |more-prompt| *hl-NonText* NonText '@' at the end of the window, characters from 'showbreak' and other characters that do not really exist in the text (e.g., ">" displayed when a double-wide character doesn't fit at the end of the line). *hl-Normal* Normal normal text *hl-Pmenu* Pmenu Popup menu: normal item. *hl-PmenuSel* PmenuSel Popup menu: selected item. *hl-PmenuSbar* PmenuSbar Popup menu: scrollbar. *hl-PmenuThumb* PmenuThumb Popup menu: Thumb of the scrollbar. *hl-Question* Question |hit-enter| prompt and yes/no questions *hl-QuickFixLine* QuickFixLine Current |quickfix| item in the quickfix window. *hl-Search* Search Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out. *hl-SpecialKey* SpecialKey Meta and special keys listed with ":map", also for text used to show unprintable characters in the text, 'listchars'. Generally: text that is displayed differently from what it really is. *hl-SpellBad* SpellBad Word that is not recognized by the spellchecker. |spell| This will be combined with the highlighting used otherwise. *hl-SpellCap* SpellCap Word that should start with a capital. |spell| This will be combined with the highlighting used otherwise. *hl-SpellLocal* SpellLocal Word that is recognized by the spellchecker as one that is used in another region. |spell| This will be combined with the highlighting used otherwise. *hl-SpellRare* SpellRare Word that is recognized by the spellchecker as one that is hardly ever used. |spell| This will be combined with the highlighting used otherwise. *hl-StatusLine* StatusLine status line of current window *hl-StatusLineNC* StatusLineNC status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window. *hl-StatusLineTerm* StatusLineTerm status line of current window, if it is a |terminal| window. *hl-StatusLineTermNC* StatusLineTermNC status lines of not-current windows that is a |terminal| window. *hl-TabLine* TabLine tab pages line, not active tab page label *hl-TabLineFill* TabLineFill tab pages line, where there are no labels *hl-TabLineSel* TabLineSel tab pages line, active tab page label *hl-Terminal* Terminal |terminal| window (see |terminal-size-color|) *hl-Title* Title titles for output from ":set all", ":autocmd" etc. *hl-Visual* Visual Visual mode selection *hl-VisualNOS* VisualNOS Visual mode selection when vim is "Not Owning the Selection". Only X11 Gui's |gui-x11| and |xterm-clipboard| supports this. *hl-WarningMsg* WarningMsg warning messages *hl-WildMenu* WildMenu current match in 'wildmenu' completion *hl-User1* *hl-User1..9* *hl-User9* The 'statusline' syntax allows the use of 9 different highlights in the statusline and ruler (via 'rulerformat'). The names are User1 to User9. For the GUI you can use the following groups to set the colors for the menu, scrollbars and tooltips. They don't have defaults. This doesn't work for the Win32 GUI. Only three highlight arguments have any effect here: font, guibg, and guifg. *hl-Menu* Menu Current font, background and foreground colors of the menus. Also used for the toolbar. Applicable highlight arguments: font, guibg, guifg. NOTE: For Motif and Athena the font argument actually specifies a fontset at all times, no matter if 'guifontset' is empty, and as such it is tied to the current |:language| when set. *hl-Scrollbar* Scrollbar Current background and foreground of the main window's scrollbars. Applicable highlight arguments: guibg, guifg. *hl-Tooltip* Tooltip Current font, background and foreground of the tooltips. Applicable highlight arguments: font, guibg, guifg. NOTE: For Motif and Athena the font argument actually specifies a fontset at all times, no matter if 'guifontset' is empty, and as such it is tied to the current |:language| when set. ============================================================================== 13. Linking groups *:hi-link* *:highlight-link* *E412* *E413* When you want to use the same highlighting for several syntax groups, you can do this more easily by linking the groups into one common highlight group, and give the color attributes only for that group. To set a link: :hi[ghlight][!] [default] link {from-group} {to-group} To remove a link: :hi[ghlight][!] [default] link {from-group} NONE Notes: *E414* - If the {from-group} and/or {to-group} doesn't exist, it is created. You don't get an error message for a non-existing group. - As soon as you use a ":highlight" command for a linked group, the link is removed. - If there are already highlight settings for the {from-group}, the link is not made, unless the '!' is given. For a ":highlight link" command in a sourced file, you don't get an error message. This can be used to skip links for groups that already have settings. *:hi-default* *:highlight-default* The [default] argument is used for setting the default highlighting for a group. If highlighting has already been specified for the group the command will be ignored. Also when there is an existing link. Using [default] is especially useful to overrule the highlighting of a specific syntax file. For example, the C syntax file contains: > :highlight default link cComment Comment If you like Question highlighting for C comments, put this in your vimrc file: > :highlight link cComment Question Without the "default" in the C syntax file, the highlighting would be overruled when the syntax file is loaded. ============================================================================== 14. Cleaning up *:syn-clear* *E391* If you want to clear the syntax stuff for the current buffer, you can use this command: > :syntax clear This command should be used when you want to switch off syntax highlighting, or when you want to switch to using another syntax. It's normally not needed in a syntax file itself, because syntax is cleared by the autocommands that load the syntax file. The command also deletes the "b:current_syntax" variable, since no syntax is loaded after this command. If you want to disable syntax highlighting for all buffers, you need to remove the autocommands that load the syntax files: > :syntax off What this command actually does, is executing the command > :source $VIMRUNTIME/syntax/nosyntax.vim See the "nosyntax.vim" file for details. Note that for this to work $VIMRUNTIME must be valid. See |$VIMRUNTIME|. To clean up specific syntax groups for the current buffer: > :syntax clear {group-name} .. This removes all patterns and keywords for {group-name}. To clean up specific syntax group lists for the current buffer: > :syntax clear @{grouplist-name} .. This sets {grouplist-name}'s contents to an empty list. *:syntax-reset* *:syn-reset* If you have changed the colors and messed them up, use this command to get the defaults back: > :syntax reset It is a bit of a wrong name, since it does not reset any syntax items, it only affects the highlighting. This doesn't change the colors for the 'highlight' option. Note that the syntax colors that you set in your vimrc file will also be reset back to their Vim default. Note that if you are using a color scheme, the colors defined by the color scheme for syntax highlighting will be lost. What this actually does is: > let g:syntax_cmd = "reset" runtime! syntax/syncolor.vim Note that this uses the 'runtimepath' option. *syncolor* If you want to use different colors for syntax highlighting, you can add a Vim script file to set these colors. Put this file in a directory in 'runtimepath' which comes after $VIMRUNTIME, so that your settings overrule the default colors. This way these colors will be used after the ":syntax reset" command. For Unix you can use the file ~/.vim/after/syntax/syncolor.vim. Example: > if &background == "light" highlight comment ctermfg=darkgreen guifg=darkgreen else highlight comment ctermfg=green guifg=green endif *E679* Do make sure this syncolor.vim script does not use a "syntax on", set the 'background' option or uses a "colorscheme" command, because it results in an endless loop. Note that when a color scheme is used, there might be some confusion whether your defined colors are to be used or the colors from the scheme. This depends on the color scheme file. See |:colorscheme|. *syntax_cmd* The "syntax_cmd" variable is set to one of these values when the syntax/syncolor.vim files are loaded: "on" ":syntax on" command. Highlight colors are overruled but links are kept "enable" ":syntax enable" command. Only define colors for groups that don't have highlighting yet. Use ":syntax default". "reset" ":syntax reset" command or loading a color scheme. Define all the colors. "skip" Don't define colors. Used to skip the default settings when a syncolor.vim file earlier in 'runtimepath' has already set them. ============================================================================== 15. Highlighting tags *tag-highlight* If you want to highlight all the tags in your file, you can use the following mappings. <F11> -- Generate tags.vim file, and highlight tags. <F12> -- Just highlight tags based on existing tags.vim file. > :map <F11> :sp tags<CR>:%s/^\([^ :]*:\)\=\([^ ]*\).*/syntax keyword Tag \2/<CR>:wq! tags.vim<CR>/^<CR><F12> :map <F12> :so tags.vim<CR> WARNING: The longer the tags file, the slower this will be, and the more memory Vim will consume. Only highlighting typedefs, unions and structs can be done too. For this you must use Exuberant ctags (found at http://ctags.sf.net). Put these lines in your Makefile: # Make a highlight file for types. Requires Exuberant ctags and awk types: types.vim types.vim: *.[ch] ctags --c-kinds=gstu -o- *.[ch] |\ awk 'BEGIN{printf("syntax keyword Type\t")}\ {printf("%s ", $$1)}END{print ""}' > $@ And put these lines in your .vimrc: > " load the types.vim highlighting file, if it exists autocmd BufRead,BufNewFile *.[ch] let fname = expand('<afile>:p:h') . '/types.vim' autocmd BufRead,BufNewFile *.[ch] if filereadable(fname) autocmd BufRead,BufNewFile *.[ch] exe 'so ' . fname autocmd BufRead,BufNewFile *.[ch] endif ============================================================================== 16. Window-local syntax *:ownsyntax* Normally all windows on a buffer share the same syntax settings. It is possible, however, to set a particular window on a file to have its own private syntax setting. A possible example would be to edit LaTeX source with conventional highlighting in one window, while seeing the same source highlighted differently (so as to hide control sequences and indicate bold, italic etc regions) in another. The 'scrollbind' option is useful here. To set the current window to have the syntax "foo", separately from all other windows on the buffer: > :ownsyntax foo < *w:current_syntax* This will set the "w:current_syntax" variable to "foo". The value of "b:current_syntax" does not change. This is implemented by saving and restoring "b:current_syntax", since the syntax files do set "b:current_syntax". The value set by the syntax file is assigned to "w:current_syntax". Note: This resets the 'spell', 'spellcapcheck' and 'spellfile' options. Once a window has its own syntax, syntax commands executed from other windows on the same buffer (including :syntax clear) have no effect. Conversely, syntax commands executed from that window do not affect other windows on the same buffer. A window with its own syntax reverts to normal behavior when another buffer is loaded into that window or the file is reloaded. When splitting the window, the new window will use the original syntax. ============================================================================== 17. Color xterms *xterm-color* *color-xterm* Most color xterms have only eight colors. If you don't get colors with the default setup, it should work with these lines in your .vimrc: > :if &term =~ "xterm" : if has("terminfo") : set t_Co=8 : set t_Sf=<Esc>[3%p1%dm : set t_Sb=<Esc>[4%p1%dm : else : set t_Co=8 : set t_Sf=<Esc>[3%dm : set t_Sb=<Esc>[4%dm : endif :endif < [<Esc> is a real escape, type CTRL-V <Esc>] You might want to change the first "if" to match the name of your terminal, e.g. "dtterm" instead of "xterm". Note: Do these settings BEFORE doing ":syntax on". Otherwise the colors may be wrong. *xiterm* *rxvt* The above settings have been mentioned to work for xiterm and rxvt too. But for using 16 colors in an rxvt these should work with terminfo: > :set t_AB=<Esc>[%?%p1%{8}%<%t25;%p1%{40}%+%e5;%p1%{32}%+%;%dm :set t_AF=<Esc>[%?%p1%{8}%<%t22;%p1%{30}%+%e1;%p1%{22}%+%;%dm < *colortest.vim* To test your color setup, a file has been included in the Vim distribution. To use it, execute this command: > :runtime syntax/colortest.vim Some versions of xterm (and other terminals, like the Linux console) can output lighter foreground colors, even though the number of colors is defined at 8. Therefore Vim sets the "cterm=bold" attribute for light foreground colors, when 't_Co' is 8. *xfree-xterm* To get 16 colors or more, get the newest xterm version (which should be included with XFree86 3.3 and later). You can also find the latest version at: > http://invisible-island.net/xterm/xterm.html Here is a good way to configure it. This uses 88 colors and enables the termcap-query feature, which allows Vim to ask the xterm how many colors it supports. > ./configure --disable-bold-color --enable-88-color --enable-tcap-query If you only get 8 colors, check the xterm compilation settings. (Also see |UTF8-xterm| for using this xterm with UTF-8 character encoding). This xterm should work with these lines in your .vimrc (for 16 colors): > :if has("terminfo") : set t_Co=16 : set t_AB=<Esc>[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm : set t_AF=<Esc>[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm :else : set t_Co=16 : set t_Sf=<Esc>[3%dm : set t_Sb=<Esc>[4%dm :endif < [<Esc> is a real escape, type CTRL-V <Esc>] Without |+terminfo|, Vim will recognize these settings, and automatically translate cterm colors of 8 and above to "<Esc>[9%dm" and "<Esc>[10%dm". Colors above 16 are also translated automatically. For 256 colors this has been reported to work: > :set t_AB=<Esc>[48;5;%dm :set t_AF=<Esc>[38;5;%dm Or just set the TERM environment variable to "xterm-color" or "xterm-16color" and try if that works. You probably want to use these X resources (in your ~/.Xdefaults file): XTerm*color0: #000000 XTerm*color1: #c00000 XTerm*color2: #008000 XTerm*color3: #808000 XTerm*color4: #0000c0 XTerm*color5: #c000c0 XTerm*color6: #008080 XTerm*color7: #c0c0c0 XTerm*color8: #808080 XTerm*color9: #ff6060 XTerm*color10: #00ff00 XTerm*color11: #ffff00 XTerm*color12: #8080ff XTerm*color13: #ff40ff XTerm*color14: #00ffff XTerm*color15: #ffffff Xterm*cursorColor: Black [Note: The cursorColor is required to work around a bug, which changes the cursor color to the color of the last drawn text. This has been fixed by a newer version of xterm, but not everybody is using it yet.] To get these right away, reload the .Xdefaults file to the X Option database Manager (you only need to do this when you just changed the .Xdefaults file): > xrdb -merge ~/.Xdefaults < *xterm-blink* *xterm-blinking-cursor* To make the cursor blink in an xterm, see tools/blink.c. Or use Thomas Dickey's xterm above patchlevel 107 (see above for where to get it), with these resources: XTerm*cursorBlink: on XTerm*cursorOnTime: 400 XTerm*cursorOffTime: 250 XTerm*cursorColor: White *hpterm-color* These settings work (more or less) for an hpterm, which only supports 8 foreground colors: > :if has("terminfo") : set t_Co=8 : set t_Sf=<Esc>[&v%p1%dS : set t_Sb=<Esc>[&v7S :else : set t_Co=8 : set t_Sf=<Esc>[&v%dS : set t_Sb=<Esc>[&v7S :endif < [<Esc> is a real escape, type CTRL-V <Esc>] *Eterm* *enlightened-terminal* These settings have been reported to work for the Enlightened terminal emulator, or Eterm. They might work for all xterm-like terminals that use the bold attribute to get bright colors. Add an ":if" like above when needed. > :set t_Co=16 :set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m :set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m < *TTpro-telnet* These settings should work for TTpro telnet. Tera Term Pro is a freeware / open-source program for MS-Windows. > set t_Co=16 set t_AB=^[[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{32}%+5;%;%dm set t_AF=^[[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{22}%+1;%;%dm Also make sure TTpro's Setup / Window / Full Color is enabled, and make sure that Setup / Font / Enable Bold is NOT enabled. (info provided by John Love-Jensen <eljay@Adobe.COM>) ============================================================================== 18. When syntax is slow *:syntime* This is aimed at authors of a syntax file. If your syntax causes redrawing to be slow, here are a few hints on making it faster. To see slowness switch on some features that usually interfere, such as 'relativenumber' and |folding|. Note: this is only available when compiled with the |+profile| feature. You many need to build Vim with "huge" features. To find out what patterns are consuming most time, get an overview with this sequence: > :syntime on [ redraw the text at least once with CTRL-L ] :syntime report This will display a list of syntax patterns that were used, sorted by the time it took to match them against the text. :syntime on Start measuring syntax times. This will add some overhead to compute the time spent on syntax pattern matching. :syntime off Stop measuring syntax times. :syntime clear Set all the counters to zero, restart measuring. :syntime report Show the syntax items used since ":syntime on" in the current window. Use a wider display to see more of the output. The list is sorted by total time. The columns are: TOTAL Total time in seconds spent on matching this pattern. COUNT Number of times the pattern was used. MATCH Number of times the pattern actually matched SLOWEST The longest time for one try. AVERAGE The average time for one try. NAME Name of the syntax item. Note that this is not unique. PATTERN The pattern being used. Pattern matching gets slow when it has to try many alternatives. Try to include as much literal text as possible to reduce the number of ways a pattern does NOT match. When using the "\@<=" and "\@<!" items, add a maximum size to avoid trying at all positions in the current and previous line. For example, if the item is literal text specify the size of that text (in bytes): "<\@<=span" Matches "span" in "<span". This tries matching with "<" in many places. "<\@1<=span" Matches the same, but only tries one byte before "span". vim:tw=78:sw=4:ts=8:ft=help:norl: PK�������!�7LP��LP����vim80/doc/tips.txtnu�[��������*tips.txt* For Vim version 8.0. Last change: 2009 Nov 07 VIM REFERENCE MANUAL by Bram Moolenaar Tips and ideas for using Vim *tips* These are just a few that we thought would be helpful for many users. You can find many more tips on the wiki. The URL can be found on http://www.vim.org Don't forget to browse the user manual, it also contains lots of useful tips |usr_toc.txt|. Editing C programs |C-editing| Finding where identifiers are used |ident-search| Switching screens in an xterm |xterm-screens| Scrolling in Insert mode |scroll-insert| Smooth scrolling |scroll-smooth| Correcting common typing mistakes |type-mistakes| Counting words, lines, etc. |count-items| Restoring the cursor position |restore-position| Renaming files |rename-files| Change a name in multiple files |change-name| Speeding up external commands |speed-up| Useful mappings |useful-mappings| Compressing the help files |gzip-helpfile| Executing shell commands in a window |shell-window| Hex editing |hex-editing| Using <> notation in autocommands |autocmd-<>| Highlighting matching parens |match-parens| ============================================================================== Editing C programs *C-editing* There are quite a few features in Vim to help you edit C program files. Here is an overview with tags to jump to: |usr_29.txt| Moving through programs chapter in the user manual. |usr_30.txt| Editing programs chapter in the user manual. |C-indenting| Automatically set the indent of a line while typing text. |=| Re-indent a few lines. |format-comments| Format comments. |:checkpath| Show all recursively included files. |[i| Search for identifier under cursor in current and included files. |[_CTRL-I| Jump to match for "[i" |[I| List all lines in current and included files where identifier under the cursor matches. |[d| Search for define under cursor in current and included files. |CTRL-]| Jump to tag under cursor (e.g., definition of a function). |CTRL-T| Jump back to before a CTRL-] command. |:tselect| Select one tag out of a list of matching tags. |gd| Go to Declaration of local variable under cursor. |gD| Go to Declaration of global variable under cursor. |gf| Go to file name under the cursor. |%| Go to matching (), {}, [], /* */, #if, #else, #endif. |[/| Go to previous start of comment. |]/| Go to next end of comment. |[#| Go back to unclosed #if, #ifdef, or #else. |]#| Go forward to unclosed #else or #endif. |[(| Go back to unclosed '(' |])| Go forward to unclosed ')' |[{| Go back to unclosed '{' |]}| Go forward to unclosed '}' |v_ab| Select "a block" from "[(" to "])", including braces |v_ib| Select "inner block" from "[(" to "])" |v_aB| Select "a block" from "[{" to "]}", including brackets |v_iB| Select "inner block" from "[{" to "]}" ============================================================================== Finding where identifiers are used *ident-search* You probably already know that |tags| can be used to jump to the place where a function or variable is defined. But sometimes you wish you could jump to all the places where a function or variable is being used. This is possible in two ways: 1. Using the |:grep| command. This should work on most Unix systems, but can be slow (it reads all files) and only searches in one directory. 2. Using ID utils. This is fast and works in multiple directories. It uses a database to store locations. You will need some additional programs for this to work. And you need to keep the database up to date. Using the GNU id-tools: What you need: - The GNU id-tools installed (mkid is needed to create ID and lid is needed to use the macros). - An identifier database file called "ID" in the current directory. You can create it with the shell command "mkid file1 file2 ..". Put this in your .vimrc: > map _u :call ID_search()<Bar>execute "/\\<" . g:word . "\\>"<CR> map _n :n<Bar>execute "/\\<" . g:word . "\\>"<CR> function! ID_search() let g:word = expand("<cword>") let x = system("lid --key=none ". g:word) let x = substitute(x, "\n", " ", "g") execute "next " . x endfun To use it, place the cursor on a word, type "_u" and vim will load the file that contains the word. Search for the next occurrence of the word in the same file with "n". Go to the next file with "_n". This has been tested with id-utils-3.2 (which is the name of the id-tools archive file on your closest gnu-ftp-mirror). [the idea for this comes from Andreas Kutschera] ============================================================================== Switching screens in an xterm *xterm-screens* *xterm-save-screen* (From comp.editors, by Juergen Weigert, in reply to a question) :> Another question is that after exiting vim, the screen is left as it :> was, i.e. the contents of the file I was viewing (editing) was left on :> the screen. The output from my previous like "ls" were lost, :> ie. no longer in the scrolling buffer. I know that there is a way to :> restore the screen after exiting vim or other vi like editors, :> I just don't know how. Helps are appreciated. Thanks. : :I imagine someone else can answer this. I assume though that vim and vi do :the same thing as each other for a given xterm setup. They not necessarily do the same thing, as this may be a termcap vs. terminfo problem. You should be aware that there are two databases for describing attributes of a particular type of terminal: termcap and terminfo. This can cause differences when the entries differ AND when of the programs in question one uses terminfo and the other uses termcap (also see |+terminfo|). In your particular problem, you are looking for the control sequences ^[[?47h and ^[[?47l. These switch between xterms alternate and main screen buffer. As a quick workaround a command sequence like > echo -n "^[[?47h"; vim ... ; echo -n "^[[?47l" may do what you want. (My notation ^[ means the ESC character, further down you'll see that the databases use \E instead). On startup, vim echoes the value of the termcap variable ti (terminfo: smcup) to the terminal. When exiting, it echoes te (terminfo: rmcup). Thus these two variables are the correct place where the above mentioned control sequences should go. Compare your xterm termcap entry (found in /etc/termcap) with your xterm terminfo entry (retrieved with "infocmp -C xterm"). Both should contain entries similar to: > :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h: PS: If you find any difference, someone (your sysadmin?) should better check the complete termcap and terminfo database for consistency. NOTE 1: If you recompile Vim with FEAT_XTERM_SAVE defined in feature.h, the builtin xterm will include the mentioned "te" and "ti" entries. NOTE 2: If you want to disable the screen switching, and you don't want to change your termcap, you can add these lines to your .vimrc: > :set t_ti= t_te= ============================================================================== Scrolling in Insert mode *scroll-insert* If you are in insert mode and you want to see something that is just off the screen, you can use CTRL-X CTRL-E and CTRL-X CTRL-Y to scroll the screen. |i_CTRL-X_CTRL-E| To make this easier, you could use these mappings: > :inoremap <C-E> <C-X><C-E> :inoremap <C-Y> <C-X><C-Y> (Type this literally, make sure the '<' flag is not in 'cpoptions'). You then lose the ability to copy text from the line above/below the cursor |i_CTRL-E|. Also consider setting 'scrolloff' to a larger value, so that you can always see some context around the cursor. If 'scrolloff' is bigger than half the window height, the cursor will always be in the middle and the text is scrolled when the cursor is moved up/down. ============================================================================== Smooth scrolling *scroll-smooth* If you like the scrolling to go a bit smoother, you can use these mappings: > :map <C-U> <C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y> :map <C-D> <C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E> (Type this literally, make sure the '<' flag is not in 'cpoptions'). ============================================================================== Correcting common typing mistakes *type-mistakes* When there are a few words that you keep on typing in the wrong way, make abbreviations that correct them. For example: > :ab teh the :ab fro for ============================================================================== Counting words, lines, etc. *count-items* To count how often any pattern occurs in the current buffer use the substitute command and add the 'n' flag to avoid the substitution. The reported number of substitutions is the number of items. Examples: > :%s/./&/gn characters :%s/\i\+/&/gn words :%s/^//n lines :%s/the/&/gn "the" anywhere :%s/\<the\>/&/gn "the" as a word You might want to reset 'hlsearch' or do ":nohlsearch". Add the 'e' flag if you don't want an error when there are no matches. An alternative is using |v_g_CTRL-G| in Visual mode. If you want to find matches in multiple files use |:vimgrep|. *count-bytes* If you want to count bytes, you can use this: Visually select the characters (block is also possible) Use "y" to yank the characters Use the strlen() function: > :echo strlen(@") A line break is counted for one byte. ============================================================================== Restoring the cursor position *restore-position* Sometimes you want to write a mapping that makes a change somewhere in the file and restores the cursor position, without scrolling the text. For example, to change the date mark in a file: > :map <F2> msHmtgg/Last [cC]hange:\s*/e+1<CR>"_D"=strftime("%Y %b %d")<CR>p'tzt`s Breaking up saving the position: ms store cursor position in the 's' mark H go to the first line in the window mt store this position in the 't' mark Breaking up restoring the position: 't go to the line previously at the top of the window zt scroll to move this line to the top of the window `s jump to the original position of the cursor For something more advanced see |winsaveview()| and |winrestview()|. ============================================================================== Renaming files *rename-files* Say I have a directory with the following files in them (directory picked at random :-): buffer.c charset.c digraph.c ... and I want to rename *.c *.bla. I'd do it like this: > $ vim :r !ls *.c :%s/\(.*\).c/mv & \1.bla :w !sh :q! ============================================================================== Change a name in multiple files *change-name* Example for using a script file to change a name in several files: Create a file "subs.vim" containing substitute commands and a :update command: > :%s/Jones/Smith/g :%s/Allen/Peter/g :update < Execute Vim on all files you want to change, and source the script for each argument: > vim *.let argdo source subs.vim See |:argdo|. ============================================================================== Speeding up external commands *speed-up* In some situations, execution of an external command can be very slow. This can also slow down wildcard expansion on Unix. Here are a few suggestions to increase the speed. If your .cshrc (or other file, depending on the shell used) is very long, you should separate it into a section for interactive use and a section for non-interactive use (often called secondary shells). When you execute a command from Vim like ":!ls", you do not need the interactive things (for example, setting the prompt). Put the stuff that is not needed after these lines: > if ($?prompt == 0) then exit 0 endif Another way is to include the "-f" flag in the 'shell' option, e.g.: > :set shell=csh\ -f (the backslash is needed to include the space in the option). This will make csh completely skip the use of the .cshrc file. This may cause some things to stop working though. ============================================================================== Useful mappings *useful-mappings* Here are a few mappings that some people like to use. *map-backtick* > :map ' ` Make the single quote work like a backtick. Puts the cursor on the column of a mark, instead of going to the first non-blank character in the line. *emacs-keys* For Emacs-style editing on the command-line: > " start of line :cnoremap <C-A> <Home> " back one character :cnoremap <C-B> <Left> " delete character under cursor :cnoremap <C-D> <Del> " end of line :cnoremap <C-E> <End> " forward one character :cnoremap <C-F> <Right> " recall newer command-line :cnoremap <C-N> <Down> " recall previous (older) command-line :cnoremap <C-P> <Up> " back one word :cnoremap <Esc><C-B> <S-Left> " forward one word :cnoremap <Esc><C-F> <S-Right> NOTE: This requires that the '<' flag is excluded from 'cpoptions'. |<>| *format-bullet-list* This mapping will format any bullet list. It requires that there is an empty line above and below each list entry. The expression commands are used to be able to give comments to the parts of the mapping. > :let m = ":map _f :set ai<CR>" " need 'autoindent' set :let m = m . "{O<Esc>" " add empty line above item :let m = m . "}{)^W" " move to text after bullet :let m = m . "i <CR> <Esc>" " add space for indent :let m = m . "gq}" " format text after the bullet :let m = m . "{dd" " remove the empty line :let m = m . "5lDJ" " put text after bullet :execute m |" define the mapping (<> notation |<>|. Note that this is all typed literally. ^W is "^" "W", not CTRL-W. You can copy/paste this into Vim if '<' is not included in 'cpoptions'.) Note that the last comment starts with |", because the ":execute" command doesn't accept a comment directly. You also need to set 'textwidth' to a non-zero value, e.g., > :set tw=70 A mapping that does about the same, but takes the indent for the list from the first line (Note: this mapping is a single long line with a lot of spaces): > :map _f :set ai<CR>}{a <Esc>WWmmkD`mi<CR><Esc>kkddpJgq}'mJO<Esc>j < *collapse* These two mappings reduce a sequence of empty (;b) or blank (;n) lines into a single line > :map ;b GoZ<Esc>:g/^$/.,/./-j<CR>Gdd :map ;n GoZ<Esc>:g/^[ <Tab>]*$/.,/[^ <Tab>]/-j<CR>Gdd ============================================================================== Compressing the help files *gzip-helpfile* For those of you who are really short on disk space, you can compress the help files and still be able to view them with Vim. This makes accessing the help files a bit slower and requires the "gzip" program. (1) Compress all the help files: "gzip doc/*.txt". (2) Edit "doc/tags" and change the ".txt" to ".txt.gz": > :%s=\(\t.*\.txt\)\t=\1.gz\t= (3) Add this line to your vimrc: > set helpfile={dirname}/help.txt.gz Where {dirname} is the directory where the help files are. The |gzip| plugin will take care of decompressing the files. You must make sure that $VIMRUNTIME is set to where the other Vim files are, when they are not in the same location as the compressed "doc" directory. See |$VIMRUNTIME|. ============================================================================== Executing shell commands in a window *shell-window* There have been questions for the possibility to execute a shell in a window inside Vim. The answer: you can't! Including this would add a lot of code to Vim, which is a good reason not to do this. After all, Vim is an editor, it is not supposed to do non-editing tasks. However, to get something like this, you might try splitting your terminal screen or display window with the "splitvt" program. You can probably find it on some ftp server. The person that knows more about this is Sam Lantinga <slouken@cs.ucdavis.edu>. An alternative is the "window" command, found on BSD Unix systems, which supports multiple overlapped windows. Or the "screen" program, found at www.uni-erlangen.de, which supports a stack of windows. ============================================================================== Hex editing *hex-editing* *using-xxd* See section |23.4| of the user manual. If one has a particular extension that one uses for binary files (such as exe, bin, etc), you may find it helpful to automate the process with the following bit of autocmds for your <.vimrc>. Change that "*.bin" to whatever comma-separated list of extension(s) you find yourself wanting to edit: > " vim -b : edit binary using xxd-format! augroup Binary au! au BufReadPre *.bin let &bin=1 au BufReadPost *.bin if &bin | %!xxd au BufReadPost *.bin set ft=xxd | endif au BufWritePre *.bin if &bin | %!xxd -r au BufWritePre *.bin endif au BufWritePost *.bin if &bin | %!xxd au BufWritePost *.bin set nomod | endif augroup END ============================================================================== Using <> notation in autocommands *autocmd-<>* The <> notation is not recognized in the argument of an :autocmd. To avoid having to use special characters, you could use a self-destroying mapping to get the <> notation and then call the mapping from the autocmd. Example: *map-self-destroy* > " This is for automatically adding the name of the file to the menu list. " It uses a self-destroying mapping! " 1. use a line in the buffer to convert the 'dots' in the file name to \. " 2. store that in register '"' " 3. add that name to the Buffers menu list " WARNING: this does have some side effects, like overwriting the " current register contents and removing any mapping for the "i" command. " autocmd BufNewFile,BufReadPre * nmap i :nunmap i<CR>O<C-R>%<Esc>:.g/\./s/\./\\./g<CR>0"9y$u:menu Buffers.<C-R>9 :buffer <C-R>%<C-V><CR><CR> autocmd BufNewFile,BufReadPre * normal i Another method, perhaps better, is to use the ":execute" command. In the string you can use the <> notation by preceding it with a backslash. Don't forget to double the number of existing backslashes and put a backslash before '"'. > autocmd BufNewFile,BufReadPre * exe "normal O\<C-R>%\<Esc>:.g/\\./s/\\./\\\\./g\<CR>0\"9y$u:menu Buffers.\<C-R>9 :buffer \<C-R>%\<C-V>\<CR>\<CR>" For a real buffer menu, user functions should be used (see |:function|), but then the <> notation isn't used, which defeats using it as an example here. ============================================================================== Highlighting matching parens *match-parens* This example shows the use of a few advanced tricks: - using the |CursorMoved| autocommand event - using |searchpairpos()| to find a matching paren - using |synID()| to detect whether the cursor is in a string or comment - using |:match| to highlight something - using a |pattern| to match a specific position in the file. This should be put in a Vim script file, since it uses script-local variables. It skips matches in strings or comments, unless the cursor started in string or comment. This requires syntax highlighting. A slightly more advanced version is used in the |matchparen| plugin. > let s:paren_hl_on = 0 function s:Highlight_Matching_Paren() if s:paren_hl_on match none let s:paren_hl_on = 0 endif let c_lnum = line('.') let c_col = col('.') let c = getline(c_lnum)[c_col - 1] let plist = split(&matchpairs, ':\|,') let i = index(plist, c) if i < 0 return endif if i % 2 == 0 let s_flags = 'nW' let c2 = plist[i + 1] else let s_flags = 'nbW' let c2 = c let c = plist[i - 1] endif if c == '[' let c = '\[' let c2 = '\]' endif let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' . \ '=~? "string\\|comment"' execute 'if' s_skip '| let s_skip = 0 | endif' let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip) if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$') exe 'match Search /\(\%' . c_lnum . 'l\%' . c_col . \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' let s:paren_hl_on = 1 endif endfunction autocmd CursorMoved,CursorMovedI * call s:Highlight_Matching_Paren() autocmd InsertEnter * match none < vim:tw=78:ts=8:ft=help:norl: PK�������!�,C��C����vim80/doc/os_risc.txtnu�[��������*os_risc.txt* For Vim version 8.0. Last change: 2011 May 10 VIM REFERENCE MANUAL by Thomas Leonard *riscos* *RISCOS* *RISC-OS* The RISC OS support has been removed from Vim with patch 7.3.187. If you would like to use Vim on RISC OS get the files from before that patch. vim:tw=78:ts=8:ft=help:norl: PK�������!�_%��%����vim80/doc/farsi.txtnu�[��������*farsi.txt* For Vim version 8.0. Last change: 2015 Aug 29 VIM REFERENCE MANUAL by Mortaza Ghassab Shiran Right to Left and Farsi Mapping for Vim *farsi* *Farsi* {Vi does not have any of these commands} *E27* In order to use right-to-left and Farsi mapping support, it is necessary to compile Vim with the |+farsi| feature. These functions have been made by Mortaza G. Shiran <shiran@jps.net> Introduction ------------ In right-to-left oriented files the characters appear on the screen from right to left. This kind of file is most useful when writing Farsi documents, composing faxes or writing Farsi memos. The commands, prompts and help files are not in Farsi, therefore the user interface remains the standard Vi interface. Highlights ---------- o Editing left-to-right files as in the original Vim, no change. o Viewing and editing files in right-to-left windows. File orientation is per window, so it is possible to view the same file in right-to-left and left-to-right modes, simultaneously. o Compatibility to the original Vim. Almost all features work in right-to-left mode (see bugs below). o Changing keyboard mapping and reverse insert modes using a single command. o Backing from reverse insert mode to the correct place in the file (if possible). o While in Farsi mode, numbers are entered from left to right. Upon entering a none number character, that character will be inserted just into the left of the last number. o No special terminal with right-to-left capabilities is required. The right-to-left changes are completely hardware independent. Only Farsi font is necessary. o Farsi keymapping on the command line in reverse insert mode. o Toggling between left-to-right and right-to-left via F8 function key. o Toggling between Farsi ISIR-3342 standard encoding and Vim Farsi via F9 function key. Since this makes sense only for the text written in right-to-left mode, this function is also supported only in right-to-left mode. Farsi Fonts *farsi-fonts* ----------- The following files are found in the subdirectories of the '$VIM/farsi/fonts' directory: + far-a01.pcf X Windows fonts for Unix including Linux systems + far-a01.bf X Windows fonts for SunOS + far-a01.f16 a screen fonts for Unix including Linux systems + far-a01.fon a monospaced fonts for Windows NT/95/98 + far-a01.com a screen fonts for DOS Font Installation ----------------- o Installation of fonts for MS Window systems (NT/95/98) From 'Control Panel' folder, start the 'Fonts' program. Then from 'file' menu item select 'Install New Fonts ...'. Browse and select the 'far-a01.fon', then follow the installation guide. NOTE: several people have reported that this does not work. The solution is unknown. o Installation of fonts for X Window systems (Unix/Linux) Depending on your system, copy far-a01.pcf.Z or far-a01.pcf.gz into a directory of your choice. Change to the directory containing the Farsi fonts and execute the following commands: > mkfontdir > xset +fp path_name_of_farsi_fonts_directory o Installation of fonts for X Window systems (SunOS) Copy far-a01.bf font into a directory of your choice. Change to the directory containing the far-a01.fb fonts and execute the following commands: > fldfamily > xset +fp path_name_of_fonts_directory o Installation of ASCII screen fonts (Unix/Linux) For Linux system, copy the far-a01.f16 fonts into /usr/lib/kbd/consolefonts directory and execute the setfont program as "setfont far-a01.f16". For other systems (e.g. SCO Unix), please refer to the fonts installation section of your system administration manuals. o Installation of ASCII screen fonts (DOS) After system power on, prior to the first use of Vim, upload the Farsi fonts by executing the far-a01.com font uploading program. Usage ----- Prior to starting Vim, the environment in which Vim can run in Farsi mode, must be set. In addition to installation of Farsi fonts, following points refer to some of the system environments, which you may need to set: Key code mapping, loading graphic card in ASCII screen mode, setting the IO driver in 8 bit clean mode ... . o Setting the Farsi fonts + For Vim GUI set the 'guifont' to far-a01. This is done by entering ':set guifont=far-a01' in the Vim window. You can have 'guifont' set to far-a01 by Vim during the Vim startup by appending the ':set guifont=far-a01' into your .vimrc file (in case of NT/95/98 platforms _vimrc). Under the X Window environment, you can also start Vim with the '-fn far-a01' option. + For Vim within a xterm, start a xterm with the Farsi fonts (e.g. kterm -fn far-a01). Then start Vim inside the kterm. + For Vim under DOS, prior to the first usage of Vim, upload the Farsi fonts by executing the far-a01.com fonts uploading program. o Farsi Keymapping Activation To activate the Farsi keymapping, set either 'altkeymap' or 'fkmap'. This is done by entering ':set akm' or ':set fk' in the Vim window. You can have 'altkeymap' or 'fkmap' set as default by appending ':set akm' or ':set fk' in your .vimrc file or _vimrc in case of NT/95/98 platforms. To turn off the Farsi keymapping as a default second language keymapping, reset the 'altkeymap' by entering ':set noakm'. o right-to-left Farsi Mode By default Vim starts in Left-to-right mode. Following are ways to change the window orientation: + Start Vim with the -F option (e.g. vim -F ...). + Use the F8 function key to toggle between left-to-right and right-to-left. + While in Left-to-right mode, enter 'set rl' in the command line ('rl' is the abbreviation for rightleft). + Put the 'set rl' line in your '.vimrc' file to start Vim in right-to-left mode permanently. Encoding -------- The letter encoding used is the Vim extended ISIR-3342 standard with a built in function to convert between Vim extended ISIR-3342 and ISIR-3342 standard. For document portability reasons, the letter encoding is kept the same across different platforms (i.e. UNIX's, NT/95/98, MS DOS, ...). o Keyboard + CTRL-_ in insert/replace modes toggles between Farsi(akm)/Latin mode as follows: + CTRL-_ moves the cursor to the end of the typed text in edit mode. + CTRL-_ in command mode only toggles keyboard mapping between Farsi(akm)/ Latin. The Farsi text is then entered in reverse insert mode. + F8 - Toggles between left-to-right and right-to-left. + F9 - Toggles the encoding between ISIR-3342 standard and Vim extended ISIR-3342 (supported only in right-to-left mode). + Keyboard mapping is based on the Iranian ISIRI-2901 standard. Following table shows the keyboard mapping while Farsi(akm) mode set: ------------------------------------- ` 1 2 3 4 5 6 7 8 9 0 - = ------------------------------------- ~ ! @ # $ % ^ & * ( ) _ + ~ ------------------------------------- q w e r t z u i o p [ ] ------------------------------------- Q W E R T Z U I O P { } [ ] { } ------------------------------------- a s d f g h j k l ; ' \ ------------------------------------- A S D F G H J K L : " | ------------------------------------- < y x c v b n m , . / ------------------------------------- > Y X C V B N M < > ? ------------------------------------- Note: stands for Farsi PSP (break without space) stands for Farsi PCN (for HAMZE attribute) Restrictions ------------ o In insert/replace mode and fkmap (Farsi mode) set, CTRL-B is not supported. o If you change the character mapping between Latin/Farsi, the redo buffer will be reset (emptied). That is, redo is valid and will function (using '.') only within the mode you are in. o While numbers are entered in Farsi mode, the redo buffer will be reset (emptied). That is, you cannot redo the last changes (using '.') after entering numbers. o While in left-to-right mode and Farsi mode set, CTRL-R is not supported. o While in right-to-left mode, the search on 'Latin' pattern does not work, except if you enter the Latin search pattern in reverse. o In command mode there is no support for entering numbers from left to right and also for the sake of flexibility the keymapping logic is restricted. o Under the X Window environment, if you want to run Vim within a xterm terminal emulator and Farsi mode set, you need to have an ANSI compatible xterm terminal emulator. This is because the letter codes above 128 decimal have certain meanings in the standard xterm terminal emulator. Note: Under X Window environment, Vim GUI works fine in Farsi mode. This eliminates the need of any xterm terminal emulator. Bugs ---- While in insert/replace and Farsi mode set, if you repeatedly change the cursor position (via cursor movement) and enter new text and then try to undo the last change, the undo will lag one change behind. But as you continue to undo, you will reach the original line of text. You can also use U to undo all changes made in the current line. For more information about the bugs refer to rileft.txt. vim:tw=78:ts=8:ft=help:norl: PK�������!�ʻ �� ����vim80/doc/hangulin.txtnu�[��������*hangulin.txt* For Vim version 8.0. Last change: 2015 Nov 24 VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam Introduction *hangul* ------------ It is to input hangul, the Korean language, with Vim GUI version. If you have a XIM program, you can use another |+xim| feature. Basically, it is for anybody who has no XIM program. Compile ------- Next is a basic option. You can add any other configure option. > ./configure --with-x --enable-multibyte --enable-hangulinput \ --disable-xim And you should check feature.h. If |+hangul_input| feature is enabled by configure, you can select more options such as keyboard type, 2 bulsik or 3 bulsik. You can find keywords like next in there. > #define HANGUL_DEFAULT_KEYBOARD 2 #define ESC_CHG_TO_ENG_MODE /* #define X_LOCALE */ Environment variables --------------------- You should set LANG variable to Korean locale such as ko, ko_KR.eucKR or ko_KR.UTF-8. If you set LC_ALL variable, it should be set to Korean locale also. Vim resource ------------ You may want to set 'encoding' and 'fileencodings'. Next are examples: > :set encoding=euc-kr :set encoding=utf-8 :set fileencodings=ucs-bom,utf-8,cp949,euc-kr,latin1 Keyboard -------- You can change keyboard type (2 bulsik or 3 bulsik) using VIM_KEYBOARD or HANGUL_KEYBOARD_TYPE environment variables. For sh, just do (2 bulsik): > export VIM_KEYBOARD="2" or > export HANGUL_KEYBOARD_TYPE="2" If both are set, VIM_KEYBOARD has higher priority. Hangul Fonts ------------ If you use GTK version of gvim, you should set 'guifont' and 'guifontwide'. For example: > set guifont=Courier\ 12 set guifontwide=NanumGothicCoding\ 12 If you use Motif or Athena version of gvim, you should set 'guifontset' in your vimrc. You can set fontset in the .Xdefaults file. $HOME/.gvimrc: > set guifontset=english_font,hangul_font $HOME/.Xdefaults: > Vim.font: english_font ! Nexts are for hangul menu with Athena *international: True Vim*fontSet: english_font,hangul_font ! Nexts are for hangul menu with Motif *international: True Vim*fontList: english_font;hangul_font: attention! the , (comma) or ; (semicolon) And there should be no ':set guifont'. If it exists, then gvim ignores ':set guifontset'. It means Vim runs without fontset supporting. So, you can see only English. Hangul does not be correctly displayed. After "fontset" feature is enabled, Vim does not allow using english font only in "font" setting for syntax. For example, if you use > :set guifontset=eng_font,your_font in your .gvimrc, then you should do for syntax > :hi Comment guifg=Cyan font=another_eng_font,another_your_font If you just do > :hi Comment font=another_eng_font then you can see a error message. Be careful! hangul_font width should be twice than english_font width. Unsupported Feature ------------------- We don't support Johab font. We don't support Hanja input. And We don't have any plan to support them. If you really need such features, you can use console version of Vim with a capable terminal emulator. Bug or Comment -------------- Send comments, patches and suggestions to: SungHyun Nam <goweol@gmail.com> Chi-Deok Hwang <...> vim:tw=78:ts=8:ft=help:norl: PK�������!�PA��PA����vim80/doc/tabpage.txtnu�[��������*tabpage.txt* For Vim version 8.0. Last change: 2018 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar Editing with windows in multiple tab pages. *tab-page* *tabpage* The commands which have been added to use multiple tab pages are explained here. Additionally, there are explanations for commands that work differently when used in combination with more than one tab page. 1. Introduction |tab-page-intro| 2. Commands |tab-page-commands| 3. Other items |tab-page-other| 4. Setting 'tabline' |setting-tabline| 5. Setting 'guitablabel' |setting-guitablabel| {Vi does not have any of these commands} {not able to use multiple tab pages when the |+windows| feature was disabled at compile time} ============================================================================== 1. Introduction *tab-page-intro* A tab page holds one or more windows. You can easily switch between tab pages, so that you have several collections of windows to work on different things. Usually you will see a list of labels at the top of the Vim window, one for each tab page. With the mouse you can click on the label to jump to that tab page. There are other ways to move between tab pages, see below. Most commands work only in the current tab page. That includes the |CTRL-W| commands, |:windo|, |:all| and |:ball| (when not using the |:tab| modifier). The commands that are aware of other tab pages than the current one are mentioned below. Tabs are also a nice way to edit a buffer temporarily without changing the current window layout. Open a new tab page, do whatever you want to do and close the tab page. ============================================================================== 2. Commands *tab-page-commands* OPENING A NEW TAB PAGE: When starting Vim "vim -p filename ..." opens each file argument in a separate tab page (up to 'tabpagemax'). See |-p| A double click with the mouse in the non-GUI tab pages line opens a new, empty tab page. It is placed left of the position of the click. The first click may select another tab page first, causing an extra screen update. This also works in a few GUI versions, esp. Win32 and Motif. But only when clicking right of the labels. In the GUI tab pages line you can use the right mouse button to open menu. |tabline-menu|. For the related autocommands see |tabnew-autocmd|. :[count]tabe[dit] *:tabe* *:tabedit* *:tabnew* :[count]tabnew Open a new tab page with an empty window, after the current tab page. If [count] is given the new tab page appears after the tab page [count] otherwise the new tab page will appear after the current one. > :tabnew " opens tabpage after the current one :.tabnew " as above :+tabnew " opens tabpage after the next tab page " note: it is one further than :tabnew :-tabnew " opens tabpage before the current one :0tabnew " opens tabpage before the first one :$tabnew " opens tabpage after the last one :[count]tabe[dit] [++opt] [+cmd] {file} :[count]tabnew [++opt] [+cmd] {file} Open a new tab page and edit {file}, like with |:edit|. For [count] see |:tabnew| above. :[count]tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* Open a new tab page and edit {file} in 'path', like with |:find|. For [count] see |:tabnew| above. {not available when the |+file_in_path| feature was disabled at compile time} :[count]tab {cmd} *:tab* Execute {cmd} and when it opens a new window open a new tab page instead. Doesn't work for |:diffsplit|, |:diffpatch|, |:execute| and |:normal|. If [count] is given the new tab page appears after the tab page [count] otherwise the new tab page will appear after the current one. Examples: > :tab split " opens current buffer in new tab page :tab help gt " opens tab page with help for "gt" :.tab help gt " as above :+tab help " opens tab page with help after the next " tab page :-tab help " opens tab page with help before the " current one :0tab help " opens tab page with help before the " first one :$tab help " opens tab page with help after the last " one CTRL-W gf Open a new tab page and edit the file name under the cursor. See |CTRL-W_gf|. CTRL-W gF Open a new tab page and edit the file name under the cursor and jump to the line number following the file name. See |CTRL-W_gF|. CLOSING A TAB PAGE: Closing the last window of a tab page closes the tab page too, unless there is only one tab page. Using the mouse: If the tab page line is displayed you can click in the "X" at the top right to close the current tab page. A custom |'tabline'| may show something else. *:tabc* *:tabclose* :tabc[lose][!] Close current tab page. This command fails when: - There is only one tab page on the screen. *E784* - When 'hidden' is not set, [!] is not used, a buffer has changes, and there is no other window on this buffer. Changes to the buffer are not written and won't get lost, so this is a "safe" command. > :tabclose " close the current tab page :{count}tabc[lose][!] :tabc[lose][!] {count} Close tab page {count}. Fails in the same way as `:tabclose` above. > :-tabclose " close the previous tab page :+tabclose " close the next tab page :1tabclose " close the first tab page :$tabclose " close the last tab page :tabclose -2 " close the two previous tab page :tabclose + " close the next tab page :tabclose 3 " close the third tab page :tabclose $ " close the last tab page < *:tabo* *:tabonly* :tabo[nly][!] Close all other tab pages. When the 'hidden' option is set, all buffers in closed windows become hidden. When 'hidden' is not set, and the 'autowrite' option is set, modified buffers are written. Otherwise, windows that have buffers that are modified are not removed, unless the [!] is given, then they become hidden. But modified buffers are never abandoned, so changes cannot get lost. > :tabonly " close all tab pages except the current " one :{count}tabo[nly][!] :tabo[nly][!] {count} Close all tab pages except {count} one. > :.tabonly " as above :-tabonly " close all tab pages except the previous " one :+tabonly " close all tab pages except the next one :1tabonly " close all tab pages except the first one :$tabonly " close all tab pages except the last one :tabonly - " close all tab pages except the previous " one :tabonly +2 " close all tab pages except the two next " one :tabonly 1 " close all tab pages except the first one :tabonly $ " close all tab pages except the last one SWITCHING TO ANOTHER TAB PAGE: Using the mouse: If the tab page line is displayed you can click in a tab page label to switch to that tab page. Click where there is no label to go to the next tab page. |'tabline'| :tabn[ext] *:tabn* *:tabnext* *gt* <C-PageDown> *CTRL-<PageDown>* *<C-PageDown>* gt *i_CTRL-<PageDown>* *i_<C-PageDown>* Go to the next tab page. Wraps around from the last to the first one. :{count}tabn[ext] :tabn[ext] {count} Go to tab page {count}. The first tab page has number one. > :-tabnext " go to the previous tab page :+tabnext " go to the next tab page :+2tabnext " go to the two next tab page :1tabnext " go to the first tab page :$tabnext " go to the last tab page :tabnext $ " as above :tabnext - " go to the previous tab page :tabnext -1 " as above :tabnext + " go to the next tab page :tabnext +1 " as above {count}<C-PageDown> {count}gt Go to tab page {count}. The first tab page has number one. :tabp[revious] *:tabp* *:tabprevious* *gT* *:tabN* :tabN[ext] *:tabNext* *CTRL-<PageUp>* <C-PageUp> *<C-PageUp>* *i_CTRL-<PageUp>* *i_<C-PageUp>* gT Go to the previous tab page. Wraps around from the first one to the last one. :tabp[revious] {count} :tabN[ext] {count} {count}<C-PageUp> {count}gT Go {count} tab pages back. Wraps around from the first one to the last one. :tabr[ewind] *:tabfir* *:tabfirst* *:tabr* *:tabrewind* :tabfir[st] Go to the first tab page. *:tabl* *:tablast* :tabl[ast] Go to the last tab page. Other commands: *:tabs* :tabs List the tab pages and the windows they contain. Shows a ">" for the current window. Shows a "+" for modified buffers. For example: Tab page 1 ~ + tabpage.txt ~ ex_docmd.c ~ Tab page 2 ~ > main.c ~ REORDERING TAB PAGES: :tabm[ove] [N] *:tabm* *:tabmove* :[N]tabm[ove] Move the current tab page to after tab page N. Use zero to make the current tab page the first one. Without N the tab page is made the last one. > :.tabmove " do nothing :-tabmove " move the tab page to the left :+tabmove " move the tab page to the right :0tabmove " move the tab page to the beginning of the tab " list :tabmove 0 " as above :tabmove " move the tab page to the last :$tabmove " as above :tabmove $ " as above :tabm[ove] +[N] :tabm[ove] -[N] Move the current tab page N places to the right (with +) or to the left (with -). > :tabmove - " move the tab page to the left :tabmove -1 " as above :tabmove + " move the tab page to the right :tabmove +1 " as above Note that although it is possible to move a tab behind the N-th one by using :Ntabmove. And move it by N places by using :+Ntabmove. For clarification what +N means in this context see |[range]|. LOOPING OVER TAB PAGES: *:tabd* *:tabdo* :[range]tabd[o] {cmd} Execute {cmd} in each tab page or if [range] is given only in tab pages which tab page number is in the [range]. It works like doing this: > :tabfirst :{cmd} :tabnext :{cmd} etc. < This only operates in the current window of each tab page. When an error is detected on one tab page, further tab pages will not be visited. The last tab page (or where an error occurred) becomes the current tab page. {cmd} can contain '|' to concatenate several commands. {cmd} must not open or close tab pages or reorder them. {not in Vi} Also see |:windo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, |:cfdo| and |:lfdo| ============================================================================== 3. Other items *tab-page-other* *tabline-menu* The GUI tab pages line has a popup menu. It is accessed with a right click. The entries are: Close Close the tab page under the mouse pointer. The current one if there is no label under the mouse pointer. New Tab Open a tab page, editing an empty buffer. It appears to the left of the mouse pointer. Open Tab... Like "New Tab" and additionally use a file selector to select a file to edit. Diff mode works per tab page. You can see the diffs between several files within one tab page. Other tab pages can show differences between other files. Variables local to a tab page start with "t:". |tabpage-variable| Currently there is only one option local to a tab page: 'cmdheight'. *tabnew-autocmd* The TabLeave and TabEnter autocommand events can be used to do something when switching from one tab page to another. The exact order depends on what you are doing. When creating a new tab page this works as if you create a new window on the same buffer and then edit another buffer. Thus ":tabnew" triggers: WinLeave leave current window TabLeave leave current tab page WinEnter enter window in new tab page TabEnter enter new tab page BufLeave leave current buffer BufEnter enter new empty buffer When switching to another tab page the order is: BufLeave WinLeave TabLeave TabEnter WinEnter BufEnter ============================================================================== 4. Setting 'tabline' *setting-tabline* The 'tabline' option specifies what the line with tab pages labels looks like. It is only used when there is no GUI tab line. You can use the 'showtabline' option to specify when you want the line with tab page labels to appear: never, when there is more than one tab page or always. The highlighting of the tab pages line is set with the groups TabLine TabLineSel and TabLineFill. |hl-TabLine| |hl-TabLineSel| |hl-TabLineFill| A "+" will be shown for a tab page that has a modified window. The number of windows in a tabpage is also shown. Thus "3+" means three windows and one of them has a modified buffer. The 'tabline' option allows you to define your preferred way to tab pages labels. This isn't easy, thus an example will be given here. For basics see the 'statusline' option. The same items can be used in the 'tabline' option. Additionally, the |tabpagebuflist()|, |tabpagenr()| and |tabpagewinnr()| functions are useful. Since the number of tab labels will vary, you need to use an expression for the whole option. Something like: > :set tabline=%!MyTabLine() Then define the MyTabLine() function to list all the tab pages labels. A convenient method is to split it in two parts: First go over all the tab pages and define labels for them. Then get the label for each tab page. > function MyTabLine() let s = '' for i in range(tabpagenr('$')) " select the highlighting if i + 1 == tabpagenr() let s .= '%#TabLineSel#' else let s .= '%#TabLine#' endif " set the tab page number (for mouse clicks) let s .= '%' . (i + 1) . 'T' " the label is made by MyTabLabel() let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' endfor " after the last tab fill with TabLineFill and reset tab page nr let s .= '%#TabLineFill#%T' " right-align the label to close the current tab page if tabpagenr('$') > 1 let s .= '%=%#TabLine#%999Xclose' endif return s endfunction Now the MyTabLabel() function is called for each tab page to get its label. > function MyTabLabel(n) let buflist = tabpagebuflist(a:n) let winnr = tabpagewinnr(a:n) return bufname(buflist[winnr - 1]) endfunction This is just a simplistic example that results in a tab pages line that resembles the default, but without adding a + for a modified buffer or truncating the names. You will want to reduce the width of labels in a clever way when there is not enough room. Check the 'columns' option for the space available. ============================================================================== 5. Setting 'guitablabel' *setting-guitablabel* When the GUI tab pages line is displayed, 'guitablabel' can be used to specify the label to display for each tab page. Unlike 'tabline', which specifies the whole tab pages line at once, 'guitablabel' is used for each label separately. 'guitabtooltip' is very similar and is used for the tooltip of the same label. This only appears when the mouse pointer hovers over the label, thus it usually is longer. Only supported on some systems though. See the 'statusline' option for the format of the value. The "%N" item can be used for the current tab page number. The |v:lnum| variable is also set to this number when the option is evaluated. The items that use a file name refer to the current window of the tab page. Note that syntax highlighting is not used for the option. The %T and %X items are also ignored. A simple example that puts the tab page number and the buffer name in the label: > :set guitablabel=%N\ %f An example that resembles the default 'guitablabel': Show the number of windows in the tab page and a '+' if there is a modified buffer: > function GuiTabLabel() let label = '' let bufnrlist = tabpagebuflist(v:lnum) " Add '+' if one of the buffers in the tab page is modified for bufnr in bufnrlist if getbufvar(bufnr, "&modified") let label = '+' break endif endfor " Append the number of windows in the tab page if more than one let wincount = tabpagewinnr(v:lnum, '$') if wincount > 1 let label .= wincount endif if label != '' let label .= ' ' endif " Append the buffer name return label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]) endfunction set guitablabel=%{GuiTabLabel()} Note that the function must be defined before setting the option, otherwise you get an error message for the function not being known. If you want to fall back to the default label, return an empty string. If you want to show something specific for a tab page, you might want to use a tab page local variable. |t:var| vim:tw=78:ts=8:ft=help:norl: PK�������!�O0O��O����vim80/doc/pi_tar.txtnu�[��������*pi_tar.txt* For Vim version 8.0. Last change: 2013 Apr 17 +====================+ | Tar File Interface | +====================+ Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) Copyright 2005-2012: *tar-copyright* The VIM LICENSE (see |copyright|) applies to the files in this package, including tarPlugin.vim, tar.vim, and pi_tar.txt. Like anything else that's except use "tar.vim" instead of "VIM". Like anything else that's free, tar.vim and its associated files are provided *as is* and comes with no warranty of any kind, either expressed or implied. No guarantees of merchantability. No guarantees of suitability for any purpose. By using this plugin, you agree that in no event will the copyright holder be liable for any damages resulting from the use of this software. Use at your own risk! ============================================================================== 1. Contents *tar* *tar-contents* 1. Contents..................................................|tar-contents| 2. Usage.....................................................|tar-usage| 3. Options...................................................|tar-options| 4. History...................................................|tar-history| ============================================================================== 2. Usage *tar-usage* *tar-manual* When one edits a *.tar file, this plugin will handle displaying a contents page. Select a file to edit by moving the cursor atop the desired file, then hit the <return> key. After editing, one may also write to the file. Currently, one may not make a new file in tar archives via the plugin. *:Vimuntar* VIMUNTAR~ :Vimuntar [vimhome] This command copies, if necessary, the tarball to the .vim or vimfiles directory using the first writable directory in the |'runtimepath'| when no [vimhome] is specified. Otherwise, the [vimhome] argument allows the user to specify that directory, instead. The copy is done using the command in *g:tar_copycmd* , which is > cp for cygwin, unix, macunix copy for windows (32, 95, 64, 16) < The extraction is done with the command specified with *g:tar_extractcmd* , which by default is > "tar -xf" < *:TarDiff* DIFFERENCING SUPPORT~ :TarDiff [filename] This command will attempt to show the differences between the tarball version of a file and the associated file on the system. In order to find that file on the system, the script uses the path associated with the file mentioned in the tarball. If the current directory is not correct for that path, :TarDiff will fail to find the associated file. If the [filename] is given, that filename (and path) will be used to specify the associated file. PREVENTING LOADING~ If for some reason you do not wish to use vim to examine tar'd files, you may put the following two variables into your <.vimrc> to prevent the tar plugin from loading: > let g:loaded_tarPlugin= 1 let g:loaded_tar = 1 < ============================================================================== 3. Options *tar-options* These options are variables that one may change, typically in one's <.vimrc> file. Default Variable Value Explanation *g:tar_browseoptions* "Ptf" used to get a list of contents *g:tar_readoptions* "OPxf" used to extract a file from a tarball *g:tar_cmd* "tar" the name of the tar program *g:tar_nomax* 0 if true, file window will not be maximized *g:tar_writeoptions* "uf" used to update/replace a file ============================================================================== 4. History *tar-history* v28 Jun 23, 2011 * a few more decompression options (tbz tb2 txz) v27 May 31, 2011 * moved cygwin detection before g:tar_copycmd handling * inserted additional |:keepj| modifiers * changed silent to sil! (|:silent|) v26 Aug 09, 2010 * uses buffer-local instead of window variables to hold tarfile name * inserted keepj before 0d to protect jump list v25 Jun 19, 2010 * (Jan Steffens) added support for xz compression v24 Apr 07, 2009 * :Untarvim command implemented Sep 28, 2009 * Added lzma support v22 Aug 08, 2008 * security fixes v16 Jun 06, 2008 * tarfile:: used instead of tarfile: when editing files inside tarballs. Fixes a problem with tarballs called things like c:\abc.tar. (tnx to Bill McCarthy) v14 May 09, 2008 * arno caught a security bug May 28, 2008 * various security improvements. Now requires patch 299 which provides the fnameescape() function May 30, 2008 * allows one to view *.gz and *.bz2 files that are in *.tar files. v12 Sep 07, 2007 * &shq now used if not the empty string for g:tar_shq v10 May 02, 2006 * now using "redraw then echo" to show messages, instead of "echo and prompt user" v9 May 02, 2006 * improved detection of masquerading as tar file v8 May 02, 2006 * allows editing of files that merely masquerade as tar files v7 Mar 22, 2006 * work on making tar plugin work across network Mar 27, 2006 * g:tar_cmd now available for users to change the name of the tar program to be used. By default, of course, it's "tar". v6 Dec 21, 2005 * writing to files not in directories caused problems - fixed (pointed out by Christian Robinson) v5 Nov 22, 2005 * report option workaround installed v3 Sep 16, 2005 * handles writing files in an archive back to the archive Oct 18, 2005 * <amatch> used instead of <afile> in autocmds Oct 18, 2005 * handles writing to compressed archives Nov 03, 2005 * handles writing tarfiles across a network using netrw#NetWrite() v2 * converted to use Vim7's new autoload feature by Bram Moolenaar v1 (original) * Michael Toren (see http://michael.toren.net/code/) ============================================================================== vim:tw=78:ts=8:ft=help PK�������!�g=p>��p>����vim80/doc/usr_07.txtnu�[��������*usr_07.txt* For Vim version 8.0. Last change: 2017 Sep 18 VIM USER MANUAL - by Bram Moolenaar Editing more than one file No matter how many files you have, you can edit them without leaving Vim. Define a list of files to work on and jump from one to the other. Copy text from one file and put it in another one. |07.1| Edit another file |07.2| A list of files |07.3| Jumping from file to file |07.4| Backup files |07.5| Copy text between files |07.6| Viewing a file |07.7| Changing the file name Next chapter: |usr_08.txt| Splitting windows Previous chapter: |usr_06.txt| Using syntax highlighting Table of contents: |usr_toc.txt| ============================================================================== *07.1* Edit another file So far you had to start Vim for every file you wanted to edit. There is a simpler way. To start editing another file, use this command: > :edit foo.txt You can use any file name instead of "foo.txt". Vim will close the current file and open the new one. If the current file has unsaved changes, however, Vim displays an error message and does not open the new file: E37: No write since last change (use ! to override) ~ Note: Vim puts an error ID at the start of each error message. If you do not understand the message or what caused it, look in the help system for this ID. In this case: > :help E37 At this point, you have a number of alternatives. You can write the file using this command: > :write Or you can force Vim to discard your changes and edit the new file, using the force (!) character: > :edit! foo.txt If you want to edit another file, but not write the changes in the current file yet, you can make it hidden: > :hide edit foo.txt The text with changes is still there, but you can't see it. This is further explained in section |22.4|: The buffer list. ============================================================================== *07.2* A list of files You can start Vim to edit a sequence of files. For example: > vim one.c two.c three.c This command starts Vim and tells it that you will be editing three files. Vim displays just the first file. After you have done your thing in this file, to edit the next file you use this command: > :next If you have unsaved changes in the current file, you will get an error message and the ":next" will not work. This is the same problem as with ":edit" mentioned in the previous section. To abandon the changes: > :next! But mostly you want to save the changes and move on to the next file. There is a special command for this: > :wnext This does the same as using two separate commands: > :write :next WHERE AM I? To see which file in the argument list you are editing, look in the window title. It should show something like "(2 of 3)". This means you are editing the second file out of three files. If you want to see the list of files, use this command: > :args This is short for "arguments". The output might look like this: one.c [two.c] three.c ~ These are the files you started Vim with. The one you are currently editing, "two.c", is in square brackets. MOVING TO OTHER ARGUMENTS To go back one file: > :previous This is just like the ":next" command, except that it moves in the other direction. Again, there is a shortcut command for when you want to write the file first: > :wprevious To move to the very last file in the list: > :last And to move back to the first one again: > :first There is no ":wlast" or ":wfirst" command though! You can use a count for ":next" and ":previous". To skip two files forward: > :2next AUTOMATIC WRITING When moving around the files and making changes, you have to remember to use ":write". Otherwise you will get an error message. If you are sure you always want to write modified files, you can tell Vim to automatically write them: > :set autowrite When you are editing a file which you may not want to write, switch it off again: > :set noautowrite EDITING ANOTHER LIST OF FILES You can redefine the list of files without the need to exit Vim and start it again. Use this command to edit three other files: > :args five.c six.c seven.h Or use a wildcard, like it's used in the shell: > :args *.txt Vim will take you to the first file in the list. Again, if the current file has changes, you can either write the file first, or use ":args!" (with ! added) to abandon the changes. DID YOU EDIT THE LAST FILE? *arglist-quit* When you use a list of files, Vim assumes you want to edit them all. To protect you from exiting too early, you will get this error when you didn't edit the last file in the list yet: E173: 46 more files to edit ~ If you really want to exit, just do it again. Then it will work (but not when you did other commands in between). ============================================================================== *07.3* Jumping from file to file To quickly jump between two files, press CTRL-^ (on English-US keyboards the ^ is above the 6 key). Example: > :args one.c two.c three.c You are now in one.c. > :next Now you are in two.c. Now use CTRL-^ to go back to one.c. Another CTRL-^ and you are back in two.c. Another CTRL-^ and you are in one.c again. If you now do: > :next You are in three.c. Notice that the CTRL-^ command does not change the idea of where you are in the list of files. Only commands like ":next" and ":previous" do that. The file you were previously editing is called the "alternate" file. When you just started Vim CTRL-^ will not work, since there isn't a previous file. PREDEFINED MARKS After jumping to another file, you can use two predefined marks which are very useful: > `" This takes you to the position where the cursor was when you left the file. Another mark that is remembered is the position where you made the last change: > `. Suppose you are editing the file "one.txt". Somewhere halfway through the file you use "x" to delete a character. Then you go to the last line with "G" and write the file with ":w". You edit several other files, and then use ":edit one.txt" to come back to "one.txt". If you now use `" Vim jumps to the last line of the file. Using `. takes you to the position where you deleted the character. Even when you move around in the file `" and `. will take you to the remembered position. At least until you make another change or leave the file. FILE MARKS In chapter 4 was explained how you can place a mark in a file with "mx" and jump to that position with "`x". That works within one file. If you edit another file and place marks there, these are specific for that file. Thus each file has its own set of marks, they are local to the file. So far we were using marks with a lowercase letter. There are also marks with an uppercase letter. These are global, they can be used from any file. For example suppose that we are editing the file "foo.txt". Go to halfway down the file ("50%") and place the F mark there (F for foo): > 50%mF Now edit the file "bar.txt" and place the B mark (B for bar) at its last line: > GmB Now you can use the "'F" command to jump back to halfway foo.txt. Or edit yet another file, type "'B" and you are at the end of bar.txt again. The file marks are remembered until they are placed somewhere else. Thus you can place the mark, do hours of editing and still be able to jump back to that mark. It's often useful to think of a simple connection between the mark letter and where it is placed. For example, use the H mark in a header file, M in a Makefile and C in a C code file. To see where a specific mark is, give an argument to the ":marks" command: > :marks M You can also give several arguments: > :marks MCP Don't forget that you can use CTRL-O and CTRL-I to jump to older and newer positions without placing marks there. ============================================================================== *07.4* Backup files Usually Vim does not produce a backup file. If you want to have one, all you need to do is execute the following command: > :set backup The name of the backup file is the original file with a ~ added to the end. If your file is named data.txt, for example, the backup file name is data.txt~. If you do not like the fact that the backup files end with ~, you can change the extension: > :set backupext=.bak This will use data.txt.bak instead of data.txt~. Another option that matters here is 'backupdir'. It specifies where the backup file is written. The default, to write the backup in the same directory as the original file, will mostly be the right thing. Note: When the 'backup' option isn't set but the 'writebackup' is, Vim will still create a backup file. However, it is deleted as soon as writing the file was completed successfully. This functions as a safety against losing your original file when writing fails in some way (disk full is the most common cause; being hit by lightning might be another, although less common). KEEPING THE ORIGINAL FILE If you are editing source files, you might want to keep the file before you make any changes. But the backup file will be overwritten each time you write the file. Thus it only contains the previous version, not the first one. To make Vim keep the original file, set the 'patchmode' option. This specifies the extension used for the first backup of a changed file. Usually you would do this: > :set patchmode=.orig When you now edit the file data.txt for the first time, make changes and write the file, Vim will keep a copy of the unchanged file under the name "data.txt.orig". If you make further changes to the file, Vim will notice that "data.txt.orig" already exists and leave it alone. Further backup files will then be called "data.txt~" (or whatever you specified with 'backupext'). If you leave 'patchmode' empty (that is the default), the original file will not be kept. ============================================================================== *07.5* Copy text between files This explains how to copy text from one file to another. Let's start with a simple example. Edit the file that contains the text you want to copy. Move the cursor to the start of the text and press "v". This starts Visual mode. Now move the cursor to the end of the text and press "y". This yanks (copies) the selected text. To copy the above paragraph, you would do: > :edit thisfile /This vjjjj$y Now edit the file you want to put the text in. Move the cursor to the character where you want the text to appear after. Use "p" to put the text there. > :edit otherfile /There p Of course you can use many other commands to yank the text. For example, to select whole lines start Visual mode with "V". Or use CTRL-V to select a rectangular block. Or use "Y" to yank a single line, "yaw" to yank-a-word, etc. The "p" command puts the text after the cursor. Use "P" to put the text before the cursor. Notice that Vim remembers if you yanked a whole line or a block, and puts it back that way. USING REGISTERS When you want to copy several pieces of text from one file to another, having to switch between the files and writing the target file takes a lot of time. To avoid this, copy each piece of text to its own register. A register is a place where Vim stores text. Here we will use the registers named a to z (later you will find out there are others). Let's copy a sentence to the f register (f for First): > "fyas The "yas" command yanks a sentence like before. It's the "f that tells Vim the text should be placed in the f register. This must come just before the yank command. Now yank three whole lines to the l register (l for line): > "l3Y The count could be before the "l just as well. To yank a block of text to the b (for block) register: > CTRL-Vjjww"by Notice that the register specification "b is just before the "y" command. This is required. If you would have put it before the "w" command, it would not have worked. Now you have three pieces of text in the f, l and b registers. Edit another file, move around and place the text where you want it: > "fp Again, the register specification "f comes before the "p" command. You can put the registers in any order. And the text stays in the register until you yank something else into it. Thus you can put it as many times as you like. When you delete text, you can also specify a register. Use this to move several pieces of text around. For example, to delete-a-word and write it in the w register: > "wdaw Again, the register specification comes before the delete command "d". APPENDING TO A FILE When collecting lines of text into one file, you can use this command: > :write >> logfile This will write the text of the current file to the end of "logfile". Thus it is appended. This avoids that you have to copy the lines, edit the log file and put them there. Thus you save two steps. But you can only append to the end of a file. To append only a few lines, select them in Visual mode before typing ":write". In chapter 10 you will learn other ways to select a range of lines. ============================================================================== *07.6* Viewing a file Sometimes you only want to see what a file contains, without the intention to ever write it back. There is the risk that you type ":w" without thinking and overwrite the original file anyway. To avoid this, edit the file read-only. To start Vim in readonly mode, use this command: > vim -R file On Unix this command should do the same thing: > view file You are now editing "file" in read-only mode. When you try using ":w" you will get an error message and the file won't be written. When you try to make a change to the file Vim will give you a warning: W10: Warning: Changing a readonly file ~ The change will be done though. This allows for formatting the file, for example, to be able to read it easily. If you make changes to a file and forgot that it was read-only, you can still write it. Add the ! to the write command to force writing. If you really want to forbid making changes in a file, do this: > vim -M file Now every attempt to change the text will fail. The help files are like this, for example. If you try to make a change you get this error message: E21: Cannot make changes, 'modifiable' is off ~ You could use the -M argument to setup Vim to work in a viewer mode. This is only voluntary though, since these commands will remove the protection: > :set modifiable :set write ============================================================================== *07.7* Changing the file name A clever way to start editing a new file is by using an existing file that contains most of what you need. For example, you start writing a new program to move a file. You know that you already have a program that copies a file, thus you start with: > :edit copy.c You can delete the stuff you don't need. Now you need to save the file under a new name. The ":saveas" command can be used for this: > :saveas move.c Vim will write the file under the given name, and edit that file. Thus the next time you do ":write", it will write "move.c". "copy.c" remains unmodified. When you want to change the name of the file you are editing, but don't want to write the file, you can use this command: > :file move.c Vim will mark the file as "not edited". This means that Vim knows this is not the file you started editing. When you try to write the file, you might get this message: E13: File exists (use ! to override) ~ This protects you from accidentally overwriting another file. ============================================================================== Next chapter: |usr_08.txt| Splitting windows Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: PK�������!�by��y����vim80/doc/message.txtnu�[��������*message.txt* For Vim version 8.0. Last change: 2018 Feb 04 VIM REFERENCE MANUAL by Bram Moolenaar This file contains an alphabetical list of messages and error messages that Vim produces. You can use this if you don't understand what the message means. It is not complete though. 1. Old messages |:messages| 2. Error messages |error-messages| 3. Messages |messages| ============================================================================== 1. Old messages *:messages* *:mes* *message-history* The ":messages" command can be used to view previously given messages. This is especially useful when messages have been overwritten or truncated. This depends on the 'shortmess' option. :messages Show all messages. :{count}messages Show the {count} most recent messages. :messages clear Clear all messages. :{count}messages clear Clear messages, keeping only the {count} most recent ones. The number of remembered messages is fixed at 20 for the tiny version and 200 for other versions. *g<* The "g<" command can be used to see the last page of previous command output. This is especially useful if you accidentally typed <Space> at the hit-enter prompt. You are then back at the hit-enter prompt and can then scroll further back. Note: If the output has been stopped with "q" at the more prompt, it will only be displayed up to this point. The previous command output is cleared when another command produces output. The "g<" output is not redirected. If you are using translated messages, the first printed line tells who maintains the messages or the translations. You can use this to contact the maintainer when you spot a mistake. If you want to find help on a specific (error) message, use the ID at the start of the message. For example, to get help on the message: > E72: Close error on swap file or (translated): > E72: Errore durante chiusura swap file Use: > :help E72 If you are lazy, it also works without the shift key: > :help e72 ============================================================================== 2. Error messages *error-messages* *errors* When an error message is displayed, but it is removed before you could read it, you can see it again with: > :echo errmsg Or view a list of recent messages with: > :messages See `:messages` above. LIST OF MESSAGES *E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317* *E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322* *E323* *E341* *E473* *E570* *E685* *E950* > Add to read buffer makemap: Illegal mode Cannot create BalloonEval with both message and callback Hangul automata ERROR block was not locked Didn't get block nr {N}? ml_upd_block0(): Didn't get block 0?? pointer block id wrong {N} Updated too many blocks? get_varp ERROR u_undo: line numbers wrong undo list corrupt undo line missing ml_get: cannot find line {N} cannot find line {N} line number out of range: {N} past the end line count wrong in block {N} Internal error Internal error: {function} fatal error in cs_manage_matches Invalid count for del_bytes(): {N} This is an internal error. If you can reproduce it, please send in a bug report. |bugs| > ATTENTION Found a swap file by the name ... See |ATTENTION|. *E92* > Buffer {N} not found The buffer you requested does not exist. This can also happen when you have wiped out a buffer which contains a mark or is referenced in another way. |:bwipeout| *E95* > Buffer with this name already exists You cannot have two buffers with the same name. *E72* > Close error on swap file The |swap-file|, that is used to keep a copy of the edited text, could not be closed properly. Mostly harmless. *E169* > Command too recursive This happens when an Ex command executes an Ex command that executes an Ex command, etc. The limit is 200 or the value of 'maxfuncdepth', whatever is larger. When it's more there probably is an endless loop. Probably a |:execute| or |:source| command is involved. *E254* > Cannot allocate color {name} The color name {name} is unknown. See |gui-colors| for a list of colors that are available on most systems. *E458* > Cannot allocate colormap entry, some colors may be incorrect This means that there are not enough colors available for Vim. It will still run, but some of the colors will not appear in the specified color. Try stopping other applications that use many colors, or start them after starting gvim. Browsers are known to consume a lot of colors. You can avoid this with netscape by telling it to use its own colormap: > netscape -install Or tell it to limit to a certain number of colors (64 should work well): > netscape -ncols 64 This can also be done with a line in your Xdefaults file: > Netscape*installColormap: Yes or > Netscape*maxImageColors: 64 < *E79* > Cannot expand wildcards A filename contains a strange combination of characters, which causes Vim to attempt expanding wildcards but this fails. This does NOT mean that no matching file names could be found, but that the pattern was illegal. *E459* > Cannot go back to previous directory While expanding a file name, Vim failed to go back to the previously used directory. All file names being used may be invalid now! You need to have execute permission on the current directory. *E190* *E212* > Cannot open "{filename}" for writing Can't open file for writing For some reason the file you are writing to cannot be created or overwritten. The reason could be that you do not have permission to write in the directory or the file name is not valid. *E166* > Can't open linked file for writing You are trying to write to a file which can't be overwritten, and the file is a link (either a hard link or a symbolic link). Writing might still be possible if the directory that contains the link or the file is writable, but Vim now doesn't know if you want to delete the link and write the file in its place, or if you want to delete the file itself and write the new file in its place. If you really want to write the file under this name, you have to manually delete the link or the file, or change the permissions so that Vim can overwrite. *E46* > Cannot change read-only variable "{name}" You are trying to assign a value to an argument of a function |a:var| or a Vim internal variable |v:var| which is read-only. *E90* > Cannot unload last buffer Vim always requires one buffer to be loaded, otherwise there would be nothing to display in the window. *E40* > Can't open errorfile <filename> When using the ":make" or ":grep" commands: The file used to save the error messages or grep output cannot be opened. This can have several causes: - 'shellredir' has a wrong value. - The shell changes directory, causing the error file to be written in another directory. This could be fixed by changing 'makeef', but then the make command is still executed in the wrong directory. - 'makeef' has a wrong value. - The 'grepprg' or 'makeprg' could not be executed. This cannot always be detected (especially on MS-Windows). Check your $PATH. > Can't open file C:\TEMP\VIoD243.TMP On MS-Windows, this message appears when the output of an external command was to be read, but the command didn't run successfully. This can be caused by many things. Check the 'shell', 'shellquote', 'shellxquote', 'shellslash' and related options. It might also be that the external command was not found, there is no different error message for that. *E12* > Command not allowed from exrc/vimrc in current dir or tag search Some commands are not allowed for security reasons. These commands mostly come from a .exrc or .vimrc file in the current directory, or from a tags file. Also see 'secure'. *E74* > Command too complex A mapping resulted in a very long command string. Could be caused by a mapping that indirectly calls itself. > CONVERSION ERROR When writing a file and the text "CONVERSION ERROR" appears, this means that some bits were lost when converting text from the internally used UTF-8 to the format of the file. The file will not be marked unmodified. If you care about the loss of information, set the 'fileencoding' option to another value that can handle the characters in the buffer and write again. If you don't care, you can abandon the buffer or reset the 'modified' option. *E302* > Could not rename swap file When the file name changes, Vim tries to rename the |swap-file| as well. This failed and the old swap file is now still used. Mostly harmless. *E43* *E44* > Damaged match string Corrupted regexp program Something inside Vim went wrong and resulted in a corrupted regexp. If you know how to reproduce this problem, please report it. |bugs| *E208* *E209* *E210* > Error writing to "{filename}" Error closing "{filename}" Error reading "{filename}" This occurs when Vim is trying to rename a file, but a simple change of file name doesn't work. Then the file will be copied, but somehow this failed. The result may be that both the original file and the destination file exist and the destination file may be incomplete. > Vim: Error reading input, exiting... This occurs when Vim cannot read typed characters while input is required. Vim got stuck, the only thing it can do is exit. This can happen when both stdin and stderr are redirected and executing a script that doesn't exit Vim. *E47* > Error while reading errorfile Reading the error file was not possible. This is NOT caused by an error message that was not recognized. *E80* > Error while writing Writing a file was not completed successfully. The file is probably incomplete. *E13* *E189* > File exists (add ! to override) "{filename}" exists (add ! to override) You are protected from accidentally overwriting a file. When you want to write anyway, use the same command, but add a "!" just after the command. Example: > :w /tmp/test changes to: > :w! /tmp/test < *E768* > Swap file exists: {filename} (:silent! overrides) You are protected from overwriting a file that is being edited by Vim. This happens when you use ":w! filename" and a swapfile is found. - If the swapfile was left over from an old crashed edit session you may want to delete the swapfile. Edit {filename} to find out information about the swapfile. - If you want to write anyway prepend ":silent!" to the command. For example: > :silent! w! /tmp/test < The special command is needed, since you already added the ! for overwriting an existing file. *E139* > File is loaded in another buffer You are trying to write a file under a name which is also used in another buffer. This would result in two versions of the same file. *E142* > File not written: Writing is disabled by 'write' option The 'write' option is off. This makes all commands that try to write a file generate this message. This could be caused by a |-m| commandline argument. You can switch the 'write' option on with ":set write". *E25* > GUI cannot be used: Not enabled at compile time You are running a version of Vim that doesn't include the GUI code. Therefore "gvim" and ":gui" don't work. *E49* > Invalid scroll size This is caused by setting an invalid value for the 'scroll', 'scrolljump' or 'scrolloff' options. *E17* > "{filename}" is a directory You tried to write a file with the name of a directory. This is not possible. You probably need to append a file name. *E19* > Mark has invalid line number You are using a mark that has a line number that doesn't exist. This can happen when you have a mark in another file, and some other program has deleted lines from it. *E219* *E220* > Missing {. Missing }. Using a {} construct in a file name, but there is a { without a matching } or the other way around. It should be used like this: {foo,bar}. This matches "foo" and "bar". *E315* > ml_get: invalid lnum: {number} This is an internal Vim error. Please try to find out how it can be reproduced, and submit a bug report |bugreport.vim|. *E173* > {number} more files to edit You are trying to exit, while the last item in the argument list has not been edited. This protects you from accidentally exiting when you still have more files to work on. See |argument-list|. If you do want to exit, just do it again and it will work. *E23* *E194* > No alternate file No alternate file name to substitute for '#' The alternate file is not defined yet. See |alternate-file|. *E32* > No file name The current buffer has no name. To write it, use ":w fname". Or give the buffer a name with ":file fname". *E141* > No file name for buffer {number} One of the buffers that was changed does not have a file name. Therefore it cannot be written. You need to give the buffer a file name: > :buffer {number} :file {filename} < *E33* > No previous substitute regular expression When using the '~' character in a pattern, it is replaced with the previously used pattern in a ":substitute" command. This fails when no such command has been used yet. See |/~|. This also happens when using ":s/pat/%/", where the "%" stands for the previous substitute string. *E35* > No previous regular expression When using an empty search pattern, the previous search pattern is used. But that is not possible if there was no previous search. *E24* > No such abbreviation You have used an ":unabbreviate" command with an argument which is not an existing abbreviation. All variations of this command give the same message: ":cunabbrev", ":iunabbrev", etc. Check for trailing white space. > /dev/dsp: No such file or directory Only given for GTK GUI with Gnome support. Gnome tries to use the audio device and it isn't present. You can ignore this error. *E31* > No such mapping You have used an ":unmap" command with an argument which is not an existing mapping. All variations of this command give the same message: ":cunmap", ":unmap!", etc. A few hints: - Check for trailing white space. - If the mapping is buffer-local you need to use ":unmap <buffer>". |:map-<buffer>| *E37* *E89* > No write since last change (add ! to override) No write since last change for buffer {N} (add ! to override) You are trying to |abandon| a file that has changes. Vim protects you from losing your work. You can either write the changed file with ":w", or, if you are sure, |abandon| it anyway, and lose all the changes. This can be done by adding a '!' character just after the command you used. Example: > :e other_file changes to: > :e! other_file < *E162* > No write since last change for buffer "{name}" This appears when you try to exit Vim while some buffers are changed. You will either have to write the changed buffer (with |:w|), or use a command to abandon the buffer forcefully, e.g., with ":qa!". Careful, make sure you don't throw away changes you really want to keep. You might have forgotten about a buffer, especially when 'hidden' is set. > [No write since last change] This appears when executing a shell command while at least one buffer was changed. To avoid the message reset the 'warn' option. *E38* > Null argument Something inside Vim went wrong and resulted in a NULL pointer. If you know how to reproduce this problem, please report it. |bugs| *E41* *E82* *E83* *E342* > Out of memory! Out of memory! (allocating {number} bytes) Cannot allocate any buffer, exiting... Cannot allocate buffer, using other one... Oh, oh. You must have been doing something complicated, or some other program is consuming your memory. Be careful! Vim is not completely prepared for an out-of-memory situation. First make sure that any changes are saved. Then try to solve the memory shortage. To stay on the safe side, exit Vim and start again. Buffers are only partly kept in memory, thus editing a very large file is unlikely to cause an out-of-memory situation. Undo information is completely in memory, you can reduce that with these options: - 'undolevels' Set to a low value, or to -1 to disable undo completely. This helps for a change that affects all lines. - 'undoreload' Set to zero to disable. *E339* > Pattern too long This happens on systems with 16 bit ints: The compiled regexp pattern is longer than about 65000 characters. Try using a shorter pattern. It also happens when the offset of a rule doesn't fit in the space available. Try simplifying the pattern. *E45* > 'readonly' option is set (add ! to override) You are trying to write a file that was marked as read-only. To write the file anyway, either reset the 'readonly' option, or add a '!' character just after the command you used. Example: > :w changes to: > :w! < *E294* *E295* *E301* > Read error in swap file Seek error in swap file read Oops, lost the swap file!!! Vim tried to read text from the |swap-file|, but something went wrong. The text in the related buffer may now be corrupted! Check carefully before you write a buffer. You may want to write it in another file and check for differences. *E192* > Recursive use of :normal too deep You are using a ":normal" command, whose argument again uses a ":normal" command in a recursive way. This is restricted to 'maxmapdepth' levels. This example illustrates how to get this message: > :map gq :normal gq<CR> If you type "gq", it will execute this mapping, which will call "gq" again. *E22* > Scripts nested too deep Scripts can be read with the "-s" command-line argument and with the ":source" command. The script can then again read another script. This can continue for about 14 levels. When more nesting is done, Vim assumes that there is a recursive loop somewhere and stops with this error message. *E319* > Sorry, the command is not available in this version You have used a command that is not present in the version of Vim you are using. When compiling Vim, many different features can be enabled or disabled. This depends on how big Vim has chosen to be and the operating system. See |+feature-list| for when which feature is available. The |:version| command shows which feature Vim was compiled with. *E300* > Swap file already exists (symlink attack?) This message appears when Vim is trying to open a swap file and finds it already exists or finds a symbolic link in its place. This shouldn't happen, because Vim already checked that the file doesn't exist. Either someone else opened the same file at exactly the same moment (very unlikely) or someone is attempting a symlink attack (could happen when editing a file in /tmp or when 'directory' starts with "/tmp", which is a bad choice). *E432* > Tags file not sorted: {file name} Vim (and Vi) expect tags files to be sorted in ASCII order. Binary searching can then be used, which is a lot faster than a linear search. If your tags files are not properly sorted, reset the |'tagbsearch'| option. This message is only given when Vim detects a problem when searching for a tag. Sometimes this message is not given, even though the tags file is not properly sorted. *E460* > The resource fork would be lost (add ! to override) On the Macintosh (classic), when writing a file, Vim attempts to preserve all info about a file, including its resource fork. If this is not possible you get this error message. Append "!" to the command name to write anyway (and lose the info). *E424* > Too many different highlighting attributes in use Vim can only handle about 223 different kinds of highlighting. If you run into this limit, you have used too many |:highlight| commands with different arguments. A ":highlight link" is not counted. *E77* > Too many file names When expanding file names, more than one match was found. Only one match is allowed for the command that was used. *E303* > Unable to open swap file for "{filename}", recovery impossible Vim was not able to create a swap file. You can still edit the file, but if Vim unexpectedly exits the changes will be lost. And Vim may consume a lot of memory when editing a big file. You may want to change the 'directory' option to avoid this error. See |swap-file|. *E140* > Use ! to write partial buffer When using a range to write part of a buffer, it is unusual to overwrite the original file. It is probably a mistake (e.g., when Visual mode was active when using ":w"), therefore Vim requires using a ! after the command, e.g.: ":3,10w!". > Warning: Cannot convert string "<Key>Escape,_Key_Cancel" to type VirtualBinding Messages like this appear when starting up. This is not a Vim problem, your X11 configuration is wrong. You can find a hint on how to solve this here: http://groups.yahoo.com/group/solarisonintel/message/12179. [this URL is no longer valid] *W10* > Warning: Changing a readonly file The file is read-only and you are making a change to it anyway. You can use the |FileChangedRO| autocommand event to avoid this message (the autocommand must reset the 'readonly' option). See 'modifiable' to completely disallow making changes to a file. This message is only given for the first change after 'readonly' has been set. *W13* > Warning: File "{filename}" has been created after editing started You are editing a file in Vim when it didn't exist, but it does exist now. You will have to decide if you want to keep the version in Vim or the newly created file. This message is not given when 'buftype' is not empty. *W11* > Warning: File "{filename}" has changed since editing started The file which you have started editing has got another timestamp and the contents changed (more precisely: When reading the file again with the current option settings and autocommands you would end up with different text). This probably means that some other program changed the file. You will have to find out what happened, and decide which version of the file you want to keep. Set the 'autoread' option if you want to do this automatically. This message is not given when 'buftype' is not empty. There is one situation where you get this message even though there is nothing wrong: If you save a file in Windows on the day the daylight saving time starts. It can be fixed in one of these ways: - Add this line in your autoexec.bat: > SET TZ=-1 < Adjust the "-1" for your time zone. - Disable "automatically adjust clock for daylight saving changes". - Just write the file again the next day. Or set your clock to the next day, write the file twice and set the clock back. If you get W11 all the time, you may need to disable "Acronis Active Protection" or register Vim as a trusted service/application. *W12* > Warning: File "{filename}" has changed and the buffer was changed in Vim as well Like the above, and the buffer for the file was changed in this Vim as well. You will have to decide if you want to keep the version in this Vim or the one on disk. This message is not given when 'buftype' is not empty. *W16* > Warning: Mode of file "{filename}" has changed since editing started When the timestamp for a buffer was changed and the contents are still the same but the mode (permissions) have changed. This usually occurs when checking out a file from a version control system, which causes the read-only bit to be reset. It should be safe to reload the file. Set 'autoread' to automatically reload the file. *E211* > File "{filename}" no longer available The file which you have started editing has disappeared, or is no longer accessible. Make sure you write the buffer somewhere to avoid losing changes. This message is not given when 'buftype' is not empty. *W14* > Warning: List of file names overflow You must be using an awful lot of buffers. It's now possible that two buffers have the same number, which causes various problems. You might want to exit Vim and restart it. *E931* > Buffer cannot be registered Out of memory or a duplicate buffer number. May happen after W14. Looking up a buffer will not always work, better restart Vim. *E296* *E297* > Seek error in swap file write Write error in swap file This mostly happens when the disk is full. Vim could not write text into the |swap-file|. It's not directly harmful, but when Vim unexpectedly exits some text may be lost without recovery being possible. Vim might run out of memory when this problem persists. *connection-refused* > Xlib: connection to "<machine-name:0.0" refused by server This happens when Vim tries to connect to the X server, but the X server does not allow a connection. The connection to the X server is needed to be able to restore the title and for the xterm clipboard support. Unfortunately this error message cannot be avoided, except by disabling the |+xterm_clipboard| and |+X11| features. *E10* > \\ should be followed by /, ? or & A command line started with a backslash or the range of a command contained a backslash in a wrong place. This is often caused by command-line continuation being disabled. Remove the 'C' flag from the 'cpoptions' option to enable it. Or use ":set nocp". *E471* > Argument required This happens when an Ex command with mandatory argument(s) was executed, but no argument has been specified. *E474* *E475* > Invalid argument Invalid argument: {arg} An Ex command has been executed, but an invalid argument has been specified. *E488* > Trailing characters An argument has been added to an Ex command that does not permit one. *E477* *E478* > No ! allowed Don't panic! You have added a "!" after an Ex command that doesn't permit one. *E481* > No range allowed A range was specified for an Ex command that doesn't permit one. See |cmdline-ranges|. *E482* *E483* > Can't create file {filename} Can't get temp file name Vim cannot create a temporary file. *E484* *E485* > Can't open file {filename} Can't read file {filename} Vim cannot read a temporary file. Especially on Windows, this can be caused by wrong escaping of special characters for cmd.exe; the approach was changed with patch 7.3.443. Try using |shellescape()| for all shell arguments given to |system()|, or explicitly add escaping with ^. Also see 'shellxquote' and 'shellxescape'. *E464* > Ambiguous use of user-defined command There are two user-defined commands with a common name prefix, and you used Command-line completion to execute one of them. |user-cmd-ambiguous| Example: > :command MyCommand1 echo "one" :command MyCommand2 echo "two" :MyCommand < *E492* > Not an editor command You tried to execute a command that is neither an Ex command nor a user-defined command. *E943* > Command table needs to be updated, run 'make cmdidxs' This can only happen when changing the source code, when adding a command in src/ex_cmds.h. The lookup table then needs to be updated, by running: > make cmdidxs ============================================================================== 3. Messages *messages* This is an (incomplete) overview of various messages that Vim gives: *hit-enter* *press-enter* *hit-return* *press-return* *hit-enter-prompt* Press ENTER or type command to continue This message is given when there is something on the screen for you to read, and the screen is about to be redrawn: - After executing an external command (e.g., ":!ls" and "="). - Something is displayed on the status line that is longer than the width of the window, or runs into the 'showcmd' or 'ruler' output. -> Press <Enter> or <Space> to redraw the screen and continue, without that key being used otherwise. -> Press ':' or any other Normal mode command character to start that command. -> Press 'k', <Up>, 'u', 'b' or 'g' to scroll back in the messages. This works the same way as at the |more-prompt|. Only works when 'compatible' is off and 'more' is on. -> Pressing 'j', 'f', 'd' or <Down> is ignored when messages scrolled off the top of the screen, 'compatible' is off and 'more' is on, to avoid that typing one 'j' or 'f' too many causes the messages to disappear. -> Press <C-Y> to copy (yank) a modeless selection to the clipboard register. -> Use a menu. The characters defined for Cmdline-mode are used. -> When 'mouse' contains the 'r' flag, clicking the left mouse button works like pressing <Space>. This makes it impossible to select text though. -> For the GUI clicking the left mouse button in the last line works like pressing <Space>. {Vi: only ":" commands are interpreted} If you accidentally hit <Enter> or <Space> and you want to see the displayed text then use |g<|. This only works when 'more' is set. To reduce the number of hit-enter prompts: - Set 'cmdheight' to 2 or higher. - Add flags to 'shortmess'. - Reset 'showcmd' and/or 'ruler'. If your script causes the hit-enter prompt and you don't know why, you may find the |v:scrollstart| variable useful. Also see 'mouse'. The hit-enter message is highlighted with the |hl-Question| group. *more-prompt* *pager* > -- More -- -- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit This message is given when the screen is filled with messages. It is only given when the 'more' option is on. It is highlighted with the |hl-MoreMsg| group. Type effect ~ <CR> or <NL> or j or <Down> one more line d down a page (half a screen) <Space> or f or <PageDown> down a screen G down all the way, until the hit-enter prompt <BS> or k or <Up> one line back (*) u up a page (half a screen) (*) b or <PageUp> back a screen (*) g back to the start (*) q, <Esc> or CTRL-C stop the listing : stop the listing and enter a command-line <C-Y> yank (copy) a modeless selection to the clipboard ("* and "+ registers) {menu-entry} what the menu is defined to in Cmdline-mode. <LeftMouse> (**) next page Any other key causes the meaning of the keys to be displayed. (*) backwards scrolling is {not in Vi}. Only scrolls back to where messages started to scroll. (**) Clicking the left mouse button only works: - For the GUI: in the last line of the screen. - When 'r' is included in 'mouse' (but then selecting text won't work). Note: The typed key is directly obtained from the terminal, it is not mapped and typeahead is ignored. The |g<| command can be used to see the last page of previous command output. This is especially useful if you accidentally typed <Space> at the hit-enter prompt. vim:tw=78:ts=8:ft=help:norl: PK�������!�ks������vim80/doc/os_msdos.txtnu�[��������*os_msdos.txt* For Vim version 8.0. Last change: 2016 Feb 26 VIM REFERENCE MANUAL by Bram Moolenaar *msdos* *ms-dos* *MSDOS* *MS-DOS* This file used to contain the particularities for the MS-DOS version of Vim. MS-DOS support was removed in patch 7.4.1399. If you want to use it you will need to get a version older than that. Note that the MS-DOS version doesn't work, there is not enough memory. The DOS32 version (using DJGPP) might still work on older systems. vim:tw=78:ts=8:ft=help:norl: PK�������!�・D��D����vim80/doc/usr_90.txtnu�[��������*usr_90.txt* For Vim version 8.0. Last change: 2008 Sep 10 VIM USER MANUAL - by Bram Moolenaar Installing Vim *install* Before you can use Vim you have to install it. Depending on your system it's simple or easy. This chapter gives a few hints and also explains how upgrading to a new version is done. |90.1| Unix |90.2| MS-Windows |90.3| Upgrading |90.4| Common installation issues |90.5| Uninstalling Vim Previous chapter: |usr_45.txt| Select your language Table of contents: |usr_toc.txt| ============================================================================== *90.1* Unix First you have to decide if you are going to install Vim system-wide or for a single user. The installation is almost the same, but the directory where Vim is installed in differs. For a system-wide installation the base directory "/usr/local" is often used. But this may be different for your system. Try finding out where other packages are installed. When installing for a single user, you can use your home directory as the base. The files will be placed in subdirectories like "bin" and "shared/vim". FROM A PACKAGE You can get precompiled binaries for many different UNIX systems. There is a long list with links on this page: http://www.vim.org/binaries.html ~ Volunteers maintain the binaries, so they are often out of date. It is a good idea to compile your own UNIX version from the source. Also, creating the editor from the source allows you to control which features are compiled. This does require a compiler though. If you have a Linux distribution, the "vi" program is probably a minimal version of Vim. It doesn't do syntax highlighting, for example. Try finding another Vim package in your distribution, or search on the web site. FROM SOURCES To compile and install Vim, you will need the following: - A C compiler (GCC preferred) - The GZIP program (you can get it from www.gnu.org) - The Vim source and runtime archives To get the Vim archives, look in this file for a mirror near you, this should provide the fastest download: ftp://ftp.vim.org/pub/vim/MIRRORS ~ Or use the home site ftp.vim.org, if you think it's fast enough. Go to the "unix" directory and you'll find a list of files there. The version number is embedded in the file name. You will want to get the most recent version. You can get the files for Unix in two ways: One big archive that contains everything, or four smaller ones that each fit on a floppy disk. For version 6.1 the single big one is called: vim-6.1.tar.bz2 ~ You need the bzip2 program to uncompress it. If you don't have it, get the four smaller files, which can be uncompressed with gzip. For Vim 6.1 they are called: vim-6.1-src1.tar.gz ~ vim-6.1-src2.tar.gz ~ vim-6.1-rt1.tar.gz ~ vim-6.1-rt2.tar.gz ~ COMPILING First create a top directory to work in, for example: > mkdir ~/vim cd ~/vim Then unpack the archives there. If you have the one big archive, you unpack it like this: > bzip2 -d -c path/vim-6.1.tar.bz2 | tar xf - Change "path" to where you have downloaded the file. > gzip -d -c path/vim-6.1-src1.tar.gz | tar xf - gzip -d -c path/vim-6.1-src2.tar.gz | tar xf - gzip -d -c path/vim-6.1-rt1.tar.gz | tar xf - gzip -d -c path/vim-6.1-rt2.tar.gz | tar xf - If you are satisfied with getting the default features, and your environment is setup properly, you should be able to compile Vim with just this: > cd vim61/src make The make program will run configure and compile everything. Further on we will explain how to compile with different features. If there are errors while compiling, carefully look at the error messages. There should be a hint about what went wrong. Hopefully you will be able to correct it. You might have to disable some features to make Vim compile. Look in the Makefile for specific hints for your system. TESTING Now you can check if compiling worked OK: > make test This will run a sequence of test scripts to verify that Vim works as expected. Vim will be started many times and all kinds of text and messages flash by. If it is alright you will finally see: test results: ~ ALL DONE ~ If you get "TEST FAILURE" some test failed. If there are one or two messages about failed tests, Vim might still work, but not perfectly. If you see a lot of error messages or Vim doesn't finish until the end, there must be something wrong. Either try to find out yourself, or find someone who can solve it. You could look in the |maillist-archive| for a solution. If everything else fails, you could ask in the vim |maillist| if someone can help you. INSTALLING *install-home* If you want to install in your home directory, edit the Makefile and search for a line: #prefix = $(HOME) ~ Remove the # at the start of the line. When installing for the whole system, Vim has most likely already selected a good installation directory for you. You can also specify one, see below. You need to become root for the following. To install Vim do: > make install That should move all the relevant files to the right place. Now you can try running vim to verify that it works. Use two simple tests to check if Vim can find its runtime files: > :help :syntax enable If this doesn't work, use this command to check where Vim is looking for the runtime files: > :echo $VIMRUNTIME You can also start Vim with the "-V" argument to see what happens during startup: > vim -V Don't forget that the user manual assumes you Vim in a certain way. After installing Vim, follow the instructions at |not-compatible| to make Vim work as assumed in this manual. SELECTING FEATURES Vim has many ways to select features. One of the simple ways is to edit the Makefile. There are many directions and examples. Often you can enable or disable a feature by uncommenting a line. An alternative is to run "configure" separately. This allows you to specify configuration options manually. The disadvantage is that you have to figure out what exactly to type. Some of the most interesting configure arguments follow. These can also be enabled from the Makefile. --prefix={directory} Top directory where to install Vim. --with-features=tiny Compile with many features disabled. --with-features=small Compile with some features disabled. --with-features=big Compile with more features enabled. --with-features=huge Compile with most features enabled. See |+feature-list| for which feature is enabled in which case. --enable-perlinterp Enable the Perl interface. There are similar arguments for ruby, python and tcl. --disable-gui Do not compile the GUI interface. --without-x Do not compile X-windows features. When both of these are used, Vim will not connect to the X server, which makes startup faster. To see the whole list use: > ./configure --help You can find a bit of explanation for each feature, and links for more information here: |feature-list|. For the adventurous, edit the file "feature.h". You can also change the source code yourself! ============================================================================== *90.2* MS-Windows There are two ways to install the Vim program for Microsoft Windows. You can uncompress several archives, or use a self-installing big archive. Most users with fairly recent computers will prefer the second method. For the first one, you will need: - An archive with binaries for Vim. - The Vim runtime archive. - A program to unpack the zip files. To get the Vim archives, look in this file for a mirror near you, this should provide the fastest download: ftp://ftp.vim.org/pub/vim/MIRRORS ~ Or use the home site ftp.vim.org, if you think it's fast enough. Go to the "pc" directory and you'll find a list of files there. The version number is embedded in the file name. You will want to get the most recent version. We will use "61" here, which is version 6.1. gvim61.exe The self-installing archive. This is all you need for the second method. Just launch the executable, and follow the prompts. For the first method you must chose one of the binary archives. These are available: gvim61.zip The normal MS-Windows GUI version. gvim61ole.zip The MS-Windows GUI version with OLE support. Uses more memory, supports interfacing with other OLE applications. vim61w32.zip 32 bit MS-Windows console version. For use in a Win NT/2000/XP console. Does not work well on Win 95/98. vim61d32.zip 32 bit MS-DOS version. For use in the Win 95/98 console window. vim61d16.zip 16 bit MS-DOS version. Only for old systems. Does not support long filenames. You only need one of them. Although you could install both a GUI and a console version. You always need to get the archive with runtime files. vim61rt.zip The runtime files. Use your un-zip program to unpack the files. For example, using the "unzip" program: > cd c:\ unzip path\gvim61.zip unzip path\vim61rt.zip This will unpack the files in the directory "c:\vim\vim61". If you already have a "vim" directory somewhere, you will want to move to the directory just above it. Now change to the "vim\vim61" directory and run the install program: > install Carefully look through the messages and select the options you want to use. If you finally select "do it" the install program will carry out the actions you selected. The install program doesn't move the runtime files. They remain where you unpacked them. In case you are not satisfied with the features included in the supplied binaries, you could try compiling Vim yourself. Get the source archive from the same location as where the binaries are. You need a compiler for which a makefile exists. Microsoft Visual C works, but is expensive. The Free Borland command-line compiler 5.5 can be used, as well as the free MingW and Cygwin compilers. Check the file src/INSTALLpc.txt for hints. ============================================================================== *90.3* Upgrading If you are running one version of Vim and want to install another, here is what to do. UNIX When you type "make install" the runtime files will be copied to a directory which is specific for this version. Thus they will not overwrite a previous version. This makes it possible to use two or more versions next to each other. The executable "vim" will overwrite an older version. If you don't care about keeping the old version, running "make install" will work fine. You can delete the old runtime files manually. Just delete the directory with the version number in it and all files below it. Example: > rm -rf /usr/local/share/vim/vim58 There are normally no changed files below this directory. If you did change the "filetype.vim" file, for example, you better merge the changes into the new version before deleting it. If you are careful and want to try out the new version for a while before switching to it, install the new version under another name. You need to specify a configure argument. For example: > ./configure --with-vim-name=vim6 Before running "make install", you could use "make -n install" to check that no valuable existing files are overwritten. When you finally decide to switch to the new version, all you need to do is to rename the binary to "vim". For example: > mv /usr/local/bin/vim6 /usr/local/bin/vim MS-WINDOWS Upgrading is mostly equal to installing a new version. Just unpack the files in the same place as the previous version. A new directory will be created, e.g., "vim61", for the files of the new version. Your runtime files, vimrc file, viminfo, etc. will be left alone. If you want to run the new version next to the old one, you will have to do some handwork. Don't run the install program, it will overwrite a few files of the old version. Execute the new binaries by specifying the full path. The program should be able to automatically find the runtime files for the right version. However, this won't work if you set the $VIMRUNTIME variable somewhere. If you are satisfied with the upgrade, you can delete the files of the previous version. See |90.5|. ============================================================================== *90.4* Common installation issues This section describes some of the common problems that occur when installing Vim and suggests some solutions. It also contains answers to many installation questions. Q: I Do Not Have Root Privileges. How Do I Install Vim? (Unix) Use the following configuration command to install Vim in a directory called $HOME/vim: > ./configure --prefix=$HOME This gives you a personal copy of Vim. You need to put $HOME/bin in your path to execute the editor. Also see |install-home|. Q: The Colors Are Not Right on My Screen. (Unix) Check your terminal settings by using the following command in a shell: > echo $TERM If the terminal type listed is not correct, fix it. For more hints, see |06.2|. Another solution is to always use the GUI version of Vim, called gvim. This avoids the need for a correct terminal setup. Q: My Backspace And Delete Keys Don't Work Right The definition of what key sends what code is very unclear for backspace <BS> and Delete <Del> keys. First of all, check your $TERM setting. If there is nothing wrong with it, try this: > :set t_kb=^V<BS> :set t_kD=^V<Del> In the first line you need to press CTRL-V and then hit the backspace key. In the second line you need to press CTRL-V and then hit the Delete key. You can put these lines in your vimrc file, see |05.1|. A disadvantage is that it won't work when you use another terminal some day. Look here for alternate solutions: |:fixdel|. Q: I Am Using RedHat Linux. Can I Use the Vim That Comes with the System? By default RedHat installs a minimal version of Vim. Check your RPM packages for something named "Vim-enhanced-version.rpm" and install that. Q: How Do I Turn Syntax Coloring On? How do I make plugins work? Use the example vimrc script. You can find an explanation on how to use it here: |not-compatible|. See chapter 6 for information about syntax highlighting: |usr_06.txt|. Q: What Is a Good vimrc File to Use? See the www.vim.org Web site for several good examples. Q: Where Do I Find a Good Vim Plugin? See the Vim-online site: http://vim.sf.net. Many users have uploaded useful Vim scripts and plugins there. Q: Where Do I Find More Tips? See the Vim-online site: http://vim.sf.net. There is an archive with hints from Vim users. You might also want to search in the |maillist-archive|. ============================================================================== *90.5* Uninstalling Vim In the unlikely event you want to uninstall Vim completely, this is how you do it. UNIX When you installed Vim as a package, check your package manager to find out how to remove the package again. If you installed Vim from sources you can use this command: > make uninstall However, if you have deleted the original files or you used an archive that someone supplied, you can't do this. Do delete the files manually, here is an example for when "/usr/local" was used as the root: > rm -rf /usr/local/share/vim/vim61 rm /usr/local/bin/eview rm /usr/local/bin/evim rm /usr/local/bin/ex rm /usr/local/bin/gview rm /usr/local/bin/gvim rm /usr/local/bin/gvim rm /usr/local/bin/gvimdiff rm /usr/local/bin/rgview rm /usr/local/bin/rgvim rm /usr/local/bin/rview rm /usr/local/bin/rvim rm /usr/local/bin/rvim rm /usr/local/bin/view rm /usr/local/bin/vim rm /usr/local/bin/vimdiff rm /usr/local/bin/vimtutor rm /usr/local/bin/xxd rm /usr/local/man/man1/eview.1 rm /usr/local/man/man1/evim.1 rm /usr/local/man/man1/ex.1 rm /usr/local/man/man1/gview.1 rm /usr/local/man/man1/gvim.1 rm /usr/local/man/man1/gvimdiff.1 rm /usr/local/man/man1/rgview.1 rm /usr/local/man/man1/rgvim.1 rm /usr/local/man/man1/rview.1 rm /usr/local/man/man1/rvim.1 rm /usr/local/man/man1/view.1 rm /usr/local/man/man1/vim.1 rm /usr/local/man/man1/vimdiff.1 rm /usr/local/man/man1/vimtutor.1 rm /usr/local/man/man1/xxd.1 MS-WINDOWS If you installed Vim with the self-installing archive you can run the "uninstall-gui" program located in the same directory as the other Vim programs, e.g. "c:\vim\vim61". You can also launch it from the Start menu if installed the Vim entries there. This will remove most of the files, menu entries and desktop shortcuts. Some files may remain however, as they need a Windows restart before being deleted. You will be given the option to remove the whole "vim" directory. It probably contains your vimrc file and other runtime files that you created, so be careful. Else, if you installed Vim with the zip archives, the preferred way is to use the "uninstal" program (note the missing l at the end). You can find it in the same directory as the "install" program, e.g., "c:\vim\vim61". This should also work from the usual "install/remove software" page. However, this only removes the registry entries for Vim. You have to delete the files yourself. Simply select the directory "vim\vim61" and delete it recursively. There should be no files there that you changed, but you might want to check that first. The "vim" directory probably contains your vimrc file and other runtime files that you created. You might want to keep that. ============================================================================== Table of contents: |usr_toc.txt| Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: PK�������!�:-6��6����vim80/doc/uganda.txtnu�[��������*uganda.txt* For Vim version 8.0. Last change: 2013 Jul 06 VIM REFERENCE MANUAL by Bram Moolenaar *uganda* *Uganda* *copying* *copyright* *license* SUMMARY *iccf* *ICCF* Vim is Charityware. You can use and copy it as much as you like, but you are encouraged to make a donation for needy children in Uganda. Please see |kcc| below or visit the ICCF web site, available at these URLs: http://iccf-holland.org/ http://www.vim.org/iccf/ http://www.iccf.nl/ You can also sponsor the development of Vim. Vim sponsors can vote for features. See |sponsor|. The money goes to Uganda anyway. The Open Publication License applies to the Vim documentation, see |manual-copyright|. === begin of license === VIM LICENSE I) There are no restrictions on distributing unmodified copies of Vim except that they must include this license text. You can also distribute unmodified parts of Vim, likewise unrestricted except that they must include this license text. You are also allowed to include executables that you made from the unmodified Vim sources, plus your own usage examples and Vim scripts. II) It is allowed to distribute a modified (or extended) version of Vim, including executables and/or source code, when the following four conditions are met: 1) This license text must be included unmodified. 2) The modified Vim must be distributed in one of the following five ways: a) If you make changes to Vim yourself, you must clearly describe in the distribution how to contact you. When the maintainer asks you (in any way) for a copy of the modified Vim you distributed, you must make your changes, including source code, available to the maintainer without fee. The maintainer reserves the right to include your changes in the official version of Vim. What the maintainer will do with your changes and under what license they will be distributed is negotiable. If there has been no negotiation then this license, or a later version, also applies to your changes. The current maintainer is Bram Moolenaar <Bram@vim.org>. If this changes it will be announced in appropriate places (most likely vim.sf.net, www.vim.org and/or comp.editors). When it is completely impossible to contact the maintainer, the obligation to send him your changes ceases. Once the maintainer has confirmed that he has received your changes they will not have to be sent again. b) If you have received a modified Vim that was distributed as mentioned under a) you are allowed to further distribute it unmodified, as mentioned at I). If you make additional changes the text under a) applies to those changes. c) Provide all the changes, including source code, with every copy of the modified Vim you distribute. This may be done in the form of a context diff. You can choose what license to use for new code you add. The changes and their license must not restrict others from making their own changes to the official version of Vim. d) When you have a modified Vim which includes changes as mentioned under c), you can distribute it without the source code for the changes if the following three conditions are met: - The license that applies to the changes permits you to distribute the changes to the Vim maintainer without fee or restriction, and permits the Vim maintainer to include the changes in the official version of Vim without fee or restriction. - You keep the changes for at least three years after last distributing the corresponding modified Vim. When the maintainer or someone who you distributed the modified Vim to asks you (in any way) for the changes within this period, you must make them available to him. - You clearly describe in the distribution how to contact you. This contact information must remain valid for at least three years after last distributing the corresponding modified Vim, or as long as possible. e) When the GNU General Public License (GPL) applies to the changes, you can distribute the modified Vim under the GNU GPL version 2 or any later version. 3) A message must be added, at least in the output of the ":version" command and in the intro screen, such that the user of the modified Vim is able to see that it was modified. When distributing as mentioned under 2)e) adding the message is only required for as far as this does not conflict with the license used for the changes. 4) The contact information as required under 2)a) and 2)d) must not be removed or changed, except that the person himself can make corrections. III) If you distribute a modified version of Vim, you are encouraged to use the Vim license for your changes and make them available to the maintainer, including the source code. The preferred way to do this is by e-mail or by uploading the files to a server and e-mailing the URL. If the number of changes is small (e.g., a modified Makefile) e-mailing a context diff will do. The e-mail address to be used is <maintainer@vim.org> IV) It is not allowed to remove this license from the distribution of the Vim sources, parts of it or from a modified version. You may use this license for previous Vim releases instead of the license that they came with, at your option. === end of license === Note: - If you are happy with Vim, please express that by reading the rest of this file and consider helping needy children in Uganda. - If you want to support further Vim development consider becoming a |sponsor|. The money goes to Uganda anyway. - According to Richard Stallman the Vim license is GNU GPL compatible. A few minor changes have been made since he checked it, but that should not make a difference. - If you link Vim with a library that goes under the GNU GPL, this limits further distribution to the GNU GPL. Also when you didn't actually change anything in Vim. - Once a change is included that goes under the GNU GPL, this forces all further changes to also be made under the GNU GPL or a compatible license. - If you distribute a modified version of Vim, you can include your name and contact information with the "--with-modified-by" configure argument or the MODIFIED_BY define. ============================================================================== Kibaale Children's Centre *kcc* *Kibaale* *charity* Kibaale Children's Centre (KCC) is located in Kibaale, a small town in the south of Uganda, near Tanzania, in East Africa. The area is known as Rakai District. The population is mostly farmers. Although people are poor, there is enough food. But this district is suffering from AIDS more than any other part of the world. Some say that it started there. Estimations are that 10 to 30% of the Ugandans are infected with HIV. Because parents die, there are many orphans. In this district about 60,000 children have lost one or both parents, out of a population of 350,000. And this is still continuing. The children need a lot of help. The KCC is working hard to provide the needy with food, medical care and education. Food and medical care to keep them healthy now, and education so that they can take care of themselves in the future. KCC works on a Christian base, but help is given to children of any religion. The key to solving the problems in this area is education. This has been neglected in the past years with president Idi Amin and the following civil wars. Now that the government is stable again, the children and parents have to learn how to take care of themselves and how to avoid infections. There is also help for people who are ill and hungry, but the primary goal is to prevent people from getting ill and to teach them how to grow healthy food. Most of the orphans are living in an extended family. An uncle or older sister is taking care of them. Because these families are big and the income (if any) is low, a child is lucky if it gets healthy food. Clothes, medical care and schooling is beyond its reach. To help these needy children, a sponsorship program was put into place. A child can be financially adopted. For a few dollars a month KCC sees to it that the child gets indispensable items, is healthy, goes to school and KCC takes care of anything else that needs to be done for the child and the family that supports it. Besides helping the child directly, the environment where the child grows up needs to be improved. KCC helps schools to improve their teaching methods. There is a demonstration school at the centre and teacher trainings are given. Health workers are being trained, hygiene education is carried out and households are stimulated to build a proper latrine. I helped setting up a production site for cement slabs. These are used to build a good latrine. They are sold below cost price. There is a small clinic at the project, which provides children and their family with medical help. When needed, transport to a hospital is offered. Immunization programs are carried out and help is provided when an epidemic is breaking out (measles and cholera have been a problem). *donate* Summer 1994 to summer 1995 I spent a whole year at the centre, working as a volunteer. I have helped to expand the centre and worked in the area of water and sanitation. I learned that the help that the KCC provides really helps. When I came back to Holland, I wanted to continue supporting KCC. To do this I'm raising funds and organizing the sponsorship program. Please consider one of these possibilities: 1. Sponsor a child in primary school: 17 euro a month (or more). 2. Sponsor a child in secondary school: 25 euro a month (or more). 3. Sponsor the clinic: Any amount a month or quarter 4. A one-time donation Compared with other organizations that do child sponsorship the amounts are very low. This is because the money goes directly to the centre. Less than 5% is used for administration. This is possible because this is a small organization that works with volunteers. If you would like to sponsor a child, you should have the intention to do this for at least one year. How do you know that the money will be spent right? First of all you have my personal guarantee as the author of Vim. I trust the people that are working at the centre, I know them personally. Furthermore, the centre has been co-sponsored and inspected by World Vision, Save the Children Fund and is now under the supervision of Pacific Academy Outreach Society. The centre is visited about once a year to check the progress (at our own cost). I have visited the centre myself many times, starting in 1993. The visit reports are on the ICCF web site. If you have any further questions, send me e-mail: <Bram@vim.org>. The address of the centre is: Kibaale Children's Centre p.o. box 1658 Masaka, Uganda, East Africa Sending money: *iccf-donations* Check the ICCF web site for the latest information! See |iccf| for the URL. USA: The methods mentioned below can be used. Sending a check to the Nehemiah Group Outreach Society (NGOS) is no longer possible, unfortunately. We are looking for another way to get you an IRS tax receipt. For sponsoring a child contact KCF in Canada (see below). US checks can be sent to them to lower banking costs. Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada. They take care of the Canadian sponsors for the children in Kibaale. KCF forwards 100% of the money to the project in Uganda. You can send them a one time donation directly. Please send me a note so that I know what has been donated because of Vim. Ask KCF for information about sponsorship. Kibaale Children's Fund c/o Pacific Academy 10238-168 Street Surrey, B.C. V4N 1Z4 Canada Phone: 604-581-5353 If you make a donation to Kibaale Children's Fund (KCF) you will receive a tax receipt which can be submitted with your tax return. Holland: Transfer to the account of "Stichting ICCF Holland" in Lisse. This will allow for tax deduction if you live in Holland. Postbank, nr. 4548774 IBAN: NL95 INGB 0004 5487 74 Germany: It is possible to make donations that allow for a tax return. Check the ICCF web site for the latest information: http://iccf-holland.org/germany.html World: Use a postal money order. That should be possible from any country, mostly from the post office. Use this name (which is in my passport): "Abraham Moolenaar". Use Euro for the currency if possible. Europe: Use a bank transfer if possible. Your bank should have a form that you can use for this. See "Others" below for the swift code and IBAN number. Any other method should work. Ask for information about sponsorship. Credit Card: You can use PayPal to send money with a Credit card. This is the most widely used Internet based payment system. It's really simple to use. Use this link to find more info: https://www.paypal.com/en_US/mrb/pal=XAC62PML3GF8Q The e-mail address for sending the money to is: Bram@iccf-holland.org For amounts above 400 Euro ($500) sending a check is preferred. Others: Transfer to one of these accounts if possible: Postbank, account 4548774 Swift code: INGB NL 2A IBAN: NL95 INGB 0004 5487 74 under the name "stichting ICCF Holland", Lisse If that doesn't work: Rabobank Lisse, account 3765.05.117 Swift code: RABO NL 2U under the name "Bram Moolenaar", Lisse Otherwise, send a check in euro or US dollars to the address below. Minimal amount: $70 (my bank does not accept smaller amounts for foreign check, sorry) Address to send checks to: Bram Moolenaar Finsterruetihof 1 8134 Adliswil Switzerland This address is expected to be valid for a long time. vim:tw=78:ts=8:ft=help:norl: PK�������!�[K��K����vim80/doc/if_cscop.txtnu�[��������*if_cscop.txt* For Vim version 8.0. Last change: 2018 Jan 21 VIM REFERENCE MANUAL by Andy Kahn *cscope* *Cscope* This document explains how to use Vim's cscope interface. Cscope is a tool like ctags, but think of it as ctags on steroids since it does a lot more than what ctags provides. In Vim, jumping to a result from a cscope query is just like jumping to any tag; it is saved on the tag stack so that with the right keyboard mappings, you can jump back and forth between functions as you normally would with |tags|. 1. Cscope introduction |cscope-intro| 2. Cscope related commands |cscope-commands| 3. Cscope options |cscope-options| 4. How to use cscope in Vim |cscope-howtouse| 5. Limitations |cscope-limitations| 6. Suggested usage |cscope-suggestions| 7. Availability & Information |cscope-info| This is currently for Unix and Win32 only. {Vi does not have any of these commands} ============================================================================== 1. Cscope introduction *cscope-intro* The following text is taken from a version of the cscope man page: ----- Cscope is an interactive screen-oriented tool that helps you: Learn how a C program works without endless flipping through a thick listing. Locate the section of code to change to fix a bug without having to learn the entire program. Examine the effect of a proposed change such as adding a value to an enum variable. Verify that a change has been made in all source files such as adding an argument to an existing function. Rename a global variable in all source files. Change a constant to a preprocessor symbol in selected lines of files. It is designed to answer questions like: Where is this symbol used? Where is it defined? Where did this variable get its value? What is this global symbol's definition? Where is this function in the source files? What functions call this function? What functions are called by this function? Where does the message "out of space" come from? Where is this source file in the directory structure? What files include this header file? Cscope answers these questions from a symbol database that it builds the first time it is used on the source files. On a subsequent call, cscope rebuilds the database only if a source file has changed or the list of source files is different. When the database is rebuilt the data for the unchanged files is copied from the old database, which makes rebuilding much faster than the initial build. ----- When cscope is normally invoked, you will get a full-screen selection screen allowing you to make a query for one of the above questions. However, once a match is found to your query and you have entered your text editor to edit the source file containing match, you cannot simply jump from tag to tag as you normally would with vi's Ctrl-] or :tag command. Vim's cscope interface is done by invoking cscope with its line-oriented interface, and then parsing the output returned from a query. The end result is that cscope query results become just like regular tags, so you can jump to them just like you do with normal tags (Ctrl-] or :tag) and then go back by popping off the tagstack with Ctrl-T. (Please note however, that you don't actually jump to a cscope tag simply by doing Ctrl-] or :tag without remapping these commands or setting an option. See the remaining sections on how the cscope interface works and for suggested use.) ============================================================================== 2. Cscope related commands *cscope-commands* *:cscope* *:cs* *:scs* *:scscope* *E259* *E262* *E561* *E560* All cscope commands are accessed through suboptions to the cscope commands. `:cscope` or `:cs` is the main command `:scscope` or `:scs` does the same and splits the window `:lcscope` or `:lcs` uses the location list, see |:lcscope| The available subcommands are: *E563* *E564* *E566* *E568* *E622* *E623* *E625* *E626* *E609* add : Add a new cscope database/connection. USAGE :cs add {file|dir} [pre-path] [flags] [pre-path] is the pathname used with the -P command to cscope. [flags] are any additional flags you want to pass to cscope. EXAMPLES > :cscope add /usr/local/cdb/cscope.out :cscope add /projects/vim/cscope.out /usr/local/vim :cscope add cscope.out /usr/local/vim -C < *cscope-find* *cs-find* *E567* find : Query cscope. All cscope query options are available except option #5 ("Change this grep pattern"). USAGE :cs find {querytype} {name} {querytype} corresponds to the actual cscope line interface numbers as well as default nvi commands: 0 or s: Find this C symbol 1 or g: Find this definition 2 or d: Find functions called by this function 3 or c: Find functions calling this function 4 or t: Find this text string 6 or e: Find this egrep pattern 7 or f: Find this file 8 or i: Find files #including this file 9 or a: Find places where this symbol is assigned a value For all types, except 4 and 6, leading white space for {name} is removed. For 4 and 6 there is exactly one space between {querytype} and {name}. Further white space is included in {name}. EXAMPLES > :cscope find c vim_free :cscope find 3 vim_free < These two examples perform the same query: functions calling "vim_free". > :cscope find t initOnce :cscope find t initOnce < The first one searches for the text "initOnce", the second one for " initOnce". > :cscope find 0 DEFAULT_TERM < Executing this example on the source code for Vim 5.1 produces the following output: Cscope tag: DEFAULT_TERM # line filename / context / line 1 1009 vim-5.1-gtk/src/term.c <<GLOBAL>> #define DEFAULT_TERM (char_u *)"amiga" 2 1013 vim-5.1-gtk/src/term.c <<GLOBAL>> #define DEFAULT_TERM (char_u *)"win32" 3 1017 vim-5.1-gtk/src/term.c <<GLOBAL>> #define DEFAULT_TERM (char_u *)"pcterm" 4 1021 vim-5.1-gtk/src/term.c <<GLOBAL>> #define DEFAULT_TERM (char_u *)"ansi" 5 1025 vim-5.1-gtk/src/term.c <<GLOBAL>> #define DEFAULT_TERM (char_u *)"vt52" 6 1029 vim-5.1-gtk/src/term.c <<GLOBAL>> #define DEFAULT_TERM (char_u *)"os2ansi" 7 1033 vim-5.1-gtk/src/term.c <<GLOBAL>> #define DEFAULT_TERM (char_u *)"ansi" 8 1037 vim-5.1-gtk/src/term.c <<GLOBAL>> # undef DEFAULT_TERM 9 1038 vim-5.1-gtk/src/term.c <<GLOBAL>> #define DEFAULT_TERM (char_u *)"beos-ansi" 10 1042 vim-5.1-gtk/src/term.c <<GLOBAL>> #define DEFAULT_TERM (char_u *)"mac-ansi" 11 1335 vim-5.1-gtk/src/term.c <<set_termname>> term = DEFAULT_TERM; 12 1459 vim-5.1-gtk/src/term.c <<set_termname>> if (STRCMP(term, DEFAULT_TERM)) 13 1826 vim-5.1-gtk/src/term.c <<termcapinit>> term = DEFAULT_TERM; 14 1833 vim-5.1-gtk/src/term.c <<termcapinit>> term = DEFAULT_TERM; 15 3635 vim-5.1-gtk/src/term.c <<update_tcap>> p = find_builtin_term(DEFAULT_TERM); Enter nr of choice (<CR> to abort): The output shows several pieces of information: 1. The tag number (there are 15 in this example). 2. The line number where the tag occurs. 3. The filename where the tag occurs. 4. The context of the tag (e.g., global, or the function name). 5. The line from the file itself. help : Show a brief synopsis. USAGE :cs help *E261* kill : Kill a cscope connection (or kill all cscope connections). USAGE :cs kill {num|partial_name} To kill a cscope connection, the connection number or a partial name must be specified. The partial name is simply any part of the pathname of the cscope database. Kill a cscope connection using the partial name with caution! If the specified connection number is -1, then _ALL_ cscope connections will be killed. reset : Reinit all cscope connections. USAGE :cs reset show : Show cscope connections. USAGE :cs show *:lcscope* *:lcs* This command is same as the ":cscope" command, except when the 'cscopequickfix' option is set, the location list for the current window is used instead of the quickfix list to show the cscope results. *:cstag* *E257* *E562* If you use cscope as well as ctags, |:cstag| allows you to search one or the other before making a jump. For example, you can choose to first search your cscope database(s) for a match, and if one is not found, then your tags file(s) will be searched. The order in which this happens is determined by the value of |csto|. See |cscope-options| for more details. |:cstag| performs the equivalent of ":cs find g" on the identifier when searching through the cscope database(s). |:cstag| performs the equivalent of |:tjump| on the identifier when searching through your tags file(s). ============================================================================== 3. Cscope options *cscope-options* Use the |:set| command to set all cscope options. Ideally, you would do this in one of your startup files (e.g., .vimrc). Some cscope related variables are only valid within |.vimrc|. Setting them after vim has started will have no effect! *cscopeprg* *csprg* 'cscopeprg' specifies the command to execute cscope. The default is "cscope". For example: > :set csprg=/usr/local/bin/cscope < *cscopequickfix* *csqf* *E469* {not available when compiled without the |+quickfix| feature} 'cscopequickfix' specifies whether to use quickfix window to show cscope results. This is a list of comma-separated values. Each item consists of |cscope-find| command (s, g, d, c, t, e, f, i or a) and flag (+, - or 0). '+' indicates that results must be appended to quickfix window, '-' implies previous results clearance, '0' or command absence - don't use quickfix. Search is performed from start until first command occurrence. The default value is "" (don't use quickfix anyway). The following value seems to be useful: > :set cscopequickfix=s-,c-,d-,i-,t-,e-,a- < *cscopetag* *cst* If 'cscopetag' is set, the commands ":tag" and CTRL-] as well as "vim -t" will always use |:cstag| instead of the default :tag behavior. Effectively, by setting 'cst', you will always search your cscope databases as well as your tag files. The default is off. Examples: > :set cst :set nocst < *cscoperelative* *csre* If 'cscoperelative' is set, then in absence of a prefix given to cscope (prefix is the argument of -P option of cscope), basename of cscope.out location (usually the project root directory) will be used as the prefix to construct an absolute path. The default is off. Note: This option is only effective when cscope (cscopeprg) is initialized without a prefix path (-P). Examples: > :set csre :set nocsre < *cscopetagorder* *csto* The value of 'csto' determines the order in which |:cstag| performs a search. If 'csto' is set to zero, cscope database(s) are searched first, followed by tag file(s) if cscope did not return any matches. If 'csto' is set to one, tag file(s) are searched before cscope database(s). The default is zero. Examples: > :set csto=0 :set csto=1 < *cscopeverbose* *csverb* If 'cscopeverbose' is not set (the default), messages will not be printed indicating success or failure when adding a cscope database. Ideally, you should reset this option in your |.vimrc| before adding any cscope databases, and after adding them, set it. From then on, when you add more databases within Vim, you will get a (hopefully) useful message should the database fail to be added. Examples: > :set csverb :set nocsverb < *cscopepathcomp* *cspc* The value of 'cspc' determines how many components of a file's path to display. With the default value of zero the entire path will be displayed. The value one will display only the filename with no path. Other values display that many components. For example: > :set cspc=3 will display the last 3 components of the file's path, including the file name itself. ============================================================================== 4. How to use cscope in Vim *cscope-howtouse* The first thing you need to do is to build a cscope database for your source files. For the most basic case, simply do "cscope -b". Please refer to the cscope man page for more details. Assuming you have a cscope database, you need to "add" the database to Vim. This establishes a cscope "connection" and makes it available for Vim to use. You can do this in your .vimrc file, or you can do it manually after starting vim. For example, to add the cscope database "cscope.out", you would do: :cs add cscope.out You can double-check the result of this by executing ":cs show". This will produce output which looks like this: # pid database name prepend path 0 28806 cscope.out <none> Note: Because of the Microsoft RTL limitations, Win32 version shows 0 instead of the real pid. Once a cscope connection is established, you can make queries to cscope and the results will be printed to you. Queries are made using the command ":cs find". For example: :cs find g ALIGN_SIZE This can get a little cumbersome since one ends up doing a significant amount of typing. Fortunately, there are ways around this by mapping shortcut keys. See |cscope-suggestions| for suggested usage. If the results return only one match, you will automatically be taken to it. If there is more than one match, you will be given a selection screen to pick the match you want to go to. After you have jumped to the new location, simply hit Ctrl-T to get back to the previous one. ============================================================================== 5. Limitations *cscope-limitations* Cscope support for Vim is only available on systems that support these four system calls: fork(), pipe(), execl(), waitpid(). This means it is mostly limited to Unix systems. Additionally Cscope support works for Win32. For more information and a cscope version for Win32 see: http://iamphet.nm.ru/cscope/index.html The DJGPP-built version from http://cscope.sourceforge.net is known to not work with Vim. Hard-coded limitation: doing a |:tjump| when |:cstag| searches the tag files is not configurable (e.g., you can't do a tselect instead). ============================================================================== 6. Suggested usage *cscope-suggestions* Put these entries in your .vimrc (adjust the pathname accordingly to your setup): > if has("cscope") set csprg=/usr/local/bin/cscope set csto=0 set cst set nocsverb " add any database in current directory if filereadable("cscope.out") cs add cscope.out " else add database pointed to by environment elseif $CSCOPE_DB != "" cs add $CSCOPE_DB endif set csverb endif By setting 'cscopetag', we have effectively replaced all instances of the :tag command with :cstag. This includes :tag, Ctrl-], and "vim -t". In doing this, the regular tag command not only searches your ctags generated tag files, but your cscope databases as well. Some users may want to keep the regular tag behavior and have a different shortcut to access :cstag. For example, one could map Ctrl-_ (underscore) to :cstag with the following command: > map <C-_> :cstag <C-R>=expand("<cword>")<CR><CR> A couple of very commonly used cscope queries (using ":cs find") is to find all functions calling a certain function and to find all occurrences of a particular C symbol. To do this, you can use these mappings as an example: > map g<C-]> :cs find 3 <C-R>=expand("<cword>")<CR><CR> map g<C-\> :cs find 0 <C-R>=expand("<cword>")<CR><CR> These mappings for Ctrl-] (right bracket) and Ctrl-\ (backslash) allow you to place your cursor over the function name or C symbol and quickly query cscope for any matches. Or you may use the following scheme, inspired by Vim/Cscope tutorial from Cscope Home Page (http://cscope.sourceforge.net/): > nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR> nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR> nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR> nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> nmap <C-_>a :cs find a <C-R>=expand("<cword>")<CR><CR> " Using 'CTRL-spacebar' then a search type makes the vim window " split horizontally, with search result displayed in " the new window. nmap <C-Space>s :scs find s <C-R>=expand("<cword>")<CR><CR> nmap <C-Space>g :scs find g <C-R>=expand("<cword>")<CR><CR> nmap <C-Space>c :scs find c <C-R>=expand("<cword>")<CR><CR> nmap <C-Space>t :scs find t <C-R>=expand("<cword>")<CR><CR> nmap <C-Space>e :scs find e <C-R>=expand("<cword>")<CR><CR> nmap <C-Space>f :scs find f <C-R>=expand("<cfile>")<CR><CR> nmap <C-Space>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR> nmap <C-Space>d :scs find d <C-R>=expand("<cword>")<CR><CR> nmap <C-Space>a :scs find a <C-R>=expand("<cword>")<CR><CR> " Hitting CTRL-space *twice* before the search type does a vertical " split instead of a horizontal one nmap <C-Space><C-Space>s \:vert scs find s <C-R>=expand("<cword>")<CR><CR> nmap <C-Space><C-Space>g \:vert scs find g <C-R>=expand("<cword>")<CR><CR> nmap <C-Space><C-Space>c \:vert scs find c <C-R>=expand("<cword>")<CR><CR> nmap <C-Space><C-Space>t \:vert scs find t <C-R>=expand("<cword>")<CR><CR> nmap <C-Space><C-Space>e \:vert scs find e <C-R>=expand("<cword>")<CR><CR> nmap <C-Space><C-Space>i \:vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR> nmap <C-Space><C-Space>d \:vert scs find d <C-R>=expand("<cword>")<CR><CR> nmap <C-Space><C-Space>a \:vert scs find a <C-R>=expand("<cword>")<CR><CR> ============================================================================== 7. Cscope availability and information *cscope-info* If you do not already have cscope (it did not come with your compiler license or OS distribution), then you can download it for free from: http://cscope.sourceforge.net/ This is released by SCO under the BSD license. In Solaris 2.x, if you have the C compiler license, you will also have cscope. Both are usually located under /opt/SUNWspro/bin There is source to an older version of a cscope clone (called "cs") available on the net. Due to various reasons, this is not supported with Vim. The cscope interface/support for Vim was originally written by Andy Kahn <ackahn@netapp.com>. The original structure (as well as a tiny bit of code) was adapted from the cscope interface in nvi. *cscope-win32* For a cscope version for Win32 see (seems abandoned): https://code.google.com/archive/p/cscope-win32/ Win32 support was added by Sergey Khorev <sergey.khorev@gmail.com>. Contact him if you have Win32-specific issues. vim:tw=78:ts=8:ft=help:norl: PK�������!�se �� ����vim80/doc/russian.txtnu�[��������*russian.txt* For Vim version 8.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Vassily Ragosin Russian language localization and support in Vim *russian* *Russian* 1. Introduction |russian-intro| 2. Russian keymaps |russian-keymap| 3. Localization |russian-l18n| 4. Known issues |russian-issues| =============================================================================== 1. Introduction *russian-intro* Russian language is supported perfectly well in Vim. You can type and view Russian text just as any other, without the need to tweak the settings. =============================================================================== 2. Russian keymaps *russian-keymap* To switch between languages you can use your system native keyboard switcher, or use one of the Russian keymaps, included in the Vim distribution. For example, > :set keymap=russian-jcukenwin < In the latter case, you can switch between languages even if you do not have system Russian keyboard or independently from a system-wide keyboard settings. See 'keymap'. You can also map a key to switch between keyboards, if you choose the latter option. See |:map|. For your convenience, to avoid switching between keyboards, when you need to enter Normal mode command, you can also set 'langmap' option: > :set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ;ABCDEFGHIJKLMNOPQRSTUVWXYZ, фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz This is in utf-8, you cannot read this if your 'encoding' is not utf-8. You have to type this command in one line, it is wrapped for the sake of readability. =============================================================================== 3. Localization *russian-l18n* If you wish to use messages, help files, menus and other items translated to Russian, you will need to install the RuVim Language Pack, available in different codepages from http://www.sourceforge.net/projects/ruvim/ Make sure that your Vim is at least 6.2.506 and use ruvim 0.5 or later for automatic installs. Vim also needs to be compiled with |+gettext| feature for user interface items translations to work. After downloading an archive from RuVim project, unpack it into your $VIMRUNTIME directory. We recommend using UTF-8 archive, if your version of Vim is compiled with |+multi_byte| feature enabled. In order to use the Russian documentation, make sure you have set the 'helplang' option to "ru". =============================================================================== 4. Known issues *russian-issues* -- If you are using Russian message translations in Win32 console, then you may see the output produced by "vim --help", "vim --version" commands and Win32 console window title appearing in a wrong codepage. This problem is related to a bug in GNU gettext library and may be fixed in the future releases of gettext. =============================================================================== vim:tw=78:ts=8:ft=help:norl: PK�������!�Mn)��)����vim80/doc/pi_gzip.txtnu�[��������*pi_gzip.txt* For Vim version 8.0. Last change: 2016 Nov 06 VIM REFERENCE MANUAL by Bram Moolenaar Editing compressed files with Vim *gzip* *bzip2* *compress* 1. Autocommands |gzip-autocmd| The functionality mentioned here is a |standard-plugin|. This plugin is only available if 'compatible' is not set. You can avoid loading this plugin by setting the "loaded_gzip" variable: > :let loaded_gzip = 1 {Vi does not have any of this} ============================================================================== 1. Autocommands *gzip-autocmd* The plugin installs autocommands to intercept reading and writing of files with these extensions: extension compression ~ *.Z compress (Lempel-Ziv) *.gz gzip *.bz2 bzip2 *.lzma lzma *.xz xz *.lz lzip *.zst zstd That's actually the only thing you need to know. There are no options. After decompressing a file, the filetype will be detected again. This will make a file like "foo.c.gz" get the "c" filetype. If you have 'patchmode' set, it will be appended after the extension for compression. Thus editing the patchmode file will not give you the automatic decompression. You have to rename the file if you want this. ============================================================================== vim:tw=78:ts=8:ft=help:norl: PK�������!�X � ���vim80/doc/quickfix.txtnu�[��������*quickfix.txt* For Vim version 8.0. Last change: 2018 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar This subject is introduced in section |30.1| of the user manual. 1. Using QuickFix commands |quickfix| 2. The error window |quickfix-window| 3. Using more than one list of errors |quickfix-error-lists| 4. Using :make |:make_makeprg| 5. Using :grep |grep| 6. Selecting a compiler |compiler-select| 7. The error format |error-file-format| 8. The directory stack |quickfix-directory-stack| 9. Specific error file formats |errorformats| {Vi does not have any of these commands} The quickfix commands are not available when the |+quickfix| feature was disabled at compile time. ============================================================================= 1. Using QuickFix commands *quickfix* *Quickfix* *E42* Vim has a special mode to speedup the edit-compile-edit cycle. This is inspired by the quickfix option of the Manx's Aztec C compiler on the Amiga. The idea is to save the error messages from the compiler in a file and use Vim to jump to the errors one by one. You can examine each problem and fix it, without having to remember all the error messages. In Vim the quickfix commands are used more generally to find a list of positions in files. For example, |:vimgrep| finds pattern matches. You can use the positions in a script with the |getqflist()| function. Thus you can do a lot more than the edit/compile/fix cycle! If you have the error messages in a file you can start Vim with: > vim -q filename From inside Vim an easy way to run a command and handle the output is with the |:make| command (see below). The 'errorformat' option should be set to match the error messages from your compiler (see |errorformat| below). *quickfix-ID* Each quickfix list has a unique identifier called the quickfix ID and this number will not change within a Vim session. The getqflist() function can be used to get the identifier assigned to a list. There is also a quickfix list number which may change whenever more than ten lists are added to a quickfix stack. *location-list* *E776* A location list is a window-local quickfix list. You get one after commands like `:lvimgrep`, `:lgrep`, `:lhelpgrep`, `:lmake`, etc., which create a location list instead of a quickfix list as the corresponding `:vimgrep`, `:grep`, `:helpgrep`, `:make` do. A location list is associated with a window and each window can have a separate location list. A location list can be associated with only one window. The location list is independent of the quickfix list. When a window with a location list is split, the new window gets a copy of the location list. When there are no longer any references to a location list, the location list is destroyed. *quickfix-changedtick* Every quickfix and location list has a read-only changedtick variable that tracks the total number of changes made to the list. Every time the quickfix list is modified, this count is incremented. This can be used to perform an action only when the list has changed. The getqflist() and getloclist() functions can be used to query the current value of changedtick. You cannot change the changedtick variable. The following quickfix commands can be used. The location list commands are similar to the quickfix commands, replacing the 'c' prefix in the quickfix command with 'l'. *E924* If the current window was closed by an |autocommand| while processing a location list command, it will be aborted. *E925* *E926* If the current quickfix or location list was changed by an |autocommand| while processing a quickfix or location list command, it will be aborted. *:cc* :cc[!] [nr] Display error [nr]. If [nr] is omitted, the same error is displayed again. Without [!] this doesn't work when jumping to another buffer, the current buffer has been changed, there is the only window for the buffer and both 'hidden' and 'autowrite' are off. When jumping to another buffer with [!] any changes to the current buffer are lost, unless 'hidden' is set or there is another window for this buffer. The 'switchbuf' settings are respected when jumping to a buffer. *:ll* :ll[!] [nr] Same as ":cc", except the location list for the current window is used instead of the quickfix list. *:cn* *:cnext* *E553* :[count]cn[ext][!] Display the [count] next error in the list that includes a file name. If there are no file names at all, go to the [count] next error. See |:cc| for [!] and 'switchbuf'. *:lne* *:lnext* :[count]lne[xt][!] Same as ":cnext", except the location list for the current window is used instead of the quickfix list. :[count]cN[ext][!] *:cp* *:cprevious* *:cN* *:cNext* :[count]cp[revious][!] Display the [count] previous error in the list that includes a file name. If there are no file names at all, go to the [count] previous error. See |:cc| for [!] and 'switchbuf'. :[count]lN[ext][!] *:lp* *:lprevious* *:lN* *:lNext* :[count]lp[revious][!] Same as ":cNext" and ":cprevious", except the location list for the current window is used instead of the quickfix list. *:cnf* *:cnfile* :[count]cnf[ile][!] Display the first error in the [count] next file in the list that includes a file name. If there are no file names at all or if there is no next file, go to the [count] next error. See |:cc| for [!] and 'switchbuf'. *:lnf* *:lnfile* :[count]lnf[ile][!] Same as ":cnfile", except the location list for the current window is used instead of the quickfix list. :[count]cNf[ile][!] *:cpf* *:cpfile* *:cNf* *:cNfile* :[count]cpf[ile][!] Display the last error in the [count] previous file in the list that includes a file name. If there are no file names at all or if there is no next file, go to the [count] previous error. See |:cc| for [!] and 'switchbuf'. :[count]lNf[ile][!] *:lpf* *:lpfile* *:lNf* *:lNfile* :[count]lpf[ile][!] Same as ":cNfile" and ":cpfile", except the location list for the current window is used instead of the quickfix list. *:crewind* *:cr* :cr[ewind][!] [nr] Display error [nr]. If [nr] is omitted, the FIRST error is displayed. See |:cc|. *:lrewind* *:lr* :lr[ewind][!] [nr] Same as ":crewind", except the location list for the current window is used instead of the quickfix list. *:cfirst* *:cfir* :cfir[st][!] [nr] Same as ":crewind". *:lfirst* *:lfir* :lfir[st][!] [nr] Same as ":lrewind". *:clast* *:cla* :cla[st][!] [nr] Display error [nr]. If [nr] is omitted, the LAST error is displayed. See |:cc|. *:llast* *:lla* :lla[st][!] [nr] Same as ":clast", except the location list for the current window is used instead of the quickfix list. *:cq* *:cquit* :cq[uit][!] Quit Vim with an error code, so that the compiler will not compile the same file again. WARNING: All changes in files are lost! Also when the [!] is not used. It works like ":qall!" |:qall|, except that Vim returns a non-zero exit code. *:cf* *:cfile* :cf[ile][!] [errorfile] Read the error file and jump to the first error. This is done automatically when Vim is started with the -q option. You can use this command when you keep Vim running while compiling. If you give the name of the errorfile, the 'errorfile' option will be set to [errorfile]. See |:cc| for [!]. If the encoding of the error file differs from the 'encoding' option, you can use the 'makeencoding' option to specify the encoding. *:lf* *:lfile* :lf[ile][!] [errorfile] Same as ":cfile", except the location list for the current window is used instead of the quickfix list. You can not use the -q command-line option to set the location list. :cg[etfile] [errorfile] *:cg* *:cgetfile* Read the error file. Just like ":cfile" but don't jump to the first error. If the encoding of the error file differs from the 'encoding' option, you can use the 'makeencoding' option to specify the encoding. :lg[etfile] [errorfile] *:lg* *:lgetfile* Same as ":cgetfile", except the location list for the current window is used instead of the quickfix list. *:caddf* *:caddfile* :caddf[ile] [errorfile] Read the error file and add the errors from the errorfile to the current quickfix list. If a quickfix list is not present, then a new list is created. If the encoding of the error file differs from the 'encoding' option, you can use the 'makeencoding' option to specify the encoding. *:laddf* *:laddfile* :laddf[ile] [errorfile] Same as ":caddfile", except the location list for the current window is used instead of the quickfix list. *:cb* *:cbuffer* *E681* :cb[uffer][!] [bufnr] Read the error list from the current buffer. When [bufnr] is given it must be the number of a loaded buffer. That buffer will then be used instead of the current buffer. A range can be specified for the lines to be used. Otherwise all lines in the buffer are used. See |:cc| for [!]. *:lb* *:lbuffer* :lb[uffer][!] [bufnr] Same as ":cbuffer", except the location list for the current window is used instead of the quickfix list. *:cgetb* *:cgetbuffer* :cgetb[uffer] [bufnr] Read the error list from the current buffer. Just like ":cbuffer" but don't jump to the first error. *:lgetb* *:lgetbuffer* :lgetb[uffer] [bufnr] Same as ":cgetbuffer", except the location list for the current window is used instead of the quickfix list. *:cad* *:caddbuffer* :cad[dbuffer] [bufnr] Read the error list from the current buffer and add the errors to the current quickfix list. If a quickfix list is not present, then a new list is created. Otherwise, same as ":cbuffer". *:laddb* *:laddbuffer* :laddb[uffer] [bufnr] Same as ":caddbuffer", except the location list for the current window is used instead of the quickfix list. *:cex* *:cexpr* *E777* :cex[pr][!] {expr} Create a quickfix list using the result of {expr} and jump to the first error. If {expr} is a String, then each new-line terminated line in the String is processed using the global value of 'errorformat' and the result is added to the quickfix list. If {expr} is a List, then each String item in the list is processed and added to the quickfix list. Non String items in the List are ignored. See |:cc| for [!]. Examples: > :cexpr system('grep -n xyz *') :cexpr getline(1, '$') < *:lex* *:lexpr* :lex[pr][!] {expr} Same as |:cexpr|, except the location list for the current window is used instead of the quickfix list. *:cgete* *:cgetexpr* :cgete[xpr] {expr} Create a quickfix list using the result of {expr}. Just like |:cexpr|, but don't jump to the first error. *:lgete* *:lgetexpr* :lgete[xpr] {expr} Same as |:cgetexpr|, except the location list for the current window is used instead of the quickfix list. *:cadde* *:caddexpr* :cadde[xpr] {expr} Evaluate {expr} and add the resulting lines to the current quickfix list. If a quickfix list is not present, then a new list is created. The current cursor position will not be changed. See |:cexpr| for more information. Example: > :g/mypattern/caddexpr expand("%") . ":" . line(".") . ":" . getline(".") < *:lad* *:laddexpr* :lad[dexpr] {expr} Same as ":caddexpr", except the location list for the current window is used instead of the quickfix list. *:cl* *:clist* :cl[ist] [from] [, [to]] List all errors that are valid |quickfix-valid|. If numbers [from] and/or [to] are given, the respective range of errors is listed. A negative number counts from the last error backwards, -1 being the last error. The 'switchbuf' settings are respected when jumping to a buffer. :cl[ist] +{count} List the current and next {count} valid errors. This is similar to ":clist from from+count", where "from" is the current error position. :cl[ist]! [from] [, [to]] List all errors. :cl[ist]! +{count} List the current and next {count} error lines. This is useful to see unrecognized lines after the current one. For example, if ":clist" shows: 8384 testje.java:252: error: cannot find symbol ~ Then using ":cl! +3" shows the reason: 8384 testje.java:252: error: cannot find symbol ~ 8385: ZexitCode = Fmainx(); ~ 8386: ^ ~ 8387: symbol: method Fmainx() ~ :lli[st] [from] [, [to]] *:lli* *:llist* Same as ":clist", except the location list for the current window is used instead of the quickfix list. :lli[st]! [from] [, [to]] List all the entries in the location list for the current window. If you insert or delete lines, mostly the correct error location is still found because hidden marks are used. Sometimes, when the mark has been deleted for some reason, the message "line changed" is shown to warn you that the error location may not be correct. If you quit Vim and start again the marks are lost and the error locations may not be correct anymore. Two autocommands are available for running commands before and after a quickfix command (':make', ':grep' and so on) is executed. See |QuickFixCmdPre| and |QuickFixCmdPost| for details. *QuickFixCmdPost-example* When 'encoding' differs from the locale, the error messages may have a different encoding from what Vim is using. To convert the messages you can use this code: > function QfMakeConv() let qflist = getqflist() for i in qflist let i.text = iconv(i.text, "cp936", "utf-8") endfor call setqflist(qflist) endfunction au QuickfixCmdPost make call QfMakeConv() Another option is using 'makeencoding'. *quickfix-title* Every quickfix and location list has a title. By default the title is set to the command that created the list. The |getqflist()| and |getloclist()| functions can be used to get the title of a quickfix and a location list respectively. The |setqflist()| and |setloclist()| functions can be used to modify the title of a quickfix and location list respectively. Examples: > call setqflist([], 'a', {'title' : 'Cmd output'}) echo getqflist({'title' : 1}) call setloclist(3, [], 'a', {'title' : 'Cmd output'}) echo getloclist(3, {'title' : 1}) < *quickfix-size* You can get the number of entries (size) in a quickfix and a location list using the |getqflist()| and |getloclist()| functions respectively. Examples: > echo getqflist({'size' : 1}) echo getloclist(5, {'size' : 1}) < *quickfix-context* Any Vim type can be associated as a context with a quickfix or location list. The |setqflist()| and the |setloclist()| functions can be used to associate a context with a quickfix and a location list respectively. The |getqflist()| and the |getloclist()| functions can be used to retrieve the context of a quickfix and a location list respectively. This is useful for a Vim plugin dealing with multiple quickfix/location lists. Examples: > let somectx = {'name' : 'Vim', 'type' : 'Editor'} call setqflist([], 'a', {'context' : somectx}) echo getqflist({'context' : 1}) let newctx = ['red', 'green', 'blue'] call setloclist(2, [], 'a', {'id' : qfid, 'context' : newctx}) echo getloclist(2, {'id' : qfid, 'context' : 1}) < *quickfix-parse* You can parse a list of lines using 'errorformat' without creating or modifying a quickfix list using the |getqflist()| function. Examples: > echo getqflist({'lines' : ["F1:10:Line10", "F2:20:Line20"]}) echo getqflist({'lines' : systemlist('grep -Hn quickfix *')}) This returns a dictionary where the 'items' key contains the list of quickfix entries parsed from lines. The following shows how to use a custom 'errorformat' to parse the lines without modifying the 'errorformat' option: > echo getqflist({'efm' : '%f#%l#%m', 'lines' : ['F1#10#Line']}) < EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST: *:cdo* :cdo[!] {cmd} Execute {cmd} in each valid entry in the quickfix list. It works like doing this: > :cfirst :{cmd} :cnext :{cmd} etc. < When the current file can't be |abandon|ed and the [!] is not present, the command fails. When an error is detected execution stops. The last buffer (or where an error occurred) becomes the current buffer. {cmd} can contain '|' to concatenate several commands. Only valid entries in the quickfix list are used. A range can be used to select entries, e.g.: > :10,$cdo cmd < To skip entries 1 to 9. Note: While this command is executing, the Syntax autocommand event is disabled by adding it to 'eventignore'. This considerably speeds up editing each buffer. {not in Vi} Also see |:bufdo|, |:tabdo|, |:argdo|, |:windo|, |:ldo|, |:cfdo| and |:lfdo|. *:cfdo* :cfdo[!] {cmd} Execute {cmd} in each file in the quickfix list. It works like doing this: > :cfirst :{cmd} :cnfile :{cmd} etc. < Otherwise it works the same as `:cdo`. {not in Vi} *:ldo* :ld[o][!] {cmd} Execute {cmd} in each valid entry in the location list for the current window. It works like doing this: > :lfirst :{cmd} :lnext :{cmd} etc. < Only valid entries in the location list are used. Otherwise it works the same as `:cdo`. {not in Vi} *:lfdo* :lfdo[!] {cmd} Execute {cmd} in each file in the location list for the current window. It works like doing this: > :lfirst :{cmd} :lnfile :{cmd} etc. < Otherwise it works the same as `:ldo`. {not in Vi} ============================================================================= 2. The error window *quickfix-window* *:cope* *:copen* *w:quickfix_title* :cope[n] [height] Open a window to show the current list of errors. When [height] is given, the window becomes that high (if there is room). When [height] is omitted the window is made ten lines high. If there already is a quickfix window, it will be made the current window. It is not possible to open a second quickfix window. If [height] is given the existing window will be resized to it. The window will contain a special buffer, with 'buftype' equal to "quickfix". Don't change this! The window will have the w:quickfix_title variable set which will indicate the command that produced the quickfix list. This can be used to compose a custom status line if the value of 'statusline' is adjusted properly. Whenever this buffer is modified by a quickfix command or function, the |b:changedtick| variable is incremented. *:lop* *:lopen* :lop[en] [height] Open a window to show the location list for the current window. Works only when the location list for the current window is present. You can have more than one location window opened at a time. Otherwise, it acts the same as ":copen". *:ccl* *:cclose* :ccl[ose] Close the quickfix window. *:lcl* *:lclose* :lcl[ose] Close the window showing the location list for the current window. *:cw* *:cwindow* :cw[indow] [height] Open the quickfix window when there are recognized errors. If the window is already open and there are no recognized errors, close the window. *:lw* *:lwindow* :lw[indow] [height] Same as ":cwindow", except use the window showing the location list for the current window. *:cbo* *:cbottom* :cbo[ttom] Put the cursor in the last line of the quickfix window and scroll to make it visible. This is useful for when errors are added by an asynchronous callback. Only call it once in a while if there are many updates to avoid a lot of redrawing. *:lbo* *:lbottom* :lbo[ttom] Same as ":cbottom", except use the window showing the location list for the current window. Normally the quickfix window is at the bottom of the screen. If there are vertical splits, it's at the bottom of the rightmost column of windows. To make it always occupy the full width: > :botright cwindow You can move the window around with |window-moving| commands. For example, to move it to the top: CTRL-W K The 'winfixheight' option will be set, which means that the window will mostly keep its height, ignoring 'winheight' and 'equalalways'. You can change the height manually (e.g., by dragging the status line above it with the mouse). In the quickfix window, each line is one error. The line number is equal to the error number. The current entry is highlighted with the QuickFixLine highlighting. You can change it to your liking, e.g.: > :hi QuickFixLine ctermbg=Yellow guibg=Yellow You can use ":.cc" to jump to the error under the cursor. Hitting the <Enter> key or double-clicking the mouse on a line has the same effect. The file containing the error is opened in the window above the quickfix window. If there already is a window for that file, it is used instead. If the buffer in the used window has changed, and the error is in another file, jumping to the error will fail. You will first have to make sure the window contains a buffer which can be abandoned. *CTRL-W_<Enter>* *CTRL-W_<CR>* You can use CTRL-W <Enter> to open a new window and jump to the error there. When the quickfix window has been filled, two autocommand events are triggered. First the 'filetype' option is set to "qf", which triggers the FileType event. Then the BufReadPost event is triggered, using "quickfix" for the buffer name. This can be used to perform some action on the listed errors. Example: > au BufReadPost quickfix setlocal modifiable \ | silent exe 'g/^/s//\=line(".")." "/' \ | setlocal nomodifiable This prepends the line number to each line. Note the use of "\=" in the substitute string of the ":s" command, which is used to evaluate an expression. The BufWinEnter event is also triggered, again using "quickfix" for the buffer name. Note: When adding to an existing quickfix list the autocommand are not triggered. Note: Making changes in the quickfix window has no effect on the list of errors. 'modifiable' is off to avoid making changes. If you delete or insert lines anyway, the relation between the text and the error number is messed up. If you really want to do this, you could write the contents of the quickfix window to a file and use ":cfile" to have it parsed and used as the new error list. *location-list-window* The location list window displays the entries in a location list. When you open a location list window, it is created below the current window and displays the location list for the current window. The location list window is similar to the quickfix window, except that you can have more than one location list window open at a time. When you use a location list command in this window, the displayed location list is used. When you select a file from the location list window, the following steps are used to find a window to edit the file: 1. If a window with the location list displayed in the location list window is present, then the file is opened in that window. 2. If the above step fails and if the file is already opened in another window, then that window is used. 3. If the above step fails then an existing window showing a buffer with 'buftype' not set is used. 4. If the above step fails, then the file is edited in a new window. In all of the above cases, if the location list for the selected window is not yet set, then it is set to the location list displayed in the location list window. *quickfix-window-ID* You can use the |getqflist()| and |getloclist()| functions to obtain the window ID of the quickfix window and location list window respectively (if present). Examples: > echo getqflist({'winid' : 1}).winid echo getloclist(2, {'winid' : 1}).winid < ============================================================================= 3. Using more than one list of errors *quickfix-error-lists* So far has been assumed that there is only one list of errors. Actually the ten last used lists are remembered. When starting a new list, the previous ones are automatically kept. Two commands can be used to access older error lists. They set one of the existing error lists as the current one. *:colder* *:col* *E380* :col[der] [count] Go to older error list. When [count] is given, do this [count] times. When already at the oldest error list, an error message is given. *:lolder* *:lol* :lol[der] [count] Same as `:colder`, except use the location list for the current window instead of the quickfix list. *:cnewer* *:cnew* *E381* :cnew[er] [count] Go to newer error list. When [count] is given, do this [count] times. When already at the newest error list, an error message is given. *:lnewer* *:lnew* :lnew[er] [count] Same as `:cnewer`, except use the location list for the current window instead of the quickfix list. *:chistory* *:chi* :chi[story] Show the list of error lists. The current list is marked with ">". The output looks like: error list 1 of 3; 43 errors ~ > error list 2 of 3; 0 errors ~ error list 3 of 3; 15 errors ~ *:lhistory* *:lhi* :lhi[story] Show the list of location lists, otherwise like `:chistory`. When adding a new error list, it becomes the current list. When ":colder" has been used and ":make" or ":grep" is used to add a new error list, one newer list is overwritten. This is especially useful if you are browsing with ":grep" |grep|. If you want to keep the more recent error lists, use ":cnewer 99" first. To get the number of lists in the quickfix and location list stack, you can use the |getqflist()| and |getloclist()| functions respectively with the list number set to the special value '$'. Examples: > echo getqflist({'nr' : '$'}).nr echo getloclist(3, {'nr' : '$'}).nr To get the number of the current list in the stack: > echo getqflist({'nr' : 0}).nr < ============================================================================= 4. Using :make *:make_makeprg* *:mak* *:make* :mak[e][!] [arguments] 1. All relevant |QuickFixCmdPre| autocommands are executed. 2. If the 'autowrite' option is on, write any changed buffers 3. An errorfile name is made from 'makeef'. If 'makeef' doesn't contain "##", and a file with this name already exists, it is deleted. 4. The program given with the 'makeprg' option is started (default "make") with the optional [arguments] and the output is saved in the errorfile (for Unix it is also echoed on the screen). 5. The errorfile is read using 'errorformat'. 6. All relevant |QuickFixCmdPost| autocommands are executed. See example below. 7. If [!] is not given the first error is jumped to. 8. The errorfile is deleted. 9. You can now move through the errors with commands like |:cnext| and |:cprevious|, see above. This command does not accept a comment, any " characters are considered part of the arguments. If the encoding of the program output differs from the 'encoding' option, you can use the 'makeencoding' option to specify the encoding. *:lmak* *:lmake* :lmak[e][!] [arguments] Same as ":make", except the location list for the current window is used instead of the quickfix list. The ":make" command executes the command given with the 'makeprg' option. This is done by passing the command to the shell given with the 'shell' option. This works almost like typing ":!{makeprg} [arguments] {shellpipe} {errorfile}". {makeprg} is the string given with the 'makeprg' option. Any command can be used, not just "make". Characters '%' and '#' are expanded as usual on a command-line. You can use "%<" to insert the current file name without extension, or "#<" to insert the alternate file name without extension, for example: > :set makeprg=make\ #<.o [arguments] is anything that is typed after ":make". {shellpipe} is the 'shellpipe' option. {errorfile} is the 'makeef' option, with ## replaced to make it unique. The placeholder "$*" can be used for the argument list in {makeprg} if the command needs some additional characters after its arguments. The $* is replaced then by all arguments. Example: > :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} or simpler > :let &mp = 'latex \\nonstopmode \\input\{$*}' "$*" can be given multiple times, for example: > :set makeprg=gcc\ -o\ $*\ $* The 'shellpipe' option defaults to ">" for the Amiga, MS-DOS and Win32. This means that the output of the compiler is saved in a file and not shown on the screen directly. For Unix "| tee" is used. The compiler output is shown on the screen and saved in a file the same time. Depending on the shell used "|& tee" or "2>&1| tee" is the default, so stderr output will be included. If 'shellpipe' is empty, the {errorfile} part will be omitted. This is useful for compilers that write to an errorfile themselves (e.g., Manx's Amiga C). Using QuickFixCmdPost to fix the encoding ~ It may be that 'encoding' is set to an encoding that differs from the messages your build program produces. This example shows how to fix this after Vim has read the error messages: > function QfMakeConv() let qflist = getqflist() for i in qflist let i.text = iconv(i.text, "cp936", "utf-8") endfor call setqflist(qflist) endfunction au QuickfixCmdPost make call QfMakeConv() (Example by Faque Cheng) Another option is using 'makeencoding'. ============================================================================== 5. Using :vimgrep and :grep *grep* *lid* Vim has two ways to find matches for a pattern: Internal and external. The advantage of the internal grep is that it works on all systems and uses the powerful Vim search patterns. An external grep program can be used when the Vim grep does not do what you want. The internal method will be slower, because files are read into memory. The advantages are: - Line separators and encoding are automatically recognized, as if a file is being edited. - Uses Vim search patterns. Multi-line patterns can be used. - When plugins are enabled: compressed and remote files can be searched. |gzip| |netrw| To be able to do this Vim loads each file as if it is being edited. When there is no match in the file the associated buffer is wiped out again. The 'hidden' option is ignored here to avoid running out of memory or file descriptors when searching many files. However, when the |:hide| command modifier is used the buffers are kept loaded. This makes following searches in the same files a lot faster. Note that |:copen| (or |:lopen| for |:lgrep|) may be used to open a buffer containing the search results in linked form. The |:silent| command may be used to suppress the default full screen grep output. The ":grep!" form of the |:grep| command doesn't jump to the first match automatically. These commands can be combined to create a NewGrep command: > command! -nargs=+ NewGrep execute 'silent grep! <args>' | copen 42 5.1 using Vim's internal grep *:vim* *:vimgrep* *E682* *E683* :vim[grep][!] /{pattern}/[g][j] {file} ... Search for {pattern} in the files {file} ... and set the error list to the matches. Files matching 'wildignore' are ignored; files in 'suffixes' are searched last. Without the 'g' flag each line is added only once. With 'g' every match is added. {pattern} is a Vim search pattern. Instead of enclosing it in / any non-ID character (see |'isident'|) can be used, so long as it does not appear in {pattern}. 'ignorecase' applies. To overrule it put |/\c| in the pattern to ignore case or |/\C| to match case. 'smartcase' is not used. If {pattern} is empty (e.g. // is specified), the last used search pattern is used. |last-pattern| When a number is put before the command this is used as the maximum number of matches to find. Use ":1vimgrep pattern file" to find only the first. Useful if you only want to check if there is a match and quit quickly when it's found. Without the 'j' flag Vim jumps to the first match. With 'j' only the quickfix list is updated. With the [!] any changes in the current buffer are abandoned. Every second or so the searched file name is displayed to give you an idea of the progress made. Examples: > :vimgrep /an error/ *.c :vimgrep /\<FileName\>/ *.h include/* :vimgrep /myfunc/ **/*.c < For the use of "**" see |starstar-wildcard|. :vim[grep][!] {pattern} {file} ... Like above, but instead of enclosing the pattern in a non-ID character use a white-separated pattern. The pattern must start with an ID character. Example: > :vimgrep Error *.c < *:lv* *:lvimgrep* :lv[imgrep][!] /{pattern}/[g][j] {file} ... :lv[imgrep][!] {pattern} {file} ... Same as ":vimgrep", except the location list for the current window is used instead of the quickfix list. *:vimgrepa* *:vimgrepadd* :vimgrepa[dd][!] /{pattern}/[g][j] {file} ... :vimgrepa[dd][!] {pattern} {file} ... Just like ":vimgrep", but instead of making a new list of errors the matches are appended to the current list. *:lvimgrepa* *:lvimgrepadd* :lvimgrepa[dd][!] /{pattern}/[g][j] {file} ... :lvimgrepa[dd][!] {pattern} {file} ... Same as ":vimgrepadd", except the location list for the current window is used instead of the quickfix list. 5.2 External grep Vim can interface with "grep" and grep-like programs (such as the GNU id-utils) in a similar way to its compiler integration (see |:make| above). [Unix trivia: The name for the Unix "grep" command comes from ":g/re/p", where "re" stands for Regular Expression.] *:gr* *:grep* :gr[ep][!] [arguments] Just like ":make", but use 'grepprg' instead of 'makeprg' and 'grepformat' instead of 'errorformat'. When 'grepprg' is "internal" this works like |:vimgrep|. Note that the pattern needs to be enclosed in separator characters then. If the encoding of the program output differs from the 'encoding' option, you can use the 'makeencoding' option to specify the encoding. *:lgr* *:lgrep* :lgr[ep][!] [arguments] Same as ":grep", except the location list for the current window is used instead of the quickfix list. *:grepa* *:grepadd* :grepa[dd][!] [arguments] Just like ":grep", but instead of making a new list of errors the matches are appended to the current list. Example: > :call setqflist([]) :bufdo grepadd! something % < The first command makes a new error list which is empty. The second command executes "grepadd" for each listed buffer. Note the use of ! to avoid that ":grepadd" jumps to the first error, which is not allowed with |:bufdo|. An example that uses the argument list and avoids errors for files without matches: > :silent argdo try \ | grepadd! something % \ | catch /E480:/ \ | endtry" < If the encoding of the program output differs from the 'encoding' option, you can use the 'makeencoding' option to specify the encoding. *:lgrepa* *:lgrepadd* :lgrepa[dd][!] [arguments] Same as ":grepadd", except the location list for the current window is used instead of the quickfix list. 5.3 Setting up external grep If you have a standard "grep" program installed, the :grep command may work well with the defaults. The syntax is very similar to the standard command: > :grep foo *.c Will search all files with the .c extension for the substring "foo". The arguments to :grep are passed straight to the "grep" program, so you can use whatever options your "grep" supports. By default, :grep invokes grep with the -n option (show file and line numbers). You can change this with the 'grepprg' option. You will need to set 'grepprg' if: a) You are using a program that isn't called "grep" b) You have to call grep with a full path c) You want to pass other options automatically (e.g. case insensitive search.) Once "grep" has executed, Vim parses the results using the 'grepformat' option. This option works in the same way as the 'errorformat' option - see that for details. You may need to change 'grepformat' from the default if your grep outputs in a non-standard format, or you are using some other program with a special format. Once the results are parsed, Vim loads the first file containing a match and jumps to the appropriate line, in the same way that it jumps to a compiler error in |quickfix| mode. You can then use the |:cnext|, |:clist|, etc. commands to see the other matches. 5.4 Using :grep with id-utils You can set up :grep to work with the GNU id-utils like this: > :set grepprg=lid\ -Rgrep\ -s :set grepformat=%f:%l:%m then > :grep (regexp) works just as you'd expect. (provided you remembered to mkid first :) 5.5 Browsing source code with :vimgrep or :grep Using the stack of error lists that Vim keeps, you can browse your files to look for functions and the functions they call. For example, suppose that you have to add an argument to the read_file() function. You enter this command: > :vimgrep /\<read_file\>/ *.c You use ":cn" to go along the list of matches and add the argument. At one place you have to get the new argument from a higher level function msg(), and need to change that one too. Thus you use: > :vimgrep /\<msg\>/ *.c While changing the msg() functions, you find another function that needs to get the argument from a higher level. You can again use ":vimgrep" to find these functions. Once you are finished with one function, you can use > :colder to go back to the previous one. This works like browsing a tree: ":vimgrep" goes one level deeper, creating a list of branches. ":colder" goes back to the previous level. You can mix this use of ":vimgrep" and "colder" to browse all the locations in a tree-like way. If you do this consistently, you will find all locations without the need to write down a "todo" list. ============================================================================= 6. Selecting a compiler *compiler-select* *:comp* *:compiler* *E666* :comp[iler][!] {name} Set options to work with compiler {name}. Without the "!" options are set for the current buffer. With "!" global options are set. If you use ":compiler foo" in "file.foo" and then ":compiler! bar" in another buffer, Vim will keep on using "foo" in "file.foo". {not available when compiled without the |+eval| feature} The Vim plugins in the "compiler" directory will set options to use the selected compiler. For `:compiler` local options are set, for `:compiler!` global options. *current_compiler* To support older Vim versions, the plugins always use "current_compiler" and not "b:current_compiler". What the command actually does is the following: - Delete the "current_compiler" and "b:current_compiler" variables. - Define the "CompilerSet" user command. With "!" it does ":set", without "!" it does ":setlocal". - Execute ":runtime! compiler/{name}.vim". The plugins are expected to set options with "CompilerSet" and set the "current_compiler" variable to the name of the compiler. - Delete the "CompilerSet" user command. - Set "b:current_compiler" to the value of "current_compiler". - Without "!" the old value of "current_compiler" is restored. For writing a compiler plugin, see |write-compiler-plugin|. GCC *quickfix-gcc* *compiler-gcc* There's one variable you can set for the GCC compiler: g:compiler_gcc_ignore_unmatched_lines Ignore lines that don't match any patterns defined for GCC. Useful if output from commands run from make are generating false positives. MANX AZTEC C *quickfix-manx* *compiler-manx* To use Vim with Manx's Aztec C compiler on the Amiga you should do the following: - Set the CCEDIT environment variable with the command: > mset "CCEDIT=vim -q" - Compile with the -qf option. If the compiler finds any errors, Vim is started and the cursor is positioned on the first error. The error message will be displayed on the last line. You can go to other errors with the commands mentioned above. You can fix the errors and write the file(s). - If you exit Vim normally the compiler will re-compile the same file. If you exit with the :cq command, the compiler will terminate. Do this if you cannot fix the error, or if another file needs to be compiled first. There are some restrictions to the Quickfix mode on the Amiga. The compiler only writes the first 25 errors to the errorfile (Manx's documentation does not say how to get more). If you want to find the others, you will have to fix a few errors and exit the editor. After recompiling, up to 25 remaining errors will be found. If Vim was started from the compiler, the :sh and some :! commands will not work, because Vim is then running in the same process as the compiler and stdin (standard input) will not be interactive. PERL *quickfix-perl* *compiler-perl* The Perl compiler plugin doesn't actually compile, but invokes Perl's internal syntax checking feature and parses the output for possible errors so you can correct them in quick-fix mode. Warnings are forced regardless of "no warnings" or "$^W = 0" within the file being checked. To disable this set g:perl_compiler_force_warnings to a zero value. For example: > let g:perl_compiler_force_warnings = 0 PYUNIT COMPILER *compiler-pyunit* This is not actually a compiler, but a unit testing framework for the Python language. It is included into standard Python distribution starting from version 2.0. For older versions, you can get it from http://pyunit.sourceforge.net. When you run your tests with the help of the framework, possible errors are parsed by Vim and presented for you in quick-fix mode. Unfortunately, there is no standard way to run the tests. The alltests.py script seems to be used quite often, that's all. Useful values for the 'makeprg' options therefore are: setlocal makeprg=./alltests.py " Run a testsuite setlocal makeprg=python\ %:S " Run a single testcase Also see http://vim.sourceforge.net/tip_view.php?tip_id=280. TEX COMPILER *compiler-tex* Included in the distribution compiler for TeX ($VIMRUNTIME/compiler/tex.vim) uses make command if possible. If the compiler finds a file named "Makefile" or "makefile" in the current directory, it supposes that you want to process your *TeX files with make, and the makefile does the right work. In this case compiler sets 'errorformat' for *TeX output and leaves 'makeprg' untouched. If neither "Makefile" nor "makefile" is found, the compiler will not use make. You can force the compiler to ignore makefiles by defining b:tex_ignore_makefile or g:tex_ignore_makefile variable (they are checked for existence only). If the compiler chose not to use make, it need to choose a right program for processing your input. If b:tex_flavor or g:tex_flavor (in this precedence) variable exists, it defines TeX flavor for :make (actually, this is the name of executed command), and if both variables do not exist, it defaults to "latex". For example, while editing chapter2.tex \input-ed from mypaper.tex written in AMS-TeX: > :let b:tex_flavor = 'amstex' :compiler tex < [editing...] > :make mypaper Note that you must specify a name of the file to process as an argument (to process the right file when editing \input-ed or \include-ed file; portable solution for substituting % for no arguments is welcome). This is not in the semantics of make, where you specify a target, not source, but you may specify filename without extension ".tex" and mean this as "make filename.dvi or filename.pdf or filename.some_result_extension according to compiler". Note: tex command line syntax is set to usable both for MikTeX (suggestion by Srinath Avadhanula) and teTeX (checked by Artem Chuprina). Suggestion from |errorformat-LaTeX| is too complex to keep it working for different shells and OSes and also does not allow to use other available TeX options, if any. If your TeX doesn't support "-interaction=nonstopmode", please report it with different means to express \nonstopmode from the command line. ============================================================================= 7. The error format *error-file-format* *errorformat* *E372* *E373* *E374* *E375* *E376* *E377* *E378* The 'errorformat' option specifies a list of formats that are recognized. The first format that matches with an error message is used. You can add several formats for different messages your compiler produces, or even entries for multiple compilers. See |efm-entries|. Each entry in 'errorformat' is a scanf-like string that describes the format. First, you need to know how scanf works. Look in the documentation of your C compiler. Below you find the % items that Vim understands. Others are invalid. Special characters in 'errorformat' are comma and backslash. See |efm-entries| for how to deal with them. Note that a literal "%" is matched by "%%", thus it is not escaped with a backslash. Keep in mind that in the `:make` and `:grep` output all NUL characters are replaced with SOH (0x01). Note: By default the difference between upper and lowercase is ignored. If you want to match case, add "\C" to the pattern |/\C|. Basic items %f file name (finds a string) %l line number (finds a number) %c column number (finds a number representing character column of the error, (1 <tab> == 1 character column)) %v virtual column number (finds a number representing screen column of the error (1 <tab> == 8 screen columns)) %t error type (finds a single character) %n error number (finds a number) %m error message (finds a string) %r matches the "rest" of a single-line file message %O/P/Q %p pointer line (finds a sequence of '-', '.', ' ' or tabs and uses the length for the column number) %*{conv} any scanf non-assignable conversion %% the single '%' character %s search text (finds a string) The "%f" conversion may depend on the current 'isfname' setting. "~/" is expanded to the home directory and environment variables are expanded. The "%f" and "%m" conversions have to detect the end of the string. This normally happens by matching following characters and items. When nothing is following the rest of the line is matched. If "%f" is followed by a '%' or a backslash, it will look for a sequence of 'isfname' characters. On MS-DOS, MS-Windows and OS/2 a leading "C:" will be included in "%f", even when using "%f:". This means that a file name which is a single alphabetical letter will not be detected. The "%p" conversion is normally followed by a "^". It's used for compilers that output a line like: > ^ or > ---------^ to indicate the column of the error. This is to be used in a multi-line error message. See |errorformat-javac| for a useful example. The "%s" conversion specifies the text to search for to locate the error line. The text is used as a literal string. The anchors "^" and "$" are added to the text to locate the error line exactly matching the search text and the text is prefixed with the "\V" atom to make it "very nomagic". The "%s" conversion can be used to locate lines without a line number in the error output. Like the output of the "grep" shell command. When the pattern is present the line number will not be used. Changing directory The following uppercase conversion characters specify the type of special format strings. At most one of them may be given as a prefix at the begin of a single comma-separated format pattern. Some compilers produce messages that consist of directory names that have to be prepended to each file name read by %f (example: GNU make). The following codes can be used to scan these directory names; they will be stored in an internal directory stack. *E379* %D "enter directory" format string; expects a following %f that finds the directory name %X "leave directory" format string; expects following %f When defining an "enter directory" or "leave directory" format, the "%D" or "%X" has to be given at the start of that substring. Vim tracks the directory changes and prepends the current directory to each erroneous file found with a relative path. See |quickfix-directory-stack| for details, tips and limitations. Multi-line messages *errorformat-multi-line* It is possible to read the output of programs that produce multi-line messages, i.e. error strings that consume more than one line. Possible prefixes are: %E start of a multi-line error message %W start of a multi-line warning message %I start of a multi-line informational message %A start of a multi-line message (unspecified type) %> for next line start with current pattern again |efm-%>| %C continuation of a multi-line message %Z end of a multi-line message These can be used with '+' and '-', see |efm-ignore| below. Using "\n" in the pattern won't work to match multi-line messages. Example: Your compiler happens to write out errors in the following format (leading line numbers not being part of the actual output): 1 Error 275 ~ 2 line 42 ~ 3 column 3 ~ 4 ' ' expected after '--' ~ The appropriate error format string has to look like this: > :set efm=%EError\ %n,%Cline\ %l,%Ccolumn\ %c,%Z%m And the |:clist| error message generated for this error is: 1:42 col 3 error 275: ' ' expected after '--' Another example: Think of a Python interpreter that produces the following error message (line numbers are not part of the actual output): 1 ============================================================== 2 FAIL: testGetTypeIdCachesResult (dbfacadeTest.DjsDBFacadeTest) 3 -------------------------------------------------------------- 4 Traceback (most recent call last): 5 File "unittests/dbfacadeTest.py", line 89, in testFoo 6 self.assertEquals(34, dtid) 7 File "/usr/lib/python2.2/unittest.py", line 286, in 8 failUnlessEqual 9 raise self.failureException, \ 10 AssertionError: 34 != 33 11 12 -------------------------------------------------------------- 13 Ran 27 tests in 0.063s Say you want |:clist| write the relevant information of this message only, namely: 5 unittests/dbfacadeTest.py:89: AssertionError: 34 != 33 Then the error format string could be defined as follows: > :set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m Note that the %C string is given before the %A here: since the expression ' %.%#' (which stands for the regular expression ' .*') matches every line starting with a space, followed by any characters to the end of the line, it also hides line 7 which would trigger a separate error message otherwise. Error format strings are always parsed pattern by pattern until the first match occurs. *efm-%>* The %> item can be used to avoid trying patterns that appear earlier in 'errorformat'. This is useful for patterns that match just about anything. For example, if the error looks like this: Error in line 123 of foo.c: ~ unknown variable "i" ~ This can be found with: > :set efm=xxx,%E%>Error in line %l of %f:,%Z%m Where "xxx" has a pattern that would also match the second line. Important: There is no memory of what part of the errorformat matched before; every line in the error file gets a complete new run through the error format lines. For example, if one has: > setlocal efm=aa,bb,cc,dd,ee Where aa, bb, etc. are error format strings. Each line of the error file will be matched to the pattern aa, then bb, then cc, etc. Just because cc matched the previous error line does _not_ mean that dd will be tried first on the current line, even if cc and dd are multi-line errorformat strings. Separate file name *errorformat-separate-filename* These prefixes are useful if the file name is given once and multiple messages follow that refer to this file name. %O single-line file message: overread the matched part %P single-line file message: push file %f onto the stack %Q single-line file message: pop the last file from stack Example: Given a compiler that produces the following error logfile (without leading line numbers): 1 [a1.tt] 2 (1,17) error: ';' missing 3 (21,2) warning: variable 'z' not defined 4 (67,3) error: end of file found before string ended 5 6 [a2.tt] 7 8 [a3.tt] 9 NEW compiler v1.1 10 (2,2) warning: variable 'x' not defined 11 (67,3) warning: 's' already defined This logfile lists several messages for each file enclosed in [...] which are properly parsed by an error format like this: > :set efm=%+P[%f],(%l\\,%c)%*[\ ]%t%*[^:]:\ %m,%-Q A call of |:clist| writes them accordingly with their correct filenames: 2 a1.tt:1 col 17 error: ';' missing 3 a1.tt:21 col 2 warning: variable 'z' not defined 4 a1.tt:67 col 3 error: end of file found before string ended 8 a3.tt:2 col 2 warning: variable 'x' not defined 9 a3.tt:67 col 3 warning: 's' already defined Unlike the other prefixes that all match against whole lines, %P, %Q and %O can be used to match several patterns in the same line. Thus it is possible to parse even nested files like in the following line: {"file1" {"file2" error1} error2 {"file3" error3 {"file4" error4 error5}}} The %O then parses over strings that do not contain any push/pop file name information. See |errorformat-LaTeX| for an extended example. Ignoring and using whole messages *efm-ignore* The codes '+' or '-' can be combined with the uppercase codes above; in that case they have to precede the letter, e.g. '%+A' or '%-G': %- do not include the matching multi-line in any output %+ include the whole matching line in the %m error string One prefix is only useful in combination with '+' or '-', namely %G. It parses over lines containing general information like compiler version strings or other headers that can be skipped. %-G ignore this message %+G general message Pattern matching The scanf()-like "%*[]" notation is supported for backward-compatibility with previous versions of Vim. However, it is also possible to specify (nearly) any Vim supported regular expression in format strings. Since meta characters of the regular expression language can be part of ordinary matching strings or file names (and therefore internally have to be escaped), meta symbols have to be written with leading '%': %\ The single '\' character. Note that this has to be escaped ("%\\") in ":set errorformat=" definitions. %. The single '.' character. %# The single '*'(!) character. %^ The single '^' character. Note that this is not useful, the pattern already matches start of line. %$ The single '$' character. Note that this is not useful, the pattern already matches end of line. %[ The single '[' character for a [] character range. %~ The single '~' character. When using character classes in expressions (see |/\i| for an overview), terms containing the "\+" quantifier can be written in the scanf() "%*" notation. Example: "%\\d%\\+" ("\d\+", "any number") is equivalent to "%*\\d". Important note: The \(...\) grouping of sub-matches can not be used in format specifications because it is reserved for internal conversions. Multiple entries in 'errorformat' *efm-entries* To be able to detect output from several compilers, several format patterns may be put in 'errorformat', separated by commas (note: blanks after the comma are ignored). The first pattern that has a complete match is used. If no match is found, matching parts from the last one will be used, although the file name is removed and the error message is set to the whole message. If there is a pattern that may match output from several compilers (but not in a right way), put it after one that is more restrictive. To include a comma in a pattern precede it with a backslash (you have to type two in a ":set" command). To include a backslash itself give two backslashes (you have to type four in a ":set" command). You also need to put a backslash before a space for ":set". Valid matches *quickfix-valid* If a line does not completely match one of the entries in 'errorformat', the whole line is put in the error message and the entry is marked "not valid" These lines are skipped with the ":cn" and ":cp" commands (unless there is no valid line at all). You can use ":cl!" to display all the error messages. If the error format does not contain a file name Vim cannot switch to the correct file. You will have to do this by hand. Examples The format of the file from the Amiga Aztec compiler is: filename>linenumber:columnnumber:errortype:errornumber:errormessage filename name of the file in which the error was detected linenumber line number where the error was detected columnnumber column number where the error was detected errortype type of the error, normally a single 'E' or 'W' errornumber number of the error (for lookup in the manual) errormessage description of the error This can be matched with this 'errorformat' entry: %f>%l:%c:%t:%n:%m Some examples for C compilers that produce single-line error outputs: %f:%l:\ %t%*[^0123456789]%n:\ %m for Manx/Aztec C error messages (scanf() doesn't understand [0-9]) %f\ %l\ %t%*[^0-9]%n:\ %m for SAS C \"%f\"\\,%*[^0-9]%l:\ %m for generic C compilers %f:%l:\ %m for GCC %f:%l:\ %m,%Dgmake[%*\\d]:\ Entering\ directory\ `%f', %Dgmake[%*\\d]:\ Leaving\ directory\ `%f' for GCC with gmake (concat the lines!) %f(%l)\ :\ %*[^:]:\ %m old SCO C compiler (pre-OS5) %f(%l)\ :\ %t%*[^0-9]%n:\ %m idem, with error type and number %f:%l:\ %m,In\ file\ included\ from\ %f:%l:,\^I\^Ifrom\ %f:%l%m for GCC, with some extras Extended examples for the handling of multi-line messages are given below, see |errorformat-Jikes| and |errorformat-LaTeX|. Note the backslash in front of a space and double quote. It is required for the :set command. There are two backslashes in front of a comma, one for the :set command and one to avoid recognizing the comma as a separator of error formats. Filtering messages If you have a compiler that produces error messages that do not fit in the format string, you could write a program that translates the error messages into this format. You can use this program with the ":make" command by changing the 'makeprg' option. For example: > :set mp=make\ \\\|&\ error_filter The backslashes before the pipe character are required to avoid it to be recognized as a command separator. The backslash before each space is required for the set command. ============================================================================= 8. The directory stack *quickfix-directory-stack* Quickfix maintains a stack for saving all used directories parsed from the make output. For GNU-make this is rather simple, as it always prints the absolute path of all directories it enters and leaves. Regardless if this is done via a 'cd' command in the makefile or with the parameter "-C dir" (change to directory before reading the makefile). It may be useful to use the switch "-w" to force GNU-make to print out the working directory before and after processing. Maintaining the correct directory is more complicated if you don't use GNU-make. AIX-make for example doesn't print any information about its working directory. Then you need to enhance the makefile. In the makefile of LessTif there is a command which echoes "Making {target} in {dir}". The special problem here is that it doesn't print information on leaving the directory and that it doesn't print the absolute path. To solve the problem with relative paths and missing "leave directory" messages Vim uses following algorithm: 1) Check if the given directory is a subdirectory of the current directory. If this is true, store it as the current directory. 2) If it is not a subdir of the current directory, try if this is a subdirectory of one of the upper directories. 3) If the directory still isn't found, it is assumed to be a subdirectory of Vim's current directory. Additionally it is checked for every file, if it really exists in the identified directory. If not, it is searched in all other directories of the directory stack (NOT the directory subtree!). If it is still not found, it is assumed that it is in Vim's current directory. There are limitations in this algorithm. These examples assume that make just prints information about entering a directory in the form "Making all in dir". 1) Assume you have following directories and files: ./dir1 ./dir1/file1.c ./file1.c If make processes the directory "./dir1" before the current directory and there is an error in the file "./file1.c", you will end up with the file "./dir1/file.c" loaded by Vim. This can only be solved with a "leave directory" message. 2) Assume you have following directories and files: ./dir1 ./dir1/dir2 ./dir2 You get the following: Make output Directory interpreted by Vim ------------------------ ---------------------------- Making all in dir1 ./dir1 Making all in dir2 ./dir1/dir2 Making all in dir2 ./dir1/dir2 This can be solved by printing absolute directories in the "enter directory" message or by printing "leave directory" messages. To avoid this problem, ensure to print absolute directory names and "leave directory" messages. Examples for Makefiles: Unix: libs: for dn in $(LIBDIRS); do \ (cd $$dn; echo "Entering dir '$$(pwd)'"; make); \ echo "Leaving dir"; \ done Add %DEntering\ dir\ '%f',%XLeaving\ dir to your 'errorformat' to handle the above output. Note that Vim doesn't check if the directory name in a "leave directory" messages is the current directory. This is why you could just use the message "Leaving dir". ============================================================================= 9. Specific error file formats *errorformats* *errorformat-Jikes* Jikes(TM), a source-to-bytecode Java compiler published by IBM Research, produces simple multi-line error messages. An 'errorformat' string matching the produced messages is shown below. The following lines can be placed in the user's |vimrc| to overwrite Vim's recognized default formats, or see |:set+=| how to install this format additionally to the default. > :set efm=%A%f:%l:%c:%*\\d:%*\\d:, \%C%*\\s%trror:%m, \%+C%*[^:]%trror:%m, \%C%*\\s%tarning:%m, \%C%m < Jikes(TM) produces a single-line error message when invoked with the option "+E", and can be matched with the following: > :setl efm=%f:%l:%v:%*\\d:%*\\d:%*\\s%m < *errorformat-javac* This 'errorformat' has been reported to work well for javac, which outputs a line with "^" to indicate the column of the error: > :setl efm=%A%f:%l:\ %m,%-Z%p^,%-C%.%# or: > :setl efm=%A%f:%l:\ %m,%+Z%p^,%+C%.%#,%-G%.%# < Here is an alternative from Michael F. Lamb for Unix that filters the errors first: > :setl errorformat=%Z%f:%l:\ %m,%A%p^,%-G%*[^sl]%.%# :setl makeprg=javac\ %:S\ 2>&1\ \\\|\ vim-javac-filter You need to put the following in "vim-javac-filter" somewhere in your path (e.g., in ~/bin) and make it executable: > #!/bin/sed -f /\^$/s/\t/\ /g;/:[0-9]\+:/{h;d};/^[ \t]*\^/G; In English, that sed script: - Changes single tabs to single spaces and - Moves the line with the filename, line number, error message to just after the pointer line. That way, the unused error text between doesn't break vim's notion of a "multi-line message" and also doesn't force us to include it as a "continuation of a multi-line message." *errorformat-ant* For ant (http://jakarta.apache.org/) the above errorformat has to be modified to honour the leading [javac] in front of each javac output line: > :set efm=%A\ %#[javac]\ %f:%l:\ %m,%-Z\ %#[javac]\ %p^,%-C%.%# The 'errorformat' can also be configured to handle ant together with either javac or jikes. If you're using jikes, you should tell ant to use jikes' +E command line switch which forces jikes to generate one-line error messages. This is what the second line (of a build.xml file) below does: > <property name = "build.compiler" value = "jikes"/> <property name = "build.compiler.emacs" value = "true"/> The 'errorformat' which handles ant with both javac and jikes is: > :set efm=\ %#[javac]\ %#%f:%l:%c:%*\\d:%*\\d:\ %t%[%^:]%#:%m, \%A\ %#[javac]\ %f:%l:\ %m,%-Z\ %#[javac]\ %p^,%-C%.%# < *errorformat-jade* parsing jade (see http://www.jclark.com/) errors is simple: > :set efm=jade:%f:%l:%c:%t:%m < *errorformat-LaTeX* The following is an example how an 'errorformat' string can be specified for the (La)TeX typesetting system which displays error messages over multiple lines. The output of ":clist" and ":cc" etc. commands displays multi-lines in a single line, leading white space is removed. It should be easy to adopt the above LaTeX errorformat to any compiler output consisting of multi-line errors. The commands can be placed in a |vimrc| file or some other Vim script file, e.g. a script containing LaTeX related stuff which is loaded only when editing LaTeX sources. Make sure to copy all lines of the example (in the given order), afterwards remove the comment lines. For the '\' notation at the start of some lines see |line-continuation|. First prepare 'makeprg' such that LaTeX will report multiple errors; do not stop when the first error has occurred: > :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} < Start of multi-line error messages: > :set efm=%E!\ LaTeX\ %trror:\ %m, \%E!\ %m, < Start of multi-line warning messages; the first two also include the line number. Meaning of some regular expressions: - "%.%#" (".*") matches a (possibly empty) string - "%*\\d" ("\d\+") matches a number > \%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#, \%+W%.%#\ at\ lines\ %l--%*\\d, \%WLaTeX\ %.%#Warning:\ %m, < Possible continuations of error/warning messages; the first one also includes the line number: > \%Cl.%l\ %m, \%+C\ \ %m., \%+C%.%#-%.%#, \%+C%.%#[]%.%#, \%+C[]%.%#, \%+C%.%#%[{}\\]%.%#, \%+C<%.%#>%.%#, \%C\ \ %m, < Lines that match the following patterns do not contain any important information; do not include them in messages: > \%-GSee\ the\ LaTeX%m, \%-GType\ \ H\ <return>%m, \%-G\ ...%.%#, \%-G%.%#\ (C)\ %.%#, \%-G(see\ the\ transcript%.%#), < Generally exclude any empty or whitespace-only line from being displayed: > \%-G\\s%#, < The LaTeX output log does not specify the names of erroneous source files per line; rather they are given globally, enclosed in parentheses. The following patterns try to match these names and store them in an internal stack. The patterns possibly scan over the same input line (one after another), the trailing "%r" conversion indicates the "rest" of the line that will be parsed in the next go until the end of line is reached. Overread a file name enclosed in '('...')'; do not push it on a stack since the file apparently does not contain any error: > \%+O(%f)%r, < Push a file name onto the stack. The name is given after '(': > \%+P(%f%r, \%+P\ %\\=(%f%r, \%+P%*[^()](%f%r, \%+P[%\\d%[^()]%#(%f%r, < Pop the last stored file name when a ')' is scanned: > \%+Q)%r, \%+Q%*[^()])%r, \%+Q[%\\d%*[^()])%r Note that in some cases file names in the LaTeX output log cannot be parsed properly. The parser might have been messed up by unbalanced parentheses then. The above example tries to catch the most relevant cases only. You can customize the given setting to suit your own purposes, for example, all the annoying "Overfull ..." warnings could be excluded from being recognized as an error. Alternatively to filtering the LaTeX compiler output, it is also possible to directly read the *.log file that is produced by the [La]TeX compiler. This contains even more useful information about possible error causes. However, to properly parse such a complex file, an external filter should be used. See the description further above how to make such a filter known by Vim. *errorformat-Perl* In $VIMRUNTIME/tools you can find the efm_perl.pl script, which filters Perl error messages into a format that quickfix mode will understand. See the start of the file about how to use it. (This script is deprecated, see |compiler-perl|.) vim:tw=78:ts=8:ft=help:norl: PK�������!�H!z��z����vim80/doc/autocmd.txtnu�[��������*autocmd.txt* For Vim version 8.0. Last change: 2018 Apr 19 VIM REFERENCE MANUAL by Bram Moolenaar Automatic commands *autocommand* For a basic explanation, see section |40.3| in the user manual. 1. Introduction |autocmd-intro| 2. Defining autocommands |autocmd-define| 3. Removing autocommands |autocmd-remove| 4. Listing autocommands |autocmd-list| 5. Events |autocmd-events| 6. Patterns |autocmd-patterns| 7. Buffer-local autocommands |autocmd-buflocal| 8. Groups |autocmd-groups| 9. Executing autocommands |autocmd-execute| 10. Using autocommands |autocmd-use| 11. Disabling autocommands |autocmd-disable| {Vi does not have any of these commands} ============================================================================== 1. Introduction *autocmd-intro* You can specify commands to be executed automatically when reading or writing a file, when entering or leaving a buffer or window, and when exiting Vim. For example, you can create an autocommand to set the 'cindent' option for files matching *.c. You can also use autocommands to implement advanced features, such as editing compressed files (see |gzip-example|). The usual place to put autocommands is in your .vimrc or .exrc file. *E203* *E204* *E143* *E855* *E937* *E952* WARNING: Using autocommands is very powerful, and may lead to unexpected side effects. Be careful not to destroy your text. - It's a good idea to do some testing on an expendable copy of a file first. For example: If you use autocommands to decompress a file when starting to edit it, make sure that the autocommands for compressing when writing work correctly. - Be prepared for an error halfway through (e.g., disk full). Vim will mostly be able to undo the changes to the buffer, but you may have to clean up the changes to other files by hand (e.g., compress a file that has been decompressed). - If the BufRead* events allow you to edit a compressed file, the FileRead* events should do the same (this makes recovery possible in some rare cases). It's a good idea to use the same autocommands for the File* and Buf* events when possible. ============================================================================== 2. Defining autocommands *autocmd-define* *:au* *:autocmd* :au[tocmd] [group] {event} {pat} [nested] {cmd} Add {cmd} to the list of commands that Vim will execute automatically on {event} for a file matching {pat} |autocmd-patterns|. Note: A quote character is seen as argument to the :autocmd and won't start a comment. Vim always adds the {cmd} after existing autocommands, so that the autocommands execute in the order in which they were given. See |autocmd-nested| for [nested]. The special pattern <buffer> or <buffer=N> defines a buffer-local autocommand. See |autocmd-buflocal|. Note: The ":autocmd" command can only be followed by another command when the '|' appears before {cmd}. This works: > :augroup mine | au! BufRead | augroup END But this sees "augroup" as part of the defined command: > :augroup mine | au! BufRead * | augroup END :augroup mine | au BufRead * set tw=70 | augroup END Instead you can put the group name into the command: > :au! mine BufRead * :au mine BufRead * set tw=70 Or use `:execute`: > :augroup mine | exe "au! BufRead *" | augroup END :augroup mine | exe "au BufRead * set tw=70" | augroup END Note that special characters (e.g., "%", "<cword>") in the ":autocmd" arguments are not expanded when the autocommand is defined. These will be expanded when the Event is recognized, and the {cmd} is executed. The only exception is that "<sfile>" is expanded when the autocmd is defined. Example: > :au BufNewFile,BufRead *.html so <sfile>:h/html.vim Here Vim expands <sfile> to the name of the file containing this line. `:autocmd` adds to the list of autocommands regardless of whether they are already present. When your .vimrc file is sourced twice, the autocommands will appear twice. To avoid this, define your autocommands in a group, so that you can easily clear them: > augroup vimrc " Remove all vimrc autocommands autocmd! au BufNewFile,BufRead *.html so <sfile>:h/html.vim augroup END If you don't want to remove all autocommands, you can instead use a variable to ensure that Vim includes the autocommands only once: > :if !exists("autocommands_loaded") : let autocommands_loaded = 1 : au ... :endif When the [group] argument is not given, Vim uses the current group (as defined with ":augroup"); otherwise, Vim uses the group defined with [group]. Note that [group] must have been defined before. You cannot define a new group with ":au group ..."; use ":augroup" for that. While testing autocommands, you might find the 'verbose' option to be useful: > :set verbose=9 This setting makes Vim echo the autocommands as it executes them. When defining an autocommand in a script, it will be able to call functions local to the script and use mappings local to the script. When the event is triggered and the command executed, it will run in the context of the script it was defined in. This matters if |<SID>| is used in a command. When executing the commands, the message from one command overwrites a previous message. This is different from when executing the commands manually. Mostly the screen will not scroll up, thus there is no hit-enter prompt. When one command outputs two messages this can happen anyway. ============================================================================== 3. Removing autocommands *autocmd-remove* :au[tocmd]! [group] {event} {pat} [nested] {cmd} Remove all autocommands associated with {event} and {pat}, and add the command {cmd}. See |autocmd-nested| for [nested]. :au[tocmd]! [group] {event} {pat} Remove all autocommands associated with {event} and {pat}. :au[tocmd]! [group] * {pat} Remove all autocommands associated with {pat} for all events. :au[tocmd]! [group] {event} Remove ALL autocommands for {event}. Warning: You should not do this without a group for |BufRead| and other common events, it can break plugins, syntax highlighting, etc. :au[tocmd]! [group] Remove ALL autocommands. Note: a quote will be seen as argument to the :autocmd and won't start a comment. Warning: You should normally not do this without a group, it breaks plugins, syntax highlighting, etc. When the [group] argument is not given, Vim uses the current group (as defined with ":augroup"); otherwise, Vim uses the group defined with [group]. ============================================================================== 4. Listing autocommands *autocmd-list* :au[tocmd] [group] {event} {pat} Show the autocommands associated with {event} and {pat}. :au[tocmd] [group] * {pat} Show the autocommands associated with {pat} for all events. :au[tocmd] [group] {event} Show all autocommands for {event}. :au[tocmd] [group] Show all autocommands. If you provide the [group] argument, Vim lists only the autocommands for [group]; otherwise, Vim lists the autocommands for ALL groups. Note that this argument behavior differs from that for defining and removing autocommands. In order to list buffer-local autocommands, use a pattern in the form <buffer> or <buffer=N>. See |autocmd-buflocal|. *:autocmd-verbose* When 'verbose' is non-zero, listing an autocommand will also display where it was last defined. Example: > :verbose autocmd BufEnter FileExplorer BufEnter * call s:LocalBrowse(expand("<amatch>")) Last set from /usr/share/vim/vim-7.0/plugin/NetrwPlugin.vim < See |:verbose-cmd| for more information. ============================================================================== 5. Events *autocmd-events* *E215* *E216* You can specify a comma-separated list of event names. No white space can be used in this list. The command applies to all the events in the list. For READING FILES there are four kinds of events possible: BufNewFile starting to edit a non-existent file BufReadPre BufReadPost starting to edit an existing file FilterReadPre FilterReadPost read the temp file with filter output FileReadPre FileReadPost any other file read Vim uses only one of these four kinds when reading a file. The "Pre" and "Post" events are both triggered, before and after reading the file. Note that the autocommands for the *ReadPre events and all the Filter events are not allowed to change the current buffer (you will get an error message if this happens). This is to prevent the file to be read into the wrong buffer. Note that the 'modified' flag is reset AFTER executing the BufReadPost and BufNewFile autocommands. But when the 'modified' option was set by the autocommands, this doesn't happen. You can use the 'eventignore' option to ignore a number of events or all events. *autocommand-events* *{event}* Vim recognizes the following events. Vim ignores the case of event names (e.g., you can use "BUFread" or "bufread" instead of "BufRead"). First an overview by function with a short explanation. Then the list alphabetically with full explanations |autocmd-events-abc|. Name triggered by ~ Reading |BufNewFile| starting to edit a file that doesn't exist |BufReadPre| starting to edit a new buffer, before reading the file |BufRead| starting to edit a new buffer, after reading the file |BufReadPost| starting to edit a new buffer, after reading the file |BufReadCmd| before starting to edit a new buffer |Cmd-event| |FileReadPre| before reading a file with a ":read" command |FileReadPost| after reading a file with a ":read" command |FileReadCmd| before reading a file with a ":read" command |Cmd-event| |FilterReadPre| before reading a file from a filter command |FilterReadPost| after reading a file from a filter command |StdinReadPre| before reading from stdin into the buffer |StdinReadPost| After reading from the stdin into the buffer Writing |BufWrite| starting to write the whole buffer to a file |BufWritePre| starting to write the whole buffer to a file |BufWritePost| after writing the whole buffer to a file |BufWriteCmd| before writing the whole buffer to a file |Cmd-event| |FileWritePre| starting to write part of a buffer to a file |FileWritePost| after writing part of a buffer to a file |FileWriteCmd| before writing part of a buffer to a file |Cmd-event| |FileAppendPre| starting to append to a file |FileAppendPost| after appending to a file |FileAppendCmd| before appending to a file |Cmd-event| |FilterWritePre| starting to write a file for a filter command or diff |FilterWritePost| after writing a file for a filter command or diff Buffers |BufAdd| just after adding a buffer to the buffer list |BufCreate| just after adding a buffer to the buffer list |BufDelete| before deleting a buffer from the buffer list |BufWipeout| before completely deleting a buffer |TerminalOpen| after a terminal buffer was created |BufFilePre| before changing the name of the current buffer |BufFilePost| after changing the name of the current buffer |BufEnter| after entering a buffer |BufLeave| before leaving to another buffer |BufWinEnter| after a buffer is displayed in a window |BufWinLeave| before a buffer is removed from a window |BufUnload| before unloading a buffer |BufHidden| just after a buffer has become hidden |BufNew| just after creating a new buffer |SwapExists| detected an existing swap file Options |FileType| when the 'filetype' option has been set |Syntax| when the 'syntax' option has been set |EncodingChanged| after the 'encoding' option has been changed |TermChanged| after the value of 'term' has changed |OptionSet| after setting any option Startup and exit |VimEnter| after doing all the startup stuff |GUIEnter| after starting the GUI successfully |GUIFailed| after starting the GUI failed |TermResponse| after the terminal response to |t_RV| is received |QuitPre| when using `:quit`, before deciding whether to exit |ExitPre| when using a command that may make Vim exit |VimLeavePre| before exiting Vim, before writing the viminfo file |VimLeave| before exiting Vim, after writing the viminfo file Various |FileChangedShell| Vim notices that a file changed since editing started |FileChangedShellPost| After handling a file changed since editing started |FileChangedRO| before making the first change to a read-only file |DirChanged| after the working directory has changed |ShellCmdPost| after executing a shell command |ShellFilterPost| after filtering with a shell command |CmdUndefined| a user command is used but it isn't defined |FuncUndefined| a user function is used but it isn't defined |SpellFileMissing| a spell file is used but it can't be found |SourcePre| before sourcing a Vim script |SourceCmd| before sourcing a Vim script |Cmd-event| |VimResized| after the Vim window size changed |FocusGained| Vim got input focus |FocusLost| Vim lost input focus |CursorHold| the user doesn't press a key for a while |CursorHoldI| the user doesn't press a key for a while in Insert mode |CursorMoved| the cursor was moved in Normal mode |CursorMovedI| the cursor was moved in Insert mode |WinNew| after creating a new window |TabNew| after creating a new tab page |TabClosed| after closing a tab page |WinEnter| after entering another window |WinLeave| before leaving a window |TabEnter| after entering another tab page |TabLeave| before leaving a tab page |CmdwinEnter| after entering the command-line window |CmdwinLeave| before leaving the command-line window |CmdlineChanged| after a change was made to the command-line text |CmdlineEnter| after the cursor moves to the command line |CmdlineLeave| before the cursor leaves the command line |InsertEnter| starting Insert mode |InsertChange| when typing <Insert> while in Insert or Replace mode |InsertLeave| when leaving Insert mode |InsertCharPre| when a character was typed in Insert mode, before inserting it |TextChanged| after a change was made to the text in Normal mode |TextChangedI| after a change was made to the text in Insert mode when popup menu is not visible |TextChangedP| after a change was made to the text in Insert mode when popup menu visible |TextYankPost| after text is yanked or deleted |ColorScheme| after loading a color scheme |RemoteReply| a reply from a server Vim was received |QuickFixCmdPre| before a quickfix command is run |QuickFixCmdPost| after a quickfix command is run |SessionLoadPost| after loading a session file |MenuPopup| just before showing the popup menu |CompleteDone| after Insert mode completion is done |User| to be used in combination with ":doautocmd" The alphabetical list of autocommand events: *autocmd-events-abc* *BufCreate* *BufAdd* BufAdd or BufCreate Just after creating a new buffer which is added to the buffer list, or adding a buffer to the buffer list. Also used just after a buffer in the buffer list has been renamed. The BufCreate event is for historic reasons. NOTE: When this autocommand is executed, the current buffer "%" may be different from the buffer being created "<afile>". *BufDelete* BufDelete Before deleting a buffer from the buffer list. The BufUnload may be called first (if the buffer was loaded). Also used just before a buffer in the buffer list is renamed. NOTE: When this autocommand is executed, the current buffer "%" may be different from the buffer being deleted "<afile>" and "<abuf>". Don't change to another buffer, it will cause problems. *BufEnter* BufEnter After entering a buffer. Useful for setting options for a file type. Also executed when starting to edit a buffer, after the BufReadPost autocommands. *BufFilePost* BufFilePost After changing the name of the current buffer with the ":file" or ":saveas" command. *BufFilePre* BufFilePre Before changing the name of the current buffer with the ":file" or ":saveas" command. *BufHidden* BufHidden Just after a buffer has become hidden. That is, when there are no longer windows that show the buffer, but the buffer is not unloaded or deleted. Not used for ":qa" or ":q" when exiting Vim. NOTE: When this autocommand is executed, the current buffer "%" may be different from the buffer being unloaded "<afile>". *BufLeave* BufLeave Before leaving to another buffer. Also when leaving or closing the current window and the new current window is not for the same buffer. Not used for ":qa" or ":q" when exiting Vim. *BufNew* BufNew Just after creating a new buffer. Also used just after a buffer has been renamed. When the buffer is added to the buffer list BufAdd will be triggered too. NOTE: When this autocommand is executed, the current buffer "%" may be different from the buffer being created "<afile>". *BufNewFile* BufNewFile When starting to edit a file that doesn't exist. Can be used to read in a skeleton file. *BufRead* *BufReadPost* BufRead or BufReadPost When starting to edit a new buffer, after reading the file into the buffer, before executing the modelines. See |BufWinEnter| for when you need to do something after processing the modelines. This does NOT work for ":r file". Not used when the file doesn't exist. Also used after successfully recovering a file. Also triggered for the filetypedetect group when executing ":filetype detect" and when writing an unnamed buffer in a way that the buffer gets a name. *BufReadCmd* BufReadCmd Before starting to edit a new buffer. Should read the file into the buffer. |Cmd-event| *BufReadPre* *E200* *E201* BufReadPre When starting to edit a new buffer, before reading the file into the buffer. Not used if the file doesn't exist. *BufUnload* BufUnload Before unloading a buffer. This is when the text in the buffer is going to be freed. This may be after a BufWritePost and before a BufDelete. Also used for all buffers that are loaded when Vim is going to exit. NOTE: When this autocommand is executed, the current buffer "%" may be different from the buffer being unloaded "<afile>". Don't change to another buffer or window, it will cause problems! When exiting and v:dying is 2 or more this event is not triggered. *BufWinEnter* BufWinEnter After a buffer is displayed in a window. This can be when the buffer is loaded (after processing the modelines) or when a hidden buffer is displayed in a window (and is no longer hidden). Does not happen for |:split| without arguments, since you keep editing the same buffer, or ":split" with a file that's already open in a window, because it re-uses an existing buffer. But it does happen for a ":split" with the name of the current buffer, since it reloads that buffer. *BufWinLeave* BufWinLeave Before a buffer is removed from a window. Not when it's still visible in another window. Also triggered when exiting. It's triggered before BufUnload or BufHidden. NOTE: When this autocommand is executed, the current buffer "%" may be different from the buffer being unloaded "<afile>". When exiting and v:dying is 2 or more this event is not triggered. *BufWipeout* BufWipeout Before completely deleting a buffer. The BufUnload and BufDelete events may be called first (if the buffer was loaded and was in the buffer list). Also used just before a buffer is renamed (also when it's not in the buffer list). NOTE: When this autocommand is executed, the current buffer "%" may be different from the buffer being deleted "<afile>". Don't change to another buffer, it will cause problems. *BufWrite* *BufWritePre* BufWrite or BufWritePre Before writing the whole buffer to a file. *BufWriteCmd* BufWriteCmd Before writing the whole buffer to a file. Should do the writing of the file and reset 'modified' if successful, unless '+' is in 'cpo' and writing to another file |cpo-+|. The buffer contents should not be changed. When the command resets 'modified' the undo information is adjusted to mark older undo states as 'modified', like |:write| does. |Cmd-event| *BufWritePost* BufWritePost After writing the whole buffer to a file (should undo the commands for BufWritePre). *CmdUndefined* CmdUndefined When a user command is used but it isn't defined. Useful for defining a command only when it's used. The pattern is matched against the command name. Both <amatch> and <afile> are set to the name of the command. NOTE: Autocompletion won't work until the command is defined. An alternative is to always define the user command and have it invoke an autoloaded function. See |autoload|. *CmdlineChanged* CmdlineChanged After a change was made to the text in the command line. Be careful not to mess up the command line, it may cause Vim to lock up. <afile> is set to a single character, indicating the type of command-line. |cmdwin-char| *CmdlineEnter* CmdlineEnter After moving the cursor to the command line, where the user can type a command or search string. <afile> is set to a single character, indicating the type of command-line. |cmdwin-char| *CmdlineLeave* CmdlineLeave Before leaving the command line. Also when abandoning the command line, after typing CTRL-C or <Esc>. When the commands result in an error the command line is still executed. <afile> is set to a single character, indicating the type of command-line. |cmdwin-char| *CmdwinEnter* CmdwinEnter After entering the command-line window. Useful for setting options specifically for this special type of window. This is triggered _instead_ of BufEnter and WinEnter. <afile> is set to a single character, indicating the type of command-line. |cmdwin-char| *CmdwinLeave* CmdwinLeave Before leaving the command-line window. Useful to clean up any global setting done with CmdwinEnter. This is triggered _instead_ of BufLeave and WinLeave. <afile> is set to a single character, indicating the type of command-line. |cmdwin-char| *ColorScheme* ColorScheme After loading a color scheme. |:colorscheme| The pattern is matched against the colorscheme name. <afile> can be used for the name of the actual file where this option was set, and <amatch> for the new colorscheme name. *CompleteDone* CompleteDone After Insert mode completion is done. Either when something was completed or abandoning completion. |ins-completion| The |v:completed_item| variable contains information about the completed item. *CursorHold* CursorHold When the user doesn't press a key for the time specified with 'updatetime'. Not re-triggered until the user has pressed a key (i.e. doesn't fire every 'updatetime' ms if you leave Vim to make some coffee. :) See |CursorHold-example| for previewing tags. This event is only triggered in Normal mode. It is not triggered when waiting for a command argument to be typed, or a movement after an operator. While recording the CursorHold event is not triggered. |q| *<CursorHold>* Internally the autocommand is triggered by the <CursorHold> key. In an expression mapping |getchar()| may see this character. Note: Interactive commands cannot be used for this event. There is no hit-enter prompt, the screen is updated directly (when needed). Note: In the future there will probably be another option to set the time. Hint: to force an update of the status lines use: > :let &ro = &ro < {only on Amiga, Unix, Win32, MSDOS and all GUI versions} *CursorHoldI* CursorHoldI Just like CursorHold, but in Insert mode. Not triggered when waiting for another key, e.g. after CTRL-V, and not when in CTRL-X mode |insert_expand|. *CursorMoved* CursorMoved After the cursor was moved in Normal or Visual mode. Also when the text of the cursor line has been changed, e.g., with "x", "rx" or "p". Not triggered when there is typeahead or when an operator is pending. For an example see |match-parens|. Careful: This is triggered very often, don't do anything that the user does not expect or that is slow. *CursorMovedI* CursorMovedI After the cursor was moved in Insert mode. Not triggered when the popup menu is visible. Otherwise the same as CursorMoved. *EncodingChanged* EncodingChanged Fires off after the 'encoding' option has been changed. Useful to set up fonts, for example. *FileAppendCmd* FileAppendCmd Before appending to a file. Should do the appending to the file. Use the '[ and '] marks for the range of lines.|Cmd-event| *FileAppendPost* FileAppendPost After appending to a file. *FileAppendPre* FileAppendPre Before appending to a file. Use the '[ and '] marks for the range of lines. *FileChangedRO* FileChangedRO Before making the first change to a read-only file. Can be used to check-out the file from a source control system. Not triggered when the change was caused by an autocommand. This event is triggered when making the first change in a buffer or the first change after 'readonly' was set, just before the change is applied to the text. WARNING: If the autocommand moves the cursor the effect of the change is undefined. *E788* It is not allowed to change to another buffer here. You can reload the buffer but not edit another one. *E881* If the number of lines changes saving for undo may fail and the change will be aborted. *DirChanged* DirChanged The working directory has changed in response to the |:cd| or |:lcd| commands, or as a result of the 'autochdir' option. The pattern can be: "window" to trigger on `:lcd "global" to trigger on `:cd` "auto" to trigger on 'autochdir'. "drop" to trigger on editing a file <afile> is set to the new directory name. *ExitPre* ExitPre When using `:quit`, `:wq` in a way it makes Vim exit, or using `:qall`, just after |QuitPre|. Can be used to close any non-essential window. *FileChangedShell* FileChangedShell When Vim notices that the modification time of a file has changed since editing started. Also when the file attributes of the file change or when the size of the file changes. |timestamp| Mostly triggered after executing a shell command, but also with a |:checktime| command or when gvim regains input focus. This autocommand is triggered for each changed file. It is not used when 'autoread' is set and the buffer was not changed. If a FileChangedShell autocommand is present the warning message and prompt is not given. The |v:fcs_reason| variable is set to indicate what happened and |v:fcs_choice| can be used to tell Vim what to do next. NOTE: When this autocommand is executed, the current buffer "%" may be different from the buffer that was changed, which is in "<afile>". NOTE: The commands must not change the current buffer, jump to another buffer or delete a buffer. *E246* *E811* NOTE: This event never nests, to avoid an endless loop. This means that while executing commands for the FileChangedShell event no other FileChangedShell event will be triggered. *FileChangedShellPost* FileChangedShellPost After handling a file that was changed outside of Vim. Can be used to update the statusline. *FileEncoding* FileEncoding Obsolete. It still works and is equivalent to |EncodingChanged|. *FileReadCmd* FileReadCmd Before reading a file with a ":read" command. Should do the reading of the file. |Cmd-event| *FileReadPost* FileReadPost After reading a file with a ":read" command. Note that Vim sets the '[ and '] marks to the first and last line of the read. This can be used to operate on the lines just read. *FileReadPre* FileReadPre Before reading a file with a ":read" command. *FileType* FileType When the 'filetype' option has been set. The pattern is matched against the filetype. <afile> can be used for the name of the file where this option was set, and <amatch> for the new value of 'filetype'. Navigating to another window or buffer is not allowed. See |filetypes|. *FileWriteCmd* FileWriteCmd Before writing to a file, when not writing the whole buffer. Should do the writing to the file. Should not change the buffer. Use the '[ and '] marks for the range of lines. |Cmd-event| *FileWritePost* FileWritePost After writing to a file, when not writing the whole buffer. *FileWritePre* FileWritePre Before writing to a file, when not writing the whole buffer. Use the '[ and '] marks for the range of lines. *FilterReadPost* FilterReadPost After reading a file from a filter command. Vim checks the pattern against the name of the current buffer as with FilterReadPre. Not triggered when 'shelltemp' is off. *FilterReadPre* *E135* FilterReadPre Before reading a file from a filter command. Vim checks the pattern against the name of the current buffer, not the name of the temporary file that is the output of the filter command. Not triggered when 'shelltemp' is off. *FilterWritePost* FilterWritePost After writing a file for a filter command or making a diff. Vim checks the pattern against the name of the current buffer as with FilterWritePre. Not triggered when 'shelltemp' is off. *FilterWritePre* FilterWritePre Before writing a file for a filter command or making a diff. Vim checks the pattern against the name of the current buffer, not the name of the temporary file that is the output of the filter command. Not triggered when 'shelltemp' is off. *FocusGained* FocusGained When Vim got input focus. Only for the GUI version and a few console versions where this can be detected. *FocusLost* FocusLost When Vim lost input focus. Only for the GUI version and a few console versions where this can be detected. May also happen when a dialog pops up. *FuncUndefined* FuncUndefined When a user function is used but it isn't defined. Useful for defining a function only when it's used. The pattern is matched against the function name. Both <amatch> and <afile> are set to the name of the function. NOTE: When writing Vim scripts a better alternative is to use an autoloaded function. See |autoload-functions|. *GUIEnter* GUIEnter After starting the GUI successfully, and after opening the window. It is triggered before VimEnter when using gvim. Can be used to position the window from a .gvimrc file: > :autocmd GUIEnter * winpos 100 50 < *GUIFailed* GUIFailed After starting the GUI failed. Vim may continue to run in the terminal, if possible (only on Unix and alikes, when connecting the X server fails). You may want to quit Vim: > :autocmd GUIFailed * qall < *InsertChange* InsertChange When typing <Insert> while in Insert or Replace mode. The |v:insertmode| variable indicates the new mode. Be careful not to move the cursor or do anything else that the user does not expect. *InsertCharPre* InsertCharPre When a character is typed in Insert mode, before inserting the char. The |v:char| variable indicates the char typed and can be changed during the event to insert a different character. When |v:char| is set to more than one character this text is inserted literally. It is not allowed to change the text |textlock|. The event is not triggered when 'paste' is set. {only with the +eval feature} *InsertEnter* InsertEnter Just before starting Insert mode. Also for Replace mode and Virtual Replace mode. The |v:insertmode| variable indicates the mode. Be careful not to do anything else that the user does not expect. The cursor is restored afterwards. If you do not want that set |v:char| to a non-empty string. *InsertLeave* InsertLeave When leaving Insert mode. Also when using CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|. *MenuPopup* MenuPopup Just before showing the popup menu (under the right mouse button). Useful for adjusting the menu for what is under the cursor or mouse pointer. The pattern is matched against a single character representing the mode: n Normal v Visual o Operator-pending i Insert c Command line *OptionSet* OptionSet After setting an option. The pattern is matched against the long option name. The |v:option_old| variable indicates the old option value, |v:option_new| variable indicates the newly set value, the |v:option_type| variable indicates whether it's global or local scoped and |<amatch>| indicates what option has been set. Is not triggered on startup and for the 'key' option for obvious reasons. Usage example: Check for the existence of the directory in the 'backupdir' and 'undodir' options, create the directory if it doesn't exist yet. Note: It's a bad idea to reset an option during this autocommand, this may break a plugin. You can always use `:noa` to prevent triggering this autocommand. *QuickFixCmdPre* QuickFixCmdPre Before a quickfix command is run (|:make|, |:lmake|, |:grep|, |:lgrep|, |:grepadd|, |:lgrepadd|, |:vimgrep|, |:lvimgrep|, |:vimgrepadd|, |:lvimgrepadd|, |:cscope|, |:cfile|, |:cgetfile|, |:caddfile|, |:lfile|, |:lgetfile|, |:laddfile|, |:helpgrep|, |:lhelpgrep|, |:cexpr|, |:cgetexpr|, |:caddexpr|, |:cbuffer|, |:cgetbuffer|, |:caddbuffer|). The pattern is matched against the command being run. When |:grep| is used but 'grepprg' is set to "internal" it still matches "grep". This command cannot be used to set the 'makeprg' and 'grepprg' variables. If this command causes an error, the quickfix command is not executed. *QuickFixCmdPost* QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix command is run, before jumping to the first location. For |:cfile| and |:lfile| commands it is run after error file is read and before moving to the first error. See |QuickFixCmdPost-example|. *QuitPre* QuitPre When using `:quit`, `:wq` or `:qall`, before deciding whether it closes the current window or quits Vim. Can be used to close any non-essential window if the current window is the last ordinary window. Also see |ExitPre|. *RemoteReply* RemoteReply When a reply from a Vim that functions as server was received |server2client()|. The pattern is matched against the {serverid}. <amatch> is equal to the {serverid} from which the reply was sent, and <afile> is the actual reply string. Note that even if an autocommand is defined, the reply should be read with |remote_read()| to consume it. *SessionLoadPost* SessionLoadPost After loading the session file created using the |:mksession| command. *ShellCmdPost* ShellCmdPost After executing a shell command with |:!cmd|, |:shell|, |:make| and |:grep|. Can be used to check for any changed files. *ShellFilterPost* ShellFilterPost After executing a shell command with ":{range}!cmd", ":w !cmd" or ":r !cmd". Can be used to check for any changed files. *SourcePre* SourcePre Before sourcing a Vim script. |:source| <afile> is the name of the file being sourced. *SourceCmd* SourceCmd When sourcing a Vim script. |:source| <afile> is the name of the file being sourced. The autocommand must source this file. |Cmd-event| *SpellFileMissing* SpellFileMissing When trying to load a spell checking file and it can't be found. The pattern is matched against the language. <amatch> is the language, 'encoding' also matters. See |spell-SpellFileMissing|. *StdinReadPost* StdinReadPost After reading from the stdin into the buffer, before executing the modelines. Only used when the "-" argument was used when Vim was started |--|. *StdinReadPre* StdinReadPre Before reading from stdin into the buffer. Only used when the "-" argument was used when Vim was started |--|. *SwapExists* SwapExists Detected an existing swap file when starting to edit a file. Only when it is possible to select a way to handle the situation, when Vim would ask the user what to do. The |v:swapname| variable holds the name of the swap file found, <afile> the file being edited. |v:swapcommand| may contain a command to be executed in the opened file. The commands should set the |v:swapchoice| variable to a string with one character to tell Vim what should be done next: 'o' open read-only 'e' edit the file anyway 'r' recover 'd' delete the swap file 'q' quit, don't edit the file 'a' abort, like hitting CTRL-C When set to an empty string the user will be asked, as if there was no SwapExists autocmd. *E812* It is not allowed to change to another buffer, change a buffer name or change directory here. {only available with the +eval feature} *Syntax* Syntax When the 'syntax' option has been set. The pattern is matched against the syntax name. <afile> can be used for the name of the file where this option was set, and <amatch> for the new value of 'syntax'. See |:syn-on|. *TabClosed* TabClosed After closing a tab page. *TabEnter* TabEnter Just after entering a tab page. |tab-page| After triggering the WinEnter and before triggering the BufEnter event. *TabLeave* TabLeave Just before leaving a tab page. |tab-page| A WinLeave event will have been triggered first. *TabNew* TabNew When a tab page was created. |tab-page| A WinEnter event will have been triggered first, TabEnter follows. *TermChanged* TermChanged After the value of 'term' has changed. Useful for re-loading the syntax file to update the colors, fonts and other terminal-dependent settings. Executed for all loaded buffers. *TerminalOpen* TerminalOpen Just after a terminal buffer was created, with `:terminal` or |term_start()|. This event is triggered even if the buffer is created without a window, with the ++hidden option. *TermResponse* TermResponse After the response to |t_RV| is received from the terminal. The value of |v:termresponse| can be used to do things depending on the terminal version. Note that this event may be triggered halfway executing another event, especially if file I/O, a shell command or anything else that takes time is involved. *TextChanged* TextChanged After a change was made to the text in the current buffer in Normal mode. That is when |b:changedtick| has changed. Not triggered when there is typeahead or when an operator is pending. Careful: This is triggered very often, don't do anything that the user does not expect or that is slow. *TextChangedI* TextChangedI After a change was made to the text in the current buffer in Insert mode. Not triggered when the popup menu is visible. Otherwise the same as TextChanged. *TextChangedP* TextChangedP After a change was made to the text in the current buffer in Insert mode, only when the popup menu is visible. Otherwise the same as TextChanged. *TextYankPost* TextYankPost After text has been yanked or deleted in the current buffer. The following values of |v:event| can be used to determine the operation that triggered this autocmd: operator The operation performed. regcontents Text that was stored in the register, as a list of lines, like with: > getreg(r, 1, 1) < regname Name of the |register| or empty string for the unnamed register. regtype Type of the register, see |getregtype()|. Not triggered when |quote_| is used nor when called recursively. It is not allowed to change the buffer text, see |textlock|. {only when compiled with the +eval feature} *User* User Never executed automatically. To be used for autocommands that are only executed with ":doautocmd". Note that when `:doautocmd User MyEvent` is used while there are no matching autocommands, you will get an error. If you don't want that, define a dummy autocommand yourself. *UserGettingBored* UserGettingBored When the user presses the same key 42 times. Just kidding! :-) *VimEnter* VimEnter After doing all the startup stuff, including loading .vimrc files, executing the "-c cmd" arguments, creating all windows and loading the buffers in them. Just before this event is triggered the |v:vim_did_enter| variable is set, so that you can do: > if v:vim_did_enter call s:init() else au VimEnter * call s:init() endif < *VimLeave* VimLeave Before exiting Vim, just after writing the .viminfo file. Executed only once, like VimLeavePre. To detect an abnormal exit use |v:dying|. When v:dying is 2 or more this event is not triggered. *VimLeavePre* VimLeavePre Before exiting Vim, just before writing the .viminfo file. This is executed only once, if there is a match with the name of what happens to be the current buffer when exiting. Mostly useful with a "*" pattern. > :autocmd VimLeavePre * call CleanupStuff() < To detect an abnormal exit use |v:dying|. When v:dying is 2 or more this event is not triggered. *VimResized* VimResized After the Vim window was resized, thus 'lines' and/or 'columns' changed. Not when starting up though. *WinEnter* WinEnter After entering another window. Not done for the first window, when Vim has just started. Useful for setting the window height. If the window is for another buffer, Vim executes the BufEnter autocommands after the WinEnter autocommands. Note: For split and tabpage commands the WinEnter event is triggered after the split or tab command but before the file is loaded. *WinLeave* WinLeave Before leaving a window. If the window to be entered next is for a different buffer, Vim executes the BufLeave autocommands before the WinLeave autocommands (but not for ":new"). Not used for ":qa" or ":q" when exiting Vim. *WinNew* WinNew When a new window was created. Not done for the first window, when Vim has just started. Before a WinEnter event. ============================================================================== 6. Patterns *autocmd-patterns* *{pat}* The {pat} argument can be a comma separated list. This works as if the command was given with each pattern separately. Thus this command: > :autocmd BufRead *.txt,*.info set et Is equivalent to: > :autocmd BufRead *.txt set et :autocmd BufRead *.info set et The file pattern {pat} is tested for a match against the file name in one of two ways: 1. When there is no '/' in the pattern, Vim checks for a match against only the tail part of the file name (without its leading directory path). 2. When there is a '/' in the pattern, Vim checks for a match against both the short file name (as you typed it) and the full file name (after expanding it to a full path and resolving symbolic links). The special pattern <buffer> or <buffer=N> is used for buffer-local autocommands |autocmd-buflocal|. This pattern is not matched against the name of a buffer. Examples: > :autocmd BufRead *.txt set et Set the 'et' option for all text files. > :autocmd BufRead /vim/src/*.c set cindent Set the 'cindent' option for C files in the /vim/src directory. > :autocmd BufRead /tmp/*.c set ts=5 If you have a link from "/tmp/test.c" to "/home/nobody/vim/src/test.c", and you start editing "/tmp/test.c", this autocommand will match. Note: To match part of a path, but not from the root directory, use a '*' as the first character. Example: > :autocmd BufRead */doc/*.txt set tw=78 This autocommand will for example be executed for "/tmp/doc/xx.txt" and "/usr/home/piet/doc/yy.txt". The number of directories does not matter here. The file name that the pattern is matched against is after expanding wildcards. Thus if you issue this command: > :e $ROOTDIR/main.$EXT The argument is first expanded to: > /usr/root/main.py Before it's matched with the pattern of the autocommand. Careful with this when using events like FileReadCmd, the value of <amatch> may not be what you expect. Environment variables can be used in a pattern: > :autocmd BufRead $VIMRUNTIME/doc/*.txt set expandtab And ~ can be used for the home directory (if $HOME is defined): > :autocmd BufWritePost ~/.vimrc so ~/.vimrc :autocmd BufRead ~archive/* set readonly The environment variable is expanded when the autocommand is defined, not when the autocommand is executed. This is different from the command! *file-pattern* The pattern is interpreted like mostly used in file names: * matches any sequence of characters; Unusual: includes path separators ? matches any single character \? matches a '?' . matches a '.' ~ matches a '~' , separates patterns \, matches a ',' { } like \( \) in a |pattern| , inside { }: like \| in a |pattern| \} literal } \{ literal { \\\{n,m\} like \{n,m} in a |pattern| \ special meaning like in a |pattern| [ch] matches 'c' or 'h' [^ch] match any character but 'c' and 'h' Note that for all systems the '/' character is used for path separator (even MS-DOS and OS/2). This was done because the backslash is difficult to use in a pattern and to make the autocommands portable across different systems. It is possible to use |pattern| items, but they may not work as expected, because of the translation done for the above. *autocmd-changes* Matching with the pattern is done when an event is triggered. Changing the buffer name in one of the autocommands, or even deleting the buffer, does not change which autocommands will be executed. Example: > au BufEnter *.foo bdel au BufEnter *.foo set modified This will delete the current buffer and then set 'modified' in what has become the current buffer instead. Vim doesn't take into account that "*.foo" doesn't match with that buffer name. It matches "*.foo" with the name of the buffer at the moment the event was triggered. However, buffer-local autocommands will not be executed for a buffer that has been wiped out with |:bwipe|. After deleting the buffer with |:bdel| the buffer actually still exists (it becomes unlisted), thus the autocommands are still executed. ============================================================================== 7. Buffer-local autocommands *autocmd-buflocal* *autocmd-buffer-local* *<buffer=N>* *<buffer=abuf>* *E680* Buffer-local autocommands are attached to a specific buffer. They are useful if the buffer does not have a name and when the name does not match a specific pattern. But it also means they must be explicitly added to each buffer. Instead of a pattern buffer-local autocommands use one of these forms: <buffer> current buffer <buffer=99> buffer number 99 <buffer=abuf> using <abuf> (only when executing autocommands) |<abuf>| Examples: > :au CursorHold <buffer> echo 'hold' :au CursorHold <buffer=33> echo 'hold' :au BufNewFile * au CursorHold <buffer=abuf> echo 'hold' All the commands for autocommands also work with buffer-local autocommands, simply use the special string instead of the pattern. Examples: > :au! * <buffer> " remove buffer-local autocommands for " current buffer :au! * <buffer=33> " remove buffer-local autocommands for " buffer #33 :bufdo :au! CursorHold <buffer> " remove autocmd for given event for all " buffers :au * <buffer> " list buffer-local autocommands for " current buffer Note that when an autocommand is defined for the current buffer, it is stored with the buffer number. Thus it uses the form "<buffer=12>", where 12 is the number of the current buffer. You will see this when listing autocommands, for example. To test for presence of buffer-local autocommands use the |exists()| function as follows: > :if exists("#CursorHold#<buffer=12>") | ... | endif :if exists("#CursorHold#<buffer>") | ... | endif " for current buffer When a buffer is wiped out its buffer-local autocommands are also gone, of course. Note that when deleting a buffer, e.g., with ":bdel", it is only unlisted, the autocommands are still present. In order to see the removal of buffer-local autocommands: > :set verbose=6 It is not possible to define buffer-local autocommands for a non-existent buffer. ============================================================================== 8. Groups *autocmd-groups* Autocommands can be put together in a group. This is useful for removing or executing a group of autocommands. For example, all the autocommands for syntax highlighting are put in the "highlight" group, to be able to execute ":doautoall highlight BufRead" when the GUI starts. When no specific group is selected, Vim uses the default group. The default group does not have a name. You cannot execute the autocommands from the default group separately; you can execute them only by executing autocommands for all groups. Normally, when executing autocommands automatically, Vim uses the autocommands for all groups. The group only matters when executing autocommands with ":doautocmd" or ":doautoall", or when defining or deleting autocommands. The group name can contain any characters except white space. The group name "end" is reserved (also in uppercase). The group name is case sensitive. Note that this is different from the event name! *:aug* *:augroup* :aug[roup] {name} Define the autocmd group name for the following ":autocmd" commands. The name "end" or "END" selects the default group. To avoid confusion, the name should be different from existing {event} names, as this most likely will not do what you intended. *:augroup-delete* *E367* *W19* *E936* :aug[roup]! {name} Delete the autocmd group {name}. Don't use this if there is still an autocommand using this group! You will get a warning if doing it anyway. when the group is the current group you will get error E936. To enter autocommands for a specific group, use this method: 1. Select the group with ":augroup {name}". 2. Delete any old autocommands with ":au!". 3. Define the autocommands. 4. Go back to the default group with "augroup END". Example: > :augroup uncompress : au! : au BufEnter *.gz %!gunzip :augroup END This prevents having the autocommands defined twice (e.g., after sourcing the .vimrc file again). ============================================================================== 9. Executing autocommands *autocmd-execute* Vim can also execute Autocommands non-automatically. This is useful if you have changed autocommands, or when Vim has executed the wrong autocommands (e.g., the file pattern match was wrong). Note that the 'eventignore' option applies here too. Events listed in this option will not cause any commands to be executed. *:do* *:doau* *:doautocmd* *E217* :do[autocmd] [<nomodeline>] [group] {event} [fname] Apply the autocommands matching [fname] (default: current file name) for {event} to the current buffer. You can use this when the current file name does not match the right pattern, after changing settings, or to execute autocommands for a certain event. It's possible to use this inside an autocommand too, so you can base the autocommands for one extension on another extension. Example: > :au BufEnter *.cpp so ~/.vimrc_cpp :au BufEnter *.cpp doau BufEnter x.c < Be careful to avoid endless loops. See |autocmd-nested|. When the [group] argument is not given, Vim executes the autocommands for all groups. When the [group] argument is included, Vim executes only the matching autocommands for that group. Note: if you use an undefined group name, Vim gives you an error message. *<nomodeline>* After applying the autocommands the modelines are processed, so that their settings overrule the settings from autocommands, like what happens when editing a file. This is skipped when the <nomodeline> argument is present. You probably want to use <nomodeline> for events that are not used when loading a buffer, such as |User|. Processing modelines is also skipped when no matching autocommands were executed. *:doautoa* *:doautoall* :doautoa[ll] [<nomodeline>] [group] {event} [fname] Like ":doautocmd", but apply the autocommands to each loaded buffer. Note that [fname] is used to select the autocommands, not the buffers to which they are applied. Careful: Don't use this for autocommands that delete a buffer, change to another buffer or change the contents of a buffer; the result is unpredictable. This command is intended for autocommands that set options, change highlighting, and things like that. ============================================================================== 10. Using autocommands *autocmd-use* For WRITING FILES there are four possible sets of events. Vim uses only one of these sets for a write command: BufWriteCmd BufWritePre BufWritePost writing the whole buffer FilterWritePre FilterWritePost writing to filter temp file FileAppendCmd FileAppendPre FileAppendPost appending to a file FileWriteCmd FileWritePre FileWritePost any other file write When there is a matching "*Cmd" autocommand, it is assumed it will do the writing. No further writing is done and the other events are not triggered. |Cmd-event| Note that the *WritePost commands should undo any changes to the buffer that were caused by the *WritePre commands; otherwise, writing the file will have the side effect of changing the buffer. Before executing the autocommands, the buffer from which the lines are to be written temporarily becomes the current buffer. Unless the autocommands change the current buffer or delete the previously current buffer, the previously current buffer is made the current buffer again. The *WritePre and *AppendPre autocommands must not delete the buffer from which the lines are to be written. The '[ and '] marks have a special position: - Before the *ReadPre event the '[ mark is set to the line just above where the new lines will be inserted. - Before the *ReadPost event the '[ mark is set to the first line that was just read, the '] mark to the last line. - Before executing the *WriteCmd, *WritePre and *AppendPre autocommands the '[ mark is set to the first line that will be written, the '] mark to the last line. Careful: '[ and '] change when using commands that change the buffer. In commands which expect a file name, you can use "<afile>" for the file name that is being read |:<afile>| (you can also use "%" for the current file name). "<abuf>" can be used for the buffer number of the currently effective buffer. This also works for buffers that doesn't have a name. But it doesn't work for files without a buffer (e.g., with ":r file"). *gzip-example* Examples for reading and writing compressed files: > :augroup gzip : autocmd! : autocmd BufReadPre,FileReadPre *.gz set bin : autocmd BufReadPost,FileReadPost *.gz '[,']!gunzip : autocmd BufReadPost,FileReadPost *.gz set nobin : autocmd BufReadPost,FileReadPost *.gz execute ":doautocmd BufReadPost " . expand("%:r") : autocmd BufWritePost,FileWritePost *.gz !mv <afile> <afile>:r : autocmd BufWritePost,FileWritePost *.gz !gzip <afile>:r : autocmd FileAppendPre *.gz !gunzip <afile> : autocmd FileAppendPre *.gz !mv <afile>:r <afile> : autocmd FileAppendPost *.gz !mv <afile> <afile>:r : autocmd FileAppendPost *.gz !gzip <afile>:r :augroup END The "gzip" group is used to be able to delete any existing autocommands with ":autocmd!", for when the file is sourced twice. ("<afile>:r" is the file name without the extension, see |:_%:|) The commands executed for the BufNewFile, BufRead/BufReadPost, BufWritePost, FileAppendPost and VimLeave events do not set or reset the changed flag of the buffer. When you decompress the buffer with the BufReadPost autocommands, you can still exit with ":q". When you use ":undo" in BufWritePost to undo the changes made by BufWritePre commands, you can still do ":q" (this also makes "ZZ" work). If you do want the buffer to be marked as modified, set the 'modified' option. To execute Normal mode commands from an autocommand, use the ":normal" command. Use with care! If the Normal mode command is not finished, the user needs to type characters (e.g., after ":normal m" you need to type a mark name). If you want the buffer to be unmodified after changing it, reset the 'modified' option. This makes it possible to exit the buffer with ":q" instead of ":q!". *autocmd-nested* *E218* By default, autocommands do not nest. If you use ":e" or ":w" in an autocommand, Vim does not execute the BufRead and BufWrite autocommands for those commands. If you do want this, use the "nested" flag for those commands in which you want nesting. For example: > :autocmd FileChangedShell *.c nested e! The nesting is limited to 10 levels to get out of recursive loops. It's possible to use the ":au" command in an autocommand. This can be a self-modifying command! This can be useful for an autocommand that should execute only once. If you want to skip autocommands for one command, use the |:noautocmd| command modifier or the 'eventignore' option. Note: When reading a file (with ":read file" or with a filter command) and the last line in the file does not have an <EOL>, Vim remembers this. At the next write (with ":write file" or with a filter command), if the same line is written again as the last line in a file AND 'binary' is set, Vim does not supply an <EOL>. This makes a filter command on the just read lines write the same file as was read, and makes a write command on just filtered lines write the same file as was read from the filter. For example, another way to write a compressed file: > :autocmd FileWritePre *.gz set bin|'[,']!gzip :autocmd FileWritePost *.gz undo|set nobin < *autocommand-pattern* You can specify multiple patterns, separated by commas. Here are some examples: > :autocmd BufRead * set tw=79 nocin ic infercase fo=2croq :autocmd BufRead .letter set tw=72 fo=2tcrq :autocmd BufEnter .letter set dict=/usr/lib/dict/words :autocmd BufLeave .letter set dict= :autocmd BufRead,BufNewFile *.c,*.h set tw=0 cin noic :autocmd BufEnter *.c,*.h abbr FOR for (i = 0; i < 3; ++i)<CR>{<CR>}<Esc>O :autocmd BufLeave *.c,*.h unabbr FOR For makefiles (makefile, Makefile, imakefile, makefile.unix, etc.): > :autocmd BufEnter ?akefile* set include=^s\=include :autocmd BufLeave ?akefile* set include& To always start editing C files at the first function: > :autocmd BufRead *.c,*.h 1;/^{ Without the "1;" above, the search would start from wherever the file was entered, rather than from the start of the file. *skeleton* *template* To read a skeleton (template) file when opening a new file: > :autocmd BufNewFile *.c 0r ~/vim/skeleton.c :autocmd BufNewFile *.h 0r ~/vim/skeleton.h :autocmd BufNewFile *.java 0r ~/vim/skeleton.java To insert the current date and time in a *.html file when writing it: > :autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s :fun LastMod() : if line("$") > 20 : let l = 20 : else : let l = line("$") : endif : exe "1," . l . "g/Last modified: /s/Last modified: .*/Last modified: " . : \ strftime("%Y %b %d") :endfun You need to have a line "Last modified: <date time>" in the first 20 lines of the file for this to work. Vim replaces <date time> (and anything in the same line after it) with the current date and time. Explanation: ks mark current position with mark 's' call LastMod() call the LastMod() function to do the work 's return the cursor to the old position The LastMod() function checks if the file is shorter than 20 lines, and then uses the ":g" command to find lines that contain "Last modified: ". For those lines the ":s" command is executed to replace the existing date with the current one. The ":execute" command is used to be able to use an expression for the ":g" and ":s" commands. The date is obtained with the strftime() function. You can change its argument to get another date string. When entering :autocmd on the command-line, completion of events and command names may be done (with <Tab>, CTRL-D, etc.) where appropriate. Vim executes all matching autocommands in the order that you specify them. It is recommended that your first autocommand be used for all files by using "*" as the file pattern. This means that you can define defaults you like here for any settings, and if there is another matching autocommand it will override these. But if there is no other matching autocommand, then at least your default settings are recovered (if entering this file from another for which autocommands did match). Note that "*" will also match files starting with ".", unlike Unix shells. *autocmd-searchpat* Autocommands do not change the current search patterns. Vim saves the current search patterns before executing autocommands then restores them after the autocommands finish. This means that autocommands do not affect the strings highlighted with the 'hlsearch' option. Within autocommands, you can still use search patterns normally, e.g., with the "n" command. If you want an autocommand to set the search pattern, such that it is used after the autocommand finishes, use the ":let @/ =" command. The search-highlighting cannot be switched off with ":nohlsearch" in an autocommand. Use the 'h' flag in the 'viminfo' option to disable search- highlighting when starting Vim. *Cmd-event* When using one of the "*Cmd" events, the matching autocommands are expected to do the file reading, writing or sourcing. This can be used when working with a special kind of file, for example on a remote system. CAREFUL: If you use these events in a wrong way, it may have the effect of making it impossible to read or write the matching files! Make sure you test your autocommands properly. Best is to use a pattern that will never match a normal file name, for example "ftp://*". When defining a BufReadCmd it will be difficult for Vim to recover a crashed editing session. When recovering from the original file, Vim reads only those parts of a file that are not found in the swap file. Since that is not possible with a BufReadCmd, use the |:preserve| command to make sure the original file isn't needed for recovery. You might want to do this only when you expect the file to be modified. For file read and write commands the |v:cmdarg| variable holds the "++enc=" and "++ff=" argument that are effective. These should be used for the command that reads/writes the file. The |v:cmdbang| variable is one when "!" was used, zero otherwise. See the $VIMRUNTIME/plugin/netrwPlugin.vim for examples. ============================================================================== 11. Disabling autocommands *autocmd-disable* To disable autocommands for some time use the 'eventignore' option. Note that this may cause unexpected behavior, make sure you restore 'eventignore' afterwards, using a |:try| block with |:finally|. *:noautocmd* *:noa* To disable autocommands for just one command use the ":noautocmd" command modifier. This will set 'eventignore' to "all" for the duration of the following command. Example: > :noautocmd w fname.gz This will write the file without triggering the autocommands defined by the gzip plugin. vim:tw=78:ts=8:ft=help:norl: PK�������!�"lN��N����vim80/doc/if_ruby.txtnu�[��������*if_ruby.txt* For Vim version 8.0. Last change: 2018 Mar 15 VIM REFERENCE MANUAL by Shugo Maeda The Ruby Interface to Vim *ruby* *Ruby* 1. Commands |ruby-commands| 2. The Vim module |ruby-vim| 3. Vim::Buffer objects |ruby-buffer| 4. Vim::Window objects |ruby-window| 5. Global variables |ruby-globals| 6. Dynamic loading |ruby-dynamic| {Vi does not have any of these commands} *E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273* The Ruby interface only works when Vim was compiled with the |+ruby| feature. The home page for ruby is http://www.ruby-lang.org/. You can find links for downloading Ruby there. ============================================================================== 1. Commands *ruby-commands* *:ruby* *:rub* :rub[y] {cmd} Execute Ruby command {cmd}. A command to try it out: > :ruby print "Hello" :rub[y] << {endpattern} {script} {endpattern} Execute Ruby script {script}. {endpattern} must NOT be preceded by any white space. If {endpattern} is omitted, it defaults to a dot '.' like for the |:append| and |:insert| commands. This form of the |:ruby| command is mainly useful for including ruby code in vim scripts. Note: This command doesn't work when the Ruby feature wasn't compiled in. To avoid errors, see |script-here|. Example Vim script: > function! RedGem() ruby << EOF class Garnet def initialize(s) @buffer = Vim::Buffer.current vimputs(s) end def vimputs(s) @buffer.append(@buffer.count,s) end end gem = Garnet.new("pretty") EOF endfunction < To see what version of Ruby you have: > :ruby print RUBY_VERSION < *:rubydo* *:rubyd* *E265* :[range]rubyd[o] {cmd} Evaluate Ruby command {cmd} for each line in the [range], with $_ being set to the text of each line in turn, without a trailing <EOL>. Setting $_ will change the text, but note that it is not possible to add or delete lines using this command. The default for [range] is the whole file: "1,$". *:rubyfile* *:rubyf* :rubyf[ile] {file} Execute the Ruby script in {file}. This is the same as `:ruby load 'file'`, but allows file name completion. Executing Ruby commands is not possible in the |sandbox|. ============================================================================== 2. The Vim module *ruby-vim* Ruby code gets all of its access to vim via the "Vim" module. Overview: > print "Hello" # displays a message Vim.command(cmd) # execute an Ex command num = Vim::Window.count # gets the number of windows w = Vim::Window[n] # gets window "n" cw = Vim::Window.current # gets the current window num = Vim::Buffer.count # gets the number of buffers b = Vim::Buffer[n] # gets buffer "n" cb = Vim::Buffer.current # gets the current buffer w.height = lines # sets the window height w.cursor = [row, col] # sets the window cursor position pos = w.cursor # gets an array [row, col] name = b.name # gets the buffer file name line = b[n] # gets a line from the buffer num = b.count # gets the number of lines b[n] = str # sets a line in the buffer b.delete(n) # deletes a line b.append(n, str) # appends a line after n line = Vim::Buffer.current.line # gets the current line num = Vim::Buffer.current.line_number # gets the current line number Vim::Buffer.current.line = "test" # sets the current line number < Module Functions: *ruby-message* Vim::message({msg}) Displays the message {msg}. *ruby-set_option* Vim::set_option({arg}) Sets a vim option. {arg} can be any argument that the ":set" command accepts. Note that this means that no spaces are allowed in the argument! See |:set|. *ruby-command* Vim::command({cmd}) Executes Ex command {cmd}. *ruby-evaluate* Vim::evaluate({expr}) Evaluates {expr} using the vim internal expression evaluator (see |expression|). Returns the expression result as: - a Integer if the Vim expression evaluates to a number - a Float if the Vim expression evaluates to a float - a String if the Vim expression evaluates to a string - a Array if the Vim expression evaluates to a Vim list - a Hash if the Vim expression evaluates to a Vim dictionary Dictionaries and lists are recursively expanded. ============================================================================== 3. Vim::Buffer objects *ruby-buffer* Vim::Buffer objects represent vim buffers. Class Methods: current Returns the current buffer object. count Returns the number of buffers. self[{n}] Returns the buffer object for the number {n}. The first number is 0. Methods: name Returns the name of the buffer. number Returns the number of the buffer. count Returns the number of lines. length Returns the number of lines. self[{n}] Returns a line from the buffer. {n} is the line number. self[{n}] = {str} Sets a line in the buffer. {n} is the line number. delete({n}) Deletes a line from the buffer. {n} is the line number. append({n}, {str}) Appends a line after the line {n}. line Returns the current line of the buffer if the buffer is active. line = {str} Sets the current line of the buffer if the buffer is active. line_number Returns the number of the current line if the buffer is active. ============================================================================== 4. Vim::Window objects *ruby-window* Vim::Window objects represent vim windows. Class Methods: current Returns the current window object. count Returns the number of windows. self[{n}] Returns the window object for the number {n}. The first number is 0. Methods: buffer Returns the buffer displayed in the window. height Returns the height of the window. height = {n} Sets the window height to {n}. width Returns the width of the window. width = {n} Sets the window width to {n}. cursor Returns a [row, col] array for the cursor position. cursor = [{row}, {col}] Sets the cursor position to {row} and {col}. ============================================================================== 5. Global variables *ruby-globals* There are two global variables. $curwin The current window object. $curbuf The current buffer object. ============================================================================== 6. Dynamic loading *ruby-dynamic* On MS-Windows and Unix the Ruby library can be loaded dynamically. The |:version| output then includes |+ruby/dyn|. This means that Vim will search for the Ruby DLL file or shared library only when needed. When you don't use the Ruby interface you don't need it, thus you can use Vim even though this library file is not on your system. MS-Windows ~ You need to install the right version of Ruby for this to work. You can find the package to download from: http://rubyinstaller.org/downloads/ Currently that is rubyinstaller-2.2.5.exe To use the Ruby interface the Ruby DLL must be in your search path. In a console window type "path" to see what directories are used. The 'rubydll' option can be also used to specify the Ruby DLL. The name of the DLL must match the Ruby version Vim was compiled with. Currently the name is "msvcrt-ruby220.dll". That is for Ruby 2.2.X. To know for sure edit "gvim.exe" and search for "ruby\d*.dll\c". If you want to build Vim with RubyInstaller 1.9 or 2.X using MSVC, you need some tricks. See the src/INSTALLpc.txt for detail. If Vim is built with RubyInstaller 2.4 or later, you may also need to add "C:\Ruby<version>\bin\ruby_builtin_dlls" to the PATH environment variable. Unix ~ The 'rubydll' option can be used to specify the Ruby shared library file instead of DYNAMIC_RUBY_DLL file what was specified at compile time. The version of the shared library must match the Ruby version Vim was compiled with. ============================================================================== vim:tw=78:ts=8:ft=help:norl: PK�������!�=tG��G����vim80/doc/usr_21.txtnu�[��������*usr_21.txt* For Vim version 8.0. Last change: 2012 Nov 02 VIM USER MANUAL - by Bram Moolenaar Go away and come back This chapter goes into mixing the use of other programs with Vim. Either by executing program from inside Vim or by leaving Vim and coming back later. Furthermore, this is about the ways to remember the state of Vim and restore it later. |21.1| Suspend and resume |21.2| Executing shell commands |21.3| Remembering information; viminfo |21.4| Sessions |21.5| Views |21.6| Modelines Next chapter: |usr_22.txt| Finding the file to edit Previous chapter: |usr_20.txt| Typing command-line commands quickly Table of contents: |usr_toc.txt| ============================================================================== *21.1* Suspend and resume Like most Unix programs Vim can be suspended by pressing CTRL-Z. This stops Vim and takes you back to the shell it was started in. You can then do any other commands until you are bored with them. Then bring back Vim with the "fg" command. > CTRL-Z {any sequence of shell commands} fg You are right back where you left Vim, nothing has changed. In case pressing CTRL-Z doesn't work, you can also use ":suspend". Don't forget to bring Vim back to the foreground, you would lose any changes that you made! Only Unix has support for this. On other systems Vim will start a shell for you. This also has the functionality of being able to execute shell commands. But it's a new shell, not the one that you started Vim from. When you are running the GUI you can't go back to the shell where Vim was started. CTRL-Z will minimize the Vim window instead. ============================================================================== *21.2* Executing shell commands To execute a single shell command from Vim use ":!{command}". For example, to see a directory listing: > :!ls :!dir The first one is for Unix, the second one for MS-Windows. Vim will execute the program. When it ends you will get a prompt to hit <Enter>. This allows you to have a look at the output from the command before returning to the text you were editing. The "!" is also used in other places where a program is run. Let's take a look at an overview: :!{program} execute {program} :r !{program} execute {program} and read its output :w !{program} execute {program} and send text to its input :[range]!{program} filter text through {program} Notice that the presence of a range before "!{program}" makes a big difference. Without it executes the program normally, with the range a number of text lines is filtered through the program. Executing a whole row of programs this way is possible. But a shell is much better at it. You can start a new shell this way: > :shell This is similar to using CTRL-Z to suspend Vim. The difference is that a new shell is started. When using the GUI the shell will be using the Vim window for its input and output. Since Vim is not a terminal emulator, this will not work perfectly. If you have trouble, try toggling the 'guipty' option. If this still doesn't work well enough, start a new terminal to run the shell in. For example with: > :!xterm& ============================================================================== *21.3* Remembering information; viminfo After editing for a while you will have text in registers, marks in various files, a command line history filled with carefully crafted commands. When you exit Vim all of this is lost. But you can get it back! The viminfo file is designed to store status information: Command-line and Search pattern history Text in registers Marks for various files The buffer list Global variables Each time you exit Vim it will store this information in a file, the viminfo file. When Vim starts again, the viminfo file is read and the information restored. The 'viminfo' option is set by default to restore a limited number of items. You might want to set it to remember more information. This is done through the following command: > :set viminfo=string The string specifies what to save. The syntax of this string is an option character followed by an argument. The option/argument pairs are separated by commas. Take a look at how you can build up your own viminfo string. First, the ' option is used to specify how many files for which you save marks (a-z). Pick a nice even number for this option (1000, for instance). Your command now looks like this: > :set viminfo='1000 The f option controls whether global marks (A-Z and 0-9) are stored. If this option is 0, none are stored. If it is 1 or you do not specify an f option, the marks are stored. You want this feature, so now you have this: > :set viminfo='1000,f1 The < option controls how many lines are saved for each of the registers. By default, all the lines are saved. If 0, nothing is saved. To avoid adding thousands of lines to your viminfo file (which might never get used and makes starting Vim slower) you use a maximum of 500 lines: > :set viminfo='1000,f1,<500 < Other options you might want to use: : number of lines to save from the command line history @ number of lines to save from the input line history / number of lines to save from the search history r removable media, for which no marks will be stored (can be used several times) ! global variables that start with an uppercase letter and don't contain lowercase letters h disable 'hlsearch' highlighting when starting % the buffer list (only restored when starting Vim without file arguments) c convert the text using 'encoding' n name used for the viminfo file (must be the last option) See the 'viminfo' option and |viminfo-file| for more information. When you run Vim multiple times, the last one exiting will store its information. This may cause information that previously exiting Vims stored to be lost. Each item can be remembered only once. GETTING BACK TO WHERE YOU STOPPED VIM You are halfway editing a file and it's time to leave for holidays. You exit Vim and go enjoy yourselves, forgetting all about your work. After a couple of weeks you start Vim, and type: > '0 And you are right back where you left Vim. So you can get on with your work. Vim creates a mark each time you exit Vim. The last one is '0. The position that '0 pointed to is made '1. And '1 is made to '2, and so forth. Mark '9 is lost. The |:marks| command is useful to find out where '0 to '9 will take you. GETTING BACK TO SOME FILE If you want to go back to a file that you edited recently, but not when exiting Vim, there is a slightly more complicated way. You can see a list of files by typing the command: > :oldfiles < 1: ~/.viminfo ~ 2: ~/text/resume.txt ~ 3: /tmp/draft ~ Now you would like to edit the second file, which is in the list preceded by "2:". You type: > :e #<2 Instead of ":e" you can use any command that has a file name argument, the "#<2" item works in the same place as "%" (current file name) and "#" (alternate file name). So you can also split the window to edit the third file: > :split #<3 That #<123 thing is a bit complicated when you just want to edit a file. Fortunately there is a simpler way: > :browse oldfiles < 1: ~/.viminfo ~ 2: ~/text/resume.txt ~ 3: /tmp/draft ~ -- More -- You get the same list of files as with |:oldfiles|. If you want to edit "resume.txt" first press "q" to stop the listing. You will get a prompt: Type number and <Enter> (empty cancels): ~ Type "2" and press <Enter> to edit the second file. More info at |:oldfiles|, |v:oldfiles| and |c_#<|. MOVE INFO FROM ONE VIM TO ANOTHER You can use the ":wviminfo" and ":rviminfo" commands to save and restore the information while still running Vim. This is useful for exchanging register contents between two instances of Vim, for example. In the first Vim do: > :wviminfo! ~/tmp/viminfo And in the second Vim do: > :rviminfo! ~/tmp/viminfo Obviously, the "w" stands for "write" and the "r" for "read". The ! character is used by ":wviminfo" to forcefully overwrite an existing file. When it is omitted, and the file exists, the information is merged into the file. The ! character used for ":rviminfo" means that all the information is used, this may overwrite existing information. Without the ! only information that wasn't set is used. These commands can also be used to store info and use it again later. You could make a directory full of viminfo files, each containing info for a different purpose. ============================================================================== *21.4* Sessions Suppose you are editing along, and it is the end of the day. You want to quit work and pick up where you left off the next day. You can do this by saving your editing session and restoring it the next day. A Vim session contains all the information about what you are editing. This includes things such as the file list, window layout, global variables, options and other information. (Exactly what is remembered is controlled by the 'sessionoptions' option, described below.) The following command creates a session file: > :mksession vimbook.vim Later if you want to restore this session, you can use this command: > :source vimbook.vim If you want to start Vim and restore a specific session, you can use the following command: > vim -S vimbook.vim This tells Vim to read a specific file on startup. The 'S' stands for session (actually, you can source any Vim script with -S, thus it might as well stand for "source"). The windows that were open are restored, with the same position and size as before. Mappings and option values are like before. What exactly is restored depends on the 'sessionoptions' option. The default value is "blank,buffers,curdir,folds,help,options,winsize". blank keep empty windows buffers all buffers, not only the ones in a window curdir the current directory folds folds, also manually created ones help the help window options all options and mappings winsize window sizes Change this to your liking. To also restore the size of the Vim window, for example, use: > :set sessionoptions+=resize SESSION HERE, SESSION THERE The obvious way to use sessions is when working on different projects. Suppose you store your session files in the directory "~/.vim". You are currently working on the "secret" project and have to switch to the "boring" project: > :wall :mksession! ~/.vim/secret.vim :source ~/.vim/boring.vim This first uses ":wall" to write all modified files. Then the current session is saved, using ":mksession!". This overwrites the previous session. The next time you load the secret session you can continue where you were at this point. And finally you load the new "boring" session. If you open help windows, split and close various windows, and generally mess up the window layout, you can go back to the last saved session: > :source ~/.vim/boring.vim Thus you have complete control over whether you want to continue next time where you are now, by saving the current setup in a session, or keep the session file as a starting point. Another way of using sessions is to create a window layout that you like to use, and save this in a session. Then you can go back to this layout whenever you want. For example, this is a nice layout to use: +----------------------------------------+ | VIM - main help file | | | |Move around: Use the cursor keys, or "h| |help.txt================================| |explorer | | |dir |~ | |dir |~ | |file |~ | |file |~ | |file |~ | |file |~ | |~/=========|[No File]===================| | | +----------------------------------------+ This has a help window at the top, so that you can read this text. The narrow vertical window on the left contains a file explorer. This is a Vim plugin that lists the contents of a directory. You can select files to edit there. More about this in the next chapter. Create this from a just started Vim with: > :help CTRL-W w :vertical split ~/ You can resize the windows a bit to your liking. Then save the session with: > :mksession ~/.vim/mine.vim Now you can start Vim with this layout: > vim -S ~/.vim/mine.vim Hint: To open a file you see listed in the explorer window in the empty window, move the cursor to the filename and press "O". Double clicking with the mouse will also do this. UNIX AND MS-WINDOWS Some people have to do work on MS-Windows systems one day and on Unix another day. If you are one of them, consider adding "slash" and "unix" to 'sessionoptions'. The session files will then be written in a format that can be used on both systems. This is the command to put in your vimrc file: > :set sessionoptions+=unix,slash Vim will use the Unix format then, because the MS-Windows Vim can read and write Unix files, but Unix Vim can't read MS-Windows format session files. Similarly, MS-Windows Vim understands file names with / to separate names, but Unix Vim doesn't understand \. SESSIONS AND VIMINFO Sessions store many things, but not the position of marks, contents of registers and the command line history. You need to use the viminfo feature for these things. In most situations you will want to use sessions separately from viminfo. This can be used to switch to another session, but keep the command line history. And yank text into registers in one session, and paste it back in another session. You might prefer to keep the info with the session. You will have to do this yourself then. Example: > :mksession! ~/.vim/secret.vim :wviminfo! ~/.vim/secret.viminfo And to restore this again: > :source ~/.vim/secret.vim :rviminfo! ~/.vim/secret.viminfo ============================================================================== *21.5* Views A session stores the looks of the whole of Vim. When you want to store the properties for one window only, use a view. The use of a view is for when you want to edit a file in a specific way. For example, you have line numbers enabled with the 'number' option and defined a few folds. Just like with sessions, you can remember this view on the file and restore it later. Actually, when you store a session, it stores the view of each window. There are two basic ways to use views. The first is to let Vim pick a name for the view file. You can restore the view when you later edit the same file. To store the view for the current window: > :mkview Vim will decide where to store the view. When you later edit the same file you get the view back with this command: > :loadview That's easy, isn't it? Now you want to view the file without the 'number' option on, or with all folds open, you can set the options to make the window look that way. Then store this view with: > :mkview 1 Obviously, you can get this back with: > :loadview 1 Now you can switch between the two views on the file by using ":loadview" with and without the "1" argument. You can store up to ten views for the same file this way, one unnumbered and nine numbered 1 to 9. A VIEW WITH A NAME The second basic way to use views is by storing the view in a file with a name you choose. This view can be loaded while editing another file. Vim will then switch to editing the file specified in the view. Thus you can use this to quickly switch to editing another file, with all its options set as you saved them. For example, to save the view of the current file: > :mkview ~/.vim/main.vim You can restore it with: > :source ~/.vim/main.vim ============================================================================== *21.6* Modelines When editing a specific file, you might set options specifically for that file. Typing these commands each time is boring. Using a session or view for editing a file doesn't work when sharing the file between several people. The solution for this situation is adding a modeline to the file. This is a line of text that tells Vim the values of options, to be used in this file only. A typical example is a C program where you make indents by a multiple of 4 spaces. This requires setting the 'shiftwidth' option to 4. This modeline will do that: /* vim:set shiftwidth=4: */ ~ Put this line as one of the first or last five lines in the file. When editing the file, you will notice that 'shiftwidth' will have been set to four. When editing another file, it's set back to the default value of eight. For some files the modeline fits well in the header, thus it can be put at the top of the file. For text files and other files where the modeline gets in the way of the normal contents, put it at the end of the file. The 'modelines' option specifies how many lines at the start and end of the file are inspected for containing a modeline. To inspect ten lines: > :set modelines=10 The 'modeline' option can be used to switch this off. Do this when you are working as root on Unix or Administrator on MS-Windows, or when you don't trust the files you are editing: > :set nomodeline Use this format for the modeline: any-text vim:set {option}={value} ... : any-text ~ The "any-text" indicates that you can put any text before and after the part that Vim will use. This allows making it look like a comment, like what was done above with /* and */. The " vim:" part is what makes Vim recognize this line. There must be white space before "vim", or "vim" must be at the start of the line. Thus using something like "gvim:" will not work. The part between the colons is a ":set" command. It works the same way as typing the ":set" command, except that you need to insert a backslash before a colon (otherwise it would be seen as the end of the modeline). Another example: // vim:set textwidth=72 dir=c\:\tmp: use c:\tmp here ~ There is an extra backslash before the first colon, so that it's included in the ":set" command. The text after the second colon is ignored, thus a remark can be placed there. For more details see |modeline|. ============================================================================== Next chapter: |usr_22.txt| Finding the file to edit Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: PK�������!�nxK��K��+��vim80/pack/dist/opt/matchit/doc/matchit.txtnu�[��������*matchit.txt* Extended "%" matching For instructions on installing this file, type :help matchit-install inside Vim. For Vim version 6.3. Last change: 2017 May 14 VIM REFERENCE MANUAL by Benji Fisher *matchit* *matchit.vim* 1. Extended matching with "%" |matchit-intro| 2. Activation |matchit-activate| 3. Configuration |matchit-configure| 4. Supporting a New Language |matchit-newlang| 5. Known Bugs and Limitations |matchit-bugs| The functionality mentioned here is a plugin, see |add-plugin|. This plugin is only available if 'compatible' is not set. You can avoid loading this plugin by setting the "loaded_matchit" variable in your |vimrc| file: > :let loaded_matchit = 1 {Vi does not have any of this} ============================================================================== 1. Extended matching with "%" *matchit-intro* *matchit-%* % Cycle forward through matching groups, such as "if", "else", "endif", as specified by |b:match_words|. *g%* *v_g%* *o_g%* g% Cycle backwards through matching groups, as specified by |b:match_words|. For example, go from "if" to "endif" to "else". *[%* *v_[%* *o_[%* [% Go to [count] previous unmatched group, as specified by |b:match_words|. Similar to |[{|. *]%* *v_]%* *o_]%* ]% Go to [count] next unmatched group, as specified by |b:match_words|. Similar to |]}|. *v_a%* a% In Visual mode, select the matching group, as specified by |b:match_words|, containing the cursor. Similar to |v_a[|. A [count] is ignored, and only the first character of the closing pattern is selected. In Vim, as in plain vi, the percent key, |%|, jumps the cursor from a brace, bracket, or paren to its match. This can be configured with the 'matchpairs' option. The matchit plugin extends this in several ways: You can match whole words, such as "if" and "endif", not just single characters. You can also specify a |regular-expression|. You can define groups with more than two words, such as "if", "else", "endif". Banging on the "%" key will cycle from the "if" to the first "else", the next "else", ..., the closing "endif", and back to the opening "if". Nested structures are skipped. Using |g%| goes in the reverse direction. By default, words inside comments and strings are ignored, unless the cursor is inside a comment or string when you type "%". If the only thing you want to do is modify the behavior of "%" so that it behaves this way, you do not have to define |b:match_words|, since the script uses the 'matchpairs' option as well as this variable. See |matchit-details| for details on what the script does, and |b:match_words| for how to specify matching patterns. MODES: *matchit-modes* *matchit-v_%* *matchit-o_%* Mostly, % and related motions (|g%| and |[%| and |]%|) work just like built-in |motion| commands in |Operator-pending| and |Visual| modes. However, you cannot make these motions |linewise| or |characterwise|, since the |:omap|s that define them start with "v" in order to make the default behavior inclusive. (See |o_v|.) In other words, "dV%" will not work. The work-around is to go through Visual mode: "V%d" will work. LANGUAGES: *matchit-languages* Currently, the following languages are supported: Ada, ASP with VBS, Csh, DTD, Entity, Essbase, Fortran, HTML, JSP (same as HTML), LaTeX, Lua, Pascal, SGML, Shell, Tcsh, Vim, XML. Other languages may already have support via the default |filetype-plugin|s in the standard vim distribution. To support a new language, see |matchit-newlang| below. DETAILS: *matchit-details* *matchit-parse* Here is an outline of what matchit.vim does each time you hit the "%" key. If there are |backref|s in |b:match_words| then the first step is to produce a version in which these back references have been eliminated; if there are no |backref|s then this step is skipped. This step is called parsing. For example, "\(foo\|bar\):end\1" is parsed to yield "\(foo\|bar\):end\(foo\|bar\)". This can get tricky, especially if there are nested groups. If debugging is turned on, the parsed version is saved as |b:match_pat|. *matchit-choose* Next, the script looks for a word on the current line that matches the pattern just constructed. It includes the patterns from the 'matchpairs' option. The goal is to do what you expect, which turns out to be a little complicated. The script follows these rules: Insist on a match that ends on or after the cursor. Prefer a match that includes the cursor position (that is, one that starts on or before the cursor). Prefer a match that starts as close to the cursor as possible. If more than one pattern in |b:match_words| matches, choose the one that is listed first. Examples: Suppose you > :let b:match_words = '<:>,<tag>:</tag>' < and hit "%" with the cursor on or before the "<" in "a <tag> is born". The pattern '<' comes first, so it is preferred over '<tag>', which also matches. If the cursor is on the "t", however, then '<tag>' is preferred, because this matches a bit of text containing the cursor. If the two groups of patterns were reversed then '<' would never be preferred. Suppose you > :let b:match_words = 'if:end if' < (Note the space!) and hit "%" with the cursor at the end of "end if". Then "if" matches, which is probably not what you want, but if the cursor starts on the "end " then "end if" is chosen. (You can avoid this problem by using a more complicated pattern.) If there is no match, the cursor does not move. (Before version 1.13 of the script, it would fall back on the usual behavior of |%|). If debugging is turned on, the matched bit of text is saved as |b:match_match| and the cursor column of the start of the match is saved as |b:match_col|. Next, the script looks through |b:match_words| (original and parsed versions) for the group and pattern that match. If debugging is turned on, the group is saved as |b:match_ini| (the first pattern) and |b:match_tail| (the rest). If there are |backref|s then, in addition, the matching pattern is saved as |b:match_word| and a table of translations is saved as |b:match_table|. If there are |backref|s, these are determined from the matching pattern and |b:match_match| and substituted into each pattern in the matching group. The script decides whether to search forwards or backwards and chooses arguments for the |searchpair()| function. Then, the cursor is moved to the start of the match, and |searchpair()| is called. By default, matching structures inside strings and comments are ignored. This can be changed by setting |b:match_skip|. ============================================================================== 2. Activation *matchit-activate* To use the matchit plugin add this line to your |vimrc|: > packadd! matchit The script should start working the next time you start Vim. (Earlier versions of the script did nothing unless a |buffer-variable| named |b:match_words| was defined. Even earlier versions contained autocommands that set this variable for various file types. Now, |b:match_words| is defined in many of the default |filetype-plugin|s instead.) For a new language, you can add autocommands to the script or to your vimrc file, but the recommended method is to add a line such as > let b:match_words = '\<foo\>:\<bar\>' to the |filetype-plugin| for your language. See |b:match_words| below for how this variable is interpreted. TROUBLESHOOTING *matchit-troubleshoot* The script should work in most installations of Vim. It may not work if Vim was compiled with a minimal feature set, for example if the |+syntax| option was not enabled. If your Vim has support for syntax compiled in, but you do not have |syntax| highlighting turned on, matchit.vim should work, but it may fail to skip matching groups in comments and strings. If the |filetype| mechanism is turned off, the |b:match_words| variable will probably not be defined automatically. ============================================================================== 3. Configuration *matchit-configure* There are several variables that govern the behavior of matchit.vim. Note that these are variables local to the buffer, not options, so use |:let| to define them, not |:set|. Some of these variables have values that matter; for others, it only matters whether the variable has been defined. All of these can be defined in the |filetype-plugin| or autocommand that defines |b:match_words| or "on the fly." The main variable is |b:match_words|. It is described in the section below on supporting a new language. *MatchError* *matchit-hl* *matchit-highlight* MatchError is the highlight group for error messages from the script. By default, it is linked to WarningMsg. If you do not want to be bothered by error messages, you can define this to be something invisible. For example, if you use the GUI version of Vim and your command line is normally white, you can do > :hi MatchError guifg=white guibg=white < *b:match_ignorecase* If you > :let b:match_ignorecase = 1 then matchit.vim acts as if 'ignorecase' is set: for example, "end" and "END" are equivalent. If you > :let b:match_ignorecase = 0 then matchit.vim treats "end" and "END" differently. (There will be no b:match_infercase option unless someone requests it.) *b:match_debug* Define b:match_debug if you want debugging information to be saved. See |matchit-debug|, below. *b:match_skip* If b:match_skip is defined, it is passed as the skip argument to |searchpair()|. This controls when matching structures are skipped, or ignored. By default, they are ignored inside comments and strings, as determined by the |syntax| mechanism. (If syntax highlighting is turned off, nothing is skipped.) You can set b:match_skip to a string, which evaluates to a non-zero, numerical value if the match is to be skipped or zero if the match should not be skipped. In addition, the following special values are supported by matchit.vim: s:foo becomes (current syntax item) =~ foo S:foo becomes (current syntax item) !~ foo r:foo becomes (line before cursor) =~ foo R:foo becomes (line before cursor) !~ foo (The "s" is meant to suggest "syntax", and the "r" is meant to suggest "regular expression".) Examples: You can get the default behavior with > :let b:match_skip = 's:comment\|string' < If you want to skip matching structures unless they are at the start of the line (ignoring whitespace) then you can > :let b:match_skip = 'R:^\s*' < Do not do this if strings or comments can span several lines, since the normal syntax checking will not be done if you set b:match_skip. In LaTeX, since "%" is used as the comment character, you can > :let b:match_skip = 'r:%' < Unfortunately, this will skip anything after "\%", an escaped "%". To allow for this, and also "\\%" (an escaped backslash followed by the comment character) you can > :let b:match_skip = 'r:\(^\|[^\\]\)\(\\\\\)*%' < See the $VIMRUNTIME/ftplugin/vim.vim for an example that uses both syntax and a regular expression. ============================================================================== 4. Supporting a New Language *matchit-newlang* *b:match_words* In order for matchit.vim to support a new language, you must define a suitable pattern for |b:match_words|. You may also want to set some of the |matchit-configure| variables, as described above. If your language has a complicated syntax, or many keywords, you will need to know something about Vim's |regular-expression|s. The format for |b:match_words| is similar to that of the 'matchpairs' option: it is a comma (,)-separated list of groups; each group is a colon(:)-separated list of patterns (regular expressions). Commas and backslashes that are part of a pattern should be escaped with backslashes ('\:' and '\,'). It is OK to have only one group; the effect is undefined if a group has only one pattern. A simple example is > :let b:match_words = '\<if\>:\<endif\>,' \ . '\<while\>:\<continue\>:\<break\>:\<endwhile\>' (In Vim regular expressions, |\<| and |\>| denote word boundaries. Thus "if" matches the end of "endif" but "\<if\>" does not.) Then banging on the "%" key will bounce the cursor between "if" and the matching "endif"; and from "while" to any matching "continue" or "break", then to the matching "endwhile" and back to the "while". It is almost always easier to use |literal-string|s (single quotes) as above: '\<if\>' rather than "\\<if\\>" and so on. Exception: If the ":" character does not appear in b:match_words, then it is treated as an expression to be evaluated. For example, > :let b:match_words = 'GetMatchWords()' allows you to define a function. This can return a different string depending on the current syntax, for example. Once you have defined the appropriate value of |b:match_words|, you will probably want to have this set automatically each time you edit the appropriate file type. The recommended way to do this is by adding the definition to a |filetype-plugin| file. Tips: Be careful that your initial pattern does not match your final pattern. See the example above for the use of word-boundary expressions. It is usually better to use ".\{-}" (as many as necessary) instead of ".*" (as many as possible). See |\{-|. For example, in the string "<tag>label</tag>", "<.*>" matches the whole string whereas "<.\{-}>" and "<[^>]*>" match "<tag>" and "</tag>". *matchit-spaces* *matchit-s:notend* If "if" is to be paired with "end if" (Note the space!) then word boundaries are not enough. Instead, define a regular expression s:notend that will match anything but "end" and use it as follows: > :let s:notend = '\%(\<end\s\+\)\@<!' :let b:match_words = s:notend . '\<if\>:\<end\s\+if\>' < *matchit-s:sol* This is a simplified version of what is done for Ada. The s:notend is a |script-variable|. Similarly, you may want to define a start-of-line regular expression > :let s:sol = '\%(^\|;\)\s*' if keywords are only recognized after the start of a line or after a semicolon (;), with optional white space. *matchit-backref* *matchit-\1* In any group, the expressions |\1|, |\2|, ..., |\9| refer to parts of the INITIAL pattern enclosed in |\(|escaped parentheses|\)|. These are referred to as back references, or backrefs. For example, > :let b:match_words = '\<b\(o\+\)\>:\(h\)\1\>' means that "bo" pairs with "ho" and "boo" pairs with "hoo" and so on. Note that "\1" does not refer to the "\(h\)" in this example. If you have "\(nested \(parentheses\)\) then "\d" refers to the d-th "\(" and everything up to and including the matching "\)": in "\(nested\(parentheses\)\)", "\1" refers to everything and "\2" refers to "\(parentheses\)". If you use a variable such as |s:notend| or |s:sol| in the previous paragraph then remember to count any "\(" patterns in this variable. You do not have to count groups defined by |\%(\)|. It should be possible to resolve back references from any pattern in the group. For example, > :let b:match_words = '\(foo\)\(bar\):more\1:and\2:end\1\2' would not work because "\2" cannot be determined from "morefoo" and "\1" cannot be determined from "andbar". On the other hand, > :let b:match_words = '\(\(foo\)\(bar\)\):\3\2:end\1' should work (and have the same effect as "foobar:barfoo:endfoobar"), although this has not been thoroughly tested. You can use |zero-width| patterns such as |\@<=| and |\zs|. (The latter has not been thouroughly tested in matchit.vim.) For example, if the keyword "if" must occur at the start of the line, with optional white space, you might use the pattern "\(^\s*\)\@<=if" so that the cursor will end on the "i" instead of at the start of the line. For another example, if HTML had only one tag then one could > :let b:match_words = '<:>,<\@<=tag>:<\@<=/tag>' so that "%" can bounce between matching "<" and ">" pairs or (starting on "tag" or "/tag") between matching tags. Without the |\@<=|, the script would bounce from "tag" to the "<" in "</tag>", and another "%" would not take you back to where you started. DEBUGGING *matchit-debug* *:MatchDebug* If you are having trouble figuring out the appropriate definition of |b:match_words| then you can take advantage of the same information I use when debugging the script. This is especially true if you are not sure whether your patterns or my script are at fault! To make this more convenient, I have made the command :MatchDebug, which defines the variable |b:match_debug| and creates a Matchit menu. This menu makes it convenient to check the values of the variables described below. You will probably also want to read |matchit-details| above. Defining the variable |b:match_debug| causes the script to set the following variables, each time you hit the "%" key. Several of these are only defined if |b:match_words| includes |backref|s. *b:match_pat* The b:match_pat variable is set to |b:match_words| with |backref|s parsed. *b:match_match* The b:match_match variable is set to the bit of text that is recognized as a match. *b:match_col* The b:match_col variable is set to the cursor column of the start of the matching text. *b:match_wholeBR* The b:match_wholeBR variable is set to the comma-separated group of patterns that matches, with |backref|s unparsed. *b:match_iniBR* The b:match_iniBR variable is set to the first pattern in |b:match_wholeBR|. *b:match_ini* The b:match_ini variable is set to the first pattern in |b:match_wholeBR|, with |backref|s resolved from |b:match_match|. *b:match_tail* The b:match_tail variable is set to the remaining patterns in |b:match_wholeBR|, with |backref|s resolved from |b:match_match|. *b:match_word* The b:match_word variable is set to the pattern from |b:match_wholeBR| that matches |b:match_match|. *b:match_table* The back reference '\'.d refers to the same thing as '\'.b:match_table[d] in |b:match_word|. ============================================================================== 5. Known Bugs and Limitations *matchit-bugs* Just because I know about a bug does not mean that it is on my todo list. I try to respond to reports of bugs that cause real problems. If it does not cause serious problems, or if there is a work-around, a bug may sit there for a while. Moral: if a bug (known or not) bothers you, let me know. The various |:vmap|s defined in the script (%, |g%|, |[%|, |]%|, |a%|) may have undesired effects in Select mode |Select-mode-mapping|. At least, if you want to replace the selection with any character in "ag%[]" there will be a pause of |'updatetime'| first. E.g., "yV%" would normally work linewise, but the plugin mapping makes it characterwise. It would be nice if "\0" were recognized as the entire pattern. That is, it would be nice if "foo:\end\0" had the same effect as "\(foo\):\end\1". I may try to implement this in a future version. (This is not so easy to arrange as you might think!) ============================================================================== vim:tw=78:fo=tcq2: PK�������!�+ ����$��vim80/pack/dist/opt/matchit/doc/tagsnu�[��������:MatchDebug matchit.txt /*:MatchDebug* MatchError matchit.txt /*MatchError* [% matchit.txt /*[%* ]% matchit.txt /*]%* b:match_col matchit.txt /*b:match_col* b:match_debug matchit.txt /*b:match_debug* b:match_ignorecase matchit.txt /*b:match_ignorecase* b:match_ini matchit.txt /*b:match_ini* b:match_iniBR matchit.txt /*b:match_iniBR* b:match_match matchit.txt /*b:match_match* b:match_pat matchit.txt /*b:match_pat* b:match_skip matchit.txt /*b:match_skip* b:match_table matchit.txt /*b:match_table* b:match_tail matchit.txt /*b:match_tail* b:match_wholeBR matchit.txt /*b:match_wholeBR* b:match_word matchit.txt /*b:match_word* b:match_words matchit.txt /*b:match_words* g% matchit.txt /*g%* matchit matchit.txt /*matchit* matchit-% matchit.txt /*matchit-%* matchit-\1 matchit.txt /*matchit-\\1* matchit-activate matchit.txt /*matchit-activate* matchit-backref matchit.txt /*matchit-backref* matchit-bugs matchit.txt /*matchit-bugs* matchit-choose matchit.txt /*matchit-choose* matchit-configure matchit.txt /*matchit-configure* matchit-debug matchit.txt /*matchit-debug* matchit-details matchit.txt /*matchit-details* matchit-highlight matchit.txt /*matchit-highlight* matchit-hl matchit.txt /*matchit-hl* matchit-intro matchit.txt /*matchit-intro* matchit-languages matchit.txt /*matchit-languages* matchit-modes matchit.txt /*matchit-modes* matchit-newlang matchit.txt /*matchit-newlang* matchit-o_% matchit.txt /*matchit-o_%* matchit-parse matchit.txt /*matchit-parse* matchit-s:notend matchit.txt /*matchit-s:notend* matchit-s:sol matchit.txt /*matchit-s:sol* matchit-spaces matchit.txt /*matchit-spaces* matchit-troubleshoot matchit.txt /*matchit-troubleshoot* matchit-v_% matchit.txt /*matchit-v_%* matchit.txt matchit.txt /*matchit.txt* matchit.vim matchit.txt /*matchit.vim* o_[% matchit.txt /*o_[%* o_]% matchit.txt /*o_]%* o_g% matchit.txt /*o_g%* v_[% matchit.txt /*v_[%* v_]% matchit.txt /*v_]%* v_a% matchit.txt /*v_a%* v_g% matchit.txt /*v_g%* PK�������!�oR*y��*y��.��vim80/pack/dist/opt/matchit/plugin/matchit.vimnu�[��������" matchit.vim: (global plugin) Extended "%" matching " Last Change: 2017 Sep 15 " Maintainer: Benji Fisher PhD <benji@member.AMS.org> " Version: 1.13.3, for Vim 6.3+ " Fix from Fernando Torres included. " Improvement from Ken Takata included. " URL: http://www.vim.org/script.php?script_id=39 " Documentation: " The documentation is in a separate file, matchit.txt . " Credits: " Vim editor by Bram Moolenaar (Thanks, Bram!) " Original script and design by Raul Segura Acevedo " Support for comments by Douglas Potts " Support for back references and other improvements by Benji Fisher " Support for many languages by Johannes Zellner " Suggestions for improvement, bug reports, and support for additional " languages by Jordi-Albert Batalla, Neil Bird, Servatius Brandt, Mark " Collett, Stephen Wall, Dany St-Amant, Yuheng Xie, and Johannes Zellner. " Debugging: " If you'd like to try the built-in debugging commands... " :MatchDebug to activate debugging for the current buffer " This saves the values of several key script variables as buffer-local " variables. See the MatchDebug() function, below, for details. " TODO: I should think about multi-line patterns for b:match_words. " This would require an option: how many lines to scan (default 1). " This would be useful for Python, maybe also for *ML. " TODO: Maybe I should add a menu so that people will actually use some of " the features that I have implemented. " TODO: Eliminate the MultiMatch function. Add yet another argument to " Match_wrapper() instead. " TODO: Allow :let b:match_words = '\(\(foo\)\(bar\)\):\3\2:end\1' " TODO: Make backrefs safer by using '\V' (very no-magic). " TODO: Add a level of indirection, so that custom % scripts can use my " work but extend it. " allow user to prevent loading " and prevent duplicate loading if exists("loaded_matchit") || &cp finish endif let loaded_matchit = 1 let s:last_mps = "" let s:last_words = ":" let s:patBR = "" let s:save_cpo = &cpo set cpo&vim nnoremap <silent> % :<C-U>call <SID>Match_wrapper('',1,'n') <CR> nnoremap <silent> g% :<C-U>call <SID>Match_wrapper('',0,'n') <CR> vnoremap <silent> % :<C-U>call <SID>Match_wrapper('',1,'v') <CR>m'gv`` vnoremap <silent> g% :<C-U>call <SID>Match_wrapper('',0,'v') <CR>m'gv`` onoremap <silent> % v:<C-U>call <SID>Match_wrapper('',1,'o') <CR> onoremap <silent> g% v:<C-U>call <SID>Match_wrapper('',0,'o') <CR> " Analogues of [{ and ]} using matching patterns: nnoremap <silent> [% :<C-U>call <SID>MultiMatch("bW", "n") <CR> nnoremap <silent> ]% :<C-U>call <SID>MultiMatch("W", "n") <CR> vmap [% <Esc>[%m'gv`` vmap ]% <Esc>]%m'gv`` " vnoremap <silent> [% :<C-U>call <SID>MultiMatch("bW", "v") <CR>m'gv`` " vnoremap <silent> ]% :<C-U>call <SID>MultiMatch("W", "v") <CR>m'gv`` onoremap <silent> [% v:<C-U>call <SID>MultiMatch("bW", "o") <CR> onoremap <silent> ]% v:<C-U>call <SID>MultiMatch("W", "o") <CR> " text object: vmap a% <Esc>[%v]% " Auto-complete mappings: (not yet "ready for prime time") " TODO Read :help write-plugin for the "right" way to let the user " specify a key binding. " let g:match_auto = '<C-]>' " let g:match_autoCR = '<C-CR>' " if exists("g:match_auto") " execute "inoremap " . g:match_auto . ' x<Esc>"=<SID>Autocomplete()<CR>Pls' " endif " if exists("g:match_autoCR") " execute "inoremap " . g:match_autoCR . ' <CR><C-R>=<SID>Autocomplete()<CR>' " endif " if exists("g:match_gthhoh") " execute "inoremap " . g:match_gthhoh . ' <C-O>:call <SID>Gthhoh()<CR>' " endif " gthhoh = "Get the heck out of here!" let s:notslash = '\\\@<!\%(\\\\\)*' function! s:Match_wrapper(word, forward, mode) range " In s:CleanUp(), :execute "set" restore_options . let restore_options = "" if exists("b:match_ignorecase") && b:match_ignorecase != &ic let restore_options .= (&ic ? " " : " no") . "ignorecase" let &ignorecase = b:match_ignorecase endif if &ve != '' let restore_options = " ve=" . &ve . restore_options set ve= endif " If this function was called from Visual mode, make sure that the cursor " is at the correct end of the Visual range: if a:mode == "v" execute "normal! gv\<Esc>" endif " In s:CleanUp(), we may need to check whether the cursor moved forward. let startline = line(".") let startcol = col(".") " Use default behavior if called with a count. if v:count exe "normal! " . v:count . "%" return s:CleanUp(restore_options, a:mode, startline, startcol) end " First step: if not already done, set the script variables " s:do_BR flag for whether there are backrefs " s:pat parsed version of b:match_words " s:all regexp based on s:pat and the default groups " if !exists("b:match_words") || b:match_words == "" let match_words = "" " Allow b:match_words = "GetVimMatchWords()" . elseif b:match_words =~ ":" let match_words = b:match_words else execute "let match_words =" b:match_words endif " Thanks to Preben "Peppe" Guldberg and Bram Moolenaar for this suggestion! if (match_words != s:last_words) || (&mps != s:last_mps) \ || exists("b:match_debug") let s:last_mps = &mps " The next several lines were here before " BF started messing with this script. " quote the special chars in 'matchpairs', replace [,:] with \| and then " append the builtin pairs (/*, */, #if, #ifdef, #else, #elif, #endif) " let default = substitute(escape(&mps, '[$^.*~\\/?]'), '[,:]\+', " \ '\\|', 'g').'\|\/\*\|\*\/\|#if\>\|#ifdef\>\|#else\>\|#elif\>\|#endif\>' let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") . \ '\/\*:\*\/,#\s*if\%(def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>' " s:all = pattern with all the keywords let match_words = match_words . (strlen(match_words) ? "," : "") . default let s:last_words = match_words if match_words !~ s:notslash . '\\\d' let s:do_BR = 0 let s:pat = match_words else let s:do_BR = 1 let s:pat = s:ParseWords(match_words) endif let s:all = substitute(s:pat, s:notslash . '\zs[,:]\+', '\\|', 'g') let s:all = '\%(' . s:all . '\)' " let s:all = '\%(' . substitute(s:all, '\\\ze[,:]', '', 'g') . '\)' if exists("b:match_debug") let b:match_pat = s:pat endif " Reconstruct the version with unresolved backrefs. let s:patBR = substitute(match_words.',', \ s:notslash.'\zs[,:]*,[,:]*', ',', 'g') let s:patBR = substitute(s:patBR, s:notslash.'\zs:\{2,}', ':', 'g') endif " Second step: set the following local variables: " matchline = line on which the cursor started " curcol = number of characters before match " prefix = regexp for start of line to start of match " suffix = regexp for end of match to end of line " Require match to end on or after the cursor and prefer it to " start on or before the cursor. let matchline = getline(startline) if a:word != '' " word given if a:word !~ s:all echohl WarningMsg|echo 'Missing rule for word:"'.a:word.'"'|echohl NONE return s:CleanUp(restore_options, a:mode, startline, startcol) endif let matchline = a:word let curcol = 0 let prefix = '^\%(' let suffix = '\)$' " Now the case when "word" is not given else " Find the match that ends on or after the cursor and set curcol. let regexp = s:Wholematch(matchline, s:all, startcol-1) let curcol = match(matchline, regexp) " If there is no match, give up. if curcol == -1 return s:CleanUp(restore_options, a:mode, startline, startcol) endif let endcol = matchend(matchline, regexp) let suf = strlen(matchline) - endcol let prefix = (curcol ? '^.*\%' . (curcol + 1) . 'c\%(' : '^\%(') let suffix = (suf ? '\)\%' . (endcol + 1) . 'c.*$' : '\)$') endif if exists("b:match_debug") let b:match_match = matchstr(matchline, regexp) let b:match_col = curcol+1 endif " Third step: Find the group and single word that match, and the original " (backref) versions of these. Then, resolve the backrefs. " Set the following local variable: " group = colon-separated list of patterns, one of which matches " = ini:mid:fin or ini:fin " " Now, set group and groupBR to the matching group: 'if:endif' or " 'while:endwhile' or whatever. A bit of a kluge: s:Choose() returns " group . "," . groupBR, and we pick it apart. let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, s:patBR) let i = matchend(group, s:notslash . ",") let groupBR = strpart(group, i) let group = strpart(group, 0, i-1) " Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix if s:do_BR " Do the hard part: resolve those backrefs! let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline) endif if exists("b:match_debug") let b:match_wholeBR = groupBR let i = matchend(groupBR, s:notslash . ":") let b:match_iniBR = strpart(groupBR, 0, i-1) endif " Fourth step: Set the arguments for searchpair(). let i = matchend(group, s:notslash . ":") let j = matchend(group, '.*' . s:notslash . ":") let ini = strpart(group, 0, i-1) let mid = substitute(strpart(group, i,j-i-1), s:notslash.'\zs:', '\\|', 'g') let fin = strpart(group, j) "Un-escape the remaining , and : characters. let ini = substitute(ini, s:notslash . '\zs\\\(:\|,\)', '\1', 'g') let mid = substitute(mid, s:notslash . '\zs\\\(:\|,\)', '\1', 'g') let fin = substitute(fin, s:notslash . '\zs\\\(:\|,\)', '\1', 'g') " searchpair() requires that these patterns avoid \(\) groups. let ini = substitute(ini, s:notslash . '\zs\\(', '\\%(', 'g') let mid = substitute(mid, s:notslash . '\zs\\(', '\\%(', 'g') let fin = substitute(fin, s:notslash . '\zs\\(', '\\%(', 'g') " Set mid. This is optimized for readability, not micro-efficiency! if a:forward && matchline =~ prefix . fin . suffix \ || !a:forward && matchline =~ prefix . ini . suffix let mid = "" endif " Set flag. This is optimized for readability, not micro-efficiency! if a:forward && matchline =~ prefix . fin . suffix \ || !a:forward && matchline !~ prefix . ini . suffix let flag = "bW" else let flag = "W" endif " Set skip. if exists("b:match_skip") let skip = b:match_skip elseif exists("b:match_comment") " backwards compatibility and testing! let skip = "r:" . b:match_comment else let skip = 's:comment\|string' endif let skip = s:ParseSkip(skip) if exists("b:match_debug") let b:match_ini = ini let b:match_tail = (strlen(mid) ? mid.'\|' : '') . fin endif " Fifth step: actually start moving the cursor and call searchpair(). " Later, :execute restore_cursor to get to the original screen. let restore_cursor = virtcol(".") . "|" normal! g0 let restore_cursor = line(".") . "G" . virtcol(".") . "|zs" . restore_cursor normal! H let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor execute restore_cursor call cursor(0, curcol + 1) " normal! 0 " if curcol " execute "normal!" . curcol . "l" " endif if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on")) let skip = "0" else execute "if " . skip . "| let skip = '0' | endif" endif let sp_return = searchpair(ini, mid, fin, flag, skip) let final_position = "call cursor(" . line(".") . "," . col(".") . ")" " Restore cursor position and original screen. execute restore_cursor normal! m' if sp_return > 0 execute final_position endif return s:CleanUp(restore_options, a:mode, startline, startcol, mid.'\|'.fin) endfun " Restore options and do some special handling for Operator-pending mode. " The optional argument is the tail of the matching group. fun! s:CleanUp(options, mode, startline, startcol, ...) if strlen(a:options) execute "set" a:options endif " Open folds, if appropriate. if a:mode != "o" if &foldopen =~ "percent" normal! zv endif " In Operator-pending mode, we want to include the whole match " (for example, d%). " This is only a problem if we end up moving in the forward direction. elseif (a:startline < line(".")) || \ (a:startline == line(".") && a:startcol < col(".")) if a:0 " Check whether the match is a single character. If not, move to the " end of the match. let matchline = getline(".") let currcol = col(".") let regexp = s:Wholematch(matchline, a:1, currcol-1) let endcol = matchend(matchline, regexp) if endcol > currcol " This is NOT off by one! call cursor(0, endcol) endif endif " a:0 endif " a:mode != "o" && etc. return 0 endfun " Example (simplified HTML patterns): if " a:groupBR = '<\(\k\+\)>:</\1>' " a:prefix = '^.\{3}\(' " a:group = '<\(\k\+\)>:</\(\k\+\)>' " a:suffix = '\).\{2}$' " a:matchline = "123<tag>12" or "123</tag>12" " then extract "tag" from a:matchline and return "<tag>:</tag>" . fun! s:InsertRefs(groupBR, prefix, group, suffix, matchline) if a:matchline !~ a:prefix . \ substitute(a:group, s:notslash . '\zs:', '\\|', 'g') . a:suffix return a:group endif let i = matchend(a:groupBR, s:notslash . ':') let ini = strpart(a:groupBR, 0, i-1) let tailBR = strpart(a:groupBR, i) let word = s:Choose(a:group, a:matchline, ":", "", a:prefix, a:suffix, \ a:groupBR) let i = matchend(word, s:notslash . ":") let wordBR = strpart(word, i) let word = strpart(word, 0, i-1) " Now, a:matchline =~ a:prefix . word . a:suffix if wordBR != ini let table = s:Resolve(ini, wordBR, "table") else " let table = "----------" let table = "" let d = 0 while d < 10 if tailBR =~ s:notslash . '\\' . d " let table[d] = d let table = table . d else let table = table . "-" endif let d = d + 1 endwhile endif let d = 9 while d if table[d] != "-" let backref = substitute(a:matchline, a:prefix.word.a:suffix, \ '\'.table[d], "") " Are there any other characters that should be escaped? let backref = escape(backref, '*,:') execute s:Ref(ini, d, "start", "len") let ini = strpart(ini, 0, start) . backref . strpart(ini, start+len) let tailBR = substitute(tailBR, s:notslash . '\zs\\' . d, \ escape(backref, '\\&'), 'g') endif let d = d-1 endwhile if exists("b:match_debug") if s:do_BR let b:match_table = table let b:match_word = word else let b:match_table = "" let b:match_word = "" endif endif return ini . ":" . tailBR endfun " Input a comma-separated list of groups with backrefs, such as " a:groups = '\(foo\):end\1,\(bar\):end\1' " and return a comma-separated list of groups with backrefs replaced: " return '\(foo\):end\(foo\),\(bar\):end\(bar\)' fun! s:ParseWords(groups) let groups = substitute(a:groups.",", s:notslash.'\zs[,:]*,[,:]*', ',', 'g') let groups = substitute(groups, s:notslash . '\zs:\{2,}', ':', 'g') let parsed = "" while groups =~ '[^,:]' let i = matchend(groups, s:notslash . ':') let j = matchend(groups, s:notslash . ',') let ini = strpart(groups, 0, i-1) let tail = strpart(groups, i, j-i-1) . ":" let groups = strpart(groups, j) let parsed = parsed . ini let i = matchend(tail, s:notslash . ':') while i != -1 " In 'if:else:endif', ini='if' and word='else' and then word='endif'. let word = strpart(tail, 0, i-1) let tail = strpart(tail, i) let i = matchend(tail, s:notslash . ':') let parsed = parsed . ":" . s:Resolve(ini, word, "word") endwhile " Now, tail has been used up. let parsed = parsed . "," endwhile " groups =~ '[^,:]' let parsed = substitute(parsed, ',$', '', '') return parsed endfun " TODO I think this can be simplified and/or made more efficient. " TODO What should I do if a:start is out of range? " Return a regexp that matches all of a:string, such that " matchstr(a:string, regexp) represents the match for a:pat that starts " as close to a:start as possible, before being preferred to after, and " ends after a:start . " Usage: " let regexp = s:Wholematch(getline("."), 'foo\|bar', col(".")-1) " let i = match(getline("."), regexp) " let j = matchend(getline("."), regexp) " let match = matchstr(getline("."), regexp) fun! s:Wholematch(string, pat, start) let group = '\%(' . a:pat . '\)' let prefix = (a:start ? '\(^.*\%<' . (a:start + 2) . 'c\)\zs' : '^') let len = strlen(a:string) let suffix = (a:start+1 < len ? '\(\%>'.(a:start+1).'c.*$\)\@=' : '$') if a:string !~ prefix . group . suffix let prefix = '' endif return prefix . group . suffix endfun " No extra arguments: s:Ref(string, d) will " find the d'th occurrence of '\(' and return it, along with everything up " to and including the matching '\)'. " One argument: s:Ref(string, d, "start") returns the index of the start " of the d'th '\(' and any other argument returns the length of the group. " Two arguments: s:Ref(string, d, "foo", "bar") returns a string to be " executed, having the effect of " :let foo = s:Ref(string, d, "start") " :let bar = s:Ref(string, d, "len") fun! s:Ref(string, d, ...) let len = strlen(a:string) if a:d == 0 let start = 0 else let cnt = a:d let match = a:string while cnt let cnt = cnt - 1 let index = matchend(match, s:notslash . '\\(') if index == -1 return "" endif let match = strpart(match, index) endwhile let start = len - strlen(match) if a:0 == 1 && a:1 == "start" return start - 2 endif let cnt = 1 while cnt let index = matchend(match, s:notslash . '\\(\|\\)') - 1 if index == -2 return "" endif " Increment if an open, decrement if a ')': let cnt = cnt + (match[index]=="(" ? 1 : -1) " ')' " let cnt = stridx('0(', match[index]) + cnt let match = strpart(match, index+1) endwhile let start = start - 2 let len = len - start - strlen(match) endif if a:0 == 1 return len elseif a:0 == 2 return "let " . a:1 . "=" . start . "| let " . a:2 . "=" . len else return strpart(a:string, start, len) endif endfun " Count the number of disjoint copies of pattern in string. " If the pattern is a literal string and contains no '0' or '1' characters " then s:Count(string, pattern, '0', '1') should be faster than " s:Count(string, pattern). fun! s:Count(string, pattern, ...) let pat = escape(a:pattern, '\\') if a:0 > 1 let foo = substitute(a:string, '[^'.a:pattern.']', "a:1", "g") let foo = substitute(a:string, pat, a:2, "g") let foo = substitute(foo, '[^' . a:2 . ']', "", "g") return strlen(foo) endif let result = 0 let foo = a:string let index = matchend(foo, pat) while index != -1 let result = result + 1 let foo = strpart(foo, index) let index = matchend(foo, pat) endwhile return result endfun " s:Resolve('\(a\)\(b\)', '\(c\)\2\1\1\2') should return table.word, where " word = '\(c\)\(b\)\(a\)\3\2' and table = '-32-------'. That is, the first " '\1' in target is replaced by '\(a\)' in word, table[1] = 3, and this " indicates that all other instances of '\1' in target are to be replaced " by '\3'. The hard part is dealing with nesting... " Note that ":" is an illegal character for source and target, " unless it is preceded by "\". fun! s:Resolve(source, target, output) let word = a:target let i = matchend(word, s:notslash . '\\\d') - 1 let table = "----------" while i != -2 " There are back references to be replaced. let d = word[i] let backref = s:Ref(a:source, d) " The idea is to replace '\d' with backref. Before we do this, " replace any \(\) groups in backref with :1, :2, ... if they " correspond to the first, second, ... group already inserted " into backref. Later, replace :1 with \1 and so on. The group " number w+b within backref corresponds to the group number " s within a:source. " w = number of '\(' in word before the current one let w = s:Count( \ substitute(strpart(word, 0, i-1), '\\\\', '', 'g'), '\(', '1') let b = 1 " number of the current '\(' in backref let s = d " number of the current '\(' in a:source while b <= s:Count(substitute(backref, '\\\\', '', 'g'), '\(', '1') \ && s < 10 if table[s] == "-" if w + b < 10 " let table[s] = w + b let table = strpart(table, 0, s) . (w+b) . strpart(table, s+1) endif let b = b + 1 let s = s + 1 else execute s:Ref(backref, b, "start", "len") let ref = strpart(backref, start, len) let backref = strpart(backref, 0, start) . ":". table[s] \ . strpart(backref, start+len) let s = s + s:Count(substitute(ref, '\\\\', '', 'g'), '\(', '1') endif endwhile let word = strpart(word, 0, i-1) . backref . strpart(word, i+1) let i = matchend(word, s:notslash . '\\\d') - 1 endwhile let word = substitute(word, s:notslash . '\zs:', '\\', 'g') if a:output == "table" return table elseif a:output == "word" return word else return table . word endif endfun " Assume a:comma = ",". Then the format for a:patterns and a:1 is " a:patterns = "<pat1>,<pat2>,..." " a:1 = "<alt1>,<alt2>,..." " If <patn> is the first pattern that matches a:string then return <patn> " if no optional arguments are given; return <patn>,<altn> if a:1 is given. fun! s:Choose(patterns, string, comma, branch, prefix, suffix, ...) let tail = (a:patterns =~ a:comma."$" ? a:patterns : a:patterns . a:comma) let i = matchend(tail, s:notslash . a:comma) if a:0 let alttail = (a:1 =~ a:comma."$" ? a:1 : a:1 . a:comma) let j = matchend(alttail, s:notslash . a:comma) endif let current = strpart(tail, 0, i-1) if a:branch == "" let currpat = current else let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g') endif while a:string !~ a:prefix . currpat . a:suffix let tail = strpart(tail, i) let i = matchend(tail, s:notslash . a:comma) if i == -1 return -1 endif let current = strpart(tail, 0, i-1) if a:branch == "" let currpat = current else let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g') endif if a:0 let alttail = strpart(alttail, j) let j = matchend(alttail, s:notslash . a:comma) endif endwhile if a:0 let current = current . a:comma . strpart(alttail, 0, j-1) endif return current endfun " Call this function to turn on debugging information. Every time the main " script is run, buffer variables will be saved. These can be used directly " or viewed using the menu items below. if !exists(":MatchDebug") command! -nargs=0 MatchDebug call s:Match_debug() endif fun! s:Match_debug() let b:match_debug = 1 " Save debugging information. " pat = all of b:match_words with backrefs parsed amenu &Matchit.&pat :echo b:match_pat<CR> " match = bit of text that is recognized as a match amenu &Matchit.&match :echo b:match_match<CR> " curcol = cursor column of the start of the matching text amenu &Matchit.&curcol :echo b:match_col<CR> " wholeBR = matching group, original version amenu &Matchit.wh&oleBR :echo b:match_wholeBR<CR> " iniBR = 'if' piece, original version amenu &Matchit.ini&BR :echo b:match_iniBR<CR> " ini = 'if' piece, with all backrefs resolved from match amenu &Matchit.&ini :echo b:match_ini<CR> " tail = 'else\|endif' piece, with all backrefs resolved from match amenu &Matchit.&tail :echo b:match_tail<CR> " fin = 'endif' piece, with all backrefs resolved from match amenu &Matchit.&word :echo b:match_word<CR> " '\'.d in ini refers to the same thing as '\'.table[d] in word. amenu &Matchit.t&able :echo '0:' . b:match_table . ':9'<CR> endfun " Jump to the nearest unmatched "(" or "if" or "<tag>" if a:spflag == "bW" " or the nearest unmatched "</tag>" or "endif" or ")" if a:spflag == "W". " Return a "mark" for the original position, so that " let m = MultiMatch("bW", "n") ... execute m " will return to the original position. If there is a problem, do not " move the cursor and return "", unless a count is given, in which case " go up or down as many levels as possible and again return "". " TODO This relies on the same patterns as % matching. It might be a good " idea to give it its own matching patterns. fun! s:MultiMatch(spflag, mode) if !exists("b:match_words") || b:match_words == "" return "" end let restore_options = "" if exists("b:match_ignorecase") && b:match_ignorecase != &ic let restore_options .= (&ic ? " " : " no") . "ignorecase" let &ignorecase = b:match_ignorecase endif let startline = line(".") let startcol = col(".") " First step: if not already done, set the script variables " s:do_BR flag for whether there are backrefs " s:pat parsed version of b:match_words " s:all regexp based on s:pat and the default groups " This part is copied and slightly modified from s:Match_wrapper(). let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") . \ '\/\*:\*\/,#\s*if\%(def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>' " Allow b:match_words = "GetVimMatchWords()" . if b:match_words =~ ":" let match_words = b:match_words else execute "let match_words =" b:match_words endif if (match_words != s:last_words) || (&mps != s:last_mps) || \ exists("b:match_debug") let s:last_words = match_words let s:last_mps = &mps let match_words = match_words . (strlen(match_words) ? "," : "") . default if match_words !~ s:notslash . '\\\d' let s:do_BR = 0 let s:pat = match_words else let s:do_BR = 1 let s:pat = s:ParseWords(match_words) endif let s:all = '\%(' . substitute(s:pat . (strlen(s:pat) ? "," : "") . default, \ '[,:]\+', '\\|', 'g') . '\)' if exists("b:match_debug") let b:match_pat = s:pat endif endif " Second step: figure out the patterns for searchpair() " and save the screen, cursor position, and 'ignorecase'. " - TODO: A lot of this is copied from s:Match_wrapper(). " - maybe even more functionality should be split off " - into separate functions! let cdefault = (s:pat =~ '[^,]$' ? "," : "") . default let open = substitute(s:pat . cdefault, \ s:notslash . '\zs:.\{-}' . s:notslash . ',', '\\),\\(', 'g') let open = '\(' . substitute(open, s:notslash . '\zs:.*$', '\\)', '') let close = substitute(s:pat . cdefault, \ s:notslash . '\zs,.\{-}' . s:notslash . ':', '\\),\\(', 'g') let close = substitute(close, '^.\{-}' . s:notslash . ':', '\\(', '') . '\)' if exists("b:match_skip") let skip = b:match_skip elseif exists("b:match_comment") " backwards compatibility and testing! let skip = "r:" . b:match_comment else let skip = 's:comment\|string' endif let skip = s:ParseSkip(skip) " save v:count1 variable, might be reset from the restore_cursor command let level = v:count1 let restore_cursor = virtcol(".") . "|" normal! g0 let restore_cursor = line(".") . "G" . virtcol(".") . "|zs" . restore_cursor normal! H let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor execute restore_cursor " Third step: call searchpair(). " Replace '\('--but not '\\('--with '\%(' and ',' with '\|'. let openpat = substitute(open, '\(\\\@<!\(\\\\\)*\)\@<=\\(', '\\%(', 'g') let openpat = substitute(openpat, ',', '\\|', 'g') let closepat = substitute(close, '\(\\\@<!\(\\\\\)*\)\@<=\\(', '\\%(', 'g') let closepat = substitute(closepat, ',', '\\|', 'g') if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on")) let skip = '0' else execute "if " . skip . "| let skip = '0' | endif" endif mark ' while level if searchpair(openpat, '', closepat, a:spflag, skip) < 1 call s:CleanUp(restore_options, a:mode, startline, startcol) return "" endif let level = level - 1 endwhile " Restore options and return a string to restore the original position. call s:CleanUp(restore_options, a:mode, startline, startcol) return restore_cursor endfun " Search backwards for "if" or "while" or "<tag>" or ... " and return "endif" or "endwhile" or "</tag>" or ... . " For now, this uses b:match_words and the same script variables " as s:Match_wrapper() . Later, it may get its own patterns, " either from a buffer variable or passed as arguments. " fun! s:Autocomplete() " echo "autocomplete not yet implemented :-(" " if !exists("b:match_words") || b:match_words == "" " return "" " end " let startpos = s:MultiMatch("bW") " " if startpos == "" " return "" " endif " " - TODO: figure out whether 'if' or '<tag>' matched, and construct " " - the appropriate closing. " let matchline = getline(".") " let curcol = col(".") - 1 " " - TODO: Change the s:all argument if there is a new set of match pats. " let regexp = s:Wholematch(matchline, s:all, curcol) " let suf = strlen(matchline) - matchend(matchline, regexp) " let prefix = (curcol ? '^.\{' . curcol . '}\%(' : '^\%(') " let suffix = (suf ? '\).\{' . suf . '}$' : '\)$') " " Reconstruct the version with unresolved backrefs. " let patBR = substitute(b:match_words.',', '[,:]*,[,:]*', ',', 'g') " let patBR = substitute(patBR, ':\{2,}', ':', "g") " " Now, set group and groupBR to the matching group: 'if:endif' or " " 'while:endwhile' or whatever. " let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, patBR) " let i = matchend(group, s:notslash . ",") " let groupBR = strpart(group, i) " let group = strpart(group, 0, i-1) " " Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix " if s:do_BR " let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline) " endif " " let g:group = group " " " - TODO: Construct the closing from group. " let fake = "end" . expand("<cword>") " execute startpos " return fake " endfun " Close all open structures. "Get the heck out of here!" " fun! s:Gthhoh() " let close = s:Autocomplete() " while strlen(close) " put=close " let close = s:Autocomplete() " endwhile " endfun " Parse special strings as typical skip arguments for searchpair(): " s:foo becomes (current syntax item) =~ foo " S:foo becomes (current syntax item) !~ foo " r:foo becomes (line before cursor) =~ foo " R:foo becomes (line before cursor) !~ foo fun! s:ParseSkip(str) let skip = a:str if skip[1] == ":" if skip[0] == "s" let skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" . \ strpart(skip,2) . "'" elseif skip[0] == "S" let skip = "synIDattr(synID(line('.'),col('.'),1),'name') !~? '" . \ strpart(skip,2) . "'" elseif skip[0] == "r" let skip = "strpart(getline('.'),0,col('.'))=~'" . strpart(skip,2). "'" elseif skip[0] == "R" let skip = "strpart(getline('.'),0,col('.'))!~'" . strpart(skip,2). "'" endif endif return skip endfun let &cpo = s:save_cpo unlet s:save_cpo " vim:sts=2:sw=2: PK�������!�HUR��R��,��vim80/pack/dist/opt/dvorak/dvorak/enable.vimnu�[��������" Dvorak keyboard, only in Insert mode. " " Change "inoremap" to "map!" to also use in Ex mode. " Also change disable.vim then: "iunmap" to "unmap!". " " You may want to add a list of map's too. inoremap a a inoremap b x inoremap c j inoremap d e inoremap e . inoremap f u inoremap g i inoremap h d inoremap i c inoremap j h inoremap k t inoremap l n inoremap m m inoremap n b inoremap o r inoremap p l inoremap q ' inoremap r p inoremap s o inoremap t y inoremap u g inoremap v k inoremap w , inoremap x q inoremap y f inoremap z ; inoremap ; s inoremap ' - inoremap " _ inoremap , w inoremap . v inoremap / z inoremap A A inoremap B X inoremap C J inoremap D E inoremap E > inoremap F U inoremap G I inoremap H D inoremap I C inoremap J H inoremap K T inoremap L N inoremap M M inoremap N B inoremap O R inoremap P L inoremap Q " inoremap R P inoremap S O inoremap T Y inoremap U G inoremap V K inoremap W < inoremap X Q inoremap Y F inoremap Z : inoremap < W inoremap > V inoremap ? Z inoremap : S inoremap [ / inoremap ] = inoremap { ? inoremap } + inoremap - [ inoremap _ { inoremap = ] inoremap + } PK�������!�nw=����-��vim80/pack/dist/opt/dvorak/dvorak/disable.vimnu�[��������" Back to Qwerty keyboard after using Dvorak. iunmap a iunmap b iunmap c iunmap d iunmap e iunmap f iunmap g iunmap h iunmap i iunmap j iunmap k iunmap l iunmap m iunmap n iunmap o iunmap p iunmap q iunmap r iunmap s iunmap t iunmap u iunmap v iunmap w iunmap x iunmap y iunmap z iunmap ; iunmap ' iunmap " iunmap , iunmap . iunmap / iunmap A iunmap B iunmap C iunmap D iunmap E iunmap F iunmap G iunmap H iunmap I iunmap J iunmap K iunmap L iunmap M iunmap N iunmap O iunmap P iunmap Q iunmap R iunmap S iunmap T iunmap U iunmap V iunmap W iunmap X iunmap Y iunmap Z iunmap < iunmap > iunmap ? iunmap : iunmap [ iunmap ] iunmap { iunmap } iunmap - iunmap _ iunmap = iunmap + PK�������!�@6����,��vim80/pack/dist/opt/dvorak/plugin/dvorak.vimnu�[��������" When using a dvorak keyboard this file may be of help to you. " These mappings have been made by Lawrence Kesteloot <kesteloo@cs.unc.edu>. " What they do is that the most often used keys, like hjkl, are put in a more " easy to use position. " It may take some time to learn using this. if exists("g:loaded_dvorak_plugin") finish endif let g:loaded_dvorak_plugin = 1 " Key to go into dvorak mode: map ,d :runtime dvorak/enable.vim<CR> " Key to get out of dvorak mode: map ,q :runtime dvorak/disable.vim<CR> PK�������!�/lR��R��2��vim80/pack/dist/opt/shellmenu/plugin/shellmenu.vimnu�[��������" When you're writing shell scripts and you are in doubt which test to use, " which shell environment variables are defined, what the syntax of the case " statement is, and you need to invoke 'man sh'? " " Your problems are over now! " " Attached is a Vim script file for turning gvim into a shell script editor. " It may also be used as an example how to use menus in Vim. " " Written by: Lennart Schultz <les@dmi.min.dk> imenu Stmts.for for in do doneki kk0elli imenu Stmts.case case in ) ;; esacbki k0elli imenu Stmts.if if then fiki kk0elli imenu Stmts.if-else if then else fiki kki kk0elli imenu Stmts.elif elif then ki kk0elli imenu Stmts.while while do doneki kk0elli imenu Stmts.break break imenu Stmts.continue continue imenu Stmts.function () { }ki k0i imenu Stmts.return return imenu Stmts.return-true return 0 imenu Stmts.return-false return 1 imenu Stmts.exit exit imenu Stmts.shift shift imenu Stmts.trap trap imenu Test.existence [ -e ]hi imenu Test.existence - file [ -f ]hi imenu Test.existence - file (not empty) [ -s ]hi imenu Test.existence - directory [ -d ]hi imenu Test.existence - executable [ -x ]hi imenu Test.existence - readable [ -r ]hi imenu Test.existence - writable [ -w ]hi imenu Test.String is empty [ x = "x$" ]hhi imenu Test.String is not empty [ x != "x$" ]hhi imenu Test.Strings is equal [ "" = "" ]hhhhhhhi imenu Test.Strings is not equal [ "" != "" ]hhhhhhhhi imenu Test.Values is greater than [ -gt ]hhhhhhi imenu Test.Values is greater equal [ -ge ]hhhhhhi imenu Test.Values is equal [ -eq ]hhhhhhi imenu Test.Values is not equal [ -ne ]hhhhhhi imenu Test.Values is less than [ -lt ]hhhhhhi imenu Test.Values is less equal [ -le ]hhhhhhi imenu ParmSub.Substitute word if parm not set ${:-}hhi imenu ParmSub.Set parm to word if not set ${:=}hhi imenu ParmSub.Substitute word if parm set else nothing ${:+}hhi imenu ParmSub.If parm not set print word and exit ${:?}hhi imenu SpShVars.Number of positional parameters ${#} imenu SpShVars.All positional parameters (quoted spaces) ${*} imenu SpShVars.All positional parameters (unquoted spaces) ${@} imenu SpShVars.Flags set ${-} imenu SpShVars.Return code of last command ${?} imenu SpShVars.Process number of this shell ${$} imenu SpShVars.Process number of last background command ${!} imenu Environ.HOME ${HOME} imenu Environ.PATH ${PATH} imenu Environ.CDPATH ${CDPATH} imenu Environ.MAIL ${MAIL} imenu Environ.MAILCHECK ${MAILCHECK} imenu Environ.PS1 ${PS1} imenu Environ.PS2 ${PS2} imenu Environ.IFS ${IFS} imenu Environ.SHACCT ${SHACCT} imenu Environ.SHELL ${SHELL} imenu Environ.LC_CTYPE ${LC_CTYPE} imenu Environ.LC_MESSAGES ${LC_MESSAGES} imenu Builtins.cd cd imenu Builtins.echo echo imenu Builtins.eval eval imenu Builtins.exec exec imenu Builtins.export export imenu Builtins.getopts getopts imenu Builtins.hash hash imenu Builtins.newgrp newgrp imenu Builtins.pwd pwd imenu Builtins.read read imenu Builtins.readonly readonly imenu Builtins.return return imenu Builtins.times times imenu Builtins.type type imenu Builtins.umask umask imenu Builtins.wait wait imenu Set.set set imenu Set.unset unset imenu Set.mark modified or modified variables set -a imenu Set.exit when command returns non-zero exit code set -e imenu Set.Disable file name generation set -f imenu Set.remember function commands set -h imenu Set.All keyword arguments are placed in the environment set -k imenu Set.Read commands but do not execute them set -n imenu Set.Exit after reading and executing one command set -t imenu Set.Treat unset variables as an error when substituting set -u imenu Set.Print shell input lines as they are read set -v imenu Set.Print commands and their arguments as they are executed set -x PK�������!�&\K`@��`@��2��vim80/pack/dist/opt/termdebug/plugin/termdebug.vimnu�[��������" Debugger plugin using gdb. " " WORK IN PROGRESS - much doesn't work yet " " Open two visible terminal windows: " 1. run a pty, as with ":term NONE" " 2. run gdb, passing the pty " The current window is used to view source code and follows gdb. " " A third terminal window is hidden, it is used for communication with gdb. " " The communication with gdb uses GDB/MI. See: " https://sourceware.org/gdb/current/onlinedocs/gdb/GDB_002fMI.html " " Author: Bram Moolenaar " Copyright: Vim license applies, see ":help license" " In case this gets loaded twice. if exists(':Termdebug') finish endif " Uncomment this line to write logging in "debuglog". " call ch_logfile('debuglog', 'w') " The command that starts debugging, e.g. ":Termdebug vim". " To end type "quit" in the gdb window. command -nargs=* -complete=file -bang Termdebug call s:StartDebug(<bang>0, <f-args>) command -nargs=+ -complete=file -bang TermdebugCommand call s:StartDebugCommand(<bang>0, <f-args>) " Name of the gdb command, defaults to "gdb". if !exists('termdebugger') let termdebugger = 'gdb' endif let s:pc_id = 12 let s:break_id = 13 let s:stopped = 1 if &background == 'light' hi default debugPC term=reverse ctermbg=lightblue guibg=lightblue else hi default debugPC term=reverse ctermbg=darkblue guibg=darkblue endif hi default debugBreakpoint term=reverse ctermbg=red guibg=red func s:StartDebug(bang, ...) " First argument is the command to debug, second core file or process ID. call s:StartDebug_internal({'gdb_args': a:000, 'bang': a:bang}) endfunc func s:StartDebugCommand(bang, ...) " First argument is the command to debug, rest are run arguments. call s:StartDebug_internal({'gdb_args': [a:1], 'proc_args': a:000[1:], 'bang': a:bang}) endfunc func s:StartDebug_internal(dict) if exists('s:gdbwin') echoerr 'Terminal debugger already running' return endif let s:startwin = win_getid(winnr()) let s:startsigncolumn = &signcolumn let s:save_columns = 0 if exists('g:termdebug_wide') if &columns < g:termdebug_wide let s:save_columns = &columns let &columns = g:termdebug_wide endif let vertical = 1 else let vertical = 0 endif " Open a terminal window without a job, to run the debugged program let s:ptybuf = term_start('NONE', { \ 'term_name': 'gdb program', \ 'vertical': vertical, \ }) if s:ptybuf == 0 echoerr 'Failed to open the program terminal window' return endif let pty = job_info(term_getjob(s:ptybuf))['tty_out'] let s:ptywin = win_getid(winnr()) if vertical " Assuming the source code window will get a signcolumn, use two more " columns for that, thus one less for the terminal window. exe (&columns / 2 - 1) . "wincmd |" endif " Create a hidden terminal window to communicate with gdb let s:commbuf = term_start('NONE', { \ 'term_name': 'gdb communication', \ 'out_cb': function('s:CommOutput'), \ 'hidden': 1, \ }) if s:commbuf == 0 echoerr 'Failed to open the communication terminal window' exe 'bwipe! ' . s:ptybuf return endif let commpty = job_info(term_getjob(s:commbuf))['tty_out'] " Open a terminal window to run the debugger. " Add -quiet to avoid the intro message causing a hit-enter prompt. let gdb_args = get(a:dict, 'gdb_args', []) let proc_args = get(a:dict, 'proc_args', []) let cmd = [g:termdebugger, '-quiet', '-tty', pty] + gdb_args echomsg 'executing "' . join(cmd) . '"' let s:gdbbuf = term_start(cmd, { \ 'exit_cb': function('s:EndDebug'), \ 'term_finish': 'close', \ }) if s:gdbbuf == 0 echoerr 'Failed to open the gdb terminal window' exe 'bwipe! ' . s:ptybuf exe 'bwipe! ' . s:commbuf return endif let s:gdbwin = win_getid(winnr()) " Set arguments to be run if len(proc_args) call term_sendkeys(s:gdbbuf, 'set args ' . join(proc_args) . "\r") endif " Connect gdb to the communication pty, using the GDB/MI interface call term_sendkeys(s:gdbbuf, 'new-ui mi ' . commpty . "\r") " Wait for the response to show up, users may not notice the error and wonder " why the debugger doesn't work. let try_count = 0 while 1 let response = '' for lnum in range(1,200) if term_getline(s:gdbbuf, lnum) =~ 'new-ui mi ' let response = term_getline(s:gdbbuf, lnum + 1) if response =~ 'Undefined command' echoerr 'Sorry, your gdb is too old, gdb 7.12 is required' exe 'bwipe! ' . s:ptybuf exe 'bwipe! ' . s:commbuf return endif if response =~ 'New UI allocated' " Success! break endif endif endfor if response =~ 'New UI allocated' break endif let try_count += 1 if try_count > 100 echoerr 'Cannot check if your gdb works, continuing anyway' break endif sleep 10m endwhile " Interpret commands while the target is running. This should usualy only be " exec-interrupt, since many commands don't work properly while the target is " running. call s:SendCommand('-gdb-set mi-async on') " Disable pagination, it causes everything to stop at the gdb " "Type <return> to continue" prompt. call s:SendCommand('-gdb-set pagination off') " Sign used to highlight the line where the program has stopped. " There can be only one. sign define debugPC linehl=debugPC " Sign used to indicate a breakpoint. " Can be used multiple times. sign define debugBreakpoint text=>> texthl=debugBreakpoint " Install debugger commands in the text window. call win_gotoid(s:startwin) call s:InstallCommands() call win_gotoid(s:gdbwin) " Enable showing a balloon with eval info if has("balloon_eval") || has("balloon_eval_term") set balloonexpr=TermDebugBalloonExpr() if has("balloon_eval") set ballooneval endif if has("balloon_eval_term") set balloonevalterm endif endif let s:breakpoints = {} augroup TermDebug au BufRead * call s:BufRead() au BufUnload * call s:BufUnloaded() augroup END " Run the command if the bang attribute was given " and got to the window if get(a:dict, 'bang', 0) call s:SendCommand('-exec-run') call win_gotoid(s:ptywin) endif endfunc func s:EndDebug(job, status) exe 'bwipe! ' . s:ptybuf exe 'bwipe! ' . s:commbuf unlet s:gdbwin let curwinid = win_getid(winnr()) call win_gotoid(s:startwin) let &signcolumn = s:startsigncolumn call s:DeleteCommands() call win_gotoid(curwinid) if s:save_columns > 0 let &columns = s:save_columns endif if has("balloon_eval") || has("balloon_eval_term") set balloonexpr= if has("balloon_eval") set noballooneval endif if has("balloon_eval_term") set noballoonevalterm endif endif au! TermDebug endfunc " Handle a message received from gdb on the GDB/MI interface. func s:CommOutput(chan, msg) let msgs = split(a:msg, "\r") for msg in msgs " remove prefixed NL if msg[0] == "\n" let msg = msg[1:] endif if msg != '' if msg =~ '^\(\*stopped\|\*running\|=thread-selected\)' call s:HandleCursor(msg) elseif msg =~ '^\^done,bkpt=' || msg =~ '^=breakpoint-created,' call s:HandleNewBreakpoint(msg) elseif msg =~ '^=breakpoint-deleted,' call s:HandleBreakpointDelete(msg) elseif msg =~ '^\^done,value=' call s:HandleEvaluate(msg) elseif msg =~ '^\^error,msg=' call s:HandleError(msg) endif endif endfor endfunc " Install commands in the current window to control the debugger. func s:InstallCommands() command Break call s:SetBreakpoint() command Clear call s:ClearBreakpoint() command Step call s:SendCommand('-exec-step') command Over call s:SendCommand('-exec-next') command Finish call s:SendCommand('-exec-finish') command -nargs=* Run call s:Run(<q-args>) command -nargs=* Arguments call s:SendCommand('-exec-arguments ' . <q-args>) command Stop call s:SendCommand('-exec-interrupt') command Continue call s:SendCommand('-exec-continue') command -range -nargs=* Evaluate call s:Evaluate(<range>, <q-args>) command Gdb call win_gotoid(s:gdbwin) command Program call win_gotoid(s:ptywin) command Source call s:GotoStartwinOrCreateIt() command Winbar call s:InstallWinbar() " TODO: can the K mapping be restored? nnoremap K :Evaluate<CR> if has('menu') && &mouse != '' call s:InstallWinbar() if !exists('g:termdebug_popup') || g:termdebug_popup != 0 let s:saved_mousemodel = &mousemodel let &mousemodel = 'popup_setpos' an 1.200 PopUp.-SEP3- <Nop> an 1.210 PopUp.Set\ breakpoint :Break<CR> an 1.220 PopUp.Clear\ breakpoint :Clear<CR> an 1.230 PopUp.Evaluate :Evaluate<CR> endif endif endfunc let s:winbar_winids = [] " Install the window toolbar in the current window. func s:InstallWinbar() if has('menu') && &mouse != '' nnoremenu WinBar.Step :Step<CR> nnoremenu WinBar.Next :Over<CR> nnoremenu WinBar.Finish :Finish<CR> nnoremenu WinBar.Cont :Continue<CR> nnoremenu WinBar.Stop :Stop<CR> nnoremenu WinBar.Eval :Evaluate<CR> call add(s:winbar_winids, win_getid(winnr())) endif endfunc " Delete installed debugger commands in the current window. func s:DeleteCommands() delcommand Break delcommand Clear delcommand Step delcommand Over delcommand Finish delcommand Run delcommand Arguments delcommand Stop delcommand Continue delcommand Evaluate delcommand Gdb delcommand Program delcommand Source delcommand Winbar nunmap K if has('menu') " Remove the WinBar entries from all windows where it was added. let curwinid = win_getid(winnr()) for winid in s:winbar_winids if win_gotoid(winid) aunmenu WinBar.Step aunmenu WinBar.Next aunmenu WinBar.Finish aunmenu WinBar.Cont aunmenu WinBar.Stop aunmenu WinBar.Eval endif endfor call win_gotoid(curwinid) let s:winbar_winids = [] if exists('s:saved_mousemodel') let &mousemodel = s:saved_mousemodel unlet s:saved_mousemodel aunmenu PopUp.-SEP3- aunmenu PopUp.Set\ breakpoint aunmenu PopUp.Clear\ breakpoint aunmenu PopUp.Evaluate endif endif exe 'sign unplace ' . s:pc_id for key in keys(s:breakpoints) exe 'sign unplace ' . (s:break_id + key) endfor sign undefine debugPC sign undefine debugBreakpoint unlet s:breakpoints endfunc " :Break - Set a breakpoint at the cursor position. func s:SetBreakpoint() " Setting a breakpoint may not work while the program is running. " Interrupt to make it work. let do_continue = 0 if !s:stopped let do_continue = 1 call s:SendCommand('-exec-interrupt') sleep 10m endif call s:SendCommand('-break-insert --source ' \ . fnameescape(expand('%:p')) . ' --line ' . line('.')) if do_continue call s:SendCommand('-exec-continue') endif endfunc " :Clear - Delete a breakpoint at the cursor position. func s:ClearBreakpoint() let fname = fnameescape(expand('%:p')) let lnum = line('.') for [key, val] in items(s:breakpoints) if val['fname'] == fname && val['lnum'] == lnum call term_sendkeys(s:commbuf, '-break-delete ' . key . "\r") " Assume this always wors, the reply is simply "^done". exe 'sign unplace ' . (s:break_id + key) unlet s:breakpoints[key] break endif endfor endfunc " :Next, :Continue, etc - send a command to gdb func s:SendCommand(cmd) call term_sendkeys(s:commbuf, a:cmd . "\r") endfunc func s:Run(args) if a:args != '' call s:SendCommand('-exec-arguments ' . a:args) endif call s:SendCommand('-exec-run') endfunc func s:SendEval(expr) call s:SendCommand('-data-evaluate-expression "' . a:expr . '"') let s:evalexpr = a:expr endfunc " :Evaluate - evaluate what is under the cursor func s:Evaluate(range, arg) if a:arg != '' let expr = a:arg elseif a:range == 2 let pos = getcurpos() let reg = getreg('v', 1, 1) let regt = getregtype('v') normal! gv"vy let expr = @v call setpos('.', pos) call setreg('v', reg, regt) else let expr = expand('<cexpr>') endif let s:ignoreEvalError = 0 call s:SendEval(expr) endfunc let s:ignoreEvalError = 0 let s:evalFromBalloonExpr = 0 " Handle the result of data-evaluate-expression func s:HandleEvaluate(msg) let value = substitute(a:msg, '.*value="\(.*\)"', '\1', '') let value = substitute(value, '\\"', '"', 'g') if s:evalFromBalloonExpr if s:evalFromBalloonExprResult == '' let s:evalFromBalloonExprResult = s:evalexpr . ': ' . value else let s:evalFromBalloonExprResult .= ' = ' . value endif call balloon_show(s:evalFromBalloonExprResult) else echomsg '"' . s:evalexpr . '": ' . value endif if s:evalexpr[0] != '*' && value =~ '^0x' && value != '0x0' && value !~ '"$' " Looks like a pointer, also display what it points to. let s:ignoreEvalError = 1 call s:SendEval('*' . s:evalexpr) else let s:evalFromBalloonExpr = 0 endif endfunc " Show a balloon with information of the variable under the mouse pointer, " if there is any. func TermDebugBalloonExpr() if v:beval_winid != s:startwin return endif let s:evalFromBalloonExpr = 1 let s:evalFromBalloonExprResult = '' let s:ignoreEvalError = 1 call s:SendEval(v:beval_text) return '' endfunc " Handle an error. func s:HandleError(msg) if s:ignoreEvalError " Result of s:SendEval() failed, ignore. let s:ignoreEvalError = 0 let s:evalFromBalloonExpr = 0 return endif echoerr substitute(a:msg, '.*msg="\(.*\)"', '\1', '') endfunc func s:GotoStartwinOrCreateIt() if !win_gotoid(s:startwin) new let s:startwin = win_getid(winnr()) call s:InstallWinbar() endif endfunc " Handle stopping and running message from gdb. " Will update the sign that shows the current position. func s:HandleCursor(msg) let wid = win_getid(winnr()) if a:msg =~ '^\*stopped' let s:stopped = 1 elseif a:msg =~ '^\*running' let s:stopped = 0 endif call s:GotoStartwinOrCreateIt() let fname = substitute(a:msg, '.*fullname="\([^"]*\)".*', '\1', '') if a:msg =~ '^\(\*stopped\|=thread-selected\)' && filereadable(fname) let lnum = substitute(a:msg, '.*line="\([^"]*\)".*', '\1', '') if lnum =~ '^[0-9]*$' if expand('%:p') != fnamemodify(fname, ':p') if &modified " TODO: find existing window exe 'split ' . fnameescape(fname) let s:startwin = win_getid(winnr()) call s:InstallWinbar() else exe 'edit ' . fnameescape(fname) endif endif exe lnum exe 'sign unplace ' . s:pc_id exe 'sign place ' . s:pc_id . ' line=' . lnum . ' name=debugPC file=' . fname setlocal signcolumn=yes endif else exe 'sign unplace ' . s:pc_id endif call win_gotoid(wid) endfunc " Handle setting a breakpoint " Will update the sign that shows the breakpoint func s:HandleNewBreakpoint(msg) let nr = substitute(a:msg, '.*number="\([0-9]\)*\".*', '\1', '') + 0 if nr == 0 return endif if has_key(s:breakpoints, nr) let entry = s:breakpoints[nr] else let entry = {} let s:breakpoints[nr] = entry endif let fname = substitute(a:msg, '.*fullname="\([^"]*\)".*', '\1', '') let lnum = substitute(a:msg, '.*line="\([^"]*\)".*', '\1', '') let entry['fname'] = fname let entry['lnum'] = lnum if bufloaded(fname) call s:PlaceSign(nr, entry) endif endfunc func s:PlaceSign(nr, entry) exe 'sign place ' . (s:break_id + a:nr) . ' line=' . a:entry['lnum'] . ' name=debugBreakpoint file=' . a:entry['fname'] let a:entry['placed'] = 1 endfunc " Handle deleting a breakpoint " Will remove the sign that shows the breakpoint func s:HandleBreakpointDelete(msg) let nr = substitute(a:msg, '.*id="\([0-9]*\)\".*', '\1', '') + 0 if nr == 0 return endif if has_key(s:breakpoints, nr) let entry = s:breakpoints[nr] if has_key(entry, 'placed') exe 'sign unplace ' . (s:break_id + nr) unlet entry['placed'] endif unlet s:breakpoints[nr] endif endfunc " Handle a BufRead autocommand event: place any signs. func s:BufRead() let fname = expand('<afile>:p') for [nr, entry] in items(s:breakpoints) if entry['fname'] == fname call s:PlaceSign(nr, entry) endif endfor endfunc " Handle a BufUnloaded autocommand event: unplace any signs. func s:BufUnloaded() let fname = expand('<afile>:p') for [nr, entry] in items(s:breakpoints) if entry['fname'] == fname let entry['placed'] = 0 endif endfor endfunc PK�������!�3X��X��2��vim80/pack/dist/opt/swapmouse/plugin/swapmouse.vimnu�[��������" These macros swap the left and right mouse buttons (for left handed) " Don't forget to do ":set mouse=a" or the mouse won't work at all noremap <LeftMouse> <RightMouse> noremap <2-LeftMouse> <2-RightMouse> noremap <3-LeftMouse> <3-RightMouse> noremap <4-LeftMouse> <4-RightMouse> noremap <LeftDrag> <RightDrag> noremap <LeftRelease> <RightRelease> noremap <RightMouse> <LeftMouse> noremap <2-RightMouse> <2-LeftMouse> noremap <3-RightMouse> <3-LeftMouse> noremap <4-RightMouse> <4-LeftMouse> noremap <RightDrag> <LeftDrag> noremap <RightRelease> <LeftRelease> noremap g<LeftMouse> <C-RightMouse> noremap g<RightMouse> <C-LeftMouse> noremap! <LeftMouse> <RightMouse> noremap! <LeftDrag> <RightDrag> noremap! <LeftRelease> <RightRelease> noremap! <RightMouse> <LeftMouse> noremap! <RightDrag> <LeftDrag> noremap! <RightRelease> <LeftRelease> PK�������!�dѠ#��#��.��vim80/pack/dist/opt/justify/plugin/justify.vimnu�[��������" Function to left and right align text. " " Written by: Preben "Peppe" Guldberg <c928400@student.dtu.dk> " Created: 980806 14:13 (or around that time anyway) " Revised: 001103 00:36 (See "Revisions" below) " function Justify( [ textwidth [, maxspaces [, indent] ] ] ) " " Justify() will left and right align a line by filling in an " appropriate amount of spaces. Extra spaces are added to existing " spaces starting from the right side of the line. As an example, the " following documentation has been justified. " " The function takes the following arguments: " textwidth argument " ------------------ " If not specified, the value of the 'textwidth' option is used. If " 'textwidth' is zero a value of 80 is used. " " Additionally the arguments 'tw' and '' are accepted. The value of " 'textwidth' will be used. These are handy, if you just want to specify " the maxspaces argument. " maxspaces argument " ------------------ " If specified, alignment will only be done, if the longest space run " after alignment is no longer than maxspaces. " " An argument of '' is accepted, should the user like to specify all " arguments. " " To aid user defined commands, negative values are accepted aswell. " Using a negative value specifies the default behaviour: any length of " space runs will be used to justify the text. " indent argument " --------------- " This argument specifies how a line should be indented. The default is " to keep the current indentation. " " Negative values: Keep current amount of leading whitespace. " Positive values: Indent all lines with leading whitespace using this " amount of whitespace. " " Note that the value 0, needs to be quoted as a string. This value " leads to a left flushed text. " " Additionally units of 'shiftwidth'/'sw' and 'tabstop'/'ts' may be " added. In this case, if the value of indent is positive, the amount of " whitespace to be added will be multiplied by the value of the " 'shiftwidth' and 'tabstop' settings. If these units are used, the " argument must be given as a string, eg. Justify('','','2sw'). " " If the values of 'sw' or 'tw' are negative, they are treated as if " they were 0, which means that the text is flushed left. There is no " check if a negative number prefix is used to change the sign of a " negative 'sw' or 'ts' value. " " As with the other arguments, '' may be used to get the default " behaviour. " Notes: " " If the line, adjusted for space runs and leading/trailing whitespace, " is wider than the used textwidth, the line will be left untouched (no " whitespace removed). This should be equivalent to the behaviour of " :left, :right and :center. " " If the resulting line is shorter than the used textwidth it is left " untouched. " " All space runs in the line are truncated before the alignment is " carried out. " " If you have set 'noexpandtab', :retab! is used to replace space runs " with whitespace using the value of 'tabstop'. This should be " conformant with :left, :right and :center. " " If joinspaces is set, an extra space is added after '.', '?' and '!'. " If 'cpooptions' include 'j', extra space is only added after '.'. " (This may on occasion conflict with maxspaces.) " Related mappings: " " Mappings that will align text using the current text width, using at " most four spaces in a space run and keeping current indentation. nmap _j :%call Justify('tw',4)<CR> vmap _j :call Justify('tw',4)<CR> " " Mappings that will remove space runs and format lines (might be useful " prior to aligning the text). nmap ,gq :%s/\s\+/ /g<CR>gq1G vmap ,gq :s/\s\+/ /g<CR>gvgq " User defined command: " " The following is an ex command that works as a shortcut to the Justify " function. Arguments to Justify() can be added after the command. com! -range -nargs=* Justify <line1>,<line2>call Justify(<f-args>) " " The following commands are all equivalent: " " 1. Simplest use of Justify(): " :call Justify() " :Justify " " 2. The _j mapping above via the ex command: " :%Justify tw 4 " " 3. Justify visualised text at 72nd column while indenting all " previously indented text two shiftwidths " :'<,'>call Justify(72,'','2sw') " :'<,'>Justify 72 -1 2sw " " This documentation has been justified using the following command: ":se et|kz|1;/^" function Justify(/+,'z-g/^" /s/^" //|call Justify(70,3)|s/^/" / " Revisions: " 001103: If 'joinspaces' was set, calculations could be wrong. " Tabs at start of line could also lead to errors. " Use setline() instead of "exec 's/foo/bar/' - safer. " Cleaned up the code a bit. " " Todo: Convert maps to the new script specific form " Error function function! Justify_error(message) echohl Error echo "Justify([tw, [maxspaces [, indent]]]): " . a:message echohl None endfunction " Now for the real thing function! Justify(...) range if a:0 > 3 call Justify_error("Too many arguments (max 3)") return 1 endif " Set textwidth (accept 'tw' and '' as arguments) if a:0 >= 1 if a:1 =~ '^\(tw\)\=$' let tw = &tw elseif a:1 =~ '^\d\+$' let tw = a:1 else call Justify_error("tw must be a number (>0), '' or 'tw'") return 2 endif else let tw = &tw endif if tw == 0 let tw = 80 endif " Set maximum number of spaces between WORDs if a:0 >= 2 if a:2 == '' let maxspaces = tw elseif a:2 =~ '^-\d\+$' let maxspaces = tw elseif a:2 =~ '^\d\+$' let maxspaces = a:2 else call Justify_error("maxspaces must be a number or ''") return 3 endif else let maxspaces = tw endif if maxspaces <= 1 call Justify_error("maxspaces should be larger than 1") return 4 endif " Set the indentation style (accept sw and ts units) let indent_fix = '' if a:0 >= 3 if (a:3 == '') || a:3 =~ '^-[1-9]\d*\(shiftwidth\|sw\|tabstop\|ts\)\=$' let indent = -1 elseif a:3 =~ '^-\=0\(shiftwidth\|sw\|tabstop\|ts\)\=$' let indent = 0 elseif a:3 =~ '^\d\+\(shiftwidth\|sw\|tabstop\|ts\)\=$' let indent = substitute(a:3, '\D', '', 'g') elseif a:3 =~ '^\(shiftwidth\|sw\|tabstop\|ts\)$' let indent = 1 else call Justify_error("indent: a number with 'sw'/'ts' unit") return 5 endif if indent >= 0 while indent > 0 let indent_fix = indent_fix . ' ' let indent = indent - 1 endwhile let indent_sw = 0 if a:3 =~ '\(shiftwidth\|sw\)' let indent_sw = &sw elseif a:3 =~ '\(tabstop\|ts\)' let indent_sw = &ts endif let indent_fix2 = '' while indent_sw > 0 let indent_fix2 = indent_fix2 . indent_fix let indent_sw = indent_sw - 1 endwhile let indent_fix = indent_fix2 endif else let indent = -1 endif " Avoid substitution reports let save_report = &report set report=1000000 " Check 'joinspaces' and 'cpo' if &js == 1 if &cpo =~ 'j' let join_str = '\(\. \)' else let join_str = '\([.!?!] \)' endif endif let cur = a:firstline while cur <= a:lastline let str_orig = getline(cur) let save_et = &et set et exec cur . "retab" let &et = save_et let str = getline(cur) let indent_str = indent_fix let indent_n = strlen(indent_str) " Shall we remember the current indentation if indent < 0 let indent_orig = matchstr(str_orig, '^\s*') if strlen(indent_orig) > 0 let indent_str = indent_orig let indent_n = strlen(matchstr(str, '^\s*')) endif endif " Trim trailing, leading and running whitespace let str = substitute(str, '\s\+$', '', '') let str = substitute(str, '^\s\+', '', '') let str = substitute(str, '\s\+', ' ', 'g') let str_n = strdisplaywidth(str) " Possible addition of space after punctuation if exists("join_str") let str = substitute(str, join_str, '\1 ', 'g') endif let join_n = strdisplaywidth(str) - str_n " Can extraspaces be added? " Note that str_n may be less than strlen(str) [joinspaces above] if strdisplaywidth(str) <= tw - indent_n && str_n > 0 " How many spaces should be added let s_add = tw - str_n - indent_n - join_n let s_nr = strlen(substitute(str, '\S', '', 'g') ) - join_n let s_dup = s_add / s_nr let s_mod = s_add % s_nr " Test if the changed line fits with tw if 0 <= (str_n + (maxspaces - 1)*s_nr + indent_n) - tw " Duplicate spaces while s_dup > 0 let str = substitute(str, '\( \+\)', ' \1', 'g') let s_dup = s_dup - 1 endwhile " Add extra spaces from the end while s_mod > 0 let str = substitute(str, '\(\(\s\+\S\+\)\{' . s_mod . '}\)$', ' \1', '') let s_mod = s_mod - 1 endwhile " Indent the line if indent_n > 0 let str = substitute(str, '^', indent_str, '' ) endif " Replace the line call setline(cur, str) " Convert to whitespace if &et == 0 exec cur . 'retab!' endif endif " Change of line endif " Possible change let cur = cur + 1 endwhile norm ^ let &report = save_report endfunction " EOF vim: tw=78 ts=8 sw=4 sts=4 noet ai PK�������!�"< �� ��8��vim80/pack/dist/opt/editexisting/plugin/editexisting.vimnu�[��������" Vim Plugin: Edit the file with an existing Vim if possible " Maintainer: Bram Moolenaar " Last Change: 2016 Mar 28 " To use add ":packadd! editexisting" in your vimrc file. " This plugin serves two purposes: " 1. On startup, if we were invoked with one file name argument and the file " is not modified then try to find another Vim instance that is editing " this file. If there is one then bring it to the foreground and exit. " 2. When a file is edited and a swap file exists for it, try finding that " other Vim and bring it to the foreground. Requires Vim 7, because it " uses the SwapExists autocommand event. " Function that finds the Vim instance that is editing "filename" and brings " it to the foreground. func s:EditElsewhere(filename) let fname_esc = substitute(a:filename, "'", "''", "g") let servers = serverlist() while servers != '' " Get next server name in "servername"; remove it from "servers". let i = match(servers, "\n") if i == -1 let servername = servers let servers = '' else let servername = strpart(servers, 0, i) let servers = strpart(servers, i + 1) endif " Skip ourselves. if servername ==? v:servername continue endif " Check if this server is editing our file. if remote_expr(servername, "bufloaded('" . fname_esc . "')") " Yes, bring it to the foreground. if has("win32") call remote_foreground(servername) endif call remote_expr(servername, "foreground()") if remote_expr(servername, "exists('*EditExisting')") " Make sure the file is visible in a window (not hidden). " If v:swapcommand exists and is set, send it to the server. if exists("v:swapcommand") let c = substitute(v:swapcommand, "'", "''", "g") call remote_expr(servername, "EditExisting('" . fname_esc . "', '" . c . "')") else call remote_expr(servername, "EditExisting('" . fname_esc . "', '')") endif endif if !(has('vim_starting') && has('gui_running') && has('gui_win32')) " Tell the user what is happening. Not when the GUI is starting " though, it would result in a message box. echomsg "File is being edited by " . servername sleep 2 endif return 'q' endif endwhile return '' endfunc " When the plugin is loaded and there is one file name argument: Find another " Vim server that is editing this file right now. if argc() == 1 && !&modified if s:EditElsewhere(expand("%:p")) == 'q' quit endif endif " Setup for handling the situation that an existing swap file is found. try au! SwapExists * let v:swapchoice = s:EditElsewhere(expand("<afile>:p")) catch " Without SwapExists we don't do anything for ":edit" commands endtry " Function used on the server to make the file visible and possibly execute a " command. func! EditExisting(fname, command) " Get the window number of the file in the current tab page. let winnr = bufwinnr(a:fname) if winnr <= 0 " Not found, look in other tab pages. let bufnr = bufnr(a:fname) for i in range(tabpagenr('$')) if index(tabpagebuflist(i + 1), bufnr) >= 0 " Make this tab page the current one and find the window number. exe 'tabnext ' . (i + 1) let winnr = bufwinnr(a:fname) break endif endfor endif if winnr > 0 exe winnr . "wincmd w" elseif exists('*fnameescape') exe "split " . fnameescape(a:fname) else exe "split " . escape(a:fname, " \t\n*?[{`$\\%#'\"|!<") endif if a:command != '' exe "normal! " . a:command endif redraw endfunc PK�������!� �� ����vim80/plugin/gzip.vimnu�[��������" Vim plugin for editing compressed files. " Maintainer: Bram Moolenaar <Bram@vim.org> " Last Change: 2016 Oct 30 " Exit quickly when: " - this plugin was already loaded " - when 'compatible' is set " - some autocommands are already taking care of compressed files if exists("loaded_gzip") || &cp || exists("#BufReadPre#*.gz") finish endif let loaded_gzip = 1 augroup gzip " Remove all gzip autocommands au! " Enable editing of gzipped files. " The functions are defined in autoload/gzip.vim. " " Set binary mode before reading the file. " Use "gzip -d", gunzip isn't always available. autocmd BufReadPre,FileReadPre *.gz,*.bz2,*.Z,*.lzma,*.xz,*.lz,*.zst setlocal bin autocmd BufReadPost,FileReadPost *.gz call gzip#read("gzip -dn") autocmd BufReadPost,FileReadPost *.bz2 call gzip#read("bzip2 -d") autocmd BufReadPost,FileReadPost *.Z call gzip#read("uncompress") autocmd BufReadPost,FileReadPost *.lzma call gzip#read("lzma -d") autocmd BufReadPost,FileReadPost *.xz call gzip#read("xz -d") autocmd BufReadPost,FileReadPost *.lz call gzip#read("lzip -d") autocmd BufReadPost,FileReadPost *.zst call gzip#read("zstd -d --rm") autocmd BufWritePost,FileWritePost *.gz call gzip#write("gzip") autocmd BufWritePost,FileWritePost *.bz2 call gzip#write("bzip2") autocmd BufWritePost,FileWritePost *.Z call gzip#write("compress -f") autocmd BufWritePost,FileWritePost *.lzma call gzip#write("lzma -z") autocmd BufWritePost,FileWritePost *.xz call gzip#write("xz -z") autocmd BufWritePost,FileWritePost *.lz call gzip#write("lzip") autocmd BufWritePost,FileWritePost *.zst call gzip#write("zstd --rm") autocmd FileAppendPre *.gz call gzip#appre("gzip -dn") autocmd FileAppendPre *.bz2 call gzip#appre("bzip2 -d") autocmd FileAppendPre *.Z call gzip#appre("uncompress") autocmd FileAppendPre *.lzma call gzip#appre("lzma -d") autocmd FileAppendPre *.xz call gzip#appre("xz -d") autocmd FileAppendPre *.lz call gzip#appre("lzip -d") autocmd FileAppendPre *.zst call gzip#appre("zstd -d --rm") autocmd FileAppendPost *.gz call gzip#write("gzip") autocmd FileAppendPost *.bz2 call gzip#write("bzip2") autocmd FileAppendPost *.Z call gzip#write("compress -f") autocmd FileAppendPost *.lzma call gzip#write("lzma -z") autocmd FileAppendPost *.xz call gzip#write("xz -z") autocmd FileAppendPost *.lz call gzip#write("lzip") autocmd FileAppendPost *.zst call gzip#write("zstd --rm") augroup END PK�������!�T&(��(����vim80/plugin/logiPat.vimnu�[��������" LogiPat: Boolean logical pattern matcher " Author: Charles E. Campbell " Date: Apr 04, 2016 " Version: 4 " Purpose: to do Boolean-logic based regular expression pattern matching " Copyright: Copyright (C) 1999-2011 Charles E. Campbell {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright " notice is copied with it. Like most anything else that's free, " LogiPat.vim is provided *as is* and comes with no warranty " of any kind, either expressed or implied. By using this " plugin, you agree that in no event will the copyright " holder be liable for any damages resulting from the use " of this software. " " Usage: {{{1 " :LogiPat ... " " Boolean logic supported: " () grouping operators " ! not the following pattern " | logical or " & logical and " "..pattern.." " Example: {{{1 " :LogiPat !("january"|"february") " would match all strings not containing the strings january " or february " GetLatestVimScripts: 1290 1 :AutoInstall: LogiPat.vim " " Behold, you will conceive in your womb, and bring forth a son, {{{1 " and will call his name Jesus. He will be great, and will be " called the Son of the Most High. The Lord God will give him the " throne of his father, David, and he will reign over the house of " Jacob forever. There will be no end to his kingdom. (Luke 1:31-33 WEB) " --------------------------------------------------------------------- " Load Once: {{{1 if &cp || exists("loaded_logiPat") finish endif let g:loaded_logiPat = "v4" let s:keepcpo = &cpo set cpo&vim "DechoRemOn " --------------------------------------------------------------------- " Public Interface: {{{1 com! -nargs=* LogiPat call LogiPat(<q-args>,1) sil! com -nargs=* LP call LogiPat(<q-args>,1) sil! com -nargs=* LPR call LogiPat(<q-args>,1,"r") com! -nargs=+ LPE echomsg LogiPat(<q-args>) com! -nargs=+ LogiPatFlags let s:LogiPatFlags="<args>" sil! com -nargs=+ LPF let s:LogiPatFlags="<args>" " ===================================================================== " Functions: {{{1 " --------------------------------------------------------------------- " LogiPat: this function interprets the boolean-logic pattern {{{2 fun! LogiPat(pat,...) " call Dfunc("LogiPat(pat<".a:pat.">)") " LogiPat(pat,dosearch) if a:0 > 0 let dosearch= a:1 else let dosearch= 0 endif if a:0 >= 3 let s:LogiPatFlags= a:3 endif let s:npatstack = 0 let s:nopstack = 0 let s:preclvl = 0 let expr = a:pat " Lexer/Parser while expr != "" " call Decho("expr<".expr.">") if expr =~ '^"' " push a Pattern; accept "" as a single " in the pattern let expr = substitute(expr,'^\s*"','','') let pat = substitute(expr,'^\(\%([^"]\|\"\"\)\{-}\)"\([^"].*$\|$\)','\1','') let pat = substitute(pat,'""','"','g') let expr = substitute(expr,'^\(\%([^"]\|\"\"\)\{-}\)"\([^"].*$\|$\)','\2','') let expr = substitute(expr,'^\s*','','') " call Decho("pat<".pat."> expr<".expr.">") call s:LP_PatPush('.*'.pat.'.*') elseif expr =~ '^[!()|&]' " push an operator let op = strpart(expr,0,1) let expr = strpart(expr,strlen(op)) " allow for those who can't resist doubling their and/or operators if op =~ '[|&]' && expr[0] == op let expr = strpart(expr,strlen(op)) endif call s:LP_OpPush(op) elseif expr =~ '^\s' " skip whitespace let expr= strpart(expr,1) else echoerr "operator<".strpart(expr,0,1)."> not supported (yet)" let expr= strpart(expr,1) endif endwhile " Final Execution call s:LP_OpPush('Z') let result= s:LP_PatPop(1) " call Decho("result=".result) " sanity checks and cleanup if s:npatstack > 0 echoerr s:npatstack." patterns left on stack!" let s:npatstack= 0 endif if s:nopstack > 0 echoerr s:nopstack." operators left on stack!" let s:nopstack= 0 endif " perform the indicated search if dosearch if exists("s:LogiPatFlags") && s:LogiPatFlags != "" " call Decho("search(result<".result."> LogiPatFlags<".s:LogiPatFlags.">)") call search(result,s:LogiPatFlags) else " call Decho("search(result<".result.">)") call search(result) endif let @/= result endif " call Dret("LogiPat ".result) return result endfun " --------------------------------------------------------------------- " s:String: Vim6.4 doesn't have string() {{{2 func! s:String(str) return "'".escape(a:str, '"')."'" endfunc " --------------------------------------------------------------------- " LP_PatPush: {{{2 fun! s:LP_PatPush(pat) " call Dfunc("LP_PatPush(pat<".a:pat.">)") let s:npatstack = s:npatstack + 1 let s:patstack_{s:npatstack} = a:pat " call s:StackLook("patpush") "Decho " call Dret("LP_PatPush : npatstack=".s:npatstack) endfun " --------------------------------------------------------------------- " LP_PatPop: pop a number/variable from LogiPat's pattern stack {{{2 fun! s:LP_PatPop(lookup) " call Dfunc("LP_PatPop(lookup=".a:lookup.")") if s:npatstack > 0 let ret = s:patstack_{s:npatstack} let s:npatstack = s:npatstack - 1 else let ret= "---error---" echoerr "(LogiPat) invalid expression" endif " call s:StackLook("patpop") "Decho " call Dret("LP_PatPop ".ret) return ret endfun " --------------------------------------------------------------------- " LP_OpPush: {{{2 fun! s:LP_OpPush(op) " call Dfunc("LP_OpPush(op<".a:op.">)") " determine new operator's precedence level if a:op == '(' let s:preclvl= s:preclvl + 10 let preclvl = s:preclvl elseif a:op == ')' let s:preclvl= s:preclvl - 10 if s:preclvl < 0 let s:preclvl= 0 echoerr "too many )s" endif let preclvl= s:preclvl elseif a:op =~ '|' let preclvl= s:preclvl + 2 elseif a:op =~ '&' let preclvl= s:preclvl + 4 elseif a:op == '!' let preclvl= s:preclvl + 6 elseif a:op == 'Z' let preclvl= -1 else echoerr "expr<".expr."> not supported (yet)" let preclvl= s:preclvl endif " call Decho("new operator<".a:op."> preclvl=".preclvl) " execute higher-precdence operators " call Decho("execute higher-precedence operators") call s:LP_Execute(preclvl) " push new operator onto operator-stack " call Decho("push new operator<".a:op."> onto stack with preclvl=".preclvl." at nopstack=".(s:nopstack+1)) if a:op =~ '!' let s:nopstack = s:nopstack + 1 let s:opprec_{s:nopstack} = preclvl let s:opstack_{s:nopstack} = a:op elseif a:op =~ '|' let s:nopstack = s:nopstack + 1 let s:opprec_{s:nopstack} = preclvl let s:opstack_{s:nopstack} = a:op elseif a:op == '&' let s:nopstack = s:nopstack + 1 let s:opprec_{s:nopstack} = preclvl let s:opstack_{s:nopstack} = a:op endif " call s:StackLook("oppush") "Decho " call Dret("LP_OpPush : s:preclvl=".s:preclvl) endfun " --------------------------------------------------------------------- " LP_Execute: execute operators from opstack using pattern stack {{{2 fun! s:LP_Execute(preclvl) " call Dfunc("LP_Execute(preclvl=".a:preclvl.") npatstack=".s:npatstack." nopstack=".s:nopstack) " execute all higher precedence operators while s:nopstack > 0 && a:preclvl < s:opprec_{s:nopstack} let op= s:opstack_{s:nopstack} " call Decho("op<".op."> nop=".s:nopstack." [preclvl=".a:preclvl."] < [opprec_".s:nopstack."=".s:opprec_{s:nopstack}."]") let s:nopstack = s:nopstack - 1 if op == '!' let n1= s:LP_PatPop(1) call s:LP_PatPush(s:LP_Not(n1)) elseif op == '|' let n1= s:LP_PatPop(1) let n2= s:LP_PatPop(1) call s:LP_PatPush(s:LP_Or(n2,n1)) elseif op =~ '&' let n1= s:LP_PatPop(1) let n2= s:LP_PatPop(1) call s:LP_PatPush(s:LP_And(n2,n1)) endif " call s:StackLook("execute") "Decho endwhile " call Dret("LP_Execute") endfun " --------------------------------------------------------------------- " LP_Not: writes a logical-not for a pattern {{{2 fun! s:LP_Not(pat) " call Dfunc("LP_Not(pat<".a:pat.">)") if a:pat =~ '^\.\*' && a:pat =~ '\.\*$' let pat= substitute(a:pat,'^\.\*\(.*\)\.\*$','\1','') let ret= '^\%(\%('.pat.'\)\@!.\)*$' else let ret= '^\%(\%('.a:pat.'\)\@!.\)*$' endif " call Dret("LP_Not ".ret) return ret endfun " --------------------------------------------------------------------- " LP_Or: writes a logical-or branch using two patterns {{{2 fun! s:LP_Or(pat1,pat2) " call Dfunc("LP_Or(pat1<".a:pat1."> pat2<".a:pat2.">)") let ret= '\%('.a:pat1.'\|'.a:pat2.'\)' " call Dret("LP_Or ".ret) return ret endfun " --------------------------------------------------------------------- " LP_And: writes a logical-and concat using two patterns {{{2 fun! s:LP_And(pat1,pat2) " call Dfunc("LP_And(pat1<".a:pat1."> pat2<".a:pat2.">)") let ret= '\%('.a:pat1.'\&'.a:pat2.'\)' " call Dret("LP_And ".ret) return ret endfun " --------------------------------------------------------------------- " StackLook: {{{2 fun! s:StackLook(description) " call Dfunc("StackLook(description<".a:description.">)") let iop = 1 let ifp = 1 " call Decho("Pattern Operator") " print both pattern and operator while ifp <= s:npatstack && iop <= s:nopstack let fp = s:patstack_{ifp} let op = s:opstack_{iop}." (P".s:opprec_{s:nopstack}.')' let fplen= strlen(fp) if fplen < 30 let fp= fp.strpart(" ",1,30-fplen) endif " call Decho(fp.op) let ifp = ifp + 1 let iop = iop + 1 endwhile " print just pattern while ifp <= s:npatstack let fp = s:patstack_{ifp} " call Decho(fp) let ifp = ifp + 1 endwhile " print just operator while iop <= s:nopstack let op = s:opstack_{iop}." (P".s:opprec_{s:nopstack}.')' " call Decho(" ".op) let iop = iop + 1 endwhile " call Dret("StackLook") endfun " --------------------------------------------------------------------- " Cleanup And Modeline: {{{1 let &cpo= s:keepcpo unlet s:keepcpo " vim: ts=4 fdm=marker PK�������!�x&��&����vim80/plugin/tohtml.vimnu�[��������" Vim plugin for converting a syntax highlighted file to HTML. " Maintainer: Ben Fritz <fritzophrenic@gmail.com> " Last Change: 2015 Sep 08 " " The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and " $VIMRUNTIME/syntax/2html.vim " " TODO: {{{ " * Options for generating the CSS in external style sheets. New :TOcss " command to convert the current color scheme into a (mostly) generic CSS " stylesheet which can be re-used. Alternate stylesheet support? Good start " by Erik Falor " ( https://groups.google.com/d/topic/vim_use/7XTmC4D22dU/discussion ). " * Add optional argument to :TOhtml command to specify mode (gui, cterm, " term) to use for the styling. Suggestion by "nacitar". " * Add way to override or specify which RGB colors map to the color numbers " in cterm. Get better defaults than just guessing? Suggestion by "nacitar". " * Disable filetype detection until after all processing is done. " * Add option for not generating the hyperlink on stuff that looks like a " URL? Or just color the link to fit with the colorscheme (and only special " when hovering)? " * Bug: Opera does not allow printing more than one page if uncopyable " regions is turned on. Possible solution: Add normal text line numbers with " display:none, set to display:inline for print style sheets, and hide " <input> elements for print, to allow Opera printing multiple pages (and " other uncopyable areas?). May need to make the new text invisible to IE " with conditional comments to prevent copying it, IE for some reason likes " to copy hidden text. Other browsers too? " * Bug: still a 1px gap throughout the fold column when html_prevent_copy is " "fn" in some browsers. Specifically, in Chromium on Ubuntu (but not Chrome " on Windows). Perhaps it is font related? " * Bug: still some gaps in the fold column when html_prevent_copy contains " 'd' and showing the whole diff (observed in multiple browsers). Only gaps " on diff lines though. " * Undercurl support via CSS3, with fallback to dotted or something: " https://groups.google.com/d/topic/vim_use/BzXA6He1pHg/discussion " * Redo updates for modified default foldtext (v11) when/if the patch is " accepted to modify it. " * Test case +diff_one_file-dynamic_folds+expand_tabs-hover_unfold " +ignore_conceal-ignore_folding+no_foldcolumn+no_pre+no_progress " +number_lines-pre_wrap-use_css+use_xhtml+whole_filler.xhtml " does not show the whole diff filler as it is supposed to? " * Bug: when 'isprint' is wrong for the current encoding, will generate " invalid content. Can/should anything be done about this? Maybe a separate " plugin to correct 'isprint' based on encoding? " * Check to see if the windows-125\d encodings actually work in Unix without " the 8bit- prefix. Add prefix to autoload dictionaries for Unix if not. " * Font auto-detection similar to " http://www.vim.org/scripts/script.php?script_id=2384 but for a variety of " platforms. " * Error thrown when sourcing 2html.vim directly when plugins are not loaded. " * Pull in code from http://www.vim.org/scripts/script.php?script_id=3113 : " - listchars support " - full-line background highlight " - other? " * Make it so deleted lines in a diff don't create side-scrolling (get it " free with full-line background highlight above). " * Restore open/closed folds and cursor position after processing each file " with option not to restore for speed increase. " * Add extra meta info (generation time, etc.)? " * Tidy up so we can use strict doctype in even more situations " * Implementation detail: add threshold for writing the lines to the html " buffer before we're done (5000 or so lines should do it) " * TODO comments for code cleanup scattered throughout "}}} if exists('g:loaded_2html_plugin') finish endif let g:loaded_2html_plugin = 'vim7.4_v2' " " Changelog: {{{ " 7.4_v2 (this version): Fix error raised when converting a diff containing " an empty buffer. Jan Stocker: allow g:html_font to " take a list so it is easier to specfiy fallback " fonts in the generated CSS. " 7.4_v1 (Vim 7.4.0000): Fix modeline mangling for new "Vim:" format, and " also for version-specific modelines like "vim>703:". " " 7.3 updates: {{{ " 7.3_v14 (Vim 7.3.1246): Allow suppressing line number anchors using " g:html_line_ids=0. Allow customizing " important IDs (like line IDs and fold IDs) using " g:html_id_expr evalutated when the buffer conversion " is started. " 7.3_v13 (Vim 7.3.1088): Keep foldmethod at manual in the generated file and " insert modeline to set it to manual. " Fix bug: diff mode with 2 unsaved buffers creates a " duplicate of one buffer instead of including both. " Add anchors to each line so you can put '#L123' " or '#123' at the end of the URL to jump to line 123 " (idea by Andy Spencer). Add javascript to open folds " to show the anchor being jumped to if it is hidden. " Fix XML validation error: &nsbp; not part of XML. " Allow TOhtml to chain together with other commands " using |. " 7.3_v12 (Vim 7.3.0616): Fix modeline mangling to also work for when multiple " highlight groups make up the start-of-modeline text. " Improve render time of page with uncopyable regions " by not using one-input-per-char. Change name of " uncopyable option from html_unselectable to " html_prevent_copy. Added html_no_invalid option and " default to inserting invalid markup for uncopyable " regions to prevent MS Word from pasting undeletable " <input> elements. Fix 'cpo' handling (Thilo Six). " 7.3_v12b1: Add html_unselectable option. Rework logic to " eliminate post-processing substitute commands in " favor of doing the work up front. Remove unnecessary " special treatment of 'LineNr' highlight group. Minor " speed improvements. Fix modeline mangling in " generated output so it works for text in the first " column. Fix missing line number and fold column in " diff filler lines. Fix that some fonts have a 1px " gap (using a dirty hack, improvements welcome). Add " "colorscheme" meta tag. Does NOT include support for " the new default foldtext added in v11, as the patch " adding it has not yet been included in Vim. " 7.3_v11 ( unreleased ): Support new default foldtext from patch by Christian " Brabandt in " http://groups.google.com/d/topic/vim_dev/B6FSGfq9VoI/discussion. " This patch has not yet been included in Vim, thus " these changes are removed in the next version. " 7.3_v10 (Vim 7.3.0227): Fix error E684 when converting a range wholly inside " multiple nested folds with dynamic folding on. " Also fix problem with foldtext in this situation. " 7.3_v9 (Vim 7.3.0170): Add html_pre_wrap option active with html_use_css " and without html_no_pre, default value same as " 'wrap' option, (Andy Spencer). Don't use " 'fileencoding' for converted document encoding if " 'buftype' indicates a special buffer which isn't " written. " 7.3_v8 (Vim 7.3.0100): Add html_expand_tabs option to allow leaving tab " characters in generated output (Andy Spencer). " Escape text that looks like a modeline so Vim " doesn't use anything in the converted HTML as a " modeline. Bugfixes: Fix folding when a fold starts " before the conversion range. Remove fold column when " there are no folds. " 7.3_v7 (Vim 7-3-0063): see betas released on vim_dev below: " 7.3_v7b3: Fixed bug, convert Unicode to UTF-8 all the way. " 7.3_v7b2: Remove automatic detection of encodings that are not " supported by all major browsers according to " http://wiki.whatwg.org/wiki/Web_Encodings and " convert to UTF-8 for all Unicode encodings. Make " HTML encoding to Vim encoding detection be " case-insensitive for built-in pairs. " 7.3_v7b1: Remove use of setwinvar() function which cannot be " called in restricted mode (Andy Spencer). Use " 'fencoding' instead of 'encoding' to determine by " charset, and make sure the 'fenc' of the generated " file matches its indicated charset. Add charsets for " all of Vim's natively supported encodings. " 7.3_v6 (Vim 7.3.0000): Really fix bug with 'nowrapscan', 'magic' and other " user settings interfering with diff mode generation, " trailing whitespace (e.g. line number column) when " using html_no_pre, and bugs when using " html_hover_unfold. " 7.3_v5 ( unreleased ): Fix bug with 'nowrapscan' and also with out-of-sync " folds in diff mode when first line was folded. " 7.3_v4 (Vim 7.3.0000): Bugfixes, especially for xhtml markup, and diff mode " 7.3_v3 (Vim 7.3.0000): Refactor option handling and make html_use_css " default to true when not set to anything. Use strict " doctypes where possible. Rename use_xhtml option to " html_use_xhtml for consistency. Use .xhtml extension " when using this option. Add meta tag for settings. " 7.3_v2 (Vim 7.3.0000): Fix syntax highlighting in diff mode to use both the " diff colors and the normal syntax colors " 7.3_v1 (Vim 7.3.0000): Add conceal support and meta tags in output "}}} "}}} " Define the :TOhtml command when: " - 'compatible' is not set " - this plugin was not already loaded " - user commands are available. {{{ if !&cp && !exists(":TOhtml") && has("user_commands") command -range=% -bar TOhtml :call tohtml#Convert2HTML(<line1>, <line2>) endif "}}} " Make sure any patches will probably use consistent indent " vim: ts=8 sw=2 sts=2 noet fdm=marker PK�������!�dZ��Z����vim80/plugin/matchparen.vimnu�[��������" Vim plugin for showing matching parens " Maintainer: Bram Moolenaar <Bram@vim.org> " Last Change: 2017 Sep 30 " Exit quickly when: " - this plugin was already loaded (or disabled) " - when 'compatible' is set " - the "CursorMoved" autocmd event is not available. if exists("g:loaded_matchparen") || &cp || !exists("##CursorMoved") finish endif let g:loaded_matchparen = 1 if !exists("g:matchparen_timeout") let g:matchparen_timeout = 300 endif if !exists("g:matchparen_insert_timeout") let g:matchparen_insert_timeout = 60 endif augroup matchparen " Replace all matchparen autocommands autocmd! CursorMoved,CursorMovedI,WinEnter * call s:Highlight_Matching_Pair() if exists('##TextChanged') autocmd! TextChanged,TextChangedI * call s:Highlight_Matching_Pair() endif augroup END " Skip the rest if it was already done. if exists("*s:Highlight_Matching_Pair") finish endif let s:cpo_save = &cpo set cpo-=C " The function that is invoked (very often) to define a ":match" highlighting " for any matching paren. function! s:Highlight_Matching_Pair() " Remove any previous match. if exists('w:paren_hl_on') && w:paren_hl_on silent! call matchdelete(3) let w:paren_hl_on = 0 endif " Avoid that we remove the popup menu. " Return when there are no colors (looks like the cursor jumps). if pumvisible() || (&t_Co < 8 && !has("gui_running")) return endif " Get the character under the cursor and check if it's in 'matchpairs'. let c_lnum = line('.') let c_col = col('.') let before = 0 let text = getline(c_lnum) let matches = matchlist(text, '\(.\)\=\%'.c_col.'c\(.\=\)') if empty(matches) let [c_before, c] = ['', ''] else let [c_before, c] = matches[1:2] endif let plist = split(&matchpairs, '.\zs[:,]') let i = index(plist, c) if i < 0 " not found, in Insert mode try character before the cursor if c_col > 1 && (mode() == 'i' || mode() == 'R') let before = strlen(c_before) let c = c_before let i = index(plist, c) endif if i < 0 " not found, nothing to do return endif endif " Figure out the arguments for searchpairpos(). if i % 2 == 0 let s_flags = 'nW' let c2 = plist[i + 1] else let s_flags = 'nbW' let c2 = c let c = plist[i - 1] endif if c == '[' let c = '\[' let c2 = '\]' endif " Find the match. When it was just before the cursor move it there for a " moment. if before > 0 let has_getcurpos = exists("*getcurpos") if has_getcurpos " getcurpos() is more efficient but doesn't exist before 7.4.313. let save_cursor = getcurpos() else let save_cursor = winsaveview() endif call cursor(c_lnum, c_col - before) endif " Build an expression that detects whether the current cursor position is in " certain syntax types (string, comment, etc.), for use as searchpairpos()'s " skip argument. " We match "escape" for special items, such as lispEscapeSpecial. let s_skip = '!empty(filter(map(synstack(line("."), col(".")), ''synIDattr(v:val, "name")''), ' . \ '''v:val =~? "string\\|character\\|singlequote\\|escape\\|comment"''))' " If executing the expression determines that the cursor is currently in " one of the syntax types, then we want searchpairpos() to find the pair " within those syntax types (i.e., not skip). Otherwise, the cursor is " outside of the syntax types and s_skip should keep its value so we skip any " matching pair inside the syntax types. execute 'if' s_skip '| let s_skip = 0 | endif' " Limit the search to lines visible in the window. let stoplinebottom = line('w$') let stoplinetop = line('w0') if i % 2 == 0 let stopline = stoplinebottom else let stopline = stoplinetop endif " Limit the search time to 300 msec to avoid a hang on very long lines. " This fails when a timeout is not supported. if mode() == 'i' || mode() == 'R' let timeout = exists("b:matchparen_insert_timeout") ? b:matchparen_insert_timeout : g:matchparen_insert_timeout else let timeout = exists("b:matchparen_timeout") ? b:matchparen_timeout : g:matchparen_timeout endif try let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline, timeout) catch /E118/ " Can't use the timeout, restrict the stopline a bit more to avoid taking " a long time on closed folds and long lines. " The "viewable" variables give a range in which we can scroll while " keeping the cursor at the same position. " adjustedScrolloff accounts for very large numbers of scrolloff. let adjustedScrolloff = min([&scrolloff, (line('w$') - line('w0')) / 2]) let bottom_viewable = min([line('$'), c_lnum + &lines - adjustedScrolloff - 2]) let top_viewable = max([1, c_lnum-&lines+adjustedScrolloff + 2]) " one of these stoplines will be adjusted below, but the current values are " minimal boundaries within the current window if i % 2 == 0 if has("byte_offset") && has("syntax_items") && &smc > 0 let stopbyte = min([line2byte("$"), line2byte(".") + col(".") + &smc * 2]) let stopline = min([bottom_viewable, byte2line(stopbyte)]) else let stopline = min([bottom_viewable, c_lnum + 100]) endif let stoplinebottom = stopline else if has("byte_offset") && has("syntax_items") && &smc > 0 let stopbyte = max([1, line2byte(".") + col(".") - &smc * 2]) let stopline = max([top_viewable, byte2line(stopbyte)]) else let stopline = max([top_viewable, c_lnum - 100]) endif let stoplinetop = stopline endif let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline) endtry if before > 0 if has_getcurpos call setpos('.', save_cursor) else call winrestview(save_cursor) endif endif " If a match is found setup match highlighting. if m_lnum > 0 && m_lnum >= stoplinetop && m_lnum <= stoplinebottom if exists('*matchaddpos') call matchaddpos('MatchParen', [[c_lnum, c_col - before], [m_lnum, m_col]], 10, 3) else exe '3match MatchParen /\(\%' . c_lnum . 'l\%' . (c_col - before) . \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' endif let w:paren_hl_on = 1 endif endfunction " Define commands that will disable and enable the plugin. command! DoMatchParen call s:DoMatchParen() command! NoMatchParen call s:NoMatchParen() func! s:NoMatchParen() let w = winnr() noau windo silent! call matchdelete(3) unlet! g:loaded_matchparen exe "noau ". w . "wincmd w" au! matchparen endfunc func! s:DoMatchParen() runtime plugin/matchparen.vim let w = winnr() silent windo doau CursorMoved exe "noau ". w . "wincmd w" endfunc let &cpo = s:cpo_save unlet s:cpo_save PK�������!�a%z(��(����vim80/plugin/netrwPlugin.vimnu�[��������" netrwPlugin.vim: Handles file transfer and remote directory listing across a network " PLUGIN SECTION " Date: Feb 08, 2016 " Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM> " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim " Copyright: Copyright (C) 1999-2013 Charles E. Campbell {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright " notice is copied with it. Like anything else that's free, " netrw.vim, netrwPlugin.vim, and netrwSettings.vim are provided " *as is* and comes with no warranty of any kind, either " expressed or implied. By using this plugin, you agree that " in no event will the copyright holder be liable for any damages " resulting from the use of this software. " " But be doers of the Word, and not only hearers, deluding your own selves {{{1 " (James 1:22 RSV) " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- " Load Once: {{{1 if &cp || exists("g:loaded_netrwPlugin") finish endif let g:loaded_netrwPlugin = "v156" let s:keepcpo = &cpo set cpo&vim "DechoRemOn " --------------------------------------------------------------------- " Public Interface: {{{1 " Local Browsing Autocmds: {{{2 augroup FileExplorer au! au BufLeave * if &ft != "netrw"|let w:netrw_prvfile= expand("%:p")|endif au BufEnter * sil call s:LocalBrowse(expand("<amatch>")) au VimEnter * sil call s:VimEnter(expand("<amatch>")) if has("win32") || has("win95") || has("win64") || has("win16") au BufEnter .* sil call s:LocalBrowse(expand("<amatch>")) endif augroup END " Network Browsing Reading Writing: {{{2 augroup Network au! au BufReadCmd file://* call netrw#FileUrlRead(expand("<amatch>")) au BufReadCmd ftp://*,rcp://*,scp://*,http://*,file://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "sil doau BufReadPost ".fnameescape(expand("<amatch>")) au FileReadCmd ftp://*,rcp://*,scp://*,http://*,file://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau FileReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(1,expand("<amatch>"))|exe "sil doau FileReadPost ".fnameescape(expand("<amatch>")) au BufWriteCmd ftp://*,rcp://*,scp://*,http://*,file://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "sil doau BufWritePost ".fnameescape(expand("<amatch>")) au FileWriteCmd ftp://*,rcp://*,scp://*,http://*,file://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "sil doau FileWritePost ".fnameescape(expand("<amatch>")) try au SourceCmd ftp://*,rcp://*,scp://*,http://*,file://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe 'Nsource '.fnameescape(expand("<amatch>")) catch /^Vim\%((\a\+)\)\=:E216/ au SourcePre ftp://*,rcp://*,scp://*,http://*,file://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe 'Nsource '.fnameescape(expand("<amatch>")) endtry augroup END " Commands: :Nread, :Nwrite, :NetUserPass {{{2 com! -count=1 -nargs=* Nread let s:svpos= winsaveview()<bar>call netrw#NetRead(<count>,<f-args>)<bar>call winrestview(s:svpos) com! -range=% -nargs=* Nwrite let s:svpos= winsaveview()<bar><line1>,<line2>call netrw#NetWrite(<f-args>)<bar>call winrestview(s:svpos) com! -nargs=* NetUserPass call NetUserPass(<f-args>) com! -nargs=* Nsource let s:svpos= winsaveview()<bar>call netrw#NetSource(<f-args>)<bar>call winrestview(s:svpos) com! -nargs=? Ntree call netrw#SetTreetop(<q-args>) " Commands: :Explore, :Sexplore, Hexplore, Vexplore, Lexplore {{{2 com! -nargs=* -bar -bang -count=0 -complete=dir Explore call netrw#Explore(<count>,0,0+<bang>0,<q-args>) com! -nargs=* -bar -bang -count=0 -complete=dir Sexplore call netrw#Explore(<count>,1,0+<bang>0,<q-args>) com! -nargs=* -bar -bang -count=0 -complete=dir Hexplore call netrw#Explore(<count>,1,2+<bang>0,<q-args>) com! -nargs=* -bar -bang -count=0 -complete=dir Vexplore call netrw#Explore(<count>,1,4+<bang>0,<q-args>) com! -nargs=* -bar -count=0 -complete=dir Texplore call netrw#Explore(<count>,0,6 ,<q-args>) com! -nargs=* -bar -bang Nexplore call netrw#Explore(-1,0,0,<q-args>) com! -nargs=* -bar -bang Pexplore call netrw#Explore(-2,0,0,<q-args>) com! -nargs=* -bar -bang -count=0 -complete=dir Lexplore call netrw#Lexplore(<count>,<bang>0,<q-args>) " Commands: NetrwSettings {{{2 com! -nargs=0 NetrwSettings call netrwSettings#NetrwSettings() com! -bang NetrwClean call netrw#Clean(<bang>0) " Maps: if !exists("g:netrw_nogx") if maparg('gx','n') == "" if !hasmapto('<Plug>NetrwBrowseX') nmap <unique> gx <Plug>NetrwBrowseX endif nno <silent> <Plug>NetrwBrowseX :call netrw#BrowseX(expand((exists("g:netrw_gx")? g:netrw_gx : '<cfile>')),netrw#CheckIfRemote())<cr> endif if maparg('gx','v') == "" if !hasmapto('<Plug>NetrwBrowseXVis') vmap <unique> gx <Plug>NetrwBrowseXVis endif vno <silent> <Plug>NetrwBrowseXVis :<c-u>call netrw#BrowseXVis()<cr> endif endif if exists("g:netrw_usetab") && g:netrw_usetab if maparg('<c-tab>','n') == "" nmap <unique> <c-tab> <Plug>NetrwShrink endif nno <silent> <Plug>NetrwShrink :call netrw#Shrink()<cr> endif " --------------------------------------------------------------------- " LocalBrowse: invokes netrw#LocalBrowseCheck() on directory buffers {{{2 fun! s:LocalBrowse(dirname) " Unfortunate interaction -- only DechoMsg debugging calls can be safely used here. " Otherwise, the BufEnter event gets triggered when attempts to write to " the DBG buffer are made. if !exists("s:vimentered") " If s:vimentered doesn't exist, then the VimEnter event hasn't fired. It will, " and so s:VimEnter() will then be calling this routine, but this time with s:vimentered defined. " call Dfunc("s:LocalBrowse(dirname<".a:dirname.">) (s:vimentered doesn't exist)") " call Dret("s:LocalBrowse") return endif " call Dfunc("s:LocalBrowse(dirname<".a:dirname.">) (s:vimentered=".s:vimentered.")") if has("amiga") " The check against '' is made for the Amiga, where the empty " string is the current directory and not checking would break " things such as the help command. " call Decho("(LocalBrowse) dirname<".a:dirname."> (isdirectory, amiga)") if a:dirname != '' && isdirectory(a:dirname) sil! call netrw#LocalBrowseCheck(a:dirname) if exists("w:netrw_bannercnt") && line('.') < w:netrw_bannercnt exe w:netrw_bannercnt endif endif elseif isdirectory(a:dirname) " call Decho("(LocalBrowse) dirname<".a:dirname."> ft=".&ft." (isdirectory, not amiga)") " call Dredir("LocalBrowse ft last set: ","verbose set ft") " call Decho("(s:LocalBrowse) COMBAK#23: buf#".bufnr("%")." file<".expand("%")."> line#".line(".")." col#".col(".")) sil! call netrw#LocalBrowseCheck(a:dirname) " call Decho("(s:LocalBrowse) COMBAK#24: buf#".bufnr("%")." file<".expand("%")."> line#".line(".")." col#".col(".")) if exists("w:netrw_bannercnt") && line('.') < w:netrw_bannercnt exe w:netrw_bannercnt " call Decho("(s:LocalBrowse) COMBAK#25: buf#".bufnr("%")." file<".expand("%")."> line#".line(".")." col#".col(".")) endif else " not a directory, ignore it " call Decho("(LocalBrowse) dirname<".a:dirname."> not a directory, ignoring...") endif " call Decho("(s:LocalBrowse) COMBAK#26: buf#".bufnr("%")." file<".expand("%")."> line#".line(".")." col#".col(".")) " call Dret("s:LocalBrowse") endfun " --------------------------------------------------------------------- " s:VimEnter: after all vim startup stuff is done, this function is called. {{{2 " Its purpose: to look over all windows and run s:LocalBrowse() on " them, which checks if they're directories and will create a directory " listing when appropriate. " It also sets s:vimentered, letting s:LocalBrowse() know that s:VimEnter() " has already been called. fun! s:VimEnter(dirname) " call Dfunc("s:VimEnter(dirname<".a:dirname.">) expand(%)<".expand("%").">") let curwin = winnr() let s:vimentered = 1 windo call s:LocalBrowse(expand("%:p")) exe curwin."wincmd w" " call Dret("s:VimEnter") endfun " --------------------------------------------------------------------- " NetrwStatusLine: {{{1 fun! NetrwStatusLine() " let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr("%")." Xline#".w:netrw_explore_line." line#".line(".") if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr("%") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list") let &stl= s:netrw_explore_stl if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif return "" else return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen endif endfun " ------------------------------------------------------------------------ " NetUserPass: set username and password for subsequent ftp transfer {{{1 " Usage: :call NetUserPass() -- will prompt for userid and password " :call NetUserPass("uid") -- will prompt for password " :call NetUserPass("uid","password") -- sets global userid and password fun! NetUserPass(...) " get/set userid if a:0 == 0 " call Dfunc("NetUserPass(a:0<".a:0.">)") if !exists("g:netrw_uid") || g:netrw_uid == "" " via prompt let g:netrw_uid= input('Enter username: ') endif else " from command line " call Dfunc("NetUserPass(a:1<".a:1.">) {") let g:netrw_uid= a:1 endif " get password if a:0 <= 1 " via prompt " call Decho("a:0=".a:0." case <=1:") let g:netrw_passwd= inputsecret("Enter Password: ") else " from command line " call Decho("a:0=".a:0." case >1: a:2<".a:2.">") let g:netrw_passwd=a:2 endif " call Dret("NetUserPass") endfun " ------------------------------------------------------------------------ " Modelines And Restoration: {{{1 let &cpo= s:keepcpo unlet s:keepcpo " vim:ts=8 fdm=marker PK�������!�֘R ��R ����vim80/plugin/vimballPlugin.vimnu�[��������" vimballPlugin : construct a file containing both paths and files " Author: Charles E. Campbell " Copyright: (c) 2004-2014 by Charles E. Campbell " The VIM LICENSE applies to Vimball.vim, and Vimball.txt " (see |copyright|) except use "Vimball" instead of "Vim". " No warranty, express or implied. " *** *** Use At-Your-Own-Risk! *** *** " " (Rom 2:1 WEB) Therefore you are without excuse, O man, whoever you are who " judge. For in that which you judge another, you condemn yourself. For " you who judge practice the same things. " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim " --------------------------------------------------------------------- " Load Once: {{{1 if &cp || exists("g:loaded_vimballPlugin") finish endif let g:loaded_vimballPlugin = "v37" let s:keepcpo = &cpo set cpo&vim " ------------------------------------------------------------------------------ " Public Interface: {{{1 com! -range -complete=file -nargs=+ -bang MkVimball call vimball#MkVimball(<line1>,<line2>,<bang>0,<f-args>) com! -nargs=? -complete=dir UseVimball call vimball#Vimball(1,<f-args>) com! -nargs=0 VimballList call vimball#Vimball(0) com! -nargs=* -complete=dir RmVimball call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings() augroup Vimball au! au BufEnter *.vba,*.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")|endif au SourceCmd *.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz let s:origfile=expand("%")|if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|endif|call vimball#Decompress(expand("<amatch>"))|so %|if s:origfile!=expand("<afile>")|close|endif au SourceCmd *.vba if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif au BufEnter *.vmb,*.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")|endif au SourceCmd *.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz let s:origfile=expand("%")|if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|endif|call vimball#Decompress(expand("<amatch>"))|so %|if s:origfile!=expand("<afile>")|close|endif au SourceCmd *.vmb if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif augroup END " ===================================================================== " Restoration And Modelines: {{{1 " vim: fdm=marker let &cpo= s:keepcpo unlet s:keepcpo PK�������!�nq��q�� ��vim80/plugin/getscriptPlugin.vimnu�[��������" --------------------------------------------------------------------- " getscriptPlugin.vim " Author: Charles E. Campbell " Date: Nov 29, 2013 " Installing: :help glvs-install " Usage: :help glvs " " GetLatestVimScripts: 642 1 :AutoInstall: getscript.vim " " (Rom 15:11 WEB) Again, "Praise the Lord, all you Gentiles! Let " all the peoples praise Him." " --------------------------------------------------------------------- " Initialization: {{{1 " if you're sourcing this file, surely you can't be " expecting vim to be in its vi-compatible mode if exists("g:loaded_getscriptPlugin") finish endif if &cp if &verbose echo "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)" endif finish endif let g:loaded_getscriptPlugin = "v36" let s:keepcpo = &cpo set cpo&vim " --------------------------------------------------------------------- " Public Interface: {{{1 com! -nargs=0 GetLatestVimScripts call getscript#GetLatestVimScripts() com! -nargs=0 GetScripts call getscript#GetLatestVimScripts() silent! com -nargs=0 GLVS call getscript#GetLatestVimScripts() " --------------------------------------------------------------------- " Restore Options: {{{1 let &cpo= s:keepcpo unlet s:keepcpo " --------------------------------------------------------------------- " vim: ts=8 sts=2 fdm=marker nowrap PK�������!�`L �� ����vim80/plugin/zipPlugin.vimnu�[��������" zipPlugin.vim: Handles browsing zipfiles " PLUGIN PORTION " Date: Sep 13, 2016 " Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM> " License: Vim License (see vim's :help license) " Copyright: Copyright (C) 2005-2016 Charles E. Campbell {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright " notice is copied with it. Like anything else that's free, " zipPlugin.vim is provided *as is* and comes with no warranty " of any kind, either expressed or implied. By using this " plugin, you agree that in no event will the copyright " holder be liable for any damages resulting from the use " of this software. " " (James 4:8 WEB) Draw near to God, and he will draw near to you. " Cleanse your hands, you sinners; and purify your hearts, you double-minded. " --------------------------------------------------------------------- " Load Once: {{{1 if &cp || exists("g:loaded_zipPlugin") finish endif let g:loaded_zipPlugin = "v28" let s:keepcpo = &cpo set cpo&vim " --------------------------------------------------------------------- " Options: {{{1 if !exists("g:zipPlugin_ext") let g:zipPlugin_ext='*.apk,*.celzip,*.crtx,*.docm,*.docx,*.dotm,*.dotx,*.ear,*.epub,*.gcsx,*.glox,*.gqsx,*.ja,*.jar,*.kmz,*.oxt,*.potm,*.potx,*.ppam,*.ppsm,*.ppsx,*.pptm,*.pptx,*.sldx,*.thmx,*.vdw,*.war,*.wsz,*.xap,*.xlam,*.xlam,*.xlsb,*.xlsm,*.xlsx,*.xltm,*.xltx,*.xpi,*.zip' endif " --------------------------------------------------------------------- " Public Interface: {{{1 augroup zip au! au BufReadCmd zipfile:* call zip#Read(expand("<amatch>"), 1) au FileReadCmd zipfile:* call zip#Read(expand("<amatch>"), 0) au BufWriteCmd zipfile:* call zip#Write(expand("<amatch>")) au FileWriteCmd zipfile:* call zip#Write(expand("<amatch>")) if has("unix") au BufReadCmd zipfile:*/* call zip#Read(expand("<amatch>"), 1) au FileReadCmd zipfile:*/* call zip#Read(expand("<amatch>"), 0) au BufWriteCmd zipfile:*/* call zip#Write(expand("<amatch>")) au FileWriteCmd zipfile:*/* call zip#Write(expand("<amatch>")) endif exe "au BufReadCmd ".g:zipPlugin_ext.' call zip#Browse(expand("<amatch>"))' augroup END " --------------------------------------------------------------------- " Restoration And Modelines: {{{1 " vim: fdm=marker let &cpo= s:keepcpo unlet s:keepcpo PK�������!�/RGg������vim80/plugin/README.txtnu�[��������The plugin directory is for standard Vim plugin scripts. All files here ending in .vim will be sourced by Vim when it starts up. Look in the file for hints on how it can be disabled without deleting it. getscriptPlugin.vim get latest version of Vim scripts gzip.vim edit compressed files logiPat.vim logical operators on patterns matchparen.vim highlight paren matching the one under the cursor netrwPlugin.vim edit files over a network and browse (remote) directories rrhelper.vim used for --remote-wait editing spellfile.vim download a spellfile when it's missing tarPlugin.vim edit (compressed) tar files tohtml.vim convert a file with syntax highlighting to HTML vimballPlugin.vim create and unpack .vba files zipPlugin.vim edit zip archives Note: the explorer.vim plugin is no longer here, the netrw.vim plugin has taken over browsing directories (also for remote directories). PK�������!�4(������vim80/plugin/manpager.vimnu�[��������" Vim plugin for using Vim as manpager. " Maintainer: Enno Nagel <ennonagel+vim@gmail.com> " Last Change: 2018 Feb 04 command! -nargs=0 MANPAGER call s:ManPager() | delcommand MANPAGER function! s:ManPager() set nocompatible if exists('+viminfofile') set viminfofile=NONE endif set noswapfile setlocal ft=man runtime ftplugin/man.vim setlocal buftype=nofile bufhidden=hide iskeyword+=: modifiable " Emulate 'col -b' silent keepj keepp %s/\v(.)\b\ze\1?//ge " Remove empty lines above the header call cursor(1, 1) let n = search(".*(.*)", "c") if n > 1 exe "1," . n-1 . "d" endif setlocal nomodified readonly syntax on endfunction PK�������!�kP������vim80/plugin/spellfile.vimnu�[��������" Vim plugin for downloading spell files " Maintainer: Bram Moolenaar <Bram@vim.org> " Last Change: 2006 Feb 01 " Exit quickly when: " - this plugin was already loaded " - when 'compatible' is set " - some autocommands are already taking care of spell files if exists("loaded_spellfile_plugin") || &cp || exists("#SpellFileMissing") finish endif let loaded_spellfile_plugin = 1 " The function is in the autoload directory. autocmd SpellFileMissing * call spellfile#LoadFile(expand('<amatch>')) PK�������!�9$R������vim80/plugin/rrhelper.vimnu�[��������" Vim plugin with helper function(s) for --remote-wait " Maintainer: Flemming Madsen <fma@cci.dk> " Last Change: 2008 May 29 " Has this already been loaded? if exists("loaded_rrhelper") || !has("clientserver") finish endif let loaded_rrhelper = 1 " Setup answers for a --remote-wait client who will assume " a SetupRemoteReplies() function in the command server function SetupRemoteReplies() let cnt = 0 let max = argc() let id = expand("<client>") if id == 0 return endif while cnt < max " Handle same file from more clients and file being more than once " on the command line by encoding this stuff in the group name let uniqueGroup = "RemoteReply_".id."_".cnt " Path separators are always forward slashes for the autocommand pattern. " Escape special characters with a backslash. let f = substitute(argv(cnt), '\\', '/', "g") if exists('*fnameescape') let f = fnameescape(f) else let f = escape(f, " \t\n*?[{`$\\%#'\"|!<") endif execute "augroup ".uniqueGroup execute "autocmd ".uniqueGroup." BufUnload ". f ." call DoRemoteReply('".id."', '".cnt."', '".uniqueGroup."', '". f ."')" let cnt = cnt + 1 endwhile augroup END endfunc function DoRemoteReply(id, cnt, group, file) call server2client(a:id, a:cnt) execute 'autocmd! '.a:group.' BufUnload '.a:file execute 'augroup! '.a:group endfunc " vim: set sw=2 sts=2 : PK�������!�+ⷂ������vim80/plugin/tarPlugin.vimnu�[��������" tarPlugin.vim -- a Vim plugin for browsing tarfiles " Original was copyright (c) 2002, Michael C. Toren <mct@toren.net> " Modified by Charles E. Campbell " Distributed under the GNU General Public License. " " Updates are available from <http://michael.toren.net/code/>. If you " find this script useful, or have suggestions for improvements, please " let me know. " Also look there for further comments and documentation. " " This part only sets the autocommands. The functions are in autoload/tar.vim. " --------------------------------------------------------------------- " Load Once: {{{1 if &cp || exists("g:loaded_tarPlugin") finish endif let g:loaded_tarPlugin = "v29" let s:keepcpo = &cpo set cpo&vim " --------------------------------------------------------------------- " Public Interface: {{{1 augroup tar au! au BufReadCmd tarfile::* call tar#Read(expand("<amatch>")) au FileReadCmd tarfile::* call tar#Read(expand("<amatch>")) au BufWriteCmd tarfile::* call tar#Write(expand("<amatch>")) au FileWriteCmd tarfile::* call tar#Write(expand("<amatch>")) if has("unix") au BufReadCmd tarfile::*/* call tar#Read(expand("<amatch>")) au FileReadCmd tarfile::*/* call tar#Read(expand("<amatch>")) au BufWriteCmd tarfile::*/* call tar#Write(expand("<amatch>")) au FileWriteCmd tarfile::*/* call tar#Write(expand("<amatch>")) endif au BufReadCmd *.tar.gz call tar#Browse(expand("<amatch>")) au BufReadCmd *.tar call tar#Browse(expand("<amatch>")) au BufReadCmd *.lrp call tar#Browse(expand("<amatch>")) au BufReadCmd *.tar.bz2 call tar#Browse(expand("<amatch>")) au BufReadCmd *.tar.Z call tar#Browse(expand("<amatch>")) au BufReadCmd *.tgz call tar#Browse(expand("<amatch>")) au BufReadCmd *.tbz call tar#Browse(expand("<amatch>")) au BufReadCmd *.tar.lzma call tar#Browse(expand("<amatch>")) au BufReadCmd *.tar.xz call tar#Browse(expand("<amatch>")) au BufReadCmd *.txz call tar#Browse(expand("<amatch>")) augroup END com! -nargs=? -complete=file Vimuntar call tar#Vimuntar(<q-args>) " --------------------------------------------------------------------- " Restoration And Modelines: {{{1 " vim: fdm=marker let &cpo= s:keepcpo unlet s:keepcpo PK�������!�FtE��tE�� ��vim80/rgb.txtnu�[��������255 250 250 snow 248 248 255 ghost white 248 248 255 GhostWhite 245 245 245 white smoke 245 245 245 WhiteSmoke 220 220 220 gainsboro 255 250 240 floral white 255 250 240 FloralWhite 253 245 230 old lace 253 245 230 OldLace 250 240 230 linen 250 235 215 antique white 250 235 215 AntiqueWhite 255 239 213 papaya whip 255 239 213 PapayaWhip 255 235 205 blanched almond 255 235 205 BlanchedAlmond 255 228 196 bisque 255 218 185 peach puff 255 218 185 PeachPuff 255 222 173 navajo white 255 222 173 NavajoWhite 255 228 181 moccasin 255 248 220 cornsilk 255 255 240 ivory 255 250 205 lemon chiffon 255 250 205 LemonChiffon 255 245 238 seashell 240 255 240 honeydew 245 255 250 mint cream 245 255 250 MintCream 240 255 255 azure 240 248 255 alice blue 240 248 255 AliceBlue 230 230 250 lavender 255 240 245 lavender blush 255 240 245 LavenderBlush 255 228 225 misty rose 255 228 225 MistyRose 255 255 255 white 0 0 0 black 47 79 79 dark slate gray 47 79 79 DarkSlateGray 47 79 79 dark slate grey 47 79 79 DarkSlateGrey 105 105 105 dim gray 105 105 105 DimGray 105 105 105 dim grey 105 105 105 DimGrey 112 128 144 slate gray 112 128 144 SlateGray 112 128 144 slate grey 112 128 144 SlateGrey 119 136 153 light slate gray 119 136 153 LightSlateGray 119 136 153 light slate grey 119 136 153 LightSlateGrey 190 190 190 gray 190 190 190 grey 190 190 190 x11 gray 190 190 190 X11Gray 190 190 190 x11 grey 190 190 190 X11Grey 128 128 128 web gray 128 128 128 WebGray 128 128 128 web grey 128 128 128 WebGrey 211 211 211 light grey 211 211 211 LightGrey 211 211 211 light gray 211 211 211 LightGray 25 25 112 midnight blue 25 25 112 MidnightBlue 0 0 128 navy 0 0 128 navy blue 0 0 128 NavyBlue 100 149 237 cornflower blue 100 149 237 CornflowerBlue 72 61 139 dark slate blue 72 61 139 DarkSlateBlue 106 90 205 slate blue 106 90 205 SlateBlue 123 104 238 medium slate blue 123 104 238 MediumSlateBlue 132 112 255 light slate blue 132 112 255 LightSlateBlue 0 0 205 medium blue 0 0 205 MediumBlue 65 105 225 royal blue 65 105 225 RoyalBlue 0 0 255 blue 30 144 255 dodger blue 30 144 255 DodgerBlue 0 191 255 deep sky blue 0 191 255 DeepSkyBlue 135 206 235 sky blue 135 206 235 SkyBlue 135 206 250 light sky blue 135 206 250 LightSkyBlue 70 130 180 steel blue 70 130 180 SteelBlue 176 196 222 light steel blue 176 196 222 LightSteelBlue 173 216 230 light blue 173 216 230 LightBlue 176 224 230 powder blue 176 224 230 PowderBlue 175 238 238 pale turquoise 175 238 238 PaleTurquoise 0 206 209 dark turquoise 0 206 209 DarkTurquoise 72 209 204 medium turquoise 72 209 204 MediumTurquoise 64 224 208 turquoise 0 255 255 cyan 0 255 255 aqua 224 255 255 light cyan 224 255 255 LightCyan 95 158 160 cadet blue 95 158 160 CadetBlue 102 205 170 medium aquamarine 102 205 170 MediumAquamarine 127 255 212 aquamarine 0 100 0 dark green 0 100 0 DarkGreen 85 107 47 dark olive green 85 107 47 DarkOliveGreen 143 188 143 dark sea green 143 188 143 DarkSeaGreen 46 139 87 sea green 46 139 87 SeaGreen 60 179 113 medium sea green 60 179 113 MediumSeaGreen 32 178 170 light sea green 32 178 170 LightSeaGreen 152 251 152 pale green 152 251 152 PaleGreen 0 255 127 spring green 0 255 127 SpringGreen 124 252 0 lawn green 124 252 0 LawnGreen 0 255 0 green 0 255 0 lime 0 255 0 x11 green 0 255 0 X11Green 0 128 0 web green 0 128 0 WebGreen 127 255 0 chartreuse 0 250 154 medium spring green 0 250 154 MediumSpringGreen 173 255 47 green yellow 173 255 47 GreenYellow 50 205 50 lime green 50 205 50 LimeGreen 154 205 50 yellow green 154 205 50 YellowGreen 34 139 34 forest green 34 139 34 ForestGreen 107 142 35 olive drab 107 142 35 OliveDrab 189 183 107 dark khaki 189 183 107 DarkKhaki 240 230 140 khaki 238 232 170 pale goldenrod 238 232 170 PaleGoldenrod 250 250 210 light goldenrod yellow 250 250 210 LightGoldenrodYellow 255 255 224 light yellow 255 255 224 LightYellow 255 255 0 yellow 255 215 0 gold 238 221 130 light goldenrod 238 221 130 LightGoldenrod 218 165 32 goldenrod 184 134 11 dark goldenrod 184 134 11 DarkGoldenrod 188 143 143 rosy brown 188 143 143 RosyBrown 205 92 92 indian red 205 92 92 IndianRed 139 69 19 saddle brown 139 69 19 SaddleBrown 160 82 45 sienna 205 133 63 peru 222 184 135 burlywood 245 245 220 beige 245 222 179 wheat 244 164 96 sandy brown 244 164 96 SandyBrown 210 180 140 tan 210 105 30 chocolate 178 34 34 firebrick 165 42 42 brown 233 150 122 dark salmon 233 150 122 DarkSalmon 250 128 114 salmon 255 160 122 light salmon 255 160 122 LightSalmon 255 165 0 orange 255 140 0 dark orange 255 140 0 DarkOrange 255 127 80 coral 240 128 128 light coral 240 128 128 LightCoral 255 99 71 tomato 255 69 0 orange red 255 69 0 OrangeRed 255 0 0 red 255 105 180 hot pink 255 105 180 HotPink 255 20 147 deep pink 255 20 147 DeepPink 255 192 203 pink 255 182 193 light pink 255 182 193 LightPink 219 112 147 pale violet red 219 112 147 PaleVioletRed 176 48 96 maroon 176 48 96 x11 maroon 176 48 96 X11Maroon 128 0 0 web maroon 128 0 0 WebMaroon 199 21 133 medium violet red 199 21 133 MediumVioletRed 208 32 144 violet red 208 32 144 VioletRed 255 0 255 magenta 255 0 255 fuchsia 238 130 238 violet 221 160 221 plum 218 112 214 orchid 186 85 211 medium orchid 186 85 211 MediumOrchid 153 50 204 dark orchid 153 50 204 DarkOrchid 148 0 211 dark violet 148 0 211 DarkViolet 138 43 226 blue violet 138 43 226 BlueViolet 160 32 240 purple 160 32 240 x11 purple 160 32 240 X11Purple 128 0 128 web purple 128 0 128 WebPurple 147 112 219 medium purple 147 112 219 MediumPurple 216 191 216 thistle 255 250 250 snow1 238 233 233 snow2 205 201 201 snow3 139 137 137 snow4 255 245 238 seashell1 238 229 222 seashell2 205 197 191 seashell3 139 134 130 seashell4 255 239 219 AntiqueWhite1 238 223 204 AntiqueWhite2 205 192 176 AntiqueWhite3 139 131 120 AntiqueWhite4 255 228 196 bisque1 238 213 183 bisque2 205 183 158 bisque3 139 125 107 bisque4 255 218 185 PeachPuff1 238 203 173 PeachPuff2 205 175 149 PeachPuff3 139 119 101 PeachPuff4 255 222 173 NavajoWhite1 238 207 161 NavajoWhite2 205 179 139 NavajoWhite3 139 121 94 NavajoWhite4 255 250 205 LemonChiffon1 238 233 191 LemonChiffon2 205 201 165 LemonChiffon3 139 137 112 LemonChiffon4 255 248 220 cornsilk1 238 232 205 cornsilk2 205 200 177 cornsilk3 139 136 120 cornsilk4 255 255 240 ivory1 238 238 224 ivory2 205 205 193 ivory3 139 139 131 ivory4 240 255 240 honeydew1 224 238 224 honeydew2 193 205 193 honeydew3 131 139 131 honeydew4 255 240 245 LavenderBlush1 238 224 229 LavenderBlush2 205 193 197 LavenderBlush3 139 131 134 LavenderBlush4 255 228 225 MistyRose1 238 213 210 MistyRose2 205 183 181 MistyRose3 139 125 123 MistyRose4 240 255 255 azure1 224 238 238 azure2 193 205 205 azure3 131 139 139 azure4 131 111 255 SlateBlue1 122 103 238 SlateBlue2 105 89 205 SlateBlue3 71 60 139 SlateBlue4 72 118 255 RoyalBlue1 67 110 238 RoyalBlue2 58 95 205 RoyalBlue3 39 64 139 RoyalBlue4 0 0 255 blue1 0 0 238 blue2 0 0 205 blue3 0 0 139 blue4 30 144 255 DodgerBlue1 28 134 238 DodgerBlue2 24 116 205 DodgerBlue3 16 78 139 DodgerBlue4 99 184 255 SteelBlue1 92 172 238 SteelBlue2 79 148 205 SteelBlue3 54 100 139 SteelBlue4 0 191 255 DeepSkyBlue1 0 178 238 DeepSkyBlue2 0 154 205 DeepSkyBlue3 0 104 139 DeepSkyBlue4 135 206 255 SkyBlue1 126 192 238 SkyBlue2 108 166 205 SkyBlue3 74 112 139 SkyBlue4 176 226 255 LightSkyBlue1 164 211 238 LightSkyBlue2 141 182 205 LightSkyBlue3 96 123 139 LightSkyBlue4 198 226 255 SlateGray1 185 211 238 SlateGray2 159 182 205 SlateGray3 108 123 139 SlateGray4 202 225 255 LightSteelBlue1 188 210 238 LightSteelBlue2 162 181 205 LightSteelBlue3 110 123 139 LightSteelBlue4 191 239 255 LightBlue1 178 223 238 LightBlue2 154 192 205 LightBlue3 104 131 139 LightBlue4 224 255 255 LightCyan1 209 238 238 LightCyan2 180 205 205 LightCyan3 122 139 139 LightCyan4 187 255 255 PaleTurquoise1 174 238 238 PaleTurquoise2 150 205 205 PaleTurquoise3 102 139 139 PaleTurquoise4 152 245 255 CadetBlue1 142 229 238 CadetBlue2 122 197 205 CadetBlue3 83 134 139 CadetBlue4 0 245 255 turquoise1 0 229 238 turquoise2 0 197 205 turquoise3 0 134 139 turquoise4 0 255 255 cyan1 0 238 238 cyan2 0 205 205 cyan3 0 139 139 cyan4 151 255 255 DarkSlateGray1 141 238 238 DarkSlateGray2 121 205 205 DarkSlateGray3 82 139 139 DarkSlateGray4 127 255 212 aquamarine1 118 238 198 aquamarine2 102 205 170 aquamarine3 69 139 116 aquamarine4 193 255 193 DarkSeaGreen1 180 238 180 DarkSeaGreen2 155 205 155 DarkSeaGreen3 105 139 105 DarkSeaGreen4 84 255 159 SeaGreen1 78 238 148 SeaGreen2 67 205 128 SeaGreen3 46 139 87 SeaGreen4 154 255 154 PaleGreen1 144 238 144 PaleGreen2 124 205 124 PaleGreen3 84 139 84 PaleGreen4 0 255 127 SpringGreen1 0 238 118 SpringGreen2 0 205 102 SpringGreen3 0 139 69 SpringGreen4 0 255 0 green1 0 238 0 green2 0 205 0 green3 0 139 0 green4 127 255 0 chartreuse1 118 238 0 chartreuse2 102 205 0 chartreuse3 69 139 0 chartreuse4 192 255 62 OliveDrab1 179 238 58 OliveDrab2 154 205 50 OliveDrab3 105 139 34 OliveDrab4 202 255 112 DarkOliveGreen1 188 238 104 DarkOliveGreen2 162 205 90 DarkOliveGreen3 110 139 61 DarkOliveGreen4 255 246 143 khaki1 238 230 133 khaki2 205 198 115 khaki3 139 134 78 khaki4 255 236 139 LightGoldenrod1 238 220 130 LightGoldenrod2 205 190 112 LightGoldenrod3 139 129 76 LightGoldenrod4 255 255 224 LightYellow1 238 238 209 LightYellow2 205 205 180 LightYellow3 139 139 122 LightYellow4 255 255 0 yellow1 238 238 0 yellow2 205 205 0 yellow3 139 139 0 yellow4 255 215 0 gold1 238 201 0 gold2 205 173 0 gold3 139 117 0 gold4 255 193 37 goldenrod1 238 180 34 goldenrod2 205 155 29 goldenrod3 139 105 20 goldenrod4 255 185 15 DarkGoldenrod1 238 173 14 DarkGoldenrod2 205 149 12 DarkGoldenrod3 139 101 8 DarkGoldenrod4 255 193 193 RosyBrown1 238 180 180 RosyBrown2 205 155 155 RosyBrown3 139 105 105 RosyBrown4 255 106 106 IndianRed1 238 99 99 IndianRed2 205 85 85 IndianRed3 139 58 58 IndianRed4 255 130 71 sienna1 238 121 66 sienna2 205 104 57 sienna3 139 71 38 sienna4 255 211 155 burlywood1 238 197 145 burlywood2 205 170 125 burlywood3 139 115 85 burlywood4 255 231 186 wheat1 238 216 174 wheat2 205 186 150 wheat3 139 126 102 wheat4 255 165 79 tan1 238 154 73 tan2 205 133 63 tan3 139 90 43 tan4 255 127 36 chocolate1 238 118 33 chocolate2 205 102 29 chocolate3 139 69 19 chocolate4 255 48 48 firebrick1 238 44 44 firebrick2 205 38 38 firebrick3 139 26 26 firebrick4 255 64 64 brown1 238 59 59 brown2 205 51 51 brown3 139 35 35 brown4 255 140 105 salmon1 238 130 98 salmon2 205 112 84 salmon3 139 76 57 salmon4 255 160 122 LightSalmon1 238 149 114 LightSalmon2 205 129 98 LightSalmon3 139 87 66 LightSalmon4 255 165 0 orange1 238 154 0 orange2 205 133 0 orange3 139 90 0 orange4 255 127 0 DarkOrange1 238 118 0 DarkOrange2 205 102 0 DarkOrange3 139 69 0 DarkOrange4 255 114 86 coral1 238 106 80 coral2 205 91 69 coral3 139 62 47 coral4 255 99 71 tomato1 238 92 66 tomato2 205 79 57 tomato3 139 54 38 tomato4 255 69 0 OrangeRed1 238 64 0 OrangeRed2 205 55 0 OrangeRed3 139 37 0 OrangeRed4 255 0 0 red1 238 0 0 red2 205 0 0 red3 139 0 0 red4 255 20 147 DeepPink1 238 18 137 DeepPink2 205 16 118 DeepPink3 139 10 80 DeepPink4 255 110 180 HotPink1 238 106 167 HotPink2 205 96 144 HotPink3 139 58 98 HotPink4 255 181 197 pink1 238 169 184 pink2 205 145 158 pink3 139 99 108 pink4 255 174 185 LightPink1 238 162 173 LightPink2 205 140 149 LightPink3 139 95 101 LightPink4 255 130 171 PaleVioletRed1 238 121 159 PaleVioletRed2 205 104 137 PaleVioletRed3 139 71 93 PaleVioletRed4 255 52 179 maroon1 238 48 167 maroon2 205 41 144 maroon3 139 28 98 maroon4 255 62 150 VioletRed1 238 58 140 VioletRed2 205 50 120 VioletRed3 139 34 82 VioletRed4 255 0 255 magenta1 238 0 238 magenta2 205 0 205 magenta3 139 0 139 magenta4 255 131 250 orchid1 238 122 233 orchid2 205 105 201 orchid3 139 71 137 orchid4 255 187 255 plum1 238 174 238 plum2 205 150 205 plum3 139 102 139 plum4 224 102 255 MediumOrchid1 209 95 238 MediumOrchid2 180 82 205 MediumOrchid3 122 55 139 MediumOrchid4 191 62 255 DarkOrchid1 178 58 238 DarkOrchid2 154 50 205 DarkOrchid3 104 34 139 DarkOrchid4 155 48 255 purple1 145 44 238 purple2 125 38 205 purple3 85 26 139 purple4 171 130 255 MediumPurple1 159 121 238 MediumPurple2 137 104 205 MediumPurple3 93 71 139 MediumPurple4 255 225 255 thistle1 238 210 238 thistle2 205 181 205 thistle3 139 123 139 thistle4 0 0 0 gray0 0 0 0 grey0 3 3 3 gray1 3 3 3 grey1 5 5 5 gray2 5 5 5 grey2 8 8 8 gray3 8 8 8 grey3 10 10 10 gray4 10 10 10 grey4 13 13 13 gray5 13 13 13 grey5 15 15 15 gray6 15 15 15 grey6 18 18 18 gray7 18 18 18 grey7 20 20 20 gray8 20 20 20 grey8 23 23 23 gray9 23 23 23 grey9 26 26 26 gray10 26 26 26 grey10 28 28 28 gray11 28 28 28 grey11 31 31 31 gray12 31 31 31 grey12 33 33 33 gray13 33 33 33 grey13 36 36 36 gray14 36 36 36 grey14 38 38 38 gray15 38 38 38 grey15 41 41 41 gray16 41 41 41 grey16 43 43 43 gray17 43 43 43 grey17 46 46 46 gray18 46 46 46 grey18 48 48 48 gray19 48 48 48 grey19 51 51 51 gray20 51 51 51 grey20 54 54 54 gray21 54 54 54 grey21 56 56 56 gray22 56 56 56 grey22 59 59 59 gray23 59 59 59 grey23 61 61 61 gray24 61 61 61 grey24 64 64 64 gray25 64 64 64 grey25 66 66 66 gray26 66 66 66 grey26 69 69 69 gray27 69 69 69 grey27 71 71 71 gray28 71 71 71 grey28 74 74 74 gray29 74 74 74 grey29 77 77 77 gray30 77 77 77 grey30 79 79 79 gray31 79 79 79 grey31 82 82 82 gray32 82 82 82 grey32 84 84 84 gray33 84 84 84 grey33 87 87 87 gray34 87 87 87 grey34 89 89 89 gray35 89 89 89 grey35 92 92 92 gray36 92 92 92 grey36 94 94 94 gray37 94 94 94 grey37 97 97 97 gray38 97 97 97 grey38 99 99 99 gray39 99 99 99 grey39 102 102 102 gray40 102 102 102 grey40 105 105 105 gray41 105 105 105 grey41 107 107 107 gray42 107 107 107 grey42 110 110 110 gray43 110 110 110 grey43 112 112 112 gray44 112 112 112 grey44 115 115 115 gray45 115 115 115 grey45 117 117 117 gray46 117 117 117 grey46 120 120 120 gray47 120 120 120 grey47 122 122 122 gray48 122 122 122 grey48 125 125 125 gray49 125 125 125 grey49 127 127 127 gray50 127 127 127 grey50 130 130 130 gray51 130 130 130 grey51 133 133 133 gray52 133 133 133 grey52 135 135 135 gray53 135 135 135 grey53 138 138 138 gray54 138 138 138 grey54 140 140 140 gray55 140 140 140 grey55 143 143 143 gray56 143 143 143 grey56 145 145 145 gray57 145 145 145 grey57 148 148 148 gray58 148 148 148 grey58 150 150 150 gray59 150 150 150 grey59 153 153 153 gray60 153 153 153 grey60 156 156 156 gray61 156 156 156 grey61 158 158 158 gray62 158 158 158 grey62 161 161 161 gray63 161 161 161 grey63 163 163 163 gray64 163 163 163 grey64 166 166 166 gray65 166 166 166 grey65 168 168 168 gray66 168 168 168 grey66 171 171 171 gray67 171 171 171 grey67 173 173 173 gray68 173 173 173 grey68 176 176 176 gray69 176 176 176 grey69 179 179 179 gray70 179 179 179 grey70 181 181 181 gray71 181 181 181 grey71 184 184 184 gray72 184 184 184 grey72 186 186 186 gray73 186 186 186 grey73 189 189 189 gray74 189 189 189 grey74 191 191 191 gray75 191 191 191 grey75 194 194 194 gray76 194 194 194 grey76 196 196 196 gray77 196 196 196 grey77 199 199 199 gray78 199 199 199 grey78 201 201 201 gray79 201 201 201 grey79 204 204 204 gray80 204 204 204 grey80 207 207 207 gray81 207 207 207 grey81 209 209 209 gray82 209 209 209 grey82 212 212 212 gray83 212 212 212 grey83 214 214 214 gray84 214 214 214 grey84 217 217 217 gray85 217 217 217 grey85 219 219 219 gray86 219 219 219 grey86 222 222 222 gray87 222 222 222 grey87 224 224 224 gray88 224 224 224 grey88 227 227 227 gray89 227 227 227 grey89 229 229 229 gray90 229 229 229 grey90 232 232 232 gray91 232 232 232 grey91 235 235 235 gray92 235 235 235 grey92 237 237 237 gray93 237 237 237 grey93 240 240 240 gray94 240 240 240 grey94 242 242 242 gray95 242 242 242 grey95 245 245 245 gray96 245 245 245 grey96 247 247 247 gray97 247 247 247 grey97 250 250 250 gray98 250 250 250 grey98 252 252 252 gray99 252 252 252 grey99 255 255 255 gray100 255 255 255 grey100 169 169 169 dark grey 169 169 169 DarkGrey 169 169 169 dark gray 169 169 169 DarkGray 0 0 139 dark blue 0 0 139 DarkBlue 0 139 139 dark cyan 0 139 139 DarkCyan 139 0 139 dark magenta 139 0 139 DarkMagenta 139 0 0 dark red 139 0 0 DarkRed 144 238 144 light green 144 238 144 LightGreen 220 20 60 crimson 75 0 130 indigo 128 128 0 olive 102 51 153 rebecca purple 102 51 153 RebeccaPurple 192 192 192 silver 0 128 128 teal PK�������!�uݱ9R��R����vim80/print/iso-8859-11.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-iso-8859-11 %%Version: 1.0 0 %%EndComments /VIM-iso-8859-11[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /uni0E01 /uni0E02 /uni0E03 /uni0E04 /uni0E05 /uni0E06 /uni0E07 /uni0E08 /uni0E09 /uni0E0A /uni0E0B /uni0E0C /uni0E0D /uni0E0E /uni0E0F /uni0E10 /uni0E11 /uni0E12 /uni0E13 /uni0E14 /uni0E15 /uni0E16 /uni0E17 /uni0E18 /uni0E19 /uni0E1A /uni0E1B /uni0E1C /uni0E1D /uni0E1E /uni0E1F /uni0E20 /uni0E21 /uni0E22 /uni0E23 /uni0E24 /uni0E25 /uni0E26 /uni0E27 /uni0E28 /uni0E29 /uni0E2A /uni0E2B /uni0E2C /uni0E2D /uni0E2E /uni0E2F /uni0E30 /uni0E31 /uni0E32 /uni0E33 /uni0E34 /uni0E35 /uni0E36 /uni0E37 /uni0E38 /uni0E39 /uni0E3A /.notdef /space /.notdef /.notdef /uni0E3F /uni0E40 /uni0E41 /uni0E42 /uni0E43 /uni0E44 /uni0E45 /uni0E46 /uni0E47 /uni0E48 /uni0E49 /uni0E4A /uni0E4B /uni0E4C /uni0E4D /uni0E4E /uni0E4F /uni0E50 /uni0E51 /uni0E52 /uni0E53 /uni0E54 /uni0E55 /uni0E56 /uni0E57 /uni0E58 /uni0E59 /uni0E5A /.notdef /.notdef /.notdef /.notdef /.notdef] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�Y,������vim80/print/ascii.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-ascii %%Version: 1.0 0 %%EndComments /VIM-ascii[ 32{/.notdef}repeat /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef 128{/.notdef}repeat] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�4 ������vim80/print/jis_roman.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-jis_roman %%Version: 1.0 0 %%EndComments % Different to ASCII at code points 92 and 126 /VIM-jis_roman[ 32{/.notdef}repeat /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /yen /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /overline /.notdef 128{/.notdef}repeat] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�2Q;P��P����vim80/print/iso-8859-10.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-iso-8859-10 %%Version: 1.0 0 %%EndComments /VIM-iso-8859-10[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /Aogonek /Emacron /Gcedilla /Imacron /Itilde /Kcedilla /section /Lcedilla /Dcroat /Scaron /Tbar /Zcaron /endash /Umacron /Eng /degree /aogonek /emacron /gcedilla /imacron /itilde /kcedilla /periodcentered /lcedilla /dcroat /scaron /tbar /zcaron /emdash /umacron /eng /Amacron /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Iogonek /Ccaron /Eacute /Eogonek /Edieresis /Edot /Iacute /Icircumflex /Idieresis /Eth /Ncedilla /Omacron /Oacute /Ocircumflex /Otilde /Odieresis /Utilde /Oslash /Uogonek /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /amacron /aacute /acircumflex /atilde /adieresis /aring /ae /iogonek /ccaron /eacute /eogonek /edieresis /edot /iacute /icircumflex /idieresis /eth /ncedilla /omacron /oacute /ocircumflex /otilde /odieresis /utilde /oslash /uogonek /uacute /ucircumflex /udieresis /yacute /thorn /kgreenlandic] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!� =��=����vim80/print/cidfont.psnu�[��������%!PS-Adobe-3.0 Resource-ProcSet %%Title: VIM-CIDFont %%Version: 1.0 0 %%EndComments % Editing of this file is NOT RECOMMENDED. You run a very good risk of causing % all PostScript printing from VIM failing if you do. PostScript is not called % a write-only language for nothing! /CP currentpacking d T setpacking /SB 256 string d /CIDN? systemdict/composefont known d /GS? systemdict/.makeoperator known d CIDN?{ GS?{/vim_findresource{2 copy resourcestatus not{1 index SB cvs runlibfile}{ pop pop}ifelse findresource}bd/vim_composefont{0 get/CIDFont vim_findresource exch/CMap vim_findresource exch[exch]composefont pop}bd}{/vim_findresource /findresource ld/vim_composefont{composefont pop}bd}ifelse }{ /vim_fontname{0 get SB cvs length dup SB exch(-)putinterval 1 add dup SB exch dup 256 exch sub getinterval 3 -1 roll exch cvs length add SB exch 0 exch getinterval cvn}bd/vim_composefont{vim_fontname findfont d}bd } ifelse /cfs{exch scalefont d}bd /sffs{findfont 3 1 roll 1 index mul exch 2 index/FontMatrix get matrix copy scale makefont d}bd CP setpacking % vim:ff=unix: %%EOF PK�������!�>T��T����vim80/print/iso-8859-4.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-iso-8859-4 %%Version: 1.0 0 %%EndComments /VIM-iso-8859-4[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /Aogonek /kgreenlandic /Rcedilla /currency /Itilde /Lcedilla /section /dieresis /Scaron /Emacron /Gcedilla /Tbar /.notdef /Zcaron /macron /degree /aogonek /ogonek /rcedilla /acute /itilde /lcedilla /caron /cedilla /scaron /emacron /gcedilla /tbar /Eng /zcaron /eng /Amacron /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Iogonek /Ccaron /Eacute /Eogonek /Edieresis /Edot /Iacute /Icircumflex /Imacron /Dcroat /Ncedilla /Omacron /Kcedilla /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Uogonek /Uacute /Ucircumflex /Udieresis /Utilde /Umacron /germandbls /amacron /aacute /acircumflex /atilde /adieresis /aring /ae /iogonek /ccaron /eacute /eogonek /edieresis /edot /iacute /icircumflex /imacron /dcroat /ncedilla /omacron /kcedilla /ocircumflex /otilde /odieresis /divide /oslash /uogonek /uacute /ucircumflex /udieresis /utilde /umacron /dotaccent] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�gr �� ����vim80/print/iso-8859-5.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-iso-8859-5 %%Version: 1.0 0 %%EndComments /VIM-iso-8859-5[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /afii10023 /afii10051 /afii10052 /afii10053 /afii10054 /afii10055 /afii10056 /afii10057 /afii10058 /afii10059 /afii10060 /afii10061 /.notdef /afii10062 /afii10145 /afii10017 /afii10018 /afii10019 /afii10020 /afii10021 /afii10022 /afii10024 /afii10025 /afii10026 /afii10027 /afii10028 /afii10029 /afii10030 /afii10031 /afii10032 /afii10033 /afii10034 /afii10035 /afii10036 /afii10037 /afii10038 /afii10039 /afii10040 /afii10041 /afii10042 /afii10043 /afii10044 /afii10045 /afii10046 /afii10047 /afii10048 /afii10049 /afii10065 /afii10066 /afii10067 /afii10068 /afii10069 /afii10070 /afii10072 /afii10073 /afii10074 /afii10075 /afii10076 /afii10077 /afii10078 /afii10079 /afii10080 /afii10081 /afii10082 /afii10083 /afii10084 /afii10085 /afii10086 /afii10087 /afii10088 /afii10089 /afii10090 /afii10091 /afii10092 /afii10093 /afii10094 /afii10095 /afii10096 /afii10097 /afii61352 /afii10071 /afii10099 /afii10100 /afii10101 /afii10102 /afii10103 /afii10104 /afii10105 /afii10106 /afii10107 /afii10108 /afii10109 /section /afii10110 /afii10193] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�ҐY��Y����vim80/print/cp1255.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-cp1255 %%Version: 1.0 0 %%EndComments /VIM-cp1255[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /.notdef /guilsinglleft /.notdef /.notdef /.notdef /.notdef /.notdef /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /.notdef /guilsinglright /.notdef /.notdef /.notdef /.notdef /space /.notdef /cent /sterling /newsheqelsign /yen /brokenbar /section /dieresis /copyright /.notdef /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /.notdef /onesuperior /.notdef /guillemotright /onequarter /onehalf /threequarters /.notdef /sheva /hatafsegol /hatafpatah /hatafqamats /hiriq /tsere /segol /patah /qamats /holam /.notdef /qubuts /dagesh /meteg /maqaf /rafe /paseq /shindot /sindot /sofpasuq /doublevav /vavyod /doubleyod /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /alef /bet /gimel /dalet /he /vav /zayin /het /tet /yod /finalkaf /kaf /lamed /finalmem /mem /finalnun /nun /samekh /ayin /finalpe /pe /finaltsadi /tsadi /qof /resh /shin /tav /.notdef /.notdef /.notdef /.notdef /.notdef] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�"~$������vim80/print/cp1257.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-cp1257 %%Version: 1.0 0 %%EndComments /VIM-cp1257[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /quotesinglbase /.notdef /quotedblbase /ellipsis /dagger /daggerdbl /.notdef /perthousand /.notdef /guilsinglleft /.notdef /.notdef /.notdef /.notdef /.notdef /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash /.notdef /trademark /.notdef /guilsinglright /.notdef /.notdef /.notdef /.notdef /space /caron /breve /sterling /currency /.notdef /brokenbar /section /dieresis /copyright /Rcedilla /guillemotleft /logicalnot /hyphen /registered /AE /degree /plusminus /ogonek /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /rcedilla /guillemotright /onequarter /onehalf /threequarters /ae /Aogonek /Iogonek /Amacron /Cacute /Adieresis /Aring /Eogonek /Emacron /Ccaron /Eacute /Zacute /Edot /Gcedilla /Kcedilla /Imacron /Lcedilla /Scaron /Nacute /Ncedilla /Oacute /Omacron /Otilde /Odieresis /multiply /Uogonek /Lslash /Sacute /Umacron /Udieresis /Zdotaccent /Zcaron /germandbls /aogonek /iogonek /amacron /cacute /adieresis /aring /eogonek /emacron /ccaron /eacute /zacute /edot /gcedilla /kcedilla /imacron /lcedilla /scaron /nacute /ncedilla /oacute /omacron /otilde /odieresis /divide /uogonek /lslash /sacute /umacron /udieresis /zdotaccent /zcaron /dotaccent] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�3 ������vim80/print/prolog.psnu�[��������%!PS-Adobe-3.0 Resource-ProcSet %%Title: VIM-Prolog %%Version: 1.4 1 %%EndComments % Editing of this file is NOT RECOMMENDED. You run a very good risk of causing % all PostScript printing from VIM failing if you do. PostScript is not called % a write-only language for nothing! /packedarray where not{userdict begin/setpacking/pop load def/currentpacking false def end}{pop}ifelse/CP currentpacking def true setpacking /bd{bind def}bind def/ld{load def}bd/ed{exch def}bd/d/def ld /db{dict begin}bd/cde{currentdict end}bd /T true d/F false d /SO null d/sv{/SO save d}bd/re{SO restore}bd /L2 systemdict/languagelevel 2 copy known{get exec}{pop pop 1}ifelse 2 ge d /m/moveto ld/s/show ld /ms{m s}bd /g/setgray ld/r/setrgbcolor ld/sp{showpage}bd /gs/gsave ld/gr/grestore ld/cp/currentpoint ld /ul{gs UW setlinewidth cp UO add 2 copy newpath m 3 1 roll add exch lineto stroke gr}bd /bg{gs r cp BO add 4 -2 roll rectfill gr}bd /sl{90 rotate 0 exch translate}bd L2{ /sspd{mark exch{setpagedevice}stopped cleartomark}bd /nc{1 db/NumCopies ed cde sspd}bd /sps{3 db/Orientation ed[3 1 roll]/PageSize ed/ImagingBBox null d cde sspd}bd /dt{2 db/Tumble ed/Duplex ed cde sspd}bd /c{1 db/Collate ed cde sspd}bd }{ /nc{/#copies ed}bd /sps{statusdict/setpage get exec}bd /dt{statusdict/settumble 2 copy known{get exec}{pop pop pop}ifelse statusdict/setduplexmode 2 copy known{get exec}{pop pop pop}ifelse}bd /c{pop}bd }ifelse /ffs{findfont exch scalefont d}bd/sf{setfont}bd /ref{1 db findfont dup maxlength dict/NFD ed{exch dup/FID ne{exch NFD 3 1 roll put}{pop pop}ifelse}forall/Encoding findresource dup length 256 eq{NFD/Encoding 3 -1 roll put}{pop}ifelse NFD dup/FontType get 3 ne{/CharStrings}{/CharProcs} ifelse 2 copy known{2 copy get dup maxlength dict copy[/questiondown/space]{2 copy known{2 copy get 2 index/.notdef 3 -1 roll put pop exit}if pop}forall put }{pop pop}ifelse dup NFD/FontName 3 -1 roll put NFD definefont pop end}bd CP setpacking (\004)cvn{}bd % vim:ff=unix: %%EOF PK�������!�U} N ��N ����vim80/print/cp1251.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-cp1251 %%Version: 1.0 0 %%EndComments /VIM-cp1251[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /afii10051 /afii10052 /quotesinglbase /afii10100 /quotedblbase /ellipsis /dagger /daggerdbl /Euro /perthousand /afii10058 /guilsinglleft /afii10059 /afii10061 /afii10060 /afii10145 /afii10099 /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash /.notdef /trademark /afii10106 /guilsinglright /afii10107 /afii10109 /afii10108 /afii10193 /space /afii10062 /afii10110 /afii10057 /currency /afii10050 /brokenbar /section /afii10023 /copyright /afii10053 /guillemotleft /logicalnot /hyphen /registered /afii10056 /degree /plusminus /afii10055 /afii10103 /afii10098 /mu /paragraph /periodcentered /afii10071 /afii61352 /afii10101 /guillemotright /afii10105 /afii10054 /afii10102 /afii10104 /afii10017 /afii10018 /afii10019 /afii10020 /afii10021 /afii10022 /afii10024 /afii10025 /afii10026 /afii10027 /afii10028 /afii10029 /afii10030 /afii10031 /afii10032 /afii10033 /afii10034 /afii10035 /afii10036 /afii10037 /afii10038 /afii10039 /afii10040 /afii10041 /afii10042 /afii10043 /afii10044 /afii10045 /afii10046 /afii10047 /afii10048 /afii10049 /afii10065 /afii10066 /afii10067 /afii10068 /afii10069 /afii10070 /afii10072 /afii10073 /afii10074 /afii10075 /afii10076 /afii10077 /afii10078 /afii10079 /afii10080 /afii10081 /afii10082 /afii10083 /afii10084 /afii10085 /afii10086 /afii10087 /afii10088 /afii10089 /afii10090 /afii10091 /afii10092 /afii10093 /afii10094 /afii10095 /afii10096 /afii10097] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�J������vim80/print/cp1254.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-cp1254 %%Version: 1.0 0 %%EndComments /VIM-cp1254[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /Euro /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /Zcaron /.notdef /.notdef /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /zcaron /Ydieresis /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Gbreve /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Idotaccent /Scedilla /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /gbreve /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /dotlessi /scedilla /ydieresis] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�i �� ����vim80/print/koi8-u.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-koi8-u %%Version: 1.0 0 %%EndComments /VIM-koi8-u[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /SF100000 /SF110000 /SF010000 /SF030000 /SF020000 /SF040000 /SF080000 /SF090000 /SF060000 /SF070000 /SF050000 /upblock /dnblock /block /lfblock /rtblock /ltshade /shade /dkshade /integraltp /filledbox /bullet /radical /approxequal /lessequal /greaterequal /space /integralbt /degree /twosuperior /periodcentered /divide /SF430000 /SF240000 /SF510000 /afii10071 /afii10101 /SF390000 /afii10103 /afii10104 /SF250000 /SF500000 /SF490000 /SF380000 /SF280000 /afii10098 /SF260000 /SF360000 /SF370000 /SF420000 /SF190000 /afii10023 /afii10053 /SF230000 /afii10055 /afii10056 /SF410000 /SF450000 /SF460000 /SF400000 /SF540000 /afii10050 /SF440000 /copyright /afii10096 /afii10065 /afii10066 /afii10088 /afii10069 /afii10070 /afii10086 /afii10068 /afii10087 /afii10074 /afii10075 /afii10076 /afii10077 /afii10078 /afii10079 /afii10080 /afii10081 /afii10097 /afii10082 /afii10083 /afii10084 /afii10085 /afii10072 /afii10067 /afii10094 /afii10093 /afii10073 /afii10090 /afii10095 /afii10091 /afii10089 /afii10092 /afii10048 /afii10017 /afii10018 /afii10040 /afii10021 /afii10022 /afii10038 /afii10020 /afii10039 /afii10026 /afii10027 /afii10028 /afii10029 /afii10030 /afii10031 /afii10032 /afii10033 /afii10049 /afii10034 /afii10035 /afii10036 /afii10037 /afii10024 /afii10019 /afii10046 /afii10045 /afii10025 /afii10042 /afii10047 /afii10043 /afii10041 /afii10044] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�}_M��M����vim80/print/ebcdic-uk.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-ebcdic-uk %%Version: 1.0 0 %%EndComments /VIM-ebcdic-uk[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /dollar /period /less /parenleft /plus /bar /ampersand /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /exclam /sterling /asterisk /parenright /semicolon /logicalnot /minus /slash /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /brokenbar /comma /percent /underscore /greater /question /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /quotereversed /colon /numbersign /at /quoteright /equal /quotedbl /.notdef /a /b /c /d /e /f /g /h /i /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /j /k /l /m /n /o /p /q /r /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /macron /s /t /u /v /w /x /y /z /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /braceleft /A /B /C /D /E /F /G /H /I /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /braceright /J /K /L /M /N /O /P /Q /R /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /backslash /.notdef /S /T /U /V /W /X /Y /Z /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /zero /one /two /three /four /five /six /seven /eight /nine /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�oPl��l����vim80/print/iso-8859-2.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-iso-8859-2 %%Version: 1.0 0 %%EndComments /VIM-iso-8859-2[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /Aogonek /breve /Lslash /currency /Lcaron /Sacute /section /dieresis /Scaron /Scedilla /Tcaron /Zacute /hyphen /Zcaron /Zdotaccent /degree /aogonek /ogonek /lslash /acute /lcaron /sacute /caron /cedilla /scaron /scedilla /tcaron /zacute /hungarumlaut /zcaron /zdotaccent /Racute /Aacute /Acircumflex /Abreve /Adieresis /Lacute /Cacute /Ccedilla /Ccaron /Eacute /Eogonek /Edieresis /Ecaron /Iacute /Icircumflex /Dcaron /Dcroat /Nacute /Ncaron /Oacute /Ocircumflex /Ohungarumlaut /Odieresis /multiply /Rcaron /Uring /Uacute /Uhungarumlaut /Udieresis /Yacute /Tcedilla /germandbls /racute /aacute /acircumflex /abreve /adieresis /lacute /cacute /ccedilla /ccaron /eacute /eogonek /edieresis /ecaron /iacute /icircumflex /dcaron /dcroat /nacute /ncaron /oacute /ocircumflex /ohungarumlaut /odieresis /divide /rcaron /uring /uacute /uhungarumlaut /udieresis /yacute /tcedilla /dotaccent] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�xr{��{����vim80/print/hp-roman8.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-hp-roman8 %%Version: 1.0 0 %%EndComments /VIM-hp-roman8[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /Agrave /Acircumflex /Egrave /Ecircumflex /Edieresis /Icircumflex /Idieresis /acute /grave /circumflex /dieresis /tilde /Ugrave /Ucircumflex /lira /macron /Yacute /yacute /degree /Ccedilla /ccedilla /Ntilde /ntilde /exclamdown /questiondown /currency /sterling /yen /section /florin /cent /acircumflex /ecircumflex /ocircumflex /ucircumflex /aacute /eacute /oacute /uacute /agrave /egrave /ograve /ugrave /adieresis /edieresis /odieresis /udieresis /Aring /icircumflex /Oslash /AE /aring /iacute /oslash /ae /Adieresis /igrave /Odieresis /Udieresis /Eacute /idieresis /germandbls /Ocircumflex /Aacute /Atilde /atilde /Eth /eth /Iacute /Igrave /Oacute /Ograve /Otilde /otilde /Scaron /scaron /Uacute /Ydieresis /ydieresis /Thorn /thorn /periodcentered /mu /paragraph /threequarters /hyphen /onequarter /onehalf /ordfeminine /ordmasculine /guillemotleft /filledbox /guillemotright /plusminus /.notdef] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�~q �� ����vim80/print/koi8-r.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-koi8-r %%Version: 1.0 0 %%EndComments /VIM-koi8-r[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /SF100000 /SF110000 /SF010000 /SF030000 /SF020000 /SF040000 /SF080000 /SF090000 /SF060000 /SF070000 /SF050000 /upblock /dnblock /block /lfblock /rtblock /ltshade /shade /dkshade /integraltp /filledbox /bullet /radical /approxequal /lessequal /greaterequal /space /integralbt /degree /twosuperior /periodcentered /divide /SF430000 /SF240000 /SF510000 /afii10071 /SF520000 /SF390000 /SF220000 /SF210000 /SF250000 /SF500000 /SF490000 /SF380000 /SF280000 /SF270000 /SF260000 /SF360000 /SF370000 /SF420000 /SF190000 /afii10023 /SF200000 /SF230000 /SF470000 /SF480000 /SF410000 /SF450000 /SF460000 /SF400000 /SF540000 /SF530000 /SF440000 /copyright /afii10096 /afii10065 /afii10066 /afii10088 /afii10069 /afii10070 /afii10086 /afii10068 /afii10087 /afii10074 /afii10075 /afii10076 /afii10077 /afii10078 /afii10079 /afii10080 /afii10081 /afii10097 /afii10082 /afii10083 /afii10084 /afii10085 /afii10072 /afii10067 /afii10094 /afii10093 /afii10073 /afii10090 /afii10095 /afii10091 /afii10089 /afii10092 /afii10048 /afii10017 /afii10018 /afii10040 /afii10021 /afii10022 /afii10038 /afii10020 /afii10039 /afii10026 /afii10027 /afii10028 /afii10029 /afii10030 /afii10031 /afii10032 /afii10033 /afii10049 /afii10034 /afii10035 /afii10036 /afii10037 /afii10024 /afii10019 /afii10046 /afii10045 /afii10025 /afii10042 /afii10047 /afii10043 /afii10041 /afii10044] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�^r̷������vim80/print/iso-8859-3.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-iso-8859-3 %%Version: 1.0 0 %%EndComments /VIM-iso-8859-3[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /Hbar /breve /sterling /currency /.notdef /Hcircumflex /section /dieresis /Idot /Scedilla /Gbreve /Jcircumflex /hyphen /.notdef /Zdotaccent /degree /hbar /twosuperior /threesuperior /acute /mu /hcircumflex /periodcentered /cedilla /dotlessi /scedilla /gbreve /jcircumflex /onehalf /.notdef /zdotaccent /Agrave /Aacute /Acircumflex /.notdef /Adieresis /Cdotaccent /Ccircumflex /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /.notdef /Ntilde /Ograve /Oacute /Ocircumflex /Gdotaccent /Odieresis /multiply /Gcircumflex /Ugrave /Uacute /Ucircumflex /Udieresis /Ubreve /Scircumflex /germandbls /agrave /aacute /acircumflex /.notdef /adieresis /cdotaccent /ccircumflex /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /.notdef /ntilde /ograve /oacute /ocircumflex /gdotaccent /odieresis /divide /gcircumflex /ugrave /uacute /ucircumflex /udieresis /ubreve /scircumflex /dotaccent] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�]��]����vim80/print/iso-8859-7.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-iso-8859-7 %%Version: 1.0 0 %%EndComments /VIM-iso-8859-7[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /quotereversed /quoteright /sterling /.notdef /.notdef /brokenbar /section /dieresis /copyright /.notdef /guillemotleft /logicalnot /.notdef /.notdef /emdash /degree /plusminus /twosuperior /threesuperior /tonos /dieresistonos /Alphatonos /periodcentered /Epsilontonos /Etatonos /Iotatonos /guillemotright /Omicrontonos /onehalf /Upsilontonos /Omegatonos /iotadieresistonos /Alpha /Beta /Gamma /Delta /Epsilon /Zeta /Eta /Theta /Iota /Kappa /Lambda /Mu /Nu /Xi /Omicron /Pi /Rho /.notdef /Sigma /Tau /Upsilon /Phi /Chi /Psi /Omega /Iotadieresis /Upsilondieresis /alphatonos /epsilontonos /etatonos /iotatonos /upsilondieresistonos /alpha /beta /gamma /delta /epsilon /zeta /eta /theta /iota /kappa /lambda /mu /nu /xi /omicron /pi /rho /sigma1 /sigma /tau /upsilon /phi /chi /psi /omega /iotadieresis /upsilondieresis /omicrontonos /upsilontonos /omegatonos /.notdef] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�I,������vim80/print/iso-8859-15.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-iso-8859-15 %%Version: 1.0 0 %%EndComments /VIM-iso-8859-15[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclamdown /cent /sterling /Euro /yen /Scaron /section /scaron /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /Zcaron /mu /paragraph /periodcentered /zcaron /onesuperior /ordmasculine /guillemotright /OE /oe /Ydieresis /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�гc������vim80/print/iso-8859-9.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-iso-8859-9 %%Version: 1.0 0 %%EndComments /VIM-iso-8859-9[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Gbreve /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Idotaccent /Scedilla /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /gbreve /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /dotlessi /scedilla /ydieresis] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!� y��y����vim80/print/cp1253.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-cp1253 %%Version: 1.0 0 %%EndComments /VIM-cp1253[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /.notdef /perthousand /.notdef /guilsinglleft /.notdef /.notdef /.notdef /.notdef /.notdef /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash /.notdef /trademark /.notdef /guilsinglright /.notdef /.notdef /.notdef /.notdef /space /dieresistonos /Alphatonos /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /emdash /degree /plusminus /twosuperior /threesuperior /tonos /mu /paragraph /periodcentered /Epsilontonos /Etatonos /Iotatonos /guillemotright /Omicrontonos /onehalf /Upsilontonos /Omegatonos /iotadieresistonos /Alpha /Beta /Gamma /Delta /Epsilon /Zeta /Eta /Theta /Iota /Kappa /Lambda /Mu /Nu /Xi /Omicron /Pi /Rho /.notdef /Sigma /Tau /Upsilon /Phi /Chi /Psi /Omega /Iotadieresis /Upsilondieresis /alphatonos /epsilontonos /etatonos /iotatonos /upsilondieresistonos /alpha /beta /gamma /delta /epsilon /zeta /eta /theta /iota /kappa /lambda /mu /nu /xi /omicron /pi /rho /sigma1 /sigma /tau /upsilon /phi /chi /psi /omega /iotadieresis /upsilondieresis /omicrontonos /upsilontonos /omegatonos /.notdef] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�J������vim80/print/ks_roman.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-ks_roman %%Version: 1.0 0 %%EndComments % Different to ASCII at code points 96 and 126 /VIM-ks_roman[ 32{/.notdef}repeat /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /won /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /overline /.notdef 128{/.notdef}repeat] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�e܊������vim80/print/iso-8859-13.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-iso-8859-13 %%Version: 1.0 0 %%EndComments /VIM-iso-8859-13[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /quotedblright /cent /sterling /currency /quotedblbase /brokenbar /section /Oslash /copyright /Rcedilla /guillemotleft /logicalnot /hyphen /registered /AE /degree /plusminus /twosuperior /threesuperior /quotedblleft /mu /paragraph /periodcentered /oslash /onesuperior /rcedilla /guillemotright /onequarter /onehalf /threequarters /ae /Aogonek /Iogonek /Amacron /Cacute /Adieresis /Aring /Eogonek /Emacron /Ccaron /Eacute /Zacute /Edot /Gcedilla /Kcedilla /Imacron /Lcedilla /Scaron /Nacute /Ncedilla /Oacute /Omacron /Otilde /Odieresis /multiply /Uogonek /Lslash /Sacute /Umacron /Udieresis /Zdotaccent /Zcaron /germandbls /aogonek /iogonek /amacron /cacute /adieresis /aring /eogonek /emacron /ccaron /eacute /zacute /edot /gcedilla /kcedilla /imacron /lcedilla /scaron /nacute /ncedilla /oacute /omacron /otilde /odieresis /divide /uogonek /lslash /sacute /umacron /udieresis /zdotaccent /zcaron /quoteright] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�L86������vim80/print/latin1.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-latin1 %%Version: 1.0 0 %%EndComments /VIM-latin1[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�2������vim80/print/gb_roman.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-gb_roman %%Version: 1.0 0 %%EndComments % Different to ASCII at code points 36 and 126 /VIM-gb_roman[ 32{/.notdef}repeat /space /exclam /quotedbl /numbersign /yuan /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /overline /.notdef 128{/.notdef}repeat] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�e������vim80/print/cp1252.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-cp1252 %%Version: 1.0 0 %%EndComments /VIM-cp1252[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /Euro /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /Zcaron /.notdef /.notdef /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /zcaron /Ydieresis /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�U������vim80/print/dec-mcs.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-dec-mcs %%Version: 1.0 0 %%EndComments /VIM-dec-mcs[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /exclamdown /cent /sterling /.notdef /yen /.notdef /section /currency /copyright /ordfeminine /guillemotleft /.notdef /.notdef /.notdef /.notdef /degree /plusminus /twosuperior /threesuperior /.notdef /mu /paragraph /periodcentered /.notdef /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /.notdef /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /.notdef /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /OE /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Ydieresis /.notdef /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /.notdef /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /oe /oslash /ugrave /uacute /ucircumflex /udieresis /ydieresis /.notdef /.notdef] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�W)R?��?����vim80/print/iso-8859-8.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-iso-8859-8 %%Version: 1.0 0 %%EndComments /VIM-iso-8859-8[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /.notdef /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /multiply /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /divide /guillemotright /onequarter /onehalf /threequarters /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /underscoredbl /alef /bet /gimel /dalet /he /vav /zayin /het /tet /yod /finalkaf /kaf /lamed /finalmem /mem /finalnun /nun /samekh /ayin /finalpe /pe /finaltsadi /tsadi /qof /resh /shin /tav /.notdef /.notdef /.notdef /.notdef /.notdef] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�!-������vim80/print/cp1250.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-cp1250 %%Version: 1.0 0 %%EndComments /VIM-cp1250[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /tilde /.notdef /Euro /.notdef /quotesinglbase /.notdef /quotedblbase /ellipsis /dagger /daggerdbl /.notdef /perthousand /Scaron /guilsinglleft /Sacute /Tcaron /Zcaron /Zacute /.notdef /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash /.notdef /trademark /scaron /guilsinglright /sacute /tcaron /zcaron /zacute /space /caron /breve /Lslash /currency /Aogonek /brokenbar /section /dieresis /copyright /Scedilla /guillemotleft /logicalnot /hyphen /registered /Zdotaccent /degree /plusminus /ogonek /lslash /acute /mu /paragraph /periodcentered /cedilla /aogonek /scedilla /guillemotright /Lcaron /hungarumlaut /lcaron /zdotaccent /Racute /Aacute /Acircumflex /Abreve /Adieresis /Lacute /Cacute /Ccedilla /Ccaron /Eacute /Eogonek /Edieresis /Ecaron /Iacute /Icircumflex /Dcaron /Dcroat /Nacute /Ncaron /Oacute /Ocircumflex /Ohungarumlaut /Odieresis /multiply /Rcaron /Uring /Uacute /Uhungarumlaut /Udieresis /Yacute /Tcedilla /germandbls /racute /aacute /acircumflex /abreve /adieresis /lacute /cacute /ccedilla /ccaron /eacute /eogonek /edieresis /ecaron /iacute /icircumflex /dcaron /dcroat /nacute /ncaron /oacute /ocircumflex /ohungarumlaut /odieresis /divide /rcaron /uring /uacute /uhungarumlaut /udieresis /yacute /tcedilla /dotaccent] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�|F'������vim80/print/mac-roman.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-mac-roman %%Version: 1.0 0 %%EndComments /VIM-mac-roman[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis /dagger /degree /cent /sterling /section /bullet /paragraph /germandbls /registered /copyright /trademark /acute /dieresis /notequal /AE /Oslash /infinity /plusminus /lessequal /greaterequal /yen /mu /partialdiff /summation /Pi /pi /integral /ordfeminine /ordmasculine /Omega /ae /oslash /questiondown /exclamdown /logicalnot /radical /florin /approxequal /delta /guillemotleft /guillemotright /ellipsis /space /Agrave /Atilde /Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /divide /lozenge /ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand /Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /heart /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�5b������vim80/print/cns_roman.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-cns_roman %%Version: 1.0 0 %%EndComments % Different to ASCII at code point 126 /VIM-cns_roman[ 32{/.notdef}repeat /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /overline /.notdef 128{/.notdef}repeat] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�;~ō������vim80/print/iso-8859-14.psnu�[��������%!PS-Adobe-3.0 Resource-Encoding %%Title: VIM-iso-8859-14 %%Version: 1.0 0 %%EndComments /VIM-iso-8859-14[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /uni1E02 /uni1E03 /sterling /Cdotaccent /cdotaccent /uni1E0A /section /Wgrave /copyright /Wacute /uni1E0B /Ygrave /hyphen /registered /Ydieresis /uni1E1E /uni1E1F /Gdotaccent /gdotaccent /uni1E40 /uni1E41 /paragraph /uni1E56 /wgrave /uni1E57 /wacute /uni1E60 /ygrave /Wdieresis /wdieresis /uni1E61 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Wcircumflex /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /uni1E6A /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Ycircumflex /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /wcircumflex /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /uni1E6B /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /ycircumflex /ydieresis] /Encoding defineresource pop % vim:ff=unix: %%EOF PK�������!�Ps%Q��Q����vim80/ftplugof.vimnu�[��������" Vim support file to switch off loading plugins for file types " " Maintainer: Bram Moolenaar <Bram@vim.org> " Last Change: 2011 Oct 20 if exists("did_load_ftplugin") unlet did_load_ftplugin endif " Remove all autocommands in the filetypeplugin group, if any exist. if exists("#filetypeplugin") silent! au! filetypeplugin * endif PK�������!� ������vim80/indoff.vimnu�[��������" Vim support file to switch off loading indent files for file types " " Maintainer: Bram Moolenaar <Bram@vim.org> " Last Change: 2001 Jun 11 if exists("did_indent_on") unlet did_indent_on endif " Remove all autocommands in the filetypeindent group silent! au! filetypeindent * PK�������!�l`_@��@����vim80/syntax/icon.vimnu�[��������" Vim syntax file " Language: Icon " Maintainer: Wendell Turner <wendell@adsi-m4.com> " URL: ftp://ftp.halcyon.com/pub/users/wturner/icon.vim " Last Change: 2003 May 11 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn keyword iconFunction abs acos any args asin atan bal syn keyword iconFunction callout center char chdir close collect copy syn keyword iconFunction cos cset delay delete detab display dtor syn keyword iconFunction entab errorclear exit exp find flush function syn keyword iconFunction get getch getche getenv iand icom image syn keyword iconFunction insert integer ior ishift ixor kbhit key syn keyword iconFunction left list loadfunc log many map match syn keyword iconFunction member move name numeric open ord pop syn keyword iconFunction pos proc pull push put read reads syn keyword iconFunction real remove rename repl reverse right rtod syn keyword iconFunction runerr save seek seq set sin sort syn keyword iconFunction sortf sqrt stop string system tab table syn keyword iconFunction tan trim type upto variable where write writes " Keywords syn match iconKeyword "&allocated" syn match iconKeyword "&ascii" syn match iconKeyword "&clock" syn match iconKeyword "&collections" syn match iconKeyword "&cset" syn match iconKeyword "¤t" syn match iconKeyword "&date" syn match iconKeyword "&dateline" syn match iconKeyword "&digits" syn match iconKeyword "&dump" syn match iconKeyword "&e" syn match iconKeyword "&error" syn match iconKeyword "&errornumber" syn match iconKeyword "&errortext" syn match iconKeyword "&errorvalue" syn match iconKeyword "&errout" syn match iconKeyword "&fail" syn match iconKeyword "&features" syn match iconKeyword "&file" syn match iconKeyword "&host" syn match iconKeyword "&input" syn match iconKeyword "&lcase" syn match iconKeyword "&letters" syn match iconKeyword "&level" syn match iconKeyword "&line" syn match iconKeyword "&main" syn match iconKeyword "&null" syn match iconKeyword "&output" syn match iconKeyword "&phi" syn match iconKeyword "&pi" syn match iconKeyword "&pos" syn match iconKeyword "&progname" syn match iconKeyword "&random" syn match iconKeyword "®ions" syn match iconKeyword "&source" syn match iconKeyword "&storage" syn match iconKeyword "&subject" syn match iconKeyword "&time" syn match iconKeyword "&trace" syn match iconKeyword "&ucase" syn match iconKeyword "&version" " Reserved words syn keyword iconReserved break by case create default do syn keyword iconReserved else end every fail if syn keyword iconReserved initial link next not of syn keyword iconReserved procedure repeat return suspend syn keyword iconReserved then to until while " Storage class reserved words syn keyword iconStorageClass global static local record syn keyword iconTodo contained TODO FIXME XXX BUG " String and Character constants " Highlight special characters (those which have a backslash) differently syn match iconSpecial contained "\\x\x\{2}\|\\\o\{3\}\|\\[bdeflnrtv\"\'\\]\|\\^c[a-zA-Z0-9]\|\\$" syn region iconString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=iconSpecial syn region iconCset start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=iconSpecial syn match iconCharacter "'[^\\]'" " not sure about these "syn match iconSpecialCharacter "'\\[bdeflnrtv]'" "syn match iconSpecialCharacter "'\\\o\{3\}'" "syn match iconSpecialCharacter "'\\x\x\{2}'" "syn match iconSpecialCharacter "'\\^c\[a-zA-Z0-9]'" "when wanted, highlight trailing white space if exists("icon_space_errors") syn match iconSpaceError "\s*$" syn match iconSpaceError " \+\t"me=e-1 endif "catch errors caused by wrong parenthesis syn cluster iconParenGroup contains=iconParenError,iconIncluded,iconSpecial,iconTodo,iconUserCont,iconUserLabel,iconBitField syn region iconParen transparent start='(' end=')' contains=ALLBUT,@iconParenGroup syn match iconParenError ")" syn match iconInParen contained "[{}]" syn case ignore "integer number, or floating point number without a dot syn match iconNumber "\<\d\+\>" "floating point number, with dot, optional exponent syn match iconFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=\>" "floating point number, starting with a dot, optional exponent syn match iconFloat "\.\d\+\(e[-+]\=\d\+\)\=\>" "floating point number, without dot, with exponent syn match iconFloat "\<\d\+e[-+]\=\d\+\>" "radix number syn match iconRadix "\<\d\{1,2}[rR][a-zA-Z0-9]\+\>" " syn match iconIdentifier "\<[a-z_][a-z0-9_]*\>" syn case match " Comment syn match iconComment "#.*" contains=iconTodo,iconSpaceError syn region iconPreCondit start="^\s*$\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=iconComment,iconString,iconCharacter,iconNumber,iconCommentError,iconSpaceError syn region iconIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match iconIncluded contained "<[^>]*>" syn match iconInclude "^\s*$\s*include\>\s*["<]" contains=iconIncluded "syn match iconLineSkip "\\$" syn cluster iconPreProcGroup contains=iconPreCondit,iconIncluded,iconInclude,iconDefine,iconInParen,iconUserLabel syn region iconDefine start="^\s*$\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,@iconPreProcGroup "wt:syn region iconPreProc "start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" "end="$" contains=ALLBUT,@iconPreProcGroup " Highlight User Labels " syn cluster iconMultiGroup contains=iconIncluded,iconSpecial,iconTodo,iconUserCont,iconUserLabel,iconBitField if !exists("icon_minlines") let icon_minlines = 15 endif exec "syn sync ccomment iconComment minlines=" . icon_minlines " Define the default highlighting. " Only when an item doesn't have highlighting " The default methods for highlighting. Can be overridden later " hi def link iconSpecialCharacter iconSpecial hi def link iconOctalError iconError hi def link iconParenError iconError hi def link iconInParen iconError hi def link iconCommentError iconError hi def link iconSpaceError iconError hi def link iconCommentError iconError hi def link iconIncluded iconString hi def link iconCommentString iconString hi def link iconComment2String iconString hi def link iconCommentSkip iconComment hi def link iconUserLabel Label hi def link iconCharacter Character hi def link iconNumber Number hi def link iconRadix Number hi def link iconFloat Float hi def link iconInclude Include hi def link iconPreProc PreProc hi def link iconDefine Macro hi def link iconError Error hi def link iconStatement Statement hi def link iconPreCondit PreCondit hi def link iconString String hi def link iconCset String hi def link iconComment Comment hi def link iconSpecial SpecialChar hi def link iconTodo Todo hi def link iconStorageClass StorageClass hi def link iconFunction Statement hi def link iconReserved Label hi def link iconKeyword Operator "hi def link iconIdentifier Identifier let b:current_syntax = "icon" PK�������!�li8��8����vim80/syntax/icemenu.vimnu�[��������" Vim syntax file " Language: Icewm Menu " Maintainer: James Mahler <James.Mahler@gmail.com> " Last Change: Fri Apr 1 15:13:48 EST 2005 " Extensions: ~/.icewm/menu " Comment: Icewm is a lightweight window manager. This adds syntax " highlighting when editing your user's menu file (~/.icewm/menu). " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " not case sensitive syntax case ignore " icons .xpm .png and .gif syntax match _icon /"\=\/.*\.xpm"\=/ syntax match _icon /"\=\/.*\.png"\=/ syntax match _icon /"\=\/.*\.gif"\=/ syntax match _icon /"\-"/ " separator syntax keyword _rules separator " prog and menu syntax keyword _ids menu prog " highlights highlight link _rules Underlined highlight link _ids Type highlight link _icon Special let b:current_syntax = "IceMenu" PK�������!�|P������vim80/syntax/mmp.vimnu�[��������" Vim syntax file " Language: Symbian meta-makefile definition (MMP) " Maintainer: Ron Aaron <ron@ronware.org> " Last Change: 2007/11/07 " URL: http://ronware.org/wiki/vim/mmp " Filetypes: *.mmp " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore syn match mmpComment "//.*" syn region mmpComment start="/\*" end="\*\/" syn keyword mmpKeyword aif asspabi assplibrary aaspexports baseaddress syn keyword mmpKeyword debuglibrary deffile document epocheapsize syn keyword mmpKeyword epocprocesspriority epocstacksize exportunfrozen syn keyword mmpStorage lang library linkas macro nostrictdef option syn keyword mmpStorage resource source sourcepath srcdbg startbitmap syn keyword mmpStorage start end staticlibrary strictdepend systeminclude syn keyword mmpStorage systemresource target targettype targetpath uid syn keyword mmpStorage userinclude win32_library syn match mmpIfdef "\#\(include\|ifdef\|ifndef\|if\|endif\|else\|elif\)" syn match mmpNumber "\d+" syn match mmpNumber "0x\x\+" " Define the default highlighting. " Only when an item doesn't have highlighting yet if !exists("did_mmp_syntax_inits") let did_mmp_syntax_inits=1 hi def link mmpComment Comment hi def link mmpKeyword Keyword hi def link mmpStorage StorageClass hi def link mmpString String hi def link mmpNumber Number hi def link mmpOrdinal Operator hi def link mmpIfdef PreCondit endif let b:current_syntax = "mmp" " vim: ts=8 PK�������!�U|9��9����vim80/syntax/takcmp.vimnu�[��������" Vim syntax file " Language: TAK2, TAK3, TAK2000 thermal modeling compare file " Maintainer: Adrian Nagle, anagle@ball.com " Last Change: 2003 May 11 " Filenames: *.cmp " URL: http://www.naglenet.org/vim/syntax/takcmp.vim " MAIN URL: http://www.naglenet.org/vim/ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Ignore case syn case ignore " " " Begin syntax definitions for compare files. " " Define keywords for TAK compare syn keyword takcmpUnit celsius fahrenheit " Define matches for TAK compare syn match takcmpTitle "Steady State Temperature Comparison" syn match takcmpLabel "Run Date:" syn match takcmpLabel "Run Time:" syn match takcmpLabel "Temp. File \d Units:" syn match takcmpLabel "Filename:" syn match takcmpLabel "Output Units:" syn match takcmpHeader "^ *Node\( *File \d\)* *Node Description" syn match takcmpDate "\d\d\/\d\d\/\d\d" syn match takcmpTime "\d\d:\d\d:\d\d" syn match takcmpInteger "^ *-\=\<[0-9]*\>" syn match takcmpFloat "-\=\<[0-9]*\.[0-9]*" " Define the default highlighting " Only when an item doesn't have highlighting yet hi def link takcmpTitle Type hi def link takcmpUnit PreProc hi def link takcmpLabel Statement hi def link takcmpHeader takHeader hi def link takcmpDate Identifier hi def link takcmpTime Identifier hi def link takcmpInteger Number hi def link takcmpFloat Special let b:current_syntax = "takcmp" " vim: ts=8 sw=2 PK�������!�· �� ����vim80/syntax/usw2kagtlog.vimnu�[��������" Vim syntax file " Language: Innovation Data Processing USW2KAgt.log file " Maintainer: Rob Owens <rowens@fdrinnovation.com> " Latest Revision: 2014-04-01 " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Date: syn match usw2kagtlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/ " Msg Types: syn match usw2kagtlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=usw2kagtlog_Process skipwhite syn match usw2kagtlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=usw2kagtlog_Process skipwhite syn match usw2kagtlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=usw2kagtlog_Process skipwhite syn match usw2kagtlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=usw2kagtlog_Process skipwhite " Processes: syn region usw2kagtlog_Process start="(" end=")" contained "syn region usw2kagtlog_Process start="Starting the processing for a \zs\"" end="\ze client request" "syn region usw2kagtlog_Process start="Ending the processing for a \zs\"" end="\ze client request" "syn region usw2kagtlog_Process start="Starting the processing for a \zs\"" end="\ze client\s\{0,1}\r\{0,1}\s\{1,9}request" "syn region usw2kagtlog_Process start="Ending the processing for a \zs\"" end="\ze client\s\{0,1}\r\{0,1}\s\{1,9}request" syn region usw2kagtlog_Process start="Starting the processing for a \zs\"" end="\ze client" syn region usw2kagtlog_Process start="Ending the processing for a \zs\"" end="\ze client" " IP Address: syn match usw2kagtlog_IPaddr / \d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ " Profile: syn match usw2kagtlog_Profile /Profile name \zs\"\S\{1,8}\"/ syn match usw2kagtlog_Profile / Profile: \zs\S\{1,8}/ syn match usw2kagtlog_Profile / Profile: \zs\S\{1,8}\ze, / syn match upstreamlog_Profile /Backup Profile: \zs\S\{1,8}\ze Version date/ syn match upstreamlog_Profile /Backup profile: \zs\S\{1,8}\ze Version date/ syn match usw2kagtlog_Profile /Full of \zs\S\{1,8}\ze$/ syn match usw2kagtlog_Profile /Incr. of \zs\S\{1,8}\ze$/ syn match usw2kagtlog_Profile /profile name "\zs\S\{1,8}\ze"/ " Target: syn region usw2kagtlog_Target start="Computer: \zs" end="\ze[\]\)]" syn region usw2kagtlog_Target start="Computer name \zs\"" end="\"\ze" " Agent Keywords: syn keyword usw2kagtlog_Agentword opened closed hi def link usw2kagtlog_Date Underlined hi def link usw2kagtlog_MsgD Type hi def link usw2kagtlog_MsgE Error hi def link usw2kagtlog_MsgW Constant hi def link usw2kagtlog_Process Statement hi def link usw2kagtlog_IPaddr Identifier hi def link usw2kagtlog_Profile Identifier hi def link usw2kagtlog_Target Identifier hi def link usw2kagtlog_Agentword Special let b:current_syntax = "usw2kagentlog" PK�������!�|T(��(����vim80/syntax/liquid.vimnu�[��������" Vim syntax file " Language: Liquid " Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Filenames: *.liquid " Last Change: 2013 May 30 if exists('b:current_syntax') finish endif if !exists('main_syntax') let main_syntax = 'liquid' endif if !exists('g:liquid_default_subtype') let g:liquid_default_subtype = 'html' endif if !exists('b:liquid_subtype') && main_syntax == 'liquid' let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$") let b:liquid_subtype = matchstr(s:lines,'liquid_subtype=\zs\w\+') if b:liquid_subtype == '' let b:liquid_subtype = matchstr(&filetype,'^liquid\.\zs\w\+') endif if b:liquid_subtype == '' let b:liquid_subtype = matchstr(substitute(expand('%:t'),'\c\%(\.liquid\)\+$','',''),'\.\zs\w\+$') endif if b:liquid_subtype == '' let b:liquid_subtype = g:liquid_default_subtype endif endif if exists('b:liquid_subtype') && b:liquid_subtype != '' exe 'runtime! syntax/'.b:liquid_subtype.'.vim' unlet! b:current_syntax endif syn case match if exists('b:liquid_subtype') && b:liquid_subtype != 'yaml' " YAML Front Matter syn include @liquidYamlTop syntax/yaml.vim unlet! b:current_syntax syn region liquidYamlHead start="\%^---$" end="^---\s*$" keepend contains=@liquidYamlTop,@Spell endif if !exists('g:liquid_highlight_types') let g:liquid_highlight_types = [] endif if !exists('s:subtype') let s:subtype = exists('b:liquid_subtype') ? b:liquid_subtype : '' for s:type in map(copy(g:liquid_highlight_types),'matchstr(v:val,"[^=]*$")') if s:type =~ '\.' let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*') endif exe 'syn include @liquidHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim' unlet! b:current_syntax endfor unlet! s:type if s:subtype == '' unlet! b:liquid_subtype else let b:liquid_subtype = s:subtype endif unlet s:subtype endif syn region liquidStatement matchgroup=liquidDelimiter start="{%" end="%}" contains=@liquidStatement containedin=ALLBUT,@liquidExempt keepend syn region liquidExpression matchgroup=liquidDelimiter start="{{" end="}}" contains=@liquidExpression containedin=ALLBUT,@liquidExempt keepend syn region liquidComment matchgroup=liquidDelimiter start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}" contains=liquidTodo,@Spell containedin=ALLBUT,@liquidExempt keepend syn region liquidRaw matchgroup=liquidDelimiter start="{%\s*raw\s*%}" end="{%\s*endraw\s*%}" contains=TOP,@liquidExempt containedin=ALLBUT,@liquidExempt keepend syn cluster liquidExempt contains=liquidStatement,liquidExpression,liquidComment,liquidRaw,@liquidStatement,liquidYamlHead syn cluster liquidStatement contains=liquidConditional,liquidRepeat,liquidKeyword,@liquidExpression syn cluster liquidExpression contains=liquidOperator,liquidString,liquidNumber,liquidFloat,liquidBoolean,liquidNull,liquidEmpty,liquidPipe,liquidForloop syn keyword liquidKeyword highlight nextgroup=liquidTypeHighlight skipwhite contained syn keyword liquidKeyword endhighlight contained syn region liquidHighlight start="{%\s*highlight\s\+\w\+\s*%}" end="{% endhighlight %}" keepend for s:type in g:liquid_highlight_types exe 'syn match liquidTypeHighlight "\<'.matchstr(s:type,'[^=]*').'\>" contained' exe 'syn region liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' start="{%\s*highlight\s\+'.matchstr(s:type,'[^=]*').'\s*%}" end="{% endhighlight %}" keepend contains=@liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') endfor unlet! s:type syn region liquidString matchgroup=liquidQuote start=+"+ end=+"+ contained syn region liquidString matchgroup=liquidQuote start=+'+ end=+'+ contained syn match liquidNumber "-\=\<\d\+\>" contained syn match liquidFloat "-\=\<\d\+\>\.\.\@!\%(\d\+\>\)\=" contained syn keyword liquidBoolean true false contained syn keyword liquidNull null nil contained syn match liquidEmpty "\<empty\>" contained syn keyword liquidOperator and or not contained syn match liquidPipe '|' contained skipwhite nextgroup=liquidFilter syn keyword liquidFilter date capitalize downcase upcase first last join sort size strip_html strip_newlines newline_to_br replace replace_first remove remove_first truncate truncatewords prepend append minus plus times divided_by contained syn keyword liquidConditional if elsif else endif unless endunless case when endcase ifchanged endifchanged contained syn keyword liquidRepeat for endfor tablerow endtablerow in contained syn match liquidRepeat "\%({%\s*\)\@<=empty\>" contained syn keyword liquidKeyword assign cycle include with contained syn keyword liquidForloop forloop nextgroup=liquidForloopDot contained syn match liquidForloopDot "\." nextgroup=liquidForloopAttribute contained syn keyword liquidForloopAttribute length index index0 rindex rindex0 first last contained syn keyword liquidTablerowloop tablerowloop nextgroup=liquidTablerowloopDot contained syn match liquidTablerowloopDot "\." nextgroup=liquidTableForloopAttribute contained syn keyword liquidTablerowloopAttribute length index index0 col col0 index0 rindex rindex0 first last col_first col_last contained hi def link liquidDelimiter PreProc hi def link liquidComment Comment hi def link liquidTypeHighlight Type hi def link liquidConditional Conditional hi def link liquidRepeat Repeat hi def link liquidKeyword Keyword hi def link liquidOperator Operator hi def link liquidString String hi def link liquidQuote Delimiter hi def link liquidNumber Number hi def link liquidFloat Float hi def link liquidEmpty liquidNull hi def link liquidNull liquidBoolean hi def link liquidBoolean Boolean hi def link liquidFilter Function hi def link liquidForloop Identifier hi def link liquidForloopAttribute Identifier let b:current_syntax = 'liquid' if exists('main_syntax') && main_syntax == 'liquid' unlet main_syntax endif PK�������!�=��=����vim80/syntax/splint.vimnu�[��������" Vim syntax file " Language: splint (C with lclint/splint Annotations) " Maintainer: Ralf Wildenhues <Ralf.Wildenhues@gmx.de> " Splint Home: http://www.splint.org/ " Last Change: $Date: 2004/06/13 20:08:47 $ " $Revision: 1.1 $ " Note: Splint annotated files are not detected by default. " If you want to use this file for highlighting C code, " please make sure splint.vim is sourced instead of c.vim, " for example by putting " /* vim: set filetype=splint : */ " at the end of your code or something like " au! BufRead,BufNewFile *.c setfiletype splint " in your vimrc file or filetype.vim " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Read the C syntax to start with runtime! syntax/c.vim " FIXME: uses and changes several clusters defined in c.vim " so watch for changes there " TODO: make a little more grammar explicit " match flags with hyphen and underscore notation " match flag expanded forms " accept other comment char than @ syn case match " splint annotations (taken from 'splint -help annotations') syn match splintStateAnnot contained "\(pre\|post\):\(only\|shared\|owned\|dependent\|observer\|exposed\|isnull\|notnull\)" syn keyword splintSpecialAnnot contained special syn keyword splintSpecTag contained uses sets defines allocated releases syn keyword splintModifies contained modifies syn keyword splintRequires contained requires ensures syn keyword splintGlobals contained globals syn keyword splintGlobitem contained internalState fileSystem syn keyword splintGlobannot contained undef killed syn keyword splintWarning contained warn syn keyword splintModitem contained internalState fileSystem nothing syn keyword splintReqitem contained MaxSet MaxRead result syn keyword splintIter contained iter yield syn keyword splintConst contained constant syn keyword splintAlt contained alt syn keyword splintType contained abstract concrete mutable immutable refcounted numabstract syn keyword splintGlobalType contained unchecked checkmod checked checkedstrict syn keyword splintMemMgm contained dependent keep killref only owned shared temp syn keyword splintAlias contained unique returned syn keyword splintExposure contained observer exposed syn keyword splintDefState contained out in partial reldef syn keyword splintGlobState contained undef killed syn keyword splintNullState contained null notnull relnull syn keyword splintNullPred contained truenull falsenull nullwhentrue falsewhennull syn keyword splintExit contained exits mayexit trueexit falseexit neverexit syn keyword splintExec contained noreturn maynotreturn noreturnwhentrue noreturnwhenfalse alwaysreturns syn keyword splintSef contained sef syn keyword splintDecl contained unused external syn keyword splintCase contained fallthrough syn keyword splintBreak contained innerbreak loopbreak switchbreak innercontinue syn keyword splintUnreach contained notreached syn keyword splintSpecFunc contained printflike scanflike messagelike " TODO: make these region or match syn keyword splintErrSupp contained i ignore end t syn match splintErrSupp contained "[it]\d\+\>" syn keyword splintTypeAcc contained access noaccess syn keyword splintMacro contained notfunction syn match splintSpecType contained "\(\|unsigned\|signed\)integraltype" " Flags taken from 'splint -help flags full' divided in local and global flags " Local Flags: syn keyword splintFlag contained abstract abstractcompare accessall accessczech accessczechoslovak syn keyword splintFlag contained accessfile accessmodule accessslovak aliasunique allblock syn keyword splintFlag contained allempty allglobs allimponly allmacros alwaysexits syn keyword splintFlag contained annotationerror ansi89limits assignexpose badflag bitwisesigned syn keyword splintFlag contained boolcompare boolfalse boolint boolops booltrue syn keyword splintFlag contained booltype bounds boundscompacterrormessages boundsread boundswrite syn keyword splintFlag contained branchstate bufferoverflow bufferoverflowhigh bugslimit casebreak syn keyword splintFlag contained caseinsensitivefilenames castexpose castfcnptr charindex charint syn keyword splintFlag contained charintliteral charunsignedchar checkedglobalias checkmodglobalias checkpost syn keyword splintFlag contained checkstrictglobalias checkstrictglobs codeimponly commentchar commenterror syn keyword splintFlag contained compdef compdestroy compmempass constmacros constprefix syn keyword splintFlag contained constprefixexclude constuse continuecomment controlnestdepth cppnames syn keyword splintFlag contained csvoverwrite czech czechconsts czechfcns czechmacros syn keyword splintFlag contained czechoslovak czechoslovakconsts czechoslovakfcns czechoslovakmacros czechoslovaktypes syn keyword splintFlag contained czechoslovakvars czechtypes czechvars debugfcnconstraint declundef syn keyword splintFlag contained deepbreak deparrays dependenttrans distinctexternalnames distinctinternalnames syn keyword splintFlag contained duplicatecases duplicatequals elseifcomplete emptyret enumindex syn keyword splintFlag contained enumint enummembers enummemuse enumprefix enumprefixexclude syn keyword splintFlag contained evalorder evalorderuncon exitarg exportany exportconst syn keyword splintFlag contained exportfcn exportheader exportheadervar exportiter exportlocal syn keyword splintFlag contained exportmacro exporttype exportvar exposetrans externalnamecaseinsensitive syn keyword splintFlag contained externalnamelen externalprefix externalprefixexclude fcnderef fcnmacros syn keyword splintFlag contained fcnpost fcnuse fielduse fileextensions filestaticprefix syn keyword splintFlag contained filestaticprefixexclude firstcase fixedformalarray floatdouble forblock syn keyword splintFlag contained forcehints forempty forloopexec formalarray formatcode syn keyword splintFlag contained formatconst formattype forwarddecl freshtrans fullinitblock syn keyword splintFlag contained globalias globalprefix globalprefixexclude globimponly globnoglobs syn keyword splintFlag contained globs globsimpmodsnothing globstate globuse gnuextensions syn keyword splintFlag contained grammar hasyield hints htmlfileformat ifblock syn keyword splintFlag contained ifempty ignorequals ignoresigns immediatetrans impabstract syn keyword splintFlag contained impcheckedglobs impcheckedspecglobs impcheckedstatics impcheckedstrictglobs impcheckedstrictspecglobs syn keyword splintFlag contained impcheckedstrictstatics impcheckmodglobs impcheckmodinternals impcheckmodspecglobs impcheckmodstatics syn keyword splintFlag contained impconj implementationoptional implictconstraint impouts imptype syn keyword splintFlag contained includenest incompletetype incondefs incondefslib indentspaces syn keyword splintFlag contained infloops infloopsuncon initallelements initsize internalglobs syn keyword splintFlag contained internalglobsnoglobs internalnamecaseinsensitive internalnamelen internalnamelookalike iso99limits syn keyword splintFlag contained isoreserved isoreservedinternal iterbalance iterloopexec iterprefix syn keyword splintFlag contained iterprefixexclude iteryield its4low its4moderate its4mostrisky syn keyword splintFlag contained its4risky its4veryrisky keep keeptrans kepttrans syn keyword splintFlag contained legacy libmacros likelyboundsread likelyboundswrite likelybool syn keyword splintFlag contained likelybounds limit linelen lintcomments localprefix syn keyword splintFlag contained localprefixexclude locindentspaces longint longintegral longsignedintegral syn keyword splintFlag contained longunsignedintegral longunsignedunsignedintegral loopexec looploopbreak looploopcontinue syn keyword splintFlag contained loopswitchbreak macroassign macroconstdecl macrodecl macroempty syn keyword splintFlag contained macrofcndecl macromatchname macroparams macroparens macroredef syn keyword splintFlag contained macroreturn macrostmt macrounrecog macrovarprefix macrovarprefixexclude syn keyword splintFlag contained maintype matchanyintegral matchfields mayaliasunique memchecks syn keyword splintFlag contained memimp memtrans misplacedsharequal misscase modfilesys syn keyword splintFlag contained modglobs modglobsnomods modglobsunchecked modinternalstrict modnomods syn keyword splintFlag contained modobserver modobserveruncon mods modsimpnoglobs modstrictglobsnomods syn keyword splintFlag contained moduncon modunconnomods modunspec multithreaded mustdefine syn keyword splintFlag contained mustfree mustfreefresh mustfreeonly mustmod mustnotalias syn keyword splintFlag contained mutrep namechecks needspec nestcomment nestedextern syn keyword splintFlag contained newdecl newreftrans nextlinemacros noaccess nocomments syn keyword splintFlag contained noeffect noeffectuncon noparams nopp noret syn keyword splintFlag contained null nullassign nullderef nullinit nullpass syn keyword splintFlag contained nullptrarith nullret nullstate nullterminated syn keyword splintFlag contained numabstract numabstractcast numabstractindex numabstractlit numabstractprint syn keyword splintFlag contained numenummembers numliteral numstructfields observertrans obviousloopexec syn keyword splintFlag contained oldstyle onlytrans onlyunqglobaltrans orconstraint overload syn keyword splintFlag contained ownedtrans paramimptemp paramuse parenfileformat partial syn keyword splintFlag contained passunknown portability predassign predbool predboolint syn keyword splintFlag contained predboolothers predboolptr preproc protoparammatch protoparamname syn keyword splintFlag contained protoparamprefix protoparamprefixexclude ptrarith ptrcompare ptrnegate syn keyword splintFlag contained quiet readonlystrings readonlytrans realcompare redecl syn keyword splintFlag contained redef redundantconstraints redundantsharequal refcounttrans relaxquals syn keyword splintFlag contained relaxtypes repeatunrecog repexpose retalias retexpose syn keyword splintFlag contained retimponly retval retvalbool retvalint retvalother syn keyword splintFlag contained sefparams sefuncon shadow sharedtrans shiftimplementation syn keyword splintFlag contained shiftnegative shortint showallconjs showcolumn showconstraintlocation syn keyword splintFlag contained showconstraintparens showdeephistory showfunc showloadloc showscan syn keyword splintFlag contained showsourceloc showsummary sizeofformalarray sizeoftype skipisoheaders syn keyword splintFlag contained skipposixheaders slashslashcomment slovak slovakconsts slovakfcns syn keyword splintFlag contained slovakmacros slovaktypes slovakvars specglobimponly specimponly syn keyword splintFlag contained specmacros specretimponly specstructimponly specundecl specundef syn keyword splintFlag contained stackref statemerge statetransfer staticinittrans statictrans syn keyword splintFlag contained strictbranchstate strictdestroy strictops strictusereleased stringliterallen syn keyword splintFlag contained stringliteralnoroom stringliteralnoroomfinalnull stringliteralsmaller stringliteraltoolong structimponly syn keyword splintFlag contained superuser switchloopbreak switchswitchbreak syntax sysdirerrors syn keyword splintFlag contained sysdirexpandmacros sysunrecog tagprefix tagprefixexclude temptrans syn keyword splintFlag contained tmpcomments toctou topuse trytorecover type syn keyword splintFlag contained typeprefix typeprefixexclude typeuse uncheckedglobalias uncheckedmacroprefix syn keyword splintFlag contained uncheckedmacroprefixexclude uniondef unixstandard unqualifiedinittrans unqualifiedtrans syn keyword splintFlag contained unreachable unrecog unrecogcomments unrecogdirective unrecogflagcomments syn keyword splintFlag contained unsignedcompare unusedspecial usedef usereleased usevarargs syn keyword splintFlag contained varuse voidabstract warnflags warnlintcomments warnmissingglobs syn keyword splintFlag contained warnmissingglobsnoglobs warnposixheaders warnrc warnsysfiles warnunixlib syn keyword splintFlag contained warnuse whileblock whileempty whileloopexec zerobool syn keyword splintFlag contained zeroptr " Global Flags: syn keyword splintGlobalFlag contained csv dump errorstream errorstreamstderr errorstreamstdout syn keyword splintGlobalFlag contained expect f help i isolib syn keyword splintGlobalFlag contained larchpath lclexpect lclimportdir lcs lh syn keyword splintGlobalFlag contained load messagestream messagestreamstderr messagestreamstdout mts syn keyword splintGlobalFlag contained neverinclude nof nolib posixlib posixstrictlib syn keyword splintGlobalFlag contained showalluses singleinclude skipsysheaders stats streamoverwrite syn keyword splintGlobalFlag contained strictlib supcounts sysdirs timedist tmpdir syn keyword splintGlobalFlag contained unixlib unixstrictlib warningstream warningstreamstderr warningstreamstdout syn keyword splintGlobalFlag contained whichlib syn match splintFlagExpr contained "[\+\-\=]" nextgroup=splintFlag,splintGlobalFlag " detect missing /*@ and wrong */ syn match splintAnnError "@\*/" syn cluster cCommentGroup add=splintAnnError syn match splintAnnError2 "[^@]\*/"hs=s+1 contained syn region splintAnnotation start="/\*@" end="@\*/" contains=@splintAnnotElem,cType keepend syn match splintShortAnn "/\*@\*/" syn cluster splintAnnotElem contains=splintStateAnnot,splintSpecialAnnot,splintSpecTag,splintModifies,splintRequires,splintGlobals,splintGlobitem,splintGlobannot,splintWarning,splintModitem,splintIter,splintConst,splintAlt,splintType,splintGlobalType,splintMemMgm,splintAlias,splintExposure,splintDefState,splintGlobState,splintNullState,splintNullPred,splintExit,splintExec,splintSef,splintDecl,splintCase,splintBreak,splintUnreach,splintSpecFunc,splintErrSupp,splintTypeAcc,splintMacro,splintSpecType,splintAnnError2,splintFlagExpr syn cluster splintAllStuff contains=@splintAnnotElem,splintFlag,splintGlobalFlag syn cluster cParenGroup add=@splintAllStuff syn cluster cPreProcGroup add=@splintAllStuff syn cluster cMultiGroup add=@splintAllStuff " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link splintShortAnn splintAnnotation hi def link splintAnnotation Comment hi def link splintAnnError splintError hi def link splintAnnError2 splintError hi def link splintFlag SpecialComment hi def link splintGlobalFlag splintError hi def link splintSpecialAnnot splintAnnKey hi def link splintStateAnnot splintAnnKey hi def link splintSpecTag splintAnnKey hi def link splintModifies splintAnnKey hi def link splintRequires splintAnnKey hi def link splintGlobals splintAnnKey hi def link splintGlobitem Constant hi def link splintGlobannot splintAnnKey hi def link splintWarning splintAnnKey hi def link splintModitem Constant hi def link splintIter splintAnnKey hi def link splintConst splintAnnKey hi def link splintAlt splintAnnKey hi def link splintType splintAnnKey hi def link splintGlobalType splintAnnKey hi def link splintMemMgm splintAnnKey hi def link splintAlias splintAnnKey hi def link splintExposure splintAnnKey hi def link splintDefState splintAnnKey hi def link splintGlobState splintAnnKey hi def link splintNullState splintAnnKey hi def link splintNullPred splintAnnKey hi def link splintExit splintAnnKey hi def link splintExec splintAnnKey hi def link splintSef splintAnnKey hi def link splintDecl splintAnnKey hi def link splintCase splintAnnKey hi def link splintBreak splintAnnKey hi def link splintUnreach splintAnnKey hi def link splintSpecFunc splintAnnKey hi def link splintErrSupp splintAnnKey hi def link splintTypeAcc splintAnnKey hi def link splintMacro splintAnnKey hi def link splintSpecType splintAnnKey hi def link splintAnnKey Type hi def link splintError Error let b:current_syntax = "splint" " vim: ts=8 PK�������!�`������vim80/syntax/denyhosts.vimnu�[��������" Vim syntax file " Language: denyhosts configuration file " Previous Maintainer: Nikolai Weibull <now@bitwi.se> " Latest Revision: 2007-06-25 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword denyhostsTodo \ contained \ TODO \ FIXME \ XXX \ NOTE syn case ignore syn match denyhostsComment \ contained \ display \ '#.*' \ contains=denyhostsTodo, \ @Spell syn match denyhostsBegin \ display \ '^' \ nextgroup=@denyhostsSetting, \ denyhostsComment \ skipwhite syn cluster denyhostsSetting \ contains=denyhostsStringSetting, \ denyhostsBooleanSetting, \ denyhostsPathSetting, \ denyhostsNumericSetting, \ denyhostsTimespecSetting, \ denyhostsFormatSetting, \ denyhostsRegexSetting syn keyword denyhostsStringSetting \ contained \ ADMIN_EMAIL \ SMTP_HOST \ SMTP_USERNAME \ SMTP_PASSWORD \ SMTP_FROM \ SMTP_SUBJECT \ BLOCK_SERVICE \ nextgroup=denyhostsStringDelimiter \ skipwhite syn keyword denyhostsBooleanSetting \ contained \ SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS \ HOSTNAME_LOOKUP \ SYSLOG_REPORT \ RESET_ON_SUCCESS \ SYNC_UPLOAD \ SYNC_DOWNLOAD \ ALLOWED_HOSTS_HOSTNAME_LOOKUP \ nextgroup=denyhostsBooleanDelimiter \ skipwhite syn keyword denyhostsPathSetting \ contained \ DAEMON_LOG \ PLUGIN_DENY \ PLUGIN_PURGE \ SECURE_LOG \ LOCK_FILE \ HOSTS_DENY \ WORK_DIR \ nextgroup=denyhostsPathDelimiter \ skipwhite syn keyword denyhostsNumericSetting \ contained \ SYNC_DOWNLOAD_THRESHOLD \ SMTP_PORT \ PURGE_THRESHOLD \ DENY_THRESHOLD_INVALID \ DENY_THRESHOLD_VALID \ DENY_THRESHOLD_ROOT \ DENY_THRESHOLD_RESTRICTED \ nextgroup=denyhostsNumericDelimiter \ skipwhite syn keyword denyhostsTimespecSetting \ contained \ DAEMON_SLEEP \ DAEMON_PURGE \ AGE_RESET_INVALID \ AGE_RESET_VALID \ AGE_RESET_ROOT \ AGE_RESET_RESTRICTED \ SYNC_INTERVAL \ SYNC_DOWNLOAD_RESILIENCY \ PURGE_DENY \ nextgroup=denyhostsTimespecDelimiter \ skipwhite syn keyword denyhostsFormatSetting \ contained \ DAEMON_LOG_TIME_FORMAT \ DAEMON_LOG_MESSAGE_FORMAT \ SMTP_DATE_FORMAT \ nextgroup=denyhostsFormatDelimiter \ skipwhite syn keyword denyhostsRegexSetting \ contained \ SSHD_FORMAT_REGEX \ FAILED_ENTRY_REGEX \ FAILED_ENTRY_REGEX2 \ FAILED_ENTRY_REGEX3 \ FAILED_ENTRY_REGEX4 \ FAILED_ENTRY_REGEX5 \ FAILED_ENTRY_REGEX6 \ FAILED_ENTRY_REGEX7 \ USERDEF_FAILED_ENTRY_REGEX \ SUCCESSFUL_ENTRY_REGEX \ nextgroup=denyhostsRegexDelimiter \ skipwhite syn keyword denyhostURLSetting \ contained \ SYNC_SERVER \ nextgroup=denyhostsURLDelimiter \ skipwhite syn match denyhostsStringDelimiter \ contained \ display \ '[:=]' \ nextgroup=denyhostsString \ skipwhite syn match denyhostsBooleanDelimiter \ contained \ display \ '[:=]' \ nextgroup=@denyhostsBoolean \ skipwhite syn match denyhostsPathDelimiter \ contained \ display \ '[:=]' \ nextgroup=denyhostsPath \ skipwhite syn match denyhostsNumericDelimiter \ contained \ display \ '[:=]' \ nextgroup=denyhostsNumber \ skipwhite syn match denyhostsTimespecDelimiter \ contained \ display \ '[:=]' \ nextgroup=denyhostsTimespec \ skipwhite syn match denyhostsFormatDelimiter \ contained \ display \ '[:=]' \ nextgroup=denyhostsFormat \ skipwhite syn match denyhostsRegexDelimiter \ contained \ display \ '[:=]' \ nextgroup=denyhostsRegex \ skipwhite syn match denyhostsURLDelimiter \ contained \ display \ '[:=]' \ nextgroup=denyhostsURL \ skipwhite syn match denyhostsString \ contained \ display \ '.\+' syn cluster denyhostsBoolean \ contains=denyhostsBooleanTrue, \ denyhostsBooleanFalse syn match denyhostsBooleanFalse \ contained \ display \ '.\+' syn match denyhostsBooleanTrue \ contained \ display \ '\s*\%(1\|t\%(rue\)\=\|y\%(es\)\=\)\>\s*$' syn match denyhostsPath \ contained \ display \ '.\+' syn match denyhostsNumber \ contained \ display \ '\d\+\>' syn match denyhostsTimespec \ contained \ display \ '\d\+[mhdwy]\>' syn match denyhostsFormat \ contained \ display \ '.\+' \ contains=denyhostsFormattingExpandos syn match denyhostsFormattingExpandos \ contained \ display \ '%.' syn match denyhostsRegex \ contained \ display \ '.\+' " TODO: Perhaps come up with a better regex here? There should really be a " library for these kinds of generic regexes, that is, URLs, mail addresses, … syn match denyhostsURL \ contained \ display \ '.\+' hi def link denyhostsTodo Todo hi def link denyhostsComment Comment hi def link denyhostsSetting Keyword hi def link denyhostsStringSetting denyhostsSetting hi def link denyhostsBooleanSetting denyhostsSetting hi def link denyhostsPathSetting denyhostsSetting hi def link denyhostsNumericSetting denyhostsSetting hi def link denyhostsTimespecSetting denyhostsSetting hi def link denyhostsFormatSetting denyhostsSetting hi def link denyhostsRegexSetting denyhostsSetting hi def link denyhostURLSetting denyhostsSetting hi def link denyhostsDelimiter Normal hi def link denyhostsStringDelimiter denyhostsDelimiter hi def link denyhostsBooleanDelimiter denyhostsDelimiter hi def link denyhostsPathDelimiter denyhostsDelimiter hi def link denyhostsNumericDelimiter denyhostsDelimiter hi def link denyhostsTimespecDelimiter denyhostsDelimiter hi def link denyhostsFormatDelimiter denyhostsDelimiter hi def link denyhostsRegexDelimiter denyhostsDelimiter hi def link denyhostsURLDelimiter denyhostsDelimiter hi def link denyhostsString String if exists('g:syntax_booleans_simple') || exists('b:syntax_booleans_simple') hi def link denyhostsBoolean Boolean hi def link denyhostsBooleanFalse denyhostsBoolean hi def link denyhostsBooleanTrue denyhostsBoolean else hi def denyhostsBooleanTrue term=bold ctermfg=Green guifg=Green hi def denyhostsBooleanFalse ctermfg=Red guifg=Red endif hi def link denyhostsPath String hi def link denyhostsNumber Number hi def link denyhostsTimespec Number hi def link denyhostsFormat String hi def link denyhostsFormattingExpandos Special hi def link denyhostsRegex String hi def link denyhostsURL String let b:current_syntax = "denyhosts" let &cpo = s:cpo_save unlet s:cpo_save PK�������!�[��������vim80/syntax/dns.vimnu�[��������" Vim syntax file " Language: DNS/BIND Zone File " This has been replaced by the bindzone syntax :runtime! syntax/bindzone.vim PK�������!�buB �� ����vim80/syntax/dot.vimnu�[��������" Vim syntax file " Language: Dot " Filenames: *.dot " Maintainer: Markus Mottl <markus.mottl@gmail.com> " URL: http://www.ocaml.info/vim/syntax/dot.vim " Last Change: 2011 May 17 - improved identifier matching + two new keywords " 2001 May 04 - initial version " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Errors syn match dotParErr ")" syn match dotBrackErr "]" syn match dotBraceErr "}" " Enclosing delimiters syn region dotEncl transparent matchgroup=dotParEncl start="(" matchgroup=dotParEncl end=")" contains=ALLBUT,dotParErr syn region dotEncl transparent matchgroup=dotBrackEncl start="\[" matchgroup=dotBrackEncl end="\]" contains=ALLBUT,dotBrackErr syn region dotEncl transparent matchgroup=dotBraceEncl start="{" matchgroup=dotBraceEncl end="}" contains=ALLBUT,dotBraceErr " Comments syn region dotComment start="//" end="$" contains=dotComment,dotTodo syn region dotComment start="/\*" end="\*/" contains=dotComment,dotTodo syn keyword dotTodo contained TODO FIXME XXX " Strings syn region dotString start=+"+ skip=+\\\\\|\\"+ end=+"+ " General keywords syn keyword dotKeyword digraph node edge subgraph " Graph attributes syn keyword dotType center layers margin mclimit name nodesep nslimit syn keyword dotType ordering page pagedir rank rankdir ranksep ratio syn keyword dotType rotate size " Node attributes syn keyword dotType distortion fillcolor fontcolor fontname fontsize syn keyword dotType height layer orientation peripheries regular syn keyword dotType shape shapefile sides skew width " Edge attributes syn keyword dotType arrowhead arrowsize arrowtail constraint decorateP syn keyword dotType dir headclip headlabel headport labelangle labeldistance syn keyword dotType labelfontcolor labelfontname labelfontsize syn keyword dotType minlen port_label_distance samehead sametail syn keyword dotType tailclip taillabel tailport weight " Shared attributes (graphs, nodes, edges) syn keyword dotType color " Shared attributes (graphs and edges) syn keyword dotType bgcolor label URL " Shared attributes (nodes and edges) syn keyword dotType fontcolor fontname fontsize layer style " Special chars syn match dotKeyChar "=" syn match dotKeyChar ";" syn match dotKeyChar "->" " Identifier syn match dotIdentifier /\<\w\+\(:\w\+\)\?\>/ " Synchronization syn sync minlines=50 syn sync maxlines=500 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link dotParErr Error hi def link dotBraceErr Error hi def link dotBrackErr Error hi def link dotComment Comment hi def link dotTodo Todo hi def link dotParEncl Keyword hi def link dotBrackEncl Keyword hi def link dotBraceEncl Keyword hi def link dotKeyword Keyword hi def link dotType Type hi def link dotKeyChar Keyword hi def link dotString String hi def link dotIdentifier Identifier let b:current_syntax = "dot" " vim: ts=8 PK�������!�>i> �� ����vim80/syntax/pic.vimnu�[��������" Vim syntax file " Language: PIC16F84 Assembler (Microchip's microcontroller) " Maintainer: Aleksandar Veselinovic <aleksa@cs.cmu.com> " Last Change: 2003 May 11 " URL: http://galeb.etf.bg.ac.yu/~alexa/vim/syntax/pic.vim " Revision: 1.01 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case match syn keyword picTodo NOTE TODO XXX contained syn case ignore syn match picIdentifier "[a-z_$][a-z0-9_$]*" syn match picLabel "^[A-Z_$][A-Z0-9_$]*" syn match picLabel "^[A-Z_$][A-Z0-9_$]*:"me=e-1 syn match picASCII "A\='.'" syn match picBinary "B'[0-1]\+'" syn match picDecimal "D'\d\+'" syn match picDecimal "\d\+" syn match picHexadecimal "0x\x\+" syn match picHexadecimal "H'\x\+'" syn match picHexadecimal "[0-9]\x*h" syn match picOctal "O'[0-7]\o*'" syn match picComment ";.*" contains=picTodo syn region picString start=+"+ end=+"+ syn keyword picRegister INDF TMR0 PCL STATUS FSR PORTA PORTB syn keyword picRegister EEDATA EEADR PCLATH INTCON INDF OPTION_REG PCL syn keyword picRegister FSR TRISA TRISB EECON1 EECON2 INTCON OPTION " Register --- bits " STATUS syn keyword picRegisterPart IRP RP1 RP0 TO PD Z DC C " PORTA syn keyword picRegisterPart T0CKI syn match picRegisterPart "RA[0-4]" " PORTB syn keyword picRegisterPart INT syn match picRegisterPart "RB[0-7]" " INTCON syn keyword picRegisterPart GIE EEIE T0IE INTE RBIE T0IF INTF RBIF " OPTION syn keyword picRegisterPart RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 " EECON2 syn keyword picRegisterPart EEIF WRERR WREN WR RD " INTCON syn keyword picRegisterPart GIE EEIE T0IE INTE RBIE T0IF INTF RBIF " OpCodes... syn keyword picOpcode ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ syn keyword picOpcode IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF syn keyword picOpcode BCF BSF BTFSC BTFSS syn keyword picOpcode ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE syn keyword picOpcode RETLW RETURN SLEEP SUBLW XORLW syn keyword picOpcode GOTO " Directives syn keyword picDirective __BADRAM BANKISEL BANKSEL CBLOCK CODE __CONFIG syn keyword picDirective CONSTANT DATA DB DE DT DW ELSE END ENDC syn keyword picDirective ENDIF ENDM ENDW EQU ERROR ERRORLEVEL EXITM EXPAND syn keyword picDirective EXTERN FILL GLOBAL IDATA __IDLOCS IF IFDEF IFNDEF syn keyword picDirective INCLUDE LIST LOCAL MACRO __MAXRAM MESSG NOEXPAND syn keyword picDirective NOLIST ORG PAGE PAGESEL PROCESSOR RADIX RES SET syn keyword picDirective SPACE SUBTITLE TITLE UDATA UDATA_OVR UDATA_SHR syn keyword picDirective VARIABLE WHILE INCLUDE syn match picDirective "#\=UNDEFINE" syn match picDirective "#\=INCLUDE" syn match picDirective "#\=DEFINE" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link picTodo Todo hi def link picComment Comment hi def link picDirective Statement hi def link picLabel Label hi def link picString String "hi def link picOpcode Keyword "hi def link picRegister Structure "hi def link picRegisterPart Special hi def link picASCII String hi def link picBinary Number hi def link picDecimal Number hi def link picHexadecimal Number hi def link picOctal Number hi def link picIdentifier Identifier let b:current_syntax = "pic" " vim: ts=8 PK�������!�Pd ������vim80/syntax/pilrc.vimnu�[��������" Vim syntax file " Language: pilrc - a resource compiler for Palm OS development " Maintainer: Brian Schau <brian@schau.com> " Last change: 2003 May 11 " Available on: http://www.schau.com/pilrcvim/pilrc.vim " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " Notes: TRANSPARENT, FONT and FONT ID are defined in the specials " section below. Beware of the order of the specials! " Look in the syntax.txt and usr_27.txt files in vim\vim{version}\doc " directory for regexps etc. " Keywords - basic syn keyword pilrcKeyword ALERT APPLICATION APPLICATIONICONNAME AREA syn keyword pilrcKeyword BITMAP BITMAPCOLOR BITMAPCOLOR16 BITMAPCOLOR16K syn keyword pilrcKeyword BITMAPFAMILY BITMAPFAMILYEX BITMAPFAMILYSPECIAL syn keyword pilrcKeyword BITMAPGREY BITMAPGREY16 BITMAPSCREENFAMILY syn keyword pilrcKeyword BOOTSCREENFAMILY BUTTON BUTTONS BYTELIST syn keyword pilrcKeyword CATEGORIES CHECKBOX COUNTRYLOCALISATION syn keyword pilrcKeyword DATA syn keyword pilrcKeyword FEATURE FIELD FONTINDEX FORM FORMBITMAP syn keyword pilrcKeyword GADGET GENERATEHEADER syn keyword pilrcKeyword GRAFFITIINPUTAREA GRAFFITISTATEINDICATOR syn keyword pilrcKeyword HEX syn keyword pilrcKeyword ICON ICONFAMILY ICONFAMILYEX INTEGER syn keyword pilrcKeyword KEYBOARD syn keyword pilrcKeyword LABEL LAUNCHERCATEGORY LIST LONGWORDLIST syn keyword pilrcKeyword MENU MENUITEM MESSAGE MIDI syn keyword pilrcKeyword PALETTETABLE POPUPLIST POPUPTRIGGER syn keyword pilrcKeyword PULLDOWN PUSHBUTTON syn keyword pilrcKeyword REPEATBUTTON RESETAUTOID syn keyword pilrcKeyword SCROLLBAR SELECTORTRIGGER SLIDER SMALLICON syn keyword pilrcKeyword SMALLICONFAMILY SMALLICONFAMILYEX STRING STRINGTABLE syn keyword pilrcKeyword TABLE TITLE TRANSLATION TRAP syn keyword pilrcKeyword VERSION syn keyword pilrcKeyword WORDLIST " Types syn keyword pilrcType AT AUTOSHIFT syn keyword pilrcType BACKGROUNDID BITMAPID BOLDFRAME BPP syn keyword pilrcType CHECKED COLORTABLE COLUMNS COLUMNWIDTHS COMPRESS syn keyword pilrcType COMPRESSBEST COMPRESSPACKBITS COMPRESSRLE COMPRESSSCANLINE syn keyword pilrcType CONFIRMATION COUNTRY CREATOR CURRENCYDECIMALPLACES syn keyword pilrcType CURRENCYNAME CURRENCYSYMBOL CURRENCYUNIQUESYMBOL syn keyword pilrcType DATEFORMAT DAYLIGHTSAVINGS DEFAULTBTNID DEFAULTBUTTON syn keyword pilrcType DENSITY DISABLED DYNAMICSIZE syn keyword pilrcType EDITABLE ENTRY ERROR EXTENDED syn keyword pilrcType FEEDBACK FILE FONTID FORCECOMPRESS FRAME syn keyword pilrcType GRAFFITI GRAPHICAL GROUP syn keyword pilrcType HASSCROLLBAR HELPID syn keyword pilrcType ID INDEX INFORMATION syn keyword pilrcType KEYDOWNCHR KEYDOWNKEYCODE KEYDOWNMODIFIERS syn keyword pilrcType LANGUAGE LEFTALIGN LEFTANCHOR LONGDATEFORMAT syn keyword pilrcType MAX MAXCHARS MEASUREMENTSYSTEM MENUID MIN LOCALE syn keyword pilrcType MINUTESWESTOFGMT MODAL MULTIPLELINES syn keyword pilrcType NAME NOCOLORTABLE NOCOMPRESS NOFRAME NONEDITABLE syn keyword pilrcType NONEXTENDED NONUSABLE NOSAVEBEHIND NUMBER NUMBERFORMAT syn keyword pilrcType NUMERIC syn keyword pilrcType PAGESIZE syn keyword pilrcType RECTFRAME RIGHTALIGN RIGHTANCHOR ROWS syn keyword pilrcType SAVEBEHIND SEARCH SCREEN SELECTEDBITMAPID SINGLELINE syn keyword pilrcType THUMBID TRANSPARENTINDEX TIMEFORMAT syn keyword pilrcType UNDERLINED USABLE syn keyword pilrcType VALUE VERTICAL VISIBLEITEMS syn keyword pilrcType WARNING WEEKSTARTDAY " Country syn keyword pilrcCountry Australia Austria Belgium Brazil Canada Denmark syn keyword pilrcCountry Finland France Germany HongKong Iceland Indian syn keyword pilrcCountry Indonesia Ireland Italy Japan Korea Luxembourg Malaysia syn keyword pilrcCountry Mexico Netherlands NewZealand Norway Philippines syn keyword pilrcCountry RepChina Singapore Spain Sweden Switzerland Thailand syn keyword pilrcCountry Taiwan UnitedKingdom UnitedStates " Language syn keyword pilrcLanguage English French German Italian Japanese Spanish " String syn match pilrcString "\"[^"]*\"" " Number syn match pilrcNumber "\<0x\x\+\>" syn match pilrcNumber "\<\d\+\>" " Comment syn region pilrcComment start="/\*" end="\*/" syn region pilrcComment start="//" end="$" " Constants syn keyword pilrcConstant AUTO AUTOID BOTTOM CENTER PREVBOTTOM PREVHEIGHT syn keyword pilrcConstant PREVLEFT PREVRIGHT PREVTOP PREVWIDTH RIGHT syn keyword pilrcConstant SEPARATOR " Identifier syn match pilrcIdentifier "\<\h\w*\>" " Specials syn match pilrcType "\<FONT\>" syn match pilrcKeyword "\<FONT\>\s*\<ID\>" syn match pilrcType "\<TRANSPARENT\>" " Function syn keyword pilrcFunction BEGIN END " Include syn match pilrcInclude "\#include" syn match pilrcInclude "\#define" syn keyword pilrcInclude equ syn keyword pilrcInclude package syn region pilrcInclude start="public class" end="}" syn sync ccomment pilrcComment " The default methods for highlighting hi def link pilrcKeyword Statement hi def link pilrcType Type hi def link pilrcError Error hi def link pilrcCountry SpecialChar hi def link pilrcLanguage SpecialChar hi def link pilrcString SpecialChar hi def link pilrcNumber Number hi def link pilrcComment Comment hi def link pilrcConstant Constant hi def link pilrcFunction Function hi def link pilrcInclude SpecialChar hi def link pilrcIdentifier Number let b:current_syntax = "pilrc" PK�������!� (e+ ��+ ����vim80/syntax/simula.vimnu�[��������" Vim syntax file " Language: Simula " Maintainer: Haakon Riiser <hakonrk@fys.uio.no> " URL: http://folk.uio.no/hakonrk/vim/syntax/simula.vim " Last Change: 2001 May 15 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " No case sensitivity in Simula syn case ignore syn match simulaComment "^%.*$" contains=simulaTodo syn region simulaComment start="!\|\<comment\>" end=";" contains=simulaTodo " Text between the keyword 'end' and either a semicolon or one of the " keywords 'end', 'else', 'when' or 'otherwise' is also a comment syn region simulaComment start="\<end\>"lc=3 matchgroup=Statement end=";\|\<\(end\|else\|when\|otherwise\)\>" syn match simulaCharError "'.\{-2,}'" syn match simulaCharacter "'.'" syn match simulaCharacter "'!\d\{-}!'" contains=simulaSpecialChar syn match simulaString '".\{-}"' contains=simulaSpecialChar,simulaTodo syn keyword simulaBoolean true false syn keyword simulaCompound begin end syn keyword simulaConditional else if otherwise then until when syn keyword simulaConstant none notext syn keyword simulaFunction procedure syn keyword simulaOperator eq eqv ge gt imp in is le lt ne new not qua syn keyword simulaRepeat while for syn keyword simulaReserved activate after at before delay go goto label prior reactivate switch to syn keyword simulaStatement do inner inspect step this syn keyword simulaStorageClass external hidden name protected value syn keyword simulaStructure class syn keyword simulaType array boolean character integer long real short text virtual syn match simulaAssigned "\<\h\w*\s*\((.*)\)\=\s*:\(=\|-\)"me=e-2 syn match simulaOperator "[&:=<>+\-*/]" syn match simulaOperator "\<and\(\s\+then\)\=\>" syn match simulaOperator "\<or\(\s\+else\)\=\>" syn match simulaReferenceType "\<ref\s*(.\{-})" syn match simulaSemicolon ";" syn match simulaSpecial "[(),.]" syn match simulaSpecialCharErr "!\d\{-4,}!" contained syn match simulaSpecialCharErr "!!" contained syn match simulaSpecialChar "!\d\{-}!" contains=simulaSpecialCharErr contained syn match simulaTodo "xxx\+" contained " Integer number (or float without `.') syn match simulaNumber "-\=\<\d\+\>" " Real with optional exponent syn match simulaReal "-\=\<\d\+\(\.\d\+\)\=\(&&\=[+-]\=\d\+\)\=\>" " Real starting with a `.', optional exponent syn match simulaReal "-\=\.\d\+\(&&\=[+-]\=\d\+\)\=\>" hi def link simulaAssigned Identifier hi def link simulaBoolean Boolean hi def link simulaCharacter Character hi def link simulaCharError Error hi def link simulaComment Comment hi def link simulaCompound Statement hi def link simulaConditional Conditional hi def link simulaConstant Constant hi def link simulaFunction Function hi def link simulaNumber Number hi def link simulaOperator Operator hi def link simulaReal Float hi def link simulaReferenceType Type hi def link simulaRepeat Repeat hi def link simulaReserved Error hi def link simulaSemicolon Statement hi def link simulaSpecial Special hi def link simulaSpecialChar SpecialChar hi def link simulaSpecialCharErr Error hi def link simulaStatement Statement hi def link simulaStorageClass StorageClass hi def link simulaString String hi def link simulaStructure Structure hi def link simulaTodo Todo hi def link simulaType Type let b:current_syntax = "simula" " vim: sts=4 sw=4 ts=8 PK�������!�BPM��������vim80/syntax/docbkxml.vimnu�[��������" Vim syntax file " Language: DocBook XML " Maintainer: Johannes Zellner <johannes@zellner.org> " Last Change: Sam, 07 Sep 2002 17:20:12 CEST let b:docbk_type="xml" runtime syntax/docbk.vim PK�������!�ĸ֕]-��]-����vim80/syntax/virata.vimnu�[��������" Vim syntax file " Language: Virata AConfig Configuration Script " Maintainer: Manuel M.H. Stol <mmh.stol@gmx.net> " Last Change: 2003 May 11 " Vim URL: http://www.vim.org/lang.html " Virata URL: http://www.globespanvirata.com/ " Virata AConfig Configuration Script syntax " Can be detected by: 1) Extension .hw, .sw, .pkg and .module " 2) The file name pattern "mk.*\.cfg" " 3) The string "Virata" in the first 5 lines " Setup Syntax: " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Virata syntax is case insensitive (mostly) syn case ignore " Comments: " Virata comments start with %, but % is not a keyword character syn region virataComment start="^%" start="\s%"lc=1 keepend end="$" contains=@virataGrpInComments syn region virataSpclComment start="^%%" start="\s%%"lc=1 keepend end="$" contains=@virataGrpInComments syn keyword virataInCommentTodo contained TODO FIXME XXX[XXXXX] REVIEW TBD syn cluster virataGrpInComments contains=virataInCommentTodo syn cluster virataGrpComments contains=@virataGrpInComments,virataComment,virataSpclComment " Constants: syn match virataStringError +["]+ syn region virataString start=+"+ skip=+\(\\\\\|\\"\)+ end=+"+ oneline contains=virataSpclCharError,virataSpclChar,@virataGrpDefSubsts syn match virataCharacter +'[^']\{-}'+ contains=virataSpclCharError,virataSpclChar syn match virataSpclChar contained +\\\(x\x\+\|\o\{1,3}\|['\"?\\abefnrtv]\)+ syn match virataNumberError "\<\d\{-1,}\I\{-1,}\>" syn match virataNumberError "\<0x\x*\X\x*\>" syn match virataNumberError "\<\d\+\.\d*\(e[+-]\=\d\+\)\=\>" syn match virataDecNumber "\<\d\+U\=L\=\>" syn match virataHexNumber "\<0x\x\+U\=L\=\>" syn match virataSizeNumber "\<\d\+[BKM]\>"he=e-1 syn match virataSizeNumber "\<\d\+[KM]B\>"he=e-2 syn cluster virataGrpNumbers contains=virataNumberError,virataDecNumber,virataHexNumber,virataSizeNumber syn cluster virataGrpConstants contains=@virataGrpNumbers,virataStringError,virataString,virataCharacter,virataSpclChar " Identifiers: syn match virataIdentError contained "\<\D\S*\>" syn match virataIdentifier contained "\<\I\i\{-}\(\-\i\{-1,}\)*\>" contains=@virataGrpDefSubsts syn match virataFileIdent contained "\F\f*" contains=@virataGrpDefSubsts syn cluster virataGrpIdents contains=virataIdentifier,virataIdentError syn cluster virataGrpFileIdents contains=virataFileIdent,virataIdentError " Statements: syn match virataStatement "^\s*Config\(\(/Kernel\)\=\.\(hs\=\|s\)\)\=\>" syn match virataStatement "^\s*Config\s\+\I\i\{-}\(\-\i\{-1,}\)*\.\(hs\=\|s\)\>" syn match virataStatement "^\s*Make\.\I\i\{-}\(\-\i\{-1}\)*\>" skipwhite nextgroup=@virataGrpIdents syn match virataStatement "^\s*Make\.c\(at\)\=++\s"me=e-1 skipwhite nextgroup=@virataGrpIdents syn match virataStatement "^\s*\(Architecture\|GetEnv\|Reserved\|\(Un\)\=Define\|Version\)\>" skipwhite nextgroup=@virataGrpIdents syn match virataStatement "^\s*\(Hardware\|ModuleSource\|\(Release\)\=Path\|Software\)\>" skipwhite nextgroup=@virataGrpFileIdents syn match virataStatement "^\s*\(DefaultPri\|Hydrogen\)\>" skipwhite nextgroup=virataDecNumber,virataNumberError syn match virataStatement "^\s*\(NoInit\|PCI\|SysLink\)\>" syn match virataStatement "^\s*Allow\s\+\(ModuleConfig\)\>" syn match virataStatement "^\s*NoWarn\s\+\(Export\|Parse\=able\|Relative]\)\>" syn match virataStatement "^\s*Debug\s\+O\(ff\|n\)\>" " Import (Package <exec>|Module <name> from <dir>) syn region virataImportDef transparent matchgroup=virataStatement start="^\s*Import\>" keepend end="$" contains=virataInImport,virataModuleDef,virataNumberError,virataStringError,@virataGrpDefSubsts syn match virataInImport contained "\<\(Module\|Package\|from\)\>" skipwhite nextgroup=@virataGrpFileIdents " Export (Header <header file>|SLibrary <obj file>) syn region virataExportDef transparent matchgroup=virataStatement start="^\s*Export\>" keepend end="$" contains=virataInExport,virataNumberError,virataStringError,@virataGrpDefSubsts syn match virataInExport contained "\<\(Header\|[SU]Library\)\>" skipwhite nextgroup=@virataGrpFileIdents " Process <name> is <dir/exec> syn region virataProcessDef transparent matchgroup=virataStatement start="^\s*Process\>" keepend end="$" contains=virataInProcess,virataInExec,virataNumberError,virataStringError,@virataGrpDefSubsts,@virataGrpIdents syn match virataInProcess contained "\<is\>" " Instance <name> of <module> syn region virataInstanceDef transparent matchgroup=virataStatement start="^\s*Instance\>" keepend end="$" contains=virataInInstance,virataNumberError,virataStringError,@virataGrpDefSubsts,@virataGrpIdents syn match virataInInstance contained "\<of\>" " Module <name> from <dir> syn region virataModuleDef transparent matchgroup=virataStatement start="^\s*\(Package\|Module\)\>" keepend end="$" contains=virataInModule,virataNumberError,virataStringError,@virataGrpDefSubsts syn match virataInModule contained "^\s*Package\>"hs=e-7 skipwhite nextgroup=@virataGrpIdents syn match virataInModule contained "^\s*Module\>"hs=e-6 skipwhite nextgroup=@virataGrpIdents syn match virataInModule contained "\<from\>" skipwhite nextgroup=@virataGrpFileIdents " Colour <name> from <dir> syn region virataColourDef transparent matchgroup=virataStatement start="^\s*Colour\>" keepend end="$" contains=virataInColour,virataNumberError,virataStringError,@virataGrpDefSubsts syn match virataInColour contained "^\s*Colour\>"hs=e-6 skipwhite nextgroup=@virataGrpIdents syn match virataInColour contained "\<from\>" skipwhite nextgroup=@virataGrpFileIdents " Link {<link cmds>} " Object {Executable [<ExecOptions>]} syn match virataStatement "^\s*\(Link\|Object\)" " Executable <name> [<ExecOptions>] syn region virataExecDef transparent matchgroup=virataStatement start="^\s*Executable\>" keepend end="$" contains=virataInExec,virataNumberError,virataStringError syn match virataInExec contained "^\s*Executable\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpIdents syn match virataInExec contained "\<\(epilogue\|pro\(logue\|cess\)\|qhandler\)\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpIdents syn match virataInExec contained "\<\(priority\|stack\)\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpNumbers " Message <name> {<msg format>} " MessageId <number> syn match virataStatement "^\s*Message\(Id\)\=\>" skipwhite nextgroup=@virataGrpNumbers " MakeRule <make suffix=file> {<make cmds>} syn region virataMakeDef transparent matchgroup=virataStatement start="^\s*MakeRule\>" keepend end="$" contains=virataInMake,@virataGrpDefSubsts syn case match syn match virataInMake contained "\<N\>" syn case ignore " (Append|Edit|Copy)Rule <make suffix=file> <subst cmd> syn match virataStatement "^\s*\(Append\|Copy\|Edit\)Rule\>" " AlterRules in <file> <subst cmd> syn region virataAlterDef transparent matchgroup=virataStatement start="^\s*AlterRules\>" keepend end="$" contains=virataInAlter,@virataGrpDefSubsts syn match virataInAlter contained "\<in\>" skipwhite nextgroup=@virataGrpIdents " Clustering syn cluster virataGrpInStatmnts contains=virataInImport,virataInExport,virataInExec,virataInProcess,virataInAlter,virataInInstance,virataInModule,virataInColour syn cluster virataGrpStatements contains=@virataGrpInStatmnts,virataStatement,virataImportDef,virataExportDef,virataExecDef,virataProcessDef,virataAlterDef,virataInstanceDef,virataModuleDef,virataColourDef " MkFlash.Cfg File Statements: syn region virataCfgFileDef transparent matchgroup=virataCfgStatement start="^\s*Dir\>" start="^\s*\a\{-}File\>" start="^\s*OutputFile\d\d\=\>" start="^\s*\a\w\{-}[NP]PFile\>" keepend end="$" contains=@virataGrpFileIdents syn region virataCfgSizeDef transparent matchgroup=virataCfgStatement start="^\s*\a\{-}Size\>" start="^\s*ConfigInfo\>" keepend end="$" contains=@virataGrpNumbers,@virataGrpDefSubsts,virataIdentError syn region virataCfgNumberDef transparent matchgroup=virataCfgStatement start="^\s*FlashchipNum\(b\(er\=\)\=\)\=\>" start="^\s*Granularity\>" keepend end="$" contains=@virataGrpNumbers,@virataGrpDefSubsts syn region virataCfgMacAddrDef transparent matchgroup=virataCfgStatement start="^\s*MacAddress\>" keepend end="$" contains=virataNumberError,virataStringError,virataIdentError,virataInMacAddr,@virataGrpDefSubsts syn match virataInMacAddr contained "\x[:]\x\{1,2}\>"lc=2 syn match virataInMacAddr contained "\s\x\{1,2}[:]\x"lc=1,me=e-1,he=e-2 nextgroup=virataInMacAddr syn match virataCfgStatement "^\s*Target\>" skipwhite nextgroup=@virataGrpIdents syn cluster virataGrpCfgs contains=virataCfgStatement,virataCfgFileDef,virataCfgSizeDef,virataCfgNumberDef,virataCfgMacAddrDef,virataInMacAddr " PreProcessor Instructions: " Defines syn match virataDefine "^\s*\(Un\)\=Set\>" skipwhite nextgroup=@virataGrpIdents syn match virataInclude "^\s*Include\>" skipwhite nextgroup=@virataGrpFileIdents syn match virataDefSubstError "[^$]\$"lc=1 syn match virataDefSubstError "\$\(\w\|{\(.\{-}}\)\=\)" syn case match syn match virataDefSubst "\$\(\d\|[DINORS]\|{\I\i\{-}\(\-\i\{-1,}\)*}\)" syn case ignore " Conditionals syn cluster virataGrpCntnPreCon contains=ALLBUT,@virataGrpInComments,@virataGrpFileIdents,@virataGrpInStatmnts syn region virataPreConDef transparent matchgroup=virataPreCondit start="^\s*If\>" end="^\s*Endif\>" contains=@virataGrpCntnPreCon syn match virataPreCondit contained "^\s*Else\(\s\+If\)\=\>" syn region virataPreConDef transparent matchgroup=virataPreCondit start="^\s*ForEach\>" end="^\s*Done\>" contains=@virataGrpCntnPreCon " Pre-Processors syn region virataPreProc start="^\s*Error\>" start="^\s*Warning\>" oneline end="$" contains=@virataGrpConstants,@virataGrpDefSubsts syn cluster virataGrpDefSubsts contains=virataDefSubstError,virataDefSubst syn cluster virataGrpPreProcs contains=@virataGrpDefSubsts,virataDefine,virataInclude,virataPreConDef,virataPreCondit,virataPreProc " Synchronize Syntax: syn sync clear syn sync minlines=50 "for multiple region nesting " Define the default highlighting. " Only when an item doesn't have highlighting yet " Sub Links: hi def link virataDefSubstError virataPreProcError hi def link virataDefSubst virataPreProc hi def link virataInAlter virataOperator hi def link virataInExec virataOperator hi def link virataInExport virataOperator hi def link virataInImport virataOperator hi def link virataInInstance virataOperator hi def link virataInMake virataOperator hi def link virataInModule virataOperator hi def link virataInProcess virataOperator hi def link virataInMacAddr virataHexNumber " Comment Group: hi def link virataComment Comment hi def link virataSpclComment SpecialComment hi def link virataInCommentTodo Todo " Constant Group: hi def link virataString String hi def link virataStringError Error hi def link virataCharacter Character hi def link virataSpclChar Special hi def link virataDecNumber Number hi def link virataHexNumber Number hi def link virataSizeNumber Number hi def link virataNumberError Error " Identifier Group: hi def link virataIdentError Error " PreProc Group: hi def link virataPreProc PreProc hi def link virataDefine Define hi def link virataInclude Include hi def link virataPreCondit PreCondit hi def link virataPreProcError Error hi def link virataPreProcWarn Todo " Directive Group: hi def link virataStatement Statement hi def link virataCfgStatement Statement hi def link virataOperator Operator hi def link virataDirective Keyword let b:current_syntax = "virata" " vim:ts=8:sw=2:noet: PK�������!�ԞA��A����vim80/syntax/cl.vimnu�[��������" Vim syntax file " Language: CL " (pronounced alphabetically: "Cee-El". " CL stands for Clever Language, " but the language is CL, not "Clever". " CL was created by Multibase, http://www.mbase.com.au) " Filename extensions: *.ent " *.eni " Maintainer: Philip Uren <philuSPAX@ieee.org> Remove SPAX spam block " Version: 6 " Last Change: Mar 06 2013 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,_,- syn case ignore syn sync lines=300 "If/else/elsif/endif and while/wend mismatch errors syn match clifError "\<wend\>" syn match clifError "\<elsif\>" syn match clifError "\<else\>" syn match clifError "\<endif\>" syn match clSpaceError "\s\+$" " If and while regions syn region clLoop transparent matchgroup=clWhile start="\<while\>" matchgroup=clWhile end="\<wend\>" contains=ALLBUT,clBreak,clProcedure syn region clIf transparent matchgroup=clConditional start="\<if\>" matchgroup=clConditional end="\<endif\>" contains=ALLBUT,clBreak,clProcedure " Make those TODO notes and debugging stand out! syn keyword clTodo contained TODO BUG DEBUG FIX syn match clNeedsWork contained "NEED[S]*\s\s*WORK" syn keyword clDebug contained debug syn match clComment "#.*$" contains=clTodo,clNeedsWork,@Spell syn region clProcedure oneline start="^\s*[{}]" end="$" syn match clInclude "^\s*include\s.*" " We don't put "debug" in the clSetOptions; " we contain it in clSet so we can make it stand out. syn keyword clSetOptions transparent aauto abort align convert E fill fnum goback hangup justify null_exit output rauto rawprint rawdisplay repeat skip tab trim syn match clSet "^\s*set\s.*" contains=clSetOptions,clDebug syn match clPreProc "^\s*#P.*" syn keyword clConditional else elsif syn keyword clWhile continue endloop " 'break' needs to be a region so we can sync on it above. syn region clBreak oneline start="^\s*break" end="$" syn match clOperator "[!;|)(:.><+*=-]" syn match clNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" syn region clString matchgroup=clQuote start=+"+ end=+"+ skip=+\\"+ contains=@Spell syn region clString matchgroup=clQuote start=+'+ end=+'+ skip=+\\'+ contains=@Spell syn keyword clReserved ERROR EXIT INTERRUPT LOCKED LREPLY MODE MCOL MLINE MREPLY NULL REPLY V1 V2 V3 V4 V5 V6 V7 V8 V9 ZERO BYPASS GOING_BACK AAUTO ABORT ABORT ALIGN BIGE CONVERT FNUM GOBACK HANGUP JUSTIFY NEXIT OUTPUT RAUTO RAWDISPLAY RAWPRINT REPEAT SKIP TAB TRIM LCOUNT PCOUNT PLINES SLINES SCOLS MATCH LMATCH syn keyword clFunction asc asize chr name random slen srandom day getarg getcgi getenv lcase scat sconv sdel skey smult srep substr sword trim ucase match syn keyword clStatement clear clear_eol clear_eos close copy create unique with where empty define define ldefine delay_form delete escape exit_block exit_do exit_process field fork format get getfile getnext getprev goto head join maintain message no_join on_eop on_key on_exit on_delete openin openout openapp pause popenin popenout popenio print put range read redisplay refresh restart_block screen select sleep text unlock write and not or do " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link clifError Error hi def link clSpaceError Error hi def link clWhile Repeat hi def link clConditional Conditional hi def link clDebug Debug hi def link clNeedsWork Todo hi def link clTodo Todo hi def link clComment Comment hi def link clProcedure Procedure hi def link clBreak Procedure hi def link clInclude Include hi def link clSetOption Statement hi def link clSet Identifier hi def link clPreProc PreProc hi def link clOperator Operator hi def link clNumber Number hi def link clString String hi def link clQuote Delimiter hi def link clReserved Identifier hi def link clFunction Function hi def link clStatement Statement let b:current_syntax = "cl" " vim: ts=8 sw=8 PK�������!�4GQ������vim80/syntax/jgraph.vimnu�[��������" Vim syntax file " Language: jgraph (graph plotting utility) " Maintainer: Jonas Munsin jmunsin@iki.fi " Last Change: 2003 May 04 " this syntax file is not yet complete " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case match " comments syn region jgraphComment start="(\* " end=" \*)" syn keyword jgraphCmd newcurve newgraph marktype syn keyword jgraphType xaxis yaxis syn keyword jgraphType circle box diamond triangle x cross ellipse syn keyword jgraphType xbar ybar text postscript eps none general syn keyword jgraphType solid dotted dashed longdash dotdash dodotdash syn keyword jgraphType dotdotdashdash pts "integer number, or floating point number without a dot. - or no - syn match jgraphNumber "\<-\=\d\+\>" "floating point number, with dot - or no - syn match jgraphNumber "\<-\=\d\+\.\d*\>" "floating point number, starting with a dot - or no - syn match jgraphNumber "\-\=\.\d\+\>" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link jgraphComment Comment hi def link jgraphCmd Identifier hi def link jgraphType Type hi def link jgraphNumber Number let b:current_syntax = "jgraph" PK�������!�P+1��1����vim80/syntax/changelog.vimnu�[��������" Vim syntax file " Language: generic ChangeLog file " Written By: Gediminas Paulauskas <menesis@delfi.lt> " Maintainer: Corinna Vinschen <vinschen@redhat.com> " Last Change: June 1, 2003 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore if exists('b:changelog_spacing_errors') let s:spacing_errors = b:changelog_spacing_errors elseif exists('g:changelog_spacing_errors') let s:spacing_errors = g:changelog_spacing_errors else let s:spacing_errors = 1 endif if s:spacing_errors syn match changelogError "^ \+" endif syn match changelogText "^\s.*$" contains=changelogMail,changelogNumber,changelogMonth,changelogDay,changelogError syn match changelogHeader "^\S.*$" contains=changelogNumber,changelogMonth,changelogDay,changelogMail syn region changelogFiles start="^\s\+[+*]\s" end=":" end="^$" contains=changelogBullet,changelogColon,changelogFuncs,changelogError keepend syn region changelogFiles start="^\s\+[([]" end=":" end="^$" contains=changelogBullet,changelogColon,changelogFuncs,changelogError keepend syn match changelogFuncs contained "(.\{-})" extend syn match changelogFuncs contained "\[.\{-}]" extend syn match changelogColon contained ":" syn match changelogBullet contained "^\s\+[+*]\s" contains=changelogError syn match changelogMail contained "<[A-Za-z0-9\._:+-]\+@[A-Za-z0-9\._-]\+>" syn keyword changelogMonth contained jan feb mar apr may jun jul aug sep oct nov dec syn keyword changelogDay contained mon tue wed thu fri sat sun syn match changelogNumber contained "[.-]*[0-9]\+" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link changelogText Normal hi def link changelogBullet Type hi def link changelogColon Type hi def link changelogFiles Comment hi def link changelogFuncs Comment hi def link changelogHeader Statement hi def link changelogMail Special hi def link changelogNumber Number hi def link changelogMonth Number hi def link changelogDay Number hi def link changelogError Folded let b:current_syntax = "changelog" " vim: ts=8 PK�������!�Qrɟ*��*����vim80/syntax/erlang.vimnu�[��������" Vim syntax file " Language: Erlang (http://www.erlang.org) " Maintainer: Csaba Hoch <csaba.hoch@gmail.com> " Contributor: Adam Rutkowski <hq@mtod.org> " Last Update: 2017-Mar-05 " License: Vim license " URL: https://github.com/vim-erlang/vim-erlang-runtime " Acknowledgements: This script was originally created by Kresimir Marzic [1]. " The script was then revamped by Csaba Hoch [2]. During the revamp, the new " highlighting style and some code was taken from the Erlang syntax script " that is part of vimerl [3], created by Oscar Hellström [4] and improved by " Ricardo Catalinas Jiménez [5]. " [1]: Kreąimir Marľić (Kresimir Marzic) <kmarzic@fly.srk.fer.hr> " [2]: Csaba Hoch <csaba.hoch@gmail.com> " [3]: https://github.com/jimenezrick/vimerl " [4]: Oscar Hellström <oscar@oscarh.net> (http://oscar.hellstrom.st) " [5]: Ricardo Catalinas Jiménez <jimenezrick@gmail.com> " Customization: " " To use the old highlighting style, add this to your .vimrc: " " let g:erlang_old_style_highlight = 1 " " To highlight further module attributes, add them to " ~/.vim/after/syntax/erlang.vim: " " syn keyword erlangAttribute myattr1 myattr2 contained " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " Case sensitive syn case match setlocal iskeyword+=$,@-@ " Comments syn match erlangComment '%.*$' contains=erlangCommentAnnotation,erlangTodo syn match erlangCommentAnnotation ' \@<=@\%(clear\|docfile\|end\|headerfile\|todo\|TODO\|type\|author\|copyright\|doc\|reference\|see\|since\|title\|version\|deprecated\|hidden\|private\|equiv\|spec\|throws\)' contained syn match erlangCommentAnnotation /`[^']*'/ contained syn keyword erlangTodo TODO FIXME XXX contained " Numbers (minimum base is 2, maximum is 36.) syn match erlangNumberInteger '\<\d\+\>' syn match erlangNumberInteger '\<\%([2-9]\|[12]\d\|3[0-6]\)\+#[[:alnum:]]\+\>' syn match erlangNumberFloat '\<\d\+\.\d\+\%([eE][+-]\=\d\+\)\=\>' " Strings, atoms, characters syn region erlangString start=/"/ end=/"/ contains=erlangStringModifier syn region erlangQuotedAtom start=/'/ end=/'/ contains=erlangQuotedAtomModifier syn match erlangStringModifier '\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)\|\~\%([ni~]\|\%(-\=\d\+\|\*\)\=\.\=\%(\*\|\d\+\)\=\%(\..\)\=[tl]*[cfegswpWPBX#bx+]\)' contained syn match erlangQuotedAtomModifier '\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)' contained syn match erlangModifier '\$\%([^\\]\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)\)' " Operators, separators syn match erlangOperator '==\|=:=\|/=\|=/=\|<\|=<\|>\|>=\|=>\|:=\|++\|--\|=\|!\|<-\|+\|-\|\*\|\/' syn keyword erlangOperator div rem or xor bor bxor bsl bsr and band not bnot andalso orelse syn match erlangBracket '{\|}\|\[\|]\||\|||' syn match erlangPipe '|' syn match erlangRightArrow '->' " Atoms, function calls (order is important) syn match erlangAtom '\<\l[[:alnum:]_@]*' contains=erlangBoolean syn keyword erlangBoolean true false contained syn match erlangLocalFuncCall '\<\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*(\)\@=' contains=erlangBIF syn match erlangLocalFuncRef '\<\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*/\)\@=' syn match erlangGlobalFuncCall '\<\%(\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*\.\%(\s\|\n\|%.*\n\)*\)*\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*:\%(\s\|\n\|%.*\n\)*\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*(\)\@=' contains=erlangComment,erlangVariable syn match erlangGlobalFuncRef '\<\%(\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*\.\%(\s\|\n\|%.*\n\)*\)*\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*:\%(\s\|\n\|%.*\n\)*\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*/\)\@=' contains=erlangComment,erlangVariable " Variables, macros, records, maps syn match erlangVariable '\<[A-Z_][[:alnum:]_@]*' syn match erlangMacro '??\=[[:alnum:]_@]\+' syn match erlangMacro '\%(-define(\)\@<=[[:alnum:]_@]\+' syn match erlangMap '#' syn match erlangRecord '#\s*\l[[:alnum:]_@]*' syn region erlangQuotedRecord start=/#\s*'/ end=/'/ contains=erlangQuotedAtomModifier " Shebang (this line has to be after the ErlangMap) syn match erlangShebang '^#!.*' " Bitstrings syn match erlangBitType '\%(\/\%(\s\|\n\|%.*\n\)*\)\@<=\%(integer\|float\|binary\|bytes\|bitstring\|bits\|binary\|utf8\|utf16\|utf32\|signed\|unsigned\|big\|little\|native\|unit\)\%(\%(\s\|\n\|%.*\n\)*-\%(\s\|\n\|%.*\n\)*\%(integer\|float\|binary\|bytes\|bitstring\|bits\|binary\|utf8\|utf16\|utf32\|signed\|unsigned\|big\|little\|native\|unit\)\)*' contains=erlangComment " Constants and Directives syn match erlangUnknownAttribute '^\s*-\%(\s\|\n\|%.*\n\)*\l[[:alnum:]_@]*' contains=erlangComment syn match erlangAttribute '^\s*-\%(\s\|\n\|%.*\n\)*\%(behaviou\=r\|compile\|export\(_type\)\=\|file\|import\|module\|author\|copyright\|doc\|vsn\|on_load\)\>' contains=erlangComment syn match erlangInclude '^\s*-\%(\s\|\n\|%.*\n\)*\%(include\|include_lib\)\>' contains=erlangComment syn match erlangRecordDef '^\s*-\%(\s\|\n\|%.*\n\)*record\>' contains=erlangComment syn match erlangDefine '^\s*-\%(\s\|\n\|%.*\n\)*\%(define\|undef\)\>' contains=erlangComment syn match erlangPreCondit '^\s*-\%(\s\|\n\|%.*\n\)*\%(ifdef\|ifndef\|else\|endif\)\>' contains=erlangComment syn match erlangType '^\s*-\%(\s\|\n\|%.*\n\)*\%(spec\|type\|opaque\|callback\)\>' contains=erlangComment " Keywords syn keyword erlangKeyword after begin case catch cond end fun if let of syn keyword erlangKeyword receive when try " Build-in-functions (BIFs) syn keyword erlangBIF abs alive apply atom_to_binary atom_to_list contained syn keyword erlangBIF binary_part binary_to_atom contained syn keyword erlangBIF binary_to_existing_atom binary_to_float contained syn keyword erlangBIF binary_to_integer bitstring_to_list contained syn keyword erlangBIF binary_to_list binary_to_term bit_size contained syn keyword erlangBIF byte_size check_old_code check_process_code contained syn keyword erlangBIF concat_binary date delete_module demonitor contained syn keyword erlangBIF disconnect_node element erase error exit contained syn keyword erlangBIF float float_to_binary float_to_list contained syn keyword erlangBIF garbage_collect get get_keys group_leader contained syn keyword erlangBIF halt hd integer_to_binary integer_to_list contained syn keyword erlangBIF iolist_to_binary iolist_size is_alive contained syn keyword erlangBIF is_atom is_binary is_bitstring is_boolean contained syn keyword erlangBIF is_float is_function is_integer is_list contained syn keyword erlangBIF is_number is_pid is_port is_process_alive contained syn keyword erlangBIF is_record is_reference is_tuple length link contained syn keyword erlangBIF list_to_atom list_to_binary contained syn keyword erlangBIF list_to_bitstring list_to_existing_atom contained syn keyword erlangBIF list_to_float list_to_integer list_to_pid contained syn keyword erlangBIF list_to_tuple load_module make_ref max min contained syn keyword erlangBIF module_loaded monitor monitor_node node contained syn keyword erlangBIF nodes now open_port pid_to_list port_close contained syn keyword erlangBIF port_command port_connect pre_loaded contained syn keyword erlangBIF process_flag process_flag process_info contained syn keyword erlangBIF process purge_module put register registered contained syn keyword erlangBIF round self setelement size spawn spawn_link contained syn keyword erlangBIF spawn_monitor spawn_opt split_binary contained syn keyword erlangBIF statistics term_to_binary throw time tl contained syn keyword erlangBIF trunc tuple_size tuple_to_list unlink contained syn keyword erlangBIF unregister whereis contained " Sync at the beginning of functions: if this is not used, multiline string " are not always recognized, and the indentation script cannot use the " "searchpair" (because it would not always skip strings and comments when " looking for keywords and opening parens/brackets). syn sync match erlangSync grouphere NONE "^[a-z]\s*(" let b:erlang_syntax_synced = 1 " Define the default highlighting. See ":help group-name" for the groups and " their colors. let s:old_style = (exists("g:erlang_old_style_highlight") && \g:erlang_old_style_highlight == 1) " Comments hi def link erlangComment Comment hi def link erlangCommentAnnotation Special hi def link erlangTodo Todo hi def link erlangShebang Comment " Numbers hi def link erlangNumberInteger Number hi def link erlangNumberFloat Float " Strings, atoms, characters hi def link erlangString String if s:old_style hi def link erlangQuotedAtom Type else hi def link erlangQuotedAtom String endif hi def link erlangStringModifier Special hi def link erlangQuotedAtomModifier Special hi def link erlangModifier Special " Operators, separators hi def link erlangOperator Operator hi def link erlangRightArrow Operator if s:old_style hi def link erlangBracket Normal hi def link erlangPipe Normal else hi def link erlangBracket Delimiter hi def link erlangPipe Delimiter endif " Atoms, functions, variables, macros if s:old_style hi def link erlangAtom Normal hi def link erlangLocalFuncCall Normal hi def link erlangLocalFuncRef Normal hi def link erlangGlobalFuncCall Function hi def link erlangGlobalFuncRef Function hi def link erlangVariable Normal hi def link erlangMacro Normal hi def link erlangRecord Normal hi def link erlangQuotedRecord Normal hi def link erlangMap Normal else hi def link erlangAtom String hi def link erlangLocalFuncCall Normal hi def link erlangLocalFuncRef Normal hi def link erlangGlobalFuncCall Normal hi def link erlangGlobalFuncRef Normal hi def link erlangVariable Identifier hi def link erlangMacro Macro hi def link erlangRecord Structure hi def link erlangQuotedRecord Structure hi def link erlangMap Structure endif " Bitstrings if !s:old_style hi def link erlangBitType Type endif " Constants and Directives if s:old_style hi def link erlangAttribute Type hi def link erlangMacroDef Type hi def link erlangUnknownAttribute Normal hi def link erlangInclude Type hi def link erlangRecordDef Type hi def link erlangDefine Type hi def link erlangPreCondit Type hi def link erlangType Type else hi def link erlangAttribute Keyword hi def link erlangMacroDef Macro hi def link erlangUnknownAttribute Normal hi def link erlangInclude Include hi def link erlangRecordDef Keyword hi def link erlangDefine Define hi def link erlangPreCondit PreCondit hi def link erlangType Type endif " Keywords hi def link erlangKeyword Keyword " Build-in-functions (BIFs) hi def link erlangBIF Function if s:old_style hi def link erlangBoolean Statement hi def link erlangExtra Statement hi def link erlangSignal Statement else hi def link erlangBoolean Boolean hi def link erlangExtra Statement hi def link erlangSignal Statement endif let b:current_syntax = "erlang" let &cpo = s:cpo_save unlet s:cpo_save " vim: sw=2 et PK�������!�3SK��K����vim80/syntax/sqloracle.vimnu�[��������" Vim syntax file " Language: SQL, PL/SQL (Oracle 11g) " Maintainer: Christian Brabandt " Repository: https://github.com/chrisbra/vim-sqloracle-syntax " License: Vim " Previous Maintainer: Paul Moore " Last Change: 2016 Jul 22 " Changes: " 02.04.2016: Support for when keyword " 03.04.2016: Support for join related keywords " 22.07.2016: Support Oracle Q-Quote-Syntax if exists("b:current_syntax") finish endif syn case ignore " The SQL reserved words, defined as keywords. syn keyword sqlSpecial false null true syn keyword sqlKeyword access add as asc begin by case check cluster column syn keyword sqlKeyword cache compress connect current cursor decimal default desc syn keyword sqlKeyword else elsif end exception exclusive file for from syn keyword sqlKeyword function group having identified if immediate increment syn keyword sqlKeyword index initial initrans into is level link logging loop syn keyword sqlKeyword maxextents maxtrans mode modify monitoring syn keyword sqlKeyword nocache nocompress nologging noparallel nowait of offline on online start syn keyword sqlKeyword parallel successful synonym table tablespace then to trigger uid syn keyword sqlKeyword unique user validate values view when whenever syn keyword sqlKeyword where with option order pctfree pctused privileges procedure syn keyword sqlKeyword public resource return row rowlabel rownum rows syn keyword sqlKeyword session share size smallint type using syn keyword sqlKeyword join cross inner outer left right syn keyword sqlOperator not and or syn keyword sqlOperator in any some all between exists syn keyword sqlOperator like escape syn keyword sqlOperator union intersect minus syn keyword sqlOperator prior distinct syn keyword sqlOperator sysdate out syn keyword sqlStatement analyze audit comment commit syn keyword sqlStatement delete drop execute explain grant lock noaudit syn keyword sqlStatement rename revoke rollback savepoint set syn keyword sqlStatement truncate " next ones are contained, so folding works. syn keyword sqlStatement create update alter select insert contained syn keyword sqlType boolean char character date float integer long syn keyword sqlType mlslabel number raw rowid varchar varchar2 varray " Strings: syn region sqlString matchgroup=Quote start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region sqlString matchgroup=Quote start=+'+ skip=+\\\\\|\\'+ end=+'+ syn region sqlString matchgroup=Quote start=+n\?q'\z([^[(<{]\)+ end=+\z1'+ syn region sqlString matchgroup=Quote start=+n\?q'<+ end=+>'+ syn region sqlString matchgroup=Quote start=+n\?q'{+ end=+}'+ syn region sqlString matchgroup=Quote start=+n\?q'(+ end=+)'+ syn region sqlString matchgroup=Quote start=+n\?q'\[+ end=+]'+ " Numbers: syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" " Comments: syn region sqlComment start="/\*" end="\*/" contains=sqlTodo,@Spell fold syn match sqlComment "--.*$" contains=sqlTodo,@Spell " Setup Folding: " this is a hack, to get certain statements folded. " the keywords create/update/alter/select/insert need to " have contained option. syn region sqlFold start='^\s*\zs\c\(Create\|Update\|Alter\|Select\|Insert\)' end=';$\|^$' transparent fold contains=ALL syn sync ccomment sqlComment " Functions: " (Oracle 11g) " Aggregate Functions syn keyword sqlFunction avg collect corr corr_s corr_k count covar_pop covar_samp cume_dist dense_rank first syn keyword sqlFunction group_id grouping grouping_id last max median min percentile_cont percentile_disc percent_rank rank syn keyword sqlFunction regr_slope regr_intercept regr_count regr_r2 regr_avgx regr_avgy regr_sxx regr_syy regr_sxy syn keyword sqlFunction stats_binomial_test stats_crosstab stats_f_test stats_ks_test stats_mode stats_mw_test syn keyword sqlFunction stats_one_way_anova stats_t_test_one stats_t_test_paired stats_t_test_indep stats_t_test_indepu syn keyword sqlFunction stats_wsr_test stddev stddev_pop stddev_samp sum syn keyword sqlFunction sys_xmlagg var_pop var_samp variance xmlagg " Char Functions syn keyword sqlFunction ascii chr concat initcap instr length lower lpad ltrim syn keyword sqlFunction nls_initcap nls_lower nlssort nls_upper regexp_instr regexp_replace syn keyword sqlFunction regexp_substr replace rpad rtrim soundex substr translate treat trim upper " Comparison Functions syn keyword sqlFunction greatest least " Conversion Functions syn keyword sqlFunction asciistr bin_to_num cast chartorowid compose convert syn keyword sqlFunction decompose hextoraw numtodsinterval numtoyminterval rawtohex rawtonhex rowidtochar syn keyword sqlFunction rowidtonchar scn_to_timestamp timestamp_to_scn to_binary_double to_binary_float syn keyword sqlFunction to_char to_char to_char to_clob to_date to_dsinterval to_lob to_multi_byte syn keyword sqlFunction to_nchar to_nchar to_nchar to_nclob to_number to_dsinterval to_single_byte syn keyword sqlFunction to_timestamp to_timestamp_tz to_yminterval to_yminterval translate unistr " DataMining Functions syn keyword sqlFunction cluster_id cluster_probability cluster_set feature_id feature_set syn keyword sqlFunction feature_value prediction prediction_bounds prediction_cost syn keyword sqlFunction prediction_details prediction_probability prediction_set " Datetime Functions syn keyword sqlFunction add_months current_date current_timestamp dbtimezone extract syn keyword sqlFunction from_tz last_day localtimestamp months_between new_time syn keyword sqlFunction next_day numtodsinterval numtoyminterval round sessiontimezone syn keyword sqlFunction sys_extract_utc sysdate systimestamp to_char to_timestamp syn keyword sqlFunction to_timestamp_tz to_dsinterval to_yminterval trunc tz_offset " Numeric Functions syn keyword sqlFunction abs acos asin atan atan2 bitand ceil cos cosh exp syn keyword sqlFunction floor ln log mod nanvl power remainder round sign syn keyword sqlFunction sin sinh sqrt tan tanh trunc width_bucket " NLS Functions syn keyword sqlFunction ls_charset_decl_len nls_charset_id nls_charset_name " Various Functions syn keyword sqlFunction bfilename cardin coalesce collect decode dump empty_blob empty_clob syn keyword sqlFunction lnnvl nullif nvl nvl2 ora_hash powermultiset powermultiset_by_cardinality syn keyword sqlFunction sys_connect_by_path sys_context sys_guid sys_typeid uid user userenv vsizeality " XML Functions syn keyword sqlFunction appendchildxml deletexml depth extract existsnode extractvalue insertchildxml syn keyword sqlFunction insertxmlbefore path sys_dburigen sys_xmlagg sys_xmlgen updatexml xmlagg xmlcast syn keyword sqlFunction xmlcdata xmlcolattval xmlcomment xmlconcat xmldiff xmlelement xmlexists xmlforest syn keyword sqlFunction xmlparse xmlpatch xmlpi xmlquery xmlroot xmlsequence xmlserialize xmltable xmltransform " Todo: syn keyword sqlTodo TODO FIXME XXX DEBUG NOTE contained " Define the default highlighting. hi def link Quote Special hi def link sqlComment Comment hi def link sqlFunction Function hi def link sqlKeyword sqlSpecial hi def link sqlNumber Number hi def link sqlOperator sqlStatement hi def link sqlSpecial Special hi def link sqlStatement Statement hi def link sqlString String hi def link sqlType Type hi def link sqlTodo Todo let b:current_syntax = "sql" " vim: ts=8 PK�������!�Bo��o����vim80/syntax/mailcap.vimnu�[��������" Vim syntax file " Language: Mailcap configuration file " Maintainer: Doug Kearns <dougkearns@gmail.com> " Last Change: 2013 Jun 01 if exists("b:current_syntax") finish endif syn match mailcapComment "^#.*" syn region mailcapString start=+"+ end=+"+ contains=mailcapSpecial oneline syn match mailcapDelimiter "\\\@<!;" syn match mailcapSpecial "\\\@<!%[nstF]" syn match mailcapSpecial "\\\@<!%{[^}]*}" syn case ignore syn match mailcapFlag "\(=\s*\)\@<!\<\(needsterminal\|copiousoutput\|x-\w\+\)\>" syn match mailcapFieldname "\<\(compose\|composetyped\|print\|edit\|test\|x11-bitmap\|nametemplate\|textualnewlines\|description\|x-\w+\)\>\ze\s*=" syn match mailcapTypeField "^\(text\|image\|audio\|video\|application\|message\|multipart\|model\|x-[[:graph:]]\+\)\(/\(\*\|[[:graph:]]\+\)\)\=\ze\s*;" syn case match hi def link mailcapComment Comment hi def link mailcapDelimiter Delimiter hi def link mailcapFlag Statement hi def link mailcapFieldname Statement hi def link mailcapSpecial Identifier hi def link mailcapTypeField Type hi def link mailcapString String let b:current_syntax = "mailcap" " vim: ts=8 PK�������!�eryM*��M*����vim80/syntax/xmath.vimnu�[��������" Vim syntax file " Language: xmath (a simulation tool) " Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz> " Last Change: Aug 31, 2016 " Version: 9 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_XMATH " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " parenthesis sanity checker syn region xmathZone matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,xmathError,xmathBraceError,xmathCurlyError syn region xmathZone matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,xmathError,xmathBraceError,xmathParenError syn region xmathZone matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,xmathError,xmathCurlyError,xmathParenError syn match xmathError "[)\]}]" syn match xmathBraceError "[)}]" contained syn match xmathCurlyError "[)\]]" contained syn match xmathParenError "[\]}]" contained syn match xmathComma "[,;:]" syn match xmathComma "\.\.\.$" " A bunch of useful xmath keywords syn case ignore syn keyword xmathFuncCmd function endfunction command endcommand syn keyword xmathStatement abort beep debug default define syn keyword xmathStatement execute exit pause return undefine syn keyword xmathConditional if else elseif endif syn keyword xmathRepeat while for endwhile endfor syn keyword xmathCmd anigraph deletedatastore keep renamedatastore syn keyword xmathCmd autocode deletestd linkhyper renamestd syn keyword xmathCmd build deletesuperblock linksim renamesuperblock syn keyword xmathCmd comment deletetransition listusertype save syn keyword xmathCmd copydatastore deleteusertype load sbadisplay syn keyword xmathCmd copystd detailmodel lock set syn keyword xmathCmd copysuperblock display minmax_display setsbdefault syn keyword xmathCmd createblock documentit modifyblock show syn keyword xmathCmd createbubble editcatalog modifybubble showlicense syn keyword xmathCmd createconnection erase modifystd showsbdefault syn keyword xmathCmd creatertf expandsuperbubble modifysuperblock stop syn keyword xmathCmd createstd for modifytransition stopcosim syn keyword xmathCmd createsuperblock go modifyusertype syntax syn keyword xmathCmd createsuperbubble goto new unalias syn keyword xmathCmd createtransition hardcopy next unlock syn keyword xmathCmd createusertype help polargraph usertype syn keyword xmathCmd delete hyperbuild print whatis syn keyword xmathCmd deleteblock if printmodel while syn keyword xmathCmd deletebubble ifilter quit who syn keyword xmathCmd deleteconnection ipcwc remove xgraph syn keyword xmathFunc abcd eye irea querystdoptions syn keyword xmathFunc abs eyepattern is querysuperblock syn keyword xmathFunc acos feedback ISID querysuperblockopt syn keyword xmathFunc acosh fft ISID Models querytransition syn keyword xmathFunc adconversion fftpdm kronecker querytransitionopt syn keyword xmathFunc afeedback filter length qz syn keyword xmathFunc all find limit rampinvar syn keyword xmathFunc ambiguity firparks lin random syn keyword xmathFunc amdemod firremez lin30 randpdm syn keyword xmathFunc analytic firwind linearfm randpert syn keyword xmathFunc analyze fmdemod linfnorm randsys syn keyword xmathFunc any forwdiff lintodb rank syn keyword xmathFunc append fprintf list rayleigh syn keyword xmathFunc argn frac log rcepstrum syn keyword xmathFunc argv fracred log10 rcond syn keyword xmathFunc arma freq logm rdintegrate syn keyword xmathFunc arma2ss freqcircle lognormal read syn keyword xmathFunc armax freqcont logspace real syn keyword xmathFunc ascii frequencyhop lowpass rectify syn keyword xmathFunc asin fsesti lpopt redschur syn keyword xmathFunc asinh fslqgcomp lqgcomp reflect syn keyword xmathFunc atan fsregu lqgltr regulator syn keyword xmathFunc atan2 fwls ls residue syn keyword xmathFunc atanh gabor ls2unc riccati syn keyword xmathFunc attach_ac100 garb ls2var riccati_eig syn keyword xmathFunc backdiff gaussian lsjoin riccati_schur syn keyword xmathFunc balance gcexp lu ricean syn keyword xmathFunc balmoore gcos lyapunov rifd syn keyword xmathFunc bandpass gdfileselection makecontinuous rlinfo syn keyword xmathFunc bandstop gdmessage makematrix rlocus syn keyword xmathFunc bj gdselection makepoly rms syn keyword xmathFunc blknorm genconv margin rootlocus syn keyword xmathFunc bode get markoff roots syn keyword xmathFunc bpm get_info30 matchedpz round syn keyword xmathFunc bpm2inn get_inn max rref syn keyword xmathFunc bpmjoin gfdm maxlike rve_get syn keyword xmathFunc bpmsplit gfsk mean rve_info syn keyword xmathFunc bst gfskernel mergeseg rve_reset syn keyword xmathFunc buttconstr gfunction min rve_update syn keyword xmathFunc butterworth ggauss minimal samplehold syn keyword xmathFunc cancel giv mkpert schur syn keyword xmathFunc canform giv2var mkphase sdf syn keyword xmathFunc ccepstrum givjoin mma sds syn keyword xmathFunc char gpsk mmaget sdtrsp syn keyword xmathFunc chebconstr gpulse mmaput sec syn keyword xmathFunc chebyshev gqam mod sech syn keyword xmathFunc check gqpsk modal siginterp syn keyword xmathFunc cholesky gramp modalstate sign syn keyword xmathFunc chop gsawtooth modcarrier sim syn keyword xmathFunc circonv gsigmoid mreduce sim30 syn keyword xmathFunc circorr gsin mtxplt simin syn keyword xmathFunc clock gsinc mu simin30 syn keyword xmathFunc clocus gsqpsk mulhank simout syn keyword xmathFunc clsys gsquarewave multipath simout30 syn keyword xmathFunc coherence gstep musynfit simtransform syn keyword xmathFunc colorind GuiDialogCreate mxstr2xmstr sin syn keyword xmathFunc combinepf GuiDialogDestroy mxstring2xmstring singriccati syn keyword xmathFunc commentof GuiFlush names sinh syn keyword xmathFunc compare GuiGetValue nichols sinm syn keyword xmathFunc complementaryerf GuiManage noisefilt size syn keyword xmathFunc complexenvelope GuiPlot none smargin syn keyword xmathFunc complexfreqshift GuiPlotGet norm sns2sys syn keyword xmathFunc concatseg GuiSetValue numden sort syn keyword xmathFunc condition GuiShellCreate nyquist spectrad syn keyword xmathFunc conj GuiShellDeiconify obscf spectrum syn keyword xmathFunc conmap GuiShellDestroy observable spline syn keyword xmathFunc connect GuiShellIconify oe sprintf syn keyword xmathFunc conpdm GuiShellLower ones sqrt syn keyword xmathFunc constellation GuiShellRaise ophank sqrtm syn keyword xmathFunc consys GuiShellRealize optimize sresidualize syn keyword xmathFunc controllable GuiShellUnrealize optscale ss2arma syn keyword xmathFunc convolve GuiTimer orderfilt sst syn keyword xmathFunc correlate GuiToolCreate orderstate ssv syn keyword xmathFunc cos GuiToolDestroy orth stable syn keyword xmathFunc cosh GuiToolExist oscmd stair syn keyword xmathFunc cosm GuiUnmanage oscope starp syn keyword xmathFunc cot GuiWidgetExist osscale step syn keyword xmathFunc coth h2norm padcrop stepinvar syn keyword xmathFunc covariance h2syn partialsum string syn keyword xmathFunc csc hadamard pdm stringex syn keyword xmathFunc csch hankelsv pdmslice substr syn keyword xmathFunc csum hessenberg pem subsys syn keyword xmathFunc ctrcf highpass perfplots sum syn keyword xmathFunc ctrlplot hilbert period svd syn keyword xmathFunc daug hilberttransform pfscale svplot syn keyword xmathFunc dbtolin hinfcontr phaseshift sweep syn keyword xmathFunc dct hinfnorm pinv symbolmap syn keyword xmathFunc decimate hinfsyn plot sys2sns syn keyword xmathFunc defFreqRange histogram plot30 sysic syn keyword xmathFunc defTimeRange idfreq pmdemod Sysid syn keyword xmathFunc delay idimpulse poisson system syn keyword xmathFunc delsubstr idsim poissonimpulse tan syn keyword xmathFunc det ifft poleplace tanh syn keyword xmathFunc detrend imag poles taper syn keyword xmathFunc dht impinvar polezero tfid syn keyword xmathFunc diagonal impplot poltrend toeplitz syn keyword xmathFunc differentiate impulse polyfit trace syn keyword xmathFunc directsequence index polynomial tril syn keyword xmathFunc discretize indexlist polyval trim syn keyword xmathFunc divide initial polyvalm trim30 syn keyword xmathFunc domain initmodel prbs triu syn keyword xmathFunc dst initx0 product trsp syn keyword xmathFunc eig inn2bpm psd truncate syn keyword xmathFunc ellipconstr inn2pe put_inn tustin syn keyword xmathFunc elliptic inn2unc qpopt uniform syn keyword xmathFunc erf insertseg qr val syn keyword xmathFunc error int quantize variance syn keyword xmathFunc estimator integrate queryblock videolines syn keyword xmathFunc etfe integratedump queryblockoptions wcbode syn keyword xmathFunc exist interp querybubble wcgain syn keyword xmathFunc exp interpolate querybubbleoptionswindow syn keyword xmathFunc expm inv querycatalog wtbalance syn keyword xmathFunc extractchan invhilbert queryconnection zeros syn keyword xmathFunc extractseg iqmix querystd syn case match " Labels (supports xmath's goto) syn match xmathLabel "^\s*<[a-zA-Z_][a-zA-Z0-9]*>" " String and Character constants " Highlight special characters (those which have a backslash) differently syn match xmathSpecial contained "\\\d\d\d\|\\." syn region xmathString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=xmathSpecial,@Spell syn match xmathCharacter "'[^\\]'" syn match xmathSpecialChar "'\\.'" syn match xmathNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" " Comments: " xmath supports #... (like Unix shells) " and #{ ... }# comment blocks syn cluster xmathCommentGroup contains=xmathString,xmathTodo,@Spell syn keyword xmathTodo contained COMBAK DEBUG FIXME Todo TODO XXX syn match xmathComment "#.*$" contains=@xmathCommentGroup syn region xmathCommentBlock start="#{" end="}#" contains=@xmathCommentGroup " synchronizing syn sync match xmathSyncComment grouphere xmathCommentBlock "#{" syn sync match xmathSyncComment groupthere NONE "}#" " Define the default highlighting. if !exists("skip_xmath_syntax_inits") hi def link xmathBraceError xmathError hi def link xmathCmd xmathStatement hi def link xmathCommentBlock xmathComment hi def link xmathCurlyError xmathError hi def link xmathFuncCmd xmathStatement hi def link xmathParenError xmathError " The default methods for highlighting. Can be overridden later hi def link xmathCharacter Character hi def link xmathComma Delimiter hi def link xmathComment Comment hi def link xmathCommentBlock Comment hi def link xmathConditional Conditional hi def link xmathError Error hi def link xmathFunc Function hi def link xmathLabel PreProc hi def link xmathNumber Number hi def link xmathRepeat Repeat hi def link xmathSpecial Type hi def link xmathSpecialChar SpecialChar hi def link xmathStatement Statement hi def link xmathString String hi def link xmathTodo Todo endif let b:current_syntax = "xmath" " vim: ts=17 PK�������!�p��p����vim80/syntax/sbt.vimnu�[��������" Vim syntax file " Language: sbt " Maintainer: Steven Dobay <stevendobay at protonmail.com> " Last Change: 2017.04.30 if exists("b:current_syntax") finish endif runtime! syntax/scala.vim syn region sbtString start="\"[^"]" skip="\\\"" end="\"" contains=sbtStringEscape syn match sbtStringEscape "\\u[0-9a-fA-F]\{4}" contained syn match sbtStringEscape "\\[nrfvb\\\"]" contained syn match sbtIdentitifer "^\S\+\ze\s*\(:=\|++=\|+=\|<<=\|<+=\)" syn match sbtBeginningSeq "^[Ss]eq\>" syn match sbtSpecial "\(:=\|++=\|+=\|<<=\|<+=\)" syn match sbtLineComment "//.*" syn region sbtComment start="/\*" end="\*/" syn region sbtDocComment start="/\*\*" end="\*/" keepend hi link sbtString String hi link sbtIdentitifer Keyword hi link sbtBeginningSeq Keyword hi link sbtSpecial Special hi link sbtComment Comment hi link sbtLineComment Comment hi link sbtDocComment Comment PK�������!�!��!����vim80/syntax/cupl.vimnu�[��������" Vim syntax file " Language: CUPL " Maintainer: John Cook <johncook3@gmail.com> " Last Change: 2011 Dec 27 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " this language is oblivious to case. syn case ignore " A bunch of keywords syn keyword cuplHeader name partno date revision rev designer company nextgroup=cuplHeaderContents syn keyword cuplHeader assembly assy location device nextgroup=cuplHeaderContents syn keyword cuplTodo contained TODO XXX FIXME " cuplHeaderContents uses default highlighting except for numbers syn match cuplHeaderContents ".\+;"me=e-1 contains=cuplNumber contained " String contstants syn region cuplString start=+'+ end=+'+ syn region cuplString start=+"+ end=+"+ syn keyword cuplStatement append condition syn keyword cuplStatement default else syn keyword cuplStatement field fld format function fuse syn keyword cuplStatement group if jump loc syn keyword cuplStatement macro min node out syn keyword cuplStatement pin pinnode present table syn keyword cuplStatement sequence sequenced sequencejk sequencers sequencet syn keyword cuplFunction log2 log8 log16 log " Valid integer number formats (decimal, binary, octal, hex) syn match cuplNumber "\<[-+]\=[0-9]\+\>" syn match cuplNumber "'d'[0-9]\+\>" syn match cuplNumber "'b'[01x]\+\>" syn match cuplNumber "'o'[0-7x]\+\>" syn match cuplNumber "'h'[0-9a-fx]\+\>" " operators syn match cuplLogicalOperator "[!#&$]" syn match cuplArithmeticOperator "[-+*/%]" syn match cuplArithmeticOperator "\*\*" syn match cuplAssignmentOperator ":\==" syn match cuplEqualityOperator ":" syn match cuplTruthTableOperator "=>" " Signal extensions syn match cuplExtension "\.[as][pr]\>" syn match cuplExtension "\.oe\>" syn match cuplExtension "\.oemux\>" syn match cuplExtension "\.[dlsrjk]\>" syn match cuplExtension "\.ck\>" syn match cuplExtension "\.dq\>" syn match cuplExtension "\.ckmux\>" syn match cuplExtension "\.tec\>" syn match cuplExtension "\.cnt\>" syn match cuplRangeOperator "\.\." contained " match ranges like memadr:[0000..1FFF] " and highlight both the numbers and the .. operator syn match cuplNumberRange "\<\x\+\.\.\x\+\>" contains=cuplRangeOperator " match vectors of type [name3..0] (decimal numbers only) " but assign them no special highlighting except for the .. operator syn match cuplBitVector "\<\a\+\d\+\.\.\d\+\>" contains=cuplRangeOperator " other special characters syn match cuplSpecialChar "[\[\](){},;]" " directives " (define these after cuplOperator so $xxx overrides $) syn match cuplDirective "\$msg" syn match cuplDirective "\$macro" syn match cuplDirective "\$mend" syn match cuplDirective "\$repeat" syn match cuplDirective "\$repend" syn match cuplDirective "\$define" syn match cuplDirective "\$include" " multi-line comments syn region cuplComment start=+/\*+ end=+\*/+ contains=cuplNumber,cuplTodo syn sync minlines=1 " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default highlighting. hi def link cuplHeader cuplStatement hi def link cuplLogicalOperator cuplOperator hi def link cuplRangeOperator cuplOperator hi def link cuplArithmeticOperator cuplOperator hi def link cuplAssignmentOperator cuplOperator hi def link cuplEqualityOperator cuplOperator hi def link cuplTruthTableOperator cuplOperator hi def link cuplOperator cuplStatement hi def link cuplFunction cuplStatement hi def link cuplStatement Statement hi def link cuplNumberRange cuplNumber hi def link cuplNumber cuplString hi def link cuplString String hi def link cuplComment Comment hi def link cuplExtension cuplSpecial hi def link cuplSpecialChar cuplSpecial hi def link cuplSpecial Special hi def link cuplDirective PreProc hi def link cuplTodo Todo let b:current_syntax = "cupl" let &cpo = s:cpo_save unlet s:cpo_save " vim:ts=8 PK�������!�G������vim80/syntax/racc.vimnu�[��������" Vim default file " Language: Racc input file " Previous Maintainer: Nikolai Weibull <now@bitwi.se> " Latest Revision: 2008-06-22 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword raccTodo contained TODO FIXME XXX NOTE syn region raccComment start='/\*' end='\*/' \ contains=raccTodo,@Spell syn region raccComment display oneline start='#' end='$' \ contains=raccTodo,@Spell syn region raccClass transparent matchgroup=raccKeyword \ start='\<class\>' end='\<rule\>'he=e-4 \ contains=raccComment,raccPrecedence, \ raccTokenDecl,raccExpect,raccOptions,raccConvert, \ raccStart, syn region raccPrecedence transparent matchgroup=raccKeyword \ start='\<prechigh\>' end='\<preclow\>' \ contains=raccComment,raccPrecSpec syn keyword raccPrecSpec contained nonassoc left right \ nextgroup=raccPrecToken,raccPrecString skipwhite \ skipnl syn match raccPrecToken contained '\<\u[A-Z0-9_]*\>' \ nextgroup=raccPrecToken,raccPrecString skipwhite \ skipnl syn region raccPrecString matchgroup=raccPrecString start=+"+ \ skip=+\\\\\|\\"+ end=+"+ \ contains=raccSpecial \ nextgroup=raccPrecToken,raccPrecString skipwhite \ skipnl syn region raccPrecString matchgroup=raccPrecString start=+'+ \ skip=+\\\\\|\\'+ end=+'+ contains=raccSpecial \ nextgroup=raccPrecToken,raccPrecString skipwhite \ skipnl syn keyword raccTokenDecl contained token \ nextgroup=raccTokenR skipwhite skipnl syn match raccTokenR contained '\<\u[A-Z0-9_]*\>' \ nextgroup=raccTokenR skipwhite skipnl syn keyword raccExpect contained expect \ nextgroup=raccNumber skipwhite skipnl syn match raccNumber contained '\<\d\+\>' syn keyword raccOptions contained options \ nextgroup=raccOptionsR skipwhite skipnl syn keyword raccOptionsR contained omit_action_call result_var \ nextgroup=raccOptionsR skipwhite skipnl syn region raccConvert transparent contained matchgroup=raccKeyword \ start='\<convert\>' end='\<end\>' \ contains=raccComment,raccConvToken skipwhite \ skipnl syn match raccConvToken contained '\<\u[A-Z0-9_]*\>' \ nextgroup=raccString skipwhite skipnl syn keyword raccStart contained start \ nextgroup=raccTargetS skipwhite skipnl syn match raccTargetS contained '\<\l[a-z0-9_]*\>' syn match raccSpecial contained '\\["'\\]' syn region raccString start=+"+ skip=+\\\\\|\\"+ end=+"+ \ contains=raccSpecial syn region raccString start=+'+ skip=+\\\\\|\\'+ end=+'+ \ contains=raccSpecial syn region raccRules transparent matchgroup=raccKeyword start='\<rule\>' \ end='\<end\>' contains=raccComment,raccString, \ raccNumber,raccToken,raccTarget,raccDelimiter, \ raccAction syn match raccTarget contained '\<\l[a-z0-9_]*\>' syn match raccDelimiter contained '[:|]' syn match raccToken contained '\<\u[A-Z0-9_]*\>' syn include @raccRuby syntax/ruby.vim syn region raccAction transparent matchgroup=raccDelimiter \ start='{' end='}' contains=@raccRuby syn region raccHeader transparent matchgroup=raccPreProc \ start='^---- header.*' end='^----'he=e-4 \ contains=@raccRuby syn region raccInner transparent matchgroup=raccPreProc \ start='^---- inner.*' end='^----'he=e-4 \ contains=@raccRuby syn region raccFooter transparent matchgroup=raccPreProc \ start='^---- footer.*' end='^----'he=e-4 \ contains=@raccRuby syn sync match raccSyncHeader grouphere raccHeader '^---- header' syn sync match raccSyncInner grouphere raccInner '^---- inner' syn sync match raccSyncFooter grouphere raccFooter '^---- footer' hi def link raccTodo Todo hi def link raccComment Comment hi def link raccPrecSpec Type hi def link raccPrecToken raccToken hi def link raccPrecString raccString hi def link raccTokenDecl Keyword hi def link raccToken Identifier hi def link raccTokenR raccToken hi def link raccExpect Keyword hi def link raccNumber Number hi def link raccOptions Keyword hi def link raccOptionsR Identifier hi def link raccConvToken raccToken hi def link raccStart Keyword hi def link raccTargetS Type hi def link raccSpecial special hi def link raccString String hi def link raccTarget Type hi def link raccDelimiter Delimiter hi def link raccPreProc PreProc hi def link raccKeyword Keyword let b:current_syntax = "racc" let &cpo = s:cpo_save unlet s:cpo_save PK�������!�P- �� ����vim80/syntax/bst.vimnu�[��������" Vim syntax file " Language: BibTeX Bibliography Style " Maintainer: Tim Pope <vimNOSPAM@tpope.info> " Filenames: *.bst " $Id: bst.vim,v 1.2 2007/05/05 18:24:42 vimboss Exp $ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=48-57,#,$,',.,A-Z,a-z syn case ignore syn match bstString +"[^"]*\%("\|$\)+ contains=bstField,bstType,bstError " Highlight the last character of an unclosed string, but only when the cursor " is not beyond it (i.e., it is still being edited). Imperfect. syn match bstError '[^"]\%#\@!$' contained syn match bstNumber "#-\=\d\+\>" syn keyword bstNumber entry.max$ global.max$ syn match bstComment "%.*" syn keyword bstCommand ENTRY FUNCTION INTEGERS MACRO STRINGS syn keyword bstCommand READ EXECUTE ITERATE REVERSE SORT syn match bstBuiltIn "\s[-<>=+*]\|\s:=" syn keyword bstBuiltIn add.period$ syn keyword bstBuiltIn call.type$ change.case$ chr.to.int$ cite$ syn keyword bstBuiltIn duplicate$ empty$ format.name$ syn keyword bstBuiltIn if$ int.to.chr$ int.to.str$ syn keyword bstBuiltIn missing$ syn keyword bstBuiltIn newline$ num.names$ syn keyword bstBuiltIn pop$ preamble$ purify$ quote$ syn keyword bstBuiltIn skip$ stack$ substring$ swap$ syn keyword bstBuiltIn text.length$ text.prefix$ top$ type$ syn keyword bstBuiltIn warning$ while$ width$ write$ syn match bstIdentifier "'\k*" syn keyword bstType article book booklet conference syn keyword bstType inbook incollection inproceedings syn keyword bstType manual mastersthesis misc syn keyword bstType phdthesis proceedings syn keyword bstType techreport unpublished syn keyword bstField abbr address annote author syn keyword bstField booktitle chapter crossref comment syn keyword bstField edition editor syn keyword bstField howpublished institution journal key month syn keyword bstField note number syn keyword bstField organization syn keyword bstField pages publisher syn keyword bstField school series syn keyword bstField title type syn keyword bstField volume year " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link bstComment Comment hi def link bstString String hi def link bstCommand PreProc hi def link bstBuiltIn Statement hi def link bstField Special hi def link bstNumber Number hi def link bstType Type hi def link bstIdentifier Identifier hi def link bstError Error let b:current_syntax = "bst" " vim:set ft=vim sts=4 sw=4: PK�������!�;^elM��M����vim80/syntax/xsd.vimnu�[��������" Vim syntax file " Language: XSD (XML Schema) " Maintainer: Johannes Zellner <johannes@zellner.org> " Last Change: Tue, 27 Apr 2004 14:54:59 CEST " Filenames: *.xsd " $Id: xsd.vim,v 1.1 2004/06/13 18:20:48 vimboss Exp $ " REFERENCES: " [1] http://www.w3.org/TR/xmlschema-0 " " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif runtime syntax/xml.vim syn cluster xmlTagHook add=xsdElement syn case match syn match xsdElement '\%(xsd:\)\@<=all' syn match xsdElement '\%(xsd:\)\@<=annotation' syn match xsdElement '\%(xsd:\)\@<=any' syn match xsdElement '\%(xsd:\)\@<=anyAttribute' syn match xsdElement '\%(xsd:\)\@<=appInfo' syn match xsdElement '\%(xsd:\)\@<=attribute' syn match xsdElement '\%(xsd:\)\@<=attributeGroup' syn match xsdElement '\%(xsd:\)\@<=choice' syn match xsdElement '\%(xsd:\)\@<=complexContent' syn match xsdElement '\%(xsd:\)\@<=complexType' syn match xsdElement '\%(xsd:\)\@<=documentation' syn match xsdElement '\%(xsd:\)\@<=element' syn match xsdElement '\%(xsd:\)\@<=enumeration' syn match xsdElement '\%(xsd:\)\@<=extension' syn match xsdElement '\%(xsd:\)\@<=field' syn match xsdElement '\%(xsd:\)\@<=group' syn match xsdElement '\%(xsd:\)\@<=import' syn match xsdElement '\%(xsd:\)\@<=include' syn match xsdElement '\%(xsd:\)\@<=key' syn match xsdElement '\%(xsd:\)\@<=keyref' syn match xsdElement '\%(xsd:\)\@<=length' syn match xsdElement '\%(xsd:\)\@<=list' syn match xsdElement '\%(xsd:\)\@<=maxInclusive' syn match xsdElement '\%(xsd:\)\@<=maxLength' syn match xsdElement '\%(xsd:\)\@<=minInclusive' syn match xsdElement '\%(xsd:\)\@<=minLength' syn match xsdElement '\%(xsd:\)\@<=pattern' syn match xsdElement '\%(xsd:\)\@<=redefine' syn match xsdElement '\%(xsd:\)\@<=restriction' syn match xsdElement '\%(xsd:\)\@<=schema' syn match xsdElement '\%(xsd:\)\@<=selector' syn match xsdElement '\%(xsd:\)\@<=sequence' syn match xsdElement '\%(xsd:\)\@<=simpleContent' syn match xsdElement '\%(xsd:\)\@<=simpleType' syn match xsdElement '\%(xsd:\)\@<=union' syn match xsdElement '\%(xsd:\)\@<=unique' hi def link xsdElement Statement " vim: ts=8 PK�������!�){������vim80/syntax/mp.vimnu�[��������" Vim syntax file " Language: MetaPost " Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com> " Former Maintainers: Andreas Scherer <andreas.scherer@pobox.com> " Last Change: 2016 Oct 14 if exists("b:current_syntax") finish endif let s:cpo_sav = &cpo set cpo&vim if exists("g:plain_mf_macros") let s:plain_mf_macros = g:plain_mf_macros endif if exists("g:plain_mf_modes") let s:plain_mf_modes = g:plain_mf_modes endif if exists("g:other_mf_macros") let s:other_mf_macros = g:other_mf_macros endif let g:plain_mf_macros = 0 " plain.mf has no special meaning for MetaPost let g:plain_mf_modes = 0 " No METAFONT modes let g:other_mf_macros = 0 " cmbase.mf, logo.mf, ... neither " Read the METAFONT syntax to start with runtime! syntax/mf.vim unlet b:current_syntax " Necessary for syn include below " Restore the value of existing global variables if exists("s:plain_mf_macros") let g:plain_mf_macros = s:plain_mf_macros else unlet g:plain_mf_macros endif if exists("s:plain_mf_modes") let g:plain_mf_modes = s:plain_mf_modes else unlet g:plain_mf_modes endif if exists("s:other_mf_macros") let g:other_mf_macros = s:other_mf_macros else unlet g:other_mf_macros endif " Use TeX highlighting inside verbatimtex/btex... etex syn include @MPTeX syntax/tex.vim unlet b:current_syntax " These are defined as keywords rather than using matchgroup " in order to make them available to syntaxcomplete. syn keyword mpTeXdelim btex etex verbatimtex contained syn region mpTeXinsert \ start=/\<verbatimtex\>\|\<btex\>/rs=e+1 \ end=/\<etex\>/re=s-1 keepend \ contains=@MPTeX,mpTeXdelim " iskeyword must be set after the syn include above, because tex.vim sets `syn " iskeyword`. Note that keywords do not contain numbers (numbers are " subscripts) syntax iskeyword @,_ " MetaPost primitives not found in METAFONT syn keyword mpBoolExp bounded clipped filled stroked textual arclength syn keyword mpNumExp arctime blackpart bluepart colormodel cyanpart syn keyword mpNumExp fontsize greenpart greypart magentapart redpart syn keyword mpPairExp yellowpart llcorner lrcorner ulcorner urcorner " envelope is seemingly undocumented, but it exists since mpost 1.003. " The syntax is: envelope <polygonal pen> of <path primary>. For example, " path p; " p := envelope pensquare of (up--left); " (Thanks to Daniel H. Luecking for the example!) syn keyword mpPathExp envelope pathpart syn keyword mpPenExp penpart syn keyword mpPicExp dashpart glyph infont syn keyword mpStringExp fontpart readfrom textpart syn keyword mpType cmykcolor color rgbcolor " Other MetaPost primitives listed in the manual syn keyword mpPrimitive mpxbreak within " Internal quantities not found in METAFONT " (Table 6 in MetaPost: A User's Manual) syn keyword mpInternal defaultcolormodel hour minute linecap linejoin syn keyword mpInternal miterlimit mpprocset mpversion numberprecision syn keyword mpInternal numbersystem outputfilename outputformat syn keyword mpInternal outputformatoptions outputtemplate prologues syn keyword mpInternal restoreclipcolor tracinglostchars troffmode syn keyword mpInternal truecorners " List of commands not found in METAFONT (from MetaPost: A User's Manual) syn keyword mpCommand clip closefrom dashed filenametemplate fontmapfile syn keyword mpCommand fontmapline setbounds withcmykcolor withcolor syn keyword mpCommand withgreyscale withoutcolor withpostscript syn keyword mpCommand withprescript withrgbcolor write " METAFONT internal variables not found in MetaPost syn keyword notDefined autorounding chardx chardy fillin granularity syn keyword notDefined proofing smoothing tracingedges tracingpens syn keyword notDefined turningcheck xoffset yoffset " Suffix defined only in METAFONT: syn keyword notDefined nodot " Other not implemented primitives (see MetaPost: A User's Manual, §C.1) syn keyword notDefined cull display openwindow numspecial totalweight syn keyword notDefined withweight " Keywords defined by plain.mp if get(g:, "plain_mp_macros", 1) || get(g:, "mp_metafun_macros", 0) syn keyword mpDef beginfig clear_pen_memory clearit clearpen clearpen syn keyword mpDef clearxy colorpart cutdraw downto draw drawarrow syn keyword mpDef drawdblarrow drawdot drawoptions endfig erase syn keyword mpDef exitunless fill filldraw flex gobble hide interact syn keyword mpDef label loggingall makelabel numtok penstroke pickup syn keyword mpDef range reflectedabout rotatedaround shipit syn keyword mpDef stop superellipse takepower tracingall tracingnone syn keyword mpDef undraw undrawdot unfill unfilldraw upto syn match mpDef "???" syn keyword mpVardef arrowhead bbox bot buildcycle byte ceiling center syn keyword mpVardef counterclockwise decr dir direction directionpoint syn keyword mpVardef dotlabel dotlabels image incr interpath inverse syn keyword mpVardef labels lft magstep max min penlabels penpos round syn keyword mpVardef rt savepen solve tensepath thelabel top unitvector syn keyword mpVardef whatever z syn keyword mpPrimaryDef div dotprod gobbled mod syn keyword mpSecondaryDef intersectionpoint syn keyword mpTertiaryDef cutafter cutbefore softjoin thru syn keyword mpNewInternal ahangle ahlength bboxmargin beveled butt defaultpen syn keyword mpNewInternal defaultscale dotlabeldiam eps epsilon infinity syn keyword mpNewInternal join_radius labeloffset mitered pen_bot pen_lft syn keyword mpNewInternal pen_rt pen_top rounded squared tolerance " Predefined constants syn keyword mpConstant EOF background base_name base_version black syn keyword mpConstant blankpicture blue ditto down evenly fullcircle syn keyword mpConstant green halfcircle identity left origin penrazor syn keyword mpConstant penspeck pensquare quartercircle red right syn keyword mpConstant unitsquare up white withdots " Other predefined variables syn keyword mpVariable currentpen currentpen_path currentpicture cuttings syn keyword mpVariable defaultfont extra_beginfig extra_endfig syn match mpVariable /\<\%(laboff\|labxf\|labyf\)\>/ syn match mpVariable /\<\%(laboff\|labxf\|labyf\)\.\%(lft\|rt\|bot\|top\|ulft\|urt\|llft\|lrt\)\>/ " let statements: syn keyword mpnumExp abs syn keyword mpDef rotatedabout syn keyword mpCommand bye relax " on and off are not technically keywords, but it is nice to highlight them " inside dashpattern(). syn keyword mpOnOff off on contained syn keyword mpDash dashpattern contained syn region mpDashPattern \ start="dashpattern\s*" \ end=")"he=e-1 \ contains=mfNumeric,mfLength,mpOnOff,mpDash endif " Keywords defined by mfplain.mp if get(g:, "mfplain_mp_macros", 0) syn keyword mpDef beginchar capsule_def change_width syn keyword mpDef define_blacker_pixels define_corrected_pixels syn keyword mpDef define_good_x_pixels define_good_y_pixels syn keyword mpDef define_horizontal_corrected_pixels define_pixels syn keyword mpDef define_whole_blacker_pixels define_whole_pixels syn keyword mpDef define_whole_vertical_blacker_pixels syn keyword mpDef define_whole_vertical_pixels endchar syn keyword mpDef font_coding_scheme font_extra_space font_identifier syn keyword mpDef font_normal_shrink font_normal_space syn keyword mpDef font_normal_stretch font_quad font_size font_slant syn keyword mpDef font_x_height italcorr labelfont lowres_fix makebox syn keyword mpDef makegrid maketicks mode_def mode_setup proofrule syn keyword mpDef smode syn keyword mpVardef hround proofrulethickness vround syn keyword mpNewInternal blacker o_correction syn keyword mpVariable extra_beginchar extra_endchar extra_setup rulepen " plus some no-ops, also from mfplain.mp syn keyword mpDef cull cullit gfcorners imagerules nodisplays syn keyword mpDef notransforms openit proofoffset screenchars syn keyword mpDef screenrule screenstrokes showit syn keyword mpVardef grayfont slantfont titlefont syn keyword mpVariable currenttransform syn keyword mpConstant unitpixel " These are not listed in the MetaPost manual, and some are ignored by " MetaPost, but are nonetheless defined in mfplain.mp syn keyword mpDef killtext syn match mpVardef "\<good\.\%(x\|y\|lft\|rt\|top\|bot\)\>" syn keyword mpVariable aspect_ratio localfont mag mode mode_name syn keyword mpVariable proofcolor syn keyword mpConstant lowres proof smoke syn keyword mpNewInternal autorounding bp_per_pixel granularity syn keyword mpNewInternal number_of_modes proofing smoothing turningcheck endif " Keywords defined by all base macro packages: " - (r)boxes.mp " - format.mp " - graph.mp " - marith.mp " - sarith.mp " - string.mp " - TEX.mp if get(g:, "other_mp_macros", 1) " boxes and rboxes syn keyword mpDef boxjoin drawboxed drawboxes drawunboxed syn keyword mpNewInternal circmargin defaultdx defaultdy rbox_radius syn keyword mpVardef boxit bpath circleit fixpos fixsize generic_declare syn keyword mpVardef generic_redeclare generisize pic rboxit str_prefix " format syn keyword mpVardef Mformat format init_numbers roundd syn keyword mpVariable Fe_base Fe_plus syn keyword mpConstant Ten_to " graph syn keyword mpDef Gfor Gxyscale OUT auto begingraph endgraph gdata syn keyword mpDef gdraw gdrawarrow gdrawdblarrow gfill plot syn keyword mpVardef augment autogrid frame gdotlabel glabel grid itick syn keyword mpVardef otick syn keyword mpVardef Mreadpath setcoords setrange syn keyword mpNewInternal Gmarks Gminlog Gpaths linear log syn keyword mpVariable Autoform Gemarks Glmarks Gumarks syn keyword mpConstant Gtemplate syn match mpVariable /Gmargin\.\%(low\|high\)/ " marith syn keyword mpVardef Mabs Meform Mexp Mexp_str Mlog Mlog_Str Mlog_str syn keyword mpPrimaryDef Mdiv Mmul syn keyword mpSecondaryDef Madd Msub syn keyword mpTertiaryDef Mleq syn keyword mpNewInternal Mten Mzero " sarith syn keyword mpVardef Sabs Scvnum syn keyword mpPrimaryDef Sdiv Smul syn keyword mpSecondaryDef Sadd Ssub syn keyword mpTertiaryDef Sleq Sneq " string syn keyword mpVardef cspan isdigit loptok " TEX syn keyword mpVardef TEX TEXPOST TEXPRE endif " Up to date as of 23-Sep-2016. if get(b:, 'mp_metafun_macros', get(g:, 'mp_metafun_macros', 0)) " Highlight TeX keywords (for use in ConTeXt documents) syn match mpTeXKeyword '\\[a-zA-Z@]\+' " These keywords have been added manually. syn keyword mpPrimitive runscript " The following MetaFun keywords have been extracted automatically from " ConTeXt source code. They include all "public" macros (where a macro is " considered public if and only if it does not start with _, mfun_, mlib_, or " do_, and it does not end with _), all "public" unsaved variables, and all " `let` statements. " mp-abck.mpiv syn keyword mpDef abck_grid_line anchor_box box_found boxfilloptions syn keyword mpDef boxgridoptions boxlineoptions draw_multi_pars syn keyword mpDef draw_multi_side draw_multi_side_path freeze_box syn keyword mpDef initialize_box initialize_box_pos syn keyword mpDef multi_side_draw_options show_multi_kind syn keyword mpDef show_multi_pars syn keyword mpVardef abck_baseline_grid abck_draw_path abck_graphic_grid syn keyword mpVariable boxdashtype boxfilloffset boxfilltype syn keyword mpVariable boxgriddirection boxgriddistance boxgridshift syn keyword mpVariable boxgridtype boxgridwidth boxlineoffset syn keyword mpVariable boxlineradius boxlinetype boxlinewidth multikind syn keyword mpConstant context_abck " mp-apos.mpiv syn keyword mpDef anch_sidebars_draw boxfilloptions boxlineoptions syn keyword mpDef connect_positions syn keyword mpConstant context_apos " mp-asnc.mpiv syn keyword mpDef FlushSyncTasks ProcessSyncTask ResetSyncTasks syn keyword mpDef SetSyncColor SetSyncThreshold SyncTask syn keyword mpVardef PrepareSyncTasks SyncBox TheSyncColor syn keyword mpVardef TheSyncThreshold syn keyword mpVariable CurrentSyncClass NOfSyncPaths SyncColor syn keyword mpVariable SyncLeftOffset SyncPaths SyncTasks SyncThreshold syn keyword mpVariable SyncThresholdMethod SyncWidth syn keyword mpConstant context_asnc " mp-back.mpiv syn keyword mpDef some_double_back some_hash syn keyword mpVariable back_nillcolor syn keyword mpConstant context_back " mp-bare.mpiv syn keyword mpVardef colordecimals rawtextext syn keyword mpPrimaryDef infont syn keyword mpConstant context_bare " mp-base.mpiv " This is essentially plain.mp with only a few keywords added syn keyword mpNumExp graypart syn keyword mpType graycolor greycolor syn keyword mpConstant cyan magenta yellow " mp-butt.mpiv syn keyword mpDef predefinedbutton some_button syn keyword mpConstant context_butt " mp-char.mpiv syn keyword mpDef flow_begin_chart flow_begin_sub_chart syn keyword mpDef flow_chart_draw_comment flow_chart_draw_exit syn keyword mpDef flow_chart_draw_label flow_chart_draw_text syn keyword mpDef flow_clip_chart flow_collapse_points syn keyword mpDef flow_connect_bottom_bottom flow_connect_bottom_left syn keyword mpDef flow_connect_bottom_right flow_connect_bottom_top syn keyword mpDef flow_connect_left_bottom flow_connect_left_left syn keyword mpDef flow_connect_left_right flow_connect_left_top syn keyword mpDef flow_connect_right_bottom flow_connect_right_left syn keyword mpDef flow_connect_right_right flow_connect_right_top syn keyword mpDef flow_connect_top_bottom flow_connect_top_left syn keyword mpDef flow_connect_top_right flow_connect_top_top syn keyword mpDef flow_draw_connection flow_draw_connection_point syn keyword mpDef flow_draw_midpoint flow_draw_shape syn keyword mpDef flow_draw_test_area flow_draw_test_shape syn keyword mpDef flow_draw_test_shapes flow_end_chart syn keyword mpDef flow_end_sub_chart flow_flush_connections syn keyword mpDef flow_flush_picture flow_flush_pictures syn keyword mpDef flow_flush_shape flow_flush_shapes syn keyword mpDef flow_initialize_grid flow_new_chart flow_new_shape syn keyword mpDef flow_scaled_to_grid flow_show_connection syn keyword mpDef flow_show_connections flow_show_shapes syn keyword mpDef flow_xy_offset flow_y_pos syn keyword mpVardef flow_connection_path flow_down_on_grid syn keyword mpVardef flow_down_to_grid flow_i_point flow_left_on_grid syn keyword mpVardef flow_left_to_grid flow_offset syn keyword mpVardef flow_points_initialized flow_right_on_grid syn keyword mpVardef flow_right_to_grid flow_smooth_connection syn keyword mpVardef flow_trim_points flow_trimmed flow_up_on_grid syn keyword mpVardef flow_up_to_grid flow_valid_connection syn keyword mpVardef flow_x_on_grid flow_xy_bottom flow_xy_left syn keyword mpVardef flow_xy_on_grid flow_xy_right flow_xy_top syn keyword mpVardef flow_y_on_grid syn keyword mpVariable flow_arrowtip flow_chart_background_color syn keyword mpVariable flow_chart_offset flow_comment_offset syn keyword mpVariable flow_connection_arrow_size syn keyword mpVariable flow_connection_dash_size syn keyword mpVariable flow_connection_line_color syn keyword mpVariable flow_connection_line_width syn keyword mpVariable flow_connection_smooth_size flow_connections syn keyword mpVariable flow_cpath flow_dash_pattern flow_dashline syn keyword mpVariable flow_exit_offset flow_forcevalid flow_grid_height syn keyword mpVariable flow_grid_width flow_label_offset flow_max_x syn keyword mpVariable flow_max_y flow_peepshape flow_reverse_connection syn keyword mpVariable flow_reverse_y flow_shape_action flow_shape_archive syn keyword mpVariable flow_shape_decision flow_shape_down syn keyword mpVariable flow_shape_fill_color flow_shape_height syn keyword mpVariable flow_shape_left flow_shape_line_color syn keyword mpVariable flow_shape_line_width flow_shape_loop syn keyword mpVariable flow_shape_multidocument flow_shape_node syn keyword mpVariable flow_shape_procedure flow_shape_product syn keyword mpVariable flow_shape_right flow_shape_singledocument syn keyword mpVariable flow_shape_subprocedure flow_shape_up syn keyword mpVariable flow_shape_wait flow_shape_width syn keyword mpVariable flow_show_all_points flow_show_con_points syn keyword mpVariable flow_show_mid_points flow_showcrossing flow_smooth syn keyword mpVariable flow_touchshape flow_xypoint flow_zfactor syn keyword mpConstant context_flow " mp-chem.mpiv syn keyword mpDef chem_init_all chem_reset chem_start_structure syn keyword mpDef chem_transformed syn keyword mpVardef chem_ad chem_adj chem_align chem_arrow chem_au syn keyword mpVardef chem_b chem_bb chem_bd chem_bw chem_c chem_cc syn keyword mpVardef chem_ccd chem_cd chem_crz chem_cz chem_dash chem_db syn keyword mpVardef chem_diff chem_dir chem_do chem_dr chem_draw syn keyword mpVardef chem_drawarrow chem_eb chem_ed chem_ep chem_er syn keyword mpVardef chem_es chem_et chem_fill chem_hb chem_init_some syn keyword mpVardef chem_label chem_ldb chem_ldd chem_line chem_lr syn keyword mpVardef chem_lrb chem_lrbd chem_lrd chem_lrh chem_lrn syn keyword mpVardef chem_lrt chem_lrz chem_lsr chem_lsub chem_mark syn keyword mpVardef chem_marked chem_mid chem_mids chem_midz chem_mir syn keyword mpVardef chem_mov chem_move chem_number chem_oe chem_off syn keyword mpVardef chem_pb chem_pe chem_r chem_r_fragment chem_rb syn keyword mpVardef chem_rbd chem_rd chem_rdb chem_rdd chem_restore syn keyword mpVardef chem_rh chem_rm chem_rn chem_rot chem_rr chem_rrb syn keyword mpVardef chem_rrbd chem_rrd chem_rrh chem_rrn chem_rrt syn keyword mpVardef chem_rrz chem_rsr chem_rsub chem_rt chem_rz chem_s syn keyword mpVardef chem_save chem_sb chem_sd chem_set chem_sr chem_ss syn keyword mpVardef chem_start_component chem_stop_component syn keyword mpVardef chem_stop_structure chem_sub chem_symbol chem_tb syn keyword mpVardef chem_text chem_z chem_zln chem_zlt chem_zn chem_zrn syn keyword mpVardef chem_zrt chem_zt syn keyword mpVariable chem_mark_pair chem_stack_mirror chem_stack_origin syn keyword mpVariable chem_stack_p chem_stack_previous syn keyword mpVariable chem_stack_rotation chem_trace_boundingbox syn keyword mpVariable chem_trace_nesting chem_trace_text syn keyword mpConstant context_chem " mp-core.mpiv syn keyword mpDef FlushSyncTasks ProcessSyncTask syn keyword mpDef RegisterLocalTextArea RegisterPlainTextArea syn keyword mpDef RegisterRegionTextArea RegisterTextArea syn keyword mpDef ResetLocalTextArea ResetSyncTasks ResetTextAreas syn keyword mpDef SaveTextAreas SetSyncColor SetSyncThreshold syn keyword mpDef SyncTask anchor_box box_found boxfilloptions syn keyword mpDef boxgridoptions boxlineoptions collapse_multi_pars syn keyword mpDef draw_box draw_multi_pars draw_par freeze_box syn keyword mpDef initialize_area initialize_area_par initialize_box syn keyword mpDef initialize_box_pos initialize_par syn keyword mpDef prepare_multi_pars relocate_multipars save_multipar syn keyword mpDef set_par_line_height show_multi_pars show_par syn keyword mpDef simplify_multi_pars sort_multi_pars syn keyword mpVardef InsideSavedTextArea InsideSomeSavedTextArea syn keyword mpVardef InsideSomeTextArea InsideTextArea PrepareSyncTasks syn keyword mpVardef SyncBox TextAreaH TextAreaW TextAreaWH TextAreaX syn keyword mpVardef TextAreaXY TextAreaY TheSyncColor TheSyncThreshold syn keyword mpVardef baseline_grid graphic_grid multi_par_at_top syn keyword mpVariable CurrentSyncClass NOfSavedTextAreas syn keyword mpVariable NOfSavedTextColumns NOfSyncPaths NOfTextAreas syn keyword mpVariable NOfTextColumns PlainTextArea RegionTextArea syn keyword mpVariable SavedTextColumns SyncColor SyncLeftOffset SyncPaths syn keyword mpVariable SyncTasks SyncThreshold SyncThresholdMethod syn keyword mpVariable SyncWidth TextAreas TextColumns syn keyword mpVariable auto_multi_par_hsize boxdashtype boxfilloffset syn keyword mpVariable boxfilltype boxgriddirection boxgriddistance syn keyword mpVariable boxgridshift boxgridtype boxgridwidth boxlineradius syn keyword mpVariable boxlinetype boxlinewidth check_multi_par_chain syn keyword mpVariable compensate_multi_par_topskip syn keyword mpVariable enable_multi_par_fallback force_multi_par_chain syn keyword mpVariable ignore_multi_par_page last_multi_par_shift lefthang syn keyword mpVariable local_multi_par_area multi_column_first_page_hack syn keyword mpVariable multi_par_pages multiloc multilocs multipar syn keyword mpVariable multipars multiref multirefs nofmultipars syn keyword mpVariable obey_multi_par_hang obey_multi_par_more syn keyword mpVariable one_piece_multi_par par_hang_after par_hang_indent syn keyword mpVariable par_indent par_left_skip par_line_height syn keyword mpVariable par_right_skip par_start_pos par_stop_pos syn keyword mpVariable par_strut_depth par_strut_height ppos righthang syn keyword mpVariable snap_multi_par_tops somehang span_multi_column_pars syn keyword mpVariable use_multi_par_region syn keyword mpConstant context_core syn keyword LET anchor_area anchor_par draw_area " mp-cows.mpiv syn keyword mpConstant context_cows cow " mp-crop.mpiv syn keyword mpDef page_marks_add_color page_marks_add_lines syn keyword mpDef page_marks_add_marking page_marks_add_number syn keyword mpVardef crop_color crop_gray crop_marks_cmyk syn keyword mpVardef crop_marks_cmykrgb crop_marks_gray crop_marks_lines syn keyword mpVariable crop_colors more page syn keyword mpConstant context_crop " mp-figs.mpiv syn keyword mpDef naturalfigure registerfigure syn keyword mpVardef figuredimensions figureheight figuresize syn keyword mpVardef figurewidth syn keyword mpConstant context_figs " mp-fobg.mpiv syn keyword mpDef DrawFoFrame syn keyword mpVardef equalpaths syn keyword mpPrimaryDef inset outset syn keyword mpVariable FoBackground FoBackgroundColor FoFrame FoLineColor syn keyword mpVariable FoLineStyle FoLineWidth FoSplit syn keyword mpConstant FoAll FoBottom FoDash FoDotted FoDouble FoGroove syn keyword mpConstant FoHidden FoInset FoLeft FoMedium FoNoColor FoNone syn keyword mpConstant FoOutset FoRidge FoRight FoSolid FoThick FoThin syn keyword mpConstant FoTop context_fobg " mp-form.mpiv syn keyword mpConstant context_form " mp-func.mpiv syn keyword mpDef constructedfunction constructedpairs syn keyword mpDef constructedpath curvedfunction curvedpairs syn keyword mpDef curvedpath function pathconnectors straightfunction syn keyword mpDef straightpairs straightpath syn keyword mpConstant context_func " mp-grap.mpiv syn keyword mpDef Gfor OUT auto begingraph circles crosses diamonds syn keyword mpDef downtriangles endgraph gdata gdraw gdrawarrow syn keyword mpDef gdrawdblarrow gfill graph_addto syn keyword mpDef graph_addto_currentpicture graph_comma syn keyword mpDef graph_coordinate_multiplication graph_draw syn keyword mpDef graph_draw_label graph_errorbar_text graph_fill syn keyword mpDef graph_generate_exponents syn keyword mpDef graph_generate_label_position syn keyword mpDef graph_generate_numbers graph_label_location syn keyword mpDef graph_scan_mark graph_scan_marks graph_setbounds syn keyword mpDef graph_suffix graph_tick_label syn keyword mpDef graph_with_pen_and_color graph_withlist syn keyword mpDef graph_xyscale lefttriangles makefunctionpath plot syn keyword mpDef plotsymbol points rainbow righttriangles smoothpath syn keyword mpDef squares stars uptriangles witherrorbars syn keyword mpVardef addtopath augment autogrid constant_fit syn keyword mpVardef constant_function det escaped_format exp syn keyword mpVardef exponential_fit exponential_function format syn keyword mpVardef formatted frame functionpath gaussian_fit syn keyword mpVardef gaussian_function gdotlabel glabel graph_Feform syn keyword mpVardef graph_Meform graph_arrowhead_extent graph_bounds syn keyword mpVardef graph_clear_bounds syn keyword mpVardef graph_convert_user_path_to_internal graph_cspan syn keyword mpVardef graph_draw_arrowhead graph_error graph_errorbars syn keyword mpVardef graph_exp graph_factor_and_exponent_to_string syn keyword mpVardef graph_gridline_picture graph_is_null syn keyword mpVardef graph_label_convert_user_to_internal graph_loptok syn keyword mpVardef graph_match_exponents graph_mlog syn keyword mpVardef graph_modified_exponent_ypart graph_pair_adjust syn keyword mpVardef graph_picture_conversion graph_post_draw syn keyword mpVardef graph_read_line graph_readpath graph_remap syn keyword mpVardef graph_scan_path graph_select_exponent_mark syn keyword mpVardef graph_select_mark graph_set_bounds syn keyword mpVardef graph_set_default_bounds graph_shapesize syn keyword mpVardef graph_stash_label graph_tick_mark_spacing syn keyword mpVardef graph_unknown_pair_bbox grid isdigit itick syn keyword mpVardef linear_fit linear_function ln logten lorentzian_fit syn keyword mpVardef lorentzian_function otick polynomial_fit syn keyword mpVardef polynomial_function power_law_fit syn keyword mpVardef power_law_function powten setcoords setrange syn keyword mpVardef sortpath strfmt tick varfmt syn keyword mpNewInternal Mzero doubleinfinity graph_log_minimum syn keyword mpNewInternal graph_minimum_number_of_marks largestmantissa syn keyword mpNewInternal linear lntwo log mlogten singleinfinity syn keyword mpVariable Autoform determinant fit_chi_squared syn keyword mpVariable graph_errorbar_picture graph_exp_marks syn keyword mpVariable graph_frame_pair_a graph_frame_pair_b syn keyword mpVariable graph_lin_marks graph_log_marks graph_modified_bias syn keyword mpVariable graph_modified_higher graph_modified_lower syn keyword mpVariable graph_shape r_s resistance_color resistance_name syn keyword mpConstant context_grap " mp-grid.mpiv syn keyword mpDef hlingrid hloggrid vlingrid vloggrid syn keyword mpVardef hlinlabel hlintext hlogtext linlin linlinpath syn keyword mpVardef linlog linlogpath loglin loglinpath loglog syn keyword mpVardef loglogpath processpath vlinlabel vlintext vlogtext syn keyword mpVariable fmt_initialize fmt_pictures fmt_precision syn keyword mpVariable fmt_separator fmt_zerocheck grid_eps syn keyword mpConstant context_grid " mp-grph.mpiv syn keyword mpDef beginfig begingraphictextfig data_mpo_file syn keyword mpDef data_mpy_file doloadfigure draw endfig syn keyword mpDef endgraphictextfig fill fixedplace graphictext syn keyword mpDef loadfigure new_graphictext normalwithshade number syn keyword mpDef old_graphictext outlinefill protectgraphicmacros syn keyword mpDef resetfig reversefill withdrawcolor withfillcolor syn keyword mpDef withshade syn keyword mpVariable currentgraphictext figureshift syn keyword mpConstant context_grph " mp-idea.mpiv syn keyword mpVardef bcomponent ccomponent gcomponent mcomponent syn keyword mpVardef rcomponent somecolor ycomponent " mp-luas.mpiv syn keyword mpDef luacall message syn keyword mpVardef MP lua lualist syn keyword mpConstant context_luas " mp-mlib.mpiv syn keyword mpDef autoalign bitmapimage circular_shade cmyk comment syn keyword mpDef defineshade eofill eofillup externalfigure figure syn keyword mpDef fillup label linear_shade multitonecolor namedcolor syn keyword mpDef nofill onlayer passarrayvariable passvariable syn keyword mpDef plain_label register resolvedcolor scantokens syn keyword mpDef set_circular_vector set_linear_vector shaded syn keyword mpDef spotcolor startpassingvariable stoppassingvariable syn keyword mpDef thelabel transparent[] usemetafunlabels syn keyword mpDef useplainlabels withcircularshade withlinearshade syn keyword mpDef withmask withproperties withshadecenter syn keyword mpDef withshadecolors withshadedirection withshadedomain syn keyword mpDef withshadefactor withshadefraction withshadeorigin syn keyword mpDef withshaderadius withshadestep withshadetransform syn keyword mpDef withshadevector withtransparency syn keyword mpVardef anchored checkbounds checkedbounds syn keyword mpVardef define_circular_shade define_linear_shade dotlabel syn keyword mpVardef escaped_format fmttext fontsize format formatted syn keyword mpVardef installlabel onetimefmttext onetimetextext syn keyword mpVardef outlinetext plain_thelabel properties rawfmttext syn keyword mpVardef rawtexbox rawtextext rule strfmt strut texbox syn keyword mpVardef textext thefmttext thelabel thetexbox thetextext syn keyword mpVardef tostring transparency_alternative_to_number syn keyword mpVardef validtexbox varfmt verbatim syn keyword mpPrimaryDef asgroup infont normalinfont shadedinto syn keyword mpPrimaryDef shownshadecenter shownshadedirection syn keyword mpPrimaryDef shownshadeorigin shownshadevector withshade syn keyword mpPrimaryDef withshademethod syn keyword mpNewInternal colorburntransparent colordodgetransparent syn keyword mpNewInternal colortransparent darkentransparent syn keyword mpNewInternal differencetransparent exclusiontransparent syn keyword mpNewInternal hardlighttransparent huetransparent syn keyword mpNewInternal lightentransparent luminositytransparent syn keyword mpNewInternal multiplytransparent normaltransparent syn keyword mpNewInternal overlaytransparent saturationtransparent syn keyword mpNewInternal screentransparent shadefactor softlighttransparent syn keyword mpNewInternal textextoffset syn keyword mpType property transparency syn keyword mpVariable currentoutlinetext shadeddown shadedleft syn keyword mpVariable shadedright shadedup shadeoffset trace_shades syn keyword mpConstant context_mlib " mp-page.mpiv syn keyword mpDef BoundCoverAreas BoundPageAreas Enlarged FakeRule syn keyword mpDef FakeWord LoadPageState OverlayBox RuleColor syn keyword mpDef SetAreaVariables SetPageArea SetPageBackPage syn keyword mpDef SetPageCoverPage SetPageField SetPageFrontPage syn keyword mpDef SetPageHsize SetPageHstep SetPageLocation syn keyword mpDef SetPagePage SetPageSpine SetPageVariables syn keyword mpDef SetPageVsize SetPageVstep StartCover StartPage syn keyword mpDef StopCover StopPage SwapPageState innerenlarged syn keyword mpDef llEnlarged lrEnlarged outerenlarged ulEnlarged syn keyword mpDef urEnlarged syn keyword mpVardef BackPageHeight BackPageWidth BackSpace BaseLineSkip syn keyword mpVardef BodyFontSize BottomDistance BottomHeight syn keyword mpVardef BottomSpace CoverHeight CoverWidth CurrentColumn syn keyword mpVardef CurrentHeight CurrentWidth CutSpace EmWidth syn keyword mpVardef ExHeight FooterDistance FooterHeight syn keyword mpVardef FrontPageHeight FrontPageWidth HSize HeaderDistance syn keyword mpVardef HeaderHeight InPageBody InnerEdgeDistance syn keyword mpVardef InnerEdgeWidth InnerMarginDistance InnerMarginWidth syn keyword mpVardef InnerSpaceWidth LastPageNumber LayoutColumnDistance syn keyword mpVardef LayoutColumnWidth LayoutColumns LeftEdgeDistance syn keyword mpVardef LeftEdgeWidth LeftMarginDistance LeftMarginWidth syn keyword mpVardef LineHeight MakeupHeight MakeupWidth NOfColumns syn keyword mpVardef NOfPages OnOddPage OnRightPage OuterEdgeDistance syn keyword mpVardef OuterEdgeWidth OuterMarginDistance OuterMarginWidth syn keyword mpVardef OuterSpaceWidth OverlayDepth OverlayHeight syn keyword mpVardef OverlayLineWidth OverlayOffset OverlayWidth syn keyword mpVardef PageDepth PageFraction PageNumber PageOffset syn keyword mpVardef PaperBleed PaperHeight PaperWidth PrintPaperHeight syn keyword mpVardef PrintPaperWidth RealPageNumber RightEdgeDistance syn keyword mpVardef RightEdgeWidth RightMarginDistance RightMarginWidth syn keyword mpVardef SpineHeight SpineWidth StrutDepth StrutHeight syn keyword mpVardef TextHeight TextWidth TopDistance TopHeight TopSkip syn keyword mpVardef TopSpace VSize defaultcolormodel syn keyword mpVariable Area BackPage CoverPage CurrentLayout Field syn keyword mpVariable FrontPage HorPos Hsize Hstep Location Page syn keyword mpVariable PageStateAvailable RuleDepth RuleDirection syn keyword mpVariable RuleFactor RuleH RuleHeight RuleOffset RuleOption syn keyword mpVariable RuleThickness RuleV RuleWidth Spine VerPos Vsize syn keyword mpVariable Vstep syn keyword mpConstant context_page " mp-shap.mpiv syn keyword mpDef drawline drawshape some_shape syn keyword mpDef start_predefined_shape_definition syn keyword mpDef stop_predefined_shape_definition syn keyword mpVardef drawpredefinedline drawpredefinedshape syn keyword mpVardef some_shape_path syn keyword mpVariable predefined_shapes predefined_shapes_xradius syn keyword mpVariable predefined_shapes_xxradius syn keyword mpVariable predefined_shapes_yradius syn keyword mpVariable predefined_shapes_yyradius syn keyword mpConstant context_shap " mp-step.mpiv syn keyword mpDef initialize_step_variables midbottomboundary syn keyword mpDef midtopboundary step_begin_cell step_begin_chart syn keyword mpDef step_cell_ali step_cell_bot step_cell_top syn keyword mpDef step_cells step_end_cell step_end_chart syn keyword mpDef step_text_bot step_text_mid step_text_top syn keyword mpDef step_texts syn keyword mpVariable cell_distance_x cell_distance_y cell_fill_color syn keyword mpVariable cell_line_color cell_line_width cell_offset syn keyword mpVariable chart_align chart_category chart_vertical syn keyword mpVariable line_distance line_height line_line_color syn keyword mpVariable line_line_width line_offset nofcells syn keyword mpVariable text_distance_set text_fill_color text_line_color syn keyword mpVariable text_line_width text_offset syn keyword mpConstant context_cell " mp-symb.mpiv syn keyword mpDef finishglyph prepareglyph syn keyword mpConstant lefttriangle midbar onebar righttriangle sidebar syn keyword mpConstant sublefttriangle subrighttriangle twobar " mp-text.mpiv syn keyword mpDef build_parshape syn keyword mpVardef found_point syn keyword mpVariable trace_parshape syn keyword mpConstant context_text " mp-tool.mpiv syn keyword mpCommand dump syn keyword mpDef addbackground b_color beginglyph break centerarrow syn keyword mpDef clearxy condition data_mpd_file detaileddraw syn keyword mpDef detailpaths dowithpath draw drawboundary syn keyword mpDef drawboundingbox drawcontrollines drawcontrolpoints syn keyword mpDef drawfill draworigin drawpath drawpathonly syn keyword mpDef drawpathwithpoints drawpoint drawpointlabels syn keyword mpDef drawpoints drawticks drawwholepath drawxticks syn keyword mpDef drawyticks endglyph fill finishsavingdata g_color syn keyword mpDef inner_boundingbox job_name leftarrow loadmodule syn keyword mpDef midarrowhead naturalizepaths newboolean newcolor syn keyword mpDef newnumeric newpair newpath newpicture newstring syn keyword mpDef newtransform normalcolors normaldraw normalfill syn keyword mpDef normalwithcolor outer_boundingbox pop_boundingbox syn keyword mpDef popboundingbox popcurrentpicture push_boundingbox syn keyword mpDef pushboundingbox pushcurrentpicture r_color readfile syn keyword mpDef recolor redraw refill register_dirty_chars syn keyword mpDef remapcolor remapcolors remappedcolor reprocess syn keyword mpDef resetarrows resetcolormap resetdrawoptions syn keyword mpDef resolvedcolor restroke retext rightarrow savedata syn keyword mpDef saveoptions scale_currentpicture set_ahlength syn keyword mpDef set_grid showgrid startplaincompatibility syn keyword mpDef startsavingdata stopplaincompatibility syn keyword mpDef stopsavingdata stripe_path_a stripe_path_n undashed syn keyword mpDef undrawfill untext visualizeddraw visualizedfill syn keyword mpDef visualizepaths withcolor withgray syn keyword mpDef xscale_currentpicture xshifted syn keyword mpDef xyscale_currentpicture yscale_currentpicture syn keyword mpDef yshifted syn keyword mpVardef acos acosh anglebetween area arrowhead syn keyword mpVardef arrowheadonpath arrowpath asciistring asin asinh syn keyword mpVardef atan basiccolors bbheight bbwidth bcomponent syn keyword mpVardef blackcolor bottomboundary boundingbox c_phantom syn keyword mpVardef ccomponent center cleanstring colorcircle syn keyword mpVardef colordecimals colordecimalslist colorlike colorpart syn keyword mpVardef colortype complementary complemented copylist cos syn keyword mpVardef cosh cot cotd curved ddddecimal dddecimal ddecimal syn keyword mpVardef decorated drawarrowpath epsed exp freedotlabel syn keyword mpVardef freelabel gcomponent getunstringed grayed greyed syn keyword mpVardef hsvtorgb infinite innerboundingbox interpolated inv syn keyword mpVardef invcos inverted invsin invtan laddered leftboundary syn keyword mpVardef leftpath leftrightpath listsize listtocurves syn keyword mpVardef listtolines ln log mcomponent new_on_grid syn keyword mpVardef outerboundingbox paired pen_size penpoint phantom syn keyword mpVardef pointarrow pow punked rangepath rcomponent syn keyword mpVardef redecorated repathed rightboundary rightpath syn keyword mpVardef rotation roundedsquare set_inner_boundingbox syn keyword mpVardef set_outer_boundingbox setunstringed shapedlist syn keyword mpVardef simplified sin sinh sortlist sqr straightpath tan syn keyword mpVardef tand tanh tensecircle thefreelabel topboundary syn keyword mpVardef tripled undecorated unitvector unspiked unstringed syn keyword mpVardef whitecolor ycomponent syn keyword mpPrimaryDef along blownup bottomenlarged cornered crossed syn keyword mpPrimaryDef enlarged enlonged leftenlarged llenlarged llmoved syn keyword mpPrimaryDef lrenlarged lrmoved on paralleled randomized syn keyword mpPrimaryDef randomizedcontrols randomshifted rightenlarged syn keyword mpPrimaryDef shortened sized smoothed snapped softened squeezed syn keyword mpPrimaryDef stretched superellipsed topenlarged ulenlarged syn keyword mpPrimaryDef ulmoved uncolored urenlarged urmoved xsized syn keyword mpPrimaryDef xstretched xyscaled xysized ysized ystretched zmod syn keyword mpSecondaryDef anglestriped intersection_point numberstriped syn keyword mpSecondaryDef peepholed syn keyword mpTertiaryDef cutends syn keyword mpNewInternal ahdimple ahvariant anglelength anglemethod syn keyword mpNewInternal angleoffset charscale cmykcolormodel graycolormodel syn keyword mpNewInternal greycolormodel maxdimensions metapostversion syn keyword mpNewInternal nocolormodel rgbcolormodel striped_normal_inner syn keyword mpNewInternal striped_normal_outer striped_reverse_inner syn keyword mpNewInternal striped_reverse_outer syn keyword mpType grayscale greyscale quadruplet triplet syn keyword mpVariable ahfactor collapse_data color_map drawoptionsfactor syn keyword mpVariable freedotlabelsize freelabeloffset grid grid_full syn keyword mpVariable grid_h grid_left grid_nx grid_ny grid_w grid_x syn keyword mpVariable grid_y intersection_found originlength syn keyword mpVariable plain_compatibility_data pointlabelfont syn keyword mpVariable pointlabelscale refillbackground savingdata syn keyword mpVariable savingdatadone swappointlabels ticklength tickstep syn keyword mpConstant CRLF DQUOTE PERCENT SPACE bcircle context_tool crlf syn keyword mpConstant darkblue darkcyan darkgray darkgreen darkmagenta syn keyword mpConstant darkred darkyellow downtriangle dquote freesquare syn keyword mpConstant fulldiamond fullsquare fulltriangle lcircle syn keyword mpConstant lefttriangle lightgray llcircle lltriangle lrcircle syn keyword mpConstant lrtriangle mpversion nocolor noline oddly syn keyword mpConstant originpath percent rcircle righttriangle space syn keyword mpConstant tcircle triangle ulcircle ultriangle unitcircle syn keyword mpConstant unitdiamond unittriangle uptriangle urcircle syn keyword mpConstant urtriangle endif " MetaFun macros " Define the default highlighting hi def link mpTeXdelim mpPrimitive hi def link mpBoolExp mfBoolExp hi def link mpNumExp mfNumExp hi def link mpPairExp mfPairExp hi def link mpPathExp mfPathExp hi def link mpPenExp mfPenExp hi def link mpPicExp mfPicExp hi def link mpStringExp mfStringExp hi def link mpInternal mfInternal hi def link mpCommand mfCommand hi def link mpType mfType hi def link mpPrimitive mfPrimitive hi def link mpDef mfDef hi def link mpVardef mpDef hi def link mpPrimaryDef mpDef hi def link mpSecondaryDef mpDef hi def link mpTertiaryDef mpDef hi def link mpNewInternal mpInternal hi def link mpVariable mfVariable hi def link mpConstant mfConstant hi def link mpOnOff mpPrimitive hi def link mpDash mpPrimitive hi def link mpTeXKeyword Identifier let b:current_syntax = "mp" let &cpo = s:cpo_sav unlet! s:cpo_sav " vim:sw=2 PK�������!�N������vim80/syntax/nosyntax.vimnu�[��������" Vim syntax support file " Maintainer: Bram Moolenaar <Bram@vim.org> " Last Change: 2006 Apr 16 " This file is used for ":syntax off". " It removes the autocommands and stops highlighting for all buffers. if !has("syntax") finish endif " Remove all autocommands for the Syntax event. This also avoids that " "syntax=foo" in a modeline triggers the SynSet() function of synload.vim. au! Syntax " remove all syntax autocommands and remove the syntax for each buffer augroup syntaxset au! au BufEnter * syn clear au BufEnter * if exists("b:current_syntax") | unlet b:current_syntax | endif doautoall syntaxset BufEnter * au! augroup END if exists("syntax_on") unlet syntax_on endif if exists("syntax_manual") unlet syntax_manual endif PK�������!�#wTɣ��ɣ����vim80/syntax/sqlanywhere.vimnu�[��������" Vim syntax file " Language: SQL, Adaptive Server Anywhere " Maintainer: David Fishburn <dfishburn dot vim at gmail dot com> " Last Change: 2013 May 13 " Version: 16.0.0 " Description: Updated to Adaptive Server Anywhere 16.0.0 " Updated to Adaptive Server Anywhere 12.0.1 (including spatial data) " Updated to Adaptive Server Anywhere 11.0.1 " Updated to Adaptive Server Anywhere 10.0.1 " Updated to Adaptive Server Anywhere 9.0.2 " Updated to Adaptive Server Anywhere 9.0.1 " Updated to Adaptive Server Anywhere 9.0.0 " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " The SQL reserved words, defined as keywords. syn keyword sqlSpecial false null true " common functions syn keyword sqlFunction abs argn avg bintohex bintostr syn keyword sqlFunction byte_length byte_substr char_length syn keyword sqlFunction compare count count_big datalength date syn keyword sqlFunction date_format dateadd datediff datename syn keyword sqlFunction datepart day dayname days debug_eng syn keyword sqlFunction dense_rank density dialect difference syn keyword sqlFunction dow estimate estimate_source evaluate syn keyword sqlFunction experience_estimate explanation syn keyword sqlFunction get_identity graphical_plan syn keyword sqlFunction graphical_ulplan greater grouping syn keyword sqlFunction hextobin hextoint hour hours identity syn keyword sqlFunction ifnull index_estimate inttohex isdate syn keyword sqlFunction isencrypted isnull isnumeric syn keyword sqlFunction lang_message length lesser like_end syn keyword sqlFunction like_start list long_ulplan lookup max syn keyword sqlFunction min minute minutes month monthname syn keyword sqlFunction months newid now nullif number syn keyword sqlFunction percent_rank plan quarter rand rank syn keyword sqlFunction regexp_compile regexp_compile_patindex syn keyword sqlFunction remainder rewrite rowid second seconds syn keyword sqlFunction short_ulplan similar sortkey soundex syn keyword sqlFunction stddev stack_trace str string strtobin strtouuid stuff syn keyword sqlFunction subpartition substr substring sum switchoffset sysdatetimeoffset syn keyword sqlFunction textptr todate todatetimeoffset today totimestamp traceback transactsql syn keyword sqlFunction ts_index_statistics ts_table_statistics syn keyword sqlFunction tsequal ulplan user_id user_name utc_now syn keyword sqlFunction uuidtostr varexists variance watcomsql syn keyword sqlFunction weeks wsql_state year years ymd " 9.0.1 functions syn keyword sqlFunction acos asin atan atn2 cast ceiling convert cos cot syn keyword sqlFunction char_length coalesce dateformat datetime degrees exp syn keyword sqlFunction floor getdate insertstr syn keyword sqlFunction log log10 lower mod pi power syn keyword sqlFunction property radians replicate round sign sin syn keyword sqlFunction sqldialect tan truncate truncnum syn keyword sqlFunction base64_encode base64_decode syn keyword sqlFunction hash compress decompress encrypt decrypt " 11.0.1 functions syn keyword sqlFunction connection_extended_property text_handle_vector_match syn keyword sqlFunction read_client_file write_client_file " 12.0.1 functions syn keyword sqlFunction http_response_header " string functions syn keyword sqlFunction ascii char left ltrim repeat syn keyword sqlFunction space right rtrim trim lcase ucase syn keyword sqlFunction locate charindex patindex replace syn keyword sqlFunction errormsg csconvert " property functions syn keyword sqlFunction db_id db_name property_name syn keyword sqlFunction property_description property_number syn keyword sqlFunction next_connection next_database property syn keyword sqlFunction connection_property db_property db_extended_property syn keyword sqlFunction event_parmeter event_condition event_condition_name " sa_ procedures syn keyword sqlFunction sa_add_index_consultant_analysis syn keyword sqlFunction sa_add_workload_query syn keyword sqlFunction sa_app_deregister syn keyword sqlFunction sa_app_get_infoStr syn keyword sqlFunction sa_app_get_status syn keyword sqlFunction sa_app_register syn keyword sqlFunction sa_app_registration_unlock syn keyword sqlFunction sa_app_set_infoStr syn keyword sqlFunction sa_audit_string syn keyword sqlFunction sa_check_commit syn keyword sqlFunction sa_checkpoint_execute syn keyword sqlFunction sa_conn_activity syn keyword sqlFunction sa_conn_compression_info syn keyword sqlFunction sa_conn_deregister syn keyword sqlFunction sa_conn_info syn keyword sqlFunction sa_conn_properties syn keyword sqlFunction sa_conn_properties_by_conn syn keyword sqlFunction sa_conn_properties_by_name syn keyword sqlFunction sa_conn_register syn keyword sqlFunction sa_conn_set_status syn keyword sqlFunction sa_create_analysis_from_query syn keyword sqlFunction sa_db_info syn keyword sqlFunction sa_db_properties syn keyword sqlFunction sa_disable_auditing_type syn keyword sqlFunction sa_disable_index syn keyword sqlFunction sa_disk_free_space syn keyword sqlFunction sa_enable_auditing_type syn keyword sqlFunction sa_enable_index syn keyword sqlFunction sa_end_forward_to syn keyword sqlFunction sa_eng_properties syn keyword sqlFunction sa_event_schedules syn keyword sqlFunction sa_exec_script syn keyword sqlFunction sa_flush_cache syn keyword sqlFunction sa_flush_statistics syn keyword sqlFunction sa_forward_to syn keyword sqlFunction sa_get_dtt syn keyword sqlFunction sa_get_histogram syn keyword sqlFunction sa_get_request_profile syn keyword sqlFunction sa_get_request_profile_sub syn keyword sqlFunction sa_get_request_times syn keyword sqlFunction sa_get_server_messages syn keyword sqlFunction sa_get_simulated_scale_factors syn keyword sqlFunction sa_get_workload_capture_status syn keyword sqlFunction sa_index_density syn keyword sqlFunction sa_index_levels syn keyword sqlFunction sa_index_statistics syn keyword sqlFunction sa_internal_alter_index_ability syn keyword sqlFunction sa_internal_create_analysis_from_query syn keyword sqlFunction sa_internal_disk_free_space syn keyword sqlFunction sa_internal_get_dtt syn keyword sqlFunction sa_internal_get_histogram syn keyword sqlFunction sa_internal_get_request_times syn keyword sqlFunction sa_internal_get_simulated_scale_factors syn keyword sqlFunction sa_internal_get_workload_capture_status syn keyword sqlFunction sa_internal_index_density syn keyword sqlFunction sa_internal_index_levels syn keyword sqlFunction sa_internal_index_statistics syn keyword sqlFunction sa_internal_java_loaded_classes syn keyword sqlFunction sa_internal_locks syn keyword sqlFunction sa_internal_pause_workload_capture syn keyword sqlFunction sa_internal_procedure_profile syn keyword sqlFunction sa_internal_procedure_profile_summary syn keyword sqlFunction sa_internal_read_backup_history syn keyword sqlFunction sa_internal_recommend_indexes syn keyword sqlFunction sa_internal_reset_identity syn keyword sqlFunction sa_internal_resume_workload_capture syn keyword sqlFunction sa_internal_start_workload_capture syn keyword sqlFunction sa_internal_stop_index_consultant syn keyword sqlFunction sa_internal_stop_workload_capture syn keyword sqlFunction sa_internal_table_fragmentation syn keyword sqlFunction sa_internal_table_page_usage syn keyword sqlFunction sa_internal_table_stats syn keyword sqlFunction sa_internal_virtual_sysindex syn keyword sqlFunction sa_internal_virtual_sysixcol syn keyword sqlFunction sa_java_loaded_classes syn keyword sqlFunction sa_jdk_version syn keyword sqlFunction sa_locks syn keyword sqlFunction sa_make_object syn keyword sqlFunction sa_pause_workload_capture syn keyword sqlFunction sa_proc_debug_attach_to_connection syn keyword sqlFunction sa_proc_debug_connect syn keyword sqlFunction sa_proc_debug_detach_from_connection syn keyword sqlFunction sa_proc_debug_disconnect syn keyword sqlFunction sa_proc_debug_get_connection_name syn keyword sqlFunction sa_proc_debug_release_connection syn keyword sqlFunction sa_proc_debug_request syn keyword sqlFunction sa_proc_debug_version syn keyword sqlFunction sa_proc_debug_wait_for_connection syn keyword sqlFunction sa_procedure_profile syn keyword sqlFunction sa_procedure_profile_summary syn keyword sqlFunction sa_read_backup_history syn keyword sqlFunction sa_recommend_indexes syn keyword sqlFunction sa_recompile_views syn keyword sqlFunction sa_remove_index_consultant_analysis syn keyword sqlFunction sa_remove_index_consultant_workload syn keyword sqlFunction sa_reset_identity syn keyword sqlFunction sa_resume_workload_capture syn keyword sqlFunction sa_server_option syn keyword sqlFunction sa_set_simulated_scale_factor syn keyword sqlFunction sa_setremoteuser syn keyword sqlFunction sa_setsubscription syn keyword sqlFunction sa_start_recording_commits syn keyword sqlFunction sa_start_workload_capture syn keyword sqlFunction sa_statement_text syn keyword sqlFunction sa_stop_index_consultant syn keyword sqlFunction sa_stop_recording_commits syn keyword sqlFunction sa_stop_workload_capture syn keyword sqlFunction sa_sync syn keyword sqlFunction sa_sync_sub syn keyword sqlFunction sa_table_fragmentation syn keyword sqlFunction sa_table_page_usage syn keyword sqlFunction sa_table_stats syn keyword sqlFunction sa_update_index_consultant_workload syn keyword sqlFunction sa_validate syn keyword sqlFunction sa_virtual_sysindex syn keyword sqlFunction sa_virtual_sysixcol " sp_ procedures syn keyword sqlFunction sp_addalias syn keyword sqlFunction sp_addauditrecord syn keyword sqlFunction sp_adddumpdevice syn keyword sqlFunction sp_addgroup syn keyword sqlFunction sp_addlanguage syn keyword sqlFunction sp_addlogin syn keyword sqlFunction sp_addmessage syn keyword sqlFunction sp_addremotelogin syn keyword sqlFunction sp_addsegment syn keyword sqlFunction sp_addserver syn keyword sqlFunction sp_addthreshold syn keyword sqlFunction sp_addtype syn keyword sqlFunction sp_adduser syn keyword sqlFunction sp_auditdatabase syn keyword sqlFunction sp_auditlogin syn keyword sqlFunction sp_auditobject syn keyword sqlFunction sp_auditoption syn keyword sqlFunction sp_auditsproc syn keyword sqlFunction sp_bindefault syn keyword sqlFunction sp_bindmsg syn keyword sqlFunction sp_bindrule syn keyword sqlFunction sp_changedbowner syn keyword sqlFunction sp_changegroup syn keyword sqlFunction sp_checknames syn keyword sqlFunction sp_checkperms syn keyword sqlFunction sp_checkreswords syn keyword sqlFunction sp_clearstats syn keyword sqlFunction sp_column_privileges syn keyword sqlFunction sp_columns syn keyword sqlFunction sp_commonkey syn keyword sqlFunction sp_configure syn keyword sqlFunction sp_cursorinfo syn keyword sqlFunction sp_databases syn keyword sqlFunction sp_datatype_info syn keyword sqlFunction sp_dboption syn keyword sqlFunction sp_dbremap syn keyword sqlFunction sp_depends syn keyword sqlFunction sp_diskdefault syn keyword sqlFunction sp_displaylogin syn keyword sqlFunction sp_dropalias syn keyword sqlFunction sp_dropdevice syn keyword sqlFunction sp_dropgroup syn keyword sqlFunction sp_dropkey syn keyword sqlFunction sp_droplanguage syn keyword sqlFunction sp_droplogin syn keyword sqlFunction sp_dropmessage syn keyword sqlFunction sp_dropremotelogin syn keyword sqlFunction sp_dropsegment syn keyword sqlFunction sp_dropserver syn keyword sqlFunction sp_dropthreshold syn keyword sqlFunction sp_droptype syn keyword sqlFunction sp_dropuser syn keyword sqlFunction sp_estspace syn keyword sqlFunction sp_extendsegment syn keyword sqlFunction sp_fkeys syn keyword sqlFunction sp_foreignkey syn keyword sqlFunction sp_getmessage syn keyword sqlFunction sp_help syn keyword sqlFunction sp_helpconstraint syn keyword sqlFunction sp_helpdb syn keyword sqlFunction sp_helpdevice syn keyword sqlFunction sp_helpgroup syn keyword sqlFunction sp_helpindex syn keyword sqlFunction sp_helpjoins syn keyword sqlFunction sp_helpkey syn keyword sqlFunction sp_helplanguage syn keyword sqlFunction sp_helplog syn keyword sqlFunction sp_helpprotect syn keyword sqlFunction sp_helpremotelogin syn keyword sqlFunction sp_helpsegment syn keyword sqlFunction sp_helpserver syn keyword sqlFunction sp_helpsort syn keyword sqlFunction sp_helptext syn keyword sqlFunction sp_helpthreshold syn keyword sqlFunction sp_helpuser syn keyword sqlFunction sp_indsuspect syn keyword sqlFunction sp_lock syn keyword sqlFunction sp_locklogin syn keyword sqlFunction sp_logdevice syn keyword sqlFunction sp_login_environment syn keyword sqlFunction sp_modifylogin syn keyword sqlFunction sp_modifythreshold syn keyword sqlFunction sp_monitor syn keyword sqlFunction sp_password syn keyword sqlFunction sp_pkeys syn keyword sqlFunction sp_placeobject syn keyword sqlFunction sp_primarykey syn keyword sqlFunction sp_procxmode syn keyword sqlFunction sp_recompile syn keyword sqlFunction sp_remap syn keyword sqlFunction sp_remote_columns syn keyword sqlFunction sp_remote_exported_keys syn keyword sqlFunction sp_remote_imported_keys syn keyword sqlFunction sp_remote_pcols syn keyword sqlFunction sp_remote_primary_keys syn keyword sqlFunction sp_remote_procedures syn keyword sqlFunction sp_remote_tables syn keyword sqlFunction sp_remoteoption syn keyword sqlFunction sp_rename syn keyword sqlFunction sp_renamedb syn keyword sqlFunction sp_reportstats syn keyword sqlFunction sp_reset_tsql_environment syn keyword sqlFunction sp_role syn keyword sqlFunction sp_server_info syn keyword sqlFunction sp_servercaps syn keyword sqlFunction sp_serverinfo syn keyword sqlFunction sp_serveroption syn keyword sqlFunction sp_setlangalias syn keyword sqlFunction sp_setreplicate syn keyword sqlFunction sp_setrepproc syn keyword sqlFunction sp_setreptable syn keyword sqlFunction sp_spaceused syn keyword sqlFunction sp_special_columns syn keyword sqlFunction sp_sproc_columns syn keyword sqlFunction sp_statistics syn keyword sqlFunction sp_stored_procedures syn keyword sqlFunction sp_syntax syn keyword sqlFunction sp_table_privileges syn keyword sqlFunction sp_tables syn keyword sqlFunction sp_tsql_environment syn keyword sqlFunction sp_tsql_feature_not_supported syn keyword sqlFunction sp_unbindefault syn keyword sqlFunction sp_unbindmsg syn keyword sqlFunction sp_unbindrule syn keyword sqlFunction sp_volchanged syn keyword sqlFunction sp_who syn keyword sqlFunction xp_scanf syn keyword sqlFunction xp_sprintf " server functions syn keyword sqlFunction col_length syn keyword sqlFunction col_name syn keyword sqlFunction index_col syn keyword sqlFunction object_id syn keyword sqlFunction object_name syn keyword sqlFunction proc_role syn keyword sqlFunction show_role syn keyword sqlFunction xp_cmdshell syn keyword sqlFunction xp_msver syn keyword sqlFunction xp_read_file syn keyword sqlFunction xp_real_cmdshell syn keyword sqlFunction xp_real_read_file syn keyword sqlFunction xp_real_sendmail syn keyword sqlFunction xp_real_startmail syn keyword sqlFunction xp_real_startsmtp syn keyword sqlFunction xp_real_stopmail syn keyword sqlFunction xp_real_stopsmtp syn keyword sqlFunction xp_real_write_file syn keyword sqlFunction xp_scanf syn keyword sqlFunction xp_sendmail syn keyword sqlFunction xp_sprintf syn keyword sqlFunction xp_startmail syn keyword sqlFunction xp_startsmtp syn keyword sqlFunction xp_stopmail syn keyword sqlFunction xp_stopsmtp syn keyword sqlFunction xp_write_file " http functions syn keyword sqlFunction http_header http_variable syn keyword sqlFunction next_http_header next_http_response_header next_http_variable syn keyword sqlFunction sa_set_http_header sa_set_http_option syn keyword sqlFunction sa_http_variable_info sa_http_header_info " http functions 9.0.1 syn keyword sqlFunction http_encode http_decode syn keyword sqlFunction html_encode html_decode " XML function support syn keyword sqlFunction openxml xmlelement xmlforest xmlgen xmlconcat xmlagg syn keyword sqlFunction xmlattributes " Spatial Compatibility Functions syn keyword sqlFunction ST_BdMPolyFromText syn keyword sqlFunction ST_BdMPolyFromWKB syn keyword sqlFunction ST_BdPolyFromText syn keyword sqlFunction ST_BdPolyFromWKB syn keyword sqlFunction ST_CPolyFromText syn keyword sqlFunction ST_CPolyFromWKB syn keyword sqlFunction ST_CircularFromTxt syn keyword sqlFunction ST_CircularFromWKB syn keyword sqlFunction ST_CompoundFromTxt syn keyword sqlFunction ST_CompoundFromWKB syn keyword sqlFunction ST_GeomCollFromTxt syn keyword sqlFunction ST_GeomCollFromWKB syn keyword sqlFunction ST_GeomFromText syn keyword sqlFunction ST_GeomFromWKB syn keyword sqlFunction ST_LineFromText syn keyword sqlFunction ST_LineFromWKB syn keyword sqlFunction ST_MCurveFromText syn keyword sqlFunction ST_MCurveFromWKB syn keyword sqlFunction ST_MLineFromText syn keyword sqlFunction ST_MLineFromWKB syn keyword sqlFunction ST_MPointFromText syn keyword sqlFunction ST_MPointFromWKB syn keyword sqlFunction ST_MPolyFromText syn keyword sqlFunction ST_MPolyFromWKB syn keyword sqlFunction ST_MSurfaceFromTxt syn keyword sqlFunction ST_MSurfaceFromWKB syn keyword sqlFunction ST_OrderingEquals syn keyword sqlFunction ST_PointFromText syn keyword sqlFunction ST_PointFromWKB syn keyword sqlFunction ST_PolyFromText syn keyword sqlFunction ST_PolyFromWKB " Spatial Structural Methods syn keyword sqlFunction ST_CoordDim syn keyword sqlFunction ST_CurveN syn keyword sqlFunction ST_Dimension syn keyword sqlFunction ST_EndPoint syn keyword sqlFunction ST_ExteriorRing syn keyword sqlFunction ST_GeometryN syn keyword sqlFunction ST_GeometryType syn keyword sqlFunction ST_InteriorRingN syn keyword sqlFunction ST_Is3D syn keyword sqlFunction ST_IsClosed syn keyword sqlFunction ST_IsEmpty syn keyword sqlFunction ST_IsMeasured syn keyword sqlFunction ST_IsRing syn keyword sqlFunction ST_IsSimple syn keyword sqlFunction ST_IsValid syn keyword sqlFunction ST_NumCurves syn keyword sqlFunction ST_NumGeometries syn keyword sqlFunction ST_NumInteriorRing syn keyword sqlFunction ST_NumPoints syn keyword sqlFunction ST_PointN syn keyword sqlFunction ST_StartPoint "Spatial Computation syn keyword sqlFunction ST_Length syn keyword sqlFunction ST_Area syn keyword sqlFunction ST_Centroid syn keyword sqlFunction ST_Area syn keyword sqlFunction ST_Centroid syn keyword sqlFunction ST_IsWorld syn keyword sqlFunction ST_Perimeter syn keyword sqlFunction ST_PointOnSurface syn keyword sqlFunction ST_Distance " Spatial Input/Output syn keyword sqlFunction ST_AsBinary syn keyword sqlFunction ST_AsGML syn keyword sqlFunction ST_AsGeoJSON syn keyword sqlFunction ST_AsSVG syn keyword sqlFunction ST_AsSVGAggr syn keyword sqlFunction ST_AsText syn keyword sqlFunction ST_AsWKB syn keyword sqlFunction ST_AsWKT syn keyword sqlFunction ST_AsXML syn keyword sqlFunction ST_GeomFromBinary syn keyword sqlFunction ST_GeomFromShape syn keyword sqlFunction ST_GeomFromText syn keyword sqlFunction ST_GeomFromWKB syn keyword sqlFunction ST_GeomFromWKT syn keyword sqlFunction ST_GeomFromXML " Spatial Cast Methods syn keyword sqlFunction ST_CurvePolyToPoly syn keyword sqlFunction ST_CurveToLine syn keyword sqlFunction ST_ToCircular syn keyword sqlFunction ST_ToCompound syn keyword sqlFunction ST_ToCurve syn keyword sqlFunction ST_ToCurvePoly syn keyword sqlFunction ST_ToGeomColl syn keyword sqlFunction ST_ToLineString syn keyword sqlFunction ST_ToMultiCurve syn keyword sqlFunction ST_ToMultiLine syn keyword sqlFunction ST_ToMultiPoint syn keyword sqlFunction ST_ToMultiPolygon syn keyword sqlFunction ST_ToMultiSurface syn keyword sqlFunction ST_ToPoint syn keyword sqlFunction ST_ToPolygon syn keyword sqlFunction ST_ToSurface " Array functions 16.x syn keyword sqlFunction array array_agg array_max_cardinality trim_array syn keyword sqlFunction error_line error_message error_procedure syn keyword sqlFunction error_sqlcode error_sqlstate error_stack_trace " keywords syn keyword sqlKeyword absolute accent access account action active activate add address admin syn keyword sqlKeyword aes_decrypt after aggregate algorithm allow_dup_row allow allowed alter syn keyword sqlKeyword always and angular ansi_substring any as append apply syn keyword sqlKeyword arbiter array asc ascii ase syn keyword sqlKeyword assign at atan2 atomic attended syn keyword sqlKeyword audit auditing authentication authorization axis syn keyword sqlKeyword autoincrement autostop batch bcp before syn keyword sqlKeyword between bit_and bit_length bit_or bit_substr bit_xor syn keyword sqlKeyword blank blanks block syn keyword sqlKeyword both bottom unbounded breaker bufferpool syn keyword sqlKeyword build bulk by byte bytes cache calibrate calibration syn keyword sqlKeyword cancel capability cardinality cascade cast syn keyword sqlKeyword catalog catch ceil change changes char char_convert syn keyword sqlKeyword check checkpointlog checksum class classes client cmp syn keyword sqlKeyword cluster clustered collation syn keyword sqlKeyword column columns syn keyword sqlKeyword command comments committed commitid comparisons syn keyword sqlKeyword compatible component compressed compute computes syn keyword sqlKeyword concat configuration confirm conflict connection syn keyword sqlKeyword console consolidate consolidated syn keyword sqlKeyword constraint constraints content syn keyword sqlKeyword convert coordinate coordinator copy count count_set_bits syn keyword sqlKeyword crc createtime critical cross cube cume_dist syn keyword sqlKeyword current cursor data data database syn keyword sqlKeyword current_timestamp current_user cycle syn keyword sqlKeyword databases datatype dba dbfile syn keyword sqlKeyword dbspace dbspaces dbspacename debug decoupled syn keyword sqlKeyword decrypted default defaults default_dbspace deferred syn keyword sqlKeyword definer definition syn keyword sqlKeyword delay deleting delimited dependencies desc syn keyword sqlKeyword description deterministic directory syn keyword sqlKeyword disable disabled disallow distinct disksandbox disk_sandbox syn keyword sqlKeyword dn do domain download duplicate syn keyword sqlKeyword dsetpass dttm dynamic each earth editproc effective ejb syn keyword sqlKeyword elimination ellipsoid else elseif syn keyword sqlKeyword email empty enable encapsulated encrypted encryption end syn keyword sqlKeyword encoding endif engine environment erase error errors escape escapes event syn keyword sqlKeyword event_parameter every exception exclude excluded exclusive exec syn keyword sqlKeyword existing exists expanded expiry express exprtype extended_property syn keyword sqlKeyword external externlogin factor failover false syn keyword sqlKeyword fastfirstrow feature fieldproc file files filler syn keyword sqlKeyword fillfactor final finish first first_keyword first_value syn keyword sqlKeyword flattening syn keyword sqlKeyword following force foreign format forjson forxml forxml_sep fp frame syn keyword sqlKeyword free freepage french fresh full function syn keyword sqlKeyword gb generic get_bit go global grid syn keyword sqlKeyword group handler hash having header hexadecimal syn keyword sqlKeyword hidden high history hg hng hold holdlock host syn keyword sqlKeyword hours http_body http_session_timeout id identified identity ignore syn keyword sqlKeyword ignore_dup_key ignore_dup_row immediate syn keyword sqlKeyword in inactiv inactive inactivity included increment incremental syn keyword sqlKeyword index index_enabled index_lparen indexonly info information syn keyword sqlKeyword inheritance inline inner inout insensitive inserting syn keyword sqlKeyword instead syn keyword sqlKeyword internal intersection into introduced inverse invoker syn keyword sqlKeyword iq is isolation syn keyword sqlKeyword jar java java_location java_main_userid java_vm_options syn keyword sqlKeyword jconnect jdk join json kb key keys keep language last syn keyword sqlKeyword last_keyword last_value lateral latitude syn keyword sqlKeyword ld ldap left len linear lf ln level like syn keyword sqlKeyword limit local location log syn keyword sqlKeyword logging logical login logscan long longitude low lru ls syn keyword sqlKeyword main major manage manual mark master syn keyword sqlKeyword match matched materialized max maxvalue maximum mb measure median membership syn keyword sqlKeyword merge metadata methods migrate minimum minor minutes minvalue mirror syn keyword sqlKeyword mode modify monitor move mru multiplex syn keyword sqlKeyword name named namespaces national native natural new next nextval syn keyword sqlKeyword ngram no noholdlock nolock nonclustered none normal not syn keyword sqlKeyword notify null nullable_constant nulls syn keyword sqlKeyword object objects oem_string of off offline offset olap syn keyword sqlKeyword old on online only openstring operator syn keyword sqlKeyword optimization optimizer option syn keyword sqlKeyword or order ordinality organization others out outer over owner syn keyword sqlKeyword package packetsize padding page pages syn keyword sqlKeyword paglock parallel parameter parent part partial syn keyword sqlKeyword partition partitions partner password path pctfree syn keyword sqlKeyword permissions perms plan planar policy polygon populate port postfilter preceding syn keyword sqlKeyword precisionprefetch prefilter prefix preserve preview previous syn keyword sqlKeyword primary prior priority priqty private privilege privileges procedure profile profiling syn keyword sqlKeyword property_is_cumulative property_is_numeric public publication publish publisher syn keyword sqlKeyword quiesce quote quotes range readclientfile readcommitted reader readfile readonly syn keyword sqlKeyword readpast readuncommitted readwrite rebuild syn keyword sqlKeyword received recompile recover recursive references syn keyword sqlKeyword referencing regex regexp regexp_substr relative relocate syn keyword sqlKeyword rename repeatable repeatableread replicate replication syn keyword sqlKeyword requests request_timeout required rereceive resend reserve reset syn keyword sqlKeyword resizing resolve resource respect restart syn keyword sqlKeyword restrict result retain retries syn keyword sqlKeyword returns reverse right role roles syn keyword sqlKeyword rollup root row row_number rowlock rows rowtype syn keyword sqlKeyword sa_index_hash sa_internal_fk_verify sa_internal_termbreak syn keyword sqlKeyword sa_order_preserving_hash sa_order_preserving_hash_big sa_order_preserving_hash_prefix syn keyword sqlKeyword sa_file_free_pages sa_internal_type_from_catalog sa_internal_valid_hash syn keyword sqlKeyword sa_internal_validate_value sa_json_element syn keyword sqlKeyword scale schedule schema scope script scripted scroll search seconds secqty security syn keyword sqlKeyword semi send sensitive sent sequence serializable syn keyword sqlKeyword server severity session set_bit set_bits sets syn keyword sqlKeyword shapefile share side simple since site size skip syn keyword sqlKeyword snap snapshot soapheader soap_header syn keyword sqlKeyword spatial split some sorted_data syn keyword sqlKeyword sql sqlcode sqlid sqlflagger sqlstate sqrt square syn keyword sqlKeyword stacker stale state statement statistics status stddev_pop stddev_samp syn keyword sqlKeyword stemmer stogroup stoplist storage store syn keyword sqlKeyword strip stripesizekb striping subpages subscribe subscription syn keyword sqlKeyword subtransaction suser_id suser_name suspend synchronization syn keyword sqlKeyword syntax_error table tables tablock syn keyword sqlKeyword tablockx target tb temp template temporary term then ties syn keyword sqlKeyword timezone timeout tls to to_char to_nchar tolerance top syn keyword sqlKeyword trace traced_plan tracing syn keyword sqlKeyword transfer transform transaction transactional treat tries syn keyword sqlKeyword true try tsequal type tune uncommitted unconditionally syn keyword sqlKeyword unenforced unicode unique unistr unit unknown unlimited unload syn keyword sqlKeyword unpartition unquiesce updatetime updating updlock upgrade upload syn keyword sqlKeyword upper usage use user syn keyword sqlKeyword using utc utilities validproc syn keyword sqlKeyword value values varchar variable syn keyword sqlKeyword varying var_pop var_samp vcat verbosity syn keyword sqlKeyword verify versions view virtual wait syn keyword sqlKeyword warning wd web when where with with_auto syn keyword sqlKeyword with_auto with_cube with_rollup without syn keyword sqlKeyword with_lparen within word work workload write writefile syn keyword sqlKeyword writeclientfile writer writers writeserver xlock syn keyword sqlKeyword war xml zeros zone " XML syn keyword sqlKeyword raw auto elements explicit " HTTP support syn keyword sqlKeyword authorization secure url service next_soap_header " HTTP 9.0.2 new procedure keywords syn keyword sqlKeyword namespace certificate certificates clientport proxy trusted_certificates_file " OLAP support 9.0.0 syn keyword sqlKeyword covar_pop covar_samp corr regr_slope regr_intercept syn keyword sqlKeyword regr_count regr_r2 regr_avgx regr_avgy syn keyword sqlKeyword regr_sxx regr_syy regr_sxy " Alternate keywords syn keyword sqlKeyword character dec options proc reference syn keyword sqlKeyword subtrans tran syn keyword " Login Mode Options syn keyword sqlKeywordLogin standard integrated kerberos LDAPUA syn keyword sqlKeywordLogin cloudadmin mixed " Spatial Predicates syn keyword sqlKeyword ST_Contains syn keyword sqlKeyword ST_ContainsFilter syn keyword sqlKeyword ST_CoveredBy syn keyword sqlKeyword ST_CoveredByFilter syn keyword sqlKeyword ST_Covers syn keyword sqlKeyword ST_CoversFilter syn keyword sqlKeyword ST_Crosses syn keyword sqlKeyword ST_Disjoint syn keyword sqlKeyword ST_Equals syn keyword sqlKeyword ST_EqualsFilter syn keyword sqlKeyword ST_Intersects syn keyword sqlKeyword ST_IntersectsFilter syn keyword sqlKeyword ST_IntersectsRect syn keyword sqlKeyword ST_OrderingEquals syn keyword sqlKeyword ST_Overlaps syn keyword sqlKeyword ST_Relate syn keyword sqlKeyword ST_Touches syn keyword sqlKeyword ST_Within syn keyword sqlKeyword ST_WithinFilter " Spatial Set operations syn keyword sqlKeyword ST_Affine syn keyword sqlKeyword ST_Boundary syn keyword sqlKeyword ST_Buffer syn keyword sqlKeyword ST_ConvexHull syn keyword sqlKeyword ST_ConvexHullAggr syn keyword sqlKeyword ST_Difference syn keyword sqlKeyword ST_Intersection syn keyword sqlKeyword ST_IntersectionAggr syn keyword sqlKeyword ST_SymDifference syn keyword sqlKeyword ST_Union syn keyword sqlKeyword ST_UnionAggr " Spatial Bounds syn keyword sqlKeyword ST_Envelope syn keyword sqlKeyword ST_EnvelopeAggr syn keyword sqlKeyword ST_Lat syn keyword sqlKeyword ST_LatMax syn keyword sqlKeyword ST_LatMin syn keyword sqlKeyword ST_Long syn keyword sqlKeyword ST_LongMax syn keyword sqlKeyword ST_LongMin syn keyword sqlKeyword ST_M syn keyword sqlKeyword ST_MMax syn keyword sqlKeyword ST_MMin syn keyword sqlKeyword ST_Point syn keyword sqlKeyword ST_X syn keyword sqlKeyword ST_XMax syn keyword sqlKeyword ST_XMin syn keyword sqlKeyword ST_Y syn keyword sqlKeyword ST_YMax syn keyword sqlKeyword ST_YMin syn keyword sqlKeyword ST_Z syn keyword sqlKeyword ST_ZMax syn keyword sqlKeyword ST_ZMin " Spatial Collection Aggregates syn keyword sqlKeyword ST_GeomCollectionAggr syn keyword sqlKeyword ST_LineStringAggr syn keyword sqlKeyword ST_MultiCurveAggr syn keyword sqlKeyword ST_MultiLineStringAggr syn keyword sqlKeyword ST_MultiPointAggr syn keyword sqlKeyword ST_MultiPolygonAggr syn keyword sqlKeyword ST_MultiSurfaceAggr syn keyword sqlKeyword ST_Perimeter syn keyword sqlKeyword ST_PointOnSurface " Spatial SRS syn keyword sqlKeyword ST_CompareWKT syn keyword sqlKeyword ST_FormatWKT syn keyword sqlKeyword ST_ParseWKT syn keyword sqlKeyword ST_TransformGeom syn keyword sqlKeyword ST_GeometryTypeFromBaseType syn keyword sqlKeyword ST_SnapToGrid syn keyword sqlKeyword ST_Transform syn keyword sqlKeyword ST_SRID syn keyword sqlKeyword ST_SRIDFromBaseType syn keyword sqlKeyword ST_LoadConfigurationData " Spatial Indexes syn keyword sqlKeyword ST_LinearHash syn keyword sqlKeyword ST_LinearUnHash syn keyword sqlOperator in any some all between exists syn keyword sqlOperator like escape not is and or syn keyword sqlOperator minus syn keyword sqlOperator prior distinct unnest syn keyword sqlStatement allocate alter attach backup begin break call case catch syn keyword sqlStatement checkpoint clear close comment commit configure connect syn keyword sqlStatement continue create deallocate declare delete describe syn keyword sqlStatement detach disconnect drop except execute exit explain fetch syn keyword sqlStatement for forward from get goto grant help if include syn keyword sqlStatement input insert install intersect leave load lock loop syn keyword sqlStatement message open output parameters passthrough syn keyword sqlStatement prepare print put raiserror read readtext refresh release syn keyword sqlStatement remote remove reorganize resignal restore resume syn keyword sqlStatement return revoke rollback save savepoint select syn keyword sqlStatement set setuser signal start stop synchronize syn keyword sqlStatement system trigger truncate try union unload update syn keyword sqlStatement validate waitfor whenever while window writetext syn keyword sqlType char nchar long varchar nvarchar text ntext uniqueidentifierstr xml syn keyword sqlType bigint bit decimal double varbit syn keyword sqlType float int integer numeric syn keyword sqlType smallint tinyint real syn keyword sqlType money smallmoney syn keyword sqlType date datetime datetimeoffset smalldatetime time timestamp syn keyword sqlType binary image varray varbinary uniqueidentifier syn keyword sqlType unsigned " Spatial types syn keyword sqlType st_geometry st_point st_curve st_surface st_geomcollection syn keyword sqlType st_linestring st_circularstring st_compoundcurve syn keyword sqlType st_curvepolygon st_polygon syn keyword sqlType st_multipoint st_multicurve st_multisurface syn keyword sqlType st_multilinestring st_multipolygon syn keyword sqlOption Allow_nulls_by_default syn keyword sqlOption Allow_read_client_file syn keyword sqlOption Allow_snapshot_isolation syn keyword sqlOption Allow_write_client_file syn keyword sqlOption Ansi_blanks syn keyword sqlOption Ansi_close_cursors_on_rollback syn keyword sqlOption Ansi_permissions syn keyword sqlOption Ansi_substring syn keyword sqlOption Ansi_update_constraints syn keyword sqlOption Ansinull syn keyword sqlOption Auditing syn keyword sqlOption Auditing_options syn keyword sqlOption Auto_commit_on_create_local_temp_index syn keyword sqlOption Background_priority syn keyword sqlOption Blocking syn keyword sqlOption Blocking_others_timeout syn keyword sqlOption Blocking_timeout syn keyword sqlOption Chained syn keyword sqlOption Checkpoint_time syn keyword sqlOption Cis_option syn keyword sqlOption Cis_rowset_size syn keyword sqlOption Close_on_endtrans syn keyword sqlOption Collect_statistics_on_dml_updates syn keyword sqlOption Conn_auditing syn keyword sqlOption Connection_authentication syn keyword sqlOption Continue_after_raiserror syn keyword sqlOption Conversion_error syn keyword sqlOption Cooperative_commit_timeout syn keyword sqlOption Cooperative_commits syn keyword sqlOption Database_authentication syn keyword sqlOption Date_format syn keyword sqlOption Date_order syn keyword sqlOption db_publisher syn keyword sqlOption Debug_messages syn keyword sqlOption Dedicated_task syn keyword sqlOption Default_dbspace syn keyword sqlOption Default_timestamp_increment syn keyword sqlOption Delayed_commit_timeout syn keyword sqlOption Delayed_commits syn keyword sqlOption Divide_by_zero_error syn keyword sqlOption Escape_character syn keyword sqlOption Exclude_operators syn keyword sqlOption Extended_join_syntax syn keyword sqlOption Extern_login_credentials syn keyword sqlOption Fire_triggers syn keyword sqlOption First_day_of_week syn keyword sqlOption For_xml_null_treatment syn keyword sqlOption Force_view_creation syn keyword sqlOption Global_database_id syn keyword sqlOption Http_session_timeout syn keyword sqlOption Http_connection_pool_basesize syn keyword sqlOption Http_connection_pool_timeout syn keyword sqlOption Integrated_server_name syn keyword sqlOption Isolation_level syn keyword sqlOption Java_class_path syn keyword sqlOption Java_location syn keyword sqlOption Java_main_userid syn keyword sqlOption Java_vm_options syn keyword sqlOption Lock_rejected_rows syn keyword sqlOption Log_deadlocks syn keyword sqlOption Login_mode syn keyword sqlOption Login_procedure syn keyword sqlOption Materialized_view_optimization syn keyword sqlOption Max_client_statements_cached syn keyword sqlOption Max_cursor_count syn keyword sqlOption Max_hash_size syn keyword sqlOption Max_plans_cached syn keyword sqlOption Max_priority syn keyword sqlOption Max_query_tasks syn keyword sqlOption Max_recursive_iterations syn keyword sqlOption Max_statement_count syn keyword sqlOption Max_temp_space syn keyword sqlOption Min_password_length syn keyword sqlOption Min_role_admins syn keyword sqlOption Nearest_century syn keyword sqlOption Non_keywords syn keyword sqlOption Odbc_describe_binary_as_varbinary syn keyword sqlOption Odbc_distinguish_char_and_varchar syn keyword sqlOption Oem_string syn keyword sqlOption On_charset_conversion_failure syn keyword sqlOption On_tsql_error syn keyword sqlOption Optimization_goal syn keyword sqlOption Optimization_level syn keyword sqlOption Optimization_workload syn keyword sqlOption Pinned_cursor_percent_of_cache syn keyword sqlOption Post_login_procedure syn keyword sqlOption Precision syn keyword sqlOption Prefetch syn keyword sqlOption Preserve_source_format syn keyword sqlOption Prevent_article_pkey_update syn keyword sqlOption Priority syn keyword sqlOption Progress_messages syn keyword sqlOption Query_mem_timeout syn keyword sqlOption Quoted_identifier syn keyword sqlOption Read_past_deleted syn keyword sqlOption Recovery_time syn keyword sqlOption Remote_idle_timeout syn keyword sqlOption Replicate_all syn keyword sqlOption Request_timeout syn keyword sqlOption Reserved_keywords syn keyword sqlOption Return_date_time_as_string syn keyword sqlOption Rollback_on_deadlock syn keyword sqlOption Row_counts syn keyword sqlOption Scale syn keyword sqlOption Secure_feature_key syn keyword sqlOption Sort_collation syn keyword sqlOption Sql_flagger_error_level syn keyword sqlOption Sql_flagger_warning_level syn keyword sqlOption String_rtruncation syn keyword sqlOption st_geometry_asbinary_format syn keyword sqlOption st_geometry_astext_format syn keyword sqlOption st_geometry_asxml_format syn keyword sqlOption st_geometry_describe_type syn keyword sqlOption st_geometry_interpolation syn keyword sqlOption st_geometry_on_invalid syn keyword sqlOption Subsume_row_locks syn keyword sqlOption Suppress_tds_debugging syn keyword sqlOption Synchronize_mirror_on_commit syn keyword sqlOption Tds_empty_string_is_null syn keyword sqlOption Temp_space_limit_check syn keyword sqlOption Time_format syn keyword sqlOption Time_zone_adjustment syn keyword sqlOption Timestamp_format syn keyword sqlOption Timestamp_with_time_zone_format syn keyword sqlOption Truncate_timestamp_values syn keyword sqlOption Tsql_outer_joins syn keyword sqlOption Tsql_variables syn keyword sqlOption Updatable_statement_isolation syn keyword sqlOption Update_statistics syn keyword sqlOption Upgrade_database_capability syn keyword sqlOption User_estimates syn keyword sqlOption Uuid_has_hyphens syn keyword sqlOption Verify_password_function syn keyword sqlOption Wait_for_commit syn keyword sqlOption Webservice_namespace_host syn keyword sqlOption Webservice_sessionid_name " Strings and characters: syn region sqlString start=+"+ end=+"+ contains=@Spell syn region sqlString start=+'+ end=+'+ contains=@Spell " Numbers: syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" " Comments: syn region sqlDashComment start=/--/ end=/$/ contains=@Spell syn region sqlSlashComment start=/\/\// end=/$/ contains=@Spell syn region sqlMultiComment start="/\*" end="\*/" contains=sqlMultiComment,@Spell syn cluster sqlComment contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell syn sync ccomment sqlComment syn sync ccomment sqlDashComment syn sync ccomment sqlSlashComment hi def link sqlDashComment Comment hi def link sqlSlashComment Comment hi def link sqlMultiComment Comment hi def link sqlNumber Number hi def link sqlOperator Operator hi def link sqlSpecial Special hi def link sqlKeyword Keyword hi def link sqlStatement Statement hi def link sqlString String hi def link sqlType Type hi def link sqlFunction Function hi def link sqlOption PreProc let b:current_syntax = "sqlanywhere" " vim:sw=4: PK�������!�S������vim80/syntax/json.vimnu�[��������" Vim syntax file " Language: JSON " Maintainer: Eli Parra <eli@elzr.com> " Last Change: 2014 Aug 23 " Version: 0.12 if !exists("main_syntax") " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let main_syntax = 'json' endif syntax match jsonNoise /\%(:\|,\)/ " NOTE that for the concealing to work your conceallevel should be set to 2 " Syntax: Strings " Separated into a match and region because a region by itself is always greedy syn match jsonStringMatch /"\([^"]\|\\\"\)\+"\ze[[:blank:]\r\n]*[,}\]]/ contains=jsonString if has('conceal') syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ concealends contains=jsonEscape contained else syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=jsonEscape contained endif " Syntax: JSON does not allow strings with single quotes, unlike JavaScript. syn region jsonStringSQError oneline start=+'+ skip=+\\\\\|\\"+ end=+'+ " Syntax: JSON Keywords " Separated into a match and region because a region by itself is always greedy syn match jsonKeywordMatch /"\([^"]\|\\\"\)\+"[[:blank:]\r\n]*\:/ contains=jsonKeyword if has('conceal') syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ concealends contained else syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ contained endif " Syntax: Escape sequences syn match jsonEscape "\\["\\/bfnrt]" contained syn match jsonEscape "\\u\x\{4}" contained " Syntax: Numbers syn match jsonNumber "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>\ze[[:blank:]\r\n]*[,}\]]" " ERROR WARNINGS ********************************************** if (!exists("g:vim_json_warnings") || g:vim_json_warnings==1) " Syntax: Strings should always be enclosed with quotes. syn match jsonNoQuotesError "\<[[:alpha:]][[:alnum:]]*\>" syn match jsonTripleQuotesError /"""/ " Syntax: An integer part of 0 followed by other digits is not allowed. syn match jsonNumError "-\=\<0\d\.\d*\>" " Syntax: Decimals smaller than one should begin with 0 (so .1 should be 0.1). syn match jsonNumError "\:\@<=[[:blank:]\r\n]*\zs\.\d\+" " Syntax: No comments in JSON, see http://stackoverflow.com/questions/244777/can-i-comment-a-json-file syn match jsonCommentError "//.*" syn match jsonCommentError "\(/\*\)\|\(\*/\)" " Syntax: No semicolons in JSON syn match jsonSemicolonError ";" " Syntax: No trailing comma after the last element of arrays or objects syn match jsonTrailingCommaError ",\_s*[}\]]" " Syntax: Watch out for missing commas between elements syn match jsonMissingCommaError /\("\|\]\|\d\)\zs\_s\+\ze"/ syn match jsonMissingCommaError /\(\]\|\}\)\_s\+\ze"/ "arrays/objects as values syn match jsonMissingCommaError /}\_s\+\ze{/ "objects as elements in an array syn match jsonMissingCommaError /\(true\|false\)\_s\+\ze"/ "true/false as value endif " ********************************************** END OF ERROR WARNINGS " Allowances for JSONP: function call at the beginning of the file, " parenthesis and semicolon at the end. " Function name validation based on " http://stackoverflow.com/questions/2008279/validate-a-javascript-function-name/2008444#2008444 syn match jsonPadding "\%^[[:blank:]\r\n]*[_$[:alpha:]][_$[:alnum:]]*[[:blank:]\r\n]*(" syn match jsonPadding ");[[:blank:]\r\n]*\%$" " Syntax: Boolean syn match jsonBoolean /\(true\|false\)\(\_s\+\ze"\)\@!/ " Syntax: Null syn keyword jsonNull null " Syntax: Braces syn region jsonFold matchgroup=jsonBraces start="{" end=/}\(\_s\+\ze\("\|{\)\)\@!/ transparent fold syn region jsonFold matchgroup=jsonBraces start="\[" end=/]\(\_s\+\ze"\)\@!/ transparent fold " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link jsonPadding Operator hi def link jsonString String hi def link jsonTest Label hi def link jsonEscape Special hi def link jsonNumber Number hi def link jsonBraces Delimiter hi def link jsonNull Function hi def link jsonBoolean Boolean hi def link jsonKeyword Label if (!exists("g:vim_json_warnings") || g:vim_json_warnings==1) hi def link jsonNumError Error hi def link jsonCommentError Error hi def link jsonSemicolonError Error hi def link jsonTrailingCommaError Error hi def link jsonMissingCommaError Error hi def link jsonStringSQError Error hi def link jsonNoQuotesError Error hi def link jsonTripleQuotesError Error endif hi def link jsonQuote Quote hi def link jsonNoise Noise let b:current_syntax = "json" if main_syntax == 'json' unlet main_syntax endif " Vim settings " vim: ts=8 fdm=marker " MIT License " Copyright (c) 2013, Jeroen Ruigrok van der Werven, Eli Parra "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. "THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. "See https://twitter.com/elzr/status/294964017926119424 PK�������!�c2��c2����vim80/syntax/n1ql.vimnu�[��������" Vim syntax file " Language: N1QL / Couchbase Server " Maintainer: Eugene Ciurana <n1ql AT cime.net> " Version: 1.0 " Source: https://github.com/pr3d4t0r/n1ql-vim-syntax " " License: Vim is Charityware. n1ql.vim syntax is Charityware. " (c) Copyright 2017 by Eugene Ciurana / pr3d4t0r. Licensed " under the standard VIM LICENSE - Vim command :help uganda.txt " for details. " " Questions, comments: <n1ql AT cime.net> " https://ciurana.eu/pgp, https://keybase.io/pr3d4t0r " " vim: set fileencoding=utf-8: if exists("b:current_syntax") finish endif syn case ignore syn keyword n1qlSpecial DATASTORES syn keyword n1qlSpecial DUAL syn keyword n1qlSpecial FALSE syn keyword n1qlSpecial INDEXES syn keyword n1qlSpecial KEYSPACES syn keyword n1qlSpecial MISSING syn keyword n1qlSpecial NAMESPACES syn keyword n1qlSpecial NULL syn keyword n1qlSpecial TRUE " " *** keywords *** " syn keyword n1qlKeyword ALL syn keyword n1qlKeyword ANY syn keyword n1qlKeyword ASC syn keyword n1qlKeyword BEGIN syn keyword n1qlKeyword BETWEEN syn keyword n1qlKeyword BREAK syn keyword n1qlKeyword BUCKET syn keyword n1qlKeyword CALL syn keyword n1qlKeyword CASE syn keyword n1qlKeyword CAST syn keyword n1qlKeyword CLUSTER syn keyword n1qlKeyword COLLATE syn keyword n1qlKeyword COLLECTION syn keyword n1qlKeyword CONNECT syn keyword n1qlKeyword CONTINUE syn keyword n1qlKeyword CORRELATE syn keyword n1qlKeyword COVER syn keyword n1qlKeyword DATABASE syn keyword n1qlKeyword DATASET syn keyword n1qlKeyword DATASTORE syn keyword n1qlKeyword DECLARE syn keyword n1qlKeyword DECREMENT syn keyword n1qlKeyword DERIVED syn keyword n1qlKeyword DESC syn keyword n1qlKeyword DESCRIBE syn keyword n1qlKeyword DO syn keyword n1qlKeyword EACH syn keyword n1qlKeyword ELEMENT syn keyword n1qlKeyword ELSE syn keyword n1qlKeyword END syn keyword n1qlKeyword EVERY syn keyword n1qlKeyword EXCLUDE syn keyword n1qlKeyword EXISTS syn keyword n1qlKeyword FETCH syn keyword n1qlKeyword FIRST syn keyword n1qlKeyword FLATTEN syn keyword n1qlKeyword FOR syn keyword n1qlKeyword FORCE syn keyword n1qlKeyword FROM syn keyword n1qlKeyword FUNCTION syn keyword n1qlKeyword GROUP syn keyword n1qlKeyword GSI syn keyword n1qlKeyword HAVING syn keyword n1qlKeyword IF syn keyword n1qlKeyword IGNORE syn keyword n1qlKeyword INCLUDE syn keyword n1qlKeyword INCREMENT syn keyword n1qlKeyword INDEX syn keyword n1qlKeyword INITIAL syn keyword n1qlKeyword INLINE syn keyword n1qlKeyword INNER syn keyword n1qlKeyword INTO syn keyword n1qlKeyword KEY syn keyword n1qlKeyword KEYS syn keyword n1qlKeyword KEYSPACE syn keyword n1qlKeyword KNOWN syn keyword n1qlKeyword LAST syn keyword n1qlKeyword LET syn keyword n1qlKeyword LETTING syn keyword n1qlKeyword LIMIT syn keyword n1qlKeyword LOOP syn keyword n1qlKeyword LSM syn keyword n1qlKeyword MAP syn keyword n1qlKeyword MAPPING syn keyword n1qlKeyword MATCHED syn keyword n1qlKeyword MATERIALIZED syn keyword n1qlKeyword MERGE syn keyword n1qlKeyword NAMESPACE syn keyword n1qlKeyword NEST syn keyword n1qlKeyword OPTION syn keyword n1qlKeyword ORDER syn keyword n1qlKeyword OUTER syn keyword n1qlKeyword OVER syn keyword n1qlKeyword PARSE syn keyword n1qlKeyword PARTITION syn keyword n1qlKeyword PASSWORD syn keyword n1qlKeyword PATH syn keyword n1qlKeyword POOL syn keyword n1qlKeyword PRIMARY syn keyword n1qlKeyword PRIVATE syn keyword n1qlKeyword PRIVILEGE syn keyword n1qlKeyword PROCEDURE syn keyword n1qlKeyword PUBLIC syn keyword n1qlKeyword REALM syn keyword n1qlKeyword REDUCE syn keyword n1qlKeyword RETURN syn keyword n1qlKeyword RETURNING syn keyword n1qlKeyword ROLE syn keyword n1qlKeyword SATISFIES syn keyword n1qlKeyword SCHEMA syn keyword n1qlKeyword SELF syn keyword n1qlKeyword SEMI syn keyword n1qlKeyword SHOW syn keyword n1qlKeyword START syn keyword n1qlKeyword STATISTICS syn keyword n1qlKeyword SYSTEM syn keyword n1qlKeyword THEN syn keyword n1qlKeyword TRANSACTION syn keyword n1qlKeyword TRIGGER syn keyword n1qlKeyword UNDER syn keyword n1qlKeyword UNKNOWN syn keyword n1qlKeyword UNSET syn keyword n1qlKeyword USE syn keyword n1qlKeyword USER syn keyword n1qlKeyword USING syn keyword n1qlKeyword VALIDATE syn keyword n1qlKeyword VALUE syn keyword n1qlKeyword VALUED syn keyword n1qlKeyword VALUES syn keyword n1qlKeyword VIEW syn keyword n1qlKeyword WHEN syn keyword n1qlKeyword WHERE syn keyword n1qlKeyword WHILE syn keyword n1qlKeyword WITHIN syn keyword n1qlKeyword WORK " " *** functions *** " syn keyword n1qlOperator ABS syn keyword n1qlOperator ACOS syn keyword n1qlOperator ARRAY_AGG syn keyword n1qlOperator ARRAY_APPEND syn keyword n1qlOperator ARRAY_AVG syn keyword n1qlOperator ARRAY_CONCAT syn keyword n1qlOperator ARRAY_CONTAINS syn keyword n1qlOperator ARRAY_COUNT syn keyword n1qlOperator ARRAY_DISTINCT syn keyword n1qlOperator ARRAY_FLATTEN syn keyword n1qlOperator ARRAY_IFNULL syn keyword n1qlOperator ARRAY_INSERT syn keyword n1qlOperator ARRAY_INTERSECT syn keyword n1qlOperator ARRAY_LENGTH syn keyword n1qlOperator ARRAY_MAX syn keyword n1qlOperator ARRAY_MIN syn keyword n1qlOperator ARRAY_POSITION syn keyword n1qlOperator ARRAY_PREPEND syn keyword n1qlOperator ARRAY_PUT syn keyword n1qlOperator ARRAY_RANGE syn keyword n1qlOperator ARRAY_REMOVE syn keyword n1qlOperator ARRAY_REPEAT syn keyword n1qlOperator ARRAY_REPLACE syn keyword n1qlOperator ARRAY_REVERSE syn keyword n1qlOperator ARRAY_SORT syn keyword n1qlOperator ARRAY_START syn keyword n1qlOperator ARRAY_SUM syn keyword n1qlOperator ARRAY_SYMDIFF syn keyword n1qlOperator ARRAY_UNION syn keyword n1qlOperator ASIN syn keyword n1qlOperator ATAN syn keyword n1qlOperator ATAN2 syn keyword n1qlOperator AVG syn keyword n1qlOperator BASE64 syn keyword n1qlOperator BASE64_DECODE syn keyword n1qlOperator BASE64_ENCODE syn keyword n1qlOperator CEIL syn keyword n1qlOperator CLOCK_LOCAL syn keyword n1qlOperator CLOCK_STR syn keyword n1qlOperator CLOCK_TZ syn keyword n1qlOperator CLOCK_UTC syn keyword n1qlOperator CLOCL_MILLIS syn keyword n1qlOperator CONTAINS syn keyword n1qlOperator COS syn keyword n1qlOperator COUNT syn keyword n1qlOperator DATE_ADD_MILLIS syn keyword n1qlOperator DATE_ADD_STR syn keyword n1qlOperator DATE_DIFF_MILLIS syn keyword n1qlOperator DATE_DIFF_STR syn keyword n1qlOperator DATE_FORMAT_STR syn keyword n1qlOperator DATE_PART_MILLIS syn keyword n1qlOperator DATE_PART_STR syn keyword n1qlOperator DATE_RANGE_MILLIS syn keyword n1qlOperator DATE_RANGE_STR syn keyword n1qlOperator DATE_TRUC_STR syn keyword n1qlOperator DATE_TRUNC_MILLIS syn keyword n1qlOperator DECODE_JSON syn keyword n1qlOperator DEGREES syn keyword n1qlOperator DURATION_TO_STR syn keyword n1qlOperator E syn keyword n1qlOperator ENCODED_SIZE syn keyword n1qlOperator ENCODE_JSON syn keyword n1qlOperator EXP syn keyword n1qlOperator FLOOR syn keyword n1qlOperator GREATEST syn keyword n1qlOperator IFINF syn keyword n1qlOperator IFMISSING syn keyword n1qlOperator IFMISSINGORNULL syn keyword n1qlOperator IFNAN syn keyword n1qlOperator IFNANORINF syn keyword n1qlOperator IFNULL syn keyword n1qlOperator INITCAP syn keyword n1qlOperator ISARRAY syn keyword n1qlOperator ISATOM syn keyword n1qlOperator ISBOOLEAN syn keyword n1qlOperator ISNUMBER syn keyword n1qlOperator ISOBJECT syn keyword n1qlOperator ISSTRING syn keyword n1qlOperator LEAST syn keyword n1qlOperator LENGTH syn keyword n1qlOperator LN syn keyword n1qlOperator LOG syn keyword n1qlOperator LOWER syn keyword n1qlOperator LTRIM syn keyword n1qlOperator MAX syn keyword n1qlOperator META syn keyword n1qlOperator MILLIS syn keyword n1qlOperator MILLIS_TO_LOCAL syn keyword n1qlOperator MILLIS_TO_STR syn keyword n1qlOperator MILLIS_TO_TZ syn keyword n1qlOperator MILLIS_TO_UTC syn keyword n1qlOperator MILLIS_TO_ZONE_NAME syn keyword n1qlOperator MIN syn keyword n1qlOperator MISSINGIF syn keyword n1qlOperator NANIF syn keyword n1qlOperator NEGINFIF syn keyword n1qlOperator NOW_LOCAL syn keyword n1qlOperator NOW_MILLIS syn keyword n1qlOperator NOW_STR syn keyword n1qlOperator NOW_TZ syn keyword n1qlOperator NOW_UTC syn keyword n1qlOperator NULLIF syn keyword n1qlOperator OBJECT_ADD syn keyword n1qlOperator OBJECT_CONCAT syn keyword n1qlOperator OBJECT_INNER_PAIRS syn keyword n1qlOperator OBJECT_INNER_VALUES syn keyword n1qlOperator OBJECT_LENGTH syn keyword n1qlOperator OBJECT_NAMES syn keyword n1qlOperator OBJECT_PAIRS syn keyword n1qlOperator OBJECT_PUT syn keyword n1qlOperator OBJECT_REMOVE syn keyword n1qlOperator OBJECT_RENAME syn keyword n1qlOperator OBJECT_REPLACE syn keyword n1qlOperator OBJECT_UNWRAP syn keyword n1qlOperator OBJECT_VALUES syn keyword n1qlOperator PI syn keyword n1qlOperator POLY_LENGTH syn keyword n1qlOperator POSINIF syn keyword n1qlOperator POSITION syn keyword n1qlOperator POWER syn keyword n1qlOperator RADIANS syn keyword n1qlOperator RANDOM syn keyword n1qlOperator REGEXP_CONTAINS syn keyword n1qlOperator REGEXP_LIKE syn keyword n1qlOperator REGEXP_POSITION syn keyword n1qlOperator REGEXP_REPLACE syn keyword n1qlOperator REPEAT syn keyword n1qlOperator REPLACE syn keyword n1qlOperator REVERSE syn keyword n1qlOperator ROUND syn keyword n1qlOperator RTRIM syn keyword n1qlOperator SIGN syn keyword n1qlOperator SIN syn keyword n1qlOperator SPLIT syn keyword n1qlOperator SQRT syn keyword n1qlOperator STR_TO_DURATION syn keyword n1qlOperator STR_TO_MILLIS syn keyword n1qlOperator STR_TO_TZ syn keyword n1qlOperator STR_TO_UTC syn keyword n1qlOperator STR_TO_ZONE_NAME syn keyword n1qlOperator SUBSTR syn keyword n1qlOperator SUFFIXES syn keyword n1qlOperator SUM syn keyword n1qlOperator TAN syn keyword n1qlOperator TITLE syn keyword n1qlOperator TOARRAY syn keyword n1qlOperator TOATOM syn keyword n1qlOperator TOBOOLEAN syn keyword n1qlOperator TOKENS syn keyword n1qlOperator TONUMBER syn keyword n1qlOperator TOOBJECT syn keyword n1qlOperator TOSTRING syn keyword n1qlOperator TRIM syn keyword n1qlOperator TRUNC syn keyword n1qlOperator TYPE syn keyword n1qlOperator UPPER syn keyword n1qlOperator UUID syn keyword n1qlOperator WEEKDAY_MILLIS syn keyword n1qlOperator WEEKDAY_STR " " *** operators *** " syn keyword n1qlOperator AND syn keyword n1qlOperator AS syn keyword n1qlOperator BY syn keyword n1qlOperator DISTINCT syn keyword n1qlOperator EXCEPT syn keyword n1qlOperator ILIKE syn keyword n1qlOperator IN syn keyword n1qlOperator INTERSECT syn keyword n1qlOperator IS syn keyword n1qlOperator JOIN syn keyword n1qlOperator LEFT syn keyword n1qlOperator LIKE syn keyword n1qlOperator MINUS syn keyword n1qlOperator NEST syn keyword n1qlOperator NESTING syn keyword n1qlOperator NOT syn keyword n1qlOperator OFFSET syn keyword n1qlOperator ON syn keyword n1qlOperator OR syn keyword n1qlOperator OUT syn keyword n1qlOperator RIGHT syn keyword n1qlOperator SOME syn keyword n1qlOperator TO syn keyword n1qlOperator UNION syn keyword n1qlOperator UNIQUE syn keyword n1qlOperator UNNEST syn keyword n1qlOperator VIA syn keyword n1qlOperator WITH syn keyword n1qlOperator XOR " " *** statements *** " syn keyword n1qlStatement ALTER syn keyword n1qlStatement ANALYZE syn keyword n1qlStatement BUILD syn keyword n1qlStatement COMMIT syn keyword n1qlStatement CREATE syn keyword n1qlStatement DELETE syn keyword n1qlStatement DROP syn keyword n1qlStatement EXECUTE syn keyword n1qlStatement EXPLAIN syn keyword n1qlStatement GRANT syn keyword n1qlStatement INFER syn keyword n1qlStatement INSERT syn keyword n1qlStatement MERGE syn keyword n1qlStatement PREPARE syn keyword n1qlStatement RENAME syn keyword n1qlStatement REVOKE syn keyword n1qlStatement ROLLBACK syn keyword n1qlStatement SELECT syn keyword n1qlStatement SET syn keyword n1qlStatement TRUNCATE syn keyword n1qlStatement UPDATE syn keyword n1qlStatement UPSERT " " *** types *** " syn keyword n1qlType ARRAY syn keyword n1qlType BINARY syn keyword n1qlType BOOLEAN syn keyword n1qlType NUMBER syn keyword n1qlType OBJECT syn keyword n1qlType RAW syn keyword n1qlType STRING " " *** strings and characters *** " syn region n1qlString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region n1qlString start=+'+ skip=+\\\\\|\\'+ end=+'+ syn region n1qlBucketSpec start=+`+ skip=+\\\\\|\\'+ end=+`+ " " *** numbers *** " syn match n1qlNumber "-\=\<\d*\.\=[0-9_]\>" " " *** comments *** " syn region n1qlComment start="/\*" end="\*/" contains=n1qlTODO syn match n1qlComment "--.*$" contains=n1qlTODO syn sync ccomment n1qlComment " " *** TODO *** " syn keyword n1qlTODO contained TODO FIXME XXX DEBUG NOTE " " *** enable *** " hi def link n1qlBucketSpec Underlined hi def link n1qlComment Comment hi def link n1qlKeyword Macro hi def link n1qlOperator Function hi def link n1qlSpecial Special hi def link n1qlStatement Statement hi def link n1qlString String hi def link n1qlTODO Todo hi def link n1qlType Type let b:current_syntax = "n1ql" PK�������!�508������vim80/syntax/manual.vimnu�[��������" Vim syntax support file " Maintainer: Bram Moolenaar <Bram@vim.org> " Last Change: 2016 Feb 01 " This file is used for ":syntax manual". " It installs the Syntax autocommands, but no the FileType autocommands. if !has("syntax") finish endif " Load the Syntax autocommands and set the default methods for highlighting. if !exists("syntax_on") so <sfile>:p:h/synload.vim endif let syntax_manual = 1 " Overrule the connection between FileType and Syntax autocommands. This sets " the syntax when the file type is detected, without changing the value. augroup syntaxset au! FileType * exe "set syntax=" . &syntax augroup END " If the GUI is already running, may still need to install the FileType menu. " Don't do it when the 'M' flag is included in 'guioptions'. if has("menu") && has("gui_running") && !exists("did_install_syntax_menu") && &guioptions !~# 'M' source $VIMRUNTIME/menu.vim endif PK�������!�Е������vim80/syntax/asm.vimnu�[��������" Vim syntax file " Language: GNU Assembler " Maintainer: Erik Wognsen <erik.wognsen@gmail.com> " Previous maintainer: " Kevin Dahlhausen <kdahlhaus@yahoo.com> " Last Change: 2014 Feb 04 " Thanks to Ori Avtalion for feedback on the comment markers! " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore " storage types syn match asmType "\.long" syn match asmType "\.ascii" syn match asmType "\.asciz" syn match asmType "\.byte" syn match asmType "\.double" syn match asmType "\.float" syn match asmType "\.hword" syn match asmType "\.int" syn match asmType "\.octa" syn match asmType "\.quad" syn match asmType "\.short" syn match asmType "\.single" syn match asmType "\.space" syn match asmType "\.string" syn match asmType "\.word" syn match asmLabel "[a-z_][a-z0-9_]*:"he=e-1 syn match asmIdentifier "[a-z_][a-z0-9_]*" " Various #'s as defined by GAS ref manual sec 3.6.2.1 " Technically, the first decNumber def is actually octal, " since the value of 0-7 octal is the same as 0-7 decimal, " I (Kevin) prefer to map it as decimal: syn match decNumber "0\+[1-7]\=[\t\n$,; ]" syn match decNumber "[1-9]\d*" syn match octNumber "0[0-7][0-7]\+" syn match hexNumber "0[xX][0-9a-fA-F]\+" syn match binNumber "0[bB][0-1]*" syn keyword asmTodo contained TODO " GAS supports one type of multi line comments: syn region asmComment start="/\*" end="\*/" contains=asmTodo " GAS (undocumentedly?) supports C++ style comments. Unlike in C/C++ however, " a backslash ending a C++ style comment does not extend the comment to the " next line (hence the syntax region does not define 'skip="\\$"') syn region asmComment start="//" end="$" keepend contains=asmTodo " Line comment characters depend on the target architecture and command line " options and some comments may double as logical line number directives or " preprocessor commands. This situation is described at " http://sourceware.org/binutils/docs-2.22/as/Comments.html " Some line comment characters have other meanings for other targets. For " example, .type directives may use the `@' character which is also an ARM " comment marker. " As a compromise to accommodate what I arbitrarily assume to be the most " frequently used features of the most popular architectures (and also the " non-GNU assembly languages that use this syntax file because their asm files " are also named *.asm), the following are used as line comment characters: syn match asmComment "[#;!|].*" contains=asmTodo " Side effects of this include: " - When `;' is used to separate statements on the same line (many targets " support this), all statements except the first get highlighted as " comments. As a remedy, remove `;' from the above. " - ARM comments are not highlighted correctly. For ARM, uncomment the " following two lines and comment the one above. "syn match asmComment "@.*" contains=asmTodo "syn match asmComment "^#.*" contains=asmTodo " Advanced users of specific architectures will probably want to change the " comment highlighting or use a specific, more comprehensive syntax file. syn match asmInclude "\.include" syn match asmCond "\.if" syn match asmCond "\.else" syn match asmCond "\.endif" syn match asmMacro "\.macro" syn match asmMacro "\.endm" " Assembler directives start with a '.' and may contain upper case (e.g., " .ABORT), numbers (e.g., .p2align), dash (e.g., .app-file) and underscore in " CFI directives (e.g., .cfi_startproc). This will also match labels starting " with '.', including the GCC auto-generated '.L' labels. syn match asmDirective "\.[A-Za-z][0-9A-Za-z-_]*" syn case match " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overridden later hi def link asmSection Special hi def link asmLabel Label hi def link asmComment Comment hi def link asmTodo Todo hi def link asmDirective Statement hi def link asmInclude Include hi def link asmCond PreCondit hi def link asmMacro Macro hi def link hexNumber Number hi def link decNumber Number hi def link octNumber Number hi def link binNumber Number hi def link asmIdentifier Identifier hi def link asmType Type let b:current_syntax = "asm" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK�������!�3������vim80/syntax/arduino.vimnu�[��������" Vim syntax file " Language: Arduino " Maintainer: Johannes Hoff <johannes@johanneshoff.com> " Last Change: 2011 June 3 " License: VIM license (:help license, replace vim by arduino.vim) " Syntax highlighting like in the Arduino IDE " Keywords extracted from <arduino>/build/shared/lib/keywords.txt (arduino " version 0021) " Thanks to Rik, Erik Nomitch, Adam Obeng and Graeme Cross for helpful feedback! " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Read the C syntax to start with runtime! syntax/cpp.vim syn keyword arduinoConstant HIGH LOW INPUT OUTPUT syn keyword arduinoConstant DEC BIN HEX OCT BYTE syn keyword arduinoConstant PI HALF_PI TWO_PI syn keyword arduinoConstant LSBFIRST MSBFIRST syn keyword arduinoConstant CHANGE FALLING RISING syn keyword arduinoConstant SERIAL DISPLAY syn keyword arduinoConstant DEFAULT EXTERNAL INTERNAL INTERNAL1V1 INTERNAL2V56 syn keyword arduinoStdFunc abs acos asin atan atan2 ceil constrain syn keyword arduinoStdFunc cos degrees exp floor log syn keyword arduinoStdFunc map max min pow radians syn keyword arduinoStdFunc round sin sq sqrt tan syn keyword arduinoStdFunc randomSeed random syn keyword arduinoFunc analogReference analogRead analogWrite syn keyword arduinoFunc attachInterrupt detachInterrupt interrupts noInterrupts syn keyword arduinoFunc lowByte highByte bitRead bitWrite bitSet bitClear syn keyword arduinoFunc millis micros delay delayMicroseconds syn keyword arduinoFunc pinMode digitalWrite digitalRead syn keyword arduinoFunc tone noTone pulseIn shiftOut syn keyword arduinoMethod setup loop syn keyword arduinoMethod begin end available read flush print println write peek syn keyword arduinoType boolean byte word String syn keyword arduinoModule Serial Serial1 Serial2 Serial3 hi def link arduinoType Type hi def link arduinoConstant Constant hi def link arduinoStdFunc Function hi def link arduinoFunc Function hi def link arduinoMethod Function hi def link arduinoModule Identifier PK�������!�G-+,��+,����vim80/syntax/scala.vimnu�[��������" Vim syntax file " Language: Scala " Maintainer: Derek Wyatt " URL: https://github.com/derekwyatt/vim-scala " License: Same as Vim " Last Change: 20 May 2016 " ---------------------------------------------------------------------------- if !exists('main_syntax') " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let main_syntax = 'scala' endif scriptencoding utf-8 let b:current_syntax = "scala" " Allows for embedding, see #59; main_syntax convention instead? Refactor TOP " " The @Spell here is a weird hack, it means *exclude* if the first group is " TOP. Otherwise we get spelling errors highlighted on code elements that " match scalaBlock, even with `syn spell notoplevel`. function! s:ContainedGroup() try silent syn list @scala return '@scala,@NoSpell' catch /E392/ return 'TOP,@Spell' endtry endfunction unlet! b:current_syntax syn case match syn sync minlines=200 maxlines=1000 syn keyword scalaKeyword catch do else final finally for forSome if syn keyword scalaKeyword match return throw try while yield macro syn keyword scalaKeyword class trait object extends with nextgroup=scalaInstanceDeclaration skipwhite syn keyword scalaKeyword case nextgroup=scalaKeyword,scalaCaseFollowing skipwhite syn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite syn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite hi link scalaKeyword Keyword exe 'syn region scalaBlock start=/{/ end=/}/ contains=' . s:ContainedGroup() . ' fold' syn keyword scalaAkkaSpecialWord when goto using startWith initialize onTransition stay become unbecome hi link scalaAkkaSpecialWord PreProc syn keyword scalatestSpecialWord shouldBe syn match scalatestShouldDSLA /^\s\+\zsit should/ syn match scalatestShouldDSLB /\<should\>/ hi link scalatestSpecialWord PreProc hi link scalatestShouldDSLA PreProc hi link scalatestShouldDSLB PreProc syn match scalaSymbol /'[_A-Za-z0-9$]\+/ hi link scalaSymbol Number syn match scalaChar /'.'/ syn match scalaChar /'\\[\\"'ntbrf]'/ contains=scalaEscapedChar syn match scalaChar /'\\u[A-Fa-f0-9]\{4}'/ contains=scalaUnicodeChar syn match scalaEscapedChar /\\[\\"'ntbrf]/ syn match scalaUnicodeChar /\\u[A-Fa-f0-9]\{4}/ hi link scalaChar Character hi link scalaEscapedChar Function hi link scalaUnicodeChar Special syn match scalaOperator "||" syn match scalaOperator "&&" syn match scalaOperator "|" syn match scalaOperator "&" hi link scalaOperator Special syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaPostNameDefinition,scalaVariableDeclarationList syn match scalaNameDefinition /`[^`]\+`/ contained nextgroup=scalaPostNameDefinition syn match scalaVariableDeclarationList /\s*,\s*/ contained nextgroup=scalaNameDefinition syn match scalaPostNameDefinition /\_s*:\_s*/ contained nextgroup=scalaTypeDeclaration hi link scalaNameDefinition Function syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaInstanceHash syn match scalaInstanceDeclaration /`[^`]\+`/ contained syn match scalaInstanceHash /#/ contained nextgroup=scalaInstanceDeclaration hi link scalaInstanceDeclaration Special hi link scalaInstanceHash Type syn match scalaUnimplemented /???/ hi link scalaUnimplemented ERROR syn match scalaCapitalWord /\<[A-Z][A-Za-z0-9$]*\>/ hi link scalaCapitalWord Special " Handle type declarations specially syn region scalaTypeStatement matchgroup=Keyword start=/\<type\_s\+\ze/ end=/$/ contains=scalaTypeTypeDeclaration,scalaSquareBrackets,scalaTypeTypeEquals,scalaTypeStatement " Ugh... duplication of all the scalaType* stuff to handle special highlighting " of `type X =` declarations syn match scalaTypeTypeDeclaration /(/ contained nextgroup=scalaTypeTypeExtension,scalaTypeTypeEquals contains=scalaRoundBrackets skipwhite syn match scalaTypeTypeDeclaration /\%(⇒\|=>\)\ze/ contained nextgroup=scalaTypeTypeDeclaration contains=scalaTypeTypeExtension skipwhite syn match scalaTypeTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypeExtension,scalaTypeTypeEquals skipwhite syn match scalaTypeTypeEquals /=\ze[^>]/ contained nextgroup=scalaTypeTypePostDeclaration skipwhite syn match scalaTypeTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained nextgroup=scalaTypeTypeDeclaration skipwhite syn match scalaTypeTypePostDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypePostExtension skipwhite syn match scalaTypeTypePostExtension /\%(⇒\|=>\|<:\|:>\|=:=\|::\)/ contained nextgroup=scalaTypeTypePostDeclaration skipwhite hi link scalaTypeTypeDeclaration Type hi link scalaTypeTypeExtension Keyword hi link scalaTypeTypePostDeclaration Special hi link scalaTypeTypePostExtension Keyword syn match scalaTypeDeclaration /(/ contained nextgroup=scalaTypeExtension contains=scalaRoundBrackets skipwhite syn match scalaTypeDeclaration /\%(⇒\|=>\)\ze/ contained nextgroup=scalaTypeDeclaration contains=scalaTypeExtension skipwhite syn match scalaTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeExtension skipwhite syn match scalaTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained nextgroup=scalaTypeDeclaration skipwhite hi link scalaTypeDeclaration Type hi link scalaTypeExtension Keyword hi link scalaTypePostExtension Keyword syn match scalaTypeAnnotation /\%([_a-zA-Z0-9$\s]:\_s*\)\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration contains=scalaRoundBrackets syn match scalaTypeAnnotation /)\_s*:\_s*\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration hi link scalaTypeAnnotation Normal syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]\+\>/ contained syn match scalaCaseFollowing /`[^`]\+`/ contained hi link scalaCaseFollowing Special syn keyword scalaKeywordModifier abstract override final lazy implicit implicitly private protected sealed null require super hi link scalaKeywordModifier Function syn keyword scalaSpecial this true false ne eq syn keyword scalaSpecial new nextgroup=scalaInstanceDeclaration skipwhite syn match scalaSpecial "\%(=>\|⇒\|<-\|←\|->\|→\)" syn match scalaSpecial /`[^`]\+`/ " Backtick literals hi link scalaSpecial PreProc syn keyword scalaExternal package import hi link scalaExternal Include syn match scalaStringEmbeddedQuote /\\"/ contained syn region scalaString start=/"/ end=/"/ contains=scalaStringEmbeddedQuote,scalaEscapedChar,scalaUnicodeChar hi link scalaString String hi link scalaStringEmbeddedQuote String syn region scalaIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"/ skip=/\\"/ end=/"/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar syn region scalaTripleIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"""/ end=/"""\ze\%([^"]\|$\)/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar hi link scalaIString String hi link scalaTripleIString String syn match scalaInterpolation /\$[a-zA-Z0-9_$]\+/ contained exe 'syn region scalaInterpolationB matchgroup=scalaInterpolationBoundary start=/\${/ end=/}/ contained contains=' . s:ContainedGroup() hi link scalaInterpolation Function hi link scalaInterpolationB Normal syn region scalaFString matchgroup=scalaInterpolationBrackets start=/f"/ skip=/\\"/ end=/"/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar syn match scalaFInterpolation /\$[a-zA-Z0-9_$]\+\(%[-A-Za-z0-9\.]\+\)\?/ contained exe 'syn region scalaFInterpolationB matchgroup=scalaInterpolationBoundary start=/${/ end=/}\(%[-A-Za-z0-9\.]\+\)\?/ contained contains=' . s:ContainedGroup() hi link scalaFString String hi link scalaFInterpolation Function hi link scalaFInterpolationB Normal syn region scalaTripleString start=/"""/ end=/"""\%([^"]\|$\)/ contains=scalaEscapedChar,scalaUnicodeChar syn region scalaTripleFString matchgroup=scalaInterpolationBrackets start=/f"""/ end=/"""\%([^"]\|$\)/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar hi link scalaTripleString String hi link scalaTripleFString String hi link scalaInterpolationBrackets Special hi link scalaInterpolationBoundary Function syn match scalaNumber /\<0[dDfFlL]\?\>/ " Just a bare 0 syn match scalaNumber /\<[1-9]\d*[dDfFlL]\?\>/ " A multi-digit number - octal numbers with leading 0's are deprecated in Scala syn match scalaNumber /\<0[xX][0-9a-fA-F]\+[dDfFlL]\?\>/ " Hex number syn match scalaNumber /\%(\<\d\+\.\d*\|\.\d\+\)\%([eE][-+]\=\d\+\)\=[fFdD]\=/ " exponential notation 1 syn match scalaNumber /\<\d\+[eE][-+]\=\d\+[fFdD]\=\>/ " exponential notation 2 syn match scalaNumber /\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>/ " exponential notation 3 hi link scalaNumber Number syn region scalaRoundBrackets start="(" end=")" skipwhite contained contains=scalaTypeDeclaration,scalaSquareBrackets,scalaRoundBrackets syn region scalaSquareBrackets matchgroup=scalaSquareBracketsBrackets start="\[" end="\]" skipwhite nextgroup=scalaTypeExtension contains=scalaTypeDeclaration,scalaSquareBrackets,scalaTypeOperator,scalaTypeAnnotationParameter syn match scalaTypeOperator /[-+=:<>]\+/ contained syn match scalaTypeAnnotationParameter /@\<[`_A-Za-z0-9$]\+\>/ contained hi link scalaSquareBracketsBrackets Type hi link scalaTypeOperator Keyword hi link scalaTypeAnnotationParameter Function syn match scalaShebang "\%^#!.*" display syn region scalaMultilineComment start="/\*" end="\*/" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaTodo,scalaCommentCodeBlock,@Spell keepend fold syn match scalaCommentAnnotation "@[_A-Za-z0-9$]\+" contained syn match scalaParameterAnnotation "\%(@tparam\|@param\|@see\)" nextgroup=scalaParamAnnotationValue skipwhite contained syn match scalaParamAnnotationValue /[.`_A-Za-z0-9$]\+/ contained syn region scalaDocLinks start="\[\[" end="\]\]" contained syn region scalaCommentCodeBlock matchgroup=Keyword start="{{{" end="}}}" contained syn match scalaTodo "\vTODO|FIXME|XXX" contained hi link scalaShebang Comment hi link scalaMultilineComment Comment hi link scalaDocLinks Function hi link scalaParameterAnnotation Function hi link scalaParamAnnotationValue Keyword hi link scalaCommentAnnotation Function hi link scalaCommentCodeBlockBrackets String hi link scalaCommentCodeBlock String hi link scalaTodo Todo syn match scalaAnnotation /@\<[`_A-Za-z0-9$]\+\>/ hi link scalaAnnotation PreProc syn match scalaTrailingComment "//.*$" contains=scalaTodo,@Spell hi link scalaTrailingComment Comment syn match scalaAkkaFSM /goto([^)]*)\_s\+\<using\>/ contains=scalaAkkaFSMGotoUsing syn match scalaAkkaFSM /stay\_s\+using/ syn match scalaAkkaFSM /^\s*stay\s*$/ syn match scalaAkkaFSM /when\ze([^)]*)/ syn match scalaAkkaFSM /startWith\ze([^)]*)/ syn match scalaAkkaFSM /initialize\ze()/ syn match scalaAkkaFSM /onTransition/ syn match scalaAkkaFSM /onTermination/ syn match scalaAkkaFSM /whenUnhandled/ syn match scalaAkkaFSMGotoUsing /\<using\>/ syn match scalaAkkaFSMGotoUsing /\<goto\>/ hi link scalaAkkaFSM PreProc hi link scalaAkkaFSMGotoUsing PreProc let b:current_syntax = 'scala' if main_syntax ==# 'scala' unlet main_syntax endif " vim:set sw=2 sts=2 ts=8 et: PK�������!�/ s.��.����vim80/syntax/slpconf.vimnu�[��������" Vim syntax file " Language: RFC 2614 - An API for Service Location configuration file " Previous Maintainer: Nikolai Weibull <now@bitwi.se> " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword slpconfTodo contained TODO FIXME XXX NOTE syn region slpconfComment display oneline start='^[#;]' end='$' \ contains=slpconfTodo,@Spell syn match slpconfBegin display '^' \ nextgroup=slpconfTag, \ slpconfComment skipwhite syn keyword slpconfTag contained net \ nextgroup=slpconfNetTagDot syn match slpconfNetTagDot contained display '.' \ nextgroup=slpconfNetTag syn keyword slpconfNetTag contained slp \ nextgroup=slpconfNetSlpTagdot syn match slpconfNetSlpTagDot contained display '.' \ nextgroup=slpconfNetSlpTag syn keyword slpconfNetSlpTag contained isDA traceDATraffic traceMsg \ traceDrop traceReg isBroadcastOnly \ passiveDADetection securityEnabled \ nextgroup=slpconfBooleanEq,slpconfBooleanHome \ skipwhite syn match slpconfBooleanHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfBooleanEq skipwhite syn match slpconfBooleanEq contained display '=' \ nextgroup=slpconfBoolean skipwhite syn keyword slpconfBoolean contained true false TRUE FALSE syn keyword slpconfNetSlpTag contained DAHeartBeat multicastTTL \ DAActiveDiscoveryInterval \ multicastMaximumWait multicastTimeouts \ randomWaitBound MTU maxResults \ nextgroup=slpconfIntegerEq,slpconfIntegerHome \ skipwhite syn match slpconfIntegerHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfIntegerEq skipwhite syn match slpconfIntegerEq contained display '=' \ nextgroup=slpconfInteger skipwhite syn match slpconfInteger contained display '\<\d\+\>' syn keyword slpconfNetSlpTag contained DAAttributes SAAttributes \ nextgroup=slpconfAttrEq,slpconfAttrHome \ skipwhite syn match slpconfAttrHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfAttrEq skipwhite syn match slpconfAttrEq contained display '=' \ nextgroup=slpconfAttrBegin skipwhite syn match slpconfAttrBegin contained display '(' \ nextgroup=slpconfAttrTag skipwhite syn match slpconfAttrTag contained display \ '[^* \t_(),\\!<=>~[:cntrl:]]\+' \ nextgroup=slpconfAttrTagEq skipwhite syn match slpconfAttrTagEq contained display '=' \ nextgroup=@slpconfAttrValue skipwhite syn cluster slpconfAttrValueCon contains=slpconfAttrValueSep,slpconfAttrEnd syn cluster slpconfAttrValue contains=slpconfAttrIValue,slpconfAttrSValue, \ slpconfAttrBValue,slpconfAttrSSValue syn match slpconfAttrSValue contained display '[^ (),\\!<=>~[:cntrl:]]\+' \ nextgroup=@slpconfAttrValueCon skipwhite syn match slpconfAttrSSValue contained display '\\FF\%(\\\x\x\)\+' \ nextgroup=@slpconfAttrValueCon skipwhite syn match slpconfAttrIValue contained display '[-]\=\d\+\>' \ nextgroup=@slpconfAttrValueCon skipwhite syn keyword slpconfAttrBValue contained true false \ nextgroup=@slpconfAttrValueCon skipwhite syn match slpconfAttrValueSep contained display ',' \ nextgroup=@slpconfAttrValue skipwhite syn match slpconfAttrEnd contained display ')' \ nextgroup=slpconfAttrSep skipwhite syn match slpconfAttrSep contained display ',' \ nextgroup=slpconfAttrBegin skipwhite syn keyword slpconfNetSlpTag contained useScopes typeHint \ nextgroup=slpconfStringsEq,slpconfStringsHome \ skipwhite syn match slpconfStringsHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfStringsEq skipwhite syn match slpconfStringsEq contained display '=' \ nextgroup=slpconfStrings skipwhite syn match slpconfStrings contained display \ '\%([[:digit:][:alpha:]]\|[!-+./:-@[-`{-~-]\|\\\x\x\)\+' \ nextgroup=slpconfStringsSep skipwhite syn match slpconfStringsSep contained display ',' \ nextgroup=slpconfStrings skipwhite syn keyword slpconfNetSlpTag contained DAAddresses \ nextgroup=slpconfAddressesEq,slpconfAddrsHome \ skipwhite syn match slpconfAddrsHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfAddressesEq skipwhite syn match slpconfAddressesEq contained display '=' \ nextgroup=@slpconfAddresses skipwhite syn cluster slpconfAddresses contains=slpconfFQDNs,slpconfHostnumbers syn match slpconfFQDNs contained display \ '\a[[:alnum:]-]*[[:alnum:]]\|\a' \ nextgroup=slpconfAddressesSep skipwhite syn match slpconfHostnumbers contained display \ '\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfAddressesSep skipwhite syn match slpconfAddressesSep contained display ',' \ nextgroup=@slpconfAddresses skipwhite syn keyword slpconfNetSlpTag contained serializedRegURL \ nextgroup=slpconfStringEq,slpconfStringHome \ skipwhite syn match slpconfStringHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfStringEq skipwhite syn match slpconfStringEq contained display '=' \ nextgroup=slpconfString skipwhite syn match slpconfString contained display \ '\%([!-+./:-@[-`{-~-]\|\\\x\x\)\+\|[[:digit:][:alpha:]]' syn keyword slpconfNetSlpTag contained multicastTimeouts DADiscoveryTimeouts \ datagramTimeouts \ nextgroup=slpconfIntegersEq, \ slpconfIntegersHome skipwhite syn match slpconfIntegersHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfIntegersEq skipwhite syn match slpconfIntegersEq contained display '=' \ nextgroup=slpconfIntegers skipwhite syn match slpconfIntegers contained display '\<\d\+\>' \ nextgroup=slpconfIntegersSep skipwhite syn match slpconfIntegersSep contained display ',' \ nextgroup=slpconfIntegers skipwhite syn keyword slpconfNetSlpTag contained interfaces \ nextgroup=slpconfHostnumsEq, \ slpconfHostnumsHome skipwhite syn match slpconfHostnumsHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfHostnumsEq skipwhite syn match slpconfHostnumsEq contained display '=' \ nextgroup=slpconfOHostnumbers skipwhite syn match slpconfOHostnumbers contained display \ '\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfHostnumsSep skipwhite syn match slpconfHostnumsSep contained display ',' \ nextgroup=slpconfOHostnumbers skipwhite syn keyword slpconfNetSlpTag contained locale \ nextgroup=slpconfLocaleEq,slpconfLocaleHome \ skipwhite syn match slpconfLocaleHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfLocaleEq skipwhite syn match slpconfLocaleEq contained display '=' \ nextgroup=slpconfLocale skipwhite syn match slpconfLocale contained display '\a\{1,8}\%(-\a\{1,8}\)\=' hi def link slpconfTodo Todo hi def link slpconfComment Comment hi def link slpconfTag Identifier hi def link slpconfDelimiter Delimiter hi def link slpconfNetTagDot slpconfDelimiter hi def link slpconfNetTag slpconfTag hi def link slpconfNetSlpTagDot slpconfNetTagDot hi def link slpconfNetSlpTag slpconfTag hi def link slpconfHome Special hi def link slpconfBooleanHome slpconfHome hi def link slpconfEq Operator hi def link slpconfBooleanEq slpconfEq hi def link slpconfBoolean Boolean hi def link slpconfIntegerHome slpconfHome hi def link slpconfIntegerEq slpconfEq hi def link slpconfInteger Number hi def link slpconfAttrHome slpconfHome hi def link slpconfAttrEq slpconfEq hi def link slpconfAttrBegin slpconfDelimiter hi def link slpconfAttrTag slpconfTag hi def link slpconfAttrTagEq slpconfEq hi def link slpconfAttrIValue slpconfInteger hi def link slpconfAttrSValue slpconfString hi def link slpconfAttrBValue slpconfBoolean hi def link slpconfAttrSSValue slpconfString hi def link slpconfSeparator slpconfDelimiter hi def link slpconfAttrValueSep slpconfSeparator hi def link slpconfAttrEnd slpconfAttrBegin hi def link slpconfAttrSep slpconfSeparator hi def link slpconfStringsHome slpconfHome hi def link slpconfStringsEq slpconfEq hi def link slpconfStrings slpconfString hi def link slpconfStringsSep slpconfSeparator hi def link slpconfAddrsHome slpconfHome hi def link slpconfAddressesEq slpconfEq hi def link slpconfFQDNs String hi def link slpconfHostnumbers Number hi def link slpconfAddressesSep slpconfSeparator hi def link slpconfStringHome slpconfHome hi def link slpconfStringEq slpconfEq hi def link slpconfString String hi def link slpconfIntegersHome slpconfHome hi def link slpconfIntegersEq slpconfEq hi def link slpconfIntegers slpconfInteger hi def link slpconfIntegersSep slpconfSeparator hi def link slpconfHostnumsHome slpconfHome hi def link slpconfHostnumsEq slpconfEq hi def link slpconfOHostnumbers slpconfHostnumbers hi def link slpconfHostnumsSep slpconfSeparator hi def link slpconfLocaleHome slpconfHome hi def link slpconfLocaleEq slpconfEq hi def link slpconfLocale slpconfString let b:current_syntax = "slpconf" let &cpo = s:cpo_save unlet s:cpo_save PK�������!�WtE��E����vim80/syntax/wvdial.vimnu�[��������" Vim syntax file " Language: Configuration file for WvDial " Maintainer: Prahlad Vaidyanathan <slime@vsnl.net> " Last Update: Mon, 15 Oct 2001 09:39:03 Indian Standard Time " Quit if syntax file is already loaded if exists("b:current_syntax") finish endif syn match wvdialComment "^;.*$"lc=1 syn match wvdialComment "[^\\];.*$"lc=1 syn match wvdialSection "^\s*\[.*\]" syn match wvdialValue "=.*$"ms=s+1 syn match wvdialValue "\s*[^ ;"' ]\+"lc=1 syn match wvdialVar "^\s*\(Inherits\|Modem\|Baud\|Init.\|Phone\|Area\ Code\|Dial\ Prefix\|Dial\ Command\|Login\|Login\| Prompt\|Password\|Password\ Prompt\|PPPD\ Path\|Force\ Address\|Remote\ Name\|Carrier\ Check\|Stupid\ [Mm]ode\|New\ PPPD\|Default\ Reply\|Auto\ Reconnect\|SetVolume\|Username\)" syn match wvdialEqual "=" " The default highlighting hi def link wvdialComment Comment hi def link wvdialSection PreProc hi def link wvdialVar Identifier hi def link wvdialValue String hi def link wvdialEqual Statement let b:current_syntax = "wvdial" "EOF vim: tw=78:ft=vim:ts=8 PK�������!�f��f����vim80/syntax/c.vimnu�[��������" Vim syntax file " Language: C " Maintainer: Bram Moolenaar <Bram@vim.org> " Last Change: 2017 Apr 30 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim let s:ft = matchstr(&ft, '^\([^.]\)\+') " Optional embedded Autodoc parsing " To enable it add: let g:c_autodoc = 1 " to your .vimrc if exists("c_autodoc") syn include @cAutodoc <sfile>:p:h/autodoc.vim unlet b:current_syntax endif " A bunch of useful C keywords syn keyword cStatement goto break return continue asm syn keyword cLabel case default syn keyword cConditional if else switch syn keyword cRepeat while for do syn keyword cTodo contained TODO FIXME XXX " It's easy to accidentally add a space after a backslash that was intended " for line continuation. Some compilers allow it, which makes it " unpredictable and should be avoided. syn match cBadContinuation contained "\\\s\+$" " cCommentGroup allows adding matches for special things in comments syn cluster cCommentGroup contains=cTodo,cBadContinuation " String and Character constants " Highlight special characters (those which have a backslash) differently syn match cSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" if !exists("c_no_utf") syn match cSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)" endif if !exists("c_no_cformat") " Highlight % items in strings. if !exists("c_no_c99") " ISO C99 syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained else syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained endif syn match cFormat display "%%" contained endif " cCppString: same as cString, but ends at end of line if s:ft ==# "cpp" && !exists("cpp_no_cpp11") && !exists("c_no_cformat") " ISO C++11 syn region cString start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend syn region cCppString start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell elseif s:ft ==# "c" && !exists("c_no_c11") && !exists("c_no_cformat") " ISO C99 syn region cString start=+\%(L\|U\|u8\)\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend syn region cCppString start=+\%(L\|U\|u8\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell else " older C or C++ syn match cFormat display "%%" contained syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell endif syn region cCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip syn cluster cStringGroup contains=cCppString,cCppSkip syn match cCharacter "L\='[^\\]'" syn match cCharacter "L'[^']*'" contains=cSpecial if exists("c_gnu") syn match cSpecialError "L\='\\[^'\"?\\abefnrtv]'" syn match cSpecialCharacter "L\='\\['\"?\\abefnrtv]'" else syn match cSpecialError "L\='\\[^'\"?\\abfnrtv]'" syn match cSpecialCharacter "L\='\\['\"?\\abfnrtv]'" endif syn match cSpecialCharacter display "L\='\\\o\{1,3}'" syn match cSpecialCharacter display "'\\x\x\{1,2}'" syn match cSpecialCharacter display "L'\\x\x\+'" if (s:ft ==# "c" && !exists("c_no_c11")) || (s:ft ==# "cpp" && !exists("cpp_no_cpp11")) " ISO C11 or ISO C++ 11 if exists("c_no_cformat") syn region cString start=+\%(U\|u8\=\)"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell extend else syn region cString start=+\%(U\|u8\=\)"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend endif syn match cCharacter "[Uu]'[^\\]'" syn match cCharacter "[Uu]'[^']*'" contains=cSpecial if exists("c_gnu") syn match cSpecialError "[Uu]'\\[^'\"?\\abefnrtv]'" syn match cSpecialCharacter "[Uu]'\\['\"?\\abefnrtv]'" else syn match cSpecialError "[Uu]'\\[^'\"?\\abfnrtv]'" syn match cSpecialCharacter "[Uu]'\\['\"?\\abfnrtv]'" endif syn match cSpecialCharacter display "[Uu]'\\\o\{1,3}'" syn match cSpecialCharacter display "[Uu]'\\x\x\+'" endif "when wanted, highlight trailing white space if exists("c_space_errors") if !exists("c_no_trail_space_error") syn match cSpaceError display excludenl "\s\+$" endif if !exists("c_no_tab_space_error") syn match cSpaceError display " \+\t"me=e-1 endif endif " This should be before cErrInParen to avoid problems with #define ({ xxx }) if exists("c_curly_error") syn match cCurlyError "}" syn region cBlock start="{" end="}" contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,@cStringGroup,@Spell fold else syn region cBlock start="{" end="}" transparent fold endif " Catch errors caused by wrong parenthesis and brackets. " Also accept <% for {, %> for }, <: for [ and :> for ] (C99) " But avoid matching <::. syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom if exists("c_no_curly_error") if s:ft ==# 'cpp' && !exists("cpp_no_cpp11") syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,@cStringGroup,@Spell " cCppParen: same as cParen but ends at end-of-line; used in cDefine syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell syn match cParenError display ")" syn match cErrInParen display contained "^^<%\|^%>" else syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,@cStringGroup,@Spell " cCppParen: same as cParen but ends at end-of-line; used in cDefine syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell syn match cParenError display ")" syn match cErrInParen display contained "^[{}]\|^<%\|^%>" endif elseif exists("c_no_bracket_error") if s:ft ==# 'cpp' && !exists("cpp_no_cpp11") syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,@cStringGroup,@Spell " cCppParen: same as cParen but ends at end-of-line; used in cDefine syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell syn match cParenError display ")" syn match cErrInParen display contained "<%\|%>" else syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,@cStringGroup,@Spell " cCppParen: same as cParen but ends at end-of-line; used in cDefine syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell syn match cParenError display ")" syn match cErrInParen display contained "[{}]\|<%\|%>" endif else if s:ft ==# 'cpp' && !exists("cpp_no_cpp11") syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,@cStringGroup,@Spell " cCppParen: same as cParen but ends at end-of-line; used in cDefine syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell syn match cParenError display "[\])]" syn match cErrInParen display contained "<%\|%>" syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,@cStringGroup,@Spell else syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,@cStringGroup,@Spell " cCppParen: same as cParen but ends at end-of-line; used in cDefine syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell syn match cParenError display "[\])]" syn match cErrInParen display contained "[\]{}]\|<%\|%>" syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cErrInParen,cCppParen,cCppBracket,@cStringGroup,@Spell endif " cCppBracket: same as cParen but ends at end-of-line; used in cDefine syn region cCppBracket transparent start='\[\|<::\@!' skip='\\$' excludenl end=']\|:>' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString,@Spell syn match cErrInBracket display contained "[);{}]\|<%\|%>" endif if s:ft ==# 'c' || exists("cpp_no_cpp11") syn region cBadBlock keepend start="{" end="}" contained containedin=cParen,cBracket,cBadBlock transparent fold endif "integer number, or floating point number without a dot and with "f". syn case ignore syn match cNumbers display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal " Same, but without octal error (for comments) syn match cNumbersCom display contained transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctal syn match cNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" "hex number syn match cNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" " Flag the first zero of an octal number as something special syn match cOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero syn match cOctalZero display contained "\<0" syn match cFloat display contained "\d\+f" "floating point number, with dot, optional exponent syn match cFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" "floating point number, starting with a dot, optional exponent syn match cFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, without dot, with exponent syn match cFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" if !exists("c_no_c99") "hexadecimal floating point number, optional leading digits, with dot, with exponent syn match cFloat display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>" "hexadecimal floating point number, with leading digits, optional dot, with exponent syn match cFloat display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>" endif " flag an octal number with wrong digits syn match cOctalError display contained "0\o*[89]\d*" syn case match if exists("c_comment_strings") " A comment can contain cString, cCharacter and cNumber. " But a "*/" inside a cString in a cComment DOES end the comment! So we " need to use a special type of cString: cCommentString, which also ends on " "*/", and sees a "*" at the start of the line as comment again. " Unfortunately this doesn't very well work for // type of comments :-( syn match cCommentSkip contained "^\s*\*\($\|\s\+\)" syn region cCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip syn region cComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError,@Spell if exists("c_no_comment_fold") " Use "extend" here to have preprocessor lines not terminate halfway a " comment. syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell extend else syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell fold extend endif else syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cSpaceError,@Spell if exists("c_no_comment_fold") syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell extend else syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell fold extend endif endif " keep a // comment separately, it terminates a preproc. conditional syn match cCommentError display "\*/" syn match cCommentStartError display "/\*"me=e-1 contained syn keyword cOperator sizeof if exists("c_gnu") syn keyword cStatement __asm__ syn keyword cOperator typeof __real__ __imag__ endif syn keyword cType int long short char void syn keyword cType signed unsigned float double if !exists("c_no_ansi") || exists("c_ansi_typedefs") syn keyword cType size_t ssize_t off_t wchar_t ptrdiff_t sig_atomic_t fpos_t syn keyword cType clock_t time_t va_list jmp_buf FILE DIR div_t ldiv_t syn keyword cType mbstate_t wctrans_t wint_t wctype_t endif if !exists("c_no_c99") " ISO C99 syn keyword cType _Bool bool _Complex complex _Imaginary imaginary syn keyword cType int8_t int16_t int32_t int64_t syn keyword cType uint8_t uint16_t uint32_t uint64_t if !exists("c_no_bsd") " These are BSD specific. syn keyword cType u_int8_t u_int16_t u_int32_t u_int64_t endif syn keyword cType int_least8_t int_least16_t int_least32_t int_least64_t syn keyword cType uint_least8_t uint_least16_t uint_least32_t uint_least64_t syn keyword cType int_fast8_t int_fast16_t int_fast32_t int_fast64_t syn keyword cType uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t syn keyword cType intptr_t uintptr_t syn keyword cType intmax_t uintmax_t endif if exists("c_gnu") syn keyword cType __label__ __complex__ __volatile__ endif syn keyword cStructure struct union enum typedef syn keyword cStorageClass static register auto volatile extern const if exists("c_gnu") syn keyword cStorageClass inline __attribute__ endif if !exists("c_no_c99") && s:ft !=# 'cpp' syn keyword cStorageClass inline restrict endif if !exists("c_no_c11") syn keyword cStorageClass _Alignas alignas syn keyword cOperator _Alignof alignof syn keyword cStorageClass _Atomic syn keyword cOperator _Generic syn keyword cStorageClass _Noreturn noreturn syn keyword cOperator _Static_assert static_assert syn keyword cStorageClass _Thread_local thread_local syn keyword cType char16_t char32_t endif if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu") if exists("c_gnu") syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__ __func__ endif syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__ syn keyword cConstant __STDC_VERSION__ syn keyword cConstant CHAR_BIT MB_LEN_MAX MB_CUR_MAX syn keyword cConstant UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX syn keyword cConstant CHAR_MIN INT_MIN LONG_MIN SHRT_MIN syn keyword cConstant CHAR_MAX INT_MAX LONG_MAX SHRT_MAX syn keyword cConstant SCHAR_MIN SINT_MIN SLONG_MIN SSHRT_MIN syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX if !exists("c_no_c99") syn keyword cConstant __func__ __VA_ARGS__ syn keyword cConstant LLONG_MIN LLONG_MAX ULLONG_MAX syn keyword cConstant INT8_MIN INT16_MIN INT32_MIN INT64_MIN syn keyword cConstant INT8_MAX INT16_MAX INT32_MAX INT64_MAX syn keyword cConstant UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX syn keyword cConstant INT_LEAST8_MIN INT_LEAST16_MIN INT_LEAST32_MIN INT_LEAST64_MIN syn keyword cConstant INT_LEAST8_MAX INT_LEAST16_MAX INT_LEAST32_MAX INT_LEAST64_MAX syn keyword cConstant UINT_LEAST8_MAX UINT_LEAST16_MAX UINT_LEAST32_MAX UINT_LEAST64_MAX syn keyword cConstant INT_FAST8_MIN INT_FAST16_MIN INT_FAST32_MIN INT_FAST64_MIN syn keyword cConstant INT_FAST8_MAX INT_FAST16_MAX INT_FAST32_MAX INT_FAST64_MAX syn keyword cConstant UINT_FAST8_MAX UINT_FAST16_MAX UINT_FAST32_MAX UINT_FAST64_MAX syn keyword cConstant INTPTR_MIN INTPTR_MAX UINTPTR_MAX syn keyword cConstant INTMAX_MIN INTMAX_MAX UINTMAX_MAX syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX endif syn keyword cConstant FLT_RADIX FLT_ROUNDS FLT_DIG FLT_MANT_DIG FLT_EPSILON DBL_DIG DBL_MANT_DIG DBL_EPSILON syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP FLT_MIN_10_EXP FLT_MAX_10_EXP syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP DBL_MIN_10_EXP DBL_MAX_10_EXP LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP HUGE_VAL CLOCKS_PER_SEC NULL LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY syn keyword cConstant LC_NUMERIC LC_TIME SIG_DFL SIG_ERR SIG_IGN SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM " Add POSIX signals as well... syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2 syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF FOPEN_MAX FILENAME_MAX L_tmpnam syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET TMP_MAX stderr stdin stdout EXIT_FAILURE EXIT_SUCCESS RAND_MAX " POSIX 2001 syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG SIGVTALRM SIGXCPU SIGXFSZ " non-POSIX signals syn keyword cConstant SIGWINCH SIGINFO " Add POSIX errors as well. List comes from: " http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html syn keyword cConstant E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF syn keyword cConstant EBADMSG EBUSY ECANCELED ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK syn keyword cConstant EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTUNREACH EIDRM EILSEQ syn keyword cConstant EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE syn keyword cConstant EMULTIHOP ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODATA syn keyword cConstant ENODEV ENOENT ENOEXEC ENOLCK ENOLINK ENOMEM ENOMSG ENOPROTOOPT ENOSPC ENOSR syn keyword cConstant ENOSTR ENOSYS ENOTCONN ENOTDIR ENOTEMPTY ENOTRECOVERABLE ENOTSOCK ENOTSUP syn keyword cConstant ENOTTY ENXIO EOPNOTSUPP EOVERFLOW EOWNERDEAD EPERM EPIPE EPROTO syn keyword cConstant EPROTONOSUPPORT EPROTOTYPE ERANGE EROFS ESPIPE ESRCH ESTALE ETIME ETIMEDOUT syn keyword cConstant ETXTBSY EWOULDBLOCK EXDEV " math.h syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4 syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 endif if !exists("c_no_c99") " ISO C99 syn keyword cConstant true false endif " Accept %: for # (C99) syn region cPreCondit start="^\s*\zs\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError syn match cPreConditMatch display "^\s*\zs\(%:\|#\)\s*\(else\|endif\)\>" if !exists("c_no_if0") syn cluster cCppOutInGroup contains=cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip syn region cCppOutWrapper start="^\s*\zs\(%:\|#\)\s*if\s\+0\+\s*\($\|//\|/\*\|&\)" end=".\@=\|$" contains=cCppOutIf,cCppOutElse,@NoSpell fold syn region cCppOutIf contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse if !exists("c_no_if0_fold") syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell fold else syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell endif syn region cCppOutElse contained matchgroup=cCppOutWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit syn region cCppInWrapper start="^\s*\zs\(%:\|#\)\s*if\s\+0*[1-9]\d*\s*\($\|//\|/\*\||\)" end=".\@=\|$" contains=cCppInIf,cCppInElse fold syn region cCppInIf contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\(%:\|#\)\s*endif\>" contains=TOP,cPreCondit if !exists("c_no_if0_fold") syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold else syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 endif syn region cCppInElse2 contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)\([^/]\|/[^/*]\)*" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell syn region cCppOutSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip syn region cCppInSkip contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(if\s\+\(\d\+\s*\($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc endif syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match cIncluded display contained "<[^>]*>" syn match cInclude display "^\s*\zs\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded "syn match cLineSkip "\\$" syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti,cBadBlock syn region cDefine start="^\s*\zs\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell syn region cPreProc start="^\s*\zs\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell " Optional embedded Autodoc parsing if exists("c_autodoc") syn match cAutodocReal display contained "\%(//\|[/ \t\v]\*\|^\*\)\@2<=!.*" contains=@cAutodoc containedin=cComment,cCommentL syn cluster cCommentGroup add=cAutodocReal syn cluster cPreProcGroup add=cAutodocReal endif " Highlight User Labels syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString if s:ft ==# 'c' || exists("cpp_no_cpp11") syn region cMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell,@cStringGroup endif " Avoid matching foo::bar() in C++ by requiring that the next char is not ':' syn cluster cLabelGroup contains=cUserLabel syn match cUserCont display "^\s*\zs\I\i*\s*:$" contains=@cLabelGroup syn match cUserCont display ";\s*\zs\I\i*\s*:$" contains=@cLabelGroup if s:ft ==# 'cpp' syn match cUserCont display "^\s*\zs\%(class\|struct\|enum\)\@!\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup syn match cUserCont display ";\s*\zs\%(class\|struct\|enum\)\@!\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup else syn match cUserCont display "^\s*\zs\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup syn match cUserCont display ";\s*\zs\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup endif syn match cUserLabel display "\I\i*" contained " Avoid recognizing most bitfields as labels syn match cBitField display "^\s*\zs\I\i*\s*:\s*[1-9]"me=e-1 contains=cType syn match cBitField display ";\s*\zs\I\i*\s*:\s*[1-9]"me=e-1 contains=cType if exists("c_minlines") let b:c_minlines = c_minlines else if !exists("c_no_if0") let b:c_minlines = 50 " #if 0 constructs can be long else let b:c_minlines = 15 " mostly for () constructs endif endif if exists("c_curly_error") syn sync fromstart else exec "syn sync ccomment cComment minlines=" . b:c_minlines endif " Define the default highlighting. " Only used when an item doesn't have highlighting yet hi def link cFormat cSpecial hi def link cCppString cString hi def link cCommentL cComment hi def link cCommentStart cComment hi def link cLabel Label hi def link cUserLabel Label hi def link cConditional Conditional hi def link cRepeat Repeat hi def link cCharacter Character hi def link cSpecialCharacter cSpecial hi def link cNumber Number hi def link cOctal Number hi def link cOctalZero PreProc " link this to Error if you want hi def link cFloat Float hi def link cOctalError cError hi def link cParenError cError hi def link cErrInParen cError hi def link cErrInBracket cError hi def link cCommentError cError hi def link cCommentStartError cError hi def link cSpaceError cError hi def link cSpecialError cError hi def link cCurlyError cError hi def link cOperator Operator hi def link cStructure Structure hi def link cStorageClass StorageClass hi def link cInclude Include hi def link cPreProc PreProc hi def link cDefine Macro hi def link cIncluded cString hi def link cError Error hi def link cStatement Statement hi def link cCppInWrapper cCppOutWrapper hi def link cCppOutWrapper cPreCondit hi def link cPreConditMatch cPreCondit hi def link cPreCondit PreCondit hi def link cType Type hi def link cConstant Constant hi def link cCommentString cString hi def link cComment2String cString hi def link cCommentSkip cComment hi def link cString String hi def link cComment Comment hi def link cSpecial SpecialChar hi def link cTodo Todo hi def link cBadContinuation Error hi def link cCppOutSkip cCppOutIf2 hi def link cCppInElse2 cCppOutIf2 hi def link cCppOutIf2 cCppOut hi def link cCppOut Comment let b:current_syntax = "c" unlet s:ft let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK�������!�\������vim80/syntax/xmodmap.vimnu�[��������" Vim syntax file " Language: xmodmap(1) definition file " Previous Maintainer: Nikolai Weibull <now@bitwi.se> " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword xmodmapTodo contained TODO FIXME XXX NOTE syn region xmodmapComment display oneline start='^!' end='$' \ contains=xmodmapTodo,@Spell syn case ignore syn match xmodmapInt display '\<\d\+\>' syn match xmodmapHex display '\<0x\x\+\>' syn match xmodmapOctal display '\<0\o\+\>' syn match xmodmapOctalError display '\<0\o*[89]\d*' syn case match syn match xmodmapKeySym display '\<[A-Za-z]\>' " #include <X11/keysymdef.h> syn keyword xmodmapKeySym XK_VoidSymbol XK_BackSpace XK_Tab XK_Linefeed \ XK_Clear XK_Return XK_Pause XK_Scroll_Lock \ XK_Sys_Req XK_Escape XK_Delete XK_Multi_key \ XK_Codeinput XK_SingleCandidate \ XK_MultipleCandidate XK_PreviousCandidate \ XK_Kanji XK_Muhenkan XK_Henkan_Mode \ XK_Henkan XK_Romaji XK_Hiragana XK_Katakana \ XK_Hiragana_Katakana XK_Zenkaku XK_Hankaku \ XK_Zenkaku_Hankaku XK_Touroku XK_Massyo \ XK_Kana_Lock XK_Kana_Shift XK_Eisu_Shift \ XK_Eisu_toggle XK_Kanji_Bangou XK_Zen_Koho \ XK_Mae_Koho XK_Home XK_Left XK_Up XK_Right \ XK_Down XK_Prior XK_Page_Up XK_Next \ XK_Page_Down XK_End XK_Begin XK_Select \ XK_Print XK_Execute XK_Insert XK_Undo XK_Redo \ XK_Menu XK_Find XK_Cancel XK_Help XK_Break \ XK_Mode_switch XK_script_switch XK_Num_Lock \ XK_KP_Space XK_KP_Tab XK_KP_Enter XK_KP_F1 \ XK_KP_F2 XK_KP_F3 XK_KP_F4 XK_KP_Home \ XK_KP_Left XK_KP_Up XK_KP_Right XK_KP_Down \ XK_KP_Prior XK_KP_Page_Up XK_KP_Next \ XK_KP_Page_Down XK_KP_End XK_KP_Begin \ XK_KP_Insert XK_KP_Delete XK_KP_Equal \ XK_KP_Multiply XK_KP_Add XK_KP_Separator \ XK_KP_Subtract XK_KP_Decimal XK_KP_Divide \ XK_KP_0 XK_KP_1 XK_KP_2 XK_KP_3 XK_KP_4 \ XK_KP_5 XK_KP_6 XK_KP_7 XK_KP_8 XK_KP_9 XK_F1 \ XK_F2 XK_F3 XK_F4 XK_F5 XK_F6 XK_F7 XK_F8 \ XK_F9 XK_F10 XK_F11 XK_L1 XK_F12 XK_L2 XK_F13 \ XK_L3 XK_F14 XK_L4 XK_F15 XK_L5 XK_F16 XK_L6 \ XK_F17 XK_L7 XK_F18 XK_L8 XK_F19 XK_L9 XK_F20 \ XK_L10 XK_F21 XK_R1 XK_F22 XK_R2 XK_F23 \ XK_R3 XK_F24 XK_R4 XK_F25 XK_R5 XK_F26 \ XK_R6 XK_F27 XK_R7 XK_F28 XK_R8 XK_F29 \ XK_R9 XK_F30 XK_R10 XK_F31 XK_R11 XK_F32 \ XK_R12 XK_F33 XK_R13 XK_F34 XK_R14 XK_F35 \ XK_R15 XK_Shift_L XK_Shift_R XK_Control_L \ XK_Control_R XK_Caps_Lock XK_Shift_Lock \ XK_Meta_L XK_Meta_R XK_Alt_L XK_Alt_R \ XK_Super_L XK_Super_R XK_Hyper_L XK_Hyper_R \ XK_dead_hook XK_dead_horn XK_3270_Duplicate \ XK_3270_FieldMark XK_3270_Right2 XK_3270_Left2 \ XK_3270_BackTab XK_3270_EraseEOF \ XK_3270_EraseInput XK_3270_Reset \ XK_3270_Quit XK_3270_PA1 XK_3270_PA2 \ XK_3270_PA3 XK_3270_Test XK_3270_Attn \ XK_3270_CursorBlink XK_3270_AltCursor \ XK_3270_KeyClick XK_3270_Jump \ XK_3270_Ident XK_3270_Rule XK_3270_Copy \ XK_3270_Play XK_3270_Setup XK_3270_Record \ XK_3270_ChangeScreen XK_3270_DeleteWord \ XK_3270_ExSelect XK_3270_CursorSelect \ XK_3270_PrintScreen XK_3270_Enter XK_space \ XK_exclam XK_quotedbl XK_numbersign XK_dollar \ XK_percent XK_ampersand XK_apostrophe \ XK_quoteright XK_parenleft XK_parenright \ XK_asterisk XK_plus XK_comma XK_minus \ XK_period XK_slash XK_0 XK_1 XK_2 XK_3 \ XK_4 XK_5 XK_6 XK_7 XK_8 XK_9 XK_colon \ XK_semicolon XK_less XK_equal XK_greater \ XK_question XK_at XK_A XK_B XK_C XK_D XK_E \ XK_F XK_G XK_H XK_I XK_J XK_K XK_L XK_M XK_N \ XK_O XK_P XK_Q XK_R XK_S XK_T XK_U XK_V XK_W \ XK_X XK_Y XK_Z XK_bracketleft XK_backslash \ XK_bracketright XK_asciicircum XK_underscore \ XK_grave XK_quoteleft XK_a XK_b XK_c XK_d \ XK_e XK_f XK_g XK_h XK_i XK_j XK_k XK_l \ XK_m XK_n XK_o XK_p XK_q XK_r XK_s XK_t XK_u \ XK_v XK_w XK_x XK_y XK_z XK_braceleft XK_bar \ XK_braceright XK_asciitilde XK_nobreakspace \ XK_exclamdown XK_cent XK_sterling XK_currency \ XK_yen XK_brokenbar XK_section XK_diaeresis \ XK_copyright XK_ordfeminine XK_guillemotleft \ XK_notsign XK_hyphen XK_registered XK_macron \ XK_degree XK_plusminus XK_twosuperior \ XK_threesuperior XK_acute XK_mu XK_paragraph \ XK_periodcentered XK_cedilla XK_onesuperior \ XK_masculine XK_guillemotright XK_onequarter \ XK_onehalf XK_threequarters XK_questiondown \ XK_Agrave XK_Aacute XK_Acircumflex XK_Atilde \ XK_Adiaeresis XK_Aring XK_AE XK_Ccedilla \ XK_Egrave XK_Eacute XK_Ecircumflex \ XK_Ediaeresis XK_Igrave XK_Iacute \ XK_Icircumflex XK_Idiaeresis XK_ETH XK_Eth \ XK_Ntilde XK_Ograve XK_Oacute XK_Ocircumflex \ XK_Otilde XK_Odiaeresis XK_multiply \ XK_Ooblique XK_Ugrave XK_Uacute XK_Ucircumflex \ XK_Udiaeresis XK_Yacute XK_THORN XK_Thorn \ XK_ssharp XK_agrave XK_aacute XK_acircumflex \ XK_atilde XK_adiaeresis XK_aring XK_ae \ XK_ccedilla XK_egrave XK_eacute XK_ecircumflex \ XK_ediaeresis XK_igrave XK_iacute \ XK_icircumflex XK_idiaeresis XK_eth XK_ntilde \ XK_ograve XK_oacute XK_ocircumflex XK_otilde \ XK_odiaeresis XK_division XK_oslash XK_ugrave \ XK_uacute XK_ucircumflex XK_udiaeresis \ XK_yacute XK_thorn XK_ydiaeresis XK_Aogonek \ XK_breve XK_Lstroke XK_Lcaron XK_Sacute \ XK_Scaron XK_Scedilla XK_Tcaron XK_Zacute \ XK_Zcaron XK_Zabovedot XK_aogonek XK_ogonek \ XK_lstroke XK_lcaron XK_sacute XK_caron \ XK_scaron XK_scedilla XK_tcaron XK_zacute \ XK_doubleacute XK_zcaron XK_zabovedot \ XK_Racute XK_Abreve XK_Lacute XK_Cacute \ XK_Ccaron XK_Eogonek XK_Ecaron XK_Dcaron \ XK_Dstroke XK_Nacute XK_Ncaron XK_Odoubleacute \ XK_Rcaron XK_Uring XK_Udoubleacute \ XK_Tcedilla XK_racute XK_abreve XK_lacute \ XK_cacute XK_ccaron XK_eogonek XK_ecaron \ XK_dcaron XK_dstroke XK_nacute XK_ncaron \ XK_odoubleacute XK_udoubleacute XK_rcaron \ XK_uring XK_tcedilla XK_abovedot XK_Hstroke \ XK_Hcircumflex XK_Iabovedot XK_Gbreve \ XK_Jcircumflex XK_hstroke XK_hcircumflex \ XK_idotless XK_gbreve XK_jcircumflex \ XK_Cabovedot XK_Ccircumflex XK_Gabovedot \ XK_Gcircumflex XK_Ubreve XK_Scircumflex \ XK_cabovedot XK_ccircumflex XK_gabovedot \ XK_gcircumflex XK_ubreve XK_scircumflex XK_kra \ XK_kappa XK_Rcedilla XK_Itilde XK_Lcedilla \ XK_Emacron XK_Gcedilla XK_Tslash XK_rcedilla \ XK_itilde XK_lcedilla XK_emacron XK_gcedilla \ XK_tslash XK_ENG XK_eng XK_Amacron XK_Iogonek \ XK_Eabovedot XK_Imacron XK_Ncedilla XK_Omacron \ XK_Kcedilla XK_Uogonek XK_Utilde XK_Umacron \ XK_amacron XK_iogonek XK_eabovedot XK_imacron \ XK_ncedilla XK_omacron XK_kcedilla XK_uogonek \ XK_utilde XK_umacron XK_Babovedot XK_babovedot \ XK_Dabovedot XK_Wgrave XK_Wacute XK_dabovedot \ XK_Ygrave XK_Fabovedot XK_fabovedot \ XK_Mabovedot XK_mabovedot XK_Pabovedot \ XK_wgrave XK_pabovedot XK_wacute XK_Sabovedot \ XK_ygrave XK_Wdiaeresis XK_wdiaeresis \ XK_sabovedot XK_Wcircumflex XK_Tabovedot \ XK_Ycircumflex XK_wcircumflex \ XK_tabovedot XK_ycircumflex XK_OE XK_oe \ XK_Ydiaeresis XK_overline XK_kana_fullstop \ XK_kana_openingbracket XK_kana_closingbracket \ XK_kana_comma XK_kana_conjunctive \ XK_kana_middledot XK_kana_WO XK_kana_a \ XK_kana_i XK_kana_u XK_kana_e XK_kana_o \ XK_kana_ya XK_kana_yu XK_kana_yo \ XK_kana_tsu XK_kana_tu XK_prolongedsound \ XK_kana_A XK_kana_I XK_kana_U XK_kana_E \ XK_kana_O XK_kana_KA XK_kana_KI XK_kana_KU \ XK_kana_KE XK_kana_KO XK_kana_SA XK_kana_SHI \ XK_kana_SU XK_kana_SE XK_kana_SO XK_kana_TA \ XK_kana_CHI XK_kana_TI XK_kana_TSU \ XK_kana_TU XK_kana_TE XK_kana_TO XK_kana_NA \ XK_kana_NI XK_kana_NU XK_kana_NE XK_kana_NO \ XK_kana_HA XK_kana_HI XK_kana_FU XK_kana_HU \ XK_kana_HE XK_kana_HO XK_kana_MA XK_kana_MI \ XK_kana_MU XK_kana_ME XK_kana_MO XK_kana_YA \ XK_kana_YU XK_kana_YO XK_kana_RA XK_kana_RI \ XK_kana_RU XK_kana_RE XK_kana_RO XK_kana_WA \ XK_kana_N XK_voicedsound XK_semivoicedsound \ XK_kana_switch XK_Farsi_0 XK_Farsi_1 \ XK_Farsi_2 XK_Farsi_3 XK_Farsi_4 XK_Farsi_5 \ XK_Farsi_6 XK_Farsi_7 XK_Farsi_8 XK_Farsi_9 \ XK_Arabic_percent XK_Arabic_superscript_alef \ XK_Arabic_tteh XK_Arabic_peh XK_Arabic_tcheh \ XK_Arabic_ddal XK_Arabic_rreh XK_Arabic_comma \ XK_Arabic_fullstop XK_Arabic_0 XK_Arabic_1 \ XK_Arabic_2 XK_Arabic_3 XK_Arabic_4 \ XK_Arabic_5 XK_Arabic_6 XK_Arabic_7 \ XK_Arabic_8 XK_Arabic_9 XK_Arabic_semicolon \ XK_Arabic_question_mark XK_Arabic_hamza \ XK_Arabic_maddaonalef XK_Arabic_hamzaonalef \ XK_Arabic_hamzaonwaw XK_Arabic_hamzaunderalef \ XK_Arabic_hamzaonyeh XK_Arabic_alef \ XK_Arabic_beh XK_Arabic_tehmarbuta \ XK_Arabic_teh XK_Arabic_theh XK_Arabic_jeem \ XK_Arabic_hah XK_Arabic_khah XK_Arabic_dal \ XK_Arabic_thal XK_Arabic_ra XK_Arabic_zain \ XK_Arabic_seen XK_Arabic_sheen \ XK_Arabic_sad XK_Arabic_dad XK_Arabic_tah \ XK_Arabic_zah XK_Arabic_ain XK_Arabic_ghain \ XK_Arabic_tatweel XK_Arabic_feh XK_Arabic_qaf \ XK_Arabic_kaf XK_Arabic_lam XK_Arabic_meem \ XK_Arabic_noon XK_Arabic_ha XK_Arabic_heh \ XK_Arabic_waw XK_Arabic_alefmaksura \ XK_Arabic_yeh XK_Arabic_fathatan \ XK_Arabic_dammatan XK_Arabic_kasratan \ XK_Arabic_fatha XK_Arabic_damma \ XK_Arabic_kasra XK_Arabic_shadda \ XK_Arabic_sukun XK_Arabic_madda_above \ XK_Arabic_hamza_above XK_Arabic_hamza_below \ XK_Arabic_jeh XK_Arabic_veh XK_Arabic_keheh \ XK_Arabic_gaf XK_Arabic_noon_ghunna \ XK_Arabic_heh_doachashmee XK_Farsi_yeh \ XK_Arabic_yeh_baree XK_Arabic_heh_goal \ XK_Arabic_switch XK_Cyrillic_GHE_bar \ XK_Cyrillic_ghe_bar XK_Cyrillic_ZHE_descender \ XK_Cyrillic_zhe_descender \ XK_Cyrillic_KA_descender \ XK_Cyrillic_ka_descender \ XK_Cyrillic_KA_vertstroke \ XK_Cyrillic_ka_vertstroke \ XK_Cyrillic_EN_descender \ XK_Cyrillic_en_descender \ XK_Cyrillic_U_straight XK_Cyrillic_u_straight \ XK_Cyrillic_U_straight_bar \ XK_Cyrillic_u_straight_bar \ XK_Cyrillic_HA_descender \ XK_Cyrillic_ha_descender \ XK_Cyrillic_CHE_descender \ XK_Cyrillic_che_descender \ XK_Cyrillic_CHE_vertstroke \ XK_Cyrillic_che_vertstroke XK_Cyrillic_SHHA \ XK_Cyrillic_shha XK_Cyrillic_SCHWA \ XK_Cyrillic_schwa XK_Cyrillic_I_macron \ XK_Cyrillic_i_macron XK_Cyrillic_O_bar \ XK_Cyrillic_o_bar XK_Cyrillic_U_macron \ XK_Cyrillic_u_macron XK_Serbian_dje \ XK_Macedonia_gje XK_Cyrillic_io \ XK_Ukrainian_ie XK_Ukranian_je \ XK_Macedonia_dse XK_Ukrainian_i XK_Ukranian_i \ XK_Ukrainian_yi XK_Ukranian_yi XK_Cyrillic_je \ XK_Serbian_je XK_Cyrillic_lje XK_Serbian_lje \ XK_Cyrillic_nje XK_Serbian_nje XK_Serbian_tshe \ XK_Macedonia_kje XK_Ukrainian_ghe_with_upturn \ XK_Byelorussian_shortu XK_Cyrillic_dzhe \ XK_Serbian_dze XK_numerosign \ XK_Serbian_DJE XK_Macedonia_GJE \ XK_Cyrillic_IO XK_Ukrainian_IE XK_Ukranian_JE \ XK_Macedonia_DSE XK_Ukrainian_I XK_Ukranian_I \ XK_Ukrainian_YI XK_Ukranian_YI XK_Cyrillic_JE \ XK_Serbian_JE XK_Cyrillic_LJE XK_Serbian_LJE \ XK_Cyrillic_NJE XK_Serbian_NJE XK_Serbian_TSHE \ XK_Macedonia_KJE XK_Ukrainian_GHE_WITH_UPTURN \ XK_Byelorussian_SHORTU XK_Cyrillic_DZHE \ XK_Serbian_DZE XK_Cyrillic_yu \ XK_Cyrillic_a XK_Cyrillic_be XK_Cyrillic_tse \ XK_Cyrillic_de XK_Cyrillic_ie XK_Cyrillic_ef \ XK_Cyrillic_ghe XK_Cyrillic_ha XK_Cyrillic_i \ XK_Cyrillic_shorti XK_Cyrillic_ka \ XK_Cyrillic_el XK_Cyrillic_em XK_Cyrillic_en \ XK_Cyrillic_o XK_Cyrillic_pe XK_Cyrillic_ya \ XK_Cyrillic_er XK_Cyrillic_es XK_Cyrillic_te \ XK_Cyrillic_u XK_Cyrillic_zhe XK_Cyrillic_ve \ XK_Cyrillic_softsign XK_Cyrillic_yeru \ XK_Cyrillic_ze XK_Cyrillic_sha XK_Cyrillic_e \ XK_Cyrillic_shcha XK_Cyrillic_che \ XK_Cyrillic_hardsign XK_Cyrillic_YU \ XK_Cyrillic_A XK_Cyrillic_BE XK_Cyrillic_TSE \ XK_Cyrillic_DE XK_Cyrillic_IE XK_Cyrillic_EF \ XK_Cyrillic_GHE XK_Cyrillic_HA XK_Cyrillic_I \ XK_Cyrillic_SHORTI XK_Cyrillic_KA \ XK_Cyrillic_EL XK_Cyrillic_EM XK_Cyrillic_EN \ XK_Cyrillic_O XK_Cyrillic_PE XK_Cyrillic_YA \ XK_Cyrillic_ER XK_Cyrillic_ES XK_Cyrillic_TE \ XK_Cyrillic_U XK_Cyrillic_ZHE XK_Cyrillic_VE \ XK_Cyrillic_SOFTSIGN XK_Cyrillic_YERU \ XK_Cyrillic_ZE XK_Cyrillic_SHA XK_Cyrillic_E \ XK_Cyrillic_SHCHA XK_Cyrillic_CHE \ XK_Cyrillic_HARDSIGN XK_Greek_ALPHAaccent \ XK_Greek_EPSILONaccent XK_Greek_ETAaccent \ XK_Greek_IOTAaccent XK_Greek_IOTAdieresis \ XK_Greek_OMICRONaccent XK_Greek_UPSILONaccent \ XK_Greek_UPSILONdieresis \ XK_Greek_OMEGAaccent XK_Greek_accentdieresis \ XK_Greek_horizbar XK_Greek_alphaaccent \ XK_Greek_epsilonaccent XK_Greek_etaaccent \ XK_Greek_iotaaccent XK_Greek_iotadieresis \ XK_Greek_iotaaccentdieresis \ XK_Greek_omicronaccent XK_Greek_upsilonaccent \ XK_Greek_upsilondieresis \ XK_Greek_upsilonaccentdieresis \ XK_Greek_omegaaccent XK_Greek_ALPHA \ XK_Greek_BETA XK_Greek_GAMMA XK_Greek_DELTA \ XK_Greek_EPSILON XK_Greek_ZETA XK_Greek_ETA \ XK_Greek_THETA XK_Greek_IOTA XK_Greek_KAPPA \ XK_Greek_LAMDA XK_Greek_LAMBDA XK_Greek_MU \ XK_Greek_NU XK_Greek_XI XK_Greek_OMICRON \ XK_Greek_PI XK_Greek_RHO XK_Greek_SIGMA \ XK_Greek_TAU XK_Greek_UPSILON XK_Greek_PHI \ XK_Greek_CHI XK_Greek_PSI XK_Greek_OMEGA \ XK_Greek_alpha XK_Greek_beta XK_Greek_gamma \ XK_Greek_delta XK_Greek_epsilon XK_Greek_zeta \ XK_Greek_eta XK_Greek_theta XK_Greek_iota \ XK_Greek_kappa XK_Greek_lamda XK_Greek_lambda \ XK_Greek_mu XK_Greek_nu XK_Greek_xi \ XK_Greek_omicron XK_Greek_pi XK_Greek_rho \ XK_Greek_sigma XK_Greek_finalsmallsigma \ XK_Greek_tau XK_Greek_upsilon XK_Greek_phi \ XK_Greek_chi XK_Greek_psi XK_Greek_omega \ XK_Greek_switch XK_leftradical \ XK_topleftradical XK_horizconnector \ XK_topintegral XK_botintegral \ XK_vertconnector XK_topleftsqbracket \ XK_botleftsqbracket XK_toprightsqbracket \ XK_botrightsqbracket XK_topleftparens \ XK_botleftparens XK_toprightparens \ XK_botrightparens XK_leftmiddlecurlybrace \ XK_rightmiddlecurlybrace \ XK_topleftsummation XK_botleftsummation \ XK_topvertsummationconnector \ XK_botvertsummationconnector \ XK_toprightsummation XK_botrightsummation \ XK_rightmiddlesummation XK_lessthanequal \ XK_notequal XK_greaterthanequal XK_integral \ XK_therefore XK_variation XK_infinity \ XK_nabla XK_approximate XK_similarequal \ XK_ifonlyif XK_implies XK_identical XK_radical \ XK_includedin XK_includes XK_intersection \ XK_union XK_logicaland XK_logicalor \ XK_partialderivative XK_function XK_leftarrow \ XK_uparrow XK_rightarrow XK_downarrow XK_blank \ XK_soliddiamond XK_checkerboard XK_ht XK_ff \ XK_cr XK_lf XK_nl XK_vt XK_lowrightcorner \ XK_uprightcorner XK_upleftcorner \ XK_lowleftcorner XK_crossinglines \ XK_horizlinescan1 XK_horizlinescan3 \ XK_horizlinescan5 XK_horizlinescan7 \ XK_horizlinescan9 XK_leftt XK_rightt XK_bott \ XK_topt XK_vertbar XK_emspace XK_enspace \ XK_em3space XK_em4space XK_digitspace \ XK_punctspace XK_thinspace XK_hairspace \ XK_emdash XK_endash XK_signifblank XK_ellipsis \ XK_doubbaselinedot XK_onethird XK_twothirds \ XK_onefifth XK_twofifths XK_threefifths \ XK_fourfifths XK_onesixth XK_fivesixths \ XK_careof XK_figdash XK_leftanglebracket \ XK_decimalpoint XK_rightanglebracket \ XK_marker XK_oneeighth XK_threeeighths \ XK_fiveeighths XK_seveneighths XK_trademark \ XK_signaturemark XK_trademarkincircle \ XK_leftopentriangle XK_rightopentriangle \ XK_emopencircle XK_emopenrectangle \ XK_leftsinglequotemark XK_rightsinglequotemark \ XK_leftdoublequotemark XK_rightdoublequotemark \ XK_prescription XK_minutes XK_seconds \ XK_latincross XK_hexagram XK_filledrectbullet \ XK_filledlefttribullet XK_filledrighttribullet \ XK_emfilledcircle XK_emfilledrect \ XK_enopencircbullet XK_enopensquarebullet \ XK_openrectbullet XK_opentribulletup \ XK_opentribulletdown XK_openstar \ XK_enfilledcircbullet XK_enfilledsqbullet \ XK_filledtribulletup XK_filledtribulletdown \ XK_leftpointer XK_rightpointer XK_club \ XK_diamond XK_heart XK_maltesecross \ XK_dagger XK_doubledagger XK_checkmark \ XK_ballotcross XK_musicalsharp XK_musicalflat \ XK_malesymbol XK_femalesymbol XK_telephone \ XK_telephonerecorder XK_phonographcopyright \ XK_caret XK_singlelowquotemark \ XK_doublelowquotemark XK_cursor \ XK_leftcaret XK_rightcaret XK_downcaret \ XK_upcaret XK_overbar XK_downtack XK_upshoe \ XK_downstile XK_underbar XK_jot XK_quad \ XK_uptack XK_circle XK_upstile XK_downshoe \ XK_rightshoe XK_leftshoe XK_lefttack \ XK_righttack XK_hebrew_doublelowline \ XK_hebrew_aleph XK_hebrew_bet XK_hebrew_beth \ XK_hebrew_gimel XK_hebrew_gimmel \ XK_hebrew_dalet XK_hebrew_daleth \ XK_hebrew_he XK_hebrew_waw XK_hebrew_zain \ XK_hebrew_zayin XK_hebrew_chet XK_hebrew_het \ XK_hebrew_tet XK_hebrew_teth XK_hebrew_yod \ XK_hebrew_finalkaph XK_hebrew_kaph \ XK_hebrew_lamed XK_hebrew_finalmem \ XK_hebrew_mem XK_hebrew_finalnun XK_hebrew_nun \ XK_hebrew_samech XK_hebrew_samekh \ XK_hebrew_ayin XK_hebrew_finalpe XK_hebrew_pe \ XK_hebrew_finalzade XK_hebrew_finalzadi \ XK_hebrew_zade XK_hebrew_zadi XK_hebrew_qoph \ XK_hebrew_kuf XK_hebrew_resh XK_hebrew_shin \ XK_hebrew_taw XK_hebrew_taf XK_Hebrew_switch \ XK_Thai_kokai XK_Thai_khokhai XK_Thai_khokhuat \ XK_Thai_khokhwai XK_Thai_khokhon \ XK_Thai_khorakhang XK_Thai_ngongu \ XK_Thai_chochan XK_Thai_choching \ XK_Thai_chochang XK_Thai_soso XK_Thai_chochoe \ XK_Thai_yoying XK_Thai_dochada XK_Thai_topatak \ XK_Thai_thothan XK_Thai_thonangmontho \ XK_Thai_thophuthao XK_Thai_nonen \ XK_Thai_dodek XK_Thai_totao XK_Thai_thothung \ XK_Thai_thothahan XK_Thai_thothong \ XK_Thai_nonu XK_Thai_bobaimai XK_Thai_popla \ XK_Thai_phophung XK_Thai_fofa XK_Thai_phophan \ XK_Thai_fofan XK_Thai_phosamphao XK_Thai_moma \ XK_Thai_yoyak XK_Thai_rorua XK_Thai_ru \ XK_Thai_loling XK_Thai_lu XK_Thai_wowaen \ XK_Thai_sosala XK_Thai_sorusi XK_Thai_sosua \ XK_Thai_hohip XK_Thai_lochula XK_Thai_oang \ XK_Thai_honokhuk XK_Thai_paiyannoi \ XK_Thai_saraa XK_Thai_maihanakat \ XK_Thai_saraaa XK_Thai_saraam XK_Thai_sarai \ XK_Thai_saraii XK_Thai_saraue XK_Thai_sarauee \ XK_Thai_sarau XK_Thai_sarauu XK_Thai_phinthu \ XK_Thai_maihanakat_maitho XK_Thai_baht \ XK_Thai_sarae XK_Thai_saraae XK_Thai_sarao \ XK_Thai_saraaimaimuan XK_Thai_saraaimaimalai \ XK_Thai_lakkhangyao XK_Thai_maiyamok \ XK_Thai_maitaikhu XK_Thai_maiek XK_Thai_maitho \ XK_Thai_maitri XK_Thai_maichattawa \ XK_Thai_thanthakhat XK_Thai_nikhahit \ XK_Thai_leksun XK_Thai_leknung XK_Thai_leksong \ XK_Thai_leksam XK_Thai_leksi XK_Thai_lekha \ XK_Thai_lekhok XK_Thai_lekchet XK_Thai_lekpaet \ XK_Thai_lekkao XK_Hangul XK_Hangul_Start \ XK_Hangul_End XK_Hangul_Hanja XK_Hangul_Jamo \ XK_Hangul_Romaja XK_Hangul_Codeinput \ XK_Hangul_Jeonja XK_Hangul_Banja \ XK_Hangul_PreHanja XK_Hangul_PostHanja \ XK_Hangul_SingleCandidate \ XK_Hangul_MultipleCandidate \ XK_Hangul_PreviousCandidate XK_Hangul_Special \ XK_Hangul_switch XK_Hangul_Kiyeog \ XK_Hangul_SsangKiyeog XK_Hangul_KiyeogSios \ XK_Hangul_Nieun XK_Hangul_NieunJieuj \ XK_Hangul_NieunHieuh XK_Hangul_Dikeud \ XK_Hangul_SsangDikeud XK_Hangul_Rieul \ XK_Hangul_RieulKiyeog XK_Hangul_RieulMieum \ XK_Hangul_RieulPieub XK_Hangul_RieulSios \ XK_Hangul_RieulTieut XK_Hangul_RieulPhieuf \ XK_Hangul_RieulHieuh XK_Hangul_Mieum \ XK_Hangul_Pieub XK_Hangul_SsangPieub \ XK_Hangul_PieubSios XK_Hangul_Sios \ XK_Hangul_SsangSios XK_Hangul_Ieung \ XK_Hangul_Jieuj XK_Hangul_SsangJieuj \ XK_Hangul_Cieuc XK_Hangul_Khieuq \ XK_Hangul_Tieut XK_Hangul_Phieuf \ XK_Hangul_Hieuh XK_Hangul_A XK_Hangul_AE \ XK_Hangul_YA XK_Hangul_YAE XK_Hangul_EO \ XK_Hangul_E XK_Hangul_YEO XK_Hangul_YE \ XK_Hangul_O XK_Hangul_WA XK_Hangul_WAE \ XK_Hangul_OE XK_Hangul_YO XK_Hangul_U \ XK_Hangul_WEO XK_Hangul_WE XK_Hangul_WI \ XK_Hangul_YU XK_Hangul_EU XK_Hangul_YI \ XK_Hangul_I XK_Hangul_J_Kiyeog \ XK_Hangul_J_SsangKiyeog XK_Hangul_J_KiyeogSios \ XK_Hangul_J_Nieun XK_Hangul_J_NieunJieuj \ XK_Hangul_J_NieunHieuh XK_Hangul_J_Dikeud \ XK_Hangul_J_Rieul XK_Hangul_J_RieulKiyeog \ XK_Hangul_J_RieulMieum XK_Hangul_J_RieulPieub \ XK_Hangul_J_RieulSios XK_Hangul_J_RieulTieut \ XK_Hangul_J_RieulPhieuf XK_Hangul_J_RieulHieuh \ XK_Hangul_J_Mieum XK_Hangul_J_Pieub \ XK_Hangul_J_PieubSios XK_Hangul_J_Sios \ XK_Hangul_J_SsangSios XK_Hangul_J_Ieung \ XK_Hangul_J_Jieuj XK_Hangul_J_Cieuc \ XK_Hangul_J_Khieuq XK_Hangul_J_Tieut \ XK_Hangul_J_Phieuf XK_Hangul_J_Hieuh \ XK_Hangul_RieulYeorinHieuh \ XK_Hangul_SunkyeongeumMieum \ XK_Hangul_SunkyeongeumPieub XK_Hangul_PanSios \ XK_Hangul_KkogjiDalrinIeung \ XK_Hangul_SunkyeongeumPhieuf \ XK_Hangul_YeorinHieuh XK_Hangul_AraeA \ XK_Hangul_AraeAE XK_Hangul_J_PanSios \ XK_Hangul_J_KkogjiDalrinIeung \ XK_Hangul_J_YeorinHieuh XK_Korean_Won \ XK_Armenian_eternity XK_Armenian_ligature_ew \ XK_Armenian_full_stop XK_Armenian_verjaket \ XK_Armenian_parenright XK_Armenian_parenleft \ XK_Armenian_guillemotright \ XK_Armenian_guillemotleft XK_Armenian_em_dash \ XK_Armenian_dot XK_Armenian_mijaket \ XK_Armenian_separation_mark XK_Armenian_but \ XK_Armenian_comma XK_Armenian_en_dash \ XK_Armenian_hyphen XK_Armenian_yentamna \ XK_Armenian_ellipsis XK_Armenian_exclam \ XK_Armenian_amanak XK_Armenian_accent \ XK_Armenian_shesht XK_Armenian_question \ XK_Armenian_paruyk XK_Armenian_AYB \ XK_Armenian_ayb XK_Armenian_BEN \ XK_Armenian_ben XK_Armenian_GIM \ XK_Armenian_gim XK_Armenian_DA XK_Armenian_da \ XK_Armenian_YECH XK_Armenian_yech \ XK_Armenian_ZA XK_Armenian_za XK_Armenian_E \ XK_Armenian_e XK_Armenian_AT XK_Armenian_at \ XK_Armenian_TO XK_Armenian_to \ XK_Armenian_ZHE XK_Armenian_zhe \ XK_Armenian_INI XK_Armenian_ini \ XK_Armenian_LYUN XK_Armenian_lyun \ XK_Armenian_KHE XK_Armenian_khe \ XK_Armenian_TSA XK_Armenian_tsa \ XK_Armenian_KEN XK_Armenian_ken XK_Armenian_HO \ XK_Armenian_ho XK_Armenian_DZA XK_Armenian_dza \ XK_Armenian_GHAT XK_Armenian_ghat \ XK_Armenian_TCHE XK_Armenian_tche \ XK_Armenian_MEN XK_Armenian_men XK_Armenian_HI \ XK_Armenian_hi XK_Armenian_NU XK_Armenian_nu \ XK_Armenian_SHA XK_Armenian_sha XK_Armenian_VO \ XK_Armenian_vo XK_Armenian_CHA XK_Armenian_cha \ XK_Armenian_PE XK_Armenian_pe XK_Armenian_JE \ XK_Armenian_je XK_Armenian_RA XK_Armenian_ra \ XK_Armenian_SE XK_Armenian_se XK_Armenian_VEV \ XK_Armenian_vev XK_Armenian_TYUN \ XK_Armenian_tyun XK_Armenian_RE \ XK_Armenian_re XK_Armenian_TSO \ XK_Armenian_tso XK_Armenian_VYUN \ XK_Armenian_vyun XK_Armenian_PYUR \ XK_Armenian_pyur XK_Armenian_KE XK_Armenian_ke \ XK_Armenian_O XK_Armenian_o XK_Armenian_FE \ XK_Armenian_fe XK_Armenian_apostrophe \ XK_Armenian_section_sign XK_Georgian_an \ XK_Georgian_ban XK_Georgian_gan \ XK_Georgian_don XK_Georgian_en XK_Georgian_vin \ XK_Georgian_zen XK_Georgian_tan \ XK_Georgian_in XK_Georgian_kan XK_Georgian_las \ XK_Georgian_man XK_Georgian_nar XK_Georgian_on \ XK_Georgian_par XK_Georgian_zhar \ XK_Georgian_rae XK_Georgian_san \ XK_Georgian_tar XK_Georgian_un \ XK_Georgian_phar XK_Georgian_khar \ XK_Georgian_ghan XK_Georgian_qar \ XK_Georgian_shin XK_Georgian_chin \ XK_Georgian_can XK_Georgian_jil \ XK_Georgian_cil XK_Georgian_char \ XK_Georgian_xan XK_Georgian_jhan \ XK_Georgian_hae XK_Georgian_he XK_Georgian_hie \ XK_Georgian_we XK_Georgian_har XK_Georgian_hoe \ XK_Georgian_fi XK_Ccedillaabovedot \ XK_Xabovedot XK_Qabovedot XK_IE XK_UO \ XK_Zstroke XK_ccedillaabovedot XK_xabovedot \ XK_qabovedot XK_ie XK_uo XK_zstroke XK_SCHWA \ XK_schwa XK_Lbelowdot XK_Lstrokebelowdot \ XK_lbelowdot XK_lstrokebelowdot XK_Gtilde \ XK_gtilde XK_Abelowdot XK_abelowdot \ XK_Ahook XK_ahook XK_Acircumflexacute \ XK_acircumflexacute XK_Acircumflexgrave \ XK_acircumflexgrave XK_Acircumflexhook \ XK_acircumflexhook XK_Acircumflextilde \ XK_acircumflextilde XK_Acircumflexbelowdot \ XK_acircumflexbelowdot XK_Abreveacute \ XK_abreveacute XK_Abrevegrave XK_abrevegrave \ XK_Abrevehook XK_abrevehook XK_Abrevetilde \ XK_abrevetilde XK_Abrevebelowdot \ XK_abrevebelowdot XK_Ebelowdot XK_ebelowdot \ XK_Ehook XK_ehook XK_Etilde XK_etilde \ XK_Ecircumflexacute XK_ecircumflexacute \ XK_Ecircumflexgrave XK_ecircumflexgrave \ XK_Ecircumflexhook XK_ecircumflexhook \ XK_Ecircumflextilde XK_ecircumflextilde \ XK_Ecircumflexbelowdot XK_ecircumflexbelowdot \ XK_Ihook XK_ihook XK_Ibelowdot XK_ibelowdot \ XK_Obelowdot XK_obelowdot XK_Ohook XK_ohook \ XK_Ocircumflexacute XK_ocircumflexacute \ XK_Ocircumflexgrave XK_ocircumflexgrave \ XK_Ocircumflexhook XK_ocircumflexhook \ XK_Ocircumflextilde XK_ocircumflextilde \ XK_Ocircumflexbelowdot XK_ocircumflexbelowdot \ XK_Ohornacute XK_ohornacute XK_Ohorngrave \ XK_ohorngrave XK_Ohornhook XK_ohornhook \ XK_Ohorntilde XK_ohorntilde XK_Ohornbelowdot \ XK_ohornbelowdot XK_Ubelowdot XK_ubelowdot \ XK_Uhook XK_uhook XK_Uhornacute XK_uhornacute \ XK_Uhorngrave XK_uhorngrave XK_Uhornhook \ XK_uhornhook XK_Uhorntilde XK_uhorntilde \ XK_Uhornbelowdot XK_uhornbelowdot XK_Ybelowdot \ XK_ybelowdot XK_Yhook XK_yhook XK_Ytilde \ XK_ytilde XK_Ohorn XK_ohorn XK_Uhorn XK_uhorn \ XK_combining_tilde XK_combining_grave \ XK_combining_acute XK_combining_hook \ XK_combining_belowdot XK_EcuSign XK_ColonSign \ XK_CruzeiroSign XK_FFrancSign XK_LiraSign \ XK_MillSign XK_NairaSign XK_PesetaSign \ XK_RupeeSign XK_WonSign XK_NewSheqelSign \ XK_DongSign XK_EuroSign " #include <X11/Sunkeysym.h> syn keyword xmodmapKeySym SunXK_Sys_Req SunXK_Print_Screen SunXK_Compose \ SunXK_AltGraph SunXK_PageUp SunXK_PageDown \ SunXK_Undo SunXK_Again SunXK_Find SunXK_Stop \ SunXK_Props SunXK_Front SunXK_Copy SunXK_Open \ SunXK_Paste SunXK_Cut SunXK_PowerSwitch \ SunXK_AudioLowerVolume SunXK_AudioMute \ SunXK_AudioRaiseVolume SunXK_VideoDegauss \ SunXK_VideoLowerBrightness \ SunXK_VideoRaiseBrightness \ SunXK_PowerSwitchShift " #include <X11/XF86keysym.h> syn keyword xmodmapKeySym XF86XK_ModeLock XF86XK_Standby \ XF86XK_AudioLowerVolume XF86XK_AudioMute \ XF86XK_AudioRaiseVolume XF86XK_AudioPlay \ XF86XK_AudioStop XF86XK_AudioPrev \ XF86XK_AudioNext XF86XK_HomePage \ XF86XK_Mail XF86XK_Start XF86XK_Search \ XF86XK_AudioRecord XF86XK_Calculator \ XF86XK_Memo XF86XK_ToDoList XF86XK_Calendar \ XF86XK_PowerDown XF86XK_ContrastAdjust \ XF86XK_RockerUp XF86XK_RockerDown \ XF86XK_RockerEnter XF86XK_Back XF86XK_Forward \ XF86XK_Stop XF86XK_Refresh XF86XK_PowerOff \ XF86XK_WakeUp XF86XK_Eject XF86XK_ScreenSaver \ XF86XK_WWW XF86XK_Sleep XF86XK_Favorites \ XF86XK_AudioPause XF86XK_AudioMedia \ XF86XK_MyComputer XF86XK_VendorHome \ XF86XK_LightBulb XF86XK_Shop XF86XK_History \ XF86XK_OpenURL XF86XK_AddFavorite \ XF86XK_HotLinks XF86XK_BrightnessAdjust \ XF86XK_Finance XF86XK_Community \ XF86XK_AudioRewind XF86XK_XF86BackForward \ XF86XK_Launch0 XF86XK_Launch1 XF86XK_Launch2 \ XF86XK_Launch3 XF86XK_Launch4 XF86XK_Launch5 \ XF86XK_Launch6 XF86XK_Launch7 XF86XK_Launch8 \ XF86XK_Launch9 XF86XK_LaunchA XF86XK_LaunchB \ XF86XK_LaunchC XF86XK_LaunchD XF86XK_LaunchE \ XF86XK_LaunchF XF86XK_ApplicationLeft \ XF86XK_ApplicationRight XF86XK_Book \ XF86XK_CD XF86XK_Calculater XF86XK_Clear \ XF86XK_Close XF86XK_Copy XF86XK_Cut \ XF86XK_Display XF86XK_DOS XF86XK_Documents \ XF86XK_Excel XF86XK_Explorer XF86XK_Game \ XF86XK_Go XF86XK_iTouch XF86XK_LogOff \ XF86XK_Market XF86XK_Meeting XF86XK_MenuKB \ XF86XK_MenuPB XF86XK_MySites XF86XK_New \ XF86XK_News XF86XK_OfficeHome XF86XK_Open \ XF86XK_Option XF86XK_Paste XF86XK_Phone \ XF86XK_Q XF86XK_Reply XF86XK_Reload \ XF86XK_RotateWindows XF86XK_RotationPB \ XF86XK_RotationKB XF86XK_Save XF86XK_ScrollUp \ XF86XK_ScrollDown XF86XK_ScrollClick \ XF86XK_Send XF86XK_Spell XF86XK_SplitScreen \ XF86XK_Support XF86XK_TaskPane XF86XK_Terminal \ XF86XK_Tools XF86XK_Travel XF86XK_UserPB \ XF86XK_User1KB XF86XK_User2KB XF86XK_Video \ XF86XK_WheelButton XF86XK_Word XF86XK_Xfer \ XF86XK_ZoomIn XF86XK_ZoomOut XF86XK_Away \ XF86XK_Messenger XF86XK_WebCam \ XF86XK_MailForward XF86XK_Pictures \ XF86XK_Music XF86XK_Switch_VT_1 \ XF86XK_Switch_VT_2 XF86XK_Switch_VT_3 \ XF86XK_Switch_VT_4 XF86XK_Switch_VT_5 \ XF86XK_Switch_VT_6 XF86XK_Switch_VT_7 \ XF86XK_Switch_VT_8 XF86XK_Switch_VT_9 \ XF86XK_Switch_VT_10 XF86XK_Switch_VT_11 \ XF86XK_Switch_VT_12 XF86XK_Ungrab \ XF86XK_ClearGrab XF86XK_Next_VMode \ XF86XK_Prev_VMode syn keyword xmodmapKeyword keycode keysym clear add remove pointer hi def link xmodmapComment Comment hi def link xmodmapTodo Todo hi def link xmodmapInt Number hi def link xmodmapHex Number hi def link xmodmapOctal Number hi def link xmodmapOctalError Error hi def link xmodmapKeySym Constant hi def link xmodmapKeyword Keyword let b:current_syntax = "xmodmap" let &cpo = s:cpo_save unlet s:cpo_save PK�������!�^ *��*����vim80/syntax/asciidoc.vimnu�[��������" Vim syntax file " Language: AsciiDoc " Author: Stuart Rackham <srackham@gmail.com> (inspired by Felix " Obenhuber's original asciidoc.vim script). " URL: http://asciidoc.org/ " Licence: GPL (http://www.gnu.org) " Remarks: Vim 6 or greater " Last Update: 2014 Aug 29 (see Issue 240) " Limitations: " " - Nested quoted text formatting is highlighted according to the outer " format. " - If a closing Example Block delimiter may be mistaken for a title " underline. A workaround is to insert a blank line before the closing " delimiter. " - Lines within a paragraph starting with equals characters are " highlighted as single-line titles. " - Lines within a paragraph beginning with a period are highlighted as " block titles. if exists("b:current_syntax") finish endif syn clear syn sync fromstart syn sync linebreaks=100 " Run :help syn-priority to review syntax matching priority. syn keyword asciidocToDo TODO FIXME CHECK TEST XXX ZZZ DEPRECATED syn match asciidocBackslash /\\/ syn region asciidocIdMarker start=/^\$Id:\s/ end=/\s\$$/ syn match asciidocCallout /\\\@<!<\d\{1,2}>/ syn match asciidocOpenBlockDelimiter /^--$/ syn match asciidocLineBreak /[ \t]+$/ containedin=asciidocList syn match asciidocRuler /^'\{3,}$/ syn match asciidocPagebreak /^<\{3,}$/ syn match asciidocEntityRef /\\\@<!&[#a-zA-Z]\S\{-};/ syn region asciidocLiteralParagraph start=/\(\%^\|\_^\s*\n\)\@<=\s\+\S\+/ end=/\(^\(+\|--\)\?\s*$\)\@=/ contains=asciidocToDo syn match asciidocURL /\\\@<!\<\(http\|https\|ftp\|file\|irc\):\/\/[^| \t]*\(\w\|\/\)/ syn match asciidocEmail /[\\.:]\@<!\(\<\|<\)\w\(\w\|[.-]\)*@\(\w\|[.-]\)*\w>\?[0-9A-Za-z_]\@!/ syn match asciidocAttributeRef /\\\@<!{\w\(\w\|[-,+]\)*\([=!@#$%?:].*\)\?}/ " As a damage control measure quoted patterns always terminate at a blank " line (see 'Limitations' above). syn match asciidocQuotedAttributeList /\\\@<!\[[a-zA-Z0-9_-][a-zA-Z0-9 _-]*\][+_'`#*]\@=/ syn match asciidocQuotedSubscript /\\\@<!\~\S\_.\{-}\(\~\|\n\s*\n\)/ contains=asciidocEntityRef syn match asciidocQuotedSuperscript /\\\@<!\^\S\_.\{-}\(\^\|\n\s*\n\)/ contains=asciidocEntityRef syn match asciidocQuotedMonospaced /\(^\|[| \t([.,=\]]\)\@<=+\([+ \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(+\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef syn match asciidocQuotedMonospaced2 /\(^\|[| \t([.,=\]]\)\@<=`\([` \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(`\([| \t)[\],.?!;:=]\|$\)\@=\)/ syn match asciidocQuotedUnconstrainedMonospaced /[\\+]\@<!++\S\_.\{-}\(++\|\n\s*\n\)/ contains=asciidocEntityRef syn match asciidocQuotedEmphasized /\(^\|[| \t([.,=\]]\)\@<=_\([_ \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(_\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef syn match asciidocQuotedEmphasized2 /\(^\|[| \t([.,=\]]\)\@<='\([' \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\('\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef syn match asciidocQuotedUnconstrainedEmphasized /\\\@<!__\S\_.\{-}\(__\|\n\s*\n\)/ contains=asciidocEntityRef syn match asciidocQuotedBold /\(^\|[| \t([.,=\]]\)\@<=\*\([* \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(\*\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef syn match asciidocQuotedUnconstrainedBold /\\\@<!\*\*\S\_.\{-}\(\*\*\|\n\s*\n\)/ contains=asciidocEntityRef " Don't allow ` in single quoted (a kludge to stop confusion with `monospaced`). syn match asciidocQuotedSingleQuoted /\(^\|[| \t([.,=\]]\)\@<=`\([` \n\t]\)\@!\([^`]\|\n\(\s*\n\)\@!\)\{-}[^` \t]\('\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef syn match asciidocQuotedDoubleQuoted /\(^\|[| \t([.,=\]]\)\@<=``\([` \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(''\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef syn match asciidocDoubleDollarPassthrough /\\\@<!\(^\|[^0-9a-zA-Z$]\)\@<=\$\$..\{-}\(\$\$\([^0-9a-zA-Z$]\|$\)\@=\|^$\)/ syn match asciidocTriplePlusPassthrough /\\\@<!\(^\|[^0-9a-zA-Z$]\)\@<=+++..\{-}\(+++\([^0-9a-zA-Z$]\|$\)\@=\|^$\)/ syn match asciidocAdmonition /^\u\{3,15}:\(\s\+.*\)\@=/ syn region asciidocTable_OLD start=/^\([`.']\d*[-~_]*\)\+[-~_]\+\d*$/ end=/^$/ syn match asciidocBlockTitle /^\.[^. \t].*[^-~_]$/ contains=asciidocQuoted.*,asciidocAttributeRef syn match asciidocTitleUnderline /[-=~^+]\{2,}$/ transparent contained contains=NONE syn match asciidocOneLineTitle /^=\{1,5}\s\+\S.*$/ contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash syn match asciidocTwoLineTitle /^[^. +/].*[^.]\n[-=~^+]\{3,}$/ contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocTitleUnderline syn match asciidocAttributeList /^\[[^[ \t].*\]$/ syn match asciidocQuoteBlockDelimiter /^_\{4,}$/ syn match asciidocExampleBlockDelimiter /^=\{4,}$/ syn match asciidocSidebarDelimiter /^*\{4,}$/ " See http://vimdoc.sourceforge.net/htmldoc/usr_44.html for excluding region " contents from highlighting. syn match asciidocTablePrefix /\(\S\@<!\(\([0-9.]\+\)\([*+]\)\)\?\([<\^>.]\{,3}\)\?\([a-z]\)\?\)\?|/ containedin=asciidocTableBlock contained syn region asciidocTableBlock matchgroup=asciidocTableDelimiter start=/^|=\{3,}$/ end=/^|=\{3,}$/ keepend contains=ALL syn match asciidocTablePrefix /\(\S\@<!\(\([0-9.]\+\)\([*+]\)\)\?\([<\^>.]\{,3}\)\?\([a-z]\)\?\)\?!/ containedin=asciidocTableBlock contained syn region asciidocTableBlock2 matchgroup=asciidocTableDelimiter2 start=/^!=\{3,}$/ end=/^!=\{3,}$/ keepend contains=ALL syn match asciidocListContinuation /^+$/ syn region asciidocLiteralBlock start=/^\.\{4,}$/ end=/^\.\{4,}$/ contains=asciidocCallout,asciidocToDo keepend syn region asciidocListingBlock start=/^-\{4,}$/ end=/^-\{4,}$/ contains=asciidocCallout,asciidocToDo keepend syn region asciidocCommentBlock start="^/\{4,}$" end="^/\{4,}$" contains=asciidocToDo syn region asciidocPassthroughBlock start="^+\{4,}$" end="^+\{4,}$" " Allowing leading \w characters in the filter delimiter is to accomodate " the pre version 8.2.7 syntax and may be removed in future releases. syn region asciidocFilterBlock start=/^\w*\~\{4,}$/ end=/^\w*\~\{4,}$/ syn region asciidocMacroAttributes matchgroup=asciidocRefMacro start=/\\\@<!<<"\{-}\(\w\|-\|_\|:\|\.\)\+"\?,\?/ end=/\(>>\)\|^$/ contains=asciidocQuoted.* keepend syn region asciidocMacroAttributes matchgroup=asciidocAnchorMacro start=/\\\@<!\[\{2}\(\w\|-\|_\|:\|\.\)\+,\?/ end=/\]\{2}/ keepend syn region asciidocMacroAttributes matchgroup=asciidocAnchorMacro start=/\\\@<!\[\{3}\(\w\|-\|_\|:\|\.\)\+/ end=/\]\{3}/ keepend syn region asciidocMacroAttributes matchgroup=asciidocMacro start=/[\\0-9a-zA-Z]\@<!\w\(\w\|-\)*:\S\{-}\[/ skip=/\\\]/ end=/\]\|^$/ contains=asciidocQuoted.*,asciidocAttributeRef,asciidocEntityRef keepend " Highlight macro that starts with an attribute reference (a common idiom). syn region asciidocMacroAttributes matchgroup=asciidocMacro start=/\(\\\@<!{\w\(\w\|[-,+]\)*\([=!@#$%?:].*\)\?}\)\@<=\S\{-}\[/ skip=/\\\]/ end=/\]\|^$/ contains=asciidocQuoted.*,asciidocAttributeRef keepend syn region asciidocMacroAttributes matchgroup=asciidocIndexTerm start=/\\\@<!(\{2,3}/ end=/)\{2,3}/ contains=asciidocQuoted.*,asciidocAttributeRef keepend syn match asciidocCommentLine "^//\([^/].*\|\)$" contains=asciidocToDo syn region asciidocAttributeEntry start=/^:\w/ end=/:\(\s\|$\)/ oneline " Lists. syn match asciidocListBullet /^\s*\zs\(-\|\*\{1,5}\)\ze\s/ syn match asciidocListNumber /^\s*\zs\(\(\d\+\.\)\|\.\{1,5}\|\(\a\.\)\|\([ivxIVX]\+)\)\)\ze\s\+/ syn region asciidocListLabel start=/^\s*/ end=/\(:\{2,4}\|;;\)$/ oneline contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocToDo keepend " DEPRECATED: Horizontal label. syn region asciidocHLabel start=/^\s*/ end=/\(::\|;;\)\(\s\+\|\\$\)/ oneline contains=asciidocQuoted.*,asciidocMacroAttributes keepend " Starts with any of the above. syn region asciidocList start=/^\s*\(-\|\*\{1,5}\)\s/ start=/^\s*\(\(\d\+\.\)\|\.\{1,5}\|\(\a\.\)\|\([ivxIVX]\+)\)\)\s\+/ start=/.\+\(:\{2,4}\|;;\)$/ end=/\(^[=*]\{4,}$\)\@=/ end=/\(^\(+\|--\)\?\s*$\)\@=/ contains=asciidocList.\+,asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocCommentLine,asciidocAttributeList,asciidocToDo hi def link asciidocAdmonition Special hi def link asciidocAnchorMacro Macro hi def link asciidocAttributeEntry Special hi def link asciidocAttributeList Special hi def link asciidocAttributeMacro Macro hi def link asciidocAttributeRef Special hi def link asciidocBackslash Special hi def link asciidocBlockTitle Title hi def link asciidocCallout Label hi def link asciidocCommentBlock Comment hi def link asciidocCommentLine Comment hi def link asciidocDoubleDollarPassthrough Special hi def link asciidocEmail Macro hi def link asciidocEntityRef Special hi def link asciidocExampleBlockDelimiter Type hi def link asciidocFilterBlock Type hi def link asciidocHLabel Label hi def link asciidocIdMarker Special hi def link asciidocIndexTerm Macro hi def link asciidocLineBreak Special hi def link asciidocOpenBlockDelimiter Label hi def link asciidocListBullet Label hi def link asciidocListContinuation Label hi def link asciidocListingBlock Identifier hi def link asciidocListLabel Label hi def link asciidocListNumber Label hi def link asciidocLiteralBlock Identifier hi def link asciidocLiteralParagraph Identifier hi def link asciidocMacroAttributes Label hi def link asciidocMacro Macro hi def link asciidocOneLineTitle Title hi def link asciidocPagebreak Type hi def link asciidocPassthroughBlock Identifier hi def link asciidocQuoteBlockDelimiter Type hi def link asciidocQuotedAttributeList Special hi def link asciidocQuotedBold Special hi def link asciidocQuotedDoubleQuoted Label hi def link asciidocQuotedEmphasized2 Type hi asciidocQuotedEmphasizedItalic term=italic cterm=italic gui=italic hi def link asciidocQuotedEmphasized asciidocQuotedEmphasizedItalic hi def link asciidocQuotedMonospaced2 Identifier hi def link asciidocQuotedMonospaced Identifier hi def link asciidocQuotedSingleQuoted Label hi def link asciidocQuotedSubscript Type hi def link asciidocQuotedSuperscript Type hi def link asciidocQuotedUnconstrainedBold Special hi def link asciidocQuotedUnconstrainedEmphasized Type hi def link asciidocQuotedUnconstrainedMonospaced Identifier hi def link asciidocRefMacro Macro hi def link asciidocRuler Type hi def link asciidocSidebarDelimiter Type hi def link asciidocTableBlock2 NONE hi def link asciidocTableBlock NONE hi def link asciidocTableDelimiter2 Label hi def link asciidocTableDelimiter Label hi def link asciidocTable_OLD Type hi def link asciidocTablePrefix2 Label hi def link asciidocTablePrefix Label hi def link asciidocToDo Todo hi def link asciidocTriplePlusPassthrough Special hi def link asciidocTwoLineTitle Title hi def link asciidocURL Macro let b:current_syntax = "asciidoc" " vim: wrap et sw=2 sts=2: PK�������!�l��l����vim80/syntax/ave.vimnu�[��������" Vim syntax file " Copyright by Jan-Oliver Wagner " Language: avenue " Maintainer: Jan-Oliver Wagner <Jan-Oliver.Wagner@intevation.de> " Last change: 2001 May 10 " Avenue is the ArcView built-in language. ArcView is " a desktop GIS by ESRI. Though it is a built-in language " and a built-in editor is provided, the use of VIM increases " development speed. " I use some technologies to automatically load avenue scripts " into ArcView. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Avenue is entirely case-insensitive. syn case ignore " The keywords syn keyword aveStatement if then elseif else end break exit return syn keyword aveStatement for each in continue while " String syn region aveString start=+"+ end=+"+ " Integer number syn match aveNumber "[+-]\=\<[0-9]\+\>" " Operator syn keyword aveOperator or and max min xor mod by " 'not' is a kind of a problem: It's an Operator as well as a method " 'not' is only marked as an Operator if not applied as method syn match aveOperator "[^\.]not[^a-zA-Z]" " Variables syn keyword aveFixVariables av nil self false true nl tab cr tab syn match globalVariables "_[a-zA-Z][a-zA-Z0-9]*" syn match aveVariables "[a-zA-Z][a-zA-Z0-9_]*" syn match aveConst "#[A-Z][A-Z_]+" " Comments syn match aveComment "'.*" " Typical Typos " for C programmers: syn match aveTypos "==" syn match aveTypos "!=" " Define the default highlighting. " Only when an item doesn't have highlighting+yet hi def link aveStatement Statement hi def link aveString String hi def link aveNumber Number hi def link aveFixVariables Special hi def link aveVariables Identifier hi def link globalVariables Special hi def link aveConst Special hi def link aveClassMethods Function hi def link aveOperator Operator hi def link aveComment Comment hi def link aveTypos Error let b:current_syntax = "ave" PK�������!�5C��C����vim80/syntax/diff.vimnu�[��������" Vim syntax file " Language: Diff (context or unified) " Maintainer: Bram Moolenaar <Bram@vim.org> " Translations by Jakson Alves de Aquino. " Last Change: 2016 Apr 02 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") finish endif scriptencoding utf-8 syn match diffOnly "^Only in .*" syn match diffIdentical "^Files .* and .* are identical$" syn match diffDiffer "^Files .* and .* differ$" syn match diffBDiffer "^Binary files .* and .* differ$" syn match diffIsA "^File .* is a .* while file .* is a .*" syn match diffNoEOL "^\\ No newline at end of file .*" syn match diffCommon "^Common subdirectories: .*" " Disable the translations by setting diff_translations to zero. if !exists("diff_translations") || diff_translations " ca syn match diffOnly "^Només a .*" syn match diffIdentical "^Els fitxers .* i .* són idèntics$" syn match diffDiffer "^Els fitxers .* i .* difereixen$" syn match diffBDiffer "^Els fitxers .* i .* difereixen$" syn match diffIsA "^El fitxer .* és un .* mentre que el fitxer .* és un .*" syn match diffNoEOL "^\\ No hi ha cap caràcter de salt de línia al final del fitxer" syn match diffCommon "^Subdirectoris comuns: .* i .*" " cs syn match diffOnly "^Pouze v .*" syn match diffIdentical "^Soubory .* a .* jsou identické$" syn match diffDiffer "^Soubory .* a .* jsou různé$" syn match diffBDiffer "^Binární soubory .* a .* jsou rozdílné$" syn match diffBDiffer "^Soubory .* a .* jsou různé$" syn match diffIsA "^Soubor .* je .* pokud soubor .* je .*" syn match diffNoEOL "^\\ Chybí znak konce řádku na konci souboru" syn match diffCommon "^Společné podadresáře: .* a .*" " da syn match diffOnly "^Kun i .*" syn match diffIdentical "^Filerne .* og .* er identiske$" syn match diffDiffer "^Filerne .* og .* er forskellige$" syn match diffBDiffer "^Binære filer .* og .* er forskellige$" syn match diffIsA "^Filen .* er en .* mens filen .* er en .*" syn match diffNoEOL "^\\ Intet linjeskift ved filafslutning" syn match diffCommon "^Identiske underkataloger: .* og .*" " de syn match diffOnly "^Nur in .*" syn match diffIdentical "^Dateien .* und .* sind identisch.$" syn match diffDiffer "^Dateien .* und .* sind verschieden.$" syn match diffBDiffer "^Binärdateien .* and .* sind verschieden.$" syn match diffBDiffer "^Binärdateien .* und .* sind verschieden.$" syn match diffIsA "^Datei .* ist ein .* während Datei .* ein .* ist.$" syn match diffNoEOL "^\\ Kein Zeilenumbruch am Dateiende." syn match diffCommon "^Gemeinsame Unterverzeichnisse: .* und .*.$" " el syn match diffOnly "^Μόνο στο .*" syn match diffIdentical "^Τα αρχεία .* καί .* είναι πανομοιότυπα$" syn match diffDiffer "^Τα αρχεία .* και .* διαφέρουν$" syn match diffBDiffer "^Τα αρχεία .* και .* διαφέρουν$" syn match diffIsA "^Το αρχείο .* είναι .* ενώ το αρχείο .* είναι .*" syn match diffNoEOL "^\\ Δεν υπάρχει χαρακτήρας νέας γραμμής στο τέλος του αρχείου" syn match diffCommon "^Οι υποκατάλογοι .* και .* είναι ταυτόσημοι$" " eo syn match diffOnly "^Nur en .*" syn match diffIdentical "^Dosieroj .* kaj .* estas samaj$" syn match diffDiffer "^Dosieroj .* kaj .* estas malsamaj$" syn match diffBDiffer "^Dosieroj .* kaj .* estas malsamaj$" syn match diffIsA "^Dosiero .* estas .*, dum dosiero .* estas .*" syn match diffNoEOL "^\\ Mankas linifino ĉe fino de dosiero" syn match diffCommon "^Komunaj subdosierujoj: .* kaj .*" " es syn match diffOnly "^Sólo en .*" syn match diffIdentical "^Los ficheros .* y .* son idénticos$" syn match diffDiffer "^Los ficheros .* y .* son distintos$" syn match diffBDiffer "^Los ficheros binarios .* y .* son distintos$" syn match diffIsA "^El fichero .* es un .* mientras que el .* es un .*" syn match diffNoEOL "^\\ No hay ningún carácter de nueva línea al final del fichero" syn match diffCommon "^Subdirectorios comunes: .* y .*" " fi syn match diffOnly "^Vain hakemistossa .*" syn match diffIdentical "^Tiedostot .* ja .* ovat identtiset$" syn match diffDiffer "^Tiedostot .* ja .* eroavat$" syn match diffBDiffer "^Binääritiedostot .* ja .* eroavat$" syn match diffIsA "^Tiedosto .* on .*, kun taas tiedosto .* on .*" syn match diffNoEOL "^\\ Ei rivinvaihtoa tiedoston lopussa" syn match diffCommon "^Yhteiset alihakemistot: .* ja .*" " fr syn match diffOnly "^Seulement dans .*" syn match diffIdentical "^Les fichiers .* et .* sont identiques.*" syn match diffDiffer "^Les fichiers .* et .* sont différents.*" syn match diffBDiffer "^Les fichiers binaires .* et .* sont différents.*" syn match diffIsA "^Le fichier .* est un .* alors que le fichier .* est un .*" syn match diffNoEOL "^\\ Pas de fin de ligne à la fin du fichier.*" syn match diffCommon "^Les sous-répertoires .* et .* sont identiques.*" " ga syn match diffOnly "^I .* amháin: .*" syn match diffIdentical "^Is comhionann iad na comhaid .* agus .*" syn match diffDiffer "^Tá difríocht idir na comhaid .* agus .*" syn match diffBDiffer "^Tá difríocht idir na comhaid .* agus .*" syn match diffIsA "^Tá comhad .* ina .* ach tá comhad .* ina .*" syn match diffNoEOL "^\\ Gan líne nua ag an chomhadchríoch" syn match diffCommon "^Fochomhadlanna i gcoitianta: .* agus .*" " gl syn match diffOnly "^Só en .*" syn match diffIdentical "^Os ficheiros .* e .* son idénticos$" syn match diffDiffer "^Os ficheiros .* e .* son diferentes$" syn match diffBDiffer "^Os ficheiros binarios .* e .* son diferentes$" syn match diffIsA "^O ficheiro .* é un .* mentres que o ficheiro .* é un .*" syn match diffNoEOL "^\\ Non hai un salto de liña na fin da liña" syn match diffCommon "^Subdirectorios comúns: .* e .*" " he " ^.* are expansive patterns for long lines, so disabled unless we can match " some specific hebrew chars if search('\%u05d5\|\%u05d1', 'nw', '', 100) syn match diffOnly "^.*-ב קר אצמנ .*" syn match diffIdentical "^םיהז םניה .*-ו .* םיצבקה$" syn match diffDiffer "^הזמ הז םינוש `.*'-ו `.*' םיצבקה$" syn match diffBDiffer "^הזמ הז םינוש `.*'-ו `.*' םיירניב םיצבק$" syn match diffIsA "^.* .*-ל .* .* תוושהל ןתינ אל$" syn match diffNoEOL "^\\ ץבוקה ףוסב השד.-הרוש ות רס." syn match diffCommon "^.*-ו .* :תוהז תויקית-תת$" endif " hr syn match diffOnly "^Samo u .*" syn match diffIdentical "^Datoteke .* i .* su identične$" syn match diffDiffer "^Datoteke .* i .* se razlikuju$" syn match diffBDiffer "^Binarne datoteke .* i .* se razlikuju$" syn match diffIsA "^Datoteka .* je .*, a datoteka .* je .*" syn match diffNoEOL "^\\ Nema novog retka na kraju datoteke" syn match diffCommon "^Uobičajeni poddirektoriji: .* i .*" " hu syn match diffOnly "^Csak .* -ben: .*" syn match diffIdentical "^.* és .* fájlok azonosak$" syn match diffDiffer "^A(z) .* és a(z) .* fájlok különböznek$" syn match diffBDiffer "^A(z) .* és a(z) .* fájlok különböznek$" syn match diffIsA "^A(z) .* fájl egy .*, viszont a(z) .* fájl egy .*" syn match diffNoEOL "^\\ Nincs újsor a fájl végén" syn match diffCommon "^Közös alkönyvtárak: .* és .*" " id syn match diffOnly "^Hanya dalam .*" syn match diffIdentical "^File .* dan .* identik$" syn match diffDiffer "^Berkas .* dan .* berbeda$" syn match diffBDiffer "^File biner .* dan .* berbeda$" syn match diffIsA "^File .* adalah .* sementara file .* adalah .*" syn match diffNoEOL "^\\ Tidak ada baris-baru di akhir dari berkas" syn match diffCommon "^Subdirektori sama: .* dan .*" " it syn match diffOnly "^Solo in .*" syn match diffIdentical "^I file .* e .* sono identici$" syn match diffDiffer "^I file .* e .* sono diversi$" syn match diffBDiffer "^I file .* e .* sono diversi$" syn match diffBDiffer "^I file binari .* e .* sono diversi$" syn match diffIsA "^File .* è un .* mentre file .* è un .*" syn match diffNoEOL "^\\ Manca newline alla fine del file" syn match diffCommon "^Sottodirectory in comune: .* e .*" " ja syn match diffOnly "^.*だけに発見: .*" syn match diffIdentical "^ファイル.*と.*は同一$" syn match diffDiffer "^ファイル.*と.*は違います$" syn match diffBDiffer "^バイナリー・ファイル.*と.*は違います$" syn match diffIsA "^ファイル.*は.*、ファイル.*は.*" syn match diffNoEOL "^\\ ファイル末尾に改行がありません" syn match diffCommon "^共通の下位ディレクトリー: .*と.*" " ja DiffUtils 3.3 syn match diffOnly "^.* のみに存在: .*" syn match diffIdentical "^ファイル .* と .* は同一です$" syn match diffDiffer "^ファイル .* と .* は異なります$" syn match diffBDiffer "^バイナリーファイル .* と.* は異なります$" syn match diffIsA "^ファイル .* は .* です。一方、ファイル .* は .* です$" syn match diffNoEOL "^\\ ファイル末尾に改行がありません" syn match diffCommon "^共通のサブディレクトリー: .* と .*" " lv syn match diffOnly "^Tikai iekš .*" syn match diffIdentical "^Fails .* un .* ir identiski$" syn match diffDiffer "^Faili .* un .* atšķiras$" syn match diffBDiffer "^Faili .* un .* atšķiras$" syn match diffBDiffer "^Binārie faili .* un .* atšķiras$" syn match diffIsA "^Fails .* ir .* kamēr fails .* ir .*" syn match diffNoEOL "^\\ Nav jaunu rindu faila beigās" syn match diffCommon "^Kopējās apakšdirektorijas: .* un .*" " ms syn match diffOnly "^Hanya dalam .*" syn match diffIdentical "^Fail .* dan .* adalah serupa$" syn match diffDiffer "^Fail .* dan .* berbeza$" syn match diffBDiffer "^Fail .* dan .* berbeza$" syn match diffIsA "^Fail .* adalah .* manakala fail .* adalah .*" syn match diffNoEOL "^\\ Tiada baris baru pada penghujung fail" syn match diffCommon "^Subdirektori umum: .* dan .*" " nl syn match diffOnly "^Alleen in .*" syn match diffIdentical "^Bestanden .* en .* zijn identiek$" syn match diffDiffer "^Bestanden .* en .* zijn verschillend$" syn match diffBDiffer "^Bestanden .* en .* zijn verschillend$" syn match diffBDiffer "^Binaire bestanden .* en .* zijn verschillend$" syn match diffIsA "^Bestand .* is een .* terwijl bestand .* een .* is$" syn match diffNoEOL "^\\ Geen regeleindeteken (LF) aan einde van bestand" syn match diffCommon "^Gemeenschappelijke submappen: .* en .*" " pl syn match diffOnly "^Tylko w .*" syn match diffIdentical "^Pliki .* i .* są identyczne$" syn match diffDiffer "^Pliki .* i .* różnią się$" syn match diffBDiffer "^Pliki .* i .* różnią się$" syn match diffBDiffer "^Binarne pliki .* i .* różnią się$" syn match diffIsA "^Plik .* jest .*, podczas gdy plik .* jest .*" syn match diffNoEOL "^\\ Brak znaku nowej linii na końcu pliku" syn match diffCommon "^Wspólne podkatalogi: .* i .*" " pt_BR syn match diffOnly "^Somente em .*" syn match diffOnly "^Apenas em .*" syn match diffIdentical "^Os aquivos .* e .* são idênticos$" syn match diffDiffer "^Os arquivos .* e .* são diferentes$" syn match diffBDiffer "^Os arquivos binários .* e .* são diferentes$" syn match diffIsA "^O arquivo .* é .* enquanto o arquivo .* é .*" syn match diffNoEOL "^\\ Falta o caracter nova linha no final do arquivo" syn match diffCommon "^Subdiretórios idênticos: .* e .*" " ro syn match diffOnly "^Doar în .*" syn match diffIdentical "^Fişierele .* şi .* sunt identice$" syn match diffDiffer "^Fişierele .* şi .* diferă$" syn match diffBDiffer "^Fişierele binare .* şi .* diferă$" syn match diffIsA "^Fişierul .* este un .* pe când fişierul .* este un .*.$" syn match diffNoEOL "^\\ Nici un element de linie nouă la sfârşitul fişierului" syn match diffCommon "^Subdirectoare comune: .* şi .*.$" " ru syn match diffOnly "^Только в .*" syn match diffIdentical "^Файлы .* и .* идентичны$" syn match diffDiffer "^Файлы .* и .* различаются$" syn match diffBDiffer "^Файлы .* и .* различаются$" syn match diffIsA "^Файл .* это .*, тогда как файл .* -- .*" syn match diffNoEOL "^\\ В конце файла нет новой строки" syn match diffCommon "^Общие подкаталоги: .* и .*" " sr syn match diffOnly "^Само у .*" syn match diffIdentical "^Датотеке „.*“ и „.*“ се подударају$" syn match diffDiffer "^Датотеке .* и .* различите$" syn match diffBDiffer "^Бинарне датотеке .* и .* различите$" syn match diffIsA "^Датотека „.*“ је „.*“ док је датотека „.*“ „.*“$" syn match diffNoEOL "^\\ Без новог реда на крају датотеке" syn match diffCommon "^Заједнички поддиректоријуми: .* и .*" " sv syn match diffOnly "^Endast i .*" syn match diffIdentical "^Filerna .* och .* är lika$" syn match diffDiffer "^Filerna .* och .* skiljer$" syn match diffBDiffer "^Filerna .* och .* skiljer$" syn match diffIsA "^Fil .* är en .* medan fil .* är en .*" syn match diffBDiffer "^De binära filerna .* och .* skiljer$" syn match diffIsA "^Filen .* är .* medan filen .* är .*" syn match diffNoEOL "^\\ Ingen nyrad vid filslut" syn match diffCommon "^Lika underkataloger: .* och .*" " tr syn match diffOnly "^Yalnızca .*'da: .*" syn match diffIdentical "^.* ve .* dosyaları birbirinin aynı$" syn match diffDiffer "^.* ve .* dosyaları birbirinden farklı$" syn match diffBDiffer "^.* ve .* dosyaları birbirinden farklı$" syn match diffBDiffer "^İkili .* ve .* birbirinden farklı$" syn match diffIsA "^.* dosyası, bir .*, halbuki .* dosyası bir .*" syn match diffNoEOL "^\\ Dosya sonunda yenisatır yok." syn match diffCommon "^Ortak alt dizinler: .* ve .*" " uk syn match diffOnly "^Лише у .*" syn match diffIdentical "^Файли .* та .* ідентичні$" syn match diffDiffer "^Файли .* та .* відрізняються$" syn match diffBDiffer "^Файли .* та .* відрізняються$" syn match diffBDiffer "^Двійкові файли .* та .* відрізняються$" syn match diffIsA "^Файл .* це .*, тоді як файл .* -- .*" syn match diffNoEOL "^\\ Наприкінці файлу немає нового рядка" syn match diffCommon "^Спільні підкаталоги: .* та .*" " vi syn match diffOnly "^Chỉ trong .*" syn match diffIdentical "^Hai tập tin .* và .* là bằng nhau.$" syn match diffIdentical "^Cả .* và .* là cùng một tập tin$" syn match diffDiffer "^Hai tập tin .* và .* là khác nhau.$" syn match diffBDiffer "^Hai tập tin nhị phân .* và .* khác nhau$" syn match diffIsA "^Tập tin .* là một .* trong khi tập tin .* là một .*.$" syn match diffBDiffer "^Hai tập tin .* và .* là khác nhau.$" syn match diffIsA "^Tập tin .* là một .* còn tập tin .* là một .*.$" syn match diffNoEOL "^\\ Không có ký tự dòng mới tại kêt thức tập tin." syn match diffCommon "^Thư mục con chung: .* và .*" " zh_CN syn match diffOnly "^只在 .* 存在:.*" syn match diffIdentical "^檔案 .* 和 .* 相同$" syn match diffDiffer "^文件 .* 和 .* 不同$" syn match diffBDiffer "^文件 .* 和 .* 不同$" syn match diffIsA "^文件 .* 是.*而文件 .* 是.*" syn match diffNoEOL "^\\ 文件尾没有 newline 字符" syn match diffCommon "^.* 和 .* 有共同的子目录$" " zh_TW syn match diffOnly "^只在 .* 存在:.*" syn match diffIdentical "^檔案 .* 和 .* 相同$" syn match diffDiffer "^檔案 .* 與 .* 不同$" syn match diffBDiffer "^二元碼檔 .* 與 .* 不同$" syn match diffIsA "^檔案 .* 是.*而檔案 .* 是.*" syn match diffNoEOL "^\\ 檔案末沒有 newline 字元" syn match diffCommon "^.* 和 .* 有共同的副目錄$" endif syn match diffRemoved "^-.*" syn match diffRemoved "^<.*" syn match diffAdded "^+.*" syn match diffAdded "^>.*" syn match diffChanged "^! .*" syn match diffSubname " @@..*"ms=s+3 contained syn match diffLine "^@.*" contains=diffSubname syn match diffLine "^\<\d\+\>.*" syn match diffLine "^\*\*\*\*.*" syn match diffLine "^---$" " Some versions of diff have lines like "#c#" and "#d#" (where # is a number) syn match diffLine "^\d\+\(,\d\+\)\=[cda]\d\+\>.*" syn match diffFile "^diff\>.*" syn match diffFile "^+++ .*" syn match diffFile "^Index: .*" syn match diffFile "^==== .*" syn match diffOldFile "^\*\*\* .*" syn match diffNewFile "^--- .*" " Used by git syn match diffIndexLine "^index \x\x\x\x.*" syn match diffComment "^#.*" " Define the default highlighting. " Only used when an item doesn't have highlighting yet hi def link diffOldFile diffFile hi def link diffNewFile diffFile hi def link diffIndexLine PreProc hi def link diffFile Type hi def link diffOnly Constant hi def link diffIdentical Constant hi def link diffDiffer Constant hi def link diffBDiffer Constant hi def link diffIsA Constant hi def link diffNoEOL Constant hi def link diffCommon Constant hi def link diffRemoved Special hi def link diffChanged PreProc hi def link diffAdded Identifier hi def link diffLine Statement hi def link diffSubname PreProc hi def link diffComment Comment let b:current_syntax = "diff" " vim: ts=8 sw=2 PK�������!�E[ < ��< ����vim80/syntax/upstreamlog.vimnu�[��������" Vim syntax file " Language: Innovation Data Processing upstream.log file " Maintainer: Rob Owens <rowens@fdrinnovation.com> " Latest Revision: 2013-09-19 " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Date: syn match upstreamlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/ " Msg Types: syn match upstreamlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=upstreamlog_Process skipwhite syn match upstreamlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=upstreamlog_Process skipwhite syn match upstreamlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=upstreamlog_Process skipwhite syn match upstreamlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=upstreamlog_Process skipwhite " Processes: syn region upstreamlog_Process start="(" end=")" contained " IP Address: syn match upstreamlog_IPaddr /\( \|(\)\zs\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ " Profile: syn match upstreamlog_Profile /Using default configuration for profile \zs\S\{1,8}\ze/ syn match upstreamlog_Profile /Now running profile \zs\S\{1,8}\ze/ syn match upstreamlog_Profile /in profile set \zs\S\{1,8}\ze/ syn match upstreamlog_Profile /Migrate disk backup from profile \zs\S\{1,8}\ze/ syn match upstreamlog_Profile /Profileset=\zs\S\{1,8}\ze,/ syn match upstreamlog_Profile /Vault \(disk\|tape\) backup to vault \d\{1,4} from profile \zs\S\{1,8}\ze/ syn match upstreamlog_Profile /Profile name \zs\"\S\{1,8}\"/ syn match upstreamlog_Profile / Profile: \zs\S\{1,8}/ syn match upstreamlog_Profile / Profile: \zs\S\{1,8}\ze, / syn match upstreamlog_Profile /, profile: \zs\S\{1,8}\ze,/ syn match upstreamlog_Profile /found Profile: \zs\S\{1,8}\ze,/ syn match upstreamlog_Profile /Backup Profile: \zs\S\{1,8}\ze Version date/ syn match upstreamlog_Profile /Backup profile: \zs\S\{1,8}\ze Version date/ syn match upstreamlog_Profile /Full of \zs\S\{1,8}\ze$/ syn match upstreamlog_Profile /Incr. of \zs\S\{1,8}\ze$/ syn match upstreamlog_Profile /Profile=\zs\S\{1,8}\ze,/ " Target: syn region upstreamlog_Target start="Computer: \zs" end="\ze[\]\)]" syn region upstreamlog_Target start="Computer name \zs\"" end="\"\ze" syn region upstreamlog_Target start="request to registered name \zs" end=" " hi def link upstreamlog_Date Underlined hi def link upstreamlog_MsgD Type hi def link upstreamlog_MsgE Error hi def link upstreamlog_MsgW Constant hi def link upstreamlog_Process Statement hi def link upstreamlog_IPaddr Identifier hi def link upstreamlog_Profile Identifier hi def link upstreamlog_Target Identifier let b:current_syntax = "upstreamlog" PK�������!�| �� ����vim80/syntax/latte.vimnu�[��������" Vim syntax file " Language: Latte " Maintainer: Nick Moffitt, <nick@zork.net> " Last Change: 14 June, 2000 " " Notes: " I based this on the TeX and Scheme syntax files (but mostly scheme). " See http://www.latte.org for info on the language. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn match latteError "[{}\\]" syn match latteOther "\\{" syn match latteOther "\\}" syn match latteOther "\\\\" setlocal iskeyword=33,43,45,48-57,63,65-90,95,97-122,_ syn region latteVar matchgroup=SpecialChar start=!\\[A-Za-z_]!rs=s+1 end=![^A-Za-z0-9?!+_-]!me=e-1 contains=ALLBUT,latteNumber,latteOther syn region latteVar matchgroup=SpecialChar start=!\\[=\&][A-Za-z_]!rs=s+2 end=![^A-Za-z0-9?!+_-]!me=e-1 contains=ALLBUT,latteNumber,latteOther syn region latteString start=+\\"+ skip=+\\\\"+ end=+\\"+ syn region latteGroup matchgroup=Delimiter start="{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax syn region latteUnquote matchgroup=Delimiter start="\\,{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax syn region latteSplice matchgroup=Delimiter start="\\,@{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax syn region latteQuote matchgroup=Delimiter start="\\'{" skip="\\[{}]" matchgroup=Delimiter end="}" syn region latteQuote matchgroup=Delimiter start="\\`{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=latteUnquote,latteSplice syn match latteOperator '\\/' syn match latteOperator '=' syn match latteComment "\\;.*$" " This was gathered by slurping in the index. syn keyword latteSyntax __FILE__ __latte-version__ contained syn keyword latteSyntax _bal-tag _pre _tag add and append apply back contained syn keyword latteSyntax caar cadr car cdar cddr cdr ceil compose contained syn keyword latteSyntax concat cons def defmacro divide downcase contained syn keyword latteSyntax empty? equal? error explode file-contents contained syn keyword latteSyntax floor foreach front funcall ge? getenv contained syn keyword latteSyntax greater-equal? greater? group group? gt? html contained syn keyword latteSyntax if include lambda le? length less-equal? contained syn keyword latteSyntax less? let lmap load-file load-library lt? macro contained syn keyword latteSyntax member? modulo multiply not nth operator? contained syn keyword latteSyntax or ordinary quote process-output push-back contained syn keyword latteSyntax push-front quasiquote quote random rdc reverse contained syn keyword latteSyntax set! snoc splicing unquote strict-html4 contained syn keyword latteSyntax string-append string-ge? string-greater-equal? contained syn keyword latteSyntax string-greater? string-gt? string-le? contained syn keyword latteSyntax string-less-equal? string-less? string-lt? contained syn keyword latteSyntax string? subseq substr subtract contained syn keyword latteSyntax upcase useless warn while zero? contained " If it's good enough for scheme... syn sync match matchPlace grouphere NONE "^[^ \t]" " ... i.e. synchronize on a line that starts at the left margin " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link latteSyntax Statement hi def link latteVar Function hi def link latteString String hi def link latteQuote String hi def link latteDelimiter Delimiter hi def link latteOperator Operator hi def link latteComment Comment hi def link latteError Error let b:current_syntax = "latte" PK�������!�\N������vim80/syntax/pamconf.vimnu�[��������" Vim syntax file " Language: pam(8) configuration file " Previous Maintainer: Nikolai Weibull <now@bitwi.se> " Latest Revision: 2011-08-03 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match pamconfService '^[[:graph:]]\+' \ nextgroup=pamconfType, \ pamconfServiceLineCont skipwhite syn keyword pamconfTodo contained TODO FIXME XXX NOTE syn region pamconfComment display oneline start='#' end='$' \ contains=pamconfTodo,@Spell syn match pamconfServiceLineCont contained '\\$' \ nextgroup=pamconfType, \ pamconfServiceLineCont skipwhite skipnl syn keyword pamconfType account auth password session \ nextgroup=pamconfControl, \ pamconfTypeLineCont skipwhite syn match pamconfTypeLineCont contained '\\$' \ nextgroup=pamconfControl, \ pamconfTypeLineCont skipwhite skipnl syn keyword pamconfControl contained requisite required sufficient \ optional include substack \ nextgroup=pamconfMPath, \ pamconfControlLineContH skipwhite syn match pamconfControlBegin '\[' nextgroup=pamconfControlValues, \ pamconfControlLineCont skipwhite syn match pamconfControlLineCont contained '\\$' \ nextgroup=pamconfControlValues, \ pamconfControlLineCont skipwhite skipnl syn keyword pamconfControlValues contained success open_err symbol_err \ service_err system_err buf_err \ perm_denied auth_err cred_insufficient \ authinfo_unavail user_unknown maxtries \ new_authtok_reqd acct_expired session_err \ cred_unavail cred_expired cred_err \ no_module_data conv_err authtok_err \ authtok_recover_err authtok_lock_busy \ authtok_disable_aging try_again ignore \ abort authtok_expired module_unknown \ bad_item and default \ nextgroup=pamconfControlValueEq syn match pamconfControlValueEq contained '=' \ nextgroup=pamconfControlActionN, \ pamconfControlAction syn match pamconfControlActionN contained '\d\+\>' \ nextgroup=pamconfControlValues, \ pamconfControlLineCont,pamconfControlEnd \ skipwhite syn keyword pamconfControlAction contained ignore bad die ok done reset \ nextgroup=pamconfControlValues, \ pamconfControlLineCont,pamconfControlEnd \ skipwhite syn match pamconfControlEnd contained '\]' \ nextgroup=pamconfMPath, \ pamconfControlLineContH skipwhite syn match pamconfControlLineContH contained '\\$' \ nextgroup=pamconfMPath, \ pamconfControlLineContH skipwhite skipnl syn match pamconfMPath contained '\S\+' \ nextgroup=pamconfMPathLineCont, \ pamconfArgs skipwhite syn match pamconfArgs contained '\S\+' \ nextgroup=pamconfArgsLineCont, \ pamconfArgs skipwhite syn match pamconfMPathLineCont contained '\\$' \ nextgroup=pamconfMPathLineCont, \ pamconfArgs skipwhite skipnl syn match pamconfArgsLineCont contained '\\$' \ nextgroup=pamconfArgsLineCont, \ pamconfArgs skipwhite skipnl hi def link pamconfTodo Todo hi def link pamconfComment Comment hi def link pamconfService Statement hi def link pamconfServiceLineCont Special hi def link pamconfType Type hi def link pamconfTypeLineCont pamconfServiceLineCont hi def link pamconfControl Macro hi def link pamconfControlBegin Delimiter hi def link pamconfControlLineContH pamconfServiceLineCont hi def link pamconfControlLineCont pamconfServiceLineCont hi def link pamconfControlValues Identifier hi def link pamconfControlValueEq Operator hi def link pamconfControlActionN Number hi def link pamconfControlAction Identifier hi def link pamconfControlEnd Delimiter hi def link pamconfMPath String hi def link pamconfMPathLineCont pamconfServiceLineCont hi def link pamconfArgs Normal hi def link pamconfArgsLineCont pamconfServiceLineCont let b:current_syntax = "pamconf" let &cpo = s:cpo_save unlet s:cpo_save PK�������!�δ3��3����vim80/syntax/netrw.vimnu�[��������" Language : Netrw Listing Syntax " Maintainer : Charles E. Campbell " Last change: Oct 31, 2016 " Version : 20 NOT RELEASED " --------------------------------------------------------------------- if exists("b:current_syntax") finish endif " --------------------------------------------------------------------- " Directory List Syntax Highlighting: {{{1 syn cluster NetrwGroup contains=netrwHide,netrwSortBy,netrwSortSeq,netrwQuickHelp,netrwVersion,netrwCopyTgt syn cluster NetrwTreeGroup contains=netrwDir,netrwSymLink,netrwExe syn match netrwPlain "\(\S\+ \)*\S\+" contains=netrwLink,@NoSpell syn match netrwSpecial "\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell syn match netrwDir "\.\{1,2}/" contains=netrwClassify,@NoSpell syn match netrwDir "\%(\S\+ \)*\S\+/\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell syn match netrwSizeDate "\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s" skipwhite contains=netrwDateSep,@NoSpell nextgroup=netrwTime syn match netrwSymLink "\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell syn match netrwExe "\%(\S\+ \)*\S*[^~]\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell if has("gui_running") && (&enc == 'utf-8' || &enc == 'utf-16' || &enc == 'ucs-4') syn match netrwTreeBar "^\%([-+|│] \)\+" contains=netrwTreeBarSpace nextgroup=@netrwTreeGroup else syn match netrwTreeBar "^\%([-+|] \)\+" contains=netrwTreeBarSpace nextgroup=@netrwTreeGroup endif syn match netrwTreeBarSpace " " contained syn match netrwClassify "[*=|@/]\ze\%(\s\{2,}\|$\)" contained syn match netrwDateSep "/" contained syn match netrwTime "\d\{1,2}:\d\{2}:\d\{2}" contained contains=netrwTimeSep syn match netrwTimeSep ":" syn match netrwComment '".*\%(\t\|$\)' contains=@NetrwGroup,@NoSpell syn match netrwHide '^"\s*\(Hid\|Show\)ing:' skipwhite contains=@NoSpell nextgroup=netrwHidePat syn match netrwSlash "/" contained syn match netrwHidePat "[^,]\+" contained skipwhite contains=@NoSpell nextgroup=netrwHideSep syn match netrwHideSep "," contained skipwhite nextgroup=netrwHidePat syn match netrwSortBy "Sorted by" contained transparent skipwhite nextgroup=netrwList syn match netrwSortSeq "Sort sequence:" contained transparent skipwhite nextgroup=netrwList syn match netrwCopyTgt "Copy/Move Tgt:" contained transparent skipwhite nextgroup=netrwList syn match netrwList ".*$" contained contains=netrwComma,@NoSpell syn match netrwComma "," contained syn region netrwQuickHelp matchgroup=Comment start="Quick Help:\s\+" end="$" contains=netrwHelpCmd,netrwQHTopic,@NoSpell keepend contained syn match netrwHelpCmd "\S\+\ze:" contained skipwhite contains=@NoSpell nextgroup=netrwCmdSep syn match netrwQHTopic "([a-zA-Z &]\+)" contained skipwhite syn match netrwCmdSep ":" contained nextgroup=netrwCmdNote syn match netrwCmdNote ".\{-}\ze " contained contains=@NoSpell syn match netrwVersion "(netrw.*)" contained contains=@NoSpell syn match netrwLink "-->" contained skipwhite " ----------------------------- " Special filetype highlighting {{{1 " ----------------------------- if exists("g:netrw_special_syntax") && g:netrw_special_syntax if exists("+suffixes") && &suffixes != "" let suflist= join(split(&suffixes,',')) let suflist= escape(substitute(suflist," ",'\\|','g'),'.~') exe "syn match netrwSpecFile '\\(\\S\\+ \\)*\\S*\\(".suflist."\\)\\>' contains=netrwTreeBar,@NoSpell" endif syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar,@NoSpell syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar,@NoSpell if has("unix") syn match netrwCoreDump "\<core\%(\.\d\+\)\=\>" contains=netrwTreeBar,@NoSpell endif syn match netrwLex "\(\S\+ \)*\S\+\.\%(l\|lex\)\>" contains=netrwTreeBar,@NoSpell syn match netrwYacc "\(\S\+ \)*\S\+\.y\>" contains=netrwTreeBar,@NoSpell syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar,@NoSpell syn match netrwDoc "\(\S\+ \)*\S\+\.\%(doc\|txt\|pdf\|ps\|docx\)\>" contains=netrwTreeBar,@NoSpell syn match netrwHdr "\(\S\+ \)*\S\+\.\%(h\|hpp\)\>" contains=netrwTreeBar,@NoSpell syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar,@NoSpell syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar,@NoSpell syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar,@NoSpell syn match netrwPix "\c\(\S\+ \)*\S*\.\%(bmp\|fits\=\|gif\|je\=pg\|pcx\|ppc\|pgm\|png\|ppm\|psd\|rgb\|tif\|xbm\|xcf\)\>" contains=netrwTreeBar,@NoSpell syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar,@NoSpell syn match netrwTags "\<tags\>" contains=netrwTreeBar,@NoSpell syn match netrwTilde "\(\S\+ \)*\S\+\~\*\=\>" contains=netrwTreeBar,@NoSpell syn match netrwTmp "\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar,@NoSpell endif " --------------------------------------------------------------------- " Highlighting Links: {{{1 if !exists("did_drchip_netrwlist_syntax") let did_drchip_netrwlist_syntax= 1 hi default link netrwClassify Function hi default link netrwCmdSep Delimiter hi default link netrwComment Comment hi default link netrwDir Directory hi default link netrwHelpCmd Function hi default link netrwQHTopic Number hi default link netrwHidePat Statement hi default link netrwHideSep netrwComment hi default link netrwList Statement hi default link netrwVersion Identifier hi default link netrwSymLink Question hi default link netrwExe PreProc hi default link netrwDateSep Delimiter hi default link netrwTreeBar Special hi default link netrwTimeSep netrwDateSep hi default link netrwComma netrwComment hi default link netrwHide netrwComment hi default link netrwMarkFile TabLineSel hi default link netrwLink Special " special syntax highlighting (see :he g:netrw_special_syntax) hi default link netrwCoreDump WarningMsg hi default link netrwData DiffChange hi default link netrwHdr netrwPlain hi default link netrwLex netrwPlain hi default link netrwLib DiffChange hi default link netrwMakefile DiffChange hi default link netrwYacc netrwPlain hi default link netrwPix Special hi default link netrwBak netrwGray hi default link netrwCompress netrwGray hi default link netrwSpecFile netrwGray hi default link netrwObj netrwGray hi default link netrwTags netrwGray hi default link netrwTilde netrwGray hi default link netrwTmp netrwGray endif " set up netrwGray to be understated (but not Ignore'd or Conceal'd, as those " can be hard/impossible to read). Users may override this in a colorscheme by " specifying netrwGray highlighting. redir => s:netrwgray sil hi netrwGray redir END if s:netrwgray !~ 'guifg' if has("gui") && has("gui_running") if &bg == "dark" exe "hi netrwGray gui=NONE guifg=gray30" else exe "hi netrwGray gui=NONE guifg=gray70" endif else hi link netrwGray Folded endif endif " Current Syntax: {{{1 let b:current_syntax = "netrwlist" " --------------------------------------------------------------------- " vim: ts=8 fdm=marker PK�������!�.#��#����vim80/syntax/aspvbs.vimnu�[��������" Vim syntax file " Language: Microsoft VBScript Web Content (ASP) " Maintainer: Devin Weaver <ktohg@tritarget.com> (non-functional) " URL: http://tritarget.com/pub/vim/syntax/aspvbs.vim (broken) " Last Change: 2006 Jun 19 " by Dan Casey " Version: $Revision: 1.3 $ " Thanks to Jay-Jay <vim@jay-jay.net> for a syntax sync hack, hungarian " notation, and extra highlighting. " Thanks to patrick dehne <patrick@steidle.net> for the folding code. " Thanks to Dean Hall <hall@apt7.com> for testing the use of classes in " VBScripts which I've been too scared to do. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'aspvbs' endif runtime! syntax/html.vim unlet b:current_syntax syn cluster htmlPreProc add=AspVBScriptInsideHtmlTags " Colored variable names, if written in hungarian notation hi def AspVBSVariableSimple term=standout ctermfg=3 guifg=#99ee99 hi def AspVBSVariableComplex term=standout ctermfg=3 guifg=#ee9900 syn match AspVBSVariableSimple contained "\<\(bln\|byt\|dtm\=\|dbl\|int\|str\)\u\w*" syn match AspVBSVariableComplex contained "\<\(arr\|ary\|obj\)\u\w*" " Functions and methods that are in VB but will cause errors in an ASP page " This is helpfull if your porting VB code to ASP " I removed (Count, Item) because these are common variable names in AspVBScript syn keyword AspVBSError contained Val Str CVar CVDate DoEvents GoSub Return GoTo syn keyword AspVBSError contained Stop LinkExecute Add Type LinkPoke syn keyword AspVBSError contained LinkRequest LinkSend Declare Optional Sleep syn keyword AspVBSError contained ParamArray Static Erl TypeOf Like LSet RSet Mid StrConv " It may seem that most of these can fit into a keyword clause but keyword takes " priority over all so I can't get the multi-word matches syn match AspVBSError contained "\<Def[a-zA-Z0-9_]\+\>" syn match AspVBSError contained "^\s*Open\s\+" syn match AspVBSError contained "Debug\.[a-zA-Z0-9_]*" syn match AspVBSError contained "^\s*[a-zA-Z0-9_]\+:" syn match AspVBSError contained "[a-zA-Z0-9_]\+![a-zA-Z0-9_]\+" syn match AspVBSError contained "^\s*#.*$" syn match AspVBSError contained "\<As\s\+[a-zA-Z0-9_]*" syn match AspVBSError contained "\<End\>\|\<Exit\>" syn match AspVBSError contained "\<On\s\+Error\>\|\<On\>\|\<Error\>\|\<Resume\s\+Next\>\|\<Resume\>" syn match AspVBSError contained "\<Option\s\+\(Base\|Compare\|Private\s\+Module\)\>" " This one I want 'cause I always seem to mis-spell it. syn match AspVBSError contained "Respon\?ce\.\S*" syn match AspVBSError contained "Respose\.\S*" " When I looked up the VBScript syntax it mentioned that Property Get/Set/Let " statements are illegal, however, I have recived reports that they do work. " So I commented it out for now. " syn match AspVBSError contained "\<Property\s\+\(Get\|Let\|Set\)\>" " AspVBScript Reserved Words. syn match AspVBSStatement contained "\<On\s\+Error\s\+\(Resume\s\+Next\|goto\s\+0\)\>\|\<Next\>" syn match AspVBSStatement contained "\<End\s\+\(If\|For\|Select\|Class\|Function\|Sub\|With\|Property\)\>" syn match AspVBSStatement contained "\<Exit\s\+\(Do\|For\|Sub\|Function\)\>" syn match AspVBSStatement contained "\<Exit\s\+\(Do\|For\|Sub\|Function\|Property\)\>" syn match AspVBSStatement contained "\<Option\s\+Explicit\>" syn match AspVBSStatement contained "\<For\s\+Each\>\|\<For\>" syn match AspVBSStatement contained "\<Set\>" syn keyword AspVBSStatement contained Call Class Const Default Dim Do Loop Erase And syn keyword AspVBSStatement contained Function If Then Else ElseIf Or syn keyword AspVBSStatement contained Private Public Randomize ReDim syn keyword AspVBSStatement contained Select Case Sub While With Wend Not " AspVBScript Functions syn keyword AspVBSFunction contained Abs Array Asc Atn CBool CByte CCur CDate CDbl syn keyword AspVBSFunction contained Chr CInt CLng Cos CreateObject CSng CStr Date syn keyword AspVBSFunction contained DateAdd DateDiff DatePart DateSerial DateValue syn keyword AspVBSFunction contained Date Day Exp Filter Fix FormatCurrency syn keyword AspVBSFunction contained FormatDateTime FormatNumber FormatPercent syn keyword AspVBSFunction contained GetObject Hex Hour InputBox InStr InStrRev Int syn keyword AspVBSFunction contained IsArray IsDate IsEmpty IsNull IsNumeric syn keyword AspVBSFunction contained IsObject Join LBound LCase Left Len LoadPicture syn keyword AspVBSFunction contained Log LTrim Mid Minute Month MonthName MsgBox Now syn keyword AspVBSFunction contained Oct Replace RGB Right Rnd Round RTrim syn keyword AspVBSFunction contained ScriptEngine ScriptEngineBuildVersion syn keyword AspVBSFunction contained ScriptEngineMajorVersion syn keyword AspVBSFunction contained ScriptEngineMinorVersion Second Sgn Sin Space syn keyword AspVBSFunction contained Split Sqr StrComp StrReverse String Tan Time Timer syn keyword AspVBSFunction contained TimeSerial TimeValue Trim TypeName UBound UCase syn keyword AspVBSFunction contained VarType Weekday WeekdayName Year " AspVBScript Methods syn keyword AspVBSMethods contained Add AddFolders BuildPath Clear Close Copy syn keyword AspVBSMethods contained CopyFile CopyFolder CreateFolder CreateTextFile syn keyword AspVBSMethods contained Delete DeleteFile DeleteFolder DriveExists syn keyword AspVBSMethods contained Exists FileExists FolderExists syn keyword AspVBSMethods contained GetAbsolutePathName GetBaseName GetDrive syn keyword AspVBSMethods contained GetDriveName GetExtensionName GetFile syn keyword AspVBSMethods contained GetFileName GetFolder GetParentFolderName syn keyword AspVBSMethods contained GetSpecialFolder GetTempName Items Keys Move syn keyword AspVBSMethods contained MoveFile MoveFolder OpenAsTextStream syn keyword AspVBSMethods contained OpenTextFile Raise Read ReadAll ReadLine Remove syn keyword AspVBSMethods contained RemoveAll Skip SkipLine Write WriteBlankLines syn keyword AspVBSMethods contained WriteLine syn match AspVBSMethods contained "Response\.\w*" " Colorize boolean constants: syn keyword AspVBSMethods contained true false " AspVBScript Number Contstants " Integer number, or floating point number without a dot. syn match AspVBSNumber contained "\<\d\+\>" " Floating point number, with dot syn match AspVBSNumber contained "\<\d\+\.\d*\>" " Floating point number, starting with a dot syn match AspVBSNumber contained "\.\d\+\>" " String and Character Contstants " removed (skip=+\\\\\|\\"+) because VB doesn't have backslash escaping in " strings (or does it?) syn region AspVBSString contained start=+"+ end=+"+ keepend " AspVBScript Comments syn region AspVBSComment contained start="^REM\s\|\sREM\s" end="$" contains=AspVBSTodo keepend syn region AspVBSComment contained start="^'\|\s'" end="$" contains=AspVBSTodo keepend " misc. Commenting Stuff syn keyword AspVBSTodo contained TODO FIXME " Cosmetic syntax errors commanly found in VB but not in AspVBScript " AspVBScript doesn't use line numbers syn region AspVBSError contained start="^\d" end="\s" keepend " AspVBScript also doesn't have type defining variables syn match AspVBSError contained "[a-zA-Z0-9_][\$&!#]"ms=s+1 " Since 'a%' is a VB variable with a type and in AspVBScript you can have 'a%>' " I have to make a special case so 'a%>' won't show as an error. syn match AspVBSError contained "[a-zA-Z0-9_]%\($\|[^>]\)"ms=s+1 " Top Cluster syn cluster AspVBScriptTop contains=AspVBSStatement,AspVBSFunction,AspVBSMethods,AspVBSNumber,AspVBSString,AspVBSComment,AspVBSError,AspVBSVariableSimple,AspVBSVariableComplex " Folding syn region AspVBSFold start="^\s*\(class\)\s\+.*$" end="^\s*end\s\+\(class\)\>.*$" fold contained transparent keepend syn region AspVBSFold start="^\s*\(private\|public\)\=\(\s\+default\)\=\s\+\(sub\|function\)\s\+.*$" end="^\s*end\s\+\(function\|sub\)\>.*$" fold contained transparent keepend " Define AspVBScript delimeters " <%= func("string_with_%>_in_it") %> This is illegal in ASP syntax. syn region AspVBScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<%=\=+ end=+%>+ contains=@AspVBScriptTop, AspVBSFold syn region AspVBScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<script\s\+language="\=vbscript"\=[^>]*\s\+runatserver[^>]*>+ end=+</script>+ contains=@AspVBScriptTop " Synchronization " syn sync match AspVBSSyncGroup grouphere AspVBScriptInsideHtmlTags "<%" " This is a kludge so the HTML will sync properly syn sync match htmlHighlight grouphere htmlTag "%>" " Define the default highlighting. " Only when an item doesn't have highlighting yet "hi def link AspVBScript Special hi def link AspVBSLineNumber Comment hi def link AspVBSNumber Number hi def link AspVBSError Error hi def link AspVBSStatement Statement hi def link AspVBSString String hi def link AspVBSComment Comment hi def link AspVBSTodo Todo hi def link AspVBSFunction Identifier hi def link AspVBSMethods PreProc hi def link AspVBSEvents Special hi def link AspVBSTypeSpecifier Type let b:current_syntax = "aspvbs" if main_syntax == 'aspvbs' unlet main_syntax endif " vim: ts=8:sw=2:sts=0:noet PK�������!�kwЃ������vim80/syntax/tags.vimnu�[��������" Language: tags " Maintainer: Charles E. Campbell <NdrOchip@PcampbellAfamily.Mbiz> " Last Change: Oct 26, 2016 " Version: 7 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TAGS " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn match tagName "^[^\t]\+" skipwhite nextgroup=tagPath syn match tagPath "[^\t]\+" contained skipwhite nextgroup=tagAddr contains=tagBaseFile syn match tagBaseFile "[a-zA-Z_]\+[\.a-zA-Z_0-9]*\t"me=e-1 contained syn match tagAddr "\d*" contained skipwhite nextgroup=tagComment syn region tagAddr matchgroup=tagDelim start="/" skip="\(\\\\\)*\\/" matchgroup=tagDelim end="$\|/" oneline contained skipwhite nextgroup=tagComment syn match tagComment ";.*$" contained contains=tagField syn match tagComment "^!_TAG_.*$" syn match tagField contained "[a-z]*:" " Define the default highlighting. if !exists("skip_drchip_tags_inits") hi def link tagBaseFile PreProc hi def link tagComment Comment hi def link tagDelim Delimiter hi def link tagField Number hi def link tagName Identifier hi def link tagPath PreProc endif let b:current_syntax = "tags" PK�������!�'>A��A����vim80/syntax/natural.vimnu�[��������" Vim syntax file " " Language: NATURAL " Version: 2.1.0.5 " Maintainer: Marko von Oppen <marko@von-oppen.com> " Last Changed: 2012-02-05 18:50:43 " Support: http://www.von-oppen.com/ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword+=-,*,#,+,_,/ let s:cpo_save = &cpo set cpo&vim " NATURAL is case insensitive syntax case ignore " preprocessor syn keyword naturalInclude include nextgroup=naturalObjName skipwhite " define data syn keyword naturalKeyword define data end-define syn keyword naturalKeyword independent global parameter local redefine view syn keyword naturalKeyword const[ant] init initial " loops syn keyword naturalLoop read end-read end-work find end-find histogram end-histogram syn keyword naturalLoop end-all sort end-sort sorted descending ascending syn keyword naturalRepeat repeat end-repeat while until for step end-for syn keyword naturalKeyword in file with field starting from ending at thru by isn where syn keyword naturalError on error end-error syn keyword naturalKeyword accept reject end-enddata number unique retain as release syn keyword naturalKeyword start end-start break end-break physical page top sequence syn keyword naturalKeyword end-toppage end-endpage end-endfile before processing syn keyword naturalKeyword end-before " conditionals syn keyword naturalConditional if then else end-if end-norec syn keyword naturalConditional decide end-decide value when condition none any " assignment / calculation syn keyword naturalKeyword reset assign move left right justified compress to into edited syn keyword naturalKeyword add subtract multiply divide compute name syn keyword naturalKeyword all giving remainder rounded leaving space numeric syn keyword naturalKeyword examine full replace giving separate delimiter modified syn keyword naturalKeyword suspend identical suppress " program flow syn keyword naturalFlow callnat fetch return enter escape bottom top stack formatted syn keyword naturalFlow command call syn keyword naturalflow end-subroutine routine " file operations syn keyword naturalKeyword update store get delete end transaction work once close " other keywords syn keyword naturalKeyword first every of no record[s] found ignore immediate syn keyword naturalKeyword set settime key control stop terminate " in-/output syn keyword naturalKeyword write display input reinput notitle nohdr map newpage syn keyword naturalKeyword alarm text help eject index window base size syn keyword naturalKeyword format printer skip lines " functions syn keyword naturalKeyword abs atn cos exp frac int log sgn sin sqrt tan val old syn keyword naturalKeyword pos " report mode keywords syn keyword naturalRMKeyword same loop obtain indexed do doend " Subroutine name syn keyword naturalFlow perform subroutine nextgroup=naturalFunction skipwhite syn match naturalFunction "\<[a-z][-_a-z0-9]*\>" syn keyword naturalFlow using nextgroup=naturalKeyword,naturalObjName skipwhite syn match naturalObjName "\<[a-z][-_a-z0-9]\{,7}\>" " Labels syn match naturalLabel "\<[+#a-z][-_#a-z0-9]*\." syn match naturalRef "\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>" " mark keyword special handling syn keyword naturalKeyword mark nextgroup=naturalMark skipwhite syn match naturalMark "\<\*[a-z][-_#.a-z0-9]*\>" " System variables syn match naturalSysVar "\<\*[a-z][-a-z0-9]*\>" "integer number, or floating point number without a dot. syn match naturalNumber "\<-\=\d\+\>" "floating point number, with dot syn match naturalNumber "\<-\=\d\+\.\d\+\>" "floating point number, starting with a dot syn match naturalNumber "\.\d\+" " Formats in write statement syn match naturalFormat "\<\d\+[TX]\>" " String and Character contstants syn match naturalString "H'\x\+'" syn region naturalString start=+"+ end=+"+ syn region naturalString start=+'+ end=+'+ " Type definition syn match naturalAttribute "\<[-a-z][a-z]=[-a-z0-9_\.,]\+\>" syn match naturalType contained "\<[ABINP]\d\+\(,\d\+\)\=\>" syn match naturalType contained "\<[CL]\>" " "TODO" / other comments syn keyword naturalTodo contained todo test syn match naturalCommentMark contained "[a-z][^ \t/:|]*\(\s[^ \t/:'"|]\+\)*:\s"he=e-1 " comments syn region naturalComment start="/\*" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark syn region naturalComment start="^\*[ *]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark syn region naturalComment start="^\d\{4} \*[\ \*]"lc=5 end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark syn match naturalComment "^\*$" syn match naturalComment "^\d\{4} \*$"lc=5 " /* is legal syntax in parentheses e.g. "#ident(label./*)" syn region naturalPComment contained start="/\*\s*[^),]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark " operators syn keyword naturalOperator and or not eq ne gt lt ge le mask scan modified " constants syn keyword naturalBoolean true false syn match naturalLineNo "^\d\{4}" " identifiers syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*\>[^\.']"me=e-1 syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*$" syn match naturalLegalIdent "[+#a-z][-_#a-z0-9]*/[-_#a-z0-9]*" " parentheses syn region naturalPar matchgroup=naturalParGui start="(" end=")" contains=naturalLabel,naturalRef,naturalOperator,@naturalConstant,naturalType,naturalSysVar,naturalPar,naturalLineNo,naturalPComment syn match naturalLineRef "(\d\{4})" " build syntax groups syntax cluster naturalConstant contains=naturalString,naturalNumber,naturalAttribute,naturalBoolean " folding if v:version >= 600 set foldignore=* endif " The default methods for highlighting. Can be overridden later " Constants hi def link naturalFormat Constant hi def link naturalAttribute Constant hi def link naturalNumber Number hi def link naturalString String hi def link naturalBoolean Boolean " All kinds of keywords hi def link naturalConditional Conditional hi def link naturalRepeat Repeat hi def link naturalLoop Repeat hi def link naturalFlow Keyword hi def link naturalError Keyword hi def link naturalKeyword Keyword hi def link naturalOperator Operator hi def link naturalParGui Operator " Labels hi def link naturalLabel Label hi def link naturalRefLabel Label " Comments hi def link naturalPComment Comment hi def link naturalComment Comment hi def link naturalTodo Todo hi def link naturalCommentMark PreProc hi def link naturalInclude Include hi def link naturalSysVar Identifier hi def link naturalLineNo LineNr hi def link naturalLineRef Error hi def link naturalSpecial Special hi def link naturalComKey Todo " illegal things hi def link naturalRMKeyword Error hi def link naturalLegalIdent Error hi def link naturalType Type hi def link naturalFunction Function hi def link naturalObjName PreProc let b:current_syntax = "natural" let &cpo = s:cpo_save unlet s:cpo_save " vim:set ts=8 sw=8 noet ft=vim list: PK�������!�sX������vim80/syntax/crm.vimnu�[��������" Vim syntax file " Language: CRM114 " Previous Maintainer: Nikolai Weibull <now@bitwi.se> " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword crmTodo contained TODO FIXME XXX NOTE syn region crmComment display oneline start='#' end='\\#' \ contains=crmTodo,@Spell syn match crmVariable display ':[*#@]:[^:]\{-1,}:' syn match crmSpecial display '\\\%(x\x\x\|o\o\o\o\|[]nrtabvf0>)};/\\]\)' syn keyword crmStatement insert noop accept alius alter classify eval exit syn keyword crmStatement fail fault goto hash intersect isolate input learn syn keyword crmStatement liaf match output syscall trap union window syn region crmRegex start='/' skip='\\/' end='/' contains=crmVariable syn match crmLabel display '^\s*:[[:graph:]]\+:' hi def link crmTodo Todo hi def link crmComment Comment hi def link crmVariable Identifier hi def link crmSpecial SpecialChar hi def link crmStatement Statement hi def link crmRegex String hi def link crmLabel Label let b:current_syntax = "crm" let &cpo = s:cpo_save unlet s:cpo_save PK�������!�Л6Ѝ��Ѝ����vim80/syntax/kconfig.vimnu�[��������" Vim syntax file " Maintainer: Christian Brabandt <cb@256bit.org> " Previous Maintainer: Nikolai Weibull <now@bitwi.se> " Latest Revision: 2015-05-29 " License: Vim (see :h license) " Repository: https://github.com/chrisbra/vim-kconfig if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim if exists("g:kconfig_syntax_heavy") syn match kconfigBegin '^' nextgroup=kconfigKeyword \ skipwhite syn keyword kconfigTodo contained TODO FIXME XXX NOTE syn match kconfigComment display '#.*$' contains=kconfigTodo syn keyword kconfigKeyword config nextgroup=kconfigSymbol \ skipwhite syn keyword kconfigKeyword menuconfig nextgroup=kconfigSymbol \ skipwhite syn keyword kconfigKeyword comment menu mainmenu \ nextgroup=kconfigKeywordPrompt \ skipwhite syn keyword kconfigKeyword choice \ nextgroup=@kconfigConfigOptions \ skipwhite skipnl syn keyword kconfigKeyword endmenu endchoice syn keyword kconfigPreProc source \ nextgroup=kconfigPath \ skipwhite " TODO: This is a hack. The who .*Expr stuff should really be generated so " that we can reuse it for various nextgroups. syn keyword kconfigConditional if endif \ nextgroup=@kconfigConfigOptionIfExpr \ skipwhite syn match kconfigKeywordPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=@kconfigConfigOptions \ skipwhite skipnl syn match kconfigPath '"[^"\\]*\%(\\.[^"\\]*\)*"\|\S\+' \ contained syn match kconfigSymbol '\<\k\+\>' \ contained \ nextgroup=@kconfigConfigOptions \ skipwhite skipnl " FIXME: There is – probably – no reason to cluster these instead of just " defining them in the same group. syn cluster kconfigConfigOptions contains=kconfigTypeDefinition, \ kconfigInputPrompt, \ kconfigDefaultValue, \ kconfigDependencies, \ kconfigReverseDependencies, \ kconfigNumericalRanges, \ kconfigHelpText, \ kconfigDefBool, \ kconfigOptional syn keyword kconfigTypeDefinition bool boolean tristate string hex int \ contained \ nextgroup=kconfigTypeDefPrompt, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigTypeDefPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigTypeDefPrompt "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn keyword kconfigInputPrompt prompt \ contained \ nextgroup=kconfigPromptPrompt \ skipwhite syn match kconfigPromptPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigPromptPrompt "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn keyword kconfigDefaultValue default \ contained \ nextgroup=@kconfigConfigOptionExpr \ skipwhite syn match kconfigDependencies 'depends on\|requires' \ contained \ nextgroup=@kconfigConfigOptionIfExpr \ skipwhite syn keyword kconfigReverseDependencies select \ contained \ nextgroup=@kconfigRevDepSymbol \ skipwhite syn cluster kconfigRevDepSymbol contains=kconfigRevDepCSymbol, \ kconfigRevDepNCSymbol syn match kconfigRevDepCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigRevDepCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigRevDepNCSymbol '\<\k\+\>' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn keyword kconfigNumericalRanges range \ contained \ nextgroup=@kconfigRangeSymbol \ skipwhite syn cluster kconfigRangeSymbol contains=kconfigRangeCSymbol, \ kconfigRangeNCSymbol syn match kconfigRangeCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=@kconfigRangeSymbol2 \ skipwhite skipnl syn match kconfigRangeCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=@kconfigRangeSymbol2 \ skipwhite skipnl syn match kconfigRangeNCSymbol '\<\k\+\>' \ contained \ nextgroup=@kconfigRangeSymbol2 \ skipwhite skipnl syn cluster kconfigRangeSymbol2 contains=kconfigRangeCSymbol2, \ kconfigRangeNCSymbol2 syn match kconfigRangeCSymbol2 "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigRangeNCSymbol2 '\<\k\+\>' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn region kconfigHelpText contained \ matchgroup=kconfigConfigOption \ start='\%(help\|---help---\)\ze\s*\n\z(\s\+\)' \ skip='^$' \ end='^\z1\@!' \ nextgroup=@kconfigConfigOptions \ skipwhite skipnl " XXX: Undocumented syn keyword kconfigDefBool def_bool \ contained \ nextgroup=@kconfigDefBoolSymbol \ skipwhite syn cluster kconfigDefBoolSymbol contains=kconfigDefBoolCSymbol, \ kconfigDefBoolNCSymbol syn match kconfigDefBoolCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigDefBoolCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigDefBoolNCSymbol '\<\k\+\>' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl " XXX: This is actually only a valid option for “choice”, but treating it " specially would require a lot of extra groups. syn keyword kconfigOptional optional \ contained \ nextgroup=@kconfigConfigOptions \ skipwhite skipnl syn keyword kconfigConfigOptionIf if \ contained \ nextgroup=@kconfigConfigOptionIfExpr \ skipwhite syn cluster kconfigConfigOptionIfExpr contains=@kconfigConfOptIfExprSym, \ kconfigConfOptIfExprNeg, \ kconfigConfOptIfExprGroup syn cluster kconfigConfOptIfExprSym contains=kconfigConfOptIfExprCSym, \ kconfigConfOptIfExprNCSym syn match kconfigConfOptIfExprCSym '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=@kconfigConfigOptions, \ kconfigConfOptIfExprAnd, \ kconfigConfOptIfExprOr, \ kconfigConfOptIfExprEq, \ kconfigConfOptIfExprNEq \ skipwhite skipnl syn match kconfigConfOptIfExprCSym "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=@kconfigConfigOptions, \ kconfigConfOptIfExprAnd, \ kconfigConfOptIfExprOr, \ kconfigConfOptIfExprEq, \ kconfigConfOptIfExprNEq \ skipwhite skipnl syn match kconfigConfOptIfExprNCSym '\<\k\+\>' \ contained \ nextgroup=@kconfigConfigOptions, \ kconfigConfOptIfExprAnd, \ kconfigConfOptIfExprOr, \ kconfigConfOptIfExprEq, \ kconfigConfOptIfExprNEq \ skipwhite skipnl syn cluster kconfigConfOptIfExprSym2 contains=kconfigConfOptIfExprCSym2, \ kconfigConfOptIfExprNCSym2 syn match kconfigConfOptIfExprEq '=' \ contained \ nextgroup=@kconfigConfOptIfExprSym2 \ skipwhite syn match kconfigConfOptIfExprNEq '!=' \ contained \ nextgroup=@kconfigConfOptIfExprSym2 \ skipwhite syn match kconfigConfOptIfExprCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=@kconfigConfigOptions, \ kconfigConfOptIfExprAnd, \ kconfigConfOptIfExprOr \ skipwhite skipnl syn match kconfigConfOptIfExprNCSym2 '\<\k\+\>' \ contained \ nextgroup=@kconfigConfigOptions, \ kconfigConfOptIfExprAnd, \ kconfigConfOptIfExprOr \ skipwhite skipnl syn match kconfigConfOptIfExprNeg '!' \ contained \ nextgroup=@kconfigConfigOptionIfExpr \ skipwhite syn match kconfigConfOptIfExprAnd '&&' \ contained \ nextgroup=@kconfigConfigOptionIfExpr \ skipwhite syn match kconfigConfOptIfExprOr '||' \ contained \ nextgroup=@kconfigConfigOptionIfExpr \ skipwhite syn match kconfigConfOptIfExprGroup '(' \ contained \ nextgroup=@kconfigConfigOptionIfGExp \ skipwhite " TODO: hm, this kind of recursion doesn't work right. We need another set of " expressions that have kconfigConfigOPtionIfGExp as nextgroup and a matcher " for '(' that sets it all off. syn cluster kconfigConfigOptionIfGExp contains=@kconfigConfOptIfGExpSym, \ kconfigConfOptIfGExpNeg, \ kconfigConfOptIfExprGroup syn cluster kconfigConfOptIfGExpSym contains=kconfigConfOptIfGExpCSym, \ kconfigConfOptIfGExpNCSym syn match kconfigConfOptIfGExpCSym '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=@kconfigConfigIf, \ kconfigConfOptIfGExpAnd, \ kconfigConfOptIfGExpOr, \ kconfigConfOptIfGExpEq, \ kconfigConfOptIfGExpNEq \ skipwhite skipnl syn match kconfigConfOptIfGExpCSym "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=@kconfigConfigIf, \ kconfigConfOptIfGExpAnd, \ kconfigConfOptIfGExpOr, \ kconfigConfOptIfGExpEq, \ kconfigConfOptIfGExpNEq \ skipwhite skipnl syn match kconfigConfOptIfGExpNCSym '\<\k\+\>' \ contained \ nextgroup=kconfigConfOptIfExprGrpE, \ kconfigConfOptIfGExpAnd, \ kconfigConfOptIfGExpOr, \ kconfigConfOptIfGExpEq, \ kconfigConfOptIfGExpNEq \ skipwhite skipnl syn cluster kconfigConfOptIfGExpSym2 contains=kconfigConfOptIfGExpCSym2, \ kconfigConfOptIfGExpNCSym2 syn match kconfigConfOptIfGExpEq '=' \ contained \ nextgroup=@kconfigConfOptIfGExpSym2 \ skipwhite syn match kconfigConfOptIfGExpNEq '!=' \ contained \ nextgroup=@kconfigConfOptIfGExpSym2 \ skipwhite syn match kconfigConfOptIfGExpCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfOptIfExprGrpE, \ kconfigConfOptIfGExpAnd, \ kconfigConfOptIfGExpOr \ skipwhite skipnl syn match kconfigConfOptIfGExpCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfOptIfExprGrpE, \ kconfigConfOptIfGExpAnd, \ kconfigConfOptIfGExpOr \ skipwhite skipnl syn match kconfigConfOptIfGExpNCSym2 '\<\k\+\>' \ contained \ nextgroup=kconfigConfOptIfExprGrpE, \ kconfigConfOptIfGExpAnd, \ kconfigConfOptIfGExpOr \ skipwhite skipnl syn match kconfigConfOptIfGExpNeg '!' \ contained \ nextgroup=@kconfigConfigOptionIfGExp \ skipwhite syn match kconfigConfOptIfGExpAnd '&&' \ contained \ nextgroup=@kconfigConfigOptionIfGExp \ skipwhite syn match kconfigConfOptIfGExpOr '||' \ contained \ nextgroup=@kconfigConfigOptionIfGExp \ skipwhite syn match kconfigConfOptIfExprGrpE ')' \ contained \ nextgroup=@kconfigConfigOptions, \ kconfigConfOptIfExprAnd, \ kconfigConfOptIfExprOr \ skipwhite skipnl syn cluster kconfigConfigOptionExpr contains=@kconfigConfOptExprSym, \ kconfigConfOptExprNeg, \ kconfigConfOptExprGroup syn cluster kconfigConfOptExprSym contains=kconfigConfOptExprCSym, \ kconfigConfOptExprNCSym syn match kconfigConfOptExprCSym '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr, \ kconfigConfOptExprEq, \ kconfigConfOptExprNEq, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigConfOptExprCSym "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr, \ kconfigConfOptExprEq, \ kconfigConfOptExprNEq, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigConfOptExprNCSym '\<\k\+\>' \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr, \ kconfigConfOptExprEq, \ kconfigConfOptExprNEq, \ @kconfigConfigOptions \ skipwhite skipnl syn cluster kconfigConfOptExprSym2 contains=kconfigConfOptExprCSym2, \ kconfigConfOptExprNCSym2 syn match kconfigConfOptExprEq '=' \ contained \ nextgroup=@kconfigConfOptExprSym2 \ skipwhite syn match kconfigConfOptExprNEq '!=' \ contained \ nextgroup=@kconfigConfOptExprSym2 \ skipwhite syn match kconfigConfOptExprCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigConfOptExprCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigConfOptExprNCSym2 '\<\k\+\>' \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigConfOptExprNeg '!' \ contained \ nextgroup=@kconfigConfigOptionExpr \ skipwhite syn match kconfigConfOptExprAnd '&&' \ contained \ nextgroup=@kconfigConfigOptionExpr \ skipwhite syn match kconfigConfOptExprOr '||' \ contained \ nextgroup=@kconfigConfigOptionExpr \ skipwhite syn match kconfigConfOptExprGroup '(' \ contained \ nextgroup=@kconfigConfigOptionGExp \ skipwhite syn cluster kconfigConfigOptionGExp contains=@kconfigConfOptGExpSym, \ kconfigConfOptGExpNeg, \ kconfigConfOptGExpGroup syn cluster kconfigConfOptGExpSym contains=kconfigConfOptGExpCSym, \ kconfigConfOptGExpNCSym syn match kconfigConfOptGExpCSym '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfOptExprGrpE, \ kconfigConfOptGExpAnd, \ kconfigConfOptGExpOr, \ kconfigConfOptGExpEq, \ kconfigConfOptGExpNEq \ skipwhite skipnl syn match kconfigConfOptGExpCSym "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfOptExprGrpE, \ kconfigConfOptGExpAnd, \ kconfigConfOptGExpOr, \ kconfigConfOptGExpEq, \ kconfigConfOptGExpNEq \ skipwhite skipnl syn match kconfigConfOptGExpNCSym '\<\k\+\>' \ contained \ nextgroup=kconfigConfOptExprGrpE, \ kconfigConfOptGExpAnd, \ kconfigConfOptGExpOr, \ kconfigConfOptGExpEq, \ kconfigConfOptGExpNEq \ skipwhite skipnl syn cluster kconfigConfOptGExpSym2 contains=kconfigConfOptGExpCSym2, \ kconfigConfOptGExpNCSym2 syn match kconfigConfOptGExpEq '=' \ contained \ nextgroup=@kconfigConfOptGExpSym2 \ skipwhite syn match kconfigConfOptGExpNEq '!=' \ contained \ nextgroup=@kconfigConfOptGExpSym2 \ skipwhite syn match kconfigConfOptGExpCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfOptExprGrpE, \ kconfigConfOptGExpAnd, \ kconfigConfOptGExpOr \ skipwhite skipnl syn match kconfigConfOptGExpCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfOptExprGrpE, \ kconfigConfOptGExpAnd, \ kconfigConfOptGExpOr \ skipwhite skipnl syn match kconfigConfOptGExpNCSym2 '\<\k\+\>' \ contained \ nextgroup=kconfigConfOptExprGrpE, \ kconfigConfOptGExpAnd, \ kconfigConfOptGExpOr \ skipwhite skipnl syn match kconfigConfOptGExpNeg '!' \ contained \ nextgroup=@kconfigConfigOptionGExp \ skipwhite syn match kconfigConfOptGExpAnd '&&' \ contained \ nextgroup=@kconfigConfigOptionGExp \ skipwhite syn match kconfigConfOptGExpOr '||' \ contained \ nextgroup=@kconfigConfigOptionGExp \ skipwhite syn match kconfigConfOptExprGrpE ')' \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr \ skipwhite skipnl syn sync minlines=50 hi def link kconfigTodo Todo hi def link kconfigComment Comment hi def link kconfigKeyword Keyword hi def link kconfigPreProc PreProc hi def link kconfigConditional Conditional hi def link kconfigPrompt String hi def link kconfigKeywordPrompt kconfigPrompt hi def link kconfigPath String hi def link kconfigSymbol String hi def link kconfigConstantSymbol Constant hi def link kconfigConfigOption Type hi def link kconfigTypeDefinition kconfigConfigOption hi def link kconfigTypeDefPrompt kconfigPrompt hi def link kconfigInputPrompt kconfigConfigOption hi def link kconfigPromptPrompt kconfigPrompt hi def link kconfigDefaultValue kconfigConfigOption hi def link kconfigDependencies kconfigConfigOption hi def link kconfigReverseDependencies kconfigConfigOption hi def link kconfigRevDepCSymbol kconfigConstantSymbol hi def link kconfigRevDepNCSymbol kconfigSymbol hi def link kconfigNumericalRanges kconfigConfigOption hi def link kconfigRangeCSymbol kconfigConstantSymbol hi def link kconfigRangeNCSymbol kconfigSymbol hi def link kconfigRangeCSymbol2 kconfigConstantSymbol hi def link kconfigRangeNCSymbol2 kconfigSymbol hi def link kconfigHelpText Normal hi def link kconfigDefBool kconfigConfigOption hi def link kconfigDefBoolCSymbol kconfigConstantSymbol hi def link kconfigDefBoolNCSymbol kconfigSymbol hi def link kconfigOptional kconfigConfigOption hi def link kconfigConfigOptionIf Conditional hi def link kconfigConfOptIfExprCSym kconfigConstantSymbol hi def link kconfigConfOptIfExprNCSym kconfigSymbol hi def link kconfigOperator Operator hi def link kconfigConfOptIfExprEq kconfigOperator hi def link kconfigConfOptIfExprNEq kconfigOperator hi def link kconfigConfOptIfExprCSym2 kconfigConstantSymbol hi def link kconfigConfOptIfExprNCSym2 kconfigSymbol hi def link kconfigConfOptIfExprNeg kconfigOperator hi def link kconfigConfOptIfExprAnd kconfigOperator hi def link kconfigConfOptIfExprOr kconfigOperator hi def link kconfigDelimiter Delimiter hi def link kconfigConfOptIfExprGroup kconfigDelimiter hi def link kconfigConfOptIfGExpCSym kconfigConstantSymbol hi def link kconfigConfOptIfGExpNCSym kconfigSymbol hi def link kconfigConfOptIfGExpEq kconfigOperator hi def link kconfigConfOptIfGExpNEq kconfigOperator hi def link kconfigConfOptIfGExpCSym2 kconfigConstantSymbol hi def link kconfigConfOptIfGExpNCSym2 kconfigSymbol hi def link kconfigConfOptIfGExpNeg kconfigOperator hi def link kconfigConfOptIfGExpAnd kconfigOperator hi def link kconfigConfOptIfGExpOr kconfigOperator hi def link kconfigConfOptIfExprGrpE kconfigDelimiter hi def link kconfigConfOptExprCSym kconfigConstantSymbol hi def link kconfigConfOptExprNCSym kconfigSymbol hi def link kconfigConfOptExprEq kconfigOperator hi def link kconfigConfOptExprNEq kconfigOperator hi def link kconfigConfOptExprCSym2 kconfigConstantSymbol hi def link kconfigConfOptExprNCSym2 kconfigSymbol hi def link kconfigConfOptExprNeg kconfigOperator hi def link kconfigConfOptExprAnd kconfigOperator hi def link kconfigConfOptExprOr kconfigOperator hi def link kconfigConfOptExprGroup kconfigDelimiter hi def link kconfigConfOptGExpCSym kconfigConstantSymbol hi def link kconfigConfOptGExpNCSym kconfigSymbol hi def link kconfigConfOptGExpEq kconfigOperator hi def link kconfigConfOptGExpNEq kconfigOperator hi def link kconfigConfOptGExpCSym2 kconfigConstantSymbol hi def link kconfigConfOptGExpNCSym2 kconfigSymbol hi def link kconfigConfOptGExpNeg kconfigOperator hi def link kconfigConfOptGExpAnd kconfigOperator hi def link kconfigConfOptGExpOr kconfigOperator hi def link kconfigConfOptExprGrpE kconfigConfOptIfExprGroup else syn keyword kconfigTodo contained TODO FIXME XXX NOTE syn match kconfigComment display '#.*$' contains=kconfigTodo syn keyword kconfigKeyword config menuconfig comment mainmenu syn keyword kconfigConditional menu endmenu choice endchoice if endif syn keyword kconfigPreProc source \ nextgroup=kconfigPath \ skipwhite syn keyword kconfigTriState y m n syn match kconfigSpecialChar contained '\\.' syn match kconfigSpecialChar '\\$' syn region kconfigPath matchgroup=kconfigPath \ start=+"+ skip=+\\\\\|\\\"+ end=+"+ \ contains=kconfigSpecialChar syn region kconfigPath matchgroup=kconfigPath \ start=+'+ skip=+\\\\\|\\\'+ end=+'+ \ contains=kconfigSpecialChar syn match kconfigPath '\S\+' \ contained syn region kconfigString matchgroup=kconfigString \ start=+"+ skip=+\\\\\|\\\"+ end=+"+ \ contains=kconfigSpecialChar syn region kconfigString matchgroup=kconfigString \ start=+'+ skip=+\\\\\|\\\'+ end=+'+ \ contains=kconfigSpecialChar syn keyword kconfigType bool boolean tristate string hex int syn keyword kconfigOption prompt default requires select range \ optional syn match kconfigOption 'depends\%( on\)\=' syn keyword kconfigMacro def_bool def_tristate syn region kconfigHelpText \ matchgroup=kconfigOption \ start='\%(help\|---help---\)\ze\s*\n\z(\s\+\)' \ skip='^$' \ end='^\z1\@!' syn sync match kconfigSyncHelp grouphere kconfigHelpText 'help\|---help---' hi def link kconfigTodo Todo hi def link kconfigComment Comment hi def link kconfigKeyword Keyword hi def link kconfigConditional Conditional hi def link kconfigPreProc PreProc hi def link kconfigTriState Boolean hi def link kconfigSpecialChar SpecialChar hi def link kconfigPath String hi def link kconfigString String hi def link kconfigType Type hi def link kconfigOption Identifier hi def link kconfigHelpText Normal hi def link kconfigmacro Macro endif let b:current_syntax = "kconfig" let &cpo = s:cpo_save unlet s:cpo_save PK�������!�f������vim80/syntax/cterm.vimnu�[��������" Vim syntax file " Language: Century Term Command Script " Maintainer: Sean M. McKee <mckee@misslink.net> " Last Change: 2002 Apr 13 " Version Info: @(#)cterm.vim 1.7 97/12/15 09:23:14 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore "FUNCTIONS syn keyword ctermFunction abort addcr addlf answer at attr batch baud syn keyword ctermFunction break call capture cd cdelay charset cls color syn keyword ctermFunction combase config commect copy cread syn keyword ctermFunction creadint devprefix dialer dialog dimint syn keyword ctermFunction dimlog dimstr display dtimeout dwait edit syn keyword ctermFunction editor emulate erase escloop fcreate syn keyword ctermFunction fflush fillchar flags flush fopen fread syn keyword ctermFunction freadln fseek fwrite fwriteln get hangup syn keyword ctermFunction help hiwait htime ignore init itime syn keyword ctermFunction keyboard lchar ldelay learn lockfile syn keyword ctermFunction locktime log login logout lowait syn keyword ctermFunction lsend ltime memlist menu mkdir mode syn keyword ctermFunction modem netdialog netport noerror pages parity syn keyword ctermFunction pause portlist printer protocol quit rcv syn keyword ctermFunction read readint readn redial release syn keyword ctermFunction remote rename restart retries return syn keyword ctermFunction rmdir rtime run runx scrollback send syn keyword ctermFunction session set setcap setcolor setkey syn keyword ctermFunction setsym setvar startserver status syn keyword ctermFunction stime stopbits stopserver tdelay syn keyword ctermFunction terminal time trans type usend version syn keyword ctermFunction vi vidblink vidcard vidout vidunder wait syn keyword ctermFunction wildsize wclose wopen wordlen wru wruchar syn keyword ctermFunction xfer xmit xprot syn match ctermFunction "?" "syn keyword ctermFunction comment remark "END FUNCTIONS "INTEGER FUNCTIONS syn keyword ctermIntFunction asc atod eval filedate filemode filesize ftell syn keyword ctermIntFunction len termbits opsys pos sum time val mdmstat "END INTEGER FUNCTIONS "STRING FUNCTIONS syn keyword ctermStrFunction cdate ctime chr chrdy chrin comin getenv syn keyword ctermStrFunction gethomedir left midstr right str tolower syn keyword ctermStrFunction toupper uniq comst exists feof hascolor "END STRING FUNCTIONS "PREDEFINED TERM VARIABLES R/W syn keyword ctermPreVarRW f _escloop _filename _kermiteol _obufsiz syn keyword ctermPreVarRW _port _rcvsync _cbaud _reval _turnchar syn keyword ctermPreVarRW _txblksiz _txwindow _vmin _vtime _cparity syn keyword ctermPreVarRW _cnumber false t true _cwordlen _cstopbits syn keyword ctermPreVarRW _cmode _cemulate _cxprot _clogin _clogout syn keyword ctermPreVarRW _cstartsrv _cstopsrv _ccmdfile _cwru syn keyword ctermPreVarRW _cprotocol _captfile _cremark _combufsiz syn keyword ctermPreVarRW logfile "END PREDEFINED TERM VARIABLES R/W "PREDEFINED TERM VARIABLES R/O syn keyword ctermPreVarRO _1 _2 _3 _4 _5 _6 _7 _8 _9 _cursess syn keyword ctermPreVarRO _lockfile _baud _errno _retval _sernum syn keyword ctermPreVarRO _timeout _row _col _version "END PREDEFINED TERM VARIABLES R/O syn keyword ctermOperator not mod eq ne gt le lt ge xor and or shr not shl "SYMBOLS syn match CtermSymbols "|" "syn keyword ctermOperators + - * / % = != > < >= <= & | ^ ! << >> "END SYMBOLS "STATEMENT syn keyword ctermStatement off syn keyword ctermStatement disk overwrite append spool none syn keyword ctermStatement echo view wrap "END STATEMENT "TYPE "syn keyword ctermType "END TYPE "USERLIB FUNCTIONS "syn keyword ctermLibFunc "END USERLIB FUNCTIONS "LABEL syn keyword ctermLabel case default "END LABEL "CONDITIONAL syn keyword ctermConditional on endon syn keyword ctermConditional proc endproc syn keyword ctermConditional for in do endfor syn keyword ctermConditional if else elseif endif iferror syn keyword ctermConditional switch endswitch syn keyword ctermConditional repeat until "END CONDITIONAL "REPEAT syn keyword ctermRepeat while "END REPEAT " Function arguments (eg $1 $2 $3) syn match ctermFuncArg "\$[1-9]" syn keyword ctermTodo contained TODO syn match ctermNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" "floating point number, with dot, optional exponent syn match ctermNumber "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, starting with a dot, optional exponent syn match ctermNumber "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, without dot, with exponent syn match ctermNumber "\<\d\+e[-+]\=\d\+[fl]\=\>" "hex number syn match ctermNumber "0x[0-9a-f]\+\(u\=l\=\|lu\)\>" syn match ctermComment "![^=].*$" contains=ctermTodo syn match ctermComment "!$" syn match ctermComment "\*.*$" contains=ctermTodo syn region ctermComment start="comment" end="$" contains=ctermTodo syn region ctermComment start="remark" end="$" contains=ctermTodo syn region ctermVar start="\$(" end=")" " String and Character contstants " Highlight special characters (those which have a backslash) differently syn match ctermSpecial contained "\\\d\d\d\|\\." syn match ctermSpecial contained "\^." syn region ctermString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=ctermSpecial,ctermVar,ctermSymbols syn match ctermCharacter "'[^\\]'" syn match ctermSpecialCharacter "'\\.'" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link ctermStatement Statement hi def link ctermFunction Statement hi def link ctermStrFunction Statement hi def link ctermIntFunction Statement hi def link ctermLabel Statement hi def link ctermConditional Statement hi def link ctermRepeat Statement hi def link ctermLibFunc UserDefFunc hi def link ctermType Type hi def link ctermFuncArg PreCondit hi def link ctermPreVarRO PreCondit hi def link ctermPreVarRW PreConditBold hi def link ctermVar Type hi def link ctermComment Comment hi def link ctermCharacter SpecialChar hi def link ctermSpecial Special hi def link ctermSpecialCharacter SpecialChar hi def link ctermSymbols Special hi def link ctermString String hi def link ctermTodo Todo hi def link ctermOperator Statement hi def link ctermNumber Number " redefine the colors "hi PreConditBold term=bold ctermfg=1 cterm=bold guifg=Purple gui=bold "hi Special term=bold ctermfg=6 guifg=SlateBlue gui=underline let b:current_syntax = "cterm" " vim: ts=8 PK�������!�|��|����vim80/syntax/css.vimnu�[��������" Vim syntax file " Language: Cascading Style Sheets " Previous Contributor List: " Claudio Fleiner <claudio@fleiner.com> (Maintainer) " Yeti (Add full CSS2, HTML4 support) " Nikolai Weibull (Add CSS2 support) " URL: https://github.com/JulesWang/css.vim " Maintainer: Jules Wang <w.jq0722@gmail.com> " Last Change: 2018 Feb. 27 " cssClassName updated by Ryuichi Hayashida Jan 2016 " quit when a syntax file was already loaded if !exists("main_syntax") if exists("b:current_syntax") finish endif let main_syntax = 'css' elseif exists("b:current_syntax") && b:current_syntax == "css" finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore " HTML4 tags syn keyword cssTagName abbr address area a b base syn keyword cssTagName bdo blockquote body br button syn keyword cssTagName caption cite code col colgroup dd del syn keyword cssTagName dfn div dl dt em fieldset form syn keyword cssTagName h1 h2 h3 h4 h5 h6 head hr html img i syn keyword cssTagName iframe input ins isindex kbd label legend li syn keyword cssTagName link map menu meta noscript ol optgroup syn keyword cssTagName option p param pre q s samp script small syn keyword cssTagName span strong sub sup tbody td syn keyword cssTagName textarea tfoot th thead title tr ul u var syn keyword cssTagName object svg syn match cssTagName /\<select\>\|\<style\>\|\<table\>/ " 34 HTML5 tags syn keyword cssTagName article aside audio bdi canvas command data syn keyword cssTagName datalist details dialog embed figcaption figure footer syn keyword cssTagName header hgroup keygen main mark menuitem meter nav syn keyword cssTagName output progress rt rp ruby section syn keyword cssTagName source summary time track video wbr " Tags not supported in HTML5 " acronym applet basefont big center dir " font frame frameset noframes strike tt syn match cssTagName "\*" " selectors syn match cssSelectorOp "[,>+~]" syn match cssSelectorOp2 "[~|^$*]\?=" contained syn region cssAttributeSelector matchgroup=cssSelectorOp start="\[" end="]" contains=cssUnicodeEscape,cssSelectorOp2,cssStringQ,cssStringQQ " .class and #id syn match cssClassName "\.-\=[A-Za-z_][A-Za-z0-9_-]*" contains=cssClassNameDot syn match cssClassNameDot contained '\.' try syn match cssIdentifier "#[A-Za-z-_@][A-Za-z-0-9_@-]*" catch /^.*/ syn match cssIdentifier "#[A-Za-z_@][A-Za-z0-9_@-]*" endtry " digits syn match cssValueInteger contained "[-+]\=\d\+" contains=cssUnitDecorators syn match cssValueNumber contained "[-+]\=\d\+\(\.\d*\)\=" contains=cssUnitDecorators syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\)\>" contains=cssUnitDecorators syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=%" contains=cssUnitDecorators syn match cssValueAngle contained "[-+]\=\d\+\(\.\d*\)\=\(deg\|grad\|rad\)\>" contains=cssUnitDecorators syn match cssValueTime contained "+\=\d\+\(\.\d*\)\=\(ms\|s\)\>" contains=cssUnitDecorators syn match cssValueFrequency contained "+\=\d\+\(\.\d*\)\=\(Hz\|kHz\)\>" contains=cssUnitDecorators " The 16 basic color names syn keyword cssColor contained aqua black blue fuchsia gray green lime maroon navy olive purple red silver teal yellow " 130 more color names syn keyword cssColor contained aliceblue antiquewhite aquamarine azure syn keyword cssColor contained beige bisque blanchedalmond blueviolet brown burlywood syn keyword cssColor contained cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan syn match cssColor contained /\<dark\(blue\|cyan\|goldenrod\|gray\|green\|grey\|khaki\)\>/ syn match cssColor contained /\<dark\(magenta\|olivegreen\|orange\|orchid\|red\|salmon\|seagreen\)\>/ syn match cssColor contained /\<darkslate\(blue\|gray\|grey\)\>/ syn match cssColor contained /\<dark\(turquoise\|violet\)\>/ syn keyword cssColor contained deeppink deepskyblue dimgray dimgrey dodgerblue firebrick syn keyword cssColor contained floralwhite forestgreen gainsboro ghostwhite gold syn keyword cssColor contained goldenrod greenyellow grey honeydew hotpink syn keyword cssColor contained indianred indigo ivory khaki lavender lavenderblush lawngreen syn keyword cssColor contained lemonchiffon limegreen linen magenta syn match cssColor contained /\<light\(blue\|coral\|cyan\|goldenrodyellow\|gray\|green\)\>/ syn match cssColor contained /\<light\(grey\|pink\|salmon\|seagreen\|skyblue\|yellow\)\>/ syn match cssColor contained /\<light\(slategray\|slategrey\|steelblue\)\>/ syn match cssColor contained /\<medium\(aquamarine\|blue\|orchid\|purple\|seagreen\)\>/ syn match cssColor contained /\<medium\(slateblue\|springgreen\|turquoise\|violetred\)\>/ syn keyword cssColor contained midnightblue mintcream mistyrose moccasin navajowhite syn keyword cssColor contained oldlace olivedrab orange orangered orchid syn match cssColor contained /\<pale\(goldenrod\|green\|turquoise\|violetred\)\>/ syn keyword cssColor contained papayawhip peachpuff peru pink plum powderblue syn keyword cssColor contained rosybrown royalblue rebeccapurple saddlebrown salmon syn keyword cssColor contained sandybrown seagreen seashell sienna skyblue slateblue syn keyword cssColor contained slategray slategrey snow springgreen steelblue tan syn keyword cssColor contained thistle tomato turquoise violet wheat syn keyword cssColor contained whitesmoke yellowgreen " FIXME: These are actually case-insensitive too, but (a) specs recommend using " mixed-case (b) it's hard to highlight the word `Background' correctly in " all situations syn case match syn keyword cssColor contained ActiveBorder ActiveCaption AppWorkspace ButtonFace ButtonHighlight ButtonShadow ButtonText CaptionText GrayText Highlight HighlightText InactiveBorder InactiveCaption InactiveCaptionText InfoBackground InfoText Menu MenuText Scrollbar ThreeDDarkShadow ThreeDFace ThreeDHighlight ThreeDLightShadow ThreeDShadow Window WindowFrame WindowText Background syn case ignore syn match cssImportant contained "!\s*important\>" syn match cssColor contained "\<transparent\>" syn match cssColor contained "\<currentColor\>" syn match cssColor contained "\<white\>" syn match cssColor contained "#\x\{3,4\}\>" contains=cssUnitDecorators syn match cssColor contained "#\x\{6\}\>" contains=cssUnitDecorators syn match cssColor contained "#\x\{8\}\>" contains=cssUnitDecorators syn region cssURL contained matchgroup=cssFunctionName start="\<\(uri\|url\|local\|format\)\s*(" end=")" contains=cssStringQ,cssStringQQ oneline syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip\|attr\|counter\|rect\|cubic-bezier\|steps\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgba\|hsl\|hsla\|color-stop\|from\|to\)\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma,cssFunction syn region cssFunction contained matchgroup=cssFunctionName start="\<\(linear-\|radial-\)\=\gradient\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunction,cssGradientAttr,cssFunctionComma syn region cssFunction contained matchgroup=cssFunctionName start="\<\(matrix\(3d\)\=\|scale\(3d\|X\|Y\|Z\)\=\|translate\(3d\|X\|Y\|Z\)\=\|skew\(X\|Y\)\=\|rotate\(3d\|X\|Y\|Z\)\=\|perspective\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssValueAngle,cssFunctionComma syn keyword cssGradientAttr contained top bottom left right cover center middle ellipse at syn match cssFunctionComma contained "," " Common Prop and Attr syn keyword cssCommonAttr contained auto none inherit all default normal syn keyword cssCommonAttr contained top bottom center stretch hidden visible "------------------------------------------------ " CSS Animations " http://www.w3.org/TR/css3-animations/ syn match cssAnimationProp contained "\<animation\(-\(delay\|direction\|duration\|fill-mode\|name\|play-state\|timing-function\|iteration-count\)\)\=\>" " animation-direction attributes syn keyword cssAnimationAttr contained alternate reverse syn match cssAnimationAttr contained "\<alternate-reverse\>" " animation-fill-mode attributes syn keyword cssAnimationAttr contained forwards backwards both " animation-play-state attributes syn keyword cssAnimationAttr contained running paused " animation-iteration-count attributes syn keyword cssAnimationAttr contained infinite "------------------------------------------------ " CSS Backgrounds and Borders Module Level 3 " http://www.w3.org/TR/css3-background/ syn match cssBackgroundProp contained "\<background\(-\(attachment\|clip\|color\|image\|origin\|position\|repeat\|size\)\)\=\>" " background-attachment attributes syn keyword cssBackgroundAttr contained scroll fixed local " background-position attributes syn keyword cssBackgroundAttr contained left center right top bottom " background-repeat attributes syn match cssBackgroundAttr contained "\<no-repeat\>" syn match cssBackgroundAttr contained "\<repeat\(-[xy]\)\=\>" " background-size attributes syn keyword cssBackgroundAttr contained cover contain syn match cssBorderProp contained "\<border\(-\(top\|right\|bottom\|left\)\)\=\(-\(width\|color\|style\)\)\=\>" syn match cssBorderProp contained "\<border\(-\(top\|bottom\)-\(left\|right\)\)\=-radius\>" syn match cssBorderProp contained "\<border-image\(-\(outset\|repeat\|slice\|source\|width\)\)\=\>" syn match cssBorderProp contained "\<box-decoration-break\>" syn match cssBorderProp contained "\<box-shadow\>" " border-image attributes syn keyword cssBorderAttr contained stretch round fill " border-style attributes syn keyword cssBorderAttr contained dotted dashed solid double groove ridge inset outset " border-width attributes syn keyword cssBorderAttr contained thin thick medium " box-decoration-break attributes syn keyword cssBorderAttr contained clone slice "------------------------------------------------ syn match cssBoxProp contained "\<padding\(-\(top\|right\|bottom\|left\)\)\=\>" syn match cssBoxProp contained "\<margin\(-\(top\|right\|bottom\|left\)\)\=\>" syn match cssBoxProp contained "\<overflow\(-\(x\|y\|style\)\)\=\>" syn match cssBoxProp contained "\<rotation\(-point\)\=\>" syn keyword cssBoxAttr contained visible hidden scroll auto syn match cssBoxAttr contained "\<no-\(display\|content\)\>" syn keyword cssColorProp contained opacity syn match cssColorProp contained "\<color-profile\>" syn match cssColorProp contained "\<rendering-intent\>" syn match cssDimensionProp contained "\<\(min\|max\)-\(width\|height\)\>" syn keyword cssDimensionProp contained height syn keyword cssDimensionProp contained width " CSS Flexible Box Layout Module Level 1 " http://www.w3.org/TR/css3-flexbox/ " CSS Box Alignment Module Level 3 " http://www.w3.org/TR/css-align-3/ syn match cssFlexibleBoxProp contained "\<flex\(-\(direction\|wrap\|flow\|grow\|shrink\|basis\)\)\=\>" syn match cssFlexibleBoxProp contained "\<\(align\|justify\)\(-\(items\|self\|content\)\)\=\>" syn keyword cssFlexibleBoxProp contained order syn match cssFlexibleBoxAttr contained "\<\(row\|column\|wrap\)\(-reverse\)\=\>" syn keyword cssFlexibleBoxAttr contained nowrap stretch baseline center syn match cssFlexibleBoxAttr contained "\<flex\(-\(start\|end\)\)\=\>" syn match cssFlexibleBoxAttr contained "\<space\(-\(between\|around\)\)\=\>" " CSS Fonts Module Level 3 " http://www.w3.org/TR/css-fonts-3/ syn match cssFontProp contained "\<font\(-\(family\|\|feature-settings\|kerning\|language-override\|size\(-adjust\)\=\|stretch\|style\|synthesis\|variant\(-\(alternates\|caps\|east-asian\|ligatures\|numeric\|position\)\)\=\|weight\)\)\=\>" " font attributes syn keyword cssFontAttr contained icon menu caption syn match cssFontAttr contained "\<message-box\>" syn match cssFontAttr contained "\<status-bar\>" syn keyword cssFontAttr contained larger smaller syn match cssFontAttr contained "\<\(x\{1,2\}-\)\=\(large\|small\)\>" syn match cssFontAttr contained "\<small-\(caps\|caption\)\>" " font-family attributes syn match cssFontAttr contained "\<\(sans-\)\=serif\>" syn keyword cssFontAttr contained Antiqua Arial Black Book Charcoal Comic Courier Dingbats Gadget Geneva Georgia Grande Helvetica Impact Linotype Lucida MS Monaco Neue New Palatino Roboto Roman Symbol Tahoma Times Trebuchet Verdana Webdings Wingdings York Zapf syn keyword cssFontAttr contained cursive fantasy monospace " font-feature-settings attributes syn keyword cssFontAttr contained on off " font-stretch attributes syn match cssFontAttr contained "\<\(\(ultra\|extra\|semi\)-\)\=\(condensed\|expanded\)\>" " font-style attributes syn keyword cssFontAttr contained italic oblique " font-synthesis attributes syn keyword cssFontAttr contained weight style " font-weight attributes syn keyword cssFontAttr contained bold bolder lighter " TODO: font-variant-* attributes "------------------------------------------------ " Webkit specific property/attributes syn match cssFontProp contained "\<font-smooth\>" syn match cssFontAttr contained "\<\(subpixel-\)\=\antialiased\>" " CSS Multi-column Layout Module " http://www.w3.org/TR/css3-multicol/ syn match cssMultiColumnProp contained "\<break-\(after\|before\|inside\)\>" syn match cssMultiColumnProp contained "\<column-\(count\|fill\|gap\|rule\(-\(color\|style\|width\)\)\=\|span\|width\)\>" syn keyword cssMultiColumnProp contained columns syn keyword cssMultiColumnAttr contained balance medium syn keyword cssMultiColumnAttr contained always left right page column syn match cssMultiColumnAttr contained "\<avoid\(-\(page\|column\)\)\=\>" " http://www.w3.org/TR/css3-break/#page-break syn match cssMultiColumnProp contained "\<page\(-break-\(before\|after\|inside\)\)\=\>" " http://www.w3.org/TR/SVG11/interact.html syn match cssInteractProp contained "\<pointer-events\>" syn match cssInteractAttr contained "\<\(visible\)\=\(Painted\|Fill\|Stroke\)\=\>" " TODO find following items in w3c docs. syn keyword cssGeneratedContentProp contained quotes crop syn match cssGeneratedContentProp contained "\<counter-\(reset\|increment\)\>" syn match cssGeneratedContentProp contained "\<move-to\>" syn match cssGeneratedContentProp contained "\<page-policy\>" syn match cssGeneratedContentAttr contained "\<\(no-\)\=\(open\|close\)-quote\>" " https://www.w3.org/TR/css-grid-1/ syn match cssGridProp contained "\<grid\>" syn match cssGridProp contained "\<grid\(-\(template\|auto\)\)\=\(-\(columns\|rows\|areas\)\)\>" syn match cssGridProp contained "\<grid-\(column\|row\)\(-\(start\|end\|gap\)\)\=\>" syn match cssGridProp contained "\<grid-\(area\|gap\)\>" syn match cssGridProp contained "\<grid-auto-flow\>" syn match cssHyerlinkProp contained "\<target\(-\(name\|new\|position\)\)\=\>" syn match cssListProp contained "\<list-style\(-\(type\|position\|image\)\)\=\>" syn match cssListAttr contained "\<\(lower\|upper\)-\(roman\|alpha\|greek\|latin\)\>" syn match cssListAttr contained "\<\(hiragana\|katakana\)\(-iroha\)\=\>" syn match cssListAttr contained "\<\(decimal\(-leading-zero\)\=\|cjk-ideographic\)\>" syn keyword cssListAttr contained disc circle square hebrew armenian georgian syn keyword cssListAttr contained inside outside syn keyword cssPositioningProp contained bottom clear clip display float left syn keyword cssPositioningProp contained position right top visibility syn match cssPositioningProp contained "\<z-index\>" syn keyword cssPositioningAttr contained block compact grid syn match cssPositioningAttr contained "\<table\(-\(row-group\|\(header\|footer\)-group\|row\|column\(-group\)\=\|cell\|caption\)\)\=\>" syn keyword cssPositioningAttr contained left right both syn match cssPositioningAttr contained "\<list-item\>" syn match cssPositioningAttr contained "\<inline\(-\(block\|box\|table\|grid\|flex\)\)\=\>" syn keyword cssPositioningAttr contained static relative absolute fixed subgrid syn keyword cssPrintAttr contained landscape portrait crop cross always syn match cssTableProp contained "\<\(caption-side\|table-layout\|border-collapse\|border-spacing\|empty-cells\)\>" syn keyword cssTableAttr contained fixed collapse separate show hide once always syn keyword cssTextProp contained color direction syn match cssTextProp "\<\(\(word\|letter\)-spacing\|text\(-\(decoration\|transform\|align\|index\|shadow\)\)\=\|vertical-align\|unicode-bidi\|line-height\)\>" syn match cssTextProp contained "\<text-\(justify\|outline\|warp\|align-last\|size-adjust\|rendering\|stroke\|indent\)\>" syn match cssTextProp contained "\<word-\(break\|\wrap\)\>" syn match cssTextProp contained "\<white-space\>" syn match cssTextProp contained "\<hanging-punctuation\>" syn match cssTextProp contained "\<punctuation-trim\>" syn match cssTextAttr contained "\<line-through\>" syn match cssTextAttr contained "\<\(text-\)\=\(top\|bottom\)\>" syn keyword cssTextAttr contained ltr rtl embed nowrap syn keyword cssTextAttr contained underline overline blink sub super middle syn keyword cssTextAttr contained capitalize uppercase lowercase syn keyword cssTextAttr contained justify baseline sub super syn keyword cssTextAttr contained optimizeLegibility optimizeSpeed syn match cssTextAttr contained "\<pre\(-\(line\|wrap\)\)\=\>" syn match cssTextAttr contained "\<\(allow\|force\)-end\>" syn keyword cssTextAttr contained start end adjacent syn match cssTextAttr contained "\<inter-\(word\|ideographic\|cluster\)\>" syn keyword cssTextAttr contained distribute kashida first last syn keyword cssTextAttr contained clip ellipsis unrestricted suppress syn match cssTextAttr contained "\<break-all\>" syn match cssTextAttr contained "\<break-word\>" syn keyword cssTextAttr contained hyphenate syn match cssTextAttr contained "\<bidi-override\>" syn match cssTransformProp contained "\<transform\(-\(origin\|style\)\)\=\>" syn match cssTransformProp contained "\<perspective\(-origin\)\=\>" syn match cssTransformProp contained "\<backface-visibility\>" " CSS Transitions " http://www.w3.org/TR/css3-transitions/ syn match cssTransitionProp contained "\<transition\(-\(delay\|duration\|property\|timing-function\)\)\=\>" " transition-time-function attributes syn match cssTransitionAttr contained "\<linear\(-gradient\)\@!\>" syn match cssTransitionAttr contained "\<ease\(-\(in-out\|out\|in\)\)\=\>" syn match cssTransitionAttr contained "\<step\(-start\|-end\)\=\>" "------------------------------------------------ " CSS Basic User Interface Module Level 3 (CSS3 UI) " http://www.w3.org/TR/css3-ui/ syn match cssUIProp contained "\<box-sizing\>" syn match cssUIAttr contained "\<\(content\|padding\|border\)\(-box\)\=\>" syn keyword cssUIProp contained cursor syn match cssUIAttr contained "\<\(\([ns]\=[ew]\=\)\|col\|row\|nesw\|nwse\)-resize\>" syn keyword cssUIAttr contained crosshair help move pointer alias copy syn keyword cssUIAttr contained progress wait text cell move syn match cssUIAttr contained "\<context-menu\>" syn match cssUIAttr contained "\<no-drop\>" syn match cssUIAttr contained "\<not-allowed\>" syn match cssUIAttr contained "\<all-scroll\>" syn match cssUIAttr contained "\<\(vertical-\)\=text\>" syn match cssUIAttr contained "\<zoom\(-in\|-out\)\=\>" syn match cssUIProp contained "\<ime-mode\>" syn keyword cssUIAttr contained active inactive disabled syn match cssUIProp contained "\<nav-\(down\|index\|left\|right\|up\)\=\>" syn match cssUIProp contained "\<outline\(-\(width\|style\|color\|offset\)\)\=\>" syn keyword cssUIAttr contained invert syn keyword cssUIProp contained icon resize syn keyword cssUIAttr contained both horizontal vertical syn match cssUIProp contained "\<text-overflow\>" syn keyword cssUIAttr contained clip ellipsis syn match cssUIProp contained "\<image-rendering\>" syn keyword cssUIAttr contained pixellated syn match cssUIAttr contained "\<crisp-edges\>" "------------------------------------------------ " Webkit/iOS specific attributes syn match cssUIAttr contained '\<preserve-3d\>' " IE specific attributes syn match cssIEUIAttr contained '\<bicubic\>' " Webkit/iOS specific properties syn match cssUIProp contained '\<tap-highlight-color\|user-select\|touch-callout\>' " IE specific properties syn match cssIEUIProp contained '\<interpolation-mode\|zoom\|filter\>' " Webkit/Firebox specific properties/attributes syn keyword cssUIProp contained appearance syn keyword cssUIAttr contained window button field icon document menu syn match cssAuralProp contained "\<\(pause\|cue\)\(-\(before\|after\)\)\=\>" syn match cssAuralProp contained "\<\(play-during\|speech-rate\|voice-family\|pitch\(-range\)\=\|speak\(-\(punctuation\|numeral\|header\)\)\=\)\>" syn keyword cssAuralProp contained volume during azimuth elevation stress richness syn match cssAuralAttr contained "\<\(x-\)\=\(soft\|loud\)\>" syn keyword cssAuralAttr contained silent syn match cssAuralAttr contained "\<spell-out\>" syn keyword cssAuralAttr contained non mix syn match cssAuralAttr contained "\<\(left\|right\)-side\>" syn match cssAuralAttr contained "\<\(far\|center\)-\(left\|center\|right\)\>" syn keyword cssAuralAttr contained leftwards rightwards behind syn keyword cssAuralAttr contained below level above lower higher syn match cssAuralAttr contained "\<\(x-\)\=\(slow\|fast\|low\|high\)\>" syn keyword cssAuralAttr contained faster slower syn keyword cssAuralAttr contained male female child code digits continuous " mobile text syn match cssMobileTextProp contained "\<text-size-adjust\>" syn keyword cssMediaProp contained width height orientation scan grid syn match cssMediaProp contained /\(\(max\|min\)-\)\=\(\(device\)-\)\=aspect-ratio/ syn match cssMediaProp contained /\(\(max\|min\)-\)\=device-pixel-ratio/ syn match cssMediaProp contained /\(\(max\|min\)-\)\=device-\(height\|width\)/ syn match cssMediaProp contained /\(\(max\|min\)-\)\=\(height\|width\|resolution\|monochrome\|color\(-index\)\=\)/ syn keyword cssMediaAttr contained portrait landscape progressive interlace syn match cssKeyFrameProp /\d*%\|from\|to/ contained nextgroup=cssDefinition syn match cssPageMarginProp /@\(\(top\|left\|right\|bottom\)-\(left\|center\|right\|middle\|bottom\)\)\(-corner\)\=/ contained nextgroup=cssDefinition syn keyword cssPageProp contained content size syn keyword cssPageProp contained orphans widows syn keyword cssFontDescriptorProp contained src syn match cssFontDescriptorProp contained "\<unicode-range\>" " unicode-range attributes syn match cssFontDescriptorAttr contained "U+[0-9A-Fa-f?]\+" syn match cssFontDescriptorAttr contained "U+\x\+-\x\+" syn match cssBraces contained "[{}]" syn match cssError contained "{@<>" syn region cssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=cssTagName,cssAttributeSelector,cssClassName,cssIdentifier,cssAtRule,cssAttrRegion,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssHacks,cssNoise fold syn match cssBraceError "}" syn match cssAttrComma "," " Pseudo class " http://www.w3.org/TR/css3-selectors/ syn match cssPseudoClass ":[A-Za-z0-9_-]*" contains=cssNoise,cssPseudoClassId,cssUnicodeEscape,cssVendor,cssPseudoClassFn syn keyword cssPseudoClassId contained link visited active hover before after left right syn keyword cssPseudoClassId contained root empty target enable disabled checked invalid syn match cssPseudoClassId contained "\<first-\(line\|letter\)\>" syn match cssPseudoClassId contained "\<\(first\|last\|only\)-\(of-type\|child\)\>" syn region cssPseudoClassFn contained matchgroup=cssFunctionName start="\<\(not\|lang\|\(nth\|nth-last\)-\(of-type\|child\)\)(" end=")" " ------------------------------------ " Vendor specific properties syn match cssPseudoClassId contained "\<selection\>" syn match cssPseudoClassId contained "\<focus\(-inner\)\=\>" syn match cssPseudoClassId contained "\<\(input-\)\=placeholder\>" " Misc highlight groups syntax match cssUnitDecorators /\(#\|-\|+\|%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|ch\|rem\|vh\|vw\|vmin\|vmax\|dpi\|dppx\|dpcm\|Hz\|kHz\|s\|ms\|deg\|grad\|rad\)/ contained syntax match cssNoise contained /\(:\|;\|\/\)/ " Comment syn region cssComment start="/\*" end="\*/" contains=@Spell fold syn match cssUnicodeEscape "\\\x\{1,6}\s\?" syn match cssSpecialCharQQ +\\\\\|\\"+ contained syn match cssSpecialCharQ +\\\\\|\\'+ contained syn region cssStringQQ start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cssUnicodeEscape,cssSpecialCharQQ syn region cssStringQ start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=cssUnicodeEscape,cssSpecialCharQ " Vendor Prefix syn match cssVendor contained "-\(webkit\|moz\|o\|ms\)-" " Various CSS Hack characters " In earlier versions of IE (6 and 7), one can prefix property names " with a _ or * to isolate those definitions to particular versions of IE " This is purely decorative and therefore we assign to the same highlight " group to cssVendor, for more information: " http://www.paulirish.com/2009/browser-specific-css-hacks/ syn match cssHacks contained /\(_\|*\)/ " Attr Enhance " Some keywords are both Prop and Attr, so we have to handle them syn region cssAttrRegion start=/:/ end=/\ze\(;\|)\|}\)/ contained contains=css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise " Hack for transition " 'transition' has Props after ':'. syn region cssAttrRegion start=/transition\s*:/ end=/\ze\(;\|)\|}\)/ contained contains=css.*Prop,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise syn match cssAtKeyword /@\(font-face\|media\|keyframes\|import\|charset\|namespace\|page\|supports\)/ contained syn keyword cssAtRuleLogical only not and contained " @media " Reference: http://www.w3.org/TR/css3-mediaqueries/ syn region cssAtRule start=/@media\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssMediaProp,cssValueLength,cssAtRuleLogical,cssValueInteger,cssMediaAttr,cssVendor,cssMediaType,cssComment nextgroup=cssDefinition syn keyword cssMediaType contained screen print aural braille embossed handheld projection tty tv speech all contained " @page " http://www.w3.org/TR/css3-page/ syn region cssAtRule start=/@page\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssPagePseudo,cssComment nextgroup=cssDefinition syn match cssPagePseudo /:\(left\|right\|first\|blank\)/ contained skipwhite skipnl " @keyframe " http://www.w3.org/TR/css3-animations/#keyframes syn region cssAtRule start=/@\(-[a-z]\+-\)\=keyframes\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssVendor,cssComment nextgroup=cssDefinition syn region cssAtRule start=/@import\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword,cssURL,cssMediaProp,cssValueLength,cssAtRuleLogical,cssValueInteger,cssMediaAttr,cssMediaType syn region cssAtRule start=/@charset\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword syn region cssAtRule start=/@namespace\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword " @font-face " http://www.w3.org/TR/css3-fonts/#at-font-face-rule syn match cssAtRule "@font-face\>" nextgroup=cssFontDescriptorBlock " @supports " https://www.w3.org/TR/css3-conditional/#at-supports syn region cssAtRule start=/@supports\>/ end=/\ze{/ skipwhite skipnl contains=cssAtRuleLogical,cssAttrRegion,css.*Prop,cssValue.*,cssVendor,cssAtKeyword,cssComment nextgroup=cssDefinition if main_syntax == "css" syn sync minlines=10 endif " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link cssComment Comment hi def link cssVendor Comment hi def link cssHacks Comment hi def link cssTagName Statement hi def link cssDeprecated Error hi def link cssSelectorOp Special hi def link cssSelectorOp2 Special hi def link cssAttrComma Special hi def link cssAnimationProp cssProp hi def link cssBackgroundProp cssProp hi def link cssBorderProp cssProp hi def link cssBoxProp cssProp hi def link cssColorProp cssProp hi def link cssContentForPagedMediaProp cssProp hi def link cssDimensionProp cssProp hi def link cssFlexibleBoxProp cssProp hi def link cssFontProp cssProp hi def link cssGeneratedContentProp cssProp hi def link cssGridProp cssProp hi def link cssHyerlinkProp cssProp hi def link cssInteractProp cssProp hi def link cssLineboxProp cssProp hi def link cssListProp cssProp hi def link cssMarqueeProp cssProp hi def link cssMultiColumnProp cssProp hi def link cssPagedMediaProp cssProp hi def link cssPositioningProp cssProp hi def link cssPrintProp cssProp hi def link cssRubyProp cssProp hi def link cssSpeechProp cssProp hi def link cssTableProp cssProp hi def link cssTextProp cssProp hi def link cssTransformProp cssProp hi def link cssTransitionProp cssProp hi def link cssUIProp cssProp hi def link cssIEUIProp cssProp hi def link cssAuralProp cssProp hi def link cssRenderProp cssProp hi def link cssMobileTextProp cssProp hi def link cssAnimationAttr cssAttr hi def link cssBackgroundAttr cssAttr hi def link cssBorderAttr cssAttr hi def link cssBoxAttr cssAttr hi def link cssContentForPagedMediaAttr cssAttr hi def link cssDimensionAttr cssAttr hi def link cssFlexibleBoxAttr cssAttr hi def link cssFontAttr cssAttr hi def link cssGeneratedContentAttr cssAttr hi def link cssGridAttr cssAttr hi def link cssHyerlinkAttr cssAttr hi def link cssInteractAttr cssAttr hi def link cssLineboxAttr cssAttr hi def link cssListAttr cssAttr hi def link cssMarginAttr cssAttr hi def link cssMarqueeAttr cssAttr hi def link cssMultiColumnAttr cssAttr hi def link cssPaddingAttr cssAttr hi def link cssPagedMediaAttr cssAttr hi def link cssPositioningAttr cssAttr hi def link cssGradientAttr cssAttr hi def link cssPrintAttr cssAttr hi def link cssRubyAttr cssAttr hi def link cssSpeechAttr cssAttr hi def link cssTableAttr cssAttr hi def link cssTextAttr cssAttr hi def link cssTransformAttr cssAttr hi def link cssTransitionAttr cssAttr hi def link cssUIAttr cssAttr hi def link cssIEUIAttr cssAttr hi def link cssAuralAttr cssAttr hi def link cssRenderAttr cssAttr hi def link cssCommonAttr cssAttr hi def link cssPseudoClassId PreProc hi def link cssPseudoClassLang Constant hi def link cssValueLength Number hi def link cssValueInteger Number hi def link cssValueNumber Number hi def link cssValueAngle Number hi def link cssValueTime Number hi def link cssValueFrequency Number hi def link cssFunction Constant hi def link cssURL String hi def link cssFunctionName Function hi def link cssFunctionComma Function hi def link cssColor Constant hi def link cssIdentifier Function hi def link cssAtRule Include hi def link cssAtKeyword PreProc hi def link cssImportant Special hi def link cssBraces Function hi def link cssBraceError Error hi def link cssError Error hi def link cssUnicodeEscape Special hi def link cssStringQQ String hi def link cssStringQ String hi def link cssAttributeSelector String hi def link cssMediaType Special hi def link cssMediaComma Normal hi def link cssAtRuleLogical Statement hi def link cssMediaProp cssProp hi def link cssMediaAttr cssAttr hi def link cssPagePseudo PreProc hi def link cssPageMarginProp cssAtKeyword hi def link cssPageProp cssProp hi def link cssKeyFrameProp Constant hi def link cssFontDescriptor Special hi def link cssFontDescriptorProp cssProp hi def link cssFontDescriptorAttr cssAttr hi def link cssUnicodeRange Constant hi def link cssClassName Function hi def link cssClassNameDot Function hi def link cssProp StorageClass hi def link cssAttr Constant hi def link cssUnitDecorators Number hi def link cssNoise Noise let b:current_syntax = "css" if main_syntax == 'css' unlet main_syntax endif let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK�������!�ݐO ��O ����vim80/syntax/upstart.vimnu�[��������" Vim syntax file " Language: Upstart job files " Maintainer: Michael Biebl <biebl@debian.org> " James Hunt <james.hunt@ubuntu.com> " Last Change: 2012 Jan 16 " License: The Vim license " Version: 0.4 " Remark: Syntax highlighting for Upstart (init(8)) job files. " " It is inspired by the initng syntax file and includes sh.vim to do the " highlighting of script blocks. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let is_bash = 1 syn include @Shell syntax/sh.vim syn case match " avoid need to use 'match' for most events setlocal iskeyword+=- syn match upstartComment /#.*$/ contains=upstartTodo syn keyword upstartTodo TODO FIXME contained syn region upstartString start=/"/ end=/"/ skip=/\\"/ syn region upstartScript matchgroup=upstartStatement start="script" end="end script" contains=@upstartShellCluster syn cluster upstartShellCluster contains=@Shell " one argument syn keyword upstartStatement description author version instance expect syn keyword upstartStatement pid kill normal console env exit export syn keyword upstartStatement umask nice oom chroot chdir exec " two arguments syn keyword upstartStatement limit " one or more arguments (events) syn keyword upstartStatement emits syn keyword upstartStatement on start stop " flag, no parameter syn keyword upstartStatement respawn service instance manual debug task " prefix for exec or script syn keyword upstartOption pre-start post-start pre-stop post-stop " option for kill syn keyword upstartOption timeout " option for oom syn keyword upstartOption never " options for console syn keyword upstartOption output owner " options for expect syn keyword upstartOption fork daemon " options for limit syn keyword upstartOption unlimited " 'options' for start/stop on syn keyword upstartOption and or " Upstart itself and associated utilities syn keyword upstartEvent runlevel syn keyword upstartEvent started syn keyword upstartEvent starting syn keyword upstartEvent startup syn keyword upstartEvent stopped syn keyword upstartEvent stopping syn keyword upstartEvent control-alt-delete syn keyword upstartEvent keyboard-request syn keyword upstartEvent power-status-changed " D-Bus syn keyword upstartEvent dbus-activation " Display Manager (ie gdm) syn keyword upstartEvent desktop-session-start syn keyword upstartEvent login-session-start " mountall syn keyword upstartEvent all-swaps syn keyword upstartEvent filesystem syn keyword upstartEvent mounted syn keyword upstartEvent mounting syn keyword upstartEvent local-filesystems syn keyword upstartEvent remote-filesystems syn keyword upstartEvent virtual-filesystems " SysV umountnfs.sh syn keyword upstartEvent mounted-remote-filesystems " upstart-udev-bridge and ifup/down syn match upstartEvent /\<\i\{-1,}-device-\(added\|removed\|up\|down\)/ " upstart-socket-bridge syn keyword upstartEvent socket hi def link upstartComment Comment hi def link upstartTodo Todo hi def link upstartString String hi def link upstartStatement Statement hi def link upstartOption Type hi def link upstartEvent Define let b:current_syntax = "upstart" PK�������!��(��(����vim80/syntax/debsources.vimnu�[��������" Vim syntax file " Language: Debian sources.list " Maintainer: Debian Vim Maintainers " Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl> " Last Change: 2018 Jan 06 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim " Standard syntax initialization if exists("b:current_syntax") finish endif " case sensitive syn case match " A bunch of useful keywords syn match debsourcesKeyword /\(deb-src\|deb\|main\|contrib\|non-free\|restricted\|universe\|multiverse\)/ " Match comments syn match debsourcesComment /#.*/ contains=@Spell let s:cpo = &cpo set cpo-=C let s:supported = [ \ 'oldstable', 'stable', 'testing', 'unstable', 'experimental', \ 'wheezy', 'jessie', 'stretch', 'sid', 'rc-buggy', \ \ 'trusty', 'xenial', 'zesty', 'artful', 'bionic', 'devel' \ ] let s:unsupported = [ \ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', \ 'woody', 'sarge', 'etch', 'lenny', 'squeeze', \ \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty', \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid', \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy', \ 'utopic', 'vivid', 'wily', 'yakkety' \ ] let &cpo=s:cpo " Match uri's syn match debsourcesUri +\(https\?://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' <>"]\++ exe 'syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\<\('. join(s:supported, '\|'). '\)\>\([-[:alnum:]_./]*\)+' exe 'syn match debsourcesUnsupportedDistrKeyword +\([[:alnum:]_./]*\)\<\('. join(s:unsupported, '\|') .'\)\>\([-[:alnum:]_./]*\)+' " Associate our matches and regions with pretty colours hi def link debsourcesLine Error hi def link debsourcesKeyword Statement hi def link debsourcesDistrKeyword Type hi def link debsourcesUnsupportedDistrKeyword WarningMsg hi def link debsourcesComment Comment hi def link debsourcesUri Constant let b:current_syntax = "debsources" PK�������!�C �� ����vim80/syntax/registry.vimnu�[��������" Vim syntax file " Language: Windows Registry export with regedit (*.reg) " Maintainer: Dominique Stéphan (dominique@mggen.com) " URL: http://www.mggen.com/vim/syntax/registry.zip (doesn't work) " Last change: 2014 Oct 31 " Included patch from Alexander A. Ulitin " clear any unwanted syntax defs " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " shut case off syn case ignore " Head of regedit .reg files, it's REGEDIT4 on Win9#/NT syn match registryHead "^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$" " Comment syn match registryComment "^;.*$" " Registry Key constant syn keyword registryHKEY HKEY_LOCAL_MACHINE HKEY_CLASSES_ROOT HKEY_CURRENT_USER syn keyword registryHKEY HKEY_USERS HKEY_CURRENT_CONFIG HKEY_DYN_DATA " Registry Key shortcuts syn keyword registryHKEY HKLM HKCR HKCU HKU HKCC HKDD " Some values often found in the registry " GUID (Global Unique IDentifier) syn match registryGUID "{[0-9A-Fa-f]\{8}\-[0-9A-Fa-f]\{4}\-[0-9A-Fa-f]\{4}\-[0-9A-Fa-f]\{4}\-[0-9A-Fa-f]\{12}}" contains=registrySpecial " Disk " syn match registryDisk "[a-zA-Z]:\\\\" " Special and Separator characters syn match registrySpecial "\\" syn match registrySpecial "\\\\" syn match registrySpecial "\\\"" syn match registrySpecial "\." syn match registrySpecial "," syn match registrySpecial "\/" syn match registrySpecial ":" syn match registrySpecial "-" " String syn match registryString "\".*\"" contains=registryGUID,registrySpecial " Path syn region registryPath start="\[" end="\]" contains=registryHKEY,registryGUID,registrySpecial " Path to remove " like preceding path but with a "-" at begin syn region registryRemove start="\[\-" end="\]" contains=registryHKEY,registryGUID,registrySpecial " Subkey syn match registrySubKey "^\".*\"=" " Default value syn match registrySubKey "^@=" " Numbers " Hex or Binary " The format can be precised between () : " 0 REG_NONE " 1 REG_SZ " 2 REG_EXPAND_SZ " 3 REG_BINARY " 4 REG_DWORD, REG_DWORD_LITTLE_ENDIAN " 5 REG_DWORD_BIG_ENDIAN " 6 REG_LINK " 7 REG_MULTI_SZ " 8 REG_RESOURCE_LIST " 9 REG_FULL_RESOURCE_DESCRIPTOR " 10 REG_RESOURCE_REQUIREMENTS_LIST " The value can take several lines, if \ ends the line " The limit to 999 matches is arbitrary, it avoids Vim crashing on a very long " line of hex values that ends in a comma. "syn match registryHex "hex\(([0-9]\{0,2})\)\=:\([0-9a-fA-F]\{2},\)\{0,999}\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial syn match registryHex "hex\(([0-9]\{0,2})\)\=:\([0-9a-fA-F]\{2},\)*\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial syn match registryHex "^\s*\([0-9a-fA-F]\{2},\)\{0,999}\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial " Dword (32 bits) syn match registryDword "dword:[0-9a-fA-F]\{8}$" contains=registrySpecial " The default methods for highlighting. Can be overridden later hi def link registryComment Comment hi def link registryHead Constant hi def link registryHKEY Constant hi def link registryPath Special hi def link registryRemove PreProc hi def link registryGUID Identifier hi def link registrySpecial Special hi def link registrySubKey Type hi def link registryString String hi def link registryHex Number hi def link registryDword Number let b:current_syntax = "registry" " vim:ts=8 PK�������!�vZ������vim80/syntax/omnimark.vimnu�[��������" Vim syntax file " Language: Omnimark " Maintainer: Paul Terray <mailto:terray@4dconcept.fr> " Last Change: 11 Oct 2000 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,_,128-167,224-235,- syn keyword omnimarkKeywords ACTIVATE AGAIN syn keyword omnimarkKeywords CATCH CLEAR CLOSE COPY COPY-CLEAR CROSS-TRANSLATE syn keyword omnimarkKeywords DEACTIVATE DECLARE DECREMENT DEFINE DISCARD DIVIDE DO DOCUMENT-END DOCUMENT-START DONE DTD-START syn keyword omnimarkKeywords ELEMENT ELSE ESCAPE EXIT syn keyword omnimarkKeywords FAIL FIND FIND-END FIND-START FORMAT syn keyword omnimarkKeywords GROUP syn keyword omnimarkKeywords HALT HALT-EVERYTHING syn keyword omnimarkKeywords IGNORE IMPLIED INCLUDE INCLUDE-END INCLUDE-START INCREMENT INPUT syn keyword omnimarkKeywords JOIN syn keyword omnimarkKeywords LINE-END LINE-START LOG LOOKAHEAD syn keyword omnimarkKeywords MACRO syn keyword omnimarkKeywords MACRO-END MARKED-SECTION MARKUP-COMMENT MARKUP-ERROR MARKUP-PARSER MASK MATCH MINUS MODULO syn keyword omnimarkKeywords NEW NEWLINE NEXT syn keyword omnimarkKeywords OPEN OUTPUT OUTPUT-TO OVER syn keyword omnimarkKeywords PROCESS PROCESS-END PROCESS-START PROCESSING-INSTRUCTION PROLOG-END PROLOG-IN-ERROR PUT syn keyword omnimarkKeywords REMOVE REOPEN REPEAT RESET RETHROW RETURN syn keyword omnimarkKeywords WHEN WHITE-SPACE syn keyword omnimarkKeywords SAVE SAVE-CLEAR SCAN SELECT SET SGML SGML-COMMENT SGML-DECLARATION-END SGML-DTD SGML-DTDS SGML-ERROR SGML-IN SGML-OUT SGML-PARSE SGML-PARSER SHIFT SUBMIT SUCCEED SUPPRESS syn keyword omnimarkKeywords SYSTEM-CALL syn keyword omnimarkKeywords TEST-SYSTEM THROW TO TRANSLATE syn keyword omnimarkKeywords UC UL UNLESS UP-TRANSLATE syn keyword omnimarkKeywords XML-PARSE syn keyword omnimarkCommands ACTIVE AFTER ANCESTOR AND ANOTHER ARG AS ATTACHED ATTRIBUTE ATTRIBUTES syn keyword omnimarkCommands BASE BEFORE BINARY BINARY-INPUT BINARY-MODE BINARY-OUTPUT BREAK-WIDTH BUFFER BY syn keyword omnimarkCommands CASE CHILDREN CLOSED COMPILED-DATE COMPLEMENT CONREF CONTENT CONTEXT-TRANSLATE COUNTER CREATED CREATING CREATOR CURRENT syn keyword omnimarkCommands DATA-ATTRIBUTE DATA-ATTRIBUTES DATA-CONTENT DATA-LETTERS DATE DECLARED-CONREF DECLARED-CURRENT DECLARED-DEFAULTED DECLARED-FIXED DECLARED-IMPLIED DECLARED-REQUIRED syn keyword omnimarkCommands DEFAULT-ENTITY DEFAULTED DEFAULTING DELIMITER DIFFERENCE DIRECTORY DOCTYPE DOCUMENT DOCUMENT-ELEMENT DOMAIN-FREE DOWN-TRANSLATE DTD DTD-END DTDS syn keyword omnimarkCommands ELEMENTS ELSEWHERE EMPTY ENTITIES ENTITY EPILOG-START EQUAL EXCEPT EXISTS EXTERNAL EXTERNAL-DATA-ENTITY EXTERNAL-ENTITY EXTERNAL-FUNCTION EXTERNAL-OUTPUT-FUNCTION syn keyword omnimarkCommands EXTERNAL-TEXT-ENTITY syn keyword omnimarkCommands FALSE FILE FUNCTION FUNCTION-LIBRARY syn keyword omnimarkCommands GENERAL GLOBAL GREATER-EQUAL GREATER-THAN GROUPS syn keyword omnimarkCommands HAS HASNT HERALDED-NAMES syn keyword omnimarkCommands ID ID-CHECKING IDREF IDREFS IN IN-LIBRARY INCLUSION INITIAL INITIAL-SIZE INSERTION-BREAK INSTANCE INTERNAL INVALID-DATA IS ISNT ITEM syn keyword omnimarkCommands KEY KEYED syn keyword omnimarkCommands LAST LASTMOST LC LENGTH LESS-EQUAL LESS-THAN LETTERS LIBRARY LITERAL LOCAL syn keyword omnimarkCommands MATCHES MIXED MODIFIABLE syn keyword omnimarkCommands NAME NAME-LETTERS NAMECASE NAMED NAMES NDATA-ENTITY NEGATE NESTED-REFERENTS NMTOKEN NMTOKENS NO NO-DEFAULT-IO NON-CDATA NON-IMPLIED NON-SDATA NOT NOTATION NUMBER-OF NUMBERS syn keyword omnimarkCommands NUTOKEN NUTOKENS syn keyword omnimarkCommands OCCURRENCE OF OPAQUE OPTIONAL OR syn keyword omnimarkCommands PARAMETER PARENT PAST PATTERN PLUS PREPARENT PREVIOUS PROPER PUBLIC syn keyword omnimarkCommands READ-ONLY READABLE REFERENT REFERENTS REFERENTS-ALLOWED REFERENTS-DISPLAYED REFERENTS-NOT-ALLOWED REMAINDER REPEATED REPLACEMENT-BREAK REVERSED syn keyword omnimarkCommands SILENT-REFERENT SIZE SKIP SOURCE SPECIFIED STATUS STREAM SUBDOC-ENTITY SUBDOCUMENT SUBDOCUMENTS SUBELEMENT SWITCH SYMBOL SYSTEM syn keyword omnimarkCommands TEXT-MODE THIS TIMES TOKEN TRUE syn keyword omnimarkCommands UNANCHORED UNATTACHED UNION USEMAP USING syn keyword omnimarkCommands VALUE VALUED VARIABLE syn keyword omnimarkCommands WITH WRITABLE syn keyword omnimarkCommands XML XML-DTD XML-DTDS syn keyword omnimarkCommands YES syn keyword omnimarkCommands #ADDITIONAL-INFO #APPINFO #CAPACITY #CHARSET #CLASS #COMMAND-LINE-NAMES #CONSOLE #CURRENT-INPUT #CURRENT-OUTPUT #DATA #DOCTYPE #DOCUMENT #DTD #EMPTY #ERROR #ERROR-CODE syn keyword omnimarkCommands #FILE-NAME #FIRST #GROUP #IMPLIED #ITEM #LANGUAGE-VERSION #LAST #LIBPATH #LIBRARY #LIBVALUE #LINE-NUMBER #MAIN-INPUT #MAIN-OUTPUT #MARKUP-ERROR-COUNT #MARKUP-ERROR-TOTAL syn keyword omnimarkCommands #MARKUP-PARSER #MARKUP-WARNING-COUNT #MARKUP-WARNING-TOTAL #MESSAGE #NONE #OUTPUT #PLATFORM-INFO #PROCESS-INPUT #PROCESS-OUTPUT #RECOVERY-INFO #SGML #SGML-ERROR-COUNT syn keyword omnimarkCommands #SGML-ERROR-TOTAL #SGML-WARNING-COUNT #SGML-WARNING-TOTAL #SUPPRESS #SYNTAX #! syn keyword omnimarkPatterns ANY ANY-TEXT syn keyword omnimarkPatterns BLANK syn keyword omnimarkPatterns CDATA CDATA-ENTITY CONTENT-END CONTENT-START syn keyword omnimarkPatterns DIGIT syn keyword omnimarkPatterns LETTER syn keyword omnimarkPatterns NUMBER syn keyword omnimarkPatterns PCDATA syn keyword omnimarkPatterns RCDATA syn keyword omnimarkPatterns SDATA SDATA-ENTITY SPACE syn keyword omnimarkPatterns TEXT syn keyword omnimarkPatterns VALUE-END VALUE-START syn keyword omnimarkPatterns WORD-END WORD-START syn region omnimarkComment start=";" end="$" " strings syn region omnimarkString matchgroup=Normal start=+'+ end=+'+ skip=+%'+ contains=omnimarkEscape syn region omnimarkString matchgroup=Normal start=+"+ end=+"+ skip=+%"+ contains=omnimarkEscape syn match omnimarkEscape contained +%.+ syn match omnimarkEscape contained +%[0-9][0-9]#+ "syn sync maxlines=100 syn sync minlines=2000 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link omnimarkCommands Statement hi def link omnimarkKeywords Identifier hi def link omnimarkString String hi def link omnimarkPatterns Macro " hi def link omnimarkNumber Number hi def link omnimarkComment Comment hi def link omnimarkEscape Special let b:current_syntax = "omnimark" " vim: ts=8 PK�������!�J��J����vim80/syntax/eterm.vimnu�[��������" Vim syntax file " Language: eterm(1) configuration file " Previous Maintainer: Nikolai Weibull <now@bitwi.se> " Latest Revision: 2006-04-21 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword etermTodo contained TODO FIXME XXX NOTE syn region etermComment display oneline start='^#' end='$' \ contains=etermTodo,@Spell syn match etermMagic display '^<Eterm-[0-9.]\+>$' syn match etermNumber contained display '\<\(\d\+\|0x\x\{1,2}\)\>' syn region etermString contained display oneline start=+"+ \ skip=+\\"+ end=+"+ syn keyword etermBoolean contained on off true false yes no syn keyword etermPreProc contained appname exec get put random version \ include preproc syn keyword etermFunctions contained copy exit kill nop paste save \ scroll search spawn syn cluster etermGeneral contains=etermComment,etermFunction, \ etermPreProc syn keyword etermKeyMod contained ctrl shift lock mod1 mod2 mod3 mod4 \ mod5 alt meta anymod syn keyword etermKeyMod contained button1 button2 button3 button4 \ button5 syn keyword etermColorOptions contained video nextgroup=etermVideoOptions \ skipwhite syn keyword etermVideoType contained normal reverse syn keyword etermColorOptions contained foreground background cursor \ cursor_text pointer \ nextgroup=etermColorType skipwhite syn keyword etermColorType contained bd ul syn match etermColorType contained display '\<\%(\d\|1[0-5]\)' syn keyword etermColorOptions contained color \ nextgroup=etermColorNumber skipwhite syn keyword etermColorNumber contained bd ul nextgroup=etermColorSpec \ skipwhite syn match etermColorNumber contained display '\<\%(\d\|1[0-5]\)' \ nextgroup=etermColorSpec skipwhite syn match etermColorSpec contained display '\S\+' syn region etermColorContext fold transparent matchgroup=etermContext \ start='^\s*begin\s\+color\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermColorOptions syn keyword etermAttrOptions contained geometry nextgroup=etermGeometry \ skipwhite syn match etermGeometry contained display '\d\+x\d++\d\++\d\+' syn keyword etermAttrOptions contained scrollbar_type \ nextgroup=etermScrollbarType skipwhite syn keyword etermScrollbarType contained motif xterm next syn keyword etermAttrOptions contained font nextgroup=etermFontType \ skipwhite syn keyword etermFontType contained bold nextgroup=etermFont skipwhite syn match etermFontType contained display '[0-5]' nextgroup=etermFont \ skipwhite syn match etermFont contained display '\S\+' syn keyword etermFontType contained default nextgroup=etermNumber \ skipwhite syn keyword etermFontType contained proportional nextgroup=etermBoolean \ skipwhite syn keyword etermFontType contained fx nextgroup=etermString skipwhite syn keyword etermAttrOptions contained title name iconname \ nextgroup=etermString skipwhite syn keyword etermAttrOptions contained scrollbar_width desktop \ nextgroup=etermNumber skipwhite syn region etermAttrContext fold transparent matchgroup=etermContext \ start='^\s*begin\s\+attributes\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermAttrOptions syn keyword etermIClassOptions contained icon path nextgroup=etermString \ skipwhite syn keyword etermIClassOptions contained cache nextgroup=etermNumber \ skipwhite syn keyword etermIClassOptions contained anim nextgroup=etermNumber \ skipwhite syn region etermIClassContext fold transparent matchgroup=etermContext \ start='^\s*begin\s\+imageclasses\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermImageContext, \ etermIClassOptions syn keyword etermImageOptions contained type nextgroup=etermImageType \ skipwhite syn keyword etermImageTypes contained background trough anchor up_arrow \ left_arrow right_arrow menu menuitem \ submenu button buttonbar down_arrow syn keyword etermImageOptions contained mode nextgroup=etermImageModes \ skipwhite syn keyword etermImageModes contained image trans viewport auto solid \ nextgroup=etermImageModesAllow skipwhite syn keyword etermImageModesAllow contained allow nextgroup=etermImageModesR \ skipwhite syn keyword etermImageModesR contained image trans viewport auto solid syn keyword etermImageOptions contained state nextgroup=etermImageState \ skipwhite syn keyword etermImageState contained normal selected clicked disabled syn keyword etermImageOptions contained color nextgroup=etermImageColorFG \ skipwhite syn keyword etermImageColorFG contained '\S\+' nextgroup=etermImageColorBG \ skipwhite syn keyword etermImageColorBG contained '\S\+' syn keyword etermImageOptions contained file nextgroup=etermString \ skipwhite syn keyword etermImageOptions contained geom nextgroup=etermImageGeom \ skipwhite syn match etermImageGeom contained display \ '\s\+\%(\d\+x\d\++\d\++\d\+\)\=:\%(\%(tie\|scale\|hscale\|vscale\|propscale\)d\=\)\=' syn keyword etermImageOptions contained cmod colormod \ nextgroup=etermImageCmod skipwhite syn keyword etermImageCmod contained image red green blue \ nextgroup=etermImageBrightness skipwhite syn match etermImageBrightness contained display '\<\(\d\+\|0x\x\{1,2}\)\>' \ nextgroup=etermImageContrast skipwhite syn match etermImageContrast contained display '\<\(\d\+\|0x\x\{1,2}\)\>' \ nextgroup=etermImageGamma skipwhite syn match etermImageGamma contained display '\<\(\d\+\|0x\x\{1,2}\)\>' \ nextgroup=etermImageGamma skipwhite syn region etermImageOptions contained display oneline \ matchgroup=etermImageOptions \ start='border\|bevel\%(\s\+\%(up\|down\)\)\|padding' \ end='$' contains=etermNumber syn region etermImageContext contained fold transparent \ matchgroup=etermContext \ start='^\s*begin\s\+image\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermImageOptions syn keyword etermMenuItemOptions contained action \ nextgroup=etermMenuItemAction skipwhite syn keyword etermMenuItemAction contained string echo submenu script \ nextgroup=etermString skipwhite syn keyword etermMenuItemAction contained separator syn keyword etermMenuItemOptions contained text rtext nextgroup=etermString \ skipwhite syn region etermMenuItemContext contained fold transparent \ matchgroup=etermContext \ start='^\s*begin\s\+menuitem\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermMenuItemOptions syn keyword etermMenuOptions contained title nextgroup=etermString \ skipwhite syn keyword etermMenuOptions contained font_name nextgroup=etermFont \ skipwhite syn match etermMenuOptions contained display '\<sep\>\|-' syn region etermMenuContext fold transparent matchgroup=etermContext \ start='^\s*begin\s\+menu\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermMenuOptions, \ etermMenuItemContext syn keyword etermBind contained bind nextgroup=etermBindMods \ skipwhite syn keyword etermBindMods contained ctrl shift lock mod1 mod2 mod3 mod4 \ mod5 alt meta anymod \ nextgroup=etermBindMods skipwhite syn keyword etermBindTo contained to nextgroup=etermBindType \ skipwhite syn keyword etermBindType contained string echo menu script \ nextgroup=etermBindParam skipwhite syn match etermBindParam contained display '\S\+' syn region etermActionsContext fold transparent matchgroup=etermContext \ start='^\s*begin\s\+actions\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermActionsOptions syn keyword etermButtonOptions contained font nextgroup=etermFont skipwhite syn keyword etermButtonOptions contained visible nextgroup=etermBoolean \ skipwhite syn keyword etermButtonOptions contained dock nextgroup=etermDockOption \ skipwhite syn keyword etermDockOption contained top bottom no syn keyword etermButton contained button nextgroup=etermButtonText \ skipwhite syn region etermButtonText contained display oneline start=+"+ \ skip=+\\"+ end=+"+ \ nextgroup=etermButtonIcon skipwhite syn keyword etermButtonIcon contained icon nextgroup=etermButtonIconFile \ skipwhite syn keyword etermButtonIconFile contained '\S\+' nextgroup=etermButtonAction \ skipwhite syn keyword etermButtonAction contained action nextgroup=etermBindType \ skipwhite syn region etermButtonContext fold transparent matchgroup=etermContext \ start='^\s*begin\s\+button_bar\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermButtonOptions syn keyword etermMultiOptions contained encoding nextgroup=etermEncoding \ skipwhite syn keyword etermEncoding eucj sjis euckr big5 gb syn match etermEncoding display 'iso-10646' syn keyword etermMultiOptions contained font nextgroup=etermFontType \ skipwhite syn region etermMultiContext fold transparent matchgroup=etermContext \ start='^\s*begin\s\+multichar\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermMultiOptions syn keyword etermXimOptions contained input_method \ nextgroup=etermInputMethod skipwhite syn match etermInputMethod contained display '\S+' syn keyword etermXimOptions contained preedit_type \ nextgroup=etermPreeditType skipwhite syn keyword etermPreeditType contained OverTheSpot OffTheSpot Root syn region etermXimContext fold transparent matchgroup=etermContext \ start='^\s*begin\s\+xim\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermXimOptions syn keyword etermTogOptions contained map_alert visual_bell login_shell \ scrollbar utmp_logging meta8 iconic \ no_input home_on_output home_on_input \ scrollbar_floating scrollbar_right \ scrollbar_popup borderless double_buffer \ no_cursor pause xterm_select select_line \ select_trailing_spaces report_as_keysyms \ itrans immotile_trans buttonbar \ resize_gravity nextgroup=etermBoolean \ skipwhite syn region etermTogContext fold transparent matchgroup=etermContext \ start='^\s*begin\s\+toggles\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermTogOptions syn keyword etermKeyboardOptions contained smallfont_key bigfont_key keysym \ nextgroup=etermKeysym skipwhite syn keyword etermKeysym contained '\S\+' nextgroup=etermString \ skipwhite syn keyword etermKeyboardOptions contained meta_mod alt_mod numlock_mod \ nextgroup=etermNumber skipwhite syn keyword etermKeyboardOptions contained greek app_keypad app_cursor \ nextgroup=etermBoolean skipwhite syn region etermKeyboardContext fold transparent matchgroup=etermContext \ start='^\s*begin\s\+keyboard\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermKeyboardOptions syn keyword etermMiscOptions contained print_pipe cut_chars finished_title \ finished_text term_name exec \ nextgroup=etermString skipwhite syn keyword etermMiscOptions contained save_lines min_anchor_size \ border_width line_space syn region etermMiscContext fold transparent matchgroup=etermContext \ start='^\s*begin\s\+misc\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermMiscOptions syn keyword etermEScreenOptions contained url nextgroup=etermURL skipwhite syn match etermURL contained display \ '\<\%(screen\|twin\)://\%([^@:/]\+\%(@[^:/]\+\%(:[^/]\+\)\=\)\=\)\=/\S\+' syn keyword etermEScreenOptions contained firewall syn keyword etermEScreenOptions contained delay nextgroup=etermNumber \ skipwhite syn keyword etermEScreenOptions contained bbar_font nextgroup=etermFont \ skipwhite syn keyword etermEScreenOptions contained bbar_dock nextgroup=etermDockOption \ skipwhite syn region etermEScreenContext fold transparent matchgroup=etermContext \ start='^\s*begin\s\+escreen\>' \ end='^\s*end\>' \ contains=@etermGeneral,etermEScreenOptions if exists("eterm_minlines") let b:eterm_minlines = eterm_minlines else let b:eterm_minlines = 50 endif exec "syn sync minlines=" . b:eterm_minlines hi def link etermTodo Todo hi def link etermComment Comment hi def link etermMagic PreProc hi def link etermNumber Number hi def link etermString String hi def link etermBoolean Boolean hi def link etermPreProc PreProc hi def link etermFunctions Function hi def link etermKeyMod Constant hi def link etermOption Keyword hi def link etermColorOptions etermOption hi def link etermColor String hi def link etermVideoType Type hi def link etermColorType Type hi def link etermColorNumber Number hi def link etermColorSpec etermColor hi def link etermContext Keyword hi def link etermAttrOptions etermOption hi def link etermGeometry String hi def link etermScrollbarType Type hi def link etermFontType Type hi def link etermIClassOptions etermOption hi def link etermImageOptions etermOption hi def link etermImageTypes Type hi def link etermImageModes Type hi def link etermImageModesAllow Keyword hi def link etermImageModesR Type hi def link etermImageState Keyword hi def link etermImageColorFG etermColor hi def link etermImageColorBG etermColor hi def link etermImageGeom String hi def link etermImageCmod etermOption hi def link etermImageBrightness Number hi def link etermImageContrast Number hi def link etermImageGamma Number hi def link etermMenuItemOptions etermOption hi def link etermMenuItemAction Keyword hi def link etermMenuOptions etermOption hi def link etermBind Keyword hi def link etermBindMods Identifier hi def link etermBindTo Keyword hi def link etermBindType Type hi def link etermBindParam String hi def link etermButtonOptions etermOption hi def link etermDockOption etermOption hi def link etermButtonText String hi def link etermButtonIcon String hi def link etermButtonIconFile String hi def link etermButtonAction Keyword hi def link etermMultiOptions etermOption hi def link etermEncoding Identifier hi def link etermXimOptions etermOption hi def link etermInputMethod Identifier hi def link etermPreeditType Type hi def link etermTogOptions etermOption hi def link etermKeyboardOptions etermOption hi def link etermKeysym Constant hi def link etermMiscOptions etermOption hi def link etermEScreenOptions etermOption hi def link etermURL Identifier let b:current_syntax = "eterm" let &cpo = s:cpo_save unlet s:cpo_save PK�������!�C[mrI��rI����vim80/syntax/maxima.vimnu�[��������" Vim syntax file " Language: Maxima (symbolic algebra program) " Maintainer: Robert Dodier (robert.dodier@gmail.com) " Last Change: April 6, 2006 " Version: 1 " Adapted mostly from xmath.vim " Number formats adapted from r.vim " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn sync lines=1000 " parenthesis sanity checker syn region maximaZone matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,maximaError,maximaBraceError,maximaCurlyError syn region maximaZone matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,maximaError,maximaBraceError,maximaParenError syn region maximaZone matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,maximaError,maximaCurlyError,maximaParenError syn match maximaError "[)\]}]" syn match maximaBraceError "[)}]" contained syn match maximaCurlyError "[)\]]" contained syn match maximaParenError "[\]}]" contained syn match maximaComma "[\[\](),;]" syn match maximaComma "\.\.\.$" " A bunch of useful maxima keywords syn keyword maximaConditional if then else elseif and or not syn keyword maximaRepeat do for thru " ---------------------- BEGIN LIST OF ALL FUNCTIONS (EXCEPT KEYWORDS) ---------------------- syn keyword maximaFunc abasep abs absboxchar absint acos acosh acot acoth acsc syn keyword maximaFunc acsch activate activecontexts addcol additive addrow adim syn keyword maximaFunc adjoint af aform airy algebraic algepsilon algexact algsys syn keyword maximaFunc alg_type alias aliases allbut all_dotsimp_denoms allroots allsym syn keyword maximaFunc alphabetic antid antidiff antisymmetric append appendfile syn keyword maximaFunc apply apply1 apply2 applyb1 apropos args array arrayapply syn keyword maximaFunc arrayinfo arraymake arrays asec asech asin asinh askexp syn keyword maximaFunc askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume syn keyword maximaFunc assume_pos assume_pos_pred assumescalar asymbol asympa at atan syn keyword maximaFunc atan2 atanh atensimp atom atomgrad atrig1 atvalue augcoefmatrix syn keyword maximaFunc av backsubst backtrace bashindices batch batchload bc2 bdvac syn keyword maximaFunc berlefact bern bernpoly bessel besselexpand bessel_i bessel_j syn keyword maximaFunc bessel_k bessel_y beta bezout bffac bfhzeta bfloat bfloatp syn keyword maximaFunc bfpsi bfpsi0 bftorat bftrunc bfzeta bimetric binomial block syn keyword maximaFunc bothcoef box boxchar break breakup bug_report build_info buildq syn keyword maximaFunc burn cabs canform canten carg cartan catch cauchysum cbffac syn keyword maximaFunc cdisplay cf cfdisrep cfexpand cflength cframe_flag cgeodesic syn keyword maximaFunc changename changevar charpoly checkdiv check_overlaps christof syn keyword maximaFunc clear_rules closefile closeps cmetric cnonmet_flag coeff syn keyword maximaFunc coefmatrix cograd col collapse columnvector combine commutative syn keyword maximaFunc comp2pui compfile compile compile_file components concan concat syn keyword maximaFunc conj conjugate conmetderiv cons constant constantp cont2part syn keyword maximaFunc content context contexts contortion contract contragrad coord syn keyword maximaFunc copylist copymatrix cos cosh cosnpiflag cot coth covdiff syn keyword maximaFunc covect create_list csc csch csetup ctaylor ctaypov ctaypt syn keyword maximaFunc ctayswitch ctayvar ct_coords ct_coordsys ctorsion_flag ctransform syn keyword maximaFunc ctrgsimp current_let_rule_package dblint deactivate debugmode syn keyword maximaFunc declare declare_translated declare_weight decsym syn keyword maximaFunc default_let_rule_package defcon define define_variable defint syn keyword maximaFunc defmatch defrule deftaylor del delete deleten delta demo syn keyword maximaFunc demoivre denom dependencies depends derivabbrev derivdegree syn keyword maximaFunc derivlist derivsubst describe desolve determinant detout syn keyword maximaFunc diagmatrix diagmatrixp diagmetric diff dim dimension direct syn keyword maximaFunc disolate disp dispcon dispflag dispform dispfun display syn keyword maximaFunc display2d display_format_internal disprule dispterms distrib syn keyword maximaFunc divide divsum doallmxops domain domxexpt domxmxops domxnctimes syn keyword maximaFunc dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp syn keyword maximaFunc dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules syn keyword maximaFunc dotsimp dpart dscalar %e echelon %edispflag eigenvalues syn keyword maximaFunc eigenvectors eighth einstein eivals eivects ele2comp syn keyword maximaFunc ele2polynome ele2pui elem eliminate elliptic_e elliptic_ec syn keyword maximaFunc elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix %emode syn keyword maximaFunc endcons entermatrix entertensor entier %enumer equal equalp erf syn keyword maximaFunc erfflag errcatch error errormsg error_size error_syms syn keyword maximaFunc %e_to_numlog euler ev eval evenp every evflag evfun evundiff syn keyword maximaFunc example exp expand expandwrt expandwrt_denom expandwrt_factored syn keyword maximaFunc explose expon exponentialize expop express expt exptdispflag syn keyword maximaFunc exptisolate exptsubst extdiff extract_linear_equations ezgcd syn keyword maximaFunc facexpand factcomb factlim factor factorflag factorial factorout syn keyword maximaFunc factorsum facts false fast_central_elements fast_linsolve syn keyword maximaFunc fasttimes fb feature featurep features fft fib fibtophi fifth syn keyword maximaFunc filename_merge file_search file_search_demo file_search_lisp syn keyword maximaFunc file_search_maxima file_type fillarray findde first fix flatten syn keyword maximaFunc flipflag float float2bf floatnump flush flush1deriv flushd syn keyword maximaFunc flushnd forget fortindent fortran fortspaces fourcos fourexpand syn keyword maximaFunc fourier fourint fourintcos fourintsin foursimp foursin fourth syn keyword maximaFunc fpprec fpprintprec frame_bracket freeof fullmap fullmapl syn keyword maximaFunc fullratsimp fullratsubst funcsolve functions fundef funmake funp syn keyword maximaFunc gamma %gamma gammalim gauss gcd gcdex gcfactor gdet genfact syn keyword maximaFunc genindex genmatrix gensumnum get getchar gfactor gfactorsum syn keyword maximaFunc globalsolve go gradef gradefs gramschmidt grind grobner_basis syn keyword maximaFunc gschmit hach halfangles hermite hipow hodge horner i0 i1 syn keyword maximaFunc *read-base* ic1 ic2 icc1 icc2 ic_convert ichr1 ichr2 icounter syn keyword maximaFunc icurvature ident idiff idim idummy idummyx ieqn ieqnprint ifb syn keyword maximaFunc ifc1 ifc2 ifg ifgi ifr iframe_bracket_form iframes ifri ift syn keyword maximaFunc igeodesic_coords igeowedge_flag ikt1 ikt2 ilt imagpart imetric syn keyword maximaFunc inchar indexed_tensor indices inf %inf infeval infinity infix syn keyword maximaFunc inflag infolists init_atensor init_ctensor inm inmc1 inmc2 syn keyword maximaFunc innerproduct in_netmath inpart inprod inrt integerp integrate syn keyword maximaFunc integrate_use_rootsof integration_constant_counter interpolate syn keyword maximaFunc intfaclim intopois intosum intpolabs intpolerror intpolrel syn keyword maximaFunc invariant1 invariant2 inverse_jacobi_cd inverse_jacobi_cn syn keyword maximaFunc inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn syn keyword maximaFunc inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd syn keyword maximaFunc inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd syn keyword maximaFunc inverse_jacobi_sn invert is ishow isolate isolate_wrt_times syn keyword maximaFunc isqrt itr j0 j1 jacobi jacobi_cd jacobi_cn jacobi_cs jacobi_dc syn keyword maximaFunc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_sc syn keyword maximaFunc jacobi_sd jacobi_sn jn kdels kdelta keepfloat kill killcontext syn keyword maximaFunc kinvariant kostka kt labels lambda laplace lassociative last syn keyword maximaFunc lc2kdt lc_l lcm lc_u ldefint ldisp ldisplay leinstein length syn keyword maximaFunc let letrat let_rule_packages letrules letsimp levi_civita lfg syn keyword maximaFunc lfreeof lg lgtreillis lhospitallim lhs liediff limit limsubst syn keyword maximaFunc linear linechar linel linenum linsolve linsolve_params syn keyword maximaFunc linsolvewarn listarith listarray listconstvars listdummyvars syn keyword maximaFunc list_nc_monomials listoftens listofvars listp lmxchar load syn keyword maximaFunc loadfile loadprint local log logabs logarc logconcoeffp syn keyword maximaFunc logcontract logexpand lognegint lognumer logsimp lopow syn keyword maximaFunc lorentz_gauge lpart lratsubst lriem lriemann lsum ltreillis syn keyword maximaFunc m1pbranch macroexpansion mainvar make_array makebox makefact syn keyword maximaFunc makegamma makelist make_random_state make_transform map mapatom syn keyword maximaFunc maperror maplist matchdeclare matchfix matrix matrix_element_add syn keyword maximaFunc matrix_element_mult matrix_element_transpose matrixmap matrixp syn keyword maximaFunc mattrace max maxapplydepth maxapplyheight maxnegex maxposex syn keyword maximaFunc maxtayorder member min %minf minfactorial minor mod syn keyword maximaFunc mode_check_errorp mode_checkp mode_check_warnp mode_declare syn keyword maximaFunc mode_identity modulus mon2schur mono monomial_dimensions syn keyword maximaFunc multi_elem multinomial multi_orbit multiplicative multiplicities syn keyword maximaFunc multi_pui multsym multthru myoptions nc_degree ncexpt ncharpoly syn keyword maximaFunc negdistrib negsumdispflag newcontext newdet newton niceindices syn keyword maximaFunc niceindicespref ninth nm nmc noeval nolabels nonmetricity syn keyword maximaFunc nonscalar nonscalarp noun noundisp nounify nouns np npi syn keyword maximaFunc nptetrad nroots nterms ntermst nthroot ntrig num numberp numer syn keyword maximaFunc numerval numfactor nusum obase oddp ode2 op openplot_curves syn keyword maximaFunc operatorp opproperties opsubst optimize optimprefix optionset syn keyword maximaFunc orbit ordergreat ordergreatp orderless orderlessp outative syn keyword maximaFunc outchar outermap outofpois packagefile pade part part2cont syn keyword maximaFunc partfrac partition partpol partswitch permanent permut petrov syn keyword maximaFunc pfeformat pi pickapart piece playback plog plot2d plot2d_ps syn keyword maximaFunc plot3d plot_options poisdiff poisexpt poisint poislim poismap syn keyword maximaFunc poisplus poissimp poisson poissubst poistimes poistrim polarform syn keyword maximaFunc polartorect polynome2ele posfun potential powerdisp powers syn keyword maximaFunc powerseries pred prederror primep print printpois printprops syn keyword maximaFunc prodhack prodrac product programmode prompt properties props syn keyword maximaFunc propvars pscom psdraw_curve psexpand psi pui pui2comp pui2ele syn keyword maximaFunc pui2polynome pui_direct puireduc put qput qq quad_qag quad_qagi syn keyword maximaFunc quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quanc8 quit syn keyword maximaFunc qunit quotient radcan radexpand radsubstflag random rank syn keyword maximaFunc rassociative rat ratalgdenom ratchristof ratcoef ratdenom syn keyword maximaFunc ratdenomdivide ratdiff ratdisrep rateinstein ratepsilon ratexpand syn keyword maximaFunc ratfac ratmx ratnumer ratnump ratp ratprint ratriemann ratsimp syn keyword maximaFunc ratsimpexpons ratsubst ratvars ratweight ratweights ratweyl syn keyword maximaFunc ratwtlvl read readonly realonly realpart realroots rearray syn keyword maximaFunc rectform recttopolar rediff refcheck rem remainder remarray syn keyword maximaFunc rembox remcomps remcon remcoord remfun remfunction remlet syn keyword maximaFunc remove remrule remsym remvalue rename reset residue resolvante syn keyword maximaFunc resolvante_alternee1 resolvante_bipartite resolvante_diedrale syn keyword maximaFunc resolvante_klein resolvante_klein3 resolvante_produit_sym syn keyword maximaFunc resolvante_unitaire resolvante_vierer rest resultant return syn keyword maximaFunc reveal reverse revert revert2 rhs ric ricci riem riemann syn keyword maximaFunc rinvariant risch rmxchar rncombine %rnum_list romberg rombergabs syn keyword maximaFunc rombergit rombergmin rombergtol room rootsconmode rootscontract syn keyword maximaFunc rootsepsilon round row run_testsuite save savedef savefactors syn keyword maximaFunc scalarmatrixp scalarp scalefactors scanmap schur2comp sconcat syn keyword maximaFunc scsimp scurvature sec sech second setcheck setcheckbreak syn keyword maximaFunc setelmx set_plot_option set_random_state setup_autoload syn keyword maximaFunc set_up_dot_simplifications setval seventh sf show showcomps syn keyword maximaFunc showratvars showtime sign signum similaritytransform simpsum syn keyword maximaFunc simtran sin sinh sinnpiflag sixth solve solvedecomposes syn keyword maximaFunc solveexplicit solvefactors solve_inconsistent_error solvenullwarn syn keyword maximaFunc solveradcan solvetrigwarn somrac sort sparse spherical_bessel_j syn keyword maximaFunc spherical_bessel_y spherical_hankel1 spherical_hankel2 syn keyword maximaFunc spherical_harmonic splice sqfr sqrt sqrtdispflag sstatus syn keyword maximaFunc stardisp status string stringout sublis sublis_apply_lambda syn keyword maximaFunc sublist submatrix subst substinpart substpart subvarp sum syn keyword maximaFunc sumcontract sumexpand sumhack sumsplitfact supcontext symbolp syn keyword maximaFunc symmetric symmetricp system tan tanh taylor taylordepth syn keyword maximaFunc taylorinfo taylor_logexpand taylor_order_coefficients taylorp syn keyword maximaFunc taylor_simplifier taylor_truncate_polynomials taytorat tcl_output syn keyword maximaFunc tcontract tellrat tellsimp tellsimpafter tensorkill tentex tenth syn keyword maximaFunc tex %th third throw time timer timer_devalue timer_info syn keyword maximaFunc tldefint tlimit tlimswitch todd_coxeter to_lisp totaldisrep syn keyword maximaFunc totalfourier totient tpartpol tr trace trace_options syn keyword maximaFunc transcompile translate translate_file transpose transrun syn keyword maximaFunc tr_array_as_ref tr_bound_function_applyp treillis treinat syn keyword maximaFunc tr_file_tty_messagesp tr_float_can_branch_complex syn keyword maximaFunc tr_function_call_default triangularize trigexpand trigexpandplus syn keyword maximaFunc trigexpandtimes triginverses trigrat trigreduce trigsign trigsimp syn keyword maximaFunc tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars true syn keyword maximaFunc trunc truncate tr_warn_bad_function_calls tr_warn_fexpr syn keyword maximaFunc tr_warnings_get tr_warn_meval tr_warn_mode tr_warn_undeclared syn keyword maximaFunc tr_warn_undefined_variable tr_windy ttyoff ueivects ufg ug syn keyword maximaFunc ultraspherical undiff uniteigenvectors unitvector unknown unorder syn keyword maximaFunc unsum untellrat untimer untrace uric uricci uriem uriemann syn keyword maximaFunc use_fast_arrays uvect values vect_cross vectorpotential syn keyword maximaFunc vectorsimp verb verbify verbose weyl with_stdout writefile syn keyword maximaFunc xgraph_curves xthru zerobern zeroequiv zeromatrix zeta zeta%pi syn match maximaOp "[\*\/\+\-\#\!\~\^\=\:\<\>\@]" " ---------------------- END LIST OF ALL FUNCTIONS (EXCEPT KEYWORDS) ---------------------- syn case match " Labels (supports maxima's goto) syn match maximaLabel "^\s*<[a-zA-Z_][a-zA-Z0-9%_]*>" " String and Character constants " Highlight special characters (those which have a backslash) differently syn match maximaSpecial contained "\\\d\d\d\|\\." syn region maximaString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=maximaSpecial syn match maximaCharacter "'[^\\]'" syn match maximaSpecialChar "'\\.'" " number with no fractional part or exponent syn match maximaNumber /\<\d\+\>/ " floating point number with integer and fractional parts and optional exponent syn match maximaFloat /\<\d\+\.\d*\([BbDdEeSs][-+]\=\d\+\)\=\>/ " floating point number with no integer part and optional exponent syn match maximaFloat /\<\.\d\+\([BbDdEeSs][-+]\=\d\+\)\=\>/ " floating point number with no fractional part and optional exponent syn match maximaFloat /\<\d\+[BbDdEeSs][-+]\=\d\+\>/ " Comments: " maxima supports /* ... */ (like C) syn keyword maximaTodo contained TODO Todo DEBUG syn region maximaCommentBlock start="/\*" end="\*/" contains=maximaString,maximaTodo,maximaCommentBlock " synchronizing syn sync match maximaSyncComment grouphere maximaCommentBlock "/*" syn sync match maximaSyncComment groupthere NONE "*/" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link maximaBraceError maximaError hi def link maximaCmd maximaStatement hi def link maximaCurlyError maximaError hi def link maximaFuncCmd maximaStatement hi def link maximaParenError maximaError " The default methods for highlighting. Can be overridden later hi def link maximaCharacter Character hi def link maximaComma Function hi def link maximaCommentBlock Comment hi def link maximaConditional Conditional hi def link maximaError Error hi def link maximaFunc Delimiter hi def link maximaOp Delimiter hi def link maximaLabel PreProc hi def link maximaNumber Number hi def link maximaFloat Float hi def link maximaRepeat Repeat hi def link maximaSpecial Type hi def link maximaSpecialChar SpecialChar hi def link maximaStatement Statement hi def link maximaString String hi def link maximaTodo Todo let b:current_syntax = "maxima" PK�������!�(u������vim80/syntax/gitcommit.vimnu�[��������" Vim syntax file " Language: git commit file " Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Filenames: *.git/COMMIT_EDITMSG " Last Change: 2016 Aug 29 if exists("b:current_syntax") finish endif syn case match syn sync minlines=50 if has("spell") syn spell toplevel endif syn include @gitcommitDiff syntax/diff.vim syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|#\)\@=/ fold contains=@gitcommitDiff syn match gitcommitFirstLine "\%^[^#].*" nextgroup=gitcommitBlank skipnl syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell syn match gitcommitOverflow ".*" contained contains=@Spell syn match gitcommitBlank "^[^#].*" contained contains=@Spell syn match gitcommitComment "^#.*" syn match gitcommitHead "^\%(# .*\n\)\+#$" contained transparent syn match gitcommitOnBranch "\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite syn match gitcommitOnBranch "\%(^# \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite syn match gitcommitBranch "[^ ']\+" contained syn match gitcommitNoBranch "\%(^# \)\@<=Not currently on any branch." contained containedin=gitcommitComment syn match gitcommitHeader "\%(^# \)\@<=.*:$" contained containedin=gitcommitComment syn region gitcommitAuthor matchgroup=gitCommitHeader start=/\%(^# \)\@<=\%(Author\|Committer\):/ end=/$/ keepend oneline contained containedin=gitcommitComment transparent syn match gitcommitNoChanges "\%(^# \)\@<=No changes$" contained containedin=gitcommitComment syn region gitcommitUntracked start=/^# Untracked files:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUntrackedFile fold syn match gitcommitUntrackedFile "\t\@<=.*" contained syn region gitcommitDiscarded start=/^# Change\%(s not staged for commit\|d but not updated\):/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitDiscardedType fold syn region gitcommitSelected start=/^# Changes to be committed:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitSelectedType fold syn region gitcommitUnmerged start=/^# Unmerged paths:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUnmergedType fold syn match gitcommitDiscardedType "\t\@<=[[:lower:]][^:]*[[:lower:]]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitDiscardedFile skipwhite syn match gitcommitSelectedType "\t\@<=[[:lower:]][^:]*[[:lower:]]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitSelectedFile skipwhite syn match gitcommitUnmergedType "\t\@<=[[:lower:]][^:]*[[:lower:]]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitUnmergedFile skipwhite syn match gitcommitDiscardedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitDiscardedArrow syn match gitcommitSelectedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow syn match gitcommitUnmergedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow syn match gitcommitDiscardedArrow " -> " contained nextgroup=gitcommitDiscardedFile syn match gitcommitSelectedArrow " -> " contained nextgroup=gitcommitSelectedFile syn match gitcommitUnmergedArrow " -> " contained nextgroup=gitcommitSelectedFile syn match gitcommitWarning "\%^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl syn match gitcommitWarning "^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl contained syn match gitcommitWarning "^\%(no changes added to commit\|nothing \%(added \)\=to commit\)\>.*\%$" hi def link gitcommitSummary Keyword hi def link gitcommitComment Comment hi def link gitcommitUntracked gitcommitComment hi def link gitcommitDiscarded gitcommitComment hi def link gitcommitSelected gitcommitComment hi def link gitcommitUnmerged gitcommitComment hi def link gitcommitOnBranch Comment hi def link gitcommitBranch Special hi def link gitcommitNoBranch gitCommitBranch hi def link gitcommitDiscardedType gitcommitType hi def link gitcommitSelectedType gitcommitType hi def link gitcommitUnmergedType gitcommitType hi def link gitcommitType Type hi def link gitcommitNoChanges gitcommitHeader hi def link gitcommitHeader PreProc hi def link gitcommitUntrackedFile gitcommitFile hi def link gitcommitDiscardedFile gitcommitFile hi def link gitcommitSelectedFile gitcommitFile hi def link gitcommitUnmergedFile gitcommitFile hi def link gitcommitFile Constant hi def link gitcommitDiscardedArrow gitcommitArrow hi def link gitcommitSelectedArrow gitcommitArrow hi def link gitcommitUnmergedArrow gitcommitArrow hi def link gitcommitArrow gitcommitComment "hi def link gitcommitOverflow Error hi def link gitcommitBlank Error let b:current_syntax = "gitcommit" PK�������!�O:������vim80/syntax/abel.vimnu�[��������" Vim syntax file " Language: ABEL " Maintainer: John Cook <johncook3@gmail.com> " Last Change: 2011 Dec 27 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " this language is oblivious to case syn case ignore " A bunch of keywords syn keyword abelHeader module title device options syn keyword abelSection declarations equations test_vectors end syn keyword abelDeclaration state truth_table state_diagram property syn keyword abelType pin node attribute constant macro library syn keyword abelTypeId com reg neg pos buffer dc reg_d reg_t contained syn keyword abelTypeId reg_sr reg_jk reg_g retain xor invert contained syn keyword abelStatement when then else if with endwith case endcase syn keyword abelStatement fuses expr trace " option to omit obsolete statements if exists("abel_obsolete_ok") syn keyword abelStatement enable flag in else syn keyword abelError enable flag in endif " directives syn match abelDirective "@alternate" syn match abelDirective "@standard" syn match abelDirective "@const" syn match abelDirective "@dcset" syn match abelDirective "@include" syn match abelDirective "@page" syn match abelDirective "@radix" syn match abelDirective "@repeat" syn match abelDirective "@irp" syn match abelDirective "@expr" syn match abelDirective "@if" syn match abelDirective "@ifb" syn match abelDirective "@ifnb" syn match abelDirective "@ifdef" syn match abelDirective "@ifndef" syn match abelDirective "@ifiden" syn match abelDirective "@ifniden" syn keyword abelTodo contained TODO XXX FIXME " wrap up type identifiers to differentiate them from normal strings syn region abelSpecifier start='istype' end=';' contains=abelTypeIdChar,abelTypeId,abelTypeIdEnd keepend syn match abelTypeIdChar "[,']" contained syn match abelTypeIdEnd ";" contained " string contstants and special characters within them syn match abelSpecial contained "\\['\\]" syn region abelString start=+'+ skip=+\\"+ end=+'+ contains=abelSpecial " valid integer number formats (decimal, binary, octal, hex) syn match abelNumber "\<[-+]\=[0-9]\+\>" syn match abelNumber "\^d[0-9]\+\>" syn match abelNumber "\^b[01]\+\>" syn match abelNumber "\^o[0-7]\+\>" syn match abelNumber "\^h[0-9a-f]\+\>" " special characters " (define these after abelOperator so ?= overrides ?) syn match abelSpecialChar "[\[\](){},;:?]" " operators syn match abelLogicalOperator "[!#&$]" syn match abelRangeOperator "\.\." syn match abelAlternateOperator "[/*+]" syn match abelAlternateOperator ":[+*]:" syn match abelArithmeticOperator "[-%]" syn match abelArithmeticOperator "<<" syn match abelArithmeticOperator ">>" syn match abelRelationalOperator "[<>!=]=" syn match abelRelationalOperator "[<>]" syn match abelAssignmentOperator "[:?]\==" syn match abelAssignmentOperator "?:=" syn match abelTruthTableOperator "->" " signal extensions syn match abelExtension "\.aclr\>" syn match abelExtension "\.aset\>" syn match abelExtension "\.clk\>" syn match abelExtension "\.clr\>" syn match abelExtension "\.com\>" syn match abelExtension "\.fb\>" syn match abelExtension "\.[co]e\>" syn match abelExtension "\.l[eh]\>" syn match abelExtension "\.fc\>" syn match abelExtension "\.pin\>" syn match abelExtension "\.set\>" syn match abelExtension "\.[djksrtq]\>" syn match abelExtension "\.pr\>" syn match abelExtension "\.re\>" syn match abelExtension "\.a[pr]\>" syn match abelExtension "\.s[pr]\>" " special constants syn match abelConstant "\.[ckudfpxz]\." syn match abelConstant "\.sv[2-9]\." " one-line comments syn region abelComment start=+"+ end=+"\|$+ contains=abelNumber,abelTodo " option to prevent C++ style comments if !exists("abel_cpp_comments_illegal") syn region abelComment start=+//+ end=+$+ contains=abelNumber,abelTodo endif syn sync minlines=1 " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default highlighting. hi def link abelHeader abelStatement hi def link abelSection abelStatement hi def link abelDeclaration abelStatement hi def link abelLogicalOperator abelOperator hi def link abelRangeOperator abelOperator hi def link abelAlternateOperator abelOperator hi def link abelArithmeticOperator abelOperator hi def link abelRelationalOperator abelOperator hi def link abelAssignmentOperator abelOperator hi def link abelTruthTableOperator abelOperator hi def link abelSpecifier abelStatement hi def link abelOperator abelStatement hi def link abelStatement Statement hi def link abelIdentifier Identifier hi def link abelTypeId abelType hi def link abelTypeIdChar abelType hi def link abelType Type hi def link abelNumber abelString hi def link abelString String hi def link abelConstant Constant hi def link abelComment Comment hi def link abelExtension abelSpecial hi def link abelSpecialChar abelSpecial hi def link abelTypeIdEnd abelSpecial hi def link abelSpecial Special hi def link abelDirective PreProc hi def link abelTodo Todo hi def link abelError Error let b:current_syntax = "abel" let &cpo = s:cpo_save unlet s:cpo_save " vim:ts=8 PK�������!�K-:�-:���vim80/syntax/php.vimnu�[��������" Vim syntax file " Language: php PHP 3/4/5/7 " Maintainer: Jason Woofenden <jason@jasonwoof.com> " Last Change: Jul 14, 2017 " URL: https://jasonwoof.com/gitweb/?p=vim-syntax.git;a=blob;f=php.vim;hb=HEAD " Former Maintainers: Peter Hodge <toomuchphp-vim@yahoo.com> " Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org> " " Note: If you are using a colour terminal with dark background, you will " probably find the 'elflord' colorscheme is much better for PHP's syntax " than the default colourscheme, because elflord's colours will better " highlight the break-points (Statements) in your code. " " Options: " Set to anything to enable: " php_sql_query SQL syntax highlighting inside strings " php_htmlInStrings HTML syntax highlighting inside strings " php_baselib highlighting baselib functions " php_asp_tags highlighting ASP-style short tags " php_parent_error_close highlighting parent error ] or ) " php_parent_error_open skipping an php end tag, if there exists " an open ( or [ without a closing one " php_oldStyle use old colorstyle " php_noShortTags don't sync <? ?> as php " Set to a specific value: " php_folding = 1 fold classes and functions " php_folding = 2 fold all { } regions " php_sync_method = x where x is an integer: " -1 sync by search ( default ) " >0 sync at least x lines backwards " 0 sync from start " Set to 0 to _disable_: (Added by Peter Hodge On June 9, 2006) " php_special_functions = 0 highlight functions with abnormal behaviour " php_alt_comparisons = 0 comparison operators in an alternate colour " php_alt_assignByReference = 0 '= &' in an alternate colour " " " Note: " Setting php_folding=1 will match a closing } by comparing the indent " before the class or function keyword with the indent of a matching }. " Setting php_folding=2 will match all of pairs of {,} ( see known " bugs ii ) " Known Bugs: " - setting php_parent_error_close on and php_parent_error_open off " has these two leaks: " i) A closing ) or ] inside a string match to the last open ( or [ " before the string, when the the closing ) or ] is on the same line " where the string started. In this case a following ) or ] after " the string would be highlighted as an error, what is incorrect. " ii) Same problem if you are setting php_folding = 2 with a closing " } inside an string on the first line of this string. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'php' endif runtime! syntax/html.vim unlet b:current_syntax " accept old options if !exists("php_sync_method") if exists("php_minlines") let php_sync_method=php_minlines else let php_sync_method=-1 endif endif if exists("php_parentError") && !exists("php_parent_error_open") && !exists("php_parent_error_close") let php_parent_error_close=1 let php_parent_error_open=1 endif syn cluster htmlPreproc add=phpRegion,phpRegionAsp,phpRegionSc syn include @sqlTop syntax/sql.vim syn sync clear unlet b:current_syntax syn cluster sqlTop remove=sqlString,sqlComment if exists( "php_sql_query") syn cluster phpAddStrings contains=@sqlTop endif if exists( "php_htmlInStrings") syn cluster phpAddStrings add=@htmlTop endif " make sure we can use \ at the begining of the line to do a continuation let s:cpo_save = &cpo set cpo&vim syn case match " Env Variables syn keyword phpEnvVar GATEWAY_INTERFACE SERVER_NAME SERVER_SOFTWARE SERVER_PROTOCOL REQUEST_METHOD QUERY_STRING DOCUMENT_ROOT HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CONNECTION HTTP_HOST HTTP_REFERER HTTP_USER_AGENT REMOTE_ADDR REMOTE_PORT SCRIPT_FILENAME SERVER_ADMIN SERVER_PORT SERVER_SIGNATURE PATH_TRANSLATED SCRIPT_NAME REQUEST_URI contained " Internal Variables syn keyword phpIntVar GLOBALS PHP_ERRMSG PHP_SELF HTTP_GET_VARS HTTP_POST_VARS HTTP_COOKIE_VARS HTTP_POST_FILES HTTP_ENV_VARS HTTP_SERVER_VARS HTTP_SESSION_VARS HTTP_RAW_POST_DATA HTTP_STATE_VARS _GET _POST _COOKIE _FILES _SERVER _ENV _SERVER _REQUEST _SESSION contained " Constants syn keyword phpCoreConstant PHP_VERSION PHP_OS DEFAULT_INCLUDE_PATH PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_BINDIR PHP_LIBDIR PHP_DATADIR PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END contained " Predefined constants " Generated by: curl -q http://php.net/manual/en/errorfunc.constants.php | grep -oP 'E_\w+' | sort -u syn keyword phpCoreConstant E_ALL E_COMPILE_ERROR E_COMPILE_WARNING E_CORE_ERROR E_CORE_WARNING E_DEPRECATED E_ERROR E_NOTICE E_PARSE E_RECOVERABLE_ERROR E_STRICT E_USER_DEPRECATED E_USER_ERROR E_USER_NOTICE E_USER_WARNING E_WARNING contained syn case ignore syn keyword phpConstant __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__ __DIR__ __NAMESPACE__ __TRAIT__ contained " Function and Methods ripped from php_manual_de.tar.gz Jan 2003 syn keyword phpFunctions apache_child_terminate apache_get_modules apache_get_version apache_getenv apache_lookup_uri apache_note apache_request_headers apache_response_headers apache_setenv ascii2ebcdic ebcdic2ascii getallheaders virtual contained syn keyword phpFunctions array_change_key_case array_chunk array_column array_combine array_count_values array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_diff array_fill_keys array_fill array_filter array_flip array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_product array_push array_rand array_reduce array_replace_recursive array_replace array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_uintersect_assoc array_uintersect_uassoc array_uintersect array_unique array_unshift array_values array_walk_recursive array_walk arsort asort count current each end in_array key_exists key krsort ksort natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort contained syn keyword phpFunctions aspell_check aspell_new aspell_suggest contained syn keyword phpFunctions bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub contained syn keyword phpFunctions bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite contained syn keyword phpFunctions cal_days_in_month cal_from_jd cal_info cal_to_jd easter_date easter_days frenchtojd gregoriantojd jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd juliantojd unixtojd contained syn keyword phpFunctions ccvs_add ccvs_auth ccvs_command ccvs_count ccvs_delete ccvs_done ccvs_init ccvs_lookup ccvs_new ccvs_report ccvs_return ccvs_reverse ccvs_sale ccvs_status ccvs_textvalue ccvs_void contained syn keyword phpFunctions call_user_method_array call_user_method class_exists get_class_methods get_class_vars get_class get_declared_classes get_object_vars get_parent_class is_a is_subclass_of method_exists contained syn keyword phpFunctions com VARIANT com_addref com_get com_invoke com_isenum com_load_typelib com_load com_propget com_propput com_propset com_release com_set contained syn keyword phpFunctions cpdf_add_annotation cpdf_add_outline cpdf_arc cpdf_begin_text cpdf_circle cpdf_clip cpdf_close cpdf_closepath_fill_stroke cpdf_closepath_stroke cpdf_closepath cpdf_continue_text cpdf_curveto cpdf_end_text cpdf_fill_stroke cpdf_fill cpdf_finalize_page cpdf_finalize cpdf_global_set_document_limits cpdf_import_jpeg cpdf_lineto cpdf_moveto cpdf_newpath cpdf_open cpdf_output_buffer cpdf_page_init cpdf_place_inline_image cpdf_rect cpdf_restore cpdf_rlineto cpdf_rmoveto cpdf_rotate_text cpdf_rotate cpdf_save_to_file cpdf_save cpdf_scale cpdf_set_action_url cpdf_set_char_spacing cpdf_set_creator cpdf_set_current_page cpdf_set_font_directories cpdf_set_font_map_file cpdf_set_font cpdf_set_horiz_scaling cpdf_set_keywords cpdf_set_leading cpdf_set_page_animation cpdf_set_subject cpdf_set_text_matrix cpdf_set_text_pos cpdf_set_text_rendering cpdf_set_text_rise cpdf_set_title cpdf_set_viewer_preferences cpdf_set_word_spacing cpdf_setdash cpdf_setflat cpdf_setgray_fill cpdf_setgray_stroke cpdf_setgray cpdf_setlinecap cpdf_setlinejoin cpdf_setlinewidth cpdf_setmiterlimit cpdf_setrgbcolor_fill cpdf_setrgbcolor_stroke cpdf_setrgbcolor cpdf_show_xy cpdf_show cpdf_stringwidth cpdf_stroke cpdf_text cpdf_translate contained syn keyword phpFunctions crack_check crack_closedict crack_getlastmessage crack_opendict contained syn keyword phpFunctions ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph ctype_lower ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit contained syn keyword phpFunctions curl_close curl_errno curl_error curl_exec curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_setopt curl_version contained syn keyword phpFunctions cybercash_base64_decode cybercash_base64_encode cybercash_decr cybercash_encr contained syn keyword phpFunctions cyrus_authenticate cyrus_bind cyrus_close cyrus_connect cyrus_query cyrus_unbind contained syn keyword phpFunctions checkdate date getdate gettimeofday gmdate gmmktime gmstrftime localtime microtime mktime strftime strtotime time contained syn keyword phpFunctions dba_close dba_delete dba_exists dba_fetch dba_firstkey dba_handlers dba_insert dba_key_split dba_list dba_nextkey dba_open dba_optimize dba_popen dba_replace dba_sync contained syn keyword phpFunctions dbase_add_record dbase_close dbase_create dbase_delete_record dbase_get_header_info dbase_get_record_with_names dbase_get_record dbase_numfields dbase_numrecords dbase_open dbase_pack dbase_replace_record contained syn keyword phpFunctions dblist dbmclose dbmdelete dbmexists dbmfetch dbmfirstkey dbminsert dbmnextkey dbmopen dbmreplace contained syn keyword phpFunctions dbplus_add dbplus_aql dbplus_chdir dbplus_close dbplus_curr dbplus_errcode dbplus_errno dbplus_find dbplus_first dbplus_flush dbplus_freealllocks dbplus_freelock dbplus_freerlocks dbplus_getlock dbplus_getunique dbplus_info dbplus_last dbplus_lockrel dbplus_next dbplus_open dbplus_prev dbplus_rchperm dbplus_rcreate dbplus_rcrtexact dbplus_rcrtlike dbplus_resolve dbplus_restorepos dbplus_rkeys dbplus_ropen dbplus_rquery dbplus_rrename dbplus_rsecindex dbplus_runlink dbplus_rzap dbplus_savepos dbplus_setindex dbplus_setindexbynumber dbplus_sql dbplus_tcl dbplus_tremove dbplus_undo dbplus_undoprepare dbplus_unlockrel dbplus_unselect dbplus_update dbplus_xlockrel dbplus_xunlockrel contained syn keyword phpFunctions dbx_close dbx_compare dbx_connect dbx_error dbx_escape_string dbx_fetch_row dbx_query dbx_sort contained syn keyword phpFunctions dio_close dio_fcntl dio_open dio_read dio_seek dio_stat dio_tcsetattr dio_truncate dio_write contained syn keyword phpFunctions chdir chroot dir closedir getcwd opendir readdir rewinddir scandir contained syn keyword phpFunctions domxml_new_doc domxml_open_file domxml_open_mem domxml_version domxml_xmltree domxml_xslt_stylesheet_doc domxml_xslt_stylesheet_file domxml_xslt_stylesheet xpath_eval_expression xpath_eval xpath_new_context xptr_eval xptr_new_context contained syn keyword phpMethods name specified value create_attribute create_cdata_section create_comment create_element_ns create_element create_entity_reference create_processing_instruction create_text_node doctype document_element dump_file dump_mem get_element_by_id get_elements_by_tagname html_dump_mem xinclude entities internal_subset name notations public_id system_id get_attribute_node get_attribute get_elements_by_tagname has_attribute remove_attribute set_attribute tagname add_namespace append_child append_sibling attributes child_nodes clone_node dump_node first_child get_content has_attributes has_child_nodes insert_before is_blank_node last_child next_sibling node_name node_type node_value owner_document parent_node prefix previous_sibling remove_child replace_child replace_node set_content set_name set_namespace unlink_node data target process result_dump_file result_dump_mem contained syn keyword phpFunctions dotnet_load contained syn keyword phpFunctions debug_backtrace debug_print_backtrace error_log error_reporting restore_error_handler set_error_handler trigger_error user_error contained syn keyword phpFunctions escapeshellarg escapeshellcmd exec passthru proc_close proc_get_status proc_nice proc_open proc_terminate shell_exec system contained syn keyword phpFunctions fam_cancel_monitor fam_close fam_monitor_collection fam_monitor_directory fam_monitor_file fam_next_event fam_open fam_pending fam_resume_monitor fam_suspend_monitor contained syn keyword phpFunctions fbsql_affected_rows fbsql_autocommit fbsql_change_user fbsql_close fbsql_commit fbsql_connect fbsql_create_blob fbsql_create_clob fbsql_create_db fbsql_data_seek fbsql_database_password fbsql_database fbsql_db_query fbsql_db_status fbsql_drop_db fbsql_errno fbsql_error fbsql_fetch_array fbsql_fetch_assoc fbsql_fetch_field fbsql_fetch_lengths fbsql_fetch_object fbsql_fetch_row fbsql_field_flags fbsql_field_len fbsql_field_name fbsql_field_seek fbsql_field_table fbsql_field_type fbsql_free_result fbsql_get_autostart_info fbsql_hostname fbsql_insert_id fbsql_list_dbs fbsql_list_fields fbsql_list_tables fbsql_next_result fbsql_num_fields fbsql_num_rows fbsql_password fbsql_pconnect fbsql_query fbsql_read_blob fbsql_read_clob fbsql_result fbsql_rollback fbsql_select_db fbsql_set_lob_mode fbsql_set_transaction fbsql_start_db fbsql_stop_db fbsql_tablename fbsql_username fbsql_warnings contained syn keyword phpFunctions fdf_add_doc_javascript fdf_add_template fdf_close fdf_create fdf_enum_values fdf_errno fdf_error fdf_get_ap fdf_get_attachment fdf_get_encoding fdf_get_file fdf_get_flags fdf_get_opt fdf_get_status fdf_get_value fdf_get_version fdf_header fdf_next_field_name fdf_open_string fdf_open fdf_remove_item fdf_save_string fdf_save fdf_set_ap fdf_set_encoding fdf_set_file fdf_set_flags fdf_set_javascript_action fdf_set_opt fdf_set_status fdf_set_submit_form_action fdf_set_target_frame fdf_set_value fdf_set_version contained syn keyword phpFunctions filepro_fieldcount filepro_fieldname filepro_fieldtype filepro_fieldwidth filepro_retrieve filepro_rowcount filepro contained syn keyword phpFunctions basename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable link linkinfo lstat mkdir move_uploaded_file parse_ini_file pathinfo pclose popen readfile readlink realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink contained syn keyword phpFunctions fribidi_log2vis contained syn keyword phpFunctions ftp_alloc ftp_cdup ftp_chdir ftp_chmod ftp_close ftp_connect ftp_delete ftp_exec ftp_fget ftp_fput ftp_get_option ftp_get ftp_login ftp_mdtm ftp_mkdir ftp_nb_continue ftp_nb_fget ftp_nb_fput ftp_nb_get ftp_nb_put ftp_nlist ftp_pasv ftp_put ftp_pwd ftp_quit ftp_raw ftp_rawlist ftp_rename ftp_rmdir ftp_set_option ftp_site ftp_size ftp_ssl_connect ftp_systype contained syn keyword phpFunctions call_user_func_array call_user_func create_function func_get_arg func_get_args func_num_args function_exists get_defined_functions register_shutdown_function register_tick_function unregister_tick_function contained syn keyword phpFunctions bind_textdomain_codeset bindtextdomain dcgettext dcngettext dgettext dngettext gettext ngettext textdomain contained syn keyword phpFunctions gmp_abs gmp_add gmp_and gmp_clrbit gmp_cmp gmp_com gmp_div_q gmp_div_qr gmp_div_r gmp_div gmp_divexact gmp_fact gmp_gcd gmp_gcdext gmp_hamdist gmp_init gmp_intval gmp_invert gmp_jacobi gmp_legendre gmp_mod gmp_mul gmp_neg gmp_or gmp_perfect_square gmp_popcount gmp_pow gmp_powm gmp_prob_prime gmp_random gmp_scan0 gmp_scan1 gmp_setbit gmp_sign gmp_sqrt gmp_sqrtrem gmp_sqrtrm gmp_strval gmp_sub gmp_xor contained syn keyword phpFunctions header headers_list headers_sent setcookie contained syn keyword phpFunctions hw_api_attribute hwapi_hgcsp hw_api_content hw_api_object contained syn keyword phpMethods key langdepvalue value values checkin checkout children mimetype read content copy dbstat dcstat dstanchors dstofsrcanchors count reason find ftstat hwstat identify info insert insertanchor insertcollection insertdocument link lock move assign attreditable count insert remove title value object objectbyanchor parents description type remove replace setcommitedversion srcanchors srcsofdst unlock user userlist contained syn keyword phpFunctions hw_Array2Objrec hw_changeobject hw_Children hw_ChildrenObj hw_Close hw_Connect hw_connection_info hw_cp hw_Deleteobject hw_DocByAnchor hw_DocByAnchorObj hw_Document_Attributes hw_Document_BodyTag hw_Document_Content hw_Document_SetContent hw_Document_Size hw_dummy hw_EditText hw_Error hw_ErrorMsg hw_Free_Document hw_GetAnchors hw_GetAnchorsObj hw_GetAndLock hw_GetChildColl hw_GetChildCollObj hw_GetChildDocColl hw_GetChildDocCollObj hw_GetObject hw_GetObjectByQuery hw_GetObjectByQueryColl hw_GetObjectByQueryCollObj hw_GetObjectByQueryObj hw_GetParents hw_GetParentsObj hw_getrellink hw_GetRemote hw_getremotechildren hw_GetSrcByDestObj hw_GetText hw_getusername hw_Identify hw_InCollections hw_Info hw_InsColl hw_InsDoc hw_insertanchors hw_InsertDocument hw_InsertObject hw_mapid hw_Modifyobject hw_mv hw_New_Document hw_objrec2array hw_Output_Document hw_pConnect hw_PipeDocument hw_Root hw_setlinkroot hw_stat hw_Unlock hw_Who contained syn keyword phpFunctions ibase_add_user ibase_affected_rows ibase_blob_add ibase_blob_cancel ibase_blob_close ibase_blob_create ibase_blob_echo ibase_blob_get ibase_blob_import ibase_blob_info ibase_blob_open ibase_close ibase_commit_ret ibase_commit ibase_connect ibase_delete_user ibase_drop_db ibase_errcode ibase_errmsg ibase_execute ibase_fetch_assoc ibase_fetch_object ibase_fetch_row ibase_field_info ibase_free_event_handler ibase_free_query ibase_free_result ibase_gen_id ibase_modify_user ibase_name_result ibase_num_fields ibase_num_params ibase_param_info ibase_pconnect ibase_prepare ibase_query ibase_rollback_ret ibase_rollback ibase_set_event_handler ibase_timefmt ibase_trans ibase_wait_event contained syn keyword phpFunctions iconv_get_encoding iconv_mime_decode_headers iconv_mime_decode iconv_mime_encode iconv_set_encoding iconv_strlen iconv_strpos iconv_strrpos iconv_substr iconv ob_iconv_handler contained syn keyword phpFunctions ifx_affected_rows ifx_blobinfile_mode ifx_byteasvarchar ifx_close ifx_connect ifx_copy_blob ifx_create_blob ifx_create_char ifx_do ifx_error ifx_errormsg ifx_fetch_row ifx_fieldproperties ifx_fieldtypes ifx_free_blob ifx_free_char ifx_free_result ifx_get_blob ifx_get_char ifx_getsqlca ifx_htmltbl_result ifx_nullformat ifx_num_fields ifx_num_rows ifx_pconnect ifx_prepare ifx_query ifx_textasvarchar ifx_update_blob ifx_update_char ifxus_close_slob ifxus_create_slob ifxus_free_slob ifxus_open_slob ifxus_read_slob ifxus_seek_slob ifxus_tell_slob ifxus_write_slob contained syn keyword phpFunctions exif_imagetype exif_read_data exif_thumbnail gd_info getimagesize image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imageinterlace imageistruecolor imagejpeg imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepscopyfont imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp iptcembed iptcparse jpeg2wbmp png2wbmp read_exif_data contained syn keyword phpFunctions imap_8bit imap_alerts imap_append imap_base64 imap_binary imap_body imap_bodystruct imap_check imap_clearflag_full imap_close imap_createmailbox imap_delete imap_deletemailbox imap_errors imap_expunge imap_fetch_overview imap_fetchbody imap_fetchheader imap_fetchstructure imap_get_quota imap_get_quotaroot imap_getacl imap_getmailboxes imap_getsubscribed imap_header imap_headerinfo imap_headers imap_last_error imap_list imap_listmailbox imap_listscan imap_listsubscribed imap_lsub imap_mail_compose imap_mail_copy imap_mail_move imap_mail imap_mailboxmsginfo imap_mime_header_decode imap_msgno imap_num_msg imap_num_recent imap_open imap_ping imap_qprint imap_renamemailbox imap_reopen imap_rfc822_parse_adrlist imap_rfc822_parse_headers imap_rfc822_write_address imap_scanmailbox imap_search imap_set_quota imap_setacl imap_setflag_full imap_sort imap_status imap_subscribe imap_thread imap_timeout imap_uid imap_undelete imap_unsubscribe imap_utf7_decode imap_utf7_encode imap_utf8 contained syn keyword phpFunctions assert_options assert dl extension_loaded get_cfg_var get_current_user get_defined_constants get_extension_funcs get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime get_required_files getenv getlastmod getmygid getmyinode getmypid getmyuid getopt getrusage ini_alter ini_get_all ini_get ini_restore ini_set main memory_get_usage php_ini_scanned_files php_logo_guid php_sapi_name php_uname phpcredits phpinfo phpversion putenv restore_include_path set_include_path set_magic_quotes_runtime set_time_limit version_compare zend_logo_guid zend_version contained syn keyword phpFunctions ingres_autocommit ingres_close ingres_commit ingres_connect ingres_fetch_array ingres_fetch_object ingres_fetch_row ingres_field_length ingres_field_name ingres_field_nullable ingres_field_precision ingres_field_scale ingres_field_type ingres_num_fields ingres_num_rows ingres_pconnect ingres_query ingres_rollback contained syn keyword phpFunctions ircg_channel_mode ircg_disconnect ircg_fetch_error_msg ircg_get_username ircg_html_encode ircg_ignore_add ircg_ignore_del ircg_is_conn_alive ircg_join ircg_kick ircg_lookup_format_messages ircg_msg ircg_nick ircg_nickname_escape ircg_nickname_unescape ircg_notice ircg_part ircg_pconnect ircg_register_format_messages ircg_set_current ircg_set_file ircg_set_on_die ircg_topic ircg_whois contained syn keyword phpFunctions java_last_exception_clear java_last_exception_get contained syn keyword phpFunctions json_decode json_encode json_last_error contained syn keyword phpFunctions ldap_8859_to_t61 ldap_add ldap_bind ldap_close ldap_compare ldap_connect ldap_count_entries ldap_delete ldap_dn2ufn ldap_err2str ldap_errno ldap_error ldap_explode_dn ldap_first_attribute ldap_first_entry ldap_first_reference ldap_free_result ldap_get_attributes ldap_get_dn ldap_get_entries ldap_get_option ldap_get_values_len ldap_get_values ldap_list ldap_mod_add ldap_mod_del ldap_mod_replace ldap_modify ldap_next_attribute ldap_next_entry ldap_next_reference ldap_parse_reference ldap_parse_result ldap_read ldap_rename ldap_search ldap_set_option ldap_set_rebind_proc ldap_sort ldap_start_tls ldap_t61_to_8859 ldap_unbind contained syn keyword phpFunctions lzf_compress lzf_decompress lzf_optimized_for contained syn keyword phpFunctions ezmlm_hash mail contained syn keyword phpFunctions mailparse_determine_best_xfer_encoding mailparse_msg_create mailparse_msg_extract_part_file mailparse_msg_extract_part mailparse_msg_free mailparse_msg_get_part_data mailparse_msg_get_part mailparse_msg_get_structure mailparse_msg_parse_file mailparse_msg_parse mailparse_rfc822_parse_addresses mailparse_stream_encode mailparse_uudecode_all contained syn keyword phpFunctions abs acos acosh asin asinh atan2 atan atanh base_convert bindec ceil cos cosh decbin dechex decoct deg2rad exp expm1 floor fmod getrandmax hexdec hypot is_finite is_infinite is_nan lcg_value log10 log1p log max min mt_getrandmax mt_rand mt_srand octdec pi pow rad2deg rand round sin sinh sqrt srand tan tanh contained syn keyword phpFunctions mb_convert_case mb_convert_encoding mb_convert_kana mb_convert_variables mb_decode_mimeheader mb_decode_numericentity mb_detect_encoding mb_detect_order mb_encode_mimeheader mb_encode_numericentity mb_ereg_match mb_ereg_replace mb_ereg_search_getpos mb_ereg_search_getregs mb_ereg_search_init mb_ereg_search_pos mb_ereg_search_regs mb_ereg_search_setpos mb_ereg_search mb_ereg mb_eregi_replace mb_eregi mb_get_info mb_http_input mb_http_output mb_internal_encoding mb_language mb_output_handler mb_parse_str mb_preferred_mime_name mb_regex_encoding mb_regex_set_options mb_send_mail mb_split mb_strcut mb_strimwidth mb_strlen mb_strpos mb_strrpos mb_strtolower mb_strtoupper mb_strwidth mb_substitute_character mb_substr_count mb_substr contained syn keyword phpFunctions mcal_append_event mcal_close mcal_create_calendar mcal_date_compare mcal_date_valid mcal_day_of_week mcal_day_of_year mcal_days_in_month mcal_delete_calendar mcal_delete_event mcal_event_add_attribute mcal_event_init mcal_event_set_alarm mcal_event_set_category mcal_event_set_class mcal_event_set_description mcal_event_set_end mcal_event_set_recur_daily mcal_event_set_recur_monthly_mday mcal_event_set_recur_monthly_wday mcal_event_set_recur_none mcal_event_set_recur_weekly mcal_event_set_recur_yearly mcal_event_set_start mcal_event_set_title mcal_expunge mcal_fetch_current_stream_event mcal_fetch_event mcal_is_leap_year mcal_list_alarms mcal_list_events mcal_next_recurrence mcal_open mcal_popen mcal_rename_calendar mcal_reopen mcal_snooze mcal_store_event mcal_time_valid mcal_week_of_year contained syn keyword phpFunctions mcrypt_cbc mcrypt_cfb mcrypt_create_iv mcrypt_decrypt mcrypt_ecb mcrypt_enc_get_algorithms_name mcrypt_enc_get_block_size mcrypt_enc_get_iv_size mcrypt_enc_get_key_size mcrypt_enc_get_modes_name mcrypt_enc_get_supported_key_sizes mcrypt_enc_is_block_algorithm_mode mcrypt_enc_is_block_algorithm mcrypt_enc_is_block_mode mcrypt_enc_self_test mcrypt_encrypt mcrypt_generic_deinit mcrypt_generic_end mcrypt_generic_init mcrypt_generic mcrypt_get_block_size mcrypt_get_cipher_name mcrypt_get_iv_size mcrypt_get_key_size mcrypt_list_algorithms mcrypt_list_modes mcrypt_module_close mcrypt_module_get_algo_block_size mcrypt_module_get_algo_key_size mcrypt_module_get_supported_key_sizes mcrypt_module_is_block_algorithm_mode mcrypt_module_is_block_algorithm mcrypt_module_is_block_mode mcrypt_module_open mcrypt_module_self_test mcrypt_ofb mdecrypt_generic contained syn keyword phpFunctions mcve_adduser mcve_adduserarg mcve_bt mcve_checkstatus mcve_chkpwd mcve_chngpwd mcve_completeauthorizations mcve_connect mcve_connectionerror mcve_deleteresponse mcve_deletetrans mcve_deleteusersetup mcve_deluser mcve_destroyconn mcve_destroyengine mcve_disableuser mcve_edituser mcve_enableuser mcve_force mcve_getcell mcve_getcellbynum mcve_getcommadelimited mcve_getheader mcve_getuserarg mcve_getuserparam mcve_gft mcve_gl mcve_gut mcve_initconn mcve_initengine mcve_initusersetup mcve_iscommadelimited mcve_liststats mcve_listusers mcve_maxconntimeout mcve_monitor mcve_numcolumns mcve_numrows mcve_override mcve_parsecommadelimited mcve_ping mcve_preauth mcve_preauthcompletion mcve_qc mcve_responseparam mcve_return mcve_returncode mcve_returnstatus mcve_sale mcve_setblocking mcve_setdropfile mcve_setip mcve_setssl_files mcve_setssl mcve_settimeout mcve_settle mcve_text_avs mcve_text_code mcve_text_cv mcve_transactionauth mcve_transactionavs mcve_transactionbatch mcve_transactioncv mcve_transactionid mcve_transactionitem mcve_transactionssent mcve_transactiontext mcve_transinqueue mcve_transnew mcve_transparam mcve_transsend mcve_ub mcve_uwait mcve_verifyconnection mcve_verifysslcert mcve_void contained syn keyword phpFunctions mhash_count mhash_get_block_size mhash_get_hash_name mhash_keygen_s2k mhash contained syn keyword phpFunctions mime_content_type contained syn keyword phpFunctions ming_setcubicthreshold ming_setscale ming_useswfversion SWFAction SWFBitmap swfbutton_keypress SWFbutton SWFDisplayItem SWFFill SWFFont SWFGradient SWFMorph SWFMovie SWFShape SWFSprite SWFText SWFTextField contained syn keyword phpMethods getHeight getWidth addAction addShape setAction setdown setHit setOver setUp addColor move moveTo multColor remove Rotate rotateTo scale scaleTo setDepth setName setRatio skewX skewXTo skewY skewYTo moveTo rotateTo scaleTo skewXTo skewYTo getwidth addEntry getshape1 getshape2 add nextframe output remove save setbackground setdimension setframes setrate streammp3 addFill drawCurve drawCurveTo drawLine drawLineTo movePen movePenTo setLeftFill setLine setRightFill add nextframe remove setframes addString getWidth moveTo setColor setFont setHeight setSpacing addstring align setbounds setcolor setFont setHeight setindentation setLeftMargin setLineSpacing setMargins setname setrightMargin contained syn keyword phpFunctions connection_aborted connection_status connection_timeout constant define defined die eval exit get_browser highlight_file highlight_string ignore_user_abort pack show_source sleep uniqid unpack usleep contained syn keyword phpFunctions udm_add_search_limit udm_alloc_agent udm_api_version udm_cat_list udm_cat_path udm_check_charset udm_check_stored udm_clear_search_limits udm_close_stored udm_crc32 udm_errno udm_error udm_find udm_free_agent udm_free_ispell_data udm_free_res udm_get_doc_count udm_get_res_field udm_get_res_param udm_load_ispell_data udm_open_stored udm_set_agent_param contained syn keyword phpFunctions msession_connect msession_count msession_create msession_destroy msession_disconnect msession_find msession_get_array msession_get msession_getdata msession_inc msession_list msession_listvar msession_lock msession_plugin msession_randstr msession_set_array msession_set msession_setdata msession_timeout msession_uniq msession_unlock contained syn keyword phpFunctions msql_affected_rows msql_close msql_connect msql_create_db msql_createdb msql_data_seek msql_dbname msql_drop_db msql_dropdb msql_error msql_fetch_array msql_fetch_field msql_fetch_object msql_fetch_row msql_field_seek msql_fieldflags msql_fieldlen msql_fieldname msql_fieldtable msql_fieldtype msql_free_result msql_freeresult msql_list_dbs msql_list_fields msql_list_tables msql_listdbs msql_listfields msql_listtables msql_num_fields msql_num_rows msql_numfields msql_numrows msql_pconnect msql_query msql_regcase msql_result msql_select_db msql_selectdb msql_tablename msql contained syn keyword phpFunctions mssql_bind mssql_close mssql_connect mssql_data_seek mssql_execute mssql_fetch_array mssql_fetch_assoc mssql_fetch_batch mssql_fetch_field mssql_fetch_object mssql_fetch_row mssql_field_length mssql_field_name mssql_field_seek mssql_field_type mssql_free_result mssql_free_statement mssql_get_last_message mssql_guid_string mssql_init mssql_min_error_severity mssql_min_message_severity mssql_next_result mssql_num_fields mssql_num_rows mssql_pconnect mssql_query mssql_result mssql_rows_affected mssql_select_db contained syn keyword phpFunctions muscat_close muscat_get muscat_give muscat_setup_net muscat_setup contained syn keyword phpFunctions mysql_affected_rows mysql_change_user mysql_client_encoding mysql_close mysql_connect mysql_create_db mysql_data_seek mysql_db_name mysql_db_query mysql_drop_db mysql_errno mysql_error mysql_escape_string mysql_fetch_array mysql_fetch_assoc mysql_fetch_field mysql_fetch_lengths mysql_fetch_object mysql_fetch_row mysql_field_flags mysql_field_len mysql_field_name mysql_field_seek mysql_field_table mysql_field_type mysql_free_result mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql_insert_id mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables mysql_num_fields mysql_num_rows mysql_pconnect mysql_ping mysql_query mysql_real_escape_string mysql_result mysql_select_db mysql_stat mysql_tablename mysql_thread_id mysql_unbuffered_query contained syn keyword phpFunctions mysqli_affected_rows mysqli_autocommit mysqli_bind_param mysqli_bind_result mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect mysqli_data_seek mysqli_debug mysqli_disable_reads_from_master mysqli_disable_rpl_parse mysqli_dump_debug_info mysqli_enable_reads_from_master mysqli_enable_rpl_parse mysqli_errno mysqli_error mysqli_execute mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_fetch mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_client_info mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_master_query mysqli_num_fields mysqli_num_rows mysqli_options mysqli_param_count mysqli_ping mysqli_prepare_result mysqli_prepare mysqli_profiler mysqli_query mysqli_read_query_result mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reload mysqli_rollback mysqli_rpl_parse_enabled mysqli_rpl_probe mysqli_rpl_query_type mysqli_select_db mysqli_send_long_data mysqli_send_query mysqli_slave_query mysqli_ssl_set mysqli_stat mysqli_stmt_affected_rows mysqli_stmt_close mysqli_stmt_errno mysqli_stmt_error mysqli_stmt_store_result mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count contained syn keyword phpFunctions ncurses_addch ncurses_addchnstr ncurses_addchstr ncurses_addnstr ncurses_addstr ncurses_assume_default_colors ncurses_attroff ncurses_attron ncurses_attrset ncurses_baudrate ncurses_beep ncurses_bkgd ncurses_bkgdset ncurses_border ncurses_bottom_panel ncurses_can_change_color ncurses_cbreak ncurses_clear ncurses_clrtobot ncurses_clrtoeol ncurses_color_content ncurses_color_set ncurses_curs_set ncurses_def_prog_mode ncurses_def_shell_mode ncurses_define_key ncurses_del_panel ncurses_delay_output ncurses_delch ncurses_deleteln ncurses_delwin ncurses_doupdate ncurses_echo ncurses_echochar ncurses_end ncurses_erase ncurses_erasechar ncurses_filter ncurses_flash ncurses_flushinp ncurses_getch ncurses_getmaxyx ncurses_getmouse ncurses_getyx ncurses_halfdelay ncurses_has_colors ncurses_has_ic ncurses_has_il ncurses_has_key ncurses_hide_panel ncurses_hline ncurses_inch ncurses_init_color ncurses_init_pair ncurses_init ncurses_insch ncurses_insdelln ncurses_insertln ncurses_insstr ncurses_instr ncurses_isendwin ncurses_keyok ncurses_keypad ncurses_killchar ncurses_longname ncurses_meta ncurses_mouse_trafo ncurses_mouseinterval ncurses_mousemask ncurses_move_panel ncurses_move ncurses_mvaddch ncurses_mvaddchnstr ncurses_mvaddchstr ncurses_mvaddnstr ncurses_mvaddstr ncurses_mvcur ncurses_mvdelch ncurses_mvgetch ncurses_mvhline ncurses_mvinch ncurses_mvvline ncurses_mvwaddstr ncurses_napms ncurses_new_panel ncurses_newpad ncurses_newwin ncurses_nl ncurses_nocbreak ncurses_noecho ncurses_nonl ncurses_noqiflush ncurses_noraw ncurses_pair_content ncurses_panel_above ncurses_panel_below ncurses_panel_window ncurses_pnoutrefresh ncurses_prefresh ncurses_putp ncurses_qiflush ncurses_raw ncurses_refresh ncurses_replace_panel ncurses_reset_prog_mode ncurses_reset_shell_mode ncurses_resetty ncurses_savetty ncurses_scr_dump ncurses_scr_init ncurses_scr_restore ncurses_scr_set ncurses_scrl ncurses_show_panel ncurses_slk_attr ncurses_slk_attroff ncurses_slk_attron ncurses_slk_attrset ncurses_slk_clear ncurses_slk_color ncurses_slk_init ncurses_slk_noutrefresh ncurses_slk_refresh ncurses_slk_restore ncurses_slk_set ncurses_slk_touch ncurses_standend ncurses_standout ncurses_start_color ncurses_termattrs ncurses_termname ncurses_timeout ncurses_top_panel ncurses_typeahead ncurses_ungetch ncurses_ungetmouse ncurses_update_panels ncurses_use_default_colors ncurses_use_env ncurses_use_extended_names ncurses_vidattr ncurses_vline ncurses_waddch ncurses_waddstr ncurses_wattroff ncurses_wattron ncurses_wattrset ncurses_wborder ncurses_wclear ncurses_wcolor_set ncurses_werase ncurses_wgetch ncurses_whline ncurses_wmouse_trafo ncurses_wmove ncurses_wnoutrefresh ncurses_wrefresh ncurses_wstandend ncurses_wstandout ncurses_wvline contained syn keyword phpFunctions checkdnsrr closelog debugger_off debugger_on define_syslog_variables dns_check_record dns_get_mx dns_get_record fsockopen gethostbyaddr gethostbyname gethostbynamel getmxrr getprotobyname getprotobynumber getservbyname getservbyport ip2long long2ip openlog pfsockopen socket_get_status socket_set_blocking socket_set_timeout syslog contained syn keyword phpFunctions yp_all yp_cat yp_err_string yp_errno yp_first yp_get_default_domain yp_master yp_match yp_next yp_order contained syn keyword phpFunctions notes_body notes_copy_db notes_create_db notes_create_note notes_drop_db notes_find_note notes_header_info notes_list_msgs notes_mark_read notes_mark_unread notes_nav_create notes_search notes_unread notes_version contained syn keyword phpFunctions nsapi_request_headers nsapi_response_headers nsapi_virtual contained syn keyword phpFunctions aggregate_info aggregate_methods_by_list aggregate_methods_by_regexp aggregate_methods aggregate_properties_by_list aggregate_properties_by_regexp aggregate_properties aggregate aggregation_info deaggregate contained syn keyword phpFunctions ocibindbyname ocicancel ocicloselob ocicollappend ocicollassign ocicollassignelem ocicollgetelem ocicollmax ocicollsize ocicolltrim ocicolumnisnull ocicolumnname ocicolumnprecision ocicolumnscale ocicolumnsize ocicolumntype ocicolumntyperaw ocicommit ocidefinebyname ocierror ociexecute ocifetch ocifetchinto ocifetchstatement ocifreecollection ocifreecursor ocifreedesc ocifreestatement ociinternaldebug ociloadlob ocilogoff ocilogon ocinewcollection ocinewcursor ocinewdescriptor ocinlogon ocinumcols ociparse ociplogon ociresult ocirollback ocirowcount ocisavelob ocisavelobfile ociserverversion ocisetprefetch ocistatementtype ociwritelobtofile ociwritetemporarylob contained syn keyword phpFunctions odbc_autocommit odbc_binmode odbc_close_all odbc_close odbc_columnprivileges odbc_columns odbc_commit odbc_connect odbc_cursor odbc_data_source odbc_do odbc_error odbc_errormsg odbc_exec odbc_execute odbc_fetch_array odbc_fetch_into odbc_fetch_object odbc_fetch_row odbc_field_len odbc_field_name odbc_field_num odbc_field_precision odbc_field_scale odbc_field_type odbc_foreignkeys odbc_free_result odbc_gettypeinfo odbc_longreadlen odbc_next_result odbc_num_fields odbc_num_rows odbc_pconnect odbc_prepare odbc_primarykeys odbc_procedurecolumns odbc_procedures odbc_result_all odbc_result odbc_rollback odbc_setoption odbc_specialcolumns odbc_statistics odbc_tableprivileges odbc_tables contained syn keyword phpFunctions openssl_cipher_iv_length openssl_csr_export_to_file openssl_csr_export openssl_csr_get_public_key openssl_csr_get_subject openssl_csr_new openssl_csr_sign openssl_decrypt openssl_dh_compute_key openssl_digest openssl_encrypt openssl_error_string openssl_free_key openssl_get_cert_locations openssl_get_cipher_methods openssl_get_md_methods openssl_get_privatekey openssl_get_publickey openssl_open openssl_pbkdf2 openssl_pkcs12_export_to_file openssl_pkcs12_export openssl_pkcs12_read openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_free openssl_pkey_get_details openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_random_pseudo_bytes openssl_seal openssl_sign openssl_spki_export_challenge openssl_spki_export openssl_spki_new openssl_spki_verify openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_fingerprint openssl_x509_free openssl_x509_parse openssl_x509_read contained syn keyword phpFunctions ora_bind ora_close ora_columnname ora_columnsize ora_columntype ora_commit ora_commitoff ora_commiton ora_do ora_error ora_errorcode ora_exec ora_fetch_into ora_fetch ora_getcolumn ora_logoff ora_logon ora_numcols ora_numrows ora_open ora_parse ora_plogon ora_rollback contained syn keyword phpFunctions flush ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean ob_get_contents ob_get_flush ob_get_length ob_get_level ob_get_status ob_gzhandler ob_implicit_flush ob_list_handlers ob_start output_add_rewrite_var output_reset_rewrite_vars contained syn keyword phpFunctions overload contained syn keyword phpFunctions ovrimos_close ovrimos_commit ovrimos_connect ovrimos_cursor ovrimos_exec ovrimos_execute ovrimos_fetch_into ovrimos_fetch_row ovrimos_field_len ovrimos_field_name ovrimos_field_num ovrimos_field_type ovrimos_free_result ovrimos_longreadlen ovrimos_num_fields ovrimos_num_rows ovrimos_prepare ovrimos_result_all ovrimos_result ovrimos_rollback contained syn keyword phpFunctions pcntl_exec pcntl_fork pcntl_signal pcntl_waitpid pcntl_wexitstatus pcntl_wifexited pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig contained syn keyword phpFunctions preg_grep preg_match_all preg_match preg_quote preg_replace_callback preg_replace preg_split contained syn keyword phpFunctions pdf_add_annotation pdf_add_bookmark pdf_add_launchlink pdf_add_locallink pdf_add_note pdf_add_outline pdf_add_pdflink pdf_add_thumbnail pdf_add_weblink pdf_arc pdf_arcn pdf_attach_file pdf_begin_page pdf_begin_pattern pdf_begin_template pdf_circle pdf_clip pdf_close_image pdf_close_pdi_page pdf_close_pdi pdf_close pdf_closepath_fill_stroke pdf_closepath_stroke pdf_closepath pdf_concat pdf_continue_text pdf_curveto pdf_delete pdf_end_page pdf_end_pattern pdf_end_template pdf_endpath pdf_fill_stroke pdf_fill pdf_findfont pdf_get_buffer pdf_get_font pdf_get_fontname pdf_get_fontsize pdf_get_image_height pdf_get_image_width pdf_get_majorversion pdf_get_minorversion pdf_get_parameter pdf_get_pdi_parameter pdf_get_pdi_value pdf_get_value pdf_initgraphics pdf_lineto pdf_makespotcolor pdf_moveto pdf_new pdf_open_CCITT pdf_open_file pdf_open_gif pdf_open_image_file pdf_open_image pdf_open_jpeg pdf_open_memory_image pdf_open_pdi_page pdf_open_pdi pdf_open_png pdf_open_tiff pdf_open pdf_place_image pdf_place_pdi_page pdf_rect pdf_restore pdf_rotate pdf_save pdf_scale pdf_set_border_color pdf_set_border_dash pdf_set_border_style pdf_set_char_spacing pdf_set_duration pdf_set_font pdf_set_horiz_scaling pdf_set_info_author pdf_set_info_creator pdf_set_info_keywords pdf_set_info_subject pdf_set_info_title pdf_set_info pdf_set_leading pdf_set_parameter pdf_set_text_matrix pdf_set_text_pos pdf_set_text_rendering pdf_set_text_rise pdf_set_value pdf_set_word_spacing pdf_setcolor pdf_setdash pdf_setflat pdf_setfont pdf_setgray_fill pdf_setgray_stroke pdf_setgray pdf_setlinecap pdf_setlinejoin pdf_setlinewidth pdf_setmatrix pdf_setmiterlimit pdf_setpolydash pdf_setrgbcolor_fill pdf_setrgbcolor_stroke pdf_setrgbcolor pdf_show_boxed pdf_show_xy pdf_show pdf_skew pdf_stringwidth pdf_stroke pdf_translate contained syn keyword phpFunctions pfpro_cleanup pfpro_init pfpro_process_raw pfpro_process pfpro_version contained syn keyword phpFunctions pg_affected_rows pg_cancel_query pg_client_encoding pg_close pg_connect pg_connection_busy pg_connection_reset pg_connection_status pg_convert pg_copy_from pg_copy_to pg_dbname pg_delete pg_end_copy pg_escape_bytea pg_escape_string pg_fetch_all pg_fetch_array pg_fetch_assoc pg_fetch_object pg_fetch_result pg_fetch_row pg_field_is_null pg_field_name pg_field_num pg_field_prtlen pg_field_size pg_field_type pg_free_result pg_get_notify pg_get_pid pg_get_result pg_host pg_insert pg_last_error pg_last_notice pg_last_oid pg_lo_close pg_lo_create pg_lo_export pg_lo_import pg_lo_open pg_lo_read_all pg_lo_read pg_lo_seek pg_lo_tell pg_lo_unlink pg_lo_write pg_meta_data pg_num_fields pg_num_rows pg_options pg_pconnect pg_ping pg_port pg_put_line pg_query pg_result_error pg_result_seek pg_result_status pg_select pg_send_query pg_set_client_encoding pg_trace pg_tty pg_unescape_bytea pg_untrace pg_update contained syn keyword phpFunctions posix_ctermid posix_get_last_error posix_getcwd posix_getegid posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid posix_isatty posix_kill posix_mkfifo posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid posix_setuid posix_strerror posix_times posix_ttyname posix_uname contained syn keyword phpFunctions printer_abort printer_close printer_create_brush printer_create_dc printer_create_font printer_create_pen printer_delete_brush printer_delete_dc printer_delete_font printer_delete_pen printer_draw_bmp printer_draw_chord printer_draw_elipse printer_draw_line printer_draw_pie printer_draw_rectangle printer_draw_roundrect printer_draw_text printer_end_doc printer_end_page printer_get_option printer_list printer_logical_fontheight printer_open printer_select_brush printer_select_font printer_select_pen printer_set_option printer_start_doc printer_start_page printer_write contained syn keyword phpFunctions pspell_add_to_personal pspell_add_to_session pspell_check pspell_clear_session pspell_config_create pspell_config_ignore pspell_config_mode pspell_config_personal pspell_config_repl pspell_config_runtogether pspell_config_save_repl pspell_new_config pspell_new_personal pspell_new pspell_save_wordlist pspell_store_replacement pspell_suggest contained syn keyword phpFunctions qdom_error qdom_tree contained syn keyword phpFunctions readline_add_history readline_clear_history readline_completion_function readline_info readline_list_history readline_read_history readline_write_history readline contained syn keyword phpFunctions recode_file recode_string recode contained syn keyword phpFunctions ereg_replace ereg eregi_replace eregi split spliti sql_regcase contained syn keyword phpFunctions ftok msg_get_queue msg_receive msg_remove_queue msg_send msg_set_queue msg_stat_queue sem_acquire sem_get sem_release sem_remove shm_attach shm_detach shm_get_var shm_put_var shm_remove_var shm_remove contained syn keyword phpFunctions sesam_affected_rows sesam_commit sesam_connect sesam_diagnostic sesam_disconnect sesam_errormsg sesam_execimm sesam_fetch_array sesam_fetch_result sesam_fetch_row sesam_field_array sesam_field_name sesam_free_result sesam_num_fields sesam_query sesam_rollback sesam_seek_row sesam_settransaction contained syn keyword phpFunctions session_cache_expire session_cache_limiter session_decode session_destroy session_encode session_get_cookie_params session_id session_is_registered session_module_name session_name session_regenerate_id session_register session_save_path session_set_cookie_params session_set_save_handler session_start session_unregister session_unset session_write_close contained syn keyword phpFunctions shmop_close shmop_delete shmop_open shmop_read shmop_size shmop_write contained syn keyword phpFunctions snmp_get_quick_print snmp_set_quick_print snmpget snmprealwalk snmpset snmpwalk snmpwalkoid contained syn keyword phpFunctions socket_accept socket_bind socket_clear_error socket_close socket_connect socket_create_listen socket_create_pair socket_create socket_get_option socket_getpeername socket_getsockname socket_iovec_add socket_iovec_alloc socket_iovec_delete socket_iovec_fetch socket_iovec_free socket_iovec_set socket_last_error socket_listen socket_read socket_readv socket_recv socket_recvfrom socket_recvmsg socket_select socket_send socket_sendmsg socket_sendto socket_set_block socket_set_nonblock socket_set_option socket_shutdown socket_strerror socket_write socket_writev contained syn keyword phpFunctions sqlite_array_query sqlite_busy_timeout sqlite_changes sqlite_close sqlite_column sqlite_create_aggregate sqlite_create_function sqlite_current sqlite_error_string sqlite_escape_string sqlite_fetch_array sqlite_fetch_single sqlite_fetch_string sqlite_field_name sqlite_has_more sqlite_last_error sqlite_last_insert_rowid sqlite_libencoding sqlite_libversion sqlite_next sqlite_num_fields sqlite_num_rows sqlite_open sqlite_popen sqlite_query sqlite_rewind sqlite_seek sqlite_udf_decode_binary sqlite_udf_encode_binary sqlite_unbuffered_query contained syn keyword phpFunctions stream_context_create stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream stream_filter_append stream_filter_prepend stream_filter_register stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_select stream_set_blocking stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_get_name stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_wrapper_register contained syn keyword phpFunctions addcslashes addslashes bin2hex chop chr chunk_split convert_cyr_string count_chars crc32 crypt explode fprintf get_html_translation_table hebrev hebrevc html_entity_decode htmlentities htmlspecialchars implode join levenshtein localeconv ltrim md5_file md5 metaphone money_format nl_langinfo nl2br number_format ord parse_str print printf quoted_printable_decode quotemeta rtrim setlocale sha1_file sha1 similar_text soundex sprintf sscanf str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count strcasecmp strchr strcmp strcoll strcspn strip_tags stripcslashes stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpos strrchr strrev strripos strrpos strspn strstr strtok strtolower strtoupper strtr substr_compare substr_count substr_replace substr trim ucfirst ucwords vprintf vsprintf wordwrap contained syn keyword phpFunctions swf_actiongeturl swf_actiongotoframe swf_actiongotolabel swf_actionnextframe swf_actionplay swf_actionprevframe swf_actionsettarget swf_actionstop swf_actiontogglequality swf_actionwaitforframe swf_addbuttonrecord swf_addcolor swf_closefile swf_definebitmap swf_definefont swf_defineline swf_definepoly swf_definerect swf_definetext swf_endbutton swf_enddoaction swf_endshape swf_endsymbol swf_fontsize swf_fontslant swf_fonttracking swf_getbitmapinfo swf_getfontinfo swf_getframe swf_labelframe swf_lookat swf_modifyobject swf_mulcolor swf_nextid swf_oncondition swf_openfile swf_ortho2 swf_ortho swf_perspective swf_placeobject swf_polarview swf_popmatrix swf_posround swf_pushmatrix swf_removeobject swf_rotate swf_scale swf_setfont swf_setframe swf_shapearc swf_shapecurveto3 swf_shapecurveto swf_shapefillbitmapclip swf_shapefillbitmaptile swf_shapefilloff swf_shapefillsolid swf_shapelinesolid swf_shapelineto swf_shapemoveto swf_showframe swf_startbutton swf_startdoaction swf_startshape swf_startsymbol swf_textwidth swf_translate swf_viewport contained syn keyword phpFunctions sybase_affected_rows sybase_close sybase_connect sybase_data_seek sybase_deadlock_retry_count sybase_fetch_array sybase_fetch_assoc sybase_fetch_field sybase_fetch_object sybase_fetch_row sybase_field_seek sybase_free_result sybase_get_last_message sybase_min_client_severity sybase_min_error_severity sybase_min_message_severity sybase_min_server_severity sybase_num_fields sybase_num_rows sybase_pconnect sybase_query sybase_result sybase_select_db sybase_set_message_handler sybase_unbuffered_query contained syn keyword phpFunctions tidy_access_count tidy_clean_repair tidy_config_count tidy_diagnose tidy_error_count tidy_get_body tidy_get_config tidy_get_error_buffer tidy_get_head tidy_get_html_ver tidy_get_html tidy_get_output tidy_get_release tidy_get_root tidy_get_status tidy_getopt tidy_is_xhtml tidy_load_config tidy_parse_file tidy_parse_string tidy_repair_file tidy_repair_string tidy_reset_config tidy_save_config tidy_set_encoding tidy_setopt tidy_warning_count contained syn keyword phpMethods attributes children get_attr get_nodes has_children has_siblings is_asp is_comment is_html is_jsp is_jste is_text is_xhtml is_xml next prev tidy_node contained syn keyword phpFunctions token_get_all token_name contained syn keyword phpFunctions base64_decode base64_encode get_meta_tags http_build_query parse_url rawurldecode rawurlencode urldecode urlencode contained syn keyword phpFunctions doubleval empty floatval get_defined_vars get_resource_type gettype import_request_variables intval is_array is_bool is_callable is_double is_float is_int is_integer is_long is_null is_numeric is_object is_real is_resource is_scalar is_string isset print_r serialize settype strval unserialize unset var_dump var_export contained syn keyword phpFunctions vpopmail_add_alias_domain_ex vpopmail_add_alias_domain vpopmail_add_domain_ex vpopmail_add_domain vpopmail_add_user vpopmail_alias_add vpopmail_alias_del_domain vpopmail_alias_del vpopmail_alias_get_all vpopmail_alias_get vpopmail_auth_user vpopmail_del_domain_ex vpopmail_del_domain vpopmail_del_user vpopmail_error vpopmail_passwd vpopmail_set_user_quota contained syn keyword phpFunctions w32api_deftype w32api_init_dtype w32api_invoke_function w32api_register_function w32api_set_call_method contained syn keyword phpFunctions wddx_add_vars wddx_deserialize wddx_packet_end wddx_packet_start wddx_serialize_value wddx_serialize_vars contained syn keyword phpFunctions utf8_decode utf8_encode xml_error_string xml_get_current_byte_index xml_get_current_column_number xml_get_current_line_number xml_get_error_code xml_parse_into_struct xml_parse xml_parser_create_ns xml_parser_create xml_parser_free xml_parser_get_option xml_parser_set_option xml_set_character_data_handler xml_set_default_handler xml_set_element_handler xml_set_end_namespace_decl_handler xml_set_external_entity_ref_handler xml_set_notation_decl_handler xml_set_object xml_set_processing_instruction_handler xml_set_start_namespace_decl_handler xml_set_unparsed_entity_decl_handler contained syn keyword phpFunctions xmlrpc_decode_request xmlrpc_decode xmlrpc_encode_request xmlrpc_encode xmlrpc_get_type xmlrpc_parse_method_descriptions xmlrpc_server_add_introspection_data xmlrpc_server_call_method xmlrpc_server_create xmlrpc_server_destroy xmlrpc_server_register_introspection_callback xmlrpc_server_register_method xmlrpc_set_type contained syn keyword phpFunctions xslt_create xslt_errno xslt_error xslt_free xslt_output_process xslt_set_base xslt_set_encoding xslt_set_error_handler xslt_set_log xslt_set_sax_handler xslt_set_sax_handlers xslt_set_scheme_handler xslt_set_scheme_handlers contained syn keyword phpFunctions yaz_addinfo yaz_ccl_conf yaz_ccl_parse yaz_close yaz_connect yaz_database yaz_element yaz_errno yaz_error yaz_es_result yaz_get_option yaz_hits yaz_itemorder yaz_present yaz_range yaz_record yaz_scan_result yaz_scan yaz_schema yaz_search yaz_set_option yaz_sort yaz_syntax yaz_wait contained syn keyword phpFunctions zip_close zip_entry_close zip_entry_compressedsize zip_entry_compressionmethod zip_entry_filesize zip_entry_name zip_entry_open zip_entry_read zip_open zip_read contained syn keyword phpFunctions gzclose gzcompress gzdeflate gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell gzuncompress gzwrite readgzfile zlib_get_coding_type contained if exists( "php_baselib" ) syn keyword phpMethods query next_record num_rows affected_rows nf f p np num_fields haltmsg seek link_id query_id metadata table_names nextid connect halt free register unregister is_registered delete url purl self_url pself_url hidden_session add_query padd_query reimport_get_vars reimport_post_vars reimport_cookie_vars set_container set_tokenname release_token put_headers get_id get_id put_id freeze thaw gc reimport_any_vars start url purl login_if is_authenticated auth_preauth auth_loginform auth_validatelogin auth_refreshlogin auth_registerform auth_doregister start check have_perm permsum perm_invalid contained syn keyword phpFunctions page_open page_close sess_load sess_save contained endif " Conditional syn keyword phpConditional declare else enddeclare endswitch elseif endif if switch contained " Repeat syn keyword phpRepeat as do endfor endforeach endwhile for foreach while contained " Repeat syn keyword phpLabel case default switch contained " Statement syn keyword phpStatement return break continue exit goto yield contained " Keyword syn keyword phpKeyword var const contained " Type syn keyword phpType bool boolean int integer real double float string array object NULL callable iterable contained " Structure syn keyword phpStructure namespace extends implements instanceof parent self contained " Operator syn match phpOperator "[-=+%^&|*!.~?:]" contained display syn match phpOperator "[-+*/%^&|.]=" contained display syn match phpOperator "/[^*/]"me=e-1 contained display syn match phpOperator "\$" contained display syn match phpOperator "&&\|\<and\>" contained display syn match phpOperator "||\|\<x\=or\>" contained display syn match phpRelation "[!=<>]=" contained display syn match phpRelation "[<>]" contained display syn match phpMemberSelector "->" contained display syn match phpVarSelector "\$" contained display " Identifier syn match phpIdentifier "$\h\w*" contained contains=phpEnvVar,phpIntVar,phpVarSelector display syn match phpIdentifierSimply "${\h\w*}" contains=phpOperator,phpParent contained display syn region phpIdentifierComplex matchgroup=phpParent start="{\$"rs=e-1 end="}" contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend syn region phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained " Interpolated indentifiers (inside strings) syn match phpBrackets "[][}{]" contained display " errors syn match phpInterpSimpleError "\[[^]]*\]" contained display " fallback (if nothing else matches) syn match phpInterpSimpleError "->[^a-zA-Z_]" contained display " make sure these stay above the correct DollarCurlies so they don't take priority syn match phpInterpBogusDollarCurley "${[^}]*}" contained display " fallback (if nothing else matches) syn match phpinterpSimpleBracketsInner "\w\+" contained syn match phpInterpSimpleBrackets "\[\h\w*]" contained contains=phpBrackets,phpInterpSimpleBracketsInner syn match phpInterpSimpleBrackets "\[\d\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner syn match phpInterpSimpleBrackets "\[0[xX]\x\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner syn match phpInterpSimple "\$\h\w*\(\[[^]]*\]\|->\h\w*\)\?" contained contains=phpInterpSimpleBrackets,phpIdentifier,phpInterpSimpleError,phpMethods,phpMemberSelector display syn match phpInterpVarname "\h\w*" contained syn match phpInterpMethodName "\h\w*" contained " default color syn match phpInterpSimpleCurly "\${\h\w*}" contains=phpInterpVarname contained extend syn region phpInterpDollarCurley1Helper matchgroup=phpParent start="{" end="\[" contains=phpInterpVarname contained syn region phpInterpDollarCurly1 matchgroup=phpParent start="\${\h\w*\["rs=s+1 end="]}" contains=phpInterpDollarCurley1Helper,@phpClConst contained extend syn match phpInterpDollarCurley2Helper "{\h\w*->" contains=phpBrackets,phpInterpVarname,phpMemberSelector contained syn region phpInterpDollarCurly2 matchgroup=phpParent start="\${\h\w*->"rs=s+1 end="}" contains=phpInterpDollarCurley2Helper,phpInterpMethodName contained syn match phpInterpBogusDollarCurley "${\h\w*->}" contained display syn match phpInterpBogusDollarCurley "${\h\w*\[]}" contained display syn region phpInterpComplex matchgroup=phpParent start="{\$"rs=e-1 end="}" contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend syn region phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained " define a cluster to get all interpolation syntaxes for double-quoted strings syn cluster phpInterpDouble contains=phpInterpSimple,phpInterpSimpleCurly,phpInterpDollarCurly1,phpInterpDollarCurly2,phpInterpBogusDollarCurley,phpInterpComplex " Methoden syn match phpMethodsVar "->\h\w*" contained contains=phpMethods,phpMemberSelector display " Include syn keyword phpInclude include require include_once require_once use contained " Define syn keyword phpDefine new clone contained " Boolean syn keyword phpBoolean true false contained " Number syn match phpNumber "-\=\<\d\+\>" contained display syn match phpNumber "\<0x\x\{1,8}\>" contained display " Float syn match phpFloat "\(-\=\<\d+\|-\=\)\.\d\+\>" contained display " Backslash escapes syn case match " for double quotes and heredoc syn match phpBackslashSequences "\\[fnrtv\\\"$]" contained display syn match phpBackslashSequences "\\\d\{1,3}" contained contains=phpOctalError display syn match phpBackslashSequences "\\x\x\{1,2}" contained display " additional sequence for double quotes only syn match phpBackslashDoubleQuote "\\[\"]" contained display " for single quotes only syn match phpBackslashSingleQuote "\\[\\']" contained display syn case ignore " Error syn match phpOctalError "[89]" contained display if exists("php_parent_error_close") syn match phpParentError "[)\]}]" contained display endif " Todo syn keyword phpTodo todo fixme xxx contained " Comment if exists("php_parent_error_open") syn region phpComment start="/\*" end="\*/" contained contains=phpTodo,@Spell else syn region phpComment start="/\*" end="\*/" contained contains=phpTodo,@Spell extend endif syn match phpComment "#.\{-}\(?>\|$\)\@=" contained contains=phpTodo,@Spell syn match phpComment "//.\{-}\(?>\|$\)\@=" contained contains=phpTodo,@Spell " String if exists("php_parent_error_open") syn region phpStringDouble matchgroup=phpStringDouble start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpBackslashSequences,phpBackslashDoubleQuote,@phpInterpDouble,@Spell contained keepend syn region phpBacktick matchgroup=phpBacktick start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpBackslashSequences,phpIdentifierSimply,phpIdentifierComplex contained keepend syn region phpStringSingle matchgroup=phpStringSingle start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings,phpBackslashSingleQuote,@Spell contained keepend else syn region phpStringDouble matchgroup=phpStringDouble start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpBackslashSequences,phpBackslashDoubleQuote,@phpInterpDouble,@Spell contained extend keepend syn region phpBacktick matchgroup=phpBacktick start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpBackslashSequences,phpIdentifierSimply,phpIdentifierComplex contained extend keepend syn region phpStringSingle matchgroup=phpStringSingle start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings,phpBackslashSingleQuote,@Spell contained keepend extend endif " HereDoc and NowDoc syn case match " HereDoc syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\I\i*\)\2$" end="^\z1\(;\=$\)\@=" contained contains=phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell keepend extend " including HTML,JavaScript,SQL even if not enabled via options syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)\2$" end="^\z1\(;\=$\)\@=" contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell keepend extend syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)\2$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell keepend extend syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)\2$" end="^\z1\(;\=$\)\@=" contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell keepend extend " NowDoc syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\I\i*\)'$" end="^\z1\(;\=$\)\@=" contained contains=@Spell keepend extend " including HTML,JavaScript,SQL even if not enabled via options syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)'$" end="^\z1\(;\=$\)\@=" contained contains=@htmlTop,@Spell keepend extend syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)'$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,@Spell keepend extend syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)'$" end="^\z1\(;\=$\)\@=" contained contains=@htmlJavascript,@Spell keepend extend syn case ignore " Parent if exists("php_parent_error_close") || exists("php_parent_error_open") syn match phpParent "[{}]" contained syn region phpParent matchgroup=Delimiter start="(" end=")" contained contains=@phpClInside transparent syn region phpParent matchgroup=Delimiter start="\[" end="\]" contained contains=@phpClInside transparent if !exists("php_parent_error_close") syn match phpParent "[\])]" contained endif else syn match phpParent "[({[\]})]" contained endif syn cluster phpClConst contains=phpFunctions,phpIdentifier,phpConditional,phpRepeat,phpStatement,phpOperator,phpRelation,phpStringSingle,phpStringDouble,phpBacktick,phpNumber,phpFloat,phpKeyword,phpType,phpBoolean,phpStructure,phpMethodsVar,phpConstant,phpCoreConstant,phpException syn cluster phpClInside contains=@phpClConst,phpComment,phpLabel,phpParent,phpParentError,phpInclude,phpHereDoc,phpNowDoc syn cluster phpClFunction contains=@phpClInside,phpDefine,phpParentError,phpStorageClass syn cluster phpClTop contains=@phpClFunction,phpFoldFunction,phpFoldClass,phpFoldInterface,phpFoldTry,phpFoldCatch " Php Region if exists("php_parent_error_open") if exists("php_noShortTags") syn region phpRegion matchgroup=Delimiter start="<?php" end="?>" contains=@phpClTop else syn region phpRegion matchgroup=Delimiter start="<?\(php\)\=" end="?>" contains=@phpClTop endif syn region phpRegionSc matchgroup=Delimiter start=+<script language="php">+ end=+</script>+ contains=@phpClTop if exists("php_asp_tags") syn region phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop endif else if exists("php_noShortTags") syn region phpRegion matchgroup=Delimiter start="<?php" end="?>" contains=@phpClTop keepend else syn region phpRegion matchgroup=Delimiter start="<?\(php\)\=" end="?>" contains=@phpClTop keepend endif syn region phpRegionSc matchgroup=Delimiter start=+<script language="php">+ end=+</script>+ contains=@phpClTop keepend if exists("php_asp_tags") syn region phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop keepend endif endif " Fold if exists("php_folding") && php_folding==1 " match one line constructs here and skip them at folding syn keyword phpSCKeyword abstract final private protected public static contained syn keyword phpFCKeyword function contained syn keyword phpStorageClass global contained syn match phpDefine "\(\s\|^\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\(\s\+.*[;}]\)\@=" contained contains=phpSCKeyword syn match phpStructure "\(\s\|^\)\(abstract\s\+\|final\s\+\)*\(trait\|class\)\(\s\+.*}\)\@=" contained syn match phpStructure "\(\s\|^\)interface\(\s\+.*}\)\@=" contained syn match phpException "\(\s\|^\)try\(\s\+.*}\)\@=" contained syn match phpException "\(\s\|^\)catch\(\s\+.*}\)\@=" contained syn match phpException "\(\s\|^\)finally\(\s\+.*}\)\@=" contained set foldmethod=syntax syn region phpFoldHtmlInside matchgroup=Delimiter start="?>" end="<?\(php\)\=" contained transparent contains=@htmlTop syn region phpFoldFunction matchgroup=Storageclass start="^\z(\s*\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\s\([^};]*$\)\@="rs=e-9 matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldHtmlInside,phpFCKeyword contained transparent fold extend syn region phpFoldFunction matchgroup=Define start="^function\s\([^};]*$\)\@=" matchgroup=Delimiter end="^}" contains=@phpClFunction,phpFoldHtmlInside contained transparent fold extend syn region phpFoldClass matchgroup=Structure start="^\z(\s*\)\(abstract\s\+\|final\s\+\)*\(trait\|class\)\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction,phpSCKeyword contained transparent fold extend syn region phpFoldInterface matchgroup=Structure start="^\z(\s*\)interface\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend syn region phpFoldCatch matchgroup=Exception start="^\z(\s*\)catch\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend syn region phpFoldTry matchgroup=Exception start="^\z(\s*\)try\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend else syn keyword phpDefine function contained syn keyword phpStructure abstract class trait interface contained syn keyword phpException catch throw try finally contained syn keyword phpStorageClass final global private protected public static contained if exists("php_folding") && php_folding==2 set foldmethod=syntax syn region phpFoldHtmlInside matchgroup=Delimiter start="?>" end="<?\(php\)\=" contained transparent contains=@htmlTop syn region phpParent matchgroup=Delimiter start="{" end="}" contained contains=@phpClFunction,phpFoldHtmlInside transparent fold endif endif " ================================================================ " Peter Hodge - June 9, 2006 " Some of these changes (highlighting isset/unset/echo etc) are not so " critical, but they make things more colourful. :-) " different syntax highlighting for 'echo', 'print', 'switch', 'die' and 'list' keywords " to better indicate what they are. syntax keyword phpDefine echo print contained syntax keyword phpStructure list contained syntax keyword phpConditional switch contained syntax keyword phpStatement die contained " Highlighting for PHP5's user-definable magic class methods syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier \ __construct __destruct __call __callStatic __get __set __isset __unset __sleep __wakeup __toString __invoke __set_state __clone __debugInfo " Highlighting for __autoload slightly different from line above syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar \ __autoload hi def link phpSpecialFunction phpOperator " Highlighting for PHP5's built-in classes " - built-in classes harvested from get_declared_classes() in 5.1.4 syntax keyword phpClasses containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar \ stdClass __PHP_Incomplete_Class php_user_filter Directory ArrayObject \ Exception ErrorException LogicException BadFunctionCallException BadMethodCallException DomainException \ RecursiveIteratorIterator IteratorIterator FilterIterator RecursiveFilterIterator ParentIterator LimitIterator \ CachingIterator RecursiveCachingIterator NoRewindIterator AppendIterator InfiniteIterator EmptyIterator \ ArrayIterator RecursiveArrayIterator DirectoryIterator RecursiveDirectoryIterator \ InvalidArgumentException LengthException OutOfRangeException RuntimeException OutOfBoundsException \ OverflowException RangeException UnderflowException UnexpectedValueException \ PDO PDOException PDOStatement PDORow \ Reflection ReflectionFunction ReflectionParameter ReflectionMethod ReflectionClass \ ReflectionObject ReflectionProperty ReflectionExtension ReflectionException \ SplFileInfo SplFileObject SplTempFileObject SplObjectStorage \ XMLWriter LibXMLError XMLReader SimpleXMLElement SimpleXMLIterator \ DOMException DOMStringList DOMNameList DOMDomError DOMErrorHandler \ DOMImplementation DOMImplementationList DOMImplementationSource \ DOMNode DOMNameSpaceNode DOMDocumentFragment DOMDocument DOMNodeList DOMNamedNodeMap \ DOMCharacterData DOMAttr DOMElement DOMText DOMComment DOMTypeinfo DOMUserDataHandler \ DOMLocator DOMConfiguration DOMCdataSection DOMDocumentType DOMNotation DOMEntity \ DOMEntityReference DOMProcessingInstruction DOMStringExtend DOMXPath hi def link phpClasses phpFunctions " Highlighting for PHP5's built-in interfaces " - built-in classes harvested from get_declared_interfaces() in 5.1.4 syntax keyword phpInterfaces containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar \ Iterator IteratorAggregate RecursiveIterator OuterIterator SeekableIterator \ Traversable ArrayAccess Serializable Countable SplObserver SplSubject Reflector hi def link phpInterfaces phpConstant " option defaults: if ! exists('php_special_functions') let php_special_functions = 1 endif if ! exists('php_alt_comparisons') let php_alt_comparisons = 1 endif if ! exists('php_alt_assignByReference') let php_alt_assignByReference = 1 endif if php_special_functions " Highlighting for PHP built-in functions which exhibit special behaviours " - isset()/unset()/empty() are not real functions. " - compact()/extract() directly manipulate variables in the local scope where " regular functions would not be able to. " - eval() is the token 'make_your_code_twice_as_complex()' function for PHP. " - user_error()/trigger_error() can be overloaded by set_error_handler and also " have the capacity to terminate your script when type is E_USER_ERROR. syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle \ user_error trigger_error isset unset eval extract compact empty endif if php_alt_assignByReference " special highlighting for '=&' operator syntax match phpAssignByRef /=\s*&/ containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle hi def link phpAssignByRef Type endif if php_alt_comparisons " highlight comparison operators differently syntax match phpComparison "\v[=!]\=\=?" contained containedin=phpRegion syntax match phpComparison "\v[=<>-]@<![<>]\=?[<>]@!" contained containedin=phpRegion " highlight the 'instanceof' operator as a comparison operator rather than a structure syntax case ignore syntax keyword phpComparison instanceof contained containedin=phpRegion hi def link phpComparison Statement endif " ================================================================ " Sync if php_sync_method==-1 if exists("php_noShortTags") syn sync match phpRegionSync grouphere phpRegion "^\s*<?php\s*$" else syn sync match phpRegionSync grouphere phpRegion "^\s*<?\(php\)\=\s*$" endif syn sync match phpRegionSync grouphere phpRegionSc +^\s*<script language="php">\s*$+ if exists("php_asp_tags") syn sync match phpRegionSync grouphere phpRegionAsp "^\s*<%\(=\)\=\s*$" endif syn sync match phpRegionSync grouphere NONE "^\s*?>\s*$" syn sync match phpRegionSync grouphere NONE "^\s*%>\s*$" syn sync match phpRegionSync grouphere phpRegion "function\s.*(.*\$" "syn sync match phpRegionSync grouphere NONE "/\i*>\s*$" elseif php_sync_method>0 exec "syn sync minlines=" . php_sync_method else exec "syn sync fromstart" endif syntax match phpDocCustomTags "@[a-zA-Z]*\(\s\+\|\n\|\r\)" containedin=phpComment syntax region phpDocTags start="{@\(example\|id\|internal\|inheritdoc\|link\|source\|toc\|tutorial\)" end="}" containedin=phpComment syntax match phpDocTags "@\(abstract\|access\|author\|category\|copyright\|deprecated\|example\|final\|global\|ignore\|internal\|license\|link\|method\|name\|package\|param\|property\|return\|see\|since\|static\|staticvar\|subpackage\|tutorial\|uses\|var\|version\|contributor\|modified\|filename\|description\|filesource\|throws\)\(\s\+\)\?" containedin=phpComment syntax match phpDocTodo "@\(todo\|fixme\|xxx\)\(\s\+\)\?" containedin=phpComment " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link phpConstant Constant hi def link phpCoreConstant Constant hi def link phpComment Comment hi def link phpDocTags PreProc hi def link phpDocCustomTags Type hi def link phpException Exception hi def link phpBoolean Boolean hi def link phpStorageClass StorageClass hi def link phpSCKeyword StorageClass hi def link phpFCKeyword Define hi def link phpStructure Structure hi def link phpStringSingle String hi def link phpStringDouble String hi def link phpBacktick String hi def link phpNumber Number hi def link phpFloat Float hi def link phpMethods Function hi def link phpFunctions Function hi def link phpBaselib Function hi def link phpRepeat Repeat hi def link phpConditional Conditional hi def link phpLabel Label hi def link phpStatement Statement hi def link phpKeyword Statement hi def link phpType Type hi def link phpInclude Include hi def link phpDefine Define hi def link phpBackslashSequences SpecialChar hi def link phpBackslashDoubleQuote SpecialChar hi def link phpBackslashSingleQuote SpecialChar hi def link phpParent Delimiter hi def link phpBrackets Delimiter hi def link phpIdentifierConst Delimiter hi def link phpParentError Error hi def link phpOctalError Error hi def link phpInterpSimpleError Error hi def link phpInterpBogusDollarCurley Error hi def link phpInterpDollarCurly1 Error hi def link phpInterpDollarCurly2 Error hi def link phpInterpSimpleBracketsInner String hi def link phpInterpSimpleCurly Delimiter hi def link phpInterpVarname Identifier hi def link phpTodo Todo hi def link phpDocTodo Todo hi def link phpMemberSelector Structure if exists("php_oldStyle") hi def phpIntVar guifg=Red ctermfg=DarkRed hi def phpEnvVar guifg=Red ctermfg=DarkRed hi def phpOperator guifg=SeaGreen ctermfg=DarkGreen hi def phpVarSelector guifg=SeaGreen ctermfg=DarkGreen hi def phpRelation guifg=SeaGreen ctermfg=DarkGreen hi def phpIdentifier guifg=DarkGray ctermfg=Brown hi def phpIdentifierSimply guifg=DarkGray ctermfg=Brown else hi def link phpIntVar Identifier hi def link phpEnvVar Identifier hi def link phpOperator Operator hi def link phpVarSelector Operator hi def link phpRelation Operator hi def link phpIdentifier Identifier hi def link phpIdentifierSimply Identifier endif let b:current_syntax = "php" if main_syntax == 'php' unlet main_syntax endif " put cpoptions back the way we found it let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 sts=2 sw=2 expandtab PK�������!�CKO��KO����vim80/syntax/vb.vimnu�[��������" Vim syntax file " Language: Visual Basic " Maintainer: Tim Chase <vb.vim@tim.thechases.com> " Former Maintainer: Robert M. Cortopassi <cortopar@mindspring.com> " (tried multiple times to contact, but email bounced) " Last Change: " 2005 May 25 Synched with work by Thomas Barthel " 2004 May 30 Added a few keywords " This was thrown together after seeing numerous requests on the " VIM and VIM-DEV mailing lists. It is by no means complete. " Send comments, suggestions and requests to the maintainer. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " VB is case insensitive syn case ignore syn keyword vbConditional If Then ElseIf Else Select Case syn keyword vbOperator AddressOf And ByRef ByVal Eqv Imp In syn keyword vbOperator Is Like Mod Not Or To Xor syn match vbOperator "[()+.,\-/*=&]" syn match vbOperator "[<>]=\=" syn match vbOperator "<>" syn match vbOperator "\s\+_$" syn keyword vbBoolean True False syn keyword vbConst Null Nothing syn keyword vbRepeat Do For ForEach Loop Next syn keyword vbRepeat Step To Until Wend While syn keyword vbEvents AccessKeyPress Activate ActiveRowChanged syn keyword vbEvents AfterAddFile AfterChangeFileName AfterCloseFile syn keyword vbEvents AfterColEdit AfterColUpdate AfterDelete syn keyword vbEvents AfterInsert AfterLabelEdit AfterRemoveFile syn keyword vbEvents AfterUpdate AfterWriteFile AmbientChanged syn keyword vbEvents ApplyChanges Associate AsyncProgress syn keyword vbEvents AsyncReadComplete AsyncReadProgress AxisActivated syn keyword vbEvents AxisLabelActivated AxisLabelSelected syn keyword vbEvents AxisLabelUpdated AxisSelected AxisTitleActivated syn keyword vbEvents AxisTitleSelected AxisTitleUpdated AxisUpdated syn keyword vbEvents BeforeClick BeforeColEdit BeforeColUpdate syn keyword vbEvents BeforeConnect BeforeDelete BeforeInsert syn keyword vbEvents BeforeLabelEdit BeforeLoadFile BeforeUpdate syn keyword vbEvents BeginRequest BeginTrans ButtonClick syn keyword vbEvents ButtonCompleted ButtonDropDown ButtonGotFocus syn keyword vbEvents ButtonLostFocus CallbackKeyDown Change Changed syn keyword vbEvents ChartActivated ChartSelected ChartUpdated Click syn keyword vbEvents Close CloseQuery CloseUp ColEdit ColResize syn keyword vbEvents Collapse ColumnClick CommitTrans Compare syn keyword vbEvents ConfigChageCancelled ConfigChanged syn keyword vbEvents ConfigChangedCancelled Connect ConnectionRequest syn keyword vbEvents CurrentRecordChanged DECommandAdded syn keyword vbEvents DECommandPropertyChanged DECommandRemoved syn keyword vbEvents DEConnectionAdded DEConnectionPropertyChanged syn keyword vbEvents DEConnectionRemoved DataArrival DataChanged syn keyword vbEvents DataUpdated DateClicked DblClick Deactivate syn keyword vbEvents DevModeChange DeviceArrival DeviceOtherEvent syn keyword vbEvents DeviceQueryRemove DeviceQueryRemoveFailed syn keyword vbEvents DeviceRemoveComplete DeviceRemovePending syn keyword vbEvents Disconnect DisplayChanged Dissociate syn keyword vbEvents DoGetNewFileName Done DonePainting DownClick syn keyword vbEvents DragDrop DragOver DropDown EditProperty EditQuery syn keyword vbEvents EndRequest EnterCell EnterFocus ExitFocus Expand syn keyword vbEvents FontChanged FootnoteActivated FootnoteSelected syn keyword vbEvents FootnoteUpdated Format FormatSize GotFocus syn keyword vbEvents HeadClick HeightChanged Hide InfoMessage syn keyword vbEvents IniProperties InitProperties Initialize syn keyword vbEvents ItemActivated ItemAdded ItemCheck ItemClick syn keyword vbEvents ItemReloaded ItemRemoved ItemRenamed syn keyword vbEvents ItemSeletected KeyDown KeyPress KeyUp LeaveCell syn keyword vbEvents LegendActivated LegendSelected LegendUpdated syn keyword vbEvents LinkClose LinkError LinkExecute LinkNotify syn keyword vbEvents LinkOpen Load LostFocus MouseDown MouseMove syn keyword vbEvents MouseUp NodeCheck NodeClick OLECompleteDrag syn keyword vbEvents OLEDragDrop OLEDragOver OLEGiveFeedback OLESetData syn keyword vbEvents OLEStartDrag ObjectEvent ObjectMove OnAddNew syn keyword vbEvents OnComm Paint PanelClick PanelDblClick PathChange syn keyword vbEvents PatternChange PlotActivated PlotSelected syn keyword vbEvents PlotUpdated PointActivated PointLabelActivated syn keyword vbEvents PointLabelSelected PointLabelUpdated PointSelected syn keyword vbEvents PointUpdated PowerQuerySuspend PowerResume syn keyword vbEvents PowerStatusChanged PowerSuspend ProcessTag syn keyword vbEvents ProcessingTimeout QueryChangeConfig QueryClose syn keyword vbEvents QueryComplete QueryCompleted QueryTimeout syn keyword vbEvents QueryUnload ReadProperties RepeatedControlLoaded syn keyword vbEvents RepeatedControlUnloaded Reposition syn keyword vbEvents RequestChangeFileName RequestWriteFile Resize syn keyword vbEvents ResultsChanged RetainedProject RollbackTrans syn keyword vbEvents RowColChange RowCurrencyChange RowResize syn keyword vbEvents RowStatusChanged Scroll SelChange SelectionChanged syn keyword vbEvents SendComplete SendProgress SeriesActivated syn keyword vbEvents SeriesSelected SeriesUpdated SettingChanged Show syn keyword vbEvents SplitChange Start StateChanged StatusUpdate syn keyword vbEvents SysColorsChanged Terminate TimeChanged Timer syn keyword vbEvents TitleActivated TitleSelected TitleUpdated syn keyword vbEvents UnboundAddData UnboundDeleteRow syn keyword vbEvents UnboundGetRelativeBookmark UnboundReadData syn keyword vbEvents UnboundWriteData Unformat Unload UpClick Updated syn keyword vbEvents UserEvent Validate ValidationError syn keyword vbEvents VisibleRecordChanged WillAssociate WillChangeData syn keyword vbEvents WillDissociate WillExecute WillUpdateRows syn keyword vbEvents WriteProperties syn keyword vbFunction Abs Array Asc AscB AscW Atn Avg BOF CBool CByte syn keyword vbFunction CCur CDate CDbl CInt CLng CSng CStr CVDate CVErr syn keyword vbFunction CVar CallByName Cdec Choose Chr ChrB ChrW Command syn keyword vbFunction Cos Count CreateObject CurDir DDB Date DateAdd syn keyword vbFunction DateDiff DatePart DateSerial DateValue Day Dir syn keyword vbFunction DoEvents EOF Environ Error Exp FV FileAttr syn keyword vbFunction FileDateTime FileLen FilterFix Fix Format syn keyword vbFunction FormatCurrency FormatDateTime FormatNumber syn keyword vbFunction FormatPercent FreeFile GetAllStrings GetAttr syn keyword vbFunction GetAutoServerSettings GetObject GetSetting Hex syn keyword vbFunction Hour IIf IMEStatus IPmt InStr Input InputB syn keyword vbFunction InputBox InstrB Int IsArray IsDate IsEmpty IsError syn keyword vbFunction IsMissing IsNull IsNumeric IsObject Join LBound syn keyword vbFunction LCase LOF LTrim Left LeftB Len LenB LoadPicture syn keyword vbFunction LoadResData LoadResPicture LoadResString Loc Log syn keyword vbFunction MIRR Max Mid MidB Min Minute Month MonthName syn keyword vbFunction MsgBox NPV NPer Now Oct PPmt PV Partition Pmt syn keyword vbFunction QBColor RGB RTrim Rate Replace Right RightB Rnd syn keyword vbFunction Round SLN SYD Second Seek Sgn Shell Sin Space Spc syn keyword vbFunction Split Sqr StDev StDevP Str StrComp StrConv syn keyword vbFunction StrReverse String Sum Switch Tab Tan Time syn keyword vbFunction TimeSerial TimeValue Timer Trim TypeName UBound syn keyword vbFunction UCase Val Var VarP VarType Weekday WeekdayName syn keyword vbFunction Year syn keyword vbMethods AboutBox Accept Activate Add AddCustom AddFile syn keyword vbMethods AddFromFile AddFromGuid AddFromString syn keyword vbMethods AddFromTemplate AddItem AddNew AddToAddInToolbar syn keyword vbMethods AddToolboxProgID Append AppendAppendChunk syn keyword vbMethods AppendChunk Arrange Assert AsyncRead BatchUpdate syn keyword vbMethods BeginQueryEdit BeginTrans Bind BuildPath syn keyword vbMethods CanPropertyChange Cancel CancelAsyncRead syn keyword vbMethods CancelBatch CancelUpdate CaptureImage CellText syn keyword vbMethods CellValue Circle Clear ClearFields ClearSel syn keyword vbMethods ClearSelCols ClearStructure Clone Close Cls syn keyword vbMethods ColContaining CollapseAll ColumnSize CommitTrans syn keyword vbMethods CompactDatabase Compose Connect Copy CopyFile syn keyword vbMethods CopyFolder CopyQueryDef Count CreateDatabase syn keyword vbMethods CreateDragImage CreateEmbed CreateField syn keyword vbMethods CreateFolder CreateGroup CreateIndex CreateLink syn keyword vbMethods CreatePreparedStatement CreatePropery CreateQuery syn keyword vbMethods CreateQueryDef CreateRelation CreateTableDef syn keyword vbMethods CreateTextFile CreateToolWindow CreateUser syn keyword vbMethods CreateWorkspace Customize Cut Delete syn keyword vbMethods DeleteColumnLabels DeleteColumns DeleteFile syn keyword vbMethods DeleteFolder DeleteLines DeleteRowLabels syn keyword vbMethods DeleteRows DeselectAll DesignerWindow DoVerb Drag syn keyword vbMethods Draw DriveExists Edit EditCopy EditPaste EndDoc syn keyword vbMethods EnsureVisible EstablishConnection Execute Exists syn keyword vbMethods Expand Export ExportReport ExtractIcon Fetch syn keyword vbMethods FetchVerbs FileExists Files FillCache Find syn keyword vbMethods FindFirst FindItem FindLast FindNext FindPrevious syn keyword vbMethods FolderExists Forward GetAbsolutePathName syn keyword vbMethods GetBaseName GetBookmark GetChunk GetClipString syn keyword vbMethods GetData GetDrive GetDriveName GetFile GetFileName syn keyword vbMethods GetFirstVisible GetFolder GetFormat GetHeader syn keyword vbMethods GetLineFromChar GetNumTicks GetParentFolderName syn keyword vbMethods GetRows GetSelectedPart GetSelection syn keyword vbMethods GetSpecialFolder GetTempName GetText syn keyword vbMethods GetVisibleCount GoBack GoForward Hide HitTest syn keyword vbMethods HoldFields Idle Import InitializeLabels Insert syn keyword vbMethods InsertColumnLabels InsertColumns InsertFile syn keyword vbMethods InsertLines InsertObjDlg InsertRowLabels syn keyword vbMethods InsertRows Item Keys KillDoc Layout Line Lines syn keyword vbMethods LinkExecute LinkPoke LinkRequest LinkSend Listen syn keyword vbMethods LoadFile LoadResData LoadResPicture LoadResString syn keyword vbMethods LogEvent MakeCompileFile MakeCompiledFile syn keyword vbMethods MakeReplica MoreResults Move MoveData MoveFile syn keyword vbMethods MoveFirst MoveFolder MoveLast MoveNext syn keyword vbMethods MovePrevious NavigateTo NewPage NewPassword syn keyword vbMethods NextRecordset OLEDrag OnAddinsUpdate OnConnection syn keyword vbMethods OnDisconnection OnStartupComplete Open syn keyword vbMethods OpenAsTextStream OpenConnection OpenDatabase syn keyword vbMethods OpenQueryDef OpenRecordset OpenResultset OpenURL syn keyword vbMethods Overlay PSet PaintPicture PastSpecialDlg Paste syn keyword vbMethods PeekData Play Point PopulatePartial PopupMenu syn keyword vbMethods Print PrintForm PrintReport PropertyChanged Quit syn keyword vbMethods Raise RandomDataFill RandomFillColumns syn keyword vbMethods RandomFillRows ReFill Read ReadAll ReadFromFile syn keyword vbMethods ReadLine ReadProperty Rebind Refresh RefreshLink syn keyword vbMethods RegisterDatabase ReleaseInstance Reload Remove syn keyword vbMethods RemoveAddInFromToolbar RemoveAll RemoveItem Render syn keyword vbMethods RepairDatabase ReplaceLine Reply ReplyAll Requery syn keyword vbMethods ResetCustom ResetCustomLabel ResolveName syn keyword vbMethods RestoreToolbar Resync Rollback RollbackTrans syn keyword vbMethods RowBookmark RowContaining RowTop Save SaveAs syn keyword vbMethods SaveFile SaveToFile SaveToOle1File SaveToolbar syn keyword vbMethods Scale ScaleX ScaleY Scroll SelPrint SelectAll syn keyword vbMethods SelectPart Send SendData Set SetAutoServerSettings syn keyword vbMethods SetData SetFocus SetOption SetSelection SetSize syn keyword vbMethods SetText SetViewport Show ShowColor ShowFont syn keyword vbMethods ShowHelp ShowOpen ShowPrinter ShowSave syn keyword vbMethods ShowWhatsThis SignOff SignOn Size Skip SkipLine syn keyword vbMethods Span Split SplitContaining StartLabelEdit syn keyword vbMethods StartLogging Stop Synchronize Tag TextHeight syn keyword vbMethods TextWidth ToDefaults Trace TwipsToChartPart syn keyword vbMethods TypeByChartType URLFor Update UpdateControls syn keyword vbMethods UpdateRecord UpdateRow Upto ValidateControls Value syn keyword vbMethods WhatsThisMode Write WriteBlankLines WriteLine syn keyword vbMethods WriteProperty WriteTemplate ZOrder syn keyword vbMethods rdoCreateEnvironment rdoRegisterDataSource syn keyword vbStatement Alias AppActivate As Base Beep Begin Call ChDir syn keyword vbStatement ChDrive Close Const Date Declare DefBool DefByte syn keyword vbStatement DefCur DefDate DefDbl DefDec DefInt DefLng DefObj syn keyword vbStatement DefSng DefStr DefVar Deftype DeleteSetting Dim Do syn keyword vbStatement Each ElseIf End Enum Erase Error Event Exit syn keyword vbStatement Explicit FileCopy For ForEach Function Get GoSub syn keyword vbStatement GoTo Gosub Implements Kill LSet Let Lib LineInput syn keyword vbStatement Load Lock Loop Mid MkDir Name Next On OnError Open syn keyword vbStatement Option Preserve Private Property Public Put RSet syn keyword vbStatement RaiseEvent Randomize ReDim Redim Reset Resume syn keyword vbStatement Return RmDir SavePicture SaveSetting Seek SendKeys syn keyword vbStatement Sendkeys Set SetAttr Static Step Stop Sub Time syn keyword vbStatement Type Unload Unlock Until Wend While Width With syn keyword vbStatement Write syn keyword vbKeyword As Binary ByRef ByVal Date Empty Error Friend Get syn keyword vbKeyword Input Is Len Lock Me Mid New Nothing Null On syn keyword vbKeyword Option Optional ParamArray Print Private Property syn keyword vbKeyword Public PublicNotCreateable OnNewProcessSingleUse syn keyword vbKeyword InSameProcessMultiUse GlobalMultiUse Resume Seek syn keyword vbKeyword Set Static Step String Time WithEvents syn keyword vbTodo contained TODO "Datatypes syn keyword vbTypes Boolean Byte Currency Date Decimal Double Empty syn keyword vbTypes Integer Long Object Single String Variant "VB defined values syn keyword vbDefine dbBigInt dbBinary dbBoolean dbByte dbChar syn keyword vbDefine dbCurrency dbDate dbDecimal dbDouble dbFloat syn keyword vbDefine dbGUID dbInteger dbLong dbLongBinary dbMemo syn keyword vbDefine dbNumeric dbSingle dbText dbTime dbTimeStamp syn keyword vbDefine dbVarBinary "VB defined values syn keyword vbDefine vb3DDKShadow vb3DFace vb3DHighlight vb3DLight syn keyword vbDefine vb3DShadow vbAbort vbAbortRetryIgnore syn keyword vbDefine vbActiveBorder vbActiveTitleBar vbAlias syn keyword vbDefine vbApplicationModal vbApplicationWorkspace syn keyword vbDefine vbAppTaskManager vbAppWindows vbArchive vbArray syn keyword vbDefine vbBack vbBinaryCompare vbBlack vbBlue vbBoolean syn keyword vbDefine vbButtonFace vbButtonShadow vbButtonText vbByte syn keyword vbDefine vbCalGreg vbCalHijri vbCancel vbCr vbCritical syn keyword vbDefine vbCrLf vbCurrency vbCyan vbDatabaseCompare syn keyword vbDefine vbDataObject vbDate vbDecimal vbDefaultButton1 syn keyword vbDefine vbDefaultButton2 vbDefaultButton3 vbDefaultButton4 syn keyword vbDefine vbDesktop vbDirectory vbDouble vbEmpty vbError syn keyword vbDefine vbExclamation vbFirstFourDays vbFirstFullWeek syn keyword vbDefine vbFirstJan1 vbFormCode vbFormControlMenu syn keyword vbDefine vbFormFeed vbFormMDIForm vbFriday vbFromUnicode syn keyword vbDefine vbGrayText vbGreen vbHidden vbHide vbHighlight syn keyword vbDefine vbHighlightText vbHiragana vbIgnore vbIMEAlphaDbl syn keyword vbDefine vbIMEAlphaSng vbIMEDisable vbIMEHiragana syn keyword vbDefine vbIMEKatakanaDbl vbIMEKatakanaSng vbIMEModeAlpha syn keyword vbDefine vbIMEModeAlphaFull vbIMEModeDisable syn keyword vbDefine vbIMEModeHangul vbIMEModeHangulFull syn keyword vbDefine vbIMEModeHiragana vbIMEModeKatakana syn keyword vbDefine vbIMEModeKatakanaHalf vbIMEModeNoControl syn keyword vbDefine vbIMEModeOff vbIMEModeOn vbIMENoOp vbIMEOff syn keyword vbDefine vbIMEOn vbInactiveBorder vbInactiveCaptionText syn keyword vbDefine vbInactiveTitleBar vbInfoBackground vbInformation syn keyword vbDefine vbInfoText vbInteger vbKatakana vbKey0 vbKey1 syn keyword vbDefine vbKey2 vbKey3 vbKey4 vbKey5 vbKey6 vbKey7 vbKey8 syn keyword vbDefine vbKey9 vbKeyA vbKeyAdd vbKeyB vbKeyBack vbKeyC syn keyword vbDefine vbKeyCancel vbKeyCapital vbKeyClear vbKeyControl syn keyword vbDefine vbKeyD vbKeyDecimal vbKeyDelete vbKeyDivide syn keyword vbDefine vbKeyDown vbKeyE vbKeyEnd vbKeyEscape vbKeyExecute syn keyword vbDefine vbKeyF vbKeyF1 vbKeyF10 vbKeyF11 vbKeyF12 vbKeyF13 syn keyword vbDefine vbKeyF14 vbKeyF15 vbKeyF16 vbKeyF2 vbKeyF3 vbKeyF4 syn keyword vbDefine vbKeyF5 vbKeyF6 vbKeyF7 vbKeyF8 vbKeyF9 vbKeyG syn keyword vbDefine vbKeyH vbKeyHelp vbKeyHome vbKeyI vbKeyInsert syn keyword vbDefine vbKeyJ vbKeyK vbKeyL vbKeyLButton vbKeyLeft vbKeyM syn keyword vbDefine vbKeyMButton vbKeyMenu vbKeyMultiply vbKeyN syn keyword vbDefine vbKeyNumlock vbKeyNumpad0 vbKeyNumpad1 syn keyword vbDefine vbKeyNumpad2 vbKeyNumpad3 vbKeyNumpad4 syn keyword vbDefine vbKeyNumpad5 vbKeyNumpad6 vbKeyNumpad7 syn keyword vbDefine vbKeyNumpad8 vbKeyNumpad9 vbKeyO vbKeyP syn keyword vbDefine vbKeyPageDown vbKeyPageUp vbKeyPause vbKeyPrint syn keyword vbDefine vbKeyQ vbKeyR vbKeyRButton vbKeyReturn vbKeyRight syn keyword vbDefine vbKeyS vbKeySelect vbKeySeparator vbKeyShift syn keyword vbDefine vbKeySnapshot vbKeySpace vbKeySubtract vbKeyT syn keyword vbDefine vbKeyTab vbKeyU vbKeyUp vbKeyV vbKeyW vbKeyX syn keyword vbDefine vbKeyY vbKeyZ vbLf vbLong vbLowerCase vbMagenta syn keyword vbDefine vbMaximizedFocus vbMenuBar vbMenuText syn keyword vbDefine vbMinimizedFocus vbMinimizedNoFocus vbMonday syn keyword vbDefine vbMsgBox vbMsgBoxHelpButton vbMsgBoxRight syn keyword vbDefine vbMsgBoxRtlReading vbMsgBoxSetForeground syn keyword vbDefine vbMsgBoxText vbNarrow vbNewLine vbNo vbNormal syn keyword vbDefine vbNormalFocus vbNormalNoFocus vbNull vbNullChar syn keyword vbDefine vbNullString vbObject vbObjectError vbOK syn keyword vbDefine vbOKCancel vbOKOnly vbProperCase vbQuestion syn keyword vbDefine vbReadOnly vbRed vbRetry vbRetryCancel vbSaturday syn keyword vbDefine vbScrollBars vbSingle vbString vbSunday vbSystem syn keyword vbDefine vbSystemModal vbTab vbTextCompare vbThursday syn keyword vbDefine vbTitleBarText vbTuesday vbUnicode vbUpperCase syn keyword vbDefine vbUseSystem vbUseSystemDayOfWeek vbVariant syn keyword vbDefine vbVerticalTab vbVolume vbWednesday vbWhite vbWide syn keyword vbDefine vbWindowBackground vbWindowFrame vbWindowText syn keyword vbDefine vbYellow vbYes vbYesNo vbYesNoCancel "Numbers "integer number, or floating point number without a dot. syn match vbNumber "\<\d\+\>" "floating point number, with dot syn match vbNumber "\<\d\+\.\d*\>" "floating point number, starting with a dot syn match vbNumber "\.\d\+\>" "syn match vbNumber "{[[:xdigit:]-]\+}\|&[hH][[:xdigit:]]\+&" "syn match vbNumber ":[[:xdigit:]]\+" "syn match vbNumber "[-+]\=\<\d\+\>" syn match vbFloat "[-+]\=\<\d\+[eE][\-+]\=\d\+" syn match vbFloat "[-+]\=\<\d\+\.\d*\([eE][\-+]\=\d\+\)\=" syn match vbFloat "[-+]\=\<\.\d\+\([eE][\-+]\=\d\+\)\=" " String and Character contstants syn region vbString start=+"+ end=+"\|$+ syn region vbComment start="\(^\|\s\)REM\s" end="$" contains=vbTodo syn region vbComment start="\(^\|\s\)\'" end="$" contains=vbTodo syn match vbLineNumber "^\d\+\(\s\|$\)" syn match vbTypeSpecifier "[a-zA-Z0-9][\$%&!#]"ms=s+1 syn match vbTypeSpecifier "#[a-zA-Z0-9]"me=e-1 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link vbBoolean Boolean hi def link vbLineNumber Comment hi def link vbComment Comment hi def link vbConditional Conditional hi def link vbConst Constant hi def link vbDefine Constant hi def link vbError Error hi def link vbFunction Identifier hi def link vbIdentifier Identifier hi def link vbNumber Number hi def link vbFloat Float hi def link vbMethods PreProc hi def link vbOperator Operator hi def link vbRepeat Repeat hi def link vbString String hi def link vbStatement Statement hi def link vbKeyword Statement hi def link vbEvents Special hi def link vbTodo Todo hi def link vbTypes Type hi def link vbTypeSpecifier Type let b:current_syntax = "vb" " vim: ts=8 PK�������!�~BI ��I ����vim80/syntax/ninja.vimnu�[��������" ninja build file syntax. " Language: ninja build file as described at " http://ninja-build.org/manual.html " Version: 1.5 " Last Change: 2018/04/05 " Maintainer: Nicolas Weber <nicolasweber@gmx.de> " Version 1.5 of this script is in the upstream vim repository and will be " included in the next vim release. If you change this, please send your change " upstream. " ninja lexer and parser are at " https://github.com/ninja-build/ninja/blob/master/src/lexer.in.cc " https://github.com/ninja-build/ninja/blob/master/src/manifest_parser.cc if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case match " Comments are only matched when the # is at the beginning of the line (with " optional whitespace), as long as the prior line didn't end with a $ " continuation. syn match ninjaComment /\(\$\n\)\@<!\_^\s*#.*$/ contains=@Spell " Toplevel statements are the ones listed here and " toplevel variable assignments (ident '=' value). " lexer.in.cc, ReadToken() and manifest_parser.cc, Parse() syn match ninjaKeyword "^build\>" syn match ninjaKeyword "^rule\>" syn match ninjaKeyword "^pool\>" syn match ninjaKeyword "^default\>" syn match ninjaKeyword "^include\>" syn match ninjaKeyword "^subninja\>" " Both 'build' and 'rule' begin a variable scope that ends " on the first line without indent. 'rule' allows only a " limited set of magic variables, 'build' allows general " let assignments. " manifest_parser.cc, ParseRule() syn region ninjaRule start="^rule" end="^\ze\S" contains=TOP transparent syn keyword ninjaRuleCommand contained containedin=ninjaRule command \ deps depfile description generator \ pool restat rspfile rspfile_content syn region ninjaPool start="^pool" end="^\ze\S" contains=TOP transparent syn keyword ninjaPoolCommand contained containedin=ninjaPool depth " Strings are parsed as follows: " lexer.in.cc, ReadEvalString() " simple_varname = [a-zA-Z0-9_-]+; " varname = [a-zA-Z0-9_.-]+; " $$ -> $ " $\n -> line continuation " '$ ' -> escaped space " $simple_varname -> variable " ${varname} -> variable syn match ninjaDollar "\$\$" syn match ninjaWrapLineOperator "\$$" syn match ninjaSimpleVar "\$[a-zA-Z0-9_-]\+" syn match ninjaVar "\${[a-zA-Z0-9_.-]\+}" " operators are: " variable assignment = " rule definition : " implicit dependency | " order-only dependency || syn match ninjaOperator "\(=\|:\||\|||\)\ze\s" hi def link ninjaComment Comment hi def link ninjaKeyword Keyword hi def link ninjaRuleCommand Statement hi def link ninjaPoolCommand Statement hi def link ninjaDollar ninjaOperator hi def link ninjaWrapLineOperator ninjaOperator hi def link ninjaOperator Operator hi def link ninjaSimpleVar ninjaVar hi def link ninjaVar Identifier let b:current_syntax = "ninja" let &cpo = s:cpo_save unlet s:cpo_save PK�������!�X<��<����vim80/syntax/gitrebase.vimnu�[��������" Vim syntax file " Language: git rebase --interactive " Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Filenames: git-rebase-todo " Last Change: 2016 Aug 29 if exists("b:current_syntax") finish endif syn case match syn match gitrebaseHash "\v<\x{7,40}>" contained syn match gitrebaseCommit "\v<\x{7,40}>" nextgroup=gitrebaseSummary skipwhite syn match gitrebasePick "\v^p%(ick)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseReword "\v^r%(eword)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseEdit "\v^e%(dit)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseFixup "\v^f%(ixup)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseExec "\v^%(x|exec)>" nextgroup=gitrebaseCommand skipwhite syn match gitrebaseDrop "\v^d%(rop)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseSummary ".*" contains=gitrebaseHash contained syn match gitrebaseCommand ".*" contained syn match gitrebaseComment "^#.*" contains=gitrebaseHash syn match gitrebaseSquashError "\v%^%(s%(quash)=>|f%(ixup)=>)" nextgroup=gitrebaseCommit skipwhite hi def link gitrebaseCommit gitrebaseHash hi def link gitrebaseHash Identifier hi def link gitrebasePick Statement hi def link gitrebaseReword Number hi def link gitrebaseEdit PreProc hi def link gitrebaseSquash Type hi def link gitrebaseFixup Special hi def link gitrebaseExec Function hi def link gitrebaseDrop Comment hi def link gitrebaseSummary String hi def link gitrebaseComment Comment hi def link gitrebaseSquashError Error let b:current_syntax = "gitrebase" PK�������!�������vim80/syntax/less.vimnu�[��������" Vim syntax file " Language: less " Maintainer: Alessandro Vioni <jenoma@gmail.com> " URL: https://github.com/genoma/vim-less " Last Change: 2014 November 24 if exists("b:current_syntax") finish endif runtime! syntax/css.vim runtime! after/syntax/css.vim syn case ignore syn cluster lessCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp syn cluster lessCssAttributes contains=css.*Attr,lessEndOfLineComment,lessComment,cssValue.*,cssColor,cssURL,lessDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp syn region lessDefinition matchgroup=cssBraces start="{" end="}" contains=TOP syn match lessProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=lessCssAttribute contained containedin=lessDefinition syn match lessProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=lessCssAttribute syn match lessProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=lessCssAttribute syn match lessCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@lessCssAttributes,lessVariable,lessFunction,lessInterpolation syn match lessDefault "!default\>" contained " less variables and media queries syn match lessVariable "@[[:alnum:]_-]\+" nextgroup=lessCssAttribute skipwhite syn match lessMedia "@media" nextgroup=lessCssAttribute skipwhite " Less functions syn match lessFunction "\<\%(escape\|e\|unit\)\>(\@=" contained syn match lessFunction "\<\%(ceil\|floor\|percentage\|round\|sqrt\|abs\|sin\|asin\|cos\|acos\|tan\|atan\|pi\|pow\|min\|max\)\>(\@=" contained syn match lessFunction "\<\%(rgb\|rgba\|argb\|argb\|hsl\|hsla\|hsv\|hsva\)\>(\@=" contained syn match lessFunction "\<\%(hue\|saturation\|lightness\|red\|green\|blue\|alpha\|luma\)\>(\@=" contained syn match lessFunction "\<\%(saturate\|desaturate\|lighten\|darken\|fadein\|fadeout\|fade\|spin\|mix\|greyscale\|contrast\)\>(\@=" contained syn match lessFunction "\<\%(multiply\|screen\|overlay\|softlight\|hardlight\|difference\|exclusion\|average\|negation\)\>(\@=" contained " Less id class visualization syn match lessIdChar "#[[:alnum:]_-]\@=" nextgroup=lessId,lessClassIdCall syn match lessId "[[:alnum:]_-]\+" contained syn match lessClassIdCall "[[:alnum:]_-]\+()" contained syn match lessClassChar "\.[[:alnum:]_-]\@=" nextgroup=lessClass,lessClassCall syn match lessClass "[[:alnum:]_-]\+" contained syn match lessClassCall "[[:alnum:]_-]\+()" contained syn match lessAmpersand "&" contains=lessIdChar,lessClassChar syn region lessInclude start="@import" end=";\|$" contains=lessComment,cssURL,cssUnicodeEscape,cssMediaType,cssStringQ,cssStringQQ syn keyword lessTodo FIXME NOTE TODO OPTIMIZE XXX contained syn region lessComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=lessTodo,@Spell syn region lessCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=lessTodo,@Spell syn match lessEndOfLineComment "//.*" contains=lessComment,lessTodo,@Spell hi def link lessEndOfLineComment lessComment hi def link lessCssComment lessComment hi def link lessComment Comment hi def link lessDefault cssImportant hi def link lessVariable Identifier hi def link lessFunction PreProc hi def link lessTodo Todo hi def link lessInclude Include hi def link lessIdChar Special hi def link lessClassChar Special hi def link lessAmpersand Character hi def link lessId Identifier hi def link lessClass Type hi def link lessCssAttribute PreProc hi def link lessClassCall Type hi def link lessClassIdCall Type hi def link lessTagName cssTagName hi def link lessDeprecated cssDeprecated hi def link lessMedia cssMedia let b:current_syntax = "less" " vim:set sw=2: PK�������!�l������vim80/syntax/dts.vimnu�[��������" Vim syntax file " Language: dts/dtsi (device tree files) " Maintainer: Daniel Mack <vim@zonque.org> " Last Change: 2013 Oct 20 if exists("b:current_syntax") finish endif syntax region dtsComment start="/\*" end="\*/" syntax match dtsReference "&[[:alpha:][:digit:]_]\+" syntax region dtsBinaryProperty start="\[" end="\]" syntax match dtsStringProperty "\".*\"" syntax match dtsKeyword "/.\{-1,\}/" syntax match dtsLabel "^[[:space:]]*[[:alpha:][:digit:]_]\+:" syntax match dtsNode /[[:alpha:][:digit:]-_]\+\(@[0-9a-fA-F]\+\|\)[[:space:]]*{/he=e-1 syntax region dtsCellProperty start="<" end=">" contains=dtsReference,dtsBinaryProperty,dtsStringProperty,dtsComment syntax region dtsCommentInner start="/\*" end="\*/" syntax match dtsCommentLine "//.*$" hi def link dtsCellProperty Number hi def link dtsBinaryProperty Number hi def link dtsStringProperty String hi def link dtsKeyword Include hi def link dtsLabel Label hi def link dtsNode Structure hi def link dtsReference Macro hi def link dtsComment Comment hi def link dtsCommentInner Comment hi def link dtsCommentLine Comment PK�������!�t)��)����vim80/syntax/freebasic.vimnu�[��������" Vim syntax file " Language: FreeBasic " Maintainer: Mark Manning <markem@airmail.net> " Updated: 10/22/2006 " " Description: " " Based originally on the work done by Allan Kelly <Allan.Kelly@ed.ac.uk> " Updated by Mark Manning <markem@airmail.net> " Applied FreeBasic support to the already excellent support " for standard basic syntax (like QB). " " First version based on Micro$soft QBASIC circa " 1989, as documented in 'Learn BASIC Now' by " Halvorson&Rygmyr. Microsoft Press 1989. This syntax file " not a complete implementation yet. Send suggestions to " the maintainer. " " Quit when a (custom) syntax file was already loaded (Taken from c.vim) " if exists("b:current_syntax") finish endif " " Be sure to turn on the "case ignore" since current versions " of freebasic support both upper as well as lowercase " letters. - MEM 10/1/2006 " syn case ignore " " This list of keywords is taken directly from the FreeBasic " user's guide as presented by the FreeBasic online site. " syn keyword freebasicArrays ERASE LBOUND REDIM PRESERVE UBOUND syn keyword freebasicBitManipulation BIT BITRESET BITSET HIBYTE HIWORD LOBYTE LOWORD SHL SHR syn keyword freebasicCompilerSwitches DEFBYTE DEFDBL DEFINT DEFLNG DEFLNGINT DEFSHORT DEFSNG DEFSTR syn keyword freebasicCompilerSwitches DEFUBYTE DEFUINT DEFULNGINT DEFUSHORT syn match freebasicCompilerSwitches "\<option\s+\(BASE\|BYVAL\|DYNAMIC\|ESCAPE\|EXPLICIT\|NOKEYWORD\)\>" syn match freebasicCompilerSwitches "\<option\s+\(PRIVATE\|STATIC\)\>" syn region freebasicConditional start="\son\s+" skip=".*" end="gosub" syn region freebasicConditional start="\son\s+" skip=".*" end="goto" syn match freebasicConditional "\<select\s+case\>" syn keyword freebasicConditional if iif then case else elseif with syn match freebasicConsole "\<open\s+\(CONS\|ERR\|PIPE\|SCRN\)\>" syn keyword freebasicConsole BEEP CLS CSRLIN LOCATE PRINT POS SPC TAB VIEW WIDTH syn keyword freebasicDataTypes BYTE AS DIM CONST DOUBLE ENUM INTEGER LONG LONGINT SHARED SHORT STRING syn keyword freebasicDataTypes SINGLE TYPE UBYTE UINTEGER ULONGINT UNION UNSIGNED USHORT WSTRING ZSTRING syn keyword freebasicDateTime DATE DATEADD DATEDIFF DATEPART DATESERIAL DATEVALUE DAY HOUR MINUTE syn keyword freebasicDateTime MONTH MONTHNAME NOW SECOND SETDATE SETTIME TIME TIMESERIAL TIMEVALUE syn keyword freebasicDateTime TIMER YEAR WEEKDAY WEEKDAYNAME syn keyword freebasicDebug ASSERT STOP syn keyword freebasicErrorHandling ERR ERL ERROR LOCAL RESUME syn match freebasicErrorHandling "\<resume\s+next\>" syn match freebasicErrorHandling "\<on\s+error\>" syn match freebasicFiles "\<get\s+#\>" syn match freebasicFiles "\<input\s+#\>" syn match freebasicFiles "\<line\s+input\s+#\>" syn match freebasicFiles "\<put\s+#\>" syn keyword freebasicFiles ACCESS APPEND BINARY BLOAD BSAVE CLOSE EOF FREEFILE INPUT LOC syn keyword freebasicFiles LOCK LOF OPEN OUTPUT RANDOM RESET SEEK UNLOCK WRITE syn keyword freebasicFunctions ALIAS ANY BYREF BYVAL CALL CDECL CONSTRUCTOR DESTRUCTOR syn keyword freebasicFunctions DECLARE FUNCTION LIB OVERLOAD PASCAL STATIC SUB STDCALL syn keyword freebasicFunctions VA_ARG VA_FIRST VA_NEXT syn match freebasicGraphics "\<palette\s+get\>" syn keyword freebasicGraphics ALPHA CIRCLE CLS COLOR CUSTOM DRAW FLIP GET syn keyword freebasicGraphics IMAGECREATE IMAGEDESTROY LINE PAINT PALETTE PCOPY PMAP POINT syn keyword freebasicGraphics PRESET PSET PUT RGB RGBA SCREEN SCREENCOPY SCREENINFO SCREENLIST syn keyword freebasicGraphics SCREENLOCK SCREENPTR SCREENRES SCREENSET SCREENSYNC SCREENUNLOCK syn keyword freebasicGraphics TRANS USING VIEW WINDOW syn match freebasicHardware "\<open\s+com\>" syn keyword freebasicHardware INP OUT WAIT LPT LPOS LPRINT syn keyword freebasicLogical AND EQV IMP OR NOT XOR syn keyword freebasicMath ABS ACOS ASIN ATAN2 ATN COS EXP FIX INT LOG MOD RANDOMIZE syn keyword freebasicMath RND SGN SIN SQR TAN syn keyword freebasicMemory ALLOCATE CALLOCATE CLEAR DEALLOCATE FIELD FRE PEEK POKE REALLOCATE syn keyword freebasicMisc ASM DATA LET TO READ RESTORE SIZEOF SWAP OFFSETOF syn keyword freebasicModularizing CHAIN COMMON EXPORT EXTERN DYLIBFREE DYLIBLOAD DYLIBSYMBOL syn keyword freebasicModularizing PRIVATE PUBLIC syn keyword freebasicMultithreading MUTEXCREATE MUTEXDESTROY MUTEXLOCK MUTEXUNLOCK THREADCREATE THREADWAIT syn keyword freebasicShell CHDIR DIR COMMAND ENVIRON EXEC EXEPATH KILL NAME MKDIR RMDIR RUN syn keyword freebasicEnviron SHELL SYSTEM WINDOWTITLE POINTERS syn keyword freebasicLoops FOR LOOP WHILE WEND DO CONTINUE STEP UNTIL next syn match freebasicInclude "\<#\s*\(inclib\|include\)\>" syn match freebasicInclude "\<\$\s*include\>" syn keyword freebasicPointer PROCPTR PTR SADD STRPTR VARPTR syn keyword freebasicPredefined __DATE__ __FB_DOS__ __FB_LINUX__ __FB_MAIN__ __FB_MIN_VERSION__ syn keyword freebasicPredefined __FB_SIGNATURE__ __FB_VERSION__ __FB_WIN32__ __FB_VER_MAJOR__ syn keyword freebasicPredefined __FB_VER_MINOR__ __FB_VER_PATCH__ __FILE__ __FUNCTION__ syn keyword freebasicPredefined __LINE__ __TIME__ syn match freebasicPreProcessor "\<^#\s*\(define\|undef\)\>" syn match freebasicPreProcessor "\<^#\s*\(ifdef\|ifndef\|else\|elseif\|endif\|if\)\>" syn match freebasicPreProcessor "\<#\s*error\>" syn match freebasicPreProcessor "\<#\s*\(print\|dynamic\|static\)\>" syn keyword freebasicPreProcessor DEFINED ONCE syn keyword freebasicProgramFlow END EXIT GOSUB GOTO syn keyword freebasicProgramFlow IS RETURN SCOPE SLEEP syn keyword freebasicString INSTR LCASE LEFT LEN LSET LTRIM MID RIGHT RSET RTRIM syn keyword freebasicString SPACE STRING TRIM UCASE ASC BIN CHR CVD CVI CVL CVLONGINT syn keyword freebasicString CVS CVSHORT FORMAT HEX MKD MKI MKL MKLONGINT MKS MKSHORT syn keyword freebasicString OCT STR VAL VALLNG VALINT VALUINT VALULNG syn keyword freebasicTypeCasting CAST CBYTE CDBL CINT CLNG CLNGINT CPTR CSHORT CSIGN CSNG syn keyword freebasicTypeCasting CUBYTE CUINT CULNGINT CUNSG CURDIR CUSHORT syn match freebasicUserInput "\<line\s+input\>" syn keyword freebasicUserInput GETJOYSTICK GETKEY GETMOUSE INKEY INPUT MULTIKEY SETMOUSE " " Do the Basic variables names first. This is because it " is the most inclusive of the tests. Later on we change " this so the identifiers are split up into the various " types of identifiers like functions, basic commands and " such. MEM 9/9/2006 " syn match freebasicIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" syn match freebasicGenericFunction "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1 " " Function list " syn keyword freebasicTodo contained TODO " " Catch errors caused by wrong parenthesis " syn region freebasicParen transparent start='(' end=')' contains=ALLBUT,@freebasicParenGroup syn match freebasicParenError ")" syn match freebasicInParen contained "[{}]" syn cluster freebasicParenGroup contains=freebasicParenError,freebasicSpecial,freebasicTodo,freebasicUserCont,freebasicUserLabel,freebasicBitField " " Integer number, or floating point number without a dot and with "f". " syn region freebasicHex start="&h" end="\W" syn region freebasicHexError start="&h\x*[g-zG-Z]" end="\W" syn match freebasicInteger "\<\d\+\(u\=l\=\|lu\|f\)\>" " " Floating point number, with dot, optional exponent " syn match freebasicFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" " " Floating point number, starting with a dot, optional exponent " syn match freebasicFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" " " Floating point number, without dot, with exponent " syn match freebasicFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" " " Hex number " syn case match syn match freebasicOctal "\<0\o*\>" syn match freebasicOctalError "\<0\o*[89]" " " String and Character contstants " syn region freebasicString start='"' end='"' contains=freebasicSpecial,freebasicTodo syn region freebasicString start="'" end="'" contains=freebasicSpecial,freebasicTodo " " Comments " syn match freebasicSpecial contained "\\." syn region freebasicComment start="^rem" end="$" contains=freebasicSpecial,freebasicTodo syn region freebasicComment start=":\s*rem" end="$" contains=freebasicSpecial,freebasicTodo syn region freebasicComment start="\s*'" end="$" contains=freebasicSpecial,freebasicTodo syn region freebasicComment start="^'" end="$" contains=freebasicSpecial,freebasicTodo " " Now do the comments and labels " syn match freebasicLabel "^\d" syn match freebasicLabel "\<^\w+:\>" syn region freebasicLineNumber start="^\d" end="\s" " " Create the clusters " syn cluster freebasicNumber contains=freebasicHex,freebasicOctal,freebasicInteger,freebasicFloat syn cluster freebasicError contains=freebasicHexError,freebasicOctalError " " Used with OPEN statement " syn match freebasicFilenumber "#\d\+" syn match freebasicMathOperator "[\+\-\=\|\*\/\>\<\%\()[\]]" contains=freebasicParen " " The default methods for highlighting. Can be overridden later " hi def link freebasicArrays StorageClass hi def link freebasicBitManipulation Operator hi def link freebasicCompilerSwitches PreCondit hi def link freebasicConsole Special hi def link freebasicDataTypes Type hi def link freebasicDateTime Type hi def link freebasicDebug Special hi def link freebasicErrorHandling Special hi def link freebasicFiles Special hi def link freebasicFunctions Function hi def link freebasicGraphics Function hi def link freebasicHardware Special hi def link freebasicLogical Conditional hi def link freebasicMath Function hi def link freebasicMemory Function hi def link freebasicMisc Special hi def link freebasicModularizing Special hi def link freebasicMultithreading Special hi def link freebasicShell Special hi def link freebasicEnviron Special hi def link freebasicPointer Special hi def link freebasicPredefined PreProc hi def link freebasicPreProcessor PreProc hi def link freebasicProgramFlow Statement hi def link freebasicString String hi def link freebasicTypeCasting Type hi def link freebasicUserInput Statement hi def link freebasicComment Comment hi def link freebasicConditional Conditional hi def link freebasicError Error hi def link freebasicIdentifier Identifier hi def link freebasicInclude Include hi def link freebasicGenericFunction Function hi def link freebasicLabel Label hi def link freebasicLineNumber Label hi def link freebasicMathOperator Operator hi def link freebasicNumber Number hi def link freebasicSpecial Special hi def link freebasicTodo Todo let b:current_syntax = "freebasic" " vim: ts=8 PK�������!�Ĝ������vim80/syntax/cmod.vimnu�[��������" Vim syntax file " Language: Cmod " Current Maintainer: Stephen R. van den Berg <srb@cuci.nl> " Last Change: 2018 Jan 23 " Version: 2.9 " Remark: Is used to edit Cmod files for Pike development. " Remark: Includes a highlighter for any embedded Autodoc format. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " Read the C syntax to start with runtime! syntax/c.vim unlet b:current_syntax if !exists("c_autodoc") " For embedded Autodoc documentation syn include @cmodAutodoc <sfile>:p:h/autodoc.vim unlet b:current_syntax endif " Supports rotating amongst several same-level preprocessor conditionals packadd! matchit let b:match_words = "({:}\\@1<=),^\s*#\s*\%(if\%(n\?def\)\|else\|el\%(se\)\?if\|endif\)\>" " Cmod extensions syn keyword cmodStatement __INIT INIT EXIT GC_RECURSE GC_CHECK syn keyword cmodStatement EXTRA OPTIMIZE RETURN syn keyword cmodStatement ADD_EFUN ADD_EFUN2 ADD_FUNCTION syn keyword cmodStatement MK_STRING MK_STRING_SVALUE CONSTANT_STRLEN syn keyword cmodStatement SET_SVAL pop_n_elems pop_stack syn keyword cmodStatement SIMPLE_ARG_TYPE_ERROR Pike_sp Pike_fp MKPCHARP syn keyword cmodStatement SET_SVAL_TYPE REF_MAKE_CONST_STRING INC_PCHARP syn keyword cmodStatement PTR_FROM_INT INHERIT_FROM_PTR syn keyword cmodStatement DECLARE_CYCLIC BEGIN_CYCLIC END_CYCLIC syn keyword cmodStatement UPDATE_LOCATION UNSAFE_IS_ZERO SAFE_IS_ZERO syn keyword cmodStatement MKPCHARP_STR APPLY_MASTER current_storage syn keyword cmodStatement PIKE_MAP_VARIABLE size_shift syn keyword cmodStatement THREADS_ALLOW THREADS_DISALLOW syn keyword cmodStatement add_integer_constant ref_push_object syn keyword cmodStatement push_string apply_svalue free_svalue syn keyword cmodStatement get_inherit_storage get_storage syn keyword cmodStatement make_shared_binary_string push_int64 syn keyword cmodStatement begin_shared_string end_shared_string syn keyword cmodStatement add_ref fast_clone_object clone_object syn keyword cmodStatement push_undefined push_int ref_push_string syn keyword cmodStatement free_string push_ulongest free_object syn keyword cmodStatement convert_stack_top_to_bignum push_array syn keyword cmodStatement push_object reduce_stack_top_bignum syn keyword cmodStatement push_static_text apply_current syn keyword cmodStatement assign_svalue free_program destruct_object syn keyword cmodStatement start_new_program low_inherit stack_swap syn keyword cmodStatement generic_error_program end_program syn keyword cmodStatement free_array apply_external copy_mapping syn keyword cmodStatement push_constant_text ref_push_mapping syn keyword cmodStatement mapping_insert mapping_string_insert_string syn keyword cmodStatement f_aggregate_mapping f_aggregate apply syn keyword cmodStatement push_mapping push_svalue low_mapping_lookup syn keyword cmodStatement assign_svalues_no_free f_add syn keyword cmodStatement push_empty_string stack_dup assign_lvalue syn keyword cmodStatement low_mapping_string_lookup allocate_mapping syn keyword cmodStatement copy_shared_string make_shared_binary_string0 syn keyword cmodStatement f_call_function f_index f_utf8_to_string syn keyword cmodStatement finish_string_builder init_string_builder syn keyword cmodStatement reset_string_builder free_string_builder syn keyword cmodStatement string_builder_putchar get_all_args syn keyword cmodStatement add_shared_strings check_all_args syn keyword cmodStatement do_inherit add_string_constant syn keyword cmodStatement add_program_constant set_init_callback syn keyword cmodStatement simple_mapping_string_lookup syn keyword cmodStatement f_sprintf push_text string_has_null syn keyword cmodStatement end_and_resize_shared_string syn keyword cmodStatement args sp syn keyword cmodStatement free syn keyword cmodConstant ID_PROTECTED ID_FINAL PIKE_DEBUG syn keyword cmodConstant NUMBER_NUMBER syn keyword cmodConstant PIKE_T_INT PIKE_T_STRING PIKE_T_ARRAY syn keyword cmodConstant PIKE_T_MULTISET PIKE_T_OBJECT PIKE_T_MAPPING syn keyword cmodConstant NUMBER_UNDEFINED PIKE_T_PROGRAM PIKE_T_FUNCTION syn keyword cmodConstant T_OBJECT T_STRING T_ARRAY T_MAPPING syn keyword cmodException SET_ONERROR UNSET_ONERROR ONERROR syn keyword cmodException CALL_AND_UNSET_ONERROR syn keyword cmodDebug Pike_fatal Pike_error check_stack syn keyword cmodAccess public protected private INHERIT syn keyword cmodAccess CTYPE CVAR PIKEVAR PIKEFUN syn keyword cmodModifier efun export flags optflags optfunc syn keyword cmodModifier type rawtype errname name c_name prototype syn keyword cmodModifier program_flags gc_trivial PMOD_EXPORT syn keyword cmodModifier ATTRIBUTE noclone noinline syn keyword cmodModifier tOr tFuncV tInt tMix tVoid tStr tMap tPrg syn keyword cmodModifier tSetvar tArr tMult tMultiset syn keyword cmodModifier tArray tMapping tString tSetvar tVar syn keyword cmodType bool mapping string multiset array mixed syn keyword cmodType object function program auto svalue syn keyword cmodType bignum longest zero pike_string syn keyword cmodType this this_program THIS INT_TYPE INT64 INT32 syn keyword cmodType p_wchar2 PCHARP p_wchar1 p_wchar0 MP_INT syn keyword cmodOperator _destruct create __hash _sizeof _indices _values syn keyword cmodOperator _is_type _sprintf _equal _m_delete _get_iterator syn keyword cmodOperator _search _types _serialize _deserialize syn keyword cmodOperator _size_object _random _sqrt TYPEOF SUBTYPEOF syn keyword cmodOperator LIKELY UNLIKELY syn keyword cmodStructure DECLARATIONS PIKECLASS DECLARE_STORAGE if !exists("c_autodoc") syn match cmodAutodocReal display contained "\%(//\|[/ \t\v]\*\|^\*\)\@2<=!.*" contains=@cmodAutodoc containedin=cComment,cCommentL syn cluster cCommentGroup add=cmodAutodocReal syn cluster cPreProcGroup add=cmodAutodocReal endif " Default highlighting hi def link cmodAccess Statement hi def link cmodOperator Operator hi def link cmodStatement Statement hi def link cmodConstant Constant hi def link cmodModifier Type hi def link cmodType Type hi def link cmodStorageClass StorageClass hi def link cmodStructure Structure hi def link cmodException Exception hi def link cmodDebug Debug let b:current_syntax = "cmod" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK�������!�1+~:cd��cd����vim80/syntax/rpl.vimnu�[��������" Vim syntax file " Language: RPL/2 " Version: 0.15.15 against RPL/2 version 4.00pre7i " Last Change: 2012 Feb 03 by Thilo Six " Maintainer: Jol BERTRAND <rpl2@free.fr> " URL: http://www.makalis.fr/~bertrand/rpl2/download/vim/indent/rpl.vim " Credits: Nothing " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " Keyword characters (not used) " set iskeyword=33-127 " Case sensitive syntax case match " Constants syntax match rplConstant "\(^\|\s\+\)\(e\|i\)\ze\($\|\s\+\)" " Any binary number syntax match rplBinaryError "\(^\|\s\+\)#\s*\S\+b\ze" syntax match rplBinary "\(^\|\s\+\)#\s*[01]\+b\ze\($\|\s\+\)" syntax match rplOctalError "\(^\|\s\+\)#\s*\S\+o\ze" syntax match rplOctal "\(^\|\s\+\)#\s*\o\+o\ze\($\|\s\+\)" syntax match rplDecimalError "\(^\|\s\+\)#\s*\S\+d\ze" syntax match rplDecimal "\(^\|\s\+\)#\s*\d\+d\ze\($\|\s\+\)" syntax match rplHexadecimalError "\(^\|\s\+\)#\s*\S\+h\ze" syntax match rplHexadecimal "\(^\|\s\+\)#\s*\x\+h\ze\($\|\s\+\)" " Case unsensitive syntax case ignore syntax match rplControl "\(^\|\s\+\)abort\ze\($\|\s\+\)" syntax match rplControl "\(^\|\s\+\)kill\ze\($\|\s\+\)" syntax match rplControl "\(^\|\s\+\)cont\ze\($\|\s\+\)" syntax match rplControl "\(^\|\s\+\)halt\ze\($\|\s\+\)" syntax match rplControl "\(^\|\s\+\)cmlf\ze\($\|\s\+\)" syntax match rplControl "\(^\|\s\+\)sst\ze\($\|\s\+\)" syntax match rplConstant "\(^\|\s\+\)pi\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)return\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)last\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)syzeval\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)wait\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)type\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)kind\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)eval\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)use\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)remove\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)external\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)dup\([2n]\|\)\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)drop\([2n]\|\)\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)depth\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)roll\(d\|\)\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)pick\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)rot\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)swap\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)over\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)clear\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)warranty\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)copyright\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)convert\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)date\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)time\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)mem\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)clmf\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)->num\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)help\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)get\(i\|r\|c\|\)\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)put\(i\|r\|c\|\)\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)rcl\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)purge\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)sinv\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)sneg\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)sconj\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)steq\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)rceq\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)vars\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)clusr\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)sto\([+-/\*]\|\)\ze\($\|\s\+\)" syntax match rplAlgConditional "\(^\|\s\+\)ift\(e\|\)\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)and\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)\(x\|\)or\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)not\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)same\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)==\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)<=\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)=<\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)=>\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)>=\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)<>\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)>\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)<\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)[+-]\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)[/\*]\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)\^\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)\*\*\ze\($\|\s\+\)" syntax match rplBoolean "\(^\|\s\+\)true\ze\($\|\s\+\)" syntax match rplBoolean "\(^\|\s\+\)false\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)store\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)recall\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\(\|wf\|un\)lock\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)open\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)close\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)delete\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)create\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)format\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)rewind\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)backspace\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\(\|re\)write\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)read\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)inquire\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)sync\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)append\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)suppress\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)seek\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)pr\(1\|int\|st\|stc\|lcd\|var\|usr\|md\)\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)paper\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)cr\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)erase\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)disp\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)input\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)prompt\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)key\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)cllcd\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\(\|re\)draw\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)drax\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)indep\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)depnd\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)res\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)axes\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)label\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)pmin\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)pmax\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)centr\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)persist\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)title\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\(slice\|auto\|log\|\)scale\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)eyept\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\(p\|s\)par\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)function\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)polar\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)scatter\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)plotter\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)wireframe\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)parametric\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)slice\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\*w\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\*h\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\*d\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\*s\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)->lcd\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)lcd->\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)edit\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)visit\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)abs\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)arg\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)conj\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)re\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)im\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)mant\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)xpon\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)ceil\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)fact\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)fp\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)floor\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)inv\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)ip\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)max\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)min\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)mod\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)neg\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)relax\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)sign\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)sq\(\|rt\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)xroot\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)cos\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)sin\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)tan\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)tg\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)a\(\|rc\)cos\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)a\(\|rc\)sin\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)atan\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)arctg\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)cosh\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)sinh\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)tanh\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|arg\)th\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)arg[cst]h\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)log\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)ln\(\|1\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)exp\(\|m\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)trn\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)con\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)idn\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)rdm\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)rsd\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)cnrm\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)cross\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)d[eo]t\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)[cr]swp\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)rci\(j\|\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(in\|de\)cr\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)bessel\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|g\)egvl\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|g\)\(\|l\|r\)egv\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)rnrm\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(std\|fix\|sci\|eng\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(rad\|deg\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|n\)rand\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)rdz\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|i\)fft\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(dec\|bin\|oct\|hex\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)rclf\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)stof\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)[cs]f\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)chr\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)num\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)pos\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)sub\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)size\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(st\|rc\)ws\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(r\|s\)\(r\|l\)\(\|b\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)as\(r\|l\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(int\|der\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)stos\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|r\)cls\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)drws\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)scls\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)ns\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)tot\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)mean\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)sdev\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)var\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)maxs\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)mins\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)cov\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)cols\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)s\(x\(\|y\|2\)\|y\(\|2\)\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(x\|y\)col\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)corr\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)utp[cfnt]\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)comb\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)perm\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)lu\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)[lu]chol\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)schur\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)%\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)%ch\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)%t\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)hms->\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)->hms\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)hms+\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)hms-\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)d->r\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)r->d\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)b->r\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)r->b\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)c->r\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)r->c\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)r->p\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)p->r\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)str->\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)->str\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)array->\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)->array\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)list->\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)->list\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)s+\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)s-\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)col-\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)col+\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)row-\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)row+\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)->q\ze\($\|\s\+\)" syntax match rplObsolete "\(^\|\s\+\)arry->\ze\($\|\s\+\)"hs=e-5 syntax match rplObsolete "\(^\|\s\+\)->arry\ze\($\|\s\+\)"hs=e-5 " Conditional structures syntax match rplConditionalError "\(^\|\s\+\)case\ze\($\|\s\+\)"hs=e-3 syntax match rplConditionalError "\(^\|\s\+\)then\ze\($\|\s\+\)"hs=e-3 syntax match rplConditionalError "\(^\|\s\+\)else\ze\($\|\s\+\)"hs=e-3 syntax match rplConditionalError "\(^\|\s\+\)elseif\ze\($\|\s\+\)"hs=e-5 syntax match rplConditionalError "\(^\|\s\+\)end\ze\($\|\s\+\)"hs=e-2 syntax match rplConditionalError "\(^\|\s\+\)\(step\|next\)\ze\($\|\s\+\)"hs=e-3 syntax match rplConditionalError "\(^\|\s\+\)until\ze\($\|\s\+\)"hs=e-4 syntax match rplConditionalError "\(^\|\s\+\)repeat\ze\($\|\s\+\)"hs=e-5 syntax match rplConditionalError "\(^\|\s\+\)default\ze\($\|\s\+\)"hs=e-6 " FOR/(CYCLE)/(EXIT)/NEXT " FOR/(CYCLE)/(EXIT)/STEP " START/(CYCLE)/(EXIT)/NEXT " START/(CYCLE)/(EXIT)/STEP syntax match rplCycle "\(^\|\s\+\)\(cycle\|exit\)\ze\($\|\s\+\)" syntax region rplForNext matchgroup=rplRepeat start="\(^\|\s\+\)\(for\|start\)\ze\($\|\s\+\)" end="\(^\|\s\+\)\(next\|step\)\ze\($\|\s\+\)" contains=ALL keepend extend " ELSEIF/END syntax region rplElseifEnd matchgroup=rplConditional start="\(^\|\s\+\)elseif\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained contains=ALLBUT,rplElseEnd keepend " ELSE/END syntax region rplElseEnd matchgroup=rplConditional start="\(^\|\s\+\)else\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained contains=ALLBUT,rplElseEnd,rplThenEnd,rplElseifEnd keepend " THEN/END syntax region rplThenEnd matchgroup=rplConditional start="\(^\|\s\+\)then\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained containedin=rplIfEnd contains=ALLBUT,rplThenEnd keepend " IF/END syntax region rplIfEnd matchgroup=rplConditional start="\(^\|\s\+\)if\(err\|\)\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplElseEnd,rplElseifEnd keepend extend " if end is accepted ! " select end too ! " CASE/THEN syntax region rplCaseThen matchgroup=rplConditional start="\(^\|\s\+\)case\ze\($\|\s\+\)" end="\(^\|\s\+\)then\ze\($\|\s\+\)" contains=ALLBUT,rplCaseThen,rplCaseEnd,rplThenEnd keepend extend contained containedin=rplCaseEnd " CASE/END syntax region rplCaseEnd matchgroup=rplConditional start="\(^\|\s\+\)case\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplCaseEnd,rplThenEnd,rplElseEnd keepend extend contained containedin=rplSelectEnd " DEFAULT/END syntax region rplDefaultEnd matchgroup=rplConditional start="\(^\|\s\+\)default\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplDefaultEnd keepend contained containedin=rplSelectEnd " SELECT/END syntax region rplSelectEnd matchgroup=rplConditional start="\(^\|\s\+\)select\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplThenEnd keepend extend " select end is accepted ! " DO/UNTIL/END syntax region rplUntilEnd matchgroup=rplConditional start="\(^\|\s\+\)until\ze\($\|\s\+\)" end="\(^\|\s\+\)\zsend\ze\($\|\s\+\)" contains=ALLBUT,rplUntilEnd contained containedin=rplDoUntil extend keepend syntax region rplDoUntil matchgroup=rplConditional start="\(^\|\s\+\)do\ze\($\|\s\+\)" end="\(^\|\s\+\)until\ze\($\|\s\+\)" contains=ALL keepend extend " WHILE/REPEAT/END syntax region rplRepeatEnd matchgroup=rplConditional start="\(^\|\s\+\)repeat\ze\($\|\s\+\)" end="\(^\|\s\+\)\zsend\ze\($\|\s\+\)" contains=ALLBUT,rplRepeatEnd contained containedin=rplWhileRepeat extend keepend syntax region rplWhileRepeat matchgroup=rplConditional start="\(^\|\s\+\)while\ze\($\|\s\+\)" end="\(^\|\s\+\)repeat\ze\($\|\s\+\)" contains=ALL keepend extend " Comments syntax match rplCommentError "\*/" syntax region rplCommentString contained start=+"+ end=+"+ end=+\*/+me=s-1 syntax region rplCommentLine start="\(^\|\s\+\)//\ze" skip="\\$" end="$" contains=NONE keepend extend syntax region rplComment start="\(^\|\s\+\)/\*\ze" end="\*/" contains=rplCommentString keepend extend " Catch errors caused by too many right parentheses syntax region rplParen transparent start="(" end=")" contains=ALLBUT,rplParenError,rplComplex,rplIncluded keepend extend syntax match rplParenError ")" " Subroutines " Catch errors caused by too many right '>>' syntax match rplSubError "\(^\|\s\+\)>>\ze\($\|\s\+\)"hs=e-1 syntax region rplSub matchgroup=rplSubDelimitor start="\(^\|\s\+\)<<\ze\($\|\s\+\)" end="\(^\|\s\+\)>>\ze\($\|\s\+\)" contains=ALLBUT,rplSubError,rplIncluded,rplDefaultEnd,rplStorageSub keepend extend " Expressions syntax region rplExpr start="\(^\|\s\+\)'" end="'\ze\($\|\s\+\)" contains=rplParen,rplParenError " Local variables syntax match rplStorageError "\(^\|\s\+\)->\ze\($\|\s\+\)"hs=e-1 syntax region rplStorageSub matchgroup=rplStorage start="\(^\|\s\+\)<<\ze\($\|\s\+\)" end="\(^\|\s\+\)>>\ze\($\|\s\+\)" contains=ALLBUT,rplSubError,rplIncluded,rplDefaultEnd,rplStorageExpr contained containedin=rplLocalStorage keepend extend syntax region rplStorageExpr matchgroup=rplStorage start="\(^\|\s\+\)'" end="'\ze\($\|\s\+\)" contains=rplParen,rplParenError extend contained containedin=rplLocalStorage syntax region rplLocalStorage matchgroup=rplStorage start="\(^\|\s\+\)->\ze\($\|\s\+\)" end="\(^\|\s\+\)\(<<\ze\($\|\s\+\)\|'\)" contains=rplStorageSub,rplStorageExpr,rplComment,rplCommentLine keepend extend " Catch errors caused by too many right brackets syntax match rplArrayError "\]" syntax match rplArray "\]" contained containedin=rplArray syntax region rplArray matchgroup=rplArray start="\[" end="\]" contains=ALLBUT,rplArrayError keepend extend " Catch errors caused by too many right '}' syntax match rplListError "}" syntax match rplList "}" contained containedin=rplList syntax region rplList matchgroup=rplList start="{" end="}" contains=ALLBUT,rplListError,rplIncluded keepend extend " cpp is used by RPL/2 syntax match rplPreProc "\_^#\s*\(define\|undef\)\>" syntax match rplPreProc "\_^#\s*\(warning\|error\)\>" syntax match rplPreCondit "\_^#\s*\(if\|ifdef\|ifndef\|elif\|else\|endif\)\>" syntax match rplIncluded contained "\<<\s*\S*\s*>\>" syntax match rplInclude "\_^#\s*include\>\s*["<]" contains=rplIncluded,rplString "syntax match rplExecPath "\%^\_^#!\s*\S*" syntax match rplExecPath "\%^\_^#!\p*\_$" " Any integer syntax match rplInteger "\(^\|\s\+\)[-+]\=\d\+\ze\($\|\s\+\)" " Floating point number " [S][ip].[fp] syntax match rplFloat "\(^\|\s\+\)[-+]\=\(\d*\)\=[\.,]\(\d*\)\=\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign " [S]ip[.fp]E[S]exp syntax match rplFloat "\(^\|\s\+\)[-+]\=\d\+\([\.,]\d*\)\=[eE]\([-+]\)\=\d\+\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign " [S].fpE[S]exp syntax match rplFloat "\(^\|\s\+\)[-+]\=\(\d*\)\=[\.,]\d\+[eE]\([-+]\)\=\d\+\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign syntax match rplPoint "\<[\.,]\>" syntax match rplSign "\<[+-]\>" " Complex number " (x,y) syntax match rplComplex "\(^\|\s\+\)([-+]\=\(\d*\)\=\.\=\d*\([eE][-+]\=\d\+\)\=\s*,\s*[-+]\=\(\d*\)\=\.\=\d*\([eE][-+]\=\d\+\)\=)\ze\($\|\s\+\)" " (x.y) syntax match rplComplex "\(^\|\s\+\)([-+]\=\(\d*\)\=,\=\d*\([eE][-+]\=\d\+\)\=\s*\.\s*[-+]\=\(\d*\)\=,\=\d*\([eE][-+]\=\d\+\)\=)\ze\($\|\s\+\)" " Strings syntax match rplStringGuilles "\\\"" syntax match rplStringAntislash "\\\\" syntax region rplString start=+\(^\|\s\+\)"+ end=+"\ze\($\|\s\+\)+ contains=rplStringGuilles,rplStringAntislash syntax match rplTab "\t" transparent " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default highlighting. hi def link rplControl Statement hi def link rplStatement Statement hi def link rplAlgConditional Conditional hi def link rplConditional Repeat hi def link rplConditionalError Error hi def link rplRepeat Repeat hi def link rplCycle Repeat hi def link rplUntil Repeat hi def link rplIntrinsic Special hi def link rplStorage StorageClass hi def link rplStorageExpr StorageClass hi def link rplStorageError Error hi def link rplReadWrite rplIntrinsic hi def link rplOperator Operator hi def link rplList Special hi def link rplArray Special hi def link rplConstant Identifier hi def link rplExpr Type hi def link rplString String hi def link rplStringGuilles String hi def link rplStringAntislash String hi def link rplBinary Boolean hi def link rplOctal Boolean hi def link rplDecimal Boolean hi def link rplHexadecimal Boolean hi def link rplInteger Number hi def link rplFloat Float hi def link rplComplex Float hi def link rplBoolean Identifier hi def link rplObsolete Todo hi def link rplPreCondit PreCondit hi def link rplInclude Include hi def link rplIncluded rplString hi def link rplInclude Include hi def link rplExecPath Include hi def link rplPreProc PreProc hi def link rplComment Comment hi def link rplCommentLine Comment hi def link rplCommentString Comment hi def link rplSubDelimitor rplStorage hi def link rplCommentError Error hi def link rplParenError Error hi def link rplSubError Error hi def link rplArrayError Error hi def link rplListError Error hi def link rplTab Error hi def link rplBinaryError Error hi def link rplOctalError Error hi def link rplDecimalError Error hi def link rplHexadecimalError Error let b:current_syntax = "rpl" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 tw=132 PK�������!�ۡ>��>����vim80/syntax/fstab.vimnu�[��������" Vim syntax file " Language: fstab file " Maintainer: Radu Dineiu <radu.dineiu@gmail.com> " URL: https://raw.github.com/rid9/vim-fstab/master/fstab.vim " Last Change: 2017 Nov 09 " Version: 1.2 " " Credits: " David Necas (Yeti) <yeti@physics.muni.cz> " Stefano Zacchiroli <zack@debian.org> " Georgi Georgiev <chutz@gg3.net> " James Vega <jamessan@debian.org> " Elias Probst <mail@eliasprobst.eu> " Options: " let fstab_unknown_fs_errors = 1 " highlight unknown filesystems as errors " " let fstab_unknown_device_errors = 0 " do not highlight unknown devices as errors " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " General syn cluster fsGeneralCluster contains=fsComment syn match fsComment /\s*#.*/ contains=@Spell syn match fsOperator /[,=:#]/ " Device syn cluster fsDeviceCluster contains=fsOperator,fsDeviceKeyword,fsDeviceError syn match fsDeviceError /\%([^a-zA-Z0-9_\/#@:\.-]\|^\w\{-}\ze\W\)/ contained syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts devtmpfs sysfs usbfs syn keyword fsDeviceKeyword contained LABEL nextgroup=fsDeviceLabel syn keyword fsDeviceKeyword contained UUID nextgroup=fsDeviceUUID syn keyword fsDeviceKeyword contained PARTLABEL nextgroup=fsDevicePARTLABEL syn keyword fsDeviceKeyword contained PARTUUID nextgroup=fsDevicePARTUUID syn keyword fsDeviceKeyword contained sshfs nextgroup=fsDeviceSshfs syn match fsDeviceKeyword contained /^[a-zA-Z0-9.\-]\+\ze:/ syn match fsDeviceLabel contained /=[^ \t]\+/hs=s+1 contains=fsOperator syn match fsDeviceUUID contained /=[^ \t]\+/hs=s+1 contains=fsOperator syn match fsDevicePARTLABEL contained /=[^ \t]\+/hs=s+1 contains=fsOperator syn match fsDevicePARTUUID contained /=[^ \t]\+/hs=s+1 contains=fsOperator syn match fsDeviceSshfs contained /#[_=[:alnum:]\.\/+-]\+@[a-z0-9._-]\+\a\{2}:[^ \t]\+/hs=s+1 contains=fsOperator " Mount Point syn cluster fsMountPointCluster contains=fsMountPointKeyword,fsMountPointError syn match fsMountPointError /\%([^ \ta-zA-Z0-9_\/#@\.-]\|\s\+\zs\w\{-}\ze\s\)/ contained syn keyword fsMountPointKeyword contained none swap " Type syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown syn match fsTypeUnknown /\s\+\zs\w\+/ contained syn keyword fsTypeKeyword contained adfs ados affs anon_inodefs atfs audiofs auto autofs bdev befs bfs btrfs binfmt_misc cd9660 cfs cgroup cifs coda configfs cpuset cramfs devfs devpts devtmpfs e2compr efs ext2 ext2fs ext3 ext4 fdesc ffs filecore fuse fuseblk fusectl hfs hpfs hugetlbfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix mqueue msdos ncpfs nfs nfsd nilfs2 none ntfs null nwfs overlay ovlfs pipefs portal proc procfs pstore ptyfs qnx4 reiserfs ramfs romfs rpc_pipefs securityfs shm smbfs squashfs sockfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xenfs xfs zisofs " Options " ------- " Options: General syn cluster fsOptionsCluster contains=fsOperator,fsOptionsGeneral,fsOptionsKeywords,fsTypeUnknown syn match fsOptionsNumber /\d\+/ syn match fsOptionsNumberOctal /[0-8]\+/ syn match fsOptionsString /[a-zA-Z0-9_-]\+/ syn keyword fsOptionsYesNo yes no syn cluster fsOptionsCheckCluster contains=fsOptionsExt2Check,fsOptionsFatCheck syn keyword fsOptionsSize 512 1024 2048 syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devmtime devuid dirsync exec force fstab kudzu loop managed mand move noatime noauto noclusterr noclusterw nodev nodevmtime nodiratime noexec nomand norelatime nosuid nosymfollow nouser owner pamconsole rbind rdonly relatime remount ro rq rw suid suiddir supermount sw sync union update user users wxallowed xx syn match fsOptionsGeneral /_netdev/ " Options: adfs syn match fsOptionsKeywords contained /\<\%([ug]id\|o\%(wn\|th\)mask\)=/ nextgroup=fsOptionsNumber " Options: affs syn match fsOptionsKeywords contained /\<\%(set[ug]id\|mode\|reserved\)=/ nextgroup=fsOptionsNumber syn match fsOptionsKeywords contained /\<\%(prefix\|volume\|root\)=/ nextgroup=fsOptionsString syn match fsOptionsKeywords contained /\<bs=/ nextgroup=fsOptionsSize syn keyword fsOptionsKeywords contained protect usemp verbose " Options: btrfs syn match fsOptionsKeywords contained /\<\%(subvol\|subvolid\|subvolrootid\|device\|compress\|compress-force\|fatal_errors\)=/ nextgroup=fsOptionsString syn match fsOptionsKeywords contained /\<\%(max_inline\|alloc_start\|thread_pool\|metadata_ratio\|check_int_print_mask\)=/ nextgroup=fsOptionsNumber syn keyword fsOptionsKeywords contained degraded nodatasum nodatacow nobarrier ssd ssd_spread noacl notreelog flushoncommit space_cache nospace_cache clear_cache user_subvol_rm_allowed autodefrag inode_cache enospc_debug recovery check_int check_int_data skip_balance discard " Options: cd9660 syn keyword fsOptionsKeywords contained extatt gens norrip nostrictjoilet " Options: devpts " -- everything already defined " Options: ext2 syn match fsOptionsKeywords contained /\<check=*/ nextgroup=@fsOptionsCheckCluster syn match fsOptionsKeywords contained /\<errors=/ nextgroup=fsOptionsExt2Errors syn match fsOptionsKeywords contained /\<\%(res[gu]id\|sb\)=/ nextgroup=fsOptionsNumber syn keyword fsOptionsExt2Check contained none normal strict syn keyword fsOptionsExt2Errors contained continue panic syn match fsOptionsExt2Errors contained /\<remount-ro\>/ syn keyword fsOptionsKeywords contained acl bsddf minixdf debug grpid bsdgroups minixdf nocheck nogrpid oldalloc orlov sysvgroups nouid32 nobh user_xattr nouser_xattr " Options: ext3 syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt3Journal syn match fsOptionsKeywords contained /\<data=/ nextgroup=fsOptionsExt3Data syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber syn keyword fsOptionsExt3Journal contained update inum syn keyword fsOptionsExt3Data contained journal ordered writeback syn keyword fsOptionsKeywords contained noload user_xattr nouser_xattr acl " Options: ext4 syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt4Journal syn match fsOptionsKeywords contained /\<data=/ nextgroup=fsOptionsExt4Data syn match fsOptionsKeywords contained /\<barrier=/ nextgroup=fsOptionsExt4Barrier syn match fsOptionsKeywords contained /\<journal_dev=/ nextgroup=fsOptionsNumber syn match fsOptionsKeywords contained /\<resuid=/ nextgroup=fsOptionsNumber syn match fsOptionsKeywords contained /\<resgid=/ nextgroup=fsOptionsNumber syn match fsOptionsKeywords contained /\<sb=/ nextgroup=fsOptionsNumber syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber syn keyword fsOptionsExt4Journal contained update inum syn keyword fsOptionsExt4Data contained journal ordered writeback syn match fsOptionsExt4Barrier /[0-1]/ syn keyword fsOptionsKeywords contained noload extents orlov oldalloc user_xattr nouser_xattr acl noacl reservation noreservation bsddf minixdf check=none nocheck debug grpid nogroupid sysvgroups bsdgroups quota noquota grpquota usrquota bh nobh " Options: fat syn match fsOptionsKeywords contained /\<blocksize=/ nextgroup=fsOptionsSize syn match fsOptionsKeywords contained /\<\%([dfu]mask\|codepage\)=/ nextgroup=fsOptionsNumberOctal syn match fsOptionsKeywords contained /\%(cvf_\%(format\|option\)\|iocharset\)=/ nextgroup=fsOptionsString syn match fsOptionsKeywords contained /\<check=/ nextgroup=@fsOptionsCheckCluster syn match fsOptionsKeywords contained /\<conv=*/ nextgroup=fsOptionsConv syn match fsOptionsKeywords contained /\<fat=/ nextgroup=fsOptionsFatType syn match fsOptionsKeywords contained /\<dotsOK=/ nextgroup=fsOptionsYesNo syn keyword fsOptionsFatCheck contained r n s relaxed normal strict syn keyword fsOptionsConv contained b t a binary text auto syn keyword fsOptionsFatType contained 12 16 32 syn keyword fsOptionsKeywords contained quiet sys_immutable showexec dots nodots " Options: hfs syn match fsOptionsKeywords contained /\<\%(creator|type\)=/ nextgroup=fsOptionsString syn match fsOptionsKeywords contained /\<\%(dir\|file\|\)_umask=/ nextgroup=fsOptionsNumberOctal syn match fsOptionsKeywords contained /\<\%(session\|part\)=/ nextgroup=fsOptionsNumber " Options: ffs syn keyword fsOptionsKeyWords contained noperm softdep " Options: hpfs syn match fsOptionsKeywords contained /\<case=/ nextgroup=fsOptionsHpfsCase syn keyword fsOptionsHpfsCase contained lower asis " Options: iso9660 syn match fsOptionsKeywords contained /\<map=/ nextgroup=fsOptionsIsoMap syn match fsOptionsKeywords contained /\<block=/ nextgroup=fsOptionsSize syn match fsOptionsKeywords contained /\<\%(session\|sbsector\)=/ nextgroup=fsOptionsNumber syn keyword fsOptionsIsoMap contained n o a normal off acorn syn keyword fsOptionsKeywords contained norock nojoilet unhide cruft syn keyword fsOptionsConv contained m mtext " Options: jfs syn keyword fsOptionsKeywords nointegrity integrity " Options: nfs syn match fsOptionsKeywords contained /\<\%(rsize\|wsize\|timeo\|retrans\|acregmin\|acregmax\|acdirmin\|acdirmax\|actimeo\|retry\|port\|mountport\|mounthost\|mountprog\|mountvers\|nfsprog\|nfsvers\|namelen\)=/ nextgroup=fsOptionsString syn keyword fsOptionsKeywords contained bg fg soft hard intr cto ac tcp udp lock nobg nofg nosoft nohard nointr noposix nocto noac notcp noudp nolock " Options: ntfs syn match fsOptionsKeywords contained /\<\%(posix=*\|uni_xlate=\)/ nextgroup=fsOptionsNumber syn keyword fsOptionsKeywords contained utf8 " Options: proc " -- everything already defined " Options: reiserfs syn match fsOptionsKeywords contained /\<hash=/ nextgroup=fsOptionsReiserHash syn match fsOptionsKeywords contained /\<resize=/ nextgroup=fsOptionsNumber syn keyword fsOptionsReiserHash contained rupasov tea r5 detect syn keyword fsOptionsKeywords contained hashed_relocation noborder nolog notail no_unhashed_relocation replayonly " Options: sshfs syn match fsOptionsKeywords contained /\<\%(BatchMode\|ChallengeResponseAuthentication\|CheckHostIP\|ClearAllForwardings\|Compression\|EnableSSHKeysign\|ForwardAgent\|ForwardX11\|ForwardX11Trusted\|GatewayPorts\|GSSAPIAuthentication\|GSSAPIDelegateCredentials\|HashKnownHosts\|HostbasedAuthentication\|IdentitiesOnly\|NoHostAuthenticationForLocalhost\|PasswordAuthentication\|PubkeyAuthentication\|RhostsRSAAuthentication\|RSAAuthentication\|TCPKeepAlive\|UsePrivilegedPort\|cache\)=/ nextgroup=fsOptionsYesNo syn match fsOptionsKeywords contained /\<\%(ControlMaster\|StrictHostKeyChecking\|VerifyHostKeyDNS\)=/ nextgroup=fsOptionsSshYesNoAsk syn match fsOptionsKeywords contained /\<\%(AddressFamily\|BindAddress\|Cipher\|Ciphers\|ControlPath\|DynamicForward\|EscapeChar\|GlobalKnownHostsFile\|HostKeyAlgorithms\|HostKeyAlias\|HostName\|IdentityFile\|KbdInteractiveDevices\|LocalForward\|LogLevel\|MACs\|PreferredAuthentications\|Protocol\|ProxyCommand\|RemoteForward\|RhostsAuthentication\|SendEnv\|SmartcardDevice\|User\|UserKnownHostsFile\|XAuthLocation\|comment\|workaround\|idmap\|ssh_command\|sftp_server\|fsname\)=/ nextgroup=fsOptionsString syn match fsOptionsKeywords contained /\<\%(CompressionLevel\|ConnectionAttempts\|ConnectTimeout\|NumberOfPasswordPrompts\|Port\|ServerAliveCountMax\|ServerAliveInterval\|cache_timeout\|cache_X_timeout\|ssh_protocol\|directport\|max_read\|umask\|uid\|gid\|entry_timeout\|negative_timeout\|attr_timeout\)=/ nextgroup=fsOptionsNumber syn keyword fsOptionsKeywords contained reconnect sshfs_sync no_readahead sshfs_debug transform_symlinks allow_other allow_root nonempty default_permissions large_read hard_remove use_ino readdir_ino direct_io kernel_cache syn keyword fsOptionsSshYesNoAsk contained yes no ask " Options: subfs syn match fsOptionsKeywords contained /\<fs=/ nextgroup=fsOptionsString syn keyword fsOptionsKeywords contained procuid " Options: swap syn match fsOptionsKeywords contained /\<pri=/ nextgroup=fsOptionsNumber " Options: tmpfs syn match fsOptionsKeywords contained /\<nr_\%(blocks\|inodes\)=/ nextgroup=fsOptionsNumber " Options: udf syn match fsOptionsKeywords contained /\<\%(anchor\|partition\|lastblock\|fileset\|rootdir\)=/ nextgroup=fsOptionsString syn keyword fsOptionsKeywords contained unhide undelete strict novrs " Options: ufs syn match fsOptionsKeywords contained /\<ufstype=/ nextgroup=fsOptionsUfsType syn match fsOptionsKeywords contained /\<onerror=/ nextgroup=fsOptionsUfsError syn keyword fsOptionsUfsType contained old hp 44bsd sun sunx86 nextstep openstep syn match fsOptionsUfsType contained /\<nextstep-cd\>/ syn keyword fsOptionsUfsError contained panic lock umount repair " Options: usbfs syn match fsOptionsKeywords contained /\<\%(dev\|bus\|list\)\%(id\|gid\)=/ nextgroup=fsOptionsNumber syn match fsOptionsKeywords contained /\<\%(dev\|bus\|list\)mode=/ nextgroup=fsOptionsNumberOctal " Options: vfat syn keyword fsOptionsKeywords contained nonumtail posix utf8 syn match fsOptionsKeywords contained /shortname=/ nextgroup=fsOptionsVfatShortname syn keyword fsOptionsVfatShortname contained lower win95 winnt mixed " Options: xfs syn match fsOptionsKeywords contained /\%(biosize\|logbufs\|logbsize\|logdev\|rtdev\|sunit\|swidth\)=/ nextgroup=fsOptionsString syn keyword fsOptionsKeywords contained dmapi xdsm noalign noatime noquota norecovery osyncisdsync quota usrquota uqnoenforce grpquota gqnoenforce " Frequency / Pass No. syn cluster fsFreqPassCluster contains=fsFreqPassNumber,fsFreqPassError syn match fsFreqPassError /\s\+\zs\%(\D.*\|\S.*\|\d\+\s\+[^012]\)\ze/ contained syn match fsFreqPassNumber /\d\+\s\+[012]\s*/ contained " Groups syn match fsDevice /^\s*\zs.\{-1,}\s/me=e-1 nextgroup=fsMountPoint contains=@fsDeviceCluster,@fsGeneralCluster syn match fsMountPoint /\s\+.\{-}\s/me=e-1 nextgroup=fsType contains=@fsMountPointCluster,@fsGeneralCluster contained syn match fsType /\s\+.\{-}\s/me=e-1 nextgroup=fsOptions contains=@fsTypeCluster,@fsGeneralCluster contained syn match fsOptions /\s\+.\{-}\s/me=e-1 nextgroup=fsFreqPass contains=@fsOptionsCluster,@fsGeneralCluster contained syn match fsFreqPass /\s\+.\{-}$/ contains=@fsFreqPassCluster,@fsGeneralCluster contained " Whole line comments syn match fsCommentLine /^#.*$/ contains=@Spell hi def link fsOperator Operator hi def link fsComment Comment hi def link fsCommentLine Comment hi def link fsTypeKeyword Type hi def link fsDeviceKeyword Identifier hi def link fsDeviceLabel String hi def link fsDeviceUUID String hi def link fsDevicePARTLABEL String hi def link fsDevicePARTUUID String hi def link fsDeviceSshfs String hi def link fsFreqPassNumber Number if exists('fstab_unknown_fs_errors') && fstab_unknown_fs_errors == 1 hi def link fsTypeUnknown Error endif if !exists('fstab_unknown_device_errors') || fstab_unknown_device_errors == 1 hi def link fsDeviceError Error endif hi def link fsMountPointError Error hi def link fsMountPointKeyword Keyword hi def link fsFreqPassError Error hi def link fsOptionsGeneral Type hi def link fsOptionsKeywords Keyword hi def link fsOptionsNumber Number hi def link fsOptionsNumberOctal Number hi def link fsOptionsString String hi def link fsOptionsSize Number hi def link fsOptionsExt2Check String hi def link fsOptionsExt2Errors String hi def link fsOptionsExt3Journal String hi def link fsOptionsExt3Data String hi def link fsOptionsExt4Journal String hi def link fsOptionsExt4Data String hi def link fsOptionsExt4Barrier Number hi def link fsOptionsFatCheck String hi def link fsOptionsConv String hi def link fsOptionsFatType Number hi def link fsOptionsYesNo String hi def link fsOptionsHpfsCase String hi def link fsOptionsIsoMap String hi def link fsOptionsReiserHash String hi def link fsOptionsSshYesNoAsk String hi def link fsOptionsUfsType String hi def link fsOptionsUfsError String hi def link fsOptionsVfatShortname String let b:current_syntax = "fstab" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 ft=vim PK�������!�1XC��XC����vim80/syntax/html.vimnu�[��������" Vim syntax file " Language: HTML " Maintainer: Jorge Maldonado Ventura <jorgesumle@freakspot.net> " Previous Maintainer: Claudio Fleiner <claudio@fleiner.com> " Repository: https://notabug.org/jorgesumle/vim-html-syntax " Last Change: 2017 Dec 16 " Included patch from Jorge Maldonado Ventura to add the dialog element " " Please check :help html.vim for some comments and a description of the options " quit when a syntax file was already loaded if !exists("main_syntax") if exists("b:current_syntax") finish endif let main_syntax = 'html' endif let s:cpo_save = &cpo set cpo&vim syntax spell toplevel syn case ignore " mark illegal characters syn match htmlError "[<>&]" " tags syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@htmlPreproc syn region htmlEndTag start=+</+ end=+>+ contains=htmlTagN,htmlTagError syn region htmlTag start=+<[^/]+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster syn match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster syn match htmlTagError contained "[^>]<"ms=s+1 " tag names syn keyword htmlTagName contained address applet area a base basefont syn keyword htmlTagName contained big blockquote br caption center syn keyword htmlTagName contained cite code dd dfn dir div dl dt font syn keyword htmlTagName contained form hr html img syn keyword htmlTagName contained input isindex kbd li link map menu syn keyword htmlTagName contained meta ol option param pre p samp span syn keyword htmlTagName contained select small sub sup syn keyword htmlTagName contained table td textarea th tr tt ul var xmp syn match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>" " new html 4.0 tags syn keyword htmlTagName contained abbr acronym bdo button col label syn keyword htmlTagName contained colgroup fieldset iframe ins legend syn keyword htmlTagName contained object optgroup q s tbody tfoot thead " new html 5 tags syn keyword htmlTagName contained article aside audio bdi canvas data syn keyword htmlTagName contained datalist details embed figcaption figure syn keyword htmlTagName contained footer header hgroup keygen main mark syn keyword htmlTagName contained menuitem meter nav output picture syn keyword htmlTagName contained progress rb rp rt rtc ruby section syn keyword htmlTagName contained slot source template time track video wbr " legal arg names syn keyword htmlArg contained action syn keyword htmlArg contained align alink alt archive background bgcolor syn keyword htmlArg contained border bordercolor cellpadding syn keyword htmlArg contained cellspacing checked class clear code codebase color syn keyword htmlArg contained cols colspan content coords enctype face syn keyword htmlArg contained gutter height hspace id syn keyword htmlArg contained link lowsrc marginheight syn keyword htmlArg contained marginwidth maxlength method name prompt syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape syn keyword htmlArg contained size src start target text type url syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap syn match htmlArg contained "\<\(http-equiv\|href\|title\)="me=e-1 " Netscape extensions syn keyword htmlTagName contained frame noframes frameset nobr blink syn keyword htmlTagName contained layer ilayer nolayer spacer syn keyword htmlArg contained frameborder noresize pagex pagey above below syn keyword htmlArg contained left top visibility clip id noshade syn match htmlArg contained "\<z-index\>" " Microsoft extensions syn keyword htmlTagName contained marquee " html 4.0 arg names syn match htmlArg contained "\<\(accept-charset\|label\)\>" syn keyword htmlArg contained abbr accept accesskey axis char charoff charset syn keyword htmlArg contained cite classid codetype compact data datetime syn keyword htmlArg contained declare defer dir disabled for frame syn keyword htmlArg contained headers hreflang lang language longdesc syn keyword htmlArg contained multiple nohref nowrap object profile readonly syn keyword htmlArg contained rules scheme scope span standby style syn keyword htmlArg contained summary tabindex valuetype version " html 5 arg names syn keyword htmlArg contained allowfullscreen async autocomplete autofocus syn keyword htmlArg contained autoplay challenge contenteditable contextmenu syn keyword htmlArg contained controls crossorigin default dialog dirname syn keyword htmlArg contained download draggable dropzone form formaction syn keyword htmlArg contained formenctype formmethod formnovalidate formtarget syn keyword htmlArg contained hidden high icon inputmode keytype kind list loop syn keyword htmlArg contained low max min minlength muted nonce novalidate open syn keyword htmlArg contained optimum pattern placeholder poster preload syn keyword htmlArg contained radiogroup required reversed sandbox spellcheck syn keyword htmlArg contained sizes srcset srcdoc srclang step title translate syn keyword htmlArg contained typemustmatch " special characters syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};" " Comments (the real ones or the old netscape ones) if exists("html_wrong_comments") syn region htmlComment start=+<!--+ end=+--\s*>+ contains=@Spell else syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentPart,htmlCommentError,@Spell syn match htmlCommentError contained "[^><!]" syn region htmlCommentPart contained start=+--+ end=+--\s*+ contains=@htmlPreProc,@Spell endif syn region htmlComment start=+<!DOCTYPE+ keepend end=+>+ " server-parsed commands syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr syn match htmlPreStmt contained "<!--#\(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>" syn match htmlPreError contained "<!--#\S*"ms=s+4 syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend syn match htmlPreProcAttrError contained "\w\+="he=e-1 syn match htmlPreProcAttrName contained "\(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1 if !exists("html_no_rendering") " rendering syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc syn region htmlStrike start="<del\>" end="</del>"me=e-6 contains=@htmlTop syn region htmlStrike start="<strike\>" end="</strike>"me=e-9 contains=@htmlTop syn region htmlBold start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic syn region htmlBold start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic syn region htmlBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic syn region htmlBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlBoldItalicUnderline syn region htmlBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlBoldItalicUnderline syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop syn region htmlBoldItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic syn region htmlUnderline start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic syn region htmlUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlUnderlineBoldItalic syn region htmlUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlUnderlineBoldItalic syn region htmlUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlUnderlineItalicBold syn region htmlUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlUnderlineItalicBold syn region htmlUnderlineItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop syn region htmlItalic start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline syn region htmlItalic start="<em\>" end="</em>"me=e-5 contains=@htmlTop syn region htmlItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlItalicBoldUnderline syn region htmlItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlItalicBoldUnderline syn region htmlItalicBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop syn region htmlItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlItalicUnderlineBold syn region htmlItalicUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop syn match htmlLeadingSpace "^\s\+" contained syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a>"me=e-4 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLeadingSpace,javaScript,@htmlPreproc syn region htmlH1 start="<h1\>" end="</h1>"me=e-5 contains=@htmlTop syn region htmlH2 start="<h2\>" end="</h2>"me=e-5 contains=@htmlTop syn region htmlH3 start="<h3\>" end="</h3>"me=e-5 contains=@htmlTop syn region htmlH4 start="<h4\>" end="</h4>"me=e-5 contains=@htmlTop syn region htmlH5 start="<h5\>" end="</h5>"me=e-5 contains=@htmlTop syn region htmlH6 start="<h6\>" end="</h6>"me=e-5 contains=@htmlTop syn region htmlHead start="<head\>" end="</head>"me=e-7 end="<body\>"me=e-5 end="<h[1-6]\>"me=e-3 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,htmlTitle,javaScript,cssStyle,@htmlPreproc syn region htmlTitle start="<title\>" end=""me=e-8 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc endif syn keyword htmlTagName contained noscript syn keyword htmlSpecialTagName contained script style if main_syntax != 'java' || exists("java_javascript") " JAVA SCRIPT syn include @htmlJavaScript syntax/javascript.vim unlet b:current_syntax syn region javaScript start=+]*>+ keepend end=+]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc syn region htmlScriptTag contained start=++ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent hi def link htmlScriptTag htmlTag " html events (i.e. arguments that include javascript commands) if exists("html_extended_events") syn region htmlEvent contained start=+\]*language *=\_[^>]*vbscript\_[^>]*>+ keepend end=+]*>+me=s-1 contains=@htmlVbScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc endif syn cluster htmlJavaScript add=@htmlPreproc if main_syntax != 'java' || exists("java_css") " embedded style sheets syn keyword htmlArg contained media syn include @htmlCss syntax/css.vim unlet b:current_syntax syn region cssStyle start=++ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc syn match htmlCssStyleComment contained "\(\)" syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc hi def link htmlStyleArg htmlString endif if main_syntax == "html" " synchronizing (does not always work if a comment includes legal " html tags, but doing it right would mean to always start " at the first line, which is too slow) syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]" syn sync match htmlHighlight groupthere javaScript " 800 || v:version == 800 && has("patch1038") hi def htmlStrike term=strikethrough cterm=strikethrough gui=strikethrough else hi def htmlStrike term=underline cterm=underline gui=underline endif endif endif hi def link htmlPreStmt PreProc hi def link htmlPreError Error hi def link htmlPreProc PreProc hi def link htmlPreAttr String hi def link htmlPreProcAttrName PreProc hi def link htmlPreProcAttrError Error hi def link htmlSpecial Special hi def link htmlSpecialChar Special hi def link htmlString String hi def link htmlStatement Statement hi def link htmlComment Comment hi def link htmlCommentPart Comment hi def link htmlValue String hi def link htmlCommentError htmlError hi def link htmlTagError htmlError hi def link htmlEvent javaScript hi def link htmlError Error hi def link javaScript Special hi def link javaScriptExpression javaScript hi def link htmlCssStyleComment Comment hi def link htmlCssDefinition Special let b:current_syntax = "html" if main_syntax == 'html' unlet main_syntax endif let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!i^vim80/syntax/kivy.vimnu[" Vim syntax file " Language: Kivy " Maintainer: Corey Prophitt " Last Change: May 29th, 2014 " Version: 1 " URL: http://kivy.org/ if exists("b:current_syntax") finish endif " Load Python syntax first (Python can be used within Kivy) syn include @pyth $VIMRUNTIME/syntax/python.vim " Kivy language rules can be found here " http://kivy.org/docs/guide/lang.html " Define Kivy syntax syn match kivyPreProc /#:.*/ syn match kivyComment /#.*/ syn match kivyRule /<\I\i*\(,\s*\I\i*\)*>:/ syn match kivyAttribute /\<\I\i*\>/ nextgroup=kivyValue syn region kivyValue start=":" end=/$/ contains=@pyth skipwhite syn region kivyAttribute matchgroup=kivyIdent start=/[\a_][\a\d_]*:/ end=/$/ contains=@pyth skipwhite hi def link kivyPreproc PreProc hi def link kivyComment Comment hi def link kivyRule Function hi def link kivyIdent Statement hi def link kivyAttribute Label let b:current_syntax = "kivy" " vim: ts=8 PK!dk4ICICvim80/syntax/masm.vimnu[" Vim syntax file " Language: Microsoft Macro Assembler (80x86) " Orig Author: Rob Brady " Maintainer: Wu Yongwei " Last Change: $Date: 2013/11/13 11:49:24 $ " $Revision: 1.48 $ " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn match masmIdentifier "[@a-z_$?][@a-z0-9_$?]*" syn match masmLabel "^\s*[@a-z_$?][@a-z0-9_$?]*:"he=e-1 syn match masmDecimal "[-+]\?\d\+[dt]\?" syn match masmBinary "[-+]\?[0-1]\+[by]" "put this before hex or 0bfh dies! syn match masmOctal "[-+]\?[0-7]\+[oq]" syn match masmHexadecimal "[-+]\?[0-9]\x*h" syn match masmFloatRaw "[-+]\?[0-9]\x*r" syn match masmFloat "[-+]\?\d\+\.\(\d*\(E[-+]\?\d\+\)\?\)\?" syn match masmComment ";.*" contains=@Spell syn region masmComment start=+COMMENT\s*\z(\S\)+ end=+\z1.*+ contains=@Spell syn region masmString start=+'+ end=+'+ oneline contains=@Spell syn region masmString start=+"+ end=+"+ oneline contains=@Spell syn region masmTitleArea start=+\" syn match masmOperator "CARRY?" syn match masmOperator "OVERFLOW?" syn match masmOperator "PARITY?" syn match masmOperator "SIGN?" syn match masmOperator "ZERO?" syn keyword masmDirective ALIAS ASSUME CATSTR COMM DB DD DF DOSSEG DQ DT syn keyword masmDirective DW ECHO ELSE ELSEIF ELSEIF1 ELSEIF2 ELSEIFB syn keyword masmDirective ELSEIFDEF ELSEIFDIF ELSEIFDIFI ELSEIFE syn keyword masmDirective ELSEIFIDN ELSEIFIDNI ELSEIFNB ELSEIFNDEF END syn keyword masmDirective ENDIF ENDM ENDP ENDS EQU EVEN EXITM EXTERN syn keyword masmDirective EXTERNDEF EXTRN FOR FORC GOTO GROUP IF IF1 IF2 syn keyword masmDirective IFB IFDEF IFDIF IFDIFI IFE IFIDN IFIDNI IFNB syn keyword masmDirective IFNDEF INCLUDE INCLUDELIB INSTR INVOKE IRP syn keyword masmDirective IRPC LABEL LOCAL MACRO NAME OPTION ORG PAGE syn keyword masmDirective POPCONTEXT PROC PROTO PUBLIC PURGE PUSHCONTEXT syn keyword masmDirective RECORD REPEAT REPT SEGMENT SIZESTR STRUC syn keyword masmDirective STRUCT SUBSTR SUBTITLE SUBTTL TEXTEQU TITLE syn keyword masmDirective TYPEDEF UNION WHILE syn match masmDirective "\.8086\>" syn match masmDirective "\.8087\>" syn match masmDirective "\.NO87\>" syn match masmDirective "\.186\>" syn match masmDirective "\.286\>" syn match masmDirective "\.286C\>" syn match masmDirective "\.286P\>" syn match masmDirective "\.287\>" syn match masmDirective "\.386\>" syn match masmDirective "\.386C\>" syn match masmDirective "\.386P\>" syn match masmDirective "\.387\>" syn match masmDirective "\.486\>" syn match masmDirective "\.486P\>" syn match masmDirective "\.586\>" syn match masmDirective "\.586P\>" syn match masmDirective "\.686\>" syn match masmDirective "\.686P\>" syn match masmDirective "\.K3D\>" syn match masmDirective "\.MMX\>" syn match masmDirective "\.XMM\>" syn match masmDirective "\.ALPHA\>" syn match masmDirective "\.DOSSEG\>" syn match masmDirective "\.SEQ\>" syn match masmDirective "\.CODE\>" syn match masmDirective "\.CONST\>" syn match masmDirective "\.DATA\>" syn match masmDirective "\.DATA?" syn match masmDirective "\.EXIT\>" syn match masmDirective "\.FARDATA\>" syn match masmDirective "\.FARDATA?" syn match masmDirective "\.MODEL\>" syn match masmDirective "\.STACK\>" syn match masmDirective "\.STARTUP\>" syn match masmDirective "\.IF\>" syn match masmDirective "\.ELSE\>" syn match masmDirective "\.ELSEIF\>" syn match masmDirective "\.ENDIF\>" syn match masmDirective "\.REPEAT\>" syn match masmDirective "\.UNTIL\>" syn match masmDirective "\.UNTILCXZ\>" syn match masmDirective "\.WHILE\>" syn match masmDirective "\.ENDW\>" syn match masmDirective "\.BREAK\>" syn match masmDirective "\.CONTINUE\>" syn match masmDirective "\.ERR\>" syn match masmDirective "\.ERR1\>" syn match masmDirective "\.ERR2\>" syn match masmDirective "\.ERRB\>" syn match masmDirective "\.ERRDEF\>" syn match masmDirective "\.ERRDIF\>" syn match masmDirective "\.ERRDIFI\>" syn match masmDirective "\.ERRE\>" syn match masmDirective "\.ERRIDN\>" syn match masmDirective "\.ERRIDNI\>" syn match masmDirective "\.ERRNB\>" syn match masmDirective "\.ERRNDEF\>" syn match masmDirective "\.ERRNZ\>" syn match masmDirective "\.LALL\>" syn match masmDirective "\.SALL\>" syn match masmDirective "\.XALL\>" syn match masmDirective "\.LFCOND\>" syn match masmDirective "\.SFCOND\>" syn match masmDirective "\.TFCOND\>" syn match masmDirective "\.CREF\>" syn match masmDirective "\.NOCREF\>" syn match masmDirective "\.XCREF\>" syn match masmDirective "\.LIST\>" syn match masmDirective "\.NOLIST\>" syn match masmDirective "\.XLIST\>" syn match masmDirective "\.LISTALL\>" syn match masmDirective "\.LISTIF\>" syn match masmDirective "\.NOLISTIF\>" syn match masmDirective "\.LISTMACRO\>" syn match masmDirective "\.NOLISTMACRO\>" syn match masmDirective "\.LISTMACROALL\>" syn match masmDirective "\.FPO\>" syn match masmDirective "\.RADIX\>" syn match masmDirective "\.SAFESEH\>" syn match masmDirective "%OUT\>" syn match masmDirective "ALIGN\>" syn match masmOption "ALIGN([0-9]\+)" syn keyword masmRegister AX BX CX DX SI DI BP SP syn keyword masmRegister CS DS SS ES FS GS syn keyword masmRegister AH BH CH DH AL BL CL DL syn keyword masmRegister EAX EBX ECX EDX ESI EDI EBP ESP syn keyword masmRegister CR0 CR2 CR3 CR4 syn keyword masmRegister DR0 DR1 DR2 DR3 DR6 DR7 syn keyword masmRegister TR3 TR4 TR5 TR6 TR7 syn match masmRegister "ST([0-7])" " x86-64 registers syn keyword masmRegister RAX RBX RCX RDX RSI RDI RBP RSP syn keyword masmRegister R8 R9 R10 R11 R12 R13 R14 R15 syn keyword masmRegister R8D R9D R10D R11D R12D R13D R14D R15D syn keyword masmRegister R8W R9W R10W R11W R12W R13W R14W R15W syn keyword masmRegister R8B R9B R10B R11B R12B R13B R14B R15B " SSE/AVX registers syn match masmRegister "\(X\|Y\)MM[0-9]\>" syn match masmRegister "\(X\|Y\)MM1[0-5]\>" " Instruction prefixes syn keyword masmOpcode LOCK REP REPE REPNE REPNZ REPZ " 8086/8088 opcodes syn keyword masmOpcode AAA AAD AAM AAS ADC ADD AND CALL CBW CLC CLD syn keyword masmOpcode CLI CMC CMP CMPS CMPSB CMPSW CWD DAA DAS DEC syn keyword masmOpcode DIV ESC HLT IDIV IMUL IN INC INT INTO IRET syn keyword masmOpcode JCXZ JMP LAHF LDS LEA LES LODS LODSB LODSW syn keyword masmOpcode LOOP LOOPE LOOPEW LOOPNE LOOPNEW LOOPNZ syn keyword masmOpcode LOOPNZW LOOPW LOOPZ LOOPZW MOV MOVS MOVSB syn keyword masmOpcode MOVSW MUL NEG NOP NOT OR OUT POP POPF PUSH syn keyword masmOpcode PUSHF RCL RCR RET RETF RETN ROL ROR SAHF SAL syn keyword masmOpcode SAR SBB SCAS SCASB SCASW SHL SHR STC STD STI syn keyword masmOpcode STOS STOSB STOSW SUB TEST WAIT XCHG XLAT XLATB syn keyword masmOpcode XOR syn match masmOpcode "J\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" " 80186 opcodes syn keyword masmOpcode BOUND ENTER INS INSB INSW LEAVE OUTS OUTSB syn keyword masmOpcode OUTSW POPA PUSHA PUSHW " 80286 opcodes syn keyword masmOpcode ARPL LAR LSL SGDT SIDT SLDT SMSW STR VERR VERW " 80286/80386 privileged opcodes syn keyword masmOpcode CLTS LGDT LIDT LLDT LMSW LTR " 80386 opcodes syn keyword masmOpcode BSF BSR BT BTC BTR BTS CDQ CMPSD CWDE INSD syn keyword masmOpcode IRETD IRETDF IRETF JECXZ LFS LGS LODSD LOOPD syn keyword masmOpcode LOOPED LOOPNED LOOPNZD LOOPZD LSS MOVSD MOVSX syn keyword masmOpcode MOVZX OUTSD POPAD POPFD PUSHAD PUSHD PUSHFD syn keyword masmOpcode SCASD SHLD SHRD STOSD syn match masmOpcode "SET\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" " 80486 opcodes syn keyword masmOpcode BSWAP CMPXCHG INVD INVLPG WBINVD XADD " Floating-point opcodes as of 487 syn keyword masmOpFloat F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX syn keyword masmOpFloat FNCLEX FCOM FCOMP FCOMPP FCOS FDECSTP FDISI syn keyword masmOpFloat FNDISI FDIV FDIVP FDIVR FDIVRP FENI FNENI syn keyword masmOpFloat FFREE FIADD FICOM FICOMP FIDIV FIDIVR FILD syn keyword masmOpFloat FIMUL FINCSTP FINIT FNINIT FIST FISTP FISUB syn keyword masmOpFloat FISUBR FLD FLDCW FLDENV FLDLG2 FLDLN2 FLDL2E syn keyword masmOpFloat FLDL2T FLDPI FLDZ FLD1 FMUL FMULP FNOP FPATAN syn keyword masmOpFloat FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FNSAVE syn keyword masmOpFloat FSCALE FSETPM FSIN FSINCOS FSQRT FST FSTCW syn keyword masmOpFloat FNSTCW FSTENV FNSTENV FSTP FSTSW FNSTSW FSUB syn keyword masmOpFloat FSUBP FSUBR FSUBRP FTST FUCOM FUCOMP FUCOMPP syn keyword masmOpFloat FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1 " Floating-point opcodes in Pentium and later processors syn keyword masmOpFloat FCMOVE FCMOVNE FCMOVB FCMOVBE FCMOVNB FCMOVNBE syn keyword masmOpFloat FCMOVU FCMOVNU FCOMI FUCOMI FCOMIP FUCOMIP syn keyword masmOpFloat FXSAVE FXRSTOR " MMX opcodes (Pentium w/ MMX, Pentium II, and later) syn keyword masmOpcode MOVD MOVQ PACKSSWB PACKSSDW PACKUSWB syn keyword masmOpcode PUNPCKHBW PUNPCKHWD PUNPCKHDQ syn keyword masmOpcode PUNPCKLBW PUNPCKLWD PUNPCKLDQ syn keyword masmOpcode PADDB PADDW PADDD PADDSB PADDSW PADDUSB PADDUSW syn keyword masmOpcode PSUBB PSUBW PSUBD PSUBSB PSUBSW PSUBUSB PSUBUSW syn keyword masmOpcode PMULHW PMULLW PMADDWD syn keyword masmOpcode PCMPEQB PCMPEQW PCMPEQD PCMPGTB PCMPGTW PCMPGTD syn keyword masmOpcode PAND PANDN POR PXOR syn keyword masmOpcode PSLLW PSLLD PSLLQ PSRLW PSRLD PSRLQ PSRAW PSRAD syn keyword masmOpcode EMMS " SSE opcodes (Pentium III and later) syn keyword masmOpcode MOVAPS MOVUPS MOVHPS MOVHLPS MOVLPS MOVLHPS syn keyword masmOpcode MOVMSKPS MOVSS syn keyword masmOpcode ADDPS ADDSS SUBPS SUBSS MULPS MULSS DIVPS DIVSS syn keyword masmOpcode RCPPS RCPSS SQRTPS SQRTSS RSQRTPS RSQRTSS syn keyword masmOpcode MAXPS MAXSS MINPS MINSS syn keyword masmOpcode CMPPS CMPSS COMISS UCOMISS syn keyword masmOpcode ANDPS ANDNPS ORPS XORPS syn keyword masmOpcode SHUFPS UNPCKHPS UNPCKLPS syn keyword masmOpcode CVTPI2PS CVTSI2SS CVTPS2PI CVTTPS2PI syn keyword masmOpcode CVTSS2SI CVTTSS2SI syn keyword masmOpcode LDMXCSR STMXCSR syn keyword masmOpcode PAVGB PAVGW PEXTRW PINSRW PMAXUB PMAXSW syn keyword masmOpcode PMINUB PMINSW PMOVMSKB PMULHUW PSADBW PSHUFW syn keyword masmOpcode MASKMOVQ MOVNTQ MOVNTPS SFENCE syn keyword masmOpcode PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA " SSE2 opcodes (Pentium 4 and later) syn keyword masmOpcode MOVAPD MOVUPD MOVHPD MOVLPD MOVMSKPD MOVSD syn keyword masmOpcode ADDPD ADDSD SUBPD SUBSD MULPD MULSD DIVPD DIVSD syn keyword masmOpcode SQRTPD SQRTSD MAXPD MAXSD MINPD MINSD syn keyword masmOpcode ANDPD ANDNPD ORPD XORPD syn keyword masmOpcode CMPPD CMPSD COMISD UCOMISD syn keyword masmOpcode SHUFPD UNPCKHPD UNPCKLPD syn keyword masmOpcode CVTPD2PI CVTTPD2PI CVTPI2PD CVTPD2DQ syn keyword masmOpcode CVTTPD2DQ CVTDQ2PD CVTPS2PD CVTPD2PS syn keyword masmOpcode CVTSS2SD CVTSD2SS CVTSD2SI CVTTSD2SI CVTSI2SD syn keyword masmOpcode CVTDQ2PS CVTPS2DQ CVTTPS2DQ syn keyword masmOpcode MOVDQA MOVDQU MOVQ2DQ MOVDQ2Q PMULUDQ syn keyword masmOpcode PADDQ PSUBQ PSHUFLW PSHUFHW PSHUFD syn keyword masmOpcode PSLLDQ PSRLDQ PUNPCKHQDQ PUNPCKLQDQ syn keyword masmOpcode CLFLUSH LFENCE MFENCE PAUSE MASKMOVDQU syn keyword masmOpcode MOVNTPD MOVNTDQ MOVNTI " SSE3 opcodes (Pentium 4 w/ Hyper-Threading and later) syn keyword masmOpcode FISTTP LDDQU ADDSUBPS ADDSUBPD syn keyword masmOpcode HADDPS HSUBPS HADDPD HSUBPD syn keyword masmOpcode MOVSHDUP MOVSLDUP MOVDDUP MONITOR MWAIT " SSSE3 opcodes (Core and later) syn keyword masmOpcode PSIGNB PSIGNW PSIGND PABSB PABSW PABSD syn keyword masmOpcode PALIGNR PSHUFB PMULHRSW PMADDUBSW syn keyword masmOpcode PHSUBW PHSUBD PHSUBSW PHADDW PHADDD PHADDSW " SSE 4.1 opcodes (Penryn and later) syn keyword masmOpcode MPSADBW PHMINPOSUW PMULDQ PMULLD DPPS DPPD syn keyword masmOpcode BLENDPS BLENDPD BLENDVPS BLENDVPD syn keyword masmOpcode PBLENDVB PBLENDW syn keyword masmOpcode PMINSB PMAXSB PMINSD PMAXSD syn keyword masmOpcode PMINUW PMAXUW PMINUD PMAXUD syn keyword masmOpcode ROUNDPS ROUNDSS ROUNDPD ROUNDSD syn keyword masmOpcode INSERTPS PINSRB PINSRD PINSRQ syn keyword masmOpcode EXTRACTPS PEXTRB PEXTRD PEXTRQ syn keyword masmOpcode PMOVSXBW PMOVZXBW PMOVSXBD PMOVZXBD syn keyword masmOpcode PMOVSXBQ PMOVZXBQ PMOVSXWD PMOVZXWD syn keyword masmOpcode PMOVSXWQ PMOVZXWQ PMOVSXDQ PMOVZXDQ syn keyword masmOpcode PTEST PCMPEQQ PACKUSDW MOVNTDQA " SSE 4.2 opcodes (Nehalem and later) syn keyword masmOpcode PCMPESTRI PCMPESTRM PCMPISTRI PCMPISTRM PCMPGTQ syn keyword masmOpcode CRC32 POPCNT LZCNT " AES-NI (Westmere (2010) and later) syn keyword masmOpcode AESENC AESENCLAST AESDEC AESDECLAST syn keyword masmOpcode AESKEYGENASSIST AESIMC PCLMULQDQ " AVX (Sandy Bridge (2011) and later) syn keyword masmOpcode VBROADCASTSS VBROADCASTSD VBROADCASTF128 syn keyword masmOpcode VINSERTF128 VEXTRACTF128 VMASKMOVPS VMASKMOVPD syn keyword masmOpcode VPERMILPS VPERMILPD VPERM2F128 syn keyword masmOpcode VZEROALL VZEROUPPER " Other opcodes in Pentium and later processors syn keyword masmOpcode CMPXCHG8B CPUID UD2 syn keyword masmOpcode RSM RDMSR WRMSR RDPMC RDTSC SYSENTER SYSEXIT syn match masmOpcode "CMOV\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" " The default highlighting hi def link masmLabel PreProc hi def link masmComment Comment hi def link masmDirective Statement hi def link masmType Type hi def link masmOperator Type hi def link masmOption Special hi def link masmRegister Special hi def link masmString String hi def link masmText String hi def link masmTitle Title hi def link masmOpcode Statement hi def link masmOpFloat Statement hi def link masmHexadecimal Number hi def link masmDecimal Number hi def link masmOctal Number hi def link masmBinary Number hi def link masmFloatRaw Number hi def link masmFloat Number hi def link masmIdentifier Identifier syntax sync minlines=50 let b:current_syntax = "masm" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!_Mvim80/syntax/procmail.vimnu[" Vim syntax file " Language: Procmail definition file " Maintainer: Melchior FRANZ " Last Change: 2003 Aug 14 " Author: Sonia Heimann " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn match procmailComment "#.*$" contains=procmailTodo syn keyword procmailTodo contained Todo TBD syn region procmailString start=+"+ skip=+\\"+ end=+"+ syn region procmailString start=+'+ skip=+\\'+ end=+'+ syn region procmailVarDeclRegion start="^\s*[a-zA-Z0-9_]\+\s*="hs=e-1 skip=+\\$+ end=+$+ contains=procmailVar,procmailVarDecl,procmailString syn match procmailVarDecl contained "^\s*[a-zA-Z0-9_]\+" syn match procmailVar "$[a-zA-Z0-9_]\+" syn match procmailCondition contained "^\s*\*.*" syn match procmailActionFolder contained "^\s*[-_a-zA-Z0-9/]\+" syn match procmailActionVariable contained "^\s*$[a-zA-Z_]\+" syn region procmailActionForward start=+^\s*!+ skip=+\\$+ end=+$+ syn region procmailActionPipe start=+^\s*|+ skip=+\\$+ end=+$+ syn region procmailActionNested start=+^\s*{+ end=+^\s*}+ contains=procmailRecipe,procmailComment,procmailVarDeclRegion syn region procmailRecipe start=+^\s*:.*$+ end=+^\s*\($\|}\)+me=e-1 contains=procmailComment,procmailCondition,procmailActionFolder,procmailActionVariable,procmailActionForward,procmailActionPipe,procmailActionNested,procmailVarDeclRegion " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link procmailComment Comment hi def link procmailTodo Todo hi def link procmailRecipe Statement "hi def link procmailCondition Statement hi def link procmailActionFolder procmailAction hi def link procmailActionVariable procmailAction hi def link procmailActionForward procmailAction hi def link procmailActionPipe procmailAction hi def link procmailAction Function hi def link procmailVar Identifier hi def link procmailVarDecl Identifier hi def link procmailString String let b:current_syntax = "procmail" " vim: ts=8 PK!%}5vim80/syntax/basic.vimnu[" Vim syntax file " Language: BASIC " Maintainer: Allan Kelly " Last Change: 2011 Dec 25 by Thilo Six " First version based on Micro$soft QBASIC circa 1989, as documented in " 'Learn BASIC Now' by Halvorson&Rygmyr. Microsoft Press 1989. " This syntax file not a complete implementation yet. Send suggestions to the " maintainer. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " A bunch of useful BASIC keywords syn keyword basicStatement BEEP beep Beep BLOAD bload Bload BSAVE bsave Bsave syn keyword basicStatement CALL call Call ABSOLUTE absolute Absolute syn keyword basicStatement CHAIN chain Chain CHDIR chdir Chdir syn keyword basicStatement CIRCLE circle Circle CLEAR clear Clear syn keyword basicStatement CLOSE close Close CLS cls Cls COLOR color Color syn keyword basicStatement COM com Com COMMON common Common syn keyword basicStatement CONST const Const DATA data Data syn keyword basicStatement DECLARE declare Declare DEF def Def syn keyword basicStatement DEFDBL defdbl Defdbl DEFINT defint Defint syn keyword basicStatement DEFLNG deflng Deflng DEFSNG defsng Defsng syn keyword basicStatement DEFSTR defstr Defstr DIM dim Dim syn keyword basicStatement DO do Do LOOP loop Loop syn keyword basicStatement DRAW draw Draw END end End syn keyword basicStatement ENVIRON environ Environ ERASE erase Erase syn keyword basicStatement ERROR error Error EXIT exit Exit syn keyword basicStatement FIELD field Field FILES files Files syn keyword basicStatement FOR for For NEXT next Next syn keyword basicStatement FUNCTION function Function GET get Get syn keyword basicStatement GOSUB gosub Gosub GOTO goto Goto syn keyword basicStatement IF if If THEN then Then ELSE else Else syn keyword basicStatement INPUT input Input INPUT# input# Input# syn keyword basicStatement IOCTL ioctl Ioctl KEY key Key syn keyword basicStatement KILL kill Kill LET let Let syn keyword basicStatement LINE line Line LOCATE locate Locate syn keyword basicStatement LOCK lock Lock UNLOCK unlock Unlock syn keyword basicStatement LPRINT lprint Lprint USING using Using syn keyword basicStatement LSET lset Lset MKDIR mkdir Mkdir syn keyword basicStatement NAME name Name ON on On syn keyword basicStatement ERROR error Error OPEN open Open syn keyword basicStatement OPTION option Option BASE base Base syn keyword basicStatement OUT out Out PAINT paint Paint syn keyword basicStatement PALETTE palette Palette PCOPY pcopy Pcopy syn keyword basicStatement PEN pen Pen PLAY play Play syn keyword basicStatement PMAP pmap Pmap POKE poke Poke syn keyword basicStatement PRESET preset Preset PRINT print Print syn keyword basicStatement PRINT# print# Print# USING using Using syn keyword basicStatement PSET pset Pset PUT put Put syn keyword basicStatement RANDOMIZE randomize Randomize READ read Read syn keyword basicStatement REDIM redim Redim RESET reset Reset syn keyword basicStatement RESTORE restore Restore RESUME resume Resume syn keyword basicStatement RETURN return Return RMDIR rmdir Rmdir syn keyword basicStatement RSET rset Rset RUN run Run syn keyword basicStatement SEEK seek Seek SELECT select Select syn keyword basicStatement CASE case Case SHARED shared Shared syn keyword basicStatement SHELL shell Shell SLEEP sleep Sleep syn keyword basicStatement SOUND sound Sound STATIC static Static syn keyword basicStatement STOP stop Stop STRIG strig Strig syn keyword basicStatement SUB sub Sub SWAP swap Swap syn keyword basicStatement SYSTEM system System TIMER timer Timer syn keyword basicStatement TROFF troff Troff TRON tron Tron syn keyword basicStatement TYPE type Type UNLOCK unlock Unlock syn keyword basicStatement VIEW view View WAIT wait Wait syn keyword basicStatement WHILE while While WEND wend Wend syn keyword basicStatement WIDTH width Width WINDOW window Window syn keyword basicStatement WRITE write Write DATE$ date$ Date$ syn keyword basicStatement MID$ mid$ Mid$ TIME$ time$ Time$ syn keyword basicFunction ABS abs Abs ASC asc Asc syn keyword basicFunction ATN atn Atn CDBL cdbl Cdbl syn keyword basicFunction CINT cint Cint CLNG clng Clng syn keyword basicFunction COS cos Cos CSNG csng Csng syn keyword basicFunction CSRLIN csrlin Csrlin CVD cvd Cvd syn keyword basicFunction CVDMBF cvdmbf Cvdmbf CVI cvi Cvi syn keyword basicFunction CVL cvl Cvl CVS cvs Cvs syn keyword basicFunction CVSMBF cvsmbf Cvsmbf EOF eof Eof syn keyword basicFunction ERDEV erdev Erdev ERL erl Erl syn keyword basicFunction ERR err Err EXP exp Exp syn keyword basicFunction FILEATTR fileattr Fileattr FIX fix Fix syn keyword basicFunction FRE fre Fre FREEFILE freefile Freefile syn keyword basicFunction INP inp Inp INSTR instr Instr syn keyword basicFunction INT int Int LBOUND lbound Lbound syn keyword basicFunction LEN len Len LOC loc Loc syn keyword basicFunction LOF lof Lof LOG log Log syn keyword basicFunction LPOS lpos Lpos PEEK peek Peek syn keyword basicFunction PEN pen Pen POINT point Point syn keyword basicFunction POS pos Pos RND rnd Rnd syn keyword basicFunction SADD sadd Sadd SCREEN screen Screen syn keyword basicFunction SEEK seek Seek SETMEM setmem Setmem syn keyword basicFunction SGN sgn Sgn SIN sin Sin syn keyword basicFunction SPC spc Spc SQR sqr Sqr syn keyword basicFunction STICK stick Stick STRIG strig Strig syn keyword basicFunction TAB tab Tab TAN tan Tan syn keyword basicFunction UBOUND ubound Ubound VAL val Val syn keyword basicFunction VALPTR valptr Valptr VALSEG valseg Valseg syn keyword basicFunction VARPTR varptr Varptr VARSEG varseg Varseg syn keyword basicFunction CHR$ Chr$ chr$ COMMAND$ command$ Command$ syn keyword basicFunction DATE$ date$ Date$ ENVIRON$ environ$ Environ$ syn keyword basicFunction ERDEV$ erdev$ Erdev$ HEX$ hex$ Hex$ syn keyword basicFunction INKEY$ inkey$ Inkey$ INPUT$ input$ Input$ syn keyword basicFunction IOCTL$ ioctl$ Ioctl$ LCASES$ lcases$ Lcases$ syn keyword basicFunction LAFT$ laft$ Laft$ LTRIM$ ltrim$ Ltrim$ syn keyword basicFunction MID$ mid$ Mid$ MKDMBF$ mkdmbf$ Mkdmbf$ syn keyword basicFunction MKD$ mkd$ Mkd$ MKI$ mki$ Mki$ syn keyword basicFunction MKL$ mkl$ Mkl$ MKSMBF$ mksmbf$ Mksmbf$ syn keyword basicFunction MKS$ mks$ Mks$ OCT$ oct$ Oct$ syn keyword basicFunction RIGHT$ right$ Right$ RTRIM$ rtrim$ Rtrim$ syn keyword basicFunction SPACE$ space$ Space$ STR$ str$ Str$ syn keyword basicFunction STRING$ string$ String$ TIME$ time$ Time$ syn keyword basicFunction UCASE$ ucase$ Ucase$ VARPTR$ varptr$ Varptr$ syn keyword basicTodo contained TODO "integer number, or floating point number without a dot. syn match basicNumber "\<\d\+\>" "floating point number, with dot syn match basicNumber "\<\d\+\.\d*\>" "floating point number, starting with a dot syn match basicNumber "\.\d\+\>" " String and Character contstants syn match basicSpecial contained "\\\d\d\d\|\\." syn region basicString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=basicSpecial syn region basicComment start="REM" end="$" contains=basicTodo syn region basicComment start="^[ \t]*'" end="$" contains=basicTodo syn region basicLineNumber start="^\d" end="\s" syn match basicTypeSpecifier "[a-zA-Z0-9][\$%&!#]"ms=s+1 " Used with OPEN statement syn match basicFilenumber "#\d\+" "syn sync ccomment basicComment " syn match basicMathsOperator "[<>+\*^/\\=-]" syn match basicMathsOperator "-\|=\|[:<>+\*^/\\]\|AND\|OR" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link basicLabel Label hi def link basicConditional Conditional hi def link basicRepeat Repeat hi def link basicLineNumber Comment hi def link basicNumber Number hi def link basicError Error hi def link basicStatement Statement hi def link basicString String hi def link basicComment Comment hi def link basicSpecial Special hi def link basicTodo Todo hi def link basicFunction Identifier hi def link basicTypeSpecifier Type hi def link basicFilenumber basicTypeSpecifier "hi basicMathsOperator term=bold cterm=bold gui=bold let b:current_syntax = "basic" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!NDDvim80/syntax/gitsendemail.vimnu[" Vim syntax file " Language: git send-email message " Maintainer: Tim Pope " Filenames: .gitsendemail.* " Last Change: 2016 Aug 29 if exists("b:current_syntax") finish endif runtime! syntax/mail.vim unlet! b:current_syntax syn include @gitsendemailDiff syntax/diff.vim syn region gitsendemailDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^-- %/ fold contains=@gitsendemailDiff syn case match syn match gitsendemailComment "\%^From.*#.*" syn match gitsendemailComment "^GIT:.*" hi def link gitsendemailComment Comment let b:current_syntax = "gitsendemail" PK!Uuvim80/syntax/verilog.vimnu[" Vim syntax file " Language: Verilog " Maintainer: Mun Johl " Last Update: Wed Jul 20 16:04:19 PDT 2011 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Set the local value of the 'iskeyword' option. " NOTE: '?' was added so that verilogNumber would be processed correctly when " '?' is the last character of the number. setlocal iskeyword=@,48-57,63,_,192-255 " A bunch of useful Verilog keywords syn keyword verilogStatement always and assign automatic buf syn keyword verilogStatement bufif0 bufif1 cell cmos syn keyword verilogStatement config deassign defparam design syn keyword verilogStatement disable edge endconfig syn keyword verilogStatement endfunction endgenerate endmodule syn keyword verilogStatement endprimitive endspecify endtable endtask syn keyword verilogStatement event force function syn keyword verilogStatement generate genvar highz0 highz1 ifnone syn keyword verilogStatement incdir include initial inout input syn keyword verilogStatement instance integer large liblist syn keyword verilogStatement library localparam macromodule medium syn keyword verilogStatement module nand negedge nmos nor syn keyword verilogStatement noshowcancelled not notif0 notif1 or syn keyword verilogStatement output parameter pmos posedge primitive syn keyword verilogStatement pull0 pull1 pulldown pullup syn keyword verilogStatement pulsestyle_onevent pulsestyle_ondetect syn keyword verilogStatement rcmos real realtime reg release syn keyword verilogStatement rnmos rpmos rtran rtranif0 rtranif1 syn keyword verilogStatement scalared showcancelled signed small syn keyword verilogStatement specify specparam strong0 strong1 syn keyword verilogStatement supply0 supply1 table task time tran syn keyword verilogStatement tranif0 tranif1 tri tri0 tri1 triand syn keyword verilogStatement trior trireg unsigned use vectored wait syn keyword verilogStatement wand weak0 weak1 wire wor xnor xor syn keyword verilogLabel begin end fork join syn keyword verilogConditional if else case casex casez default endcase syn keyword verilogRepeat forever repeat while for syn keyword verilogTodo contained TODO FIXME syn match verilogOperator "[&|~>" syn match verilogGlobal "`celldefine" syn match verilogGlobal "`default_nettype" syn match verilogGlobal "`define" syn match verilogGlobal "`else" syn match verilogGlobal "`elsif" syn match verilogGlobal "`endcelldefine" syn match verilogGlobal "`endif" syn match verilogGlobal "`ifdef" syn match verilogGlobal "`ifndef" syn match verilogGlobal "`include" syn match verilogGlobal "`line" syn match verilogGlobal "`nounconnected_drive" syn match verilogGlobal "`resetall" syn match verilogGlobal "`timescale" syn match verilogGlobal "`unconnected_drive" syn match verilogGlobal "`undef" syn match verilogGlobal "$[a-zA-Z0-9_]\+\>" syn match verilogConstant "\<[A-Z][A-Z0-9_]\+\>" syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[bB]\s*[0-1_xXzZ?]\+\>" syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[oO]\s*[0-7_xXzZ?]\+\>" syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[dD]\s*[0-9_xXzZ?]\+\>" syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[hH]\s*[0-9a-fA-F_xXzZ?]\+\>" syn match verilogNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>" syn region verilogString start=+"+ skip=+\\"+ end=+"+ contains=verilogEscape,@Spell syn match verilogEscape +\\[nt"\\]+ contained syn match verilogEscape "\\\o\o\=\o\=" contained " Directives syn match verilogDirective "//\s*synopsys\>.*$" syn region verilogDirective start="/\*\s*synopsys\>" end="\*/" syn region verilogDirective start="//\s*synopsys dc_script_begin\>" end="//\s*synopsys dc_script_end\>" syn match verilogDirective "//\s*\$s\>.*$" syn region verilogDirective start="/\*\s*\$s\>" end="\*/" syn region verilogDirective start="//\s*\$s dc_script_begin\>" end="//\s*\$s dc_script_end\>" "Modify the following as needed. The trade-off is performance versus "functionality. syn sync minlines=50 " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default highlighting. hi def link verilogCharacter Character hi def link verilogConditional Conditional hi def link verilogRepeat Repeat hi def link verilogString String hi def link verilogTodo Todo hi def link verilogComment Comment hi def link verilogConstant Constant hi def link verilogLabel Label hi def link verilogNumber Number hi def link verilogOperator Special hi def link verilogStatement Statement hi def link verilogGlobal Define hi def link verilogDirective SpecialComment hi def link verilogEscape Special let b:current_syntax = "verilog" " vim: ts=8 PK!X66vim80/syntax/man.vimnu[" Vim syntax file " Language: Man page " Maintainer: SungHyun Nam " Previous Maintainer: Gautam H. Mudunuri " Version Info: " Last Change: 2015 Nov 24 " Additional highlighting by Johannes Tanzler : " * manSubHeading " * manSynopsis (only for sections 2 and 3) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Get the CTRL-H syntax to handle backspaced text runtime! syntax/ctrlh.vim syn case ignore syn match manReference "\f\+([1-9][a-z]\=)" syn match manTitle "^\f\+([0-9]\+[a-z]\=).*" syn match manSectionHeading "^[a-z][a-z -]*[a-z]$" syn match manSubHeading "^\s\{3\}[a-z][a-z -]*[a-z]$" syn match manOptionDesc "^\s*[+-][a-z0-9]\S*" syn match manLongOptionDesc "^\s*--[a-z0-9-]\S*" " syn match manHistory "^[a-z].*last change.*$" if getline(1) =~ '^[a-zA-Z_]\+([23])' syntax include @cCode :p:h/c.vim syn match manCFuncDefinition display "\<\h\w*\>\s*("me=e-1 contained syn region manSynopsis start="^SYNOPSIS"hs=s+8 end="^\u\+\s*$"me=e-12 keepend contains=manSectionHeading,@cCode,manCFuncDefinition endif " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link manTitle Title hi def link manSectionHeading Statement hi def link manOptionDesc Constant hi def link manLongOptionDesc Constant hi def link manReference PreProc hi def link manSubHeading Function hi def link manCFuncDefinition Function let b:current_syntax = "man" " vim:ts=8 sts=2 sw=2: PK!Kjjvim80/syntax/ora.vimnu[" Vim syntax file " Language: Oracle config files (.ora) (Oracle 8i, ver. 8.1.5) " Maintainer: Sandor Kopanyi " Url: <-> " Last Change: 2003 May 11 " * the keywords are listed by file (sqlnet.ora, listener.ora, etc.) " * the parathesis-checking is made at the beginning for all keywords " * possible values are listed also " * there are some overlappings (e.g. METHOD is mentioned both for " sqlnet-ora and tnsnames.ora; since will not cause(?) problems " is easier to follow separately each file's keywords) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'ora' endif syn case ignore "comments syn match oraComment "\#.*" " catch errors caused by wrong parenthesis syn region oraParen transparent start="(" end=")" contains=@oraAll,oraParen syn match oraParenError ")" " strings syn region oraString start=+"+ end=+"+ "common .ora staff "common protocol parameters syn keyword oraKeywordGroup ADDRESS ADDRESS_LIST syn keyword oraKeywordGroup DESCRIPTION_LIST DESCRIPTION "all protocols syn keyword oraKeyword PROTOCOL syn keyword oraValue ipc tcp nmp "Bequeath syn keyword oraKeyword PROGRAM ARGV0 ARGS "IPC syn keyword oraKeyword KEY "Named Pipes syn keyword oraKeyword SERVER PIPE "LU6.2 syn keyword oraKeyword LU_NAME LLU LOCAL_LU LLU_NAME LOCAL_LU_NAME syn keyword oraKeyword MODE MDN syn keyword oraKeyword PLU PARTNER_LU_NAME PLU_LA PARTNER_LU_LOCAL_ALIAS syn keyword oraKeyword TP_NAME TPN "SPX syn keyword oraKeyword SERVICE "TCP/IP and TCP/IP with SSL syn keyword oraKeyword HOST PORT "misc. keywords I've met but didn't find in manual (maybe they are deprecated?) syn keyword oraKeywordGroup COMMUNITY_LIST syn keyword oraKeyword COMMUNITY NAME DEFAULT_ZONE syn keyword oraValue tcpcom "common values syn keyword oraValue yes no on off true false null all none ok "word 'world' is used a lot... syn keyword oraModifier world "misc. common keywords syn keyword oraKeyword TRACE_DIRECTORY TRACE_LEVEL TRACE_FILE "sqlnet.ora syn keyword oraKeywordPref NAMES NAMESCTL syn keyword oraKeywordPref OSS SOURCE SQLNET TNSPING syn keyword oraKeyword AUTOMATIC_IPC BEQUEATH_DETACH DAEMON TRACE_MASK syn keyword oraKeyword DISABLE_OOB syn keyword oraKeyword LOG_DIRECTORY_CLIENT LOG_DIRECTORY_SERVER syn keyword oraKeyword LOG_FILE_CLIENT LOG_FILE_SERVER syn keyword oraKeyword DCE PREFIX DEFAULT_DOMAIN DIRECTORY_PATH syn keyword oraKeyword INITIAL_RETRY_TIMEOUT MAX_OPEN_CONNECTIONS syn keyword oraKeyword MESSAGE_POOL_START_SIZE NIS META_MAP syn keyword oraKeyword PASSWORD PREFERRED_SERVERS REQUEST_RETRIES syn keyword oraKeyword INTERNAL_ENCRYPT_PASSWORD INTERNAL_USE syn keyword oraKeyword NO_INITIAL_SERVER NOCONFIRM syn keyword oraKeyword SERVER_PASSWORD TRACE_UNIQUE MY_WALLET syn keyword oraKeyword LOCATION DIRECTORY METHOD METHOD_DATA syn keyword oraKeyword SQLNET_ADDRESS syn keyword oraKeyword AUTHENTICATION_SERVICES syn keyword oraKeyword AUTHENTICATION_KERBEROS5_SERVICE syn keyword oraKeyword AUTHENTICATION_GSSAPI_SERVICE syn keyword oraKeyword CLIENT_REGISTRATION syn keyword oraKeyword CRYPTO_CHECKSUM_CLIENT CRYPTO_CHECKSUM_SERVER syn keyword oraKeyword CRYPTO_CHECKSUM_TYPES_CLIENT CRYPTO_CHECKSUM_TYPES_SERVER syn keyword oraKeyword CRYPTO_SEED syn keyword oraKeyword ENCRYPTION_CLIENT ENCRYPTION_SERVER syn keyword oraKeyword ENCRYPTION_TYPES_CLIENT ENCRYPTION_TYPES_SERVER syn keyword oraKeyword EXPIRE_TIME syn keyword oraKeyword IDENTIX_FINGERPRINT_DATABASE IDENTIX_FINGERPRINT_DATABASE_USER syn keyword oraKeyword IDENTIX_FINGERPRINT_DATABASE_PASSWORD IDENTIX_FINGERPRINT_METHOD syn keyword oraKeyword KERBEROS5_CC_NAME KERBEROS5_CLOCKSKEW KERBEROS5_CONF syn keyword oraKeyword KERBEROS5_KEYTAB KERBEROS5_REALMS syn keyword oraKeyword RADIUS_ALTERNATE RADIUS_ALTERNATE_PORT RADIUS_ALTERNATE_RETRIES syn keyword oraKeyword RADIUS_AUTHENTICATION_TIMEOUT RADIUS_AUTHENTICATION syn keyword oraKeyword RADIUS_AUTHENTICATION_INTERFACE RADIUS_AUTHENTICATION_PORT syn keyword oraKeyword RADIUS_AUTHENTICATION_RETRIES RADIUS_AUTHENTICATION_TIMEOUT syn keyword oraKeyword RADIUS_CHALLENGE_RESPONSE RADIUS_SECRET RADIUS_SEND_ACCOUNTING syn keyword oraKeyword SSL_CLIENT_AUTHENTICATION SSL_CIPHER_SUITES SSL_VERSION syn keyword oraKeyword TRACE_DIRECTORY_CLIENT TRACE_DIRECTORY_SERVER syn keyword oraKeyword TRACE_FILE_CLIENT TRACE_FILE_SERVER syn keyword oraKeyword TRACE_LEVEL_CLIENT TRACE_LEVEL_SERVER syn keyword oraKeyword TRACE_UNIQUE_CLIENT syn keyword oraKeyword USE_CMAN USE_DEDICATED_SERVER syn keyword oraValue user admin support syn keyword oraValue accept accepted reject rejected requested required syn keyword oraValue md5 rc4_40 rc4_56 rc4_128 des des_40 syn keyword oraValue tnsnames onames hostname dce nis novell syn keyword oraValue file oracle syn keyword oraValue oss syn keyword oraValue beq nds nts kerberos5 securid cybersafe identix dcegssapi radius syn keyword oraValue undetermined "tnsnames.ora syn keyword oraKeywordGroup CONNECT_DATA FAILOVER_MODE syn keyword oraKeyword FAILOVER LOAD_BALANCE SOURCE_ROUTE TYPE_OF_SERVICE syn keyword oraKeyword BACKUP TYPE METHOD GLOBAL_NAME HS syn keyword oraKeyword INSTANCE_NAME RDB_DATABASE SDU SERVER syn keyword oraKeyword SERVICE_NAME SERVICE_NAMES SID syn keyword oraKeyword HANDLER_NAME EXTPROC_CONNECTION_DATA syn keyword oraValue session select basic preconnect dedicated shared "listener.ora syn keyword oraKeywordGroup SID_LIST SID_DESC PRESPAWN_LIST PRESPAWN_DESC syn match oraKeywordGroup "SID_LIST_\w*" syn keyword oraKeyword PROTOCOL_STACK PRESENTATION SESSION syn keyword oraKeyword GLOBAL_DBNAME ORACLE_HOME PROGRAM SID_NAME syn keyword oraKeyword PRESPAWN_MAX POOL_SIZE TIMEOUT syn match oraKeyword "CONNECT_TIMEOUT_\w*" syn match oraKeyword "LOG_DIRECTORY_\w*" syn match oraKeyword "LOG_FILE_\w*" syn match oraKeyword "PASSWORDS_\w*" syn match oraKeyword "STARTUP_WAIT_TIME_\w*" syn match oraKeyword "STARTUP_WAITTIME_\w*" syn match oraKeyword "TRACE_DIRECTORY_\w*" syn match oraKeyword "TRACE_FILE_\w*" syn match oraKeyword "TRACE_LEVEL_\w*" syn match oraKeyword "USE_PLUG_AND_PLAY_\w*" syn keyword oraValue ttc giop ns raw "names.ora syn keyword oraKeywordGroup ADDRESSES ADMIN_REGION syn keyword oraKeywordGroup DEFAULT_FORWARDERS FORWARDER_LIST FORWARDER syn keyword oraKeywordGroup DOMAIN_HINTS HINT_DESC HINT_LIST syn keyword oraKeywordGroup DOMAINS DOMAIN_LIST DOMAIN syn keyword oraKeywordPref NAMES syn keyword oraKeyword EXPIRE REFRESH REGION RETRY USERID VERSION syn keyword oraKeyword AUTHORITY_REQUIRED CONNECT_TIMEOUT syn keyword oraKeyword AUTO_REFRESH_EXPIRE AUTO_REFRESH_RETRY syn keyword oraKeyword CACHE_CHECKPOINT_FILE CACHE_CHECKPOINT_INTERVAL syn keyword oraKeyword CONFIG_CHECKPOINT_FILE DEFAULT_FORWARDERS_ONLY syn keyword oraKeyword HINT FORWARDING_AVAILABLE FORWARDING_DESIRED syn keyword oraKeyword KEEP_DB_OPEN syn keyword oraKeyword LOG_DIRECTORY LOG_FILE LOG_STATS_INTERVAL LOG_UNIQUE syn keyword oraKeyword MAX_OPEN_CONNECTIONS MAX_REFORWARDS syn keyword oraKeyword MESSAGE_POOL_START_SIZE syn keyword oraKeyword NO_MODIFY_REQUESTS NO_REGION_DATABASE syn keyword oraKeyword PASSWORD REGION_CHECKPOINT_FILE syn keyword oraKeyword RESET_STATS_INTERVAL SAVE_CONFIG_ON_STOP syn keyword oraKeyword SERVER_NAME TRACE_FUNC TRACE_UNIQUE "cman.ora syn keyword oraKeywordGroup CMAN CMAN_ADMIN CMAN_PROFILE PARAMETER_LIST syn keyword oraKeywordGroup CMAN_RULES RULES_LIST RULE syn keyword oraKeyword ANSWER_TIMEOUT AUTHENTICATION_LEVEL LOG_LEVEL syn keyword oraKeyword MAX_FREELIST_BUFFERS MAXIMUM_CONNECT_DATA MAXIMUM_RELAYS syn keyword oraKeyword RELAY_STATISTICS SHOW_TNS_INFO TRACING syn keyword oraKeyword USE_ASYNC_CALL SRC DST SRV ACT "protocol.ora syn match oraKeyword "\w*\.EXCLUDED_NODES" syn match oraKeyword "\w*\.INVITED_NODES" syn match oraKeyword "\w*\.VALIDNODE_CHECKING" syn keyword oraKeyword TCP NODELAY "--------------------------------------- "init.ora "common values syn keyword oraValue nested_loops merge hash unlimited "init params syn keyword oraKeyword O7_DICTIONARY_ACCESSIBILITY ALWAYS_ANTI_JOIN ALWAYS_SEMI_JOIN syn keyword oraKeyword AQ_TM_PROCESSES ARCH_IO_SLAVES AUDIT_FILE_DEST AUDIT_TRAIL syn keyword oraKeyword BACKGROUND_CORE_DUMP BACKGROUND_DUMP_DEST syn keyword oraKeyword BACKUP_TAPE_IO_SLAVES BITMAP_MERGE_AREA_SIZE syn keyword oraKeyword BLANK_TRIMMING BUFFER_POOL_KEEP BUFFER_POOL_RECYCLE syn keyword oraKeyword COMMIT_POINT_STRENGTH COMPATIBLE CONTROL_FILE_RECORD_KEEP_TIME syn keyword oraKeyword CONTROL_FILES CORE_DUMP_DEST CPU_COUNT syn keyword oraKeyword CREATE_BITMAP_AREA_SIZE CURSOR_SPACE_FOR_TIME syn keyword oraKeyword DB_BLOCK_BUFFERS DB_BLOCK_CHECKING DB_BLOCK_CHECKSUM syn keyword oraKeyword DB_BLOCK_LRU_LATCHES DB_BLOCK_MAX_DIRTY_TARGET syn keyword oraKeyword DB_BLOCK_SIZE DB_DOMAIN syn keyword oraKeyword DB_FILE_DIRECT_IO_COUNT DB_FILE_MULTIBLOCK_READ_COUNT syn keyword oraKeyword DB_FILE_NAME_CONVERT DB_FILE_SIMULTANEOUS_WRITES syn keyword oraKeyword DB_FILES DB_NAME DB_WRITER_PROCESSES syn keyword oraKeyword DBLINK_ENCRYPT_LOGIN DBWR_IO_SLAVES syn keyword oraKeyword DELAYED_LOGGING_BLOCK_CLEANOUTS DISCRETE_TRANSACTIONS_ENABLED syn keyword oraKeyword DISK_ASYNCH_IO DISTRIBUTED_TRANSACTIONS syn keyword oraKeyword DML_LOCKS ENQUEUE_RESOURCES ENT_DOMAIN_NAME EVENT syn keyword oraKeyword FAST_START_IO_TARGET FAST_START_PARALLEL_ROLLBACK syn keyword oraKeyword FIXED_DATE FREEZE_DB_FOR_FAST_INSTANCE_RECOVERY syn keyword oraKeyword GC_DEFER_TIME GC_FILES_TO_LOCKS GC_RELEASABLE_LOCKS GC_ROLLBACK_LOCKS syn keyword oraKeyword GLOBAL_NAMES HASH_AREA_SIZE syn keyword oraKeyword HASH_JOIN_ENABLED HASH_MULTIBLOCK_IO_COUNT syn keyword oraKeyword HI_SHARED_MEMORY_ADDRESS HS_AUTOREGISTER syn keyword oraKeyword IFILE syn keyword oraKeyword INSTANCE_GROUPS INSTANCE_NAME INSTANCE_NUMBER syn keyword oraKeyword JAVA_POOL_SIZE JOB_QUEUE_INTERVAL JOB_QUEUE_PROCESSES LARGE_POOL_SIZE syn keyword oraKeyword LICENSE_MAX_SESSIONS LICENSE_MAX_USERS LICENSE_SESSIONS_WARNING syn keyword oraKeyword LM_LOCKS LM_PROCS LM_RESS syn keyword oraKeyword LOCAL_LISTENER LOCK_NAME_SPACE LOCK_SGA LOCK_SGA_AREAS syn keyword oraKeyword LOG_ARCHIVE_BUFFER_SIZE LOG_ARCHIVE_BUFFERS LOG_ARCHIVE_DEST syn match oraKeyword "LOG_ARCHIVE_DEST_\(1\|2\|3\|4\|5\)" syn match oraKeyword "LOG_ARCHIVE_DEST_STATE_\(1\|2\|3\|4\|5\)" syn keyword oraKeyword LOG_ARCHIVE_DUPLEX_DEST LOG_ARCHIVE_FORMAT LOG_ARCHIVE_MAX_PROCESSES syn keyword oraKeyword LOG_ARCHIVE_MIN_SUCCEED_DEST LOG_ARCHIVE_START syn keyword oraKeyword LOG_BUFFER LOG_CHECKPOINT_INTERVAL LOG_CHECKPOINT_TIMEOUT syn keyword oraKeyword LOG_CHECKPOINTS_TO_ALERT LOG_FILE_NAME_CONVERT syn keyword oraKeyword MAX_COMMIT_PROPAGATION_DELAY MAX_DUMP_FILE_SIZE syn keyword oraKeyword MAX_ENABLED_ROLES MAX_ROLLBACK_SEGMENTS syn keyword oraKeyword MTS_DISPATCHERS MTS_MAX_DISPATCHERS MTS_MAX_SERVERS MTS_SERVERS syn keyword oraKeyword NLS_CALENDAR NLS_COMP NLS_CURRENCY NLS_DATE_FORMAT syn keyword oraKeyword NLS_DATE_LANGUAGE NLS_DUAL_CURRENCY NLS_ISO_CURRENCY NLS_LANGUAGE syn keyword oraKeyword NLS_NUMERIC_CHARACTERS NLS_SORT NLS_TERRITORY syn keyword oraKeyword OBJECT_CACHE_MAX_SIZE_PERCENT OBJECT_CACHE_OPTIMAL_SIZE syn keyword oraKeyword OPEN_CURSORS OPEN_LINKS OPEN_LINKS_PER_INSTANCE syn keyword oraKeyword OPS_ADMINISTRATION_GROUP syn keyword oraKeyword OPTIMIZER_FEATURES_ENABLE OPTIMIZER_INDEX_CACHING syn keyword oraKeyword OPTIMIZER_INDEX_COST_ADJ OPTIMIZER_MAX_PERMUTATIONS syn keyword oraKeyword OPTIMIZER_MODE OPTIMIZER_PERCENT_PARALLEL syn keyword oraKeyword OPTIMIZER_SEARCH_LIMIT syn keyword oraKeyword ORACLE_TRACE_COLLECTION_NAME ORACLE_TRACE_COLLECTION_PATH syn keyword oraKeyword ORACLE_TRACE_COLLECTION_SIZE ORACLE_TRACE_ENABLE syn keyword oraKeyword ORACLE_TRACE_FACILITY_NAME ORACLE_TRACE_FACILITY_PATH syn keyword oraKeyword OS_AUTHENT_PREFIX OS_ROLES syn keyword oraKeyword PARALLEL_ADAPTIVE_MULTI_USER PARALLEL_AUTOMATIC_TUNING syn keyword oraKeyword PARALLEL_BROADCAST_ENABLED PARALLEL_EXECUTION_MESSAGE_SIZE syn keyword oraKeyword PARALLEL_INSTANCE_GROUP PARALLEL_MAX_SERVERS syn keyword oraKeyword PARALLEL_MIN_PERCENT PARALLEL_MIN_SERVERS syn keyword oraKeyword PARALLEL_SERVER PARALLEL_SERVER_INSTANCES PARALLEL_THREADS_PER_CPU syn keyword oraKeyword PARTITION_VIEW_ENABLED PLSQL_V2_COMPATIBILITY syn keyword oraKeyword PRE_PAGE_SGA PROCESSES syn keyword oraKeyword QUERY_REWRITE_ENABLED QUERY_REWRITE_INTEGRITY syn keyword oraKeyword RDBMS_SERVER_DN READ_ONLY_OPEN_DELAYED RECOVERY_PARALLELISM syn keyword oraKeyword REMOTE_DEPENDENCIES_MODE REMOTE_LOGIN_PASSWORDFILE syn keyword oraKeyword REMOTE_OS_AUTHENT REMOTE_OS_ROLES syn keyword oraKeyword REPLICATION_DEPENDENCY_TRACKING syn keyword oraKeyword RESOURCE_LIMIT RESOURCE_MANAGER_PLAN syn keyword oraKeyword ROLLBACK_SEGMENTS ROW_LOCKING SERIAL _REUSE SERVICE_NAMES syn keyword oraKeyword SESSION_CACHED_CURSORS SESSION_MAX_OPEN_FILES SESSIONS syn keyword oraKeyword SHADOW_CORE_DUMP syn keyword oraKeyword SHARED_MEMORY_ADDRESS SHARED_POOL_RESERVED_SIZE SHARED_POOL_SIZE syn keyword oraKeyword SORT_AREA_RETAINED_SIZE SORT_AREA_SIZE SORT_MULTIBLOCK_READ_COUNT syn keyword oraKeyword SQL92_SECURITY SQL_TRACE STANDBY_ARCHIVE_DEST syn keyword oraKeyword STAR_TRANSFORMATION_ENABLED TAPE_ASYNCH_IO THREAD syn keyword oraKeyword TIMED_OS_STATISTICS TIMED_STATISTICS syn keyword oraKeyword TRANSACTION_AUDITING TRANSACTIONS TRANSACTIONS_PER_ROLLBACK_SEGMENT syn keyword oraKeyword USE_INDIRECT_DATA_BUFFERS USER_DUMP_DEST syn keyword oraKeyword UTL_FILE_DIR syn keyword oraKeywordObs ALLOW_PARTIAL_SN_RESULTS B_TREE_BITMAP_PLANS syn keyword oraKeywordObs BACKUP_DISK_IO_SLAVES CACHE_SIZE_THRESHOLD syn keyword oraKeywordObs CCF_IO_SIZE CLEANUP_ROLLBACK_ENTRIES syn keyword oraKeywordObs CLOSE_CACHED_OPEN_CURSORS COMPATIBLE_NO_RECOVERY syn keyword oraKeywordObs COMPLEX_VIEW_MERGING syn keyword oraKeywordObs DB_BLOCK_CHECKPOINT_BATCH DB_BLOCK_LRU_EXTENDED_STATISTICS syn keyword oraKeywordObs DB_BLOCK_LRU_STATISTICS syn keyword oraKeywordObs DISTRIBUTED_LOCK_TIMEOUT DISTRIBUTED_RECOVERY_CONNECTION_HOLD_TIME syn keyword oraKeywordObs FAST_FULL_SCAN_ENABLED GC_LATCHES GC_LCK_PROCS syn keyword oraKeywordObs LARGE_POOL_MIN_ALLOC LGWR_IO_SLAVES syn keyword oraKeywordObs LOG_BLOCK_CHECKSUM LOG_FILES syn keyword oraKeywordObs LOG_SIMULTANEOUS_COPIES LOG_SMALL_ENTRY_MAX_SIZE syn keyword oraKeywordObs MAX_TRANSACTION_BRANCHES syn keyword oraKeywordObs MTS_LISTENER_ADDRESS MTS_MULTIPLE_LISTENERS syn keyword oraKeywordObs MTS_RATE_LOG_SIZE MTS_RATE_SCALE MTS_SERVICE syn keyword oraKeywordObs OGMS_HOME OPS_ADMIN_GROUP syn keyword oraKeywordObs PARALLEL_DEFAULT_MAX_INSTANCES PARALLEL_MIN_MESSAGE_POOL syn keyword oraKeywordObs PARALLEL_SERVER_IDLE_TIME PARALLEL_TRANSACTION_RESOURCE_TIMEOUT syn keyword oraKeywordObs PUSH_JOIN_PREDICATE REDUCE_ALARM ROW_CACHE_CURSORS syn keyword oraKeywordObs SEQUENCE_CACHE_ENTRIES SEQUENCE_CACHE_HASH_BUCKETS syn keyword oraKeywordObs SHARED_POOL_RESERVED_MIN_ALLOC syn keyword oraKeywordObs SORT_DIRECT_WRITES SORT_READ_FAC SORT_SPACEMAP_SIZE syn keyword oraKeywordObs SORT_WRITE_BUFFER_SIZE SORT_WRITE_BUFFERS syn keyword oraKeywordObs SPIN_COUNT TEMPORARY_TABLE_LOCKS USE_ISM syn keyword oraValue db os full partial mandatory optional reopen enable defer syn keyword oraValue always default intent disable dml plsql temp_disable syn match oravalue "Arabic Hijrah" syn match oravalue "English Hijrah" syn match oravalue "Gregorian" syn match oravalue "Japanese Imperial" syn match oravalue "Persian" syn match oravalue "ROC Official" syn match oravalue "Thai Buddha" syn match oravalue "8.0.0" syn match oravalue "8.0.3" syn match oravalue "8.0.4" syn match oravalue "8.1.3" syn match oraModifier "archived log" syn match oraModifier "backup corruption" syn match oraModifier "backup datafile" syn match oraModifier "backup piece " syn match oraModifier "backup redo log" syn match oraModifier "backup set" syn match oraModifier "copy corruption" syn match oraModifier "datafile copy" syn match oraModifier "deleted object" syn match oraModifier "loghistory" syn match oraModifier "offline range" "undocumented init params "up to 7.2 (inclusive) syn keyword oraKeywordUndObs _latch_spin_count _trace_instance_termination syn keyword oraKeywordUndObs _wakeup_timeout _lgwr_async_write "7.3 syn keyword oraKeywordUndObs _standby_lock_space_name _enable_dba_locking "8.0.5 syn keyword oraKeywordUnd _NUMA_instance_mapping _NUMA_pool_size syn keyword oraKeywordUnd _advanced_dss_features _affinity_on _all_shared_dblinks syn keyword oraKeywordUnd _allocate_creation_order _allow_resetlogs_corruption syn keyword oraKeywordUnd _always_star_transformation _bump_highwater_mark_count syn keyword oraKeywordUnd _column_elimination_off _controlfile_enqueue_timeout syn keyword oraKeywordUnd _corrupt_blocks_on_stuck_recovery _corrupted_rollback_segments syn keyword oraKeywordUnd _cr_deadtime _cursor_db_buffers_pinned syn keyword oraKeywordUnd _db_block_cache_clone _db_block_cache_map _db_block_cache_protect syn keyword oraKeywordUnd _db_block_hash_buckets _db_block_hi_priority_batch_size syn keyword oraKeywordUnd _db_block_max_cr_dba _db_block_max_scan_cnt syn keyword oraKeywordUnd _db_block_med_priority_batch_size _db_block_no_idle_writes syn keyword oraKeywordUnd _db_block_write_batch _db_handles _db_handles_cached syn keyword oraKeywordUnd _db_large_dirty_queue _db_no_mount_lock syn keyword oraKeywordUnd _db_writer_histogram_statistics _db_writer_scan_depth syn keyword oraKeywordUnd _db_writer_scan_depth_decrement _db_writer_scan_depth_increment syn keyword oraKeywordUnd _disable_incremental_checkpoints syn keyword oraKeywordUnd _disable_latch_free_SCN_writes_via_32cas syn keyword oraKeywordUnd _disable_latch_free_SCN_writes_via_64cas syn keyword oraKeywordUnd _disable_logging _disable_ntlog_events syn keyword oraKeywordUnd _dss_cache_flush _dynamic_stats_threshold syn keyword oraKeywordUnd _enable_cscn_caching _enable_default_affinity syn keyword oraKeywordUnd _enqueue_debug_multi_instance _enqueue_hash syn keyword oraKeywordUnd _enqueue_hash_chain_latches _enqueue_locks syn keyword oraKeywordUnd _fifth_spare_parameter _first_spare_parameter _fourth_spare_parameter syn keyword oraKeywordUnd _gc_class_locks _groupby_nopushdown_cut_ratio syn keyword oraKeywordUnd _idl_conventional_index_maintenance _ignore_failed_escalates syn keyword oraKeywordUnd _init_sql_file syn keyword oraKeywordUnd _io_slaves_disabled _ioslave_batch_count _ioslave_issue_count syn keyword oraKeywordUnd _kgl_bucket_count _kgl_latch_count _kgl_multi_instance_invalidation syn keyword oraKeywordUnd _kgl_multi_instance_lock _kgl_multi_instance_pin syn keyword oraKeywordUnd _latch_miss_stat_sid _latch_recovery_alignment _latch_wait_posting syn keyword oraKeywordUnd _lm_ast_option _lm_direct_sends _lm_dlmd_procs _lm_domains _lm_groups syn keyword oraKeywordUnd _lm_non_fault_tolerant _lm_send_buffers _lm_statistics _lm_xids syn keyword oraKeywordUnd _log_blocks_during_backup _log_buffers_debug _log_checkpoint_recovery_check syn keyword oraKeywordUnd _log_debug_multi_instance _log_entry_prebuild_threshold _log_io_size syn keyword oraKeywordUnd _log_space_errors syn keyword oraKeywordUnd _max_exponential_sleep _max_sleep_holding_latch syn keyword oraKeywordUnd _messages _minimum_giga_scn _mts_load_constants _nested_loop_fudge syn keyword oraKeywordUnd _no_objects _no_or_expansion syn keyword oraKeywordUnd _number_cached_attributes _offline_rollback_segments _open_files_limit syn keyword oraKeywordUnd _optimizer_undo_changes syn keyword oraKeywordUnd _oracle_trace_events _oracle_trace_facility_version syn keyword oraKeywordUnd _ordered_nested_loop _parallel_server_sleep_time syn keyword oraKeywordUnd _passwordfile_enqueue_timeout _pdml_slaves_diff_part syn keyword oraKeywordUnd _plsql_dump_buffer_events _predicate_elimination_enabled syn keyword oraKeywordUnd _project_view_columns syn keyword oraKeywordUnd _px_broadcast_fudge_factor _px_broadcast_trace _px_dop_limit_degree syn keyword oraKeywordUnd _px_dop_limit_threshold _px_kxfr_granule_allocation _px_kxib_tracing syn keyword oraKeywordUnd _release_insert_threshold _reuse_index_loop syn keyword oraKeywordUnd _rollback_segment_count _rollback_segment_initial syn keyword oraKeywordUnd _row_cache_buffer_size _row_cache_instance_locks syn keyword oraKeywordUnd _save_escalates _scn_scheme syn keyword oraKeywordUnd _second_spare_parameter _session_idle_bit_latches syn keyword oraKeywordUnd _shared_session_sort_fetch_buffer _single_process syn keyword oraKeywordUnd _small_table_threshold _sql_connect_capability_override syn keyword oraKeywordUnd _sql_connect_capability_table syn keyword oraKeywordUnd _test_param_1 _test_param_2 _test_param_3 syn keyword oraKeywordUnd _third_spare_parameter _tq_dump_period syn keyword oraKeywordUnd _trace_archive_dest _trace_archive_start _trace_block_size syn keyword oraKeywordUnd _trace_buffers_per_process _trace_enabled _trace_events syn keyword oraKeywordUnd _trace_file_size _trace_files_public _trace_flushing _trace_write_batch_size syn keyword oraKeywordUnd _upconvert_from_ast _use_vector_post _wait_for_sync _walk_insert_threshold "dunno which version; may be 8.1.x, may be obsoleted syn keyword oraKeywordUndObs _arch_io_slaves _average_dirties_half_life _b_tree_bitmap_plans syn keyword oraKeywordUndObs _backup_disk_io_slaves _backup_io_pool_size syn keyword oraKeywordUndObs _cleanup_rollback_entries _close_cached_open_cursors syn keyword oraKeywordUndObs _compatible_no_recovery _complex_view_merging syn keyword oraKeywordUndObs _cpu_to_io _cr_server syn keyword oraKeywordUndObs _db_aging_cool_count _db_aging_freeze_cr _db_aging_hot_criteria syn keyword oraKeywordUndObs _db_aging_stay_count _db_aging_touch_time syn keyword oraKeywordUndObs _db_percent_hot_default _db_percent_hot_keep _db_percent_hot_recycle syn keyword oraKeywordUndObs _db_writer_chunk_writes _db_writer_max_writes syn keyword oraKeywordUndObs _dbwr_async_io _dbwr_tracing syn keyword oraKeywordUndObs _defer_multiple_waiters _discrete_transaction_enabled syn keyword oraKeywordUndObs _distributed_lock_timeout _distributed_recovery _distribited_recovery_ syn keyword oraKeywordUndObs _domain_index_batch_size _domain_index_dml_batch_size syn keyword oraKeywordUndObs _enable_NUMA_optimization _enable_block_level_transaction_recovery syn keyword oraKeywordUndObs _enable_list_io _enable_multiple_sampling syn keyword oraKeywordUndObs _fairness_treshold _fast_full_scan_enabled _foreground_locks syn keyword oraKeywordUndObs _full_pwise_join_enabled _gc_latches _gc_lck_procs syn keyword oraKeywordUndObs _high_server_treshold _index_prefetch_factor _kcl_debug syn keyword oraKeywordUndObs _kkfi_trace _large_pool_min_alloc _lazy_freelist_close _left_nested_loops_random syn keyword oraKeywordUndObs _lgwr_async_io _lgwr_io_slaves _lock_sga_areas syn keyword oraKeywordUndObs _log_archive_buffer_size _log_archive_buffers _log_simultaneous_copies syn keyword oraKeywordUndObs _low_server_treshold _max_transaction_branches syn keyword oraKeywordUndObs _mts_rate_log_size _mts_rate_scale syn keyword oraKeywordUndObs _mview_cost_rewrite _mview_rewrite_2 syn keyword oraKeywordUndObs _ncmb_readahead_enabled _ncmb_readahead_tracing syn keyword oraKeywordUndObs _ogms_home syn keyword oraKeywordUndObs _parallel_adaptive_max_users _parallel_default_max_instances syn keyword oraKeywordUndObs _parallel_execution_message_align _parallel_fake_class_pct syn keyword oraKeywordUndObs _parallel_load_bal_unit _parallel_load_balancing syn keyword oraKeywordUndObs _parallel_min_message_pool _parallel_recovery_stopat syn keyword oraKeywordUndObs _parallel_server_idle_time _parallelism_cost_fudge_factor syn keyword oraKeywordUndObs _partial_pwise_join_enabled _pdml_separate_gim _push_join_predicate syn keyword oraKeywordUndObs _px_granule_size _px_index_sampling _px_load_publish_interval syn keyword oraKeywordUndObs _px_max_granules_per_slave _px_min_granules_per_slave _px_no_stealing syn keyword oraKeywordUndObs _row_cache_cursors _serial_direct_read _shared_pool_reserved_min_alloc syn keyword oraKeywordUndObs _sort_space_for_write_buffers _spin_count _system_trig_enabled syn keyword oraKeywordUndObs _trace_buffer_flushes _trace_cr_buffer_creates _trace_multi_block_reads syn keyword oraKeywordUndObs _transaction_recovery_servers _use_ism _yield_check_interval syn cluster oraAll add=oraKeyword,oraKeywordGroup,oraKeywordPref,oraKeywordObs,oraKeywordUnd,oraKeywordUndObs syn cluster oraAll add=oraValue,oraModifier,oraString,oraSpecial,oraComment "============================================================================== " highlighting " Only when an item doesn't have highlighting yet hi def link oraKeyword Statement "usual keywords hi def link oraKeywordGroup Type "keywords which group other keywords hi def link oraKeywordPref oraKeywordGroup "keywords which act as prefixes hi def link oraKeywordObs Todo "obsolete keywords hi def link oraKeywordUnd PreProc "undocumented keywords hi def link oraKeywordUndObs oraKeywordObs "undocumented obsolete keywords hi def link oraValue Identifier "values, like true or false hi def link oraModifier oraValue "modifies values hi def link oraString String "strings hi def link oraSpecial Special "special characters hi def link oraError Error "errors hi def link oraParenError oraError "errors caused by mismatching parantheses hi def link oraComment Comment "comments let b:current_syntax = "ora" if main_syntax == 'ora' unlet main_syntax endif " vim: ts=8 PK!=vim80/syntax/rpcgen.vimnu[" Vim syntax file " Language: rpcgen " Maintainer: Charles E. Campbell " Last Change: Aug 31, 2016 " Version: 12 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_RPCGEN if exists("b:current_syntax") finish endif " Read the C syntax to start with runtime! syntax/c.vim syn keyword rpcProgram program skipnl skipwhite nextgroup=rpcProgName syn match rpcProgName contained "\<\i\I*\>" skipnl skipwhite nextgroup=rpcProgZone syn region rpcProgZone contained matchgroup=Delimiter start="{" matchgroup=Delimiter end="}\s*=\s*\(\d\+\|0x[23]\x\{7}\)\s*;"me=e-1 contains=rpcVersion,cComment,rpcProgNmbrErr syn keyword rpcVersion contained version skipnl skipwhite nextgroup=rpcVersName syn match rpcVersName contained "\<\i\I*\>" skipnl skipwhite nextgroup=rpcVersZone syn region rpcVersZone contained matchgroup=Delimiter start="{" matchgroup=Delimiter end="}\s*=\s*\d\+\s*;"me=e-1 contains=cType,cStructure,cStorageClass,rpcDecl,rpcProcNmbr,cComment syn keyword rpcDecl contained string syn match rpcProcNmbr contained "=\s*\d\+;"me=e-1 syn match rpcProgNmbrErr contained "=\s*0x[^23]\x*"ms=s+1 syn match rpcPassThru "^\s*%.*$" " Define the default highlighting. if !exists("skip_rpcgen_syntax_inits") hi def link rpcProgName rpcName hi def link rpcProgram rpcStatement hi def link rpcVersName rpcName hi def link rpcVersion rpcStatement hi def link rpcDecl cType hi def link rpcPassThru cComment hi def link rpcName Special hi def link rpcProcNmbr Delimiter hi def link rpcProgNmbrErr Error hi def link rpcStatement Statement endif let b:current_syntax = "rpcgen" " vim: ts=8 PK!"r;;vim80/syntax/sgmllnx.vimnu[" Vim syntax file " Language: SGML-linuxdoc (supported by old sgmltools-1.x) " Maintainer: SungHyun Nam " Last Change: 2013 May 13 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " tags syn region sgmllnxEndTag start=++ contains=sgmllnxTagN,sgmllnxTagError syn region sgmllnxTag start=+<[^/]+ end=+>+ contains=sgmllnxTagN,sgmllnxTagError syn match sgmllnxTagN contained +<\s*[-a-zA-Z0-9]\++ms=s+1 contains=sgmllnxTagName syn match sgmllnxTagN contained ++ syn region sgmllnxDocType start=++ " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link sgmllnxTag2 Function hi def link sgmllnxTagN2 Function hi def link sgmllnxTag Special hi def link sgmllnxEndTag Special hi def link sgmllnxParen Special hi def link sgmllnxEntity Type hi def link sgmllnxDocEnt Type hi def link sgmllnxTagName Statement hi def link sgmllnxComment Comment hi def link sgmllnxSpecial Special hi def link sgmllnxDocType PreProc hi def link sgmllnxTagError Error let b:current_syntax = "sgmllnx" " vim:set tw=78 ts=8 sts=2 sw=2 noet: PK!7 vim80/syntax/modula2.vimnu[" Vim syntax file " Language: Modula 2 " Maintainer: pf@artcom0.north.de (Peter Funk) " based on original work of Bram Moolenaar " Last Change: 2001 May 09 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Don't ignore case (Modula-2 is case significant). This is the default in vim " Especially emphasize headers of procedures and modules: syn region modula2Header matchgroup=modula2Header start="PROCEDURE " end="(" contains=modula2Ident oneline syn region modula2Header matchgroup=modula2Header start="MODULE " end=";" contains=modula2Ident oneline syn region modula2Header matchgroup=modula2Header start="BEGIN (\*" end="\*)" contains=modula2Ident oneline syn region modula2Header matchgroup=modula2Header start="END " end=";" contains=modula2Ident oneline syn region modula2Keyword start="END" end=";" contains=ALLBUT,modula2Ident oneline " Some very important keywords which should be emphasized more than others: syn keyword modula2AttKeyword CONST EXIT HALT RETURN TYPE VAR " All other keywords in alphabetical order: syn keyword modula2Keyword AND ARRAY BY CASE DEFINITION DIV DO ELSE syn keyword modula2Keyword ELSIF EXPORT FOR FROM IF IMPLEMENTATION IMPORT syn keyword modula2Keyword IN LOOP MOD NOT OF OR POINTER QUALIFIED RECORD syn keyword modula2Keyword SET THEN TO UNTIL WHILE WITH syn keyword modula2Type ADDRESS BITSET BOOLEAN CARDINAL CHAR INTEGER REAL WORD syn keyword modula2StdFunc ABS CAP CHR DEC EXCL INC INCL ORD SIZE TSIZE VAL syn keyword modula2StdConst FALSE NIL TRUE " The following may be discussed, since NEW and DISPOSE are some kind of " special builtin macro functions: syn keyword modula2StdFunc NEW DISPOSE " The following types are added later on and may be missing from older " Modula-2 Compilers (they are at least missing from the original report " by N.Wirth from March 1980 ;-) Highlighting should apply nevertheless: syn keyword modula2Type BYTE LONGCARD LONGINT LONGREAL PROC SHORTCARD SHORTINT " same note applies to min and max, which were also added later to m2: syn keyword modula2StdFunc MAX MIN " The underscore was originally disallowed in m2 ids, it was also added later: syn match modula2Ident " [A-Z,a-z][A-Z,a-z,0-9,_]*" contained " Comments may be nested in Modula-2: syn region modula2Comment start="(\*" end="\*)" contains=modula2Comment,modula2Todo syn keyword modula2Todo contained TODO FIXME XXX " Strings syn region modula2String start=+"+ end=+"+ syn region modula2String start="'" end="'" syn region modula2Set start="{" end="}" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link modula2Ident Identifier hi def link modula2StdConst Boolean hi def link modula2Type Identifier hi def link modula2StdFunc Identifier hi def link modula2Header Type hi def link modula2Keyword Statement hi def link modula2AttKeyword PreProc hi def link modula2Comment Comment " The following is just a matter of taste (you want to try this instead): " hi modula2Comment term=bold ctermfg=DarkBlue guifg=Blue gui=bold hi def link modula2Todo Todo hi def link modula2String String hi def link modula2Set String let b:current_syntax = "modula2" " vim: ts=8 PK!xz z vim80/syntax/a2ps.vimnu[" Vim syntax file " Language: a2ps(1) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword a2psPreProc Include \ nextgroup=a2psKeywordColon syn keyword a2psMacro UserOption \ nextgroup=a2psKeywordColon syn keyword a2psKeyword LibraryPath AppendLibraryPath PrependLibraryPath \ Options Medium Printer UnknownPrinter \ DefaultPrinter OutputFirstLine \ PageLabelFormat Delegation FileCommand \ nextgroup=a2psKeywordColon syn match a2psKeywordColon contained display ':' syn keyword a2psKeyword Variable nextgroup=a2psVariableColon syn match a2psVariableColon contained display ':' \ nextgroup=a2psVariable skipwhite syn match a2psVariable contained display '[^ \t:(){}]\+' \ contains=a2psVarPrefix syn match a2psVarPrefix contained display \ '\<\%(del\|pro\|ps\|pl\|toc\|user\|\)\ze\.' syn match a2psLineCont display '\\$' syn match a2psSubst display '$\%(-\=.\=\d\+\)\=\h\d\=' syn match a2psSubst display '#[?!]\=\w\d\=' syn match a2psSubst display '#{[^}]\+}' syn region a2psString display oneline start=+'+ end=+'+ \ contains=a2psSubst syn region a2psString display oneline start=+"+ end=+"+ \ contains=a2psSubst syn keyword a2psTodo contained TODO FIXME XXX NOTE syn region a2psComment display oneline start='^\s*#' end='$' \ contains=a2psTodo,@Spell hi def link a2psTodo Todo hi def link a2psComment Comment hi def link a2psPreProc PreProc hi def link a2psMacro Macro hi def link a2psKeyword Keyword hi def link a2psKeywordColon Delimiter hi def link a2psVariableColon Delimiter hi def link a2psVariable Identifier hi def link a2psVarPrefix Type hi def link a2psLineCont Special hi def link a2psSubst PreProc hi def link a2psString String let b:current_syntax = "a2ps" let &cpo = s:cpo_save unlet s:cpo_save PK!y vim80/syntax/slang.vimnu[" Vim syntax file " Language: S-Lang " Maintainer: Jan Hlavacek " Last Change: 980216 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn keyword slangStatement break return continue EXECUTE_ERROR_BLOCK syn match slangStatement "\" syn keyword slangLabel case syn keyword slangConditional !if if else switch syn keyword slangRepeat while for _for loop do forever syn keyword slangDefinition define typedef variable struct syn keyword slangOperator or and andelse orelse shr shl xor not syn keyword slangBlock EXIT_BLOCK ERROR_BLOCK syn match slangBlock "\" syn keyword slangConstant NULL syn keyword slangType Integer_Type Double_Type Complex_Type String_Type Struct_Type Ref_Type Null_Type Array_Type DataType_Type syn match slangOctal "\<0\d\+\>" contains=slangOctalError syn match slangOctalError "[89]\+" contained syn match slangHex "\<0[xX][0-9A-Fa-f]*\>" syn match slangDecimal "\<[1-9]\d*\>" syn match slangFloat "\<\d\+\." syn match slangFloat "\<\d\+\.\d\+\([Ee][-+]\=\d\+\)\=\>" syn match slangFloat "\<\d\+\.[Ee][-+]\=\d\+\>" syn match slangFloat "\<\d\+[Ee][-+]\=\d\+\>" syn match slangFloat "\.\d\+\([Ee][-+]\=\d\+\)\=\>" syn match slangImaginary "\.\d\+\([Ee][-+]\=\d*\)\=[ij]\>" syn match slangImaginary "\<\d\+\(\.\d*\)\=\([Ee][-+]\=\d\+\)\=[ij]\>" syn region slangString oneline start='"' end='"' skip='\\"' syn match slangCharacter "'[^\\]'" syn match slangCharacter "'\\.'" syn match slangCharacter "'\\[0-7]\{1,3}'" syn match slangCharacter "'\\d\d\{1,3}'" syn match slangCharacter "'\\x[0-7a-fA-F]\{1,2}'" syn match slangDelim "[][{};:,]" syn match slangOperator "[-%+/&*=<>|!~^@]" "catch errors caused by wrong parenthesis syn region slangParen matchgroup=slangDelim transparent start='(' end=')' contains=ALLBUT,slangParenError syn match slangParenError ")" syn match slangComment "%.*$" syn keyword slangOperator sizeof syn region slangPreCondit start="^\s*#\s*\(ifdef\>\|ifndef\>\|iftrue\>\|ifnfalse\>\|iffalse\>\|ifntrue\>\|if\$\|ifn\$\|\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=cComment,slangString,slangCharacter,slangNumber " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link slangDefinition Type hi def link slangBlock slangDefinition hi def link slangLabel Label hi def link slangConditional Conditional hi def link slangRepeat Repeat hi def link slangCharacter Character hi def link slangFloat Float hi def link slangImaginary Float hi def link slangDecimal slangNumber hi def link slangOctal slangNumber hi def link slangHex slangNumber hi def link slangNumber Number hi def link slangParenError Error hi def link slangOctalError Error hi def link slangOperator Operator hi def link slangStructure Structure hi def link slangInclude Include hi def link slangPreCondit PreCondit hi def link slangError Error hi def link slangStatement Statement hi def link slangType Type hi def link slangString String hi def link slangConstant Constant hi def link slangRangeArray slangConstant hi def link slangComment Comment hi def link slangSpecial SpecialChar hi def link slangTodo Todo hi def link slangDelim Delimiter let b:current_syntax = "slang" " vim: ts=8 PK!ڬ&  vim80/syntax/purifylog.vimnu[" Vim syntax file " Language: purify log files " Maintainer: Gautam H. Mudunuri " Last Change: 2003 May 11 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Purify header syn match purifyLogHeader "^\*\*\*\*.*$" " Informational messages syn match purifyLogFIU "^FIU:.*$" syn match purifyLogMAF "^MAF:.*$" syn match purifyLogMIU "^MIU:.*$" syn match purifyLogSIG "^SIG:.*$" syn match purifyLogWPF "^WPF:.*$" syn match purifyLogWPM "^WPM:.*$" syn match purifyLogWPN "^WPN:.*$" syn match purifyLogWPR "^WPR:.*$" syn match purifyLogWPW "^WPW:.*$" syn match purifyLogWPX "^WPX:.*$" " Warning messages syn match purifyLogABR "^ABR:.*$" syn match purifyLogBSR "^BSR:.*$" syn match purifyLogBSW "^BSW:.*$" syn match purifyLogFMR "^FMR:.*$" syn match purifyLogMLK "^MLK:.*$" syn match purifyLogMSE "^MSE:.*$" syn match purifyLogPAR "^PAR:.*$" syn match purifyLogPLK "^PLK:.*$" syn match purifyLogSBR "^SBR:.*$" syn match purifyLogSOF "^SOF:.*$" syn match purifyLogUMC "^UMC:.*$" syn match purifyLogUMR "^UMR:.*$" " Corrupting messages syn match purifyLogABW "^ABW:.*$" syn match purifyLogBRK "^BRK:.*$" syn match purifyLogFMW "^FMW:.*$" syn match purifyLogFNH "^FNH:.*$" syn match purifyLogFUM "^FUM:.*$" syn match purifyLogMRE "^MRE:.*$" syn match purifyLogSBW "^SBW:.*$" " Fatal messages syn match purifyLogCOR "^COR:.*$" syn match purifyLogNPR "^NPR:.*$" syn match purifyLogNPW "^NPW:.*$" syn match purifyLogZPR "^ZPR:.*$" syn match purifyLogZPW "^ZPW:.*$" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link purifyLogFIU purifyLogInformational hi def link purifyLogMAF purifyLogInformational hi def link purifyLogMIU purifyLogInformational hi def link purifyLogSIG purifyLogInformational hi def link purifyLogWPF purifyLogInformational hi def link purifyLogWPM purifyLogInformational hi def link purifyLogWPN purifyLogInformational hi def link purifyLogWPR purifyLogInformational hi def link purifyLogWPW purifyLogInformational hi def link purifyLogWPX purifyLogInformational hi def link purifyLogABR purifyLogWarning hi def link purifyLogBSR purifyLogWarning hi def link purifyLogBSW purifyLogWarning hi def link purifyLogFMR purifyLogWarning hi def link purifyLogMLK purifyLogWarning hi def link purifyLogMSE purifyLogWarning hi def link purifyLogPAR purifyLogWarning hi def link purifyLogPLK purifyLogWarning hi def link purifyLogSBR purifyLogWarning hi def link purifyLogSOF purifyLogWarning hi def link purifyLogUMC purifyLogWarning hi def link purifyLogUMR purifyLogWarning hi def link purifyLogABW purifyLogCorrupting hi def link purifyLogBRK purifyLogCorrupting hi def link purifyLogFMW purifyLogCorrupting hi def link purifyLogFNH purifyLogCorrupting hi def link purifyLogFUM purifyLogCorrupting hi def link purifyLogMRE purifyLogCorrupting hi def link purifyLogSBW purifyLogCorrupting hi def link purifyLogCOR purifyLogFatal hi def link purifyLogNPR purifyLogFatal hi def link purifyLogNPW purifyLogFatal hi def link purifyLogZPR purifyLogFatal hi def link purifyLogZPW purifyLogFatal hi def link purifyLogHeader Comment hi def link purifyLogInformational PreProc hi def link purifyLogWarning Type hi def link purifyLogCorrupting Error hi def link purifyLogFatal Error let b:current_syntax = "purifylog" " vim:ts=8 PK!3NՑ vim80/syntax/pdf.vimnu[" Vim syntax file " Language: PDF " Maintainer: Tim Pope " Last Change: 2007 Dec 16 if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'pdf' endif syn include @pdfXML syntax/xml.vim syn case match syn cluster pdfObjects contains=pdfBoolean,pdfConstant,pdfNumber,pdfFloat,pdfName,pdfHexString,pdfString,pdfArray,pdfHash,pdfReference,pdfComment syn keyword pdfBoolean true false contained syn keyword pdfConstant null contained syn match pdfNumber "[+-]\=\<\d\+\>" syn match pdfFloat "[+-]\=\<\%(\d\+\.\|\d*\.\d\+\)\>" contained syn match pdfNameError "#\X\|#\x\X\|#00" contained containedin=pdfName syn match pdfSpecialChar "#\x\x" contained containedin=pdfName syn match pdfName "/[^[:space:]\[\](){}<>/]*" contained syn match pdfHexError "[^[:space:][:xdigit:]<>]" contained "syn match pdfHexString "<\s*\x[^<>]*\x\s*>" contained contains=pdfHexError "syn match pdfHexString "<\s*\x\=\s*>" contained syn region pdfHexString matchgroup=pdfDelimiter start="<<\@!" end=">" contained contains=pdfHexError syn match pdfStringError "\\." contained containedin=pdfString syn match pdfSpecialChar "\\\%(\o\{1,3\}\|[nrtbf()\\]\)" contained containedin=pdfString syn region pdfString matchgroup=pdfDelimiter start="\\\@>" contains=@pdfObjects contained syn match pdfReference "\<\d\+\s\+\d\+\s\+R\>" "syn keyword pdfOperator R contained containedin=pdfReference syn region pdfObject matchgroup=pdfType start="\" end="\" contains=@pdfObjects syn region pdfObject matchgroup=pdfType start="\ " Last Change: Thu Sep 15 2005 10:30:02 AM " Version: 1.0 " Description: Checks for a: " buffer local variable, " global variable, " If the above exist, it will source the type specified. " If none exist, it will source the default sql.vim file. " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Default to the standard Vim distribution file let filename = 'sqloracle' " Check for overrides. Buffer variables have the highest priority. if exists("b:sql_type_override") " Check the runtimepath to see if the file exists if globpath(&runtimepath, 'syntax/'.b:sql_type_override.'.vim') != '' let filename = b:sql_type_override endif elseif exists("g:sql_type_default") if globpath(&runtimepath, 'syntax/'.g:sql_type_default.'.vim') != '' let filename = g:sql_type_default endif endif " Source the appropriate file exec 'runtime syntax/'.filename.'.vim' " vim:sw=4: PK!~vim80/syntax/ecd.vimnu[" Vim syntax file " Language: ecd (Embedix Component Description) files " Maintainer: John Beppu " URL: http://opensource.lineo.com/~beppu/prose/ecd_vim.html " Last Change: 2001 Sep 27 " An ECD file contains meta-data for packages in the Embedix Linux distro. " This syntax file was derived from apachestyle.vim " by Christian Hammers " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " specials syn match ecdComment "^\s*#.*" " options and values syn match ecdAttr "^\s*[a-zA-Z]\S*\s*[=].*$" contains=ecdAttrN,ecdAttrV syn match ecdAttrN contained "^.*="me=e-1 syn match ecdAttrV contained "=.*$"ms=s+1 " tags syn region ecdTag start=+<+ end=+>+ contains=ecdTagN,ecdTagError syn match ecdTagN contained +<[/\s]*[-a-zA-Z0-9_]\++ms=s+1 syn match ecdTagError contained "[^>]<"ms=s+1 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link ecdComment Comment hi def link ecdAttr Type hi def link ecdAttrN Statement hi def link ecdAttrV Value hi def link ecdTag Function hi def link ecdTagN Statement hi def link ecdTagError Error let b:current_syntax = "ecd" " vim: ts=8 PK!GpjXXvim80/syntax/hercules.vimnu[" Vim syntax file " Language: Hercules " Maintainer: Dana Edwards " Extensions: *.vc,*.ev,*.rs " Last change: Nov. 9, 2001 " Comment: Hercules physical IC design verification software ensures " that an IC's physical design matches its logical design and " satisfies manufacturing rules. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Ignore case syn case ignore " Hercules runset sections syn keyword herculesType header assign_property alias assign syn keyword herculesType options preprocess_options syn keyword herculesType explode_options technology_options syn keyword herculesType drc_options database_options syn keyword herculesType text_options lpe_options evaccess_options syn keyword herculesType check_point compare_group environment syn keyword herculesType grid_check include layer_stats load_group syn keyword herculesType restart run_only self_intersect set snap syn keyword herculesType system variable waiver " Hercules commands syn keyword herculesStatement attach_property boolean cell_extent syn keyword herculesStatement common_hierarchy connection_points syn keyword herculesStatement copy data_filter alternate delete syn keyword herculesStatement explode explode_all fill_pattern find_net syn keyword herculesStatement flatten syn keyword herculesStatement level negate polygon_features push syn keyword herculesStatement rectangles relocate remove_overlap reverse select syn keyword herculesStatement select_cell select_contains select_edge select_net size syn keyword herculesStatement text_polygon text_property vertex area cut syn keyword herculesStatement density enclose external inside_edge syn keyword herculesStatement internal notch vectorize center_to_center syn keyword herculesStatement length mask_align moscheck rescheck syn keyword herculesStatement analysis buildsub init_lpe_db capacitor syn keyword herculesStatement device gendev nmos pmos diode npn pnp syn keyword herculesStatement resistor set_param save_property syn keyword herculesStatement connect disconnect text text_boolean syn keyword herculesStatement replace_text create_ports label graphics syn keyword herculesStatement save_netlist_database lpe_stats netlist syn keyword herculesStatement spice graphics_property graphics_netlist syn keyword herculesStatement write_milkyway multi_rule_enclose syn keyword herculesStatement if error_property equate compare syn keyword herculesStatement antenna_fix c_thru dev_connect_check syn keyword herculesStatement dev_net_count device_count net_filter syn keyword herculesStatement net_path_check ratio process_text_opens " Hercules keywords syn keyword herculesStatement black_box_file block compare_dir equivalence syn keyword herculesStatement format gdsin_dir group_dir group_dir_usage syn keyword herculesStatement inlib layout_path outlib output_format syn keyword herculesStatement output_layout_path schematic schematic_format syn keyword herculesStatement scheme_file output_block else syn keyword herculesStatement and or not xor andoverlap inside outside by to syn keyword herculesStatement with connected connected_all texted_with texted syn keyword herculesStatement by_property cutting edge_touch enclosing inside syn keyword herculesStatement inside_hole interact touching vertex " Hercules comments syn region herculesComment start="/\*" skip="/\*" end="\*/" contains=herculesTodo syn match herculesComment "//.*" contains=herculesTodo " Preprocessor directives syn match herculesPreProc "^#.*" syn match herculesPreProc "^@.*" syn match herculesPreProc "macros" " Hercules COMMENT option syn match herculesCmdCmnt "comment.*=.*" " Spacings, Resolutions, Ranges, Ratios, etc. syn match herculesNumber "-\=\<[0-9]\+L\=\>\|0[xX][0-9]\+\>" " Parenthesis sanity checker syn region herculesZone matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,herculesError,herculesBraceError,herculesCurlyError syn region herculesZone matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,herculesError,herculesBraceError,herculesParenError syn region herculesZone matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,herculesError,herculesCurlyError,herculesParenError syn match herculesError "[)\]}]" syn match herculesBraceError "[)}]" contained syn match herculesCurlyError "[)\]]" contained syn match herculesParenError "[\]}]" contained " Hercules output format "syn match herculesOutput "([0-9].*)" "syn match herculesOutput "([0-9].*\;.*)" syn match herculesOutput "perm\s*=.*(.*)" syn match herculesOutput "temp\s*=\s*" syn match herculesOutput "error\s*=\s*(.*)" "Modify the following as needed. The trade-off is performance versus functionality. syn sync lines=100 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link herculesStatement Statement hi def link herculesType Type hi def link herculesComment Comment hi def link herculesPreProc PreProc hi def link herculesTodo Todo hi def link herculesOutput Include hi def link herculesCmdCmnt Identifier hi def link herculesNumber Number hi def link herculesBraceError herculesError hi def link herculesCurlyError herculesError hi def link herculesParenError herculesError hi def link herculesError Error let b:current_syntax = "hercules" " vim: ts=8 PK!Y vim80/syntax/sather.vimnu[" Vim syntax file " Language: Sather/pSather " Maintainer: Claudio Fleiner " URL: http://www.fleiner.com/vim/syntax/sather.vim " Last Change: 2003 May 11 " Sather is a OO-language developped at the International Computer Science " Institute (ICSI) in Berkeley, CA. pSather is a parallel extension to Sather. " Homepage: http://www.icsi.berkeley.edu/~sather " Sather files use .sa as suffix " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " keyword definitions syn keyword satherExternal extern syn keyword satherBranch break continue syn keyword satherLabel when then syn keyword satherConditional if else elsif end case typecase assert with syn match satherConditional "near$" syn match satherConditional "far$" syn match satherConditional "near *[^(]"he=e-1 syn match satherConditional "far *[^(]"he=e-1 syn keyword satherSynchronize lock guard sync syn keyword satherRepeat loop parloop do syn match satherRepeat "while!" syn match satherRepeat "break!" syn match satherRepeat "until!" syn keyword satherBoolValue true false syn keyword satherValue self here cluster syn keyword satherOperator new "== != & ^ | && || syn keyword satherOperator and or not syn match satherOperator "[#!]" syn match satherOperator ":-" syn keyword satherType void attr where syn match satherType "near *("he=e-1 syn match satherType "far *("he=e-1 syn keyword satherStatement return syn keyword satherStorageClass static const syn keyword satherExceptions try raise catch syn keyword satherMethodDecl is pre post syn keyword satherClassDecl abstract value class include syn keyword satherScopeDecl public private readonly syn match satherSpecial contained "\\\d\d\d\|\\." syn region satherString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=satherSpecial syn match satherCharacter "'[^\\]'" syn match satherSpecialCharacter "'\\.'" syn match satherNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" syn match satherCommentSkip contained "^\s*\*\($\|\s\+\)" syn region satherComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+$\|"+ contains=satherSpecial syn match satherComment "--.*" contains=satherComment2String,satherCharacter,satherNumber syn sync ccomment satherComment " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link satherBranch satherStatement hi def link satherLabel satherStatement hi def link satherConditional satherStatement hi def link satherSynchronize satherStatement hi def link satherRepeat satherStatement hi def link satherExceptions satherStatement hi def link satherStorageClass satherDeclarative hi def link satherMethodDecl satherDeclarative hi def link satherClassDecl satherDeclarative hi def link satherScopeDecl satherDeclarative hi def link satherBoolValue satherValue hi def link satherSpecial satherValue hi def link satherString satherValue hi def link satherCharacter satherValue hi def link satherSpecialCharacter satherValue hi def link satherNumber satherValue hi def link satherStatement Statement hi def link satherOperator Statement hi def link satherComment Comment hi def link satherType Type hi def link satherValue String hi def link satherString String hi def link satherSpecial String hi def link satherCharacter String hi def link satherDeclarative Type hi def link satherExternal PreCondit let b:current_syntax = "sather" " vim: ts=8 PK!6xvim80/syntax/bzr.vimnu[" Vim syntax file " Language: Bazaar (bzr) commit file " Maintainer: Dmitry Vasiliev " URL: https://github.com/hdima/vim-scripts/blob/master/syntax/bzr.vim " Last Change: 2012-02-11 " Filenames: bzr_log.* " Version: 1.2.2 " " Thanks: " " Gioele Barabucci " for idea of diff highlighting " quit when a syntax file was already loaded. if exists("b:current_syntax") finish endif if exists("bzr_highlight_diff") syn include @Diff syntax/diff.vim endif syn match bzrRemoved "^removed:$" contained syn match bzrAdded "^added:$" contained syn match bzrRenamed "^renamed:$" contained syn match bzrModified "^modified:$" contained syn match bzrUnchanged "^unchanged:$" contained syn match bzrUnknown "^unknown:$" contained syn cluster Statuses contains=bzrRemoved,bzrAdded,bzrRenamed,bzrModified,bzrUnchanged,bzrUnknown if exists("bzr_highlight_diff") syn cluster Statuses add=@Diff endif syn region bzrRegion start="^-\{14} This line and the following will be ignored -\{14}$" end="\%$" contains=@NoSpell,@Statuses " Synchronization. syn sync clear syn sync match bzrSync grouphere bzrRegion "^-\{14} This line and the following will be ignored -\{14}$"me=s-1 " Define the default highlighting. " Only when an item doesn't have highlighting yet. hi def link bzrRemoved Constant hi def link bzrAdded Identifier hi def link bzrModified Special hi def link bzrRenamed Special hi def link bzrUnchanged Special hi def link bzrUnknown Special let b:current_syntax = "bzr" PK!iTvim80/syntax/xxd.vimnu[" Vim syntax file " Language: bin using xxd " Maintainer: Charles E. Campbell " Last Change: Aug 31, 2016 " Version: 10 " Notes: use :help xxd to see how to invoke it " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_XXD " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn match xxdAddress "^[0-9a-f]\+:" contains=xxdSep syn match xxdSep contained ":" syn match xxdAscii " .\{,16\}\r\=$"hs=s+2 contains=xxdDot syn match xxdDot contained "[.\r]" " Define the default highlighting. if !exists("skip_xxd_syntax_inits") hi def link xxdAddress Constant hi def link xxdSep Identifier hi def link xxdAscii Statement endif let b:current_syntax = "xxd" " vim: ts=4 PK!3p0 vim80/syntax/systemverilog.vimnu[" Vim syntax file " Language: SystemVerilog " Maintainer: kocha " Last Change: 12-Aug-2013. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Read in Verilog syntax files runtime! syntax/verilog.vim unlet b:current_syntax " IEEE1800-2005 syn keyword systemverilogStatement always_comb always_ff always_latch syn keyword systemverilogStatement class endclass new syn keyword systemverilogStatement virtual local const protected syn keyword systemverilogStatement package endpackage syn keyword systemverilogStatement rand randc constraint randomize syn keyword systemverilogStatement with inside dist syn keyword systemverilogStatement sequence endsequence randsequence syn keyword systemverilogStatement srandom syn keyword systemverilogStatement logic bit byte syn keyword systemverilogStatement int longint shortint syn keyword systemverilogStatement struct packed syn keyword systemverilogStatement final syn keyword systemverilogStatement import export syn keyword systemverilogStatement context pure syn keyword systemverilogStatement void shortreal chandle string syn keyword systemverilogStatement clocking endclocking iff syn keyword systemverilogStatement interface endinterface modport syn keyword systemverilogStatement cover covergroup coverpoint endgroup syn keyword systemverilogStatement property endproperty syn keyword systemverilogStatement program endprogram syn keyword systemverilogStatement bins binsof illegal_bins ignore_bins syn keyword systemverilogStatement alias matches solve static assert syn keyword systemverilogStatement assume super before expect bind syn keyword systemverilogStatement extends null tagged extern this syn keyword systemverilogStatement first_match throughout timeprecision syn keyword systemverilogStatement timeunit type union syn keyword systemverilogStatement uwire var cross ref wait_order intersect syn keyword systemverilogStatement wildcard within syn keyword systemverilogTypeDef typedef enum syn keyword systemverilogConditional randcase syn keyword systemverilogConditional unique priority syn keyword systemverilogRepeat return break continue syn keyword systemverilogRepeat do foreach syn keyword systemverilogLabel join_any join_none forkjoin " IEEE1800-2009 add syn keyword systemverilogStatement checker endchecker syn keyword systemverilogStatement accept_on reject_on syn keyword systemverilogStatement sync_accept_on sync_reject_on syn keyword systemverilogStatement eventually nexttime until until_with syn keyword systemverilogStatement s_always s_eventually s_nexttime s_until s_until_with syn keyword systemverilogStatement let untyped syn keyword systemverilogStatement strong weak syn keyword systemverilogStatement restrict global implies syn keyword systemverilogConditional unique0 " IEEE1800-2012 add syn keyword systemverilogStatement implements syn keyword systemverilogStatement interconnect soft nettype " Define the default highlighting. " The default highlighting. hi def link systemverilogStatement Statement hi def link systemverilogTypeDef TypeDef hi def link systemverilogConditional Conditional hi def link systemverilogRepeat Repeat hi def link systemverilogLabel Label hi def link systemverilogGlobal Define hi def link systemverilogNumber Number let b:current_syntax = "systemverilog" " vim: ts=8 PK!Wvim80/syntax/wdiff.vimnu[" Vim syntax file " Language: wDiff (wordwise diff) " Maintainer: Gerfried Fuchs " Last Change: 25 Apr 2001 " URL: http://alfie.ist.org/vim/syntax/wdiff.vim " " Comments are very welcome - but please make sure that you are commenting on " the latest version of this file. " SPAM is _NOT_ welcome - be ready to be reported! " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn region wdiffOld start=+\[-+ end=+-]+ syn region wdiffNew start="{+" end="+}" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link wdiffOld Special hi def link wdiffNew Identifier let b:current_syntax = "wdiff" PK!!:vim80/syntax/strace.vimnu[" Vim syntax file " This is a GENERATED FILE. Please always refer to source file at the URI below. " Language: strace output " Maintainer: David Necas (Yeti) " Last Change: 2015-01-16 " Setup " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case match " Parse the line syn match straceSpecialChar "\\\o\{1,3}\|\\." contained syn region straceString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=straceSpecialChar oneline syn match straceNumber "\W[+-]\=\(\d\+\)\=\.\=\d\+\([eE][+-]\=\d\+\)\="lc=1 syn match straceNumber "\W0x\x\+"lc=1 syn match straceNumberRHS "\W\(0x\x\+\|-\=\d\+\)"lc=1 contained syn match straceOtherRHS "?" contained syn match straceConstant "[A-Z_]\{2,}" syn region straceVerbosed start="(" end=")" matchgroup=Normal contained oneline syn region straceReturned start="\s=\s" end="$" contains=StraceEquals,straceNumberRHS,straceOtherRHS,straceConstant,straceVerbosed oneline transparent syn match straceEquals "\s=\s"ms=s+1,me=e-1 syn match straceParenthesis "[][(){}]" syn match straceSysCall "^\w\+" syn match straceOtherPID "^\[[^]]*\]" contains=stracePID,straceNumber nextgroup=straceSysCallEmbed skipwhite syn match straceSysCallEmbed "\w\+" contained syn keyword stracePID pid contained syn match straceOperator "[-+=*/!%&|:,]" syn region straceComment start="/\*" end="\*/" oneline " Define the default highlighting hi def link straceComment Comment hi def link straceVerbosed Comment hi def link stracePID PreProc hi def link straceNumber Number hi def link straceNumberRHS Type hi def link straceOtherRHS Type hi def link straceString String hi def link straceConstant Function hi def link straceEquals Type hi def link straceSysCallEmbed straceSysCall hi def link straceSysCall Statement hi def link straceParenthesis Statement hi def link straceOperator Normal hi def link straceSpecialChar Special hi def link straceOtherPID PreProc let b:current_syntax = "strace" PK!g݆ vim80/syntax/gnash.vimnu[" Vim syntax file " Maintainer: Thilo Six " Contact: " http://www.vim.org/maillist.php#vim-dev " " Description: highlight gnash configuration files " http://www.gnu.org/software/gnash/manual/gnashuser.html#gnashrc " File: runtime/syntax/gnash.vim " Last Change: 2012 May 19 " Modeline: vim: ts=8:sw=2:sts=2: " " Credits: derived from Nikolai Weibulls readline.vim " " License: VIM License " Vim is Charityware, see ":help Uganda" " " quit when a syntax file was already loaded if exists("b:current_syntax") || &compatible finish endif syn case match syn keyword GnashTodo contained TODO FIXME XXX NOTE " Comments syn match GnashComment "^#.*$" contains=@Spell,GnashTodo syn match GnashComment "\s#.*$" contains=@Spell,GnashTodo syn match GnashNumber display '\<\d\+\>' syn case ignore syn keyword GnashOn ON YES TRUE syn keyword GnashOff OFF NO FALSE syn match GnashSet '^\s*set\>' syn match GnashSet '^\s*append\>' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' syn match GnashKeyword '\' hi def link GnashOn Identifier hi def link GnashOff Preproc hi def link GnashComment Comment hi def link GnashTodo Todo hi def link GnashNumber Type hi def link GnashSet String hi def link GnashKeyword Keyword let b:current_syntax = "gnash" PK!`y&vim80/syntax/eiffel.vimnu[" Eiffel syntax file " Language: Eiffel " Maintainer: Jocelyn Fiat " Previous maintainer: Reimer Behrends " Contributions from: Thilo Six " " URL: https://github.com/eiffelhub/vim-eiffel " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim " Option handling if exists("eiffel_ignore_case") syn case ignore else syn case match if exists("eiffel_pedantic") || exists("eiffel_strict") syn keyword eiffelError current void result precursor none syn keyword eiffelError CURRENT VOID RESULT PRECURSOR None syn keyword eiffelError TRUE FALSE endif if exists("eiffel_pedantic") syn keyword eiffelError true false syn match eiffelError "\<[a-z_]\+[A-Z][a-zA_Z_]*\>" syn match eiffelError "\<[A-Z][a-z_]*[A-Z][a-zA-Z_]*\>" endif if exists("eiffel_lower_case_predef") syn keyword eiffelPredefined current void result precursor endif endif if exists("eiffel_hex_constants") syn match eiffelNumber "\d[0-9a-fA-F]*[xX]" endif " Keyword definitions syn keyword eiffelTopStruct note indexing feature creation inherit syn match eiffelTopStruct "\" syn match eiffelKeyword "\" syn match eiffelTopStruct "^end\>\(\s*--\s\+class\s\+\<[A-Z][A-Z0-9_]*\>\)\=" contains=eiffelClassName syn match eiffelBrackets "[[\]]" syn match eiffelBracketError "\]" syn region eiffelGeneric transparent matchgroup=eiffelBrackets start="\[" end="\]" contains=ALLBUT,eiffelBracketError,eiffelGenericDecl,eiffelStringError,eiffelStringEscape,eiffelGenericCreate,eiffelTopStruct if exists("eiffel_ise") syn match eiffelAgent "\" syn match eiffelConvert "\" syn match eiffelCreate "\" syn match eiffelTopStruct contained "\" syn match eiffelTopStruct contained "\" syn match eiffelGenericCreate contained "\" syn match eiffelTopStruct "^create\>" syn region eiffelGenericDecl transparent matchgroup=eiffelBrackets contained start="\[" end="\]" contains=ALLBUT,eiffelCreate,eiffelTopStruct,eiffelGeneric,eiffelBracketError,eiffelStringEscape,eiffelStringError,eiffelBrackets syn region eiffelClassHeader start="^class\>" end="$" contains=ALLBUT,eiffelCreate,eiffelGenericCreate,eiffelGeneric,eiffelStringEscape,eiffelStringError,eiffelBrackets endif syn keyword eiffelDeclaration is do once deferred unique local attribute assign syn keyword eiffelDeclaration attached detachable Unique syn keyword eiffelProperty expanded obsolete separate frozen syn keyword eiffelProperty prefix infix syn keyword eiffelInheritClause rename redefine undefine select export as syn keyword eiffelAll all syn keyword eiffelKeyword external alias some syn keyword eiffelStatement if else elseif inspect syn keyword eiffelStatement when then syn match eiffelAssertion "\" syn match eiffelAssertion "\" syn keyword eiffelAssertion check syn keyword eiffelDebug debug syn keyword eiffelStatement across from until loop syn keyword eiffelAssertion variant syn match eiffelAssertion "\" syn match eiffelTopStruct "^invariant\>" syn keyword eiffelException rescue retry syn keyword eiffelPredefined Current Void Result Precursor " Operators syn match eiffelOperator "\" syn match eiffelOperator "\" syn keyword eiffelOperator xor implies not syn keyword eiffelOperator strip old syn keyword eiffelOperator Strip syn match eiffelOperator "\$" syn match eiffelCreation "!" syn match eiffelExport "[{}]" syn match eiffelArray "<<" syn match eiffelArray ">>" syn match eiffelConstraint "->" syn match eiffelOperator "[@#|&][^ \e\t\b%]*" " Special classes syn keyword eiffelAnchored like syn keyword eiffelBitType BIT " Constants if !exists("eiffel_pedantic") syn keyword eiffelBool true false endif syn keyword eiffelBool True False syn region eiffelString start=+"+ skip=+%"+ end=+"+ contains=eiffelStringEscape,eiffelStringError syn match eiffelStringEscape contained "%[^/]" syn match eiffelStringEscape contained "%/\d\+/" syn match eiffelStringEscape contained "^[ \t]*%" syn match eiffelStringEscape contained "%[ \t]*$" syn match eiffelStringError contained "%/[^0-9]" syn match eiffelStringError contained "%/\d\+[^0-9/]" syn match eiffelBadConstant "'\(%[^/]\|%/\d\+/\|[^'%]\)\+'" syn match eiffelBadConstant "''" syn match eiffelCharacter "'\(%[^/]\|%/\d\+/\|[^'%]\)'" contains=eiffelStringEscape syn match eiffelNumber "-\=\<\d\+\(_\d\+\)*\>" syn match eiffelNumber "\<[01]\+[bB]\>" syn match eiffelNumber "-\=\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\)\=\([eE][-+]\=\d\+\(_\d\+\)*\)\=" syn match eiffelNumber "-\=\.\d\+\(_\d\+\)*\([eE][-+]\=\d\+\(_\d\+\)*\)\=" syn match eiffelComment "--.*" contains=eiffelTodo syn case match " Case sensitive stuff syn keyword eiffelTodo contained TODO XXX FIXME syn match eiffelClassName "\<[A-Z][A-Z0-9_]*\>" " Catch mismatched parentheses syn match eiffelParenError ")" syn region eiffelParen transparent start="(" end=")" contains=ALLBUT,eiffelParenError,eiffelStringError,eiffelStringEscape if exists("eiffel_fold") " setlocal foldmethod=indent " syn sync fromstart endif " Should suffice for even very long strings and expressions syn sync lines=40 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link eiffelKeyword Statement hi def link eiffelProperty Statement hi def link eiffelInheritClause Statement hi def link eiffelStatement Statement hi def link eiffelDeclaration Statement hi def link eiffelAssertion Statement hi def link eiffelDebug Statement hi def link eiffelException Statement hi def link eiffelGenericCreate Statement hi def link eiffelAgent Statement hi def link eiffelConvert Statement hi def link eiffelTopStruct PreProc hi def link eiffelAll Special hi def link eiffelAnchored Special hi def link eiffelBitType Special hi def link eiffelBool Boolean hi def link eiffelString String hi def link eiffelCharacter Character hi def link eiffelClassName Type hi def link eiffelNumber Number hi def link eiffelStringEscape Special hi def link eiffelOperator Special hi def link eiffelArray Special hi def link eiffelExport Special hi def link eiffelCreation Special hi def link eiffelBrackets Special hi def link eiffelGeneric Special hi def link eiffelGenericDecl Special hi def link eiffelConstraint Special hi def link eiffelCreate Special hi def link eiffelPredefined Constant hi def link eiffelComment Comment hi def link eiffelError Error hi def link eiffelBadConstant Error hi def link eiffelStringError Error hi def link eiffelParenError Error hi def link eiffelBracketError Error hi def link eiffelTodo Todo let b:current_syntax = "eiffel" let &cpo = s:keepcpo unlet s:keepcpo " vim: ts=8 PK!zA3ccvim80/syntax/jargon.vimnu[" Vim syntax file " Language: Jargon File " Maintainer: " Last Change: 2001 May 26 " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn match jargonChaptTitle /:[^:]*:/ syn match jargonEmailAddr /[^<@ ^I]*@[^ ^I>]*/ syn match jargonUrl +\(http\|ftp\)://[^\t )"]*+ syn match jargonMark /{[^}]*}/ " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link jargonChaptTitle Title hi def link jargonEmailAddr Comment hi def link jargonUrl Comment hi def link jargonMark Label let b:current_syntax = "jargon" PK!Rvim80/syntax/rnc.vimnu[" Vim syntax file " Language: Relax NG compact syntax " Previous Maintainer: Nikolai Weibull " Latest Revision: 2007-06-17 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword+=-,. syn keyword rncTodo contained TODO FIXME XXX NOTE syn region rncComment display oneline start='^\s*#' end='$' \ contains=rncTodo,@Spell syn match rncOperator display '[-|,&+?*~]' syn match rncOperator display '\%(|&\)\==' syn match rncOperator display '>>' syn match rncNamespace display '\<\k\+:' syn match rncQuoted display '\\\k\+\>' syn match rncSpecial display '\\x{\x\+}' syn region rncAnnotation transparent start='\[' end='\]' \ contains=ALLBUT,rncComment,rncTodo syn region rncLiteral display oneline start=+"+ end=+"+ \ contains=rncSpecial syn region rncLiteral display oneline start=+'+ end=+'+ syn region rncLiteral display oneline start=+"""+ end=+"""+ \ contains=rncSpecial syn region rncLiteral display oneline start=+'''+ end=+'''+ syn match rncDelimiter display '[{},()]' syn keyword rncKeyword datatypes default div empty external grammar syn keyword rncKeyword include inherit list mixed name namespace syn keyword rncKeyword notAllowed parent start string text token syn match rncIdentifier display '\k\+\_s*\%(=\|&=\||=\)\@=' \ nextgroup=rncOperator syn keyword rncKeyword element attribute \ nextgroup=rncIdName skipwhite skipempty syn match rncIdName contained '\k\+' hi def link rncTodo Todo hi def link rncComment Comment hi def link rncOperator Operator hi def link rncNamespace Identifier hi def link rncQuoted Special hi def link rncSpecial SpecialChar hi def link rncAnnotation Special hi def link rncLiteral String hi def link rncDelimiter Delimiter hi def link rncKeyword Keyword hi def link rncIdentifier Identifier hi def link rncIdName Identifier let b:current_syntax = "rnc" let &cpo = s:cpo_save unlet s:cpo_save PK!ZJttvim80/syntax/markdown.vimnu[" Vim syntax file " Language: Markdown " Maintainer: Tim Pope " Filenames: *.markdown " Last Change: 2016 Aug 29 if exists("b:current_syntax") finish endif if !exists('main_syntax') let main_syntax = 'markdown' endif runtime! syntax/html.vim unlet! b:current_syntax if !exists('g:markdown_fenced_languages') let g:markdown_fenced_languages = [] endif for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")') if s:type =~ '\.' let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*') endif exe 'syn include @markdownHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim' unlet! b:current_syntax endfor unlet! s:type syn sync minlines=10 syn case ignore syn match markdownValid '[<>]\c[a-z/$!]\@!' syn match markdownValid '&\%(#\=\w*;\)\@!' syn match markdownLineStart "^[<@]\@!" nextgroup=@markdownBlock,htmlSpecialChar syn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule syn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop,markdownError syn match markdownH1 "^.\+\n=\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink syn match markdownH2 "^.\+\n-\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink syn match markdownHeadingRule "^[=-]\+$" contained syn region markdownH1 matchgroup=markdownHeadingDelimiter start="##\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn region markdownH2 matchgroup=markdownHeadingDelimiter start="###\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn region markdownH3 matchgroup=markdownHeadingDelimiter start="####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn region markdownH4 matchgroup=markdownHeadingDelimiter start="#####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn region markdownH5 matchgroup=markdownHeadingDelimiter start="######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn region markdownH6 matchgroup=markdownHeadingDelimiter start="#######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn match markdownBlockquote ">\%(\s\|$\)" contained nextgroup=@markdownBlock syn region markdownCodeBlock start=" \|\t" end="$" contained " TODO: real nesting syn match markdownListMarker "\%(\t\| \{0,4\}\)[-*+]\%(\s\+\S\)\@=" contained syn match markdownOrderedListMarker "\%(\t\| \{0,4}\)\<\d\+\.\%(\s\+\S\)\@=" contained syn match markdownRule "\* *\* *\*[ *]*$" contained syn match markdownRule "- *- *-[ -]*$" contained syn match markdownLineBreak " \{2,\}$" syn region markdownIdDeclaration matchgroup=markdownLinkDelimiter start="^ \{0,3\}!\=\[" end="\]:" oneline keepend nextgroup=markdownUrl skipwhite syn match markdownUrl "\S\+" nextgroup=markdownUrlTitle skipwhite contained syn region markdownUrl matchgroup=markdownUrlDelimiter start="<" end=">" oneline keepend nextgroup=markdownUrlTitle skipwhite contained syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+"+ keepend contained syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^]]*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline let s:concealends = has('conceal') ? ' concealends' : '' exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart' . s:concealends exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart' . s:concealends exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart,markdownItalic' . s:concealends exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart,markdownItalic' . s:concealends exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart' . s:concealends exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart' . s:concealends syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart syn region markdownCode matchgroup=markdownCodeDelimiter start="^\s*```.*$" end="^\s*```\ze\s*$" keepend syn match markdownFootnote "\[^[^\]]\+\]" syn match markdownFootnoteDefinition "^\[^[^\]]\+\]:" if main_syntax ==# 'markdown' for s:type in g:markdown_fenced_languages exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*```\s*'.matchstr(s:type,'[^=]*').'\>.*$" end="^\s*```\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') endfor unlet! s:type endif syn match markdownEscape "\\[][\\`*_{}()<>#+.!-]" syn match markdownError "\w\@<=_\w\@=" hi def link markdownH1 htmlH1 hi def link markdownH2 htmlH2 hi def link markdownH3 htmlH3 hi def link markdownH4 htmlH4 hi def link markdownH5 htmlH5 hi def link markdownH6 htmlH6 hi def link markdownHeadingRule markdownRule hi def link markdownHeadingDelimiter Delimiter hi def link markdownOrderedListMarker markdownListMarker hi def link markdownListMarker htmlTagName hi def link markdownBlockquote Comment hi def link markdownRule PreProc hi def link markdownFootnote Typedef hi def link markdownFootnoteDefinition Typedef hi def link markdownLinkText htmlLink hi def link markdownIdDeclaration Typedef hi def link markdownId Type hi def link markdownAutomaticLink markdownUrl hi def link markdownUrl Float hi def link markdownUrlTitle String hi def link markdownIdDelimiter markdownLinkDelimiter hi def link markdownUrlDelimiter htmlTag hi def link markdownUrlTitleDelimiter Delimiter hi def link markdownItalic htmlItalic hi def link markdownItalicDelimiter markdownItalic hi def link markdownBold htmlBold hi def link markdownBoldDelimiter markdownBold hi def link markdownBoldItalic htmlBoldItalic hi def link markdownBoldItalicDelimiter markdownBoldItalic hi def link markdownCodeDelimiter Delimiter hi def link markdownEscape Special hi def link markdownError Error let b:current_syntax = "markdown" if main_syntax ==# 'markdown' unlet main_syntax endif " vim:set sw=2: PK!X vim80/syntax/tpp.vimnu[" Vim syntax file " Language: tpp - Text Presentation Program " Maintainer: Debian Vim Maintainers " Former Maintainer: Gerfried Fuchs " Last Change: 2007-10-14 " URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/syntax/tpp.vim;hb=debian " Filenames: *.tpp " License: BSD " " XXX This file is in need of a new maintainer, Debian VIM Maintainers maintain " it only because patches have been submitted for it by Debian users and the " former maintainer was MIA (Missing In Action), taking over its " maintenance was thus the only way to include those patches. " If you care about this file, and have time to maintain it please do so! " " Comments are very welcome - but please make sure that you are commenting on " the latest version of this file. " SPAM is _NOT_ welcome - be ready to be reported! " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'tpp' endif "" list of the legal switches/options syn match tppAbstractOptionKey contained "^--\%(author\|title\|date\|footer\) *" nextgroup=tppString syn match tppPageLocalOptionKey contained "^--\%(heading\|center\|right\|huge\|sethugefont\|exec\) *" nextgroup=tppString syn match tppPageLocalSwitchKey contained "^--\%(horline\|-\|\%(begin\|end\)\%(\%(shell\)\?output\|slide\%(left\|right\|top\|bottom\)\)\|\%(bold\|rev\|ul\)\%(on\|off\)\|withborder\)" syn match tppNewPageOptionKey contained "^--newpage *" nextgroup=tppString syn match tppColorOptionKey contained "^--\%(\%(bg\|fg\)\?color\) *" syn match tppTimeOptionKey contained "^--sleep *" syn match tppString contained ".*" syn match tppColor contained "\%(white\|yellow\|red\|green\|blue\|cyan\|magenta\|black\|default\)" syn match tppTime contained "\d\+" syn region tppPageLocalSwitch start="^--" end="$" contains=tppPageLocalSwitchKey oneline syn region tppColorOption start="^--\%(\%(bg\|fg\)\?color\)" end="$" contains=tppColorOptionKey,tppColor oneline syn region tppTimeOption start="^--sleep" end="$" contains=tppTimeOptionKey,tppTime oneline syn region tppNewPageOption start="^--newpage" end="$" contains=tppNewPageOptionKey oneline syn region tppPageLocalOption start="^--\%(heading\|center\|right\|huge\|sethugefont\|exec\)" end="$" contains=tppPageLocalOptionKey oneline syn region tppAbstractOption start="^--\%(author\|title\|date\|footer\)" end="$" contains=tppAbstractOptionKey oneline if main_syntax != 'sh' " shell command syn include @tppShExec syntax/sh.vim unlet b:current_syntax syn region shExec matchgroup=tppPageLocalOptionKey start='^--exec *' keepend end='$' contains=@tppShExec endif syn match tppComment "^--##.*$" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link tppAbstractOptionKey Special hi def link tppPageLocalOptionKey Keyword hi def link tppPageLocalSwitchKey Keyword hi def link tppColorOptionKey Keyword hi def link tppTimeOptionKey Comment hi def link tppNewPageOptionKey PreProc hi def link tppString String hi def link tppColor String hi def link tppTime Number hi def link tppComment Comment hi def link tppAbstractOption Error hi def link tppPageLocalOption Error hi def link tppPageLocalSwitch Error hi def link tppColorOption Error hi def link tppNewPageOption Error hi def link tppTimeOption Error let b:current_syntax = "tpp" " vim: ts=8 sw=2 PK!r^3)3)vim80/syntax/ia64.vimnu[" Vim syntax file " Language: IA-64 (Itanium) assembly language " Maintainer: Parth Malwankar " URL: http://www.geocities.com/pmalwankar (Home Page with link to my Vim page) " http://www.geocities.com/pmalwankar/vim.htm (for VIM) " File Version: 0.7 " Last Change: 2006 Sep 08 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif "ignore case for assembly syn case ignore " Identifier Keyword characters (defines \k) setlocal iskeyword=@,48-57,#,$,.,:,?,@-@,_,~ syn sync minlines=5 " Read the MASM syntax to start with " This is needed as both IA-64 as well as IA-32 instructions are supported source :p:h/masm.vim syn region ia64Comment start="//" end="$" contains=ia64Todo syn region ia64Comment start="/\*" end="\*/" contains=ia64Todo syn match ia64Identifier "[a-zA-Z_$][a-zA-Z0-9_$]*" syn match ia64Directive "\.[a-zA-Z_$][a-zA-Z_$.]\+" syn match ia64Label "[a-zA-Z_$.][a-zA-Z0-9_$.]*\s\=:\>"he=e-1 syn match ia64Label "[a-zA-Z_$.][a-zA-Z0-9_$.]*\s\=::\>"he=e-2 syn match ia64Label "[a-zA-Z_$.][a-zA-Z0-9_$.]*\s\=#\>"he=e-1 syn region ia64string start=+L\="+ skip=+\\\\\|\\"+ end=+"+ syn match ia64Octal "0[0-7_]*\>" syn match ia64Binary "0[bB][01_]*\>" syn match ia64Hex "0[xX][0-9a-fA-F_]*\>" syn match ia64Decimal "[1-9_][0-9_]*\>" syn match ia64Float "[0-9_]*\.[0-9_]*\([eE][+-]\=[0-9_]*\)\=\>" "simple instructions syn keyword ia64opcode add adds addl addp4 alloc and andcm cover epc syn keyword ia64opcode fabs fand fandcm fc flushrs fneg fnegabs for syn keyword ia64opcode fpabs fpack fpneg fpnegabs fselect fand fabdcm syn keyword ia64opcode fc fwb fxor loadrs movl mux1 mux2 or padd4 syn keyword ia64opcode pavgsub1 pavgsub2 popcnt psad1 pshl2 pshl4 pshladd2 syn keyword ia64opcode pshradd2 psub4 rfi rsm rum shl shladd shladdp4 syn keyword ia64opcode shrp ssm sub sum sync.i tak thash syn keyword ia64opcode tpa ttag xor "put to override these being recognized as floats. They are orignally from masm.vim "put here to avoid confusion with float syn match ia64Directive "\.186" syn match ia64Directive "\.286" syn match ia64Directive "\.286c" syn match ia64Directive "\.286p" syn match ia64Directive "\.287" syn match ia64Directive "\.386" syn match ia64Directive "\.386c" syn match ia64Directive "\.386p" syn match ia64Directive "\.387" syn match ia64Directive "\.486" syn match ia64Directive "\.486c" syn match ia64Directive "\.486p" syn match ia64Directive "\.8086" syn match ia64Directive "\.8087" "delimiters syn match ia64delimiter ";;" "operators syn match ia64operators "[\[\]()#,]" syn match ia64operators "\(+\|-\|=\)" "TODO syn match ia64Todo "\(TODO\|XXX\|FIXME\|NOTE\)" "What follows is a long list of regular expressions for parsing the "ia64 instructions that use many completers "br syn match ia64opcode "br\(\(\.\(cond\|call\|ret\|ia\|cloop\|ctop\|cexit\|wtop\|wexit\)\)\=\(\.\(spnt\|dpnt\|sptk\|dptk\)\)\=\(\.few\|\.many\)\=\(\.clr\)\=\)\=\>" "break syn match ia64opcode "break\(\.[ibmfx]\)\=\>" "brp syn match ia64opcode "brp\(\.\(sptk\|dptk\|loop\|exit\)\)\(\.imp\)\=\>" syn match ia64opcode "brp\.ret\(\.\(sptk\|dptk\)\)\{1}\(\.imp\)\=\>" "bsw syn match ia64opcode "bsw\.[01]\>" "chk syn match ia64opcode "chk\.\(s\(\.[im]\)\=\)\>" syn match ia64opcode "chk\.a\.\(clr\|nc\)\>" "clrrrb syn match ia64opcode "clrrrb\(\.pr\)\=\>" "cmp/cmp4 syn match ia64opcode "cmp4\=\.\(eq\|ne\|l[te]\|g[te]\|[lg]tu\|[lg]eu\)\(\.unc\)\=\>" syn match ia64opcode "cmp4\=\.\(eq\|[lgn]e\|[lg]t\)\.\(\(or\(\.andcm\|cm\)\=\)\|\(and\(\(\.or\)\=cm\)\=\)\)\>" "cmpxchg syn match ia64opcode "cmpxchg[1248]\.\(acq\|rel\)\(\.nt1\|\.nta\)\=\>" "czx syn match ia64opcode "czx[12]\.[lr]\>" "dep syn match ia64opcode "dep\(\.z\)\=\>" "extr syn match ia64opcode "extr\(\.u\)\=\>" "fadd syn match ia64opcode "fadd\(\.[sd]\)\=\(\.s[0-3]\)\=\>" "famax/famin syn match ia64opcode "fa\(max\|min\)\(\.s[0-3]\)\=\>" "fchkf/fmax/fmin syn match ia64opcode "f\(chkf\|max\|min\)\(\.s[0-3]\)\=\>" "fclass syn match ia64opcode "fclass\(\.n\=m\)\(\.unc\)\=\>" "fclrf/fpamax syn match ia64opcode "f\(clrf\|pamax\|pamin\)\(\.s[0-3]\)\=\>" "fcmp syn match ia64opcode "fcmp\.\(n\=[lg][te]\|n\=eq\|\(un\)\=ord\)\(\.unc\)\=\(\.s[0-3]\)\=\>" "fcvt/fcvt.xf/fcvt.xuf.pc.sf syn match ia64opcode "fcvt\.\(\(fxu\=\(\.trunc\)\=\(\.s[0-3]\)\=\)\|\(xf\|xuf\(\.[sd]\)\=\(\.s[0-3]\)\=\)\)\>" "fetchadd syn match ia64opcode "fetchadd[48]\.\(acq\|rel\)\(\.nt1\|\.nta\)\=\>" "fma/fmpy/fms syn match ia64opcode "fm\([as]\|py\)\(\.[sd]\)\=\(\.s[0-3]\)\=\>" "fmerge/fpmerge syn match ia64opcode "fp\=merge\.\(ns\|se\=\)\>" "fmix syn match ia64opcode "fmix\.\(lr\|[lr]\)\>" "fnma/fnorm/fnmpy syn match ia64opcode "fn\(ma\|mpy\|orm\)\(\.[sd]\)\=\(\.s[0-3]\)\=\>" "fpcmp syn match ia64opcode "fpcmp\.\(n\=[lg][te]\|n\=eq\|\(un\)\=ord\)\(\.s[0-3]\)\=\>" "fpcvt syn match ia64opcode "fpcvt\.fxu\=\(\(\.trunc\)\=\(\.s[0-3]\)\=\)\>" "fpma/fpmax/fpmin/fpmpy/fpms/fpnma/fpnmpy/fprcpa/fpsqrta syn match ia64opcode "fp\(max\=\|min\|n\=mpy\|ms\|nma\|rcpa\|sqrta\)\(\.s[0-3]\)\=\>" "frcpa/frsqrta syn match ia64opcode "fr\(cpa\|sqrta\)\(\.s[0-3]\)\=\>" "fsetc/famin/fchkf syn match ia64opcode "f\(setc\|amin\|chkf\)\(\.s[0-3]\)\=\>" "fsub syn match ia64opcode "fsub\(\.[sd]\)\=\(\.s[0-3]\)\=\>" "fswap syn match ia64opcode "fswap\(\.n[lr]\=\)\=\>" "fsxt syn match ia64opcode "fsxt\.[lr]\>" "getf syn match ia64opcode "getf\.\([sd]\|exp\|sig\)\>" "invala syn match ia64opcode "invala\(\.[ae]\)\=\>" "itc/itr syn match ia64opcode "it[cr]\.[id]\>" "ld syn match ia64opcode "ld[1248]\>\|ld[1248]\(\.\(sa\=\|a\|c\.\(nc\|clr\(\.acq\)\=\)\|acq\|bias\)\)\=\(\.nt[1a]\)\=\>" syn match ia64opcode "ld8\.fill\(\.nt[1a]\)\=\>" "ldf syn match ia64opcode "ldf[sde8]\(\(\.\(sa\=\|a\|c\.\(nc\|clr\)\)\)\=\(\.nt[1a]\)\=\)\=\>" syn match ia64opcode "ldf\.fill\(\.nt[1a]\)\=\>" "ldfp syn match ia64opcode "ldfp[sd8]\(\(\.\(sa\=\|a\|c\.\(nc\|clr\)\)\)\=\(\.nt[1a]\)\=\)\=\>" "lfetch syn match ia64opcode "lfetch\(\.fault\(\.excl\)\=\|\.excl\)\=\(\.nt[12a]\)\=\>" "mf syn match ia64opcode "mf\(\.a\)\=\>" "mix syn match ia64opcode "mix[124]\.[lr]\>" "mov syn match ia64opcode "mov\(\.[im]\)\=\>" syn match ia64opcode "mov\(\.ret\)\=\(\(\.sptk\|\.dptk\)\=\(\.imp\)\=\)\=\>" "nop syn match ia64opcode "nop\(\.[ibmfx]\)\=\>" "pack syn match ia64opcode "pack\(2\.[su]ss\|4\.sss\)\>" "padd //padd4 added to keywords syn match ia64opcode "padd[12]\(\.\(sss\|uus\|uuu\)\)\=\>" "pavg syn match ia64opcode "pavg[12]\(\.raz\)\=\>" "pcmp syn match ia64opcode "pcmp[124]\.\(eq\|gt\)\>" "pmax/pmin syn match ia64opcode "pm\(ax\|in\)\(\(1\.u\)\|2\)\>" "pmpy syn match ia64opcode "pmpy2\.[rl]\>" "pmpyshr syn match ia64opcode "pmpyshr2\(\.u\)\=\>" "probe syn match ia64opcode "probe\.[rw]\>" syn match ia64opcode "probe\.\(\(r\|w\|rw\)\.fault\)\>" "pshr syn match ia64opcode "pshr[24]\(\.u\)\=\>" "psub syn match ia64opcode "psub[12]\(\.\(sss\|uu[su]\)\)\=\>" "ptc syn match ia64opcode "ptc\.\(l\|e\|ga\=\)\>" "ptr syn match ia64opcode "ptr\.\(d\|i\)\>" "setf syn match ia64opcode "setf\.\(s\|d\|exp\|sig\)\>" "shr syn match ia64opcode "shr\(\.u\)\=\>" "srlz syn match ia64opcode "srlz\(\.[id]\)\>" "st syn match ia64opcode "st[1248]\(\.rel\)\=\(\.nta\)\=\>" syn match ia64opcode "st8\.spill\(\.nta\)\=\>" "stf syn match ia64opcode "stf[1248]\(\.nta\)\=\>" syn match ia64opcode "stf\.spill\(\.nta\)\=\>" "sxt syn match ia64opcode "sxt[124]\>" "tbit/tnat syn match ia64opcode "t\(bit\|nat\)\(\.nz\|\.z\)\=\(\.\(unc\|or\(\.andcm\|cm\)\=\|and\(\.orcm\|cm\)\=\)\)\=\>" "unpack syn match ia64opcode "unpack[124]\.[lh]\>" "xchq syn match ia64opcode "xchg[1248]\(\.nt[1a]\)\=\>" "xma/xmpy syn match ia64opcode "xm\(a\|py\)\.[lh]u\=\>" "zxt syn match ia64opcode "zxt[124]\>" "The regex for different ia64 registers are given below "limits the rXXX and fXXX and cr suffix in the range 0-127 syn match ia64registers "\([fr]\|cr\)\([0-9]\|[1-9][0-9]\|1[0-1][0-9]\|12[0-7]\)\{1}\>" "branch ia64registers syn match ia64registers "b[0-7]\>" "predicate ia64registers syn match ia64registers "p\([0-9]\|[1-5][0-9]\|6[0-3]\)\>" "application ia64registers syn match ia64registers "ar\.\(fpsr\|mat\|unat\|rnat\|pfs\|bsp\|bspstore\|rsc\|lc\|ec\|ccv\|itc\|k[0-7]\)\>" "ia32 AR's syn match ia64registers "ar\.\(eflag\|fcr\|csd\|ssd\|cflg\|fsr\|fir\|fdr\)\>" "sp/gp/pr/pr.rot/rp syn keyword ia64registers sp gp pr pr.rot rp ip tp "in/out/local syn match ia64registers "\(in\|out\|loc\)\([0-9]\|[1-8][0-9]\|9[0-5]\)\>" "argument ia64registers syn match ia64registers "farg[0-7]\>" "return value ia64registers syn match ia64registers "fret[0-7]\>" "psr syn match ia64registers "psr\(\.\(l\|um\)\)\=\>" "cr syn match ia64registers "cr\.\(dcr\|itm\|iva\|pta\|ipsr\|isr\|ifa\|iip\|itir\|iipa\|ifs\|iim\|iha\|lid\|ivr\|tpr\|eoi\|irr[0-3]\|itv\|pmv\|lrr[01]\|cmcv\)\>" "Indirect registers syn match ia64registers "\(cpuid\|dbr\|ibr\|pkr\|pmc\|pmd\|rr\|itr\|dtr\)\>" "MUX permutations for 8-bit elements syn match ia64registers "\(@rev\|@mix\|@shuf\|@alt\|@brcst\)\>" "floating point classes syn match ia64registers "\(@nat\|@qnan\|@snan\|@pos\|@neg\|@zero\|@unorm\|@norm\|@inf\)\>" "link relocation operators syn match ia64registers "\(@\(\(\(gp\|sec\|seg\|image\)rel\)\|ltoff\|fptr\|ptloff\|ltv\|section\)\)\>" "Data allocation syntax syn match ia64data "data[1248]\(\(\(\.ua\)\=\(\.msb\|\.lsb\)\=\)\|\(\(\.msb\|\.lsb\)\=\(\.ua\)\=\)\)\=\>" syn match ia64data "real\([48]\|1[06]\)\(\(\(\.ua\)\=\(\.msb\|\.lsb\)\=\)\|\(\(\.msb\|\.lsb\)\=\(\.ua\)\=\)\)\=\>" syn match ia64data "stringz\=\(\(\(\.ua\)\=\(\.msb\|\.lsb\)\=\)\|\(\(\.msb\|\.lsb\)\=\(\.ua\)\=\)\)\=\>" " Define the default highlighting. " Only when an item doesn't have highlighting yet "put masm groups with our groups hi def link masmOperator ia64operator hi def link masmDirective ia64Directive hi def link masmOpcode ia64Opcode hi def link masmIdentifier ia64Identifier hi def link masmFloat ia64Float "ia64 specific stuff hi def link ia64Label Define hi def link ia64Comment Comment hi def link ia64Directive Type hi def link ia64opcode Statement hi def link ia64registers Operator hi def link ia64string String hi def link ia64Hex Number hi def link ia64Binary Number hi def link ia64Octal Number hi def link ia64Float Float hi def link ia64Decimal Number hi def link ia64Identifier Identifier hi def link ia64data Type hi def link ia64delimiter Delimiter hi def link ia64operator Operator hi def link ia64Todo Todo let b:current_syntax = "ia64" " vim: ts=8 sw=2 PK!O O vim80/syntax/prescribe.vimnu[" Vim syntax file " Language: Kyocera PreScribe2e " Maintainer: Klaus Muth " URL: http://www.hampft.de/vim/syntax/prescribe.vim " Last Change: 2005 Mar 04 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn match prescribeSpecial "!R!" " all prescribe commands syn keyword prescribeStatement ALTF AMCR ARC ASFN ASTK BARC BLK BOX CALL syn keyword prescribeStatement CASS CIR CLIP CLPR CLSP COPY CPTH CSET CSTK syn keyword prescribeStatement CTXT DAF DAM DAP DELF DELM DPAT DRP DRPA DUPX syn keyword prescribeStatement DXPG DXSD DZP ENDD ENDM ENDR EPL EPRM EXIT syn keyword prescribeStatement FDIR FILL FLAT FLST FONT FPAT FRPO FSET FTMD syn keyword prescribeStatement GPAT ICCD INTL JOG LDFC MAP MCRO MDAT MID syn keyword prescribeStatement MLST MRP MRPA MSTK MTYP MZP NEWP PAGE PARC PAT syn keyword prescribeStatement PCRP PCZP PDIR RDRP PDZP PELP PIE PMRA PMRP PMZP syn keyword prescribeStatement PRBX PRRC PSRC PXPL RDMP RES RSL RGST RPCS RPF syn keyword prescribeStatement RPG RPP RPU RTTX RTXT RVCD RVRD SBM SCAP SCCS syn keyword prescribeStatement SCF SCG SCP SCPI SCRC SCS SCU SDP SEM SETF SFA syn keyword prescribeStatement SFNT SIMG SIR SLJN SLM SLPI SLPP SLS SMLT SPD syn keyword prescribeStatement SPL SPLT SPO SPSZ SPW SRM SRO SROP SSTK STAT STRK syn keyword prescribeStatement SULP SVCP TATR TEXT TPRS UNIT UOM WIDE WRED XPAT syn match prescribeStatement "\" syn match prescribeStatement "\" syn match prescribeStatement "\" syn match prescribeStatement "\" syn match prescribeStatement "\" syn match prescribeStatement "\" syn match prescribeStatement "\" syn match prescribeCSETArg "[0-9]\{1,3}[A-Z]" syn match prescribeFRPOArg "[A-Z][0-9]\{1,2}" syn match prescribeNumber "[0-9]\+" syn region prescribeString start=+'+ end=+'+ skip=+\\'+ syn region prescribeComment start=+CMNT+ end=+;+ " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link prescribeSpecial PreProc hi def link prescribeStatement Statement hi def link prescribeNumber Number hi def link prescribeCSETArg String hi def link prescribeFRPOArg String hi def link prescribeComment Comment let b:current_syntax = "prescribe" " vim: ts=8 PK!%ddvim80/syntax/ppd.vimnu[" Vim syntax file " Language: PPD (PostScript printer description) file " Maintainer: Bjoern Jacke " Last Change: 2001-10-06 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn match ppdComment "^\*%.*" syn match ppdDef "\*[a-zA-Z0-9]\+" syn match ppdDefine "\*[a-zA-Z0-9\-_]\+:" syn match ppdUI "\*[a-zA-Z]*\(Open\|Close\)UI" syn match ppdUIGroup "\*[a-zA-Z]*\(Open\|Close\)Group" syn match ppdGUIText "/.*:" syn match ppdContraints "^*UIConstraints:" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link ppdComment Comment hi def link ppdDefine Statement hi def link ppdUI Function hi def link ppdUIGroup Function hi def link ppdDef String hi def link ppdGUIText Type hi def link ppdContraints Special let b:current_syntax = "ppd" " vim: ts=8 PK!$vim80/syntax/lace.vimnu[" Vim syntax file " Language: lace " Maintainer: Jocelyn Fiat " Last Change: 2001 May 09 " Copyright Interactive Software Engineering, 1998 " You are free to use this file as you please, but " if you make a change or improvement you must send " it to the maintainer at " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " LACE is case insensitive, but the style guide lines are not. if !exists("lace_case_insensitive") syn case match else syn case ignore endif " A bunch of useful LACE keywords syn keyword laceTopStruct system root default option visible cluster syn keyword laceTopStruct external generate end syn keyword laceOptionClause collect assertion debug optimize trace syn keyword laceOptionClause profile inline precompiled multithreaded syn keyword laceOptionClause exception_trace dead_code_removal syn keyword laceOptionClause array_optimization syn keyword laceOptionClause inlining_size inlining syn keyword laceOptionClause console_application dynamic_runtime syn keyword laceOptionClause line_generation syn keyword laceOptionMark yes no all syn keyword laceOptionMark require ensure invariant loop check syn keyword laceClusterProp use include exclude syn keyword laceAdaptClassName adapt ignore rename as syn keyword laceAdaptClassName creation export visible syn keyword laceExternal include_path object makefile " Operators syn match laceOperator "\$" syn match laceBrackets "[[\]]" syn match laceExport "[{}]" " Constants syn keyword laceBool true false syn keyword laceBool True False syn region laceString start=+"+ skip=+%"+ end=+"+ contains=laceEscape,laceStringError syn match laceEscape contained "%[^/]" syn match laceEscape contained "%/\d\+/" syn match laceEscape contained "^[ \t]*%" syn match laceEscape contained "%[ \t]*$" syn match laceStringError contained "%/[^0-9]" syn match laceStringError contained "%/\d\+[^0-9/]" syn match laceStringError "'\(%[^/]\|%/\d\+/\|[^'%]\)\+'" syn match laceCharacter "'\(%[^/]\|%/\d\+/\|[^'%]\)'" contains=laceEscape syn match laceNumber "-\=\<\d\+\(_\d\+\)*\>" syn match laceNumber "\<[01]\+[bB]\>" syn match laceNumber "-\=\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\)\=\([eE][-+]\=\d\+\(_\d\+\)*\)\=" syn match laceNumber "-\=\.\d\+\(_\d\+\)*\([eE][-+]\=\d\+\(_\d\+\)*\)\=" syn match laceComment "--.*" contains=laceTodo syn case match " Case sensitive stuff syn keyword laceTodo TODO XXX FIXME syn match laceClassName "\<[A-Z][A-Z0-9_]*\>" syn match laceCluster "[a-zA-Z][a-zA-Z0-9_]*\s*:" syn match laceCluster "[a-zA-Z][a-zA-Z0-9_]*\s*(\s*[a-zA-Z][a-zA-Z0-9_]*\s*)\s*:" " Catch mismatched parentheses syn match laceParenError ")" syn match laceBracketError "\]" syn region laceGeneric transparent matchgroup=laceBrackets start="\[" end="\]" contains=ALLBUT,laceBracketError syn region laceParen transparent start="(" end=")" contains=ALLBUT,laceParenError " Should suffice for even very long strings and expressions syn sync lines=40 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link laceTopStruct PreProc hi def link laceOptionClause Statement hi def link laceOptionMark Constant hi def link laceClusterProp Label hi def link laceAdaptClassName Label hi def link laceExternal Statement hi def link laceCluster ModeMsg hi def link laceEscape Special hi def link laceBool Boolean hi def link laceString String hi def link laceCharacter Character hi def link laceClassName Type hi def link laceNumber Number hi def link laceOperator Special hi def link laceArray Special hi def link laceExport Special hi def link laceCreation Special hi def link laceBrackets Special hi def link laceConstraint Special hi def link laceComment Comment hi def link laceError Error hi def link laceStringError Error hi def link laceParenError Error hi def link laceBracketError Error hi def link laceTodo Todo let b:current_syntax = "lace" " vim: ts=4 PK!u`L`Lvim80/syntax/vera.vimnu[" Vim syntax file " Language: Vera " Maintainer: Dave Eggum (opine at bluebottle dOt com) " Last Change: 2005 Dec 19 " NOTE: extra white space at the end of the line will be highlighted if you " add this line to your colorscheme: " highlight SpaceError guibg=#204050 " (change the value for guibg to any color you like) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " A bunch of useful Vera keywords syn keyword veraStatement break return continue fork join terminate syn keyword veraStatement breakpoint proceed syn keyword veraLabel bad_state bad_trans bind constraint coverage_group syn keyword veraLabel class CLOCK default function interface m_bad_state syn keyword veraLabel m_bad_trans m_state m_trans program randseq state syn keyword veraLabel task trans syn keyword veraConditional if else case casex casez randcase syn keyword veraRepeat repeat while for do foreach syn keyword veraModifier after all any around assoc_size async syn keyword veraModifier before big_endian bit_normal bit_reverse export syn keyword veraModifier extends extern little_endian local hdl_node hdl_task syn keyword veraModifier negedge none packed protected posedge public rules syn keyword veraModifier shadow soft static super this typedef unpacked var syn keyword veraModifier vca virtual virtuals wildcard with syn keyword veraType reg string enum event bit syn keyword veraType rand randc integer port prod syn keyword veraDeprecated call_func call_task close_conn get_bind get_bind_id syn keyword veraDeprecated get_conn_err mailbox_receive mailbox_send make_client syn keyword veraDeprecated make_server simwave_plot up_connections " predefined tasks and functions syn keyword veraTask alloc assoc_index cast_assign cm_coverage syn keyword veraTask cm_get_coverage cm_get_limit delay error error_mode syn keyword veraTask exit fclose feof ferror fflush flag fopen fprintf syn keyword veraTask freadb freadh freadstr get_cycle get_env get_memsize syn keyword veraTask get_plus_arg getstate get_systime get_time get_time_unit syn keyword veraTask initstate lock_file mailbox_get mailbox_put os_command syn keyword veraTask printf prodget prodset psprintf query query_str query_x syn keyword veraTask rand48 random region_enter region_exit rewind syn keyword veraTask semaphore_get semaphore_put setstate signal_connect syn keyword veraTask sprintf srandom sscanf stop suspend_thread sync syn keyword veraTask timeout trace trigger unit_delay unlock_file urand48 syn keyword veraTask urandom urandom_range vera_bit_reverse vera_crc syn keyword veraTask vera_pack vera_pack_big_endian vera_plot syn keyword veraTask vera_report_profile vera_unpack vera_unpack_big_endian syn keyword veraTask vsv_call_func vsv_call_task vsv_get_conn_err syn keyword veraTask vsv_make_client vsv_make_server vsv_up_connections syn keyword veraTask vsv_wait_for_done vsv_wait_for_input wait_child wait_var syn cluster veraOperGroup contains=veraOperator,veraOperParen,veraNumber,veraString,veraOperOk,veraType " syn match veraOperator "++\|--\|&\|\~&\||\|\~|\|^\|\~^\|\~\|><" " syn match veraOperator "*\|/\|%\|+\|-\|<<\|>>\|<\|<=\|>\|>=\|!in" " syn match veraOperator "=?=\|!?=\|==\|!=\|===\|!==\|&\~\|^\~\||\~" " syn match veraOperator "&&\|||\|=\|+=\|-=\|*=\|/=\|%=\|<<=\|>>=\|&=" " syn match veraOperator "|=\|^=\|\~&=\|\~|=\|\~^=" syn match veraOperator "[&|\~>" " "hex number " syn match veraNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" " syn match veraNumber "\(\<[0-9]\+\|\)'[bdoh][0-9a-fxzA-FXZ_]\+\>" syn match veraNumber "\<\(\<[0-9]\+\)\?\('[bdoh]\)\?[0-9a-fxz_]\+\>" " syn match veraNumber "\<[+-]\=[0-9]\+\>" " Flag the first zero of an octal number as something special syn match veraOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=veraOctalZero syn match veraOctalZero display contained "\<0" syn match veraFloat display contained "\d\+f" "floating point number, with dot, optional exponent syn match veraFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" "floating point number, starting with a dot, optional exponent syn match veraFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, without dot, with exponent syn match veraFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" "hexadecimal floating point number, optional leading digits, with dot, with exponent syn match veraFloat display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>" "hexadecimal floating point number, with leading digits, optional dot, with exponent syn match veraFloat display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>" " flag an octal number with wrong digits syn match veraOctalError display contained "0\o*[89]\d*" syn case match let vera_comment_strings = 1 if exists("vera_comment_strings") " A comment can contain veraString, veraCharacter and veraNumber. " But a "*/" inside a veraString in a veraComment DOES end the comment! So we " need to use a special type of veraString: veraCommentString, which also ends on " "*/", and sees a "*" at the start of the line as comment again. " Unfortunately this doesn't work very well for // type of comments :-( syntax match veraCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region veraCommentString contained start=+L\=\\\@" syn match veraClass "\zs\w\+\ze::" syn match veraClass "\zs\w\+\ze\s\+\w\+\s*[=;,)\[]" contains=veraConstant,veraUserConstant syn match veraClass "\zs\w\+\ze\s\+\w\+\s*$" contains=veraConstant,veraUserConstant syn match veraUserMethod "\zs\w\+\ze\s*(" contains=veraConstant,veraUserConstant syn match veraObject "\zs\w\+\ze\.\w" syn match veraObject "\zs\w\+\ze\.\$\w" " Accept ` for # (Verilog) syn region veraPreCondit start="^\s*\(`\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=veraComment,veraCppString,veraCharacter,veraCppParen,veraParenError,veraNumbers,veraCommentError,veraSpaceError syn match veraPreCondit display "^\s*\(`\|#\)\s*\(else\|endif\)\>" if !exists("vera_no_if0") syn region veraCppOut start="^\s*\(`\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=veraCppOut2 syn region veraCppOut2 contained start="0" end="^\s*\(`\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=veraSpaceError,veraCppSkip syn region veraCppSkip contained start="^\s*\(`\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(`\|#\)\s*endif\>" contains=veraSpaceError,veraCppSkip endif syn region veraIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match veraIncluded display contained "<[^>]*>" syn match veraInclude display "^\s*\(`\|#\)\s*include\>\s*["<]" contains=veraIncluded "syn match veraLineSkip "\\$" syn cluster veraPreProcGroup contains=veraPreCondit,veraIncluded,veraInclude,veraDefine,veraErrInParen,veraErrInBracket,veraUserLabel,veraSpecial,veraOctalZero,veraCppOut,veraCppOut2,veraCppSkip,veraFormat,veraNumber,veraFloat,veraOctal,veraOctalError,veraNumbersCom,veraString,veraCommentSkip,veraCommentString,veraComment2String,@veraCommentGroup,veraCommentStartError,veraParen,veraBracket,veraMulti syn region veraDefine start="^\s*\(`\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@veraPreProcGroup,@Spell syn region veraPreProc start="^\s*\(`\|#\)\s*\(pragma\>\|line\>\|warning\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@veraPreProcGroup,@Spell " Highlight User Labels syn cluster veraMultiGroup contains=veraIncluded,veraSpecial,veraCommentSkip,veraCommentString,veraComment2String,@veraCommentGroup,veraCommentStartError,veraUserCont,veraUserLabel,veraBitField,veraOctalZero,veraCppOut,veraCppOut2,veraCppSkip,veraFormat,veraNumber,veraFloat,veraOctal,veraOctalError,veraNumbersCom,veraCppParen,veraCppBracket,veraCppString syn region veraMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@veraMultiGroup,@Spell " syn region veraMulti transparent start='?' skip='::' end=':' contains=ALL " The above causes veraCppOut2 to catch on: " i = (isTrue) ? 0 : 1; " which ends up commenting the rest of the file " Avoid matching foo::bar() by requiring that the next char is not ':' syn cluster veraLabelGroup contains=veraUserLabel syn match veraUserCont display "^\s*\I\i*\s*:$" contains=@veraLabelGroup syn match veraUserCont display ";\s*\I\i*\s*:$" contains=@veraLabelGroup syn match veraUserCont display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@veraLabelGroup syn match veraUserCont display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@veraLabelGroup syn match veraUserLabel display "\I\i*" contained " Avoid recognizing most bitfields as labels syn match veraBitField display "^\s*\I\i*\s*:\s*[1-9]"me=e-1 syn match veraBitField display ";\s*\I\i*\s*:\s*[1-9]"me=e-1 if exists("vera_minlines") let b:vera_minlines = vera_minlines else if !exists("vera_no_if0") let b:vera_minlines = 50 " #if 0 constructs can be long else let b:vera_minlines = 15 " mostly for () constructs endif endif exec "syn sync ccomment veraComment minlines=" . b:vera_minlines " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link veraClass Identifier hi def link veraObject Identifier hi def link veraUserMethod Function hi def link veraTask Keyword hi def link veraModifier Tag hi def link veraDeprecated veraError hi def link veraMethods Statement " hi def link veraInterface Label hi def link veraInterface Function hi def link veraFormat veraSpecial hi def link veraCppString veraString hi def link veraCommentL veraComment hi def link veraCommentStart veraComment hi def link veraLabel Label hi def link veraUserLabel Label hi def link veraConditional Conditional hi def link veraRepeat Repeat hi def link veraCharacter Character hi def link veraSpecialCharacter veraSpecial hi def link veraNumber Number hi def link veraOctal Number hi def link veraOctalZero PreProc " link this to Error if you want hi def link veraFloat Float hi def link veraOctalError veraError hi def link veraParenError veraError hi def link veraErrInParen veraError hi def link veraErrInBracket veraError hi def link veraCommentError veraError hi def link veraCommentStartError veraError hi def link veraSpaceError SpaceError hi def link veraSpecialError veraError hi def link veraOperator Operator hi def link veraStructure Structure hi def link veraInclude Include hi def link veraPreProc PreProc hi def link veraDefine Macro hi def link veraIncluded veraString hi def link veraError Error hi def link veraStatement Statement hi def link veraPreCondit PreCondit hi def link veraType Type " hi def link veraConstant Constant hi def link veraConstant Keyword hi def link veraUserConstant Constant hi def link veraCommentString veraString hi def link veraComment2String veraString hi def link veraCommentSkip veraComment hi def link veraString String hi def link veraComment Comment hi def link veraSpecial SpecialChar hi def link veraTodo Todo hi def link veraCppSkip veraCppOut hi def link veraCppOut2 veraCppOut hi def link veraCppOut Comment let b:current_syntax = "vera" " vim: ts=8 PK!Xvim80/syntax/form.vimnu[" Vim syntax file " Language: FORM " Version: 2.0 " Maintainer: Michael M. Tung " Last Change: " Past Change: " Past Change: " First public release based on 'Symbolic Manipulation with FORM' " by J.A.M. Vermaseren, CAN, Netherlands, 1991. " This syntax file is still in development. Please send suggestions " to the maintainer. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " a bunch of useful FORM keywords syn keyword formType global local syn keyword formHeaderStatement symbol symbols cfunction cfunctions syn keyword formHeaderStatement function functions vector vectors syn keyword formHeaderStatement tensor tensors ctensor ctensors syn keyword formHeaderStatement set sets index indices table ctable syn keyword formHeaderStatement dimension dimensions unittrace syn keyword formConditional if else elseif endif while syn keyword formConditional repeat endrepeat label goto syn keyword formConditional argument endargument exit syn keyword formConditional inexpression inside term syn keyword formConditional endinexpression endinside endterm syn keyword formStatement abrackets also antibrackets antisymmetrize syn keyword formStatement argexplode argimplode apply auto autodeclare syn keyword formStatement brackets chainin chainout chisholm cleartable syn keyword formStatement collect commuting compress contract syn keyword formStatement cyclesymmetrize deallocatetable delete syn keyword formStatement dimension discard disorder drop factarg fill syn keyword formStatement fillexpression fixindex format funpowers hide syn keyword formStatement identify idnew idold ifmatch inparallel syn keyword formStatement insidefirst keep load makeinteger many metric syn keyword formStatement moduleoption modulus multi multiply ndrop syn keyword formStatement nfunctions nhide normalize notinparallel syn keyword formStatement nprint nskip ntable ntensors nunhide nwrite syn keyword formStatement off on once only polyfun pophide print syn keyword formStatement printtable propercount pushhide ratio syn keyword formStatement rcyclesymmetrize redefine renumber syn keyword formStatement replaceinarg replaceloop save select syn keyword formStatement setexitflag skip slavepatchsize sort splitarg syn keyword formStatement splitfirstarg splitlastarg sum symmetrize syn keyword formStatement tablebase testuse threadbucketsize totensor syn keyword formStatement tovector trace4 tracen tryreplace unhide syn keyword formStatement unittrace vectors write " for compatibility with older FORM versions: syn keyword formStatement id bracket count match traceN " some special functions syn keyword formStatement abs_ bernoulli_ binom_ conjg_ count_ syn keyword formStatement d_ dd_ delta_ deltap_ denom_ distrib_ syn keyword formStatement dum_ dummy_ dummyten_ e_ exp_ fac_ syn keyword formStatement factorin_ firstbracket_ g5_ g6_ g7_ syn keyword formStatement g_ gcd_ gi_ integer_ invfac_ match_ syn keyword formStatement max_ maxpowerof_ min_ minpowerof_ syn keyword formStatement mod_ nargs_ nterms_ pattern_ poly_ syn keyword formStatement polyadd_ polydiv_ polygcd_ polyintfac_ syn keyword formStatement polymul_ polynorm_ polyrem_ polysub_ syn keyword formStatement replace_ reverse_ root_ setfun_ sig_ syn keyword formStatement sign_ sum_ sump_ table_ tbl_ term_ syn keyword formStatement termsin_ termsinbracket_ theta_ thetap_ syn keyword formStatement 5_ 6_ 7_ syn keyword formReserved sqrt_ ln_ sin_ cos_ tan_ asin_ acos_ syn keyword formReserved atan_ atan2_ sinh_ cosh_ tanh_ asinh_ syn keyword formReserved acosh_ atanh_ li2_ lin_ syn keyword formTodo contained TODO FIXME XXX syn match formSpecial display contained "\\\(n\|t\|b\|\\\|\"\)" syn match formSpecial display contained "%\(%\|e\|E\|s\|f\|\$\)" syn match formSpecial "\" syn match formNumber "\<\d\+\>" syn match formNumber "\<\d\+\.\d*\>" syn match formNumber "\.\d\+\>" syn match formNumber "-\d" contains=Number syn match formNumber "-\.\d" contains=Number syn match formNumber "i_\+\>" syn match formNumber "fac_\+\>" " pattern matching wildcards syn match formNumber "?[a-zA-Z0-9]*" " dollar-variables (new in 3.x) syn match formNumber "\\$[a-zA-Z0-9]*" " scalar products syn match formNumber "^\=[a-zA-Z][a-zA-Z0-9]*\.[a-zA-Z][a-zA-Z0-9]*\>" syn match formDirective "^\=\.[a-zA-Z][a-zA-Z0-9]*\>" " hi User Labels syn sync ccomment formComment minlines=10 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link formConditional Conditional hi def link formNumber Number hi def link formStatement Statement hi def link formComment Comment hi def link formPreProc PreProc hi def link formDirective PreProc hi def link formType Type hi def link formString String hi def link formNestedString String hi def link formReserved Error hi def link formTodo Todo hi def link formSpecial SpecialChar if !exists("form_enhanced_color") hi def link formHeaderStatement Statement else " enhanced color mode hi def link formHeaderStatement HeaderStatement " dark and a light background for local types if &background == "dark" hi HeaderStatement term=underline ctermfg=LightGreen guifg=LightGreen gui=bold else hi HeaderStatement term=underline ctermfg=DarkGreen guifg=SeaGreen gui=bold endif " change slightly the default for dark gvim if has("gui_running") && &background == "dark" hi Conditional guifg=LightBlue gui=bold hi Statement guifg=LightYellow endif endif let b:current_syntax = "form" " vim: ts=8 PK!Yo\o\vim80/syntax/gnuplot.vimnu[" Vim syntax file " Language: gnuplot 4.7.0 " Maintainer: Josh Wainwright " Last Maintainer: Andrew Rasmussen andyras@users.sourceforge.net " Original Maintainer: John Hoelzel johnh51@users.sourceforge.net " Last Change: 2015-08-25 " Filenames: *.gnu *.plt *.gpi *.gih *.gp *.gnuplot scripts: #!*gnuplot " URL: http://www.vim.org/scripts/script.php?script_id=4873 " Original URL: http://johnh51.get.to/vim/syntax/gnuplot.vim " thanks to "David Necas (Yeti)" " credit also to Jim Eberle " for the script http://www.vim.org/scripts/script.php?script_id=1737 " some shortened names to make demo files look clean... jeh. 11/2000 " demos -> 3.8i ... jeh. 5/2003 - a work in progress... " added current commands, keywords, variables, todos, macros... amr 2014-02-24 " For vim version 5.x: Clear all syntax items " For vim version 6.x: Quit when a syntax file was already loaded " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " ---- Special characters ---- " " no harm in just matching any \[char] within double quotes, right? syn match gnuplotSpecial "\\." contained " syn match gnuplotSpecial "\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[a-z\\]" contained " measurements in the units in, cm and pt are special syn match gnuplotUnit "[0-9]+in" syn match gnuplotUnit "[0-9]+cm" syn match gnuplotUnit "[0-9]+pt" " external (shell) commands are special syn region gnuplotExternal start="!" end="$" " ---- Comments ---- " syn region gnuplotComment start="#" end="$" contains=gnuplotTodo " ---- Constants ---- " " strings syn region gnuplotString start=+"+ skip=+\\"+ end=+"+ contains=gnuplotSpecial syn region gnuplotString start="'" end="'" " built-in variables syn keyword gnuplotNumber GNUTERM GPVAL_TERM GPVAL_TERMOPTIONS GPVAL_SPLOT syn keyword gnuplotNumber GPVAL_OUTPUT GPVAL_ENCODING GPVAL_VERSION syn keyword gnuplotNumber GPVAL_PATCHLEVEL GPVAL_COMPILE_OPTIONS syn keyword gnuplotNumber GPVAL_MULTIPLOT GPVAL_PLOT GPVAL_VIEW_ZSCALE syn keyword gnuplotNumber GPVAL_TERMINALS GPVAL_pi GPVAL_NaN syn keyword gnuplotNumber GPVAL_ERRNO GPVAL_ERRMSG GPVAL_PWD syn keyword gnuplotNumber pi NaN GPVAL_LAST_PLOT GPVAL_TERM_WINDOWID syn keyword gnuplotNumber GPVAL_X_MIN GPVAL_X_MAX GPVAL_X_LOG syn keyword gnuplotNumber GPVAL_DATA_X_MIN GPVAL_DATA_X_MAX GPVAL_Y_MIN syn keyword gnuplotNumber GPVAL_Y_MAX GPVAL_Y_LOG GPVAL_DATA_Y_MIN syn keyword gnuplotNumber GPVAL_DATA_Y_MAX GPVAL_X2_MIN GPVAL_X2_MAX syn keyword gnuplotNumber GPVAL_X2_LOG GPVAL_DATA_X2_MIN GPVAL_DATA_X2_MAX syn keyword gnuplotNumber GPVAL_Y2_MIN GPVAL_Y2_MAX GPVAL_Y2_LOG syn keyword gnuplotNumber GPVAL_DATA_Y2_MIN GPVAL_DATA_Y2_MAX GPVAL_Z_MIN syn keyword gnuplotNumber GPVAL_Z_MAX GPVAL_Z_LOG GPVAL_DATA_Z_MIN syn keyword gnuplotNumber GPVAL_DATA_Z_MAX GPVAL_CB_MIN GPVAL_CB_MAX syn keyword gnuplotNumber GPVAL_CB_LOG GPVAL_DATA_CB_MIN GPVAL_DATA_CB_MAX syn keyword gnuplotNumber GPVAL_T_MIN GPVAL_T_MAX GPVAL_T_LOG GPVAL_U_MIN syn keyword gnuplotNumber GPVAL_U_MAX GPVAL_U_LOG GPVAL_V_MIN GPVAL_V_MAX syn keyword gnuplotNumber GPVAL_V_LOG GPVAL_R_MIN GPVAL_R_LOG syn keyword gnuplotNumber GPVAL_TERM_XMIN GPVAL_TERM_XMAX GPVAL_TERM_YMIN syn keyword gnuplotNumber GPVAL_TERM_YMAX GPVAL_TERM_XSIZE syn keyword gnuplotNumber GPVAL_TERM_YSIZE GPVAL_VIEW_MAP GPVAL_VIEW_ROT_X syn keyword gnuplotNumber GPVAL_VIEW_ROT_Z GPVAL_VIEW_SCALE " function name variables syn match gnuplotNumber "GPFUN_[a-zA-Z_]*" " stats variables syn keyword gnuplotNumber STATS_records STATS_outofrange STATS_invalid syn keyword gnuplotNumber STATS_blank STATS_blocks STATS_columns STATS_min syn keyword gnuplotNumber STATS_max STATS_index_min STATS_index_max syn keyword gnuplotNumber STATS_lo_quartile STATS_median STATS_up_quartile syn keyword gnuplotNumber STATS_mean STATS_stddev STATS_sum STATS_sumsq syn keyword gnuplotNumber STATS_correlation STATS_slope STATS_intercept syn keyword gnuplotNumber STATS_sumxy STATS_pos_min_y STATS_pos_max_y syn keyword gnuplotNumber STATS_mean STATS_stddev STATS_mean_x STATS_sum_x syn keyword gnuplotNumber STATS_stddev_x STATS_sumsq_x STATS_min_x syn keyword gnuplotNumber STATS_max_x STATS_median_x STATS_lo_quartile_x syn keyword gnuplotNumber STATS_up_quartile_x STATS_index_min_x syn keyword gnuplotNumber STATS_index_max_x STATS_mean_y STATS_stddev_y syn keyword gnuplotNumber STATS_sum_y STATS_sumsq_y STATS_min_y syn keyword gnuplotNumber STATS_max_y STATS_median_y STATS_lo_quartile_y syn keyword gnuplotNumber STATS_up_quartile_y STATS_index_min_y syn keyword gnuplotNumber STATS_index_max_y STATS_correlation STATS_sumxy " deprecated fit variables syn keyword gnuplotError FIT_LIMIT FIT_MAXITER FIT_START_LAMBDA syn keyword gnuplotError FIT_LAMBDA_FACTOR FIT_LOG FIT_SCRIPT " numbers, from c.vim " integer number, or floating point number without a dot and with "f". syn case ignore syn match gnuplotNumber "\<[0-9]\+\(u\=l\=\|lu\|f\)\>" " floating point number, with dot, optional exponent syn match gnuplotFloat "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=[fl]\=\>" " floating point number, starting with a dot, optional exponent syn match gnuplotFloat "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=[fl]\=\>" " floating point number, without dot, with exponent syn match gnuplotFloat "\<[0-9]\+e[-+]\=[0-9]\+[fl]\=\>" " hex number syn match gnuplotNumber "\<0x[0-9a-f]\+\(u\=l\=\|lu\)\>" syn case match " flag an octal number with wrong digits by not highlighting syn match gnuplotOctalError "\<0[0-7]*[89]" " ---- Identifiers: Functions ---- " " numerical functions syn keyword gnuplotFunc abs acos acosh airy arg asin asinh atan atan2 syn keyword gnuplotFunc atanh EllipticK EllipticE EllipticPi besj0 besj1 syn keyword gnuplotFunc besy0 besy1 ceil cos cosh erf erfc exp expint syn keyword gnuplotFunc floor gamma ibeta inverf igamma imag invnorm int syn keyword gnuplotFunc lambertw lgamma log log10 norm rand real sgn sin syn keyword gnuplotFunc sin sinh sqrt tan tanh voigt " string functions syn keyword gnuplotFunc gprintf sprintf strlen strstrt substr strftime syn keyword gnuplotFunc strptime system word words " other functions syn keyword gnuplotFunc column columnhead columnheader defined exists syn keyword gnuplotFunc hsv2rgb stringcolumn timecolumn tm_hour tm_mday syn keyword gnuplotFunc tm_min tm_mon tm_sec tm_wday tm_yday tm_year syn keyword gnuplotFunc time valid value " ---- Statements ---- " " common (builtin) variable names syn keyword gnuplotKeyword x y t u v z s " conditionals syn keyword gnuplotConditional if else " repeats syn keyword gnuplotRepeat do for while " operators syn match gnuplotOperator "[-+*/^|&?:]" syn match gnuplotOperator "\*\*" syn match gnuplotOperator "&&" syn match gnuplotOperator "||" " Keywords " keywords for 'fit' command syn keyword gnuplotKeyword via z x:z x:z:s x:y:z:s syn keyword gnuplotKeyword x:y:t:z:s x:y:t:u:z:s x:y:t:u:v:z:s " keywords for 'plot' command " 'axes' keyword syn keyword gnuplotKeyword axes x1y1 x1y2 x2y1 x2y2 " 'binary' keyword syn keyword gnuplotKeyword binary matrix general array record format endian syn keyword gnuplotKeyword filetype avs edf png scan transpose dx dy dz syn keyword gnuplotKeyword flipx flipy flipz origin center rotate using syn keyword gnuplotKeyword perpendicular skip every " datafile keywords syn keyword gnuplotKeyword binary nonuniform matrix index every using syn keyword gnuplotKeyword smooth volatile noautoscale every index " 'smooth' keywords syn keyword gnuplotKeyword unique frequency cumulative cnormal kdensity syn keyword gnuplotKeyword csplines acsplines bezer sbezier " deprecated 'thru' keyword syn keyword gnuplotError thru " 'using' keyword syn keyword gnuplotKeyword using u xticlabels yticlabels zticlabels syn keyword gnuplotKeyword x2ticlabels y2ticlabels xtic ytic ztic " 'errorbars' keywords syn keyword gnuplotKeyword errorbars xerrorbars yerrorbars xyerrorbars " 'errorlines' keywords syn keyword gnuplotKeyword errorlines xerrorlines yerrorlines xyerrorlines " 'title' keywords syn keyword gnuplotKeyword title t tit notitle columnheader at beginning syn keyword gnuplotKeyword end " 'with' keywords syn keyword gnuplotKeyword with w linestyle ls linetype lt linewidth syn keyword gnuplotKeyword lw linecolor lc pointtype pt pointsize ps syn keyword gnuplotKeyword fill fs nohidden3d nocontours nosurface palette " styles for 'with' syn keyword gnuplotKeyword lines l points p linespoints lp surface dots syn keyword gnuplotKeyword impulses labels vectors steps fsteps histeps syn keyword gnuplotKeyword errorbars errorlines financebars xerrorbars syn keyword gnuplotKeyword xerrorlines xyerrorbars yerrorbars yerrorlines syn keyword gnuplotKeyword boxes boxerrorbars boxxyerrorbars boxplot syn keyword gnuplotKeyword candlesticks circles ellipses filledcurves syn keyword gnuplotKeyword histogram image rgbimage rgbalpha pm3d variable " keywords for 'save' command syn keyword gnuplotKeyword save functions func variables all var terminal syn keyword gnuplotKeyword term set " keywords for 'set/show' command " set angles syn keyword gnuplotKeyword angles degrees deg radians rad " set arrow syn keyword gnuplotKeyword arrow from to rto length angle arrowstyle as syn keyword gnuplotKeyword nohead head backhead heads size filled empty syn keyword gnuplotKeyword nofilled front back linestyle linetype linewidth " set autoscale " TODO regexp here syn keyword gnuplotKeyword autoscale x y z cb x2 y2 zy min max fixmin syn keyword gnuplotKeyword fixmax fix keepfix noextend " set bars syn keyword gnuplotKeyword bars small large fullwidth front back " set bind syn keyword gnuplotKeyword bind " set margins " TODO regexp syn keyword gnuplotKeyword margin bmargin lmargin rmargin tmargin " set border syn keyword gnuplotKeyword border front back " set boxwidth syn keyword gnuplotKeyword boxwidth absolute relative " deprecated set clabel syn keyword gnuplotError clabel " set clip syn keyword gnuplotKeyword clip points one two " set cntrlabel syn keyword gnuplotKeyword cntrlabel format font start interval onecolor " set cntrparam syn keyword gnuplotKeyword cntrparam linear cubicspline bspline points syn keyword gnuplotKeyword order levels auto discrete incremental " set colorbox syn keyword gnuplotKeyword colorbox vertical horizontal default user origin syn keyword gnuplotKeyword size front back noborder bdefault border " show colornames syn keyword gnuplotKeyword colornames " set contour syn keyword gnuplotKeyword contour base surface both " set datafile syn keyword gnuplotKeyword datafile fortran nofpe_trap missing separator syn keyword gnuplotKeyword whitespace tab comma commentschars binary " set decimalsign syn keyword gnuplotKeyword decimalsign locale " set dgrid3d syn keyword gnuplotKeyword dgrid3d splines qnorm gauss cauchy exp box hann syn keyword gnuplotKeyword kdensity " set dummy syn keyword gnuplotKeyword dummy " set encoding syn keyword gnuplotKeyword encoding default iso_8859_1 iso_8859_15 syn keyword gnuplotKeyword iso_8859_2 iso_8859_9 koi8r koi8u cp437 cp850 syn keyword gnuplotKeyword cp852 cp950 cp1250 cp1251 cp1254 sjis utf8 " set fit syn keyword gnuplotKeyword fit logfile default quiet noquiet results brief syn keyword gnuplotKeyword verbose errorvariables noerrorvariables syn keyword gnuplotKeyword errorscaling noerrorscaling prescale noprescale syn keyword gnuplotKeyword maxiter none limit limit_abs start-lambda script syn keyword gnuplotKeyword lambda-factor " set fontpath syn keyword gnuplotKeyword fontpath " set format syn keyword gnuplotKeyword format " show functions syn keyword gnuplotKeyword functions " set grid syn keyword gnuplotKeyword grid polar layerdefault xtics ytics ztics x2tics syn keyword gnuplotKeyword y2tics cbtics mxtics mytics mztics mx2tics syn keyword gnuplotKeyword my2tics mcbtics xmtics ymtics zmtics x2mtics syn keyword gnuplotKeyword y2mtics cbmtics noxtics noytics noztics nox2tics syn keyword gnuplotKeyword noy2tics nocbtics nomxtics nomytics nomztics syn keyword gnuplotKeyword nomx2tics nomy2tics nomcbtics " set hidden3d syn keyword gnuplotKeyword hidden3d offset trianglepattern undefined syn keyword gnuplotKeyword altdiagonal noaltdiagonal bentover nobentover syn keyword gnuplotKeyword noundefined " set historysize syn keyword gnuplotKeyword historysize " set isosamples syn keyword gnuplotKeyword isosamples " set key syn keyword gnuplotKeyword key on off inside outside at left right center syn keyword gnuplotKeyword top bottom vertical horizontal Left Right syn keyword gnuplotKeyword opaque noopaque reverse noreverse invert maxrows syn keyword gnuplotKeyword noinvert samplen spacing width height autotitle syn keyword gnuplotKeyword noautotitle title enhanced noenhanced font syn keyword gnuplotKeyword textcolor box nobox linetype linewidth maxcols " set label syn keyword gnuplotKeyword label left center right rotate norotate by font syn keyword gnuplotKeyword front back textcolor point nopoint offset boxed syn keyword gnuplotKeyword hypertext " set linetype syn keyword gnuplotKeyword linetype " set link syn keyword gnuplotKeyword link via inverse " set loadpath syn keyword gnuplotKeyword loadpath " set locale syn keyword gnuplotKeyword locale " set logscale syn keyword gnuplotKeyword logscale log " set macros syn keyword gnuplotKeyword macros " set mapping syn keyword gnuplotKeyword mapping cartesian spherical cylindrical " set mouse syn keyword gnuplotKeyword mouse doubleclick nodoubleclick zoomcoordinates syn keyword gnuplotKeyword nozoomcoordinates ruler noruler at polardistance syn keyword gnuplotKeyword nopolardistance deg tan format clipboardformat syn keyword gnuplotKeyword mouseformat labels nolabels zoomjump nozoomjump syn keyword gnuplotKeyword verbose noverbose " set multiplot syn keyword gnuplotKeyword multiplot title font layout rowsfirst downwards syn keyword gnuplotKeyword downwards upwards scale offset " set object syn keyword gnuplotKeyword object behind fillcolor fc fs rectangle ellipse syn keyword gnuplotKeyword circle polygon at center size units xy xx yy to syn keyword gnuplotKeyword from " set offsets syn keyword gnuplotKeyword offsets " set origin syn keyword gnuplotKeyword origin " set output syn keyword gnuplotKeyword output " set parametric syn keyword gnuplotKeyword parametric " show plot syn keyword gnuplotKeyword plot add2history " set pm3d syn keyword gnuplotKeyword hidden3d interpolate scansautomatic scansforward syn keyword gnuplotKeyword scansbackward depthorder flush begin center end syn keyword gnuplotKeyword ftriangles noftriangles clip1in clip4in mean map syn keyword gnuplotKeyword corners2color geomean harmean rms median min max syn keyword gnuplotKeyword c1 c2 c3 c4 pm3d at nohidden3d implicit explicit " set palette syn keyword gnuplotKeyword palette gray color gamma rgbformulae defined syn keyword gnuplotKeyword file functions cubehelix start cycles saturation syn keyword gnuplotKeyword model RGB HSV CMY YIQ XYZ positive negative syn keyword gnuplotKeyword nops_allcF ps_allcF maxcolors float int gradient syn keyword gnuplotKeyword fit2rgbformulae rgbformulae " set pointintervalbox syn keyword gnuplotKeyword pointintervalbox " set pointsize syn keyword gnuplotKeyword pointsize " set polar syn keyword gnuplotKeyword polar " set print syn keyword gnuplotKeyword print append " set psdir syn keyword gnuplotKeyword psdir " set raxis syn keyword gnuplotKeyword raxis rrange rtics " set samples syn keyword gnuplotKeyword samples " set size syn keyword gnuplotKeyword size square nosquare ratio noratio " set style syn keyword gnuplotKeyword style arrow auto back border boxplot syn keyword gnuplotKeyword candlesticks circle clustered columnstacked data syn keyword gnuplotKeyword default ellipse empty fill[ed] financebars syn keyword gnuplotKeyword fraction front function gap graph head[s] syn keyword gnuplotKeyword histogram increment labels lc line linecolor syn keyword gnuplotKeyword linetype linewidth lt lw noborder nofilled syn keyword gnuplotKeyword nohead nooutliers nowedge off opaque outliers syn keyword gnuplotKeyword palette pattern pi pointinterval pointsize syn keyword gnuplotKeyword pointtype ps pt radius range rectangle syn keyword gnuplotKeyword rowstacked screen separation size solid sorted syn keyword gnuplotKeyword textbox transparent units unsorted userstyles syn keyword gnuplotKeyword wedge x x2 xx xy yy " set surface syn keyword gnuplotKeyword surface implicit explicit " set table syn keyword gnuplotKeyword table " set terminal (list of terminals) syn keyword gnuplotKeyword terminal term push pop aed512 aed767 aifm aqua syn keyword gnuplotKeyword be cairo cairolatex canvas cgm context corel syn keyword gnuplotKeyword debug dumb dxf dxy800a eepic emf emxvga epscairo syn keyword gnuplotKeyword epslatex epson_180dpi excl fig ggi gif gpic hpgl syn keyword gnuplotKeyword grass hp2623a hp2648 hp500c hpljii hppj imagen syn keyword gnuplotKeyword jpeg kyo latex linux lua mf mif mp next openstep syn keyword gnuplotKeyword pbm pdf pdfcairo pm png pngcairo postscript syn keyword gnuplotKeyword pslatex pstex pstricks qms qt regis sun svg svga syn keyword gnuplotKeyword tek40 tek410x texdraw tgif tikz tkcanvas tpic syn keyword gnuplotKeyword vgagl vws vx384 windows wx wxt x11 xlib " keywords for 'set terminal' syn keyword gnuplotKeyword color monochrome dashlength dl eps pdf fontscale syn keyword gnuplotKeyword standalone blacktext colortext colourtext header syn keyword gnuplotKeyword noheader mono color solid dashed notransparent syn keyword gnuplotKeyword crop crop background input rounded butt square syn keyword gnuplotKeyword size fsize standalone name jsdir defaultsize syn keyword gnuplotKeyword timestamp notimestamp colour mitered beveled syn keyword gnuplotKeyword round squared palfuncparam blacktext nec_cp6 syn keyword gnuplotKeyword mppoints inlineimages externalimages defaultfont syn keyword gnuplotKeyword aspect feed nofeed rotate small tiny standalone syn keyword gnuplotKeyword oldstyle newstyle level1 leveldefault level3 syn keyword gnuplotKeyword background nobackground solid clip noclip syn keyword gnuplotKeyword colortext colourtext epson_60dpi epson_lx800 syn keyword gnuplotKeyword okidata starc tandy_60dpi dpu414 nec_cp6 draft syn keyword gnuplotKeyword medium large normal landscape portrait big syn keyword gnuplotKeyword inches pointsmax textspecial texthidden syn keyword gnuplotKeyword thickness depth version acceleration giant syn keyword gnuplotKeyword delay loop optimize nooptimize pspoints syn keyword gnuplotKeyword FNT9X17 FNT13X25 interlace nointerlace courier syn keyword gnuplotKeyword originreset nooriginreset gparrows nogparrows syn keyword gnuplotKeyword picenvironment nopicenvironment tightboundingbox syn keyword gnuplotKeyword notightboundingbox charsize gppoints nogppoints syn keyword gnuplotKeyword fontscale textscale fulldoc nofulldoc standalone syn keyword gnuplotKeyword preamble header tikzplot tikzarrows notikzarrows syn keyword gnuplotKeyword cmykimages externalimages noexternalimages syn keyword gnuplotKeyword polyline vectors magnification psnfss nopsnfss syn keyword gnuplotKeyword psnfss-version7 prologues a4paper amstex fname syn keyword gnuplotKeyword fsize server persist widelines interlace syn keyword gnuplotKeyword truecolor notruecolor defaultplex simplex duplex syn keyword gnuplotKeyword nofontfiles adobeglyphnames noadobeglyphnames syn keyword gnuplotKeyword nostandalone metric textrigid animate nopspoints syn keyword gnuplotKeyword hpdj FNT5X9 roman emtex rgbimages bitmap syn keyword gnuplotKeyword nobitmap providevars nointerlace add delete syn keyword gnuplotKeyword auxfile hacktext unit raise palfuncparam syn keyword gnuplotKeyword noauxfile nohacktext nounit noraise ctrl noctrl syn keyword gnuplotKeyword close widget fixed dynamic tek40xx vttek syn keyword gnuplotKeyword kc-tek40xx km-tek40xx bitgraph perltk syn keyword gnuplotKeyword interactive red green blue interpolate mode syn keyword gnuplotKeyword position ctrlq replotonresize position noctrlq syn keyword gnuplotKeyword noreplotonresize " set termoption syn keyword gnuplotKeyword termoption font fontscale solid dashed " set tics syn keyword gnuplotKeyword tics add axis border mirror nomirror in out syn keyword gnuplotKeyword scale rotate norotate by offset nooffset left syn keyword gnuplotKeyword autojustify format font textcolor right center " deprecated set ticslevel syn keyword gnuplotError ticslevel ticscale " set timestamp syn keyword gnuplotKeyword timestamp top bottom offset font " set timefmt syn keyword gnuplotKeyword timefmt " set title syn keyword gnuplotKeyword title offset font textcolor tc " set ranges syn keyword gnuplotKeyword trange urange vrange " show variables syn keyword gnuplotKeyword variables " show version syn keyword gnuplotKeyword version " set view syn keyword gnuplotKeyword view map equal noequal xy xyz " set x2data syn keyword gnuplotKeyword xdata ydata zdata x2data y2data cbdata xdtics syn keyword gnuplotKeyword ydtics zdtics x2dtics y2dtics cbdtics xzeroaxis syn keyword gnuplotKeyword yzeroaxis zzeroaxis x2zeroaxis y2zeroaxis syn keyword gnuplotKeyword cbzeroaxis time geographic " set label syn keyword gnuplotKeyword xlabel ylabel zlabel x2label y2label cblabel syn keyword gnuplotKeyword offset font textcolor by parallel " set range syn keyword gnuplotKeyword xrange yrange zrange x2range y2range cbrange " set xyplane syn keyword gnuplotKeyword xyplane " set zeroaxis " set zero syn keyword gnuplotKeyword zero " set zeroaxis syn keyword gnuplotKeyword zeroaxis " keywords for 'stats' command syn keyword gnuplotKeyword nooutput " keywords for 'test' command syn keyword gnuplotKeyword terminal palette rgb rbg grb gbr brg bgr " ---- Macros ---- " syn region gnuplotMacro start="@" end=" " " ---- Todos ---- " syn keyword gnuplotTodo contained TODO FIXME XXX " ---- Types: gnuplot commands ---- " " I set the commands as Types to distinguish them visually from keywords for the " commands. This comes at the end of the syntax file because some commands " are redundant with keywords. It's probably too much trouble to go and " create special regions for each redundant keyword/command pair, which means " that some keywords (e.g. 'p') will be highlighted as commands. syn keyword gnuplotStatement cd call clear evaluate exit fit help history syn keyword gnuplotStatement load lower pause plot p print pwd quit raise syn keyword gnuplotStatement refresh replot rep reread reset save set show syn keyword gnuplotStatement shell splot spstats stats system test undefine syn keyword gnuplotStatement unset update " ---- Define the default highlighting ---- " " Only when an item doesn't have highlighting yet " ---- Comments ---- " hi def link gnuplotComment Comment " ---- Constants ---- " hi def link gnuplotString String hi def link gnuplotNumber Number hi def link gnuplotFloat Float " ---- Identifiers ---- " hi def link gnuplotIdentifier Identifier " ---- Statements ---- " hi def link gnuplotConditional Conditional hi def link gnuplotRepeat Repeat hi def link gnuplotKeyword Keyword hi def link gnuplotOperator Operator " ---- PreProcs ---- " hi def link gnuplotMacro Macro " ---- Types ---- " hi def link gnuplotStatement Type hi def link gnuplotFunc Identifier " ---- Specials ---- " hi def link gnuplotSpecial Special hi def link gnuplotUnit Special hi def link gnuplotExternal Special " ---- Errors ---- " hi def link gnuplotError Error hi def link gnuplotOctalError Error " ---- Todos ---- " hi def link gnuplotTodo Todo let b:current_syntax = "gnuplot" " vim: ts=8 PK! vim80/syntax/autoit.vimnu[" Vim syntax file " " Language: AutoIt v3 (http://www.autoitscript.com/autoit3/) " Maintainer: Jared Breland " Authored By: Riccardo Casini " Script URL: http://www.vim.org/scripts/script.php?script_id=1239 " ChangeLog: Please visit the script URL for detailed change information " Quit when a syntax file was already loaded. if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim let b:current_syntax = "autoit" " AutoIt is not case dependent syn case ignore " Definitions for AutoIt reserved keywords syn keyword autoitKeyword Default False True syn keyword autoitKeyword Const Dim Global Local ReDim syn keyword autoitKeyword If Else ElseIf Then EndIf syn keyword autoitKeyword Select Switch Case EndSelect EndSwitch syn keyword autoitKeyword Enum For In To Step Next syn keyword autoitKeyword With While EndWith Wend Do Until syn keyword autoitKeyword ContinueCase ContinueLoop ExitLoop Exit " inside script inclusion and global options syn match autoitIncluded display contained "<[^>]*>" syn match autoitInclude display "^\s*#\s*include\>\s*["<]" \ contains=autoitIncluded,autoitString syn match autoitInclude "^\s*#include-once\>" syn match autoitInclude "^\s*#NoTrayIcon\>" syn match autoitInclude "^\s*#RequireAdmin\>" " user-defined functions syn keyword autoitKeyword Func ByRef EndFunc Return OnAutoItStart OnAutoItExit " built-in functions " environment management syn keyword autoitFunction ClipGet ClipPut EnvGet EnvSet EnvUpdate MemGetStats " file, directory, and disk management syn keyword autoitFunction ConsoleRead ConsoleWrite ConsoleWriteError syn keyword autoitFunction DirCopy DirCreate DirGetSize DirMove DirRemove syn keyword autoitFunction DriveGetDrive DriveGetFileSystem DriveGetLabel \ DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet \ DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus syn keyword autoitFunction FileChangeDir FileClose FileCopy FileCreateNTFSLink \ FileCreateShortcut FileDelete FileExists FileFindFirstFile \ FileFindNextFile FileGetAttrib FileGetLongName FileGetShortcut \ FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall \ FileMove FileOpen FileOpenDialog FileRead FileReadLine FileRecycle \ FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib \ FileSetTime FileWrite FileWriteLine syn keyword autoitFunction IniDelete IniRead IniReadSection IniReadSectionNames \ IniRenameSection IniWrite IniWriteSection syn keyword autoitFunction StderrRead StdinWrite StdoutRead " graphic and sound syn keyword autoitFunction Beep PixelChecksum PixelGetColor PixelSearch \ SoundPlay SoundSetWaveVolume " gui reference syn keyword autoitFunction GUICreate GUIDelete GUICtrlGetHandle GUICtrlGetState \ GUICtrlRead GUICtrlRecvMsg GUICtrlSendMsg GUICtrlSendToDummy \ GUIGetCursorInfo GUIGetMsg GUIRegisterMsg GUIStartGroup GUISwitch syn keyword autoitFunction GUICtrlCreateAvi GUICtrlCreateButton \ GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu \ GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit \ GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon \ GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList \ GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu \ GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj \ GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio \ GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem \ GUICtrlCreateTreeView GUICtrlCreateTreeViewItem \ GUICtrlCreateUpDown GUICtrlDelete syn keyword autoitFunction GUICtrlRegisterListViewSort GUICtrlSetBkColor \ GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetFont \ GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent \ GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle \ GUICtrlSetTip syn keyword autoitFunction GUISetBkColor GUISetCoord GUISetCursor GUISetFont \ GUISetHelp GUISetIcon GUISetOnEvent GUISetState " keyboard control syn keyword autoitFunction HotKeySet Send " math syn keyword autoitFunction Abs ACos ASin ATan BitAND BitNOT BitOR BitRotate \ BitShift BitXOR Cos Ceiling Exp Floor Log Mod Random Round Sin Sqrt \ SRandom Tan " message boxes and dialogs syn keyword autoitFunction InputBox MsgBox ProgressOff ProgressOn ProgressSet \ SplashImageOn SplashOff SplashTextOn ToolTip " miscellaneous syn keyword autoitFunction AdlibDisable AdlibEnable AutoItSetOption \ AutoItWinGetTitle AutoItWinSetTitle BlockInput Break Call CDTray \ Execute Opt SetError SetExtended " mouse control syn keyword autoitFunction MouseClick MouseClickDrag MouseDown MouseGetCursor \ MouseGetPos MouseMove MouseUp MouseWheel " network syn keyword autoitFunction FtpSetProxy HttpSetProxy InetGet InetGetSize Ping \ TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIp TCPRecv \ TCPSend TCPShutDown TCPStartup UDPBind UDPCloseSocket UDPOpen UDPRecv \ UDPSend UDPShutdown UDPStartup " obj/com reference syn keyword autoitFunction ObjCreate ObjEvent ObjGet ObjName " process management syn keyword autoitFunction DllCall DllClose DllOpen DllStructCreate \ DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData \ ProcessClose ProcessExists ProcessSetPriority ProcessList ProcessWait \ ProcessWaitClose Run RunAsSet RunWait ShellExecute ShellExecuteWait \ Shutdown " removed from 3.2.0 docs - PluginClose PluginOpen " registry management syn keyword autoitFunction RegDelete RegEnumKey RegEnumVal RegRead RegWrite " string management syn keyword autoitFunction StringAddCR StringFormat StringInStr StringIsAlNum \ StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt \ StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft \ StringLen StringLower StringMid StringRegExp StringRegExpReplace \ StringReplace StringRight StringSplit StringStripCR StringStripWS \ StringTrimLeft StringTrimRight StringUpper " timer and delay syn keyword autoitFunction Sleep TimerInit TimerDiff " tray syn keyword autoitFunction TrayCreateItem TrayCreateMenu TrayItemDelete \ TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent \ TrayItemSetState TrayItemSetText TrayGetMsg TraySetClick TraySetIcon \ TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip " variables and conversions syn keyword autoitFunction Asc Assign Binary Chr Dec Eval Hex HWnd Int IsAdmin \ IsArray IsBinaryString IsBool IsDeclared IsDllStruct IsFloat IsHWnd \ IsInt IsKeyword IsNumber IsObj IsString Number String UBound " window management syn keyword autoitFunction WinActivate WinActive WinClose WinExists WinFlash \ WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos \ WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList \ WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove \ WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait WinWaitActive \ WinWaitClose WinWaitNotActive syn keyword autoitFunction ControlClick ControlCommand ControlDisable \ ControlEnable ControlFocus ControlGetFocus ControlGetHandle \ ControlGetPos ControlGetText ControlHide ControlListView ControlMove \ ControlSend ControlSetText ControlShow StatusBarGetText " user defined functions " array syn keyword autoitFunction _ArrayAdd _ArrayBinarySearch _ArrayCreate \ _ArrayDelete _ArrayDisplay _ArrayInsert _ArrayMax _ArrayMaxIndex \ _ArrayMin _ArrayMinIndex _ArrayPop _ArrayPush _ArrayReverse \ _ArraySearch _ArraySort _ArraySwap _ArrayToClip _ArrayToString \ _ArrayTrim " color syn keyword autoitFunction _ColorgetBlue _ColorGetGreen _ColorGetRed " date syn keyword autoitFunction _DateAdd _DateDayOfWeek _DateDaysInMonth _DateDiff \ _DateIsLeapYear _DateIsValid _DateTimeFormat _DateTimeSplit \ _DateToDayOfWeek _ToDayOfWeekISO _DateToDayValue _DayValueToDate _Now \ _NowCalc _NowCalcDate _NowDate _NowTime _SetDate _SetTime _TicksToTime \ _TimeToTicks _WeekNumberISO " file syn keyword autoitFunction _FileCountLines _FileCreate _FileListToArray \ _FilePrint _FileReadToArray _FileWriteFromArray _FileWriteLog \ _FileWriteToLine _PathFull _PathMake _PathSplit _ReplaceStringInFile \ _TempFile " guicombo syn keyword autoitFunction _GUICtrlComboAddDir _GUICtrlComboAddString \ _GUICtrlComboAutoComplete _GUICtrlComboDeleteString \ _GUICtrlComboFindString _GUICtrlComboGetCount _GUICtrlComboGetCurSel \ _GUICtrlComboGetDroppedControlRect _GUICtrlComboGetDroppedState \ _GUICtrlComboGetDroppedWidth _GUICtrlComboGetEditSel \ _GUICtrlComboGetExtendedUI _GUICtrlComboGetHorizontalExtent \ _GUICtrlComboGetItemHeight _GUICtrlComboGetLBText \ _GUICtrlComboGetLBTextLen _GUICtrlComboGetList _GUICtrlComboGetLocale \ _GUICtrlComboGetMinVisible _GUICtrlComboGetTopIndex \ _GUICtrlComboInitStorage _GUICtrlComboInsertString \ _GUICtrlComboLimitText _GUICtrlComboResetContent \ _GUICtrlComboSelectString _GUICtrlComboSetCurSel \ _GUICtrlComboSetDroppedWidth _GUICtrlComboSetEditSel \ _GUICtrlComboSetExtendedUI _GUICtrlComboSetHorizontalExtent \ _GUICtrlComboSetItemHeight _GUICtrlComboSetMinVisible \ _GUICtrlComboSetTopIndex _GUICtrlComboShowDropDown " guiedit syn keyword autoitFunction _GUICtrlEditCanUndo _GUICtrlEditEmptyUndoBuffer \ _GuiCtrlEditFind _GUICtrlEditGetFirstVisibleLine _GUICtrlEditGetLine \ _GUICtrlEditGetLineCount _GUICtrlEditGetModify _GUICtrlEditGetRect \ _GUICtrlEditGetSel _GUICtrlEditLineFromChar _GUICtrlEditLineIndex \ _GUICtrlEditLineLength _GUICtrlEditLineScroll _GUICtrlEditReplaceSel \ _GUICtrlEditScroll _GUICtrlEditSetModify _GUICtrlEditSetRect \ _GUICtrlEditSetSel _GUICtrlEditUndo " guiipaddress syn keyword autoitFunction _GUICtrlIpAddressClear _GUICtrlIpAddressCreate \ _GUICtrlIpAddressDelete _GUICtrlIpAddressGet _GUICtrlIpAddressIsBlank \ _GUICtrlIpAddressSet _GUICtrlIpAddressSetFocus \ _GUICtrlIpAddressSetFont \ _GUICtrlIpAddressSetRange _GUICtrlIpAddressShowHide " guilist syn keyword autoitFunction _GUICtrlListAddDir _GUICtrlListAddItem \ _GUICtrlListClear \ _GUICtrlListCount _GUICtrlListDeleteItem _GUICtrlListFindString \ _GUICtrlListGetAnchorIndex _GUICtrlListGetCaretIndex \ _GUICtrlListGetHorizontalExtent _GUICtrlListGetInfo \ _GUICtrlListGetItemRect _GUICtrlListGetLocale _GUICtrlListGetSelCount \ _GUICtrlListGetSelItems _GUICtrlListGetSelItemsText \ _GUICtrlListGetSelState _GUICtrlListGetText _GUICtrlListGetTextLen \ _GUICtrlListGetTopIndex _GUICtrlListInsertItem \ _GUICtrlListReplaceString _GUICtrlListSelectedIndex \ _GUICtrlListSelectIndex _GUICtrlListSelectString \ _GUICtrlListSelItemRange _GUICtrlListSelItemRangeEx \ _GUICtrlListSetAnchorIndex _GUICtrlListSetCaretIndex \ _GUICtrlListSetHorizontalExtent _GUICtrlListSetLocale \ _GUICtrlListSetSel _GUICtrlListSetTopIndex _GUICtrlListSort \ _GUICtrlListSwapString " guilistview syn keyword autoitFunction _GUICtrlListViewCopyItems \ _GUICtrlListViewDeleteAllItems _GUICtrlListViewDeleteColumn \ _GUICtrlListViewDeleteItem _GUICtrlListViewDeleteItemsSelected \ _GUICtrlListViewEnsureVisible _GUICtrlListViewFindItem \ _GUICtrlListViewGetBackColor _GUICtrlListViewGetCallBackMask \ _GUICtrlListViewGetCheckedState _GUICtrlListViewGetColumnOrder \ _GUICtrlListViewGetColumnWidth _GUICtrlListViewGetCounterPage \ _GUICtrlListViewGetCurSel _GUICtrlListViewGetExtendedListViewStyle \ _GUICtrlListViewGetHeader _GUICtrlListViewGetHotCursor \ _GUICtrlListViewGetHotItem _GUICtrlListViewGetHoverTime \ _GUICtrlListViewGetItemCount _GUICtrlListViewGetItemText \ _GUICtrlListViewGetItemTextArray _GUICtrlListViewGetNextItem \ _GUICtrlListViewGetSelectedCount _GUICtrlListViewGetSelectedIndices \ _GUICtrlListViewGetSubItemsCount _GUICtrlListViewGetTopIndex \ _GUICtrlListViewGetUnicodeFormat _GUICtrlListViewHideColumn \ _GUICtrlListViewInsertColumn _GUICtrlListViewInsertItem \ _GUICtrlListViewJustifyColumn _GUICtrlListViewScroll \ _GUICtrlListViewSetCheckState _GUICtrlListViewSetColumnHeaderText \ _GUICtrlListViewSetColumnOrder _GUICtrlListViewSetColumnWidth \ _GUICtrlListViewSetHotItem _GUICtrlListViewSetHoverTime \ _GUICtrlListViewSetItemCount _GUICtrlListViewSetItemSelState \ _GUICtrlListViewSetItemText _GUICtrlListViewSort " guimonthcal syn keyword autoitFunction _GUICtrlMonthCalGet1stDOW _GUICtrlMonthCalGetColor \ _GUICtrlMonthCalGetDelta _GUICtrlMonthCalGetMaxSelCount \ _GUICtrlMonthCalGetMaxTodayWidth _GUICtrlMonthCalGetMinReqRect \ _GUICtrlMonthCalSet1stDOW _GUICtrlMonthCalSetColor \ _GUICtrlMonthCalSetDelta _GUICtrlMonthCalSetMaxSelCount " guislider syn keyword autoitFunction _GUICtrlSliderClearTics _GUICtrlSliderGetLineSize \ _GUICtrlSliderGetNumTics _GUICtrlSliderGetPageSize \ _GUICtrlSliderGetPos _GUICtrlSliderGetRangeMax \ _GUICtrlSliderGetRangeMin _GUICtrlSliderSetLineSize \ _GUICtrlSliderSetPageSize _GUICtrlSliderSetPos \ _GUICtrlSliderSetTicFreq " guistatusbar syn keyword autoitFunction _GuiCtrlStatusBarCreate \ _GUICtrlStatusBarCreateProgress _GUICtrlStatusBarDelete \ _GuiCtrlStatusBarGetBorders _GuiCtrlStatusBarGetIcon \ _GuiCtrlStatusBarGetParts _GuiCtrlStatusBarGetRect \ _GuiCtrlStatusBarGetText _GuiCtrlStatusBarGetTextLength \ _GuiCtrlStatusBarGetTip _GuiCtrlStatusBarGetUnicode \ _GUICtrlStatusBarIsSimple _GuiCtrlStatusBarResize \ _GuiCtrlStatusBarSetBKColor _GuiCtrlStatusBarSetIcon \ _GuiCtrlStatusBarSetMinHeight _GUICtrlStatusBarSetParts \ _GuiCtrlStatusBarSetSimple _GuiCtrlStatusBarSetText \ _GuiCtrlStatusBarSetTip _GuiCtrlStatusBarSetUnicode \ _GUICtrlStatusBarShowHide " guitab syn keyword autoitFunction _GUICtrlTabDeleteAllItems _GUICtrlTabDeleteItem \ _GUICtrlTabDeselectAll _GUICtrlTabGetCurFocus _GUICtrlTabGetCurSel \ _GUICtrlTabGetExtendedStyle _GUICtrlTabGetItemCount \ _GUICtrlTabGetItemRect _GUICtrlTabGetRowCount \ _GUICtrlTabGetUnicodeFormat _GUICtrlTabHighlightItem \ _GUICtrlTabSetCurFocus _GUICtrlTabSetCurSel \ _GUICtrlTabSetMinTabWidth _GUICtrlTabSetUnicodeFormat " guitreeview syn keyword autoitFunction _GUICtrlTreeViewDeleteAllItems \ _GUICtrlTreeViewDeleteItem _GUICtrlTreeViewExpand \ _GUICtrlTreeViewGetBkColor _GUICtrlTreeViewGetCount \ _GUICtrlTreeViewGetIndent _GUICtrlTreeViewGetLineColor \ _GUICtrlTreeViewGetParentHandle _GUICtrlTreeViewGetParentID \ _GUICtrlTreeViewGetState _GUICtrlTreeViewGetText \ _GUICtrlTreeViewGetTextColor _GUICtrlTreeViewItemGetTree \ _GUICtrlTreeViewInsertItem _GUICtrlTreeViewSetBkColor \ _GUICtrlTreeViewSetIcon _GUICtrlTreeViewSetIndent \ _GUICtrlTreeViewSetLineColor GUICtrlTreeViewSetState \ _GUICtrlTreeViewSetText _GUICtrlTreeViewSetTextColor \ _GUICtrlTreeViewSort " ie syn keyword autoitFunction _IE_Example _IE_Introduction _IE_VersionInfo \ _IEAction _IEAttach _IEBodyReadHTML _IEBodyReadText _IEBodyWriteHTML \ _IECreate _IECreateEmbedded _IEDocGetObj _IEDocInsertHTML \ _IEDocInsertText _IEDocReadHTML _IEDocWriteHTML \ _IEErrorHandlerDeRegister _IEErrorHandlerRegister _IEErrorNotify \ _IEFormElementCheckboxSelect _IEFormElementGetCollection \ _IEFormElementGetObjByName _IEFormElementGetValue \ _IEFormElementOptionSelect _IEFormElementRadioSelect \ _IEFormElementSetValue _IEFormGetCollection _IEFormGetObjByName \ _IEFormImageClick _IEFormReset _IEFormSubmit _IEFrameGetCollection \ _IEFrameGetObjByName _IEGetObjByName _IEHeadInsertEventScript \ _IEImgClick _IEImgGetCollection _IEIsFrameSet _IELinkClickByIndex \ _IELinkClickByText _IELinkGetCollection _IELoadWait _IELoadWaitTimeout \ _IENavigate _IEPropertyGet _IEPropertySet _IEQuit \ _IETableGetCollection _IETableWriteToArray _IETagNameAllGetCollection \ _IETagNameGetCollection " inet syn keyword autoitFunction _GetIP _INetExplorerCapable _INetGetSource _INetMail \ _INetSmtpMail _TCPIpToName " math syn keyword autoitFunction _Degree _MathCheckDiv _Max _Min _Radian " miscellaneous syn keyword autoitFunction _ChooseColor _ChooseFont _ClipPutFile _Iif \ _IsPressed _MouseTrap _SendMessage _Singleton " process syn keyword autoitFunction _ProcessGetName _ProcessGetPriority _RunDOS " sound syn keyword autoitFunction _SoundClose _SoundLength _SoundOpen _SoundPause \ _SoundPlay _SoundPos _SoundResume _SoundSeek _SoundStatus _SoundStop " sqlite syn keyword autoitFunction _SQLite_Changes _SQLite_Close \ _SQLite_Display2DResult _SQLite_Encode _SQLite_ErrCode _SQLite_ErrMsg \ _SQLite_Escape _SQLite_Exec _SQLite_FetchData _SQLite_FetchNames \ _SQLite_GetTable _SQLite_GetTable2D _SQLite_LastInsertRowID \ _SQLite_LibVersion _SQLite_Open _SQLite_Query _SQLite_QueryFinalize \ _SQLite_QueryReset _SQLite_QuerySingleRow _SQLite_SaveMode \ _SQLite_SetTimeout _SQLite_Shutdown _SQLite_SQLiteExe _SQLite_Startup \ _SQLite_TotalChanges " string syn keyword autoitFunction _HexToString _StringAddComma _StringBetween \ _StringEncrypt _StringInsert _StringProper _StringRepeat \ _StringReverse _StringToHex " visa syn keyword autoitFunction _viClose _viExecCommand _viFindGpib _viGpibBusReset \ _viGTL _viOpen _viSetAttribute _viSetTimeout " read-only macros syn match autoitBuiltin "@AppData\(Common\)\=Dir" syn match autoitBuiltin "@AutoItExe" syn match autoitBuiltin "@AutoItPID" syn match autoitBuiltin "@AutoItVersion" syn match autoitBuiltin "@COM_EventObj" syn match autoitBuiltin "@CommonFilesDir" syn match autoitBuiltin "@Compiled" syn match autoitBuiltin "@ComputerName" syn match autoitBuiltin "@ComSpec" syn match autoitBuiltin "@CR\(LF\)\=" syn match autoitBuiltin "@Desktop\(Common\)\=Dir" syn match autoitBuiltin "@DesktopDepth" syn match autoitBuiltin "@DesktopHeight" syn match autoitBuiltin "@DesktopRefresh" syn match autoitBuiltin "@DesktopWidth" syn match autoitBuiltin "@DocumentsCommonDir" syn match autoitBuiltin "@Error" syn match autoitBuiltin "@ExitCode" syn match autoitBuiltin "@ExitMethod" syn match autoitBuiltin "@Extended" syn match autoitBuiltin "@Favorites\(Common\)\=Dir" syn match autoitBuiltin "@GUI_CtrlId" syn match autoitBuiltin "@GUI_CtrlHandle" syn match autoitBuiltin "@GUI_DragId" syn match autoitBuiltin "@GUI_DragFile" syn match autoitBuiltin "@GUI_DropId" syn match autoitBuiltin "@GUI_WinHandle" syn match autoitBuiltin "@HomeDrive" syn match autoitBuiltin "@HomePath" syn match autoitBuiltin "@HomeShare" syn match autoitBuiltin "@HOUR" syn match autoitBuiltin "@HotKeyPressed" syn match autoitBuiltin "@InetGetActive" syn match autoitBuiltin "@InetGetBytesRead" syn match autoitBuiltin "@IPAddress[1234]" syn match autoitBuiltin "@KBLayout" syn match autoitBuiltin "@LF" syn match autoitBuiltin "@Logon\(DNS\)\=Domain" syn match autoitBuiltin "@LogonServer" syn match autoitBuiltin "@MDAY" syn match autoitBuiltin "@MIN" syn match autoitBuiltin "@MON" syn match autoitBuiltin "@MyDocumentsDir" syn match autoitBuiltin "@NumParams" syn match autoitBuiltin "@OSBuild" syn match autoitBuiltin "@OSLang" syn match autoitBuiltin "@OSServicePack" syn match autoitBuiltin "@OSTYPE" syn match autoitBuiltin "@OSVersion" syn match autoitBuiltin "@ProcessorArch" syn match autoitBuiltin "@ProgramFilesDir" syn match autoitBuiltin "@Programs\(Common\)\=Dir" syn match autoitBuiltin "@ScriptDir" syn match autoitBuiltin "@ScriptFullPath" syn match autoitBuiltin "@ScriptLineNumber" syn match autoitBuiltin "@ScriptName" syn match autoitBuiltin "@SEC" syn match autoitBuiltin "@StartMenu\(Common\)\=Dir" syn match autoitBuiltin "@Startup\(Common\)\=Dir" syn match autoitBuiltin "@SW_DISABLE" syn match autoitBuiltin "@SW_ENABLE" syn match autoitBuiltin "@SW_HIDE" syn match autoitBuiltin "@SW_LOCK" syn match autoitBuiltin "@SW_MAXIMIZE" syn match autoitBuiltin "@SW_MINIMIZE" syn match autoitBuiltin "@SW_RESTORE" syn match autoitBuiltin "@SW_SHOW" syn match autoitBuiltin "@SW_SHOWDEFAULT" syn match autoitBuiltin "@SW_SHOWMAXIMIZED" syn match autoitBuiltin "@SW_SHOWMINIMIZED" syn match autoitBuiltin "@SW_SHOWMINNOACTIVE" syn match autoitBuiltin "@SW_SHOWNA" syn match autoitBuiltin "@SW_SHOWNOACTIVATE" syn match autoitBuiltin "@SW_SHOWNORMAL" syn match autoitBuiltin "@SW_UNLOCK" syn match autoitBuiltin "@SystemDir" syn match autoitBuiltin "@TAB" syn match autoitBuiltin "@TempDir" syn match autoitBuiltin "@TRAY_ID" syn match autoitBuiltin "@TrayIconFlashing" syn match autoitBuiltin "@TrayIconVisible" syn match autoitBuiltin "@UserProfileDir" syn match autoitBuiltin "@UserName" syn match autoitBuiltin "@WDAY" syn match autoitBuiltin "@WindowsDir" syn match autoitBuiltin "@WorkingDir" syn match autoitBuiltin "@YDAY" syn match autoitBuiltin "@YEAR" "comments and commenting-out syn match autoitComment ";.*" "in this way also #ce alone will be highlighted syn match autoitCommDelimiter "^\s*#comments-start\>" syn match autoitCommDelimiter "^\s*#cs\>" syn match autoitCommDelimiter "^\s*#comments-end\>" syn match autoitCommDelimiter "^\s*#ce\>" syn region autoitComment \ matchgroup=autoitCommDelimiter \ start="^\s*#comments-start\>" start="^\s*#cs\>" \ end="^\s*#comments-end\>" end="^\s*#ce\>" "one character operators syn match autoitOperator "[-+*/&^=<>][^-+*/&^=<>]"me=e-1 "two characters operators syn match autoitOperator "==[^=]"me=e-1 syn match autoitOperator "<>" syn match autoitOperator "<=" syn match autoitOperator ">=" syn match autoitOperator "+=" syn match autoitOperator "-=" syn match autoitOperator "*=" syn match autoitOperator "/=" syn match autoitOperator "&=" syn keyword autoitOperator NOT AND OR syn match autoitParen "(\|)" syn match autoitBracket "\[\|\]" syn match autoitComma "," "numbers must come after operator '-' "decimal numbers without a dot syn match autoitNumber "-\=\<\d\+\>" "hexadecimal numbers without a dot syn match autoitNumber "-\=\<0x\x\+\>" "floating point number with dot (inside or at end) syn match autoitNumber "-\=\<\d\+\.\d*\>" "floating point number, starting with a dot syn match autoitNumber "-\=\<\.\d\+\>" "scientific notation numbers without dots syn match autoitNumber "-\=\<\d\+e[-+]\=\d\+\>" "scientific notation numbers with dots syn match autoitNumber "-\=\<\(\(\d\+\.\d*\)\|\(\.\d\+\)\)\(e[-+]\=\d\+\)\=\>" "string constants "we want the escaped quotes marked in red syn match autoitDoubledSingles +''+ contained syn match autoitDoubledDoubles +""+ contained "we want the continuation character marked in red "(also at the top level, not just contained) syn match autoitCont "_$" " send key list - must be defined before autoitStrings syn match autoitSend "{!}" contained syn match autoitSend "{#}" contained syn match autoitSend "{+}" contained syn match autoitSend "{^}" contained syn match autoitSend "{{}" contained syn match autoitSend "{}}" contained syn match autoitSend "{SPACE}" contained syn match autoitSend "{ENTER}" contained syn match autoitSend "{ALT}" contained syn match autoitSend "{BACKSPACE}" contained syn match autoitSend "{BS}" contained syn match autoitSend "{DELETE}" contained syn match autoitSend "{DEL}" contained syn match autoitSend "{UP}" contained syn match autoitSend "{DOWN}" contained syn match autoitSend "{LEFT}" contained syn match autoitSend "{RIGHT}" contained syn match autoitSend "{HOME}" contained syn match autoitSend "{END}" contained syn match autoitSend "{ESCAPE}" contained syn match autoitSend "{ESC}" contained syn match autoitSend "{INSERT}" contained syn match autoitSend "{INS}" contained syn match autoitSend "{PGUP}" contained syn match autoitSend "{PGDN}" contained syn match autoitSend "{F1}" contained syn match autoitSend "{F2}" contained syn match autoitSend "{F3}" contained syn match autoitSend "{F4}" contained syn match autoitSend "{F5}" contained syn match autoitSend "{F6}" contained syn match autoitSend "{F7}" contained syn match autoitSend "{F8}" contained syn match autoitSend "{F9}" contained syn match autoitSend "{F10}" contained syn match autoitSend "{F11}" contained syn match autoitSend "{F12}" contained syn match autoitSend "{TAB}" contained syn match autoitSend "{PRINTSCREEN}" contained syn match autoitSend "{LWIN}" contained syn match autoitSend "{RWIN}" contained syn match autoitSend "{NUMLOCK}" contained syn match autoitSend "{CTRLBREAK}" contained syn match autoitSend "{PAUSE}" contained syn match autoitSend "{CAPSLOCK}" contained syn match autoitSend "{NUMPAD0}" contained syn match autoitSend "{NUMPAD1}" contained syn match autoitSend "{NUMPAD2}" contained syn match autoitSend "{NUMPAD3}" contained syn match autoitSend "{NUMPAD4}" contained syn match autoitSend "{NUMPAD5}" contained syn match autoitSend "{NUMPAD6}" contained syn match autoitSend "{NUMPAD7}" contained syn match autoitSend "{NUMPAD8}" contained syn match autoitSend "{NUMPAD9}" contained syn match autoitSend "{NUMPADMULT}" contained syn match autoitSend "{NUMPADADD}" contained syn match autoitSend "{NUMPADSUB}" contained syn match autoitSend "{NUMPADDIV}" contained syn match autoitSend "{NUMPADDOT}" contained syn match autoitSend "{NUMPADENTER}" contained syn match autoitSend "{APPSKEY}" contained syn match autoitSend "{LALT}" contained syn match autoitSend "{RALT}" contained syn match autoitSend "{LCTRL}" contained syn match autoitSend "{RCTRL}" contained syn match autoitSend "{LSHIFT}" contained syn match autoitSend "{RSHIFT}" contained syn match autoitSend "{SLEEP}" contained syn match autoitSend "{ALTDOWN}" contained syn match autoitSend "{SHIFTDOWN}" contained syn match autoitSend "{CTRLDOWN}" contained syn match autoitSend "{LWINDOWN}" contained syn match autoitSend "{RWINDOWN}" contained syn match autoitSend "{ASC \d\d\d\d}" contained syn match autoitSend "{BROWSER_BACK}" contained syn match autoitSend "{BROWSER_FORWARD}" contained syn match autoitSend "{BROWSER_REFRESH}" contained syn match autoitSend "{BROWSER_STOP}" contained syn match autoitSend "{BROWSER_SEARCH}" contained syn match autoitSend "{BROWSER_FAVORITES}" contained syn match autoitSend "{BROWSER_HOME}" contained syn match autoitSend "{VOLUME_MUTE}" contained syn match autoitSend "{VOLUME_DOWN}" contained syn match autoitSend "{VOLUME_UP}" contained syn match autoitSend "{MEDIA_NEXT}" contained syn match autoitSend "{MEDIA_PREV}" contained syn match autoitSend "{MEDIA_STOP}" contained syn match autoitSend "{MEDIA_PLAY_PAUSE}" contained syn match autoitSend "{LAUNCH_MAIL}" contained syn match autoitSend "{LAUNCH_MEDIA}" contained syn match autoitSend "{LAUNCH_APP1}" contained syn match autoitSend "{LAUNCH_APP2}" contained "this was tricky! "we use an oneline region, instead of a match, in order to use skip= "matchgroup= so start and end quotes are not considered as au3Doubled "contained syn region autoitString oneline contains=autoitSend matchgroup=autoitQuote start=+"+ \ end=+"+ end=+_\n\{1}.*"+ \ contains=autoitCont,autoitDoubledDoubles skip=+""+ syn region autoitString oneline matchgroup=autoitQuote start=+'+ \ end=+'+ end=+_\n\{1}.*'+ \ contains=autoitCont,autoitDoubledSingles skip=+''+ syn match autoitVarSelector "\$" contained display syn match autoitVariable "$\w\+" contains=autoitVarSelector " options - must be defined after autoitStrings syn match autoitOption "\([\"\']\)CaretCoordMode\1" syn match autoitOption "\([\"\']\)ColorMode\1" syn match autoitOption "\([\"\']\)ExpandEnvStrings\1" syn match autoitOption "\([\"\']\)ExpandVarStrings\1" syn match autoitOption "\([\"\']\)FtpBinaryMode\1" syn match autoitOption "\([\"\']\)GUICloseOnEsc\1" syn match autoitOption "\([\"\']\)GUICoordMode\1" syn match autoitOption "\([\"\']\)GUIDataSeparatorChar\1" syn match autoitOption "\([\"\']\)GUIOnEventMode\1" syn match autoitOption "\([\"\']\)GUIResizeMode\1" syn match autoitOption "\([\"\']\)GUIEventCompatibilityMode\1" syn match autoitOption "\([\"\']\)MouseClickDelay\1" syn match autoitOption "\([\"\']\)MouseClickDownDelay\1" syn match autoitOption "\([\"\']\)MouseClickDragDelay\1" syn match autoitOption "\([\"\']\)MouseCoordMode\1" syn match autoitOption "\([\"\']\)MustDeclareVars\1" syn match autoitOption "\([\"\']\)OnExitFunc\1" syn match autoitOption "\([\"\']\)PixelCoordMode\1" syn match autoitOption "\([\"\']\)RunErrorsFatal\1" syn match autoitOption "\([\"\']\)SendAttachMode\1" syn match autoitOption "\([\"\']\)SendCapslockMode\1" syn match autoitOption "\([\"\']\)SendKeyDelay\1" syn match autoitOption "\([\"\']\)SendKeyDownDelay\1" syn match autoitOption "\([\"\']\)TCPTimeout\1" syn match autoitOption "\([\"\']\)TrayAutoPause\1" syn match autoitOption "\([\"\']\)TrayIconDebug\1" syn match autoitOption "\([\"\']\)TrayIconHide\1" syn match autoitOption "\([\"\']\)TrayMenuMode\1" syn match autoitOption "\([\"\']\)TrayOnEventMode\1" syn match autoitOption "\([\"\']\)WinDetectHiddenText\1" syn match autoitOption "\([\"\']\)WinSearchChildren\1" syn match autoitOption "\([\"\']\)WinTextMatchMode\1" syn match autoitOption "\([\"\']\)WinTitleMatchMode\1" syn match autoitOption "\([\"\']\)WinWaitDelay\1" " styles - must be defined after autoitVariable " common syn match autoitStyle "\$WS_BORDER" syn match autoitStyle "\$WS_POPUP" syn match autoitStyle "\$WS_CAPTION" syn match autoitStyle "\$WS_CLIPCHILDREN" syn match autoitStyle "\$WS_CLIPSIBLINGS" syn match autoitStyle "\$WS_DISABLED" syn match autoitStyle "\$WS_DLGFRAME" syn match autoitStyle "\$WS_HSCROLL" syn match autoitStyle "\$WS_MAXIMIZE" syn match autoitStyle "\$WS_MAXIMIZEBOX" syn match autoitStyle "\$WS_MINIMIZE" syn match autoitStyle "\$WS_MINIMIZEBOX" syn match autoitStyle "\$WS_OVERLAPPED" syn match autoitStyle "\$WS_OVERLAPPEDWINDOW" syn match autoitStyle "\$WS_POPUPWINDOW" syn match autoitStyle "\$WS_SIZEBOX" syn match autoitStyle "\$WS_SYSMENU" syn match autoitStyle "\$WS_THICKFRAME" syn match autoitStyle "\$WS_VSCROLL" syn match autoitStyle "\$WS_VISIBLE" syn match autoitStyle "\$WS_CHILD" syn match autoitStyle "\$WS_GROUP" syn match autoitStyle "\$WS_TABSTOP" syn match autoitStyle "\$DS_MODALFRAME" syn match autoitStyle "\$DS_SETFOREGROUND" syn match autoitStyle "\$DS_CONTEXTHELP" " common extended syn match autoitStyle "\$WS_EX_ACCEPTFILES" syn match autoitStyle "\$WS_EX_APPWINDOW" syn match autoitStyle "\$WS_EX_CLIENTEDGE" syn match autoitStyle "\$WS_EX_CONTEXTHELP" syn match autoitStyle "\$WS_EX_DLGMODALFRAME" syn match autoitStyle "\$WS_EX_MDICHILD" syn match autoitStyle "\$WS_EX_OVERLAPPEDWINDOW" syn match autoitStyle "\$WS_EX_STATICEDGE" syn match autoitStyle "\$WS_EX_TOPMOST" syn match autoitStyle "\$WS_EX_TRANSPARENT" syn match autoitStyle "\$WS_EX_TOOLWINDOW" syn match autoitStyle "\$WS_EX_WINDOWEDGE" syn match autoitStyle "\$WS_EX_LAYERED" syn match autoitStyle "\$GUI_WS_EX_PARENTDRAG" " checkbox syn match autoitStyle "\$BS_3STATE" syn match autoitStyle "\$BS_AUTO3STATE" syn match autoitStyle "\$BS_AUTOCHECKBOX" syn match autoitStyle "\$BS_CHECKBOX" syn match autoitStyle "\$BS_LEFT" syn match autoitStyle "\$BS_PUSHLIKE" syn match autoitStyle "\$BS_RIGHT" syn match autoitStyle "\$BS_RIGHTBUTTON" syn match autoitStyle "\$BS_GROUPBOX" syn match autoitStyle "\$BS_AUTORADIOBUTTON" " push button syn match autoitStyle "\$BS_BOTTOM" syn match autoitStyle "\$BS_CENTER" syn match autoitStyle "\$BS_DEFPUSHBUTTON" syn match autoitStyle "\$BS_MULTILINE" syn match autoitStyle "\$BS_TOP" syn match autoitStyle "\$BS_VCENTER" syn match autoitStyle "\$BS_ICON" syn match autoitStyle "\$BS_BITMAP" syn match autoitStyle "\$BS_FLAT" " combo syn match autoitStyle "\$CBS_AUTOHSCROLL" syn match autoitStyle "\$CBS_DISABLENOSCROLL" syn match autoitStyle "\$CBS_DROPDOWN" syn match autoitStyle "\$CBS_DROPDOWNLIST" syn match autoitStyle "\$CBS_LOWERCASE" syn match autoitStyle "\$CBS_NOINTEGRALHEIGHT" syn match autoitStyle "\$CBS_OEMCONVERT" syn match autoitStyle "\$CBS_SIMPLE" syn match autoitStyle "\$CBS_SORT" syn match autoitStyle "\$CBS_UPPERCASE" " list syn match autoitStyle "\$LBS_DISABLENOSCROLL" syn match autoitStyle "\$LBS_NOINTEGRALHEIGHT" syn match autoitStyle "\$LBS_NOSEL" syn match autoitStyle "\$LBS_NOTIFY" syn match autoitStyle "\$LBS_SORT" syn match autoitStyle "\$LBS_STANDARD" syn match autoitStyle "\$LBS_USETABSTOPS" " edit/input syn match autoitStyle "\$ES_AUTOHSCROLL" syn match autoitStyle "\$ES_AUTOVSCROLL" syn match autoitStyle "\$ES_CENTER" syn match autoitStyle "\$ES_LOWERCASE" syn match autoitStyle "\$ES_NOHIDESEL" syn match autoitStyle "\$ES_NUMBER" syn match autoitStyle "\$ES_OEMCONVERT" syn match autoitStyle "\$ES_MULTILINE" syn match autoitStyle "\$ES_PASSWORD" syn match autoitStyle "\$ES_READONLY" syn match autoitStyle "\$ES_RIGHT" syn match autoitStyle "\$ES_UPPERCASE" syn match autoitStyle "\$ES_WANTRETURN" " progress bar syn match autoitStyle "\$PBS_SMOOTH" syn match autoitStyle "\$PBS_VERTICAL" " up-down syn match autoitStyle "\$UDS_ALIGNLEFT" syn match autoitStyle "\$UDS_ALIGNRIGHT" syn match autoitStyle "\$UDS_ARROWKEYS" syn match autoitStyle "\$UDS_HORZ" syn match autoitStyle "\$UDS_NOTHOUSANDS" syn match autoitStyle "\$UDS_WRAP" " label/static syn match autoitStyle "\$SS_BLACKFRAME" syn match autoitStyle "\$SS_BLACKRECT" syn match autoitStyle "\$SS_CENTER" syn match autoitStyle "\$SS_CENTERIMAGE" syn match autoitStyle "\$SS_ETCHEDFRAME" syn match autoitStyle "\$SS_ETCHEDHORZ" syn match autoitStyle "\$SS_ETCHEDVERT" syn match autoitStyle "\$SS_GRAYFRAME" syn match autoitStyle "\$SS_GRAYRECT" syn match autoitStyle "\$SS_LEFT" syn match autoitStyle "\$SS_LEFTNOWORDWRAP" syn match autoitStyle "\$SS_NOPREFIX" syn match autoitStyle "\$SS_NOTIFY" syn match autoitStyle "\$SS_RIGHT" syn match autoitStyle "\$SS_RIGHTJUST" syn match autoitStyle "\$SS_SIMPLE" syn match autoitStyle "\$SS_SUNKEN" syn match autoitStyle "\$SS_WHITEFRAME" syn match autoitStyle "\$SS_WHITERECT" " tab syn match autoitStyle "\$TCS_SCROLLOPPOSITE" syn match autoitStyle "\$TCS_BOTTOM" syn match autoitStyle "\$TCS_RIGHT" syn match autoitStyle "\$TCS_MULTISELECT" syn match autoitStyle "\$TCS_FLATBUTTONS" syn match autoitStyle "\$TCS_FORCEICONLEFT" syn match autoitStyle "\$TCS_FORCELABELLEFT" syn match autoitStyle "\$TCS_HOTTRACK" syn match autoitStyle "\$TCS_VERTICAL" syn match autoitStyle "\$TCS_TABS" syn match autoitStyle "\$TCS_BUTTONS" syn match autoitStyle "\$TCS_SINGLELINE" syn match autoitStyle "\$TCS_MULTILINE" syn match autoitStyle "\$TCS_RIGHTJUSTIFY" syn match autoitStyle "\$TCS_FIXEDWIDTH" syn match autoitStyle "\$TCS_RAGGEDRIGHT" syn match autoitStyle "\$TCS_FOCUSONBUTTONDOWN" syn match autoitStyle "\$TCS_OWNERDRAWFIXED" syn match autoitStyle "\$TCS_TOOLTIPS" syn match autoitStyle "\$TCS_FOCUSNEVER" " avi clip syn match autoitStyle "\$ACS_AUTOPLAY" syn match autoitStyle "\$ACS_CENTER" syn match autoitStyle "\$ACS_TRANSPARENT" syn match autoitStyle "\$ACS_NONTRANSPARENT" " date syn match autoitStyle "\$DTS_UPDOWN" syn match autoitStyle "\$DTS_SHOWNONE" syn match autoitStyle "\$DTS_LONGDATEFORMAT" syn match autoitStyle "\$DTS_TIMEFORMAT" syn match autoitStyle "\$DTS_RIGHTALIGN" syn match autoitStyle "\$DTS_SHORTDATEFORMAT" " monthcal syn match autoitStyle "\$MCS_NOTODAY" syn match autoitStyle "\$MCS_NOTODAYCIRCLE" syn match autoitStyle "\$MCS_WEEKNUMBERS" " treeview syn match autoitStyle "\$TVS_HASBUTTONS" syn match autoitStyle "\$TVS_HASLINES" syn match autoitStyle "\$TVS_LINESATROOT" syn match autoitStyle "\$TVS_DISABLEDRAGDROP" syn match autoitStyle "\$TVS_SHOWSELALWAYS" syn match autoitStyle "\$TVS_RTLREADING" syn match autoitStyle "\$TVS_NOTOOLTIPS" syn match autoitStyle "\$TVS_CHECKBOXES" syn match autoitStyle "\$TVS_TRACKSELECT" syn match autoitStyle "\$TVS_SINGLEEXPAND" syn match autoitStyle "\$TVS_FULLROWSELECT" syn match autoitStyle "\$TVS_NOSCROLL" syn match autoitStyle "\$TVS_NONEVENHEIGHT" " slider syn match autoitStyle "\$TBS_AUTOTICKS" syn match autoitStyle "\$TBS_BOTH" syn match autoitStyle "\$TBS_BOTTOM" syn match autoitStyle "\$TBS_HORZ" syn match autoitStyle "\$TBS_VERT" syn match autoitStyle "\$TBS_NOTHUMB" syn match autoitStyle "\$TBS_NOTICKS" syn match autoitStyle "\$TBS_LEFT" syn match autoitStyle "\$TBS_RIGHT" syn match autoitStyle "\$TBS_TOP" " listview syn match autoitStyle "\$LVS_ICON" syn match autoitStyle "\$LVS_REPORT" syn match autoitStyle "\$LVS_SMALLICON" syn match autoitStyle "\$LVS_LIST" syn match autoitStyle "\$LVS_EDITLABELS" syn match autoitStyle "\$LVS_NOCOLUMNHEADER" syn match autoitStyle "\$LVS_NOSORTHEADER" syn match autoitStyle "\$LVS_SINGLESEL" syn match autoitStyle "\$LVS_SHOWSELALWAYS" syn match autoitStyle "\$LVS_SORTASCENDING" syn match autoitStyle "\$LVS_SORTDESCENDING" " listview extended syn match autoitStyle "\$LVS_EX_FULLROWSELECT" syn match autoitStyle "\$LVS_EX_GRIDLINES" syn match autoitStyle "\$LVS_EX_HEADERDRAGDROP" syn match autoitStyle "\$LVS_EX_TRACKSELECT" syn match autoitStyle "\$LVS_EX_CHECKBOXES" syn match autoitStyle "\$LVS_EX_BORDERSELECT" syn match autoitStyle "\$LVS_EX_DOUBLEBUFFER" syn match autoitStyle "\$LVS_EX_FLATSB" syn match autoitStyle "\$LVS_EX_MULTIWORKAREAS" syn match autoitStyle "\$LVS_EX_SNAPTOGRID" syn match autoitStyle "\$LVS_EX_SUBITEMIMAGES" " constants - must be defined after autoitVariable - excludes styles " constants - autoit options syn match autoitConst "\$OPT_COORDSRELATIVE" syn match autoitConst "\$OPT_COORDSABSOLUTE" syn match autoitConst "\$OPT_COORDSCLIENT" syn match autoitConst "\$OPT_ERRORSILENT" syn match autoitConst "\$OPT_ERRORFATAL" syn match autoitConst "\$OPT_CAPSNOSTORE" syn match autoitConst "\$OPT_CAPSSTORE" syn match autoitConst "\$OPT_MATCHSTART" syn match autoitConst "\$OPT_MATCHANY" syn match autoitConst "\$OPT_MATCHEXACT" syn match autoitConst "\$OPT_MATCHADVANCED" " constants - file syn match autoitConst "\$FC_NOOVERWRITE" syn match autoitConst "\$FC_OVERWRITE" syn match autoitConst "\$FT_MODIFIED" syn match autoitConst "\$FT_CREATED" syn match autoitConst "\$FT_ACCESSED" syn match autoitConst "\$FO_READ" syn match autoitConst "\$FO_APPEND" syn match autoitConst "\$FO_OVERWRITE" syn match autoitConst "\$EOF" syn match autoitConst "\$FD_FILEMUSTEXIST" syn match autoitConst "\$FD_PATHMUSTEXIST" syn match autoitConst "\$FD_MULTISELECT" syn match autoitConst "\$FD_PROMPTCREATENEW" syn match autoitConst "\$FD_PROMPTOVERWRITE" " constants - keyboard syn match autoitConst "\$KB_SENDSPECIAL" syn match autoitConst "\$KB_SENDRAW" syn match autoitConst "\$KB_CAPSOFF" syn match autoitConst "\$KB_CAPSON" " constants - message box syn match autoitConst "\$MB_OK" syn match autoitConst "\$MB_OKCANCEL" syn match autoitConst "\$MB_ABORTRETRYIGNORE" syn match autoitConst "\$MB_YESNOCANCEL" syn match autoitConst "\$MB_YESNO" syn match autoitConst "\$MB_RETRYCANCEL" syn match autoitConst "\$MB_ICONHAND" syn match autoitConst "\$MB_ICONQUESTION" syn match autoitConst "\$MB_ICONEXCLAMATION" syn match autoitConst "\$MB_ICONASTERISK" syn match autoitConst "\$MB_DEFBUTTON1" syn match autoitConst "\$MB_DEFBUTTON2" syn match autoitConst "\$MB_DEFBUTTON3" syn match autoitConst "\$MB_APPLMODAL" syn match autoitConst "\$MB_SYSTEMMODAL" syn match autoitConst "\$MB_TASKMODAL" syn match autoitConst "\$MB_TOPMOST" syn match autoitConst "\$MB_RIGHTJUSTIFIED" syn match autoitConst "\$IDTIMEOUT" syn match autoitConst "\$IDOK" syn match autoitConst "\$IDCANCEL" syn match autoitConst "\$IDABORT" syn match autoitConst "\$IDRETRY" syn match autoitConst "\$IDIGNORE" syn match autoitConst "\$IDYES" syn match autoitConst "\$IDNO" syn match autoitConst "\$IDTRYAGAIN" syn match autoitConst "\$IDCONTINUE" " constants - progress and splash syn match autoitConst "\$DLG_NOTITLE" syn match autoitConst "\$DLG_NOTONTOP" syn match autoitConst "\$DLG_TEXTLEFT" syn match autoitConst "\$DLG_TEXTRIGHT" syn match autoitConst "\$DLG_MOVEABLE" syn match autoitConst "\$DLG_TEXTVCENTER" " constants - tray tip syn match autoitConst "\$TIP_ICONNONE" syn match autoitConst "\$TIP_ICONASTERISK" syn match autoitConst "\$TIP_ICONEXCLAMATION" syn match autoitConst "\$TIP_ICONHAND" syn match autoitConst "\$TIP_NOSOUND" " constants - mouse syn match autoitConst "\$IDC_UNKNOWN" syn match autoitConst "\$IDC_APPSTARTING" syn match autoitConst "\$IDC_ARROW" syn match autoitConst "\$IDC_CROSS" syn match autoitConst "\$IDC_HELP" syn match autoitConst "\$IDC_IBEAM" syn match autoitConst "\$IDC_ICON" syn match autoitConst "\$IDC_NO" syn match autoitConst "\$IDC_SIZE" syn match autoitConst "\$IDC_SIZEALL" syn match autoitConst "\$IDC_SIZENESW" syn match autoitConst "\$IDC_SIZENS" syn match autoitConst "\$IDC_SIZENWSE" syn match autoitConst "\$IDC_SIZEWE" syn match autoitConst "\$IDC_UPARROW" syn match autoitConst "\$IDC_WAIT" " constants - process syn match autoitConst "\$SD_LOGOFF" syn match autoitConst "\$SD_SHUTDOWN" syn match autoitConst "\$SD_REBOOT" syn match autoitConst "\$SD_FORCE" syn match autoitConst "\$SD_POWERDOWN" " constants - string syn match autoitConst "\$STR_NOCASESENSE" syn match autoitConst "\$STR_CASESENSE" syn match autoitConst "\STR_STRIPLEADING" syn match autoitConst "\$STR_STRIPTRAILING" syn match autoitConst "\$STR_STRIPSPACES" syn match autoitConst "\$STR_STRIPALL" " constants - tray syn match autoitConst "\$TRAY_ITEM_EXIT" syn match autoitConst "\$TRAY_ITEM_PAUSE" syn match autoitConst "\$TRAY_ITEM_FIRST" syn match autoitConst "\$TRAY_CHECKED" syn match autoitConst "\$TRAY_UNCHECKED" syn match autoitConst "\$TRAY_ENABLE" syn match autoitConst "\$TRAY_DISABLE" syn match autoitConst "\$TRAY_FOCUS" syn match autoitConst "\$TRAY_DEFAULT" syn match autoitConst "\$TRAY_EVENT_SHOWICON" syn match autoitConst "\$TRAY_EVENT_HIDEICON" syn match autoitConst "\$TRAY_EVENT_FLASHICON" syn match autoitConst "\$TRAY_EVENT_NOFLASHICON" syn match autoitConst "\$TRAY_EVENT_PRIMARYDOWN" syn match autoitConst "\$TRAY_EVENT_PRIMARYUP" syn match autoitConst "\$TRAY_EVENT_SECONDARYDOWN" syn match autoitConst "\$TRAY_EVENT_SECONDARYUP" syn match autoitConst "\$TRAY_EVENT_MOUSEOVER" syn match autoitConst "\$TRAY_EVENT_MOUSEOUT" syn match autoitConst "\$TRAY_EVENT_PRIMARYDOUBLE" syn match autoitConst "\$TRAY_EVENT_SECONDARYDOUBLE" " constants - stdio syn match autoitConst "\$STDIN_CHILD" syn match autoitConst "\$STDOUT_CHILD" syn match autoitConst "\$STDERR_CHILD" " constants - color syn match autoitConst "\$COLOR_BLACK" syn match autoitConst "\$COLOR_SILVER" syn match autoitConst "\$COLOR_GRAY" syn match autoitConst "\$COLOR_WHITE" syn match autoitConst "\$COLOR_MAROON" syn match autoitConst "\$COLOR_RED" syn match autoitConst "\$COLOR_PURPLE" syn match autoitConst "\$COLOR_FUCHSIA" syn match autoitConst "\$COLOR_GREEN" syn match autoitConst "\$COLOR_LIME" syn match autoitConst "\$COLOR_OLIVE" syn match autoitConst "\$COLOR_YELLOW" syn match autoitConst "\$COLOR_NAVY" syn match autoitConst "\$COLOR_BLUE" syn match autoitConst "\$COLOR_TEAL" syn match autoitConst "\$COLOR_AQUA" " constants - reg value type syn match autoitConst "\$REG_NONE" syn match autoitConst "\$REG_SZ" syn match autoitConst "\$REG_EXPAND_SZ" syn match autoitConst "\$REG_BINARY" syn match autoitConst "\$REG_DWORD" syn match autoitConst "\$REG_DWORD_BIG_ENDIAN" syn match autoitConst "\$REG_LINK" syn match autoitConst "\$REG_MULTI_SZ" syn match autoitConst "\$REG_RESOURCE_LIST" syn match autoitConst "\$REG_FULL_RESOURCE_DESCRIPTOR" syn match autoitConst "\$REG_RESOURCE_REQUIREMENTS_LIST" " guiconstants - events and messages syn match autoitConst "\$GUI_EVENT_CLOSE" syn match autoitConst "\$GUI_EVENT_MINIMIZE" syn match autoitConst "\$GUI_EVENT_RESTORE" syn match autoitConst "\$GUI_EVENT_MAXIMIZE" syn match autoitConst "\$GUI_EVENT_PRIMARYDOWN" syn match autoitConst "\$GUI_EVENT_PRIMARYUP" syn match autoitConst "\$GUI_EVENT_SECONDARYDOWN" syn match autoitConst "\$GUI_EVENT_SECONDARYUP" syn match autoitConst "\$GUI_EVENT_MOUSEMOVE" syn match autoitConst "\$GUI_EVENT_RESIZED" syn match autoitConst "\$GUI_EVENT_DROPPED" syn match autoitConst "\$GUI_RUNDEFMSG" " guiconstants - state syn match autoitConst "\$GUI_AVISTOP" syn match autoitConst "\$GUI_AVISTART" syn match autoitConst "\$GUI_AVICLOSE" syn match autoitConst "\$GUI_CHECKED" syn match autoitConst "\$GUI_INDETERMINATE" syn match autoitConst "\$GUI_UNCHECKED" syn match autoitConst "\$GUI_DROPACCEPTED" syn match autoitConst "\$GUI_DROPNOTACCEPTED" syn match autoitConst "\$GUI_ACCEPTFILES" syn match autoitConst "\$GUI_SHOW" syn match autoitConst "\$GUI_HIDE" syn match autoitConst "\$GUI_ENABLE" syn match autoitConst "\$GUI_DISABLE" syn match autoitConst "\$GUI_FOCUS" syn match autoitConst "\$GUI_NOFOCUS" syn match autoitConst "\$GUI_DEFBUTTON" syn match autoitConst "\$GUI_EXPAND" syn match autoitConst "\$GUI_ONTOP" " guiconstants - font syn match autoitConst "\$GUI_FONTITALIC" syn match autoitConst "\$GUI_FONTUNDER" syn match autoitConst "\$GUI_FONTSTRIKE" " guiconstants - resizing syn match autoitConst "\$GUI_DOCKAUTO" syn match autoitConst "\$GUI_DOCKLEFT" syn match autoitConst "\$GUI_DOCKRIGHT" syn match autoitConst "\$GUI_DOCKHCENTER" syn match autoitConst "\$GUI_DOCKTOP" syn match autoitConst "\$GUI_DOCKBOTTOM" syn match autoitConst "\$GUI_DOCKVCENTER" syn match autoitConst "\$GUI_DOCKWIDTH" syn match autoitConst "\$GUI_DOCKHEIGHT" syn match autoitConst "\$GUI_DOCKSIZE" syn match autoitConst "\$GUI_DOCKMENUBAR" syn match autoitConst "\$GUI_DOCKSTATEBAR" syn match autoitConst "\$GUI_DOCKALL" syn match autoitConst "\$GUI_DOCKBORDERS" " guiconstants - graphic syn match autoitConst "\$GUI_GR_CLOSE" syn match autoitConst "\$GUI_GR_LINE" syn match autoitConst "\$GUI_GR_BEZIER" syn match autoitConst "\$GUI_GR_MOVE" syn match autoitConst "\$GUI_GR_COLOR" syn match autoitConst "\$GUI_GR_RECT" syn match autoitConst "\$GUI_GR_ELLIPSE" syn match autoitConst "\$GUI_GR_PIE" syn match autoitConst "\$GUI_GR_DOT" syn match autoitConst "\$GUI_GR_PIXEL" syn match autoitConst "\$GUI_GR_HINT" syn match autoitConst "\$GUI_GR_REFRESH" syn match autoitConst "\$GUI_GR_PENSIZE" syn match autoitConst "\$GUI_GR_NOBKCOLOR" " guiconstants - control default styles syn match autoitConst "\$GUI_SS_DEFAULT_AVI" syn match autoitConst "\$GUI_SS_DEFAULT_BUTTON" syn match autoitConst "\$GUI_SS_DEFAULT_CHECKBOX" syn match autoitConst "\$GUI_SS_DEFAULT_COMBO" syn match autoitConst "\$GUI_SS_DEFAULT_DATE" syn match autoitConst "\$GUI_SS_DEFAULT_EDIT" syn match autoitConst "\$GUI_SS_DEFAULT_GRAPHIC" syn match autoitConst "\$GUI_SS_DEFAULT_GROUP" syn match autoitConst "\$GUI_SS_DEFAULT_ICON" syn match autoitConst "\$GUI_SS_DEFAULT_INPUT" syn match autoitConst "\$GUI_SS_DEFAULT_LABEL" syn match autoitConst "\$GUI_SS_DEFAULT_LIST" syn match autoitConst "\$GUI_SS_DEFAULT_LISTVIEW" syn match autoitConst "\$GUI_SS_DEFAULT_MONTHCAL" syn match autoitConst "\$GUI_SS_DEFAULT_PIC" syn match autoitConst "\$GUI_SS_DEFAULT_PROGRESS" syn match autoitConst "\$GUI_SS_DEFAULT_RADIO" syn match autoitConst "\$GUI_SS_DEFAULT_SLIDER" syn match autoitConst "\$GUI_SS_DEFAULT_TAB" syn match autoitConst "\$GUI_SS_DEFAULT_TREEVIEW" syn match autoitConst "\$GUI_SS_DEFAULT_UPDOWN" syn match autoitConst "\$GUI_SS_DEFAULT_GUI" " guiconstants - background color special flags syn match autoitConst "\$GUI_BKCOLOR_DEFAULT" syn match autoitConst "\$GUI_BKCOLOR_LV_ALTERNATE" syn match autoitConst "\$GUI_BKCOLOR_TRANSPARENT" " registry constants syn match autoitConst "\([\"\']\)REG_BINARY\1" syn match autoitConst "\([\"\']\)REG_SZ\1" syn match autoitConst "\([\"\']\)REG_MULTI_SZ\1" syn match autoitConst "\([\"\']\)REG_EXPAND_SZ\1" syn match autoitConst "\([\"\']\)REG_DWORD\1" " Define the default highlighting. " Unused colors: Underlined, Ignore, Error, Todo hi def link autoitFunction Statement " yellow/yellow hi def link autoitKeyword Statement hi def link autoitOperator Operator hi def link autoitVarSelector Operator hi def link autoitComment Comment " cyan/blue hi def link autoitParen Comment hi def link autoitComma Comment hi def link autoitBracket Comment hi def link autoitNumber Constant " magenta/red hi def link autoitString Constant hi def link autoitQuote Constant hi def link autoitIncluded Constant hi def link autoitCont Special " red/orange hi def link autoitDoubledSingles Special hi def link autoitDoubledDoubles Special hi def link autoitCommDelimiter PreProc " blue/magenta hi def link autoitInclude PreProc hi def link autoitVariable Identifier " cyan/cyan hi def link autoitBuiltin Type " green/green hi def link autoitOption Type hi def link autoitStyle Type hi def link autoitConst Type hi def link autoitSend Type syn sync minlines=50 let &cpo = s:keepcpo unlet s:keepcpo PK!ۢvim80/syntax/edif.vimnu[" Vim syntax file " Language: EDIF (Electronic Design Interchange Format) " Maintainer: Artem Zankovich " Last Change: Oct 14, 2002 " " Supported standarts are: " ANSI/EIA Standard 548-1988 (EDIF Version 2 0 0) " IEC 61690-1 (EDIF Version 3 0 0) " IEC 61690-2 (EDIF Version 4 0 0) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=48-57,-,+,A-Z,a-z,_,& syn region edifList matchgroup=Delimiter start="(" end=")" contains=edifList,edifKeyword,edifString,edifNumber " Strings syn match edifInStringError /%/ contained syn match edifInString /%\s*\d\+\s*%/ contained syn region edifString start=/"/ end=/"/ contains=edifInString,edifInStringError contained " Numbers syn match edifNumber "\<[-+]\=[0-9]\+\>" " Keywords syn match edifKeyword "(\@<=\s*[a-zA-Z&][a-zA-Z_0-9]*\>" contained syn match edifError ")" " synchronization syntax sync fromstart " Define the default highlighting. hi def link edifInString SpecialChar hi def link edifKeyword Keyword hi def link edifNumber Number hi def link edifInStringError edifError hi def link edifError Error hi def link edifString String let b:current_syntax = "edif" PK!D/+  vim80/syntax/tt2js.vimnu[" Language: TT2 embedded with Javascript " Maintainer: Andy Lester " Author: Yates, Peter " Homepage: http://github.com/vim-perl/vim-perl " Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Last Change: 2013-07-21 if exists("b:current_syntax") finish endif runtime! syntax/javascript.vim unlet b:current_syntax runtime! syntax/tt2.vim unlet b:current_syntax syn cluster javascriptPreProc add=@tt2_top_cluster let b:current_syntax = "tt2js" PK!$ouvim80/syntax/gedcom.vimnu[" Vim syntax file " Language: Gedcom " Maintainer: Paul Johnson (pjcj@transeda.com) " Version 1.059 - 23rd December 1999 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syntax case match syntax keyword gedcom_record ABBR ADDR ADOP ADR1 ADR2 AFN AGE AGNC ALIA ANCE syntax keyword gedcom_record ANCI ANUL ASSO AUTH BAPL BAPM BARM BASM BIRT BLES syntax keyword gedcom_record BLOB BURI CALN CAST CAUS CENS CHAN CHAR CHIL CHR syntax keyword gedcom_record CHRA CITY CONC CONF CONL CONT COPR CORP CREM CTRY syntax keyword gedcom_record DATA DEAT DESC DESI DEST DIV DIVF DSCR EDUC EMIG syntax keyword gedcom_record ENDL ENGA EVEN FAM FAMC FAMF FAMS FCOM FILE FORM syntax keyword gedcom_record GEDC GIVN GRAD HEAD HUSB IDNO IMMI INDI LANG MARB syntax keyword gedcom_record MARC MARL MARR MARS MEDI NATI NATU NCHI NICK NMR syntax keyword gedcom_record NOTE NPFX NSFX OBJE OCCU ORDI ORDN PAGE PEDI PHON syntax keyword gedcom_record PLAC POST PROB PROP PUBL QUAY REFN RELA RELI REPO syntax keyword gedcom_record RESI RESN RETI RFN RIN ROLE SEX SLGC SLGS SOUR syntax keyword gedcom_record SPFX SSN STAE STAT SUBM SUBN SURN TEMP TEXT TIME syntax keyword gedcom_record TITL TRLR TYPE VERS WIFE WILL syntax keyword gedcom_record DATE nextgroup=gedcom_date syntax keyword gedcom_record NAME nextgroup=gedcom_name syntax case ignore syntax region gedcom_id start="@" end="@" oneline contains=gedcom_ii, gedcom_in syntax match gedcom_ii "\I\+" contained nextgroup=gedcom_in syntax match gedcom_in "\d\+" contained syntax region gedcom_name start="" end="$" skipwhite oneline contains=gedcom_cname, gedcom_surname contained syntax match gedcom_cname "\i\+" contained syntax match gedcom_surname "/\(\i\|\s\)*/" contained syntax match gedcom_date "\d\{1,2}\s\+\(jan\|feb\|mar\|apr\|may\|jun\|jul\|aug\|sep\|oct\|nov\|dec\)\s\+\d\+" syntax match gedcom_date ".*" contained " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link gedcom_record Statement hi def link gedcom_id Comment hi def link gedcom_ii PreProc hi def link gedcom_in Type hi def link gedcom_name PreProc hi def link gedcom_cname Type hi def link gedcom_surname Identifier hi def link gedcom_date Constant let b:current_syntax = "gedcom" PK! mvim80/syntax/htmldjango.vimnu[" Vim syntax file " Language: Django HTML template " Maintainer: Dave Hodder " Last Change: 2014 Jul 13 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'html' endif runtime! syntax/django.vim runtime! syntax/html.vim unlet b:current_syntax syn cluster djangoBlocks add=djangoTagBlock,djangoVarBlock,djangoComment,djangoComBlock syn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument,djangoTagError display containedin=ALLBUT,@djangoBlocks syn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument,djangoVarError display containedin=ALLBUT,@djangoBlocks syn region djangoComment start="{%\s*comment\(\s\+.\{-}\)\?%}" end="{%\s*endcomment\s*%}" contains=djangoTodo containedin=ALLBUT,@djangoBlocks syn region djangoComBlock start="{#" end="#}" contains=djangoTodo containedin=ALLBUT,@djangoBlocks let b:current_syntax = "htmldjango" PK!IE**vim80/syntax/dtrace.vimnu[" DTrace D script syntax file. To avoid confusion with the D programming " language, I call this script dtrace.vim instead of d.vim. " Language: D script as described in "Solaris Dynamic Tracing Guide", " http://docs.sun.com/app/docs/doc/817-6223 " Version: 1.5 " Last Change: 2008/04/05 " Maintainer: Nicolas Weber " dtrace lexer and parser are at " http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libdtrace/common/dt_lex.l " http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libdtrace/common/dt_grammar.y " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Read the C syntax to start with runtime! syntax/c.vim unlet b:current_syntax syn clear cCommentL " dtrace doesn't support // style comments " First line may start with #!, also make sure a '-s' flag is somewhere in " that line. syn match dtraceComment "\%^#!.*-s.*" " Probe descriptors need explicit matches, so that keywords in probe " descriptors don't show up as errors. Note that this regex detects probes " as "something with three ':' in it". This works in practice, but it's not " really correct. Also add special case code for BEGIN, END and ERROR, since " they are common. " Be careful not to detect '/*some:::node*/\n/**/' as probe, as it's " commented out. " XXX: This allows a probe description to end with ',', even if it's not " followed by another probe. " XXX: This doesn't work if followed by a comment. let s:oneProbe = '\%(BEGIN\|END\|ERROR\|\S\{-}:\S\{-}:\S\{-}:\S\{-}\)\_s*' exec 'syn match dtraceProbe "'.s:oneProbe.'\%(,\_s*'.s:oneProbe.'\)*\ze\_s\%({\|\/[^*]\|\%$\)"' " Note: We have to be careful to not make this match /* */ comments. " Also be careful not to eat `c = a / b; b = a / 2;`. We use the same " technique as the dtrace lexer: a predicate has to be followed by {, ;, or " EOF. Also note that dtrace doesn't allow an empty predicate // (we do). " This regex doesn't allow a divison operator in the predicate. " Make sure that this matches the empty predicate as well. " XXX: This doesn't work if followed by a comment. syn match dtracePredicate "/\*\@!\_[^/]*/\ze\_s*\%({\|;\|\%$\)" "contains=ALLBUT,dtraceOption " this lets the region contain too much stuff " Pragmas. " dtrace seems not to support whitespace before or after the '='. dtrace " supports only one option per #pragma, and no continuations of #pragma over " several lines with '\'. " Note that dtrace treats units (Hz etc) as case-insenstive, we allow only " sane unit capitalization in this script (ie 'ns', 'us', 'ms', 's' have to be " small, Hertz can be 'Hz' or 'hz') " XXX: "cpu" is always highlighted as builtin var, not as option " auto or manual: bufresize syn match dtraceOption contained "bufresize=\%(auto\|manual\)\s*$" " scalar: cpu jstackframes jstackstrsize nspec stackframes stackindent ustackframes syn match dtraceOption contained "\%(cpu\|jstackframes\|jstackstrsize\|nspec\|stackframes\|stackindent\|ustackframes\)=\d\+\s*$" " size: aggsize bufsize dynvarsize specsize strsize " size defaults to something if no unit is given (ie., having no unit is ok) syn match dtraceOption contained "\%(aggsize\|bufsize\|dynvarsize\|specsize\|strsize\)=\d\+\%(k\|m\|g\|t\|K\|M\|G\|T\)\=\s*$" " time: aggrate cleanrate statusrate switchrate " time defaults to hz if no unit is given syn match dtraceOption contained "\%(aggrate\|cleanrate\|statusrate\|switchrate\)=\d\+\%(hz\|Hz\|ns\|us\|ms\|s\)\=\s*$" " No type: defaultargs destructive flowindent grabanon quiet rawbytes syn match dtraceOption contained "\%(defaultargs\|destructive\|flowindent\|grabanon\|quiet\|rawbytes\)\s*$" " Turn reserved but unspecified keywords into errors syn keyword dtraceReservedKeyword auto break case continue counter default do syn keyword dtraceReservedKeyword else for goto if import probe provider syn keyword dtraceReservedKeyword register restrict return static switch while " Add dtrace-specific stuff syn keyword dtraceOperator sizeof offsetof stringof xlate syn keyword dtraceStatement self inline xlate this translator " Builtin variables syn keyword dtraceIdentifier arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 syn keyword dtraceIdentifier args caller chip cpu curcpu curlwpsinfo curpsinfo syn keyword dtraceIdentifier curthread cwd epid errno execname gid id ipl lgrp syn keyword dtraceIdentifier pid ppid probefunc probemod probename probeprov syn keyword dtraceIdentifier pset root stackdepth tid timestamp uid uregs syn keyword dtraceIdentifier vtimestamp walltimestamp syn keyword dtraceIdentifier ustackdepth " Macro Variables syn match dtraceConstant "$[0-9]\+" syn match dtraceConstant "$\(egid\|euid\|gid\|pgid\|ppid\)" syn match dtraceConstant "$\(projid\|sid\|target\|taskid\|uid\)" " Data Recording Actions syn keyword dtraceFunction trace tracemem printf printa stack ustack jstack " Process Destructive Actions syn keyword dtraceFunction stop raise copyout copyoutstr system " Kernel Destructive Actions syn keyword dtraceFunction breakpoint panic chill " Special Actions syn keyword dtraceFunction speculate commit discard exit " Subroutines syn keyword dtraceFunction alloca basename bcopy cleanpath copyin copyinstr syn keyword dtraceFunction copyinto dirname msgdsize msgsize mutex_owned syn keyword dtraceFunction mutex_owner mutex_type_adaptive progenyof syn keyword dtraceFunction rand rw_iswriter rw_write_held speculation syn keyword dtraceFunction strjoin strlen " Aggregating Functions syn keyword dtraceAggregatingFunction count sum avg min max lquantize quantize syn keyword dtraceType int8_t int16_t int32_t int64_t intptr_t syn keyword dtraceType uint8_t uint16_t uint32_t uint64_t uintptr_t syn keyword dtraceType string syn keyword dtraceType pid_t id_t " Define the default highlighting. " We use `hi def link` directly, this requires 5.8. hi def link dtraceReservedKeyword Error hi def link dtracePredicate String hi def link dtraceProbe dtraceStatement hi def link dtraceStatement Statement hi def link dtraceConstant Constant hi def link dtraceIdentifier Identifier hi def link dtraceAggregatingFunction dtraceFunction hi def link dtraceFunction Function hi def link dtraceType Type hi def link dtraceOperator Operator hi def link dtraceComment Comment hi def link dtraceNumber Number hi def link dtraceOption Identifier let b:current_syntax = "dtrace" PK!"+H+Hvim80/syntax/sicad.vimnu[" Vim syntax file " Language: SiCAD (procedure language) " Maintainer: Zsolt Branyiczky " Last Change: 2003 May 11 " URL: http://lmark.mgx.hu:81/download/vim/sicad.vim " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " use SQL highlighting after 'sql' command syn include @SQL syntax/sql.vim unlet b:current_syntax " spaces are used in (auto)indents since sicad hates tabulator characters setlocal expandtab " ignore case syn case ignore " most important commands - not listed by ausku syn keyword sicadStatement define syn keyword sicadStatement dialog syn keyword sicadStatement do syn keyword sicadStatement dop contained syn keyword sicadStatement end syn keyword sicadStatement enddo syn keyword sicadStatement endp syn keyword sicadStatement erroff syn keyword sicadStatement erron syn keyword sicadStatement exitp syn keyword sicadGoto goto contained syn keyword sicadStatement hh syn keyword sicadStatement if syn keyword sicadStatement in syn keyword sicadStatement msgsup syn keyword sicadStatement out syn keyword sicadStatement padd syn keyword sicadStatement parbeg syn keyword sicadStatement parend syn keyword sicadStatement pdoc syn keyword sicadStatement pprot syn keyword sicadStatement procd syn keyword sicadStatement procn syn keyword sicadStatement psav syn keyword sicadStatement psel syn keyword sicadStatement psymb syn keyword sicadStatement ptrace syn keyword sicadStatement ptstat syn keyword sicadStatement set syn keyword sicadStatement sql contained syn keyword sicadStatement step syn keyword sicadStatement sys syn keyword sicadStatement ww " functions syn match sicadStatement "\"me=s+1 syn match sicadStatement "\"me=s+1 " logical operators syn match sicadOperator "\.and\." syn match sicadOperator "\.ne\." syn match sicadOperator "\.not\." syn match sicadOperator "\.eq\." syn match sicadOperator "\.ge\." syn match sicadOperator "\.gt\." syn match sicadOperator "\.le\." syn match sicadOperator "\.lt\." syn match sicadOperator "\.or\." syn match sicadOperator "\.eqv\." syn match sicadOperator "\.neqv\." " variable name syn match sicadIdentifier "%g\=[irpt][0-9]\{1,2}\>" syn match sicadIdentifier "%g\=l[0-9]\>" syn match sicadIdentifier "%g\=[irptl]("me=e-1 syn match sicadIdentifier "%error\>" syn match sicadIdentifier "%nsel\>" syn match sicadIdentifier "%nvar\>" syn match sicadIdentifier "%scl\>" syn match sicadIdentifier "%wd\>" syn match sicadIdentifier "\$[irt][0-9]\{1,2}\>" contained " label syn match sicadLabel1 "^ *\.[a-z][a-z0-9]\{0,7} \+[^ ]"me=e-1 syn match sicadLabel1 "^ *\.[a-z][a-z0-9]\{0,7}\*"me=e-1 syn match sicadLabel2 "\" contains=sicadGoto syn match sicadLabel2 "\" contains=sicadGoto " boolean syn match sicadBoolean "\.[ft]\." " integer without sign syn match sicadNumber "\<[0-9]\+\>" " floating point number, with dot, optional exponent syn match sicadFloat "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=\>" " floating point number, starting with a dot, optional exponent syn match sicadFloat "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\>" " floating point number, without dot, with exponent syn match sicadFloat "\<[0-9]\+e[-+]\=[0-9]\+\>" " without this extraString definition a ' ; ' could stop the comment syn region sicadString_ transparent start=+'+ end=+'+ oneline contained " string syn region sicadString start=+'+ end=+'+ oneline " comments - nasty ones in sicad " - ' * blabla' or ' * blabla;' syn region sicadComment start="^ *\*" skip='\\ *$' end=";"me=e-1 end="$" contains=sicadString_ " - ' .LABEL03 * blabla' or ' .LABEL03 * blabla;' syn region sicadComment start="^ *\.[a-z][a-z0-9]\{0,7} *\*" skip='\\ *$' end=";"me=e-1 end="$" contains=sicadLabel1,sicadString_ " - '; * blabla' or '; * blabla;' syn region sicadComment start="; *\*"ms=s+1 skip='\\ *$' end=";"me=e-1 end="$" contains=sicadString_ " - comments between docbeg and docend syn region sicadComment matchgroup=sicadStatement start="\" end="\" " catch \ at the end of line syn match sicadLineCont "\\ *$" " parameters in dop block - for the time being it is not used "syn match sicadParameter " [a-z][a-z0-9]*[=:]"me=e-1 contained " dop block - for the time being it is not used syn region sicadDopBlock transparent matchgroup=sicadStatement start='\' skip='\\ *$' end=';'me=e-1 end='$' contains=ALL " sql block - new highlighting mode is used (see syn include) syn region sicadSqlBlock transparent matchgroup=sicadStatement start='\' skip='\\ *$' end=';'me=e-1 end='$' contains=@SQL,sicadIdentifier,sicadLineCont " synchronizing syn sync clear " clear sync used in sql.vim syn sync match sicadSyncComment groupthere NONE "\" syn sync match sicadSyncComment grouphere sicadComment "\" " next line must be examined too syn sync linecont "\\ *$" " catch error caused by tabulator key syn match sicadError "\t" " catch errors caused by wrong parenthesis "syn region sicadParen transparent start='(' end=')' contains=ALLBUT,sicadParenError syn region sicadParen transparent start='(' skip='\\ *$' end=')' end='$' contains=ALLBUT,sicadParenError syn match sicadParenError ')' "syn region sicadApostrophe transparent start=+'+ end=+'+ contains=ALLBUT,sicadApostropheError "syn match sicadApostropheError +'+ " not closed apostrophe "syn region sicadError start=+'+ end=+$+ contains=ALLBUT,sicadApostropheError "syn match sicadApostropheError +'[^']*$+me=s+1 contained " SICAD keywords syn keyword sicadStatement abst add addsim adrin aib syn keyword sicadStatement aibzsn aidump aifgeo aisbrk alknam syn keyword sicadStatement alknr alksav alksel alktrc alopen syn keyword sicadStatement ansbo aractiv ararea arareao ararsfs syn keyword sicadStatement arbuffer archeck arcomv arcont arconv syn keyword sicadStatement arcopy arcopyo arcorr arcreate arerror syn keyword sicadStatement areval arflfm arflop arfrast argbkey syn keyword sicadStatement argenf argraph argrapho arinters arkompfl syn keyword sicadStatement arlasso arlcopy arlgraph arline arlining syn keyword sicadStatement arlisly armakea armemo arnext aroverl syn keyword sicadStatement arovers arparkmd arpars arrefp arselect syn keyword sicadStatement arset arstruct arunify arupdate arvector syn keyword sicadStatement arveinfl arvflfl arvoroni ausku basis syn keyword sicadStatement basisaus basisdar basisnr bebos befl syn keyword sicadStatement befla befli befls beo beorta syn keyword sicadStatement beortn bep bepan bepap bepola syn keyword sicadStatement bepoln bepsn bepsp ber berili syn keyword sicadStatement berk bewz bkl bli bma syn keyword sicadStatement bmakt bmakts bmbm bmerk bmerw syn keyword sicadStatement bmerws bminit bmk bmorth bmos syn keyword sicadStatement bmoss bmpar bmsl bmsum bmsums syn keyword sicadStatement bmver bmvero bmw bo bta syn keyword sicadStatement buffer bvl bw bza bzap syn keyword sicadStatement bzd bzgera bzorth cat catel syn keyword sicadStatement cdbdiff ce cgmparam close closesim syn keyword sicadStatement comgener comp comp conclose conclose coninfo syn keyword sicadStatement conopen conread contour conwrite cop syn keyword sicadStatement copar coparp coparp2 copel cr syn keyword sicadStatement cs cstat cursor d da syn keyword sicadStatement dal dasp dasps dataout dcol syn keyword sicadStatement dd defsr del delel deskrdef syn keyword sicadStatement df dfn dfns dfpos dfr syn keyword sicadStatement dgd dgm dgp dgr dh syn keyword sicadStatement diag diaus dir disbsd dkl syn keyword sicadStatement dktx dkur dlgfix dlgfre dma syn keyword sicadStatement dprio dr druse dsel dskinfo syn keyword sicadStatement dsr dv dve eba ebd syn keyword sicadStatement ebdmod ebs edbsdbin edbssnin edbsvtin syn keyword sicadStatement edt egaus egdef egdefs eglist syn keyword sicadStatement egloe egloenp egloes egxx eib syn keyword sicadStatement ekur ekuradd elel elpos epg syn keyword sicadStatement esau esauadd esek eta etap syn keyword sicadStatement etav feparam ficonv filse fl syn keyword sicadStatement fli flin flini flinit flins syn keyword sicadStatement flkor fln flnli flop flout syn keyword sicadStatement flowert flparam flraster flsy flsyd syn keyword sicadStatement flsym flsyms flsymt fmtatt fmtdia syn keyword sicadStatement fmtlib fpg gbadddb gbaim gbanrs syn keyword sicadStatement gbatw gbau gbaudit gbclosp gbcredic syn keyword sicadStatement gbcreem gbcreld gbcresdb gbcretd gbde syn keyword sicadStatement gbdeldb gbdeldic gbdelem gbdelld gbdelref syn keyword sicadStatement gbdeltd gbdisdb gbdisem gbdisld gbdistd syn keyword sicadStatement gbebn gbemau gbepsv gbgetdet gbgetes syn keyword sicadStatement gbgetmas gbgqel gbgqelr gbgqsa gbgrant syn keyword sicadStatement gbimpdic gbler gblerb gblerf gbles syn keyword sicadStatement gblocdic gbmgmg gbmntdb gbmoddb gbnam syn keyword sicadStatement gbneu gbopenp gbpoly gbpos gbpruef syn keyword sicadStatement gbpruefg gbps gbqgel gbqgsa gbrefdic syn keyword sicadStatement gbreftab gbreldic gbresem gbrevoke gbsav syn keyword sicadStatement gbsbef gbsddk gbsicu gbsrt gbss syn keyword sicadStatement gbstat gbsysp gbszau gbubp gbueb syn keyword sicadStatement gbunmdb gbuseem gbw gbweg gbwieh syn keyword sicadStatement gbzt gelp gera getvar hgw syn keyword sicadStatement hpg hr0 hra hrar icclchan syn keyword sicadStatement iccrecon icdescon icfree icgetcon icgtresp syn keyword sicadStatement icopchan icputcon icreacon icreqd icreqnw syn keyword sicadStatement icreqw icrespd icresrve icwricon imsget syn keyword sicadStatement imsgqel imsmget imsplot imsprint inchk syn keyword sicadStatement inf infd inst kbml kbmls syn keyword sicadStatement kbmm kbmms kbmt kbmtdps kbmts syn keyword sicadStatement khboe khbol khdob khe khetap syn keyword sicadStatement khfrw khktk khlang khld khmfrp syn keyword sicadStatement khmks khms khpd khpfeil khpl syn keyword sicadStatement khprofil khrand khsa khsabs khsaph syn keyword sicadStatement khsd khsdl khse khskbz khsna syn keyword sicadStatement khsnum khsob khspos khsvph khtrn syn keyword sicadStatement khver khzpe khzpl kib kldat syn keyword sicadStatement klleg klsch klsym klvert kmpg syn keyword sicadStatement kmtlage kmtp kmtps kodef kodefp syn keyword sicadStatement kodefs kok kokp kolae kom syn keyword sicadStatement kontly kopar koparp kopg kosy syn keyword sicadStatement kp kr krsek krtclose krtopen syn keyword sicadStatement ktk lad lae laesel language syn keyword sicadStatement lasso lbdes lcs ldesk ldesks syn keyword sicadStatement le leak leattdes leba lebas syn keyword sicadStatement lebaznp lebd lebm lebv lebvaus syn keyword sicadStatement lebvlist lede ledel ledepo ledepol syn keyword sicadStatement ledepos leder ledist ledm lee syn keyword sicadStatement leeins lees lege lekr lekrend syn keyword sicadStatement lekwa lekwas lel lelh lell syn keyword sicadStatement lelp lem lena lend lenm syn keyword sicadStatement lep lepe lepee lepko lepl syn keyword sicadStatement lepmko lepmkop lepos leposm leqs syn keyword sicadStatement leqsl leqssp leqsv leqsvov les syn keyword sicadStatement lesch lesr less lestd let syn keyword sicadStatement letaum letl lev levm levtm syn keyword sicadStatement levtp levtr lew lewm lexx syn keyword sicadStatement lfs li lining lldes lmode syn keyword sicadStatement loedk loepkt lop lose loses syn keyword sicadStatement lp lppg lppruef lr ls syn keyword sicadStatement lsop lsta lstat ly lyaus syn keyword sicadStatement lz lza lzae lzbz lze syn keyword sicadStatement lznr lzo lzpos ma ma0 syn keyword sicadStatement ma1 mad map mapoly mcarp syn keyword sicadStatement mccfr mccgr mcclr mccrf mcdf syn keyword sicadStatement mcdma mcdr mcdrp mcdve mcebd syn keyword sicadStatement mcgse mcinfo mcldrp md me syn keyword sicadStatement mefd mefds minmax mipg ml syn keyword sicadStatement mmcmdme mmdbf mmdellb mmdir mmdome syn keyword sicadStatement mmfsb mminfolb mmlapp mmlbf mmlistlb syn keyword sicadStatement mmloadcm mmmsg mmreadlb mmsetlb mmshowcm syn keyword sicadStatement mmstatme mnp mpo mr mra syn keyword sicadStatement ms msav msgout msgsnd msp syn keyword sicadStatement mspf mtd nasel ncomp new syn keyword sicadStatement nlist nlistlt nlistly nlistnp nlistpo syn keyword sicadStatement np npa npdes npe npem syn keyword sicadStatement npinfa npruef npsat npss npssa syn keyword sicadStatement ntz oa oan odel odf syn keyword sicadStatement odfx oj oja ojaddsk ojaed syn keyword sicadStatement ojaeds ojaef ojaefs ojaen ojak syn keyword sicadStatement ojaks ojakt ojakz ojalm ojatkis syn keyword sicadStatement ojatt ojatw ojbsel ojcasel ojckon syn keyword sicadStatement ojde ojdtl ojeb ojebd ojel syn keyword sicadStatement ojelpas ojesb ojesbd ojex ojezge syn keyword sicadStatement ojko ojlb ojloe ojlsb ojmerk syn keyword sicadStatement ojmos ojnam ojpda ojpoly ojprae syn keyword sicadStatement ojs ojsak ojsort ojstrukt ojsub syn keyword sicadStatement ojtdef ojvek ojx old oldd syn keyword sicadStatement op opa opa1 open opensim syn keyword sicadStatement opnbsd orth osanz ot otp syn keyword sicadStatement otrefp param paranf pas passw syn keyword sicadStatement pcatchf pda pdadd pg pg0 syn keyword sicadStatement pgauf pgaufsel pgb pgko pgm syn keyword sicadStatement pgr pgvs pily pkpg plot syn keyword sicadStatement plotf plotfr pmap pmdata pmdi syn keyword sicadStatement pmdp pmeb pmep pminfo pmlb syn keyword sicadStatement pmli pmlp pmmod pnrver poa syn keyword sicadStatement pos posa posaus post printfr syn keyword sicadStatement protect prs prssy prsym ps syn keyword sicadStatement psadd psclose psopen psparam psprw syn keyword sicadStatement psres psstat psw pswr qualif syn keyword sicadStatement rahmen raster rasterd rbbackup rbchang2 syn keyword sicadStatement rbchange rbcmd rbcoldst rbcolor rbcopy syn keyword sicadStatement rbcut rbcut2 rbdbcl rbdbload rbdbop syn keyword sicadStatement rbdbwin rbdefs rbedit rbfdel rbfill syn keyword sicadStatement rbfill2 rbfload rbfload2 rbfnew rbfnew2 syn keyword sicadStatement rbfpar rbfree rbg rbgetcol rbgetdst syn keyword sicadStatement rbinfo rbpaste rbpixel rbrstore rbsnap syn keyword sicadStatement rbsta rbtile rbtrpix rbvtor rcol syn keyword sicadStatement rd rdchange re reb rebmod syn keyword sicadStatement refunc ren renel rk rkpos syn keyword sicadStatement rohr rohrpos rpr rr rr0 syn keyword sicadStatement rra rrar rs samtosdb sav syn keyword sicadStatement savd savesim savx scol scopy syn keyword sicadStatement scopye sdbtosam sddk sdwr se syn keyword sicadStatement selaus selpos seman semi sesch syn keyword sicadStatement setscl setvar sfclntpf sfconn sffetchf syn keyword sicadStatement sffpropi sfftypi sfqugeoc sfquwhcl sfself syn keyword sicadStatement sfstat sftest sge sid sie syn keyword sicadStatement sig sigp skk skks sn syn keyword sicadStatement sn21 snpa snpar snparp snparps syn keyword sicadStatement snpars snpas snpd snpi snpkor syn keyword sicadStatement snpl snpm sob sob0 sobloe syn keyword sicadStatement sobs sof sop split spr syn keyword sicadStatement sqdadd sqdlad sqdold sqdsav syn keyword sicadStatement sr sres srt sset stat syn keyword sicadStatement stdtxt string strukt strupru suinfl syn keyword sicadStatement suinflk suinfls supo supo1 sva syn keyword sicadStatement svr sy sya syly sysout syn keyword sicadStatement syu syux taa tabeg tabl syn keyword sicadStatement tabm tam tanr tapg tapos syn keyword sicadStatement tarkd tas tase tb tbadd syn keyword sicadStatement tbd tbext tbget tbint tbout syn keyword sicadStatement tbput tbsat tbsel tbstr tcaux syn keyword sicadStatement tccable tcchkrep tccomm tccond tcdbg syn keyword sicadStatement tcgbnr tcgrpos tcinit tclconv tcmodel syn keyword sicadStatement tcnwe tcpairs tcpath tcrect tcrmdli syn keyword sicadStatement tcscheme tcschmap tcse tcselc tcstar syn keyword sicadStatement tcstrman tcsubnet tcsymbol tctable tcthrcab syn keyword sicadStatement tctrans tctst tdb tdbdel tdbget syn keyword sicadStatement tdblist tdbput tgmod titel tmoff syn keyword sicadStatement tmon tp tpa tps tpta syn keyword sicadStatement tra trans transkdo transopt transpro syn keyword sicadStatement triangle trm trpg trrkd trs syn keyword sicadStatement ts tsa tx txa txchk syn keyword sicadStatement txcng txju txl txp txpv syn keyword sicadStatement txtcmp txv txz uckon uiinfo syn keyword sicadStatement uistatus umdk umdk1 umdka umge syn keyword sicadStatement umges umr verbo verflli verif syn keyword sicadStatement verly versinfo vfg vpactive vpcenter syn keyword sicadStatement vpcreate vpdelete vpinfo vpmodify vpscroll syn keyword sicadStatement vpsta wabsym wzmerk zdrhf zdrhfn syn keyword sicadStatement zdrhfw zdrhfwn zefp zfl zflaus syn keyword sicadStatement zka zlel zlels zortf zortfn syn keyword sicadStatement zortfw zortfwn zortp zortpn zparb syn keyword sicadStatement zparbn zparf zparfn zparfw zparfwn syn keyword sicadStatement zparp zparpn zwinkp zwinkpn " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link sicadLabel PreProc hi def link sicadLabel1 sicadLabel hi def link sicadLabel2 sicadLabel hi def link sicadConditional Conditional hi def link sicadBoolean Boolean hi def link sicadNumber Number hi def link sicadFloat Float hi def link sicadOperator Operator hi def link sicadStatement Statement hi def link sicadParameter sicadStatement hi def link sicadGoto sicadStatement hi def link sicadLineCont sicadStatement hi def link sicadString String hi def link sicadComment Comment hi def link sicadSpecial Special hi def link sicadIdentifier Type " hi def link sicadIdentifier Identifier hi def link sicadError Error hi def link sicadParenError sicadError hi def link sicadApostropheError sicadError hi def link sicadStringError sicadError hi def link sicadCommentError sicadError " hi def link sqlStatement Special " modified highlight group in sql.vim let b:current_syntax = "sicad" " vim: ts=8 sw=2 PK!Vavim80/syntax/expect.vimnu[" Vim syntax file " Language: Expect " Maintainer: Ralph Jennings " Last Change: 2012 Jun 01 " (Dominique Pelle added @Spell) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Reserved Expect variable prefixes. syn match expectVariables "\$exp[a-zA-Z0-9_]*\|\$inter[a-zA-Z0-9_]*" syn match expectVariables "\$spawn[a-zA-Z0-9_]*\|\$timeout[a-zA-Z0-9_]*" " Normal Expect variables. syn match expectVariables "\$env([^)]*)" syn match expectVariables "\$any_spawn_id\|\$argc\|\$argv\d*" syn match expectVariables "\$user_spawn_id\|\$spawn_id\|\$timeout" " Expect variable arrays. syn match expectVariables "\$\(expect\|interact\)_out([^)]*)" contains=expectOutVar " User defined variables. syn match expectVariables "\$[a-zA-Z_][a-zA-Z0-9_]*" " Reserved Expect command prefixes. syn match expectCommand "exp_[a-zA-Z0-9_]*" " Normal Expect commands. syn keyword expectStatement close debug disconnect syn keyword expectStatement exit exp_continue exp_internal exp_open syn keyword expectStatement exp_pid exp_version syn keyword expectStatement fork inter_return interpreter syn keyword expectStatement log_file log_user match_max overlay syn keyword expectStatement parity remove_nulls return syn keyword expectStatement send send_error send_log send_user syn keyword expectStatement sleep spawn strace stty system syn keyword expectStatement timestamp trace trap wait " Tcl commands recognized and used by Expect. syn keyword expectCommand proc syn keyword expectConditional if else syn keyword expectRepeat while for foreach " Expect commands with special arguments. syn keyword expectStatement expect expect_after expect_background nextgroup=expectExpectOpts syn keyword expectStatement expect_before expect_user interact nextgroup=expectExpectOpts syn match expectSpecial contained "\\." " Options for "expect", "expect_after", "expect_background", " "expect_before", "expect_user", and "interact". syn keyword expectExpectOpts default eof full_buffer null return timeout syn keyword expectOutVar contained spawn_id seconds seconds_total syn keyword expectOutVar contained string start end buffer " Numbers (Tcl style). syn case ignore syn match expectNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" "floating point number, with dot, optional exponent syn match expectNumber "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, starting with a dot, optional exponent syn match expectNumber "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, without dot, with exponent syn match expectNumber "\<\d\+e[-+]\=\d\+[fl]\=\>" "hex number syn match expectNumber "0x[0-9a-f]\+\(u\=l\=\|lu\)\>" "syn match expectIdentifier "\<[a-z_][a-z0-9_]*\>" syn case match syn region expectString start=+"+ end=+"+ contains=@Spell,expectVariables,expectSpecial " Are these really comments in Expect? (I never use it, so I'm just guessing). syn keyword expectTodo contained TODO syn match expectComment "#.*$" contains=@Spell,expectTodo syn match expectSharpBang "\%^#!.*" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link expectSharpBang PreProc hi def link expectVariables Special hi def link expectCommand Function hi def link expectStatement Statement hi def link expectConditional Conditional hi def link expectRepeat Repeat hi def link expectExpectOpts Keyword hi def link expectOutVar Special hi def link expectSpecial Special hi def link expectNumber Number hi def link expectString String hi def link expectComment Comment hi def link expectTodo Todo "hi def link expectIdentifier Identifier let b:current_syntax = "expect" " vim: ts=8 PK!N N vim80/syntax/z8a.vimnu[" Vim syntax file " Language: Z80 assembler asz80 " Maintainer: Milan Pikula " Last Change: 2003 May 11 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " Common Z80 Assembly instructions syn keyword z8aInstruction adc add and bit ccf cp cpd cpdr cpi cpir cpl syn keyword z8aInstruction daa di djnz ei exx halt im in syn keyword z8aInstruction ind ini indr inir jp jr ld ldd lddr ldi ldir syn keyword z8aInstruction neg nop or otdr otir out outd outi syn keyword z8aInstruction res rl rla rlc rlca rld syn keyword z8aInstruction rr rra rrc rrca rrd sbc scf set sla sra syn keyword z8aInstruction srl sub xor " syn keyword z8aInstruction push pop call ret reti retn inc dec ex rst " Any other stuff syn match z8aIdentifier "[a-z_][a-z0-9_]*" " Instructions changing stack syn keyword z8aSpecInst push pop call ret reti retn rst syn match z8aInstruction "\" syn match z8aInstruction "\" syn match z8aInstruction "\" syn match z8aSpecInst "\"me=s+3 syn match z8aSpecInst "\"me=s+3 syn match z8aSpecInst "\"me=s+2 "Labels syn match z8aLabel "[a-z_][a-z0-9_]*:" syn match z8aSpecialLabel "[a-z_][a-z0-9_]*::" " PreProcessor commands syn match z8aPreProc "\.org" syn match z8aPreProc "\.globl" syn match z8aPreProc "\.db" syn match z8aPreProc "\.dw" syn match z8aPreProc "\.ds" syn match z8aPreProc "\.byte" syn match z8aPreProc "\.word" syn match z8aPreProc "\.blkb" syn match z8aPreProc "\.blkw" syn match z8aPreProc "\.ascii" syn match z8aPreProc "\.asciz" syn match z8aPreProc "\.module" syn match z8aPreProc "\.title" syn match z8aPreProc "\.sbttl" syn match z8aPreProc "\.even" syn match z8aPreProc "\.odd" syn match z8aPreProc "\.area" syn match z8aPreProc "\.page" syn match z8aPreProc "\.setdp" syn match z8aPreProc "\.radix" syn match z8aInclude "\.include" syn match z8aPreCondit "\.if" syn match z8aPreCondit "\.else" syn match z8aPreCondit "\.endif" " Common strings syn match z8aString "\".*\"" syn match z8aString "\'.*\'" " Numbers syn match z8aNumber "[0-9]\+" syn match z8aNumber "0[xXhH][0-9a-fA-F]\+" syn match z8aNumber "0[bB][0-1]*" syn match z8aNumber "0[oO\@qQ][0-7]\+" syn match z8aNumber "0[dD][0-9]\+" " Character constant syn match z8aString "\#\'."hs=s+1 " Comments syn match z8aComment ";.*" syn case match " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link z8aSection Special hi def link z8aLabel Label hi def link z8aSpecialLabel Label hi def link z8aComment Comment hi def link z8aInstruction Statement hi def link z8aSpecInst Statement hi def link z8aInclude Include hi def link z8aPreCondit PreCondit hi def link z8aPreProc PreProc hi def link z8aNumber Number hi def link z8aString String let b:current_syntax = "z8a" " vim: ts=8 PK!Rbvim80/syntax/rib.vimnu[" Vim syntax file " Language: Renderman Interface Bytestream " Maintainer: Andrew Bromage " Last Change: 2003 May 11 " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case match " Comments syn match ribLineComment "#.*$" syn match ribStructureComment "##.*$" syn case ignore syn match ribCommand /[A-Z][a-zA-Z]*/ syn case match syn region ribString start=/"/ skip=/\\"/ end=/"/ syn match ribStructure "[A-Z][a-zA-Z]*Begin\>\|[A-Z][a-zA-Z]*End" syn region ribSectionFold start="FrameBegin" end="FrameEnd" fold transparent keepend extend syn region ribSectionFold start="WorldBegin" end="WorldEnd" fold transparent keepend extend syn region ribSectionFold start="TransformBegin" end="TransformEnd" fold transparent keepend extend syn region ribSectionFold start="AttributeBegin" end="AttributeEnd" fold transparent keepend extend syn region ribSectionFold start="MotionBegin" end="MotionEnd" fold transparent keepend extend syn region ribSectionFold start="SolidBegin" end="SolidEnd" fold transparent keepend extend syn region ribSectionFold start="ObjectBegin" end="ObjectEnd" fold transparent keepend extend syn sync fromstart "integer number, or floating point number without a dot and with "f". syn case ignore syn match ribNumbers display transparent "[-]\=\<\d\|\.\d" contains=ribNumber,ribFloat syn match ribNumber display contained "[-]\=\d\+\>" "floating point number, with dot, optional exponent syn match ribFloat display contained "[-]\=\d\+\.\d*\(e[-+]\=\d\+\)\=" "floating point number, starting with a dot, optional exponent syn match ribFloat display contained "[-]\=\.\d\+\(e[-+]\=\d\+\)\=\>" "floating point number, without dot, with exponent syn match ribFloat display contained "[-]\=\d\+e[-+]\d\+\>" syn case match hi def link ribStructure Structure hi def link ribCommand Statement hi def link ribStructureComment SpecialComment hi def link ribLineComment Comment hi def link ribString String hi def link ribNumber Number hi def link ribFloat Float let b:current_syntax = "rib" " Options for vi: ts=8 sw=2 sts=2 nowrap noexpandtab ft=vim PK!`vim80/syntax/po.vimnu[" Vim syntax file " Language: po (gettext) " Maintainer: Dwayne Bailey " Last Change: 2015 Jun 07 " Contributors: Dwayne Bailey (Most advanced syntax highlighting) " Leonardo Fontenelle (Spell checking) " Nam SungHyun (Original maintainer) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim syn sync minlines=10 " Identifiers syn match poStatementMsgCTxt "^msgctxt" syn match poStatementMsgidplural "^msgid_plural" contained syn match poPluralCaseN "[0-9]" contained syn match poStatementMsgstr "^msgstr\(\[[0-9]\]\)" contains=poPluralCaseN " Simple HTML and XML highlighting syn match poHtml "<\_[^<>]\+>" contains=poHtmlTranslatables,poLineBreak syn match poHtmlNot +"<[^<]\+>"+ms=s+1,me=e-1 syn region poHtmlTranslatables start=+\(abbr\|alt\|content\|summary\|standby\|title\)=\\"+ms=e-1 end=+\\"+ contained contains=@Spell syn match poLineBreak +"\n"+ contained " Translation blocks syn region poMsgCTxt matchgroup=poStatementMsgCTxt start=+^msgctxt "+rs=e-1 matchgroup=poStringCTxt end=+^msgid "+me=s-1 contains=poStringCTxt syn region poMsgID matchgroup=poStatementMsgid start=+^msgid "+rs=e-1 matchgroup=poStringID end=+^msgstr\(\|\[[\]0\[]\]\) "+me=s-1 contains=poStringID,poStatementMsgidplural,poStatementMsgid syn region poMsgSTR matchgroup=poStatementMsgstr start=+^msgstr\(\|\[[\]0\[]\]\) "+rs=e-1 matchgroup=poStringSTR end=+\n\n+me=s-1 contains=poStringSTR,poStatementMsgstr syn region poStringCTxt start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region poStringID start=+"+ skip=+\\\\\|\\"+ end=+"+ contained \ contains=poSpecial,poFormat,poCommentKDE,poPluralKDE,poKDEdesktopFile,poHtml,poAcceleratorId,poHtmlNot,poVariable syn region poStringSTR start=+"+ skip=+\\\\\|\\"+ end=+"+ contained \ contains=@Spell,poSpecial,poFormat,poHeaderItem,poCommentKDEError,poHeaderUndefined,poPluralKDEError,poMsguniqError,poKDEdesktopFile,poHtml,poAcceleratorStr,poHtmlNot,poVariable " Header and Copyright syn match poHeaderItem "\(Project-Id-Version\|Report-Msgid-Bugs-To\|POT-Creation-Date\|PO-Revision-Date\|Last-Translator\|Language-Team\|Language\|MIME-Version\|Content-Type\|Content-Transfer-Encoding\|Plural-Forms\|X-Generator\): " contained syn match poHeaderUndefined "\(PACKAGE VERSION\|YEAR-MO-DA HO:MI+ZONE\|FULL NAME \|LANGUAGE \|CHARSET\|ENCODING\|INTEGER\|EXPRESSION\)" contained syn match poCopyrightUnset "SOME DESCRIPTIVE TITLE\|FIRST AUTHOR , YEAR\|Copyright (C) YEAR Free Software Foundation, Inc\|YEAR THE PACKAGE\'S COPYRIGHT HOLDER\|PACKAGE" contained " Translation comment block including: translator comment, automatic coments, flags and locations syn match poComment "^#.*$" syn keyword poFlagFuzzy fuzzy contained syn match poCommentTranslator "^# .*$" contains=poCopyrightUnset syn match poCommentAutomatic "^#\..*$" syn match poCommentSources "^#:.*$" syn match poCommentFlags "^#,.*$" contains=poFlagFuzzy syn match poDiffOld '\(^#| "[^{]*+}\|{+[^}]*+}\|{+[^}]*\|"$\)' contained syn match poDiffNew '\(^#| "[^{]*-}\|{-[^}]*-}\|{-[^}]*\|"$\)' contained syn match poCommentDiff "^#|.*$" contains=poDiffOld,poDiffNew " Translations (also includes header fields as they appear in a translation msgstr) syn region poCommentKDE start=+"_: +ms=s+1 end="\\n" end="\"\n^msgstr"me=s-1 contained syn region poCommentKDEError start=+"\(\|\s\+\)_:+ms=s+1 end="\\n" end=+"\n\n+me=s-1 contained syn match poPluralKDE +"_n: +ms=s+1 contained syn region poPluralKDEError start=+"\(\|\s\+\)_n:+ms=s+1 end="\"\n\n"me=s-1 contained syn match poSpecial contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" syn match poFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained syn match poFormat "%%" contained " msguniq and msgcat conflicts syn region poMsguniqError matchgroup=poMsguniqErrorMarkers start="#-#-#-#-#" end='#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)\\n' contained " Obsolete messages syn match poObsolete "^#\~.*$" " KDE Name= handling syn match poKDEdesktopFile "\"\(Name\|Comment\|GenericName\|Description\|Keywords\|About\)="ms=s+1,me=e-1 " Accelerator keys - this messes up if the preceding or following char is a multibyte unicode char syn match poAcceleratorId contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 syn match poAcceleratorStr contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 contains=@Spell " Variables simple syn match poVariable contained "%\d" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link poCommentSources PreProc hi def link poComment Comment hi def link poCommentAutomatic Comment hi def link poCommentTranslator Comment hi def link poCommentFlags Special hi def link poCommentDiff Comment hi def link poCopyrightUnset Todo hi def link poFlagFuzzy Todo hi def link poDiffOld Todo hi def link poDiffNew Special hi def link poObsolete Comment hi def link poStatementMsgid Statement hi def link poStatementMsgstr Statement hi def link poStatementMsgidplural Statement hi def link poStatementMsgCTxt Statement hi def link poPluralCaseN Constant hi def link poStringCTxt Comment hi def link poStringID String hi def link poStringSTR String hi def link poCommentKDE Comment hi def link poCommentKDEError Error hi def link poPluralKDE Comment hi def link poPluralKDEError Error hi def link poHeaderItem Identifier hi def link poHeaderUndefined Todo hi def link poKDEdesktopFile Identifier hi def link poHtml Identifier hi def link poHtmlNot String hi def link poHtmlTranslatables String hi def link poLineBreak String hi def link poFormat poSpecial hi def link poSpecial Special hi def link poAcceleratorId Special hi def link poAcceleratorStr Special hi def link poVariable Special hi def link poMsguniqError Special hi def link poMsguniqErrorMarkers Comment let b:current_syntax = "po" let &cpo = s:keepcpo unlet s:keepcpo " vim:set ts=8 sts=2 sw=2 noet: PK!AXvim80/syntax/mallard.vimnu[" Vim syntax file " Language: Mallard " Maintainer: Jaromir Hradilek " URL: https://github.com/jhradilek/vim-syntax " Last Change: 11 February 2013 " Description: A syntax file for the Mallard markup language according to " Mallard 1.0 DRAFT as of 2013-02-11. if exists("b:current_syntax") finish endif do Syntax xml syn cluster xmlTagHook add=mallardTagName syn spell toplevel syn case match syn keyword mallardTagName app cite cmd code col colgroup comment contained syn keyword mallardTagName credit desc em email example figure contained syn keyword mallardTagName file gui guiseq info input item key contained syn keyword mallardTagName keyseq license link links list listing contained syn keyword mallardTagName media name note output p page quote contained syn keyword mallardTagName revision screen section span steps contained syn keyword mallardTagName subtitle synopsis sys table tbody td contained syn keyword mallardTagName terms tfoot thead title tr tree var contained syn keyword mallardTagName years contained syn region mallardComment start="" end=""me=e-10 contains=xmlTag,xmlNamespace,xmlTagName,xmlEndTag,xmlRegion,xmlEntity,@Spell keepend syn region mallardEmphasis start="" end=""me=e-5 contains=xmlTag,xmlNamespace,xmlTagName,xmlEndTag,xmlRegion,xmlEntity,@Spell keepend syn region mallardTitle start="" end=""me=e-8 contains=xmlTag,xmlNamespace,xmlTagName,xmlEndTag,xmlRegion,xmlEntity,@Spell keepend hi def link mallardComment Comment hi def link mallardTagName Statement hi def link mallardTitle Title hi def mallardEmphasis term=italic cterm=italic gui=italic let b:current_syntax = "mallard" PK!Fy9U.U.vim80/syntax/autohotkey.vimnu[" Vim syntax file " Language: AutoHotkey script file " Maintainer: Michael Wong " https://github.com/mmikeww/autohotkey.vim " Latest Revision: 2017-04-03 " Previous Maintainers: SungHyun Nam " Nikolai Weibull if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn keyword autohotkeyTodo \ contained \ TODO FIXME XXX NOTE " only these chars are valid as escape sequences: ,%`;nrbtvaf " https://autohotkey.com/docs/commands/_EscapeChar.htm syn match autohotkeyEscape \ display \ '`[,%`;nrbtvaf]' syn region autohotkeyString \ display \ oneline \ matchgroup=autohotkeyStringDelimiter \ start=+"+ \ end=+"+ \ contains=autohotkeyEscape syn match autohotkeyVariable \ display \ oneline \ contains=autohotkeyBuiltinVariable \ keepend \ '%\S\{-}%' syn keyword autohotkeyBuiltinVariable \ A_Space A_Tab \ A_WorkingDir A_ScriptDir A_ScriptName A_ScriptFullPath A_ScriptHwnd A_LineNumber \ A_LineFile A_ThisFunc A_ThisLabel A_AhkVersion A_AhkPath A_IsUnicode A_IsCompiled A_ExitReason \ A_YYYY A_MM A_DD A_MMMM A_MMM A_DDDD A_DDD A_WDay A_YDay A_YWeek A_Hour A_Min \ A_Mon A_Year A_MDay A_NumBatchLines \ A_Sec A_MSec A_Now A_NowUTC A_TickCount \ A_IsSuspended A_IsPaused A_IsCritical A_BatchLines A_TitleMatchMode A_TitleMatchModeSpeed \ A_DetectHiddenWindows A_DetectHiddenText A_AutoTrim A_StringCaseSense \ A_FileEncoding A_FormatInteger A_FormatFloat A_KeyDelay A_WinDelay A_ControlDelay \ A_SendMode A_SendLevel A_StoreCapsLockMode A_KeyDelay A_KeyDelayDuration \ A_KeyDelayPlay A_KeyDelayPlayDuration A_MouseDelayPlay \ A_MouseDelay A_DefaultMouseSpeed A_RegView A_IconHidden A_IconTip A_IconFile \ A_CoordModeToolTip A_CoordModePixel A_CoordModeMouse A_CoordModeCaret A_CoordModeMenu \ A_IconNumber \ A_TimeIdle A_TimeIdlePhysical A_DefaultGui A_DefaultListView A_DefaultTreeView \ A_Gui A_GuiControl A_GuiWidth A_GuiHeight A_GuiX A_GuiY A_GuiEvent \ A_GuiControlEvent A_EventInfo \ A_ThisMenuItem A_ThisMenu A_ThisMenuItemPos A_ThisHotkey A_PriorHotkey \ A_PriorKey A_TimeSinceThisHotkey A_TimeSincePriorHotkey A_EndChar \ ComSpec A_Temp A_OSType A_OSVersion A_Language A_ComputerName A_UserName \ A_Is64BitOS A_PtrSize \ A_WinDir A_ProgramFiles ProgramFiles A_AppData A_AppDataCommon A_Desktop \ A_DesktopCommon A_StartMenu A_StartMenuCommon A_Programs \ A_ProgramsCommon A_Startup A_StartupCommon A_MyDocuments A_IsAdmin \ A_ScreenWidth A_ScreenHeight A_ScreenDPI A_IPAddress1 A_IPAddress2 A_IPAddress3 \ A_IPAddress4 \ A_Cursor A_CaretX A_CaretY Clipboard ClipboardAll ErrorLevel A_LastError \ A_Index A_LoopFileName A_LoopRegName A_LoopReadLine A_LoopField \ A_LoopFileExt A_LoopFileFullPath A_LoopFileLongPath A_LoopFileShortPath \ A_LoopFileShortName A_LoopFileDir A_LoopFileTimeModified A_LoopFileTimeCreated \ A_LoopFileTimeAccessed A_LoopFileAttrib A_LoopFileSize A_LoopFileSizeKB A_LoopFileSizeMB \ A_LoopRegType A_LoopRegKey A_LoopRegSubKey A_LoopRegTimeModified syn match autohotkeyBuiltinVariable \ contained \ display \ '%\d\+%' syn keyword autohotkeyCommand \ ClipWait EnvGet EnvSet EnvUpdate \ Drive DriveGet DriveSpaceFree FileAppend FileCopy FileCopyDir \ FileCreateDir FileCreateShortcut FileDelete FileGetAttrib FileEncoding \ FileGetShortcut FileGetSize FileGetTime FileGetVersion FileInstall \ FileMove FileMoveDir FileReadLine FileRead FileRecycle FileRecycleEmpty \ FileRemoveDir FileSelectFolder FileSelectFile FileSetAttrib FileSetTime \ IniDelete IniRead IniWrite SetWorkingDir \ SplitPath \ Gui GuiControl GuiControlGet IfMsgBox InputBox MsgBox Progress \ SplashImage SplashTextOn SplashTextOff ToolTip TrayTip \ Hotkey ListHotkeys BlockInput ControlSend ControlSendRaw GetKeyState \ KeyHistory KeyWait Input Send SendRaw SendInput SendPlay SendEvent \ SendMode SetKeyDelay SetNumScrollCapsLockState SetStoreCapslockMode \ EnvAdd EnvDiv EnvMult EnvSub Random SetFormat Transform \ AutoTrim BlockInput CoordMode Critical Edit ImageSearch \ ListLines ListVars Menu OutputDebug PixelGetColor PixelSearch \ SetBatchLines SetEnv SetTimer SysGet Thread Transform URLDownloadToFile \ Click ControlClick MouseClick MouseClickDrag MouseGetPos MouseMove \ SetDefaultMouseSpeed SetMouseDelay \ Process Run RunWait RunAs Shutdown Sleep \ RegDelete RegRead RegWrite \ SoundBeep SoundGet SoundGetWaveVolume SoundPlay SoundSet \ SoundSetWaveVolume \ FormatTime IfInString IfNotInString Sort StringCaseSense StringGetPos \ StringLeft StringRight StringLower StringUpper StringMid StringReplace \ StringSplit StringTrimLeft StringTrimRight StringLen \ StrSplit StrReplace Throw \ Control ControlClick ControlFocus ControlGet ControlGetFocus \ ControlGetPos ControlGetText ControlMove ControlSend ControlSendRaw \ ControlSetText Menu PostMessage SendMessage SetControlDelay \ WinMenuSelectItem GroupActivate GroupAdd GroupClose GroupDeactivate \ DetectHiddenText DetectHiddenWindows SetTitleMatchMode SetWinDelay \ StatusBarGetText StatusBarWait WinActivate WinActivateBottom WinClose \ WinGet WinGetActiveStats WinGetActiveTitle WinGetClass WinGetPos \ WinGetText WinGetTitle WinHide WinKill WinMaximize WinMinimize \ WinMinimizeAll WinMinimizeAllUndo WinMove WinRestore WinSet \ WinSetTitle WinShow WinWait WinWaitActive WinWaitNotActive WinWaitClose \ SetCapsLockState SetNumLockState SetScrollLockState syn keyword autohotkeyFunction \ InStr RegExMatch RegExReplace StrLen SubStr Asc Chr Func \ DllCall VarSetCapacity WinActive WinExist IsLabel OnMessage \ Abs Ceil Exp Floor Log Ln Mod Round Sqrt Sin Cos Tan ASin ACos ATan \ FileExist GetKeyState NumGet NumPut StrGet StrPut RegisterCallback \ IsFunc Trim LTrim RTrim IsObject Object Array FileOpen \ ComObjActive ComObjArray ComObjConnect ComObjCreate ComObjGet \ ComObjError ComObjFlags ComObjQuery ComObjType ComObjValue ComObject \ Format Exception syn keyword autohotkeyStatement \ Break Continue Exit ExitApp Gosub Goto OnExit Pause Return \ Suspend Reload new class extends syn keyword autohotkeyRepeat \ Loop syn keyword autohotkeyConditional \ IfExist IfNotExist If IfEqual IfLess IfGreater Else \ IfWinExist IfWinNotExist IfWinActive IfWinNotActive \ IfNotEqual IfLessOrEqual IfGreaterOrEqual \ while until for in try catch finally syn match autohotkeyPreProcStart \ nextgroup= \ autohotkeyInclude, \ autohotkeyPreProc \ skipwhite \ display \ '^\s*\zs#' syn keyword autohotkeyInclude \ contained \ Include \ IncludeAgain syn keyword autohotkeyPreProc \ contained \ HotkeyInterval HotKeyModifierTimeout \ Hotstring \ IfWinActive IfWinNotActive IfWinExist IfWinNotExist \ If IfTimeout \ MaxHotkeysPerInterval MaxThreads MaxThreadsBuffer MaxThreadsPerHotkey \ UseHook InstallKeybdHook InstallMouseHook \ KeyHistory \ NoTrayIcon SingleInstance \ WinActivateForce \ AllowSameLineComments \ ClipboardTimeout \ CommentFlag \ ErrorStdOut \ EscapeChar \ MaxMem \ NoEnv \ Persistent \ LTrim \ InputLevel \ MenuMaskKey \ Warn syn keyword autohotkeyMatchClass \ ahk_group ahk_class ahk_id ahk_pid ahk_exe syn match autohotkeyNumbers \ display \ transparent \ contains= \ autohotkeyInteger, \ autohotkeyFloat \ '\<\d\|\.\d' syn match autohotkeyInteger \ contained \ display \ '\d\+\>' syn match autohotkeyInteger \ contained \ display \ '0x\x\+\>' syn match autohotkeyFloat \ contained \ display \ '\d\+\.\d*\|\.\d\+\>' syn keyword autohotkeyType \ local \ global \ static \ byref syn keyword autohotkeyBoolean \ true \ false syn match autohotkeyHotkey \ contains=autohotkeyKey, \ autohotkeyHotkeyDelimiter \ display \ '^\s*\S*\%( Up\)\?::' syn match autohotkeyKey \ contained \ display \ '^.\{-}' syn match autohotkeyDelimiter \ contained \ display \ '::' " allowable hotstring options: " https://autohotkey.com/docs/Hotstrings.htm syn match autohotkeyHotstringDefinition \ contains=autohotkeyHotstring, \ autohotkeyHotstringDelimiter \ display \ '^\s*:\%([*?]\|[BORZ]0\?\|C[01]\?\|K\d\+\|P\d\+\|S[IPE]\)*:.\{-}::' syn match autohotkeyHotstring \ contained \ display \ '.\{-}' syn match autohotkeyHotstringDelimiter \ contained \ display \ '::' syn match autohotkeyHotstringDelimiter \ contains=autohotkeyHotstringOptions \ contained \ display \ ':\%([*?]\|[BORZ]0\?\|C[01]\?\|K\d\+\|P\d\+\|S[IPE]\)*:' syn match autohotkeyHotstringOptions \ contained \ display \ '\%([*?]\|[BORZ]0\?\|C[01]\?\|K\d\+\|P\d\+\|S[IPE]\)*' syn cluster autohotkeyCommentGroup \ contains= \ autohotkeyTodo, \ @Spell syn match autohotkeyComment \ display \ contains=@autohotkeyCommentGroup \ '\%(^;\|\s\+;\).*$' syn region autohotkeyComment \ contains=@autohotkeyCommentGroup \ matchgroup=autohotkeyCommentStart \ start='^\s*/\*' \ end='^\s*\*/' " TODO: Shouldn't we look for g:, b:, variables before defaulting to " something? if exists("g:autohotkey_syntax_sync_minlines") let b:autohotkey_syntax_sync_minlines = g:autohotkey_syntax_sync_minlines else let b:autohotkey_syntax_sync_minlines = 50 endif exec "syn sync ccomment autohotkeyComment minlines=" . b:autohotkey_syntax_sync_minlines hi def link autohotkeyTodo Todo hi def link autohotkeyComment Comment hi def link autohotkeyCommentStart autohotkeyComment hi def link autohotkeyEscape Special hi def link autohotkeyHotkey Type hi def link autohotkeyKey Type hi def link autohotkeyDelimiter Delimiter hi def link autohotkeyHotstringDefinition Type hi def link autohotkeyHotstring Type hi def link autohotkeyHotstringDelimiter autohotkeyDelimiter hi def link autohotkeyHotstringOptions Special hi def link autohotkeyString String hi def link autohotkeyStringDelimiter autohotkeyString hi def link autohotkeyVariable Identifier hi def link autohotkeyVariableDelimiter autohotkeyVariable hi def link autohotkeyBuiltinVariable Macro hi def link autohotkeyCommand Keyword hi def link autohotkeyFunction Function hi def link autohotkeyStatement autohotkeyCommand hi def link autohotkeyRepeat Repeat hi def link autohotkeyConditional Conditional hi def link autohotkeyPreProcStart PreProc hi def link autohotkeyInclude Include hi def link autohotkeyPreProc PreProc hi def link autohotkeyMatchClass Typedef hi def link autohotkeyNumber Number hi def link autohotkeyInteger autohotkeyNumber hi def link autohotkeyFloat autohotkeyNumber hi def link autohotkeyType Type hi def link autohotkeyBoolean Boolean let b:current_syntax = "autohotkey" let &cpo = s:cpo_save unlet s:cpo_save PK!pivim80/syntax/hostconf.vimnu[" Vim syntax file " Language: host.conf(5) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2007-06-25 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword hostconfTodo \ contained \ TODO \ FIXME \ XXX \ NOTE syn match hostconfComment \ display \ contained \ '\s*#.*' \ contains=hostconfTodo, \ @Spell syn match hostconfBegin \ display \ '^' \ nextgroup=hostconfComment,hostconfKeyword \ skipwhite syn keyword hostconfKeyword \ contained \ order \ nextgroup=hostconfLookupOrder \ skipwhite let s:orders = ['bind', 'hosts', 'nis'] function s:permute_suffixes(list) if empty(a:list) return [] elseif len(a:list) == 1 return a:list[0] else let i = 0 let n = len(a:list) let sub_permutations = [] while i < n let list_copy = copy(a:list) let removed = list_copy[i] call remove(list_copy, i) call add(sub_permutations, [removed, s:permute_suffixes(list_copy)]) let i += 1 endwhile return sub_permutations endif endfunction function s:generate_suffix_groups(list_of_order_of_orders, context, trailing_context) for order_of_orders in a:list_of_order_of_orders let order = order_of_orders[0] let trailing_context = a:trailing_context . toupper(order[0]) . order[1:] let nextgroup = 'hostconfLookupOrder' . trailing_context let nextgroup_delimiter = nextgroup . 'Delimiter' let group = 'hostconfLookupOrder' . a:context execute 'syn keyword' group 'contained' order 'nextgroup=' . nextgroup_delimiter 'skipwhite' execute 'syn match' nextgroup_delimiter 'contained display "," nextgroup=' . nextgroup 'skipwhite' if a:context != "" execute 'hi def link' group 'hostconfLookupOrder' endif execute 'hi def link' nextgroup_delimiter 'hostconfLookupOrderDelimiter' let context = trailing_context if type(order_of_orders[1]) == type([]) call s:generate_suffix_groups(order_of_orders[1], context, trailing_context) else execute 'syn keyword hostconfLookupOrder' . context 'contained' order_of_orders[-1] execute 'hi def link hostconfLookupOrder' . context 'hostconfLookupOrder' endif endfor endfunction call s:generate_suffix_groups(s:permute_suffixes(s:orders), "", "") delfunction s:generate_suffix_groups delfunction s:permute_suffixes syn keyword hostconfKeyword \ contained \ trim \ nextgroup=hostconfDomain \ skipwhite syn match hostconfDomain \ contained \ '\.[^:;,[:space:]]\+' \ nextgroup=hostconfDomainDelimiter \ skipwhite syn match hostconfDomainDelimiter \ contained \ display \ '[:;,]' \ nextgroup=hostconfDomain \ skipwhite syn keyword hostconfKeyword \ contained \ multi \ nospoof \ spoofalert \ reorder \ nextgroup=hostconfBoolean \ skipwhite syn keyword hostconfBoolean \ contained \ on \ off syn keyword hostconfKeyword \ contained \ spoof \ nextgroup=hostconfSpoofValue \ skipwhite syn keyword hostconfSpoofValue \ contained \ off \ nowarn \ warn hi def link hostconfTodo Todo hi def link hostconfComment Comment hi def link hostconfKeyword Keyword hi def link hostconfLookupOrder Identifier hi def link hostconfLookupOrderDelimiter Delimiter hi def link hostconfDomain String hi def link hostconfDomainDelimiter Delimiter hi def link hostconfBoolean Boolean hi def link hostconfSpoofValue hostconfBoolean let b:current_syntax = "hostconf" let &cpo = s:cpo_save unlet s:cpo_save PK!JuY- vim80/syntax/mib.vimnu[" Vim syntax file " Language: Vim syntax file for SNMPv1 and SNMPv2 MIB and SMI files " Maintainer: Martin Smat " Original Author: David Pascoe " Written: Wed Jan 28 14:37:23 GMT--8:00 1998 " Last Changed: Mon Mar 23 2010 if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,_,128-167,224-235,- syn keyword mibImplicit ACCESS ANY AUGMENTS BEGIN BIT BITS BOOLEAN CHOICE syn keyword mibImplicit COMPONENTS CONTACT-INFO DEFINITIONS DEFVAL syn keyword mibImplicit DESCRIPTION DISPLAY-HINT END ENTERPRISE EXTERNAL FALSE syn keyword mibImplicit FROM GROUP IMPLICIT IMPLIED IMPORTS INDEX syn keyword mibImplicit LAST-UPDATED MANDATORY-GROUPS MAX-ACCESS syn keyword mibImplicit MIN-ACCESS MODULE MODULE-COMPLIANCE MODULE-IDENTITY syn keyword mibImplicit NOTIFICATION-GROUP NOTIFICATION-TYPE NOTIFICATIONS syn keyword mibImplicit NULL OBJECT-GROUP OBJECT-IDENTITY OBJECT-TYPE syn keyword mibImplicit OBJECTS OF OPTIONAL ORGANIZATION REFERENCE syn keyword mibImplicit REVISION SEQUENCE SET SIZE STATUS SYNTAX syn keyword mibImplicit TEXTUAL-CONVENTION TRAP-TYPE TRUE UNITS VARIABLES syn keyword mibImplicit WRITE-SYNTAX syn keyword mibValue accessible-for-notify current DisplayString syn keyword mibValue deprecated mandatory not-accessible obsolete optional syn keyword mibValue read-create read-only read-write write-only INTEGER syn keyword mibValue Counter Gauge IpAddress OCTET STRING experimental mib-2 syn keyword mibValue TimeTicks RowStatus TruthValue UInteger32 snmpModules syn keyword mibValue Integer32 Counter32 TestAndIncr TimeStamp InstancePointer syn keyword mibValue OBJECT IDENTIFIER Gauge32 AutonomousType Counter64 syn keyword mibValue PhysAddress TimeInterval MacAddress StorageType RowPointer syn keyword mibValue TDomain TAddress ifIndex " Epilogue SMI extensions syn keyword mibEpilogue FORCE-INCLUDE EXCLUDE cookie get-function set-function syn keyword mibEpilogue test-function get-function-async set-function-async syn keyword mibEpilogue test-function-async next-function next-function-async syn keyword mibEpilogue leaf-name syn keyword mibEpilogue DEFAULT contained syn match mibOperator "::=" syn match mibComment "\ *--.\{-}\(--\|$\)" syn match mibNumber "\<['0-9a-fA-FhH]*\>" syn region mibDescription start="\"" end="\"" contains=DEFAULT hi def link mibImplicit Statement hi def link mibOperator Statement hi def link mibComment Comment hi def link mibConstants String hi def link mibNumber Number hi def link mibDescription Identifier hi def link mibEpilogue SpecialChar hi def link mibValue Structure let b:current_syntax = "mib" PK!t&33vim80/syntax/mush.vimnu[" MUSHcode syntax file " Maintainer: Rick Bird " Based on vim Syntax file by: Bek Oberin " Last Updated: Fri Nov 04 20:28:15 2005 " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " regular mush functions syntax keyword mushFunction contained @@ abs accent accname acos add after align syntax keyword mushFunction contained allof alphamax alphamin and andflags syntax keyword mushFunction contained andlflags andlpowers andpowers ansi aposs art syntax keyword mushFunction contained asin atan atan2 atrlock attrcnt band baseconv syntax keyword mushFunction contained beep before blank2tilde bnand bnot bor bound syntax keyword mushFunction contained brackets break bxor cand cansee capstr case syntax keyword mushFunction contained caseall cat ceil center checkpass children syntax keyword mushFunction contained chr clone cmds cnetpost comp con config conn syntax keyword mushFunction contained controls convsecs convtime convutcsecs cor syntax keyword mushFunction contained cos create ctime ctu dec decrypt default syntax keyword mushFunction contained delete die dig digest dist2d dist3d div syntax keyword mushFunction contained division divscope doing downdiv dynhelp e syntax keyword mushFunction contained edefault edit element elements elist elock syntax keyword mushFunction contained emit empire empower encrypt endtag entrances syntax keyword mushFunction contained eq escape etimefmt eval exit exp extract fdiv syntax keyword mushFunction contained filter filterbool findable first firstof syntax keyword mushFunction contained flags flip floor floordiv fmod fold syntax keyword mushFunction contained folderstats followers following foreach syntax keyword mushFunction contained fraction fullname functions get get_eval grab syntax keyword mushFunction contained graball grep grepi gt gte hasattr hasattrp syntax keyword mushFunction contained hasattrpval hasattrval hasdivpower hasflag syntax keyword mushFunction contained haspower haspowergroup hastype height hidden syntax keyword mushFunction contained home host hostname html idle idlesecs syntax keyword mushFunction contained idle_average idle_times idle_total if ifelse syntax keyword mushFunction contained ilev iname inc index indiv indivall insert syntax keyword mushFunction contained inum ipaddr isdaylight isdbref isint isnum syntax keyword mushFunction contained isword itemize items iter itext last lattr syntax keyword mushFunction contained lcon lcstr ldelete ldivisions left lemit syntax keyword mushFunction contained level lexits lflags link list lit ljust lmath syntax keyword mushFunction contained ln lnum loc localize locate lock loctree log syntax keyword mushFunction contained lparent lplayers lports lpos lsearch lsearchr syntax keyword mushFunction contained lstats lt lte lthings lvcon lvexits lvplayers syntax keyword mushFunction contained lvthings lwho mail maildstats mailfrom syntax keyword mushFunction contained mailfstats mailstats mailstatus mailsubject syntax keyword mushFunction contained mailtime map match matchall max mean median syntax keyword mushFunction contained member merge mid min mix mod modulo modulus syntax keyword mushFunction contained money mtime mudname mul munge mwho name nand syntax keyword mushFunction contained nattr ncon nearby neq nexits next nor not syntax keyword mushFunction contained nplayers nsemit nslemit nsoemit nspemit syntax keyword mushFunction contained nsremit nszemit nthings null num nvcon syntax keyword mushFunction contained nvexits nvplayers nvthings obj objeval objid syntax keyword mushFunction contained objmem oemit ooref open or ord orflags syntax keyword mushFunction contained orlflags orlpowers orpowers owner parent syntax keyword mushFunction contained parse pcreate pemit pi pickrand playermem syntax keyword mushFunction contained pmatch poll ports pos poss power powergroups syntax keyword mushFunction contained powers powover program prompt pueblo quitprog syntax keyword mushFunction contained quota r rand randword recv regedit regeditall syntax keyword mushFunction contained regeditalli regediti regmatch regmatchi syntax keyword mushFunction contained regrab regraball regraballi regrabi regrep syntax keyword mushFunction contained regrepi remainder remit remove repeat replace syntax keyword mushFunction contained rest restarts restarttime reswitch syntax keyword mushFunction contained reswitchall reswitchalli reswitchi reverse syntax keyword mushFunction contained revwords right rjust rloc rnum room root syntax keyword mushFunction contained round s scan scramble search secs secure sent syntax keyword mushFunction contained set setdiff setinter setq setr setunion sha0 syntax keyword mushFunction contained shl shr shuffle sign signal sin sort sortby syntax keyword mushFunction contained soundex soundlike soundslike space spellnum syntax keyword mushFunction contained splice sql sqlescape sqrt squish ssl syntax keyword mushFunction contained starttime stats stddev step strcat strinsert syntax keyword mushFunction contained stripaccents stripansi strlen strmatch syntax keyword mushFunction contained strreplace sub subj switch switchall t table syntax keyword mushFunction contained tag tagwrap tan tel terminfo textfile syntax keyword mushFunction contained tilde2blank time timefmt timestring tr syntax keyword mushFunction contained trigger trim trimpenn trimtiny trunc type u syntax keyword mushFunction contained ucstr udefault ufun uldefault ulocal updiv syntax keyword mushFunction contained utctime v vadd val valid vcross vdim vdot syntax keyword mushFunction contained version visible vmag vmax vmin vmul vsub syntax keyword mushFunction contained vtattr vtcount vtcreate vtdestroy vtlcon syntax keyword mushFunction contained vtloc vtlocate vtmaster vtname vtref vttel syntax keyword mushFunction contained vunit wait where width wipe wordpos words syntax keyword mushFunction contained wrap xcon xexits xget xor xplayers xthings syntax keyword mushFunction contained xvcon xvexits xvplayers xvthings zemit zfun syntax keyword mushFunction contained zmwho zone zwho " only highligh functions when they have an in-bracket immediately after syntax match mushFunctionBrackets "\i*(" contains=mushFunction " " regular mush commands syntax keyword mushAtCommandList contained @ALLHALT @ALLQUOTA @ASSERT @ATRCHOWN @ATRLOCK @ATTRIBUTE @BOOT syntax keyword mushAtCommandList contained @BREAK @CEMIT @CHANNEL @CHAT @CHOWN @CHOWNALL @CHZONE @CHZONEALL syntax keyword mushAtCommandList contained @CLOCK @CLONE @COBJ @COMMAND @CONFIG @CPATTR @CREATE @CRPLOG @DBCK syntax keyword mushAtCommandList contained @DECOMPILE @DESTROY @DIG @DISABLE @DIVISION @DOING @DOLIST @DRAIN syntax keyword mushAtCommandList contained @DUMP @EDIT @ELOCK @EMIT @EMPOWER @ENABLE @ENTRANCES @EUNLOCK @FIND syntax keyword mushAtCommandList contained @FIRSTEXIT @FLAG @FORCE @FUNCTION @EDIT @GREP @HALT @HIDE @HOOK @KICK syntax keyword mushAtCommandList contained @LEMIT @LEVEL @LINK @LIST @LISTMOTD @LOCK @LOG @LOGWIPE @LSET @MAIL @MALIAS syntax keyword mushAtCommandList contained @MAP @MOTD @MVATTR @NAME @NEWPASSWORD @NOTIFY @NSCEMIT @NSEMIT @NSLEMIT syntax keyword mushAtCommandList contained @NSOEMIT @NSPEMIT @NSPEMIT @NSREMIT @NSZEMIT @NUKE @OEMIT @OPEN @PARENT @PASSWORD syntax keyword mushAtCommandList contained @PCREATE @PEMIT @POLL @POOR @POWERLEVEL @PROGRAM @PROMPT @PS @PURGE @QUOTA syntax keyword mushAtCommandList contained @READCACHE @RECYCLE @REJECTMOTD @REMIT @RESTART @SCAN @SEARCH @SELECT @SET syntax keyword mushAtCommandList contained @SHUTDOWN @SITELOCK @SNOOP @SQL @SQUOTA @STATS @SWITCH @SWEEP @SWITCH @TELEPORT syntax keyword mushAtCommandList contained @TRIGGER @ULOCK @UNDESTROY @UNLINK @UNLOCK @UNRECYCLE @UPTIME @UUNLOCK @VERB syntax keyword mushAtCommandList contained @VERSION @WAIT @WALL @WARNINGS @WCHECK @WHEREIS @WIPE @ZCLONE @ZEMIT syntax match mushCommand "@\i\I*" contains=mushAtCommandList syntax keyword mushCommand AHELP ANEWS ATTRIB_SET BRIEF BRIEF BUY CHANGES DESERT syntax keyword mushCommand DISMISS DROP EMPTY ENTER EXAMINE FOLLOW GET GIVE GOTO syntax keyword mushCommand HELP HUH_COMMAND INVENTORY INVENTORY LOOK LEAVE LOOK syntax keyword mushCommand GOTO NEWS PAGE PAGE POSE RULES SAY SCORE SEMIPOSE syntax keyword mushCommand SPECIALNEWS TAKE TEACH THINK UNFOLLOW USE WHISPER WHISPER syntax keyword mushCommand WARN_ON_MISSING WHISPER WITH syntax match mushSpecial "\*\|!\|=\|-\|\\\|+" syntax match mushSpecial2 contained "\*" syn region mushString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=mushSpecial,mushSpecial2,@Spell syntax match mushIdentifier "&[^ ]\+" syntax match mushVariable "%r\|%t\|%cr\|%[A-Za-z0-9]\+\|%#\|##\|here" " numbers syntax match mushNumber +[0-9]\++ " A comment line starts with a or # or " at the start of the line " or an @@ syntax keyword mushTodo contained TODO FIXME XXX syntax cluster mushCommentGroup contains=mushTodo syntax match mushComment "^\s*@@.*$" contains=mushTodo syntax match mushComment "^#[^define|^ifdef|^else|^pragma|^ifndef|^echo|^elif|^undef|^warning].*$" contains=mushTodo syntax match mushComment "^#$" contains=mushTodo syntax region mushComment matchgroup=mushCommentStart start="/@@" end="@@/" contains=@mushCommentGroup,mushCommentStartError,mushCommentString,@Spell syntax region mushCommentString contained start=+L\=\\\@" skip="\\$" end="$" end="//"me=s-1 contains=mushComment syn match mushPreCondit display "^\s*\(%:\|#\)\s*\(else\|endif\)\>" syn cluster mushPreProcGroup contains=mushPreCondit,mushIncluded,mushInclude,mushDefine,mushSpecial,mushString,mushCommentSkip,mushCommentString,@mushCommentGroup,mushCommentStartError syn region mushIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match mushIncluded display contained "<[^>]*>" syn match mushInclude display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=mushIncluded syn region mushDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@mushPreProcGroup,@Spell syn region mushPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@mushPreProcGroup syntax region mushFuncBoundaries start="\[" end="\]" contains=mushFunction,mushFlag,mushAttributes,mushNumber,mushCommand,mushVariable,mushSpecial2 " FLAGS syntax keyword mushFlag PLAYER ABODE BUILDER CHOWN_OK DARK FLOATING syntax keyword mushFlag GOING HAVEN INHERIT JUMP_OK KEY LINK_OK MONITOR syntax keyword mushFlag NOSPOOF OPAQUE QUIET STICKY TRACE UNFINDABLE VISUAL syntax keyword mushFlag WIZARD PARENT_OK ZONE AUDIBLE CONNECTED DESTROY_OK syntax keyword mushFlag ENTER_OK HALTED IMMORTAL LIGHT MYOPIC PUPPET TERSE syntax keyword mushFlag ROBOT SAFE TRANSPARENT VERBOSE CONTROL_OK COMMANDS syntax keyword mushAttribute aahear aclone aconnect adesc adfail adisconnect syntax keyword mushAttribute adrop aefail aenter afail agfail ahear akill syntax keyword mushAttribute aleave alfail alias amhear amove apay arfail syntax keyword mushAttribute asucc atfail atport aufail ause away charges syntax keyword mushAttribute cost desc dfail drop ealias efail enter fail syntax keyword mushAttribute filter forwardlist gfail idesc idle infilter syntax keyword mushAttribute inprefix kill lalias last lastsite leave lfail syntax keyword mushAttribute listen move odesc odfail odrop oefail oenter syntax keyword mushAttribute ofail ogfail okill oleave olfail omove opay syntax keyword mushAttribute orfail osucc otfail otport oufail ouse oxenter syntax keyword mushAttribute oxleave oxtport pay prefix reject rfail runout syntax keyword mushAttribute semaphore sex startup succ tfail tport ufail syntax keyword mushAttribute use va vb vc vd ve vf vg vh vi vj vk vl vm vn syntax keyword mushAttribute vo vp vq vr vs vt vu vv vw vx vy vz " The default methods for highlighting. Can be overridden later hi def link mushAttribute Constant hi def link mushCommand Function hi def link mushNumber Number hi def link mushSetting PreProc hi def link mushFunction Statement hi def link mushVariable Identifier hi def link mushSpecial Special hi def link mushTodo Todo hi def link mushFlag Special hi def link mushIdentifier Identifier hi def link mushDefine Macro hi def link mushPreProc PreProc hi def link mushPreProcGroup PreProc hi def link mushPreCondit PreCondit hi def link mushIncluded cString hi def link mushInclude Include " Comments hi def link mushCommentStart mushComment hi def link mushComment Comment hi def link mushCommentString mushString let b:current_syntax = "mush" " mush: ts=17 PK!wiVVvim80/syntax/jess.vimnu[" Vim syntax file " Language: Jess " Maintainer: Paul Baleme " Last change: September 14, 2000 " Based on lisp.vim by : Dr. Charles E. Campbell, Jr. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=42,43,45,47-58,60-62,64-90,97-122,_ " Lists syn match jessSymbol ![^()'`,"; \t]\+! contained syn match jessBarSymbol !|..\{-}|! contained syn region jessList matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=jessAtom,jessBQList,jessConcat,jessDeclaration,jessList,jessNumber,jessSymbol,jessSpecial,jessFunc,jessKey,jessAtomMark,jessString,jessComment,jessBarSymbol,jessAtomBarSymbol,jessVar syn region jessBQList matchgroup=PreProc start="`(" skip="|.\{-}|" matchgroup=PreProc end=")" contains=jessAtom,jessBQList,jessConcat,jessDeclaration,jessList,jessNumber,jessSpecial,jessSymbol,jessFunc,jessKey,jessVar,jessAtomMark,jessString,jessComment,jessBarSymbol,jessAtomBarSymbol " Atoms syn match jessAtomMark "'" syn match jessAtom "'("me=e-1 contains=jessAtomMark nextgroup=jessAtomList syn match jessAtom "'[^ \t()]\+" contains=jessAtomMark syn match jessAtomBarSymbol !'|..\{-}|! contains=jessAtomMark syn region jessAtom start=+'"+ skip=+\\"+ end=+"+ syn region jessAtomList matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contained contains=jessAtomList,jessAtomNmbr0,jessString,jessComment,jessAtomBarSymbol syn match jessAtomNmbr "\<[0-9]\+" contained " Standard jess Functions and Macros syn keyword jessFunc * + ** - / < > <= >= <> = syn keyword jessFunc long longp syn keyword jessFunc abs agenda and syn keyword jessFunc assert assert-string bag syn keyword jessFunc batch bind bit-and syn keyword jessFunc bit-not bit-or bload syn keyword jessFunc bsave build call syn keyword jessFunc clear clear-storage close syn keyword jessFunc complement$ context count-query-results syn keyword jessFunc create$ syn keyword jessFunc delete$ div syn keyword jessFunc do-backward-chaining e syn keyword jessFunc engine eq eq* syn keyword jessFunc eval evenp exit syn keyword jessFunc exp explode$ external-addressp syn keyword jessFunc fact-slot-value facts fetch syn keyword jessFunc first$ float floatp syn keyword jessFunc foreach format gensym* syn keyword jessFunc get get-fact-duplication syn keyword jessFunc get-member get-multithreaded-io syn keyword jessFunc get-reset-globals get-salience-evaluation syn keyword jessFunc halt if implode$ syn keyword jessFunc import insert$ integer syn keyword jessFunc integerp intersection$ jess-version-number syn keyword jessFunc jess-version-string length$ syn keyword jessFunc lexemep list-function$ load-facts syn keyword jessFunc load-function load-package log syn keyword jessFunc log10 lowcase matches syn keyword jessFunc max member$ min syn keyword jessFunc mod modify multifieldp syn keyword jessFunc neq new not syn keyword jessFunc nth$ numberp oddp syn keyword jessFunc open or pi syn keyword jessFunc ppdeffunction ppdefglobal ddpefrule syn keyword jessFunc printout random read syn keyword jessFunc readline replace$ reset syn keyword jessFunc rest$ retract retract-string syn keyword jessFunc return round rules syn keyword jessFunc run run-query run-until-halt syn keyword jessFunc save-facts set set-fact-duplication syn keyword jessFunc set-factory set-member set-multithreaded-io syn keyword jessFunc set-node-index-hash set-reset-globals syn keyword jessFunc set-salience-evaluation set-strategy syn keyword jessFunc setgen show-deffacts show-deftemplates syn keyword jessFunc show-jess-listeners socket syn keyword jessFunc sqrt store str-cat syn keyword jessFunc str-compare str-index str-length syn keyword jessFunc stringp sub-string subseq$ syn keyword jessFunc subsetp sym-cat symbolp syn keyword jessFunc system throw time syn keyword jessFunc try undefadvice undefinstance syn keyword jessFunc undefrule union$ unwatch syn keyword jessFunc upcase view watch syn keyword jessFunc while syn match jessFunc "\" " jess Keywords (modifiers) syn keyword jessKey defglobal deffunction defrule syn keyword jessKey deffacts syn keyword jessKey defadvice defclass definstance " Standard jess Variables syn region jessVar start="?" end="[^a-zA-Z0-9]"me=e-1 " Strings syn region jessString start=+"+ skip=+\\"+ end=+"+ " Shared with Declarations, Macros, Functions "syn keyword jessDeclaration syn match jessNumber "[0-9]\+" syn match jessSpecial "\*[a-zA-Z_][a-zA-Z_0-9-]*\*" syn match jessSpecial !#|[^()'`,"; \t]\+|#! syn match jessSpecial !#x[0-9a-fA-F]\+! syn match jessSpecial !#o[0-7]\+! syn match jessSpecial !#b[01]\+! syn match jessSpecial !#\\[ -\~]! syn match jessSpecial !#[':][^()'`,"; \t]\+! syn match jessSpecial !#([^()'`,"; \t]\+)! syn match jessConcat "\s\.\s" syntax match jessParenError ")" " Comments syn match jessComment ";.*$" " synchronization syn sync lines=100 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link jessAtomNmbr jessNumber hi def link jessAtomMark jessMark hi def link jessAtom Identifier hi def link jessAtomBarSymbol Special hi def link jessBarSymbol Special hi def link jessComment Comment hi def link jessConcat Statement hi def link jessDeclaration Statement hi def link jessFunc Statement hi def link jessKey Type hi def link jessMark Delimiter hi def link jessNumber Number hi def link jessParenError Error hi def link jessSpecial Type hi def link jessString String hi def link jessVar Identifier let b:current_syntax = "jess" " vim: ts=18 PK!+F#F#vim80/syntax/abap.vimnu[" Vim ABAP syntax file " Language: SAP - ABAP/R4 " Revision: 2.1 " Maintainer: Marius Piedallu van Wyk " Last Change: 2013 Jun 13 " Comment: Thanks to EPI-USE Labs for all your assistance. :) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Always ignore case syn case ignore " Symbol Operators (space delimited) syn match abapSymbolOperator "\W+\W" syn match abapSymbolOperator "\W-\W" syn match abapSymbolOperator "\W/\W" syn match abapSymbolOperator "\W%\W" syn match abapSymbolOperator "\W=\W" syn match abapSymbolOperator "\W<\W" syn match abapSymbolOperator "\W>\W" syn match abapSymbolOperator "\W\*\W" syn match abapSymbolOperator "\W[<>]=\W" syn match abapSymbolOperator "\W<>\W" syn match abapSymbolOperator "\W\*\*\W" syn match abapSymbolOperator "\[\]" syn match abapSymbolOperator "->\*\?" syn match abapSymbolOperator "=>" syn match abapSymbolOperator "[()~:,\.&$]" " Literals syn region abapCharString matchgroup=abapCharString start="'" end="'" contains=abapCharStringEscape syn match abapCharStringEscape contained "''" syn region abapString matchgroup=abapString start="`" end="`" contains=abapStringEscape syn match abapStringEscape contained "``" syn match abapNumber "\-\=\<\d\+\>" syn region abapHex matchgroup=abapHex start="X'" end="'" setlocal iskeyword=48-57,_,A-Z,a-z,/ syn match abapNamespace "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\<\(EXIT\W\+FROM\W\+STEP\W\+LOOP\|EXIT\)\>" syn match abapComplexStatement "\<\(BEGIN\W\+OF\W\+\(BLOCK\|LINE\)\|BEGIN\W\+OF\)\>" syn match abapComplexStatement "\<\(END\W\+OF\W\+\(BLOCK\|LINE\)\|END\W\+OF\)\>" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\<\(PUBLIC\|PRIVATE\|PROTECTED\)\(\W\+SECTION\)\?\>" syn match abapComplexStatement "\" syn match abapComplexStatement "\<\(ALL\W\+OCCURRENCES\)\|\(\(FIRST\|LAST\)\W\+OCCURRENCE\)\>" syn match abapComplexStatement "\" syn match abapComplexStatement "\<\(UP\W\+\)\?TO\>" " hyphenated-word statements syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" syn match abapComplexStatement "\" " ABAP statements syn keyword abapStatement ADD ALIAS ALIASES ASSERT ASSIGN ASSIGNING AT syn keyword abapStatement BACK syn keyword abapStatement CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY syn keyword abapStatement DATA DEFINE DEFINITION DEFERRED DELETE DESCRIBE DETAIL DIVIDE DO syn keyword abapStatement ELSE ELSEIF ENDAT ENDCASE ENDCLASS ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDTRY ENDWHILE EVENT EVENTS EXEC EXIT EXPORT EXPORTING EXTRACT syn keyword abapStatement FETCH FIELDS FORM FORMAT FREE FROM FUNCTION syn keyword abapStatement GENERATE GET syn keyword abapStatement HIDE syn keyword abapStatement IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION syn keyword abapStatement LEAVE LIKE LINE LOAD LOCAL LOOP syn keyword abapStatement MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY syn keyword abapStatement ON OVERLAY OPTIONAL OTHERS syn keyword abapStatement PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT syn keyword abapStatement RAISE RANGES RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURNING ROLLBACK syn keyword abapStatement SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS syn keyword abapStatement TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES syn keyword abapStatement UNASSIGN ULINE UNPACK UPDATE syn keyword abapStatement WHEN WHILE WINDOW WRITE " More statemets syn keyword abapStatement LINES syn keyword abapStatement INTO GROUP BY HAVING ORDER BY SINGLE syn keyword abapStatement APPENDING CORRESPONDING FIELDS OF TABLE syn keyword abapStatement LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER ROWS CONNECTING syn keyword abapStatement OCCURS STRUCTURE OBJECT PROPERTY syn keyword abapStatement CASTING APPEND RAISING VALUE COLOR syn keyword abapStatement CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT syn keyword abapStatement ID NUMBER FOR TITLE OUTPUT " Special ABAP specific tables: syn match abapSpecialTables "\<\(sy\|\(hrp\|p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)-"me=e-1 contained syn match abapStructure "\<\w\+-[^\>]"me=e-2 contains=abapSpecialTables,abapStatement,abapComplexStatement syn match abapField "-\w\+"ms=s+1 " Pointer syn match abapSpecial "<\w\+>" " Abap common constants: syn keyword abapSpecial TRUE FALSE NULL SPACE " Includes syn region abapInclude start="include" end="." contains=abapComment " Types syn keyword abapTypes c n i p f d t x string xstring decfloat16 decfloat34 " Atritmitic operators syn keyword abapOperator abs sign ceil floor trunc frac acos asin atan cos sin tan syn keyword abapOperator cosh sinh tanh exp log log10 sqrt " String operators syn keyword abapStatement strlen xstrlen charlen numofchar dbmaxlen syn keyword abapOperator EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN " An error? Not strictly... but cannot think of reason this is intended. syn match abapError "\.\." " Comments syn region abapComment start="^\*" end="$" contains=abapTodo syn match abapComment "\".*" contains=abapTodo syn keyword abapTodo contained TODO NOTE syn match abapTodo "\#EC\W\+\w\+" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link abapError Error hi def link abapComment Comment hi def link abapInclude Include hi def link abapStatement Statement hi def link abapComplexStatement Statement hi def link abapSpecial Special hi def link abapNamespace Special hi def link abapSpecialTables Special hi def link abapSymbolOperator abapOperator hi def link abapOperator Operator hi def link abapCharString String hi def link abapString String hi def link abapFloat Float hi def link abapTypes Type hi def link abapSymbol Structure hi def link abapStructure Structure hi def link abapField Variable hi def link abapNumber Number hi def link abapHex Number let b:current_syntax = "abap" " vim: ts=8 sw=2 PK!ʋ9 9 vim80/syntax/lotos.vimnu[" Vim syntax file " Language: LOTOS (Language Of Temporal Ordering Specifications, IS8807) " Maintainer: Daniel Amyot " Last Change: Wed Aug 19 1998 " URL: http://lotos.csi.uottawa.ca/~damyot/vim/lotos.vim " This file is an adaptation of pascal.vim by Mario Eusebio " I'm not sure I understand all of the syntax highlight language, " but this file seems to do the job for standard LOTOS. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore "Comments in LOTOS are between (* and *) syn region lotosComment start="(\*" end="\*)" contains=lotosTodo "Operators [], [...], >>, ->, |||, |[...]|, ||, ;, !, ?, :, =, ,, := syn match lotosDelimiter "[][]" syn match lotosDelimiter ">>" syn match lotosDelimiter "->" syn match lotosDelimiter "\[>" syn match lotosDelimiter "[|;!?:=,]" "Regular keywords syn keyword lotosStatement specification endspec process endproc syn keyword lotosStatement where behaviour behavior syn keyword lotosStatement any let par accept choice hide of in syn keyword lotosStatement i stop exit noexit "Operators from the Abstract Data Types in IS8807 syn keyword lotosOperator eq ne succ and or xor implies iff syn keyword lotosOperator not true false syn keyword lotosOperator Insert Remove IsIn NotIn Union Ints syn keyword lotosOperator Minus Includes IsSubsetOf syn keyword lotosOperator lt le ge gt 0 "Sorts in IS8807 syn keyword lotosSort Boolean Bool FBoolean FBool Element syn keyword lotosSort Set String NaturalNumber Nat HexString syn keyword lotosSort HexDigit DecString DecDigit syn keyword lotosSort OctString OctDigit BitString Bit syn keyword lotosSort Octet OctetString "Keywords for ADTs syn keyword lotosType type endtype library endlib sorts formalsorts syn keyword lotosType eqns formaleqns opns formalopns forall ofsort is syn keyword lotosType for renamedby actualizedby sortnames opnnames syn keyword lotosType using syn sync lines=250 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link lotosStatement Statement hi def link lotosProcess Label hi def link lotosOperator Operator hi def link lotosSort Function hi def link lotosType Type hi def link lotosComment Comment hi def link lotosDelimiter String let b:current_syntax = "lotos" " vim: ts=8 PK!\%%vim80/syntax/limits.vimnu[" Vim syntax file " Language: limits(5) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword limitsTodo contained TODO FIXME XXX NOTE syn region limitsComment display oneline start='^\s*#' end='$' \ contains=limitsTodo,@Spell syn match limitsBegin display '^' \ nextgroup=limitsUser,limitsDefault,limitsComment \ skipwhite syn match limitsUser contained '[^ \t#*]\+' \ nextgroup=limitsLimit,limitsDeLimit skipwhite syn match limitsDefault contained '*' \ nextgroup=limitsLimit,limitsDeLimit skipwhite syn match limitsLimit contained '[ACDFMNRSTUKLP]' nextgroup=limitsNumber syn match limitsDeLimit contained '-' syn match limitsNumber contained '\d\+\>' nextgroup=limitsLimit skipwhite hi def link limitsTodo Todo hi def link limitsComment Comment hi def link limitsUser Keyword hi def link limitsDefault Macro hi def link limitsLimit Identifier hi def link limitsDeLimit Special hi def link limitsNumber Number let b:current_syntax = "limits" let &cpo = s:cpo_save unlet s:cpo_save PK!  vim80/syntax/cdl.vimnu[" Vim syntax file " Language: Comshare Dimension Definition Language " Maintainer: Raul Segura Acevedo " Last change: 2016 Sep 20 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif sy case ignore sy sync fromstart sy keyword cdlStatement dimension hierarchy group grouphierarchy schedule class sy keyword cdlType add update file category main altername removeall required notrequired sy keyword cdlConditional if then elseif else endif and or not cons rpt xlt sy keyword cdlFunction ChildOf IChildOf LeafChildOf DescendantOf IDescendantOf LeafDescendantOf MemberIs CountOf sy keyword cdlIdentifier contained id name desc description xlttype precision symbol curr_ name group_name rate_name sy keyword cdlIdentifier contained xcheck endbal accounttype natsign consolidate formula pctown usage periodicity sy match cdlIdentifier contained 'child\s*name' sy match cdlIdentifier contained 'parent\s*name' sy match cdlIdentifier contained 'grp\s*description' sy match cdlIdentifier contained 'grpchild\s*name' sy match cdlIdentifier contained 'grpparent\s*name' sy match cdlIdentifier contained 'preceding\s*member' sy match cdlIdentifier contained 'unit\s*name' sy match cdlIdentifier contained 'unit\s*id' sy match cdlIdentifier contained 'schedule\s*name' sy match cdlIdentifier contained 'schedule\s*id' sy match cdlString /\[[^]]*]/ contains=cdlRestricted,cdlNotSupported sy match cdlRestricted contained /[&*,_]/ " not supported sy match cdlNotSupported contained /[:"!']/ sy keyword cdlTodo contained TODO FIXME XXX sy cluster cdlCommentGroup contains=cdlTodo sy match cdlComment '//.*' contains=@cdlCommentGroup sy region cdlComment start="/\*" end="\*/" contains=@cdlCommentGroup fold sy match cdlCommentE "\*/" sy region cdlParen transparent start='(' end=')' contains=ALLBUT,cdlParenE,cdlRestricted,cdlNotSupported "sy region cdlParen transparent start='(' end=')' contains=cdlIdentifier,cdlComment,cdlParenWordE sy match cdlParenE ")" "sy match cdlParenWordE contained "\k\+" sy keyword cdlFxType allocation downfoot expr xltgain "sy keyword cdlFxType contained allocation downfoot expr xltgain "sy region cdlFx transparent start='\k\+(' end=')' contains=cdlConditional,cdlFunction,cdlString,cdlComment,cdlFxType set foldmethod=expr set foldexpr=(getline(v:lnum+1)=~'{'\|\|getline(v:lnum)=~'//\\s\\*\\{5}.*table')?'>1':1 %foldo! set foldmethod=manual let b:match_words='\:\:\:\:\' " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link cdlStatement Statement hi def link cdlType Type hi def link cdlFxType Type hi def link cdlIdentifier Identifier hi def link cdlString String hi def link cdlRestricted WarningMsg hi def link cdlNotSupported ErrorMsg hi def link cdlTodo Todo hi def link cdlComment Comment hi def link cdlCommentE ErrorMsg hi def link cdlParenE ErrorMsg hi def link cdlParenWordE ErrorMsg hi def link cdlFunction Function hi def link cdlConditional Conditional let b:current_syntax = "cdl" " vim: ts=8 PK!& vim80/syntax/sqlj.vimnu[" Vim syntax file " Language: sqlj " Maintainer: Andreas Fischbach " This file is based on sql.vim && java.vim (thanx) " with a handful of additional sql words and still " a subset of whatever standard " Last change: 31th Dec 2001 " au BufNewFile,BufRead *.sqlj so $VIM/syntax/sqlj.vim " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Read the Java syntax to start with source :p:h/java.vim " SQLJ extentions " The SQL reserved words, defined as keywords. syn case ignore syn keyword sqljSpecial null syn keyword sqljKeyword access add as asc by check cluster column syn keyword sqljKeyword compress connect current decimal default syn keyword sqljKeyword desc else exclusive file for from group syn keyword sqljKeyword having identified immediate increment index syn keyword sqljKeyword initial into is level maxextents mode modify syn keyword sqljKeyword nocompress nowait of offline on online start syn keyword sqljKeyword successful synonym table then to trigger uid syn keyword sqljKeyword unique user validate values view whenever syn keyword sqljKeyword where with option order pctfree privileges syn keyword sqljKeyword public resource row rowlabel rownum rows syn keyword sqljKeyword session share size smallint syn keyword sqljKeyword fetch database context iterator field join syn keyword sqljKeyword foreign outer inner isolation left right syn keyword sqljKeyword match primary key syn keyword sqljOperator not and or syn keyword sqljOperator in any some all between exists syn keyword sqljOperator like escape syn keyword sqljOperator union intersect minus syn keyword sqljOperator prior distinct syn keyword sqljOperator sysdate syn keyword sqljOperator max min avg sum count hex syn keyword sqljStatement alter analyze audit comment commit create syn keyword sqljStatement delete drop explain grant insert lock noaudit syn keyword sqljStatement rename revoke rollback savepoint select set syn keyword sqljStatement truncate update begin work syn keyword sqljType char character date long raw mlslabel number syn keyword sqljType rowid varchar varchar2 float integer syn keyword sqljType byte text serial " Strings and characters: syn region sqljString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region sqljString start=+'+ skip=+\\\\\|\\"+ end=+'+ " Numbers: syn match sqljNumber "-\=\<\d*\.\=[0-9_]\>" " PreProc syn match sqljPre "#sql" " Comments: syn region sqljComment start="/\*" end="\*/" syn match sqlComment "--.*" syn sync ccomment sqljComment " The default methods for highlighting. Can be overridden later. hi def link sqljComment Comment hi def link sqljKeyword sqljSpecial hi def link sqljNumber Number hi def link sqljOperator sqljStatement hi def link sqljSpecial Special hi def link sqljStatement Statement hi def link sqljString String hi def link sqljType Type hi def link sqljPre PreProc let b:current_syntax = "sqlj" PK!~5//vim80/syntax/lftp.vimnu[" Vim syntax file " Language: lftp(1) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2007-06-17 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword+=- syn region lftpComment display oneline start='#' end='$' \ contains=lftpTodo,@Spell syn keyword lftpTodo contained TODO FIXME XXX NOTE syn region lftpString contained display \ start=+"+ skip=+\\$\|\\"+ end=+"+ end=+$+ syn match lftpNumber contained display '\<\d\+\(\.\d\+\)\=\>' syn keyword lftpBoolean contained yes no on off true false syn keyword lftpInterval contained infinity inf never forever syn match lftpInterval contained '\<\(\d\+\(\.\d\+\)\=[dhms]\)\+\>' syn keyword lftpKeywords alias anon at bookmark cache cat cd chmod close \ cls command debug du echo exit fg find get \ get1 glob help history jobs kill lcd lftp \ lpwd ls mget mirror mkdir module more mput \ mrm mv nlist open pget put pwd queue quote \ reget recls rels renlist repeat reput rm \ rmdir scache site source suspend user version \ wait zcat zmore syn region lftpSet matchgroup=lftpKeywords \ start="set" end=";" end="$" \ contains=lftpString,lftpNumber,lftpBoolean, \ lftpInterval,lftpSettingsPrefix,lftpSettings syn match lftpSettingsPrefix contained '\<\%(bmk\|cache\|cmd\|color\|dns\):' syn match lftpSettingsPrefix contained '\<\%(file\|fish\|ftp\|hftp\):' syn match lftpSettingsPrefix contained '\<\%(http\|https\|mirror\|module\):' syn match lftpSettingsPrefix contained '\<\%(net\|sftp\|ssl\|xfer\):' " bmk: syn keyword lftpSettings contained save-p[asswords] " cache: syn keyword lftpSettings contained cache-em[pty-listings] en[able] \ exp[ire] siz[e] " cmd: syn keyword lftpSettings contained at[-exit] cls-c[ompletion-default] \ cls-d[efault] cs[h-history] \ default-p[rotocol] default-t[itle] syn keyword lftpSettings contained fai[l-exit] in[teractive] \ lo[ng-running] ls[-default] mo[ve-background] \ prom[pt] \ rem[ote-completion] \ save-c[wd-history] save-r[l-history] \ set-t[erm-status] statu[s-interval] \ te[rm-status] verb[ose] verify-h[ost] \ verify-path verify-path[-cached] " color: syn keyword lftpSettings contained dir[-colors] use-c[olor] " dns: syn keyword lftpSettings contained S[RV-query] cache-en[able] \ cache-ex[pire] cache-s[ize] \ fat[al-timeout] o[rder] use-fo[rk] " file: syn keyword lftpSettings contained ch[arset] " fish: syn keyword lftpSettings contained connect[-program] sh[ell] " ftp: syn keyword lftpSettings contained acct anon-p[ass] anon-u[ser] \ au[to-sync-mode] b[ind-data-socket] \ ch[arset] cli[ent] dev[ice-prefix] \ fi[x-pasv-address] fxp-f[orce] \ fxp-p[assive-source] h[ome] la[ng] \ list-e[mpty-ok] list-o[ptions] \ nop[-interval] pas[sive-mode] \ port-i[pv4] port-r[ange] prox[y] \ rest-l[ist] rest-s[tor] \ retry-530 retry-530[-anonymous] \ sit[e-group] skey-a[llow] \ skey-f[orce] ssl-allow \ ssl-allow[-anonymous] ssl-au[th] \ ssl-f[orce] ssl-protect-d[ata] \ ssl-protect-l[ist] stat-[interval] \ sy[nc-mode] timez[one] use-a[bor] \ use-fe[at] use-fx[p] use-hf[tp] \ use-mdtm use-mdtm[-overloaded] \ use-ml[sd] use-p[ret] use-q[uit] \ use-site-c[hmod] use-site-i[dle] \ use-site-u[time] use-siz[e] \ use-st[at] use-te[lnet-iac] \ verify-a[ddress] verify-p[ort] \ w[eb-mode] " hftp: syn keyword lftpSettings contained w[eb-mode] cache prox[y] \ use-au[thorization] use-he[ad] use-ty[pe] " http: syn keyword lftpSettings contained accept accept-c[harset] \ accept-l[anguage] cache coo[kie] \ pos[t-content-type] prox[y] \ put-c[ontent-type] put-m[ethod] ref[erer] \ set-c[ookies] user[-agent] " https: syn keyword lftpSettings contained prox[y] " mirror: syn keyword lftpSettings contained exc[lude-regex] o[rder] \ parallel-d[irectories] \ parallel-t[ransfer-count] use-p[get-n] " module: syn keyword lftpSettings contained pat[h] " net: syn keyword lftpSettings contained connection-l[imit] \ connection-t[akeover] id[le] limit-m[ax] \ limit-r[ate] limit-total-m[ax] \ limit-total-r[ate] max-ret[ries] no-[proxy] \ pe[rsist-retries] reconnect-interval-b[ase] \ reconnect-interval-ma[x] \ reconnect-interval-mu[ltiplier] \ socket-bind-ipv4 socket-bind-ipv6 \ socket-bu[ffer] socket-m[axseg] timeo[ut] " sftp: syn keyword lftpSettings contained connect[-program] \ max-p[ackets-in-flight] prot[ocol-version] \ ser[ver-program] size-r[ead] size-w[rite] " ssl: syn keyword lftpSettings contained ca-f[ile] ca-p[ath] ce[rt-file] \ crl-f[ile] crl-p[ath] k[ey-file] \ verify-c[ertificate] " xfer: syn keyword lftpSettings contained clo[bber] dis[k-full-fatal] \ eta-p[eriod] eta-t[erse] mak[e-backup] \ max-red[irections] ra[te-period] hi def link lftpComment Comment hi def link lftpTodo Todo hi def link lftpString String hi def link lftpNumber Number hi def link lftpBoolean Boolean hi def link lftpInterval Number hi def link lftpKeywords Keyword hi def link lftpSettingsPrefix PreProc hi def link lftpSettings Type let b:current_syntax = "lftp" let &cpo = s:cpo_save unlet s:cpo_save PK!øЍvim80/syntax/snnsres.vimnu[" Vim syntax file " Language: SNNS result file " Maintainer: Davide Alberani " Last Change: 28 Apr 2001 " Version: 0.2 " URL: http://digilander.iol.it/alberanid/vim/syntax/snnsres.vim " " SNNS http://www-ra.informatik.uni-tuebingen.de/SNNS/ " is a simulator for neural networks. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " the accepted fields in the header syn match snnsresNoHeader "No\. of patterns\s*:\s*" contained syn match snnsresNoHeader "No\. of input units\s*:\s*" contained syn match snnsresNoHeader "No\. of output units\s*:\s*" contained syn match snnsresNoHeader "No\. of variable input dimensions\s*:\s*" contained syn match snnsresNoHeader "No\. of variable output dimensions\s*:\s*" contained syn match snnsresNoHeader "Maximum input dimensions\s*:\s*" contained syn match snnsresNoHeader "Maximum output dimensions\s*:\s*" contained syn match snnsresNoHeader "startpattern\s*:\s*" contained syn match snnsresNoHeader "endpattern\s*:\s*" contained syn match snnsresNoHeader "input patterns included" contained syn match snnsresNoHeader "teaching output included" contained syn match snnsresGen "generated at.*" contained contains=snnsresNumbers syn match snnsresGen "SNNS result file [Vv]\d\.\d" contained contains=snnsresNumbers " the header, what is not an accepted field, is an error syn region snnsresHeader start="^SNNS" end="^\s*[-+\.]\=[0-9#]"me=e-2 contains=snnsresNoHeader,snnsresNumbers,snnsresGen " numbers inside the header syn match snnsresNumbers "\d" contained syn match snnsresComment "#.*$" contains=snnsresTodo syn keyword snnsresTodo TODO XXX FIXME contained hi def link snnsresGen Statement hi def link snnsresHeader Statement hi def link snnsresNoHeader Define hi def link snnsresNumbers Number hi def link snnsresComment Comment hi def link snnsresTodo Todo let b:current_syntax = "snnsres" " vim: ts=8 sw=2 PK!T_vvvim80/syntax/bzl.vimnu[" Vim syntax file " Language: Bazel (http://bazel.io) " Maintainer: David Barnett (https://github.com/google/vim-ft-bzl) " Last Change: 2015 Aug 11 if exists('b:current_syntax') finish endif runtime! syntax/python.vim let b:current_syntax = 'bzl' syn region bzlRule start='^\w\+($' end='^)\n*' transparent fold syn region bzlList start='\[' end='\]' transparent fold PK!%V%Vvim80/syntax/sudoers.vimnu[" Vim syntax file " Language: sudoers(5) configuration files " Previous Maintainer: Nikolai Weibull " Latest Revision: 2011-02-24 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " TODO: instead of 'skipnl', we would like to match a specific group that would " match \\$ and then continue with the nextgroup, actually, the skipnl doesn't " work... " TODO: treat 'ALL' like a special (yay, a bundle of new rules!!!) syn match sudoersUserSpec '^' nextgroup=@sudoersUserInSpec skipwhite syn match sudoersSpecEquals contained '=' nextgroup=@sudoersCmndSpecList skipwhite syn cluster sudoersCmndSpecList contains=sudoersUserRunasBegin,sudoersPASSWD,@sudoersCmndInSpec syn keyword sudoersTodo contained TODO FIXME XXX NOTE syn region sudoersComment display oneline start='#' end='$' contains=sudoersTodo syn keyword sudoersAlias User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl syn keyword sudoersAlias Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl syn keyword sudoersAlias Cmnd_Alias nextgroup=sudoersCmndAlias skipwhite skipnl syn match sudoersUserAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersUserAliasEquals skipwhite skipnl syn match sudoersUserNameInList contained '\<\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl syn match sudoersUIDInList contained '#\d\+\>' nextgroup=@sudoersUserList skipwhite skipnl syn match sudoersGroupInList contained '%\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl syn match sudoersUserNetgroupInList contained '+\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl syn match sudoersUserAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserList skipwhite skipnl syn match sudoersUserName contained '\<\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersUID contained '#\d\+\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersGroup contained '%\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersUserNetgroup contained '+\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersUserAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersUserNameInSpec contained '\<\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl syn match sudoersUIDInSpec contained '#\d\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl syn match sudoersGroupInSpec contained '%\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl syn match sudoersUserNetgroupInSpec contained '+\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl syn match sudoersUserAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserSpec skipwhite skipnl syn match sudoersUserNameInRunas contained '\<\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl syn match sudoersUIDInRunas contained '#\d\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl syn match sudoersGroupInRunas contained '%\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl syn match sudoersUserNetgroupInRunas contained '+\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl syn match sudoersUserAliasInRunas contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserRunas skipwhite skipnl syn match sudoersHostAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersHostAliasEquals skipwhite skipnl syn match sudoersHostNameInList contained '\<\l\+\>' nextgroup=@sudoersHostList skipwhite skipnl syn match sudoersIPAddrInList contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostList skipwhite skipnl syn match sudoersNetworkInList contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostList skipwhite skipnl syn match sudoersHostNetgroupInList contained '+\l\+\>' nextgroup=@sudoersHostList skipwhite skipnl syn match sudoersHostAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersHostList skipwhite skipnl syn match sudoersHostName contained '\<\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersIPAddr contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersNetwork contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersHostNetgroup contained '+\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersHostAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersHostNameInSpec contained '\<\l\+\>' nextgroup=@sudoersHostSpec skipwhite skipnl syn match sudoersIPAddrInSpec contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostSpec skipwhite skipnl syn match sudoersNetworkInSpec contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostSpec skipwhite skipnl syn match sudoersHostNetgroupInSpec contained '+\l\+\>' nextgroup=@sudoersHostSpec skipwhite skipnl syn match sudoersHostAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersHostSpec skipwhite skipnl syn match sudoersCmndAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersCmndAliasEquals skipwhite skipnl syn match sudoersCmndNameInList contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndList,sudoersCommandEmpty,sudoersCommandArgs skipwhite syn match sudoersCmndAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersCmndList skipwhite skipnl syn match sudoersCmndNameInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndSpec,sudoersCommandEmptyInSpec,sudoersCommandArgsInSpec skipwhite syn match sudoersCmndAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersCmndSpec skipwhite skipnl syn match sudoersUserAliasEquals contained '=' nextgroup=@sudoersUserInList skipwhite skipnl syn match sudoersUserListComma contained ',' nextgroup=@sudoersUserInList skipwhite skipnl syn match sudoersUserListColon contained ':' nextgroup=sudoersUserAlias skipwhite skipnl syn cluster sudoersUserList contains=sudoersUserListComma,sudoersUserListColon syn match sudoersUserSpecComma contained ',' nextgroup=@sudoersUserInSpec skipwhite skipnl syn cluster sudoersUserSpec contains=sudoersUserSpecComma,@sudoersHostInSpec syn match sudoersUserRunasBegin contained '(' nextgroup=@sudoersUserInRunas skipwhite skipnl syn match sudoersUserRunasComma contained ',' nextgroup=@sudoersUserInRunas skipwhite skipnl syn match sudoersUserRunasEnd contained ')' nextgroup=sudoersPASSWD,@sudoersCmndInSpec skipwhite skipnl syn cluster sudoersUserRunas contains=sudoersUserRunasComma,@sudoersUserInRunas,sudoersUserRunasEnd syn match sudoersHostAliasEquals contained '=' nextgroup=@sudoersHostInList skipwhite skipnl syn match sudoersHostListComma contained ',' nextgroup=@sudoersHostInList skipwhite skipnl syn match sudoersHostListColon contained ':' nextgroup=sudoersHostAlias skipwhite skipnl syn cluster sudoersHostList contains=sudoersHostListComma,sudoersHostListColon syn match sudoersHostSpecComma contained ',' nextgroup=@sudoersHostInSpec skipwhite skipnl syn cluster sudoersHostSpec contains=sudoersHostSpecComma,sudoersSpecEquals syn match sudoersCmndAliasEquals contained '=' nextgroup=@sudoersCmndInList skipwhite skipnl syn match sudoersCmndListComma contained ',' nextgroup=@sudoersCmndInList skipwhite skipnl syn match sudoersCmndListColon contained ':' nextgroup=sudoersCmndAlias skipwhite skipnl syn cluster sudoersCmndList contains=sudoersCmndListComma,sudoersCmndListColon syn match sudoersCmndSpecComma contained ',' nextgroup=@sudoersCmndSpecList skipwhite skipnl syn match sudoersCmndSpecColon contained ':' nextgroup=@sudoersUserInSpec skipwhite skipnl syn cluster sudoersCmndSpec contains=sudoersCmndSpecComma,sudoersCmndSpecColon syn cluster sudoersUserInList contains=sudoersUserNegationInList,sudoersUserNameInList,sudoersUIDInList,sudoersGroupInList,sudoersUserNetgroupInList,sudoersUserAliasInList syn cluster sudoersHostInList contains=sudoersHostNegationInList,sudoersHostNameInList,sudoersIPAddrInList,sudoersNetworkInList,sudoersHostNetgroupInList,sudoersHostAliasInList syn cluster sudoersCmndInList contains=sudoersCmndNegationInList,sudoersCmndNameInList,sudoersCmndAliasInList syn cluster sudoersUser contains=sudoersUserNegation,sudoersUserName,sudoersUID,sudoersGroup,sudoersUserNetgroup,sudoersUserAliasRef syn cluster sudoersHost contains=sudoersHostNegation,sudoersHostName,sudoersIPAddr,sudoersNetwork,sudoersHostNetgroup,sudoersHostAliasRef syn cluster sudoersUserInSpec contains=sudoersUserNegationInSpec,sudoersUserNameInSpec,sudoersUIDInSpec,sudoersGroupInSpec,sudoersUserNetgroupInSpec,sudoersUserAliasInSpec syn cluster sudoersHostInSpec contains=sudoersHostNegationInSpec,sudoersHostNameInSpec,sudoersIPAddrInSpec,sudoersNetworkInSpec,sudoersHostNetgroupInSpec,sudoersHostAliasInSpec syn cluster sudoersUserInRunas contains=sudoersUserNegationInRunas,sudoersUserNameInRunas,sudoersUIDInRunas,sudoersGroupInRunas,sudoersUserNetgroupInRunas,sudoersUserAliasInRunas syn cluster sudoersCmndInSpec contains=sudoersCmndNegationInSpec,sudoersCmndNameInSpec,sudoersCmndAliasInSpec syn match sudoersUserNegationInList contained '!\+' nextgroup=@sudoersUserInList skipwhite skipnl syn match sudoersHostNegationInList contained '!\+' nextgroup=@sudoersHostInList skipwhite skipnl syn match sudoersCmndNegationInList contained '!\+' nextgroup=@sudoersCmndInList skipwhite skipnl syn match sudoersUserNegation contained '!\+' nextgroup=@sudoersUser skipwhite skipnl syn match sudoersHostNegation contained '!\+' nextgroup=@sudoersHost skipwhite skipnl syn match sudoersUserNegationInSpec contained '!\+' nextgroup=@sudoersUserInSpec skipwhite skipnl syn match sudoersHostNegationInSpec contained '!\+' nextgroup=@sudoersHostInSpec skipwhite skipnl syn match sudoersUserNegationInRunas contained '!\+' nextgroup=@sudoersUserInRunas skipwhite skipnl syn match sudoersCmndNegationInSpec contained '!\+' nextgroup=@sudoersCmndInSpec skipwhite skipnl syn match sudoersCommandArgs contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgs,@sudoersCmndList skipwhite syn match sudoersCommandEmpty contained '""' nextgroup=@sudoersCmndList skipwhite skipnl syn match sudoersCommandArgsInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgsInSpec,@sudoersCmndSpec skipwhite syn match sudoersCommandEmptyInSpec contained '""' nextgroup=@sudoersCmndSpec skipwhite skipnl syn keyword sudoersDefaultEntry Defaults nextgroup=sudoersDefaultTypeAt,sudoersDefaultTypeColon,sudoersDefaultTypeGreaterThan,@sudoersParameter skipwhite skipnl syn match sudoersDefaultTypeAt contained '@' nextgroup=@sudoersHost skipwhite skipnl syn match sudoersDefaultTypeColon contained ':' nextgroup=@sudoersUser skipwhite skipnl syn match sudoersDefaultTypeGreaterThan contained '>' nextgroup=@sudoersUser skipwhite skipnl " TODO: could also deal with special characters here syn match sudoersBooleanParameter contained '!' nextgroup=sudoersBooleanParameter skipwhite skipnl syn keyword sudoersBooleanParameter contained skipwhite skipnl \ always_set_home \ authenticate \ closefrom_override \ env_editor \ env_reset \ fqdn \ ignore_dot \ ignore_local_sudoers \ insults \ log_host \ log_year \ long_otp_prompt \ mail_always \ mail_badpass \ mail_no_host \ mail_no_perms \ mail_no_user \ noexec \ path_info \ passprompt_override \ preserve_groups \ requiretty \ root_sudo \ rootpw \ runaspw \ set_home \ set_logname \ setenv \ shell_noargs \ stay_setuid \ targetpw \ tty_tickets \ visiblepw syn keyword sudoersIntegerParameter contained \ nextgroup=sudoersIntegerParameterEquals \ skipwhite skipnl \ closefrom \ passwd_tries \ loglinelen \ passwd_timeout \ timestamp_timeout \ umask syn keyword sudoersStringParameter contained \ nextgroup=sudoersStringParameterEquals \ skipwhite skipnl \ badpass_message \ editor \ mailsub \ noexec_file \ passprompt \ runas_default \ syslog_badpri \ syslog_goodpri \ sudoers_locale \ timestampdir \ timestampowner \ askpass \ env_file \ exempt_group \ lecture \ lecture_file \ listpw \ logfile \ mailerflags \ mailerpath \ mailfrom \ mailto \ secure_path \ syslog \ verifypw syn keyword sudoersListParameter contained \ nextgroup=sudoersListParameterEquals \ skipwhite skipnl \ env_check \ env_delete \ env_keep syn match sudoersParameterListComma contained ',' nextgroup=@sudoersParameter skipwhite skipnl syn cluster sudoersParameter contains=sudoersBooleanParameter,sudoersIntegerParameter,sudoersStringParameter,sudoersListParameter syn match sudoersIntegerParameterEquals contained '[+-]\==' nextgroup=sudoersIntegerValue skipwhite skipnl syn match sudoersStringParameterEquals contained '[+-]\==' nextgroup=sudoersStringValue skipwhite skipnl syn match sudoersListParameterEquals contained '[+-]\==' nextgroup=sudoersListValue skipwhite skipnl syn match sudoersIntegerValue contained '\d\+' nextgroup=sudoersParameterListComma skipwhite skipnl syn match sudoersStringValue contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl syn region sudoersStringValue contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl syn match sudoersListValue contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl syn region sudoersListValue contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl syn match sudoersPASSWD contained '\%(NO\)\=PASSWD:' nextgroup=@sudoersCmndInSpec skipwhite hi def link sudoersSpecEquals Operator hi def link sudoersTodo Todo hi def link sudoersComment Comment hi def link sudoersAlias Keyword hi def link sudoersUserAlias Identifier hi def link sudoersUserNameInList String hi def link sudoersUIDInList Number hi def link sudoersGroupInList PreProc hi def link sudoersUserNetgroupInList PreProc hi def link sudoersUserAliasInList PreProc hi def link sudoersUserName String hi def link sudoersUID Number hi def link sudoersGroup PreProc hi def link sudoersUserNetgroup PreProc hi def link sudoersUserAliasRef PreProc hi def link sudoersUserNameInSpec String hi def link sudoersUIDInSpec Number hi def link sudoersGroupInSpec PreProc hi def link sudoersUserNetgroupInSpec PreProc hi def link sudoersUserAliasInSpec PreProc hi def link sudoersUserNameInRunas String hi def link sudoersUIDInRunas Number hi def link sudoersGroupInRunas PreProc hi def link sudoersUserNetgroupInRunas PreProc hi def link sudoersUserAliasInRunas PreProc hi def link sudoersHostAlias Identifier hi def link sudoersHostNameInList String hi def link sudoersIPAddrInList Number hi def link sudoersNetworkInList Number hi def link sudoersHostNetgroupInList PreProc hi def link sudoersHostAliasInList PreProc hi def link sudoersHostName String hi def link sudoersIPAddr Number hi def link sudoersNetwork Number hi def link sudoersHostNetgroup PreProc hi def link sudoersHostAliasRef PreProc hi def link sudoersHostNameInSpec String hi def link sudoersIPAddrInSpec Number hi def link sudoersNetworkInSpec Number hi def link sudoersHostNetgroupInSpec PreProc hi def link sudoersHostAliasInSpec PreProc hi def link sudoersCmndAlias Identifier hi def link sudoersCmndNameInList String hi def link sudoersCmndAliasInList PreProc hi def link sudoersCmndNameInSpec String hi def link sudoersCmndAliasInSpec PreProc hi def link sudoersUserAliasEquals Operator hi def link sudoersUserListComma Delimiter hi def link sudoersUserListColon Delimiter hi def link sudoersUserSpecComma Delimiter hi def link sudoersUserRunasBegin Delimiter hi def link sudoersUserRunasComma Delimiter hi def link sudoersUserRunasEnd Delimiter hi def link sudoersHostAliasEquals Operator hi def link sudoersHostListComma Delimiter hi def link sudoersHostListColon Delimiter hi def link sudoersHostSpecComma Delimiter hi def link sudoersCmndAliasEquals Operator hi def link sudoersCmndListComma Delimiter hi def link sudoersCmndListColon Delimiter hi def link sudoersCmndSpecComma Delimiter hi def link sudoersCmndSpecColon Delimiter hi def link sudoersUserNegationInList Operator hi def link sudoersHostNegationInList Operator hi def link sudoersCmndNegationInList Operator hi def link sudoersUserNegation Operator hi def link sudoersHostNegation Operator hi def link sudoersUserNegationInSpec Operator hi def link sudoersHostNegationInSpec Operator hi def link sudoersUserNegationInRunas Operator hi def link sudoersCmndNegationInSpec Operator hi def link sudoersCommandArgs String hi def link sudoersCommandEmpty Special hi def link sudoersDefaultEntry Keyword hi def link sudoersDefaultTypeAt Special hi def link sudoersDefaultTypeColon Special hi def link sudoersDefaultTypeGreaterThan Special hi def link sudoersBooleanParameter Identifier hi def link sudoersIntegerParameter Identifier hi def link sudoersStringParameter Identifier hi def link sudoersListParameter Identifier hi def link sudoersParameterListComma Delimiter hi def link sudoersIntegerParameterEquals Operator hi def link sudoersStringParameterEquals Operator hi def link sudoersListParameterEquals Operator hi def link sudoersIntegerValue Number hi def link sudoersStringValue String hi def link sudoersListValue String hi def link sudoersPASSWD Special let b:current_syntax = "sudoers" let &cpo = s:cpo_save unlet s:cpo_save PK!iccvim80/syntax/texinfo.vimnu[" Vim syntax file " Language: Texinfo (macro package for TeX) " Maintainer: Sandor Kopanyi " URL: <-> " Last Change: 2004 Jun 23 " " the file follows the Texinfo manual structure; this file is based " on manual for Texinfo version 4.0, 28 September 1999 " since @ can have special meanings, everything is 'match'-ed and 'region'-ed " (including @ in 'iskeyword' option has unexpected effects) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'texinfo' endif "in Texinfo can be real big things, like tables; sync for that syn sync lines=200 "some general stuff "syn match texinfoError "\S" contained TODO syn match texinfoIdent "\k\+" contained "IDENTifier syn match texinfoAssignment "\k\+\s*=\s*\k\+\s*$" contained "assigment statement ( var = val ) syn match texinfoSinglePar "\k\+\s*$" contained "single parameter (used for several @-commands) syn match texinfoIndexPar "\k\k\s*$" contained "param. used for different *index commands (+ @documentlanguage command) "marking words and phrases (chap. 9 in Texinfo manual) "(almost) everything appears as 'contained' too; is for tables (@table) "this chapter is at the beginning of this file to avoid overwritings syn match texinfoSpecialChar "@acronym" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@acronym{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@b" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@b{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@cite" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@cite{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@code" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@code{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@command" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@command{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@dfn" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@dfn{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@email" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@email{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@emph" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@emph{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@env" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@env{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@file" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@file{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@i" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@i{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@kbd" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@kbd{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@key" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@key{" end="}" contains=texinfoSpecialChar syn match texinfoSpecialChar "@option" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@option{" end="}" contains=texinfoSpecialChar syn match texinfoSpecialChar "@r" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@r{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@samp" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@samp{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@sc" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@sc{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@strong" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@strong{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@t" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@t{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@url" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@url{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@var" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@var{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoAtCmd "^@kbdinputstyle" nextgroup=texinfoSinglePar skipwhite "overview of Texinfo (chap. 1 in Texinfo manual) syn match texinfoComment "@c .*" syn match texinfoComment "@c$" syn match texinfoComment "@comment .*" syn region texinfoMltlnAtCmd matchgroup=texinfoComment start="^@ignore\s*$" end="^@end ignore\s*$" contains=ALL "beginning a Texinfo file (chap. 3 in Texinfo manual) syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="@center " skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd oneline syn region texinfoMltlnDMAtCmd matchgroup=texinfoAtCmd start="^@detailmenu\s*$" end="^@end detailmenu\s*$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@setfilename " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@settitle " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@shorttitlepage " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@title " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@titlefont{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@titlepage\s*$" end="^@end titlepage\s*$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoMltlnDMAtCmd,texinfoAtCmd,texinfoPrmAtCmd,texinfoMltlnAtCmd syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@vskip " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn match texinfoAtCmd "^@exampleindent" nextgroup=texinfoSinglePar skipwhite syn match texinfoAtCmd "^@headings" nextgroup=texinfoSinglePar skipwhite syn match texinfoAtCmd "^\\input" nextgroup=texinfoSinglePar skipwhite syn match texinfoAtCmd "^@paragraphindent" nextgroup=texinfoSinglePar skipwhite syn match texinfoAtCmd "^@setchapternewpage" nextgroup=texinfoSinglePar skipwhite "ending a Texinfo file (chap. 4 in Texinfo manual) syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="@author " skip="\\$" end="$" contains=texinfoSpecialChar oneline "all below @bye should be comment TODO syn match texinfoAtCmd "^@bye\s*$" syn match texinfoAtCmd "^@contents\s*$" syn match texinfoAtCmd "^@printindex" nextgroup=texinfoIndexPar skipwhite syn match texinfoAtCmd "^@setcontentsaftertitlepage\s*$" syn match texinfoAtCmd "^@setshortcontentsaftertitlepage\s*$" syn match texinfoAtCmd "^@shortcontents\s*$" syn match texinfoAtCmd "^@summarycontents\s*$" "chapter structuring (chap. 5 in Texinfo manual) syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@appendix" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@appendixsec" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@appendixsection" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@appendixsubsec" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@appendixsubsubsec" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@centerchap" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@chapheading" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@chapter" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@heading" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@majorheading" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@section" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@subheading " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@subsection" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@subsubheading" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@subsubsection" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@subtitle" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@unnumbered" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@unnumberedsec" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@unnumberedsubsec" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@unnumberedsubsubsec" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn match texinfoAtCmd "^@lowersections\s*$" syn match texinfoAtCmd "^@raisesections\s*$" "nodes (chap. 6 in Texinfo manual) syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@anchor{" end="}" syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@top" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@node" skip="\\$" end="$" contains=texinfoSpecialChar oneline "menus (chap. 7 in Texinfo manual) syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@menu\s*$" end="^@end menu\s*$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoMltlnDMAtCmd "cross references (chap. 8 in Texinfo manual) syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@inforef{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@pxref{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@ref{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@uref{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@xref{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd "marking words and phrases (chap. 9 in Texinfo manual) "(almost) everything appears as 'contained' too; is for tables (@table) "this chapter is at the beginning of this file to avoid overwritings "quotations and examples (chap. 10 in Texinfo manual) syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@cartouche\s*$" end="^@end cartouche\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@display\s*$" end="^@end display\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@example\s*$" end="^@end example\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@flushleft\s*$" end="^@end flushleft\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@flushright\s*$" end="^@end flushright\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@format\s*$" end="^@end format\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@lisp\s*$" end="^@end lisp\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@quotation\s*$" end="^@end quotation\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@smalldisplay\s*$" end="^@end smalldisplay\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@smallexample\s*$" end="^@end smallexample\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@smallformat\s*$" end="^@end smallformat\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@smalllisp\s*$" end="^@end smalllisp\s*$" contains=ALL syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@exdent" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn match texinfoAtCmd "^@noindent\s*$" syn match texinfoAtCmd "^@smallbook\s*$" "lists and tables (chap. 11 in Texinfo manual) syn match texinfoAtCmd "@asis" contained syn match texinfoAtCmd "@columnfractions" contained syn match texinfoAtCmd "@item" contained syn match texinfoAtCmd "@itemx" contained syn match texinfoAtCmd "@tab" contained syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@enumerate" end="^@end enumerate\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ftable" end="^@end ftable\s*$" contains=ALL syn region texinfoMltlnNAtCmd matchgroup=texinfoAtCmd start="^@itemize" end="^@end itemize\s*$" contains=ALL syn region texinfoMltlnNAtCmd matchgroup=texinfoAtCmd start="^@multitable" end="^@end multitable\s*$" contains=ALL syn region texinfoMltlnNAtCmd matchgroup=texinfoAtCmd start="^@table" end="^@end table\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@vtable" end="^@end vtable\s*$" contains=ALL "indices (chap. 12 in Texinfo manual) syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@\(c\|f\|k\|p\|t\|v\)index" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@..index" skip="\\$" end="$" contains=texinfoSpecialChar oneline "@defcodeindex and @defindex is defined after chap. 15's @def* commands (otherwise those ones will overwrite these ones) syn match texinfoSIPar "\k\k\s*\k\k\s*$" contained syn match texinfoAtCmd "^@syncodeindex" nextgroup=texinfoSIPar skipwhite syn match texinfoAtCmd "^@synindex" nextgroup=texinfoSIPar skipwhite "special insertions (chap. 13 in Texinfo manual) syn match texinfoSpecialChar "@\(!\|?\|@\|\s\)" syn match texinfoSpecialChar "@{" syn match texinfoSpecialChar "@}" "accents syn match texinfoSpecialChar "@=." syn match texinfoSpecialChar "@\('\|\"\|\^\|`\)[aeiouyAEIOUY]" syn match texinfoSpecialChar "@\~[aeinouyAEINOUY]" syn match texinfoSpecialChar "@dotaccent{.}" syn match texinfoSpecialChar "@H{.}" syn match texinfoSpecialChar "@,{[cC]}" syn match texinfoSpecialChar "@AA{}" syn match texinfoSpecialChar "@aa{}" syn match texinfoSpecialChar "@L{}" syn match texinfoSpecialChar "@l{}" syn match texinfoSpecialChar "@O{}" syn match texinfoSpecialChar "@o{}" syn match texinfoSpecialChar "@ringaccent{.}" syn match texinfoSpecialChar "@tieaccent{..}" syn match texinfoSpecialChar "@u{.}" syn match texinfoSpecialChar "@ubaraccent{.}" syn match texinfoSpecialChar "@udotaccent{.}" syn match texinfoSpecialChar "@v{.}" "ligatures syn match texinfoSpecialChar "@AE{}" syn match texinfoSpecialChar "@ae{}" syn match texinfoSpecialChar "@copyright{}" syn match texinfoSpecialChar "@bullet" contained "for tables and lists syn match texinfoSpecialChar "@bullet{}" syn match texinfoSpecialChar "@dotless{i}" syn match texinfoSpecialChar "@dotless{j}" syn match texinfoSpecialChar "@dots{}" syn match texinfoSpecialChar "@enddots{}" syn match texinfoSpecialChar "@equiv" contained "for tables and lists syn match texinfoSpecialChar "@equiv{}" syn match texinfoSpecialChar "@error{}" syn match texinfoSpecialChar "@exclamdown{}" syn match texinfoSpecialChar "@expansion{}" syn match texinfoSpecialChar "@minus" contained "for tables and lists syn match texinfoSpecialChar "@minus{}" syn match texinfoSpecialChar "@OE{}" syn match texinfoSpecialChar "@oe{}" syn match texinfoSpecialChar "@point" contained "for tables and lists syn match texinfoSpecialChar "@point{}" syn match texinfoSpecialChar "@pounds{}" syn match texinfoSpecialChar "@print{}" syn match texinfoSpecialChar "@questiondown{}" syn match texinfoSpecialChar "@result" contained "for tables and lists syn match texinfoSpecialChar "@result{}" syn match texinfoSpecialChar "@ss{}" syn match texinfoSpecialChar "@TeX{}" "other syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@dmn{" end="}" syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@footnote{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@image{" end="}" syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@math{" end="}" syn match texinfoAtCmd "@footnotestyle" nextgroup=texinfoSinglePar skipwhite "making and preventing breaks (chap. 14 in Texinfo manual) syn match texinfoSpecialChar "@\(\*\|-\|\.\)" syn match texinfoAtCmd "^@need" nextgroup=texinfoSinglePar skipwhite syn match texinfoAtCmd "^@page\s*$" syn match texinfoAtCmd "^@sp" nextgroup=texinfoSinglePar skipwhite syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@group\s*$" end="^@end group\s*$" contains=ALL syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@hyphenation{" end="}" syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@w{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd "definition commands (chap. 15 in Texinfo manual) syn match texinfoMltlnAtCmdFLine "^@def\k\+" contained syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@def\k\+" end="^@end def\k\+$" contains=ALL "next 2 commands are from chap. 12; must be defined after @def* commands above to overwrite them syn match texinfoAtCmd "@defcodeindex" nextgroup=texinfoIndexPar skipwhite syn match texinfoAtCmd "@defindex" nextgroup=texinfoIndexPar skipwhite "conditionally visible text (chap. 16 in Texinfo manual) syn match texinfoAtCmd "^@clear" nextgroup=texinfoSinglePar skipwhite syn region texinfoMltln2AtCmd matchgroup=texinfoAtCmd start="^@html\s*$" end="^@end html\s*$" syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifclear" end="^@end ifclear\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifhtml" end="^@end ifhtml\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifinfo" end="^@end ifinfo\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifnothtml" end="^@end ifnothtml\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifnotinfo" end="^@end ifnotinfo\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifnottex" end="^@end ifnottex\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifset" end="^@end ifset\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@iftex" end="^@end iftex\s*$" contains=ALL syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@set " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoTexCmd start="\$\$" end="\$\$" contained syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@tex" end="^@end tex\s*$" contains=texinfoTexCmd syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@value{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd "internationalization (chap. 17 in Texinfo manual) syn match texinfoAtCmd "@documentencoding" nextgroup=texinfoSinglePar skipwhite syn match texinfoAtCmd "@documentlanguage" nextgroup=texinfoIndexPar skipwhite "defining new texinfo commands (chap. 18 in Texinfo manual) syn match texinfoAtCmd "@alias" nextgroup=texinfoAssignment skipwhite syn match texinfoDIEPar "\S*\s*,\s*\S*\s*,\s*\S*\s*$" contained syn match texinfoAtCmd "@definfoenclose" nextgroup=texinfoDIEPar skipwhite syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@macro" end="^@end macro\s*$" contains=ALL "formatting hardcopy (chap. 19 in Texinfo manual) syn match texinfoAtCmd "^@afourlatex\s*$" syn match texinfoAtCmd "^@afourpaper\s*$" syn match texinfoAtCmd "^@afourwide\s*$" syn match texinfoAtCmd "^@finalout\s*$" syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@pagesizes" end="$" oneline "creating and installing Info Files (chap. 20 in Texinfo manual) syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@dircategory" skip="\\$" end="$" oneline syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@direntry\s*$" end="^@end direntry\s*$" contains=texinfoSpecialChar syn match texinfoAtCmd "^@novalidate\s*$" "include files (appendix E in Texinfo manual) syn match texinfoAtCmd "^@include" nextgroup=texinfoSinglePar skipwhite "page headings (appendix F in Texinfo manual) syn match texinfoHFSpecialChar "@|" contained syn match texinfoThisAtCmd "@thischapter" contained syn match texinfoThisAtCmd "@thischaptername" contained syn match texinfoThisAtCmd "@thisfile" contained syn match texinfoThisAtCmd "@thispage" contained syn match texinfoThisAtCmd "@thistitle" contained syn match texinfoThisAtCmd "@today{}" contained syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@evenfooting" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoThisAtCmd,texinfoHFSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@evenheading" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoThisAtCmd,texinfoHFSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@everyfooting" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoThisAtCmd,texinfoHFSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@everyheading" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoThisAtCmd,texinfoHFSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@oddfooting" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoThisAtCmd,texinfoHFSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@oddheading" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoThisAtCmd,texinfoHFSpecialChar oneline "refilling paragraphs (appendix H in Texinfo manual) syn match texinfoAtCmd "@refill" syn cluster texinfoAll contains=ALLBUT,texinfoThisAtCmd,texinfoHFSpecialChar syn cluster texinfoReducedAll contains=texinfoSpecialChar,texinfoBrcPrmAtCmd "============================================================================== " highlighting " Only when an item doesn't have highlighting yet hi def link texinfoSpecialChar Special hi def link texinfoHFSpecialChar Special hi def link texinfoError Error hi def link texinfoIdent Identifier hi def link texinfoAssignment Identifier hi def link texinfoSinglePar Identifier hi def link texinfoIndexPar Identifier hi def link texinfoSIPar Identifier hi def link texinfoDIEPar Identifier hi def link texinfoTexCmd PreProc hi def link texinfoAtCmd Statement "@-command hi def link texinfoPrmAtCmd String "@-command in one line with unknown nr. of parameters "is String because is found as a region and is 'matchgroup'-ed "to texinfoAtCmd hi def link texinfoBrcPrmAtCmd String "@-command with parameter(s) in braces ({}) "is String because is found as a region and is 'matchgroup'-ed to texinfoAtCmd hi def link texinfoMltlnAtCmdFLine texinfoAtCmd "repeated embedded First lines in @-commands hi def link texinfoMltlnAtCmd String "@-command in multiple lines "is String because is found as a region and is 'matchgroup'-ed to texinfoAtCmd hi def link texinfoMltln2AtCmd PreProc "@-command in multiple lines (same as texinfoMltlnAtCmd, just with other colors) hi def link texinfoMltlnDMAtCmd PreProc "@-command in multiple lines (same as texinfoMltlnAtCmd, just with other colors; used for @detailmenu, which can be included in @menu) hi def link texinfoMltlnNAtCmd Normal "@-command in multiple lines (same as texinfoMltlnAtCmd, just with other colors) hi def link texinfoThisAtCmd Statement "@-command used in headers and footers (@this... series) hi def link texinfoComment Comment let b:current_syntax = "texinfo" if main_syntax == 'texinfo' unlet main_syntax endif " vim: ts=8 PK!66vim80/syntax/dylanintr.vimnu[" Vim syntax file " Language: Dylan " Authors: Justus Pendleton " Last Change: Fri Sep 29 13:53:27 PDT 2000 " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore syn region dylanintrInfo matchgroup=Statement start="^" end=":" oneline syn match dylanintrInterface "define interface" syn match dylanintrClass "<.*>" syn region dylanintrType start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region dylanintrIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match dylanintrIncluded contained "<[^>]*>" syn match dylanintrInclude "^\s*#\s*include\>\s*["<]" contains=intrIncluded "syn keyword intrMods pointer struct " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link dylanintrInfo Special hi def link dylanintrInterface Operator hi def link dylanintrMods Type hi def link dylanintrClass StorageClass hi def link dylanintrType Type hi def link dylanintrIncluded String hi def link dylanintrInclude Include let b:current_syntax = "dylanintr" " vim:ts=8 PK!İC11vim80/syntax/vrml.vimnu[" Vim syntax file " Language: VRML97 " Modified from: VRML 1.0C by David Brown " Maintainer: vacancy! " Former Maintainer: Gregory Seidman " Last change: 2006 May 03 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " keyword definitions syn keyword VRMLFields ambientIntensity appearance attenuation syn keyword VRMLFields autoOffset avatarSize axisOfRotation backUrl syn keyword VRMLFields bboxCenter bboxSize beamWidth beginCap syn keyword VRMLFields bottom bottomRadius bottomUrl ccw center syn keyword VRMLFields children choice collide color colorIndex syn keyword VRMLFields colorPerVertex convex coord coordIndex syn keyword VRMLFields creaseAngle crossSection cutOffAngle syn keyword VRMLFields cycleInterval description diffuseColor syn keyword VRMLFields directOutput direction diskAngle syn keyword VRMLFields emissiveColor enabled endCap family syn keyword VRMLFields fieldOfView fogType fontStyle frontUrl syn keyword VRMLFields geometry groundAngle groundColor headlight syn keyword VRMLFields height horizontal info intensity jump syn keyword VRMLFields justify key keyValue language leftToRight syn keyword VRMLFields leftUrl length level location loop material syn keyword VRMLFields maxAngle maxBack maxExtent maxFront syn keyword VRMLFields maxPosition minAngle minBack minFront syn keyword VRMLFields minPosition mustEvaluate normal normalIndex syn keyword VRMLFields normalPerVertex offset on orientation syn keyword VRMLFields parameter pitch point position priority syn keyword VRMLFields proxy radius range repeatS repeatT rightUrl syn keyword VRMLFields rotation scale scaleOrientation shininess syn keyword VRMLFields side size skyAngle skyColor solid source syn keyword VRMLFields spacing spatialize specularColor speed spine syn keyword VRMLFields startTime stopTime string style texCoord syn keyword VRMLFields texCoordIndex texture textureTransform title syn keyword VRMLFields top topToBottom topUrl translation syn keyword VRMLFields transparency type url vector visibilityLimit syn keyword VRMLFields visibilityRange whichChoice xDimension syn keyword VRMLFields xSpacing zDimension zSpacing syn match VRMLFields "\<[A-Za-z_][A-Za-z0-9_]*\>" contains=VRMLComment,VRMLProtos,VRMLfTypes " syn match VRMLFields "\<[A-Za-z_][A-Za-z0-9_]*\>\(,\|\s\)*\(#.*$\)*\\(#.*$\)*\(,\|\s\)*\<[A-Za-z_][A-Za-z0-9_]*\>\(,\|\s\)*\(#.*$\)*" contains=VRMLComment,VRMLProtos " syn region VRMLFields start="\<[A-Za-z_][A-Za-z0-9_]*\>" end=+\(,\|#\|\s\)+me=e-1 contains=VRMLComment,VRMLProtos syn keyword VRMLEvents addChildren ambientIntensity_changed syn keyword VRMLEvents appearance_changed attenuation_changed syn keyword VRMLEvents autoOffset_changed avatarSize_changed syn keyword VRMLEvents axisOfRotation_changed backUrl_changed syn keyword VRMLEvents beamWidth_changed bindTime bottomUrl_changed syn keyword VRMLEvents center_changed children_changed syn keyword VRMLEvents choice_changed collideTime collide_changed syn keyword VRMLEvents color_changed coord_changed syn keyword VRMLEvents cutOffAngle_changed cycleInterval_changed syn keyword VRMLEvents cycleTime description_changed syn keyword VRMLEvents diffuseColor_changed direction_changed syn keyword VRMLEvents diskAngle_changed duration_changed syn keyword VRMLEvents emissiveColor_changed enabled_changed syn keyword VRMLEvents enterTime exitTime fogType_changed syn keyword VRMLEvents fontStyle_changed fraction_changed syn keyword VRMLEvents frontUrl_changed geometry_changed syn keyword VRMLEvents groundAngle_changed headlight_changed syn keyword VRMLEvents hitNormal_changed hitPoint_changed syn keyword VRMLEvents hitTexCoord_changed intensity_changed syn keyword VRMLEvents isActive isBound isOver jump_changed syn keyword VRMLEvents keyValue_changed key_changed leftUrl_changed syn keyword VRMLEvents length_changed level_changed syn keyword VRMLEvents location_changed loop_changed syn keyword VRMLEvents material_changed maxAngle_changed syn keyword VRMLEvents maxBack_changed maxExtent_changed syn keyword VRMLEvents maxFront_changed maxPosition_changed syn keyword VRMLEvents minAngle_changed minBack_changed syn keyword VRMLEvents minFront_changed minPosition_changed syn keyword VRMLEvents normal_changed offset_changed on_changed syn keyword VRMLEvents orientation_changed parameter_changed syn keyword VRMLEvents pitch_changed point_changed position_changed syn keyword VRMLEvents priority_changed radius_changed syn keyword VRMLEvents removeChildren rightUrl_changed syn keyword VRMLEvents rotation_changed scaleOrientation_changed syn keyword VRMLEvents scale_changed set_ambientIntensity syn keyword VRMLEvents set_appearance set_attenuation syn keyword VRMLEvents set_autoOffset set_avatarSize syn keyword VRMLEvents set_axisOfRotation set_backUrl set_beamWidth syn keyword VRMLEvents set_bind set_bottomUrl set_center syn keyword VRMLEvents set_children set_choice set_collide syn keyword VRMLEvents set_color set_colorIndex set_coord syn keyword VRMLEvents set_coordIndex set_crossSection syn keyword VRMLEvents set_cutOffAngle set_cycleInterval syn keyword VRMLEvents set_description set_diffuseColor syn keyword VRMLEvents set_direction set_diskAngle syn keyword VRMLEvents set_emissiveColor set_enabled set_fogType syn keyword VRMLEvents set_fontStyle set_fraction set_frontUrl syn keyword VRMLEvents set_geometry set_groundAngle set_headlight syn keyword VRMLEvents set_height set_intensity set_jump set_key syn keyword VRMLEvents set_keyValue set_leftUrl set_length syn keyword VRMLEvents set_level set_location set_loop set_material syn keyword VRMLEvents set_maxAngle set_maxBack set_maxExtent syn keyword VRMLEvents set_maxFront set_maxPosition set_minAngle syn keyword VRMLEvents set_minBack set_minFront set_minPosition syn keyword VRMLEvents set_normal set_normalIndex set_offset set_on syn keyword VRMLEvents set_orientation set_parameter set_pitch syn keyword VRMLEvents set_point set_position set_priority syn keyword VRMLEvents set_radius set_rightUrl set_rotation syn keyword VRMLEvents set_scale set_scaleOrientation set_shininess syn keyword VRMLEvents set_size set_skyAngle set_skyColor syn keyword VRMLEvents set_source set_specularColor set_speed syn keyword VRMLEvents set_spine set_startTime set_stopTime syn keyword VRMLEvents set_string set_texCoord set_texCoordIndex syn keyword VRMLEvents set_texture set_textureTransform set_topUrl syn keyword VRMLEvents set_translation set_transparency set_type syn keyword VRMLEvents set_url set_vector set_visibilityLimit syn keyword VRMLEvents set_visibilityRange set_whichChoice syn keyword VRMLEvents shininess_changed size_changed syn keyword VRMLEvents skyAngle_changed skyColor_changed syn keyword VRMLEvents source_changed specularColor_changed syn keyword VRMLEvents speed_changed startTime_changed syn keyword VRMLEvents stopTime_changed string_changed syn keyword VRMLEvents texCoord_changed textureTransform_changed syn keyword VRMLEvents texture_changed time topUrl_changed syn keyword VRMLEvents touchTime trackPoint_changed syn keyword VRMLEvents translation_changed transparency_changed syn keyword VRMLEvents type_changed url_changed value_changed syn keyword VRMLEvents vector_changed visibilityLimit_changed syn keyword VRMLEvents visibilityRange_changed whichChoice_changed syn region VRMLEvents start="\S+[^0-9]+\.[A-Za-z_]+"ms=s+1 end="\(,\|$\|\s\)"me=e-1 syn keyword VRMLNodes Anchor Appearance AudioClip Background syn keyword VRMLNodes Billboard Box Collision Color syn keyword VRMLNodes ColorInterpolator Cone Coordinate syn keyword VRMLNodes CoordinateInterpolator Cylinder syn keyword VRMLNodes CylinderSensor DirectionalLight syn keyword VRMLNodes ElevationGrid Extrusion Fog FontStyle syn keyword VRMLNodes Group ImageTexture IndexedFaceSet syn keyword VRMLNodes IndexedLineSet Inline LOD Material syn keyword VRMLNodes MovieTexture NavigationInfo Normal syn keyword VRMLNodes NormalInterpolator OrientationInterpolator syn keyword VRMLNodes PixelTexture PlaneSensor PointLight syn keyword VRMLNodes PointSet PositionInterpolator syn keyword VRMLNodes ProximitySensor ScalarInterpolator syn keyword VRMLNodes Script Shape Sound Sphere SphereSensor syn keyword VRMLNodes SpotLight Switch Text TextureCoordinate syn keyword VRMLNodes TextureTransform TimeSensor TouchSensor syn keyword VRMLNodes Transform Viewpoint VisibilitySensor syn keyword VRMLNodes WorldInfo " the following line doesn't catch since \n " doesn't match as an atom yet :-( syn match VRMLNodes "[A-Za-z_][A-Za-z0-9_]*\(,\|\s\)*{"me=e-1 syn region VRMLNodes start="\\(,\|\s\)*[A-Za-z_]"ms=e start="\\(,\|\s\)*" end="[\s]*\["me=e-1 contains=VRMLProtos,VRMLComment syn region VRMLNodes start="PROTO\>\(,\|\s\)*[A-Za-z_]"ms=e start="PROTO\>\(,\|\s\)*" end="[\s]*\["me=e-1 contains=VRMLProtos,VRMLComment syn keyword VRMLTypes SFBool SFColor MFColor SFFloat MFFloat syn keyword VRMLTypes SFImage SFInt32 MFInt32 SFNode MFNode syn keyword VRMLTypes SFRotation MFRotation SFString MFString syn keyword VRMLTypes SFTime MFTime SFVec2f MFVec2f SFVec3f MFVec3f syn keyword VRMLfTypes field exposedField eventIn eventOut syn keyword VRMLValues TRUE FALSE NULL syn keyword VRMLProtos contained EXTERNPROTO PROTO IS syn keyword VRMLRoutes contained ROUTE TO "containment! syn include @jscript $VIMRUNTIME/syntax/javascript.vim syn region VRMLjScriptString contained start=+"\(\(javascript\)\|\(vrmlscript\)\|\(ecmascript\)\):+ms=e+1 skip=+\\\\\|\\"+ end=+"+me=e-1 contains=@jscript " match definitions. syn match VRMLSpecial contained "\\[0-9][0-9][0-9]\|\\." syn region VRMLString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=VRMLSpecial,VRMLjScriptString syn match VRMLCharacter "'[^\\]'" syn match VRMLSpecialCharacter "'\\.'" syn match VRMLNumber "[-+]\=\<[0-9]\+\(\.[0-9]\+\)\=\([eE]\{1}[-+]\=[0-9]\+\)\=\>\|0[xX][0-9a-fA-F]\+\>" syn match VRMLNumber "0[xX][0-9a-fA-F]\+\>" syn match VRMLComment "#.*$" " newlines should count as whitespace, but they can't be matched yet :-( syn region VRMLRouteNode start="[^O]TO\(,\|\s\)*" end="\."me=e-1 contains=VRMLRoutes,VRMLComment syn region VRMLRouteNode start="ROUTE\(,\|\s\)*" end="\."me=e-1 contains=VRMLRoutes,VRMLComment syn region VRMLInstName start="DEF\>"hs=e+1 skip="DEF\(,\|\s\)*" end="[A-Za-z0-9_]\(\s\|$\|,\)"me=e contains=VRMLInstances,VRMLComment syn region VRMLInstName start="USE\>"hs=e+1 skip="USE\(,\|\s\)*" end="[A-Za-z0-9_]\(\s\|$\|,\)"me=e contains=VRMLInstances,VRMLComment syn keyword VRMLInstances contained DEF USE syn sync minlines=1 "FOLDS! syn sync fromstart "setlocal foldmethod=syntax syn region braceFold start="{" end="}" transparent fold contains=TOP syn region bracketFold start="\[" end="]" transparent fold contains=TOP syn region VRMLString start=+"+ skip=+\\\\\|\\"+ end=+"+ fold contains=VRMLSpecial,VRMLjScriptString " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link VRMLCharacter VRMLString hi def link VRMLSpecialCharacter VRMLSpecial hi def link VRMLNumber VRMLString hi def link VRMLValues VRMLString hi def link VRMLString String hi def link VRMLSpecial Special hi def link VRMLComment Comment hi def link VRMLNodes Statement hi def link VRMLFields Type hi def link VRMLEvents Type hi def link VRMLfTypes LineNr " hi VRMLfTypes ctermfg=6 guifg=Brown hi def link VRMLInstances PreCondit hi def link VRMLRoutes PreCondit hi def link VRMLProtos PreProc hi def link VRMLRouteNode Identifier hi def link VRMLInstName Identifier hi def link VRMLTypes Identifier let b:current_syntax = "vrml" " vim: ts=8 PK!| | vim80/syntax/vim.vimnu[" Vim syntax file " Language: Vim 8.0 script " Maintainer: Charles E. Campbell " Last Change: February 13, 2018 " Version: 8.0-12 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM " Automatically generated keyword lists: {{{1 " Quit when a syntax file was already loaded {{{2 if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim " vimTodo: contains common special-notices for comments {{{2 " Use the vimCommentGroup cluster to add your own. syn keyword vimTodo contained COMBAK FIXME TODO XXX syn cluster vimCommentGroup contains=vimTodo,@Spell " regular vim commands {{{2 syn keyword vimCommand contained a arga[dd] argu[ment] bad[d] bn[ext] breakd[el] bw[ipeout] cadde[xpr] cc cf[ile] changes cla[st] cnf[ile] comp[iler] cq[uit] cw[indow] delep dell diffg[et] dig[raphs] doau ea el[se] endt[ry] f[ile] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] isp[lit] keepa l[ist] lat lcl[ose] lex[pr] lgete[xpr] lla[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkv[imrc] n[ext] nmapc[lear] nore omapc[lear] pa[ckadd] perld[o] prev[ious] promptr[epl] ptj[ump] pts[elect] py[thon] pyx quita[ll] redr[aw] retu[rn] rub[y] sI sIn sal[l] sba[ll] sbp[revious] scg scripte[ncoding] setg[lobal] sgI sgn sic sim[alt] sla[st] smile so[urce] spelli[nfo] sr sri sta[g] stopi[nsert] sus[pend] sync ta[g] tabe[dit] tabn[ext] tabs te[aroff] tm[enu] to[pleft] tu[nmenu] undol[ist] up[date] vi[sual] vmapc[lear] wa[ll] winp[os] ws[verb] xmapc[lear] xprop syn keyword vimCommand contained ab argd[elete] as[cii] bd[elete] bo[tright] breakl[ist] cN[ext] caddf[ile] ccl[ose] cfdo chd[ir] cle[arjumps] co[py] con[tinue] cr[ewind] d[elete] deletel delm[arks] diffo[ff] dir dp earlier elsei[f] endw[hile] files fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] iuna[bbrev] keepalt la[st] later lcs lf[ile] lgr[ep] lli[st] lo[adview] lop[en] lua m[ove] mes mkvie[w] nb[key] noa nos[wapfile] on[ly] packl[oadall] po[p] pro ps[earch] ptl[ast] pu[t] pydo pyxdo r[ead] redraws[tatus] rew[ind] rubyd[o] sIc sIp san[dbox] sbf[irst] sbr[ewind] sci scs setl[ocal] sgc sgp sie sin sm[agic] sn[ext] sor[t] spellr[epall] srI srl star[tinsert] sts[elect] sv[iew] syncbind tab tabf[ind] tabnew tags tf[irst] tma[p] tp[revious] tunma[p] unh[ide] v vie[w] vne[w] wh[ile] wn[ext] wundo xme xunme syn keyword vimCommand contained abc[lear] argdo au bel[owright] bp[revious] bro[wse] cNf[ile] cal[l] cd cfir[st] che[ckpath] clo[se] col[der] conf[irm] cs debug deletep delp diffp[atch] dj[ump] dr[op] ec em[enu] ene[w] filet fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] j[oin] keepj[umps] lad[dexpr] lb[uffer] lcscope lfdo lgrepa[dd] lmak[e] loadk lp[revious] luado ma[rk] messages mod[e] nbc[lose] noautocmd nu[mber] opt[ions] pc[lose] popu[p] prof[ile] ptN[ext] ptn[ext] pw[d] pyf[ile] pyxfile rec[over] reg[isters] ri[ght] rubyf[ile] sIe sIr sav[eas] sbl[ast] sc scl scscope sf[ind] sge sgr sig sip sm[ap] sno[magic] sp[lit] spellu[ndo] src srn startg[replace] sun[hide] sw[apname] syntime tabN[ext] tabfir[st] tabo[nly] tc[l] th[row] tmapc[lear] tr[ewind] u[ndo] unl ve[rsion] vim[grep] vs[plit] win[size] wp[revious] wv[iminfo] xmenu xunmenu syn keyword vimCommand contained abo[veleft] arge[dit] bN[ext] bf[irst] br[ewind] bufdo c[hange] cat[ch] cdo cg[etfile] checkt[ime] cmapc[lear] colo[rscheme] cope[n] cscope debugg[reedy] deletl dep diffpu[t] dl ds[earch] echoe[rr] en[dif] ex filetype fix[del] for gui helpg[rep] ia in ju[mps] keepp[atterns] laddb[uffer] lbo[ttom] ld[o] lfir[st] lh[elpgrep] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mk[exrc] mz[scheme] nbs[tart] noh[lsearch] o[pen] ownsyntax pe[rl] pp[op] profd[el] pta[g] ptp[revious] py3 python3 q[uit] red[o] res[ize] rightb[elow] rundo sIg sN[ext] sbN[ext] sbm[odified] scI scp se[t] sfir[st] sgi sh[ell] sign sir sme snoreme spe[llgood] spellw[rong] sre[wind] srp startr[eplace] sunme sy t tabc[lose] tabl[ast] tabp[revious] tcld[o] tj[ump] tn[ext] try una[bbreviate] unlo[ckvar] verb[ose] vimgrepa[dd] wN[ext] winc[md] wq x[it] xnoreme xwininfo syn keyword vimCommand contained al[l] argg[lobal] b[uffer] bl[ast] brea[k] buffers cabc[lear] cb[uffer] ce[nter] cgetb[uffer] chi[story] cn[ext] com cp[revious] cstag delc[ommand] deletp di[splay] diffs[plit] dli[st] dsp[lit] echom[sg] endf[unction] exi[t] filt[er] fo[ld] fu[nction] gvim helpt[ags] iabc[lear] intro k lN[ext] laddf[ile] lc[d] le[ft] lg[etfile] lhi[story] lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mks[ession] mzf[ile] new nor ol[dfiles] p[rint] ped[it] pre[serve] promptf[ind] ptf[irst] ptr[ewind] py3do pythonx qa[ll] redi[r] ret[ab] ru[ntime] rv[iminfo] sIl sa[rgument] sb[uffer] sbn[ext] sce scr[iptnames] setf[iletype] sg sgl si sil[ent] sl[eep] smenu snoremenu spelld[ump] spr[evious] srg st[op] stj[ump] sunmenu syn tN[ext] tabd[o] tabm[ove] tabr[ewind] tclf[ile] tl[ast] tno[remap] ts[elect] undoj[oin] uns[ilent] vert[ical] viu[sage] w[rite] windo wqa[ll] xa[ll] xnoremenu y[ank] syn keyword vimCommand contained ar[gs] argl[ocal] ba[ll] bm[odified] breaka[dd] bun[load] cad[dbuffer] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cnew[er] comc[lear] cpf[ile] cuna[bbrev] delel delf[unction] dif[fupdate] difft[his] do e[dit] echon endfo[r] exu[sage] fin[d] foldc[lose] g h[elp] hi if is[earch] kee[pmarks] lNf[ile] lan[guage] lch[dir] lefta[bove] lgetb[uffer] ll lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mksp[ell] syn match vimCommand contained "\" syn keyword vimStdPlugin contained DiffOrig Man N[ext] P[rint] S TOhtml XMLent XMLns " vimOptions are caught only when contained in a vimSet {{{2 syn keyword vimOption contained acd ambw arshape background ballooneval bg bomb bs cb ch cinoptions cms commentstring copyindent cscopepathcomp csprg cursorbind delcombine digraph eadirection emo equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr go guifontset helpheight history hlsearch imactivatekey imi imstyle indentkeys isf isprint km laststatus lisp loadplugins lz mat maxmempattern mh mmp more mouses mzq number opendevice paragraphs penc pi previewheight printmbcharset pvw rdt renderoptions rl ru sbo scrollbind secure shcf shelltemp shortmess showtabline sj smd spell splitbelow ssl stl sw sxe tabpagemax tags tbs termguicolors tf title tms ts ttybuiltin tx undolevels vbs viewdir vop wd wic wildmode winheight wm wrapscan syn keyword vimOption contained ai anti autochdir backspace balloonexpr bh breakat bsdir cc charconvert cinw co compatible cot cscopeprg csqf cursorcolumn dex dip eb emoji errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd gp guifontwide helplang hk ic imaf iminsert inc indk isfname joinspaces kmp lazyredraw lispwords lpl ma matchpairs maxmemtot mis mmt mouse mouseshape mzquantum numberwidth operatorfunc paste perldll pm previewwindow printmbfont pythondll re report rlc rubydll sbr scrolljump sel shell shelltype shortname shq slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tagstack tc termkey tgc titlelen to tsl ttyfast uc undoreload vdir viewoptions wa weirdinvert wig wildoptions winminheight wmh write syn keyword vimOption contained akm antialias autoindent backup bdir bin breakindent bsk ccv ci cinwords cocu complete cp cscopequickfix csre cursorline dg dir ed enc errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault grepformat guiheadroom hf hkmap icon imak ims include inex isi js kp lbr list lrm macatsui matchtime mco mkspellmem mod mousef mouset mzschemedll nuw opfunc pastetoggle pex pmbcs printdevice printoptions pythonthreedll readonly restorescreen rnu ruf sc scrolloff selection shellcmdflag shellxescape showbreak si sm so spellfile spr st sts swapsync syn tag tal tcldll termsize tgst titleold toolbar tsr ttym udf updatecount ve vif wak wfh wildchar wim winminwidth wmnu writeany syn keyword vimOption contained al ar autoread backupcopy bdlay binary breakindentopt bt cd cin clipboard cole completefunc cpo cscoperelative cst cwh dict directory edcompatible encoding errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepprg guioptions hh hkmapp iconstring imc imsearch includeexpr inf isident key langmap lcs listchars ls magic maxcombine mef ml modeline mousefocus mousetime mzschemegcdll odev osfiletype patchexpr pexpr pmbfn printencoding prompt pyx redrawtime revins ro ruler scb scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tb tenc terse thesaurus titlestring toolbariconsize ttimeout ttymouse udir updatetime verbose viminfo warn wfw wildcharm winaltkeys winptydll wmw writebackup syn keyword vimOption contained aleph arab autowrite backupdir belloff bk bri bufhidden cdpath cindent cm colorcolumn completeopt cpoptions cscopetag csto debug dictionary display ef endofline esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn gtl guipty hi hkp ignorecase imcmdline imsf incsearch infercase isk keymap langmenu linebreak lm lsp makeef maxfuncdepth menc mls modelines mousehide mp nf oft pa patchmode pfn popt printexpr pt pyxversion regexpengine ri rop rulerformat scl scs sessionoptions shellquote shiftround showfulltag sidescrolloff smartindent sol spellsuggest sr stal sua swf syntax tagcase tbi term textauto tildeop tk top ttimeoutlen ttyscroll ul ur verbosefile viminfofile wb wh wildignore window winwidth wop writedelay syn keyword vimOption contained allowrevins arabic autowriteall backupext beval bkc briopt buflisted cedit cink cmdheight columns concealcursor cpt cscopetagorder csverb deco diff dy efm eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtt guitablabel hid hl im imd imst inde insertmode iskeyword keymodel langnoremap lines lmap luadll makeencoding maxmapdepth menuitems mm modifiable mousem mps nrformats ofu packpath path ph pp printfont pumheight qe relativenumber rightleft rs runtimepath scr sect sft shellredir shiftwidth showmatch signcolumn smarttab sp spf srr startofline suffixes switchbuf ta taglength tbidi termbidi textmode timeout tl tpm ttm ttytype undodir ut vfile virtualedit wc whichwrap wildignorecase winfixheight wiv wrap ws syn keyword vimOption contained altkeymap arabicshape aw backupskip bex bl brk buftype cf cinkeys cmdwinheight com conceallevel crb cscopeverbose cuc def diffexpr ea ei ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw guicursor guitabtooltip hidden hlg imactivatefunc imdisable imstatusfunc indentexpr is isp keywordprg langremap linespace lnr lw makeprg maxmem mfd mmd modified mousemodel msm nu omnifunc para pdev pheader preserveindent printheader pvh quoteescape remap rightleftcmd rtp sb scroll sections sh shellslash shm showmode siso smc spc spl ss statusline suffixesadd sws tabline tagrelative tbis termencoding textwidth timeoutlen tm tr tty tw undofile vb vi visualbell wcm wi wildmenu winfixwidth wiw wrapmargin ww syn keyword vimOption contained ambiwidth ari awa balloondelay bexpr bo browsedir casemap cfu cino cmp comments confirm cryptmethod cspc cul define diffopt ead ek equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guifont helpfile highlight hls " vimOptions: These are the turn-off setting variants {{{2 syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobomb nobuflisted nocin noconfirm nocrb nocscopeverbose nocsverb nocursorbind nodeco nodiff noeb noek noendofline noerrorbells noex nofen nofixendofline nofkmap nofsync noguipty nohk nohkp noic noim noimd noinf nois nolangnoremap nolazyredraw nolinebreak nolist noloadplugins nolrm noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx noundofile novisualbell nowarn noweirdinvert nowfw nowildignorecase nowinfixheight nowiv nowrap nowrite nowritebackup syn keyword vimOption contained noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa nobeval nobk nobreakindent nocf nocindent nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noemo noeol noesckeys noexpandtab nofic nofixeol nofoldenable nogd nohid nohkmap nohls noicon noimc noimdisable noinfercase nojoinspaces nolangremap nolbr nolisp nolnr nolpl nolz nomacatsui nomh nomod nomodifiable nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly noremap norevins norightleft nornu nors noruler nosc noscrollbind nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast noudf novb nowa nowb nowfh nowic nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows syn keyword vimOption contained noakm noanti noarab noari noautoindent noautowriteall nobackup nobin nobl nobri noci nocompatible nocp nocscopetag nocst nocul nocursorline nodg noea noedcompatible noemoji noequalalways noet noexrc nofileignorecase nofk nofs nogdefault nohidden nohkmapp nohlsearch noignorecase noimcmdline noincsearch noinsertmode nojs " vimOptions: These are the invertible variants {{{2 syn keyword vimOption contained invacd invallowrevins invantialias invarabic invarshape invautoread invaw invballooneval invbinary invbomb invbuflisted invcin invconfirm invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invendofline inverrorbells invex invfen invfixendofline invfkmap invfsync invguipty invhk invhkp invic invim invimd invinf invis invlangnoremap invlazyredraw invlinebreak invlist invloadplugins invlrm invma invmagic invml invmodeline invmodified invmousef invmousehide invnumber invopendevice invpi invpreviewwindow invpvw invrelativenumber invrestorescreen invri invrl invro invru invsb invscb invscs invsft invshelltemp invshortname invshowfulltag invshowmode invsm invsmartindent invsmd invsol invsplitbelow invspr invssl invstartofline invswapfile invta invtagrelative invtbi invtbs invterse invtextmode invtgst invtimeout invto invtr invttybuiltin invtx invundofile invvisualbell invwarn invweirdinvert invwfw invwildignorecase invwinfixheight invwiv invwrap invwrite invwritebackup syn keyword vimOption contained invai invaltkeymap invar invarabicshape invautochdir invautowrite invawa invbeval invbk invbreakindent invcf invcindent invcopyindent invcscoperelative invcsre invcuc invcursorcolumn invdelcombine invdigraph inved invemo inveol invesckeys invexpandtab invfic invfixeol invfoldenable invgd invhid invhkmap invhls invicon invimc invimdisable invinfercase invjoinspaces invlangremap invlbr invlisp invlnr invlpl invlz invmacatsui invmh invmod invmodifiable invmore invmousefocus invnu invodev invpaste invpreserveindent invprompt invreadonly invremap invrevins invrightleft invrnu invrs invruler invsc invscrollbind invsecure invshellslash invshiftround invshowcmd invshowmatch invsi invsmartcase invsmarttab invsn invspell invsplitright invsr invsta invstmp invswf invtagbsearch invtagstack invtbidi invtermbidi invtextauto invtf invtildeop invtitle invtop invttimeout invttyfast invudf invvb invwa invwb invwfh invwic invwildmenu invwinfixwidth invwmnu invwrapscan invwriteany invws syn keyword vimOption contained invakm invanti invarab invari invautoindent invautowriteall invbackup invbin invbl invbri invci invcompatible invcp invcscopetag invcst invcul invcursorline invdg invea invedcompatible invemoji invequalalways invet invexrc invfileignorecase invfk invfs invgdefault invhidden invhkmapp invhlsearch invignorecase invimcmdline invincsearch invinsertmode invjs " termcap codes (which can also be set) {{{2 syn keyword vimOption contained t_8b t_AB t_al t_bc t_BE t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_EI t_F2 t_F4 t_F6 t_F8 t_fs t_IE t_k1 t_k2 t_K3 t_K4 t_K5 t_K6 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_PE t_PS t_RB t_RC t_RF t_RI t_RS t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_so t_sr t_SR t_te t_Te t_ti t_ts t_Ts t_u7 t_ue t_us t_ut t_vb t_ve t_vi t_vs t_VS t_WP t_WS t_xn t_xs t_ZH t_ZR syn keyword vimOption contained t_8f t_AF t_AL t_BD t_cd t_Ce t_cm t_cs t_CS t_da t_dl t_EC t_F1 t_F3 t_F5 t_F7 t_F9 t_GP t_IS t_K1 t_k3 t_k4 t_k5 t_k6 t_k7 syn match vimOption contained "t_%1" syn match vimOption contained "t_#2" syn match vimOption contained "t_#4" syn match vimOption contained "t_@7" syn match vimOption contained "t_*7" syn match vimOption contained "t_&8" syn match vimOption contained "t_%i" syn match vimOption contained "t_k;" " unsupported settings: some were supported by vi but don't do anything in vim {{{2 " others have been dropped along with msdos support syn keyword vimErrSetting contained bioskey biosk conskey consk autoprint beautify flash graphic hardtabs mesg novice open op optimize redraw slow slowopen sourceany w300 w1200 w9600 hardtabs ht nobioskey nobiosk noconskey noconsk noautoprint nobeautify noflash nographic nohardtabs nomesg nonovice noopen noop nooptimize noredraw noslow noslowopen nosourceany now300 now1200 now9600 w1200 w300 w9600 " AutoCmd Events {{{2 syn case ignore syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdlineEnter CmdlineLeave CmdUndefined CmdwinEnter CmdwinLeave ColorScheme CompleteDone CursorHold CursorHoldI CursorMoved CursorMovedI EncodingChanged FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave MenuPopup OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TermResponse TextChanged TextChangedI User VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave WinNew " Highlight commonly used Groupnames {{{2 syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo " Default highlighting groups {{{2 syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu syn match vimHLGroup contained "Conceal" syn case match " Function Names {{{2 syn keyword vimFuncName contained abs append argv assert_fails assert_notequal atan browsedir bufname byte2line ceil ch_close ch_getbufnr ch_logfile ch_sendexpr cindent complete_add cos cursor diff_filler eval exepath extend filter floor foldclosed foldtextresult garbagecollect getbufvar getcmdline getcompletion getfperm getline getpos gettabinfo getwinposx glob2regpat haslocaldir histget hostname input inputsave isdirectory job_getchannel job_status js_encode len line2byte log10 mapcheck matcharg matchstr mkdir nr2char pow py3eval readfile remote_expr remote_send repeat screenattr search searchpos setbufvar setline setqflist setwinvar simplify soundfold sqrt strcharpart strftime string strridx submatch synID synstack tabpagebuflist tagfiles tanh term_getattr term_getline term_getstatus term_gettty term_sendkeys term_wait test_feedinput test_null_channel test_null_list test_override timer_pause timer_stopall tr undofile values wildmenumode win_findbuf winheight winline winrestview wordcount syn keyword vimFuncName contained acos argc asin assert_false assert_notmatch atan2 bufexists bufnr byteidx changenr ch_close_in ch_getjob ch_open ch_sendraw clearmatches complete_check cosh deepcopy diff_hlID eventhandler exists feedkeys finddir fmod foldclosedend foreground get getchar getcmdpos getcurpos getfsize getloclist getqflist gettabvar getwinposy globpath hasmapto histnr iconv inputdialog inputsecret islocked job_info job_stop json_decode libcall lispindent luaeval match matchdelete matchstrpos mode or prevnonblank pyeval reltime remote_foreground remote_startserver resolve screenchar searchdecl server2client setcharsearch setloclist setreg sha256 sin spellbadword str2float strchars strgetchar strlen strtrans substitute synIDattr system tabpagenr taglist tempname term_getcursor term_getscrolled term_gettitle term_list term_setsize test_alloc_fail test_garbagecollect_now test_null_dict test_null_partial test_settime timer_start tolower trunc undotree virtcol winbufnr win_getid win_id2tabwin winnr winsaveview writefile syn keyword vimFuncName contained add argidx assert_equal assert_inrange assert_report balloon_show buflisted bufwinid byteidxcomp char2nr ch_evalexpr ch_info ch_read ch_setoptions col confirm count delete empty executable exp filereadable findfile fnameescape foldlevel funcref getbufinfo getcharmod getcmdtype getcwd getftime getmatches getreg gettabwinvar getwinvar has histadd hlexists indent inputlist insert isnan job_setoptions join json_encode libcallnr localtime map matchadd matchend max mzeval pathshorten printf pyxeval reltimefloat remote_peek remove reverse screencol searchpair serverlist setcmdpos setmatches settabvar shellescape sinh spellsuggest str2nr strdisplaywidth stridx strpart strwidth synconcealed synIDtrans systemlist tabpagewinnr tan term_getaltscreen term_getjob term_getsize term_getttty term_scrape term_start test_autochdir test_ignore_error test_null_job test_null_string timer_info timer_stop toupper type uniq visualmode wincol win_gotoid win_id2win winrestcmd winwidth xor syn keyword vimFuncName contained and arglistid assert_exception assert_match assert_true browse bufloaded bufwinnr call ch_canread ch_evalraw ch_log ch_readraw ch_status complete copy cscope_connection did_filetype escape execute expand filewritable float2nr fnamemodify foldtext function getbufline getcharsearch getcmdwintype getfontname getftype getpid getregtype getwininfo glob has_key histdel hlID index inputrestore invert items job_start js_decode keys line log maparg matchaddpos matchlist min nextnonblank perleval pumvisible range reltimestr remote_read rename round screenrow searchpairpos setbufline setfperm setpos settabwinvar shiftwidth sort split "--- syntax here and above generated by mkvimvim --- " Special Vim Highlighting (not automatic) {{{1 " Set up folding commands if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]' if g:vimsyn_folding =~# 'a' com! -nargs=* VimFolda fold else com! -nargs=* VimFolda endif if g:vimsyn_folding =~# 'f' com! -nargs=* VimFoldf fold else com! -nargs=* VimFoldf endif if g:vimsyn_folding =~# 'l' com! -nargs=* VimFoldl fold else com! -nargs=* VimFoldl endif if g:vimsyn_folding =~# 'm' com! -nargs=* VimFoldm fold else com! -nargs=* VimFoldm endif if g:vimsyn_folding =~# 'p' com! -nargs=* VimFoldp fold else com! -nargs=* VimFoldp endif if g:vimsyn_folding =~# 'P' com! -nargs=* VimFoldP fold else com! -nargs=* VimFoldP endif if g:vimsyn_folding =~# 'r' com! -nargs=* VimFoldr fold else com! -nargs=* VimFoldr endif if g:vimsyn_folding =~# 't' com! -nargs=* VimFoldt fold else com! -nargs=* VimFoldt endif else com! -nargs=* VimFolda com! -nargs=* VimFoldf com! -nargs=* VimFoldl com! -nargs=* VimFoldm com! -nargs=* VimFoldp com! -nargs=* VimFoldP com! -nargs=* VimFoldr com! -nargs=* VimFoldt endif " commands not picked up by the generator (due to non-standard format) syn keyword vimCommand contained py3 " Deprecated variable options {{{2 if exists("g:vim_minlines") let g:vimsyn_minlines= g:vim_minlines endif if exists("g:vim_maxlines") let g:vimsyn_maxlines= g:vim_maxlines endif if exists("g:vimsyntax_noerror") let g:vimsyn_noerror= g:vimsyntax_noerror endif " Variable options {{{2 if exists("g:vim_maxlines") let s:vimsyn_maxlines= g:vim_maxlines else let s:vimsyn_maxlines= 60 endif " Numbers {{{2 " ======= syn match vimNumber "\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand syn match vimNumber "-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand syn match vimNumber "\<0[xX]\x\+" syn match vimNumber "\%(^\|\A\)\zs#\x\{6}" " All vimCommands are contained by vimIsCommands. {{{2 syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd syn match vimIsCommand "\<\h\w*\>" contains=vimCommand syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>" syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>" syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>" syn keyword vimCommand contained in " Insertions And Appends: insert append {{{2 " ======================= syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$"" syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$"" syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$"" " Behave! {{{2 " ======= syn match vimBehave "\" skipwhite nextgroup=vimBehaveModel,vimBehaveError syn keyword vimBehaveModel contained mswin xterm if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror") syn match vimBehaveError contained "[^ ]\+" endif " Filetypes {{{2 " ========= syn match vimFiletype "\\s\+[eE][nN][dD]\>" endif syn keyword vimAugroupKey contained aug[roup] " Operators: {{{2 " ========= syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "\(\\|\\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup syn region vimOperParen matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror") syn match vimOperError ")" endif " Functions : Tag is provided for those who wish to highlight tagged functions {{{2 " ========= syn cluster vimFuncList contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID syn cluster vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimGlobal,vimHighlight,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand syn match vimFunction "\\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f' syn region vimFuncBody contained fold start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList else syn region vimFuncBody contained start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList endif syn match vimFuncVar contained "a:\(\K\k*\|\d\+\)" syn match vimFuncSID contained "\c\|\" nextgroup=vimSpecFileMod,vimSubst syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst syn match vimSpecFileMod "\(:[phtre]\)\+" contained " User-Specified Commands: {{{2 " ======================= syn cluster vimUserCmdList contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFilter,vimFunc,vimFuncName,vimFunction,vimFunctionError,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine syn keyword vimUserCommand contained com[mand] syn match vimUserCmd "\.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList syn match vimUserAttrbError contained "-\a\+\ze\s" syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror") syn match vimUserCmdError contained "\S\+\>" endif syn case ignore syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister] syn keyword vimUserAttrbCmplt contained augroup buffer behave color command compiler cscope dir environment event expression file file_in_path filetype function help highlight history locale mapping menu option packadd shellcmd sign syntax syntime tag tag_listfiles user var syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError syn case match syn match vimUserAttrbCmplt contained "custom,\u\w*" " Lower Priority Comments: after some vim commands... {{{2 " ======================= syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString syn match vimComment +\!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+ contains=@vimStringGroup syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+ syn region vimString oneline start=+=!+lc=1 skip=+\\\\\|\\!+ end=+!+ contains=@vimStringGroup syn region vimString oneline start="=+"lc=1 skip="\\\\\|\\+" end="+" contains=@vimStringGroup syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+ " Substitutions: {{{2 " ============= syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation syn cluster vimSubstList add=vimCollection syn match vimSubst "\(:\+\s*\|^\s*\||\s*\)\<\%(\\|\\|\\)[:#[:alpha:]]\@!" nextgroup=vimSubstPat syn match vimSubst "\%(^\|[^\\]\)\[:#[:alpha:]]\@!" nextgroup=vimSubstPat contained syn match vimSubst "/\zs\\ze/" nextgroup=vimSubstPat syn match vimSubst "\(:\+\s*\|^\s*\)s\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat syn match vimSubst1 contained "\" nextgroup=vimSubstPat syn region vimSubstPat contained matchgroup=vimSubstDelim start="\z([^a-zA-Z( \t[\]&]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1 contains=@vimSubstList nextgroup=vimSubstRep4 oneline syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline syn region vimCollection contained transparent start="\\\@]\ze[-+,!]" nextgroup=vimOper,vimMarkNumber,vimSubst syn match vimMark ",\zs'[<>]\ze" nextgroup=vimOper,vimMarkNumber,vimSubst syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumber,vimSubst syn match vimMark "\'lc=1 syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)' " Set command and associated set-options (vimOptions) with comment {{{2 syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar oneline syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar syn match vimSetSep contained "[,:]" skipwhite nextgroup=vimCommand syn match vimSetMod contained "&vim\=\|[!&?<]\|all&" " Let {{{2 " === syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar,vimFuncVar " Abbreviations {{{2 " ============= syn keyword vimAbb ab[breviate] ca[bbrev] inorea[bbrev] cnorea[bbrev] norea[bbrev] ia[bbrev] skipwhite nextgroup=vimMapMod,vimMapLhs " Autocmd {{{2 " ======= syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList syn match vimAutoCmdSfxList contained "\S*" syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList " Echo and Execute -- prefer strings! {{{2 " ================ syn region vimEcho oneline excludenl matchgroup=vimCommand start="\" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimFuncVar,vimString,vimVar syn region vimExecute oneline excludenl matchgroup=vimCommand start="\" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar syn match vimEchoHL "echohl\=" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone syn case ignore syn keyword vimEchoHLNone none syn case match " Maps {{{2 " ==== syn match vimMap "\!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs syn keyword vimMap mapc[lear] smapc[lear] syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs syn match vimMapMod contained "\%#=1\c<\(buffer\|expr\|\(local\)\=leader\|nowait\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue syn case ignore syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique syn case match " Menus {{{2 " ===== syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList syn match vimMenuName "[^ \t\\<]\+" contained nextgroup=vimMenuNameMore,vimMenuMap syn match vimMenuPriority "\d\+\(\.\d\+\)*" contained skipwhite nextgroup=vimMenuName syn match vimMenuNameMore "\c\\\s\|\|\\\." contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation syn match vimMenuMod contained "\c<\(script\|silent\)\+>" skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList syn match vimMenuMap "\s" contained skipwhite nextgroup=vimMenuRhs syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vimIsCommand syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList " Angle-Bracket Notation (tnx to Michael Geddes) {{{2 " ====================== syn case ignore syn match vimNotation "\%#=1\(\\\|\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>" contains=vimBracket syn match vimNotation "\%#=1\(\\\|\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>" contains=vimBracket syn match vimNotation "\%#=1\(\\\|\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>" contains=vimBracket syn match vimNotation '\(\\\|\)\=[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket syn match vimNotation '\%#=1\(\\\|\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket syn match vimNotation "\%#=1\(\\\|\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>" contains=vimBracket syn match vimBracket contained "[\\<>]" syn case match " User Function Highlighting {{{2 " (following Gautam Iyer's suggestion) " ========================== syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\" contains=vimNotation syn match vimNotFunc "\\|\\|\\|\" " Errors And Warnings: {{{2 " ==================== if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror") syn match vimFunctionError "\s\zs[a-z0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank " syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank syn match vimElseIfErr "\" syn match vimBufnrWarn /\" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment syn match vimAuSyntax contained "\s+sy\%[ntax]" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment syn cluster vimFuncBodyList add=vimSyntax " Syntax: case {{{2 syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror") syn match vimSynCaseError contained "\i\+" endif syn keyword vimSynCase contained ignore match " Syntax: clear {{{2 syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList " Syntax: cluster {{{2 syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName syn region vimClusterName contained matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError syn match vimGroupAdd contained "add=" nextgroup=vimGroupList syn match vimGroupRem contained "remove=" nextgroup=vimGroupList syn cluster vimFuncBodyList add=vimSynType,vimGroupAdd,vimGroupRem " Syntax: iskeyword {{{2 syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList syn match vimIskList contained '\S\+' contains=vimIskSep syn match vimIskSep contained ',' " Syntax: include {{{2 syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList syn cluster vimFuncBodyList add=vimSynType " Syntax: keyword {{{2 syn cluster vimSynKeyGroup contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion syn region vimSynKeyRegion contained oneline keepend matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>" syn cluster vimFuncBodyList add=vimSynType " Syntax: match {{{2 syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>" if has("conceal") syn match vimSynMtchOpt contained "\" syn match vimSynReg contained "\(start\|skip\|end\)="he=e-1 nextgroup=vimSynRegPat syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=" syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod syn match vimSynPatMod contained "lc=\d\+" syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]" syn match vimSynNotPatRange contained "\\\\\|\\\[" syn match vimMtchComment contained '"[^"]\+$' syn cluster vimFuncBodyList add=vimSynType " Syntax: sync {{{2 " ============ syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror") syn match vimSyncError contained "\i\+" endif syn keyword vimSyncC contained ccomment clear fromstart syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg syn match vimSyncLinebreak contained "\" skipwhite nextgroup=vimSyncGroup syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone syn keyword vimSyncNone contained NONE " Additional IsCommand, here by reasons of precedence {{{2 " ==================== syn match vimIsCommand "\s*\a\+" transparent contains=vimCommand,vimNotation " Highlighting {{{2 " ============ syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror") syn match vimHiCtermError contained "\D\i*" endif syn match vimHighlight "\" skipwhite nextgroup=vimHiBang,@vimHighlightCluster syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster syn match vimHiGroup contained "\i\+" syn case ignore syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl syn keyword vimFgBgAttrib contained none bg background fg foreground syn case match syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList syn case ignore syn keyword vimHiCtermColor contained black blue brown cyan darkblue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow syn match vimHiCtermColor contained "\" syn case match syn match vimHiFontname contained "[a-zA-Z\-*]\+" syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'" syn match vimHiGuiRgb contained "#\x\{6}" " Highlighting: hi group key=arg ... {{{2 syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation syn region vimHiKeyList contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||" contains=@vimHiCluster if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror") syn match vimHiKeyError contained "\i\+="he=e-1 endif syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList syn match vimHiStartStop contained "\c\(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib syn match vimHiTermcap contained "\S\+" contains=vimNotation syn match vimHiNmbr contained '\d\+' " Highlight: clear {{{2 syn keyword vimHiClear contained clear nextgroup=vimHiGroup " Highlight: link {{{2 syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\\|\\)" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation syn cluster vimFuncBodyList add=vimHiLink " Control Characters {{{2 " ================== syn match vimCtrlChar "[- -]" " Beginners - Patterns that involve ^ {{{2 " ========= syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup syn match vimContinue "^\s*\\" syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained " Searches And Globals: {{{2 " ==================== syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained syn region vimGlobal matchgroup=Statement start='\:p:h")."/lua.vim") if !filereadable(s:luapath) for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n") if filereadable(fnameescape(s:luapath)) let s:luapath= fnameescape(s:luapath) break endif endfor endif if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath) unlet! b:current_syntax syn cluster vimFuncBodyList add=vimLuaRegion exe "syn include @vimLuaScript ".s:luapath VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript syn cluster vimFuncBodyList add=vimLuaRegion else syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+ endif unlet s:luapath " [-- perl --] {{{3 let s:perlpath= fnameescape(expand(":p:h")."/perl.vim") if !filereadable(s:perlpath) for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n") if filereadable(fnameescape(s:perlpath)) let s:perlpath= fnameescape(s:perlpath) break endif endfor endif if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath) unlet! b:current_syntax syn cluster vimFuncBodyList add=vimPerlRegion exe "syn include @vimPerlScript ".s:perlpath VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript syn cluster vimFuncBodyList add=vimPerlRegion else syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ endif unlet s:perlpath " [-- ruby --] {{{3 let s:rubypath= fnameescape(expand(":p:h")."/ruby.vim") if !filereadable(s:rubypath) for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n") if filereadable(fnameescape(s:rubypath)) let s:rubypath= fnameescape(s:rubypath) break endif endfor endif if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath) syn cluster vimFuncBodyList add=vimRubyRegion unlet! b:current_syntax exe "syn include @vimRubyScript ".s:rubypath VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript syn cluster vimFuncBodyList add=vimRubyRegion else syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+ endif unlet s:rubypath " [-- python --] {{{3 let s:pythonpath= fnameescape(expand(":p:h")."/python.vim") if !filereadable(s:pythonpath) for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n") if filereadable(fnameescape(s:pythonpath)) let s:pythonpath= fnameescape(s:pythonpath) break endif endfor endif if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath) unlet! b:current_syntax syn cluster vimFuncBodyList add=vimPythonRegion exe "syn include @vimPythonScript ".s:pythonpath VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript syn cluster vimFuncBodyList add=vimPythonRegion else syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+ endif unlet s:pythonpath " [-- tcl --] {{{3 if has("win32") || has("win95") || has("win64") || has("win16") " apparently has("tcl") has been hanging vim on some windows systems with cygwin let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\\%(\.exe\)\=$') else let s:trytcl= 1 endif if s:trytcl let s:tclpath= fnameescape(expand(":p:h")."/tcl.vim") if !filereadable(s:tclpath) for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n") if filereadable(fnameescape(s:tclpath)) let s:tclpath= fnameescape(s:tclpath) break endif endfor endif if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath) unlet! b:current_syntax syn cluster vimFuncBodyList add=vimTclRegion exe "syn include @vimTclScript ".s:tclpath VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript syn cluster vimFuncBodyList add=vimTclScript else syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+ endif unlet s:tclpath else syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+ endif unlet s:trytcl " [-- mzscheme --] {{{3 let s:mzschemepath= fnameescape(expand(":p:h")."/scheme.vim") if !filereadable(s:mzschemepath) for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n") if filereadable(fnameescape(s:mzschemepath)) let s:mzschemepath= fnameescape(s:mzschemepath) break endif endfor endif if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath) unlet! b:current_syntax let s:iskKeep= &isk syn cluster vimFuncBodyList add=vimMzSchemeRegion exe "syn include @vimMzSchemeScript ".s:mzschemepath let &isk= s:iskKeep unlet s:iskKeep VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript syn cluster vimFuncBodyList add=vimMzSchemeRegion else syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ endif unlet s:mzschemepath " Synchronize (speed) {{{2 "============ if exists("g:vimsyn_minlines") exe "syn sync minlines=".g:vimsyn_minlines endif exe "syn sync maxlines=".s:vimsyn_maxlines syn sync linecont "^\s\+\\" syn sync match vimAugroupSyncA groupthere NONE "\\s\+[eE][nN][dD]" " ==================== " Highlighting Settings {{{2 " ==================== if !exists("skip_vim_syntax_inits") if !exists("g:vimsyn_noerror") hi def link vimBehaveError vimError hi def link vimCollClassErr vimError hi def link vimErrSetting vimError hi def link vimEmbedError vimError hi def link vimFTError vimError hi def link vimFunctionError vimError hi def link vimFunc vimError hi def link vimHiAttribList vimError hi def link vimHiCtermError vimError hi def link vimHiKeyError vimError hi def link vimKeyCodeError vimError hi def link vimMapModErr vimError hi def link vimSubstFlagErr vimError hi def link vimSynCaseError vimError hi def link vimBufnrWarn vimWarn endif hi def link vimAbb vimCommand hi def link vimAddress vimMark hi def link vimAugroupError vimError hi def link vimAugroupKey vimCommand hi def link vimAuHighlight vimHighlight hi def link vimAutoCmdOpt vimOption hi def link vimAutoCmd vimCommand hi def link vimAutoEvent Type hi def link vimAutoSet vimCommand hi def link vimBehaveModel vimBehave hi def link vimBehave vimCommand hi def link vimBracket Delimiter hi def link vimCmplxRepeat SpecialChar hi def link vimCommand Statement hi def link vimComment Comment hi def link vimCommentString vimString hi def link vimCommentTitle PreProc hi def link vimCondHL vimCommand hi def link vimContinue Special hi def link vimCtrlChar SpecialChar hi def link vimEchoHLNone vimGroup hi def link vimEchoHL vimCommand hi def link vimElseIfErr Error hi def link vimElseif vimCondHL hi def link vimEnvvar PreProc hi def link vimError Error hi def link vimFBVar vimVar hi def link vimFgBgAttrib vimHiAttrib hi def link vimFold Folded hi def link vimFTCmd vimCommand hi def link vimFTOption vimSynType hi def link vimFuncKey vimCommand hi def link vimFuncName Function hi def link vimFuncSID Special hi def link vimFuncVar Identifier hi def link vimGroupAdd vimSynOption hi def link vimGroupName vimGroup hi def link vimGroupRem vimSynOption hi def link vimGroupSpecial Special hi def link vimGroup Type hi def link vimHiAttrib PreProc hi def link vimHiClear vimHighlight hi def link vimHiCtermFgBg vimHiTerm hi def link vimHiCTerm vimHiTerm hi def link vimHighlight vimCommand hi def link vimHiGroup vimGroupName hi def link vimHiGuiFgBg vimHiTerm hi def link vimHiGuiFont vimHiTerm hi def link vimHiGuiRgb vimNumber hi def link vimHiGui vimHiTerm hi def link vimHiNmbr Number hi def link vimHiStartStop vimHiTerm hi def link vimHiTerm Type hi def link vimHLGroup vimGroup hi def link vimHLMod PreProc hi def link vimInsert vimString hi def link vimIskSep Delimiter hi def link vimKeyCode vimSpecFile hi def link vimKeyword Statement hi def link vimLet vimCommand hi def link vimLineComment vimComment hi def link vimMapBang vimCommand hi def link vimMapModKey vimFuncSID hi def link vimMapMod vimBracket hi def link vimMap vimCommand hi def link vimMark Number hi def link vimMarkNumber vimNumber hi def link vimMenuMod vimMapMod hi def link vimMenuNameMore vimMenuName hi def link vimMenuName PreProc hi def link vimMtchComment vimComment hi def link vimNorm vimCommand hi def link vimNotation Special hi def link vimNotFunc vimCommand hi def link vimNotPatSep vimString hi def link vimNumber Number hi def link vimOperError Error hi def link vimOper Operator hi def link vimOption PreProc hi def link vimParenSep Delimiter hi def link vimPatSepErr vimPatSep hi def link vimPatSepR vimPatSep hi def link vimPatSep SpecialChar hi def link vimPatSepZone vimString hi def link vimPatSepZ vimPatSep hi def link vimPattern Type hi def link vimPlainMark vimMark hi def link vimPlainRegister vimRegister hi def link vimRegister SpecialChar hi def link vimScriptDelim Comment hi def link vimSearchDelim Statement hi def link vimSearch vimString hi def link vimSep Delimiter hi def link vimSetMod vimOption hi def link vimSetSep Statement hi def link vimSetString vimString hi def link vimSpecFile Identifier hi def link vimSpecFileMod vimSpecFile hi def link vimSpecial Type hi def link vimStatement Statement hi def link vimStringCont vimString hi def link vimString String hi def link vimSubst1 vimSubst hi def link vimSubstDelim Delimiter hi def link vimSubstFlags Special hi def link vimSubstSubstr SpecialChar hi def link vimSubstTwoBS vimString hi def link vimSubst vimCommand hi def link vimSynCaseError Error hi def link vimSynCase Type hi def link vimSyncC Type hi def link vimSyncError Error hi def link vimSyncGroupName vimGroupName hi def link vimSyncGroup vimGroupName hi def link vimSyncKey Type hi def link vimSyncNone Type hi def link vimSynContains vimSynOption hi def link vimSynError Error hi def link vimSynKeyContainedin vimSynContains hi def link vimSynKeyOpt vimSynOption hi def link vimSynMtchGrp vimSynOption hi def link vimSynMtchOpt vimSynOption hi def link vimSynNextgroup vimSynOption hi def link vimSynNotPatRange vimSynRegPat hi def link vimSynOption Special hi def link vimSynPatRange vimString hi def link vimSynRegOpt vimSynOption hi def link vimSynRegPat vimString hi def link vimSynReg Type hi def link vimSyntax vimCommand hi def link vimSynType vimSpecial hi def link vimTodo Todo hi def link vimUnmap vimMap hi def link vimUserAttrbCmpltFunc Special hi def link vimUserAttrbCmplt vimSpecial hi def link vimUserAttrbKey vimOption hi def link vimUserAttrb vimSpecial hi def link vimUserAttrbError Error hi def link vimUserCmdError Error hi def link vimUserCommand vimCommand hi def link vimUserFunc Normal hi def link vimVar Identifier hi def link vimWarn WarningMsg endif " Current Syntax Variable: {{{2 let b:current_syntax = "vim" " --------------------------------------------------------------------- " Cleanup: {{{1 delc VimFolda delc VimFoldf delc VimFoldl delc VimFoldm delc VimFoldp delc VimFoldP delc VimFoldr delc VimFoldt let &cpo = s:keepcpo unlet s:keepcpo " vim:ts=18 fdm=marker PK!@Ϗvim80/syntax/reva.vimnu[" Vim syntax file " Language: Reva Forth " Version: 2011.2 " Last Change: 2012/02/13 " Maintainer: Ron Aaron " URL: http://ronware.org/reva/ " Filetypes: *.rf *.frt " NOTE: You should also have the ftplugin/reva.vim file to set 'isk' " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn clear " Synchronization method syn sync ccomment syn sync maxlines=100 syn case ignore " Some special, non-FORTH keywords "syn keyword revaTodo contained todo fixme bugbug todo: bugbug: note: syn match revaTodo contained '\(todo\|fixme\|bugbug\|note\)[:]*' syn match revaTodo contained 'copyright\(\s(c)\)\=\(\s[0-9]\{2,4}\)\=' syn match revaHelpDesc '\S.*' contained syn match revaHelpStuff '\<\(def\|stack\|ctx\|ver\|os\|related\):\s.*' syn region revaHelpStuff start='\' end='^\S' contains=revaHelpDesc syn region revaEOF start='\<|||\>' end='{$}' contains=revaHelpStuff syn case match " basic mathematical and logical operators syn keyword revaoperators + - * / mod /mod negate abs min max umin umax syn keyword revaoperators and or xor not invert 1+ 1- syn keyword revaoperators m+ */ */mod m* um* m*/ um/mod fm/mod sm/rem syn keyword revaoperators d+ d- dnegate dabs dmin dmax > < = >> << u< <> " stack manipulations syn keyword revastack drop nip dup over tuck swap rot -rot ?dup pick roll syn keyword revastack 2drop 2nip 2dup 2over 2swap 2rot 3drop syn keyword revastack >r r> r@ rdrop " syn keyword revastack sp@ sp! rp@ rp! " address operations syn keyword revamemory @ ! +! c@ c! 2@ 2! align aligned allot allocate here free resize syn keyword revaadrarith chars char+ cells cell+ cell cell- 2cell+ 2cell- 3cell+ 4cell+ syn keyword revamemblks move fill " conditionals syn keyword revacond if else then =if >if if if0 ;; catch throw " iterations syn keyword revaloop while repeat until again syn keyword revaloop do loop i j leave unloop skip more " new words syn match revaColonDef '\ immediate syn keyword revadefine compile literal ' ['] " Built in words com! -nargs=+ Builtin syn keyword revaBuiltin Builtin execute ahead interp bye >body here pad words make Builtin accept close cr creat delete ekey emit fsize ioerr key? Builtin mtime open/r open/rw read rename seek space spaces stat Builtin tell type type_ write (seek) (argv) (save) 0; 0drop; Builtin >class >lz >name >xt alias alias: appname argc asciiz, asciizl, Builtin body> clamp depth disassemble findprev fnvhash getenv here, Builtin iterate last! last@ later link lz> lzmax os parse/ peek Builtin peek-n pop prior push put rp@ rpick save setenv slurp Builtin stack-empty? stack-iterate stack-size stack: THROW_BADFUNC Builtin THROW_BADLIB THROW_GENERIC used xt>size z, Builtin +lplace +place -chop /char /string bounds c+lplace c+place Builtin chop cmp cmpi count lc lcount lplace place quote rsplit search split Builtin zcount zt \\char Builtin chdir g32 k32 u32 getcwd getpid hinst osname stdin stdout Builtin (-lib) (bye) (call) (else) (find) (func) (here) (if (lib) (s0) (s^) Builtin (to~) (while) >in >rel ?literal appstart cold compiling? context? d0 default_class Builtin defer? dict dolstr dostr find-word h0 if) interp isa onexit Builtin onstartup pdoes pop>ebx prompt rel> rp0 s0 src srcstr state str0 then,> then> tib Builtin tp vector vector! word? xt? .ver revaver revaver# && '' 'constant 'context Builtin 'create 'defer 'does 'forth 'inline 'macro 'macront 'notail 'value 'variable Builtin (.r) (context) (create) (header) (hide) (inline) (p.r) (words~) (xfind) Builtin ++ -- , -2drop -2nip -link -swap . .2x .classes .contexts .funcs .libs .needs .r Builtin .rs .x 00; 0do 0if 1, 2, 3, 2* 2/ 2constant 2variable 3dup 4dup ;then >base >defer Builtin >rr ? ?do @execute @rem appdir argv as back base base! between chain cleanup-libs Builtin cmove> context?? ctrl-c ctx>name data: defer: defer@def dictgone do_cr eleave Builtin endcase endof eval exception exec false find func: header heapgone help help/ Builtin hex# hide inline{ last lastxt lib libdir literal, makeexename mnotail ms ms@ Builtin newclass noop nosavedict notail nul of off on p: padchar parse parseln Builtin parsews rangeof rdepth remains reset reva revaused rol8 rr> scratch setclass sp Builtin strof super> temp time&date true turnkey? undo vfunc: w! w@ Builtin xchg xchg2 xfind xt>name xwords { {{ }} } _+ _1+ _1- pathsep case \|| " p[ [''] [ ['] " debugging syn keyword revadebug .s dump see " basic character operations " syn keyword revaCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY " syn keyword revaCharOps KEY? TIB CR " syn match revaCharOps '\d >digit digit> >single >double >number >float " contexts syn keyword revavocs forth macro inline syn keyword revavocs context: syn match revavocs /\<\~[^~ ]*/ syn match revavocs /[^~ ]*\~\>/ " numbers syn keyword revamath decimal hex base binary octal syn match revainteger '\<-\=[0-9.]*[0-9.]\+\>' " recognize hex and binary numbers, the '$' and '%' notation is for greva syn match revainteger '\<\$\x*\x\+\>' " *1* --- dont't mess syn match revainteger '\<\x*\d\x*\>' " *2* --- this order! syn match revainteger '\<%[0-1]*[0-1]\+\>' syn match revainteger "\<'.\>" " Strings " syn region revaString start=+\.\?\"+ end=+"+ end=+$+ syn region revaString start=/"/ skip=/\\"/ end=/"/ " Comments syn region revaComment start='\\S\s' end='.*' contains=revaTodo syn match revaComment '\.(\s[^)]\{-})' contains=revaTodo syn region revaComment start='(\s' skip='\\)' end=')' contains=revaTodo syn match revaComment '(\s[^\-]*\-\-[^\-]\{-})' contains=revaTodo syn match revaComment '\<|\s.*$' contains=revaTodo syn match revaColonDef '\<:m\?\s*[^ \t]\+\>' contains=revaComment " Include files syn match revaInclude '\<\(include\|needs\)\s\+\S\+' " Define the default highlighting. if !exists("did_reva_syntax_inits") let did_reva_syntax_inits=1 " The default methods for highlighting. Can be overriden later. hi def link revaEOF cIf0 hi def link revaHelpStuff special hi def link revaHelpDesc Comment hi def link revaTodo Todo hi def link revaOperators Operator hi def link revaMath Number hi def link revaInteger Number hi def link revaStack Special hi def link revaFStack Special hi def link revaSP Special hi def link revaMemory Operator hi def link revaAdrArith Function hi def link revaMemBlks Function hi def link revaCond Conditional hi def link revaLoop Repeat hi def link revaColonDef Define hi def link revaEndOfColonDef Define hi def link revaDefine Define hi def link revaDebug Debug hi def link revaCharOps Character hi def link revaConversion String hi def link revaForth Statement hi def link revaVocs Statement hi def link revaString String hi def link revaComment Comment hi def link revaClassDef Define hi def link revaEndOfClassDef Define hi def link revaObjectDef Define hi def link revaEndOfObjectDef Define hi def link revaInclude Include hi def link revaBuiltin Keyword endif let b:current_syntax = "reva" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8:sw=4:nocindent:smartindent: PK!yyvim80/syntax/wget.vimnu[" Vim syntax file " Language: Wget configuration file (/etc/wgetrc ~/.wgetrc) " Maintainer: Doug Kearns " Last Change: 2013 Jun 1 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match wgetComment "#.*$" contains=wgetTodo contained syn keyword wgetTodo TODO NOTE FIXME XXX contained syn region wgetString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained oneline syn region wgetString start=+'+ skip=+\\\\\|\\'+ end=+'+ contained oneline syn case ignore syn keyword wgetBoolean on off contained syn keyword wgetNumber inf contained syn case match syn match wgetNumber "\<\%(\d\+\|inf\)\>" contained syn match wgetQuota "\<\d\+[kKmM]\>" contained syn match wgetTime "\<\d\+[smhdw]\>" contained "{{{ Commands let s:commands = map([ \ "accept", \ "add_hostdir", \ "adjust_extension", \ "always_rest", \ "ask_password", \ "auth_no_challenge", \ "background", \ "backup_converted", \ "backups", \ "base", \ "bind_address", \ "ca_certificate", \ "ca_directory", \ "cache", \ "certificate", \ "certificate_type", \ "check_certificate", \ "connect_timeout", \ "content_disposition", \ "continue", \ "convert_links", \ "cookies", \ "cut_dirs", \ "debug", \ "default_page", \ "delete_after", \ "dns_cache", \ "dns_timeout", \ "dir_prefix", \ "dir_struct", \ "domains", \ "dot_bytes", \ "dots_in_line", \ "dot_spacing", \ "dot_style", \ "egd_file", \ "exclude_directories", \ "exclude_domains", \ "follow_ftp", \ "follow_tags", \ "force_html", \ "ftp_passwd", \ "ftp_password", \ "ftp_user", \ "ftp_proxy", \ "glob", \ "header", \ "html_extension", \ "htmlify", \ "http_keep_alive", \ "http_passwd", \ "http_password", \ "http_proxy", \ "https_proxy", \ "http_user", \ "ignore_case", \ "ignore_length", \ "ignore_tags", \ "include_directories", \ "inet4_only", \ "inet6_only", \ "input", \ "iri", \ "keep_session_cookies", \ "kill_longer", \ "limit_rate", \ "load_cookies", \ "locale", \ "local_encoding", \ "logfile", \ "login", \ "max_redirect", \ "mirror", \ "netrc", \ "no_clobber", \ "no_parent", \ "no_proxy", \ "numtries", \ "output_document", \ "page_requisites", \ "passive_ftp", \ "passwd", \ "password", \ "post_data", \ "post_file", \ "prefer_family", \ "preserve_permissions", \ "private_key", \ "private_key_type", \ "progress", \ "protocol_directories", \ "proxy_passwd", \ "proxy_password", \ "proxy_user", \ "quiet", \ "quota", \ "random_file", \ "random_wait", \ "read_timeout", \ "reclevel", \ "recursive", \ "referer", \ "reject", \ "relative_only", \ "remote_encoding", \ "remove_listing", \ "restrict_file_names", \ "retr_symlinks", \ "retry_connrefused", \ "robots", \ "save_cookies", \ "save_headers", \ "secure_protocol", \ "server_response", \ "show_all_dns_entries", \ "simple_host_check", \ "span_hosts", \ "spider", \ "strict_comments", \ "sslcertfile", \ "sslcertkey", \ "timeout", \ "time_stamping", \ "use_server_timestamps", \ "tries", \ "trust_server_names", \ "user", \ "use_proxy", \ "user_agent", \ "verbose", \ "wait", \ "wait_retry"], \ "substitute(v:val, '_', '[-_]\\\\=', 'g')") "}}} syn case ignore for cmd in s:commands exe 'syn match wgetCommand "' . cmd . '" nextgroup=wgetAssignmentOperator skipwhite contained' endfor syn case match syn match wgetStart "^" nextgroup=wgetCommand,wgetComment skipwhite syn match wgetAssignmentOperator "=" nextgroup=wgetString,wgetBoolean,wgetNumber,wgetQuota,wgetTime skipwhite contained hi def link wgetAssignmentOperator Special hi def link wgetBoolean Boolean hi def link wgetCommand Identifier hi def link wgetComment Comment hi def link wgetNumber Number hi def link wgetQuota Number hi def link wgetString String hi def link wgetTodo Todo let b:current_syntax = "wget" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 fdm=marker: PK!OVWhWhvim80/syntax/jam.vimnu[" Vim syntax file " Language: JAM " Maintainer: Ralf Lemke (ralflemk@t-online.de) " Last change: 2012 Jan 08 by Thilo Six " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword=@,48-57,_,- " A bunch of useful jam keywords syn keyword jamStatement break call dbms flush global include msg parms proc public receive return send unload vars syn keyword jamConditional if else syn keyword jamRepeat for while next step syn keyword jamTodo contained TODO FIXME XXX syn keyword jamDBState1 alias binary catquery close close_all_connections column_names connection continue continue_bottom continue_down continue_top continue_up syn keyword jamDBState2 cursor declare engine execute format occur onentry onerror onexit sql start store unique with syn keyword jamSQLState1 all alter and any avg between by count create current data database delete distinct drop exists fetch from grant group syn keyword jamSQLState2 having index insert into like load max min of open order revoke rollback runstats select set show stop sum synonym table to union update values view where bundle syn keyword jamLibFunc1 dm_bin_create_occur dm_bin_delete_occur dm_bin_get_dlength dm_bin_get_occur dm_bin_length dm_bin_max_occur dm_bin_set_dlength dm_convert_empty dm_cursor_connection dm_cursor_consistent dm_cursor_engine dm_dbi_init dm_dbms dm_dbms_noexp dm_disable_styles dm_enable_styles dm_exec_sql dm_expand dm_free_sql_info dm_gen_change_execute_using dm_gen_change_select_from dm_gen_change_select_group_by dm_gen_change_select_having dm_gen_change_select_list dm_gen_change_select_order_by dm_gen_change_select_suffix dm_gen_change_select_where dm_gen_get_tv_alias dm_gen_sql_info syn keyword jamLibFunc2 dm_get_db_conn_handle dm_get_db_cursor_handle dm_get_driver_option dm_getdbitext dm_init dm_is_connection dm_is_cursor dm_is_engine dm_odb_preserves_cursor dm_reset dm_set_driver_option dm_set_max_fetches dm_set_max_rows_per_fetch dm_set_tm_clear_fast dm_val_relative sm_adjust_area sm_allget sm_amt_format sm_e_amt_format sm_i_amt_format sm_n_amt_format sm_o_amt_format sm_append_bundle_data sm_append_bundle_done sm_append_bundle_item sm_d_at_cur sm_l_at_cur sm_r_at_cur sm_mw_attach_drawing_func sm_mwn_attach_drawing_func sm_mwe_attach_drawing_func sm_xm_attach_drawing_func sm_xmn_attach_drawing_func sm_xme_attach_drawing_func sm_backtab sm_bel sm_bi_comparesm_bi_copy sm_bi_initialize sm_bkrect sm_c_off sm_c_on sm_c_vis sm_calc sm_cancel sm_ckdigit sm_cl_all_mdts sm_cl_unprot sm_clear_array sm_n_clear_array sm_1clear_array sm_n_1clear_array sm_close_window sm_com_load_picture sm_com_QueryInterface sm_com_result sm_com_result_msg sm_com_set_handler sm_copyarray sm_n_copyarray sm_create_bundle syn keyword jamLibFunc3 sm_d_msg_line sm_dblval sm_e_dblval sm_i_dblval sm_n_dblval sm_o_dblval sm_dd_able sm_dde_client_connect_cold sm_dde_client_connect_hot sm_dde_client_connect_warm sm_dde_client_disconnect sm_dde_client_off sm_dde_client_on sm_dde_client_paste_link_cold sm_dde_client_paste_link_hot sm_dde_client_paste_link_warm sm_dde_client_request sm_dde_execute sm_dde_install_notify sm_dde_poke sm_dde_server_off sm_dde_server_on sm_delay_cursor sm_deselect sm_dicname sm_disp_off sm_dlength sm_e_dlength sm_i_dlength sm_n_dlength sm_o_dlength sm_do_uinstalls sm_i_doccur sm_o_doccur sm_drawingarea sm_xm_drawingarea sm_dtofield sm_e_dtofield sm_i_dtofield sm_n_dtofield sm_o_dtofield sm_femsg sm_ferr_reset sm_fi_path sm_file_copy sm_file_exists sm_file_move sm_file_remove sm_fi_open sm_fi_path sm_filebox sm_filetypes sm_fio_a2f sm_fio_close sm_fio_editor sm_fio_error sm_fio_error_set sm_fio_f2a sm_fio_getc sm_fio_gets sm_fio_handle sm_fio_open sm_fio_putc sm_fio_puts sm_fio_rewind sm_flush sm_d_form sm_l_form syn keyword jamLibFunc4 sm_r_form sm_formlist sm_fptr sm_e_fptr sm_i_fptr sm_n_fptr sm_o_fptr sm_fqui_msg sm_fquiet_err sm_free_bundle sm_ftog sm_e_ftog sm_i_ftog sm_n_ftog sm_o_ftog sm_fval sm_e_fval sm_i_fval sm_n_fval sm_o_fval sm_i_get_bi_data sm_o_get_bi_data sm_get_bundle_data sm_get_bundle_item_count sm_get_bundle_occur_count sm_get_next_bundle_name sm_i_get_tv_bi_data sm_o_get_tv_bi_data sm_getfield sm_e_getfield sm_i_getfield sm_n_getfield sm_o_getfield sm_getkey sm_gofield sm_e_gofield sm_i_gofield sm_n_gofield sm_o_gofield sm_gtof sm_gval sm_i_gtof sm_n_gval sm_hlp_by_name sm_home sm_inimsg sm_initcrt sm_jinitcrt sm_jxinitcrt sm_input sm_inquire sm_install sm_intval sm_e_intval sm_i_intval sm_n_intval sm_o_intval sm_i_ioccur sm_o_ioccur sm_is_bundle sm_is_no sm_e_is_no sm_i_is_no sm_n_is_no sm_o_is_no sm_is_yes sm_e_is_yes sm_i_is_yes sm_n_is_yes sm_o_is_yes sm_isabort sm_iset sm_issv sm_itofield sm_e_itofield sm_i_itofield sm_n_itofield sm_o_itofield sm_jclose sm_jfilebox sm_jform sm_djplcall sm_jplcall syn keyword jamLibFunc5 sm_sjplcall sm_jplpublic sm_jplunload sm_jtop sm_jwindow sm_key_integer sm_keyfilter sm_keyhit sm_keyinit sm_n_keyinit sm_keylabel sm_keyoption sm_l_close sm_l_open sm_l_open_syslib sm_last sm_launch sm_h_ldb_fld_get sm_n_ldb_fld_get sm_h_ldb_n_fld_get sm_n_ldb_n_fld_get sm_h_ldb_fld_store sm_n_ldb_fld_store sm_h_ldb_n_fld_store sm_n_ldb_n_fld_store sm_ldb_get_active sm_ldb_get_inactive sm_ldb_get_next_active sm_ldb_get_next_inactive sm_ldb_getfield sm_i_ldb_getfield sm_n_ldb_getfield sm_o_ldb_getfield sm_ldb_h_getfield sm_i_ldb_h_getfield sm_n_ldb_h_getfield sm_o_ldb_h_getfield sm_ldb_handle sm_ldb_init sm_ldb_is_loaded sm_ldb_load sm_ldb_name sm_ldb_next_handle sm_ldb_pop sm_ldb_push sm_ldb_putfield sm_i_ldb_putfield sm_n_ldb_putfield sm_o_ldb_putfield sm_ldb_h_putfield sm_i_ldb_h_putfield sm_n_ldb_h_putfield sm_o_ldb_h_putfield sm_ldb_state_get sm_ldb_h_state_get sm_ldb_state_set sm_ldb_h_state_set sm_ldb_unload sm_ldb_h_unload sm_leave sm_list_objects_count sm_list_objects_end sm_list_objects_next syn keyword jamLibFunc6 sm_list_objects_start sm_lngval sm_e_lngval sm_i_lngval sm_n_lngval sm_o_lngval sm_load_screen sm_log sm_lstore sm_ltofield sm_e_ltofield sm_i_ltofield sm_n_ltofield sm_o_ltofield sm_m_flush sm_menu_bar_error sm_menu_change sm_menu_create sm_menu_delete sm_menu_get_int sm_menu_get_str sm_menu_install sm_menu_remove sm_message_box sm_mncrinit6 sm_mnitem_change sm_n_mnitem_change sm_mnitem_create sm_n_mnitem_create sm_mnitem_delete sm_n_mnitem_delete sm_mnitem_get_int sm_n_mnitem_get_int sm_mnitem_get_str sm_n_mnitem_get_str sm_mnscript_load sm_mnscript_unload sm_ms_inquire sm_msg sm_msg_del sm_msg_get sm_msg_read sm_d_msg_read sm_n_msg_read sm_msgfind sm_mts_CreateInstance sm_mts_CreateProperty sm_mts_CreatePropertyGroup sm_mts_DisableCommit sm_mts_EnableCommit sm_mts_GetPropertyValue sm_mts_IsCallerInRole sm_mts_IsInTransaction sm_mts_IsSecurityEnabled sm_mts_PutPropertyValue sm_mts_SetAbort sm_mts_SetComplete sm_mus_time sm_mw_get_client_wnd sm_mw_get_cmd_show sm_mw_get_frame_wnd sm_mw_get_instance syn keyword jamLibFunc7 sm_mw_get_prev_instance sm_mw_PrintScreen sm_next_sync sm_nl sm_null sm_e_null sm_i_null sm_n_null sm_o_null sm_obj_call sm_obj_copy sm_obj_copy_id sm_obj_create sm_obj_delete sm_obj_delete_id sm_obj_get_property sm_obj_onerror sm_obj_set_property sm_obj_sort sm_obj_sort_auto sm_occur_no sm_off_gofield sm_e_off_gofield sm_i_off_gofield sm_n_off_gofield sm_o_off_gofield sm_option sm_optmnu_id sm_pinquire sm_popup_at_cur sm_prop_error sm_prop_get_int sm_prop_get_str sm_prop_get_dbl sm_prop_get_x_int sm_prop_get_x_str sm_prop_get_x_dbl sm_prop_get_m_int sm_prop_get_m_str sm_prop_get_m_dbl sm_prop_id sm_prop_name_to_id sm_prop_set_int sm_prop_set_str sm_prop_set_dbl sm_prop_set_x_int sm_prop_set_x_str sm_prop_set_x_dbl sm_prop_set_m_int sm_prop_set_m_str sm_prop_set_m_dbl sm_pset sm_putfield sm_e_putfield sm_i_putfield sm_n_putfield sm_o_putfield sm_raise_exception sm_receive sm_receive_args sm_rescreen sm_resetcrt sm_jresetcrt sm_jxresetcrt sm_resize sm_restore_data sm_return sm_return_args sm_rmformlist sm_rs_data syn keyword jamLibFunc8 sm_rw_error_message sm_rw_play_metafile sm_rw_runreport sm_s_val sm_save_data sm_sdtime sm_select sm_send sm_set_help sm_setbkstat sm_setsibling sm_setstatus sm_sh_off sm_shell sm_shrink_to_fit sm_slib_error sm_slib_install sm_slib_load sm_soption sm_strip_amt_ptr sm_e_strip_amt_ptr sm_i_strip_amt_ptr sm_n_strip_amt_ptr sm_o_strip_amt_ptr sm_sv_data sm_sv_free sm_svscreen sm_tab sm_tm_clear sm_tm_clear_model_events sm_tm_command sm_tm_command_emsgset sm_tm_command_errset sm_tm_continuation_validity sm_tm_dbi_checker sm_tm_error sm_tm_errorlog sm_tm_event sm_tm_event_name sm_tm_failure_message sm_tm_handling sm_tm_inquire sm_tm_iset sm_tm_msg_count_error sm_tm_msg_emsg sm_tm_msg_error sm_tm_old_bi_context sm_tm_pcopy sm_tm_pinquire sm_tm_pop_model_event sm_tm_pset sm_tm_push_model_event sm_tmpnam sm_tp_exec sm_tp_free_arg_buf sm_tp_gen_insert sm_tp_gen_sel_return sm_tp_gen_sel_where sm_tp_gen_val_link sm_tp_gen_val_return sm_tp_get_svc_alias sm_tp_get_tux_callid sm_translatecoords sm_tst_all_mdts syn keyword jamLibFunc9 sm_udtime sm_ungetkey sm_unload_screen sm_unsvscreen sm_upd_select sm_validate sm_n_validate sm_vinit sm_n_vinit sm_wcount sm_wdeselect sm_web_get_cookie sm_web_invoke_url sm_web_log_error sm_web_save_global sm_web_set_cookie sm_web_unsave_all_globals sm_web_unsave_global sm_mw_widget sm_mwe_widget sm_mwn_widget sm_xm_widget sm_xme_widget sm_xmn_widget sm_win_shrink sm_d_window sm_d_at_cur sm_l_window sm_l_at_cur sm_r_window sm_r_at_cur sm_winsize sm_wrotate sm_wselect sm_n_wselect sm_ww_length sm_n_ww_length sm_ww_read sm_n_ww_read sm_ww_write sm_n_ww_write sm_xlate_table sm_xm_get_base_window sm_xm_get_display syn keyword jamVariable1 SM_SCCS_ID SM_ENTERTERM SM_MALLOC SM_CANCEL SM_BADTERM SM_FNUM SM_DZERO SM_EXPONENT SM_INVDATE SM_MATHERR SM_FRMDATA SM_NOFORM SM_FRMERR SM_BADKEY SM_DUPKEY SM_ERROR SM_SP1 SM_SP2 SM_RENTRY SM_MUSTFILL SM_AFOVRFLW SM_TOO_FEW_DIGITS SM_CKDIGIT SM_HITANY SM_NOHELP SM_MAXHELP SM_OUTRANGE SM_ENTERTERM1 SM_SYSDATE SM_DATFRM SM_DATCLR SM_DATINV SM_KSDATA SM_KSERR SM_KSNONE SM_KSMORE SM_DAYA1 SM_DAYA2 SM_DAYA3 SM_DAYA4 SM_DAYA5 SM_DAYA6 SM_DAYA7 SM_DAYL1 SM_DAYL2 SM_DAYL3 SM_DAYL4 SM_DAYL5 SM_DAYL6 SM_DAYL7 SM_MNSCR_LOAD SM_MENU_INSTALL SM_INSTDEFSCRL SM_INSTSCROLL SM_MOREDATA SM_READY SM_WAIT SM_YES SM_NO SM_NOTEMP SM_FRMHELP SM_FILVER SM_ONLYONE SM_WMSMOVE SM_WMSSIZE SM_WMSOFF SM_LPRINT SM_FMODE SM_NOFILE SM_NOSECTN SM_FFORMAT SM_FREAD SM_RX1 SM_RX2 SM_RX3 SM_TABLOOK SM_MISKET SM_ILLKET SM_ILLBRA SM_MISDBLKET SM_ILLDBLKET SM_ILLDBLBRA SM_ILL_RIGHT SM_ILLELSE SM_NUMBER SM_EOT SM_BREAK SM_NOARGS SM_BIGVAR SM_EXCESS SM_EOL SM_FILEIO SM_FOR SM_RCURLY SM_NONAME SM_1JPL_ERR SM_2JPL_ERR SM_3JPL_ERR syn keyword jamVariable2 SM_JPLATCH SM_FORMAT SM_DESTINATION SM_ORAND SM_ORATOR SM_ILL_LEFT SM_MISSPARENS SM_ILLCLOSE_COMM SM_FUNCTION SM_EQUALS SM_MISMATCH SM_QUOTE SM_SYNTAX SM_NEXT SM_VERB_UNKNOWN SM_JPLFORM SM_NOT_LOADED SM_GA_FLG SM_GA_CHAR SM_GA_ARG SM_GA_DIG SM_NOFUNC SM_BADPROTO SM_JPLPUBLIC SM_NOCOMPILE SM_NULLEDIT SM_RP_NULL SM_DBI_NOT_INST SM_NOTJY SM_MAXLIB SM_FL_FLLIB SM_TPI_NOT_INST SM_RW_NOT_INST SM_MONA1 SM_MONA2 SM_MONA3 SM_MONA4 SM_MONA5 SM_MONA6 SM_MONA7 SM_MONA8 SM_MONA9 SM_MONA10 SM_MONA11 SM_MONA12 SM_MONL1 SM_MONL2 SM_MONL3 SM_MONL4 SM_MONL5 SM_MONL6 SM_MONL7 SM_MONL8 SM_MONL9 SM_MONL10 SM_MONL11 SM_MONL12 SM_AM SM_PM SM_0DEF_DTIME SM_1DEF_DTIME SM_2DEF_DTIME SM_3DEF_DTIME SM_4DEF_DTIME SM_5DEF_DTIME SM_6DEF_DTIME SM_7DEF_DTIME SM_8DEF_DTIME SM_9DEF_DTIME SM_CALC_DATE SM_BAD_DIGIT SM_BAD_YN SM_BAD_ALPHA SM_BAD_NUM SM_BAD_ALPHNUM SM_DECIMAL SM_1STATS SM_VERNO SM_DIG_ERR SM_YN_ERR SM_LET_ERR SM_NUM_ERR SM_ANUM_ERR SM_REXP_ERR SM_POSN_ERR SM_FBX_OPEN SM_FBX_WINDOW SM_FBX_SIBLING SM_OPENDIR syn keyword jamVariable3 SM_GETFILES SM_CHDIR SM_GETCWD SM_UNCLOSED_COMM SM_MB_OKLABEL SM_MB_CANCELLABEL SM_MB_YESLABEL SM_MB_NOLABEL SM_MB_RETRYLABEL SM_MB_IGNORELABEL SM_MB_ABORTLABEL SM_MB_HELPLABEL SM_MB_STOP SM_MB_QUESTION SM_MB_WARNING SM_MB_INFORMATION SM_MB_YESALLLABEL SM_0MN_CURRDEF SM_1MN_CURRDEF SM_2MN_CURRDEF SM_0DEF_CURR SM_1DEF_CURR SM_2DEF_CURR SM_3DEF_CURR SM_4DEF_CURR SM_5DEF_CURR SM_6DEF_CURR SM_7DEF_CURR SM_8DEF_CURR SM_9DEF_CURR SM_SEND_SYNTAX SM_SEND_ITEM SM_SEND_INVALID_BUNDLE SM_RECEIVE_SYNTAX SM_RECEIVE_ITEM_NUMBER SM_RECEIVE_OVERFLOW SM_RECEIVE_ITEM SM_SYNCH_RECEIVE SM_EXEC_FAIL SM_DYNA_HELP_NOT_AVAIL SM_DLL_LOAD_ERR SM_DLL_UNRESOLVED SM_DLL_VERSION_ERR SM_DLL_OPTION_ERR SM_DEMOERR SM_MB_OKALLLABEL SM_MB_NOALLLABEL SM_BADPROP SM_BETWEEN SM_ATLEAST SM_ATMOST SM_PR_ERROR SM_PR_OBJID SM_PR_OBJECT SM_PR_ITEM SM_PR_PROP SM_PR_PROP_ITEM SM_PR_PROP_VAL SM_PR_CONVERT SM_PR_OBJ_TYPE SM_PR_RANGE SM_PR_NO_SET SM_PR_BYND_SCRN SM_PR_WW_SCROLL SM_PR_NO_SYNC SM_PR_TOO_BIG SM_PR_BAD_MASK SM_EXEC_MEM_ERR syn keyword jamVariable4 SM_EXEC_NO_PROG SM_PR_NO_KEYSTRUCT SM_REOPEN_AS_SLIB SM_REOPEN_THE_SLIB SM_ERRLIB SM_WARNLIB SM_LIB_DOWNGRADE SM_OLDER SM_NEWER SM_UPGRADE SM_LIB_READONLY SM_LOPEN_ERR SM_LOPEN_WARN SM_MLOPEN_CREAT SM_MLOPEN_INIT SM_LIB_ERR SM_LIB_ISOLATE SM_LIB_NO_ERR SM_LIB_REC_ERR SM_LIB_FATAL_ERR SM_LIB_LERR_FILE SM_LIB_LERR_NOTLIB SM_LIB_LERR_BADVERS SM_LIB_LERR_FORMAT SM_LIB_LERR_BADCM SM_LIB_LERR_LOCK SM_LIB_LERR_RESERVED SM_LIB_LERR_READONLY SM_LIB_LERR_NOENTRY SM_LIB_LERR_BUSY SM_LIB_LERR_ROVERS SM_LIB_LERR_DEFAULT SM_LIB_BADCM SM_LIB_LERR_NEW SM_STANDALONE_MODE SM_FEATURE_RESTRICT FM_CH_LOST FM_JPL_PROMPT FM_YR4 FM_YR2 FM_MON FM_MON2 FM_DATE FM_DATE2 FM_HOUR FM_HOUR2 FM_MIN FM_MIN2 FM_SEC FM_SEC2 FM_YRDAY FM_AMPM FM_DAYA FM_DAYL FM_MONA FM_MONL FM_0MN_DEF_DT FM_1MN_DEF_DT FM_2MN_DEF_DT FM_DAY JM_QTERMINATE JM_HITSPACE JM_HITACK JM_NOJWIN UT_MEMERR UT_P_OPT UT_V_OPT UT_E_BINOPT UT_NO_INPUT UT_SECLONG UT_1FNAME UT_SLINE UT_FILE UT_ERROR UT_WARNING UT_MISSEQ UT_VOPT UT_M2_DESCR syn keyword jamVariable5 UT_M2_PROGNAME UT_M2_USAGE UT_M2_O_OPT UT_M2_COM UT_M2_BADTAG UT_M2_MSSQUOT UT_M2_AFTRQUOT UT_M2_DUPSECT UT_M2_BADUCLSS UT_M2_USECPRFX UT_M2_MPTYUSCT UT_M2_DUPMSGTG UT_M2_TOOLONG UT_M2_LONG UT_K2_DESCR UT_K2_PROGNAME UT_K2_USAGE UT_K2_MNEM UT_K2_NKEYDEF UT_K2_DUPKEY UT_K2_NOTFOUND UT_K2_1FNAME UT_K2_VOPT UT_K2_EXCHAR UT_V2_DESCR UT_V2_PROGNAME UT_V2_USAGE UT_V2_SLINE UT_V2_SEQUAL UT_V2_SVARNAME UT_V2_SNAME UT_V2_VOPT UT_V2_1REQ UT_CB_DESCR UT_CB_PROGNAME UT_CB_USAGE UT_CB_VOPT UT_CB_MIEXT UT_CB_AEXT UT_CB_UNKNOWN UT_CB_ISCHEME UT_CB_BKFGS UT_CB_ABGS UT_CB_REC UT_CB_GUI UT_CB_CONT UT_CB_CONTFG UT_CB_AFILE UT_CB_LEFT_QUOTE UT_CB_NO_EQUAL UT_CB_EXTRA_EQ UT_CB_BAD_LHS UT_CB_BAD_RHS UT_CB_BAD_QUOTED UT_CB_FILE UT_CB_FILE_LINE UT_CB_DUP_ALIAS UT_CB_LINE_LOOP UT_CB_BAD_STYLE UT_CB_DUP_STYLE UT_CB_NO_SECT UT_CB_DUP_SCHEME DM_ERROR DM_NODATABASE DM_NOTLOGGEDON DM_ALREADY_ON DM_ARGS_NEEDED DM_LOGON_DENIED DM_BAD_ARGS DM_BAD_CMD DM_NO_MORE_ROWS DM_ABORTED DM_NO_CURSOR DM_MANY_CURSORS DM_KEYWORD syn keyword jamVariable6 DM_INVALID_DATE DM_COMMIT DM_ROLLBACK DM_PARSE_ERROR DM_BIND_COUNT DM_BIND_VAR DM_DESC_COL DM_FETCH DM_NO_NAME DM_END_OF_PROC DM_NOCONNECTION DM_NOTSUPPORTED DM_TRAN_PEND DM_NO_TRANSACTION DM_ALREADY_INIT DM_INIT_ERROR DM_MAX_DEPTH DM_NO_PARENT DM_NO_CHILD DM_MODALITY_NOT_FOUND DM_NATIVE_NO_SUPPORT DM_NATIVE_CANCEL DM_TM_ALREADY DM_TM_IN_PROGRESS DM_TM_CLOSE_ERROR DM_TM_BAD_MODE DM_TM_BAD_CLOSE_ACTION DM_TM_INTERNAL DM_TM_MODEL_INTERNAL DM_TM_NO_ROOT DM_TM_NO_TRANSACTION DM_TM_INITIAL_MODE DM_TM_PARENT_NAME DM_TM_BAD_MEMBER DM_TM_FLD_NAM_LEN DM_TM_NO_PARENT DM_TM_BAD_REQUEST DM_TM_CANNOT_GEN_SQL DM_TM_CANNOT_EXEC_SQL DM_TM_DBI_ERROR DM_TM_DISCARD_ALL DM_TM_DISCARD_LATEST DM_TM_CALL_ERROR DM_TM_CALL_TYPE DM_TM_HOOK_MODEL DM_TM_ROOT_NAME DM_TM_TV_INVALID DM_TM_COL_NOT_FOUND DM_TM_BAD_LINK DM_TM_HOOK_MODEL_ERROR DM_TM_ONE_ROW DM_TM_SOME_ROWS DM_TM_GENERAL DM_TM_NO_HOOK DM_TM_NOSET DM_TM_TBLNAME DM_TM_PRIMARY_KEY DM_TM_INCOMPLETE_KEY DM_TM_CMD_MODE DM_TM_NO_SUCH_CMD DM_TM_NO_SUCH_SCOPE syn keyword jamVariable7 DM_TM_NO_SUCH_TV DM_TM_EVENT_LOOP DM_TM_UNSUPPORTED DM_TM_NO_MODEL DM_TM_SYNCH_SV DM_TM_WRONG_FORM DM_TM_VC_FIELD DM_TM_VC_DATE DM_TM_VC_TYPE DM_TM_BAD_CONTINUE DM_JDB_OUT_OF_MEMORY DM_JDB_DUPTABLEALIAS DM_JDB_DUPCURSORNAME DM_JDB_NODB DM_JDB_BINDCOUNT DM_JDB_NO_MORE_ROWS DM_JDB_AMBIGUOUS_COLUMN_REF DM_JDB_UNRESOLVED_COLUMN_REF DM_JDB_TABLE_READ_WRITE_CONFLICT DM_JDB_SYNTAX_ERROR DM_JDB_DUP_COLUMN_ASSIGNMENT DM_JDB_NO_MSG_FILE DM_JDB_NO_MSG DM_JDB_NOT_IMPLEMENTED DM_JDB_AGGREGATE_NOT_ALLOWED DM_JDB_TYPE_MISMATCH DM_JDB_NO_CURRENT_ROW DM_JDB_DB_CORRUPT DM_JDB_BUF_OVERFLOW DM_JDB_FILE_IO_ERR DM_JDB_BAD_HANDLE DM_JDB_DUP_TNAME DM_JDB_INVALID_TABLE_OP DM_JDB_TABLE_NOT_FOUND DM_JDB_CONVERSION_FAILED DM_JDB_INVALID_COLUMN_LIST DM_JDB_TABLE_OPEN DM_JDB_BAD_INPUT DM_JDB_DATATYPE_OVERFLOW DM_JDB_DATABASE_EXISTS DM_JDB_DATABASE_OPEN DM_JDB_DUP_CNAME DM_JDB_TMPDATABASE_ERR DM_JDB_INVALID_VALUES_COUNT DM_JDB_INVALID_COLUMN_COUNT DM_JDB_MAX_RECLEN_EXCEEDED DM_JDB_END_OF_GROUP syn keyword jamVariable8 TP_EXC_INVALID_CLIENT_COMMAND TP_EXC_INVALID_CLIENT_OPTION TP_EXC_INVALID_COMMAND TP_EXC_INVALID_COMMAND_SYNTAX TP_EXC_INVALID_CONNECTION TP_EXC_INVALID_CONTEXT TP_EXC_INVALID_FORWARD TP_EXC_INVALID_JAM_VARIABLE_REF TP_EXC_INVALID_MONITOR_COMMAND TP_EXC_INVALID_MONITOR_OPTION TP_EXC_INVALID_OPTION TP_EXC_INVALID_OPTION_VALUE TP_EXC_INVALID_SERVER_COMMAND TP_EXC_INVALID_SERVER_OPTION TP_EXC_INVALID_SERVICE TP_EXC_INVALID_TRANSACTION TP_EXC_JIF_ACCESS_FAILED TP_EXC_JIF_LOWER_VERSION TP_EXC_LOGFILE_ERROR TP_EXC_MONITOR_ERROR TP_EXC_NO_OUTSIDE_TRANSACTION TP_EXC_NO_OUTSTANDING_CALLS TP_EXC_NO_OUTSTANDING_MESSAGE TP_EXC_NO_SERVICES_ADVERTISED TP_EXC_NO_SIGNALS TP_EXC_NONTRANSACTIONAL_SERVICE TP_EXC_NONTRANSACTIONAL_ACTION TP_EXC_OUT_OF_MEMORY TP_EXC_POSTING_FAILED TP_EXC_PERMISSION_DENIED TP_EXC_REQUEST_LIMIT TP_EXC_ROLLBACK_COMMITTED TP_EXC_ROLLBACK_FAILED TP_EXC_SERVICE_FAILED TP_EXC_SERVICE_NOT_IN_JIF TP_EXC_SERVICE_PROTOCOL_ERROR TP_EXC_SUBSCRIPTION_LIMIT syn keyword jamVariable9 TP_EXC_SUBSCRIPTION_MATCH TP_EXC_SVC_ADVERTISE_LIMIT TP_EXC_SVC_WORK_OUTSTANDING TP_EXC_SVCROUTINE_MISSING TP_EXC_SVRINIT_WORK_OUTSTANDING TP_EXC_TIMEOUT TP_EXC_TRANSACTION_LIMIT TP_EXC_UNLOAD_FAILED TP_EXC_UNSUPPORTED_BUFFER TP_EXC_UNSUPPORTED_BUF_W_SUBT TP_EXC_USER_ABORT TP_EXC_WORK_OUTSTANDING TP_EXC_XA_CLOSE_FAILED TP_EXC_XA_OPEN_FAILED TP_EXC_QUEUE_BAD_MSGID TP_EXC_QUEUE_BAD_NAMESPACE TP_EXC_QUEUE_BAD_QUEUE TP_EXC_QUEUE_CANT_START_TRAN TP_EXC_QUEUE_FULL TP_EXC_QUEUE_MSG_IN_USE TP_EXC_QUEUE_NO_MSG TP_EXC_QUEUE_NOT_IN_QSPACE TP_EXC_QUEUE_RSRC_NOT_OPEN TP_EXC_QUEUE_SPACE_NOT_IN_JIF TP_EXC_QUEUE_TRAN_ABORTED TP_EXC_QUEUE_TRAN_ABSENT TP_EXC_QUEUE_UNEXPECTED TP_EXC_DCE_LOGIN_REQUIRED TP_EXC_ENC_CELL_NAME_REQUIRED TP_EXC_ENC_CONN_INFO_DIFFS TP_EXC_ENC_SVC_REGISTRY_ERROR TP_INVALID_START_ROUTINE TP_JIF_NOT_FOUND TP_JIF_OPEN_ERROR TP_NO_JIF TP_NO_MONITORS_ERROR TP_NO_SESSIONS_ERROR TP_NO_START_ROUTINE TP_ADV_SERVICE TP_ADV_SERVICE_IN_GROUP TP_PRE_SVCHDL_WINOPEN_FAILED syn keyword jamVariable10 PV_YES PV_NO TRUE FALSE TM_TRAN_NAME " jamCommentGroup allows adding matches for special things in comments syn cluster jamCommentGroup contains=jamTodo " String and Character constants " Highlight special characters (those which have a backslash) differently syn match jamSpecial contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" if !exists("c_no_utf") syn match jamSpecial contained "\\\(u\x\{4}\|U\x\{8}\)" endif if exists("c_no_cformat") syn region jamString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial else syn match jamFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained syn match jamFormat "%%" contained syn region jamString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat hi link jamFormat jamSpecial endif syn match jamCharacter "L\='[^\\]'" syn match jamCharacter "L'[^']*'" contains=jamSpecial syn match jamSpecialError "L\='\\[^'\"?\\abfnrtv]'" syn match jamSpecialCharacter "L\='\\['\"?\\abfnrtv]'" syn match jamSpecialCharacter "L\='\\\o\{1,3}'" syn match jamSpecialCharacter "'\\x\x\{1,2}'" syn match jamSpecialCharacter "L'\\x\x\+'" "catch errors caused by wrong parenthesis and brackets syn cluster jamParenGroup contains=jamParenError,jamIncluded,jamSpecial,@jamCommentGroup,jamUserCont,jamUserLabel,jamBitField,jamCommentSkip,jamOctalZero,jamCppOut,jamCppOut2,jamCppSkip,jamFormat,jamNumber,jamFloat,jamOctal,jamOctalError,jamNumbersCom syn region jamParen transparent start='(' end=')' contains=ALLBUT,@jamParenGroup,jamErrInBracket syn match jamParenError "[\])]" syn match jamErrInParen contained "[\]{}]" syn region jamBracket transparent start='\[' end=']' contains=ALLBUT,@jamParenGroup,jamErrInParen syn match jamErrInBracket contained "[);{}]" "integer number, or floating point number without a dot and with "f". syn case ignore syn match jamNumbers transparent "\<\d\|\,\d" contains=jamNumber,jamFloat,jamOctalError,jamOctal " Same, but without octal error (for comments) syn match jamNumbersCom contained transparent "\<\d\|\,\d" contains=jamNumber,jamFloat,jamOctal syn match jamNumber contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" "hex number syn match jamNumber contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" " Flag the first zero of an octal number as something special syn match jamOctal contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero syn match jamOctalZero contained "\<0" syn match jamFloat contained "\d\+f" "floating point number, with dot, optional exponent syn match jamFloat contained "\d\+\,\d*\(e[-+]\=\d\+\)\=[fl]\=" "floating point number, starting with a dot, optional exponent syn match jamFloat contained "\,\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, without dot, with exponent syn match jamFloat contained "\d\+e[-+]\=\d\+[fl]\=\>" " flag an octal number with wrong digits syn match jamOctalError contained "0\o*[89]\d*" syn case match syntax match jamOperator1 "\#\#" syntax match jamOperator6 "/" syntax match jamOperator2 "+" syntax match jamOperator3 "*" syntax match jamOperator4 "-" syntax match jamOperator5 "|" syntax match jamOperator6 "/" syntax match jamOperator7 "&" syntax match jamOperator8 ":" syntax match jamOperator9 "<" syntax match jamOperator10 ">" syntax match jamOperator11 "!" syntax match jamOperator12 "%" syntax match jamOperator13 "^" syntax match jamOperator14 "@" syntax match jamCommentL "//" if exists("jam_comment_strings") " A comment can contain jamString, jamCharacter and jamNumber. " But a "*/" inside a jamString in a jamComment DOES end the comment! So we " need to use a special type of jamString: jamCommentString, which also ends on " "*/", and sees a "*" at the start of the line as comment again. " Unfortunately this doesn't very well work for // type of comments :-( syntax match jamCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region jamCommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=jamSpecial,jamCommentSkip syntax region jamComment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=jamSpecial syntax region jamCommentL start="//" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamComment2String,jamCharacter,jamNumbersCom,jamSpaceError syntax region jamCommentL2 start="^#\|^\s\+\#" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamComment2String,jamCharacter,jamNumbersCom,jamSpaceError syntax region jamComment start="/\*" end="\*/" contains=@jamCommentGroup,jamCommentString,jamCharacter,jamNumbersCom,jamSpaceError else syn region jamCommentL start="//" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamSpaceError syn region jamCommentL2 start="^\#\|^\s\+\#" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamSpaceError syn region jamComment start="/\*" end="\*/" contains=@jamCommentGroup,jamSpaceError endif " keep a // comment separately, it terminates a preproc. conditional syntax match jamCommentError "\*/" syntax match jamOperator3Error "*/" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link jamCommentL jamComment hi def link jamCommentL2 jamComment hi def link jamOperator3Error jamError hi def link jamConditional Conditional hi def link jamRepeat Repeat hi def link jamCharacter Character hi def link jamSpecialCharacter jamSpecial hi def link jamNumber Number hi def link jamParenError jamError hi def link jamErrInParen jamError hi def link jamErrInBracket jamError hi def link jamCommentError jamError hi def link jamSpaceError jamError hi def link jamSpecialError jamError hi def link jamOperator1 jamOperator hi def link jamOperator2 jamOperator hi def link jamOperator3 jamOperator hi def link jamOperator4 jamOperator hi def link jamOperator5 jamOperator hi def link jamOperator6 jamOperator hi def link jamOperator7 jamOperator hi def link jamOperator8 jamOperator hi def link jamOperator9 jamOperator hi def link jamOperator10 jamOperator hi def link jamOperator11 jamOperator hi def link jamOperator12 jamOperator hi def link jamOperator13 jamOperator hi def link jamOperator14 jamOperator hi def link jamError Error hi def link jamStatement Statement hi def link jamPreCondit PreCondit hi def link jamCommentError jamError hi def link jamCommentString jamString hi def link jamComment2String jamString hi def link jamCommentSkip jamComment hi def link jamString String hi def link jamComment Comment hi def link jamSpecial SpecialChar hi def link jamTodo Todo hi def link jamCppSkip jamCppOut hi def link jamCppOut2 jamCppOut hi def link jamCppOut Comment hi def link jamDBState1 Identifier hi def link jamDBState2 Identifier hi def link jamSQLState1 jamSQL hi def link jamSQLState2 jamSQL hi def link jamLibFunc1 jamLibFunc hi def link jamLibFunc2 jamLibFunc hi def link jamLibFunc3 jamLibFunc hi def link jamLibFunc4 jamLibFunc hi def link jamLibFunc5 jamLibFunc hi def link jamLibFunc6 jamLibFunc hi def link jamLibFunc7 jamLibFunc hi def link jamLibFunc8 jamLibFunc hi def link jamLibFunc9 jamLibFunc hi def link jamVariable1 jamVariablen hi def link jamVariable2 jamVariablen hi def link jamVariable3 jamVariablen hi def link jamVariable4 jamVariablen hi def link jamVariable5 jamVariablen hi def link jamVariable6 jamVariablen hi def link jamVariable7 jamVariablen hi def link jamVariable8 jamVariablen hi def link jamVariable9 jamVariablen hi def link jamVariable10 jamVariablen hi def link jamVariablen Constant hi def link jamSQL Type hi def link jamLibFunc PreProc hi def link jamOperator Special let b:current_syntax = "jam" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!f vim80/syntax/vroom.vimnu[" Vim syntax file " Language: Vroom (vim testing and executable documentation) " Maintainer: David Barnett (https://github.com/google/vim-ft-vroom) " Last Change: 2014 Jul 23 " quit when a syntax file was already loaded if exists('b:current_syntax') finish endif let s:cpo_save = &cpo set cpo-=C syn include @vroomVim syntax/vim.vim syn include @vroomShell syntax/sh.vim syntax region vroomAction \ matchgroup=vroomOutput \ start='\m^ ' end='\m$' keepend \ contains=vroomControlBlock syntax region vroomAction \ matchgroup=vroomOutput \ start='\m^ & ' end='\m$' keepend \ contains=vroomControlBlock syntax match vroomOutput '\m^ &$' syntax region vroomMessageBody \ matchgroup=vroomMessage \ start='\m^ \~ ' end='\m$' keepend \ contains=vroomControlBlock syntax region vroomColoredAction \ matchgroup=vroomInput \ start='\m^ > ' end='\m$' keepend \ contains=vimNotation,vroomControlBlock syntax region vroomAction \ matchgroup=vroomInput \ start='\m^ % ' end='\m$' keepend \ contains=vimNotation,vroomControlBlock syntax region vroomAction \ matchgroup=vroomContinuation \ start='\m^ |' end='\m$' keepend syntax region vroomAction \ start='\m^ \ze:' end='\m$' keepend \ contains=@vroomVim,vroomControlBlock syntax region vroomAction \ matchgroup=vroomDirective \ start='\m^ @\i\+' end='\m$' keepend \ contains=vroomControlBlock syntax region vroomSystemAction \ matchgroup=vroomSystem \ start='\m^ ! ' end='\m$' keepend \ contains=@vroomShell,vroomControlBlock syntax region vroomHijackAction \ matchgroup=vroomHijack \ start='\m^ \$ ' end='\m$' keepend \ contains=vroomControlBlock syntax match vroomControlBlock contains=vroomControlEscape,@vroomControls \ '\v \([^&()][^()]*\)$' syntax match vroomControlEscape '\m&' contained syntax cluster vroomControls \ contains=vroomDelay,vroomMode,vroomBuffer,vroomRange \,vroomChannel,vroomBind,vroomStrictness syntax match vroomRange '\v\.(,\+?(\d+|\$)?)?' contained syntax match vroomRange '\v\d*,\+?(\d+|\$)?' contained syntax match vroomBuffer '\v\d+,@!' contained syntax match vroomDelay '\v\d+(\.\d+)?s' contained syntax match vroomMode '\v<%(regex|glob|verbatim)' contained syntax match vroomChannel '\v<%(stderr|stdout|command|status)>' contained syntax match vroomBind '\v' contained syntax match vroomStrictness '\v\<%(STRICT|RELAXED|GUESS-ERRORS)\>' contained highlight default link vroomInput Identifier highlight default link vroomDirective vroomInput highlight default link vroomControlBlock vroomInput highlight default link vroomSystem vroomInput highlight default link vroomOutput Statement highlight default link vroomContinuation Constant highlight default link vroomHijack Special highlight default link vroomColoredAction Statement highlight default link vroomSystemAction vroomSystem highlight default link vroomHijackAction vroomHijack highlight default link vroomMessage vroomOutput highlight default link vroomMessageBody Constant highlight default link vroomControlEscape Special highlight default link vroomBuffer vroomInput highlight default link vroomRange Include highlight default link vroomMode Constant highlight default link vroomDelay Type highlight default link vroomStrictness vroomMode highlight default link vroomChannel vroomMode highlight default link vroomBind vroomMode let b:current_syntax = 'vroom' let &cpo = s:cpo_save unlet s:cpo_save PK!0  vim80/syntax/asteriskvm.vimnu[" Vim syntax file " Language: Asterisk voicemail config file " Maintainer: Tilghman Lesher (Corydon76) " Last Change: 2006 Mar 21 " version 0.2 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn sync clear syn sync fromstart syn keyword asteriskvmTodo TODO contained syn match asteriskvmComment ";.*" contains=asteriskvmTodo syn match asteriskvmContext "\[.\{-}\]" " ZoneMessages syn match asteriskvmZone "^[[:alnum:]]\+\s*=>\?\s*[[:alnum:]/_]\+|.*$" contains=zoneName,zoneDef syn match zoneName "=\zs[[:alnum:]/_]\+\ze" contained syn match zoneDef "|\zs.*\ze$" contained syn match asteriskvmSetting "\<\(format\|serveremail\|minmessage\|maxmessage\|maxgreet\|skipms\|maxsilence\|silencethreshold\|maxlogins\)=" syn match asteriskvmSetting "\<\(externnotify\|externpass\|directoryintro\|charset\|adsi\(fdn\|sec\|ver\)\|\(pager\)\?fromstring\|email\(subject\|body\|cmd\)\|tz\|cidinternalcontexts\|saydurationm\|dialout\|callback\)=" syn match asteriskvmSettingBool "\<\(attach\|pbxskip\|usedirectory\|saycid\|sayduration\|sendvoicemail\|review\|operator\|envelope\|delete\|nextaftercmd\|forcename\|forcegreeting\)=\(yes\|no\|1\|0\|true\|false\|t\|f\)" " Individual mailbox definitions syn match asteriskvmMailbox "^[[:digit:]]\+\s*=>\?\s*[[:digit:]]\+\(,[^,]*\(,[^,]*\(,[^,]*\(,[^,]*\)\?\)\?\)\?\)\?" contains=mailboxEmail,asteriskvmSetting,asteriskvmSettingBool,comma syn match mailboxEmail ",\zs[^@=,]*@[[:alnum:]\-\.]\+\.[[:alpha:]]\{2,10}\ze" contains=comma syn match comma "[,|]" contained " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link asteriskvmComment Comment hi def link asteriskvmContext Identifier hi def link asteriskvmZone Type hi def link zoneName String hi def link zoneDef String hi def link asteriskvmSetting Type hi def link asteriskvmSettingBool Type hi def link asteriskvmMailbox Statement hi def link mailboxEmail String let b:current_syntax = "asteriskvm" " vim: ts=8 sw=2 PK!;r  vim80/syntax/tmux.vimnu[" Language: tmux(1) configuration file " Version: 2.3 (git-14dc2ac) " URL: https://github.com/ericpruitt/tmux.vim/ " Maintainer: Eric Pruitt " License: 2-Clause BSD (http://opensource.org/licenses/BSD-2-Clause) if exists("b:current_syntax") finish endif " Explicitly change compatiblity options to Vim's defaults because this file " uses line continuations. let s:original_cpo = &cpo set cpo&vim let b:current_syntax = "tmux" setlocal iskeyword+=- syntax case match syn keyword tmuxAction none any current other syn keyword tmuxBoolean off on syn keyword tmuxTodo FIXME NOTE TODO XXX contained syn match tmuxColour /\ 231 && s:i < 235)) ? 15 : "none" exec "syn match tmuxColour" . s:i . " /\\/ display" \ " | highlight tmuxColour" . s:i . " ctermfg=" . s:i . " ctermbg=" . s:bg endfor syn keyword tmuxOptions \ buffer-limit command-alias default-terminal escape-time exit-unattached \ focus-events history-file message-limit set-clipboard terminal-overrides \ assume-paste-time base-index bell-action bell-on-alert default-command \ default-shell destroy-unattached detach-on-destroy \ display-panes-active-colour display-panes-colour display-panes-time \ display-time history-limit key-table lock-after-time lock-command \ message-attr message-bg message-command-attr message-command-bg \ message-command-fg message-command-style message-fg message-style mouse \ prefix prefix2 renumber-windows repeat-time set-titles set-titles-string \ status status-attr status-bg status-fg status-interval status-justify \ status-keys status-left status-left-attr status-left-bg status-left-fg \ status-left-length status-left-style status-position status-right \ status-right-attr status-right-bg status-right-fg status-right-length \ status-right-style status-style update-environment visual-activity \ visual-bell visual-silence word-separators aggressive-resize allow-rename \ alternate-screen automatic-rename automatic-rename-format \ clock-mode-colour clock-mode-style force-height force-width \ main-pane-height main-pane-width mode-attr mode-bg mode-fg mode-keys \ mode-style monitor-activity monitor-silence other-pane-height \ other-pane-width pane-active-border-bg pane-active-border-fg \ pane-active-border-style pane-base-index pane-border-bg pane-border-fg \ pane-border-format pane-border-status pane-border-style remain-on-exit \ synchronize-panes window-active-style window-style \ window-status-activity-attr window-status-activity-bg \ window-status-activity-fg window-status-activity-style window-status-attr \ window-status-bell-attr window-status-bell-bg window-status-bell-fg \ window-status-bell-style window-status-bg window-status-current-attr \ window-status-current-bg window-status-current-fg \ window-status-current-format window-status-current-style window-status-fg \ window-status-format window-status-last-attr window-status-last-bg \ window-status-last-fg window-status-last-style window-status-separator \ window-status-style wrap-search xterm-keys syn keyword tmuxCommands \ attach-session attach bind-key bind break-pane breakp capture-pane \ capturep clear-history clearhist choose-buffer choose-client choose-tree \ choose-session choose-window command-prompt confirm-before confirm \ copy-mode clock-mode detach-client detach suspend-client suspendc \ display-message display display-panes displayp find-window findw if-shell \ if join-pane joinp move-pane movep kill-pane killp kill-server \ start-server start kill-session kill-window killw unlink-window unlinkw \ list-buffers lsb list-clients lsc list-keys lsk list-commands lscm \ list-panes lsp list-sessions ls list-windows lsw load-buffer loadb \ lock-server lock lock-session locks lock-client lockc move-window movew \ link-window linkw new-session new has-session has new-window neww \ paste-buffer pasteb pipe-pane pipep refresh-client refresh rename-session \ rename rename-window renamew resize-pane resizep respawn-pane respawnp \ respawn-window respawnw rotate-window rotatew run-shell run save-buffer \ saveb show-buffer showb select-layout selectl next-layout nextl \ previous-layout prevl select-pane selectp last-pane lastp select-window \ selectw next-window next previous-window prev last-window last send-keys \ send send-prefix set-buffer setb delete-buffer deleteb set-environment \ setenv set-hook show-hooks set-option set set-window-option setw \ show-environment showenv show-messages showmsgs show-options show \ show-window-options showw source-file source split-window splitw swap-pane \ swapp swap-window swapw switch-client switchc unbind-key unbind wait-for \ wait let &cpo = s:original_cpo unlet! s:original_cpo s:bg s:i PK!qvim80/syntax/ist.vimnu[" Vim syntax file " Language: Makeindex style file, *.ist " Maintainer: Peter Meszaros " Last Change: 2012 Jan 08 by Thilo Six " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword=$,@,48-57,_ syn case ignore syn keyword IstInpSpec actual arg_close arg_open encap escape syn keyword IstInpSpec keyword level quote range_close range_open syn keyword IstInpSpec page_compositor syn keyword IstOutSpec preamble postamble setpage_prefix setpage_suffix group_skip syn keyword IstOutSpec headings_flag heading_prefix heading_suffix syn keyword IstOutSpec lethead_flag lethead_prefix lethead_suffix syn keyword IstOutSpec symhead_positive symhead_negative numhead_positive numhead_negative syn keyword IstOutSpec item_0 item_1 item_2 item_01 syn keyword IstOutSpec item_x1 item_12 item_x2 syn keyword IstOutSpec delim_0 delim_1 delim_2 syn keyword IstOutSpec delim_n delim_r delim_t syn keyword IstOutSpec encap_prefix encap_infix encap_suffix syn keyword IstOutSpec line_max indent_space indent_length syn keyword IstOutSpec suffix_2p suffix_3p suffix_mp syn region IstString matchgroup=IstDoubleQuote start=+"+ skip=+\\"+ end=+"+ contains=IstSpecial syn match IstCharacter "'.'" syn match IstNumber "\d\+" syn match IstComment "^[\t ]*%.*$" contains=IstTodo syn match IstSpecial "\\\\\|{\|}\|#\|\\n" contained syn match IstTodo "DEBUG\|TODO" contained " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link IstInpSpec Type hi def link IstOutSpec Identifier hi def link IstString String hi def link IstNumber Number hi def link IstComment Comment hi def link IstTodo Todo hi def link IstSpecial Special hi def link IstDoubleQuote Label hi def link IstCharacter Label let b:current_syntax = "ist" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 sw=2 PK!4zZ''vim80/syntax/modsim3.vimnu[" Vim syntax file " Language: Modsim III, by compuware corporation (www.compuware.com) " Maintainer: Philipp Jocham " Extension: *.mod " Last Change: 2001 May 10 " " 2001 March 24: " - Modsim III is a registered trademark from compuware corporation " - made compatible with Vim 6.0 " " 1999 Apr 22 : Changed modsim3Literal from region to match " " very basic things only (based on the modula2 and c files). " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " syn case match " case sensitiv match is default " A bunch of keywords syn keyword modsim3Keyword ACTID ALL AND AS ASK syn keyword modsim3Keyword BY CALL CASE CLASS CONST DIV syn keyword modsim3Keyword DOWNTO DURATION ELSE ELSIF EXIT FALSE FIXED FOR syn keyword modsim3Keyword FOREACH FORWARD IF IN INHERITED INOUT syn keyword modsim3Keyword INTERRUPT LOOP syn keyword modsim3Keyword MOD MONITOR NEWVALUE syn keyword modsim3Keyword NONMODSIM NOT OBJECT OF ON OR ORIGINAL OTHERWISE OUT syn keyword modsim3Keyword OVERRIDE PRIVATE PROTO REPEAT syn keyword modsim3Keyword RETURN REVERSED SELF STRERR TELL syn keyword modsim3Keyword TERMINATE THISMETHOD TO TRUE TYPE UNTIL VALUE VAR syn keyword modsim3Keyword WAIT WAITFOR WHEN WHILE WITH " Builtin functions and procedures syn keyword modsim3Builtin ABS ACTIVATE ADDMONITOR CAP CHARTOSTR CHR CLONE syn keyword modsim3Builtin DEACTIVATE DEC DISPOSE FLOAT GETMONITOR HIGH INC syn keyword modsim3Builtin INPUT INSERT INTTOSTR ISANCESTOR LOW LOWER MAX MAXOF syn keyword modsim3Builtin MIN MINOF NEW OBJTYPEID OBJTYPENAME OBJVARID ODD syn keyword modsim3Builtin ONERROR ONEXIT ORD OUTPUT POSITION PRINT REALTOSTR syn keyword modsim3Builtin REPLACE REMOVEMONITOR ROUND SCHAR SIZEOF SPRINT syn keyword modsim3Builtin STRLEN STRTOCHAR STRTOINT STRTOREAL SUBSTR TRUNC syn keyword modsim3Builtin UPDATEVALUE UPPER VAL syn keyword modsim3BuiltinNoParen HALT TRACE " Special keywords syn keyword modsim3Block PROCEDURE METHOD MODULE MAIN DEFINITION IMPLEMENTATION syn keyword modsim3Block BEGIN END syn keyword modsim3Include IMPORT FROM syn keyword modsim3Type ANYARRAY ANYOBJ ANYREC ARRAY BOOLEAN CHAR INTEGER syn keyword modsim3Type LMONITORED LRMONITORED NILARRAY NILOBJ NILREC REAL syn keyword modsim3Type RECORD RMONITOR RMONITORED STRING " catch errros cause by wrong parenthesis " slight problem with "( *)" or "(* )". Hints? syn region modsim3Paren transparent start='(' end=')' contains=ALLBUT,modsim3ParenError syn match modsim3ParenError ")" " Comments syn region modsim3Comment1 start="{" end="}" contains=modsim3Comment1,modsim3Comment2 syn region modsim3Comment2 start="(\*" end="\*)" contains=modsim3Comment1,modsim3Comment2 " highlighting is wrong for constructs like "{ (* } *)", " which are allowed in Modsim III, but " I think something like that shouldn't be used anyway. " Strings syn region modsim3String start=+"+ end=+"+ " Literals "syn region modsim3Literal start=+'+ end=+'+ syn match modsim3Literal "'[^']'\|''''" " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overridden later hi def link modsim3Keyword Statement hi def link modsim3Block Statement hi def link modsim3Comment1 Comment hi def link modsim3Comment2 Comment hi def link modsim3String String hi def link modsim3Literal Character hi def link modsim3Include Statement hi def link modsim3Type Type hi def link modsim3ParenError Error hi def link modsim3Builtin Function hi def link modsim3BuiltinNoParen Function let b:current_syntax = "modsim3" " vim: ts=8 sw=2 PK!:.XXvim80/syntax/chill.vimnu[" Vim syntax file " Language: CHILL " Maintainer: YoungSang Yoon " Last change: 2004 Jan 21 " " first created by image@lgic.co.kr & modified by paris@lgic.co.kr " CHILL (CCITT High Level Programming Language) is used for " developing software of ATM switch at LGIC (LG Information " & Communications LTd.) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " A bunch of useful CHILL keywords syn keyword chillStatement goto GOTO return RETURN returns RETURNS syn keyword chillLabel CASE case ESAC esac syn keyword chillConditional if IF else ELSE elsif ELSIF switch SWITCH THEN then FI fi syn keyword chillLogical NOT not syn keyword chillRepeat while WHILE for FOR do DO od OD TO to syn keyword chillProcess START start STACKSIZE stacksize PRIORITY priority THIS this STOP stop syn keyword chillBlock PROC proc PROCESS process syn keyword chillSignal RECEIVE receive SEND send NONPERSISTENT nonpersistent PERSISTENT peristent SET set EVER ever syn keyword chillTodo contained TODO FIXME XXX " String and Character constants " Highlight special characters (those which have a backslash) differently syn match chillSpecial contained "\\x\x\+\|\\\o\{1,3\}\|\\.\|\\$" syn region chillString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=chillSpecial syn match chillCharacter "'[^\\]'" syn match chillSpecialCharacter "'\\.'" syn match chillSpecialCharacter "'\\\o\{1,3\}'" "when wanted, highlight trailing white space if exists("chill_space_errors") syn match chillSpaceError "\s*$" syn match chillSpaceError " \+\t"me=e-1 endif "catch errors caused by wrong parenthesis syn cluster chillParenGroup contains=chillParenError,chillIncluded,chillSpecial,chillTodo,chillUserCont,chillUserLabel,chillBitField syn region chillParen transparent start='(' end=')' contains=ALLBUT,@chillParenGroup syn match chillParenError ")" syn match chillInParen contained "[{}]" "integer number, or floating point number without a dot and with "f". syn case ignore syn match chillNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" "floating point number, with dot, optional exponent syn match chillFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, starting with a dot, optional exponent syn match chillFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, without dot, with exponent syn match chillFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" "hex number syn match chillNumber "\<0x\x\+\(u\=l\=\|lu\)\>" "syn match chillIdentifier "\<[a-z_][a-z0-9_]*\>" syn case match " flag an octal number with wrong digits syn match chillOctalError "\<0\o*[89]" if exists("chill_comment_strings") " A comment can contain chillString, chillCharacter and chillNumber. " But a "*/" inside a chillString in a chillComment DOES end the comment! So we " need to use a special type of chillString: chillCommentString, which also ends on " "*/", and sees a "*" at the start of the line as comment again. " Unfortunately this doesn't very well work for // type of comments :-( syntax match chillCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region chillCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=chillSpecial,chillCommentSkip syntax region chillComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=chillSpecial syntax region chillComment start="/\*" end="\*/" contains=chillTodo,chillCommentString,chillCharacter,chillNumber,chillFloat,chillSpaceError syntax match chillComment "//.*" contains=chillTodo,chillComment2String,chillCharacter,chillNumber,chillSpaceError else syn region chillComment start="/\*" end="\*/" contains=chillTodo,chillSpaceError syn match chillComment "//.*" contains=chillTodo,chillSpaceError endif syntax match chillCommentError "\*/" syn keyword chillOperator SIZE size syn keyword chillType dcl DCL int INT char CHAR bool BOOL REF ref LOC loc INSTANCE instance syn keyword chillStructure struct STRUCT enum ENUM newmode NEWMODE synmode SYNMODE "syn keyword chillStorageClass syn keyword chillBlock PROC proc END end syn keyword chillScope GRANT grant SEIZE seize syn keyword chillEDML select SELECT delete DELETE update UPDATE in IN seq SEQ WHERE where INSERT insert include INCLUDE exclude EXCLUDE syn keyword chillBoolConst true TRUE false FALSE syn region chillPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=chillComment,chillString,chillCharacter,chillNumber,chillCommentError,chillSpaceError syn region chillIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match chillIncluded contained "<[^>]*>" syn match chillInclude "^\s*#\s*include\>\s*["<]" contains=chillIncluded "syn match chillLineSkip "\\$" syn cluster chillPreProcGroup contains=chillPreCondit,chillIncluded,chillInclude,chillDefine,chillInParen,chillUserLabel syn region chillDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,@chillPreProcGroup syn region chillPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,@chillPreProcGroup " Highlight User Labels syn cluster chillMultiGroup contains=chillIncluded,chillSpecial,chillTodo,chillUserCont,chillUserLabel,chillBitField syn region chillMulti transparent start='?' end=':' contains=ALLBUT,@chillMultiGroup " Avoid matching foo::bar() in C++ by requiring that the next char is not ':' syn match chillUserCont "^\s*\I\i*\s*:$" contains=chillUserLabel syn match chillUserCont ";\s*\I\i*\s*:$" contains=chillUserLabel syn match chillUserCont "^\s*\I\i*\s*:[^:]"me=e-1 contains=chillUserLabel syn match chillUserCont ";\s*\I\i*\s*:[^:]"me=e-1 contains=chillUserLabel syn match chillUserLabel "\I\i*" contained " Avoid recognizing most bitfields as labels syn match chillBitField "^\s*\I\i*\s*:\s*[1-9]"me=e-1 syn match chillBitField ";\s*\I\i*\s*:\s*[1-9]"me=e-1 syn match chillBracket contained "[<>]" if !exists("chill_minlines") let chill_minlines = 15 endif exec "syn sync ccomment chillComment minlines=" . chill_minlines " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link chillLabel Label hi def link chillUserLabel Label hi def link chillConditional Conditional " hi def link chillConditional term=bold ctermfg=red guifg=red gui=bold hi def link chillRepeat Repeat hi def link chillProcess Repeat hi def link chillSignal Repeat hi def link chillCharacter Character hi def link chillSpecialCharacter chillSpecial hi def link chillNumber Number hi def link chillFloat Float hi def link chillOctalError chillError hi def link chillParenError chillError hi def link chillInParen chillError hi def link chillCommentError chillError hi def link chillSpaceError chillError hi def link chillOperator Operator hi def link chillStructure Structure hi def link chillBlock Operator hi def link chillScope Operator "hi def link chillEDML term=underline ctermfg=DarkRed guifg=Red hi def link chillEDML PreProc "hi def link chillBoolConst term=bold ctermfg=brown guifg=brown hi def link chillBoolConst Constant "hi def link chillLogical term=bold ctermfg=brown guifg=brown hi def link chillLogical Constant hi def link chillStorageClass StorageClass hi def link chillInclude Include hi def link chillPreProc PreProc hi def link chillDefine Macro hi def link chillIncluded chillString hi def link chillError Error hi def link chillStatement Statement hi def link chillPreCondit PreCondit hi def link chillType Type hi def link chillCommentError chillError hi def link chillCommentString chillString hi def link chillComment2String chillString hi def link chillCommentSkip chillComment hi def link chillString String hi def link chillComment Comment " hi def link chillComment term=None ctermfg=lightblue guifg=lightblue hi def link chillSpecial SpecialChar hi def link chillTodo Todo hi def link chillBlock Statement "hi def link chillIdentifier Identifier hi def link chillBracket Delimiter let b:current_syntax = "chill" " vim: ts=8 PK!wϜ3p p vim80/syntax/slice.vimnu[" Vim syntax file " Language: Slice (ZeroC's Specification Language for Ice) " Maintainer: Morel Bodin " Last Change: 2005 Dec 03 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " The Slice keywords syn keyword sliceType bool byte double float int long short string void syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws syn keyword sliceConstruct class enum exception dictionary interface module LocalObject Object sequence struct syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws syn keyword sliceBoolean false true " Include directives syn region sliceIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match sliceIncluded display contained "<[^>]*>" syn match sliceInclude display "^\s*#\s*include\>\s*["<]" contains=sliceIncluded " Double-include guards syn region sliceGuard start="^#\(define\|ifndef\|endif\)" end="$" " Strings and characters syn region sliceString start=+"+ end=+"+ " Numbers (shamelessly ripped from c.vim, only slightly modified) "integer number, or floating point number without a dot and with "f". syn case ignore syn match sliceNumbers display transparent "\<\d\|\.\d" contains=sliceNumber,sliceFloat,sliceOctal syn match sliceNumber display contained "\d\+" "hex number syn match sliceNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" " Flag the first zero of an octal number as something special syn match sliceOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=sliceOctalZero syn match sliceOctalZero display contained "\<0" syn match sliceFloat display contained "\d\+f" "floating point number, with dot, optional exponent syn match sliceFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" "floating point number, starting with a dot, optional exponent syn match sliceFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, without dot, with exponent syn match sliceFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" " flag an octal number with wrong digits syn case match " Comments syn region sliceComment start="/\*" end="\*/" syn match sliceComment "//.*" syn sync ccomment sliceComment " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link sliceComment Comment hi def link sliceConstruct Keyword hi def link sliceType Type hi def link sliceString String hi def link sliceIncluded String hi def link sliceQualifier Keyword hi def link sliceInclude Include hi def link sliceGuard PreProc hi def link sliceBoolean Boolean hi def link sliceFloat Number hi def link sliceNumber Number hi def link sliceOctal Number hi def link sliceOctalZero Special hi def link sliceNumberError Special let b:current_syntax = "slice" " vim: ts=8 PK!%nBvim80/syntax/cvs.vimnu[" Vim syntax file " Language: CVS commit file " Maintainer: Matt Dunford (zoot@zotikos.com) " URL: http://www.zotikos.com/downloads/cvs.vim " Last Change: Sat Nov 24 23:25:11 CET 2001 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn region cvsLine start="^CVS: " end="$" contains=cvsFile,cvsCom,cvsFiles,cvsTag syn match cvsFile contained " \t\(\(\S\+\) \)\+" syn match cvsTag contained " Tag:" syn match cvsFiles contained "\(Added\|Modified\|Removed\) Files:" syn region cvsCom start="Committing in" end="$" contains=cvsDir contained extend keepend syn match cvsDir contained "\S\+$" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link cvsLine Comment hi def link cvsDir cvsFile hi def link cvsFile Constant hi def link cvsFiles cvsCom hi def link cvsTag cvsCom hi def link cvsCom Statement let b:current_syntax = "cvs" PK!I-I vim80/syntax/debchangelog.vimnu[" Vim syntax file " Language: Debian changelog files " Maintainer: Debian Vim Maintainers " Former Maintainers: Gerfried Fuchs " Wichert Akkerman " Last Change: 2018 Jan 06 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim " Standard syntax initialization if exists("b:current_syntax") finish endif " Case doesn't matter for us syn case ignore let s:urgency='urgency=\(low\|medium\|high\|critical\)\( [^[:space:],][^,]*\)\=' let s:binNMU='binary-only=yes' " Define some common expressions we can use later on syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ " exe 'syn match debchangelogFirstKV contained "; \('.s:urgency.'\|'.s:binNMU.'\)"' exe 'syn match debchangelogOtherKV contained ", \('.s:urgency.'\|'.s:binNMU.'\)"' syn match debchangelogTarget contained "\v %(frozen|unstable|sid|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|squeeze-%(backports%(-sloppy)=|volatile|lts|security)|%(wheezy|jessie)%(-backports%(-sloppy)=|-security)=|stretch%(-backports|-security)=|%(devel|precise|trusty|vivid|wily|xenial|yakkety|zesty|artful|bionic)%(-%(security|proposed|updates|backports|commercial|partner))=)+" syn match debchangelogVersion contained "(.\{-})" syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*" syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*" syn match debchangelogEmail contained "[_=[:alnum:].+-]\+@[[:alnum:]./\-]\+" syn match debchangelogEmail contained "<.\{-}>" " Define the entries that make up the changelog syn region debchangelogHeader start="^[^ ]" end="$" contains=debchangelogName,debchangelogFirstKV,debchangelogOtherKV,debchangelogTarget,debchangelogVersion,debchangelogBinNMU oneline syn region debchangelogFooter start="^ [^ ]" end="$" contains=debchangelogEmail oneline syn region debchangelogEntry start="^ " end="$" contains=debchangelogCloses,debchangelogLP oneline " Associate our matches and regions with pretty colours hi def link debchangelogHeader Error hi def link debchangelogFooter Identifier hi def link debchangelogEntry Normal hi def link debchangelogCloses Statement hi def link debchangelogLP Statement hi def link debchangelogFirstKV Identifier hi def link debchangelogOtherKV Identifier hi def link debchangelogName Comment hi def link debchangelogVersion Identifier hi def link debchangelogTarget Identifier hi def link debchangelogEmail Special let b:current_syntax = "debchangelog" " vim: ts=8 sw=2 PK!{%; ; vim80/syntax/inittab.vimnu[" Vim syntax file " This is a GENERATED FILE. Please always refer to source file at the URI below. " Language: SysV-compatible init process control file `inittab' " Maintainer: David Ne\v{c}as (Yeti) " Last Change: 2002-09-13 " URL: http://physics.muni.cz/~yeti/download/syntax/inittab.vim " Setup " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case match " Base constructs syn match inittabError "[^:]\+:"me=e-1 contained syn match inittabError "[^:]\+$" contained syn match inittabComment "^[#:].*$" contains=inittabFixme syn match inittabComment "#.*$" contained contains=inittabFixme syn keyword inittabFixme FIXME TODO XXX NOT " Shell syn region inittabShString start=+"+ end=+"+ skip=+\\\\\|\\\"+ contained syn region inittabShString start=+'+ end=+'+ contained syn match inittabShOption "\s[-+][[:alnum:]]\+"ms=s+1 contained syn match inittabShOption "\s--[:alnum:][-[:alnum:]]*"ms=s+1 contained syn match inittabShCommand "/\S\+" contained syn cluster inittabSh add=inittabShOption,inittabShString,inittabShCommand " Keywords syn keyword inittabActionName respawn wait once boot bootwait off ondemand sysinit powerwait powerfail powerokwait powerfailnow ctrlaltdel kbrequest initdefault contained " Line parser syn match inittabId "^[[:alnum:]~]\{1,4}" nextgroup=inittabColonRunLevels,inittabError syn match inittabColonRunLevels ":" contained nextgroup=inittabRunLevels,inittabColonAction,inittabError syn match inittabRunLevels "[0-6A-Ca-cSs]\+" contained nextgroup=inittabColonAction,inittabError syn match inittabColonAction ":" contained nextgroup=inittabAction,inittabError syn match inittabAction "\w\+" contained nextgroup=inittabColonProcess,inittabError contains=inittabActionName syn match inittabColonProcess ":" contained nextgroup=inittabProcessPlus,inittabProcess,inittabError syn match inittabProcessPlus "+" contained nextgroup=inittabProcess,inittabError syn region inittabProcess start="/" end="$" transparent oneline contained contains=@inittabSh,inittabComment " Define the default highlighting hi def link inittabComment Comment hi def link inittabFixme Todo hi def link inittabActionName Type hi def link inittabError Error hi def link inittabId Identifier hi def link inittabRunLevels Special hi def link inittabColonProcess inittabColon hi def link inittabColonAction inittabColon hi def link inittabColonRunLevels inittabColon hi def link inittabColon PreProc hi def link inittabShString String hi def link inittabShOption Special hi def link inittabShCommand Statement let b:current_syntax = "inittab" PK!ߕvim80/syntax/awk.vimnu[" Vim syntax file " Language: awk, nawk, gawk, mawk " Maintainer: Antonio Colombo " Last Change: 2016 Sep 05 " AWK ref. is: Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger " The AWK Programming Language, Addison-Wesley, 1988 " GAWK ref. is: Arnold D. Robbins " Effective AWK Programming, Third Edition, O'Reilly, 2001 " Effective AWK Programming, Fourth Edition, O'Reilly, 2015 " (also available and updated with the gawk source distribution) " MAWK is a "new awk" meaning it implements AWK ref. " mawk conforms to the Posix 1003.2 (draft 11.3) " definition of the AWK language which contains a few features " not described in the AWK book, and mawk provides a small number of extensions. " TODO: " Dig into the commented out syntax expressions below. " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " A bunch of useful Awk keywords " AWK ref. p. 188 syn keyword awkStatement break continue delete exit syn keyword awkStatement function getline next syn keyword awkStatement print printf return " GAWK ref. Chapter 7-9 syn keyword awkStatement switch nextfile syn keyword awkStatement func " " GAWK ref. Chapter 9, Functions " Numeric Functions syn keyword awkFunction atan2 cos exp int intdiv log rand sin sqrt srand " String Manipulation Functions syn keyword awkFunction asort asort1 gensub gsub index length match syn keyword awkFunction patsplit split sprintf strtonum sub substr syn keyword awkFunction tolower toupper " Input Output Functions syn keyword awkFunction close fflush system " Time Functions syn keyword awkFunction mktime strftime systime " Bit Manipulation Functions syn keyword awkFunction and compl lshift or rshift xor " Getting Type Functions syn keyword awkFunction isarray typeof " String-Translation Functions syn keyword awkFunction bindtextdomain dcgettext dcngetext syn keyword awkConditional if else syn keyword awkRepeat while for do syn keyword awkTodo contained TODO syn keyword awkPatterns BEGIN END BEGINFILE ENDFILE " GAWK ref. Chapter 7 " Built-in Variables That Control awk syn keyword awkVariables BINMODE CONVFMT FIELDWIDTHS FPAT FS syn keyword awkVariables IGNORECASE LINT OFMT OFS ORS PREC syn keyword awkVariables ROUNDMODE RS SUBSEP TEXTDOMAIN " Built-in Variables That Convey Information syn keyword awkVariables ARGC ARGV ARGIND ENVIRON ERRNO FILENAME syn keyword awkVariables FNR NF FUNCTAB NR PROCINFO RLENGTH RSTART syn keyword awkVariables RT SYMTAB " Arithmetic operators: +, and - take care of ++, and -- syn match awkOperator "+\|-\|\*\|/\|%\|=" syn match awkOperator "+=\|-=\|\*=\|/=\|%=" syn match awkOperator "\^\|\^=" " Octal format character. syn match awkSpecialCharacter display contained "\\[0-7]\{1,3\}" " Hex format character. syn match awkSpecialCharacter display contained "\\x[0-9A-Fa-f]\+" syn match awkFieldVars "\$\d\+" " catch errors caused by wrong parenthesis syn region awkParen transparent start="(" end=")" contains=ALLBUT,awkParenError,awkSpecialCharacter,awkArrayElement,awkArrayArray,awkTodo,awkRegExp,awkBrktRegExp,awkBrackets,awkCharClass,awkComment syn match awkParenError display ")" "syn match awkInParen display contained "[{}]" " 64 lines for complex &&'s, and ||'s in a big "if" syn sync ccomment awkParen maxlines=64 " Search strings & Regular Expressions therein. syn region awkSearch oneline start="^[ \t]*/"ms=e start="\(,\|!\=\~\)[ \t]*/"ms=e skip="\\\\\|\\/" end="/" contains=awkBrackets,awkRegExp,awkSpecialCharacter syn region awkBrackets contained start="\[\^\]\="ms=s+2 start="\[[^\^]"ms=s+1 end="\]"me=e-1 contains=awkBrktRegExp,awkCharClass syn region awkSearch oneline start="[ \t]*/"hs=e skip="\\\\\|\\/" end="/" contains=awkBrackets,awkRegExp,awkSpecialCharacter syn match awkCharClass contained "\[:[^:\]]*:\]" syn match awkBrktRegExp contained "\\.\|.\-[^]]" syn match awkRegExp contained "/\^"ms=s+1 syn match awkRegExp contained "\$/"me=e-1 syn match awkRegExp contained "[?.*{}|+]" " String and Character constants " Highlight special characters (those which have a backslash) differently syn region awkString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell,awkSpecialCharacter,awkSpecialPrintf syn match awkSpecialCharacter contained "\\." " Some of these combinations may seem weird, but they work. syn match awkSpecialPrintf contained "%[-+ #]*\d*\.\=\d*[cdefgiosuxEGX%]" " Numbers, allowing signs (both -, and +) " Integer number. syn match awkNumber display "[+-]\=\<\d\+\>" " Floating point number. syn match awkFloat display "[+-]\=\<\d\+\.\d+\>" " Floating point number, starting with a dot. syn match awkFloat display "[+-]\=\<.\d+\>" syn case ignore "floating point number, with dot, optional exponent syn match awkFloat display "\<\d\+\.\d*\(e[-+]\=\d\+\)\=\>" "floating point number, starting with a dot, optional exponent syn match awkFloat display "\.\d\+\(e[-+]\=\d\+\)\=\>" "floating point number, without dot, with exponent syn match awkFloat display "\<\d\+e[-+]\=\d\+\>" syn case match "syn match awkIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" " Comparison expressions. syn match awkExpression "==\|>=\|=>\|<=\|=<\|\!=" syn match awkExpression "\~\|\!\~" syn match awkExpression "?\|:" syn keyword awkExpression in " Boolean Logic (OR, AND, NOT) syn match awkBoolLogic "||\|&&\|\!" " This is overridden by less-than & greater-than. " Put this above those to override them. " Put this in a 'match "\.*;\="' to make it not override " less/greater than (most of the time), but it won't work yet because " keywords always have precedence over match & region. " File I/O: (print foo, bar > "filename") & for nawk (getline < "filename") "syn match awkFileIO contained ">" "syn match awkFileIO contained "<" " Expression separators: ';' and ',' syn match awkSemicolon ";" syn match awkComma "," syn match awkComment "#.*" contains=@Spell,awkTodo syn match awkLineSkip "\\$" " Highlight array element's (recursive arrays allowed). " Keeps nested array names' separate from normal array elements. " Keeps numbers separate from normal array elements (variables). syn match awkArrayArray contained "[^][, \t]\+\["me=e-1 syn match awkArrayElement contained "[^][, \t]\+" syn region awkArray transparent start="\[" end="\]" contains=awkArray,awkArrayElement,awkArrayArray,awkNumber,awkFloat " 10 should be enough. " (for the few instances where it would be more than "oneline") syn sync ccomment awkArray maxlines=10 " Define the default highlighting. hi def link awkConditional Conditional hi def link awkFunction Function hi def link awkRepeat Repeat hi def link awkStatement Statement hi def link awkString String hi def link awkSpecialPrintf Special hi def link awkSpecialCharacter Special hi def link awkSearch String hi def link awkBrackets awkRegExp hi def link awkBrktRegExp awkNestRegExp hi def link awkCharClass awkNestRegExp hi def link awkNestRegExp Keyword hi def link awkRegExp Special hi def link awkNumber Number hi def link awkFloat Float hi def link awkFileIO Special hi def link awkOperator Special hi def link awkExpression Special hi def link awkBoolLogic Special hi def link awkPatterns Special hi def link awkVariables Special hi def link awkFieldVars Special hi def link awkLineSkip Special hi def link awkSemicolon Special hi def link awkComma Special hi def link awkIdentifier Identifier hi def link awkComment Comment hi def link awkTodo Todo " Change this if you want nested array names to be highlighted. hi def link awkArrayArray awkArray hi def link awkArrayElement Special hi def link awkParenError awkError hi def link awkInParen awkError hi def link awkError Error let b:current_syntax = "awk" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!tSfQ(Q(vim80/syntax/docbk.vimnu[" Vim syntax file " Language: DocBook " Maintainer: Devin Weaver " Last Updated By: Shlomi Fish " URL: http://tritarget.com/pub/vim/syntax/docbk.vim " Last Change: 2012 Nov 28 " Version: 1.2 (and modified after that) " Thanks to Johannes Zellner for the default to XML " suggestion. " REFERENCES: " http://docbook.org/ " http://www.open-oasis.org/docbook/ " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Auto detect added by Bram Moolenaar if !exists('b:docbk_type') if expand('%:e') == "sgml" let b:docbk_type = 'sgml' else let b:docbk_type = 'xml' endif endif if !exists('b:docbk_ver') if exists('docbk_ver') let b:docbk_ver = docbk_ver else let b:docbk_ver = 4 endif end if 'xml' == b:docbk_type doau Syntax xml syn cluster xmlTagHook add=docbkKeyword syn cluster xmlRegionHook add=docbkRegion,docbkTitle,docbkRemark,docbkCite syn case match elseif 'sgml' == b:docbk_type doau Syntax sgml syn cluster sgmlTagHook add=docbkKeyword syn cluster sgmlRegionHook add=docbkRegion,docbkTitle,docbkRemark,docbkCite syn case ignore endif syn keyword docbkKeyword abbrev abstract accel acronym address contained syn keyword docbkKeyword affiliation alt anchor answer appendix contained syn keyword docbkKeyword application area areaset areaspec arg contained syn keyword docbkKeyword article artpagenums attribution audiodata contained syn keyword docbkKeyword audioobject author authorgroup contained syn keyword docbkKeyword authorinitials bibliocoverage bibliodiv contained syn keyword docbkKeyword biblioentry bibliography biblioid contained syn keyword docbkKeyword bibliolist bibliomisc bibliomixed contained syn keyword docbkKeyword bibliomset biblioref bibliorelation contained syn keyword docbkKeyword biblioset bibliosource blockquote book contained syn keyword docbkKeyword bridgehead callout calloutlist caption contained syn keyword docbkKeyword caution chapter citation citebiblioid contained syn keyword docbkKeyword citerefentry citetitle city classname contained syn keyword docbkKeyword classsynopsis classsynopsisinfo cmdsynopsis contained syn keyword docbkKeyword co code col colgroup collab colophon contained syn keyword docbkKeyword colspec command computeroutput confdates contained syn keyword docbkKeyword confgroup confnum confsponsor conftitle contained syn keyword docbkKeyword constant constructorsynopsis contractnum contained syn keyword docbkKeyword contractsponsor contrib copyright coref contained syn keyword docbkKeyword country database date dedication contained syn keyword docbkKeyword destructorsynopsis edition editor email contained syn keyword docbkKeyword emphasis entry entrytbl envar epigraph contained syn keyword docbkKeyword equation errorcode errorname errortext contained syn keyword docbkKeyword errortype example exceptionname fax contained syn keyword docbkKeyword fieldsynopsis figure filename firstname contained syn keyword docbkKeyword firstterm footnote footnoteref contained syn keyword docbkKeyword foreignphrase formalpara funcdef funcparams contained syn keyword docbkKeyword funcprototype funcsynopsis funcsynopsisinfo contained syn keyword docbkKeyword function glossary glossdef glossdiv contained syn keyword docbkKeyword glossentry glosslist glosssee glossseealso contained syn keyword docbkKeyword glossterm group guibutton guiicon guilabel contained syn keyword docbkKeyword guimenu guimenuitem guisubmenu hardware contained syn keyword docbkKeyword holder honorific imagedata imageobject contained syn keyword docbkKeyword imageobjectco important index indexdiv contained syn keyword docbkKeyword indexentry indexterm informalequation contained syn keyword docbkKeyword informalexample informalfigure contained syn keyword docbkKeyword informaltable initializer inlineequation contained syn keyword docbkKeyword inlinemediaobject interfacename issuenum contained syn keyword docbkKeyword itemizedlist itermset jobtitle keycap contained syn keyword docbkKeyword keycode keycombo keysym keyword keywordset contained syn keyword docbkKeyword label legalnotice lineage lineannotation contained syn keyword docbkKeyword link listitem literal literallayout contained syn keyword docbkKeyword manvolnum markup mathphrase mediaobject contained syn keyword docbkKeyword member menuchoice methodname methodparam contained syn keyword docbkKeyword methodsynopsis modifier mousebutton msg contained syn keyword docbkKeyword msgaud msgentry msgexplan msginfo msglevel contained syn keyword docbkKeyword msgmain msgorig msgrel msgset msgsub contained syn keyword docbkKeyword msgtext note olink ooclass ooexception contained syn keyword docbkKeyword oointerface option optional orderedlist contained syn keyword docbkKeyword orgdiv orgname otheraddr othercredit contained syn keyword docbkKeyword othername package pagenums para paramdef contained syn keyword docbkKeyword parameter part partintro personblurb contained syn keyword docbkKeyword personname phone phrase pob postcode contained syn keyword docbkKeyword preface primary primaryie printhistory contained syn keyword docbkKeyword procedure productname productnumber contained syn keyword docbkKeyword programlisting programlistingco prompt contained syn keyword docbkKeyword property pubdate publisher publishername contained syn keyword docbkKeyword qandadiv qandaentry qandaset question quote contained syn keyword docbkKeyword refclass refdescriptor refentry contained syn keyword docbkKeyword refentrytitle reference refmeta refmiscinfo contained syn keyword docbkKeyword refname refnamediv refpurpose refsect1 contained syn keyword docbkKeyword refsect2 refsect3 refsection refsynopsisdiv contained syn keyword docbkKeyword releaseinfo remark replaceable returnvalue contained syn keyword docbkKeyword revdescription revhistory revision contained syn keyword docbkKeyword revnumber revremark row sbr screen screenco contained syn keyword docbkKeyword screenshot secondary secondaryie sect1 contained syn keyword docbkKeyword sect2 sect3 sect4 sect5 section see seealso contained syn keyword docbkKeyword seealsoie seeie seg seglistitem contained syn keyword docbkKeyword segmentedlist segtitle seriesvolnums set contained syn keyword docbkKeyword setindex shortaffil shortcut sidebar contained syn keyword docbkKeyword simpara simplelist simplemsgentry contained syn keyword docbkKeyword simplesect spanspec state step contained syn keyword docbkKeyword stepalternatives street subject subjectset contained syn keyword docbkKeyword subjectterm subscript substeps subtitle contained syn keyword docbkKeyword superscript surname symbol synopfragment contained syn keyword docbkKeyword synopfragmentref synopsis systemitem table contained syn keyword docbkKeyword task taskprerequisites taskrelated contained syn keyword docbkKeyword tasksummary tbody td term termdef tertiary contained syn keyword docbkKeyword tertiaryie textdata textobject tfoot tgroup contained syn keyword docbkKeyword th thead tip title titleabbrev toc tocentry contained syn keyword docbkKeyword token tr trademark type uri userinput contained syn keyword docbkKeyword varargs variablelist varlistentry varname contained syn keyword docbkKeyword videodata videoobject void volumenum contained syn keyword docbkKeyword warning wordasword xref year contained if b:docbk_ver == 4 syn keyword docbkKeyword ackno action appendixinfo articleinfo contained syn keyword docbkKeyword authorblurb beginpage bibliographyinfo contained syn keyword docbkKeyword blockinfo bookinfo chapterinfo contained syn keyword docbkKeyword collabname corpauthor corpcredit contained syn keyword docbkKeyword corpname glossaryinfo graphic graphicco contained syn keyword docbkKeyword highlights indexinfo inlinegraphic contained syn keyword docbkKeyword interface invpartnumber isbn issn lot contained syn keyword docbkKeyword lotentry medialabel mediaobjectco contained syn keyword docbkKeyword modespec objectinfo partinfo contained syn keyword docbkKeyword prefaceinfo pubsnumber refentryinfo contained syn keyword docbkKeyword referenceinfo refsect1info refsect2info contained syn keyword docbkKeyword refsect3info refsectioninfo contained syn keyword docbkKeyword refsynopsisdivinfo screeninfo sect1info contained syn keyword docbkKeyword sect2info sect3info sect4info sect5info contained syn keyword docbkKeyword sectioninfo setindexinfo setinfo contained syn keyword docbkKeyword sgmltag sidebarinfo structfield contained syn keyword docbkKeyword structname tocback tocchap tocfront contained syn keyword docbkKeyword toclevel1 toclevel2 toclevel3 toclevel4 contained syn keyword docbkKeyword toclevel5 tocpart ulink contained else syn keyword docbkKeyword acknowledgements annotation arc contained syn keyword docbkKeyword constraint constraintdef cover contained syn keyword docbkKeyword extendedlink givenname info lhs locator contained syn keyword docbkKeyword multimediaparam nonterminal org person contained syn keyword docbkKeyword production productionrecap contained syn keyword docbkKeyword productionset rhs tag tocdiv topic contained endif " Add special emphasis on some regions. Thanks to Rory Hunter for these ideas. syn region docbkRegion start=""lc=10 end=""me=e-11 contains=xmlRegion,xmlEntity,sgmlRegion,sgmlEntity keepend syn region docbkTitle start=""lc=7 end=""me=e-8 contains=xmlRegion,xmlEntity,sgmlRegion,sgmlEntity keepend syn region docbkRemark start=""lc=8 end=""me=e-9 contains=xmlRegion,xmlEntity,sgmlRegion,sgmlEntity keepend syn region docbkRemark start=""lc=9 end=""me=e-10 contains=xmlRegion,xmlEntity,sgmlRegion,sgmlEntity keepend syn region docbkCite start=""lc=10 end=""me=e-11 contains=xmlRegion,xmlEntity,sgmlRegion,sgmlEntity keepend " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def DocbkBold term=bold cterm=bold gui=bold hi def link docbkKeyword Statement hi def link docbkRegion DocbkBold hi def link docbkTitle Title hi def link docbkRemark Comment hi def link docbkCite Constant let b:current_syntax = "docbk" " vim: ts=8 PK!WW,zzvim80/syntax/tli.vimnu[" Vim syntax file " Language: TealInfo source files (*.tli) " Maintainer: Kurt W. Andrews " Last Change: 2001 May 10 " Version: 1.0 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " TealInfo Objects syn keyword tliObject LIST POPLIST WINDOW POPWINDOW OUTLINE CHECKMARK GOTO syn keyword tliObject LABEL IMAGE RECT TRES PASSWORD POPEDIT POPIMAGE CHECKLIST " TealInfo Fields syn keyword tliField X Y W H BX BY BW BH SX SY FONT BFONT CYCLE DELAY TABS syn keyword tliField STYLE BTEXT RECORD DATABASE KEY TARGET DEFAULT TEXT syn keyword tliField LINKS MAXVAL " TealInfo Styles syn keyword tliStyle INVERTED HORIZ_RULE VERT_RULE NO_SCROLL NO_BORDER BOLD_BORDER syn keyword tliStyle ROUND_BORDER ALIGN_RIGHT ALIGN_CENTER ALIGN_LEFT_START ALIGN_RIGHT_START syn keyword tliStyle ALIGN_CENTER_START ALIGN_LEFT_END ALIGN_RIGHT_END ALIGN_CENTER_END syn keyword tliStyle LOCKOUT BUTTON_SCROLL BUTTON_SELECT STROKE_FIND FILLED REGISTER " String and Character constants syn match tliSpecial "@" syn region tliString start=+"+ end=+"+ "TealInfo Numbers, identifiers and comments syn case ignore syn match tliNumber "\d*" syn match tliIdentifier "\<\h\w*\>" syn match tliComment "#.*" syn case match " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link tliNumber Number hi def link tliString String hi def link tliComment Comment hi def link tliSpecial SpecialChar hi def link tliIdentifier Identifier hi def link tliObject Statement hi def link tliField Type hi def link tliStyle PreProc let b:current_syntax = "tli" " vim: ts=8 PK!@3  vim80/syntax/sqlinformix.vimnu[" Vim syntax file " Informix Structured Query Language (SQL) and Stored Procedure Language (SPL) " Language: SQL, SPL (Informix Dynamic Server 2000 v9.2) " Maintainer: Dean Hill " Last Change: 2004 Aug 30 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " === Comment syntax group === syn region sqlComment start="{" end="}" contains=sqlTodo syn match sqlComment "--.*$" contains=sqlTodo syn sync ccomment sqlComment " === Constant syntax group === " = Boolean subgroup = syn keyword sqlBoolean true false syn keyword sqlBoolean null syn keyword sqlBoolean public user syn keyword sqlBoolean current today syn keyword sqlBoolean year month day hour minute second fraction " = String subgroup = syn region sqlString start=+"+ end=+"+ syn region sqlString start=+'+ end=+'+ " = Numbers subgroup = syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" " === Statement syntax group === " SQL syn keyword sqlStatement allocate alter syn keyword sqlStatement begin syn keyword sqlStatement close commit connect create syn keyword sqlStatement database deallocate declare delete describe disconnect drop syn keyword sqlStatement execute fetch flush free get grant info insert syn keyword sqlStatement load lock open output syn keyword sqlStatement prepare put syn keyword sqlStatement rename revoke rollback select set start stop syn keyword sqlStatement truncate unload unlock update syn keyword sqlStatement whenever " SPL syn keyword sqlStatement call continue define syn keyword sqlStatement exit syn keyword sqlStatement let syn keyword sqlStatement return system trace " = Conditional subgroup = " SPL syn keyword sqlConditional elif else if then syn keyword sqlConditional case " Highlight "end if" with one or more separating spaces syn match sqlConditional "end \+if" " = Repeat subgroup = " SQL/SPL " Handle SQL triggers' "for each row" clause and SPL "for" loop syn match sqlRepeat "for\( \+each \+row\)\=" " SPL syn keyword sqlRepeat foreach while " Highlight "end for", etc. with one or more separating spaces syn match sqlRepeat "end \+for" syn match sqlRepeat "end \+foreach" syn match sqlRepeat "end \+while" " = Exception subgroup = " SPL syn match sqlException "on \+exception" syn match sqlException "end \+exception" syn match sqlException "end \+exception \+with \+resume" syn match sqlException "raise \+exception" " = Keyword subgroup = " SQL syn keyword sqlKeyword aggregate add as authorization autofree by syn keyword sqlKeyword cache cascade check cluster collation syn keyword sqlKeyword column connection constraint cross syn keyword sqlKeyword dataskip debug default deferred_prepare syn keyword sqlKeyword descriptor diagnostics syn keyword sqlKeyword each escape explain external syn keyword sqlKeyword file foreign fragment from function syn keyword sqlKeyword group having syn keyword sqlKeyword immediate index inner into isolation syn keyword sqlKeyword join key syn keyword sqlKeyword left level log syn keyword sqlKeyword mode modify mounting new no syn keyword sqlKeyword object of old optical option syn keyword sqlKeyword optimization order outer syn keyword sqlKeyword pdqpriority pload primary procedure syn keyword sqlKeyword references referencing release reserve syn keyword sqlKeyword residency right role routine row syn keyword sqlKeyword schedule schema scratch session set syn keyword sqlKeyword statement statistics synonym syn keyword sqlKeyword table temp temporary timeout to transaction trigger syn keyword sqlKeyword using values view violations syn keyword sqlKeyword where with work " Highlight "on" (if it's not followed by some words we've already handled) syn match sqlKeyword "on \+\(exception\)\@!" " SPL " Highlight "end" (if it's not followed by some words we've already handled) syn match sqlKeyword "end \+\(if\|for\|foreach\|while\|exception\)\@!" syn keyword sqlKeyword resume returning " = Operator subgroup = " SQL syn keyword sqlOperator not and or syn keyword sqlOperator in is any some all between exists syn keyword sqlOperator like matches syn keyword sqlOperator union intersect syn keyword sqlOperator distinct unique " === Identifier syntax group === " = Function subgroup = " SQL syn keyword sqlFunction abs acos asin atan atan2 avg syn keyword sqlFunction cardinality cast char_length character_length cos count syn keyword sqlFunction exp filetoblob filetoclob hex syn keyword sqlFunction initcap length logn log10 lower lpad syn keyword sqlFunction min max mod octet_length pow range replace root round rpad syn keyword sqlFunction sin sqrt stdev substr substring sum syn keyword sqlFunction to_char tan to_date trim trunc upper variance " === Type syntax group === " SQL syn keyword sqlType blob boolean byte char character clob syn keyword sqlType date datetime dec decimal double syn keyword sqlType float int int8 integer interval list lvarchar syn keyword sqlType money multiset nchar numeric nvarchar syn keyword sqlType real serial serial8 smallfloat smallint syn keyword sqlType text varchar varying " === Todo syntax group === syn keyword sqlTodo TODO FIXME XXX DEBUG NOTE " Define the default highlighting. " Only when an item doesn't have highlighting yet " === Comment syntax group === hi def link sqlComment Comment " === Constant syntax group === hi def link sqlNumber Number hi def link sqlBoolean Boolean hi def link sqlString String " === Statment syntax group === hi def link sqlStatement Statement hi def link sqlConditional Conditional hi def link sqlRepeat Repeat hi def link sqlKeyword Keyword hi def link sqlOperator Operator hi def link sqlException Exception " === Identifier syntax group === hi def link sqlFunction Function " === Type syntax group === hi def link sqlType Type " === Todo syntax group === hi def link sqlTodo Todo let b:current_syntax = "sqlinformix" PK!vim80/syntax/mgp.vimnu[" Vim syntax file " Language: mgp - MaGic Point " Maintainer: Gerfried Fuchs " Filenames: *.mgp " Last Change: 25 Apr 2001 " URL: http://alfie.ist.org/vim/syntax/mgp.vim " " Comments are very welcome - but please make sure that you are commenting on " the latest version of this file. " SPAM is _NOT_ welcome - be ready to be reported! " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn match mgpLineSkip "\\$" " all the commands that are currently recognized syn keyword mgpCommand contained size fore back bgrad left leftfill center syn keyword mgpCommand contained right shrink lcutin rcutin cont xfont vfont syn keyword mgpCommand contained tfont tmfont tfont0 bar image newimage syn keyword mgpCommand contained prefix icon bimage default tab vgap hgap syn keyword mgpCommand contained pause mark again system filter endfilter syn keyword mgpCommand contained vfcap tfdir deffont font embed endembed syn keyword mgpCommand contained noop pcache include " charset is not yet supported :-) " syn keyword mgpCommand contained charset syn region mgpFile contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match mgpValue contained "\d\+" syn match mgpSize contained "\d\+x\d\+" syn match mgpLine +^%.*$+ contains=mgpCommand,mgpFile,mgpSize,mgpValue " Comments syn match mgpPercent +^%%.*$+ syn match mgpHash +^#.*$+ " these only work alone syn match mgpPage +^%page$+ syn match mgpNoDefault +^%nodefault$+ " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link mgpLineSkip Special hi def link mgpHash mgpComment hi def link mgpPercent mgpComment hi def link mgpComment Comment hi def link mgpCommand Identifier hi def link mgpLine Type hi def link mgpFile String hi def link mgpSize Number hi def link mgpValue Number hi def link mgpPage mgpDefine hi def link mgpNoDefault mgpDefine hi def link mgpDefine Define let b:current_syntax = "mgp" PK!mmvim80/syntax/setserial.vimnu[" Vim syntax file " Language: setserial(8) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match setserialBegin display '^' \ nextgroup=setserialDevice,setserialComment \ skipwhite syn match setserialDevice contained display '\%(/[^ \t/]*\)\+' \ nextgroup=setserialParameter skipwhite syn keyword setserialParameter contained port irq baud_base divisor \ close_delay closing_wait rx_trigger \ tx_trigger flow_off flow_on rx_timeout \ nextgroup=setserialNumber skipwhite syn keyword setserialParameter contained uart \ nextgroup=setserialUARTType skipwhite syn keyword setserialParameter contained autoconfig auto_irq skip_test \ spd_hi spd_vhi spd_shi spd_warp spd_cust \ spd_normal sak fourport session_lockout \ pgrp_lockout hup_notify split_termios \ callout_nohup low_latency \ nextgroup=setserialParameter skipwhite syn match setserialParameter contained display \ '\^\%(auto_irq\|skip_test\|sak\|fourport\)' \ contains=setserialNegation \ nextgroup=setserialParameter skipwhite syn match setserialParameter contained display \ '\^\%(session_lockout\|pgrp_lockout\)' \ contains=setserialNegation \ nextgroup=setserialParameter skipwhite syn match setserialParameter contained display \ '\^\%(hup_notify\|split_termios\)' \ contains=setserialNegation \ nextgroup=setserialParameter skipwhite syn match setserialParameter contained display \ '\^\%(callout_nohup\|low_latency\)' \ contains=setserialNegation \ nextgroup=setserialParameter skipwhite syn keyword setserialParameter contained set_multiport \ nextgroup=setserialMultiport skipwhite syn match setserialNumber contained display '\<\d\+\>' \ nextgroup=setserialParameter skipwhite syn match setserialNumber contained display '0x\x\+' \ nextgroup=setserialParameter skipwhite syn keyword setserialUARTType contained none syn match setserialUARTType contained display \ '8250\|16[4789]50\|16550A\=\|16650\%(V2\)\=' \ nextgroup=setserialParameter skipwhite syn match setserialUARTType contained display '166[59]4' \ nextgroup=setserialParameter skipwhite syn match setserialNegation contained display '\^' syn match setserialMultiport contained '\' \ nextgroup=setserialPort skipwhite syn match setserialPort contained display '\<\d\+\>' \ nextgroup=setserialMask skipwhite syn match setserialPort contained display '0x\x\+' \ nextgroup=setserialMask skipwhite syn match setserialMask contained '\' \ nextgroup=setserialBitMask skipwhite syn match setserialBitMask contained display '\<\d\+\>' \ nextgroup=setserialMatch skipwhite syn match setserialBitMask contained display '0x\x\+' \ nextgroup=setserialMatch skipwhite syn match setserialMatch contained '\' \ nextgroup=setserialMatchBits skipwhite syn match setserialMatchBits contained display '\<\d\+\>' \ nextgroup=setserialMultiport skipwhite syn match setserialMatchBits contained display '0x\x\+' \ nextgroup=setserialMultiport skipwhite syn keyword setserialTodo contained TODO FIXME XXX NOTE syn region setserialComment display oneline start='^\s*#' end='$' \ contains=setserialTodo,@Spell hi def link setserialTodo Todo hi def link setserialComment Comment hi def link setserialDevice Normal hi def link setserialParameter Identifier hi def link setserialNumber Number hi def link setserialUARTType Type hi def link setserialNegation Operator hi def link setserialMultiport Type hi def link setserialPort setserialNumber hi def link setserialMask Type hi def link setserialBitMask setserialNumber hi def link setserialMatch Type hi def link setserialMatchBits setserialNumber let b:current_syntax = "setserial" let &cpo = s:cpo_save unlet s:cpo_save PK!;T*DDvim80/syntax/mysql.vimnu[" Vim syntax file " Language: mysql " Maintainer: Kenneth J. Pronovici " Last Change: $LastChangedDate: 2016-04-11 10:31:04 -0500 (Mon, 11 Apr 2016) $ " Filenames: *.mysql " URL: ftp://cedar-solutions.com/software/mysql.vim " Note: The definitions below are taken from the mysql user manual as of April 2002, for version 3.23 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Always ignore case syn case ignore " General keywords which don't fall into other categories syn keyword mysqlKeyword action add after aggregate all alter as asc auto_increment avg_row_length syn keyword mysqlKeyword both by syn keyword mysqlKeyword cascade change character check checksum column columns comment constraint create cross syn keyword mysqlKeyword current_date current_time current_timestamp syn keyword mysqlKeyword data database databases day day_hour day_minute day_second syn keyword mysqlKeyword default delayed delay_key_write delete desc describe distinct distinctrow drop syn keyword mysqlKeyword enclosed escape escaped explain syn keyword mysqlKeyword fields file first flush for foreign from full function syn keyword mysqlKeyword global grant grants group syn keyword mysqlKeyword having heap high_priority hosts hour hour_minute hour_second syn keyword mysqlKeyword identified ignore index infile inner insert insert_id into isam syn keyword mysqlKeyword join syn keyword mysqlKeyword key keys kill last_insert_id leading left limit lines load local lock logs long syn keyword mysqlKeyword low_priority syn keyword mysqlKeyword match max_rows middleint min_rows minute minute_second modify month myisam syn keyword mysqlKeyword natural no syn keyword mysqlKeyword on optimize option optionally order outer outfile syn keyword mysqlKeyword pack_keys partial password primary privileges procedure process processlist syn keyword mysqlKeyword read references reload rename replace restrict returns revoke right row rows syn keyword mysqlKeyword second select show shutdown soname sql_big_result sql_big_selects sql_big_tables sql_log_off syn keyword mysqlKeyword sql_log_update sql_low_priority_updates sql_select_limit sql_small_result sql_warnings starting syn keyword mysqlKeyword status straight_join string syn keyword mysqlKeyword table tables temporary terminated to trailing type syn keyword mysqlKeyword unique unlock unsigned update usage use using syn keyword mysqlKeyword values varbinary variables varying syn keyword mysqlKeyword where with write syn keyword mysqlKeyword year_month syn keyword mysqlKeyword zerofill " Special values syn keyword mysqlSpecial false null true " Strings (single- and double-quote) syn region mysqlString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region mysqlString start=+'+ skip=+\\\\\|\\'+ end=+'+ " Numbers and hexidecimal values syn match mysqlNumber "-\=\<[0-9]*\>" syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*\>" syn match mysqlNumber "-\=\<[0-9][0-9]*e[+-]\=[0-9]*\>" syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*e[+-]\=[0-9]*\>" syn match mysqlNumber "\<0x[abcdefABCDEF0-9]*\>" " User variables syn match mysqlVariable "@\a*[A-Za-z0-9]*\([._]*[A-Za-z0-9]\)*" " Escaped column names syn match mysqlEscaped "`[^`]*`" " Comments (c-style, mysql-style and modified sql-style) syn region mysqlComment start="/\*" end="\*/" syn match mysqlComment "#.*" syn match mysqlComment "--\_s.*" syn sync ccomment mysqlComment " Column types " " This gets a bit ugly. There are two different problems we have to " deal with. " " The first problem is that some keywords like 'float' can be used " both with and without specifiers, i.e. 'float', 'float(1)' and " 'float(@var)' are all valid. We have to account for this and we " also have to make sure that garbage like floatn or float_(1) is not " highlighted. " " The second problem is that some of these keywords are included in " function names. For instance, year() is part of the name of the " dayofyear() function, and the dec keyword (no parenthesis) is part of " the name of the decode() function. syn keyword mysqlType tinyint smallint mediumint int integer bigint syn keyword mysqlType date datetime time bit bool syn keyword mysqlType tinytext mediumtext longtext text syn keyword mysqlType tinyblob mediumblob longblob blob syn region mysqlType start="float\W" end="."me=s-1 syn region mysqlType start="float$" end="."me=s-1 syn region mysqlType start="float(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="double\W" end="."me=s-1 syn region mysqlType start="double$" end="."me=s-1 syn region mysqlType start="double(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="double precision\W" end="."me=s-1 syn region mysqlType start="double precision$" end="."me=s-1 syn region mysqlType start="double precision(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="real\W" end="."me=s-1 syn region mysqlType start="real$" end="."me=s-1 syn region mysqlType start="real(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="numeric(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="dec\W" end="."me=s-1 syn region mysqlType start="dec$" end="."me=s-1 syn region mysqlType start="dec(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="decimal\W" end="."me=s-1 syn region mysqlType start="decimal$" end="."me=s-1 syn region mysqlType start="decimal(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="\Wtimestamp\W" end="."me=s-1 syn region mysqlType start="\Wtimestamp$" end="."me=s-1 syn region mysqlType start="\Wtimestamp(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="^timestamp\W" end="."me=s-1 syn region mysqlType start="^timestamp$" end="."me=s-1 syn region mysqlType start="^timestamp(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="\Wyear(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="^year(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="char(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="varchar(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="enum(" end=")" contains=mysqlString,mysqlVariable syn region mysqlType start="\Wset(" end=")" contains=mysqlString,mysqlVariable syn region mysqlType start="^set(" end=")" contains=mysqlString,mysqlVariable " Logical, string and numeric operators syn keyword mysqlOperator between not and or is in like regexp rlike binary exists syn region mysqlOperator start="isnull(" end=")" contains=ALL syn region mysqlOperator start="coalesce(" end=")" contains=ALL syn region mysqlOperator start="interval(" end=")" contains=ALL " Control flow functions syn keyword mysqlFlow case when then else end syn region mysqlFlow start="ifnull(" end=")" contains=ALL syn region mysqlFlow start="nullif(" end=")" contains=ALL syn region mysqlFlow start="if(" end=")" contains=ALL " General Functions " " I'm leery of just defining keywords for functions, since according to the MySQL manual: " " Function names do not clash with table or column names. For example, ABS is a " valid column name. The only restriction is that for a function call, no spaces " are allowed between the function name and the `(' that follows it. " " This means that if I want to highlight function names properly, I have to use a " region to define them, not just a keyword. This will probably cause the syntax file " to load more slowly, but at least it will be 'correct'. syn region mysqlFunction start="abs(" end=")" contains=ALL syn region mysqlFunction start="acos(" end=")" contains=ALL syn region mysqlFunction start="adddate(" end=")" contains=ALL syn region mysqlFunction start="ascii(" end=")" contains=ALL syn region mysqlFunction start="asin(" end=")" contains=ALL syn region mysqlFunction start="atan(" end=")" contains=ALL syn region mysqlFunction start="atan2(" end=")" contains=ALL syn region mysqlFunction start="avg(" end=")" contains=ALL syn region mysqlFunction start="benchmark(" end=")" contains=ALL syn region mysqlFunction start="bin(" end=")" contains=ALL syn region mysqlFunction start="bit_and(" end=")" contains=ALL syn region mysqlFunction start="bit_count(" end=")" contains=ALL syn region mysqlFunction start="bit_or(" end=")" contains=ALL syn region mysqlFunction start="ceiling(" end=")" contains=ALL syn region mysqlFunction start="character_length(" end=")" contains=ALL syn region mysqlFunction start="char_length(" end=")" contains=ALL syn region mysqlFunction start="concat(" end=")" contains=ALL syn region mysqlFunction start="concat_ws(" end=")" contains=ALL syn region mysqlFunction start="connection_id(" end=")" contains=ALL syn region mysqlFunction start="conv(" end=")" contains=ALL syn region mysqlFunction start="cos(" end=")" contains=ALL syn region mysqlFunction start="cot(" end=")" contains=ALL syn region mysqlFunction start="count(" end=")" contains=ALL syn region mysqlFunction start="curdate(" end=")" contains=ALL syn region mysqlFunction start="curtime(" end=")" contains=ALL syn region mysqlFunction start="date_add(" end=")" contains=ALL syn region mysqlFunction start="date_format(" end=")" contains=ALL syn region mysqlFunction start="date_sub(" end=")" contains=ALL syn region mysqlFunction start="dayname(" end=")" contains=ALL syn region mysqlFunction start="dayofmonth(" end=")" contains=ALL syn region mysqlFunction start="dayofweek(" end=")" contains=ALL syn region mysqlFunction start="dayofyear(" end=")" contains=ALL syn region mysqlFunction start="decode(" end=")" contains=ALL syn region mysqlFunction start="degrees(" end=")" contains=ALL syn region mysqlFunction start="elt(" end=")" contains=ALL syn region mysqlFunction start="encode(" end=")" contains=ALL syn region mysqlFunction start="encrypt(" end=")" contains=ALL syn region mysqlFunction start="exp(" end=")" contains=ALL syn region mysqlFunction start="export_set(" end=")" contains=ALL syn region mysqlFunction start="extract(" end=")" contains=ALL syn region mysqlFunction start="field(" end=")" contains=ALL syn region mysqlFunction start="find_in_set(" end=")" contains=ALL syn region mysqlFunction start="floor(" end=")" contains=ALL syn region mysqlFunction start="format(" end=")" contains=ALL syn region mysqlFunction start="from_days(" end=")" contains=ALL syn region mysqlFunction start="from_unixtime(" end=")" contains=ALL syn region mysqlFunction start="get_lock(" end=")" contains=ALL syn region mysqlFunction start="greatest(" end=")" contains=ALL syn region mysqlFunction start="group_unique_users(" end=")" contains=ALL syn region mysqlFunction start="hex(" end=")" contains=ALL syn region mysqlFunction start="inet_aton(" end=")" contains=ALL syn region mysqlFunction start="inet_ntoa(" end=")" contains=ALL syn region mysqlFunction start="instr(" end=")" contains=ALL syn region mysqlFunction start="lcase(" end=")" contains=ALL syn region mysqlFunction start="least(" end=")" contains=ALL syn region mysqlFunction start="length(" end=")" contains=ALL syn region mysqlFunction start="load_file(" end=")" contains=ALL syn region mysqlFunction start="locate(" end=")" contains=ALL syn region mysqlFunction start="log(" end=")" contains=ALL syn region mysqlFunction start="log10(" end=")" contains=ALL syn region mysqlFunction start="lower(" end=")" contains=ALL syn region mysqlFunction start="lpad(" end=")" contains=ALL syn region mysqlFunction start="ltrim(" end=")" contains=ALL syn region mysqlFunction start="make_set(" end=")" contains=ALL syn region mysqlFunction start="master_pos_wait(" end=")" contains=ALL syn region mysqlFunction start="max(" end=")" contains=ALL syn region mysqlFunction start="md5(" end=")" contains=ALL syn region mysqlFunction start="mid(" end=")" contains=ALL syn region mysqlFunction start="min(" end=")" contains=ALL syn region mysqlFunction start="mod(" end=")" contains=ALL syn region mysqlFunction start="monthname(" end=")" contains=ALL syn region mysqlFunction start="now(" end=")" contains=ALL syn region mysqlFunction start="oct(" end=")" contains=ALL syn region mysqlFunction start="octet_length(" end=")" contains=ALL syn region mysqlFunction start="ord(" end=")" contains=ALL syn region mysqlFunction start="period_add(" end=")" contains=ALL syn region mysqlFunction start="period_diff(" end=")" contains=ALL syn region mysqlFunction start="pi(" end=")" contains=ALL syn region mysqlFunction start="position(" end=")" contains=ALL syn region mysqlFunction start="pow(" end=")" contains=ALL syn region mysqlFunction start="power(" end=")" contains=ALL syn region mysqlFunction start="quarter(" end=")" contains=ALL syn region mysqlFunction start="radians(" end=")" contains=ALL syn region mysqlFunction start="rand(" end=")" contains=ALL syn region mysqlFunction start="release_lock(" end=")" contains=ALL syn region mysqlFunction start="repeat(" end=")" contains=ALL syn region mysqlFunction start="reverse(" end=")" contains=ALL syn region mysqlFunction start="round(" end=")" contains=ALL syn region mysqlFunction start="rpad(" end=")" contains=ALL syn region mysqlFunction start="rtrim(" end=")" contains=ALL syn region mysqlFunction start="sec_to_time(" end=")" contains=ALL syn region mysqlFunction start="session_user(" end=")" contains=ALL syn region mysqlFunction start="sign(" end=")" contains=ALL syn region mysqlFunction start="sin(" end=")" contains=ALL syn region mysqlFunction start="soundex(" end=")" contains=ALL syn region mysqlFunction start="space(" end=")" contains=ALL syn region mysqlFunction start="sqrt(" end=")" contains=ALL syn region mysqlFunction start="std(" end=")" contains=ALL syn region mysqlFunction start="stddev(" end=")" contains=ALL syn region mysqlFunction start="strcmp(" end=")" contains=ALL syn region mysqlFunction start="subdate(" end=")" contains=ALL syn region mysqlFunction start="substring(" end=")" contains=ALL syn region mysqlFunction start="substring_index(" end=")" contains=ALL syn region mysqlFunction start="subtime(" end=")" contains=ALL syn region mysqlFunction start="sum(" end=")" contains=ALL syn region mysqlFunction start="sysdate(" end=")" contains=ALL syn region mysqlFunction start="system_user(" end=")" contains=ALL syn region mysqlFunction start="tan(" end=")" contains=ALL syn region mysqlFunction start="time_format(" end=")" contains=ALL syn region mysqlFunction start="time_to_sec(" end=")" contains=ALL syn region mysqlFunction start="to_days(" end=")" contains=ALL syn region mysqlFunction start="trim(" end=")" contains=ALL syn region mysqlFunction start="ucase(" end=")" contains=ALL syn region mysqlFunction start="unique_users(" end=")" contains=ALL syn region mysqlFunction start="unix_timestamp(" end=")" contains=ALL syn region mysqlFunction start="upper(" end=")" contains=ALL syn region mysqlFunction start="user(" end=")" contains=ALL syn region mysqlFunction start="version(" end=")" contains=ALL syn region mysqlFunction start="week(" end=")" contains=ALL syn region mysqlFunction start="weekday(" end=")" contains=ALL syn region mysqlFunction start="yearweek(" end=")" contains=ALL " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link mysqlKeyword Statement hi def link mysqlSpecial Special hi def link mysqlString String hi def link mysqlNumber Number hi def link mysqlVariable Identifier hi def link mysqlComment Comment hi def link mysqlType Type hi def link mysqlOperator Statement hi def link mysqlFlow Statement hi def link mysqlFunction Function let b:current_syntax = "mysql" PK!n&&vim80/syntax/b.vimnu[" Vim syntax file " Language: B (A Formal Method with refinement and mathematical proof) " Maintainer: Mathieu Clabaut " Contributor: Csaba Hoch " LastChange: 8 Dec 2007 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " A bunch of useful B keywords syn keyword bStatement MACHINE MODEL SEES OPERATIONS INCLUDES DEFINITIONS CONSTRAINTS CONSTANTS VARIABLES CONCRETE_CONSTANTS CONCRETE_VARIABLES ABSTRACT_CONSTANTS ABSTRACT_VARIABLES HIDDEN_CONSTANTS HIDDEN_VARIABLES ASSERT ASSERTIONS EXTENDS IMPLEMENTATION REFINEMENT IMPORTS USES INITIALISATION INVARIANT PROMOTES PROPERTIES REFINES SETS VALUES VARIANT VISIBLE_CONSTANTS VISIBLE_VARIABLES THEORY XLS THEOREMS LOCAL_OPERATIONS syn keyword bLabel CASE IN EITHER OR CHOICE DO OF syn keyword bConditional IF ELSE SELECT ELSIF THEN WHEN syn keyword bRepeat WHILE FOR syn keyword bOps bool card conc closure closure1 dom first fnc front not or id inter iseq iseq1 iterate last max min mod perm pred prj1 prj2 ran rel rev seq seq1 size skip succ tail union syn keyword bKeywords LET VAR BE IN BEGIN END POW POW1 FIN FIN1 PRE SIGMA STRING UNION IS ANY WHERE syn keyword bBoolean TRUE FALSE bfalse btrue syn keyword bConstant PI MAXINT MININT User_Pass PatchProver PatchProverH0 PatchProverB0 FLAT ARI DED SUB RES syn keyword bGuard binhyp band bnot bguard bsearch bflat bfresh bguardi bget bgethyp barith bgetresult bresult bgoal bmatch bmodr bnewv bnum btest bpattern bprintf bwritef bsubfrm bvrb blvar bcall bappend bclose syn keyword bLogic or not syn match bLogic "\(!\|#\|%\|&\|+->>\|+->\|-->>\|->>\|-->\|->\|/:\|/<:\|/<<:\|/=\|/\\\|/|\\\|::\|:\|;:\|<+\|<->\|<--\|<-\|<:\|<<:\|<<|\|<=>\|<|\|==\|=>\|>+>>\|>->\|>+>\|||\||->\)" syn match bNothing /:=/ syn keyword cTodo contained TODO FIXME XXX " String and Character constants " Highlight special characters (those which have a backslash) differently syn match bSpecial contained "\\[0-7][0-7][0-7]\=\|\\." syn region bString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=bSpecial syn match bCharacter "'[^\\]'" syn match bSpecialCharacter "'\\.'" syn match bSpecialCharacter "'\\[0-7][0-7]'" syn match bSpecialCharacter "'\\[0-7][0-7][0-7]'" "catch errors caused by wrong parenthesis syn region bParen transparent start='(' end=')' contains=ALLBUT,bParenError,bIncluded,bSpecial,bTodo,bUserLabel,bBitField syn match bParenError ")" syn match bInParen contained "[{}]" "integer number, or floating point number without a dot and with "f". syn case ignore syn match bNumber "\<[0-9]\+\>" "syn match bIdentifier "\<[a-z_][a-z0-9_]*\>" syn case match syn region bComment start="/\*" end="\*/" contains=bTodo syn match bComment "//.*" contains=bTodo syntax match bCommentError "\*/" syn keyword bType INT INTEGER BOOL NAT NATURAL NAT1 NATURAL1 syn region bPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=bComment,bString,bCharacter,bNumber,bCommentError syn region bIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match bIncluded contained "<[^>]*>" syn match bInclude "^\s*#\s*include\>\s*["<]" contains=bIncluded syn region bDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,bPreCondit,bIncluded,bInclude,bDefine,bInParen syn region bPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,bPreCondit,bIncluded,bInclude,bDefine,bInParen syn sync ccomment bComment minlines=10 " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overridden later hi def link bLabel Label hi def link bUserLabel Label hi def link bConditional Conditional hi def link bRepeat Repeat hi def link bLogic Special hi def link bCharacter Character hi def link bSpecialCharacter bSpecial hi def link bNumber Number hi def link bFloat Float hi def link bOctalError bError hi def link bParenError bError " hi def link bInParen bError hi def link bCommentError bError hi def link bBoolean Identifier hi def link bConstant Identifier hi def link bGuard Identifier hi def link bOperator Operator hi def link bKeywords Operator hi def link bOps Identifier hi def link bStructure Structure hi def link bStorageClass StorageClass hi def link bInclude Include hi def link bPreProc PreProc hi def link bDefine Macro hi def link bIncluded bString hi def link bError Error hi def link bStatement Statement hi def link bPreCondit PreCondit hi def link bType Type hi def link bCommentError bError hi def link bCommentString bString hi def link bComment2String bString hi def link bCommentSkip bComment hi def link bString String hi def link bComment Comment hi def link bSpecial SpecialChar hi def link bTodo Todo "hi link bIdentifier Identifier let b:current_syntax = "b" " vim: ts=8 PK!HDvim80/syntax/synload.vimnu[" Vim syntax support file " Maintainer: Bram Moolenaar " Last Change: 2016 Nov 04 " This file sets up for syntax highlighting. " It is loaded from "syntax.vim" and "manual.vim". " 1. Set the default highlight groups. " 2. Install Syntax autocommands for all the available syntax files. if !has("syntax") finish endif " let others know that syntax has been switched on let syntax_on = 1 " Set the default highlighting colors. Use a color scheme if specified. if exists("colors_name") exe "colors " . colors_name else runtime! syntax/syncolor.vim endif " Line continuation is used here, remove 'C' from 'cpoptions' let s:cpo_save = &cpo set cpo&vim " First remove all old syntax autocommands. au! Syntax au Syntax * call s:SynSet() fun! s:SynSet() " clear syntax for :set syntax=OFF and any syntax name that doesn't exist syn clear if exists("b:current_syntax") unlet b:current_syntax endif let s = expand("") if s == "ON" " :set syntax=ON if &filetype == "" echohl ErrorMsg echo "filetype unknown" echohl None endif let s = &filetype elseif s == "OFF" let s = "" endif if s != "" " Load the syntax file(s). When there are several, separated by dots, " load each in sequence. for name in split(s, '\.') exe "runtime! syntax/" . name . ".vim syntax/" . name . "/*.vim" endfor endif endfun " Handle adding doxygen to other languages (C, C++, C#, IDL, java, php, DataScript) au Syntax c,cpp,cs,idl,java,php,datascript \ if (exists('b:load_doxygen_syntax') && b:load_doxygen_syntax) \ || (exists('g:load_doxygen_syntax') && g:load_doxygen_syntax) \ | runtime! syntax/doxygen.vim \ | endif " Source the user-specified syntax highlighting file if exists("mysyntaxfile") let s:fname = expand(mysyntaxfile) if filereadable(s:fname) execute "source " . fnameescape(s:fname) endif endif " Restore 'cpoptions' let &cpo = s:cpo_save unlet s:cpo_save PK!)2vim80/syntax/phtml.vimnu[" Vim syntax file " PHTML used to be the filetype for PHP 2.0. Now everything is PHP. if !exists("b:current_syntax") runtime! syntax/php.vim endif PK!#`vim80/syntax/hastepreproc.vimnu[" Vim syntax file " Language: Haste preprocessor files " Maintainer: M. Tranchero - maurizio.tranchero@gmail.com " Credits: some parts have been taken from vhdl, verilog, and C syntax " files " Version: 0.5 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Read the haste syntax to start with runtime! syntax/haste.vim unlet b:current_syntax " case is significant syn case match " C pre-processor directives syn match hastepreprocVar display "\$[[:alnum:]_]*" syn region hastepreprocVar start="\${" end="}" contains=hastepreprocVar " "syn region hastepreproc start="#\[\s*tg[:alnum:]*" end="]#" contains=hastepreprocVar,hastepreproc,hastepreprocError,@Spell syn region hastepreproc start="#\[\s*\(\|tgfor\|tgif\)" end="$" contains=hastepreprocVar,hastepreproc,@Spell syn region hastepreproc start="}\s\(else\)\s{" end="$" contains=hastepreprocVar,hastepreproc,@Spell syn region hastepreproc start="^\s*#\s*\(ifndef\|ifdef\|else\|endif\)\>" end="$" contains=@hastepreprocGroup,@Spell syn region hastepreproc start="\s*##\s*\(define\|undef\)\>" end="$" contains=@hastepreprocGroup,@Spell syn match hastepreproc "}\{0,1}\s*]#" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link hastepreproc Preproc hi def link hastepreprocVar Special hi def link hastepreprocError Error let b:current_syntax = "hastepreproc" " vim: ts=8 PK!1άC C vim80/syntax/smarty.vimnu[" Vim syntax file " Language: Smarty Templates " Maintainer: Manfred Stienstra manfred.stienstra@dwerg.net " Last Change: Mon Nov 4 11:42:23 CET 2002 " Filenames: *.tpl " URL: http://www.dwerg.net/projects/vim/smarty.vim " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if !exists("main_syntax") " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let main_syntax = 'smarty' endif syn case ignore runtime! syntax/html.vim "syn cluster htmlPreproc add=smartyUnZone syn match smartyBlock contained "[\[\]]" syn keyword smartyTagName capture config_load include include_php syn keyword smartyTagName insert if elseif else ldelim rdelim literal syn keyword smartyTagName php section sectionelse foreach foreachelse syn keyword smartyTagName strip assign counter cycle debug eval fetch syn keyword smartyTagName html_options html_select_date html_select_time syn keyword smartyTagName math popup_init popup html_checkboxes html_image syn keyword smartyTagName html_radios html_table mailto textformat syn keyword smartyModifier cat capitalize count_characters count_paragraphs syn keyword smartyModifier count_sentences count_words date_format default syn keyword smartyModifier escape indent lower nl2br regex_replace replace syn keyword smartyModifier spacify string_format strip strip_tags truncate syn keyword smartyModifier upper wordwrap syn keyword smartyInFunc neq eq syn keyword smartyProperty contained "file=" syn keyword smartyProperty contained "loop=" syn keyword smartyProperty contained "name=" syn keyword smartyProperty contained "include=" syn keyword smartyProperty contained "skip=" syn keyword smartyProperty contained "section=" syn keyword smartyConstant "\$smarty" syn keyword smartyDot . syn region smartyZone matchgroup=Delimiter start="{" end="}" contains=smartyProperty, smartyString, smartyBlock, smartyTagName, smartyConstant, smartyInFunc, smartyModifier syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,smartyZone syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,smartyZone syn region htmlLink start="\_[^>]*\" end=""me=e-4 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc,smartyZone hi def link smartyTagName Identifier hi def link smartyProperty Constant " if you want the text inside the braces to be colored, then " remove the comment in from of the next statement "hi def link smartyZone Include hi def link smartyInFunc Function hi def link smartyBlock Constant hi def link smartyDot SpecialChar hi def link smartyModifier Function let b:current_syntax = "smarty" if main_syntax == 'smarty' unlet main_syntax endif " vim: ts=8 PK!Jf/f/vim80/syntax/rhelp.vimnu[" Vim syntax file " Language: R Help File " Maintainer: Jakson Aquino " Former Maintainer: Johannes Ranke " Homepage: https://github.com/jalvesaq/R-Vim-runtime " Last Change: Tue Jun 28, 2016 08:53AM " Remarks: - Includes R syntax highlighting in the appropriate " sections if an r.vim file is in the same directory or in the " default debian location. " - There is no Latex markup in equations " - Thanks to Will Gray for finding and fixing a bug " - No support for \var tag within quoted string " Version Clears: {{{1 if exists("b:current_syntax") finish endif scriptencoding utf-8 syn case match " R help identifiers {{{1 syn region rhelpIdentifier matchgroup=rhelpSection start="\\name{" end="}" syn region rhelpIdentifier matchgroup=rhelpSection start="\\alias{" end="}" syn region rhelpIdentifier matchgroup=rhelpSection start="\\pkg{" end="}" contains=rhelpLink syn region rhelpIdentifier matchgroup=rhelpSection start="\\CRANpkg{" end="}" contains=rhelpLink syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end="}" contained syn region rhelpIdentifier matchgroup=rhelpSection start="\\Rdversion{" end="}" " Highlighting of R code using an existing r.vim syntax file if available {{{1 syn include @R syntax/r.vim " Strings {{{1 syn region rhelpString start=/"/ skip=/\\"/ end=/"/ contains=rhelpSpecialChar,rhelpCodeSpecial,rhelpLink contained " Special characters in R strings syn match rhelpCodeSpecial display contained "\\\\\(n\|r\|t\|b\|a\|f\|v\|'\|\"\)\|\\\\" " Special characters ( \$ \& \% \# \{ \} \_) syn match rhelpSpecialChar "\\[$&%#{}_]" " R code {{{1 syn match rhelpDots "\\dots" containedin=@R syn region rhelpRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpLink,rhelpIdentifier,rhelpString,rhelpSpecialChar,rhelpSection syn region rhelpRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpIdentifier,rhelpS4method syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end="}" contains=@R syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end="}" contains=@R if v:version > 703 syn region rhelpRcode matchgroup=Delimiter start="\\code{" skip='\\\@1" syn match rhelpKeyword "\\ldots\>" syn match rhelpKeyword "\\sspace\>" syn match rhelpKeyword "--" syn match rhelpKeyword "---" " Condition Keywords {{{2 syn match rhelpKeyword "\\if\>" syn match rhelpKeyword "\\ifelse\>" syn match rhelpKeyword "\\out\>" " Examples of usage: " \ifelse{latex}{\eqn{p = 5 + 6 - 7 \times 8}}{\eqn{p = 5 + 6 - 7 * 8}} " \ifelse{latex}{\out{$\alpha$}}{\ifelse{html}{\out{α}}{alpha}} " Keywords and operators valid only if in math mode {{{2 syn match rhelpMathOp "<" contained syn match rhelpMathOp ">" contained syn match rhelpMathOp "+" contained syn match rhelpMathOp "-" contained syn match rhelpMathOp "=" contained " Conceal function based on syntax/tex.vim {{{2 if exists("g:tex_conceal") let s:tex_conceal = g:tex_conceal else let s:tex_conceal = 'gm' endif function s:HideSymbol(pat, cchar, hide) if a:hide exe "syn match rhelpMathSymb '" . a:pat . "' contained conceal cchar=" . a:cchar else exe "syn match rhelpMathSymb '" . a:pat . "' contained" endif endfunction " Math symbols {{{2 if s:tex_conceal =~ 'm' let s:hd = 1 else let s:hd = 0 endif call s:HideSymbol('\\infty\>', '∞', s:hd) call s:HideSymbol('\\ge\>', '≥', s:hd) call s:HideSymbol('\\le\>', '≤', s:hd) call s:HideSymbol('\\prod\>', '∏', s:hd) call s:HideSymbol('\\sum\>', '∑', s:hd) syn match rhelpMathSymb "\\sqrt\>" contained " Greek letters {{{2 if s:tex_conceal =~ 'g' let s:hd = 1 else let s:hd = 0 endif call s:HideSymbol('\\alpha\>', 'α', s:hd) call s:HideSymbol('\\beta\>', 'β', s:hd) call s:HideSymbol('\\gamma\>', 'γ', s:hd) call s:HideSymbol('\\delta\>', 'δ', s:hd) call s:HideSymbol('\\epsilon\>', 'ϵ', s:hd) call s:HideSymbol('\\zeta\>', 'ζ', s:hd) call s:HideSymbol('\\eta\>', 'η', s:hd) call s:HideSymbol('\\theta\>', 'θ', s:hd) call s:HideSymbol('\\iota\>', 'ι', s:hd) call s:HideSymbol('\\kappa\>', 'κ', s:hd) call s:HideSymbol('\\lambda\>', 'λ', s:hd) call s:HideSymbol('\\mu\>', 'μ', s:hd) call s:HideSymbol('\\nu\>', 'ν', s:hd) call s:HideSymbol('\\xi\>', 'ξ', s:hd) call s:HideSymbol('\\pi\>', 'π', s:hd) call s:HideSymbol('\\rho\>', 'ρ', s:hd) call s:HideSymbol('\\sigma\>', 'σ', s:hd) call s:HideSymbol('\\tau\>', 'τ', s:hd) call s:HideSymbol('\\upsilon\>', 'υ', s:hd) call s:HideSymbol('\\phi\>', 'ϕ', s:hd) call s:HideSymbol('\\chi\>', 'χ', s:hd) call s:HideSymbol('\\psi\>', 'ψ', s:hd) call s:HideSymbol('\\omega\>', 'ω', s:hd) call s:HideSymbol('\\Gamma\>', 'Γ', s:hd) call s:HideSymbol('\\Delta\>', 'Δ', s:hd) call s:HideSymbol('\\Theta\>', 'Θ', s:hd) call s:HideSymbol('\\Lambda\>', 'Λ', s:hd) call s:HideSymbol('\\Xi\>', 'Ξ', s:hd) call s:HideSymbol('\\Pi\>', 'Π', s:hd) call s:HideSymbol('\\Sigma\>', 'Σ', s:hd) call s:HideSymbol('\\Upsilon\>', 'Υ', s:hd) call s:HideSymbol('\\Phi\>', 'Φ', s:hd) call s:HideSymbol('\\Psi\>', 'Ψ', s:hd) call s:HideSymbol('\\Omega\>', 'Ω', s:hd) delfunction s:HideSymbol " Note: The letters 'omicron', 'Alpha', 'Beta', 'Epsilon', 'Zeta', 'Eta', " 'Iota', 'Kappa', 'Mu', 'Nu', 'Omicron', 'Rho', 'Tau' and 'Chi' are listed " at src/library/tools/R/Rd2txt.R because they are valid in HTML, although " they do not make valid LaTeX code (e.g. Α versus \Alpha). " Links {{{1 syn region rhelpLink matchgroup=rhelpType start="\\link{" end="}" contained keepend extend syn region rhelpLink matchgroup=rhelpType start="\\link\[.\{-}\]{" end="}" contained keepend extend syn region rhelpLink matchgroup=rhelpType start="\\linkS4class{" end="}" contained keepend extend syn region rhelpLink matchgroup=rhelpType start="\\url{" end="}" contained keepend extend syn region rhelpLink matchgroup=rhelpType start="\\href{" end="}" contained keepend extend syn region rhelpLink matchgroup=rhelpType start="\\figure{" end="}" contained keepend extend " Verbatim like {{{1 syn region rhelpVerbatim matchgroup=rhelpType start="\\samp{" skip='\\\@1" syn match rhelpType "\\strong\>" syn match rhelpType "\\bold\>" syn match rhelpType "\\sQuote\>" syn match rhelpType "\\dQuote\>" syn match rhelpType "\\preformatted\>" syn match rhelpType "\\kbd\>" syn match rhelpType "\\file\>" syn match rhelpType "\\email\>" syn match rhelpType "\\enc\>" syn match rhelpType "\\var\>" syn match rhelpType "\\env\>" syn match rhelpType "\\option\>" syn match rhelpType "\\command\>" syn match rhelpType "\\newcommand\>" syn match rhelpType "\\renewcommand\>" syn match rhelpType "\\dfn\>" syn match rhelpType "\\cite\>" syn match rhelpType "\\acronym\>" syn match rhelpType "\\doi\>" " rhelp sections {{{1 syn match rhelpSection "\\encoding\>" syn match rhelpSection "\\title\>" syn match rhelpSection "\\item\>" syn match rhelpSection "\\description\>" syn match rhelpSection "\\concept\>" syn match rhelpSection "\\arguments\>" syn match rhelpSection "\\details\>" syn match rhelpSection "\\value\>" syn match rhelpSection "\\references\>" syn match rhelpSection "\\note\>" syn match rhelpSection "\\author\>" syn match rhelpSection "\\seealso\>" syn match rhelpSection "\\keyword\>" syn match rhelpSection "\\docType\>" syn match rhelpSection "\\format\>" syn match rhelpSection "\\source\>" syn match rhelpSection "\\itemize\>" syn match rhelpSection "\\describe\>" syn match rhelpSection "\\enumerate\>" syn match rhelpSection "\\item " syn match rhelpSection "\\item$" syn match rhelpSection "\\tabular{[lcr]*}" syn match rhelpSection "\\dontrun\>" syn match rhelpSection "\\dontshow\>" syn match rhelpSection "\\testonly\>" syn match rhelpSection "\\donttest\>" " Freely named Sections {{{1 syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end="}" syn region rhelpFreesubsec matchgroup=Delimiter start="\\subsection{" matchgroup=Delimiter transparent end="}" syn match rhelpDelimiter "{\|\[\|(\|)\|\]\|}" " R help file comments {{{1 syn match rhelpComment /%.*$/ " Error {{{1 syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation syn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation syn region rhelpRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation syn match rhelpError /[)\]}]/ syn match rhelpBraceError /[)}]/ contained syn match rhelpCurlyError /[)\]]/ contained syn match rhelpParenError /[\]}]/ contained syntax sync match rhelpSyncRcode grouphere rhelpRcode "\\examples{" " Define the default highlighting {{{1 hi def link rhelpVerbatim String hi def link rhelpDelimiter Delimiter hi def link rhelpIdentifier Identifier hi def link rhelpString String hi def link rhelpCodeSpecial Special hi def link rhelpKeyword Keyword hi def link rhelpDots Keyword hi def link rhelpLink Underlined hi def link rhelpType Type hi def link rhelpSection PreCondit hi def link rhelpError Error hi def link rhelpBraceError Error hi def link rhelpCurlyError Error hi def link rhelpParenError Error hi def link rhelpPreProc PreProc hi def link rhelpDelimiter Delimiter hi def link rhelpComment Comment hi def link rhelpRComment Comment hi def link rhelpSpecialChar SpecialChar hi def link rhelpMathSymb Special hi def link rhelpMathOp Operator let b:current_syntax = "rhelp" " vim: foldmethod=marker sw=2 PK!1oovim80/syntax/sdc.vimnu[" Vim syntax file " Language: SDC - Synopsys Design Constraints " Maintainer: Maurizio Tranchero - maurizio.tranchero@gmail.com " Last Change: Thu Mar 25 17:35:16 CET 2009 " Credits: based on TCL Vim syntax file " Version: 0.3 " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Read the TCL syntax to start with runtime! syntax/tcl.vim " SDC-specific keywords syn keyword sdcCollections foreach_in_collection syn keyword sdcObjectsQuery get_clocks get_ports syn keyword sdcObjectsInfo get_point_info get_node_info get_path_info syn keyword sdcObjectsInfo get_timing_paths set_attribute syn keyword sdcConstraints set_false_path syn keyword sdcNonIdealities set_min_delay set_max_delay syn keyword sdcNonIdealities set_input_delay set_output_delay syn keyword sdcNonIdealities set_load set_min_capacitance set_max_capacitance syn keyword sdcCreateOperations create_clock create_timing_netlist update_timing_netlist " command flags highlighting syn match sdcFlags "[[:space:]]-[[:alpha:]]*\>" " Define the default highlighting. hi def link sdcCollections Repeat hi def link sdcObjectsInfo Operator hi def link sdcCreateOperations Operator hi def link sdcObjectsQuery Operator hi def link sdcConstraints Operator hi def link sdcNonIdealities Operator hi def link sdcFlags Special let b:current_syntax = "sdc" " vim: ts=8 PK!K() vim80/syntax/mailaliases.vimnu[" Vim syntax file " Language: aliases(5) local alias database file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2008-04-14 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword mailaliasesTodo contained TODO FIXME XXX NOTE syn region mailaliasesComment display oneline start='^\s*#' end='$' \ contains=mailaliasesTodo,@Spell syn match mailaliasesBegin display '^' \ nextgroup=mailaliasesName, \ mailaliasesComment syn match mailaliasesName contained '[[:alnum:]\._-]\+' \ nextgroup=mailaliasesColon syn region mailaliasesName contained oneline start=+"+ \ skip=+\\\\\|\\"+ end=+"+ \ nextgroup=mailaliasesColon syn match mailaliasesColon contained ':' \ nextgroup=@mailaliasesValue \ skipwhite skipnl syn cluster mailaliasesValue contains=mailaliasesValueAddress, \ mailaliasesValueFile, \ mailaliasesValueCommand, \ mailaliasesValueInclude syn match mailaliasesValueAddress contained '[^ \t/|,]\+' \ nextgroup=mailaliasesValueSep \ skipwhite skipnl syn match mailaliasesValueFile contained '/[^,]*' \ nextgroup=mailaliasesValueSep \ skipwhite skipnl syn match mailaliasesValueCommand contained '|[^,]*' \ nextgroup=mailaliasesValueSep \ skipwhite skipnl syn match mailaliasesValueInclude contained ':include:[^,]*' \ nextgroup=mailaliasesValueSep \ skipwhite skipnl syn match mailaliasesValueSep contained ',' \ nextgroup=@mailaliasesValue \ skipwhite skipnl hi def link mailaliasesTodo Todo hi def link mailaliasesComment Comment hi def link mailaliasesName Identifier hi def link mailaliasesColon Delimiter hi def link mailaliasesValueAddress String hi def link mailaliasesValueFile String hi def link mailaliasesValueCommand String hi def link mailaliasesValueInclude PreProc hi def link mailaliasesValueSep Delimiter let b:current_syntax = "mailaliases" let &cpo = s:cpo_save unlet s:cpo_save PK! vim80/syntax/eviews.vimnu[" Vim syntax file " Language: Eviews (http://www.eviews.com) " Maintainer: Vaidotas Zemlys " Last Change: 2006 Apr 30 " Filenames: *.prg " URL: http://uosis.mif.vu.lt/~zemlys/vim-syntax/eviews.vim " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,_,. syn case match " Comment syn match eComment /\'.*/ " Constant " string enclosed in double quotes syn region eString start=/"/ skip=/\\\\\|\\"/ end=/"/ " number with no fractional part or exponent syn match eNumber /\d\+/ " floating point number with integer and fractional parts and optional exponent syn match eFloat /\d\+\.\d*\([Ee][-+]\=\d\+\)\=/ " floating point number with no integer part and optional exponent syn match eFloat /\.\d\+\([Ee][-+]\=\d\+\)\=/ " floating point number with no fractional part and optional exponent syn match eFloat /\d\+[Ee][-+]\=\d\+/ " Identifier " identifier with leading letter and optional following keyword characters syn match eIdentifier /\a\k*/ " Eviews Programing Language syn keyword eProgLang @date else endif @errorcount @evpath exitloop for if @isobject next poff pon return statusline step stop @temppath then @time to @toc wend while include call subroutine endsub and or " Eviews Objects, Views and Procedures syn keyword eOVP alpha coef equation graph group link logl matrix model pool rowvector sample scalar series sspace sym system table text valmap var vector " Standard Eviews Commands syn keyword eStdCmd 3sls add addassign addinit addtext align alpha append arch archtest area arlm arma arroots auto axis bar bdstest binary block boxplot boxplotby bplabel cause ccopy cd cdfplot cellipse censored cfetch checkderivs chow clabel cleartext close coef coefcov coint comment control copy cor correl correlsq count cov create cross data datelabel dates db dbcopy dbcreate dbdelete dbopen dbpack dbrebuild dbrename dbrepair decomp define delete derivs describe displayname do draw driconvert drop dtable ec edftest endog eqs equation errbar exclude exit expand fetch fill fiml fit forecast freeze freq frml garch genr gmm grads graph group hconvert hfetch hilo hist hlabel hpf impulse jbera kdensity kerfit label laglen legend line linefit link linkto load logit logl ls makecoint makederivs makeendog makefilter makegarch makegrads makegraph makegroup makelimits makemodel makeregs makeresids makesignals makestates makestats makesystem map matrix means merge metafile ml model msg name nnfit open options ordered output override pageappend pagecontract pagecopy pagecreate pagedelete pageload pagerename pagesave pageselect pagestack pagestruct pageunstack param pcomp pie pool predict print probit program qqplot qstats range read rename representations resample reset residcor residcov resids results rls rndint rndseed rowvector run sample save scalar scale scat scatmat scenario seas seasplot series set setbpelem setcell setcolwidth setconvert setelem setfillcolor setfont setformat setheight setindent setjust setline setlines setmerge settextcolor setwidth sheet show signalgraphs smooth smpl solve solveopt sort spec spike sspace statby statefinal stategraphs stateinit stats statusline stomna store structure sur svar sym system table template testadd testbtw testby testdrop testexog testfit testlags teststat text tic toc trace tramoseats tsls unlink update updatecoefs uroot usage valmap var vars vector wald wfcreate wfopen wfsave wfselect white wls workfile write wtsls x11 x12 xy xyline xypair " Constant Identifier syn match eConstant /\!\k*/ " String Identifier syn match eStringId /%\k*/ " Command Identifier syn match eCommand /@\k*/ " Special syn match eDelimiter /[,;:]/ " Error syn region eRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError syn region eRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError syn region eRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError syn match eError /[)\]}]/ syn match eBraceError /[)}]/ contained syn match eCurlyError /[)\]]/ contained syn match eParenError /[\]}]/ contained " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link eComment Comment hi def link eConstant Identifier hi def link eStringId Identifier hi def link eCommand Type hi def link eString String hi def link eNumber Number hi def link eBoolean Boolean hi def link eFloat Float hi def link eConditional Conditional hi def link eProgLang Statement hi def link eOVP Statement hi def link eStdCmd Statement hi def link eIdentifier Normal hi def link eDelimiter Delimiter hi def link eError Error hi def link eBraceError Error hi def link eCurlyError Error hi def link eParenError Error let b:current_syntax="eviews" " vim: ts=8 sw=2 PK!tWFFvim80/syntax/perl.vimnu[" Vim syntax file " Language: Perl 5 " Maintainer: vim-perl " Homepage: http://github.com/vim-perl/vim-perl/tree/master " Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Last Change: 2017-09-12 " Contributors: Andy Lester " Hinrik Örn Sigurðsson " Lukas Mai " Nick Hibma " Sonia Heimann " Rob Hoelz " and many others. " " Please download the most recent version first, before mailing " any comments. " " The following parameters are available for tuning the " perl syntax highlighting, with defaults given: " " let perl_include_pod = 1 " unlet perl_no_scope_in_variables " unlet perl_no_extended_vars " unlet perl_string_as_statement " unlet perl_no_sync_on_sub " unlet perl_no_sync_on_global_var " let perl_sync_dist = 100 " unlet perl_fold " unlet perl_fold_blocks " unlet perl_nofold_packages " unlet perl_nofold_subs " unlet perl_fold_anonymous_subs " unlet perl_no_subprototype_error if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " POD starts with ^= and ends with ^=cut if !exists("perl_include_pod") || perl_include_pod == 1 " Include a while extra syntax file syn include @Pod syntax/pod.vim unlet b:current_syntax if exists("perl_fold") syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend fold extend syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend fold extend else syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend endif else " Use only the bare minimum of rules if exists("perl_fold") syn region perlPOD start="^=[a-z]" end="^=cut" fold else syn region perlPOD start="^=[a-z]" end="^=cut" endif endif syn cluster perlTop contains=TOP syn region perlBraces start="{" end="}" transparent extend " All keywords " syn match perlConditional "\<\%(if\|elsif\|unless\|given\|when\|default\)\>" syn match perlConditional "\\)\|\>\)" contains=perlElseIfError skipwhite skipnl skipempty syn match perlRepeat "\<\%(while\|for\%(each\)\=\|do\|until\|continue\)\>" syn match perlOperator "\<\%(defined\|undef\|eq\|ne\|[gl][et]\|cmp\|not\|and\|or\|xor\|not\|bless\|ref\|do\)\>" " for some reason, adding this as the nextgroup for perlControl fixes BEGIN " folding issues... syn match perlFakeGroup "" contained syn match perlControl "\<\%(BEGIN\|CHECK\|INIT\|END\|UNITCHECK\)\>\_s*" nextgroup=perlFakeGroup syn match perlStatementStorage "\<\%(my\|our\|local\|state\)\>" syn match perlStatementControl "\<\%(return\|last\|next\|redo\|goto\|break\)\>" syn match perlStatementScalar "\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|fc\|uc\%(first\)\=\)\>" syn match perlStatementRegexp "\<\%(pos\|quotemeta\|split\|study\)\>" syn match perlStatementNumeric "\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>" syn match perlStatementList "\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>" syn match perlStatementHash "\<\%(delete\|each\|exists\|keys\|values\)\>" syn match perlStatementIOfunc "\<\%(syscall\|dbmopen\|dbmclose\)\>" syn match perlStatementFiledesc "\<\%(binmode\|close\%(dir\)\=\|eof\|fileno\|getc\|lstat\|printf\=\|read\%(dir\|line\|pipe\)\|rewinddir\|say\|select\|stat\|tell\%(dir\)\=\|write\)\>" nextgroup=perlFiledescStatementNocomma skipwhite syn match perlStatementFiledesc "\<\%(fcntl\|flock\|ioctl\|open\%(dir\)\=\|read\|seek\%(dir\)\=\|sys\%(open\|read\|seek\|write\)\|truncate\)\>" nextgroup=perlFiledescStatementComma skipwhite syn match perlStatementVector "\" syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>" syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>" syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\|evalbytes\)\>" syn match perlStatementInclude "\<\%(require\|import\|unimport\)\>" syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autodie\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|overloading\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\=" syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>" syn match perlStatementSocket "\<\%(accept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>" syn match perlStatementIPC "\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>" syn match perlStatementNetwork "\<\%(\%(end\|[gs]et\)\%(host\|net\|proto\|serv\)ent\|get\%(\%(host\|net\)by\%(addr\|name\)\|protoby\%(name\|number\)\|servby\%(name\|port\)\)\)\>" syn match perlStatementPword "\<\%(get\%(pw\%(uid\|nam\)\|gr\%(gid\|nam\)\|login\)\)\|\%(end\|[gs]et\)\%(pw\|gr\)ent\>" syn match perlStatementTime "\<\%(gmtime\|localtime\|time\)\>" syn match perlStatementMisc "\<\%(warn\|format\|formline\|reset\|scalar\|prototype\|lock\|tied\=\|untie\)\>" syn keyword perlTodo TODO TODO: TBD TBD: FIXME FIXME: XXX XXX: NOTE NOTE: contained syn region perlStatementIndirObjWrap matchgroup=perlStatementIndirObj start="\%(\<\%(map\|grep\|sort\|printf\=\|say\|system\|exec\)\>\s*\)\@<={" end="}" transparent extend syn match perlLabel "^\s*\h\w*\s*::\@!\%(\ is *not* considered as part of the " variable - there again, too complicated and too slow. " Special variables first ($^A, ...) and ($|, $', ...) syn match perlVarPlain "$^[ACDEFHILMNOPRSTVWX]\=" syn match perlVarPlain "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]" syn match perlVarPlain "@[-+]" syn match perlVarPlain "$\%(0\|[1-9]\d*\)" " Same as above, but avoids confusion in $::foo (equivalent to $main::foo) syn match perlVarPlain "$::\@!" " These variables are not recognized within matches. syn match perlVarNotInMatches "$[|)]" " This variable is not recognized within matches delimited by m//. syn match perlVarSlash "$/" " And plain identifiers syn match perlPackageRef "[$@#%*&]\%(\%(::\|'\)\=\I\i*\%(\%(::\|'\)\I\i*\)*\)\=\%(::\|'\)\I"ms=s+1,me=e-1 contained " To not highlight packages in variables as a scope reference - i.e. in " $pack::var, pack:: is a scope, just set "perl_no_scope_in_variables" " If you don't want complex things like @{${"foo"}} to be processed, " just set the variable "perl_no_extended_vars"... if !exists("perl_no_scope_in_variables") syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref else syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref endif syn match perlVarPlain2 "%[-+]" if !exists("perl_no_extended_vars") syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlBraces syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained syn match perlArrow "->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained syn region perlArrow matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contains=perlVarSimpleMemberName contained extend syn match perlVarSimpleMemberName "\I\i*" contained syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend syn match perlPackageConst "__PACKAGE__" nextgroup=perlMethod,perlPostDeref syn match perlMethod "->\$*\I\i*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref syn match perlPostDeref "->\%($#\|[$@%&*]\)\*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref syn region perlPostDeref start="->\%($#\|[$@%&*]\)\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref syn region perlPostDeref matchgroup=perlPostDeref start="->\%($#\|[$@%&*]\){" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref endif " File Descriptors syn match perlFiledescRead "<\h\w*>" syn match perlFiledescStatementComma "(\=\s*\<\u\w*\>\s*,"me=e-1 transparent contained contains=perlFiledescStatement syn match perlFiledescStatementNocomma "(\=\s*\<\u\w*\>\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement syn match perlFiledescStatement "\<\u\w*\>" contained " Special characters in strings and matches syn match perlSpecialString "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend syn match perlSpecialStringU2 "\\." extend contained contains=NONE syn match perlSpecialStringU "\\\\" contained syn match perlSpecialMatch "\\[1-9]" contained extend syn match perlSpecialMatch "\\g\%(\d\+\|{\%(-\=\d\+\|\h\w*\)}\)" contained syn match perlSpecialMatch "\\k\%(<\h\w*>\|'\h\w*'\)" contained syn match perlSpecialMatch "{\d\+\%(,\%(\d\+\)\=\)\=}" contained syn match perlSpecialMatch "\[[]-]\=[^\[\]]*[]-]\=\]" contained extend syn match perlSpecialMatch "[+*()?.]" contained syn match perlSpecialMatch "(?[#:=!]" contained syn match perlSpecialMatch "(?[impsx]*\%(-[imsx]\+\)\=)" contained syn match perlSpecialMatch "(?\%([-+]\=\d\+\|R\))" contained syn match perlSpecialMatch "(?\%(&\|P[>=]\)\h\w*)" contained syn match perlSpecialMatch "(\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\=\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\=\|ACCEPT\))" contained " Possible errors " " Highlight lines with only whitespace (only in blank delimited here documents) as errors syn match perlNotEmptyLine "^\s\+$" contained " Highlight "} else if (...) {", it should be "} else { if (...) { " or "} elsif (...) {" syn match perlElseIfError "else\_s*if" containedin=perlConditional syn keyword perlElseIfError elseif containedin=perlConditional " Variable interpolation " " These items are interpolated inside "" strings and similar constructs. syn cluster perlInterpDQ contains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock " These items are interpolated inside '' strings and similar constructs. syn cluster perlInterpSQ contains=perlSpecialStringU,perlSpecialStringU2 " These items are interpolated inside m// matches and s/// substitutions. syn cluster perlInterpSlash contains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock " These items are interpolated inside m## matches and s### substitutions. syn cluster perlInterpMatch contains=@perlInterpSlash,perlVarSlash " Shell commands syn region perlShellCommand matchgroup=perlMatchStartEnd start="`" end="`" contains=@perlInterpDQ keepend " Constants " " Numbers syn match perlNumber "\<\%(0\%(x\x[[:xdigit:]_]*\|b[01][01_]*\|\o[0-7_]*\|\)\|[1-9][[:digit:]_]*\)\>" syn match perlFloat "\<\d[[:digit:]_]*[eE][\-+]\=\d\+" syn match perlFloat "\<\d[[:digit:]_]*\.[[:digit:]_]*\%([eE][\-+]\=\d\+\)\=" syn match perlFloat "\.[[:digit:]][[:digit:]_]*\%([eE][\-+]\=\d\+\)\=" syn match perlString "\<\%(v\d\+\%(\.\d\+\)*\|\d\+\%(\.\d\+\)\{2,}\)\>" contains=perlVStringV syn match perlVStringV "\+ extend contained contains=perlAnglesSQ,@perlInterpSQ keepend syn region perlParensDQ start=+(+ end=+)+ extend contained contains=perlParensDQ,@perlInterpDQ keepend syn region perlBracketsDQ start=+\[+ end=+\]+ extend contained contains=perlBracketsDQ,@perlInterpDQ keepend syn region perlBracesDQ start=+{+ end=+}+ extend contained contains=perlBracesDQ,@perlInterpDQ keepend syn region perlAnglesDQ start=+<+ end=+>+ extend contained contains=perlAnglesDQ,@perlInterpDQ keepend " Simple version of searches and matches syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]'([{<#]\)+ end=+\z1[msixpodualgcn]*+ contains=@perlInterpMatch keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@\)\@[msixpodualgcn]*+ contains=@perlInterpMatch,perlAnglesDQ keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\s*\z([^[:space:]'([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@[msixpodualgcern]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend extend syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[msixpodualgcern]*+ contained contains=@perlInterpSQ keepend extend " Translations " perlMatch is the first part, perlTranslation* is the second, translator part. syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@+ contains=@perlInterpSQ,perlAnglesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@[cdsr]*+ contains=perlAnglesSQ contained " Strings and q, qq, qw and qr expressions syn region perlStringUnexpanded matchgroup=perlStringStartEnd start="'" end="'" contains=@perlInterpSQ keepend extend syn region perlString matchgroup=perlStringStartEnd start=+"+ end=+"+ contains=@perlInterpDQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpSQ,perlAnglesSQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpDQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpDQ,perlAnglesDQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpSQ,perlAnglesSQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]#([{<'/]\)+ end=+\z1[imosxdual]*+ contains=@perlInterpMatch keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@ and qr[] which allows for comments and extra whitespace in the pattern syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@[imosxdual]*+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\zs\_[^)]\+" contained syn match perlSubPrototype +(\_[^)]*)\_s*+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError endif syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype,perlSignature,perlSubAttributes,perlComment syn match perlFunction +\\_s*+ nextgroup=perlSubName " The => operator forces a bareword to the left of it to be interpreted as " a string syn match perlString "\I\@\)\@=" " All other # are comments, except ^#! syn match perlComment "#.*" contains=perlTodo,@Spell extend syn match perlSharpBang "^#!.*" " Formats syn region perlFormat matchgroup=perlStatementIOFunc start="^\s*\~]\+\%(\.\.\.\)\=" contained syn match perlFormatField "[@^]#[#.]*" contained syn match perlFormatField "@\*" contained syn match perlFormatField "@[^A-Za-z_|<>~#*]"me=e-1 contained syn match perlFormatField "@$" contained " __END__ and __DATA__ clauses if exists("perl_fold") syntax region perlDATA start="^__DATA__$" skip="." end="." contains=@perlDATA fold syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA fold else syntax region perlDATA start="^__DATA__$" skip="." end="." contains=@perlDATA syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA endif " " Folding if exists("perl_fold") " Note: this bit must come before the actual highlighting of the "package" " keyword, otherwise this will screw up Pod lines that match /^package/ if !exists("perl_nofold_packages") syn region perlPackageFold start="^package \S\+;\s*\%(#.*\)\=$" end="^1;\=\s*\%(#.*\)\=$" end="\n\+package"me=s-1 transparent fold keepend endif if !exists("perl_nofold_subs") if get(g:, "perl_fold_anonymous_subs", 0) syn region perlSubFold start="\[^{]*{" end="}" transparent fold keepend extend syn region perlSubFold start="\<\%(BEGIN\|END\|CHECK\|INIT\)\>\s*{" end="}" transparent fold keepend else syn region perlSubFold start="^\z(\s*\)\.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend syn region perlSubFold start="^\z(\s*\)\<\%(BEGIN\|END\|CHECK\|INIT\|UNITCHECK\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend endif endif if exists("perl_fold_blocks") syn region perlBlockFold start="^\z(\s*\)\%(if\|elsif\|unless\|for\|while\|until\|given\)\s*(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" start="^\z(\s*\)for\%(each\)\=\s*\%(\%(my\|our\)\=\s*\S\+\s*\)\=(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend syn region perlBlockFold start="^\z(\s*\)\%(do\|else\)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*while" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend endif setlocal foldmethod=syntax syn sync fromstart else " fromstart above seems to set minlines even if perl_fold is not set. syn sync minlines=0 endif " NOTE: If you're linking new highlight groups to perlString, please also put " them into b:match_skip in ftplugin/perl.vim. " The default highlighting. hi def link perlSharpBang PreProc hi def link perlControl PreProc hi def link perlInclude Include hi def link perlSpecial Special hi def link perlString String hi def link perlCharacter Character hi def link perlNumber Number hi def link perlFloat Float hi def link perlType Type hi def link perlIdentifier Identifier hi def link perlLabel Label hi def link perlStatement Statement hi def link perlConditional Conditional hi def link perlRepeat Repeat hi def link perlOperator Operator hi def link perlFunction Keyword hi def link perlSubName Function hi def link perlSubPrototype Type hi def link perlSignature Type hi def link perlSubAttributes PreProc hi def link perlSubAttributesCont perlSubAttributes hi def link perlComment Comment hi def link perlTodo Todo if exists("perl_string_as_statement") hi def link perlStringStartEnd perlStatement else hi def link perlStringStartEnd perlString endif hi def link perlVStringV perlStringStartEnd hi def link perlList perlStatement hi def link perlMisc perlStatement hi def link perlVarPlain perlIdentifier hi def link perlVarPlain2 perlIdentifier hi def link perlArrow perlIdentifier hi def link perlFiledescRead perlIdentifier hi def link perlFiledescStatement perlIdentifier hi def link perlVarSimpleMember perlIdentifier hi def link perlVarSimpleMemberName perlString hi def link perlVarNotInMatches perlIdentifier hi def link perlVarSlash perlIdentifier hi def link perlQQ perlString hi def link perlHereDoc perlString hi def link perlStringUnexpanded perlString hi def link perlSubstitutionSQ perlString hi def link perlSubstitutionGQQ perlString hi def link perlTranslationGQ perlString hi def link perlMatch perlString hi def link perlMatchStartEnd perlStatement hi def link perlFormatName perlIdentifier hi def link perlFormatField perlString hi def link perlPackageDecl perlType hi def link perlStorageClass perlType hi def link perlPackageRef perlType hi def link perlStatementPackage perlStatement hi def link perlStatementStorage perlStatement hi def link perlStatementControl perlStatement hi def link perlStatementScalar perlStatement hi def link perlStatementRegexp perlStatement hi def link perlStatementNumeric perlStatement hi def link perlStatementList perlStatement hi def link perlStatementHash perlStatement hi def link perlStatementIOfunc perlStatement hi def link perlStatementFiledesc perlStatement hi def link perlStatementVector perlStatement hi def link perlStatementFiles perlStatement hi def link perlStatementFlow perlStatement hi def link perlStatementInclude perlStatement hi def link perlStatementProc perlStatement hi def link perlStatementSocket perlStatement hi def link perlStatementIPC perlStatement hi def link perlStatementNetwork perlStatement hi def link perlStatementPword perlStatement hi def link perlStatementTime perlStatement hi def link perlStatementMisc perlStatement hi def link perlStatementIndirObj perlStatement hi def link perlFunctionName perlIdentifier hi def link perlMethod perlIdentifier hi def link perlPostDeref perlIdentifier hi def link perlFunctionPRef perlType if !get(g:, 'perl_include_pod', 1) hi def link perlPOD perlComment endif hi def link perlShellCommand perlString hi def link perlSpecialAscii perlSpecial hi def link perlSpecialDollar perlSpecial hi def link perlSpecialString perlSpecial hi def link perlSpecialStringU perlSpecial hi def link perlSpecialMatch perlSpecial hi def link perlDATA perlComment " NOTE: Due to a bug in Vim (or more likely, a misunderstanding on my part), " I had to remove the transparent property from the following regions " in order to get them to highlight correctly. Feel free to remove " these and reinstate the transparent property if you know how. hi def link perlParensSQ perlString hi def link perlBracketsSQ perlString hi def link perlBracesSQ perlString hi def link perlAnglesSQ perlString hi def link perlParensDQ perlString hi def link perlBracketsDQ perlString hi def link perlBracesDQ perlString hi def link perlAnglesDQ perlString hi def link perlSpecialStringU2 perlString " Possible errors hi def link perlNotEmptyLine Error hi def link perlElseIfError Error hi def link perlSubPrototypeError Error hi def link perlSubError Error " Syncing to speed up processing " if !exists("perl_no_sync_on_sub") syn sync match perlSync grouphere NONE "^\s*\" syn sync match perlSync grouphere NONE "^}" endif if !exists("perl_no_sync_on_global_var") syn sync match perlSync grouphere NONE "^$\I[[:alnum:]_:]+\s*=\s*{" syn sync match perlSync grouphere NONE "^[@%]\I[[:alnum:]_:]+\s*=\s*(" endif if exists("perl_sync_dist") execute "syn sync maxlines=" . perl_sync_dist else syn sync maxlines=100 endif syn sync match perlSyncPOD grouphere perlPOD "^=pod" syn sync match perlSyncPOD grouphere perlPOD "^=head" syn sync match perlSyncPOD grouphere perlPOD "^=item" syn sync match perlSyncPOD grouphere NONE "^=cut" let b:current_syntax = "perl" let &cpo = s:cpo_save unlet s:cpo_save " XXX Change to sts=4:sw=4 " vim:ts=8:sts=2:sw=2:expandtab:ft=vim PK!mvim80/syntax/conf.vimnu[" Vim syntax file " Language: generic configure file " Maintainer: Bram Moolenaar " Last Change: 2005 Jun 20 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") finish endif syn keyword confTodo contained TODO FIXME XXX " Avoid matching "text#text", used in /etc/disktab and /etc/gettytab syn match confComment "^#.*" contains=confTodo syn match confComment "\s#.*"ms=s+1 contains=confTodo syn region confString start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline syn region confString start=+'+ skip=+\\\\\|\\'+ end=+'+ oneline " Define the default highlighting. " Only used when an item doesn't have highlighting yet hi def link confComment Comment hi def link confTodo Todo hi def link confString String let b:current_syntax = "conf" " vim: ts=8 sw=2 PK!vim80/syntax/tssop.vimnu[" Vim syntax file " Language: TSS (Thermal Synthesizer System) Optics " Maintainer: Adrian Nagle, anagle@ball.com " Last Change: 2003 May 11 " Filenames: *.tssop " URL: http://www.naglenet.org/vim/syntax/tssop.vim " MAIN URL: http://www.naglenet.org/vim/ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Ignore case syn case ignore " " " Begin syntax definitions for tss optics file. " " Define keywords for TSS syn keyword tssopParam ir_eps ir_trans ir_spec ir_tspec ir_refract syn keyword tssopParam sol_eps sol_trans sol_spec sol_tspec sol_refract syn keyword tssopParam color "syn keyword tssopProp property syn keyword tssopArgs white red blue green yellow orange violet pink syn keyword tssopArgs turquoise grey black " Define matches for TSS syn match tssopComment /comment \+= \+".*"/ contains=tssopParam,tssopCommentString syn match tssopCommentString /".*"/ contained syn match tssopProp "property " syn match tssopProp "edit/optic " syn match tssopPropName "^property \S\+" contains=tssopProp syn match tssopPropName "^edit/optic \S\+$" contains=tssopProp syn match tssopInteger "-\=\<[0-9]*\>" syn match tssopFloat "-\=\<[0-9]*\.[0-9]*" syn match tssopScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>" " Define the default highlighting " Only when an item doesn't have highlighting yet hi def link tssopParam Statement hi def link tssopProp Identifier hi def link tssopArgs Special hi def link tssopComment Statement hi def link tssopCommentString Comment hi def link tssopPropName Typedef hi def link tssopInteger Number hi def link tssopFloat Float hi def link tssopScientific Float let b:current_syntax = "tssop" " vim: ts=8 sw=2 PK!KKvim80/syntax/initex.vimnu[" Vim syntax file " Language: TeX (core definition) " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " This follows the grouping (sort of) found at " http: //www.tug.org/utilities/plain/cseq.html#top-fam syn keyword initexTodo TODO FIXME XXX NOTE syn match initexComment display contains=initexTodo \ '\\\@' syn cluster initexBox \ contains=initexBoxCommand,initexBoxInternalQuantity, \ initexBoxParameterDimen,initexBoxParameterInteger, \ initexBoxParameterToken syn cluster initexCharacter \ contains=initexCharacterCommand,initexCharacterInternalQuantity, \ initexCharacterParameterInteger syn cluster initexDebugging \ contains=initexDebuggingCommand,initexDebuggingParameterInteger, \ initexDebuggingParameterToken syn cluster initexFileIO \ contains=initexFileIOCommand,initexFileIOInternalQuantity, \ initexFileIOParameterToken syn cluster initexFonts \ contains=initexFontsCommand,initexFontsInternalQuantity syn cluster initexGlue \ contains=initexGlueCommand,initexGlueDerivedCommand syn cluster initexHyphenation \ contains=initexHyphenationCommand,initexHyphenationDerivedCommand, \ initexHyphenationInternalQuantity,initexHyphenationParameterInteger syn cluster initexInserts \ contains=initexInsertsCommand,initexInsertsParameterDimen, \ initexInsertsParameterGlue,initexInsertsParameterInteger syn cluster initexJob \ contains=initexJobCommand,initexJobInternalQuantity, \ initexJobParameterInteger syn cluster initexKern \ contains=initexKernCommand,initexKernInternalQuantity syn cluster initexLogic \ contains=initexLogicCommand syn cluster initexMacro \ contains=initexMacroCommand,initexMacroDerivedCommand, \ initexMacroParameterInteger syn cluster initexMarks \ contains=initexMarksCommand syn cluster initexMath \ contains=initexMathCommand,initexMathDerivedCommand, \ initexMathInternalQuantity,initexMathParameterDimen, \ initexMathParameterGlue,initexMathParameterInteger, \ initexMathParameterMuglue,initexMathParameterToken syn cluster initexPage \ contains=initexPageInternalQuantity,initexPageParameterDimen, \ initexPageParameterGlue syn cluster initexParagraph \ contains=initexParagraphCommand,initexParagraphInternalQuantity, \ initexParagraphParameterDimen,initexParagraphParameterGlue, \ initexParagraphParameterInteger,initexParagraphParameterToken syn cluster initexPenalties \ contains=initexPenaltiesCommand,initexPenaltiesInternalQuantity, \ initexPenaltiesParameterInteger syn cluster initexRegisters \ contains=initexRegistersCommand,initexRegistersInternalQuantity syn cluster initexTables \ contains=initexTablesCommand,initexTablesParameterGlue, \ initexTablesParameterToken syn cluster initexCommand \ contains=initexBoxCommand,initexCharacterCommand, \ initexDebuggingCommand,initexFileIOCommand, \ initexFontsCommand,initexGlueCommand, \ initexHyphenationCommand,initexInsertsCommand, \ initexJobCommand,initexKernCommand,initexLogicCommand, \ initexMacroCommand,initexMarksCommand,initexMathCommand, \ initexParagraphCommand,initexPenaltiesCommand,initexRegistersCommand, \ initexTablesCommand syn match initexBoxCommand display contains=@NoSpell \ '\\\%([hv]\=box\|[cx]\=leaders\|copy\|[hv]rule\|lastbox\|setbox\|un[hv]\%(box\|copy\)\|vtop\)\>' syn match initexCharacterCommand display contains=@NoSpell \ '\\\%([] ]\|\%(^^M\|accent\|char\|\%(lower\|upper\)case\|number\|romannumeral\|string\)\>\)' syn match initexDebuggingCommand display contains=@NoSpell \ '\\\%(\%(batch\|\%(non\|error\)stop\|scroll\)mode\|\%(err\)\=message\|meaning\|show\%(box\%(breadth\|depth\)\=\|lists\|the\)\)\>' syn match initexFileIOCommand display contains=@NoSpell \ '\\\%(\%(close\|open\)\%(in\|out\)\|endinput\|immediate\|input\|read\|shipout\|special\|write\)\>' syn match initexFontsCommand display contains=@NoSpell \ '\\\%(/\|fontname\)\>' syn match initexGlueCommand display contains=@NoSpell \ '\\\%([hv]\|un\)skip\>' syn match initexHyphenationCommand display contains=@NoSpell \ '\\\%(discretionary\|hyphenation\|patterns\|setlanguage\)\>' syn match initexInsertsCommand display contains=@NoSpell \ '\\\%(insert\|split\%(bot\|first\)mark\|vsplit\)\>' syn match initexJobCommand display contains=@NoSpell \ '\\\%(dump\|end\|jobname\)\>' syn match initexKernCommand display contains=@NoSpell \ '\\\%(kern\|lower\|move\%(left\|right\)\|raise\|unkern\)\>' syn match initexLogicCommand display contains=@NoSpell \ '\\\%(else\|fi\|if[a-zA-Z@]\+\|or\)\>' " \ '\\\%(else\|fi\|if\%(case\|cat\|dim\|eof\|false\|[hv]box\|[hmv]mode\|inner\|num\|odd\|true\|void\|x\)\=\|or\)\>' syn match initexMacroCommand display contains=@NoSpell \ '\\\%(after\%(assignment\|group\)\|\%(begin\|end\)group\|\%(end\)\=csname\|e\=def\|expandafter\|futurelet\|global\|let\|long\|noexpand\|outer\|relax\|the\)\>' syn match initexMarksCommand display contains=@NoSpell \ '\\\%(bot\|first\|top\)\=mark\>' syn match initexMathCommand display contains=@NoSpell \ '\\\%(abovewithdelims\|delimiter\|display\%(limits\|style\)\|l\=eqno\|left\|\%(no\)\=limits\|math\%(accent\|bin\|char\|choice\|close\|code\|inner\|op\|open\|ord\|punct\|rel\)\|mkern\|mskip\|muskipdef\|nonscript\|\%(over\|under\)line\|radical\|right\|\%(\%(script\)\{1,2}\|text\)style\|vcenter\)\>' syn match initexParagraphCommand display contains=@NoSpell \ '\\\%(ignorespaces\|indent\|no\%(boundary\|indent\)\|par\|vadjust\)\>' syn match initexPenaltiesCommand display contains=@NoSpell \ '\\\%(un\)\=penalty\>' syn match initexRegistersCommand display contains=@NoSpell \ '\\\%(advance\|\%(count\|dimen\|skip\|toks\)def\|divide\|multiply\)\>' syn match initexTablesCommand display contains=@NoSpell \ '\\\%(cr\|crcr\|[hv]align\|noalign\|omit\|span\)\>' syn cluster initexDerivedCommand \ contains=initexGlueDerivedCommand,initexHyphenationDerivedCommand, \ initexMacroDerivedCommand,initexMathDerivedCommand syn match initexGlueDerivedCommand display contains=@NoSpell \ '\\\%([hv]fil\%(l\|neg\)\=\|[hv]ss\)\>' syn match initexHyphenationDerivedCommand display contains=@NoSpell \ '\\-' syn match initexMacroDerivedCommand display contains=@NoSpell \ '\\[gx]def\>' syn match initexMathDerivedCommand display contains=@NoSpell \ '\\\%(above\|atop\%(withdelims\)\=\|mathchardef\|over\|overwithdelims\)\>' syn cluster initexInternalQuantity \ contains=initexBoxInternalQuantity,initexCharacterInternalQuantity, \ initexFileIOInternalQuantity,initexFontsInternalQuantity, \ initexHyphenationInternalQuantity,initexJobInternalQuantity, \ initexKernInternalQuantity,initexMathInternalQuantity, \ initexPageInternalQuantity,initexParagraphInternalQuantity, \ initexPenaltiesInternalQuantity,initexRegistersInternalQuantity syn match initexBoxInternalQuantity display contains=@NoSpell \ '\\\%(badness\|dp\|ht\|prevdepth\|wd\)\>' syn match initexCharacterInternalQuantity display contains=@NoSpell \ '\\\%(catcode\|chardef\|\%([ul]c\|sf\)code\)\>' syn match initexFileIOInternalQuantity display contains=@NoSpell \ '\\inputlineno\>' syn match initexFontsInternalQuantity display contains=@NoSpell \ '\\\%(font\%(dimen\)\=\|nullfont\)\>' syn match initexHyphenationInternalQuantity display contains=@NoSpell \ '\\hyphenchar\>' syn match initexJobInternalQuantity display contains=@NoSpell \ '\\deadcycles\>' syn match initexKernInternalQuantity display contains=@NoSpell \ '\\lastkern\>' syn match initexMathInternalQuantity display contains=@NoSpell \ '\\\%(delcode\|mathcode\|muskip\|\%(\%(script\)\{1,2}\|text\)font\|skewchar\)\>' syn match initexPageInternalQuantity display contains=@NoSpell \ '\\page\%(depth\|fil\{1,3}stretch\|goal\|shrink\|stretch\|total\)\>' syn match initexParagraphInternalQuantity display contains=@NoSpell \ '\\\%(prevgraf\|spacefactor\)\>' syn match initexPenaltiesInternalQuantity display contains=@NoSpell \ '\\lastpenalty\>' syn match initexRegistersInternalQuantity display contains=@NoSpell \ '\\\%(count\|dimen\|skip\|toks\)\d\+\>' syn cluster initexParameterDimen \ contains=initexBoxParameterDimen,initexInsertsParameterDimen, \ initexMathParameterDimen,initexPageParameterDimen, \ initexParagraphParameterDimen syn match initexBoxParameterDimen display contains=@NoSpell \ '\\\%(boxmaxdepth\|[hv]fuzz\|overfullrule\)\>' syn match initexInsertsParameterDimen display contains=@NoSpell \ '\\splitmaxdepth\>' syn match initexMathParameterDimen display contains=@NoSpell \ '\\\%(delimitershortfall\|display\%(indent\|width\)\|mathsurround\|nulldelimiterspace\|predisplaysize\|scriptspace\)\>' syn match initexPageParameterDimen display contains=@NoSpell \ '\\\%([hv]offset\|maxdepth\|vsize\)\>' syn match initexParagraphParameterDimen display contains=@NoSpell \ '\\\%(emergencystretch\|\%(hang\|par\)indent\|hsize\|lineskiplimit\)\>' syn cluster initexParameterGlue \ contains=initexInsertsParameterGlue,initexMathParameterGlue, \ initexPageParameterGlue,initexParagraphParameterGlue, \ initexTablesParameterGlue syn match initexInsertsParameterGlue display contains=@NoSpell \ '\\splittopskip\>' syn match initexMathParameterGlue display contains=@NoSpell \ '\\\%(above\|below\)display\%(short\)\=skip\>' syn match initexPageParameterGlue display contains=@NoSpell \ '\\topskip\>' syn match initexParagraphParameterGlue display contains=@NoSpell \ '\\\%(baseline\|left\|line\|par\%(fill\)\=\|right\|x\=space\)skip\>' syn match initexTablesParameterGlue display contains=@NoSpell \ '\\tabskip\>' syn cluster initexParameterInteger \ contains=initexBoxParameterInteger,initexCharacterParameterInteger, \ initexDebuggingParameterInteger,initexHyphenationParameterInteger, \ initexInsertsParameterInteger,initexJobParameterInteger, \ initexMacroParameterInteger,initexMathParameterInteger, \ initexParagraphParameterInteger,initexPenaltiesParameterInteger, syn match initexBoxParameterInteger display contains=@NoSpell \ '\\[hv]badness\>' syn match initexCharacterParameterInteger display contains=@NoSpell \ '\\\%(\%(endline\|escape\|newline\)char\)\>' syn match initexDebuggingParameterInteger display contains=@NoSpell \ '\\\%(errorcontextlines\|pausing\|tracing\%(commands\|lostchars\|macros\|online\|output\|pages\|paragraphs\|restores|stats\)\)\>' syn match initexHyphenationParameterInteger display contains=@NoSpell \ '\\\%(defaulthyphenchar\|language\|\%(left\|right\)hyphenmin\|uchyph\)\>' syn match initexInsertsParameterInteger display contains=@NoSpell \ '\\\%(holdinginserts\)\>' syn match initexJobParameterInteger display contains=@NoSpell \ '\\\%(day\|mag\|maxdeadcycles\|month\|time\|year\)\>' syn match initexMacroParameterInteger display contains=@NoSpell \ '\\globaldefs\>' syn match initexMathParameterInteger display contains=@NoSpell \ '\\\%(binoppenalty\|defaultskewchar\|delimiterfactor\|displaywidowpenalty\|fam\|\%(post\|pre\)displaypenalty\|relpenalty\)\>' syn match initexParagraphParameterInteger display contains=@NoSpell \ '\\\%(\%(adj\|\%(double\|final\)hyphen\)demerits\|looseness\|\%(pre\)\=tolerance\)\>' syn match initexPenaltiesParameterInteger display contains=@NoSpell \ '\\\%(broken\|club\|exhyphen\|floating\|hyphen\|interline\|line\|output\|widow\)penalty\>' syn cluster initexParameterMuglue \ contains=initexMathParameterMuglue syn match initexMathParameterMuglue display contains=@NoSpell \ '\\\%(med\|thick\|thin\)muskip\>' syn cluster initexParameterDimen \ contains=initexBoxParameterToken,initexDebuggingParameterToken, \ initexFileIOParameterToken,initexMathParameterToken, \ initexParagraphParameterToken,initexTablesParameterToken syn match initexBoxParameterToken display contains=@NoSpell \ '\\every[hv]box\>' syn match initexDebuggingParameterToken display contains=@NoSpell \ '\\errhelp\>' syn match initexFileIOParameterToken display contains=@NoSpell \ '\\output\>' syn match initexMathParameterToken display contains=@NoSpell \ '\\every\%(display\|math\)\>' syn match initexParagraphParameterToken display contains=@NoSpell \ '\\everypar\>' syn match initexTablesParameterToken display contains=@NoSpell \ '\\everycr\>' hi def link initexCharacter Character hi def link initexNumber Number hi def link initexIdentifier Identifier hi def link initexStatement Statement hi def link initexConditional Conditional hi def link initexPreProc PreProc hi def link initexMacro Macro hi def link initexType Type hi def link initexDebug Debug hi def link initexTodo Todo hi def link initexComment Comment hi def link initexDimension initexNumber hi def link initexCommand initexStatement hi def link initexBoxCommand initexCommand hi def link initexCharacterCommand initexCharacter hi def link initexDebuggingCommand initexDebug hi def link initexFileIOCommand initexCommand hi def link initexFontsCommand initexType hi def link initexGlueCommand initexCommand hi def link initexHyphenationCommand initexCommand hi def link initexInsertsCommand initexCommand hi def link initexJobCommand initexPreProc hi def link initexKernCommand initexCommand hi def link initexLogicCommand initexConditional hi def link initexMacroCommand initexMacro hi def link initexMarksCommand initexCommand hi def link initexMathCommand initexCommand hi def link initexParagraphCommand initexCommand hi def link initexPenaltiesCommand initexCommand hi def link initexRegistersCommand initexCommand hi def link initexTablesCommand initexCommand hi def link initexDerivedCommand initexStatement hi def link initexGlueDerivedCommand initexDerivedCommand hi def link initexHyphenationDerivedCommand initexDerivedCommand hi def link initexMacroDerivedCommand initexDerivedCommand hi def link initexMathDerivedCommand initexDerivedCommand hi def link initexInternalQuantity initexIdentifier hi def link initexBoxInternalQuantity initexInternalQuantity hi def link initexCharacterInternalQuantity initexInternalQuantity hi def link initexFileIOInternalQuantity initexInternalQuantity hi def link initexFontsInternalQuantity initexInternalQuantity hi def link initexHyphenationInternalQuantity initexInternalQuantity hi def link initexJobInternalQuantity initexInternalQuantity hi def link initexKernInternalQuantity initexInternalQuantity hi def link initexMathInternalQuantity initexInternalQuantity hi def link initexPageInternalQuantity initexInternalQuantity hi def link initexParagraphInternalQuantity initexInternalQuantity hi def link initexPenaltiesInternalQuantity initexInternalQuantity hi def link initexRegistersInternalQuantity initexInternalQuantity hi def link initexParameterDimen initexNumber hi def link initexBoxParameterDimen initexParameterDimen hi def link initexInsertsParameterDimen initexParameterDimen hi def link initexMathParameterDimen initexParameterDimen hi def link initexPageParameterDimen initexParameterDimen hi def link initexParagraphParameterDimen initexParameterDimen hi def link initexParameterGlue initexNumber hi def link initexInsertsParameterGlue initexParameterGlue hi def link initexMathParameterGlue initexParameterGlue hi def link initexPageParameterGlue initexParameterGlue hi def link initexParagraphParameterGlue initexParameterGlue hi def link initexTablesParameterGlue initexParameterGlue hi def link initexParameterInteger initexNumber hi def link initexBoxParameterInteger initexParameterInteger hi def link initexCharacterParameterInteger initexParameterInteger hi def link initexDebuggingParameterInteger initexParameterInteger hi def link initexHyphenationParameterInteger initexParameterInteger hi def link initexInsertsParameterInteger initexParameterInteger hi def link initexJobParameterInteger initexParameterInteger hi def link initexMacroParameterInteger initexParameterInteger hi def link initexMathParameterInteger initexParameterInteger hi def link initexParagraphParameterInteger initexParameterInteger hi def link initexPenaltiesParameterInteger initexParameterInteger hi def link initexParameterMuglue initexNumber hi def link initexMathParameterMuglue initexParameterMuglue hi def link initexParameterToken initexIdentifier hi def link initexBoxParameterToken initexParameterToken hi def link initexDebuggingParameterToken initexParameterToken hi def link initexFileIOParameterToken initexParameterToken hi def link initexMathParameterToken initexParameterToken hi def link initexParagraphParameterToken initexParameterToken hi def link initexTablesParameterToken initexParameterToken let b:current_syntax = "initex" let &cpo = s:cpo_save unlet s:cpo_save PK!h<''vim80/syntax/sas.vimnu[" Vim syntax file " Language: SAS " Maintainer: Zhen-Huan Hu " Original Maintainer: James Kidd " Version: 3.0.0 " Last Change: Aug 26, 2017 " " 2017 Mar 7 " " Upgrade version number to 3.0. Improvements include: " - Improve sync speed " - Largely enhance precision " - Update keywords in the latest SAS (as of Mar 2017) " - Add syntaxes for date/time constants " - Add syntax for data lines " - Add (back) syntax for TODO in comments " " 2017 Feb 9 " " Add syntax folding " " 2016 Oct 10 " " Add highlighting for functions " " 2016 Sep 14 " " Change the implementation of syntaxing " macro function names so that macro parameters same " as SAS keywords won't be highlighted " (Thank Joug Raw for the suggestion) " Add section highlighting: " - Use /** and **/ to define a section " - It functions the same as a comment but " with different highlighting " " 2016 Jun 14 " " Major changes so upgrade version number to 2.0 " Overhaul the entire script (again). Improvements include: " - Higher precision " - Faster synchronization " - Separate color for control statements " - Highlight hash and java objects " - Highlight macro variables in double quoted strings " - Update all syntaxes based on SAS 9.4 " - Add complete SAS/GRAPH and SAS/STAT procedure syntaxes " - Add Proc TEMPLATE and GTL syntaxes " - Add complete DS2 syntaxes " - Add basic IML syntaxes " - Many other improvements and bug fixes " Drop support for VIM version < 600 if version < 600 syntax clear elseif exists('b:current_syntax') finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore " Basic SAS syntaxes syn keyword sasOperator and eq ge gt in le lt ne not of or syn keyword sasReserved _all_ _automatic_ _char_ _character_ _data_ _infile_ _last_ _n_ _name_ _null_ _num_ _numeric_ _temporary_ _user_ _webout_ " Strings syn region sasString start=+'+ skip=+''+ end=+'+ contains=@Spell syn region sasString start=+"+ skip=+""+ end=+"+ contains=sasMacroVariable,@Spell " Constants syn match sasNumber /\v<\d+%(\.\d+)=%(>|e[\-+]=\d+>)/ display syn match sasDateTime /\v(['"])\d{2}%(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d{2}%(\d{2})=:\d{2}:\d{2}%(:\d{2})=%(am|pm)\1dt>/ display syn match sasDateTime /\v(['"])\d{2}%(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d{2}%(\d{2})=\1d>/ display syn match sasDateTime /\v(['"])\d{2}:\d{2}%(:\d{2})=%(am|pm)\1t>/ display " Comments syn keyword sasTodo todo tbd fixme contained syn region sasComment start='/\*' end='\*/' contains=sasTodo syn region sasComment start='\v%(^|;)\s*\zs\%=\*' end=';'me=s-1 contains=sasTodo syn region sasSectLbl matchgroup=sasSectLblEnds start='/\*\*\s*' end='\s*\*\*/' concealends " Macros syn match sasMacroVariable '\v\&+\w+%(\.\w+)=' display syn match sasMacroReserved '\v\%%(abort|by|copy|display|do|else|end|global|goto|if|include|input|let|list|local|macro|mend|put|return|run|symdel|syscall|sysexec|syslput|sysrput|then|to|until|window|while)>' display syn region sasMacroFunction matchgroup=sasMacroFunctionName start='\v\%\w+\ze\(' end=')'he=s-1 contains=@sasBasicSyntax,sasMacroFunction syn region sasMacroFunction matchgroup=sasMacroFunctionName start='\v\%q=sysfunc\ze\(' end=')'he=s-1 contains=@sasBasicSyntax,sasMacroFunction,sasDataStepFunction " Syntax cluster for basic SAS syntaxes syn cluster sasBasicSyntax contains=sasOperator,sasReserved,sasNumber,sasDateTime,sasString,sasComment,sasMacroReserved,sasMacroFunction,sasMacroVariable,sasSectLbl " Formats syn match sasFormat '\v\$\w+\.' display contained syn match sasFormat '\v<\w+\.%(\d+>)=' display contained syn region sasFormatContext start='.' end=';'me=s-1 contained contains=@sasBasicSyntax,sasFormat " Define global statements that can be accessed out of data step or procedures syn keyword sasGlobalStatementKeyword catname dm endsas filename footnote footnote1 footnote2 footnote3 footnote4 footnote5 footnote6 footnote7 footnote8 footnote9 footnote10 missing libname lock ods options page quit resetline run sasfile skip sysecho title title1 title2 title3 title4 title5 title6 title7 title8 title9 title10 contained syn keyword sasGlobalStatementODSKeyword chtml csvall docbook document escapechar epub epub2 epub3 exclude excel graphics html html3 html5 htmlcss imode listing markup output package path pcl pdf preferences phtml powerpoint printer proclabel proctitle ps results rtf select show tagsets trace usegopt verify wml contained syn match sasGlobalStatement '\v%(^|;)\s*\zs\h\w*>' display transparent contains=sasGlobalStatementKeyword syn match sasGlobalStatement '\v%(^|;)\s*\zsods>' display transparent contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty " Data step statements, 9.4 syn keyword sasDataStepFunctionName abs addr addrlong airy allcomb allperm anyalnum anyalpha anycntrl anydigit anyfirst anygraph anylower anyname anyprint anypunct anyspace anyupper anyxdigit arcos arcosh arsin arsinh artanh atan atan2 attrc attrn band beta betainv blackclprc blackptprc blkshclprc blkshptprc blshift bnot bor brshift bxor byte cat catq cats catt catx cdf ceil ceilz cexist char choosec choosen cinv close cmiss cnonct coalesce coalescec collate comb compare compbl compfuzz compged complev compound compress constant convx convxp cos cosh cot count countc countw csc css cumipmt cumprinc curobs cv daccdb daccdbsl daccsl daccsyd dacctab dairy datdif date datejul datepart datetime day dclose dcreate depdb depdbsl depsl depsyd deptab dequote deviance dhms dif digamma dim dinfo divide dnum dopen doptname doptnum dosubl dread dropnote dsname dsncatlgd dur durp effrate envlen erf erfc euclid exist exp fact fappend fclose fcol fcopy fdelete fetch fetchobs fexist fget fileexist filename fileref finance find findc findw finfo finv fipname fipnamel fipstate first floor floorz fmtinfo fnonct fnote fopen foptname foptnum fpoint fpos fput fread frewind frlen fsep fuzz fwrite gaminv gamma garkhclprc garkhptprc gcd geodist geomean geomeanz getoption getvarc getvarn graycode harmean harmeanz hbound hms holiday holidayck holidaycount holidayname holidaynx holidayny holidaytest hour htmldecode htmlencode ibessel ifc ifn index indexc indexw input inputc inputn int intcindex intck intcycle intfit intfmt intget intindex intnx intrr intseas intshift inttest intz iorcmsg ipmt iqr irr jbessel juldate juldate7 kurtosis lag largest lbound lcm lcomb left length lengthc lengthm lengthn lexcomb lexcombi lexperk lexperm lfact lgamma libname libref log log1px log10 log2 logbeta logcdf logistic logpdf logsdf lowcase lperm lpnorm mad margrclprc margrptprc max md5 mdy mean median min minute missing mod modexist module modulec modulen modz month mopen mort msplint mvalid contained syn keyword sasDataStepFunctionName n netpv nliteral nmiss nomrate normal notalnum notalpha notcntrl notdigit note notfirst notgraph notlower notname notprint notpunct notspace notupper notxdigit npv nvalid nwkdom open ordinal pathname pctl pdf peek peekc peekclong peeklong perm pmt point poisson ppmt probbeta probbnml probbnrm probchi probf probgam probhypr probit probmc probnegb probnorm probt propcase prxchange prxmatch prxparen prxparse prxposn ptrlongadd put putc putn pvp qtr quantile quote ranbin rancau rand ranexp rangam range rank rannor ranpoi rantbl rantri ranuni rename repeat resolve reverse rewind right rms round rounde roundz saving savings scan sdf sec second sha256 sha256hex sha256hmachex sign sin sinh skewness sleep smallest soapweb soapwebmeta soapwipservice soapwipsrs soapws soapwsmeta soundex spedis sqrt squantile std stderr stfips stname stnamel strip subpad substr substrn sum sumabs symexist symget symglobl symlocal sysexist sysget sysmsg sysparm sysprocessid sysprocessname sysprod sysrc system tan tanh time timepart timevalue tinv tnonct today translate transtrn tranwrd trigamma trim trimn trunc tso typeof tzoneid tzonename tzoneoff tzones2u tzoneu2s uniform upcase urldecode urlencode uss uuidgen var varfmt varinfmt varlabel varlen varname varnum varray varrayx vartype verify vformat vformatd vformatdx vformatn vformatnx vformatw vformatwx vformatx vinarray vinarrayx vinformat vinformatd vinformatdx vinformatn vinformatnx vinformatw vinformatwx vinformatx vlabel vlabelx vlength vlengthx vname vnamex vtype vtypex vvalue vvaluex week weekday whichc whichn wto year yieldp yrdif yyq zipcity zipcitydistance zipfips zipname zipnamel zipstate contained syn keyword sasDataStepCallRoutineName allcomb allcombi allperm cats catt catx compcost execute graycode is8601_convert label lexcomb lexcombi lexperk lexperm logistic missing module poke pokelong prxchange prxdebug prxfree prxnext prxposn prxsubstr ranbin rancau rancomb ranexp rangam rannor ranperk ranperm ranpoi rantbl rantri ranuni scan set sleep softmax sortc sortn stdize streaminit symput symputx system tanh tso vname vnext wto contained syn region sasDataStepFunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasDataStepFunction syn region sasDataStepFunctionFormatContext start='(' end=')' contained contains=@sasBasicSyntax,sasDataStepFunction,sasFormat syn match sasDataStepFunction '\v<\w+\ze\(' contained contains=sasDataStepFunctionName,sasDataStepCallRoutineName nextgroup=sasDataStepFunctionContext syn match sasDataStepFunction '\v%(input|put)\ze\(' contained contains=sasDataStepFunctionName nextgroup=sasDataStepFunctionFormatContext syn keyword sasDataStepHashMethodName add check clear definedata definedone definekey delete do_over equals find find_next find_prev first has_next has_prev last next output prev ref remove removedup replace replacedup reset_dup setcur sum sumdup contained syn region sasDataStepHashMethodContext start='(' end=')' contained contains=@sasBasicSyntax,sasDataStepFunction syn match sasDataStepHashMethod '\v\.\w+\ze\(' contained contains=sasDataStepHashMethodName nextgroup=sasDataStepHashMethodContext syn keyword sasDataStepHashAttributeName item_size num_items contained syn match sasDataStepHashAttribute '\v\.\w+>\ze\_[^(]' display contained contains=sasDataStepHashAttributeName syn keyword sasDataStepControl continue do end go goto if leave link otherwise over return select to until when while contained syn keyword sasDataStepControl else then contained nextgroup=sasDataStepStatementKeyword skipwhite skipnl skipempty syn keyword sasDataStepHashOperator _new_ contained syn keyword sasDataStepStatementKeyword abort array attrib by call cards cards4 datalines datalines4 dcl declare delete describe display drop error execute file format infile informat input keep label length lines lines4 list lostcard merge modify output put putlog redirect remove rename replace retain set stop update where window contained syn keyword sasDataStepStatementHashKeyword hash hiter javaobj contained syn match sasDataStepStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasDataStepStatementKeyword,sasGlobalStatementKeyword syn match sasDataStepStatement '\v%(^|;)\s*\zs%(dcl|declare)>' display contained contains=sasDataStepStatementKeyword nextgroup=sasDataStepStatementHashKeyword skipwhite skipnl skipempty syn match sasDataStepStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn match sasDataStepStatement '\v%(^|;)\s*\zs%(format|informat|input|put)>' display contained contains=sasDataStepStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty syn match sasDataStepStatement '\v%(^|;)\s*\zs%(cards|datalines|lines)4=\s*;' display contained contains=sasDataStepStatementKeyword nextgroup=sasDataLine skipwhite skipnl skipempty syn region sasDataLine start='^' end='^\s*;'me=s-1 contained syn region sasDataStep matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsdata>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,@sasDataStepSyntax syn cluster sasDataStepSyntax contains=sasDataStepFunction,sasDataStepHashOperator,sasDataStepHashAttribute,sasDataStepHashMethod,sasDataStepControl,sasDataStepStatement " Procedures, base SAS, 9.4 syn keyword sasProcStatementKeyword abort age append array attrib audit block break by calid cdfplot change checkbox class classlev column compute contents copy create datarow dbencoding define delete deletefunc deletesubr delimiter device dialog dur endcomp exact exchange exclude explore fin fmtlib fontfile fontpath format formats freq function getnames guessingrows hbar hdfs histogram holidur holifin holistart holivar id idlabel informat inset invalue item key keylabel keyword label line link listfunc listsubr mapmiss mapreduce mean menu messages meta modify opentype outargs outdur outfin output outstart pageby partial picture pie pig plot ppplot printer probplot profile prompter qqplot radiobox ranks rbreak rbutton rebuild record remove rename repair report roptions save select selection separator source star start statistics struct submenu subroutine sum sumby table tables test text trantab truetype type1 types value var vbar ways weight where with write contained syn match sasProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasProcStatementKeyword,sasGlobalStatementKeyword syn match sasProcStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn match sasProcStatement '\v%(^|;)\s*\zs%(format|informat)>' display contained contains=sasProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty syn region sasProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc%(\s+\h\w*)=>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasProcStatement syn region sasProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(catalog|chart|datasets|document|plot)>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasProcStatement " Procedures, SAS/GRAPH, 9.4 syn keyword sasGraphProcStatementKeyword add area axis bar block bubble2 byline cc ccopy cdef cdelete chart cmap choro copy delete device dial donut exclude flow format fs goptions gout grid group hbar hbar3d hbullet hslider htrafficlight id igout label legend list modify move nobyline note pattern pie pie3d plot plot2 preview prism quit rename replay select scatter speedometer star surface symbol tc tcopy tdef tdelete template tile toggle treplay vbar vbar3d vtrafficlight vbullet vslider where contained syn match sasGraphProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasGraphProcStatementKeyword,sasGlobalStatementKeyword syn match sasGraphProcStatement '\v%(^|;)\s*\zsformat>' display contained contains=sasGraphProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty syn region sasGraphProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(g3d|g3grid|ganno|gcontour|gdevice|geocode|gfont|ginside|goptions|gproject|greduce|gremove|mapimport)>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasGraphProcStatement syn region sasGraphProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(gareabar|gbarline|gchart|gkpi|gmap|gplot|gradar|greplay|gslide|gtile)>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasGraphProcStatement " Procedures, SAS/STAT, 14.1 syn keyword sasAnalyticalProcStatementKeyword absorb add array assess baseline bayes beginnodata bivar bootstrap bounds by cdfplot cells class cluster code compute condition contrast control coordinates copy cosan cov covtest coxreg der design determ deviance direct directions domain effect effectplot effpart em endnodata equality estimate exact exactoptions factor factors fcs filter fitindex format freq fwdlink gender grid group grow hazardratio height hyperprior id impjoint inset insetgroup invar invlink ippplot lincon lineqs lismod lmtests location logistic loglin lpredplot lsmeans lsmestimate manova matings matrix mcmc mean means missmodel mnar model modelaverage modeleffects monotone mstruct mtest multreg name nlincon nloptions oddsratio onecorr onesamplefreq onesamplemeans onewayanova outfiles output paired pairedfreq pairedmeans parameters parent parms partial partition path pathdiagram pcov performance plot population poststrata power preddist predict predpplot priors process probmodel profile prune pvar ram random ratio reference refit refmodel renameparm repeated replicate repweights response restore restrict retain reweight ridge rmsstd roc roccontrast rules samplesize samplingunit seed size scale score selection show simtests simulate slice std stderr store strata structeq supplementary table tables test testclass testfreq testfunc testid time transform treatments trend twosamplefreq twosamplemeans towsamplesurvival twosamplewilcoxon uds units univar var variance varnames weight where with zeromodel contained syn match sasAnalyticalProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasAnalyticalProcStatementKeyword,sasGlobalStatementKeyword syn match sasAnalyticalProcStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn match sasAnalyticalProcStatement '\v%(^|;)\s*\zsformat>' display contained contains=sasAnalyticalProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty syn region sasAnalyticalProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(aceclus|adaptivereg|bchoice|boxplot|calis|cancorr|candisc|cluster|corresp|discrim|distance|factor|fastclus|fmm|freq|gam|gampl|gee|genmod|glimmix|glmmod|glmpower|glmselect|hpcandisc|hpfmm|hpgenselect|hplmixed|hplogistic|hpmixed|hpnlmod|hppls|hpprincomp|hpquantselect|hpreg|hpsplit|iclifetest|icphreg|inbreed|irt|kde|krige2d|lattice|lifereg|lifetest|loess|logistic|mcmc|mds|mi|mianalyze|mixed|modeclus|multtest|nested|nlin|nlmixed|npar1way|orthoreg|phreg|plm|pls|power|princomp|prinqual|probit|quantlife|quantreg|quantselect|robustreg|rsreg|score|seqdesign|seqtest|sim2d|simnormal|spp|stdize|stdrate|stepdisc|surveyfreq|surveyimpute|surveylogistic|surveymeans|surveyphreg|surveyreg|surveyselect|tpspline|transreg|tree|ttest|varclus|varcomp|variogram)>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepControl,sasDataStepFunction,sasAnalyticalProcStatement syn region sasAnalyticalProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(anova|arima|catmod|factex|glm|model|optex|plan|reg)>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepControl,sasDataStepFunction,sasAnalyticalProcStatement " Procedures, ODS graphics, 9.4 syn keyword sasODSGraphicsProcStatementKeyword band block bubble by colaxis compare dattrvar density dot dropline dynamic ellipse ellipseparm format fringe gradlegend hbar hbarbasic hbarparm hbox heatmap heatmapparm highlow histogram hline inset keylegend label lineparm loess matrix needle parent panelby pbspline plot polygon refline reg rowaxis scatter series spline step style styleattrs symbolchar symbolimage text vbar vbarbasic vbarparm vbox vector vline waterfall where xaxis x2axis yaxis y2axis yaxistable contained syn match sasODSGraphicsProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasODSGraphicsProcStatementKeyword,sasGlobalStatementKeyword syn match sasODSGraphicsProcStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn match sasODSGraphicsProcStatement '\v%(^|;)\s*\zsformat>' display contained contains=sasODSGraphicsProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty syn region sasODSGraphicsProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(sgdesign|sgpanel|sgplot|sgrender|sgscatter)>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasODSGraphicsProcStatement " Proc TEMPLATE, 9.4 syn keyword sasProcTemplateClause as into syn keyword sasProcTemplateStatementKeyword block break cellstyle class close column compute continue define delete delstream do done dynamic edit else end eval flush footer header import iterate link list mvar ndent next nmvar notes open path put putl putlog putq putstream putvars replace set source stop style test text text2 text3 translate trigger unblock unset xdent contained syn keyword sasProcTemplateStatementComplexKeyword cellvalue column crosstabs event footer header statgraph style table tagset contained syn keyword sasProcTemplateGTLStatementKeyword axislegend axistable bandplot barchart barchartparm begingraph beginpolygon beginpolyline bihistogram3dparm blockplot boxplot boxplotparm bubbleplot continuouslegend contourplotparm dendrogram discretelegend drawarrow drawimage drawline drawoval drawrectangle drawtext dropline ellipse ellipseparm endgraph endinnermargin endlayout endpolygon endpolyline endsidebar entry entryfootnote entrytitle fringeplot heatmap heatmapparm highlowplot histogram histogramparm innermargin layout legenditem legendtextitems linechart lineparm loessplot mergedlegend modelband needleplot pbsplineplot polygonplot referenceline regressionplot scatterplot seriesplot sidebar stepplot surfaceplotparm symbolchar symbolimage textplot vectorplot waterfallchart contained syn keyword sasProcTemplateGTLComplexKeyword datalattice datapanel globallegend gridded lattice overlay overlayequated overlay3d region contained syn match sasProcTemplateStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasProcTemplateStatementKeyword,sasProcTemplateGTLStatementKeyword,sasGlobalStatementKeyword syn match sasProcTemplateStatement '\v%(^|;)\s*\zsdefine>' display contained contains=sasProcTemplateStatementKeyword nextgroup=sasProcTemplateStatementComplexKeyword skipwhite skipnl skipempty syn match sasProcTemplateStatement '\v%(^|;)\s*\zslayout>' display contained contains=sasProcTemplateGTLStatementKeyword nextgroup=sasProcTemplateGTLComplexKeyword skipwhite skipnl skipempty syn match sasProcTemplateStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn region sasProcTemplate matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+template>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasProcTemplateClause,sasProcTemplateStatement " Proc SQL, 9.4 syn keyword sasProcSQLFunctionName avg count css cv freq max mean median min n nmiss prt range std stderr sum sumwgt t uss var contained syn region sasProcSQLFunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasProcSQLFunction syn match sasProcSQLFunction '\v<\w+\ze\(' contained contains=sasProcSQLFunctionName,sasDataStepFunctionName nextgroup=sasProcSQLFunctionContext syn keyword sasProcSQLClause add asc between by calculated cascade case check connection constraint cross desc distinct drop else end escape except exists foreign from full group having in inner intersect into is join key left libname like modify natural newline notrim null on order outer primary references restrict right separated set then to trimmed union unique user using values when where contained syn keyword sasProcSQLClause as contained nextgroup=sasProcSQLStatementKeyword skipwhite skipnl skipempty syn keyword sasProcSQLStatementKeyword connect delete disconnect execute insert reset select update validate contained syn keyword sasProcSQLStatementComplexKeyword alter create describe drop contained nextgroup=sasProcSQLStatementNextKeyword skipwhite skipnl skipempty syn keyword sasProcSQLStatementNextKeyword index table view contained syn match sasProcSQLStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasProcSQLStatementKeyword,sasGlobalStatementKeyword syn match sasProcSQLStatement '\v%(^|;)\s*\zs%(alter|create|describe|drop)>' display contained contains=sasProcSQLStatementComplexKeyword nextgroup=sasProcSQLStatementNextKeyword skipwhite skipnl skipempty syn match sasProcSQLStatement '\v%(^|;)\s*\zsvalidate>' display contained contains=sasProcSQLStatementKeyword nextgroup=sasProcSQLStatementKeyword,sasProcSQLStatementComplexKeyword skipwhite skipnl skipempty syn match sasProcSQLStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn region sasProcSQL matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+sql>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasProcSQLFunction,sasProcSQLClause,sasProcSQLStatement " SAS/DS2, 9.4 syn keyword sasDS2FunctionName abs anyalnum anyalpha anycntrl anydigit anyfirst anygraph anylower anyname anyprint anypunct anyspace anyupper anyxdigit arcos arcosh arsin arsinh artanh atan atan2 band beta betainv blackclprc blackptprc blkshclprc blkshptprc blshift bnot bor brshift bxor byte cat cats catt catx ceil ceilz choosec choosen cmp cmpt coalesce coalescec comb compare compbl compfuzz compound compress constant convx convxp cos cosh count countc countw css cumipmt cumprinc cv datdif date datejul datepart datetime day dequote deviance dhms dif digamma dim divide dur durp effrate erf erfc exp fact find findc findw floor floorz fmtinfo fuzz gaminv gamma garkhclprc garkhptprc gcd geodist geomean geomeanz harmean harmeanz hbound hms holiday hour index indexc indexw inputc inputn int intcindex intck intcycle intdt intfit intget intindex intnest intnx intrr intseas intshift inttest intts intz ipmt iqr irr juldate juldate7 kcount kstrcat kstrip kupdate kupdates kurtosis lag largest lbound lcm left length lengthc lengthm lengthn lgamma log logbeta log10 log1px log2 lowcase mad margrclprc margrptprc max md5 mdy mean median min minute missing mod modz month mort n ndims netpv nmiss nomrate notalnum notalpha notcntrl notdigit notfirst notgraph notlower notname notprint notpunct notspace notupper notxdigit npv null nwkdom ordinal pctl perm pmt poisson power ppmt probbeta probbnml probbnrm probchi probdf probf probgam probhypr probit probmc probmed probnegb probnorm probt prxchange prxmatch prxparse prxposn put pvp qtr quote ranbin rancau rand ranexp rangam range rank rannor ranpoi rantbl rantri ranuni repeat reverse right rms round rounde roundz savings scan sec second sha256hex sha256hmachex sign sin sinh skewness sleep smallest sqlexec sqrt std stderr streaminit strip substr substrn sum sumabs tan tanh time timepart timevalue tinv to_date to_double to_time to_timestamp today translate transtrn tranwrd trigamma trim trimn trunc uniform upcase uss uuidgen var verify vformat vinarray vinformat vlabel vlength vname vtype week weekday whichc whichn year yieldp yrdif yyq contained syn region sasDS2FunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasDS2Function syn match sasDS2Function '\v<\w+\ze\(' contained contains=sasDS2FunctionName nextgroup=sasDS2FunctionContext syn keyword sasDS2Control continue data dcl declare do drop else end enddata endpackage endthread from go goto if leave method otherwise package point return select then thread to until when while contained syn keyword sasDS2StatementKeyword array by forward keep merge output put rename retain set stop vararray varlist contained syn keyword sasDS2StatementComplexKeyword package thread contained syn match sasDS2Statement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasDS2StatementKeyword,sasGlobalStatementKeyword syn match sasDS2Statement '\v%(^|;)\s*\zs%(dcl|declare|drop)>' display contained contains=sasDS2StatementKeyword nextgroup=sasDS2StatementComplexKeyword skipwhite skipnl skipempty syn match sasDS2Statement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn region sasDS2 matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+ds2>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDS2Function,sasDS2Control,sasDS2Statement " SAS/IML, 14.1 syn keyword sasIMLFunctionName abs all allcomb allperm any apply armasim bin blankstr block branks bspline btran byte char choose col colvec concat contents convexit corr corr2cov countmiss countn countunique cov cov2corr covlag cshape cusum cuprod cv cvexhull datasets design designf det diag dif dimension distance do duration echelon eigval eigvec element exp expmatrix expandgrid fft forward froot full gasetup geomean ginv hadamard half hankel harmean hdir hermite homogen i ifft insert int inv invupdt isempty isskipped j jroot kurtosis lag length loc log logabsdet mad magic mahalanobis max mean median min mod moduleic modulein name ncol ndx2sub nleng norm normal nrow num opscal orpol parentname palette polyroot prod product pv quartile rancomb randdirichlet randfun randmultinomial randmvt randnormal randwishart ranperk ranperm range rank ranktie rates ratio remove repeat root row rowcat rowcatc rowvec rsubstr sample setdif shape shapecol skewness solve sparse splinev spot sqrsym sqrt sqrvech ssq standard std storage sub2ndx substr sum sweep symsqr t toeplitz trace trisolv type uniform union unique uniqueby value var vecdiag vech xmult xsect yield contained syn keyword sasIMLCallRoutineName appcort armacov armalik bar box change comport delete eigen execute exportdatasettor exportmatrixtor farmacov farmafit farmalik farmasim fdif gaend gagetmem gagetval gainit gareeval garegen gasetcro gasetmut gasetobj gasetsel gblkvp gblkvpd gclose gdelete gdraw gdrawl geneig ggrid ginclude gopen gpie gpiexy gpoint gpoly gport gportpop gportstk gscale gscript gset gshow gsorth gstart gstop gstrlen gtext gvtext gwindow gxaxis gyaxis heatmapcont heatmapdisc histogram importdatasetfromr importmatrixfromr ipf itsolver kalcvf kalcvs kaldff kaldfs lav lcp lms lp lpsolve lts lupdt marg maxqform mcd milpsolve modulei mve nlpcg nlpdd nlpfdd nlpfea nlphqn nlplm nlpnms nlpnra nlpnrr nlpqn nlpqua nlptr ode odsgraph ortvec pgraf push qntl qr quad queue randgen randseed rdodt rupdt rename rupdt rzlind scatter seq seqscale seqshift seqscale seqshift series solvelin sort sortndx sound spline splinec svd tabulate tpspline tpsplnev tsbaysea tsdecomp tsmlocar tsmlomar tsmulmar tspears tspred tsroot tstvcar tsunimar valset varmacov varmalik varmasim vnormal vtsroot wavft wavget wavift wavprint wavthrsh contained syn region sasIMLFunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasIMLFunction syn match sasIMLFunction '\v<\w+\ze\(' contained contains=sasIMLFunctionName,sasDataStepFunction nextgroup=sasIMLFunctionContext syn keyword sasIMLControl abort by do else end finish goto if link pause quit resume return run start stop then to until while contained syn keyword sasIMLStatementKeyword append call close closefile create delete display edit file find force free index infile input list load mattrib print purge read remove replace reset save setin setout show sort store summary use window contained syn match sasIMLStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasIMLStatementKeyword,sasGlobalStatementKeyword syn match sasIMLStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn region sasIML matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+iml>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasIMLFunction,sasIMLControl,sasIMLStatement " Macro definition syn region sasMacro start='\v\%macro>' end='\v\%mend>' fold keepend contains=@sasBasicSyntax,@sasDataStepSyntax,sasDataStep,sasProc,sasODSGraphicsProc,sasGraphProc,sasAnalyticalProc,sasProcTemplate,sasProcSQL,sasDS2,sasIML " Define default highlighting hi def link sasComment Comment hi def link sasTodo Delimiter hi def link sasSectLbl Title hi def link sasSectLblEnds Comment hi def link sasNumber Number hi def link sasDateTime Constant hi def link sasString String hi def link sasDataStepControl Keyword hi def link sasProcTemplateClause Keyword hi def link sasProcSQLClause Keyword hi def link sasDS2Control Keyword hi def link sasIMLControl Keyword hi def link sasOperator Operator hi def link sasGlobalStatementKeyword Statement hi def link sasGlobalStatementODSKeyword Statement hi def link sasSectionKeyword Statement hi def link sasDataStepFunctionName Function hi def link sasDataStepCallRoutineName Function hi def link sasDataStepStatementKeyword Statement hi def link sasDataStepStatementHashKeyword Statement hi def link sasDataStepHashOperator Operator hi def link sasDataStepHashMethodName Function hi def link sasDataStepHashAttributeName Identifier hi def link sasProcStatementKeyword Statement hi def link sasODSGraphicsProcStatementKeyword Statement hi def link sasGraphProcStatementKeyword Statement hi def link sasAnalyticalProcStatementKeyword Statement hi def link sasProcTemplateStatementKeyword Statement hi def link sasProcTemplateStatementComplexKeyword Statement hi def link sasProcTemplateGTLStatementKeyword Statement hi def link sasProcTemplateGTLComplexKeyword Statement hi def link sasProcSQLFunctionName Function hi def link sasProcSQLStatementKeyword Statement hi def link sasProcSQLStatementComplexKeyword Statement hi def link sasProcSQLStatementNextKeyword Statement hi def link sasDS2FunctionName Function hi def link sasDS2StatementKeyword Statement hi def link sasIMLFunctionName Function hi def link sasIMLCallRoutineName Function hi def link sasIMLStatementKeyword Statement hi def link sasMacroReserved PreProc hi def link sasMacroVariable Define hi def link sasMacroFunctionName Define hi def link sasDataLine SpecialChar hi def link sasFormat SpecialChar hi def link sasReserved Special " Syncronize from beginning to keep large blocks from losing " syntax coloring while moving through code. syn sync fromstart let b:current_syntax = "sas" let &cpo = s:cpo_save unlet s:cpo_save PK!ǦTTvim80/syntax/treetop.vimnu[" Vim syntax file " Language: Treetop " Previous Maintainer: Nikolai Weibull " Latest Revision: 2011-03-14 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword treetopTodo \ contained \ TODO \ FIXME \ XXX \ NOTE syn match treetopComment \ '#.*' \ display \ contains=treetopTodo syn include @treetopRuby syntax/ruby.vim unlet b:current_syntax syn keyword treetopKeyword \ require \ end syn region treetopKeyword \ matchgroup=treetopKeyword \ start='\<\%(grammar\|include\|module\)\>\ze\s' \ end='$' \ transparent \ oneline \ keepend \ contains=@treetopRuby syn keyword treetopKeyword \ rule \ nextgroup=treetopRuleName \ skipwhite skipnl syn match treetopGrammarName \ '\u\w*' \ contained syn match treetopRubyModuleName \ '\u\w*' \ contained syn match treetopRuleName \ '\h\w*' \ contained syn region treetopString \ matchgroup=treetopStringDelimiter \ start=+"+ \ end=+"+ syn region treetopString \ matchgroup=treetopStringDelimiter \ start=+'+ \ end=+'+ syn region treetopCharacterClass \ matchgroup=treetopCharacterClassDelimiter \ start=+\[+ \ skip=+\\\]+ \ end=+\]+ syn region treetopRubyBlock \ matchgroup=treetopRubyBlockDelimiter \ start=+{+ \ end=+}+ \ contains=@treetopRuby syn region treetopSemanticPredicate \ matchgroup=treetopSemanticPredicateDelimiter \ start=+[!&]{+ \ end=+}+ \ contains=@treetopRuby syn region treetopSubclassDeclaration \ matchgroup=treetopSubclassDeclarationDelimiter \ start=+<+ \ end=+>+ \ contains=@treetopRuby syn match treetopEllipsis \ +''+ hi def link treetopTodo Todo hi def link treetopComment Comment hi def link treetopKeyword Keyword hi def link treetopGrammarName Constant hi def link treetopRubyModuleName Constant hi def link treetopRuleName Identifier hi def link treetopString String hi def link treetopStringDelimiter treetopString hi def link treetopCharacterClass treetopString hi def link treetopCharacterClassDelimiter treetopCharacterClass hi def link treetopRubyBlockDelimiter PreProc hi def link treetopSemanticPredicateDelimiter PreProc hi def link treetopSubclassDeclarationDelimiter PreProc hi def link treetopEllipsis Special let b:current_syntax = 'treetop' let &cpo = s:cpo_save unlet s:cpo_save PK!jLi4vim80/syntax/cabal.vimnu[" Vim syntax file " Language: Haskell Cabal Build file " Maintainer: Vincent Berthoux " File Types: .cabal " Last Change: 2010 May 18 " v1.3: Updated to the last version of cabal " Added more highlighting for cabal function, true/false " and version number. Also added missing comment highlighting. " Cabal known compiler are highlighted too. " " V1.2: Added cpp-options which was missing. Feature implemented " by GHC, found with a GHC warning, but undocumented. " Whatever... " " v1.1: Fixed operator problems and added ftdetect file " (thanks to Sebastian Schwarz) " " v1.0: Cabal syntax in vimball format " (thanks to Magnus Therning) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn keyword cabalCategory Library library Executable executable Flag flag syn keyword cabalCategory source-repository Source-Repository syn keyword cabalConditional if else syn match cabalOperator "&&\|||\|!\|==\|>=\|<=" syn keyword cabalFunction os arche impl flag syn match cabalComment /--.*$/ syn match cabalVersion "\d\+\(.\(\d\)\+\)\+" syn match cabalTruth "\ctrue" syn match cabalTruth "\cfalse" syn match cabalCompiler "\cghc" syn match cabalCompiler "\cnhc" syn match cabalCompiler "\cyhc" syn match cabalCompiler "\chugs" syn match cabalCompiler "\chbc" syn match cabalCompiler "\chelium" syn match cabalCompiler "\cjhc" syn match cabalCompiler "\clhc" syn match cabalStatement "\cauthor" syn match cabalStatement "\cbranch" syn match cabalStatement "\cbug-reports" syn match cabalStatement "\cbuild-depends" syn match cabalStatement "\cbuild-tools" syn match cabalStatement "\cbuild-type" syn match cabalStatement "\cbuildable" syn match cabalStatement "\cc-sources" syn match cabalStatement "\ccabal-version" syn match cabalStatement "\ccategory" syn match cabalStatement "\ccc-options" syn match cabalStatement "\ccopyright" syn match cabalStatement "\ccpp-options" syn match cabalStatement "\cdata-dir" syn match cabalStatement "\cdata-files" syn match cabalStatement "\cdefault" syn match cabalStatement "\cdescription" syn match cabalStatement "\cexecutable" syn match cabalStatement "\cexposed-modules" syn match cabalStatement "\cexposed" syn match cabalStatement "\cextensions" syn match cabalStatement "\cextra-lib-dirs" syn match cabalStatement "\cextra-libraries" syn match cabalStatement "\cextra-source-files" syn match cabalStatement "\cextra-tmp-files" syn match cabalStatement "\cfor example" syn match cabalStatement "\cframeworks" syn match cabalStatement "\cghc-options" syn match cabalStatement "\cghc-prof-options" syn match cabalStatement "\cghc-shared-options" syn match cabalStatement "\chomepage" syn match cabalStatement "\chs-source-dirs" syn match cabalStatement "\chugs-options" syn match cabalStatement "\cinclude-dirs" syn match cabalStatement "\cincludes" syn match cabalStatement "\cinstall-includes" syn match cabalStatement "\cld-options" syn match cabalStatement "\clicense-file" syn match cabalStatement "\clicense" syn match cabalStatement "\clocation" syn match cabalStatement "\cmain-is" syn match cabalStatement "\cmaintainer" syn match cabalStatement "\cmodule" syn match cabalStatement "\cname" syn match cabalStatement "\cnhc98-options" syn match cabalStatement "\cother-modules" syn match cabalStatement "\cpackage-url" syn match cabalStatement "\cpkgconfig-depends" syn match cabalStatement "\cstability" syn match cabalStatement "\csubdir" syn match cabalStatement "\csynopsis" syn match cabalStatement "\ctag" syn match cabalStatement "\ctested-with" syn match cabalStatement "\ctype" syn match cabalStatement "\cversion" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link cabalVersion Number hi def link cabalTruth Boolean hi def link cabalComment Comment hi def link cabalStatement Statement hi def link cabalCategory Type hi def link cabalFunction Function hi def link cabalConditional Conditional hi def link cabalOperator Operator hi def link cabalCompiler Constant let b:current_syntax = "cabal" " vim: ts=8 PK!Q4y66vim80/syntax/rmd.vimnu[" markdown Text with R statements " Language: markdown with R code chunks " Homepage: https://github.com/jalvesaq/R-Vim-runtime " Last Change: Sat Jan 28, 2017 10:06PM " " CONFIGURATION: " To highlight chunk headers as R code, put in your vimrc (e.g. .config/nvim/init.vim): " let rmd_syn_hl_chunk = 1 " " For highlighting pandoc extensions to markdown like citations and TeX and " many other advanced features like folding of markdown sections, it is " recommended to install the vim-pandoc filetype plugin as well as the " vim-pandoc-syntax filetype plugin from https://github.com/vim-pandoc. " " TODO: " - Provide highlighting for rmarkdown parameters in yaml header if exists("b:current_syntax") finish endif " load all of pandoc info, e.g. from " https://github.com/vim-pandoc/vim-pandoc-syntax runtime syntax/pandoc.vim if exists("b:current_syntax") let rmdIsPandoc = 1 unlet b:current_syntax else let rmdIsPandoc = 0 runtime syntax/markdown.vim if exists("b:current_syntax") unlet b:current_syntax endif " load all of the yaml syntax highlighting rules into @yaml syntax include @yaml syntax/yaml.vim if exists("b:current_syntax") unlet b:current_syntax endif " highlight yaml block commonly used for front matter syntax region rmdYamlBlock matchgroup=rmdYamlBlockDelim start="^---" matchgroup=rmdYamlBlockDelim end="^---" contains=@yaml keepend fold endif if !exists("g:rmd_syn_langs") let g:rmd_syn_langs = ["r"] else let s:hasr = 0 for s:lng in g:rmd_syn_langs if s:lng == "r" let s:hasr = 1 endif endfor if s:hasr == 0 let g:rmd_syn_langs += ["r"] endif endif for s:lng in g:rmd_syn_langs exe 'syntax include @' . toupper(s:lng) . ' syntax/'. s:lng . '.vim' if exists("b:current_syntax") unlet b:current_syntax endif exe 'syntax region rmd' . toupper(s:lng) . 'Chunk start="^[ \t]*``` *{\(' . s:lng . '\|r.*engine\s*=\s*["' . "']" . s:lng . "['" . '"]\).*}$" end="^[ \t]*```$" contains=@' . toupper(s:lng) . ',rmd' . toupper(s:lng) . 'ChunkDelim keepend fold' if exists("g:rmd_syn_hl_chunk") && s:lng == "r" " highlight R code inside chunk header syntax match rmdRChunkDelim "^[ \t]*```{r" contained syntax match rmdRChunkDelim "}$" contained else exe 'syntax match rmd' . toupper(s:lng) . 'ChunkDelim "^[ \t]*```{\(' . s:lng . '\|r.*engine\s*=\s*["' . "']" . s:lng . "['" . '"]\).*}$" contained' endif exe 'syntax match rmd' . toupper(s:lng) . 'ChunkDelim "^[ \t]*```$" contained' endfor " also match and syntax highlight in-line R code syntax region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@R containedin=pandocLaTeXRegion,yamlFlowString keepend " I was not able to highlight rmdrInline inside a pandocLaTeXCommand, although " highlighting works within pandocLaTeXRegion and yamlFlowString. syntax cluster texMathZoneGroup add=rmdrInline " match slidify special marker syntax match rmdSlidifySpecial "\*\*\*" if rmdIsPandoc == 0 syn match rmdBlockQuote /^\s*>.*\n\(.*\n\@" contains=@texMathZoneGroup " Region syntax match rmdLaTeXRegDelim "\$\$" contained syntax match rmdLaTeXRegDelim "\$\$latex$" contained syntax match rmdLaTeXSt "\\[a-zA-Z]\+" syntax region rmdLaTeXRegion start="^\$\$" skip="\\\$" end="\$\$$" contains=@LaTeX,rmdLaTeXRegDelim keepend syntax region rmdLaTeXRegion2 start="^\\\[" end="\\\]" contains=@LaTeX,rmdLaTeXRegDelim keepend hi def link rmdBlockQuote Comment hi def link rmdLaTeXSt Statement hi def link rmdLaTeXInlDelim Special hi def link rmdLaTeXRegDelim Special endif for s:lng in g:rmd_syn_langs exe 'syn sync match rmd' . toupper(s:lng) . 'SyncChunk grouphere rmd' . toupper(s:lng) . 'Chunk /^[ \t]*``` *{\(' . s:lng . '\|r.*engine\s*=\s*["' . "']" . s:lng . "['" . '"]\)/' endfor hi def link rmdYamlBlockDelim Delim for s:lng in g:rmd_syn_langs exe 'hi def link rmd' . toupper(s:lng) . 'ChunkDelim Special' endfor hi def link rmdInlineDelim Special hi def link rmdSlidifySpecial Special let b:current_syntax = "rmd" " vim: ts=8 sw=2 PK!knʤVVvim80/syntax/sisu.vimnu[" SiSU Vim syntax file " SiSU Maintainer: Ralph Amissah " SiSU Markup: SiSU (sisu-5.6.7) " Last Change: 2017 Jun 22 " URL: " "(originally looked at Ruby Vim by Mirko Nasato) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim "% "Errors: syn match sisu_error contains=sisu_link,sisu_error_wspace "" "% "Markers Identifiers: if !exists("sisu_no_identifiers") syn match sisu_mark_endnote "\~^" syn match sisu_break contains=@NoSpell " \\\\\( \|$\)\|
\|
" syn match sisu_control contains=@NoSpell "^\(-\\\\-\|=\\\\=\|-\.\.-\|<:p[bn]>\)\s*$" syn match sisu_control contains=@NoSpell "^<:\(bo\|---\)>\s*$" syn match sisu_marktail contains=@NoSpell "^--[+~-]#\s*$" syn match sisu_marktail "[~-]#" syn match sisu_control "\"" syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)" syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}" syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+" syn match sisu_link " \*\~\S\+" syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^./_-]\+\.ss[it]$" syn match sisu_structure "^:A\~$" "% "Document Sub Headers: syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|lang_char\|note\):\s" "group=sisu_header_content syn match sisu_sub_header_creator "^\s\+:\(author\|editor\|contributor\|illustrator\|photographer\|translator\|digitized_by\|prepared_by\|audio\|video\):\s" " &hon &institution syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|preparation\|digitization\|audio\|video\|license\|all\):\s" " access_rights license syn match sisu_sub_header_classify "^\s\+:\(topic_register\|keywords\|subject\|dewey\|loc\):\s" syn match sisu_sub_header_identifier "^\s\+:\(oclc\|isbn\):\s" syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s" syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|lang_char\|institution\|nationality\|source\):\s" syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|substitute\|omit\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|stamp\|promo\|ad\|manpage\|home_button_text\|home_button_image\|cover_image\|footer\):\s" syn match sisu_sub_header_notes "^\s\+:\(description\|abstract\|comment\|coverage\|relation\|source\|history\|type\|format\|prefix\|prefix_[ab]\|suffix\):\s" syn match sisu_within_index_ignore "\S\+[:;]\(\s\+\|$\)" syn match sisu_within_index "[:|;]\|+\d\+" "% "semantic markers: (ignore) syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]" syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]" syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]" syn match sisu_sem_ex_marker_block "\([a-z][a-z._]*\|\):\[\|\]:[a-z._]*[a-z]" syn match sisu_sem_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):{[^}].\{-}}:\1" syn match sisu_sem_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";{[^}].\{-}};[a-z]\+" syn match sisu_sem_ex_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):\[[^}].\{-}\]:\1" syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+" endif "% "URLs Numbers And ASCII Codes: syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>" syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)" "% "Tuned Error: (is error if not already matched) syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]" syn match sisu_error contains=sisu_error "]" "% "Simple Paired Enclosed Markup: "url/link syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$" "% "Document Header: " title syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" " creator syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" " dates syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_date matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" " publisher syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" " rights syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" " classify document syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" " identifier document syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_identifier matchgroup=sisu_header start="^[@]identifier:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" " original language (depreciated) syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" " notes syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" " links of interest syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" " make, processing instructions syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" "% "Headings: syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-4]\|:\?[A-D]\)\~\(\S\+\|[^-]\)" end="$" "% "Block Group Text: " table syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table" " table syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+table" end="^```\(\s\|$\)" syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$" " block, group, poem, alt syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\z(block\|group\|poem\|alt\){" end="^}\z1" syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\(block\|group\|poem\|alt\)" end="^```\(\s\|$\)" " box syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^box\(\.[a-z]\+\)\?{" end="^}box" syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\box\(\.[a-z]\+\)\?" end="^```\(\s\|$\)" " code syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^code\(\.[a-z][0-9a-z_]\+\)\?{" end="^}code" syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^```\s\+code\(\.[a-z][0-9a-z_]\+\)\?" end="^```\(\s\|$\)" " quote syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_contain start="^```\s\+quote" end="^```\(\s\|$\)" "% "Endnotes: " regular endnote or asterisk or plus sign endnote syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n" " numbered asterisk or plus sign endnote syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n" " endnote content marker (for binary content marking) syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$" "% "Links And Images: " image with url link (and possibly footnote of url) syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|:\|\.\.\/\|#\)\S\+" oneline " sisu outputs, short notation syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline " image syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline "% "Some Line Operations: " bold line syn region sisu_bold contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^!_ " end=" \\\\\|$" " indent and bullet paragraph syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$" " indent and bullet (bold start) paragraph syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\)!_\? " end=" \\\\\|$" " hanging indent paragraph [proposed] syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9] " end="$" " hanging indent (bold start/ definition) paragraph [proposed] syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9]!_\? " end=" \\\\\|$" " list numbering syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$" "% "Font Face Curly Brackets: "syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline " book index: syn region sisu_index contains=sisu_within_index_ignore,sisu_within_index matchgroup=sisu_index_block start="^={" end="}" " emphasis: syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*" " bold: syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!" " underscore: syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_" " italics: syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/" " added: syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+" " superscript: syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^" " subscript: syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="}," " monospace: syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="#{" end="}#" " strikethrough: syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-" "% "Single Words Bold Italicise Etc: (depreciated) syn region sisu_bold contains=sisu_error matchgroup=sisu_bold start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline "misc syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline "% "Expensive Mode: if !exists("sisu_no_expensive") else " not Expensive syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline endif " Expensive? "% "Headers And Headings: (Document Instructions) syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+" syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$" "% "Errors: syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]" syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+" syn match sisu_error_wspace contains=sisu_error_wspace "\s\+$" syn match sisu_error contains=sisu_error_wspace "\t\+" syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+" syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]" syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n$" syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n$" syn match sisu_error contains=sisu_error "\s\+.{{" syn match sisu_error contains=sisu_error "^\~\s*$" syn match sisu_error contains=sisu_error "^0\~.*" syn match sisu_error contains=sisu_error "^[1-9]\~\s*$" syn match sisu_error contains=sisu_error "^[1-9]\~\S\+\s*$" syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]" syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*" syn match sisu_error contains=sisu_error "{\~^\S\+" syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]" syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']" syn match sisu_error contains=sisu_error "
" "errors for filetype sisu, though not error in 'metaverse': syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>" syn match sisu_error "/\?<\([biu]\)>[^()]\{-}\n$" "% "Error Exceptions: syn match sisu_control "\n$" "contains=ALL "syn match sisu_control " //" syn match sisu_error "%{" syn match sisu_error "
_\?https\?:\S\+\|_\?https\?:\S\+
" syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]" syn match sisu_comment "^%\{1,2\}.\+" "% "Definitions Default Highlighting: hi def link sisu_normal Normal hi def link sisu_bold Statement hi def link sisu_header PreProc hi def link sisu_header_content Normal hi def link sisu_sub_header_title Statement hi def link sisu_sub_header_creator Statement hi def link sisu_sub_header_date Statement hi def link sisu_sub_header_publisher Statement hi def link sisu_sub_header_rights Statement hi def link sisu_sub_header_classify Statement hi def link sisu_sub_header_identifier Statement hi def link sisu_sub_header_original Statement hi def link sisu_sub_header_links Statement hi def link sisu_sub_header_notes Statement hi def link sisu_sub_header_make Statement hi def link sisu_heading Title hi def link sisu_structure Operator hi def link sisu_contain Include hi def link sisu_mark_endnote Delimiter hi def link sisu_require NonText hi def link sisu_link NonText hi def link sisu_linked String hi def link sisu_fontface Delimiter hi def link sisu_strikeout DiffDelete hi def link sisu_content_alt Special hi def link sisu_sem_content SpecialKey hi def link sisu_sem_block Special hi def link sisu_sem_marker Visual "hi def link sisu_sem_marker Structure hi def link sisu_sem_marker_block MatchParen hi def link sisu_sem_ex_marker FoldColumn hi def link sisu_sem_ex_marker_block Folded hi def link sisu_sem_ex_content Comment "hi def link sisu_sem_ex_content SpecialKey hi def link sisu_sem_ex_block Comment hi def link sisu_index SpecialKey hi def link sisu_index_block Visual hi def link sisu_content_endnote Special hi def link sisu_control Delimiter hi def link sisu_within_index Delimiter hi def link sisu_within_index_ignore SpecialKey hi def link sisu_ocn Include hi def link sisu_number Number hi def link sisu_identifier Function hi def link sisu_underline Underlined hi def link sisu_markpara Include hi def link sisu_marktail Include hi def link sisu_mark Identifier hi def link sisu_break Structure hi def link sisu_html Type hi def link sisu_action Identifier hi def link sisu_comment Comment hi def link sisu_error_sem_marker Error hi def link sisu_error_wspace Error hi def link sisu_error Error let b:current_syntax = "sisu" let &cpo = s:cpo_save unlet s:cpo_save PK!# vim80/syntax/scilab.vimnu[" " Vim syntax file " Language : Scilab " Maintainer : Benoit Hamelin " File type : *.sci (see :help filetype) " History " 28jan2002 benoith 0.1 Creation. Adapted from matlab.vim. " 04feb2002 benoith 0.5 Fixed bugs with constant highlighting. " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Reserved words. syn keyword scilabStatement abort clear clearglobal end exit global mode predef quit resume syn keyword scilabStatement return syn keyword scilabFunction function endfunction funptr syn keyword scilabPredicate null iserror isglobal syn keyword scilabKeyword typename syn keyword scilabDebug debug pause what where whereami whereis who whos syn keyword scilabRepeat for while break syn keyword scilabConditional if then else elseif syn keyword scilabMultiplex select case " Reserved constants. syn match scilabConstant "\(%\)[0-9A-Za-z?!#$]\+" syn match scilabBoolean "\(%\)[FTft]\>" " Delimiters and operators. syn match scilabDelimiter "[][;,()]" syn match scilabComparison "[=~]=" syn match scilabComparison "[<>]=\=" syn match scilabComparison "<>" syn match scilabLogical "[&|~]" syn match scilabAssignment "=" syn match scilabArithmetic "[+-]" syn match scilabArithmetic "\.\=[*/\\]\.\=" syn match scilabArithmetic "\.\=^" syn match scilabRange ":" syn match scilabMlistAccess "\." syn match scilabLineContinuation "\.\{2,}" syn match scilabTransposition "[])a-zA-Z0-9?!_#$.]'"lc=1 " Comments and tools. syn keyword scilabTodo TODO todo FIXME fixme TBD tbd contained syn match scilabComment "//.*$" contains=scilabTodo " Constants. syn match scilabNumber "[0-9]\+\(\.[0-9]*\)\=\([DEde][+-]\=[0-9]\+\)\=" syn match scilabNumber "\.[0-9]\+\([DEde][+-]\=[0-9]\+\)\=" syn region scilabString start=+'+ skip=+''+ end=+'+ oneline syn region scilabString start=+"+ end=+"+ oneline " Identifiers. syn match scilabIdentifier "\<[A-Za-z?!_#$][A-Za-z0-9?!_#$]*\>" syn match scilabOverload "%[A-Za-z0-9?!_#$]\+_[A-Za-z0-9?!_#$]\+" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link scilabStatement Statement hi def link scilabFunction Keyword hi def link scilabPredicate Keyword hi def link scilabKeyword Keyword hi def link scilabDebug Debug hi def link scilabRepeat Repeat hi def link scilabConditional Conditional hi def link scilabMultiplex Conditional hi def link scilabConstant Constant hi def link scilabBoolean Boolean hi def link scilabDelimiter Delimiter hi def link scilabMlistAccess Delimiter hi def link scilabComparison Operator hi def link scilabLogical Operator hi def link scilabAssignment Operator hi def link scilabArithmetic Operator hi def link scilabRange Operator hi def link scilabLineContinuation Underlined hi def link scilabTransposition Operator hi def link scilabTodo Todo hi def link scilabComment Comment hi def link scilabNumber Number hi def link scilabString String hi def link scilabIdentifier Identifier hi def link scilabOverload Special let b:current_syntax = "scilab" "EOF vim: ts=4 noet tw=100 sw=4 sts=0 PK! jvim80/syntax/htmlcheetah.vimnu[" Vim syntax file " Language: HTML with Cheetah tags " Maintainer: Max Ischenko " Last Change: 2003-05-11 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'html' endif runtime! syntax/cheetah.vim runtime! syntax/html.vim unlet b:current_syntax syntax cluster htmlPreproc add=cheetahPlaceHolder syntax cluster htmlString add=cheetahPlaceHolder let b:current_syntax = "htmlcheetah" PK!њ5 vim80/syntax/colortest.vimnu[" Vim script for testing colors " Maintainer: Bram Moolenaar " Contributors: Rafael Garcia-Suarez, Charles Campbell " Last Change: 2008 Jun 04 " edit this file, then do ":source %", and check if the colors match " black black_on_white white_on_black " black_on_black black_on_black " darkred darkred_on_white white_on_darkred " darkred_on_black black_on_darkred " darkgreen darkgreen_on_white white_on_darkgreen " darkgreen_on_black black_on_darkgreen " brown brown_on_white white_on_brown " brown_on_black black_on_brown " darkblue darkblue_on_white white_on_darkblue " darkblue_on_black black_on_darkblue " darkmagenta darkmagenta_on_white white_on_darkmagenta " darkmagenta_on_black black_on_darkmagenta " darkcyan darkcyan_on_white white_on_darkcyan " darkcyan_on_black black_on_darkcyan " lightgray lightgray_on_white white_on_lightgray " lightgray_on_black black_on_lightgray " darkgray darkgray_on_white white_on_darkgray " darkgray_on_black black_on_darkgray " red red_on_white white_on_red " red_on_black black_on_red " green green_on_white white_on_green " green_on_black black_on_green " yellow yellow_on_white white_on_yellow " yellow_on_black black_on_yellow " blue blue_on_white white_on_blue " blue_on_black black_on_blue " magenta magenta_on_white white_on_magenta " magenta_on_black black_on_magenta " cyan cyan_on_white white_on_cyan " cyan_on_black black_on_cyan " white white_on_white white_on_white " white_on_black black_on_white " grey grey_on_white white_on_grey " grey_on_black black_on_grey " lightred lightred_on_white white_on_lightred " lightred_on_black black_on_lightred " lightgreen lightgreen_on_white white_on_lightgreen " lightgreen_on_black black_on_lightgreen " lightyellow lightyellow_on_white white_on_lightyellow " lightyellow_on_black black_on_lightyellow " lightblue lightblue_on_white white_on_lightblue " lightblue_on_black black_on_lightblue " lightmagenta lightmagenta_on_white white_on_lightmagenta " lightmagenta_on_black black_on_lightmagenta " lightcyan lightcyan_on_white white_on_lightcyan " lightcyan_on_black black_on_lightcyan " Open this file in a window if it isn't edited yet. " Use the current window if it's empty. if expand('%:p') != expand(':p') let s:fname = expand('') if exists('*fnameescape') let s:fname = fnameescape(s:fname) else let s:fname = escape(s:fname, ' \|') endif if &mod || line('$') != 1 || getline(1) != '' exe "new " . s:fname else exe "edit " . s:fname endif unlet s:fname endif syn clear 8 while search("_on_", "W") < 55 let col1 = substitute(expand(""), '\(\a\+\)_on_\a\+', '\1', "") let col2 = substitute(expand(""), '\a\+_on_\(\a\+\)', '\1', "") exec 'hi col_'.col1.'_'.col2.' ctermfg='.col1.' guifg='.col1.' ctermbg='.col2.' guibg='.col2 exec 'syn keyword col_'.col1.'_'.col2.' '.col1.'_on_'.col2 endwhile 8,54g/^" \a/exec 'hi col_'.expand("").' ctermfg='.expand("").' guifg='.expand("")| exec 'syn keyword col_'.expand("")." ".expand("") nohlsearch PK!- vim80/syntax/datascript.vimnu[" Vim syntax file " Language: DataScript " Maintainer: Dominique Pelle " Last Change: 2015 Jul 30 " " DataScript is a formal language for modelling binary datatypes, " bitstreams or file formats. For more information, see: " " http://dstools.sourceforge.net/DataScriptLanguageOverview.html " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim syn keyword dsPackage import package syn keyword dsType bit bool string syn keyword dsType int int8 int16 int32 int64 syn keyword dsType uint8 uint16 uint32 uint64 syn keyword dsType varint16 varint32 varint64 syn keyword dsType varuint16 varuint32 varuint64 syn keyword dsType leint16 leint32 leint64 syn keyword dsType leuint16 leuint32 leuint64 syn keyword dsEndian little big syn keyword dsAlign align syn keyword dsLabel case default syn keyword dsConditional if condition syn keyword dsBoolean true false syn keyword dsCompound union choice on enum bitmask subtype explicit syn keyword dsKeyword function return syn keyword dsOperator sizeof bitsizeof lengthof is sum forall in syn keyword dsStorageClass const syn keyword dsTodo contained TODO FIXME XXX syn keyword dsSql sql sql_table sql_database sql_pragma sql_index syn keyword dsSql sql_integer sql_metadata sql_key sql_virtual syn keyword dsSql using reference_key foreign_key to " dsCommentGroup allows adding matches for special things in comments. syn cluster dsCommentGroup contains=dsTodo syn match dsOffset display "^\s*[a-zA-Z_:\.][a-zA-Z0-9_:\.]*\s*:" syn match dsNumber display "\<\d\+\>" syn match dsNumberHex display "\<0[xX]\x\+\>" syn match dsNumberBin display "\<[01]\+[bB]\>" contains=dsBinaryB syn match dsBinaryB display contained "[bB]\>" syn match dsOctal display "\<0\o\+\>" contains=dsOctalZero syn match dsOctalZero display contained "\<0" syn match dsOctalError display "\<0\o*[89]\d*\>" syn match dsCommentError display "\*/" syn match dsCommentStartError display "/\*"me=e-1 contained syn region dsCommentL \ start="//" skip="\\$" end="$" keepend \ contains=@dsCommentGroup,@Spell syn region dsComment \ matchgroup=dsCommentStart start="/\*" end="\*/" \ contains=@dsCommentGroup,dsCommentStartError,@Spell extend syn region dsString \ start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell syn sync ccomment dsComment " Define the default highlighting. hi def link dsType Type hi def link dsEndian StorageClass hi def link dsStorageClass StorageClass hi def link dsAlign Label hi def link dsLabel Label hi def link dsOffset Label hi def link dsSql PreProc hi def link dsCompound Structure hi def link dsConditional Conditional hi def link dsBoolean Boolean hi def link dsKeyword Statement hi def link dsString String hi def link dsNumber Number hi def link dsNumberBin Number hi def link dsBinaryB Special hi def link dsOctal Number hi def link dsOctalZero Special hi def link dsOctalError Error hi def link dsNumberHex Number hi def link dsTodo Todo hi def link dsOperator Operator hi def link dsPackage Include hi def link dsCommentError Error hi def link dsCommentStartError Error hi def link dsCommentStart dsComment hi def link dsCommentL dsComment hi def link cCommentL dsComment hi def link dsComment Comment let b:current_syntax = "datascript" let &cpo = s:keepcpo unlet s:keepcpo PK!}WWvim80/syntax/redif.vimnu[" Vim syntax file " Language: ReDIF " Maintainer: Axel Castellane " Last Change: 2013 April 17 " Original Author: Axel Castellane " Source: http://openlib.org/acmes/root/docu/redif_1.html " File Extension: rdf " Note: The ReDIF format is used by RePEc. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " ReDIF is case-insensitive syntax case ignore " Structure: Some fields determine what fields can come next. For example: " Template-Type " *-Name " File-URL " *-Institution " Those fields span a syntax region over several lines so that these regions " can only contain their respective items. " Any line which is not a correct template or part of an argument is an error. " This comes at the very beginning, so it has the lowest priority and will " only match if nothing else did. syntax match redifWrongLine /^.\+/ display highlight def link redifWrongLine redifError " Comments must start with # and it must be the first character of the line, " otherwise I believe that they are considered as part of an argument. syntax match redifComment /^#.*/ containedin=ALL display " Defines the 9 possible multi-lines regions of Template-Type and the fields " they can contain. syntax region redifRegionTemplatePaper start=/^Template-Type:\_s*ReDIF-Paper \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsPaper,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold syntax region redifRegionTemplateArticle start=/^Template-Type:\_s*ReDIF-Article \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsArticle,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold syntax region redifRegionTemplateChapter start=/^Template-Type:\_s*ReDIF-Chapter \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsChapter,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold syntax region redifRegionTemplateBook start=/^Template-Type:\_s*ReDIF-Book \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsBook,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold syntax region redifRegionTemplateSoftware start=/^Template-Type:\_s*ReDIF-Software \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsSoftware,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold syntax region redifRegionTemplateArchive start=/^Template-Type:\_s*ReDIF-Archive \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsArchive,redifWrongLine fold syntax region redifRegionTemplateSeries start=/^Template-Type:\_s*ReDIF-Series \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsSeries,redifWrongLine,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold syntax region redifRegionTemplateInstitution start=/^Template-Type:\_s*ReDIF-Institution \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsInstitution,redifWrongLine,redifRegionClusterPrimary,redifRegionClusterSecondary,redifRegionClusterTertiary,redifRegionClusterQuaternary fold syntax region redifRegionTemplatePerson start=/^Template-Type:\_s*ReDIF-Person \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsPerson,redifWrongLine,redifRegionClusterWorkplace fold " All fields are foldable (These come before clusters, so they have lower " priority). So they are contained in a foldable syntax region. syntax region redifContainerFieldsPaper start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldLanguage,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNumber,redifFieldCreationDate,redifFieldRevisionDate,redifFieldPublicationStatus,redifFieldNote,redifFieldLength,redifFieldSeries,redifFieldAvailability,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldRestriction,redifFieldPrice,redifFieldNotification,redifFieldPublicationType,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsArticle start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldLanguage,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNumber,redifFieldCreationDate,redifFieldPublicationStatus,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldRestriction,redifFieldPrice,redifFieldNotification,redifFieldPublicationType,redifFieldJournal,redifFieldVolume,redifFieldYear,redifFieldIssue,redifFieldMonth,redifFieldPages,redifFieldNumber,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsChapter start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfWork,redifFieldTitle,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldBookTitle,redifFieldYear,redifFieldMonth,redifFieldPages,redifFieldChapter,redifFieldVolume,redifFieldEdition,redifFieldSeries,redifFieldISBN,redifFieldPublicationStatus,redifFieldNote,redifFieldInBook,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsBook start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldContactEmail,redifFieldYear,redifFieldMonth,redifFieldVolume,redifFieldEdition,redifFieldSeries,redifFieldISBN,redifFieldPublicationStatus,redifFieldNote,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldHasChapter,redifFieldPrice,redifFieldOrderURL,redifFieldNumber,redifFieldCreationDate,redifFieldPublicationDate,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsSoftware start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfWork,redifFieldTitle,redifFieldProgrammingLanguage,redifFieldAbstract,redifFieldNumber,redifFieldVersion,redifFieldClassificationJEL,redifFieldKeywords,redifFieldSize,redifFieldSeries,redifFieldCreationDate,redifFieldRevisionDate,redifFieldNote,redifFieldRequires,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsArchive start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfArchive,redifFieldURL,redifFieldMaintainerEmail,redifFieldName,redifFieldMaintainerName,redifFieldMaintainerPhone,redifFieldMaintainerFax,redifFieldClassificationJEL,redifFieldHomepage,redifFieldDescription,redifFieldNotification,redifFieldRestriction,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsSeries start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldName,redifFieldHandleOfSeries,redifFieldMaintainerEmail,redifFieldType,redifFieldOrderEmail,redifFieldOrderHomepage,redifFieldOrderPostal,redifFieldPrice,redifFieldRestriction,redifFieldMaintainerPhone,redifFieldMaintainerFax,redifFieldMaintainerName,redifFieldDescription,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNotification,redifFieldISSN,redifFieldFollowup,redifFieldPredecessor,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsInstitution start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfInstitution,redifFieldPrimaryDefunct,redifFieldSecondaryDefunct,redifFieldTertiaryDefunct,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsPerson start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfPerson,redifFieldNameFull,redifFieldNameFirst,redifFieldNameLast,redifFieldNamePrefix,redifFieldNameMiddle,redifFieldNameSuffix,redifFieldNameASCII,redifFieldEmail,redifFieldHomepage,redifFieldFax,redifFieldPostal,redifFieldPhone,redifFieldWorkplaceOrganization,redifFieldAuthorPaper,redifFieldAuthorArticle,redifFieldAuthorSoftware,redifFieldAuthorBook,redifFieldAuthorChapter,redifFieldEditorBook,redifFieldEditorSeries,redifFieldClassificationJEL,redifFieldShortId,redifFieldLastLoginDate,redifFieldRegisteredDate,redifWrongLine contained transparent fold " Defines the 10 possible clusters and what they can contain " A field not in the cluster ends the cluster. syntax region redifRegionClusterWorkplace start=/^Workplace-Name:/ skip=/^Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsWorkplace fold syntax region redifRegionClusterPrimary start=/^Primary-Name:/ skip=/^Primary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsPrimary fold syntax region redifRegionClusterSecondary start=/^Secondary-Name:/ skip=/^Secondary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsSecondary fold syntax region redifRegionClusterTertiary start=/^Tertiary-Name:/ skip=/^Tertiary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsTertiary fold syntax region redifRegionClusterQuaternary start=/^Quaternary-Name:/ skip=/^Quaternary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsQuaternary fold syntax region redifRegionClusterProvider start=/^Provider-Name:/ skip=/^Provider-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsProvider fold syntax region redifRegionClusterPublisher start=/^Publisher-Name:/ skip=/^Publisher-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsPublisher fold syntax region redifRegionClusterAuthor start=/^Author-Name:/ skip=/^Author-\%(Name\%(-First\|-Last\)\|Homepage\|Email\|Fax\|Postal\|Phone\|Person\|Workplace-Name\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifRegionClusterAuthorWorkplace,redifContainerFieldsAuthor fold syntax region redifRegionClusterEditor start=/^Editor-Name:/ skip=/^Editor-\%(Name\%(-First\|-Last\)\|Homepage\|Email\|Fax\|Postal\|Phone\|Person\|Workplace-Name\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifRegionClusterEditorWorkplace,redifContainerFieldsEditor fold syntax region redifRegionClusterFile start=/^File-URL:/ skip=/^File-\%(Format\|Function\|Size\|Restriction\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsFile fold " The foldable containers of the clusters. syntax region redifContainerFieldsWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldWorkplaceName,redifFieldWorkplaceHomepage,redifFieldWorkplaceNameEnglish,redifFieldWorkplacePostal,redifFieldWorkplaceLocation,redifFieldWorkplaceEmail,redifFieldWorkplacePhone,redifFieldWorkplaceFax,redifFieldWorkplaceInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsPrimary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldPrimaryName,redifFieldPrimaryHomepage,redifFieldPrimaryNameEnglish,redifFieldPrimaryPostal,redifFieldPrimaryLocation,redifFieldPrimaryEmail,redifFieldPrimaryPhone,redifFieldPrimaryFax,redifFieldPrimaryInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsSecondary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldSecondaryName,redifFieldSecondaryHomepage,redifFieldSecondaryNameEnglish,redifFieldSecondaryPostal,redifFieldSecondaryLocation,redifFieldSecondaryEmail,redifFieldSecondaryPhone,redifFieldSecondaryFax,redifFieldSecondaryInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsTertiary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTertiaryName,redifFieldTertiaryHomepage,redifFieldTertiaryNameEnglish,redifFieldTertiaryPostal,redifFieldTertiaryLocation,redifFieldTertiaryEmail,redifFieldTertiaryPhone,redifFieldTertiaryFax,redifFieldTertiaryInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsQuaternary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldQuaternaryName,redifFieldQuaternaryHomepage,redifFieldQuaternaryNameEnglish,redifFieldQuaternaryPostal,redifFieldQuaternaryLocation,redifFieldQuaternaryEmail,redifFieldQuaternaryPhone,redifFieldQuaternaryFax,redifFieldQuaternaryInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsProvider start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldProviderName,redifFieldProviderHomepage,redifFieldProviderNameEnglish,redifFieldProviderPostal,redifFieldProviderLocation,redifFieldProviderEmail,redifFieldProviderPhone,redifFieldProviderFax,redifFieldProviderInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsPublisher start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldPublisherName,redifFieldPublisherHomepage,redifFieldPublisherNameEnglish,redifFieldPublisherPostal,redifFieldPublisherLocation,redifFieldPublisherEmail,redifFieldPublisherPhone,redifFieldPublisherFax,redifFieldPublisherInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsAuthor start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldAuthorName,redifFieldAuthorNameFirst,redifFieldAuthorNameLast,redifFieldAuthorHomepage,redifFieldAuthorEmail,redifFieldAuthorFax,redifFieldAuthorPostal,redifFieldAuthorPhone,redifFieldAuthorPerson,redifWrongLine contained transparent fold syntax region redifContainerFieldsEditor start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldEditorName,redifFieldEditorNameFirst,redifFieldEditorNameLast,redifFieldEditorHomepage,redifFieldEditorEmail,redifFieldEditorFax,redifFieldEditorPostal,redifFieldEditorPhone,redifFieldEditorPerson,redifWrongLine contained transparent fold syntax region redifContainerFieldsFile start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldFileURL,redifFieldFileFormat,redifFieldFileFunction,redifFieldFileSize,redifFieldFileRestriction,redifWrongLine contained transparent fold " The two clusters in cluster (must be presented after to have priority over " fields containers) syntax region redifRegionClusterAuthorWorkplace start=/^Author-Workplace-Name:/ skip=/^Author-Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsAuthorWorkplace fold syntax region redifRegionClusterEditorWorkplace start=/^Editor-Workplace-Name:/ skip=/^Editor-Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsEditorWorkplace fold " Their foldable fields containers syntax region redifContainerFieldsAuthorWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldAuthorWorkplaceName,redifFieldAuthorWorkplaceHomepage,redifFieldAuthorWorkplaceNameEnglish,redifFieldAuthorWorkplacePostal,redifFieldAuthorWorkplaceLocation,redifFieldAuthorWorkplaceEmail,redifFieldAuthorWorkplacePhone,redifFieldAuthorWorkplaceFax,redifFieldAuthorWorkplaceInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsEditorWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldEditorWorkplaceName,redifFieldEditorWorkplaceHomepage,redifFieldEditorWorkplaceNameEnglish,redifFieldEditorWorkplacePostal,redifFieldEditorWorkplaceLocation,redifFieldEditorWorkplaceEmail,redifFieldEditorWorkplacePhone,redifFieldEditorWorkplaceFax,redifFieldEditorWorkplaceInstitution,redifWrongLine contained transparent fold " All the possible fields " Note: The "Handle" field is handled a little bit differently, because it " does not have the same meaning depending on the Template-Type. See: " /redifFieldHandleOf.... syntax match redifFieldAbstract /^Abstract:/ skipwhite skipempty nextgroup=redifArgumentAbstract contained syntax match redifFieldArticleHandle /^Article-Handle:/ skipwhite skipempty nextgroup=redifArgumentArticleHandle contained syntax match redifFieldAuthorArticle /^Author-Article:/ skipwhite skipempty nextgroup=redifArgumentAuthorArticle contained syntax match redifFieldAuthorBook /^Author-Book:/ skipwhite skipempty nextgroup=redifArgumentAuthorBook contained syntax match redifFieldAuthorChapter /^Author-Chapter:/ skipwhite skipempty nextgroup=redifArgumentAuthorChapter contained syntax match redifFieldAuthorEmail /^Author-Email:/ skipwhite skipempty nextgroup=redifArgumentAuthorEmail contained syntax match redifFieldAuthorFax /^Author-Fax:/ skipwhite skipempty nextgroup=redifArgumentAuthorFax contained syntax match redifFieldAuthorHomepage /^Author-Homepage:/ skipwhite skipempty nextgroup=redifArgumentAuthorHomepage contained syntax match redifFieldAuthorName /^Author-Name:/ skipwhite skipempty nextgroup=redifArgumentAuthorName contained syntax match redifFieldAuthorNameFirst /^Author-Name-First:/ skipwhite skipempty nextgroup=redifArgumentAuthorNameFirst contained syntax match redifFieldAuthorNameLast /^Author-Name-Last:/ skipwhite skipempty nextgroup=redifArgumentAuthorNameLast contained syntax match redifFieldAuthorPaper /^Author-Paper:/ skipwhite skipempty nextgroup=redifArgumentAuthorPaper contained syntax match redifFieldAuthorPerson /^Author-Person:/ skipwhite skipempty nextgroup=redifArgumentAuthorPerson contained syntax match redifFieldAuthorPhone /^Author-Phone:/ skipwhite skipempty nextgroup=redifArgumentAuthorPhone contained syntax match redifFieldAuthorPostal /^Author-Postal:/ skipwhite skipempty nextgroup=redifArgumentAuthorPostal contained syntax match redifFieldAuthorSoftware /^Author-Software:/ skipwhite skipempty nextgroup=redifArgumentAuthorSoftware contained syntax match redifFieldAuthorWorkplaceEmail /^Author-Workplace-Email:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceEmail contained syntax match redifFieldAuthorWorkplaceFax /^Author-Workplace-Fax:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceFax contained syntax match redifFieldAuthorWorkplaceHomepage /^Author-Workplace-Homepage:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceHomepage contained syntax match redifFieldAuthorWorkplaceInstitution /^Author-Workplace-Institution:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceInstitution contained syntax match redifFieldAuthorWorkplaceLocation /^Author-Workplace-Location:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceLocation contained syntax match redifFieldAuthorWorkplaceName /^Author-Workplace-Name:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceName contained syntax match redifFieldAuthorWorkplaceNameEnglish /^Author-Workplace-Name-English:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceNameEnglish contained syntax match redifFieldAuthorWorkplacePhone /^Author-Workplace-Phone:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplacePhone contained syntax match redifFieldAuthorWorkplacePostal /^Author-Workplace-Postal:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplacePostal contained syntax match redifFieldAvailability /^Availability:/ skipwhite skipempty nextgroup=redifArgumentAvailability contained syntax match redifFieldBookHandle /^Book-Handle:/ skipwhite skipempty nextgroup=redifArgumentBookHandle contained syntax match redifFieldBookTitle /^Book-Title:/ skipwhite skipempty nextgroup=redifArgumentBookTitle contained syntax match redifFieldChapterHandle /^Chapter-Handle:/ skipwhite skipempty nextgroup=redifArgumentChapterHandle contained syntax match redifFieldChapter /^Chapter:/ skipwhite skipempty nextgroup=redifArgumentChapter contained syntax match redifFieldClassificationJEL /^Classification-JEL:/ skipwhite skipempty nextgroup=redifArgumentClassificationJEL contained syntax match redifFieldContactEmail /^Contact-Email:/ skipwhite skipempty nextgroup=redifArgumentContactEmail contained syntax match redifFieldCreationDate /^Creation-Date:/ skipwhite skipempty nextgroup=redifArgumentCreationDate contained syntax match redifFieldDescription /^Description:/ skipwhite skipempty nextgroup=redifArgumentDescription contained syntax match redifFieldEdition /^Edition:/ skipwhite skipempty nextgroup=redifArgumentEdition contained syntax match redifFieldEditorBook /^Editor-Book:/ skipwhite skipempty nextgroup=redifArgumentEditorBook contained syntax match redifFieldEditorEmail /^Editor-Email:/ skipwhite skipempty nextgroup=redifArgumentEditorEmail contained syntax match redifFieldEditorFax /^Editor-Fax:/ skipwhite skipempty nextgroup=redifArgumentEditorFax contained syntax match redifFieldEditorHomepage /^Editor-Homepage:/ skipwhite skipempty nextgroup=redifArgumentEditorHomepage contained syntax match redifFieldEditorName /^Editor-Name:/ skipwhite skipempty nextgroup=redifArgumentEditorName contained syntax match redifFieldEditorNameFirst /^Editor-Name-First:/ skipwhite skipempty nextgroup=redifArgumentEditorNameFirst contained syntax match redifFieldEditorNameLast /^Editor-Name-Last:/ skipwhite skipempty nextgroup=redifArgumentEditorNameLast contained syntax match redifFieldEditorPerson /^Editor-Person:/ skipwhite skipempty nextgroup=redifArgumentEditorPerson contained syntax match redifFieldEditorPhone /^Editor-Phone:/ skipwhite skipempty nextgroup=redifArgumentEditorPhone contained syntax match redifFieldEditorPostal /^Editor-Postal:/ skipwhite skipempty nextgroup=redifArgumentEditorPostal contained syntax match redifFieldEditorSeries /^Editor-Series:/ skipwhite skipempty nextgroup=redifArgumentEditorSeries contained syntax match redifFieldEditorWorkplaceEmail /^Editor-Workplace-Email:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceEmail contained syntax match redifFieldEditorWorkplaceFax /^Editor-Workplace-Fax:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceFax contained syntax match redifFieldEditorWorkplaceHomepage /^Editor-Workplace-Homepage:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceHomepage contained syntax match redifFieldEditorWorkplaceInstitution /^Editor-Workplace-Institution:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceInstitution contained syntax match redifFieldEditorWorkplaceLocation /^Editor-Workplace-Location:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceLocation contained syntax match redifFieldEditorWorkplaceName /^Editor-Workplace-Name:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceName contained syntax match redifFieldEditorWorkplaceNameEnglish /^Editor-Workplace-Name-English:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceNameEnglish contained syntax match redifFieldEditorWorkplacePhone /^Editor-Workplace-Phone:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplacePhone contained syntax match redifFieldEditorWorkplacePostal /^Editor-Workplace-Postal:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplacePostal contained syntax match redifFieldEmail /^Email:/ skipwhite skipempty nextgroup=redifArgumentEmail contained syntax match redifFieldFax /^Fax:/ skipwhite skipempty nextgroup=redifArgumentFax contained syntax match redifFieldFileFormat /^File-Format:/ skipwhite skipempty nextgroup=redifArgumentFileFormat contained syntax match redifFieldFileFunction /^File-Function:/ skipwhite skipempty nextgroup=redifArgumentFileFunction contained syntax match redifFieldFileRestriction /^File-Restriction:/ skipwhite skipempty nextgroup=redifArgumentFileRestriction contained syntax match redifFieldFileSize /^File-Size:/ skipwhite skipempty nextgroup=redifArgumentFileSize contained syntax match redifFieldFileURL /^File-URL:/ skipwhite skipempty nextgroup=redifArgumentFileURL contained syntax match redifFieldFollowup /^Followup:/ skipwhite skipempty nextgroup=redifArgumentFollowup contained syntax match redifFieldHandleOfArchive /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfArchive contained syntax match redifFieldHandleOfInstitution /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfInstitution contained syntax match redifFieldHandleOfPerson /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfPerson contained syntax match redifFieldHandleOfSeries /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfSeries contained syntax match redifFieldHandleOfWork /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfWork contained syntax match redifFieldHasChapter /^HasChapter:/ skipwhite skipempty nextgroup=redifArgumentHasChapter contained syntax match redifFieldHomepage /^Homepage:/ skipwhite skipempty nextgroup=redifArgumentHomepage contained syntax match redifFieldInBook /^In-Book:/ skipwhite skipempty nextgroup=redifArgumentInBook contained syntax match redifFieldISBN /^ISBN:/ skipwhite skipempty nextgroup=redifArgumentISBN contained syntax match redifFieldISSN /^ISSN:/ skipwhite skipempty nextgroup=redifArgumentISSN contained syntax match redifFieldIssue /^Issue:/ skipwhite skipempty nextgroup=redifArgumentIssue contained syntax match redifFieldJournal /^Journal:/ skipwhite skipempty nextgroup=redifArgumentJournal contained syntax match redifFieldKeywords /^Keywords:/ skipwhite skipempty nextgroup=redifArgumentKeywords contained syntax match redifFieldKeywords /^Keywords:/ skipwhite skipempty nextgroup=redifArgumentKeywords contained syntax match redifFieldLanguage /^Language:/ skipwhite skipempty nextgroup=redifArgumentLanguage contained syntax match redifFieldLastLoginDate /^Last-Login-Date:/ skipwhite skipempty nextgroup=redifArgumentLastLoginDate contained syntax match redifFieldLength /^Length:/ skipwhite skipempty nextgroup=redifArgumentLength contained syntax match redifFieldMaintainerEmail /^Maintainer-Email:/ skipwhite skipempty nextgroup=redifArgumentMaintainerEmail contained syntax match redifFieldMaintainerFax /^Maintainer-Fax:/ skipwhite skipempty nextgroup=redifArgumentMaintainerFax contained syntax match redifFieldMaintainerName /^Maintainer-Name:/ skipwhite skipempty nextgroup=redifArgumentMaintainerName contained syntax match redifFieldMaintainerPhone /^Maintainer-Phone:/ skipwhite skipempty nextgroup=redifArgumentMaintainerPhone contained syntax match redifFieldMonth /^Month:/ skipwhite skipempty nextgroup=redifArgumentMonth contained syntax match redifFieldNameASCII /^Name-ASCII:/ skipwhite skipempty nextgroup=redifArgumentNameASCII contained syntax match redifFieldNameFirst /^Name-First:/ skipwhite skipempty nextgroup=redifArgumentNameFirst contained syntax match redifFieldNameFull /^Name-Full:/ skipwhite skipempty nextgroup=redifArgumentNameFull contained syntax match redifFieldNameLast /^Name-Last:/ skipwhite skipempty nextgroup=redifArgumentNameLast contained syntax match redifFieldNameMiddle /^Name-Middle:/ skipwhite skipempty nextgroup=redifArgumentNameMiddle contained syntax match redifFieldNamePrefix /^Name-Prefix:/ skipwhite skipempty nextgroup=redifArgumentNamePrefix contained syntax match redifFieldNameSuffix /^Name-Suffix:/ skipwhite skipempty nextgroup=redifArgumentNameSuffix contained syntax match redifFieldName /^Name:/ skipwhite skipempty nextgroup=redifArgumentName contained syntax match redifFieldNote /^Note:/ skipwhite skipempty nextgroup=redifArgumentNote contained syntax match redifFieldNotification /^Notification:/ skipwhite skipempty nextgroup=redifArgumentNotification contained syntax match redifFieldNumber /^Number:/ skipwhite skipempty nextgroup=redifArgumentNumber contained syntax match redifFieldOrderEmail /^Order-Email:/ skipwhite skipempty nextgroup=redifArgumentOrderEmail contained syntax match redifFieldOrderHomepage /^Order-Homepage:/ skipwhite skipempty nextgroup=redifArgumentOrderHomepage contained syntax match redifFieldOrderPostal /^Order-Postal:/ skipwhite skipempty nextgroup=redifArgumentOrderPostal contained syntax match redifFieldOrderURL /^Order-URL:/ skipwhite skipempty nextgroup=redifArgumentOrderURL contained syntax match redifFieldPages /^Pages:/ skipwhite skipempty nextgroup=redifArgumentPages contained syntax match redifFieldPaperHandle /^Paper-Handle:/ skipwhite skipempty nextgroup=redifArgumentPaperHandle contained syntax match redifFieldPhone /^Phone:/ skipwhite skipempty nextgroup=redifArgumentPhone contained syntax match redifFieldPostal /^Postal:/ skipwhite skipempty nextgroup=redifArgumentPostal contained syntax match redifFieldPredecessor /^Predecessor:/ skipwhite skipempty nextgroup=redifArgumentPredecessor contained syntax match redifFieldPrice /^Price:/ skipwhite skipempty nextgroup=redifArgumentPrice contained syntax match redifFieldPrimaryDefunct /^Primary-Defunct:/ skipwhite skipempty nextgroup=redifArgumentPrimaryDefunct contained syntax match redifFieldPrimaryEmail /^Primary-Email:/ skipwhite skipempty nextgroup=redifArgumentPrimaryEmail contained syntax match redifFieldPrimaryFax /^Primary-Fax:/ skipwhite skipempty nextgroup=redifArgumentPrimaryFax contained syntax match redifFieldPrimaryHomepage /^Primary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentPrimaryHomepage contained syntax match redifFieldPrimaryInstitution /^Primary-Institution:/ skipwhite skipempty nextgroup=redifArgumentPrimaryInstitution contained syntax match redifFieldPrimaryLocation /^Primary-Location:/ skipwhite skipempty nextgroup=redifArgumentPrimaryLocation contained syntax match redifFieldPrimaryName /^Primary-Name:/ skipwhite skipempty nextgroup=redifArgumentPrimaryName contained syntax match redifFieldPrimaryNameEnglish /^Primary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentPrimaryNameEnglish contained syntax match redifFieldPrimaryPhone /^Primary-Phone:/ skipwhite skipempty nextgroup=redifArgumentPrimaryPhone contained syntax match redifFieldPrimaryPostal /^Primary-Postal:/ skipwhite skipempty nextgroup=redifArgumentPrimaryPostal contained syntax match redifFieldProgrammingLanguage /^Programming-Language:/ skipwhite skipempty nextgroup=redifArgumentProgrammingLanguage contained syntax match redifFieldProviderEmail /^Provider-Email:/ skipwhite skipempty nextgroup=redifArgumentProviderEmail contained syntax match redifFieldProviderFax /^Provider-Fax:/ skipwhite skipempty nextgroup=redifArgumentProviderFax contained syntax match redifFieldProviderHomepage /^Provider-Homepage:/ skipwhite skipempty nextgroup=redifArgumentProviderHomepage contained syntax match redifFieldProviderInstitution /^Provider-Institution:/ skipwhite skipempty nextgroup=redifArgumentProviderInstitution contained syntax match redifFieldProviderLocation /^Provider-Location:/ skipwhite skipempty nextgroup=redifArgumentProviderLocation contained syntax match redifFieldProviderName /^Provider-Name:/ skipwhite skipempty nextgroup=redifArgumentProviderName contained syntax match redifFieldProviderNameEnglish /^Provider-Name-English:/ skipwhite skipempty nextgroup=redifArgumentProviderNameEnglish contained syntax match redifFieldProviderPhone /^Provider-Phone:/ skipwhite skipempty nextgroup=redifArgumentProviderPhone contained syntax match redifFieldProviderPostal /^Provider-Postal:/ skipwhite skipempty nextgroup=redifArgumentProviderPostal contained syntax match redifFieldPublicationDate /^Publication-Date:/ skipwhite skipempty nextgroup=redifArgumentPublicationDate contained syntax match redifFieldPublicationStatus /^Publication-Status:/ skipwhite skipempty nextgroup=redifArgumentPublicationStatus contained syntax match redifFieldPublicationType /^Publication-Type:/ skipwhite skipempty nextgroup=redifArgumentPublicationType contained syntax match redifFieldQuaternaryEmail /^Quaternary-Email:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryEmail contained syntax match redifFieldQuaternaryFax /^Quaternary-Fax:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryFax contained syntax match redifFieldQuaternaryHomepage /^Quaternary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryHomepage contained syntax match redifFieldQuaternaryInstitution /^Quaternary-Institution:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryInstitution contained syntax match redifFieldQuaternaryLocation /^Quaternary-Location:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryLocation contained syntax match redifFieldQuaternaryName /^Quaternary-Name:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryName contained syntax match redifFieldQuaternaryNameEnglish /^Quaternary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryNameEnglish contained syntax match redifFieldQuaternaryPhone /^Quaternary-Phone:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryPhone contained syntax match redifFieldQuaternaryPostal /^Quaternary-Postal:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryPostal contained syntax match redifFieldRegisteredDate /^Registered-Date:/ skipwhite skipempty nextgroup=redifArgumentRegisteredDate contained syntax match redifFieldRequires /^Requires:/ skipwhite skipempty nextgroup=redifArgumentRequires contained syntax match redifFieldRestriction /^Restriction:/ skipwhite skipempty nextgroup=redifArgumentRestriction contained syntax match redifFieldRevisionDate /^Revision-Date:/ skipwhite skipempty nextgroup=redifArgumentRevisionDate contained syntax match redifFieldSecondaryDefunct /^Secondary-Defunct:/ skipwhite skipempty nextgroup=redifArgumentSecondaryDefunct contained syntax match redifFieldSecondaryEmail /^Secondary-Email:/ skipwhite skipempty nextgroup=redifArgumentSecondaryEmail contained syntax match redifFieldSecondaryFax /^Secondary-Fax:/ skipwhite skipempty nextgroup=redifArgumentSecondaryFax contained syntax match redifFieldSecondaryHomepage /^Secondary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentSecondaryHomepage contained syntax match redifFieldSecondaryInstitution /^Secondary-Institution:/ skipwhite skipempty nextgroup=redifArgumentSecondaryInstitution contained syntax match redifFieldSecondaryLocation /^Secondary-Location:/ skipwhite skipempty nextgroup=redifArgumentSecondaryLocation contained syntax match redifFieldSecondaryName /^Secondary-Name:/ skipwhite skipempty nextgroup=redifArgumentSecondaryName contained syntax match redifFieldSecondaryNameEnglish /^Secondary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentSecondaryNameEnglish contained syntax match redifFieldSecondaryPhone /^Secondary-Phone:/ skipwhite skipempty nextgroup=redifArgumentSecondaryPhone contained syntax match redifFieldSecondaryPostal /^Secondary-Postal:/ skipwhite skipempty nextgroup=redifArgumentSecondaryPostal contained syntax match redifFieldSeries /^Series:/ skipwhite skipempty nextgroup=redifArgumentSeries contained syntax match redifFieldShortId /^Short-Id:/ skipwhite skipempty nextgroup=redifArgumentShortId contained syntax match redifFieldSize /^Size:/ skipwhite skipempty nextgroup=redifArgumentSize contained syntax match redifFieldSoftwareHandle /^Software-Handle:/ skipwhite skipempty nextgroup=redifArgumentSoftwareHandle contained syntax match redifFieldTemplateType /^Template-Type:/ skipwhite skipempty nextgroup=redifArgumentTemplateType contained syntax match redifFieldTertiaryDefunct /^Tertiary-Defunct:/ skipwhite skipempty nextgroup=redifArgumentTertiaryDefunct contained syntax match redifFieldTertiaryEmail /^Tertiary-Email:/ skipwhite skipempty nextgroup=redifArgumentTertiaryEmail contained syntax match redifFieldTertiaryFax /^Tertiary-Fax:/ skipwhite skipempty nextgroup=redifArgumentTertiaryFax contained syntax match redifFieldTertiaryHomepage /^Tertiary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentTertiaryHomepage contained syntax match redifFieldTertiaryInstitution /^Tertiary-Institution:/ skipwhite skipempty nextgroup=redifArgumentTertiaryInstitution contained syntax match redifFieldTertiaryLocation /^Tertiary-Location:/ skipwhite skipempty nextgroup=redifArgumentTertiaryLocation contained syntax match redifFieldTertiaryName /^Tertiary-Name:/ skipwhite skipempty nextgroup=redifArgumentTertiaryName contained syntax match redifFieldTertiaryNameEnglish /^Tertiary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentTertiaryNameEnglish contained syntax match redifFieldTertiaryPhone /^Tertiary-Phone:/ skipwhite skipempty nextgroup=redifArgumentTertiaryPhone contained syntax match redifFieldTertiaryPostal /^Tertiary-Postal:/ skipwhite skipempty nextgroup=redifArgumentTertiaryPostal contained syntax match redifFieldTitle /^Title:/ skipwhite skipempty nextgroup=redifArgumentTitle contained syntax match redifFieldType /^Type:/ skipwhite skipempty nextgroup=redifArgumentType contained syntax match redifFieldURL /^URL:/ skipwhite skipempty nextgroup=redifArgumentURL contained syntax match redifFieldVersion /^Version:/ skipwhite skipempty nextgroup=redifArgumentVersion contained syntax match redifFieldVolume /^Volume:/ skipwhite skipempty nextgroup=redifArgumentVolume contained syntax match redifFieldWorkplaceEmail /^Workplace-Email:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceEmail contained syntax match redifFieldWorkplaceFax /^Workplace-Fax:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceFax contained syntax match redifFieldWorkplaceHomepage /^Workplace-Homepage:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceHomepage contained syntax match redifFieldWorkplaceInstitution /^Workplace-Institution:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceInstitution contained syntax match redifFieldWorkplaceLocation /^Workplace-Location:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceLocation contained syntax match redifFieldWorkplaceName /^Workplace-Name:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceName contained syntax match redifFieldWorkplaceNameEnglish /^Workplace-Name-English:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceNameEnglish contained syntax match redifFieldWorkplaceOrganization /^Workplace-Organization:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceOrganization contained syntax match redifFieldWorkplacePhone /^Workplace-Phone:/ skipwhite skipempty nextgroup=redifArgumentWorkplacePhone contained syntax match redifFieldWorkplacePostal /^Workplace-Postal:/ skipwhite skipempty nextgroup=redifArgumentWorkplacePostal contained syntax match redifFieldYear /^Year:/ skipwhite skipempty nextgroup=redifArgumentYear contained highlight def link redifFieldAbstract redifField highlight def link redifFieldArticleHandle redifField highlight def link redifFieldAuthorArticle redifField highlight def link redifFieldAuthorBook redifField highlight def link redifFieldAuthorChapter redifField highlight def link redifFieldAuthorEmail redifField highlight def link redifFieldAuthorFax redifField highlight def link redifFieldAuthorHomepage redifField highlight def link redifFieldAuthorName redifField highlight def link redifFieldAuthorNameFirst redifField highlight def link redifFieldAuthorNameLast redifField highlight def link redifFieldAuthorPaper redifField highlight def link redifFieldAuthorPerson redifField highlight def link redifFieldAuthorPhone redifField highlight def link redifFieldAuthorPostal redifField highlight def link redifFieldAuthorSoftware redifField highlight def link redifFieldAuthorWorkplaceEmail redifField highlight def link redifFieldAuthorWorkplaceFax redifField highlight def link redifFieldAuthorWorkplaceHomepage redifField highlight def link redifFieldAuthorWorkplaceInstitution redifField highlight def link redifFieldAuthorWorkplaceLocation redifField highlight def link redifFieldAuthorWorkplaceName redifField highlight def link redifFieldAuthorWorkplaceNameEnglish redifField highlight def link redifFieldAuthorWorkplacePhone redifField highlight def link redifFieldAuthorWorkplacePostal redifField highlight def link redifFieldAvailability redifField highlight def link redifFieldBookHandle redifField highlight def link redifFieldBookTitle redifField highlight def link redifFieldChapterHandle redifField highlight def link redifFieldChapter redifField highlight def link redifFieldClassificationJEL redifField highlight def link redifFieldContactEmail redifField highlight def link redifFieldCreationDate redifField highlight def link redifFieldDescription redifField highlight def link redifFieldEdition redifField highlight def link redifFieldEditorBook redifField highlight def link redifFieldEditorEmail redifField highlight def link redifFieldEditorFax redifField highlight def link redifFieldEditorHomepage redifField highlight def link redifFieldEditorName redifField highlight def link redifFieldEditorNameFirst redifField highlight def link redifFieldEditorNameLast redifField highlight def link redifFieldEditorPerson redifField highlight def link redifFieldEditorPhone redifField highlight def link redifFieldEditorPostal redifField highlight def link redifFieldEditorSeries redifField highlight def link redifFieldEditorWorkplaceEmail redifField highlight def link redifFieldEditorWorkplaceFax redifField highlight def link redifFieldEditorWorkplaceHomepage redifField highlight def link redifFieldEditorWorkplaceInstitution redifField highlight def link redifFieldEditorWorkplaceLocation redifField highlight def link redifFieldEditorWorkplaceName redifField highlight def link redifFieldEditorWorkplaceNameEnglish redifField highlight def link redifFieldEditorWorkplacePhone redifField highlight def link redifFieldEditorWorkplacePostal redifField highlight def link redifFieldEmail redifField highlight def link redifFieldFax redifField highlight def link redifFieldFileFormat redifField highlight def link redifFieldFileFunction redifField highlight def link redifFieldFileRestriction redifField highlight def link redifFieldFileSize redifField highlight def link redifFieldFileURL redifField highlight def link redifFieldFollowup redifField highlight def link redifFieldHandleOfArchive redifField highlight def link redifFieldHandleOfInstitution redifField highlight def link redifFieldHandleOfPerson redifField highlight def link redifFieldHandleOfSeries redifField highlight def link redifFieldHandleOfWork redifField highlight def link redifFieldHasChapter redifField highlight def link redifFieldHomepage redifField highlight def link redifFieldInBook redifField highlight def link redifFieldISBN redifField highlight def link redifFieldISSN redifField highlight def link redifFieldIssue redifField highlight def link redifFieldJournal redifField highlight def link redifFieldKeywords redifField highlight def link redifFieldKeywords redifField highlight def link redifFieldLanguage redifField highlight def link redifFieldLastLoginDate redifField highlight def link redifFieldLength redifField highlight def link redifFieldMaintainerEmail redifField highlight def link redifFieldMaintainerFax redifField highlight def link redifFieldMaintainerName redifField highlight def link redifFieldMaintainerPhone redifField highlight def link redifFieldMonth redifField highlight def link redifFieldNameASCII redifField highlight def link redifFieldNameFirst redifField highlight def link redifFieldNameFull redifField highlight def link redifFieldNameLast redifField highlight def link redifFieldNameMiddle redifField highlight def link redifFieldNamePrefix redifField highlight def link redifFieldNameSuffix redifField highlight def link redifFieldName redifField highlight def link redifFieldNote redifField highlight def link redifFieldNotification redifField highlight def link redifFieldNumber redifField highlight def link redifFieldOrderEmail redifField highlight def link redifFieldOrderHomepage redifField highlight def link redifFieldOrderPostal redifField highlight def link redifFieldOrderURL redifField highlight def link redifFieldPages redifField highlight def link redifFieldPaperHandle redifField highlight def link redifFieldPhone redifField highlight def link redifFieldPostal redifField highlight def link redifFieldPredecessor redifField highlight def link redifFieldPrice redifField highlight def link redifFieldPrimaryDefunct redifField highlight def link redifFieldPrimaryEmail redifField highlight def link redifFieldPrimaryFax redifField highlight def link redifFieldPrimaryHomepage redifField highlight def link redifFieldPrimaryInstitution redifField highlight def link redifFieldPrimaryLocation redifField highlight def link redifFieldPrimaryName redifField highlight def link redifFieldPrimaryNameEnglish redifField highlight def link redifFieldPrimaryPhone redifField highlight def link redifFieldPrimaryPostal redifField highlight def link redifFieldProgrammingLanguage redifField highlight def link redifFieldProviderEmail redifField highlight def link redifFieldProviderFax redifField highlight def link redifFieldProviderHomepage redifField highlight def link redifFieldProviderInstitution redifField highlight def link redifFieldProviderLocation redifField highlight def link redifFieldProviderName redifField highlight def link redifFieldProviderNameEnglish redifField highlight def link redifFieldProviderPhone redifField highlight def link redifFieldProviderPostal redifField highlight def link redifFieldPublicationDate redifField highlight def link redifFieldPublicationStatus redifField highlight def link redifFieldPublicationType redifField highlight def link redifFieldQuaternaryEmail redifField highlight def link redifFieldQuaternaryFax redifField highlight def link redifFieldQuaternaryHomepage redifField highlight def link redifFieldQuaternaryInstitution redifField highlight def link redifFieldQuaternaryLocation redifField highlight def link redifFieldQuaternaryName redifField highlight def link redifFieldQuaternaryNameEnglish redifField highlight def link redifFieldQuaternaryPhone redifField highlight def link redifFieldQuaternaryPostal redifField highlight def link redifFieldRegisteredDate redifField highlight def link redifFieldRequires redifField highlight def link redifFieldRestriction redifField highlight def link redifFieldRevisionDate redifField highlight def link redifFieldSecondaryDefunct redifField highlight def link redifFieldSecondaryEmail redifField highlight def link redifFieldSecondaryFax redifField highlight def link redifFieldSecondaryHomepage redifField highlight def link redifFieldSecondaryInstitution redifField highlight def link redifFieldSecondaryLocation redifField highlight def link redifFieldSecondaryName redifField highlight def link redifFieldSecondaryNameEnglish redifField highlight def link redifFieldSecondaryPhone redifField highlight def link redifFieldSecondaryPostal redifField highlight def link redifFieldSeries redifField highlight def link redifFieldShortId redifField highlight def link redifFieldSize redifField highlight def link redifFieldSoftwareHandle redifField highlight def link redifFieldTemplateType redifField highlight def link redifFieldTertiaryDefunct redifField highlight def link redifFieldTertiaryEmail redifField highlight def link redifFieldTertiaryFax redifField highlight def link redifFieldTertiaryHomepage redifField highlight def link redifFieldTertiaryInstitution redifField highlight def link redifFieldTertiaryLocation redifField highlight def link redifFieldTertiaryName redifField highlight def link redifFieldTertiaryNameEnglish redifField highlight def link redifFieldTertiaryPhone redifField highlight def link redifFieldTertiaryPostal redifField highlight def link redifFieldTitle redifField highlight def link redifFieldTitle redifField highlight def link redifFieldType redifField highlight def link redifFieldURL redifField highlight def link redifFieldVersion redifField highlight def link redifFieldVolume redifField highlight def link redifFieldWorkplaceEmail redifField highlight def link redifFieldWorkplaceFax redifField highlight def link redifFieldWorkplaceHomepage redifField highlight def link redifFieldWorkplaceInstitution redifField highlight def link redifFieldWorkplaceLocation redifField highlight def link redifFieldWorkplaceName redifField highlight def link redifFieldWorkplaceNameEnglish redifField highlight def link redifFieldWorkplaceOrganization redifField highlight def link redifFieldWorkplacePhone redifField highlight def link redifFieldWorkplacePostal redifField highlight def link redifFieldYear redifField " Deprecated " same as Provider-* " nextgroup=redifArgumentProvider* syntax match redifFieldPublisherEmail /^Publisher-Email:/ skipwhite skipempty nextgroup=redifArgumentProviderEmail contained syntax match redifFieldPublisherFax /^Publisher-Fax:/ skipwhite skipempty nextgroup=redifArgumentProviderFax contained syntax match redifFieldPublisherHomepage /^Publisher-Homepage:/ skipwhite skipempty nextgroup=redifArgumentProviderHomepage contained syntax match redifFieldPublisherInstitution /^Publisher-Institution:/ skipwhite skipempty nextgroup=redifArgumentProviderInstitution contained syntax match redifFieldPublisherLocation /^Publisher-Location:/ skipwhite skipempty nextgroup=redifArgumentProviderLocation contained syntax match redifFieldPublisherName /^Publisher-Name:/ skipwhite skipempty nextgroup=redifArgumentProviderName contained syntax match redifFieldPublisherNameEnglish /^Publisher-Name-English:/ skipwhite skipempty nextgroup=redifArgumentProviderNameEnglish contained syntax match redifFieldPublisherPhone /^Publisher-Phone:/ skipwhite skipempty nextgroup=redifArgumentProviderPhone contained syntax match redifFieldPublisherPostal /^Publisher-Postal:/ skipwhite skipempty nextgroup=redifArgumentProviderPostal contained highlight def link redifFieldPublisherEmail redifFieldDeprecated highlight def link redifFieldPublisherFax redifFieldDeprecated highlight def link redifFieldPublisherHomepage redifFieldDeprecated highlight def link redifFieldPublisherInstitution redifFieldDeprecated highlight def link redifFieldPublisherLocation redifFieldDeprecated highlight def link redifFieldPublisherName redifFieldDeprecated highlight def link redifFieldPublisherNameEnglish redifFieldDeprecated highlight def link redifFieldPublisherPhone redifFieldDeprecated highlight def link redifFieldPublisherPostal redifFieldDeprecated " Standard arguments " By default, they contain all the argument until another field is started: " start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 " For arguments that must not span more than one line, use a match: " /\%(^\S\{-}:\)\@!\S.*/ " AND ADD "display" " This is faster. " " Those arguments are not highlighted so far. They are here for future " extensions. " TODO Find more RegEx for these arguments " TODO Fax, Phone " TODO URL, Homepage " TODO Keywords " TODO Classification-JEL " TODO Short-Id, Author-Person, Editor-Person " " Arguments that may span several lines: syntax region redifArgumentAuthorWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentFileFunction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentIssue start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentJournal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentOrderPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrice start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentRequires start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSize start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentVersion start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained " Arguments that may not span several lines: " If you are sure that these arguments cannot span several lines, change " them to a match: " /\%(^\S\{-}:\)\@!\S.*/ " AND ADD "display" after "contained" " You can use this command on each line that you want to change: " :s+\Vregion \(\w\+\) start=/\\%(^\\S\\{-}:\\)\\@!\\S/ end=/^\\S\\{-}:/me=s-1 contained+match \1 /\\%(^\\S\\{-}:\\)\\@!\\S.*/ contained display syntax region redifArgumentAuthorFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorPerson start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorPerson start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentFileURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentMaintainerFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentMaintainerName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentMaintainerPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNameFull start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNameMiddle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNamePrefix start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNameSuffix start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNumber start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentOrderHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentOrderURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSeries start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentShortId start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplaceOrganization start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained " Special arguments " Those arguments require special values " TODO Improve some RegEx " TODO Improve Emails " TODO Improve ISBN " TODO Improve ISSN " TODO Improve spell check (add words from economics. " expl=macroeconometrics, Schumpeterian, IS-LM, etc.) " " Template-Type syntax match redifArgumentTemplateType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectTemplateType contained display syntax match redifCorrectTemplateType /ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\)/ nextgroup=redifTemplateVersionNumberContainer contained display syntax match redifTemplateVersionNumberContainer /.\+/ contains=redifTemplateVersionNumber contained display syntax match redifTemplateVersionNumber / \d\+\.\d\+/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentTemplateType redifError highlight def link redifCorrectTemplateType Constant highlight def link redifTemplateVersionNumber Number highlight def link redifTemplateVersionNumberContainer redifError " Handles: " " Handles of Works: syntax match redifArgumentHandleOfWork /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentAuthorArticle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentAuthorBook /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentAuthorChapter /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentAuthorPaper /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentAuthorSoftware /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentEditorBook /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentEditorSeries /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentInBook /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentHasChapter /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentArticleHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentBookHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentChapterHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentPaperHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentSoftwareHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifCorrectHandleOfWork /RePEc:\a\a\a:\%(_\@!\w\)\{6}:\S\+/ contains=redifForbiddenCharactersInHandle,redifBestPracticeInHandle nextgroup=redifWrongLineEnding contained display " TODO Are those characters really forbidden??? syntax match redifForbiddenCharactersInHandle /[\/*?"<>|]/ contained display syntax match redifBestPracticeInHandle /\<\%([vi]:[1-9]\d*\|y:[1-9]\d\{3}\|p:[1-9]\d*-[1-9]\d*\|i:\%(jan\|feb\|mar\|apr\|may\|jun\|jul\|aug\|sep\|oct\|nov\|dec\|spr\|sum\|aut\|win\|spe\|Q[1-4]\|\d\d-\d\d\)\|Q:[1-4]\)\>/ contained display highlight def link redifArgumentHandleOfWork redifError highlight def link redifArgumentAuthorArticle redifError highlight def link redifArgumentAuthorBook redifError highlight def link redifArgumentAuthorChapter redifError highlight def link redifArgumentAuthorPaper redifError highlight def link redifArgumentAuthorSoftware redifError highlight def link redifArgumentEditorBook redifError highlight def link redifArgumentEditorSeries redifError highlight def link redifArgumentInBook redifError highlight def link redifArgumentHasChapter redifError highlight def link redifArgumentArticleHandle redifError highlight def link redifArgumentBookHandle redifError highlight def link redifArgumentChapterHandle redifError highlight def link redifArgumentPaperHandle redifError highlight def link redifArgumentSoftwareHandle redifError highlight def link redifForbiddenCharactersInHandle redifError highlight def link redifBestPracticeInHandle redifSpecial " Handles of Series: syntax match redifArgumentHandleOfSeries /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display syntax match redifArgumentFollowup /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display syntax match redifArgumentPredecessor /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display syntax match redifCorrectHandleOfSeries /RePEc:\a\a\a:\%(_\@!\w\)\{6}/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentHandleOfSeries redifError highlight def link redifArgumentFollowup redifError highlight def link redifArgumentPredecessor redifError " Handles of Archives: syntax match redifArgumentHandleOfArchive /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfArchive contained display syntax match redifCorrectHandleOfArchive /RePEc:\a\a\a/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentHandleOfArchive redifError " Handles of Person: syntax match redifArgumentHandleOfPerson /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfPerson contained display syntax match redifCorrectHandleOfPerson /\%(\%(:\@!\S\)\{-}:\)\{2}[1-9]\d\{3}\%(-02\%(-[12]\d\|-0[1-9]\)\|-\%(0[469]\|11\)\%(-30\|-[12]\d\|-0[1-9]\)\|-\%(0[13578]\|1[02]\)\%(-3[01]\|-[12]\d\|-0[1-9]\)\):\S\+/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentHandleOfPerson redifError " Handles of Institution: syntax match redifArgumentAuthorWorkplaceInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentEditorWorkplaceInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentPrimaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentProviderInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentPublisherInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentQuaternaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentSecondaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentTertiaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentWorkplaceInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentHandleOfInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentPrimaryDefunct /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentSecondaryDefunct /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentTertiaryDefunct /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display " TODO Are digits authorized? Apparently not. " Country codes: " http://www.iso.org/iso/country_codes/iso_3166_code_lists/country_names_and_code_elements.htm syntax match redifCorrectHandleOfInstitution /RePEc:\a\a\a:\a\{5}\(ea\|af\|ax\|al\|dz\|as\|ad\|ao\|ai\|aq\|ag\|ar\|am\|aw\|au\|at\|az\|bs\|bh\|bd\|bb\|by\|be\|bz\|bj\|bm\|bt\|bo\|bq\|ba\|bw\|bv\|br\|io\|bn\|bg\|bf\|bi\|kh\|cm\|ca\|cv\|ky\|cf\|td\|cl\|cn\|cx\|cc\|co\|km\|cg\|cd\|ck\|cr\|ci\|hr\|cu\|cw\|cy\|cz\|dk\|dj\|dm\|do\|ec\|eg\|sv\|gq\|er\|ee\|et\|fk\|fo\|fj\|fi\|fr\|gf\|pf\|tf\|ga\|gm\|ge\|de\|gh\|gi\|gr\|gl\|gd\|gp\|gu\|gt\|gg\|gn\|gw\|gy\|ht\|hm\|va\|hn\|hk\|hu\|is\|in\|id\|ir\|iq\|ie\|im\|il\|it\|jm\|jp\|je\|jo\|kz\|ke\|ki\|kp\|kr\|kw\|kg\|la\|lv\|lb\|ls\|lr\|ly\|li\|lt\|lu\|mo\|mk\|mg\|mw\|my\|mv\|ml\|mt\|mh\|mq\|mr\|mu\|yt\|mx\|fm\|md\|mc\|mn\|me\|ms\|ma\|mz\|mm\|na\|nr\|np\|nl\|nc\|nz\|ni\|ne\|ng\|nu\|nf\|mp\|no\|om\|pk\|pw\|ps\|pa\|pg\|py\|pe\|ph\|pn\|pl\|pt\|pr\|qa\|re\|ro\|ru\|rw\|bl\|sh\|kn\|lc\|mf\|pm\|vc\|ws\|sm\|st\|sa\|sn\|rs\|sc\|sl\|sg\|sx\|sk\|si\|sb\|so\|za\|gs\|ss\|es\|lk\|sd\|sr\|sj\|sz\|se\|ch\|sy\|tw\|tj\|tz\|th\|tl\|tg\|tk\|to\|tt\|tn\|tr\|tm\|tc\|tv\|ug\|ua\|ae\|gb\|us\|um\|uy\|uz\|vu\|ve\|vn\|vg\|vi\|wf\|eh\|ye\|zm\|zw\)/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentHandleOfInstitution redifError highlight def link redifArgumentPrimaryDefunct redifError highlight def link redifArgumentSecondaryDefunct redifError highlight def link redifArgumentTertiaryDefunct redifError " Emails: syntax match redifArgumentAuthorEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentAuthorWorkplaceEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentContactEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentEditorEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentEditorWorkplaceEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentMaintainerEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentOrderEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentPrimaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentProviderEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentPublisherEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentQuaternaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentSecondaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentTertiaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentWorkplaceEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifCorrectEmail /\%(@\@!\S\)\+@\%(@\@!\S\)\+/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentAuthorEmail redifError highlight def link redifArgumentAuthorWorkplaceEmail redifError highlight def link redifArgumentContactEmail redifError highlight def link redifArgumentEditorEmail redifError highlight def link redifArgumentEditorWorkplaceEmail redifError highlight def link redifArgumentEmail redifError highlight def link redifArgumentMaintainerEmail redifError highlight def link redifArgumentOrderEmail redifError highlight def link redifArgumentPrimaryEmail redifError highlight def link redifArgumentProviderEmail redifError highlight def link redifArgumentPublisherEmail redifError highlight def link redifArgumentQuaternaryEmail redifError highlight def link redifArgumentSecondaryEmail redifError highlight def link redifArgumentTertiaryEmail redifError highlight def link redifArgumentWorkplaceEmail redifError " Language " Source: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes syntax match redifArgumentLanguage /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectLanguage contained display syntax match redifCorrectLanguage /\<\(aa\|ab\|af\|ak\|als\|am\|an\|ang\|ar\|arc\|as\|ast\|av\|ay\|az\|ba\|bar\|bat-smg\|bcl\|be\|be-x-old\|bg\|bh\|bi\|bm\|bn\|bo\|bpy\|br\|bs\|bug\|bxr\|ca\|ce\|ceb\|ch\|cho\|chr\|chy\|co\|cr\|cs\|csb\|cu\|cv\|cy\|da\|de\|diq\|dsb\|dv\|dz\|ee\|el\|en\|eo\|es\|et\|eu\|ext\|fa\|ff\|fi\|fiu-vro\|fj\|fo\|fr\|frp\|fur\|fy\|ga\|gd\|gil\|gl\|gn\|got\|gu\|gv\|ha\|haw\|he\|hi\|ho\|hr\|ht\|hu\|hy\|hz\|ia\|id\|ie\|ig\|ii\|ik\|ilo\|io\|is\|it\|iu\|ja\|jbo\|jv\|ka\|kg\|ki\|kj\|kk\|kl\|km\|kn\|khw\|ko\|kr\|ks\|ksh\|ku\|kv\|kw\|ky\|la\|lad\|lan\|lb\|lg\|li\|lij\|lmo\|ln\|lo\|lt\|lv\|map-bms\|mg\|mh\|mi\|mk\|ml\|mn\|mo\|mr\|ms\|mt\|mus\|my\|na\|nah\|nap\|nd\|nds\|nds-nl\|ne\|new\|ng\|nl\|nn\|no\|nr\|nso\|nrm\|nv\|ny\|oc\|oj\|om\|or\|os\|pa\|pag\|pam\|pap\|pdc\|pi\|pih\|pl\|pms\|ps\|pt\|qu\|rm\|rmy\|rn\|ro\|roa-rup\|ru\|rw\|sa\|sc\|scn\|sco\|sd\|se\|sg\|sh\|si\|simple\|sk\|sl\|sm\|sn\|so\|sq\|sr\|ss\|st\|su\|sv\|sw\|ta\|te\|tet\|tg\|th\|ti\|tk\|tl\|tlh\|tn\|to\|tpi\|tr\|ts\|tt\|tum\|tw\|ty\|udm\|ug\|uk\|ur\|uz\|ve\|vi\|vec\|vls\|vo\|wa\|war\|wo\|xal\|xh\|yi\|yo\|za\|zh\|zh-min-nan\|zh-yue\|zu\)\>/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentLanguage redifError highlight def link redifCorrectLanguage redifSpecial " Length " Based on the example in the documentation. But apparently any field is " possible syntax region redifArgumentLength start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifGoodLength contained syntax match redifGoodLength /1 page\|[1-9]\d*\%( pages\)\=/ contained display highlight def link redifGoodLength redifSpecial " Publication-Type syntax match redifArgumentPublicationType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectPublicationType contained display syntax match redifCorrectPublicationType /\<\(journal article\|book\|book chapter\|working paper\|conference paper\|report\|other\)\>/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentPublicationType redifError highlight def link redifCorrectPublicationType redifSpecial " Publication-Status syntax region redifArgumentPublicationStatus start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifSpecialPublicationStatus contained syntax match redifSpecialPublicationStatus /published\|forthcoming/ nextgroup=redifCorrectPublicationStatus contained display syntax region redifCorrectPublicationStatus start=/./ end=/^\S\{-}:/me=s-1 contained highlight def link redifArgumentPublicationStatus redifError highlight def link redifSpecialPublicationStatus redifSpecial " Month " TODO Are numbers also allowed? syntax match redifArgumentMonth /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodMonth contained display syntax match redifGoodMonth /\<\(Jan\%(uary\)\=\|Feb\%(ruary\)\=\|Mar\%(ch\)\=\|Apr\%(il\)\=\|May\|June\=\|July\=\|Aug\%(ust\)\=\|Sep\%(tember\)\=\|Oct\%(ober\)\=\|Nov\%(ember\)\=\|Dec\%(ember\)\=\)\>/ contained display highlight def link redifGoodMonth redifSpecial " Integers: Volume, Chapter syntax match redifArgumentVolume /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectInteger contained display syntax match redifArgumentChapter /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectInteger contained display syntax match redifCorrectInteger /[1-9]\d*/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentVolume redifError highlight def link redifArgumentChapter redifError " Year syntax match redifArgumentYear /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectYear contained display syntax match redifCorrectYear /[1-9]\d\{3}/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentYear redifError " Edition " Based on the example in the documentation. syntax match redifArgumentEdition /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodEdition contained display syntax match redifGoodEdition /1st\|2nd\|3rd\|[4-9]th\|[1-9]\d*\%(1st\|2nd\|3rd\|[4-9]th\)\|[1-9]\d*/ contained display highlight def link redifGoodEdition redifSpecial " ISBN syntax match redifArgumentISBN /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodISBN contained display syntax match redifGoodISBN /\d[0-9-]\{8,15}\d/ contained display highlight def link redifGoodISBN redifSpecial " ISSN syntax match redifArgumentISSN /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodISSN contained display syntax match redifGoodISSN /\d\{4}-\d\{3}[0-9X]/ contained display highlight def link redifGoodISSN redifSpecial " File-Size " Based on the example in the documentation. syntax region redifArgumentFileSize start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifGoodSize contained syntax match redifGoodSize /kb\|bytes/ contained display highlight def link redifGoodSize redifSpecial " Type syntax match redifArgumentType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectType contained display syntax match redifCorrectType /ReDIF-Paper\|ReDIF-Software\|ReDIF-Article\|ReDIF-Chapter\|ReDIF-Book/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentType redifError highlight def link redifCorrectType redifSpecial " Dates: Publication-Date, Creation-Date, Revision-Date, " Last-Login-Date, Registration-Date syntax match redifArgumentCreationDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display syntax match redifArgumentLastLoginDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display syntax match redifArgumentPublicationDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display syntax match redifArgumentRegisteredDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display syntax match redifArgumentRevisionDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display syntax match redifCorrectDate /[1-9]\d\{3}\%(-02\%(-[12]\d\|-0[1-9]\)\=\|-\%(0[469]\|11\)\%(-30\|-[12]\d\|-0[1-9]\)\=\|-\%(0[13578]\|1[02]\)\%(-3[01]\|-[12]\d\|-0[1-9]\)\=\)\=/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentCreationDate redifError highlight def link redifArgumentLastLoginDate redifError highlight def link redifArgumentPublicationDate redifError highlight def link redifArgumentRegisteredDate redifError highlight def link redifArgumentRevisionDate redifError " Classification-JEL syntax match redifArgumentClassificationJEL /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectJEL contained display syntax match redifCorrectJEL /\<\%(\u\d\{,2}[,; \t]\s*\)*\u\d\{,2}/ contains=redifSpecialJEL nextgroup=redifWrongLineEnding contained display syntax match redifSpecialJEL /\<\u\d\{,2}/ contained display highlight def link redifArgumentClassificationJEL redifError highlight def link redifSpecialJEL redifSpecial " Pages syntax match redifArgumentPages /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectPages contained display syntax match redifCorrectPages /[1-9]\d*-[1-9]\d*/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentPages redifError " Name-ASCII syntax match redifArgumentNameASCII /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectNameASCII contained display syntax match redifCorrectNameASCII /[ -~]/ contained display highlight def link redifArgumentNameASCII redifError " Programming-Language syntax match redifArgumentProgrammingLanguage /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodProgrammingLanguage contained display syntax match redifGoodProgrammingLanguage /\/ nextgroup=redifWrongLineEnding contained display highlight def link redifGoodProgrammingLanguage redifSpecial " File-Format " TODO The link in the documentation that gives the list of possible formats is broken. " ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/media-types " These are based on the examples in the documentation. syntax match redifArgumentFileFormat /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodFormat contained display syntax match redifGoodFormat "\a\+/[[:alpha:]+-]\+" nextgroup=redifWrongLineEnding contains=redifSpecialFormat contained display syntax match redifSpecialFormat "application/atom+xml\|application/ecmascript\|application/EDI-X12\|application/EDIFACT\|application/json\|application/javascript\|application/octet-stream\|application/ogg\|application/pdf\|application/postscript\|application/rdf+xml\|application/rss+xml\|application/soap+xml\|application/font-woff\|application/xhtml+xml\|application/xml\|application/xml-dtd\|application/xop+xml\|application/zip\|application/gzip\|audio/basic\|audio/L24\|audio/mp4\|audio/mpeg\|audio/ogg\|audio/vorbis\|audio/vnd.rn-realaudio\|audio/vnd.wave\|audio/webm\|image/gif\|image/jpeg\|image/pjpeg\|image/png\|image/svg+xml\|image/tiff\|image/vnd.microsoft.icon\|message/http\|message/imdn+xml\|message/partial\|message/rfc822\|model/example\|model/iges\|model/mesh\|model/vrml\|model/x3d+binary\|model/x3d+vrml\|model/x3d+xml\|multipart/mixed\|multipart/alternative\|multipart/related\|multipart/form-data\|multipart/signed\|multipart/encrypted\|text/cmd\|text/css\|text/csv\|text/html\|text/javascript\|text/plain\|text/vcard\|text/xml\|video/mpeg\|video/mp4\|video/ogg\|video/quicktime\|video/webm\|video/x-matroska\|video/x-ms-wmv\|video/x-flv" contained display highlight def link redifSpecialFormat redifSpecial highlight def link redifArgumentFileFormat redifError " Keywords " Spell checked syntax match redifArgumentKeywords /\%(^\S\{-}:\)\@!\S.*/ contains=@Spell,redifKeywordsSemicolon contained syntax match redifKeywordsSemicolon /;/ contained highlight def link redifKeywordsSemicolon redifSpecial " Other spell-checked arguments " Very useful when copy-pasting abstracts that may contain hyphens or " ligatures. syntax region redifArgumentAbstract start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentAvailability start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentBookTitle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentDescription start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentFileRestriction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentNote start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentNotification start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentRestriction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentTitle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained " Wrong line ending syntax match redifWrongLineEnding /.\+/ contained display highlight def link redifWrongLineEnding redifError " Final highlight highlight def link redifComment Comment highlight def link redifError Error highlight def link redifField Identifier highlight def link redifFieldDeprecated Identifier highlight def link redifSpecial Special " For deprecated fields: highlight redifFieldDeprecated term=undercurl cterm=undercurl gui=undercurl guisp=DarkGrey " Sync: The template-type (ReDIF-Paper, ReDIF-Archive, etc.) influences which " fields can follow. Thus sync must search backwards for it. " " I would like to simply ask VIM to search backward for the first occurence of " /^Template-Type:/, but it does not seem to be possible, so I have to start " from the beginning of the file... This might slow down a lot for files that " contain a lot of Template-Type statements. syntax sync fromstart " The problem with syntax sync match (tried below), it is that, for example, " it cannot realize when it is inside a Author-Name cluster, which is inside a " Template-Type template... " " TODO Is this linecont pattern really useful? It seems to work anyway... "syntax sync linecont /^\(Template-Type:\)\=\s*$/ " TODO This sync is surprising... It seems to work on several lines even " though I replaced \_s* by \s*, even without the linecont pattern... "syntax sync match redifSyncForTemplatePaper groupthere redifRegionTemplatePaper /^Template-Type:\s*ReDIF-Paper \d\+\.\d\+/ "syntax sync match redifSyncForTemplateArticle groupthere redifRegionTemplateArticle /^Template-Type:\s*ReDIF-Article \d\+\.\d\+/ "syntax sync match redifSyncForTemplateChapter groupthere redifRegionTemplateChapter /^Template-Type:\s*ReDIF-Chapter \d\+\.\d\+/ "syntax sync match redifSyncForTemplateBook groupthere redifRegionTemplateBook /^Template-Type:\s*ReDIF-Book \d\+\.\d\+/ "syntax sync match redifSyncForTemplateSoftware groupthere redifRegionTemplateSoftware /^Template-Type:\s*ReDIF-Software \d\+\.\d\+/ "syntax sync match redifSyncForTemplateArchive groupthere redifRegionTemplateArchive /^Template-Type:\s*ReDIF-Archive \d\+\.\d\+/ "syntax sync match redifSyncForTemplateSeries groupthere redifRegionTemplateSeries /^Template-Type:\s*ReDIF-Series \d\+\.\d\+/ "syntax sync match redifSyncForTemplateInstitution groupthere redifRegionTemplateInstitution /^Template-Type:\s*ReDIF-Institution \d\+\.\d\+/ "syntax sync match redifSyncForTemplatePerson groupthere redifRegionTemplatePerson /^Template-Type:\s*ReDIF-Person \d\+\.\d\+/ " I do not really know how sync linebreaks works, but it helps when making " changes on the argument when this argument is not on the same line than its " field. I just assume that people won't leave more than one line of " whitespace between fields and arguments (which is already very unlikely) " hence the value of 2. syntax sync linebreaks=2 " Since folding is defined by the syntax, set foldmethod to syntax. set foldmethod=syntax " Set "b:current_syntax" to the name of the syntax at the end: let b:current_syntax="redif" PK!Cvim80/syntax/updatedb.vimnu[" Vim syntax file " Language: updatedb.conf(5) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2009-05-25 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword updatedbTodo contained TODO FIXME XXX NOTE syn region updatedbComment display oneline start='^\s*#' end='$' \ contains=updatedbTodo,@Spell syn match updatedbBegin display '^' \ nextgroup=updatedbName,updatedbComment skipwhite syn keyword updatedbName contained \ PRUNEFS \ PRUNENAMES \ PRUNEPATHS \ PRUNE_BIND_MOUNTS \ nextgroup=updatedbNameEq syn match updatedbNameEq contained display '=' nextgroup=updatedbValue syn region updatedbValue contained display oneline start='"' end='"' hi def link updatedbTodo Todo hi def link updatedbComment Comment hi def link updatedbName Identifier hi def link updatedbNameEq Operator hi def link updatedbValue String let b:current_syntax = "updatedb" let &cpo = s:cpo_save unlet s:cpo_save PK!H-''vim80/syntax/tidy.vimnu[" Vim syntax file " Language: HMTL Tidy configuration file (/etc/tidyrc ~/.tidyrc) " Maintainer: Doug Kearns " Last Change: 2016 Apr 24 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn iskeyword @,48-57,-,_ syn case ignore syn keyword tidyBoolean contained t[rue] f[alse] y[es] n[o] 1 0 syn keyword tidyAutoBoolean contained t[rue] f[alse] y[es] n[o] 1 0 auto syn case match syn keyword tidyDoctype contained html5 omit auto strict loose transitional user syn keyword tidyEncoding contained raw ascii latin0 latin1 utf8 iso2022 mac win1252 ibm858 utf16le utf16be utf16 big5 shiftjis syn keyword tidyNewline contained LF CRLF CR syn match tidyNumber contained "\<\d\+\>" syn keyword tidyRepeat contained keep-first keep-last syn keyword tidySorter contained alpha none syn region tidyString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline syn region tidyString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ oneline syn match tidyTags contained "\<\w\+\(\s*,\s*\w\+\)*\>" syn keyword tidyBooleanOption add-xml-decl add-xml-pi add-xml-space \ anchor-as-name ascii-chars assume-xml-procins bare break-before-br \ clean coerce-endtags decorate-inferred-ul drop-empty-paras \ drop-empty-elements drop-font-tags drop-proprietary-attributes \ enclose-block-text enclose-text escape-cdata escape-scripts \ fix-backslash fix-bad-comments fix-uri force-output gdoc gnu-emacs \ hide-comments hide-endtags indent-attributes indent-cdata \ indent-with-tabs input-xml join-classes join-styles keep-time \ language literal-attributes logical-emphasis lower-literals markup \ merge-emphasis ncr numeric-entities omit-optional-tags output-html \ output-xhtml output-xml preserve-entities punctuation-wrap quiet \ quote-ampersand quote-marks quote-nbsp raw replace-color show-info \ show-warnings skip-nested split strict-tags-attributes tidy-mark \ uppercase-attributes uppercase-tags word-2000 wrap-asp \ wrap-attributes wrap-jste wrap-php wrap-script-literals \ wrap-sections write-back \ contained nextgroup=tidyBooleanDelimiter syn match tidyBooleanDelimiter ":" nextgroup=tidyBoolean contained skipwhite syn keyword tidyAutoBooleanOption indent merge-divs merge-spans output-bom show-body-only vertical-space contained nextgroup=tidyAutoBooleanDelimiter syn match tidyAutoBooleanDelimiter ":" nextgroup=tidyAutoBoolean contained skipwhite syn keyword tidyCSSSelectorOption css-prefix contained nextgroup=tidyCSSSelectorDelimiter syn match tidyCSSSelectorDelimiter ":" nextgroup=tidyCSSSelector contained skipwhite syn keyword tidyDoctypeOption doctype contained nextgroup=tidyDoctypeDelimiter syn match tidyDoctypeDelimiter ":" nextgroup=tidyDoctype contained skipwhite syn keyword tidyEncodingOption char-encoding input-encoding output-encoding contained nextgroup=tidyEncodingDelimiter syn match tidyEncodingDelimiter ":" nextgroup=tidyEncoding contained skipwhite syn keyword tidyIntegerOption accessibility-check doctype-mode indent-spaces show-errors tab-size wrap contained nextgroup=tidyIntegerDelimiter syn match tidyIntegerDelimiter ":" nextgroup=tidyNumber contained skipwhite syn keyword tidyNameOption slide-style contained nextgroup=tidyNameDelimiter syn match tidyNameDelimiter ":" nextgroup=tidyName contained skipwhite syn keyword tidyNewlineOption newline contained nextgroup=tidyNewlineDelimiter syn match tidyNewlineDelimiter ":" nextgroup=tidyNewline contained skipwhite syn keyword tidyTagsOption new-blocklevel-tags new-empty-tags new-inline-tags new-pre-tags contained nextgroup=tidyTagsDelimiter syn match tidyTagsDelimiter ":" nextgroup=tidyTags contained skipwhite syn keyword tidyRepeatOption repeated-attributes contained nextgroup=tidyRepeatDelimiter syn match tidyRepeatDelimiter ":" nextgroup=tidyRepeat contained skipwhite syn keyword tidySorterOption sort-attributes contained nextgroup=tidySorterDelimiter syn match tidySorterDelimiter ":" nextgroup=tidySorter contained skipwhite syn keyword tidyStringOption alt-text error-file gnu-emacs-file output-file contained nextgroup=tidyStringDelimiter syn match tidyStringDelimiter ":" nextgroup=tidyString contained skipwhite syn cluster tidyOptions contains=tidy.*Option syn match tidyStart "^" nextgroup=@tidyOptions syn match tidyComment "^\s*//.*$" contains=tidyTodo syn match tidyComment "^\s*#.*$" contains=tidyTodo syn keyword tidyTodo TODO NOTE FIXME XXX contained hi def link tidyAutoBooleanOption Identifier hi def link tidyBooleanOption Identifier hi def link tidyCSSSelectorOption Identifier hi def link tidyDoctypeOption Identifier hi def link tidyEncodingOption Identifier hi def link tidyIntegerOption Identifier hi def link tidyNameOption Identifier hi def link tidyNewlineOption Identifier hi def link tidyTagsOption Identifier hi def link tidyRepeatOption Identifier hi def link tidySorterOption Identifier hi def link tidyStringOption Identifier hi def link tidyAutoBooleanDelimiter Special hi def link tidyBooleanDelimiter Special hi def link tidyCSSSelectorDelimiter Special hi def link tidyDoctypeDelimiter Special hi def link tidyEncodingDelimiter Special hi def link tidyIntegerDelimiter Special hi def link tidyNameDelimiter Special hi def link tidyNewlineDelimiter Special hi def link tidyTagsDelimiter Special hi def link tidyRepeatDelimiter Special hi def link tidySorterDelimiter Special hi def link tidyStringDelimiter Special hi def link tidyAutoBoolean Boolean hi def link tidyBoolean Boolean hi def link tidyDoctype Constant hi def link tidyEncoding Constant hi def link tidyNewline Constant hi def link tidyTags Constant hi def link tidyNumber Number hi def link tidyRepeat Constant hi def link tidySorter Constant hi def link tidyString String hi def link tidyComment Comment hi def link tidyTodo Todo let b:current_syntax = "tidy" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!^ vim80/syntax/xkb.vimnu[" Vim syntax file " This is a GENERATED FILE. Please always refer to source file at the URI below. " Language: XKB (X Keyboard Extension) components " Maintainer: David Ne\v{c}as (Yeti) " Last Change: 2003-04-13 " URL: http://trific.ath.cx/Ftp/vim/syntax/xkb.vim " Setup " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case match syn sync minlines=100 " Comments syn region xkbComment start="//" skip="\\$" end="$" keepend contains=xkbTodo syn region xkbComment start="/\*" matchgroup=NONE end="\*/" contains=xkbCommentStartError,xkbTodo syn match xkbCommentError "\*/" syntax match xkbCommentStartError "/\*" contained syn sync ccomment xkbComment syn keyword xkbTodo TODO FIXME contained " Literal strings syn match xkbSpecialChar "\\\d\d\d\|\\." contained syn region xkbString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=xkbSpecialChar oneline " Catch errors caused by wrong parenthesization syn region xkbParen start='(' end=')' contains=ALLBUT,xkbParenError,xkbSpecial,xkbTodo transparent syn match xkbParenError ")" syn region xkbBrace start='{' end='}' contains=ALLBUT,xkbBraceError,xkbSpecial,xkbTodo transparent syn match xkbBraceError "}" syn region xkbBracket start='\[' end='\]' contains=ALLBUT,xkbBracketError,xkbSpecial,xkbTodo transparent syn match xkbBracketError "\]" " Physical keys syn match xkbPhysicalKey "<\w\+>" " Keywords syn keyword xkbPreproc augment include replace syn keyword xkbConstant False True syn keyword xkbModif override replace syn keyword xkbIdentifier action affect alias allowExplicit approx baseColor button clearLocks color controls cornerRadius count ctrls description driveskbd font fontSize gap group groups height indicator indicatorDrivesKeyboard interpret key keys labelColor latchToLock latchMods left level_name map maximum minimum modifier_map modifiers name offColor onColor outline preserve priority repeat row section section setMods shape slant solid symbols text top type useModMapMods virtualModifier virtualMods virtual_modifiers weight whichModState width syn keyword xkbFunction AnyOf ISOLock LatchGroup LatchMods LockControls LockGroup LockMods LockPointerButton MovePtr NoAction PointerButton SetControls SetGroup SetMods SetPtrDflt Terminate syn keyword xkbTModif default hidden partial virtual syn keyword xkbSect alphanumeric_keys alternate_group function_keys keypad_keys modifier_keys xkb_compatibility xkb_geometry xkb_keycodes xkb_keymap xkb_semantics xkb_symbols xkb_types " Define the default highlighting hi def link xkbModif xkbPreproc hi def link xkbTModif xkbPreproc hi def link xkbPreproc Preproc hi def link xkbIdentifier Keyword hi def link xkbFunction Function hi def link xkbSect Type hi def link xkbPhysicalKey Identifier hi def link xkbKeyword Keyword hi def link xkbComment Comment hi def link xkbTodo Todo hi def link xkbConstant Constant hi def link xkbString String hi def link xkbSpecialChar xkbSpecial hi def link xkbSpecial Special hi def link xkbParenError xkbBalancingError hi def link xkbBraceError xkbBalancingError hi def link xkbBraketError xkbBalancingError hi def link xkbBalancingError xkbError hi def link xkbCommentStartError xkbCommentError hi def link xkbCommentError xkbError hi def link xkbError Error let b:current_syntax = "xkb" PK!]u7u7vim80/syntax/upstreamrpt.vimnu[" Vim syntax file " Language: Innovation Data Processing upstream.rpt file " Maintainer: Rob Owens " Latest Revision: 2014-03-13 " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal foldmethod=syntax " Parameters: syn keyword upstreamdat_Parameter ACCEPTPCREMOTE syn keyword upstreamdat_Parameter ACCEPTREMOTE syn keyword upstreamdat_Parameter ACTION syn keyword upstreamdat_Parameter ACTIVATEONENTRY syn keyword upstreamdat_Parameter ARCHIVEBIT syn keyword upstreamdat_Parameter ARCHIVEBIT syn keyword upstreamdat_Parameter ASCTOEBC syn keyword upstreamdat_Parameter ASRBACKUP syn keyword upstreamdat_Parameter ATTENDED syn keyword upstreamdat_Parameter AUTHORITATIVE syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE syn keyword upstreamdat_Parameter BACKUPPROFILE syn keyword upstreamdat_Parameter BACKUPPROFILE2 syn keyword upstreamdat_Parameter BACKUPREPARSEFILES syn keyword upstreamdat_Parameter BACKUPREPARSEFILES syn keyword upstreamdat_Parameter BACKUPVERIFY syn keyword upstreamdat_Parameter BLANKTRUNC syn keyword upstreamdat_Parameter CALCDASDSIZE syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS syn keyword upstreamdat_Parameter COMPRESSLEVEL syn keyword upstreamdat_Parameter CONTROLFILE syn keyword upstreamdat_Parameter DASDOVERRIDE syn keyword upstreamdat_Parameter DATELIMIT syn keyword upstreamdat_Parameter DATELIMIT syn keyword upstreamdat_Parameter DAYSOLD syn keyword upstreamdat_Parameter DAYSOLD syn keyword upstreamdat_Parameter DELETED syn keyword upstreamdat_Parameter DELETED syn keyword upstreamdat_Parameter DELETEPROMPTS syn keyword upstreamdat_Parameter DELETEPROMPTS syn keyword upstreamdat_Parameter DESTINATION syn keyword upstreamdat_Parameter DESTINATION syn keyword upstreamdat_Parameter DIRDELETE syn keyword upstreamdat_Parameter DIRECTORVMC syn keyword upstreamdat_Parameter DIRONLYRESTOREOK syn keyword upstreamdat_Parameter DIRSONLY syn keyword upstreamdat_Parameter DIRSONLY syn keyword upstreamdat_Parameter DISASTERRECOVERY syn keyword upstreamdat_Parameter DISPLAY syn keyword upstreamdat_Parameter DRIVEALIAS syn keyword upstreamdat_Parameter DRIVEALIAS syn keyword upstreamdat_Parameter DUALCOPY syn keyword upstreamdat_Parameter DUPDAYS syn keyword upstreamdat_Parameter DUPLICATE syn keyword upstreamdat_Parameter EBCTOASC syn keyword upstreamdat_Parameter ENCRYPT syn keyword upstreamdat_Parameter ENCRYPTLEVEL syn keyword upstreamdat_Parameter EXCLUDELISTNAME syn keyword upstreamdat_Parameter FAILBACKUPONERROR syn keyword upstreamdat_Parameter FAILBACKUPONERROR syn keyword upstreamdat_Parameter FAILIFNOFILES syn keyword upstreamdat_Parameter FAILIFNOFILES syn keyword upstreamdat_Parameter FAILIFSKIP syn keyword upstreamdat_Parameter FAILJOB syn keyword upstreamdat_Parameter FAILRESTOREONERROR syn keyword upstreamdat_Parameter FAILRESTOREONERROR syn keyword upstreamdat_Parameter FILEDATE syn keyword upstreamdat_Parameter FILEDATE syn keyword upstreamdat_Parameter FILEDELETE syn keyword upstreamdat_Parameter FILEDELETE syn keyword upstreamdat_Parameter FILES syn keyword upstreamdat_Parameter FILES syn keyword upstreamdat_Parameter FILESOPENFORUPDAT syn keyword upstreamdat_Parameter FILESOPENFORUPDAT syn keyword upstreamdat_Parameter FILETRANSFER syn keyword upstreamdat_Parameter GETREMOTEFILES syn keyword upstreamdat_Parameter HARDLINKDB syn keyword upstreamdat_Parameter HARDLINKS syn keyword upstreamdat_Parameter HARDLINKS syn keyword upstreamdat_Parameter HIDDENFILES syn keyword upstreamdat_Parameter HIDDENFILES syn keyword upstreamdat_Parameter HOLDTAPE syn keyword upstreamdat_Parameter HOLDUSERDIRS syn keyword upstreamdat_Parameter HOSTFILENAME syn keyword upstreamdat_Parameter HOSTRECORD syn keyword upstreamdat_Parameter HOSTSORT syn keyword upstreamdat_Parameter IGNOREPLUGINSFORRESTORE syn keyword upstreamdat_Parameter INCRDB syn keyword upstreamdat_Parameter INCRDBARCHIVEBIT syn keyword upstreamdat_Parameter INCRDBDELETEDFILES syn keyword upstreamdat_Parameter INCREMENTAL syn keyword upstreamdat_Parameter INCREMENTAL syn keyword upstreamdat_Parameter INQOPTIONS syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT syn keyword upstreamdat_Parameter JOBOPTIONS syn keyword upstreamdat_Parameter JOBRETURNCODEMAP syn keyword upstreamdat_Parameter JOBWAITTIMELIMIT syn keyword upstreamdat_Parameter KEEPALIVE syn keyword upstreamdat_Parameter LANINTERFACE syn keyword upstreamdat_Parameter LANWSNAME syn keyword upstreamdat_Parameter LANWSPASSWORD syn keyword upstreamdat_Parameter LASTACCESS syn keyword upstreamdat_Parameter LASTACCESS syn keyword upstreamdat_Parameter LATESTDATE syn keyword upstreamdat_Parameter LATESTDATE syn keyword upstreamdat_Parameter LATESTTIME syn keyword upstreamdat_Parameter LATESTTIME syn keyword upstreamdat_Parameter LATESTVERSION syn keyword upstreamdat_Parameter LINEBLOCK syn keyword upstreamdat_Parameter LINETRUNC syn keyword upstreamdat_Parameter LISTENFORREMOTE syn keyword upstreamdat_Parameter LOCALBACKUP syn keyword upstreamdat_Parameter LOCALBACKUPDIR syn keyword upstreamdat_Parameter LOCALBACKUPMAX syn keyword upstreamdat_Parameter LOCALBACKUPMAXFILESIZE syn keyword upstreamdat_Parameter LOCALBACKUPMAXSIZE syn keyword upstreamdat_Parameter LOCALEXCLUDEFILE syn keyword upstreamdat_Parameter LOCALPARAMETERS syn keyword upstreamdat_Parameter LOCALPASSWORD syn keyword upstreamdat_Parameter LOCALRESTORE syn keyword upstreamdat_Parameter LOCALUSER syn keyword upstreamdat_Parameter LOFS syn keyword upstreamdat_Parameter LOGNONFATAL syn keyword upstreamdat_Parameter MAXBACKUPFILESFAIL syn keyword upstreamdat_Parameter MAXBACKUPTIME syn keyword upstreamdat_Parameter MAXDUPS syn keyword upstreamdat_Parameter MAXFILENAMESIZE syn keyword upstreamdat_Parameter MAXKFILESIZE syn keyword upstreamdat_Parameter MAXLOGDAYS syn keyword upstreamdat_Parameter MAXRESTOREFILESFAIL syn keyword upstreamdat_Parameter MAXRESTORETIME syn keyword upstreamdat_Parameter MAXRETRY syn keyword upstreamdat_Parameter MAXRPTDAYS syn keyword upstreamdat_Parameter MERGE syn keyword upstreamdat_Parameter MIGRBITS syn keyword upstreamdat_Parameter MIGRBITS syn keyword upstreamdat_Parameter MINCOMPRESSSIZE syn keyword upstreamdat_Parameter MINIMIZE syn keyword upstreamdat_Parameter MODIFYFILE syn keyword upstreamdat_Parameter MOUNTPOINTS syn keyword upstreamdat_Parameter MOUNTPOINTS syn keyword upstreamdat_Parameter NDS syn keyword upstreamdat_Parameter NDS syn keyword upstreamdat_Parameter NEWFILECOMPARE syn keyword upstreamdat_Parameter NFSBELOW syn keyword upstreamdat_Parameter NODATAOK syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL syn keyword upstreamdat_Parameter NONFILEDATABITMAP syn keyword upstreamdat_Parameter NONFILEDATABITMAP syn keyword upstreamdat_Parameter NOPOINTRESTORE syn keyword upstreamdat_Parameter NOSPECINHERITANCE syn keyword upstreamdat_Parameter NOTIFYEVENTS syn keyword upstreamdat_Parameter NOTIFYFAILUREATTACHMENT syn keyword upstreamdat_Parameter NOTIFYSUCCESSATTACHMENT syn keyword upstreamdat_Parameter NOTIFYTARGETS syn keyword upstreamdat_Parameter NOUIDGIDNAMES syn keyword upstreamdat_Parameter NOUIDGIDNAMES syn keyword upstreamdat_Parameter NOVELLMIGRATE syn keyword upstreamdat_Parameter NOVELLMIGRATE syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT syn keyword upstreamdat_Parameter NOVELLPROFILE syn keyword upstreamdat_Parameter NOVELLRECALL syn keyword upstreamdat_Parameter NTFSADDPERMISSION syn keyword upstreamdat_Parameter NTFSADDPERMISSION syn keyword upstreamdat_Parameter NTREGRESTORE syn keyword upstreamdat_Parameter OSTYPE syn keyword upstreamdat_Parameter OUTPORT syn keyword upstreamdat_Parameter PACKFLUSHAFTERFILE syn keyword upstreamdat_Parameter PACKRECSIZE syn keyword upstreamdat_Parameter PARAMETER syn keyword upstreamdat_Parameter PASSWORD syn keyword upstreamdat_Parameter PATHNAME syn keyword upstreamdat_Parameter PATHNAME syn keyword upstreamdat_Parameter PERFORMBITMAP syn keyword upstreamdat_Parameter PERFORMNUMRECORDS syn keyword upstreamdat_Parameter PERFORMRECORDSIZE syn keyword upstreamdat_Parameter PLUGIN syn keyword upstreamdat_Parameter PLUGIN syn keyword upstreamdat_Parameter PLUGINPARAMETERS syn keyword upstreamdat_Parameter PLUGINPARAMETERS syn keyword upstreamdat_Parameter POSTJOB syn keyword upstreamdat_Parameter PREJOB syn keyword upstreamdat_Parameter PRTYCLASS syn keyword upstreamdat_Parameter PRTYLEVEL syn keyword upstreamdat_Parameter RECALLCLEANUP syn keyword upstreamdat_Parameter RECALLOFFLINEFILES syn keyword upstreamdat_Parameter RECALLOFFLINEFILES syn keyword upstreamdat_Parameter RECORDSIZE syn keyword upstreamdat_Parameter REMOTEADDR syn keyword upstreamdat_Parameter REMOTEAPPLPREF syn keyword upstreamdat_Parameter REMOTEAPPLRETRY syn keyword upstreamdat_Parameter REMOTECONNECTTYPE syn keyword upstreamdat_Parameter REMOTEFLAGS syn keyword upstreamdat_Parameter REMOTEIPADAPTER syn keyword upstreamdat_Parameter REMOTELOCALPARAMETERS syn keyword upstreamdat_Parameter REMOTELOGMODE syn keyword upstreamdat_Parameter REMOTELUNAME syn keyword upstreamdat_Parameter REMOTEMAXRETRIES syn keyword upstreamdat_Parameter REMOTEMODENAME syn keyword upstreamdat_Parameter REMOTEPARAMETERFILE syn keyword upstreamdat_Parameter REMOTEPORT syn keyword upstreamdat_Parameter REMOTEREQUEST syn keyword upstreamdat_Parameter REMOTERESTART syn keyword upstreamdat_Parameter REMOTEROUTE syn keyword upstreamdat_Parameter REMOTETARGETNAME syn keyword upstreamdat_Parameter REMOTETCP syn keyword upstreamdat_Parameter REMOTETIMEOUT syn keyword upstreamdat_Parameter REMOTETMAXRETRY syn keyword upstreamdat_Parameter REMOTETPN syn keyword upstreamdat_Parameter REMOTEUSAPPL syn keyword upstreamdat_Parameter REMOTEVERIFY syn keyword upstreamdat_Parameter REMOTEWTOCOMP syn keyword upstreamdat_Parameter REPORTNAME syn keyword upstreamdat_Parameter REPORTOPTIONS syn keyword upstreamdat_Parameter RESTARTLASTFILE syn keyword upstreamdat_Parameter RESTART syn keyword upstreamdat_Parameter RESTARTTYPE syn keyword upstreamdat_Parameter RESTARTVERSIONDATE syn keyword upstreamdat_Parameter RESTOREARCHIVEBIT syn keyword upstreamdat_Parameter RESTORECHECKPOINT syn keyword upstreamdat_Parameter RESTOREDATELIMIT syn keyword upstreamdat_Parameter RESTOREDATELIMIT syn keyword upstreamdat_Parameter RESTOREFILEFAIL syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS syn keyword upstreamdat_Parameter RESTORESEGMENTS syn keyword upstreamdat_Parameter RESTORESEGMENTS syn keyword upstreamdat_Parameter RESTORETODIFFFS syn keyword upstreamdat_Parameter RETAIN syn keyword upstreamdat_Parameter RETAIN syn keyword upstreamdat_Parameter ROOTENTRY syn keyword upstreamdat_Parameter ROOTENTRY syn keyword upstreamdat_Parameter SAN syn keyword upstreamdat_Parameter SCHEDULENAME syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE syn keyword upstreamdat_Parameter SEGMENTSIZE syn keyword upstreamdat_Parameter SEGMENTSIZE syn keyword upstreamdat_Parameter SENDHOSTDETAILS syn keyword upstreamdat_Parameter SINGLEFS syn keyword upstreamdat_Parameter SIZETRC syn keyword upstreamdat_Parameter SKIP syn keyword upstreamdat_Parameter SKIPBACKUPSCAN syn keyword upstreamdat_Parameter SKIPOLD syn keyword upstreamdat_Parameter SKIPOLD syn keyword upstreamdat_Parameter SMSTARGETSERVICENAME syn keyword upstreamdat_Parameter SMSTSA syn keyword upstreamdat_Parameter SOLO syn keyword upstreamdat_Parameter SORTBACKUP syn keyword upstreamdat_Parameter SOSDISK syn keyword upstreamdat_Parameter SOSDISK syn keyword upstreamdat_Parameter SOSTIMESTAMP syn keyword upstreamdat_Parameter SOSTIMESTAMP syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH syn keyword upstreamdat_Parameter SPECNUMBER syn keyword upstreamdat_Parameter SPECNUMBER syn keyword upstreamdat_Parameter SPECTYPE syn keyword upstreamdat_Parameter SPECTYPE syn keyword upstreamdat_Parameter STARTTIME syn keyword upstreamdat_Parameter STORAGETYPE syn keyword upstreamdat_Parameter SUBDIRECTORIES syn keyword upstreamdat_Parameter SUBDIRECTORIES syn keyword upstreamdat_Parameter SWITCHTOTAPEMB syn keyword upstreamdat_Parameter TCPADDRESS syn keyword upstreamdat_Parameter TCPTIMEOUT syn keyword upstreamdat_Parameter TIMEOVERRIDE syn keyword upstreamdat_Parameter TRACE syn keyword upstreamdat_Parameter TRANSLATE syn keyword upstreamdat_Parameter ULTRACOMP syn keyword upstreamdat_Parameter ULTREG syn keyword upstreamdat_Parameter ULTUPD syn keyword upstreamdat_Parameter UNCMACHINEALIAS syn keyword upstreamdat_Parameter UNCMACHINEALIAS syn keyword upstreamdat_Parameter USEALEBRA syn keyword upstreamdat_Parameter USECONTROLFILE syn keyword upstreamdat_Parameter USEGID syn keyword upstreamdat_Parameter USERID syn keyword upstreamdat_Parameter USEUID syn keyword upstreamdat_Parameter USNOUIDGIDERRORS syn keyword upstreamdat_Parameter UTF8 syn keyword upstreamdat_Parameter VAULTNUMBER syn keyword upstreamdat_Parameter VERSIONDATE syn keyword upstreamdat_Parameter WRITESPARSE syn keyword upstreamdat_Parameter XFERECORDSIZE syn keyword upstreamdat_Parameter XFERRECSEP syn keyword upstreamdat_Parameter XFERRECUSECR " File Specs: syn match upstreamdat_Filespec /file spec\c \d\{1,3}.*/ " Comments: syn match upstreamdat_Comment /^#.*/ " List Of Parameters: syn region upstreamdat_Parms start="Current Parameters:" end="End Of Parameters" transparent fold hi def link upstreamdat_Parameter Type "hi def link upstreamdat_Filespec Underlined hi def link upstreamdat_Comment Comment let b:current_syntax = "upstreamdat" PK!vim80/syntax/samba.vimnu[" Vim syntax file " Language: samba configuration files (smb.conf) " Maintainer: Rafael Garcia-Suarez " URL: http://rgarciasuarez.free.fr/vim/syntax/samba.vim " Last change: 2009 Aug 06 " " New maintainer wanted! " " Don't forget to run your config file through testparm(1)! " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore syn match sambaParameter /^[a-zA-Z \t]\+=/ contains=sambaKeyword syn match sambaSection /^\s*\[[a-zA-Z0-9_\-.$ ]\+\]/ syn match sambaMacro /%[SPugUGHvhmLMNpRdaITD]/ syn match sambaMacro /%$([a-zA-Z0-9_]\+)/ syn match sambaComment /^\s*[;#].*/ syn match sambaContinue /\\$/ syn keyword sambaBoolean true false yes no " Keywords for Samba 2.0.5a syn keyword sambaKeyword contained account acl action add address admin aliases syn keyword sambaKeyword contained allow alternate always announce anonymous syn keyword sambaKeyword contained archive as auto available bind blocking syn keyword sambaKeyword contained bmpx break browsable browse browseable ca syn keyword sambaKeyword contained cache case casesignames cert certDir syn keyword sambaKeyword contained certFile change char character chars chat syn keyword sambaKeyword contained ciphers client clientcert code coding syn keyword sambaKeyword contained command comment compatibility config syn keyword sambaKeyword contained connections contention controller copy syn keyword sambaKeyword contained create deadtime debug debuglevel default syn keyword sambaKeyword contained delete deny descend dfree dir directory syn keyword sambaKeyword contained disk dns domain domains dont dos dot drive syn keyword sambaKeyword contained driver encrypt encrypted equiv exec fake syn keyword sambaKeyword contained file files filetime filetimes filter follow syn keyword sambaKeyword contained force fstype getwd group groups guest syn keyword sambaKeyword contained hidden hide home homedir hosts include syn keyword sambaKeyword contained interfaces interval invalid keepalive syn keyword sambaKeyword contained kernel key ldap length level level2 limit syn keyword sambaKeyword contained links list lm load local location lock syn keyword sambaKeyword contained locking locks log logon logons logs lppause syn keyword sambaKeyword contained lpq lpresume lprm machine magic mangle syn keyword sambaKeyword contained mangled mangling map mask master max mem syn keyword sambaKeyword contained message min mode modes mux name names syn keyword sambaKeyword contained netbios nis notify nt null offset ok ole syn keyword sambaKeyword contained only open oplock oplocks options order os syn keyword sambaKeyword contained output packet page panic passwd password syn keyword sambaKeyword contained passwords path permissions pipe port ports syn keyword sambaKeyword contained postexec postscript prediction preexec syn keyword sambaKeyword contained prefered preferred preload preserve print syn keyword sambaKeyword contained printable printcap printer printers syn keyword sambaKeyword contained printing program protocol proxy public syn keyword sambaKeyword contained queuepause queueresume raw read readonly syn keyword sambaKeyword contained realname remote require resign resolution syn keyword sambaKeyword contained resolve restrict revalidate rhosts root syn keyword sambaKeyword contained script security sensitive server servercert syn keyword sambaKeyword contained service services set share shared short syn keyword sambaKeyword contained size smb smbrun socket space ssl stack stat syn keyword sambaKeyword contained status strict string strip suffix support syn keyword sambaKeyword contained symlinks sync syslog system time timeout syn keyword sambaKeyword contained times timestamp to trusted ttl unix update syn keyword sambaKeyword contained use user username users valid version veto syn keyword sambaKeyword contained volume wait wide wins workgroup writable syn keyword sambaKeyword contained write writeable xmit " New keywords for Samba 2.0.6 syn keyword sambaKeyword contained hook hires pid uid close rootpreexec " New keywords for Samba 2.0.7 syn keyword sambaKeyword contained utmp wtmp hostname consolidate syn keyword sambaKeyword contained inherit source environment " New keywords for Samba 2.2.0 syn keyword sambaKeyword contained addprinter auth browsing deleteprinter syn keyword sambaKeyword contained enhanced enumports filemode gid host jobs syn keyword sambaKeyword contained lanman msdfs object os2 posix processes syn keyword sambaKeyword contained scope separator shell show smbd template syn keyword sambaKeyword contained total vfs winbind wizard " New keywords for Samba 2.2.1 syn keyword sambaKeyword contained large obey pam readwrite restrictions syn keyword sambaKeyword contained unreadable " New keywords for Samba 2.2.2 - 2.2.4 syn keyword sambaKeyword contained acls allocate bytes count csc devmode syn keyword sambaKeyword contained disable dn egd entropy enum extensions mmap syn keyword sambaKeyword contained policy spin spoolss " Since Samba 3.0.2 syn keyword sambaKeyword contained abort afs algorithmic backend syn keyword sambaKeyword contained charset cups defer display syn keyword sambaKeyword contained enable idmap kerberos lookups syn keyword sambaKeyword contained methods modules nested NIS ntlm NTLMv2 syn keyword sambaKeyword contained objects paranoid partners passdb syn keyword sambaKeyword contained plaintext prefix primary private syn keyword sambaKeyword contained profile quota realm replication syn keyword sambaKeyword contained reported rid schannel sendfile sharing syn keyword sambaKeyword contained shutdown signing special spnego syn keyword sambaKeyword contained store unknown unwriteable " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link sambaParameter Normal hi def link sambaKeyword Type hi def link sambaSection Statement hi def link sambaMacro PreProc hi def link sambaComment Comment hi def link sambaContinue Operator hi def link sambaBoolean Constant let b:current_syntax = "samba" " vim: ts=8 PK!jL L vim80/syntax/cweb.vimnu[" Vim syntax file " Language: CWEB " Maintainer: Andreas Scherer " Last Change: 2011 Dec 25 by Thilo Six " Details of the CWEB language can be found in the article by Donald E. Knuth " and Silvio Levy, "The CWEB System of Structured Documentation", included as " file "cwebman.tex" in the standard CWEB distribution, available for " anonymous ftp at ftp://labrea.stanford.edu/pub/cweb/. " TODO: Section names and C/C++ comments should be treated as TeX material. " TODO: The current version switches syntax highlighting off for section " TODO: names, and leaves C/C++ comments as such. (On the other hand, " TODO: switching to TeX mode in C/C++ comments might be colour overkill.) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " For starters, read the TeX syntax; TeX syntax items are allowed at the top " level in the CWEB syntax, e.g., in the preamble. In general, a CWEB source " code can be seen as a normal TeX document with some C/C++ material " interspersed in certain defined regions. runtime! syntax/tex.vim unlet b:current_syntax " Read the C/C++ syntax too; C/C++ syntax items are treated as such in the " C/C++ section of a CWEB chunk or in inner C/C++ context in "|...|" groups. syntax include @webIncludedC :p:h/cpp.vim let s:cpo_save = &cpo set cpo&vim " Inner C/C++ context (ICC) should be quite simple as it's comprised of " material in "|...|"; however the naive definition for this region would " hickup at the innocious "\|" TeX macro. Note: For the time being we expect " that an ICC begins either at the start of a line or after some white space. syntax region webInnerCcontext start="\(^\|[ \t\~`(]\)|" end="|" contains=@webIncludedC,webSectionName,webRestrictedTeX,webIgnoredStuff " Genuine C/C++ material. This syntactic region covers both the definition " part and the C/C++ part of a CWEB section; it is ended by the TeX part of " the next section. syntax region webCpart start="@[dfscp<(]" end="@[ \*]" contains=@webIncludedC,webSectionName,webRestrictedTeX,webIgnoredStuff " Section names contain C/C++ material only in inner context. syntax region webSectionName start="@[<(]" end="@>" contains=webInnerCcontext contained " The contents of "control texts" is not treated as TeX material, because in " non-trivial cases this completely clobbers the syntax recognition. Instead, " we highlight these elements as "strings". syntax region webRestrictedTeX start="@[\^\.:t=q]" end="@>" oneline " Double-@ means single-@, anywhere in the CWEB source. (This allows e-mail " address without going into C/C++ mode.) syntax match webIgnoredStuff "@@" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link webRestrictedTeX String let b:current_syntax = "cweb" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!'y:y:vim80/syntax/apache.vimnu[" Vim syntax file " Language: Apache configuration (httpd.conf, srm.conf, access.conf, .htaccess) " Maintainer: David Necas (Yeti) " License: This file can be redistribued and/or modified under the same terms " as Vim itself. " Last Change: 2014-03-04 " Notes: Last synced with apache-2.2.3, version 1.x is no longer supported " TODO: see particular FIXME's scattered through the file " make it really linewise? " + add `display' where appropriate " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " Base constructs syn match apacheComment "^\s*#.*$" contains=apacheFixme syn match apacheUserID "#-\?\d\+\>" syn case match syn keyword apacheFixme FIXME TODO XXX NOT syn case ignore syn match apacheAnything "\s[^>]*" contained syn match apacheError "\w\+" contained syn region apacheString start=+"+ end=+"+ skip=+\\\\\|\\\"+ oneline " Following is to prevent escaped quotes from being parsed as strings. syn match apacheSkipQuote +\\"+ " Core and mpm syn keyword apacheDeclaration AccessFileName AddDefaultCharset AllowOverride AuthName AuthType ContentDigest DefaultType DocumentRoot ErrorDocument ErrorLog HostNameLookups IdentityCheck Include KeepAlive KeepAliveTimeout LimitRequestBody LimitRequestFields LimitRequestFieldsize LimitRequestLine LogLevel MaxKeepAliveRequests NameVirtualHost Options Require RLimitCPU RLimitMEM RLimitNPROC Satisfy ScriptInterpreterSource ServerAdmin ServerAlias ServerName ServerPath ServerRoot ServerSignature ServerTokens TimeOut UseCanonicalName syn keyword apacheDeclaration AcceptPathInfo CGIMapExtension EnableMMAP FileETag ForceType LimitXMLRequestBody SetHandler SetInputFilter SetOutputFilter syn keyword apacheDeclaration AcceptFilter AllowEncodedSlashes EnableSendfile LimitInternalRecursion TraceEnable syn keyword apacheOption INode MTime Size syn keyword apacheOption Any All On Off Double EMail DNS Min Minimal OS Prod ProductOnly Full syn keyword apacheOption emerg alert crit error warn notice info debug syn keyword apacheOption registry script inetd standalone syn match apacheOptionOption "[+-]\?\<\(ExecCGI\|FollowSymLinks\|Includes\|IncludesNoExec\|Indexes\|MultiViews\|SymLinksIfOwnerMatch\)\>" syn keyword apacheOption user group syn match apacheOption "\" syn case match syn keyword apacheMethodOption GET POST PUT DELETE CONNECT OPTIONS TRACE PATCH PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK contained syn case ignore syn match apacheSection "<\/\=\(Directory\|DirectoryMatch\|Files\|FilesMatch\|IfModule\|IfDefine\|Location\|LocationMatch\|VirtualHost\)[^>]*>" contains=apacheAnything syn match apacheLimitSection "<\/\=\(Limit\|LimitExcept\)[^>]*>" contains=apacheLimitSectionKeyword,apacheMethodOption,apacheError syn keyword apacheLimitSectionKeyword Limit LimitExcept contained syn match apacheAuthType "AuthType\s.*$" contains=apacheAuthTypeValue syn keyword apacheAuthTypeValue Basic Digest syn match apacheAllowOverride "AllowOverride\s.*$" contains=apacheAllowOverrideValue,apacheComment syn keyword apacheAllowOverrideValue AuthConfig FileInfo Indexes Limit Options contained syn keyword apacheDeclaration CoreDumpDirectory EnableExceptionHook GracefulShutdownTimeout Group Listen ListenBacklog LockFile MaxClients MaxMemFree MaxRequestsPerChild MaxSpareThreads MaxSpareThreadsPerChild MinSpareThreads NumServers PidFile ScoreBoardFile SendBufferSize ServerLimit StartServers StartThreads ThreadLimit ThreadsPerChild User syn keyword apacheDeclaration MaxThreads ThreadStackSize syn keyword apacheDeclaration Win32DisableAcceptEx syn keyword apacheDeclaration AssignUserId ChildPerUserId syn keyword apacheDeclaration AcceptMutex MaxSpareServers MinSpareServers syn keyword apacheOption flock fcntl sysvsem pthread " Modules syn keyword apacheDeclaration Action Script syn keyword apacheDeclaration Alias AliasMatch Redirect RedirectMatch RedirectTemp RedirectPermanent ScriptAlias ScriptAliasMatch syn keyword apacheOption permanent temp seeother gone syn keyword apacheDeclaration AuthAuthoritative AuthGroupFile AuthUserFile syn keyword apacheDeclaration AuthBasicAuthoritative AuthBasicProvider syn keyword apacheDeclaration AuthDigestAlgorithm AuthDigestDomain AuthDigestNcCheck AuthDigestNonceFormat AuthDigestNonceLifetime AuthDigestProvider AuthDigestQop AuthDigestShmemSize syn keyword apacheOption none auth auth-int MD5 MD5-sess syn match apacheSection "<\/\=\(]*>" contains=apacheAnything syn keyword apacheDeclaration Anonymous Anonymous_Authoritative Anonymous_LogEmail Anonymous_MustGiveEmail Anonymous_NoUserID Anonymous_VerifyEmail syn keyword apacheDeclaration AuthDBDUserPWQuery AuthDBDUserRealmQuery syn keyword apacheDeclaration AuthDBMGroupFile AuthDBMAuthoritative syn keyword apacheDeclaration AuthDBM TypeAuthDBMUserFile syn keyword apacheOption default SDBM GDBM NDBM DB syn keyword apacheDeclaration AuthDefaultAuthoritative syn keyword apacheDeclaration AuthUserFile syn keyword apacheDeclaration AuthLDAPBindON AuthLDAPEnabled AuthLDAPFrontPageHack AuthLDAPStartTLS syn keyword apacheDeclaration AuthLDAPBindDN AuthLDAPBindPassword AuthLDAPCharsetConfig AuthLDAPCompareDNOnServer AuthLDAPDereferenceAliases AuthLDAPGroupAttribute AuthLDAPGroupAttributeIsDN AuthLDAPRemoteUserIsDN AuthLDAPUrl AuthzLDAPAuthoritative syn keyword apacheOption always never searching finding syn keyword apacheOption ldap-user ldap-group ldap-dn ldap-attribute ldap-filter syn keyword apacheDeclaration AuthDBMGroupFile AuthzDBMAuthoritative AuthzDBMType syn keyword apacheDeclaration AuthzDefaultAuthoritative syn keyword apacheDeclaration AuthGroupFile AuthzGroupFileAuthoritative syn match apacheAllowDeny "Allow\s\+from.*$" contains=apacheAllowDenyValue,apacheComment syn match apacheAllowDeny "Deny\s\+from.*$" contains=apacheAllowDenyValue,apacheComment syn keyword apacheAllowDenyValue All None contained syn match apacheOrder "^\s*Order\s.*$" contains=apacheOrderValue,apacheComment syn keyword apacheOrderValue Deny Allow contained syn keyword apacheDeclaration AuthzOwnerAuthoritative syn keyword apacheDeclaration AuthzUserAuthoritative syn keyword apacheDeclaration AddAlt AddAltByEncoding AddAltByType AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon HeaderName IndexIgnore IndexOptions IndexOrderDefault ReadmeName syn keyword apacheDeclaration IndexStyleSheet syn keyword apacheOption DescriptionWidth FancyIndexing FoldersFirst IconHeight IconsAreLinks IconWidth NameWidth ScanHTMLTitles SuppressColumnSorting SuppressDescription SuppressHTMLPreamble SuppressLastModified SuppressSize TrackModified syn keyword apacheOption Ascending Descending Name Date Size Description syn keyword apacheOption HTMLTable SuppressIcon SuppressRules VersionSort XHTML syn keyword apacheOption IgnoreClient IgnoreCase ShowForbidden SuppresRules syn keyword apacheDeclaration CacheForceCompletion CacheMaxStreamingBuffer syn keyword apacheDeclaration CacheDefaultExpire CacheDisable CacheEnable CacheIgnoreCacheControl CacheIgnoreHeaders CacheIgnoreNoLastMod CacheLastModifiedFactor CacheMaxExpire CacheStoreNoStore CacheStorePrivate syn keyword apacheDeclaration MetaFiles MetaDir MetaSuffix syn keyword apacheDeclaration ScriptLog ScriptLogLength ScriptLogBuffer syn keyword apacheDeclaration ScriptStock syn keyword apacheDeclaration CharsetDefault CharsetOptions CharsetSourceEnc syn keyword apacheOption DebugLevel ImplicitAdd NoImplicitAdd syn keyword apacheDeclaration Dav DavDepthInfinity DavMinTimeout syn keyword apacheDeclaration DavLockDB syn keyword apacheDeclaration DavGenericLockDB syn keyword apacheDeclaration DBDExptime DBDKeep DBDMax DBDMin DBDParams DBDPersist DBDPrepareSQL DBDriver syn keyword apacheDeclaration DeflateCompressionLevel DeflateBufferSize DeflateFilterNote DeflateMemLevel DeflateWindowSize syn keyword apacheDeclaration DirectoryIndex DirectorySlash syn keyword apacheDeclaration CacheExpiryCheck CacheGcClean CacheGcDaily CacheGcInterval CacheGcMemUsage CacheGcUnused CacheSize CacheTimeMargin syn keyword apacheDeclaration CacheDirLength CacheDirLevels CacheMaxFileSize CacheMinFileSize CacheRoot syn keyword apacheDeclaration DumpIOInput DumpIOOutput syn keyword apacheDeclaration ProtocolEcho syn keyword apacheDeclaration PassEnv SetEnv UnsetEnv syn keyword apacheDeclaration Example syn keyword apacheDeclaration ExpiresActive ExpiresByType ExpiresDefault syn keyword apacheDeclaration ExtFilterDefine ExtFilterOptions syn keyword apacheOption PreservesContentLength DebugLevel LogStderr NoLogStderr syn match apacheOption "\<\(cmd\|mode\|intype\|outtype\|ftype\|disableenv\|enableenv\)\ze=" syn keyword apacheDeclaration CacheFile MMapFile syn keyword apacheDeclaration FilterChain FilterDeclare FilterProtocol FilterProvider FilterTrace syn keyword apacheDeclaration Header syn keyword apacheDeclaration RequestHeader syn keyword apacheOption set unset append add syn keyword apacheDeclaration IdentityCheck IdentityCheckTimeout syn keyword apacheDeclaration ImapMenu ImapDefault ImapBase syn keyword apacheOption none formatted semiformatted unformatted syn keyword apacheOption nocontent referer error map syn keyword apacheDeclaration SSIEndTag SSIErrorMsg SSIStartTag SSITimeFormat SSIUndefinedEcho XBitHack syn keyword apacheOption on off full syn keyword apacheDeclaration AddModuleInfo syn keyword apacheDeclaration ISAPIReadAheadBuffer ISAPILogNotSupported ISAPIAppendLogToErrors ISAPIAppendLogToQuery syn keyword apacheDeclaration ISAPICacheFile ISAIPFakeAsync syn keyword apacheDeclaration LDAPCertDBPath syn keyword apacheDeclaration LDAPCacheEntries LDAPCacheTTL LDAPConnectionTimeout LDAPOpCacheEntries LDAPOpCacheTTL LDAPSharedCacheFile LDAPSharedCacheSize LDAPTrustedClientCert LDAPTrustedGlobalCert LDAPTrustedMode LDAPVerifyServerCert syn keyword apacheOption CA_DER CA_BASE64 CA_CERT7_DB CA_SECMOD CERT_DER CERT_BASE64 CERT_KEY3_DB CERT_NICKNAME CERT_PFX KEY_DER KEY_BASE64 KEY_PFX syn keyword apacheDeclaration BufferedLogs CookieLog CustomLog LogFormat TransferLog syn keyword apacheDeclaration ForensicLog syn keyword apacheDeclaration MCacheMaxObjectCount MCacheMaxObjectSize MCacheMaxStreamingBuffer MCacheMinObjectSize MCacheRemovalAlgorithm MCacheSize syn keyword apacheDeclaration AddCharset AddEncoding AddHandler AddLanguage AddType DefaultLanguage RemoveEncoding RemoveHandler RemoveType TypesConfig syn keyword apacheDeclaration AddInputFilter AddOutputFilter ModMimeUsePathInfo MultiviewsMatch RemoveInputFilter RemoveOutputFilter RemoveCharset syn keyword apacheOption NegotiatedOnly Filters Handlers syn keyword apacheDeclaration MimeMagicFile syn keyword apacheDeclaration MMapFile syn keyword apacheDeclaration CacheNegotiatedDocs LanguagePriority ForceLanguagePriority syn keyword apacheDeclaration NWSSLTrustedCerts NWSSLUpgradeable SecureListen syn keyword apacheDeclaration PerlModule PerlRequire PerlTaintCheck PerlWarn syn keyword apacheDeclaration PerlSetVar PerlSetEnv PerlPassEnv PerlSetupEnv syn keyword apacheDeclaration PerlInitHandler PerlPostReadRequestHandler PerlHeaderParserHandler syn keyword apacheDeclaration PerlTransHandler PerlAccessHandler PerlAuthenHandler PerlAuthzHandler syn keyword apacheDeclaration PerlTypeHandler PerlFixupHandler PerlHandler PerlLogHandler syn keyword apacheDeclaration PerlCleanupHandler PerlChildInitHandler PerlChildExitHandler syn keyword apacheDeclaration PerlRestartHandler PerlDispatchHandler syn keyword apacheDeclaration PerlFreshRestart PerlSendHeader syn keyword apacheDeclaration php_value php_flag php_admin_value php_admin_flag syn match apacheSection "<\/\=\(Proxy\|ProxyMatch\)[^>]*>" contains=apacheAnything syn keyword apacheDeclaration AllowCONNECT NoProxy ProxyBadHeader ProxyBlock ProxyDomain ProxyErrorOverride ProxyIOBufferSize ProxyMaxForwards ProxyPass ProxyPassMatch ProxyPassReverse ProxyPassReverseCookieDomain ProxyPassReverseCookiePath ProxyPreserveHost ProxyReceiveBufferSize ProxyRemote ProxyRemoteMatch ProxyRequests ProxyTimeout ProxyVia syn keyword apacheDeclaration RewriteBase RewriteCond RewriteEngine RewriteLock RewriteLog RewriteLogLevel RewriteMap RewriteOptions RewriteRule syn keyword apacheOption inherit syn keyword apacheDeclaration BrowserMatch BrowserMatchNoCase SetEnvIf SetEnvIfNoCase syn keyword apacheDeclaration LoadFile LoadModule syn keyword apacheDeclaration CheckSpelling CheckCaseOnly syn keyword apacheDeclaration SSLCACertificateFile SSLCACertificatePath SSLCADNRequestFile SSLCADNRequestPath SSLCARevocationFile SSLCARevocationPath SSLCertificateChainFile SSLCertificateFile SSLCertificateKeyFile SSLCipherSuite SSLCryptoDevice SSLEngine SSLHonorCipherOrder SSLMutex SSLOptions SSLPassPhraseDialog SSLProtocol SSLProxyCACertificateFile SSLProxyCACertificatePath SSLProxyCARevocationFile SSLProxyCARevocationPath SSLProxyCipherSuite SSLProxyEngine SSLProxyMachineCertificateFile SSLProxyMachineCertificatePath SSLProxyProtocol SSLProxyVerify SSLProxyVerifyDepth SSLRandomSeed SSLRequire SSLRequireSSL SSLSessionCache SSLSessionCacheTimeout SSLUserName SSLVerifyClient SSLVerifyDepth syn match apacheOption "[+-]\?\<\(StdEnvVars\|CompatEnvVars\|ExportCertData\|FakeBasicAuth\|StrictRequire\|OptRenegotiate\)\>" syn keyword apacheOption builtin sem syn match apacheOption "\(file\|exec\|egd\|dbm\|shm\):" syn match apacheOption "[+-]\?\<\(SSLv2\|SSLv3\|TLSv1\|kRSA\|kHDr\|kDHd\|kEDH\|aNULL\|aRSA\|aDSS\|aRH\|eNULL\|DES\|3DES\|RC2\|RC4\|IDEA\|MD5\|SHA1\|SHA\|EXP\|EXPORT40\|EXPORT56\|LOW\|MEDIUM\|HIGH\|RSA\|DH\|EDH\|ADH\|DSS\|NULL\)\>" syn keyword apacheOption optional optional_no_ca syn keyword apacheDeclaration ExtendedStatus syn keyword apacheDeclaration SuexecUserGroup syn keyword apacheDeclaration UserDir syn keyword apacheDeclaration CookieDomain CookieExpires CookieName CookieStyle CookieTracking syn keyword apacheOption Netscape Cookie Cookie2 RFC2109 RFC2965 syn match apacheSection "<\/\=\(]*>" contains=apacheAnything syn keyword apacheDeclaration VirtualDocumentRoot VirtualDocumentRootIP VirtualScriptAlias VirtualScriptAliasIP " Define the default highlighting hi def link apacheAllowOverride apacheDeclaration hi def link apacheAllowOverrideValue apacheOption hi def link apacheAuthType apacheDeclaration hi def link apacheAuthTypeValue apacheOption hi def link apacheOptionOption apacheOption hi def link apacheDeclaration Function hi def link apacheAnything apacheOption hi def link apacheOption Number hi def link apacheComment Comment hi def link apacheFixme Todo hi def link apacheLimitSectionKeyword apacheLimitSection hi def link apacheLimitSection apacheSection hi def link apacheSection Label hi def link apacheMethodOption Type hi def link apacheAllowDeny Include hi def link apacheAllowDenyValue Identifier hi def link apacheOrder Special hi def link apacheOrderValue String hi def link apacheString String hi def link apacheError Error hi def link apacheUserID Number let b:current_syntax = "apache" PK! Fp$p$vim80/syntax/sml.vimnu[" Vim syntax file " Language: SML " Filenames: *.sml *.sig " Maintainers: Markus Mottl " Fabrizio Zeno Cornelli " URL: http://www.ocaml.info/vim/syntax/sml.vim " Last Change: 2006 Oct 23 - Fixed character highlighting bug (MM) " 2002 Jun 02 - Fixed small typo (MM) " 2001 Nov 20 - Fixed small highlighting bug with modules (MM) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " SML is case sensitive. syn case match " lowercase identifier - the standard way to match syn match smlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/ syn match smlKeyChar "|" " Errors syn match smlBraceErr "}" syn match smlBrackErr "\]" syn match smlParenErr ")" syn match smlCommentErr "\*)" syn match smlThenErr "\" " Error-highlighting of "end" without synchronization: " as keyword or as error (default) if exists("sml_noend_error") syn match smlKeyword "\" else syn match smlEndErr "\" endif " Some convenient clusters syn cluster smlAllErrs contains=smlBraceErr,smlBrackErr,smlParenErr,smlCommentErr,smlEndErr,smlThenErr syn cluster smlAENoParen contains=smlBraceErr,smlBrackErr,smlCommentErr,smlEndErr,smlThenErr syn cluster smlContained contains=smlTodo,smlPreDef,smlModParam,smlModParam1,smlPreMPRestr,smlMPRestr,smlMPRestr1,smlMPRestr2,smlMPRestr3,smlModRHS,smlFuncWith,smlFuncStruct,smlModTypeRestr,smlModTRWith,smlWith,smlWithRest,smlModType,smlFullMod " Enclosing delimiters syn region smlEncl transparent matchgroup=smlKeyword start="(" matchgroup=smlKeyword end=")" contains=ALLBUT,@smlContained,smlParenErr syn region smlEncl transparent matchgroup=smlKeyword start="{" matchgroup=smlKeyword end="}" contains=ALLBUT,@smlContained,smlBraceErr syn region smlEncl transparent matchgroup=smlKeyword start="\[" matchgroup=smlKeyword end="\]" contains=ALLBUT,@smlContained,smlBrackErr syn region smlEncl transparent matchgroup=smlKeyword start="#\[" matchgroup=smlKeyword end="\]" contains=ALLBUT,@smlContained,smlBrackErr " Comments syn region smlComment start="(\*" end="\*)" contains=smlComment,smlTodo syn keyword smlTodo contained TODO FIXME XXX " let syn region smlEnd matchgroup=smlKeyword start="\" matchgroup=smlKeyword end="\" contains=ALLBUT,@smlContained,smlEndErr " local syn region smlEnd matchgroup=smlKeyword start="\" matchgroup=smlKeyword end="\" contains=ALLBUT,@smlContained,smlEndErr " abstype syn region smlNone matchgroup=smlKeyword start="\" matchgroup=smlKeyword end="\" contains=ALLBUT,@smlContained,smlEndErr " begin syn region smlEnd matchgroup=smlKeyword start="\" matchgroup=smlKeyword end="\" contains=ALLBUT,@smlContained,smlEndErr " if syn region smlNone matchgroup=smlKeyword start="\" matchgroup=smlKeyword end="\" contains=ALLBUT,@smlContained,smlThenErr "" Modules " "struct" syn region smlStruct matchgroup=smlModule start="\" matchgroup=smlModule end="\" contains=ALLBUT,@smlContained,smlEndErr " "sig" syn region smlSig matchgroup=smlModule start="\" matchgroup=smlModule end="\" contains=ALLBUT,@smlContained,smlEndErr,smlModule syn region smlModSpec matchgroup=smlKeyword start="\" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contained contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlModTRWith,smlMPRestr " "open" syn region smlNone matchgroup=smlKeyword start="\" matchgroup=smlModule end="\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*\>" contains=@smlAllErrs,smlComment " "structure" - somewhat complicated stuff ;-) syn region smlModule matchgroup=smlKeyword start="\<\(structure\|functor\)\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlPreDef syn region smlPreDef start="."me=e-1 matchgroup=smlKeyword end="\l\|="me=e-1 contained contains=@smlAllErrs,smlComment,smlModParam,smlModTypeRestr,smlModTRWith nextgroup=smlModPreRHS syn region smlModParam start="([^*]" end=")" contained contains=@smlAENoParen,smlModParam1 syn match smlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=smlPreMPRestr syn region smlPreMPRestr start="."me=e-1 end=")"me=e-1 contained contains=@smlAllErrs,smlComment,smlMPRestr,smlModTypeRestr syn region smlMPRestr start=":" end="."me=e-1 contained contains=@smlComment skipwhite skipempty nextgroup=smlMPRestr1,smlMPRestr2,smlMPRestr3 syn region smlMPRestr1 matchgroup=smlModule start="\ssig\s\=" matchgroup=smlModule end="\" contained contains=ALLBUT,@smlContained,smlEndErr,smlModule syn region smlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=smlKeyword end="->" contained contains=@smlAllErrs,smlComment,smlModParam skipwhite skipempty nextgroup=smlFuncWith syn match smlMPRestr3 "\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*" contained syn match smlModPreRHS "=" contained skipwhite skipempty nextgroup=smlModParam,smlFullMod syn region smlModRHS start="." end=".\w\|([^*]"me=e-2 contained contains=smlComment skipwhite skipempty nextgroup=smlModParam,smlFullMod syn match smlFullMod "\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=smlFuncWith syn region smlFuncWith start="([^*]"me=e-1 end=")" contained contains=smlComment,smlWith,smlFuncStruct syn region smlFuncStruct matchgroup=smlModule start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=smlModule end="\" contains=ALLBUT,@smlContained,smlEndErr syn match smlModTypeRestr "\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" contained syn region smlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@smlAENoParen,smlWith syn match smlWith "\<\(\u\(\w\|'\)*\.\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=smlWithRest syn region smlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@smlContained " "signature" syn region smlKeyword start="\" matchgroup=smlModule end="\<\w\(\w\|'\)*\>" contains=smlComment skipwhite skipempty nextgroup=smlMTDef syn match smlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s syn keyword smlKeyword and andalso case syn keyword smlKeyword datatype else eqtype syn keyword smlKeyword exception fn fun handle syn keyword smlKeyword in infix infixl infixr syn keyword smlKeyword match nonfix of orelse syn keyword smlKeyword raise handle type syn keyword smlKeyword val where while with withtype syn keyword smlType bool char exn int list option syn keyword smlType real string unit syn keyword smlOperator div mod not or quot rem syn keyword smlBoolean true false syn match smlConstructor "(\s*)" syn match smlConstructor "\[\s*\]" syn match smlConstructor "#\[\s*\]" syn match smlConstructor "\u\(\w\|'\)*\>" " Module prefix syn match smlModPath "\u\(\w\|'\)*\."he=e-1 syn match smlCharacter +#"\\""\|#"."\|#"\\\d\d\d"+ syn match smlCharErr +#"\\\d\d"\|#"\\\d"+ syn region smlString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match smlFunDef "=>" syn match smlRefAssign ":=" syn match smlTopStop ";;" syn match smlOperator "\^" syn match smlOperator "::" syn match smlAnyVar "\<_\>" syn match smlKeyChar "!" syn match smlKeyChar ";" syn match smlKeyChar "\*" syn match smlKeyChar "=" syn match smlNumber "\<-\=\d\+\>" syn match smlNumber "\<-\=0[x|X]\x\+\>" syn match smlReal "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>" " Synchronization syn sync minlines=20 syn sync maxlines=500 syn sync match smlEndSync grouphere smlEnd "\" syn sync match smlEndSync groupthere smlEnd "\" syn sync match smlStructSync grouphere smlStruct "\" syn sync match smlStructSync groupthere smlStruct "\" syn sync match smlSigSync grouphere smlSig "\" syn sync match smlSigSync groupthere smlSig "\" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link smlBraceErr Error hi def link smlBrackErr Error hi def link smlParenErr Error hi def link smlCommentErr Error hi def link smlEndErr Error hi def link smlThenErr Error hi def link smlCharErr Error hi def link smlComment Comment hi def link smlModPath Include hi def link smlModule Include hi def link smlModParam1 Include hi def link smlModType Include hi def link smlMPRestr3 Include hi def link smlFullMod Include hi def link smlModTypeRestr Include hi def link smlWith Include hi def link smlMTDef Include hi def link smlConstructor Constant hi def link smlModPreRHS Keyword hi def link smlMPRestr2 Keyword hi def link smlKeyword Keyword hi def link smlFunDef Keyword hi def link smlRefAssign Keyword hi def link smlKeyChar Keyword hi def link smlAnyVar Keyword hi def link smlTopStop Keyword hi def link smlOperator Keyword hi def link smlBoolean Boolean hi def link smlCharacter Character hi def link smlNumber Number hi def link smlReal Float hi def link smlString String hi def link smlType Type hi def link smlTodo Todo hi def link smlEncl Keyword let b:current_syntax = "sml" " vim: ts=8 PK!!B77vim80/syntax/python.vimnu[" Vim syntax file " Language: Python " Maintainer: Zvezdan Petkovic " Last Change: 2016 Oct 29 " Credits: Neil Schemenauer " Dmitry Vasiliev " " This version is a major rewrite by Zvezdan Petkovic. " " - introduced highlighting of doctests " - updated keywords, built-ins, and exceptions " - corrected regular expressions for " " * functions " * decorators " * strings " * escapes " * numbers " * space error " " - corrected synchronization " - more highlighting is ON by default, except " - space error highlighting is OFF by default " " Optional highlighting can be controlled using these variables. " " let python_no_builtin_highlight = 1 " let python_no_doctest_code_highlight = 1 " let python_no_doctest_highlight = 1 " let python_no_exception_highlight = 1 " let python_no_number_highlight = 1 " let python_space_error_highlight = 1 " " All the options above can be switched on together. " " let python_highlight_all = 1 " " quit when a syntax file was already loaded. if exists("b:current_syntax") finish endif " We need nocompatible mode in order to continue lines with backslashes. " Original setting will be restored. let s:cpo_save = &cpo set cpo&vim if exists("python_no_doctest_highlight") let python_no_doctest_code_highlight = 1 endif if exists("python_highlight_all") if exists("python_no_builtin_highlight") unlet python_no_builtin_highlight endif if exists("python_no_doctest_code_highlight") unlet python_no_doctest_code_highlight endif if exists("python_no_doctest_highlight") unlet python_no_doctest_highlight endif if exists("python_no_exception_highlight") unlet python_no_exception_highlight endif if exists("python_no_number_highlight") unlet python_no_number_highlight endif let python_space_error_highlight = 1 endif " Keep Python keywords in alphabetical order inside groups for easy " comparison with the table in the 'Python Language Reference' " https://docs.python.org/2/reference/lexical_analysis.html#keywords, " https://docs.python.org/3/reference/lexical_analysis.html#keywords. " Groups are in the order presented in NAMING CONVENTIONS in syntax.txt. " Exceptions come last at the end of each group (class and def below). " " Keywords 'with' and 'as' are new in Python 2.6 " (use 'from __future__ import with_statement' in Python 2.5). " " Some compromises had to be made to support both Python 3 and 2. " We include Python 3 features, but when a definition is duplicated, " the last definition takes precedence. " " - 'False', 'None', and 'True' are keywords in Python 3 but they are " built-ins in 2 and will be highlighted as built-ins below. " - 'exec' is a built-in in Python 3 and will be highlighted as " built-in below. " - 'nonlocal' is a keyword in Python 3 and will be highlighted. " - 'print' is a built-in in Python 3 and will be highlighted as " built-in below (use 'from __future__ import print_function' in 2) " - async and await were added in Python 3.5 and are soft keywords. " syn keyword pythonStatement False None True syn keyword pythonStatement as assert break continue del exec global syn keyword pythonStatement lambda nonlocal pass print return with yield syn keyword pythonStatement class def nextgroup=pythonFunction skipwhite syn keyword pythonConditional elif else if syn keyword pythonRepeat for while syn keyword pythonOperator and in is not or syn keyword pythonException except finally raise try syn keyword pythonInclude from import syn keyword pythonAsync async await " Decorators (new in Python 2.4) " A dot must be allowed because of @MyClass.myfunc decorators. syn match pythonDecorator "@" display contained syn match pythonDecoratorName "@\s*\h\%(\w\|\.\)*" display contains=pythonDecorator " Python 3.5 introduced the use of the same symbol for matrix multiplication: " https://www.python.org/dev/peps/pep-0465/. We now have to exclude the " symbol from highlighting when used in that context. " Single line multiplication. syn match pythonMatrixMultiply \ "\%(\w\|[])]\)\s*@" \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue \ transparent " Multiplication continued on the next line after backslash. syn match pythonMatrixMultiply \ "[^\\]\\\s*\n\%(\s*\.\.\.\s\)\=\s\+@" \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue \ transparent " Multiplication in a parenthesized expression over multiple lines with @ at " the start of each continued line; very similar to decorators and complex. syn match pythonMatrixMultiply \ "^\s*\%(\%(>>>\|\.\.\.\)\s\+\)\=\zs\%(\h\|\%(\h\|[[(]\).\{-}\%(\w\|[])]\)\)\s*\n\%(\s*\.\.\.\s\)\=\s\+@\%(.\{-}\n\%(\s*\.\.\.\s\)\=\s\+@\)*" \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue \ transparent syn match pythonFunction "\h\w*" display contained syn match pythonComment "#.*$" contains=pythonTodo,@Spell syn keyword pythonTodo FIXME NOTE NOTES TODO XXX contained " Triple-quoted strings can contain doctests. syn region pythonString matchgroup=pythonQuotes \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" \ contains=pythonEscape,@Spell syn region pythonString matchgroup=pythonTripleQuotes \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell syn region pythonRawString matchgroup=pythonQuotes \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" \ contains=@Spell syn region pythonRawString matchgroup=pythonTripleQuotes \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend \ contains=pythonSpaceError,pythonDoctest,@Spell syn match pythonEscape +\\[abfnrtv'"\\]+ contained syn match pythonEscape "\\\o\{1,3}" contained syn match pythonEscape "\\x\x\{2}" contained syn match pythonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained " Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/ syn match pythonEscape "\\N{\a\+\%(\s\a\+\)*}" contained syn match pythonEscape "\\$" " It is very important to understand all details before changing the " regular expressions below or their order. " The word boundaries are *not* the floating-point number boundaries " because of a possible leading or trailing decimal point. " The expressions below ensure that all valid number literals are " highlighted, and invalid number literals are not. For example, " " - a decimal point in '4.' at the end of a line is highlighted, " - a second dot in 1.0.0 is not highlighted, " - 08 is not highlighted, " - 08e0 or 08j are highlighted, " " and so on, as specified in the 'Python Language Reference'. " https://docs.python.org/2/reference/lexical_analysis.html#numeric-literals " https://docs.python.org/3/reference/lexical_analysis.html#numeric-literals if !exists("python_no_number_highlight") " numbers (including longs and complex) syn match pythonNumber "\<0[oO]\=\o\+[Ll]\=\>" syn match pythonNumber "\<0[xX]\x\+[Ll]\=\>" syn match pythonNumber "\<0[bB][01]\+[Ll]\=\>" syn match pythonNumber "\<\%([1-9]\d*\|0\)[Ll]\=\>" syn match pythonNumber "\<\d\+[jJ]\>" syn match pythonNumber "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" syn match pythonNumber \ "\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@=" syn match pythonNumber \ "\%(^\|\W\)\zs\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>" endif " Group the built-ins in the order in the 'Python Library Reference' for " easier comparison. " https://docs.python.org/2/library/constants.html " https://docs.python.org/3/library/constants.html " http://docs.python.org/2/library/functions.html " http://docs.python.org/3/library/functions.html " http://docs.python.org/2/library/functions.html#non-essential-built-in-functions " http://docs.python.org/3/library/functions.html#non-essential-built-in-functions " Python built-in functions are in alphabetical order. if !exists("python_no_builtin_highlight") " built-in constants " 'False', 'True', and 'None' are also reserved words in Python 3 syn keyword pythonBuiltin False True None syn keyword pythonBuiltin NotImplemented Ellipsis __debug__ " built-in functions syn keyword pythonBuiltin abs all any bin bool bytearray callable chr syn keyword pythonBuiltin classmethod compile complex delattr dict dir syn keyword pythonBuiltin divmod enumerate eval filter float format syn keyword pythonBuiltin frozenset getattr globals hasattr hash syn keyword pythonBuiltin help hex id input int isinstance syn keyword pythonBuiltin issubclass iter len list locals map max syn keyword pythonBuiltin memoryview min next object oct open ord pow syn keyword pythonBuiltin print property range repr reversed round set syn keyword pythonBuiltin setattr slice sorted staticmethod str syn keyword pythonBuiltin sum super tuple type vars zip __import__ " Python 2 only syn keyword pythonBuiltin basestring cmp execfile file syn keyword pythonBuiltin long raw_input reduce reload unichr syn keyword pythonBuiltin unicode xrange " Python 3 only syn keyword pythonBuiltin ascii bytes exec " non-essential built-in functions; Python 2 only syn keyword pythonBuiltin apply buffer coerce intern " avoid highlighting attributes as builtins syn match pythonAttribute /\.\h\w*/hs=s+1 \ contains=ALLBUT,pythonBuiltin,pythonFunction,pythonAsync \ transparent endif " From the 'Python Library Reference' class hierarchy at the bottom. " http://docs.python.org/2/library/exceptions.html " http://docs.python.org/3/library/exceptions.html if !exists("python_no_exception_highlight") " builtin base exceptions (used mostly as base classes for other exceptions) syn keyword pythonExceptions BaseException Exception syn keyword pythonExceptions ArithmeticError BufferError syn keyword pythonExceptions LookupError " builtin base exceptions removed in Python 3 syn keyword pythonExceptions EnvironmentError StandardError " builtin exceptions (actually raised) syn keyword pythonExceptions AssertionError AttributeError syn keyword pythonExceptions EOFError FloatingPointError GeneratorExit syn keyword pythonExceptions ImportError IndentationError syn keyword pythonExceptions IndexError KeyError KeyboardInterrupt syn keyword pythonExceptions MemoryError NameError NotImplementedError syn keyword pythonExceptions OSError OverflowError ReferenceError syn keyword pythonExceptions RuntimeError StopIteration SyntaxError syn keyword pythonExceptions SystemError SystemExit TabError TypeError syn keyword pythonExceptions UnboundLocalError UnicodeError syn keyword pythonExceptions UnicodeDecodeError UnicodeEncodeError syn keyword pythonExceptions UnicodeTranslateError ValueError syn keyword pythonExceptions ZeroDivisionError " builtin OS exceptions in Python 3 syn keyword pythonExceptions BlockingIOError BrokenPipeError syn keyword pythonExceptions ChildProcessError ConnectionAbortedError syn keyword pythonExceptions ConnectionError ConnectionRefusedError syn keyword pythonExceptions ConnectionResetError FileExistsError syn keyword pythonExceptions FileNotFoundError InterruptedError syn keyword pythonExceptions IsADirectoryError NotADirectoryError syn keyword pythonExceptions PermissionError ProcessLookupError syn keyword pythonExceptions RecursionError StopAsyncIteration syn keyword pythonExceptions TimeoutError " builtin exceptions deprecated/removed in Python 3 syn keyword pythonExceptions IOError VMSError WindowsError " builtin warnings syn keyword pythonExceptions BytesWarning DeprecationWarning FutureWarning syn keyword pythonExceptions ImportWarning PendingDeprecationWarning syn keyword pythonExceptions RuntimeWarning SyntaxWarning UnicodeWarning syn keyword pythonExceptions UserWarning Warning " builtin warnings in Python 3 syn keyword pythonExceptions ResourceWarning endif if exists("python_space_error_highlight") " trailing whitespace syn match pythonSpaceError display excludenl "\s\+$" " mixed tabs and spaces syn match pythonSpaceError display " \+\t" syn match pythonSpaceError display "\t\+ " endif " Do not spell doctests inside strings. " Notice that the end of a string, either ''', or """, will end the contained " doctest too. Thus, we do *not* need to have it as an end pattern. if !exists("python_no_doctest_highlight") if !exists("python_no_doctest_code_highlight") syn region pythonDoctest \ start="^\s*>>>\s" end="^\s*$" \ contained contains=ALLBUT,pythonDoctest,pythonFunction,@Spell syn region pythonDoctestValue \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$" \ contained else syn region pythonDoctest \ start="^\s*>>>" end="^\s*$" \ contained contains=@NoSpell endif endif " Sync at the beginning of class, function, or method definition. syn sync match pythonSync grouphere NONE "^\%(def\|class\)\s\+\h\w*\s*[(:]" " The default highlight links. Can be overridden later. hi def link pythonStatement Statement hi def link pythonConditional Conditional hi def link pythonRepeat Repeat hi def link pythonOperator Operator hi def link pythonException Exception hi def link pythonInclude Include hi def link pythonAsync Statement hi def link pythonDecorator Define hi def link pythonDecoratorName Function hi def link pythonFunction Function hi def link pythonComment Comment hi def link pythonTodo Todo hi def link pythonString String hi def link pythonRawString String hi def link pythonQuotes String hi def link pythonTripleQuotes pythonQuotes hi def link pythonEscape Special if !exists("python_no_number_highlight") hi def link pythonNumber Number endif if !exists("python_no_builtin_highlight") hi def link pythonBuiltin Function endif if !exists("python_no_exception_highlight") hi def link pythonExceptions Structure endif if exists("python_space_error_highlight") hi def link pythonSpaceError Error endif if !exists("python_no_doctest_highlight") hi def link pythonDoctest Special hi def link pythonDoctestValue Define endif let b:current_syntax = "python" let &cpo = s:cpo_save unlet s:cpo_save " vim:set sw=2 sts=2 ts=8 noet: PK!ϛ$$vim80/syntax/groff.vimnu[" VIM syntax file " Language: groff " Maintainer: Alejandro Lpez-Valencia " URL: http://dradul.tripod.com/vim " Last Change: 2003-05-08-12:41:13 GMT-5. " This uses the nroff.vim syntax file. let b:main_syntax = "nroff" let b:nroff_is_groff = 1 runtime! syntax/nroff.vim PK!Jb. . vim80/syntax/usserverlog.vimnu[" Vim syntax file " Language: Innovation Data Processing usserver.log file " Maintainer: Rob Owens " Latest Revision: 2013-09-19 " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Date: syn match usserverlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/ " Msg Types: syn match usserverlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=usserverlog_Process skipwhite syn match usserverlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=usserverlog_Process skipwhite syn match usserverlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=usserverlog_Process skipwhite syn match usserverlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=usserverlog_Process skipwhite " Processes: syn region usserverlog_Process start="(" end=")" contained " IP Address: syn match usserverlog_IPaddr /\( \|(\)\zs\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ " Profile: syn match usserverlog_Profile /Using default configuration for profile \zs\S\{1,8}\ze/ syn match usserverlog_Profile /Now running profile \zs\S\{1,8}\ze/ syn match usserverlog_Profile /in profile set \zs\S\{1,8}\ze/ syn match usserverlog_Profile /Migrate disk backup from profile \zs\S\{1,8}\ze/ syn match usserverlog_Profile /Using profile prefix for profile \zs\S\{1,8}\ze/ syn match usserverlog_Profile /Add\/update profile \zs\S\{1,8}\ze/ syn match usserverlog_Profile /Profileset=\zs\S\{1,8}\ze,/ syn match usserverlog_Profile /profileset=\zs\S\{1,8}\ze/ syn match usserverlog_Profile /Vault \(disk\|tape\) backup to vault \d\{1,4} from profile \zs\S\{1,8}\ze/ syn match usserverlog_Profile /Profile name \zs\"\S\{1,8}\"/ syn match usserverlog_Profile / Profile: \zs\S\{1,8}/ syn match usserverlog_Profile / Profile: \zs\S\{1,8}\ze, / syn match usserverlog_Profile /, profile: \zs\S\{1,8}\ze,/ syn match usserverlog_Profile /Expecting Profile: \zs\S\{1,8}\ze,/ syn match usserverlog_Profile /found Profile: \zs\S\{1,8}\ze,/ syn match usserverlog_Profile /Profile \zs\S\{1,8} \zeis a member of group: / syn match upstreamlog_Profile /Backup Profile: \zs\S\{1,8}\ze Version date/ syn match upstreamlog_Profile /Backup profile: \zs\S\{1,8}\ze Version date/ syn match usserverlog_Profile /Full of \zs\S\{1,8}\ze$/ syn match usserverlog_Profile /Incr. of \zs\S\{1,8}\ze$/ syn match usserverlog_Profile /Profile=\zs\S\{1,8}\ze,/ " Target: syn region usserverlog_Target start="Computer: \zs" end="\ze[\]\)]" syn region usserverlog_Target start="Computer name \zs\"" end="\"\ze" syn region usserverlog_Target start="Registration add request successful \zs" end="$" syn region usserverlog_Target start="request to registered name \zs" end=" " syn region usserverlog_Target start=", sending to \zs" end="$" hi def link usserverlog_Date Underlined hi def link usserverlog_MsgD Type hi def link usserverlog_MsgE Error hi def link usserverlog_MsgW Constant hi def link usserverlog_Process Statement hi def link usserverlog_IPaddr Identifier hi def link usserverlog_Profile Identifier hi def link usserverlog_Target Identifier let b:current_syntax = "usserverlog" PK!Yki i vim80/syntax/udevperm.vimnu[" Vim syntax file " Language: udev(8) permissions file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match udevpermBegin display '^' nextgroup=udevpermDevice syn match udevpermDevice contained display '[^:]\+' \ contains=udevpermPattern \ nextgroup=udevpermUserColon syn match udevpermPattern contained '[*?]' syn region udevpermPattern contained start='\[!\=' end='\]' \ contains=udevpermPatRange syn match udevpermPatRange contained '[^[-]-[^]-]' syn match udevpermUserColon contained display ':' \ nextgroup=udevpermUser syn match udevpermUser contained display '[^:]\+' \ nextgroup=udevpermGroupColon syn match udevpermGroupColon contained display ':' \ nextgroup=udevpermGroup syn match udevpermGroup contained display '[^:]\+' \ nextgroup=udevpermPermColon syn match udevpermPermColon contained display ':' \ nextgroup=udevpermPerm syn match udevpermPerm contained display '\<0\=\o\+\>' \ contains=udevpermOctalZero syn match udevpermOctalZero contained display '\<0' syn match udevpermOctalError contained display '\<0\o*[89]\d*\>' syn keyword udevpermTodo contained TODO FIXME XXX NOTE syn region udevpermComment display oneline start='^\s*#' end='$' \ contains=udevpermTodo,@Spell hi def link udevpermTodo Todo hi def link udevpermComment Comment hi def link udevpermDevice String hi def link udevpermPattern SpecialChar hi def link udevpermPatRange udevpermPattern hi def link udevpermColon Normal hi def link udevpermUserColon udevpermColon hi def link udevpermUser Identifier hi def link udevpermGroupColon udevpermColon hi def link udevpermGroup Type hi def link udevpermPermColon udevpermColon hi def link udevpermPerm Number hi def link udevpermOctalZero PreProc hi def link udevpermOctalError Error let b:current_syntax = "udevperm" let &cpo = s:cpo_save unlet s:cpo_save PK!df$f$vim80/syntax/gtkrc.vimnu[" Vim syntax file " This is a GENERATED FILE. Please always refer to source file at the URI below. " Language: Gtk+ theme files `gtkrc' " Maintainer: David Ne\v{c}as (Yeti) " Last Change: 2002-10-31 " URL: http://trific.ath.cx/Ftp/vim/syntax/gtkrc.vim " Setup " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=_,-,a-z,A-Z,48-57 syn case match " Base constructs syn match gtkrcComment "#.*$" contains=gtkrcFixme syn keyword gtkrcFixme FIXME TODO XXX NOT contained syn region gtkrcACString start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline contains=gtkrcWPathSpecial,gtkrcClassName,gtkrcClassNameGnome contained syn region gtkrcBString start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline contains=gtkrcKeyMod contained syn region gtkrcString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=gtkrcStockName,gtkrcPathSpecial,gtkrcRGBColor syn match gtkrcPathSpecial "" contained syn match gtkrcWPathSpecial "[*?.]" contained syn match gtkrcNumber "^\(\d\+\)\=\.\=\d\+" syn match gtkrcNumber "\W\(\d\+\)\=\.\=\d\+"lc=1 syn match gtkrcRGBColor "#\(\x\{12}\|\x\{9}\|\x\{6}\|\x\{3}\)" contained syn cluster gtkrcPRIVATE add=gtkrcFixme,gtkrcPathSpecial,gtkrcWPathSpecial,gtkrcRGBColor,gtkrcACString " Keywords syn keyword gtkrcInclude include syn keyword gtkrcPathSet module_path pixmap_path syn keyword gtkrcTop binding style syn keyword gtkrcTop widget widget_class nextgroup=gtkrcACString skipwhite syn keyword gtkrcTop class nextgroup=gtkrcACString skipwhite syn keyword gtkrcBind bind nextgroup=gtkrcBString skipwhite syn keyword gtkrcStateName NORMAL INSENSITIVE PRELIGHT ACTIVE SELECTED syn keyword gtkrcPriorityName HIGHEST RC APPLICATION GTK LOWEST syn keyword gtkrcPriorityName highest rc application gtk lowest syn keyword gtkrcTextDirName LTR RTL syn keyword gtkrcStyleKeyword fg bg fg_pixmap bg_pixmap bg_text base font font_name fontset stock text syn match gtkrcKeyMod "<\(alt\|ctrl\|control\|mod[1-5]\|release\|shft\|shift\)>" contained syn cluster gtkrcPRIVATE add=gtkrcKeyMod " Enums and engine words syn keyword gtkrcKeyword engine image syn keyword gtkrcImage arrow_direction border detail file gap_border gap_end_border gap_end_file gap_file gap_side gap_side gap_start_border gap_start_file orientation overlay_border overlay_file overlay_stretch recolorable shadow state stretch thickness syn keyword gtkrcConstant TRUE FALSE NONE IN OUT LEFT RIGHT TOP BOTTOM UP DOWN VERTICAL HORIZONTAL ETCHED_IN ETCHED_OUT syn keyword gtkrcFunction function nextgroup=gtkrcFunctionEq skipwhite syn match gtkrcFunctionEq "=" nextgroup=gtkrcFunctionName contained skipwhite syn keyword gtkrcFunctionName ARROW BOX BOX_GAP CHECK CROSS DIAMOND EXTENSION FLAT_BOX FOCUS HANDLE HLINE OPTION OVAL POLYGON RAMP SHADOW SHADOW_GAP SLIDER STRING TAB VLINE contained syn cluster gtkrcPRIVATE add=gtkrcFunctionName,gtkrcFunctionEq " Class names syn keyword gtkrcClassName GtkAccelLabel GtkAdjustment GtkAlignment GtkArrow GtkAspectFrame GtkBin GtkBox GtkButton GtkButtonBox GtkCList GtkCTree GtkCalendar GtkCheckButton GtkCheckMenuItem GtkColorSelection GtkColorSelectionDialog GtkCombo GtkContainer GtkCurve GtkData GtkDialog GtkDrawingArea GtkEditable GtkEntry GtkEventBox GtkFileSelection GtkFixed GtkFontSelection GtkFontSelectionDialog GtkFrame GtkGammaCurve GtkHBox GtkHButtonBox GtkHPaned GtkHRuler GtkHScale GtkHScrollbar GtkHSeparator GtkHandleBox GtkImage GtkImageMenuItem GtkInputDialog GtkInvisible GtkItem GtkItemFactory GtkLabel GtkLayout GtkList GtkListItem GtkMenu GtkMenuBar GtkMenuItem GtkMenuShell GtkMessageDialog GtkMisc GtkNotebook GtkObject GtkOptionMenu GtkPacker GtkPaned GtkPixmap GtkPlug GtkPreview GtkProgress GtkProgressBar GtkRadioButton GtkRadioMenuItem GtkRange GtkRuler GtkScale GtkScrollbar GtkScrolledWindow GtkSeparatorMenuItem GtkSocket GtkSpinButton GtkStatusbar GtkTable GtkTearoffMenuItem GtkText GtkTextBuffer GtkTextMark GtkTextTag GtkTextView GtkTipsQuery GtkToggleButton GtkToolbar GtkTooltips GtkTree GtkTreeView GtkTreeItem GtkVBox GtkVButtonBox GtkVPaned GtkVRuler GtkVScale GtkVScrollbar GtkVSeparator GtkViewport GtkWidget GtkWindow GtkWindowGroup contained syn keyword gtkrcClassName AccelLabel Adjustment Alignment Arrow AspectFrame Bin Box Button ButtonBox CList CTree Calendar CheckButton CheckMenuItem ColorSelection ColorSelectionDialog Combo Container Curve Data Dialog DrawingArea Editable Entry EventBox FileSelection Fixed FontSelection FontSelectionDialog Frame GammaCurve HBox HButtonBox HPaned HRuler HScale HScrollbar HSeparator HandleBox Image ImageMenuItem InputDialog Invisible Item ItemFactory Label Layout List ListItem Menu MenuBar MenuItem MenuShell MessageDialog Misc Notebook Object OptionMenu Packer Paned Pixmap Plug Preview Progress ProgressBar RadioButton RadioMenuItem Range Ruler Scale Scrollbar ScrolledWindow SeparatorMenuItem Socket SpinButton Statusbar Table TearoffMenuItem Text TextBuffer TextMark TextTag TextView TipsQuery ToggleButton Toolbar Tooltips Tree TreeView TreeItem VBox VButtonBox VPaned VRuler VScale VScrollbar VSeparator Viewport Widget Window WindowGroup contained syn keyword gtkrcClassNameGnome GnomeAbout GnomeAnimator GnomeApp GnomeAppBar GnomeCalculator GnomeCanvas GnomeCanvasEllipse GnomeCanvasGroup GnomeCanvasImage GnomeCanvasItem GnomeCanvasLine GnomeCanvasPolygon GnomeCanvasRE GnomeCanvasRect GnomeCanvasText GnomeCanvasWidget GnomeClient GnomeColorPicker GnomeDEntryEdit GnomeDateEdit GnomeDialog GnomeDock GnomeDockBand GnomeDockItem GnomeDockLayout GnomeDruid GnomeDruidPage GnomeDruidPageFinish GnomeDruidPageStandard GnomeDruidPageStart GnomeEntry GnomeFileEntry GnomeFontPicker GnomeFontSelector GnomeHRef GnomeIconEntry GnomeIconList GnomeIconSelection GnomeIconTextItem GnomeLess GnomeMDI GnomeMDIChild GnomeMDIGenericChild GnomeMessageBox GnomeNumberEntry GnomePaperSelector GnomePixmap GnomePixmapEntry GnomeProcBar GnomePropertyBox GnomeScores GnomeSpell GnomeStock GtkClock GtkDial GtkPixmapMenuItem GtkTed contained syn cluster gtkrcPRIVATE add=gtkrcClassName,gtkrcClassNameGnome " Stock item names syn keyword gtkrcStockName gtk-add gtk-apply gtk-bold gtk-cancel gtk-cdrom gtk-clear gtk-close gtk-convert gtk-copy gtk-cut gtk-delete gtk-dialog-error gtk-dialog-info gtk-dialog-question gtk-dialog-warning gtk-dnd gtk-dnd-multiple gtk-execute gtk-find gtk-find-and-replace gtk-floppy gtk-goto-bottom gtk-goto-first gtk-goto-last gtk-goto-top gtk-go-back gtk-go-down gtk-go-forward gtk-go-up gtk-help gtk-home gtk-index gtk-italic gtk-jump-to gtk-justify-center gtk-justify-fill gtk-justify-left gtk-justify-right gtk-missing-image gtk-new gtk-no gtk-ok gtk-open gtk-paste gtk-preferences gtk-print gtk-print-preview gtk-properties gtk-quit gtk-redo gtk-refresh gtk-remove gtk-revert-to-saved gtk-save gtk-save-as gtk-select-color gtk-select-font gtk-sort-ascending gtk-sort-descending gtk-spell-check gtk-stop gtk-strikethrough gtk-undelete gtk-underline gtk-undo gtk-yes gtk-zoom-100 gtk-zoom-fit gtk-zoom-in gtk-zoom-out contained syn cluster gtkrcPRIVATE add=gtkrcStockName " Gtk Settings syn keyword gtkrcSettingsName gtk-double-click-time gtk-cursor-blink gtk-cursor-blink-time gtk-split-cursor gtk-theme-name gtk-key-theme-name gtk-menu-bar-accel gtk-dnd-drag-threshold gtk-font-name gtk-color-palette gtk-entry-select-on-focus gtk-can-change-accels gtk-toolbar-style gtk-toolbar-icon-size syn cluster gtkrcPRIVATE add=gtkrcSettingsName " Catch errors caused by wrong parenthesization syn region gtkrcParen start='(' end=')' transparent contains=ALLBUT,gtkrcParenError,@gtkrcPRIVATE syn match gtkrcParenError ")" syn region gtkrcBrace start='{' end='}' transparent contains=ALLBUT,gtkrcBraceError,@gtkrcPRIVATE syn match gtkrcBraceError "}" syn region gtkrcBracket start='\[' end=']' transparent contains=ALLBUT,gtkrcBracketError,@gtkrcPRIVATE syn match gtkrcBracketError "]" " Synchronization syn sync minlines=50 syn sync match gtkrcSyncClass groupthere NONE "^\s*class\>" " Define the default highlighting hi def link gtkrcComment Comment hi def link gtkrcFixme Todo hi def link gtkrcInclude Preproc hi def link gtkrcACString gtkrcString hi def link gtkrcBString gtkrcString hi def link gtkrcString String hi def link gtkrcNumber Number hi def link gtkrcStateName gtkrcConstant hi def link gtkrcPriorityName gtkrcConstant hi def link gtkrcTextDirName gtkrcConstant hi def link gtkrcSettingsName Function hi def link gtkrcStockName Function hi def link gtkrcConstant Constant hi def link gtkrcPathSpecial gtkrcSpecial hi def link gtkrcWPathSpecial gtkrcSpecial hi def link gtkrcRGBColor gtkrcSpecial hi def link gtkrcKeyMod gtkrcSpecial hi def link gtkrcSpecial Special hi def link gtkrcTop gtkrcKeyword hi def link gtkrcPathSet gtkrcKeyword hi def link gtkrcStyleKeyword gtkrcKeyword hi def link gtkrcFunction gtkrcKeyword hi def link gtkrcBind gtkrcKeyword hi def link gtkrcKeyword Keyword hi def link gtkrcClassNameGnome gtkrcGtkClass hi def link gtkrcClassName gtkrcGtkClass hi def link gtkrcFunctionName gtkrcGtkClass hi def link gtkrcGtkClass Type hi def link gtkrcImage gtkrcOtherword hi def link gtkrcOtherword Function hi def link gtkrcParenError gtkrcError hi def link gtkrcBraceError gtkrcError hi def link gtkrcBracketError gtkrcError hi def link gtkrcError Error let b:current_syntax = "gtkrc" PK!i{@@vim80/syntax/dtml.vimnu[" DTML syntax file " Language: Zope's Dynamic Template Markup Language " Maintainer: Jean Jordaan (njj) " Last change: 2001 Sep 02 " These are used with Claudio Fleiner's html.vim in the standard distribution. " " Still very hackish. The 'dtml attributes' and 'dtml methods' have been " hacked out of the Zope Quick Reference in case someone finds something " sensible to do with them. I certainly haven't. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " First load the HTML syntax runtime! syntax/html.vim syn case match " This doesn't have any effect. Does it need to be moved to above/ " if !exists("main_syntax") " let main_syntax = 'dtml' " endif " dtml attributes syn keyword dtmlAttribute ac_inherited_permissions access_debug_info contained syn keyword dtmlAttribute acquiredRolesAreUsedBy all_meta_types assume_children AUTH_TYPE contained syn keyword dtmlAttribute AUTHENTICATED_USER AUTHENTICATION_PATH BASE0 batch-end-index batch-size contained syn keyword dtmlAttribute batch-start-index bobobase_modification_time boundary branches contained syn keyword dtmlAttribute branches_expr capitalize cb_dataItems cb_dataValid cb_isCopyable contained syn keyword dtmlAttribute cb_isMoveable changeClassId classDefinedAndInheritedPermissions contained syn keyword dtmlAttribute classDefinedPermissions classInheritedPermissions collapse-all column contained syn keyword dtmlAttribute connected connectionIsValid CONTENT_LENGTH CONTENT_TYPE cook cookies contained syn keyword dtmlAttribute COPY count- createInObjectManager da_has_single_argument dav__allprop contained syn keyword dtmlAttribute dav__init dav__propnames dav__propstat dav__validate default contained syn keyword dtmlAttribute delClassAttr DELETE Destination DestinationURL digits discard contained syn keyword dtmlAttribute disposition document_src e encode enter etc expand-all expr File contained syn keyword dtmlAttribute filtered_manage_options filtered_meta_types first- fmt footer form contained syn keyword dtmlAttribute GATEWAY_INTERFACE get_local_roles get_local_roles_for_userid contained syn keyword dtmlAttribute get_request_var_or_attr get_size get_size get_valid_userids getAttribute contained syn keyword dtmlAttribute getAttributeNode getAttributes getChildNodes getClassAttr getContentType contained syn keyword dtmlAttribute getData getDocType getDocumentElement getElementsByTagName getFirstChild contained syn keyword dtmlAttribute getImplementation getLastChild getLength getName getNextSibling contained syn keyword dtmlAttribute getNodeName getNodeType getNodeValue getOwnerDocument getParentNode contained syn keyword dtmlAttribute getPreviousSibling getProperty getPropertyType getSize getSize getSize contained syn keyword dtmlAttribute get_size getTagName getUser getUserName getUserNames getUsers contained syn keyword dtmlAttribute has_local_roles hasChildNodes hasProperty HEAD header hexdigits HTML contained syn keyword dtmlAttribute html_quote HTMLFile id index_html index_objects indexes contained syn keyword dtmlAttribute inheritedAttribute items last- leave leave_another leaves letters LOCK contained syn keyword dtmlAttribute locked_in_version lower lowercase mailfrom mailhost mailhost_list mailto contained syn keyword dtmlAttribute manage manage_ methods manage_access manage_acquiredPermissions contained syn keyword dtmlAttribute manage_addConferaTopic manage_addDocument manage_addDTMLDocument contained syn keyword dtmlAttribute manage_addDTMLMethod manage_addFile manage_addFolder manage_addImage contained syn keyword dtmlAttribute manage_addLocalRoles manage_addMailHost manage_addPermission contained syn keyword dtmlAttribute manage_addPrincipiaFactory manage_addProduct manage_addProperty contained syn keyword dtmlAttribute manage_addUserFolder manage_addZClass manage_addZGadflyConnection contained syn keyword dtmlAttribute manage_addZGadflyConnectionForm manage_advanced manage_afterAdd contained syn keyword dtmlAttribute manage_afterClone manage_beforeDelete manage_changePermissions contained syn keyword dtmlAttribute manage_changeProperties manage_clone manage_CopyContainerFirstItem contained syn keyword dtmlAttribute manage_copyObjects manage_cutObjects manage_defined_roles contained syn keyword dtmlAttribute manage_delLocalRoles manage_delObjects manage_delProperties contained syn keyword dtmlAttribute manage_distribute manage_edit manage_editedDialog manage_editProperties contained syn keyword dtmlAttribute manage_editRoles manage_exportObject manage_FTPget manage_FTPlist contained syn keyword dtmlAttribute manage_FTPstat manage_get_product_readme__ manage_getPermissionMapping contained syn keyword dtmlAttribute manage_haveProxy manage_help manage_importObject manage_listLocalRoles contained syn keyword dtmlAttribute manage_options manage_pasteObjects manage_permission contained syn keyword dtmlAttribute manage_propertiesForm manage_proxy manage_renameObject manage_role contained syn keyword dtmlAttribute manage_setLocalRoles manage_setPermissionMapping contained syn keyword dtmlAttribute manage_subclassableClassNames manage_test manage_testForm contained syn keyword dtmlAttribute manage_undo_transactions manage_upload manage_users manage_workspace contained syn keyword dtmlAttribute management_interface mapping math max- mean- median- meta_type min- contained syn keyword dtmlAttribute MKCOL modified_in_version MOVE multiple name navigate_filter new_version contained syn keyword dtmlAttribute newline_to_br next next-batches next-sequence next-sequence-end-index contained syn keyword dtmlAttribute next-sequence-size next-sequence-start-index no manage_access None contained syn keyword dtmlAttribute nonempty normalize nowrap null Object Manager objectIds objectItems contained syn keyword dtmlAttribute objectMap objectValues octdigits only optional OPTIONS orphan overlap contained syn keyword dtmlAttribute PARENTS PATH_INFO PATH_TRANSLATED permission_settings contained syn keyword dtmlAttribute permissionMappingPossibleValues permissionsOfRole pi port contained syn keyword dtmlAttribute possible_permissions previous previous-batches previous-sequence contained syn keyword dtmlAttribute previous-sequence-end-index previous-sequence-size contained syn keyword dtmlAttribute previous-sequence-start-index PrincipiaFind PrincipiaSearchSource contained syn keyword dtmlAttribute propdict propertyIds propertyItems propertyLabel propertyMap propertyMap contained syn keyword dtmlAttribute propertyValues PROPFIND PROPPATCH PUT query_day query_month QUERY_STRING contained syn keyword dtmlAttribute query_year quoted_input quoted_report raise_standardErrorMessage random contained syn keyword dtmlAttribute read read_raw REMOTE_ADDR REMOTE_HOST REMOTE_IDENT REMOTE_USER REQUEST contained syn keyword dtmlAttribute REQUESTED_METHOD required RESPONSE reverse rolesOfPermission save schema contained syn keyword dtmlAttribute SCRIPT_NAME sequence-end sequence-even sequence-index contained syn keyword dtmlAttribute sequence-index-var- sequence-item sequence-key sequence-Letter contained syn keyword dtmlAttribute sequence-letter sequence-number sequence-odd sequence-query contained syn keyword dtmlAttribute sequence-roman sequence-Roman sequence-start sequence-step-end-index contained syn keyword dtmlAttribute sequence-step-size sequence-step-start-index sequence-var- SERVER_NAME contained syn keyword dtmlAttribute SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWARE setClassAttr setName single contained syn keyword dtmlAttribute size skip_unauthorized smtphost sort spacify sql_quote SQLConnectionIDs contained syn keyword dtmlAttribute standard-deviation- standard-deviation-n- standard_html_footer contained syn keyword dtmlAttribute standard_html_header start String string subject SubTemplate superValues contained syn keyword dtmlAttribute tabs_path_info tag test_url_ text_content this thousands_commas title contained syn keyword dtmlAttribute title_and_id title_or_id total- tpURL tpValues TRACE translate tree-c contained syn keyword dtmlAttribute tree-colspan tree-e tree-item-expanded tree-item-url tree-level contained syn keyword dtmlAttribute tree-root-url tree-s tree-state type undoable_transactions UNLOCK contained syn keyword dtmlAttribute update_data upper uppercase url url_quote URLn user_names contained syn keyword dtmlAttribute userdefined_roles valid_property_id valid_roles validate_roles contained syn keyword dtmlAttribute validClipData validRoles values variance- variance-n- view_image_or_file contained syn keyword dtmlAttribute where whitespace whrandom xml_namespace zclass_candidate_view_actions contained syn keyword dtmlAttribute ZClassBaseClassNames ziconImage ZopeFind ZQueryIds contained syn keyword dtmlMethod abs absolute_url ac_inherited_permissions aCommon contained syn keyword dtmlMethod aCommonZ acos acquiredRolesAreUsedBy aDay addPropertySheet aMonth AMPM contained syn keyword dtmlMethod ampm AMPMMinutes appendChild appendData appendHeader asin atan atan2 contained syn keyword dtmlMethod atof atoi betavariate capatilize capwords catalog_object ceil center contained syn keyword dtmlMethod choice chr cloneNode COPY cos cosh count createInObjectManager contained syn keyword dtmlMethod createSQLInput cunifvariate Date DateTime Day day dayOfYear dd default contained syn keyword dtmlMethod DELETE deleteData delPropertySheet divmod document_id document_title dow contained syn keyword dtmlMethod earliestTime enter equalTo exp expireCookie expovariate fabs fCommon contained syn keyword dtmlMethod fCommonZ filtered_manage_options filtered_meta_types find float floor contained syn keyword dtmlMethod fmod frexp gamma gauss get get_local_roles_for_userid get_size getattr contained syn keyword dtmlMethod getAttribute getAttributeNode getClassAttr getDomains contained syn keyword dtmlMethod getElementsByTagName getHeader getitem getNamedItem getobject contained syn keyword dtmlMethod getObjectsInfo getpath getProperty getRoles getStatus getUser contained syn keyword dtmlMethod getUserName greaterThan greaterThanEqualTo h_12 h_24 has_key contained syn keyword dtmlMethod has_permission has_role hasattr hasFeature hash hasProperty HEAD hex contained syn keyword dtmlMethod hour hypot index index_html inheritedAttribute insertBefore insertData contained syn keyword dtmlMethod int isCurrentDay isCurrentHour isCurrentMinute isCurrentMonth contained syn keyword dtmlMethod isCurrentYear isFuture isLeadYear isPast item join latestTime ldexp contained syn keyword dtmlMethod leave leave_another len lessThan lessThanEqualTo ljust log log10 contained syn keyword dtmlMethod lognormvariate lower lstrip maketrans manage manage_access contained syn keyword dtmlMethod manage_acquiredPermissions manage_addColumn manage_addDocument contained syn keyword dtmlMethod manage_addDTMLDocument manage_addDTMLMethod manage_addFile contained syn keyword dtmlMethod manage_addFolder manage_addImage manage_addIndex manage_addLocalRoles contained syn keyword dtmlMethod manage_addMailHost manage_addPermission manage_addPrincipiaFactory contained syn keyword dtmlMethod manage_addProduct manage_addProperty manage_addPropertySheet contained syn keyword dtmlMethod manage_addUserFolder manage_addZCatalog manage_addZClass contained syn keyword dtmlMethod manage_addZGadflyConnection manage_addZGadflyConnectionForm contained syn keyword dtmlMethod manage_advanced manage_catalogClear manage_catalogFoundItems contained syn keyword dtmlMethod manage_catalogObject manage_catalogReindex manage_changePermissions contained syn keyword dtmlMethod manage_changeProperties manage_clone manage_CopyContainerFirstItem contained syn keyword dtmlMethod manage_copyObjects manage_createEditor manage_createView contained syn keyword dtmlMethod manage_cutObjects manage_defined_roles manage_delColumns contained syn keyword dtmlMethod manage_delIndexes manage_delLocalRoles manage_delObjects contained syn keyword dtmlMethod manage_delProperties manage_Discard__draft__ manage_distribute contained syn keyword dtmlMethod manage_edit manage_edit manage_editedDialog manage_editProperties contained syn keyword dtmlMethod manage_editRoles manage_exportObject manage_importObject contained syn keyword dtmlMethod manage_makeChanges manage_pasteObjects manage_permission contained syn keyword dtmlMethod manage_propertiesForm manage_proxy manage_renameObject manage_role contained syn keyword dtmlMethod manage_Save__draft__ manage_setLocalRoles manage_setPermissionMapping contained syn keyword dtmlMethod manage_test manage_testForm manage_uncatalogObject contained syn keyword dtmlMethod manage_undo_transactions manage_upload manage_users manage_workspace contained syn keyword dtmlMethod mange_createWizard max min minute MKCOL mm modf month Month MOVE contained syn keyword dtmlMethod namespace new_version nextObject normalvariate notEqualTo objectIds contained syn keyword dtmlMethod objectItems objectValues oct OPTIONS ord paretovariate parts pCommon contained syn keyword dtmlMethod pCommonZ pDay permissionsOfRole pMonth pow PreciseAMPM PreciseTime contained syn keyword dtmlMethod previousObject propertyInfo propertyLabel PROPFIND PROPPATCH PUT quit contained syn keyword dtmlMethod raise_standardErrorMessage randint random read read_raw redirect contained syn keyword dtmlMethod removeAttribute removeAttributeNode removeChild replace replaceChild contained syn keyword dtmlMethod replaceData rfc822 rfind rindex rjust rolesOfPermission round rstrip contained syn keyword dtmlMethod save searchResults second seed set setAttribute setAttributeNode setBase contained syn keyword dtmlMethod setCookie setHeader setStatus sin sinh split splitText sqrt str strip contained syn keyword dtmlMethod substringData superValues swapcase tabs_path_info tan tanh Time contained syn keyword dtmlMethod TimeMinutes timeTime timezone title title_and_id title_or_id toXML contained syn keyword dtmlMethod toZone uncatalog_object undoable_transactions uniform uniqueValuesFor contained syn keyword dtmlMethod update_data upper valid_property_id validate_roles vonmisesvariate contained syn keyword dtmlMethod weibullvariate year yy zfill ZopeFind contained " DTML tags syn keyword dtmlTagName var if elif else unless in with let call raise try except tag comment tree sqlvar sqltest sqlgroup sendmail mime transparent contained syn keyword dtmlEndTagName if unless in with let raise try tree sendmail transparent contained " Own additions syn keyword dtmlTODO TODO FIXME contained syn region dtmlComment start=++ end=++ contains=dtmlTODO " All dtmlTagNames are contained by dtmlIsTag. syn match dtmlIsTag "dtml-[A-Za-z]\+" contains=dtmlTagName " 'var' tag entity syntax: &dtml-variableName; " - with attributes: &dtml.attribute1[.attribute2]...-variableName; syn match dtmlSpecialChar "&dtml[.0-9A-Za-z_]\{-}-[0-9A-Za-z_.]\+;" " Redefine to allow inclusion of DTML within HTML strings. syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,dtmlSpecialChar,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc syn region htmlLink start="[^>]*href\>" end="
"me=e-4 contains=@Spell,htmlTag,htmlEndTag,dtmlSpecialChar,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc syn region htmlHead start="" end=""me=e-7 end=""me=e-5 end=""me=e-3 contains=htmlTag,htmlEndTag,dtmlSpecialChar,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,htmlTitle,javaScript,cssStyle,@htmlPreproc syn region htmlTitle start="" end=""me=e-8 contains=htmlTag,htmlEndTag,dtmlSpecialChar,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc syn region htmlString contained start=+"+ end=+"+ contains=dtmlSpecialChar,htmlSpecialChar,javaScriptExpression,dtmlIsTag,dtmlAttribute,dtmlMethod,@htmlPreproc syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,dtmlIsTag,dtmlAttribute,dtmlMethod,@htmlTagNameCluster syn match htmlTagN contained + " Last Change: $Date: 2004/06/13 15:38:04 $ " URL: http://www.datatone.com/~robb/vim/syntax/focexec.vim " $Revision: 1.1 $ " this is a very simple syntax file - I will be improving it " one thing is how to do computes " I don't like that &vars and FUSE() functions highlight to the same color " I think some of these things should get different hilights - " should MODIFY commands look different than TABLE? " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case match " A bunch of useful keywords syn keyword focexecTable TABLE SUM BY ACROSS END PRINT HOLD LIST NOPRINT syn keyword focexecTable SUBFOOT SUBHEAD HEADING FOOTING PAGE-BREAK AS syn keyword focexecTable WHERE AND OR NOSPLIT FORMAT syn keyword focexecModify MODIFY DATA ON FIXFORM PROMPT MATCH COMPUTE syn keyword focexecModify GOTO CASE ENDCASE TYPE NOMATCH REJECT INCLUDE syn keyword focexecModify CONTINUE FROM syn keyword focexecNormal CHECK FILE CREATE EX SET IF FILEDEF DEFINE syn keyword focexecNormal REBUILD IF RECORDLIMIT FI EQ JOIN syn keyword focexecJoin IN TO syn keyword focexecFileDef DISK syn keyword focexecSet MSG ALL syn match focexecDash "-RUN" syn match focexecDash "-PROMPT" syn match focexecDash "-WINFORM" " String and Character constants syn region focexecString1 start=+"+ end=+"+ syn region focexecString2 start=+'+ end=+'+ "amper variables syn match focexecAmperVar "&&\=[A-Z_]\+" "fuse functions syn keyword focexecFuse GETUSER GETUSR WHOAMI FEXERR ASIS GETTOK UPCASE LOCASE syn keyword focexecFuse SUBSTR TODAY TODAYI POSIT HHMMSS BYTVAL EDAUT1 BITVAL syn keyword focexecFuse BITSON FGETENV FPUTENV HEXBYT SPAWN YM YMI JULDAT syn keyword focexecFuse JULDATI DOWK DOWKI DOWKLI CHGDAT CHGDATI FTOA ATODBL syn keyword focexecFuse SOUNDEX RJUST REVERSE PARAG OVRLAY LJUST CTRFLD CTRAN syn keyword focexecFuse CHKFMT ARGLEN GREGDT GREGDTI DTYMD DTYMDI DTDMY DTDMYI syn keyword focexecFuse DTYDM DTYDMI DTMYD DTMYDI DTDYM DTDYMI DAYMD DAYMDI syn keyword focexecFuse DAMDY DAMDYI DADMY DADMYI AYM AYMI AYMD AYMDI CHKPCK syn keyword focexecFuse IMOD FMOD DMOD PCKOUT EXP BAR SPELLNM SPELLNUM RTCIVP syn keyword focexecFuse PRDUNI PRDNOR RDNORM RDUNIF LCWORD ITOZ RLPHLD IBIPRO syn keyword focexecFuse IBIPRW IBIPRC IBIPRU IBIRCP PTHDAT ITOPACK ITONUM syn keyword focexecFuse DSMEXEC DSMEVAL DSMERRC MSMEXEC MSMEVAL MSMERRC EXTDXI syn keyword focexecFuse BAANHASH EDAYSI DTOG GTOD HSETPT HPART HTIME HNAME syn keyword focexecFuse HADD HDIFF HDATE HGETC HCNVRT HDTTM HMIDNT TEMPPATH syn keyword focexecFuse DATEADD DATEDIF DATEMOV DATECVT EURHLD EURXCH FINDFOC syn keyword focexecFuse FERRMES CNCTUSR CURRPATH USERPATH SYSTEM ASKYN syn keyword focexecFuse FUSEMENU POPEDIT POPFILE syn match focexecNumber "\<\d\+\>" syn match focexecNumber "\<\d\+\.\d*\>" syn match focexecComment "-\*.*" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link focexecString1 String hi def link focexecString2 String hi def link focexecNumber Number hi def link focexecComment Comment hi def link focexecTable Keyword hi def link focexecModify Keyword hi def link focexecNormal Keyword hi def link focexecSet Keyword hi def link focexecDash Keyword hi def link focexecFileDef Keyword hi def link focexecJoin Keyword hi def link focexecAmperVar Identifier hi def link focexecFuse Function let b:current_syntax = "focexec" " vim: ts=8 PK!(Rvim80/syntax/prolog.vimnu[" Vim syntax file " Language: PROLOG " Maintainer: Thomas Koehler " Please be aware: I'm often slow to answer email due to a high " non-computer related workload (sometimes 4-8 weeks) " Last Change: 2016 September 6 " URL: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim " There are two sets of highlighting in here: " If the "prolog_highlighting_clean" variable exists, it is rather sparse. " Otherwise you get more highlighting. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Prolog is case sensitive. syn case match " Very simple highlighting for comments, clause heads and " character codes. It respects prolog strings and atoms. syn region prologCComment start=+/\*+ end=+\*/+ syn match prologComment +%.*+ syn keyword prologKeyword module meta_predicate multifile dynamic syn match prologCharCode +0'\\\=.+ syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+ syn region prologClause matchgroup=prologClauseHead start=+^\s*[a-z]\w*+ matchgroup=Normal end=+\.\s\|\.$+ contains=ALLBUT,prologClause if !exists("prolog_highlighting_clean") " some keywords " some common predicates are also highlighted as keywords " is there a better solution? syn keyword prologKeyword abolish current_output peek_code syn keyword prologKeyword append current_predicate put_byte syn keyword prologKeyword arg current_prolog_flag put_char syn keyword prologKeyword asserta fail put_code syn keyword prologKeyword assertz findall read syn keyword prologKeyword at_end_of_stream float read_term syn keyword prologKeyword atom flush_output repeat syn keyword prologKeyword atom_chars functor retract syn keyword prologKeyword atom_codes get_byte set_input syn keyword prologKeyword atom_concat get_char set_output syn keyword prologKeyword atom_length get_code set_prolog_flag syn keyword prologKeyword atomic halt set_stream_position syn keyword prologKeyword bagof integer setof syn keyword prologKeyword call is stream_property syn keyword prologKeyword catch nl sub_atom syn keyword prologKeyword char_code nonvar throw syn keyword prologKeyword char_conversion number true syn keyword prologKeyword clause number_chars unify_with_occurs_check syn keyword prologKeyword close number_codes var syn keyword prologKeyword compound once write syn keyword prologKeyword copy_term op write_canonical syn keyword prologKeyword current_char_conversion open write_term syn keyword prologKeyword current_input peek_byte writeq syn keyword prologKeyword current_op peek_char syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|<\|>\|=" syn match prologAsIs "===\|\\===\|<=\|=>" syn match prologNumber "\<[0123456789]*\>'\@!" syn match prologCommentError "\*/" syn match prologSpecialCharacter ";" syn match prologSpecialCharacter "!" syn match prologSpecialCharacter ":-" syn match prologSpecialCharacter "-->" syn match prologQuestion "?-.*\." contains=prologNumber endif syn sync maxlines=50 " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default highlighting. hi def link prologComment Comment hi def link prologCComment Comment hi def link prologCharCode Special if exists ("prolog_highlighting_clean") hi def link prologKeyword Statement hi def link prologClauseHead Statement hi def link prologClause Normal else hi def link prologKeyword Keyword hi def link prologClauseHead Constant hi def link prologClause Normal hi def link prologQuestion PreProc hi def link prologSpecialCharacter Special hi def link prologNumber Number hi def link prologAsIs Normal hi def link prologCommentError Error hi def link prologAtom String hi def link prologString String hi def link prologOperator Operator endif let b:current_syntax = "prolog" " vim: ts=8 PK!KA'vim80/syntax/fvwm2m4.vimnu[" Vim syntax file " Language: FvwmM4 preprocessed Fvwm2 configuration files " Maintainer: David Ne\v{c}as (Yeti) " Last Change: 2002-06-02 " URI: http://physics.muni.cz/~yeti/download/syntax/fvwmm4.vim " Setup " quit when a syntax file was already loaded if exists('b:current_syntax') finish endif " Let included files know they are included if !exists('main_syntax') let main_syntax = 'fvwm2m4' endif " Include M4 syntax runtime! syntax/m4.vim unlet b:current_syntax " Include Fvwm2 syntax (Fvwm1 doesn't have M4 preprocessor) runtime! syntax/fvwm.vim unlet b:current_syntax " That's all! let b:current_syntax = 'fvwm2m4' if main_syntax == 'fvwm2m4' unlet main_syntax endif PK!vkvim80/syntax/change.vimnu[" Vim syntax file " Language: WEB Changes " Maintainer: Andreas Scherer " Last Change: April 25, 2001 " Details of the change mechanism of the WEB and CWEB languages can be found " in the articles by Donald E. Knuth and Silvio Levy cited in "web.vim" and " "cweb.vim" respectively. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " We distinguish two groups of material, (a) stuff between @x..@y, and " (b) stuff between @y..@z. WEB/CWEB ignore everything else in a change file. syn region changeFromMaterial start="^@x.*$"ms=e+1 end="^@y.*$"me=s-1 syn region changeToMaterial start="^@y.*$"ms=e+1 end="^@z.*$"me=s-1 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link changeFromMaterial String hi def link changeToMaterial Statement let b:current_syntax = "change" " vim: ts=8 PK!YD-V V vim80/syntax/hb.vimnu[" Vim syntax file " Language: Hyper Builder " Maintainer: Alejandro Forero Cuervo " URL: http://bachue.com/hb/vim/syntax/hb.vim " Last Change: 2012 Jan 08 by Thilo Six " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " Read the HTML syntax to start with "syn include @HTMLStuff :p:h/htmlhb.vim "this would be nice but we are supposed not to do it "set mps=<:> "syn region HBhtmlString contained start=+"+ end=+"+ contains=htmlSpecialChar "syn region HBhtmlString contained start=+'+ end=+'+ contains=htmlSpecialChar "syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*" syn match htmlSpecialChar "&[^;]*;" contained syn match HBhtmlTagSk contained "[A-Za-z]*" syn match HBhtmlTagS contained "<\s*\(hb\s*\.\s*\(sec\|min\|hour\|day\|mon\|year\|input\|html\|time\|getcookie\|streql\|url-enc\)\|wall\s*\.\s*\(show\|info\|id\|new\|rm\|count\)\|auth\s*\.\s*\(chk\|add\|find\|user\)\|math\s*\.\s*exp\)\s*\([^.A-Za-z0-9]\|$\)" contains=HBhtmlTagSk transparent syn match HBhtmlTagN contained "[A-Za-z0-9\/\-]\+" syn match HBhtmlTagB contained "<\s*[A-Za-z0-9\/\-]\+\(\s*\.\s*[A-Za-z0-9\/\-]\+\)*" contains=HBhtmlTagS,HBhtmlTagN syn region HBhtmlTag contained start=+<+ end=+>+ contains=HBhtmlTagB,HBDirectiveError syn match HBFileName ".*" contained syn match HBDirectiveKeyword ":\s*\(include\|lib\|set\|out\)\s\+" contained syn match HBDirectiveError "^:.*$" contained "syn match HBDirectiveBlockEnd "^:\s*$" contained "syn match HBDirectiveOutHead "^:\s*out\s\+\S\+.*" contained contains=HBDirectiveKeyword,HBFileName "syn match HBDirectiveSetHead "^:\s*set\s\+\S\+.*" contained contains=HBDirectiveKeyword,HBFileName syn match HBInvalidLine "^.*$" syn match HBDirectiveInclude "^:\s*include\s\+\S\+.*$" contains=HBFileName,HBDirectiveKeyword syn match HBDirectiveLib "^:\s*lib\s\+\S\+.*$" contains=HBFileName,HBDirectiveKeyword syn region HBText matchgroup=HBDirectiveKeyword start=/^:\(set\|out\)\s*\S\+.*$/ end=/^:\s*$/ contains=HBDirectiveError,htmlSpecialChar,HBhtmlTag keepend "syn match HBLine "^:.*$" contains=HBDirectiveInclude,HBDirectiveLib,HBDirectiveError,HBDirectiveSet,HBDirectiveOut syn match HBComment "^#.*$" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link HBhtmlString String hi def link HBhtmlTagN Function hi def link htmlSpecialChar String hi def link HBInvalidLine Error hi def link HBFoobar Comment hi HBFileName guibg=lightgray guifg=black hi def link HBDirectiveError Error hi def link HBDirectiveBlockEnd HBDirectiveKeyword hi HBDirectiveKeyword guibg=lightgray guifg=darkgreen hi def link HBComment Comment hi def link HBhtmlTagSk Statement syn sync match Normal grouphere NONE "^:\s*$" syn sync match Normal grouphere NONE "^:\s*lib\s\+[^ \t]\+$" syn sync match Normal grouphere NONE "^:\s*include\s\+[^ \t]\+$" "syn sync match Block grouphere HBDirectiveSet "^#:\s*set\s\+[^ \t]\+" "syn sync match Block grouphere HBDirectiveOut "^#:\s*out\s\+[^ \t]\+" let b:current_syntax = "hb" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!ͦPPvim80/syntax/gitconfig.vimnu[" Vim syntax file " Language: git config file " Maintainer: Tim Pope " Filenames: gitconfig, .gitconfig, *.git/config " Last Change: 2010 May 21 if exists("b:current_syntax") finish endif setlocal iskeyword+=- setlocal iskeyword-=_ syn case ignore syn sync minlines=10 syn match gitconfigComment "[#;].*" syn match gitconfigSection "\%(^\s*\)\@<=\[[a-z0-9.-]\+\]" syn match gitconfigSection '\%(^\s*\)\@<=\[[a-z0-9.-]\+ \+\"\%([^\\"]\|\\.\)*"\]' syn match gitconfigVariable "\%(^\s*\)\@<=\a\k*\%(\s*\%([=#;]\|$\)\)\@=" nextgroup=gitconfigAssignment skipwhite syn region gitconfigAssignment matchgroup=gitconfigNone start=+=\s*+ skip=+\\+ end=+\s*$+ contained contains=gitconfigBoolean,gitconfigNumber,gitConfigString,gitConfigEscape,gitConfigError,gitconfigComment keepend syn keyword gitconfigBoolean true false yes no contained syn match gitconfigNumber "\d\+" contained syn region gitconfigString matchgroup=gitconfigDelim start=+"+ skip=+\\+ end=+"+ matchgroup=gitconfigError end=+[^\\"]\%#\@!$+ contained contains=gitconfigEscape,gitconfigEscapeError syn match gitconfigError +\\.+ contained syn match gitconfigEscape +\\[\\"ntb]+ contained syn match gitconfigEscape +\\$+ contained hi def link gitconfigComment Comment hi def link gitconfigSection Keyword hi def link gitconfigVariable Identifier hi def link gitconfigBoolean Boolean hi def link gitconfigNumber Number hi def link gitconfigString String hi def link gitconfigDelim Delimiter hi def link gitconfigEscape Delimiter hi def link gitconfigError Error let b:current_syntax = "gitconfig" PK!'vim80/syntax/gretl.vimnu[" Vim syntax file " Language: gretl (http://gretl.sf.net) " Maintainer: Vaidotas Zemlys " Last Change: 2006 Apr 30 " Filenames: *.inp *.gretl " URL: http://uosis.mif.vu.lt/~zemlys/vim-syntax/gretl.vim " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,_,. syn case match " Constant " string enclosed in double quotes syn region gString start=/"/ skip=/\\\\\|\\"/ end=/"/ " number with no fractional part or exponent syn match gNumber /\d\+/ " floating point number with integer and fractional parts and optional exponent syn match gFloat /\d\+\.\d*\([Ee][-+]\=\d\+\)\=/ " floating point number with no integer part and optional exponent syn match gFloat /\.\d\+\([Ee][-+]\=\d\+\)\=/ " floating point number with no fractional part and optional exponent syn match gFloat /\d\+[Ee][-+]\=\d\+/ " Gretl commands syn keyword gCommands add addobs addto adf append ar arch arma break boxplot chow coeffsum coint coint2 corc corr corrgm criteria critical cusum data delete diff else end endif endloop eqnprint equation estimate fcast fcasterr fit freq function funcerr garch genr gnuplot graph hausman hccm help hilu hsk hurst if import include info kpss label labels lad lags ldiff leverage lmtest logistic logit logs loop mahal meantest mle modeltab mpols multiply nls nulldata ols omit omitfrom open outfile panel pca pergm plot poisson pooled print printf probit pvalue pwe quit remember rename reset restrict rhodiff rmplot run runs scatters sdiff set setobs setmiss shell sim smpl spearman square store summary system tabprint testuhat tobit transpos tsls var varlist vartest vecm vif wls "Gretl genr functions syn keyword gGenrFunc log exp sin cos tan atan diff ldiff sdiff mean sd min max sort int ln coeff abs rho sqrt sum nobs firstobs lastobs normal uniform stderr cum missing ok misszero corr vcv var sst cov median zeromiss pvalue critical obsnum mpow dnorm cnorm gamma lngamma resample hpfilt bkfilt fracdiff varnum isvector islist nelem " Identifier " identifier with leading letter and optional following keyword characters syn match gIdentifier /\a\k*/ " Variable with leading $ syn match gVariable /\$\k*/ " Arrow syn match gArrow /<-/ " Special syn match gDelimiter /[,;:]/ " Error syn region gRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError,gBCstart,gBCend syn region gRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError syn region gRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError syn match gError /[)\]}]/ syn match gBraceError /[)}]/ contained syn match gCurlyError /[)\]]/ contained syn match gParenError /[\]}]/ contained " Comment syn match gComment /#.*/ syn match gBCstart /(\*/ syn match gBCend /\*)/ syn region gBlockComment matchgroup=gCommentStart start="(\*" end="\*)" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link gComment Comment hi def link gCommentStart Comment hi def link gBlockComment Comment hi def link gString String hi def link gNumber Number hi def link gBoolean Boolean hi def link gFloat Float hi def link gCommands Repeat hi def link gGenrFunc Type hi def link gDelimiter Delimiter hi def link gError Error hi def link gBraceError Error hi def link gCurlyError Error hi def link gParenError Error hi def link gIdentifier Normal hi def link gVariable Identifier hi def link gArrow Repeat let b:current_syntax="gretl" " vim: ts=8 sw=2 PK!̝=))vim80/syntax/hog.vimnu[" Vim syntax file " Language: hog (Snort.conf + .rules) " Maintainer: Victor Roemer, . " Last Change: 2015 Oct 24 -> Rename syntax items from Snort -> Hog " 2012 Oct 24 -> Originalish release " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword-=: setlocal iskeyword+=- syn case ignore " Hog ruletype crap syn keyword HogRuleType ruletype nextgroup=HogRuleTypeName skipwhite syn match HogRuleTypeName "[[:alnum:]_]\+" contained nextgroup=HogRuleTypeBody skipwhite syn region HogRuleTypeBody start="{" end="}" contained contains=HogRuleTypeType,HogOutput fold syn keyword HogRuleTypeType type contained " Hog Configurables syn keyword HogPreproc preprocessor nextgroup=HogConfigName skipwhite syn keyword HogConfig config nextgroup=HogConfigName skipwhite syn keyword HogOutput output nextgroup=HogConfigName skipwhite syn match HogConfigName "[[:alnum:]_-]\+" contained nextgroup=HogConfigOpts skipwhite syn region HogConfigOpts start=":" skip="\\.\{-}$\|^\s*#.\{-}$\|^\s*$" end="$" fold keepend contained contains=HogSpecial,HogNumber,HogIPAddr,HogVar,HogComment " Event filter's and threshold's syn region HogEvFilter start="event_filter\|threshold" skip="\\.\{-}$\|^\s*#.\{-}$\|^\s*$" end="$" fold transparent keepend contains=HogEvFilterKeyword,HogEvFilterOptions,HogComment syn keyword HogEvFilterKeyword skipwhite event_filter threshold syn keyword HogEvFilterOptions skipwhite type nextgroup=HogEvFilterTypes syn keyword HogEvFilterTypes skipwhite limit threshold both contained syn keyword HogEvFilterOptions skipwhite track nextgroup=HogEvFilterTrack syn keyword HogEvFilterTrack skipwhite by_src by_dst contained syn keyword HogEvFilterOptions skipwhite gen_id sig_id count seconds nextgroup=HogNumber " Suppressions syn region HogEvFilter start="suppress" skip="\\.\{-}$\|^\s*#.\{-}$\|^\s*$" end="$" fold transparent keepend contains=HogSuppressKeyword,HogComment syn keyword HogSuppressKeyword skipwhite suppress syn keyword HogSuppressOptions skipwhite gen_id sig_id nextgroup=HogNumber syn keyword HogSuppressOptions skipwhite track nextgroup=HogEvFilterTrack syn keyword HogSuppressOptions skipwhite ip nextgroup=HogIPAddr " Attribute table syn keyword HogAttribute attribute_table nextgroup=HogAttributeFile syn match HogAttributeFile contained ".*$" contains=HogVar,HogAttributeType,HogComment syn keyword HogAttributeType filename " Hog includes syn keyword HogInclude include nextgroup=HogIncludeFile skipwhite syn match HogIncludeFile ".*$" contained contains=HogVar,HogComment " Hog dynamic libraries syn keyword HogDylib dynamicpreprocessor dynamicengine dynamicdetection nextgroup=HogDylibFile skipwhite syn match HogDylibFile "\s.*$" contained contains=HogVar,HogDylibType,HogComment syn keyword HogDylibType directory file contained " Variable dereferenced with '$' syn match HogVar "\$[[:alnum:]_]\+" ", Variables declared with 'var' syn keyword HogVarType var nextgroup=HogVarSet skipwhite syn match HogVarSet "[[:alnum:]_]\+" display contained nextgroup=HogVarValue skipwhite syn match HogVarValue ".*$" contained contains=HogString,HogNumber,HogVar,HogComment " Variables declared with 'ipvar' syn keyword HogIPVarType ipvar nextgroup=HogIPVarSet skipwhite syn match HogIPVarSet "[[:alnum:]_]\+" display contained nextgroup=HogIPVarList,HogSpecial skipwhite syn region HogIPVarList start="\[" end="]" contains=HogIPVarList,HogIPAddr,HogVar,HogOpNot " Variables declared with 'portvar' syn keyword HogPortVarType portvar nextgroup=HogPortVarSet skipwhite syn match HogPortVarSet "[[:alnum:]_]\+" display contained nextgroup=HogPortVarList,HogPort,HogOpRange,HogOpNot,HogSpecial skipwhite syn region HogPortVarList start="\[" end="]" contains=HogPortVarList,HogVar,HogOpNot,HogPort,HogOpRange,HogOpNot syn match HogPort "\<\%(\d\+\|any\)\>" display contains=HogOpRange nextgroup=HogOpRange " Generic stuff syn match HogIPAddr contained "\<\%(\d\{1,3}\(\.\d\{1,3}\)\{3}\|any\)\>" nextgroup=HogIPCidr syn match HogIPAddr contained "\<\d\{1,3}\(\.\d\{1,3}\)\{3}\>" nextgroup=HogIPCidr syn match HogIPCidr contained "\/\([0-2][0-9]\=\|3[0-2]\=\)" syn region HogHexEsc contained start='|' end='|' oneline syn region HogString contained start='"' end='"' extend oneline contains=HogHexEsc syn match HogNumber contained display "\<\d\+\>" syn match HogNumber contained display "\<\d\+\>" syn match HogNumber contained display "0x\x\+\>" syn keyword HogSpecial contained true false yes no default all any syn keyword HogSpecialAny contained any syn match HogOpNot "!" contained syn match HogOpRange ":" contained " Rules syn keyword HogRuleAction activate alert drop block dynamic log pass reject sdrop sblock skipwhite nextgroup=HogRuleProto,HogRuleBlock syn keyword HogRuleProto ip tcp udp icmp skipwhite contained nextgroup=HogRuleSrcIP syn match HogRuleSrcIP "\S\+" transparent skipwhite contained contains=HogIPVarList,HogIPAddr,HogVar,HogOpNot nextgroup=HogRuleSrcPort syn match HogRuleSrcPort "\S\+" transparent skipwhite contained contains=HogPortVarList,HogVar,HogPort,HogOpRange,HogOpNot nextgroup=HogRuleDir syn match HogRuleDir "->\|<>" skipwhite contained nextgroup=HogRuleDstIP syn match HogRuleDstIP "\S\+" transparent skipwhite contained contains=HogIPVarList,HogIPAddr,HogVar,HogOpNot nextgroup=HogRuleDstPort syn match HogRuleDstPort "\S\+" transparent skipwhite contained contains=HogPortVarList,HogVar,HogPort,HogOpRange,HogOpNot nextgroup=HogRuleBlock syn region HogRuleBlock start="(" end=")" transparent skipwhite contained contains=HogRuleOption,HogComment fold ",HogString,HogComment,HogVar,HogOptNot "syn region HogRuleOption start="\" end="\ze;" skipwhite contained contains=HogNumber syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP msg gid sid rev classtype priority metadata content nocase rawbytes syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP depth offset distance within http_client_body http_cookie http_raw_cookie http_header syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP http_raw_header http_method http_uri http_raw_uri http_stat_code http_stat_msg syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP fast_pattern uricontent urilen isdataat pcre pkt_data file_data base64_decode base64_data syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP byte_test byte_jump byte_extract ftpbounce asn1 cvs dce_iface dce_opnum dce_stub_data syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP sip_method sip_stat_code sip_header sip_body gtp_type gtp_info gtp_version ssl_version syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP ssl_state fragoffset ttl tos id ipopts fragbits dsize flags flow flowbits seq ack window syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP itype icode icmp_id icmp_seq rpc ip_proto sameip stream_reassemble stream_size syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP logto session resp react tag activates activated_by count replace detection_filter syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP threshold reference sd_pattern file_type file_group syn region HogRuleSROP start=':' end=";" transparent keepend contained contains=HogRuleChars,HogString,HogNumber syn match HogRuleChars "\%(\k\|\.\|?\|=\|/\|%\|&\)\+" contained syn match HogURLChars "\%(\.\|?\|=\)\+" contained " Hog File Type Rules syn match HogFileType /^\s*file.*$/ transparent contains=HogFileTypeOpt,HogFileFROP syn keyword HogFileTypeOpt skipwhite contained nextgroup=HogRuleFROP file type ver category id rev content offset msg group syn region HogFileFROP start=':' end=";" transparent keepend contained contains=NotASemicoln syn match NotASemiColn ".*$" contained " Comments syn keyword HogTodo XXX TODO NOTE contained syn match HogTodo "Step\s\+#\=\d\+" contained syn region HogComment start="#" end="$" contains=HogTodo,@Spell syn case match if !exists("hog_minlines") let hog_minlines = 100 endif exec "syn sync minlines=" . hog_minlines hi link HogRuleType Statement hi link HogRuleTypeName Type hi link HogRuleTypeType Keyword hi link HogPreproc Statement hi link HogConfig Statement hi link HogOutput Statement hi link HogConfigName Type "hi link HogEvFilter hi link HogEvFilterKeyword Statement hi link HogSuppressKeyword Statement hi link HogEvFilterTypes Constant hi link HogEvFilterTrack Constant hi link HogAttribute Statement hi link HogAttributeFile String hi link HogAttributeType Statement hi link HogInclude Statement hi link HogIncludeFile String hi link HogDylib Statement hi link HogDylibType Statement hi link HogDylibFile String " Variables " var hi link HogVar Identifier hi link HogVarType Keyword hi link HogVarSet Identifier hi link HogVarValue String " ipvar hi link HogIPVarType Keyword hi link HogIPVarSet Identifier " portvar hi link HogPortVarType Keyword hi link HogPortVarSet Identifier hi link HogPort Constant hi link HogTodo Todo hi link HogComment Comment hi link HogString String hi link HogHexEsc PreProc hi link HogNumber Number hi link HogSpecial Constant hi link HogSpecialAny Constant hi link HogIPAddr Constant hi link HogIPCidr Constant hi link HogOpNot Operator hi link HogOpRange Operator hi link HogRuleAction Statement hi link HogRuleProto Identifier hi link HogRuleDir Operator hi link HogRuleOption Keyword hi link HogRuleChars String hi link HogFileType HogRuleAction hi link HogFileTypeOpt HogRuleOption hi link NotASemiColn HogRuleChars let b:current_syntax = "hog" PK!cvim80/syntax/sendpr.vimnu[" Vim syntax file " Language: FreeBSD send-pr file " Maintainer: Hendrik Scholz " Last Change: 2012 Feb 03 " " http://raisdorf.net/files/misc/send-pr.vim " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match sendprComment /^SEND-PR:/ " email address syn match sendprType /<[a-zA-Z0-9\-\_\.]*@[a-zA-Z0-9\-\_\.]*>/ " ^> lines syn match sendprString /^>[a-zA-Z\-]*:/ syn region sendprLabel start="\[" end="\]" syn match sendprString /^To:/ syn match sendprString /^From:/ syn match sendprString /^Reply-To:/ syn match sendprString /^Cc:/ syn match sendprString /^X-send-pr-version:/ syn match sendprString /^X-GNATS-Notify:/ hi def link sendprComment Comment hi def link sendprType Type hi def link sendprString String hi def link sendprLabel Label let &cpo = s:cpo_save unlet s:cpo_save PK!C%vim80/syntax/mason.vimnu[" Vim syntax file " Language: Mason (Perl embedded in HTML) " Maintainer: vim-perl " Homepage: http://github.com/vim-perl/vim-perl/tree/master " Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Last Change: 2017-09-12 " Contributors: Hinrik Örn Sigurðsson " Andrew Smith " " TODO: " - Fix <%text> blocks to show HTML tags but ignore Mason tags. " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " The HTML syntax file included below uses this variable. " if !exists("main_syntax") let main_syntax = 'mason' endif " First pull in the HTML syntax. " runtime! syntax/html.vim unlet b:current_syntax syn cluster htmlPreproc add=@masonTop " Now pull in the Perl syntax. " syn include @perlTop syntax/perl.vim unlet b:current_syntax syn include @podTop syntax/pod.vim " It's hard to reduce down to the correct sub-set of Perl to highlight in some " of these cases so I've taken the safe option of just using perlTop in all of " them. If you have any suggestions, please let me know. " syn region masonPod start="^=[a-z]" end="^=cut" keepend contained contains=@podTop syn cluster perlTop remove=perlBraces syn region masonLine matchgroup=Delimiter start="^%" end="$" keepend contains=@perlTop syn region masonPerlComment start="#" end="\%(%>\)\@=\|$" contained contains=perlTodo,@Spell syn region masonExpr matchgroup=Delimiter start="<%" end="%>" contains=@perlTop,masonPerlComment syn region masonPerl matchgroup=Delimiter start="<%perl>" end="" contains=masonPod,@perlTop syn region masonComp keepend matchgroup=Delimiter start="<&\s*\%([-._/[:alnum:]]\+:\)\?[-._/[:alnum:]]*" end="&>" contains=@perlTop syn region masonComp keepend matchgroup=Delimiter skipnl start="<&|\s*\%([-._/[:alnum:]]\+:\)\?[-._/[:alnum:]]*" end="&>" contains=@perlTop nextgroup=masonCompContent syn region masonCompContent matchgroup=Delimiter start="" end="" contained contains=@masonTop syn region masonArgs matchgroup=Delimiter start="<%args>" end="" contains=masonPod,@perlTop syn region masonInit matchgroup=Delimiter start="<%init>" end="" contains=masonPod,@perlTop syn region masonCleanup matchgroup=Delimiter start="<%cleanup>" end="" contains=masonPod,@perlTop syn region masonOnce matchgroup=Delimiter start="<%once>" end="" contains=masonPod,@perlTop syn region masonClass matchgroup=Delimiter start="<%class>" end="" contains=masonPod,@perlTop syn region masonShared matchgroup=Delimiter start="<%shared>" end="" contains=masonPod,@perlTop syn region masonDef matchgroup=Delimiter start="<%def\s*[-._/[:alnum:]]\+\s*>" end="" contains=@htmlTop syn region masonMethod matchgroup=Delimiter start="<%method\s*[-._/[:alnum:]]\+\s*>" end="" contains=@htmlTop syn region masonFlags matchgroup=Delimiter start="<%flags>" end="" contains=masonPod,@perlTop syn region masonAttr matchgroup=Delimiter start="<%attr>" end="" contains=masonPod,@perlTop syn region masonFilter matchgroup=Delimiter start="<%filter>" end="" contains=masonPod,@perlTop syn region masonDoc matchgroup=Delimiter start="<%doc>" end="" syn region masonText matchgroup=Delimiter start="<%text>" end="" syn cluster masonTop contains=masonLine,masonExpr,masonPerl,masonComp,masonArgs,masonInit,masonCleanup,masonOnce,masonShared,masonDef,masonMethod,masonFlags,masonAttr,masonFilter,masonDoc,masonText " Set up default highlighting. Almost all of this is done in the included " syntax files. hi def link masonDoc Comment hi def link masonPod Comment hi def link masonPerlComment perlComment let b:current_syntax = "mason" if main_syntax == 'mason' unlet main_syntax endif PK!NL)vim80/syntax/xs.vimnu[" Vim syntax file " Language: XS (Perl extension interface language) " Author: Autogenerated from perl headers, on an original basis of Michael W. Dodge " Maintainer: vim-perl " Previous: Vincent Pit " Last Change: 2017-09-12 if exists("b:current_syntax") finish endif runtime! syntax/c.vim " Configuration: " let xs_superseded = 0 " mark C functions superseded by Perl replacements (ex. memcpy vs Copy) " let xs_not_core = 0 " mark private core functions if get(g:, 'xs_superseded', 0) syn keyword xsSuperseded atof atol calloc clearerr exit fclose feof ferror syn keyword xsSuperseded fflush fgetc fgetpos fgets fopen fprintf fputc fputs syn keyword xsSuperseded fread free freopen fseek fsetpos fwrite getc getenv syn keyword xsSuperseded isalnum isalpha iscntrl isdigit isgraph islower syn keyword xsSuperseded isprint ispunct isspace isupper isxdigit malloc syn keyword xsSuperseded memcpy memmove memset printf putc rand realloc syn keyword xsSuperseded rewind setenv sprintf srand stderr stdin stdout syn keyword xsSuperseded strcat strcmp strcpy strdup strlen strncat strncmp syn keyword xsSuperseded strncpy strstr strtod strtol strtoul system tolower syn keyword xsSuperseded toupper ungetc endif if get(g:, 'xs_not_core', 0) syn keyword xsPrivate F0convert Perl__add_range_to_invlist syn keyword xsPrivate Perl__core_swash_init Perl__get_encoding syn keyword xsPrivate Perl__get_swash_invlist Perl__invlist_contents syn keyword xsPrivate Perl__invlist_dump syn keyword xsPrivate Perl__invlist_intersection_maybe_complement_2nd syn keyword xsPrivate Perl__invlist_invert Perl__invlist_populate_swatch syn keyword xsPrivate Perl__invlist_search syn keyword xsPrivate Perl__invlist_union_maybe_complement_2nd syn keyword xsPrivate Perl__load_PL_utf8_foldclosures Perl__new_invlist syn keyword xsPrivate Perl__setup_canned_invlist Perl__swash_inversion_hash syn keyword xsPrivate Perl__swash_to_invlist Perl__to_fold_latin1 syn keyword xsPrivate Perl__warn_problematic_locale Perl_av_reify syn keyword xsPrivate Perl_current_re_engine Perl_cv_ckproto_len_flags syn keyword xsPrivate Perl_emulate_cop_io Perl_find_rundefsvoffset syn keyword xsPrivate Perl_get_re_arg Perl_grok_atoUV Perl_isALNUM_lazy syn keyword xsPrivate Perl_isIDFIRST_lazy Perl_is_uni_alnum syn keyword xsPrivate Perl_is_uni_alnum_lc Perl_is_uni_alnumc syn keyword xsPrivate Perl_is_uni_alnumc_lc Perl_is_uni_alpha syn keyword xsPrivate Perl_is_uni_alpha_lc Perl_is_uni_ascii syn keyword xsPrivate Perl_is_uni_ascii_lc Perl_is_uni_blank syn keyword xsPrivate Perl_is_uni_blank_lc Perl_is_uni_cntrl syn keyword xsPrivate Perl_is_uni_cntrl_lc Perl_is_uni_digit syn keyword xsPrivate Perl_is_uni_digit_lc Perl_is_uni_graph syn keyword xsPrivate Perl_is_uni_graph_lc Perl_is_uni_idfirst syn keyword xsPrivate Perl_is_uni_idfirst_lc Perl_is_uni_lower syn keyword xsPrivate Perl_is_uni_lower_lc Perl_is_uni_print syn keyword xsPrivate Perl_is_uni_print_lc Perl_is_uni_punct syn keyword xsPrivate Perl_is_uni_punct_lc Perl_is_uni_space syn keyword xsPrivate Perl_is_uni_space_lc Perl_is_uni_upper syn keyword xsPrivate Perl_is_uni_upper_lc Perl_is_uni_xdigit syn keyword xsPrivate Perl_is_uni_xdigit_lc Perl_is_utf8_alnum syn keyword xsPrivate Perl_is_utf8_alnumc Perl_is_utf8_alpha syn keyword xsPrivate Perl_is_utf8_ascii Perl_is_utf8_blank Perl_is_utf8_char syn keyword xsPrivate Perl_is_utf8_cntrl Perl_is_utf8_digit syn keyword xsPrivate Perl_is_utf8_graph Perl_is_utf8_idcont syn keyword xsPrivate Perl_is_utf8_idfirst Perl_is_utf8_lower syn keyword xsPrivate Perl_is_utf8_mark Perl_is_utf8_perl_space syn keyword xsPrivate Perl_is_utf8_perl_word Perl_is_utf8_posix_digit syn keyword xsPrivate Perl_is_utf8_print Perl_is_utf8_punct syn keyword xsPrivate Perl_is_utf8_space Perl_is_utf8_upper syn keyword xsPrivate Perl_is_utf8_xdigit Perl_is_utf8_xidcont syn keyword xsPrivate Perl_is_utf8_xidfirst Perl_mg_find_mglob Perl_mg_length syn keyword xsPrivate Perl_multideref_stringify Perl_new_warnings_bitfield syn keyword xsPrivate Perl_op_clear Perl_ptr_table_clear Perl_qerror syn keyword xsPrivate Perl_reg_named_buff Perl_reg_named_buff_iter syn keyword xsPrivate Perl_reg_numbered_buff_fetch syn keyword xsPrivate Perl_reg_numbered_buff_length syn keyword xsPrivate Perl_reg_numbered_buff_store Perl_reg_qr_package syn keyword xsPrivate Perl_reg_temp_copy Perl_regprop Perl_report_uninit syn keyword xsPrivate Perl_sv_magicext_mglob Perl_sv_setsv_cow syn keyword xsPrivate Perl_to_uni_lower_lc Perl_to_uni_title_lc syn keyword xsPrivate Perl_to_uni_upper_lc Perl_try_amagic_bin syn keyword xsPrivate Perl_try_amagic_un Perl_utf8_to_uvchr syn keyword xsPrivate Perl_utf8_to_uvuni Perl_utf8_to_uvuni_buf syn keyword xsPrivate Perl_valid_utf8_to_uvuni Perl_validate_proto syn keyword xsPrivate Perl_vivify_defelem Perl_yylex S_F0convert syn keyword xsPrivate S__append_range_to_invlist S__make_exactf_invlist syn keyword xsPrivate S_add_above_Latin1_folds S_add_data S_add_multi_match syn keyword xsPrivate S_add_utf16_textfilter S_adjust_size_and_find_bucket syn keyword xsPrivate S_advance_one_SB S_advance_one_WB S_amagic_cmp syn keyword xsPrivate S_amagic_cmp_locale S_amagic_i_ncmp S_amagic_ncmp syn keyword xsPrivate S_anonymise_cv_maybe S_ao S_apply_attrs syn keyword xsPrivate S_apply_attrs_my S_assert_uft8_cache_coherent syn keyword xsPrivate S_assignment_type S_backup_one_SB S_backup_one_WB syn keyword xsPrivate S_bad_type_gv S_bad_type_pv syn keyword xsPrivate S_check_locale_boundary_crossing S_check_type_and_open syn keyword xsPrivate S_check_uni S_checkcomma S_ckwarn_common syn keyword xsPrivate S_clear_placeholders S_clear_special_blocks syn keyword xsPrivate S_cntrl_to_mnemonic S_construct_ahocorasick_from_trie syn keyword xsPrivate S_cop_free S_could_it_be_a_POSIX_class S_cr_textfilter syn keyword xsPrivate S_curse S_cv_dump S_deb_curcv S_deb_stack_n S_debprof syn keyword xsPrivate S_debug_start_match S_del_sv syn keyword xsPrivate S_deprecate_commaless_var_list S_destroy_matcher syn keyword xsPrivate S_div128 S_do_chomp S_do_delete_local S_do_oddball syn keyword xsPrivate S_do_smartmatch S_do_trans_complex syn keyword xsPrivate S_do_trans_complex_utf8 S_do_trans_count syn keyword xsPrivate S_do_trans_count_utf8 S_do_trans_simple syn keyword xsPrivate S_do_trans_simple_utf8 S_docatch S_doeval S_dofindlabel syn keyword xsPrivate S_doform S_dooneliner S_doopen_pm S_doparseform syn keyword xsPrivate S_dopoptoeval S_dopoptogiven S_dopoptolabel syn keyword xsPrivate S_dopoptoloop S_dopoptosub_at S_dopoptowhen syn keyword xsPrivate S_dump_exec_pos S_dump_trie S_dump_trie_interim_list syn keyword xsPrivate S_dump_trie_interim_table S_dumpuntil S_dup_attrlist syn keyword xsPrivate S_exec_failed S_expect_number S_filter_gets syn keyword xsPrivate S_finalize_op S_find_and_forget_pmops syn keyword xsPrivate S_find_array_subscript S_find_beginning S_find_byclass syn keyword xsPrivate S_find_default_stash S_find_hash_subscript syn keyword xsPrivate S_find_in_my_stash S_find_uninit_var S_first_symbol syn keyword xsPrivate S_fixup_errno_string S_fold_constants S_forbid_setid syn keyword xsPrivate S_force_ident S_force_ident_maybe_lex S_force_list syn keyword xsPrivate S_force_next S_force_strict_version S_force_version syn keyword xsPrivate S_force_word S_forget_pmop S_form_short_octal_warning syn keyword xsPrivate S_gen_constant_list S_get_ANYOF_cp_list_for_ssc syn keyword xsPrivate S_get_aux_mg S_get_num S_glob_2number syn keyword xsPrivate S_glob_assign_glob S_grok_bslash_N S_grok_bslash_c syn keyword xsPrivate S_grok_bslash_o S_group_end S_gv_init_svtype syn keyword xsPrivate S_gv_is_in_main S_gv_magicalize S_gv_magicalize_isa syn keyword xsPrivate S_handle_regex_sets S_hfreeentries S_hsplit syn keyword xsPrivate S_hv_auxinit S_hv_auxinit_internal S_hv_delete_common syn keyword xsPrivate S_hv_free_ent_ret S_hv_magic_check S_hv_notallowed syn keyword xsPrivate S_incline S_incpush S_incpush_if_exists syn keyword xsPrivate S_incpush_use_sep S_ingroup S_init_ids S_init_interp syn keyword xsPrivate S_init_main_stash S_init_perllib syn keyword xsPrivate S_init_postdump_symbols S_init_predump_symbols syn keyword xsPrivate S_inplace_aassign S_intuit_method S_intuit_more syn keyword xsPrivate S_invlist_extend S_invlist_iternext syn keyword xsPrivate S_invoke_exception_hook S_isFOO_lc S_isFOO_utf8_lc syn keyword xsPrivate S_isGCB S_isSB S_isWB S_is_an_int syn keyword xsPrivate S_is_handle_constructor S_is_ssc_worth_it S_isa_lookup syn keyword xsPrivate S_join_exact S_leave_common S_listkids syn keyword xsPrivate S_looks_like_bool S_magic_methcall1 S_make_matcher syn keyword xsPrivate S_make_trie S_matcher_matches_sv S_maybe_multimagic_gv syn keyword xsPrivate S_mayberelocate S_measure_struct S_mem_log_common syn keyword xsPrivate S_mess_alloc S_minus_v S_missingterm S_modkids syn keyword xsPrivate S_more_sv S_move_proto_attr S_mro_clean_isarev syn keyword xsPrivate S_mro_gather_and_rename S_mro_get_linear_isa_dfs syn keyword xsPrivate S_mul128 S_mulexp10 S_my_bytes_to_utf8 S_my_exit_jump syn keyword xsPrivate S_my_kid S_need_utf8 S_newGIVWHENOP S_new_constant syn keyword xsPrivate S_new_he S_new_logop S_next_symbol S_nextchar syn keyword xsPrivate S_no_bareword_allowed S_no_fh_allowed S_no_op syn keyword xsPrivate S_not_a_number S_not_incrementable S_nuke_stacks syn keyword xsPrivate S_num_overflow S_open_script S_openn_cleanup syn keyword xsPrivate S_openn_setup S_pack_rec S_pad_alloc_name syn keyword xsPrivate S_pad_check_dup S_pad_findlex S_pad_reset S_parse_body syn keyword xsPrivate S_parse_gv_stash_name S_parse_ident syn keyword xsPrivate S_parse_lparen_question_flags S_pending_ident S_pidgone syn keyword xsPrivate S_pm_description S_pmtrans syn keyword xsPrivate S_populate_ANYOF_from_invlist S_printbuf syn keyword xsPrivate S_process_special_blocks S_ptr_table_find syn keyword xsPrivate S_put_charclass_bitmap_innards S_put_code_point syn keyword xsPrivate S_put_range S_qsortsvu S_re_croak2 S_ref_array_or_hash syn keyword xsPrivate S_refcounted_he_value S_refkids S_refto S_reg syn keyword xsPrivate S_reg2Lanode S_reg_check_named_buff_matched S_reg_node syn keyword xsPrivate S_reg_recode S_reg_scan_name S_reganode S_regatom syn keyword xsPrivate S_regbranch S_regclass S_regcppop S_regcppush syn keyword xsPrivate S_regdump_extflags S_regdump_intflags syn keyword xsPrivate S_regex_set_precedence S_reghop3 S_reghop4 syn keyword xsPrivate S_reghopmaybe3 S_reginclass S_reginsert S_regmatch syn keyword xsPrivate S_regnode_guts S_regpatws S_regpiece S_regrepeat syn keyword xsPrivate S_regtail S_regtail_study S_regtry S_require_tie_mod syn keyword xsPrivate S_restore_magic S_run_body S_run_user_filter syn keyword xsPrivate S_rxres_free S_rxres_restore S_save_hek_flags syn keyword xsPrivate S_save_lines S_save_magic_flags S_save_pushptri32ptr syn keyword xsPrivate S_save_scalar_at S_scalar_mod_type S_scalarboolean syn keyword xsPrivate S_scalarkids S_scalarseq S_scan_commit S_scan_const syn keyword xsPrivate S_scan_formline S_scan_heredoc S_scan_ident syn keyword xsPrivate S_scan_inputsymbol S_scan_pat S_scan_str S_scan_subst syn keyword xsPrivate S_scan_trans S_scan_word S_search_const S_sequence_num syn keyword xsPrivate S_set_ANYOF_arg S_share_hek_flags S_simplify_sort syn keyword xsPrivate S_skipspace_flags S_sortcv S_sortcv_stacked syn keyword xsPrivate S_sortcv_xsub S_space_join_names_mortal S_ssc_and syn keyword xsPrivate S_ssc_anything S_ssc_finalize S_ssc_init syn keyword xsPrivate S_ssc_is_anything S_ssc_is_cp_posixl_init S_ssc_or syn keyword xsPrivate S_stdize_locale S_strip_return S_study_chunk syn keyword xsPrivate S_sublex_done S_sublex_push S_sublex_start syn keyword xsPrivate S_sv_2iuv_common S_sv_2iuv_non_preserve S_sv_add_arena syn keyword xsPrivate S_sv_buf_to_rw S_sv_display S_sv_dup_common syn keyword xsPrivate S_sv_dup_inc_multiple S_sv_exp_grow S_sv_i_ncmp syn keyword xsPrivate S_sv_ncmp S_sv_pos_b2u_midway S_sv_pos_u2b_cached syn keyword xsPrivate S_sv_pos_u2b_forwards S_sv_pos_u2b_midway syn keyword xsPrivate S_sv_release_COW S_swallow_bom S_swash_scan_list_line syn keyword xsPrivate S_swatch_get S_to_byte_substr S_to_lower_latin1 syn keyword xsPrivate S_to_utf8_substr S_tokenize_use S_tokeq S_tokereport syn keyword xsPrivate S_too_few_arguments_pv S_too_many_arguments_pv syn keyword xsPrivate S_uiv_2buf S_unpack_rec S_unreferenced_to_tmp_stack syn keyword xsPrivate S_unshare_hek_or_pvn S_unwind_handler_stack syn keyword xsPrivate S_update_debugger_info S_usage S_utf16_textfilter syn keyword xsPrivate S_utf8_mg_len_cache_update S_utf8_mg_pos_cache_update syn keyword xsPrivate S_validate_suid S_visit S_with_queued_errors syn keyword xsPrivate S_xs_version_bootcheck S_yywarn _add_range_to_invlist syn keyword xsPrivate _append_range_to_invlist _core_swash_init _get_encoding syn keyword xsPrivate _get_swash_invlist _invlist_array_init syn keyword xsPrivate _invlist_contains_cp _invlist_contents _invlist_dump syn keyword xsPrivate _invlist_intersection syn keyword xsPrivate _invlist_intersection_maybe_complement_2nd syn keyword xsPrivate _invlist_invert _invlist_len _invlist_populate_swatch syn keyword xsPrivate _invlist_search _invlist_subtract _invlist_union syn keyword xsPrivate _invlist_union_maybe_complement_2nd syn keyword xsPrivate _load_PL_utf8_foldclosures _make_exactf_invlist syn keyword xsPrivate _new_invlist _setup_canned_invlist syn keyword xsPrivate _swash_inversion_hash _swash_to_invlist _to_fold_latin1 syn keyword xsPrivate _warn_problematic_locale add_above_Latin1_folds syn keyword xsPrivate add_cp_to_invlist add_data add_multi_match syn keyword xsPrivate add_utf16_textfilter adjust_size_and_find_bucket syn keyword xsPrivate advance_one_SB advance_one_WB syn keyword xsPrivate alloc_maybe_populate_EXACT amagic_cmp amagic_cmp_locale syn keyword xsPrivate amagic_i_ncmp amagic_ncmp anonymise_cv_maybe ao syn keyword xsPrivate apply_attrs apply_attrs_my assert_uft8_cache_coherent syn keyword xsPrivate assignment_type av_reify backup_one_SB backup_one_WB syn keyword xsPrivate bad_type_gv bad_type_pv check_locale_boundary_crossing syn keyword xsPrivate check_type_and_open check_uni checkcomma ckwarn_common syn keyword xsPrivate clear_placeholders clear_special_blocks syn keyword xsPrivate cntrl_to_mnemonic compute_EXACTish syn keyword xsPrivate construct_ahocorasick_from_trie cop_free syn keyword xsPrivate could_it_be_a_POSIX_class cr_textfilter syn keyword xsPrivate current_re_engine curse cv_ckproto_len_flags cv_dump syn keyword xsPrivate deb_curcv deb_stack_n debprof debug_start_match del_sv syn keyword xsPrivate deprecate_commaless_var_list destroy_matcher div128 syn keyword xsPrivate do_aexec do_chomp do_delete_local do_exec do_oddball syn keyword xsPrivate do_smartmatch do_trans_complex do_trans_complex_utf8 syn keyword xsPrivate do_trans_count do_trans_count_utf8 do_trans_simple syn keyword xsPrivate do_trans_simple_utf8 docatch doeval dofindlabel doform syn keyword xsPrivate dooneliner doopen_pm doparseform dopoptoeval syn keyword xsPrivate dopoptogiven dopoptolabel dopoptoloop dopoptosub_at syn keyword xsPrivate dopoptowhen dump_exec_pos dump_trie syn keyword xsPrivate dump_trie_interim_list dump_trie_interim_table syn keyword xsPrivate dumpuntil dup_attrlist exec_failed expect_number syn keyword xsPrivate filter_gets finalize_op find_and_forget_pmops syn keyword xsPrivate find_array_subscript find_beginning find_byclass syn keyword xsPrivate find_default_stash find_hash_subscript find_in_my_stash syn keyword xsPrivate find_rundefsvoffset find_uninit_var first_symbol syn keyword xsPrivate fixup_errno_string fold_constants forbid_setid syn keyword xsPrivate force_ident force_ident_maybe_lex force_list force_next syn keyword xsPrivate force_strict_version force_version force_word syn keyword xsPrivate forget_pmop form_short_octal_warning free_c_backtrace syn keyword xsPrivate gen_constant_list get_ANYOF_cp_list_for_ssc get_aux_mg syn keyword xsPrivate get_invlist_iter_addr get_invlist_offset_addr syn keyword xsPrivate get_invlist_previous_index_addr get_num glob_2number syn keyword xsPrivate glob_assign_glob grok_atoUV grok_bslash_N grok_bslash_c syn keyword xsPrivate grok_bslash_o grok_bslash_x group_end gv_init_svtype syn keyword xsPrivate gv_is_in_main gv_magicalize gv_magicalize_isa syn keyword xsPrivate handle_regex_sets hfreeentries hsplit hv_auxinit syn keyword xsPrivate hv_auxinit_internal hv_delete_common hv_free_ent_ret syn keyword xsPrivate hv_magic_check hv_notallowed incline incpush syn keyword xsPrivate incpush_if_exists incpush_use_sep ingroup init_ids syn keyword xsPrivate init_interp init_main_stash init_perllib syn keyword xsPrivate init_postdump_symbols init_predump_symbols syn keyword xsPrivate inplace_aassign intuit_method intuit_more invlist_array syn keyword xsPrivate invlist_clone invlist_extend invlist_highest syn keyword xsPrivate invlist_is_iterating invlist_iterfinish syn keyword xsPrivate invlist_iterinit invlist_iternext invlist_max syn keyword xsPrivate invlist_previous_index invlist_set_len syn keyword xsPrivate invlist_set_previous_index invlist_trim syn keyword xsPrivate invoke_exception_hook isALNUM_lazy isFOO_lc syn keyword xsPrivate isFOO_utf8_lc isGCB isIDFIRST_lazy isSB isWB is_an_int syn keyword xsPrivate is_handle_constructor is_ssc_worth_it is_uni_alnum syn keyword xsPrivate is_uni_alnum_lc is_uni_alnumc is_uni_alnumc_lc syn keyword xsPrivate is_uni_alpha is_uni_alpha_lc is_uni_ascii syn keyword xsPrivate is_uni_ascii_lc is_uni_blank is_uni_blank_lc syn keyword xsPrivate is_uni_cntrl is_uni_cntrl_lc is_uni_digit syn keyword xsPrivate is_uni_digit_lc is_uni_graph is_uni_graph_lc syn keyword xsPrivate is_uni_idfirst is_uni_idfirst_lc is_uni_lower syn keyword xsPrivate is_uni_lower_lc is_uni_print is_uni_print_lc syn keyword xsPrivate is_uni_punct is_uni_punct_lc is_uni_space syn keyword xsPrivate is_uni_space_lc is_uni_upper is_uni_upper_lc syn keyword xsPrivate is_uni_xdigit is_uni_xdigit_lc is_utf8_alnum syn keyword xsPrivate is_utf8_alnumc is_utf8_alpha is_utf8_ascii syn keyword xsPrivate is_utf8_blank is_utf8_char is_utf8_cntrl is_utf8_digit syn keyword xsPrivate is_utf8_graph is_utf8_idcont is_utf8_idfirst syn keyword xsPrivate is_utf8_lower is_utf8_mark is_utf8_perl_space syn keyword xsPrivate is_utf8_perl_word is_utf8_posix_digit is_utf8_print syn keyword xsPrivate is_utf8_punct is_utf8_space is_utf8_upper syn keyword xsPrivate is_utf8_xdigit is_utf8_xidcont is_utf8_xidfirst syn keyword xsPrivate isa_lookup join_exact leave_common listkids syn keyword xsPrivate looks_like_bool magic_methcall1 make_matcher make_trie syn keyword xsPrivate matcher_matches_sv maybe_multimagic_gv mayberelocate syn keyword xsPrivate measure_struct mem_log_common mess_alloc mg_find_mglob syn keyword xsPrivate mg_length minus_v missingterm modkids more_sv syn keyword xsPrivate move_proto_attr mro_clean_isarev mro_gather_and_rename syn keyword xsPrivate mro_get_linear_isa_dfs mul128 mulexp10 syn keyword xsPrivate multideref_stringify my_bytes_to_utf8 my_exit_jump syn keyword xsPrivate my_kid need_utf8 newGIVWHENOP new_he new_logop syn keyword xsPrivate next_symbol nextchar no_bareword_allowed no_fh_allowed syn keyword xsPrivate no_op not_a_number not_incrementable nuke_stacks syn keyword xsPrivate num_overflow op_clear open_script openn_cleanup syn keyword xsPrivate openn_setup pack_rec pad_alloc_name pad_check_dup syn keyword xsPrivate pad_findlex pad_reset parse_body parse_gv_stash_name syn keyword xsPrivate parse_ident parse_lparen_question_flags pending_ident syn keyword xsPrivate pidgone pm_description pmtrans syn keyword xsPrivate populate_ANYOF_from_invlist printbuf syn keyword xsPrivate process_special_blocks ptr_table_clear ptr_table_find syn keyword xsPrivate put_charclass_bitmap_innards put_code_point put_range syn keyword xsPrivate qerror qsortsvu re_croak2 ref_array_or_hash syn keyword xsPrivate refcounted_he_value refkids refto reg reg2Lanode syn keyword xsPrivate reg_check_named_buff_matched reg_named_buff syn keyword xsPrivate reg_named_buff_iter reg_node reg_numbered_buff_fetch syn keyword xsPrivate reg_numbered_buff_length reg_numbered_buff_store syn keyword xsPrivate reg_qr_package reg_recode reg_scan_name reg_skipcomment syn keyword xsPrivate reg_temp_copy reganode regatom regbranch regclass syn keyword xsPrivate regcppop regcppush regcurly regdump_extflags syn keyword xsPrivate regdump_intflags regex_set_precedence reghop3 reghop4 syn keyword xsPrivate reghopmaybe3 reginclass reginsert regmatch regnode_guts syn keyword xsPrivate regpatws regpiece regpposixcc regprop regrepeat regtail syn keyword xsPrivate regtail_study regtry report_uninit require_tie_mod syn keyword xsPrivate restore_magic run_body run_user_filter rxres_free syn keyword xsPrivate rxres_restore save_hek_flags save_lines syn keyword xsPrivate save_magic_flags save_pushptri32ptr save_scalar_at syn keyword xsPrivate scalar_mod_type scalarboolean scalarkids scalarseq syn keyword xsPrivate scan_commit scan_const scan_formline scan_heredoc syn keyword xsPrivate scan_ident scan_inputsymbol scan_pat scan_str syn keyword xsPrivate scan_subst scan_trans scan_word search_const syn keyword xsPrivate sequence_num set_ANYOF_arg share_hek_flags syn keyword xsPrivate simplify_sort skipspace_flags sortcv sortcv_stacked syn keyword xsPrivate sortcv_xsub space_join_names_mortal ssc_add_range syn keyword xsPrivate ssc_and ssc_anything ssc_clear_locale ssc_cp_and syn keyword xsPrivate ssc_finalize ssc_init ssc_intersection ssc_is_anything syn keyword xsPrivate ssc_is_cp_posixl_init ssc_or ssc_union stdize_locale syn keyword xsPrivate strip_return study_chunk sublex_done sublex_push syn keyword xsPrivate sublex_start sv_2iuv_common sv_2iuv_non_preserve syn keyword xsPrivate sv_add_arena sv_buf_to_rw sv_copypv sv_display syn keyword xsPrivate sv_dup_common sv_dup_inc_multiple sv_exp_grow sv_i_ncmp syn keyword xsPrivate sv_magicext_mglob sv_ncmp sv_only_taint_gmagic syn keyword xsPrivate sv_or_pv_pos_u2b sv_pos_b2u_midway sv_pos_u2b_cached syn keyword xsPrivate sv_pos_u2b_forwards sv_pos_u2b_midway sv_release_COW syn keyword xsPrivate sv_setsv_cow swallow_bom swash_scan_list_line syn keyword xsPrivate swatch_get to_byte_substr to_lower_latin1 syn keyword xsPrivate to_uni_lower_lc to_uni_title_lc to_uni_upper_lc syn keyword xsPrivate to_utf8_substr tokenize_use tokeq tokereport syn keyword xsPrivate too_few_arguments_pv too_many_arguments_pv uiv_2buf syn keyword xsPrivate unpack_rec unreferenced_to_tmp_stack unshare_hek_or_pvn syn keyword xsPrivate unwind_handler_stack update_debugger_info usage syn keyword xsPrivate utf16_textfilter utf8_mg_len_cache_update syn keyword xsPrivate utf8_mg_pos_cache_update utf8_to_uvchr utf8_to_uvuni syn keyword xsPrivate utf8_to_uvuni_buf valid_utf8_to_uvuni validate_proto syn keyword xsPrivate visit vivify_defelem with_queued_errors yylex yywarn endif syn keyword xsType AMT AMTS ANY AV BHK BINOP BLOCK CHECKPOINT CLONE_PARAMS syn keyword xsType COP COPHH CV DB_Hash_t DB_Prefix_t DEBUG_t Direntry_t syn keyword xsType Fpos_t Free_t GCB_enum GP GV Gid_t Groups_t HE HEK HV I16 syn keyword xsType I32 I64 I8 IO IV Int64 JMPENV LISTOP LOGOP LOOP MAGIC syn keyword xsType METHOP MGS MGVTBL Malloc_t Mmap_t Mode_t NV Netdb_hlen_t syn keyword xsType Netdb_host_t Netdb_name_t Netdb_net_t OP OPCODE OPSLAB syn keyword xsType OPSLOT Off_t Optype PAD PADLIST PADNAME PADNAMELIST syn keyword xsType PADOFFSET PADOP PERL_CONTEXT PERL_DRAND48_T PERL_SI PMOP syn keyword xsType PTR_TBL_ENT_t PTR_TBL_t PVOP PerlHandShakeInterpreter syn keyword xsType PerlIO PerlIO_funcs PerlIO_list_s PerlIO_list_t PerlIOl syn keyword xsType PerlInterpreter Pid_t Quad_t REGEXP RExC_state_t syn keyword xsType Rand_seed_t SB_enum SSize_t STRLEN STRUCT_SV SUBLEXINFO SV syn keyword xsType SVOP Select_fd_set_t Shmat_t Signal_t Sigsave_t Size_t syn keyword xsType Sock_size_t Stat_t TM64 Time64_T Time_t U16 U32 U64 U8 syn keyword xsType UNOP UNOP_AUX UV Uid_t Uquad_t WB_enum XINVLIST XOP XPV syn keyword xsType XPVAV XPVBM XPVCV XPVFM XPVGV XPVHV XPVIO XPVIV XPVLV syn keyword xsType XPVMG XPVNV XPVUV Year _PerlIO _PerlIO_funcs syn keyword xsType _char_class_number _pMY_CXT _pTHX _reg_ac_data syn keyword xsType _reg_trie_data _reg_trie_state _reg_trie_trans syn keyword xsType _reg_trie_trans_list_elem _sublex_info _xhvnameu _xivu syn keyword xsType _xmgu _xnvu am_table am_table_short block_eval syn keyword xsType block_format block_givwhen block_hooks block_loop syn keyword xsType block_sub bound_type clone_params custom_op cv_flags_t syn keyword xsType expectation gccbug_semun line_t magic mem_log_type methop syn keyword xsType mgvtbl mro_alg mro_meta my_cxt_t opcode opslab opslot p5rx syn keyword xsType pMY_CXT pMY_CXT_ pTHX pTHX_ padlist padname syn keyword xsType padname_with_str padnamelist padtidy_type perl_cond syn keyword xsType perl_debug_pad perl_drand48_t perl_key syn keyword xsType perl_memory_debug_header perl_mstats perl_mstats_t syn keyword xsType perl_mutex perl_os_thread perl_phase perl_vars syn keyword xsType pthread_addr_t ptr_tbl ptr_tbl_ent refcounted_he syn keyword xsType reg_ac_data reg_code_block reg_data reg_substr_data syn keyword xsType reg_substr_datum reg_trie_data reg_trie_state syn keyword xsType reg_trie_trans reg_trie_trans_le regex_charset regnode syn keyword xsType regnode_1 regnode_2 regnode_2L regnode_charclass syn keyword xsType regnode_charclass_class regnode_charclass_posixl syn keyword xsType regnode_ssc regnode_string semun shared_he svtype ufuncs syn keyword xsType unop_aux xop_flags_enum xpv xpvav xpvcv xpvfm xpvgv xpvhv syn keyword xsType xpvhv_aux xpvinvlist xpvio xpviv xpvlv xpvmg xpvnv xpvuv syn keyword xsType yytokentype syn keyword xsString IVdf NVef NVff NVgf SVf SVf256 SVf32 SVf_ UVof UVuf UVxf syn keyword xsConstant CXt_BLOCK CXt_EVAL CXt_FORMAT CXt_GIVEN CXt_LOOP_FOR syn keyword xsConstant CXt_LOOP_LAZYIV CXt_LOOP_LAZYSV CXt_LOOP_PLAIN syn keyword xsConstant CXt_NULL CXt_SUB CXt_SUBST CXt_WHEN GCB_BOUND GCB_CR syn keyword xsConstant GCB_Control GCB_EDGE GCB_Extend GCB_L GCB_LF GCB_LV syn keyword xsConstant GCB_LVT GCB_Other GCB_Prepend GCB_Regional_Indicator syn keyword xsConstant GCB_SpacingMark GCB_T GCB_V G_ARRAY G_DISCARD G_EVAL syn keyword xsConstant G_FAKINGEVAL G_KEEPERR G_METHOD G_METHOD_NAMED syn keyword xsConstant G_NOARGS G_NODEBUG G_RE_REPARSING G_SCALAR syn keyword xsConstant G_UNDEF_FILL G_VOID G_WANT G_WARN_ALL_MASK syn keyword xsConstant G_WARN_ALL_OFF G_WARN_ALL_ON G_WARN_OFF G_WARN_ON syn keyword xsConstant G_WARN_ONCE G_WRITING_TO_STDERR OA_AVREF OA_BASEOP syn keyword xsConstant OA_BASEOP_OR_UNOP OA_BINOP OA_CLASS_MASK OA_COP syn keyword xsConstant OA_CVREF OA_DANGEROUS OA_DEFGV OA_FILEREF syn keyword xsConstant OA_FILESTATOP OA_FOLDCONST OA_HVREF OA_LIST OA_LISTOP syn keyword xsConstant OA_LOGOP OA_LOOP OA_LOOPEXOP OA_MARK OA_METHOP syn keyword xsConstant OA_OPTIONAL OA_OTHERINT OA_PADOP OA_PMOP syn keyword xsConstant OA_PVOP_OR_SVOP OA_RETSCALAR OA_SCALAR OA_SCALARREF syn keyword xsConstant OA_SVOP OA_TARGET OA_TARGLEX OA_UNOP OA_UNOP_AUX syn keyword xsConstant OP_AASSIGN OP_ABS OP_ACCEPT OP_ADD OP_AEACH OP_AELEM syn keyword xsConstant OP_AELEMFAST OP_AELEMFAST_LEX OP_AKEYS OP_ALARM OP_AND syn keyword xsConstant OP_ANDASSIGN OP_ANONCODE OP_ANONCONST OP_ANONHASH syn keyword xsConstant OP_ANONLIST OP_ASLICE OP_ATAN2 OP_AV2ARYLEN OP_AVALUES syn keyword xsConstant OP_BACKTICK OP_BIND OP_BINMODE OP_BIT_AND OP_BIT_OR syn keyword xsConstant OP_BIT_XOR OP_BLESS OP_BREAK OP_CALLER OP_CHDIR syn keyword xsConstant OP_CHMOD OP_CHOMP OP_CHOP OP_CHOWN OP_CHR OP_CHROOT syn keyword xsConstant OP_CLONECV OP_CLOSE OP_CLOSEDIR OP_COMPLEMENT syn keyword xsConstant OP_CONCAT OP_COND_EXPR OP_CONNECT OP_CONST OP_CONTINUE syn keyword xsConstant OP_COREARGS OP_COS OP_CRYPT OP_CUSTOM OP_DBMCLOSE syn keyword xsConstant OP_DBMOPEN OP_DBSTATE OP_DEFINED OP_DELETE OP_DIE syn keyword xsConstant OP_DIVIDE OP_DOFILE OP_DOR OP_DORASSIGN OP_DUMP syn keyword xsConstant OP_EACH OP_EGRENT OP_EHOSTENT OP_ENETENT OP_ENTER syn keyword xsConstant OP_ENTEREVAL OP_ENTERGIVEN OP_ENTERITER OP_ENTERLOOP syn keyword xsConstant OP_ENTERSUB OP_ENTERTRY OP_ENTERWHEN OP_ENTERWRITE syn keyword xsConstant OP_EOF OP_EPROTOENT OP_EPWENT OP_EQ OP_ESERVENT syn keyword xsConstant OP_EXEC OP_EXISTS OP_EXIT OP_EXP OP_FC OP_FCNTL syn keyword xsConstant OP_FILENO OP_FLIP OP_FLOCK OP_FLOP OP_FORK OP_FORMLINE syn keyword xsConstant OP_FTATIME OP_FTBINARY OP_FTBLK OP_FTCHR OP_FTCTIME syn keyword xsConstant OP_FTDIR OP_FTEEXEC OP_FTEOWNED OP_FTEREAD OP_FTEWRITE syn keyword xsConstant OP_FTFILE OP_FTIS OP_FTLINK OP_FTMTIME OP_FTPIPE syn keyword xsConstant OP_FTREXEC OP_FTROWNED OP_FTRREAD OP_FTRWRITE syn keyword xsConstant OP_FTSGID OP_FTSIZE OP_FTSOCK OP_FTSUID OP_FTSVTX syn keyword xsConstant OP_FTTEXT OP_FTTTY OP_FTZERO OP_GE OP_GELEM OP_GETC syn keyword xsConstant OP_GETLOGIN OP_GETPEERNAME OP_GETPGRP OP_GETPPID syn keyword xsConstant OP_GETPRIORITY OP_GETSOCKNAME OP_GGRENT OP_GGRGID syn keyword xsConstant OP_GGRNAM OP_GHBYADDR OP_GHBYNAME OP_GHOSTENT OP_GLOB syn keyword xsConstant OP_GMTIME OP_GNBYADDR OP_GNBYNAME OP_GNETENT OP_GOTO syn keyword xsConstant OP_GPBYNAME OP_GPBYNUMBER OP_GPROTOENT OP_GPWENT syn keyword xsConstant OP_GPWNAM OP_GPWUID OP_GREPSTART OP_GREPWHILE syn keyword xsConstant OP_GSBYNAME OP_GSBYPORT OP_GSERVENT OP_GSOCKOPT OP_GT syn keyword xsConstant OP_GV OP_GVSV OP_HELEM OP_HEX OP_HINTSEVAL OP_HSLICE syn keyword xsConstant OP_INDEX OP_INT OP_INTROCV OP_IOCTL OP_ITER OP_I_ADD syn keyword xsConstant OP_I_DIVIDE OP_I_EQ OP_I_GE OP_I_GT OP_I_LE OP_I_LT syn keyword xsConstant OP_I_MODULO OP_I_MULTIPLY OP_I_NCMP OP_I_NE syn keyword xsConstant OP_I_NEGATE OP_I_POSTDEC OP_I_POSTINC OP_I_PREDEC syn keyword xsConstant OP_I_PREINC OP_I_SUBTRACT OP_JOIN OP_KEYS OP_KILL syn keyword xsConstant OP_KVASLICE OP_KVHSLICE OP_LAST OP_LC OP_LCFIRST OP_LE syn keyword xsConstant OP_LEAVE OP_LEAVEEVAL OP_LEAVEGIVEN OP_LEAVELOOP syn keyword xsConstant OP_LEAVESUB OP_LEAVESUBLV OP_LEAVETRY OP_LEAVEWHEN syn keyword xsConstant OP_LEAVEWRITE OP_LEFT_SHIFT OP_LENGTH OP_LINESEQ syn keyword xsConstant OP_LINK OP_LIST OP_LISTEN OP_LOCALTIME OP_LOCK OP_LOG syn keyword xsConstant OP_LSLICE OP_LSTAT OP_LT OP_LVAVREF OP_LVREF syn keyword xsConstant OP_LVREFSLICE OP_MAPSTART OP_MAPWHILE OP_MATCH syn keyword xsConstant OP_METHOD OP_METHOD_NAMED OP_METHOD_REDIR syn keyword xsConstant OP_METHOD_REDIR_SUPER OP_METHOD_SUPER OP_MKDIR syn keyword xsConstant OP_MODULO OP_MSGCTL OP_MSGGET OP_MSGRCV OP_MSGSND syn keyword xsConstant OP_MULTIDEREF OP_MULTIPLY OP_NBIT_AND OP_NBIT_OR syn keyword xsConstant OP_NBIT_XOR OP_NCMP OP_NCOMPLEMENT OP_NE OP_NEGATE syn keyword xsConstant OP_NEXT OP_NEXTSTATE OP_NOT OP_NULL OP_OCT OP_ONCE syn keyword xsConstant OP_OPEN OP_OPEN_DIR OP_OR OP_ORASSIGN OP_ORD OP_PACK syn keyword xsConstant OP_PADANY OP_PADAV OP_PADCV OP_PADHV OP_PADRANGE syn keyword xsConstant OP_PADSV OP_PIPE_OP OP_POP OP_POS OP_POSTDEC syn keyword xsConstant OP_POSTINC OP_POW OP_PREDEC OP_PREINC OP_PRINT syn keyword xsConstant OP_PROTOTYPE OP_PRTF OP_PUSH OP_PUSHMARK OP_PUSHRE syn keyword xsConstant OP_QR OP_QUOTEMETA OP_RAND OP_RANGE OP_RCATLINE syn keyword xsConstant OP_REACH OP_READ OP_READDIR OP_READLINE OP_READLINK syn keyword xsConstant OP_RECV OP_REDO OP_REF OP_REFASSIGN OP_REFGEN syn keyword xsConstant OP_REGCMAYBE OP_REGCOMP OP_REGCRESET OP_RENAME syn keyword xsConstant OP_REPEAT OP_REQUIRE OP_RESET OP_RETURN OP_REVERSE syn keyword xsConstant OP_REWINDDIR OP_RIGHT_SHIFT OP_RINDEX OP_RKEYS syn keyword xsConstant OP_RMDIR OP_RUNCV OP_RV2AV OP_RV2CV OP_RV2GV OP_RV2HV syn keyword xsConstant OP_RV2SV OP_RVALUES OP_SASSIGN OP_SAY OP_SBIT_AND syn keyword xsConstant OP_SBIT_OR OP_SBIT_XOR OP_SCALAR OP_SCHOMP OP_SCHOP syn keyword xsConstant OP_SCMP OP_SCOMPLEMENT OP_SCOPE OP_SEEK OP_SEEKDIR syn keyword xsConstant OP_SELECT OP_SEMCTL OP_SEMGET OP_SEMOP OP_SEND OP_SEQ syn keyword xsConstant OP_SETPGRP OP_SETPRIORITY OP_SGE OP_SGRENT OP_SGT syn keyword xsConstant OP_SHIFT OP_SHMCTL OP_SHMGET OP_SHMREAD OP_SHMWRITE syn keyword xsConstant OP_SHOSTENT OP_SHUTDOWN OP_SIN OP_SLE OP_SLEEP OP_SLT syn keyword xsConstant OP_SMARTMATCH OP_SNE OP_SNETENT OP_SOCKET OP_SOCKPAIR syn keyword xsConstant OP_SORT OP_SPLICE OP_SPLIT OP_SPRINTF OP_SPROTOENT syn keyword xsConstant OP_SPWENT OP_SQRT OP_SRAND OP_SREFGEN OP_SSELECT syn keyword xsConstant OP_SSERVENT OP_SSOCKOPT OP_STAT OP_STRINGIFY OP_STUB syn keyword xsConstant OP_STUDY OP_SUBST OP_SUBSTCONT OP_SUBSTR OP_SUBTRACT syn keyword xsConstant OP_SYMLINK OP_SYSCALL OP_SYSOPEN OP_SYSREAD OP_SYSSEEK syn keyword xsConstant OP_SYSTEM OP_SYSWRITE OP_TELL OP_TELLDIR OP_TIE syn keyword xsConstant OP_TIED OP_TIME OP_TMS OP_TRANS OP_TRANSR OP_TRUNCATE syn keyword xsConstant OP_UC OP_UCFIRST OP_UMASK OP_UNDEF OP_UNLINK OP_UNPACK syn keyword xsConstant OP_UNSHIFT OP_UNSTACK OP_UNTIE OP_UTIME OP_VALUES syn keyword xsConstant OP_VEC OP_WAIT OP_WAITPID OP_WANTARRAY OP_WARN OP_XOR syn keyword xsConstant OP_max OPf_FOLDED OPf_KIDS OPf_KNOW OPf_LIST OPf_MOD syn keyword xsConstant OPf_PARENS OPf_REF OPf_SPECIAL OPf_STACKED OPf_WANT syn keyword xsConstant OPf_WANT_LIST OPf_WANT_SCALAR OPf_WANT_VOID syn keyword xsConstant OPpALLOW_FAKE OPpARG1_MASK OPpARG2_MASK OPpARG3_MASK syn keyword xsConstant OPpARG4_MASK OPpASSIGN_BACKWARDS OPpASSIGN_COMMON syn keyword xsConstant OPpASSIGN_CV_TO_GV OPpCONST_BARE OPpCONST_ENTERED syn keyword xsConstant OPpCONST_NOVER OPpCONST_SHORTCIRCUIT OPpCONST_STRICT syn keyword xsConstant OPpCOREARGS_DEREF1 OPpCOREARGS_DEREF2 syn keyword xsConstant OPpCOREARGS_PUSHMARK OPpCOREARGS_SCALARMOD OPpDEREF syn keyword xsConstant OPpDEREF_AV OPpDEREF_HV OPpDEREF_SV OPpDONT_INIT_GV syn keyword xsConstant OPpEARLY_CV OPpENTERSUB_AMPER OPpENTERSUB_DB syn keyword xsConstant OPpENTERSUB_HASTARG OPpENTERSUB_INARGS syn keyword xsConstant OPpENTERSUB_LVAL_MASK OPpENTERSUB_NOPAREN syn keyword xsConstant OPpEVAL_BYTES OPpEVAL_COPHH OPpEVAL_HAS_HH syn keyword xsConstant OPpEVAL_RE_REPARSING OPpEVAL_UNICODE OPpEXISTS_SUB syn keyword xsConstant OPpFLIP_LINENUM OPpFT_ACCESS OPpFT_AFTER_t syn keyword xsConstant OPpFT_STACKED OPpFT_STACKING OPpGREP_LEX syn keyword xsConstant OPpHINT_STRICT_REFS OPpHUSH_VMSISH OPpITER_DEF syn keyword xsConstant OPpITER_REVERSED OPpLIST_GUESSED OPpLVALUE syn keyword xsConstant OPpLVAL_DEFER OPpLVAL_INTRO OPpLVREF_AV OPpLVREF_CV syn keyword xsConstant OPpLVREF_ELEM OPpLVREF_HV OPpLVREF_ITER OPpLVREF_SV syn keyword xsConstant OPpLVREF_TYPE OPpMAYBE_LVSUB OPpMAYBE_TRUEBOOL syn keyword xsConstant OPpMAY_RETURN_CONSTANT OPpMULTIDEREF_DELETE syn keyword xsConstant OPpMULTIDEREF_EXISTS OPpOFFBYONE OPpOPEN_IN_CRLF syn keyword xsConstant OPpOPEN_IN_RAW OPpOPEN_OUT_CRLF OPpOPEN_OUT_RAW syn keyword xsConstant OPpOUR_INTRO OPpPADRANGE_COUNTMASK syn keyword xsConstant OPpPADRANGE_COUNTSHIFT OPpPAD_STATE OPpPV_IS_UTF8 syn keyword xsConstant OPpREFCOUNTED OPpREPEAT_DOLIST OPpREVERSE_INPLACE syn keyword xsConstant OPpRUNTIME OPpSLICE OPpSLICEWARNING OPpSORT_DESCEND syn keyword xsConstant OPpSORT_INPLACE OPpSORT_INTEGER OPpSORT_NUMERIC syn keyword xsConstant OPpSORT_QSORT OPpSORT_REVERSE OPpSORT_STABLE syn keyword xsConstant OPpSPLIT_IMPLIM OPpSUBSTR_REPL_FIRST OPpTARGET_MY syn keyword xsConstant OPpTRANS_ALL OPpTRANS_COMPLEMENT OPpTRANS_DELETE syn keyword xsConstant OPpTRANS_FROM_UTF OPpTRANS_GROWS OPpTRANS_IDENTICAL syn keyword xsConstant OPpTRANS_SQUASH OPpTRANS_TO_UTF OPpTRUEBOOL syn keyword xsConstant PERL_MAGIC_READONLY_ACCEPTABLE syn keyword xsConstant PERL_MAGIC_TYPE_IS_VALUE_MAGIC syn keyword xsConstant PERL_MAGIC_TYPE_READONLY_ACCEPTABLE syn keyword xsConstant PERL_MAGIC_UTF8_CACHESIZE PERL_MAGIC_VALUE_MAGIC syn keyword xsConstant PERL_MAGIC_VTABLE_MASK PERL_MAGIC_arylen syn keyword xsConstant PERL_MAGIC_arylen_p PERL_MAGIC_backref PERL_MAGIC_bm syn keyword xsConstant PERL_MAGIC_checkcall PERL_MAGIC_collxfrm syn keyword xsConstant PERL_MAGIC_dbfile PERL_MAGIC_dbline syn keyword xsConstant PERL_MAGIC_debugvar PERL_MAGIC_defelem PERL_MAGIC_env syn keyword xsConstant PERL_MAGIC_envelem PERL_MAGIC_ext PERL_MAGIC_fm syn keyword xsConstant PERL_MAGIC_hints PERL_MAGIC_hintselem PERL_MAGIC_isa syn keyword xsConstant PERL_MAGIC_isaelem PERL_MAGIC_lvref PERL_MAGIC_nkeys syn keyword xsConstant PERL_MAGIC_overload_table PERL_MAGIC_pos PERL_MAGIC_qr syn keyword xsConstant PERL_MAGIC_regdata PERL_MAGIC_regdatum syn keyword xsConstant PERL_MAGIC_regex_global PERL_MAGIC_rhash syn keyword xsConstant PERL_MAGIC_shared PERL_MAGIC_shared_scalar syn keyword xsConstant PERL_MAGIC_sig PERL_MAGIC_sigelem PERL_MAGIC_substr syn keyword xsConstant PERL_MAGIC_sv PERL_MAGIC_symtab PERL_MAGIC_taint syn keyword xsConstant PERL_MAGIC_tied PERL_MAGIC_tiedelem syn keyword xsConstant PERL_MAGIC_tiedscalar PERL_MAGIC_utf8 PERL_MAGIC_uvar syn keyword xsConstant PERL_MAGIC_uvar_elem PERL_MAGIC_vec PERL_MAGIC_vstring syn keyword xsConstant REGEX_ASCII_MORE_RESTRICTED_CHARSET syn keyword xsConstant REGEX_ASCII_RESTRICTED_CHARSET REGEX_DEPENDS_CHARSET syn keyword xsConstant REGEX_LOCALE_CHARSET REGEX_UNICODE_CHARSET SB_ATerm syn keyword xsConstant SB_BOUND SB_CR SB_Close SB_EDGE SB_Extend SB_Format syn keyword xsConstant SB_LF SB_Lower SB_Numeric SB_OLetter SB_Other syn keyword xsConstant SB_SContinue SB_STerm SB_Sep SB_Sp SB_Upper SVfARG syn keyword xsConstant SVf_AMAGIC SVf_BREAK SVf_FAKE SVf_IOK SVf_IVisUV syn keyword xsConstant SVf_IsCOW SVf_NOK SVf_OK SVf_OOK SVf_POK SVf_PROTECT syn keyword xsConstant SVf_READONLY SVf_ROK SVf_THINKFIRST SVf_UTF8 SVp_IOK syn keyword xsConstant SVp_NOK SVp_POK SVp_SCREAM SVpad_OUR SVpad_STATE syn keyword xsConstant SVpad_TYPED SVpav_REAL SVpav_REIFY SVpbm_TAIL syn keyword xsConstant SVpbm_VALID SVpgv_GP SVphv_CLONEABLE SVphv_HASKFLAGS syn keyword xsConstant SVphv_LAZYDEL SVphv_SHAREKEYS SVprv_PCS_IMPORTED syn keyword xsConstant SVprv_WEAKREF SVs_GMG SVs_OBJECT SVs_PADMY syn keyword xsConstant SVs_PADSTALE SVs_PADTMP SVs_RMG SVs_SMG SVs_TEMP syn keyword xsConstant SVt_INVLIST SVt_IV SVt_LAST SVt_NULL SVt_NV SVt_PV syn keyword xsConstant SVt_PVAV SVt_PVBM SVt_PVCV SVt_PVFM SVt_PVGV SVt_PVHV syn keyword xsConstant SVt_PVIO SVt_PVIV SVt_PVLV SVt_PVMG SVt_PVNV syn keyword xsConstant SVt_REGEXP SVt_RV TRADITIONAL_BOUND WB_ALetter syn keyword xsConstant WB_BOUND WB_CR WB_Double_Quote WB_EDGE WB_Extend syn keyword xsConstant WB_ExtendNumLet WB_Format WB_Hebrew_Letter WB_Katakana syn keyword xsConstant WB_LF WB_MidLetter WB_MidNum WB_MidNumLet WB_Newline syn keyword xsConstant WB_Numeric WB_Other WB_Regional_Indicator syn keyword xsConstant WB_Single_Quote WB_UNKNOWN XATTRBLOCK XATTRTERM XBLOCK syn keyword xsConstant XBLOCKTERM XOPERATOR XOPe_xop_class XOPe_xop_desc syn keyword xsConstant XOPe_xop_name XOPe_xop_peep XOPe_xop_ptr XPOSTDEREF syn keyword xsConstant XREF XSTATE XTERM XTERMBLOCK XTERMORDORDOR syn keyword xsConstant _CC_ENUM_ALPHA _CC_ENUM_ALPHANUMERIC _CC_ENUM_ASCII syn keyword xsConstant _CC_ENUM_BLANK _CC_ENUM_CASED _CC_ENUM_CNTRL syn keyword xsConstant _CC_ENUM_DIGIT _CC_ENUM_GRAPH _CC_ENUM_LOWER syn keyword xsConstant _CC_ENUM_PRINT _CC_ENUM_PUNCT _CC_ENUM_SPACE syn keyword xsConstant _CC_ENUM_UPPER _CC_ENUM_VERTSPACE _CC_ENUM_WORDCHAR syn keyword xsConstant _CC_ENUM_XDIGIT padtidy_FORMAT padtidy_SUB syn keyword xsConstant padtidy_SUBCLONE syn keyword xsException XCPT_CATCH XCPT_RETHROW XCPT_TRY_END XCPT_TRY_START syn keyword xsException dXCPT syn keyword xsKeyword ALIAS: BOOT: CASE: CLEANUP: CODE: C_ARGS: DISABLE syn keyword xsKeyword ENABLE FALLBACK: IN INCLUDE: INIT: INPUT: INTERFACE: syn keyword xsKeyword INTERFACE_MACRO: IN_OUT IN_OUTLIST MODULE NO_INIT: syn keyword xsKeyword NO_OUTPUT: OUT OUTLIST OUTPUT: OVERLOAD: PACKAGE syn keyword xsKeyword POSTCALL: PPCODE: PREFIX PREINIT: PROTOTYPE: syn keyword xsKeyword PROTOTYPES: REQUIRE: SCOPE: VERSIONCHECK: length syn keyword xsFunction GetVars Gv_AMupdate PerlIO_clearerr PerlIO_close syn keyword xsFunction PerlIO_eof PerlIO_error PerlIO_fileno PerlIO_fill syn keyword xsFunction PerlIO_flush PerlIO_get_base PerlIO_get_bufsiz syn keyword xsFunction PerlIO_get_cnt PerlIO_get_ptr PerlIO_read PerlIO_seek syn keyword xsFunction PerlIO_set_cnt PerlIO_set_ptrcnt PerlIO_setlinebuf syn keyword xsFunction PerlIO_stderr PerlIO_stdin PerlIO_stdout PerlIO_tell syn keyword xsFunction PerlIO_unread PerlIO_write Perl_GetVars syn keyword xsFunction Perl_Gv_AMupdate Perl_PerlIO_clearerr syn keyword xsFunction Perl_PerlIO_close Perl_PerlIO_context_layers syn keyword xsFunction Perl_PerlIO_eof Perl_PerlIO_error Perl_PerlIO_fileno syn keyword xsFunction Perl_PerlIO_fill Perl_PerlIO_flush syn keyword xsFunction Perl_PerlIO_get_base Perl_PerlIO_get_bufsiz syn keyword xsFunction Perl_PerlIO_get_cnt Perl_PerlIO_get_ptr syn keyword xsFunction Perl_PerlIO_read Perl_PerlIO_seek Perl_PerlIO_set_cnt syn keyword xsFunction Perl_PerlIO_set_ptrcnt Perl_PerlIO_setlinebuf syn keyword xsFunction Perl_PerlIO_stderr Perl_PerlIO_stdin syn keyword xsFunction Perl_PerlIO_stdout Perl_PerlIO_tell Perl_PerlIO_unread syn keyword xsFunction Perl_PerlIO_write Perl__get_regclass_nonbitmap_data syn keyword xsFunction Perl__is_cur_LC_category_utf8 syn keyword xsFunction Perl__is_in_locale_category Perl__is_uni_FOO syn keyword xsFunction Perl__is_uni_perl_idcont Perl__is_uni_perl_idstart syn keyword xsFunction Perl__is_utf8_FOO Perl__is_utf8_idcont syn keyword xsFunction Perl__is_utf8_idstart Perl__is_utf8_mark syn keyword xsFunction Perl__is_utf8_perl_idcont Perl__is_utf8_perl_idstart syn keyword xsFunction Perl__is_utf8_xidcont Perl__is_utf8_xidstart syn keyword xsFunction Perl__new_invlist_C_array Perl__to_uni_fold_flags syn keyword xsFunction Perl__to_utf8_fold_flags Perl__to_utf8_lower_flags syn keyword xsFunction Perl__to_utf8_title_flags Perl__to_utf8_upper_flags syn keyword xsFunction Perl_alloccopstash Perl_amagic_call syn keyword xsFunction Perl_amagic_deref_call Perl_any_dup syn keyword xsFunction Perl_apply_attrs_string Perl_atfork_lock syn keyword xsFunction Perl_atfork_unlock Perl_av_arylen_p Perl_av_clear syn keyword xsFunction Perl_av_create_and_push Perl_av_create_and_unshift_one syn keyword xsFunction Perl_av_delete Perl_av_exists Perl_av_extend syn keyword xsFunction Perl_av_fetch Perl_av_fill Perl_av_iter_p Perl_av_len syn keyword xsFunction Perl_av_make Perl_av_pop Perl_av_push Perl_av_shift syn keyword xsFunction Perl_av_store Perl_av_undef Perl_av_unshift syn keyword xsFunction Perl_block_end Perl_block_gimme Perl_block_start syn keyword xsFunction Perl_blockhook_register Perl_bytes_cmp_utf8 syn keyword xsFunction Perl_bytes_from_utf8 Perl_bytes_to_utf8 Perl_call_argv syn keyword xsFunction Perl_call_atexit Perl_call_list Perl_call_method syn keyword xsFunction Perl_call_pv Perl_call_sv Perl_caller_cx Perl_calloc syn keyword xsFunction Perl_cast_i32 Perl_cast_iv Perl_cast_ulong syn keyword xsFunction Perl_cast_uv Perl_ck_entersub_args_list syn keyword xsFunction Perl_ck_entersub_args_proto syn keyword xsFunction Perl_ck_entersub_args_proto_or_list Perl_ck_warner syn keyword xsFunction Perl_ck_warner_d Perl_ckwarn Perl_ckwarn_d syn keyword xsFunction Perl_clone_params_del Perl_clone_params_new syn keyword xsFunction Perl_cop_fetch_label Perl_cop_store_label Perl_croak syn keyword xsFunction Perl_croak_no_modify Perl_croak_nocontext syn keyword xsFunction Perl_croak_sv Perl_croak_xs_usage Perl_csighandler syn keyword xsFunction Perl_custom_op_desc Perl_custom_op_name syn keyword xsFunction Perl_custom_op_register Perl_cv_clone Perl_cv_const_sv syn keyword xsFunction Perl_cv_get_call_checker Perl_cv_name syn keyword xsFunction Perl_cv_set_call_checker syn keyword xsFunction Perl_cv_set_call_checker_flags Perl_cv_undef syn keyword xsFunction Perl_cx_dump Perl_cx_dup Perl_cxinc Perl_deb syn keyword xsFunction Perl_deb_nocontext Perl_debop Perl_debprofdump syn keyword xsFunction Perl_debstack Perl_debstackptrs Perl_delimcpy syn keyword xsFunction Perl_despatch_signals Perl_die Perl_die_nocontext syn keyword xsFunction Perl_die_sv Perl_dirp_dup Perl_do_aspawn syn keyword xsFunction Perl_do_binmode Perl_do_close Perl_do_gv_dump syn keyword xsFunction Perl_do_gvgv_dump Perl_do_hv_dump Perl_do_join syn keyword xsFunction Perl_do_magic_dump Perl_do_op_dump Perl_do_open9 syn keyword xsFunction Perl_do_openn Perl_do_pmop_dump Perl_do_spawn syn keyword xsFunction Perl_do_spawn_nowait Perl_do_sprintf Perl_do_sv_dump syn keyword xsFunction Perl_doing_taint Perl_doref Perl_dounwind syn keyword xsFunction Perl_dowantarray Perl_dump_all Perl_dump_c_backtrace syn keyword xsFunction Perl_dump_eval Perl_dump_form Perl_dump_indent syn keyword xsFunction Perl_dump_mstats Perl_dump_packsubs Perl_dump_sub syn keyword xsFunction Perl_dump_vindent Perl_eval_pv Perl_eval_sv syn keyword xsFunction Perl_fbm_compile Perl_fbm_instr Perl_filter_add syn keyword xsFunction Perl_filter_del Perl_filter_read Perl_find_runcv syn keyword xsFunction Perl_find_rundefsv Perl_foldEQ Perl_foldEQ_latin1 syn keyword xsFunction Perl_foldEQ_locale Perl_foldEQ_utf8_flags Perl_form syn keyword xsFunction Perl_form_nocontext Perl_fp_dup Perl_fprintf_nocontext syn keyword xsFunction Perl_free_global_struct Perl_free_tmps Perl_get_av syn keyword xsFunction Perl_get_c_backtrace_dump Perl_get_context Perl_get_cv syn keyword xsFunction Perl_get_cvn_flags Perl_get_hv Perl_get_mstats syn keyword xsFunction Perl_get_op_descs Perl_get_op_names Perl_get_ppaddr syn keyword xsFunction Perl_get_sv Perl_get_vtbl Perl_getcwd_sv Perl_gp_dup syn keyword xsFunction Perl_gp_free Perl_gp_ref Perl_grok_bin Perl_grok_hex syn keyword xsFunction Perl_grok_infnan Perl_grok_number syn keyword xsFunction Perl_grok_number_flags Perl_grok_numeric_radix syn keyword xsFunction Perl_grok_oct Perl_gv_add_by_type Perl_gv_autoload_pv syn keyword xsFunction Perl_gv_autoload_pvn Perl_gv_autoload_sv Perl_gv_check syn keyword xsFunction Perl_gv_const_sv Perl_gv_dump Perl_gv_efullname syn keyword xsFunction Perl_gv_efullname4 Perl_gv_fetchfile syn keyword xsFunction Perl_gv_fetchfile_flags Perl_gv_fetchmeth_pv syn keyword xsFunction Perl_gv_fetchmeth_pv_autoload Perl_gv_fetchmeth_pvn syn keyword xsFunction Perl_gv_fetchmeth_pvn_autoload Perl_gv_fetchmeth_sv syn keyword xsFunction Perl_gv_fetchmeth_sv_autoload syn keyword xsFunction Perl_gv_fetchmethod_autoload syn keyword xsFunction Perl_gv_fetchmethod_pv_flags syn keyword xsFunction Perl_gv_fetchmethod_pvn_flags syn keyword xsFunction Perl_gv_fetchmethod_sv_flags Perl_gv_fetchpv syn keyword xsFunction Perl_gv_fetchpvn_flags Perl_gv_fetchsv syn keyword xsFunction Perl_gv_fullname Perl_gv_fullname4 Perl_gv_handler syn keyword xsFunction Perl_gv_init_pv Perl_gv_init_pvn Perl_gv_init_sv syn keyword xsFunction Perl_gv_name_set Perl_gv_stashpv Perl_gv_stashpvn syn keyword xsFunction Perl_gv_stashsv Perl_he_dup Perl_hek_dup syn keyword xsFunction Perl_hv_assert Perl_hv_clear syn keyword xsFunction Perl_hv_clear_placeholders Perl_hv_common syn keyword xsFunction Perl_hv_common_key_len Perl_hv_copy_hints_hv syn keyword xsFunction Perl_hv_delayfree_ent Perl_hv_eiter_p syn keyword xsFunction Perl_hv_eiter_set Perl_hv_fill Perl_hv_free_ent syn keyword xsFunction Perl_hv_iterinit Perl_hv_iterkey Perl_hv_iterkeysv syn keyword xsFunction Perl_hv_iternext_flags Perl_hv_iternextsv syn keyword xsFunction Perl_hv_iterval Perl_hv_ksplit Perl_hv_name_set syn keyword xsFunction Perl_hv_placeholders_get Perl_hv_placeholders_set syn keyword xsFunction Perl_hv_rand_set Perl_hv_riter_p Perl_hv_riter_set syn keyword xsFunction Perl_hv_scalar Perl_init_global_struct syn keyword xsFunction Perl_init_i18nl10n Perl_init_i18nl14n Perl_init_stacks syn keyword xsFunction Perl_init_tm Perl_instr Perl_intro_my syn keyword xsFunction Perl_is_invariant_string Perl_is_lvalue_sub syn keyword xsFunction Perl_is_utf8_string Perl_is_utf8_string_loclen syn keyword xsFunction Perl_isinfnan Perl_leave_scope Perl_lex_bufutf8 syn keyword xsFunction Perl_lex_discard_to Perl_lex_grow_linestr syn keyword xsFunction Perl_lex_next_chunk Perl_lex_peek_unichar syn keyword xsFunction Perl_lex_read_space Perl_lex_read_to syn keyword xsFunction Perl_lex_read_unichar Perl_lex_start Perl_lex_stuff_pv syn keyword xsFunction Perl_lex_stuff_pvn Perl_lex_stuff_sv Perl_lex_unstuff syn keyword xsFunction Perl_load_module Perl_load_module_nocontext syn keyword xsFunction Perl_looks_like_number Perl_magic_dump Perl_malloc syn keyword xsFunction Perl_markstack_grow Perl_mess Perl_mess_nocontext syn keyword xsFunction Perl_mess_sv Perl_mfree Perl_mg_clear Perl_mg_copy syn keyword xsFunction Perl_mg_dup Perl_mg_find Perl_mg_findext Perl_mg_free syn keyword xsFunction Perl_mg_free_type Perl_mg_get Perl_mg_magical syn keyword xsFunction Perl_mg_set Perl_mg_size Perl_mini_mktime syn keyword xsFunction Perl_moreswitches Perl_mro_get_from_name syn keyword xsFunction Perl_mro_get_linear_isa Perl_mro_get_private_data syn keyword xsFunction Perl_mro_method_changed_in Perl_mro_register syn keyword xsFunction Perl_mro_set_mro Perl_mro_set_private_data syn keyword xsFunction Perl_my_atof Perl_my_atof2 Perl_my_bcopy Perl_my_bzero syn keyword xsFunction Perl_my_chsize Perl_my_cxt_index Perl_my_cxt_init syn keyword xsFunction Perl_my_dirfd Perl_my_exit Perl_my_failure_exit syn keyword xsFunction Perl_my_fflush_all Perl_my_fork Perl_my_memcmp syn keyword xsFunction Perl_my_memset Perl_my_pclose Perl_my_popen syn keyword xsFunction Perl_my_popen_list Perl_my_setenv Perl_my_setlocale syn keyword xsFunction Perl_my_snprintf Perl_my_socketpair Perl_my_sprintf syn keyword xsFunction Perl_my_strerror Perl_my_strftime Perl_my_strlcat syn keyword xsFunction Perl_my_strlcpy Perl_my_vsnprintf Perl_newANONATTRSUB syn keyword xsFunction Perl_newANONHASH Perl_newANONLIST Perl_newANONSUB syn keyword xsFunction Perl_newASSIGNOP Perl_newAVREF Perl_newBINOP syn keyword xsFunction Perl_newCONDOP Perl_newCONSTSUB Perl_newCONSTSUB_flags syn keyword xsFunction Perl_newCVREF Perl_newDEFSVOP Perl_newFORM syn keyword xsFunction Perl_newFOROP Perl_newGIVENOP Perl_newGVOP syn keyword xsFunction Perl_newGVREF Perl_newGVgen_flags Perl_newHVREF syn keyword xsFunction Perl_newHVhv Perl_newLISTOP Perl_newLOGOP syn keyword xsFunction Perl_newLOOPEX Perl_newLOOPOP Perl_newMETHOP syn keyword xsFunction Perl_newMETHOP_named Perl_newMYSUB Perl_newNULLLIST syn keyword xsFunction Perl_newOP Perl_newPADNAMELIST Perl_newPADNAMEouter syn keyword xsFunction Perl_newPADNAMEpvn Perl_newPADOP Perl_newPMOP syn keyword xsFunction Perl_newPROG Perl_newPVOP Perl_newRANGE Perl_newRV syn keyword xsFunction Perl_newRV_noinc Perl_newSLICEOP Perl_newSTATEOP syn keyword xsFunction Perl_newSV Perl_newSVOP Perl_newSVREF Perl_newSV_type syn keyword xsFunction Perl_newSVhek Perl_newSViv Perl_newSVnv Perl_newSVpv syn keyword xsFunction Perl_newSVpv_share Perl_newSVpvf syn keyword xsFunction Perl_newSVpvf_nocontext Perl_newSVpvn syn keyword xsFunction Perl_newSVpvn_flags Perl_newSVpvn_share Perl_newSVrv syn keyword xsFunction Perl_newSVsv Perl_newSVuv Perl_newUNOP syn keyword xsFunction Perl_newUNOP_AUX Perl_newWHENOP Perl_newWHILEOP syn keyword xsFunction Perl_newXS Perl_newXS_flags Perl_new_collate syn keyword xsFunction Perl_new_ctype Perl_new_numeric Perl_new_stackinfo syn keyword xsFunction Perl_new_version Perl_ninstr Perl_nothreadhook syn keyword xsFunction Perl_op_append_elem Perl_op_append_list syn keyword xsFunction Perl_op_contextualize Perl_op_convert_list syn keyword xsFunction Perl_op_dump Perl_op_free Perl_op_linklist syn keyword xsFunction Perl_op_null Perl_op_parent Perl_op_prepend_elem syn keyword xsFunction Perl_op_refcnt_lock Perl_op_refcnt_unlock syn keyword xsFunction Perl_op_scope Perl_op_sibling_splice Perl_pack_cat syn keyword xsFunction Perl_packlist Perl_pad_add_anon Perl_pad_add_name_pv syn keyword xsFunction Perl_pad_add_name_pvn Perl_pad_add_name_sv syn keyword xsFunction Perl_pad_alloc Perl_pad_compname_type syn keyword xsFunction Perl_pad_findmy_pv Perl_pad_findmy_pvn syn keyword xsFunction Perl_pad_findmy_sv Perl_pad_new Perl_pad_setsv syn keyword xsFunction Perl_pad_sv Perl_pad_tidy Perl_padnamelist_fetch syn keyword xsFunction Perl_padnamelist_store Perl_parse_arithexpr syn keyword xsFunction Perl_parse_barestmt Perl_parse_block syn keyword xsFunction Perl_parse_fullexpr Perl_parse_fullstmt syn keyword xsFunction Perl_parse_label Perl_parse_listexpr syn keyword xsFunction Perl_parse_stmtseq Perl_parse_termexpr Perl_parser_dup syn keyword xsFunction Perl_pmop_dump Perl_pop_scope Perl_pregcomp syn keyword xsFunction Perl_pregexec Perl_pregfree Perl_pregfree2 syn keyword xsFunction Perl_prescan_version Perl_printf_nocontext syn keyword xsFunction Perl_ptr_table_fetch Perl_ptr_table_free syn keyword xsFunction Perl_ptr_table_new Perl_ptr_table_split syn keyword xsFunction Perl_ptr_table_store Perl_push_scope Perl_pv_display syn keyword xsFunction Perl_pv_escape Perl_pv_pretty Perl_pv_uni_display syn keyword xsFunction Perl_quadmath_format_needed syn keyword xsFunction Perl_quadmath_format_single Perl_re_compile syn keyword xsFunction Perl_re_dup_guts Perl_re_intuit_start syn keyword xsFunction Perl_re_intuit_string Perl_realloc Perl_reentrant_free syn keyword xsFunction Perl_reentrant_init Perl_reentrant_retry syn keyword xsFunction Perl_reentrant_size Perl_reg_named_buff_all syn keyword xsFunction Perl_reg_named_buff_exists Perl_reg_named_buff_fetch syn keyword xsFunction Perl_reg_named_buff_firstkey syn keyword xsFunction Perl_reg_named_buff_nextkey Perl_reg_named_buff_scalar syn keyword xsFunction Perl_regclass_swash Perl_regdump Perl_regdupe_internal syn keyword xsFunction Perl_regexec_flags Perl_regfree_internal syn keyword xsFunction Perl_reginitcolors Perl_regnext Perl_repeatcpy syn keyword xsFunction Perl_require_pv Perl_rninstr Perl_rsignal syn keyword xsFunction Perl_rsignal_state Perl_runops_debug syn keyword xsFunction Perl_runops_standard Perl_rv2cv_op_cv Perl_rvpv_dup syn keyword xsFunction Perl_safesyscalloc Perl_safesysfree Perl_safesysmalloc syn keyword xsFunction Perl_safesysrealloc Perl_save_I16 Perl_save_I32 syn keyword xsFunction Perl_save_I8 Perl_save_adelete Perl_save_aelem_flags syn keyword xsFunction Perl_save_alloc Perl_save_aptr Perl_save_ary syn keyword xsFunction Perl_save_bool Perl_save_clearsv Perl_save_delete syn keyword xsFunction Perl_save_destructor Perl_save_destructor_x syn keyword xsFunction Perl_save_generic_pvref Perl_save_generic_svref syn keyword xsFunction Perl_save_gp Perl_save_hash Perl_save_hdelete syn keyword xsFunction Perl_save_helem_flags Perl_save_hints Perl_save_hptr syn keyword xsFunction Perl_save_int Perl_save_item Perl_save_iv syn keyword xsFunction Perl_save_list Perl_save_long Perl_save_nogv syn keyword xsFunction Perl_save_padsv_and_mortalize Perl_save_pptr syn keyword xsFunction Perl_save_pushi32ptr Perl_save_pushptr syn keyword xsFunction Perl_save_pushptrptr Perl_save_re_context syn keyword xsFunction Perl_save_scalar Perl_save_set_svflags syn keyword xsFunction Perl_save_shared_pvref Perl_save_sptr Perl_save_svref syn keyword xsFunction Perl_save_vptr Perl_savepv Perl_savepvn syn keyword xsFunction Perl_savesharedpv Perl_savesharedpvn syn keyword xsFunction Perl_savesharedsvpv Perl_savestack_grow syn keyword xsFunction Perl_savestack_grow_cnt Perl_savesvpv Perl_scan_bin syn keyword xsFunction Perl_scan_hex Perl_scan_num Perl_scan_oct syn keyword xsFunction Perl_scan_version Perl_scan_vstring Perl_seed syn keyword xsFunction Perl_set_context Perl_set_numeric_local syn keyword xsFunction Perl_set_numeric_radix Perl_set_numeric_standard syn keyword xsFunction Perl_setdefout Perl_share_hek Perl_si_dup Perl_sortsv syn keyword xsFunction Perl_sortsv_flags Perl_ss_dup Perl_stack_grow syn keyword xsFunction Perl_start_subparse Perl_str_to_version syn keyword xsFunction Perl_sv_2bool_flags Perl_sv_2cv Perl_sv_2io syn keyword xsFunction Perl_sv_2iv_flags Perl_sv_2mortal Perl_sv_2nv_flags syn keyword xsFunction Perl_sv_2pv_flags Perl_sv_2pvbyte Perl_sv_2pvutf8 syn keyword xsFunction Perl_sv_2uv_flags Perl_sv_backoff Perl_sv_bless syn keyword xsFunction Perl_sv_cat_decode Perl_sv_catpv Perl_sv_catpv_flags syn keyword xsFunction Perl_sv_catpv_mg Perl_sv_catpvf Perl_sv_catpvf_mg syn keyword xsFunction Perl_sv_catpvf_mg_nocontext Perl_sv_catpvf_nocontext syn keyword xsFunction Perl_sv_catpvn_flags Perl_sv_catsv_flags Perl_sv_chop syn keyword xsFunction Perl_sv_clear Perl_sv_cmp Perl_sv_cmp_flags syn keyword xsFunction Perl_sv_cmp_locale Perl_sv_cmp_locale_flags syn keyword xsFunction Perl_sv_collxfrm_flags Perl_sv_copypv_flags syn keyword xsFunction Perl_sv_dec Perl_sv_dec_nomg Perl_sv_derived_from syn keyword xsFunction Perl_sv_derived_from_pv Perl_sv_derived_from_pvn syn keyword xsFunction Perl_sv_derived_from_sv Perl_sv_destroyable syn keyword xsFunction Perl_sv_does Perl_sv_does_pv Perl_sv_does_pvn syn keyword xsFunction Perl_sv_does_sv Perl_sv_dump Perl_sv_dup syn keyword xsFunction Perl_sv_dup_inc Perl_sv_eq_flags syn keyword xsFunction Perl_sv_force_normal_flags Perl_sv_free syn keyword xsFunction Perl_sv_get_backrefs Perl_sv_gets Perl_sv_grow syn keyword xsFunction Perl_sv_inc Perl_sv_inc_nomg Perl_sv_insert_flags syn keyword xsFunction Perl_sv_isa Perl_sv_isobject Perl_sv_iv Perl_sv_len syn keyword xsFunction Perl_sv_len_utf8 Perl_sv_magic Perl_sv_magicext syn keyword xsFunction Perl_sv_newmortal Perl_sv_newref Perl_sv_nosharing syn keyword xsFunction Perl_sv_nounlocking Perl_sv_nv Perl_sv_peek syn keyword xsFunction Perl_sv_pos_b2u Perl_sv_pos_b2u_flags Perl_sv_pos_u2b syn keyword xsFunction Perl_sv_pos_u2b_flags Perl_sv_pvbyten syn keyword xsFunction Perl_sv_pvbyten_force Perl_sv_pvn syn keyword xsFunction Perl_sv_pvn_force_flags Perl_sv_pvn_nomg syn keyword xsFunction Perl_sv_pvutf8n Perl_sv_pvutf8n_force syn keyword xsFunction Perl_sv_recode_to_utf8 Perl_sv_reftype Perl_sv_replace syn keyword xsFunction Perl_sv_report_used Perl_sv_reset Perl_sv_rvweaken syn keyword xsFunction Perl_sv_setiv Perl_sv_setiv_mg Perl_sv_setnv syn keyword xsFunction Perl_sv_setnv_mg Perl_sv_setpv Perl_sv_setpv_mg syn keyword xsFunction Perl_sv_setpvf Perl_sv_setpvf_mg syn keyword xsFunction Perl_sv_setpvf_mg_nocontext Perl_sv_setpvf_nocontext syn keyword xsFunction Perl_sv_setpviv Perl_sv_setpviv_mg Perl_sv_setpvn syn keyword xsFunction Perl_sv_setpvn_mg Perl_sv_setref_iv Perl_sv_setref_nv syn keyword xsFunction Perl_sv_setref_pv Perl_sv_setref_pvn Perl_sv_setref_uv syn keyword xsFunction Perl_sv_setsv_flags Perl_sv_setsv_mg Perl_sv_setuv syn keyword xsFunction Perl_sv_setuv_mg Perl_sv_tainted Perl_sv_true syn keyword xsFunction Perl_sv_uni_display Perl_sv_unmagic Perl_sv_unmagicext syn keyword xsFunction Perl_sv_unref_flags Perl_sv_untaint Perl_sv_upgrade syn keyword xsFunction Perl_sv_usepvn_flags Perl_sv_utf8_decode syn keyword xsFunction Perl_sv_utf8_downgrade Perl_sv_utf8_encode syn keyword xsFunction Perl_sv_utf8_upgrade_flags_grow Perl_sv_uv syn keyword xsFunction Perl_sv_vcatpvf Perl_sv_vcatpvf_mg Perl_sv_vcatpvfn syn keyword xsFunction Perl_sv_vcatpvfn_flags Perl_sv_vsetpvf syn keyword xsFunction Perl_sv_vsetpvf_mg Perl_sv_vsetpvfn Perl_swash_fetch syn keyword xsFunction Perl_swash_init Perl_sync_locale Perl_sys_init syn keyword xsFunction Perl_sys_init3 Perl_sys_intern_clear syn keyword xsFunction Perl_sys_intern_dup Perl_sys_intern_init Perl_sys_term syn keyword xsFunction Perl_taint_env Perl_taint_proper Perl_to_uni_lower syn keyword xsFunction Perl_to_uni_title Perl_to_uni_upper Perl_to_utf8_case syn keyword xsFunction Perl_unlnk Perl_unpack_str Perl_unpackstring syn keyword xsFunction Perl_unsharepvn Perl_upg_version Perl_utf16_to_utf8 syn keyword xsFunction Perl_utf16_to_utf8_reversed Perl_utf8_distance syn keyword xsFunction Perl_utf8_hop Perl_utf8_length Perl_utf8_to_bytes syn keyword xsFunction Perl_utf8n_to_uvchr Perl_utf8n_to_uvuni syn keyword xsFunction Perl_uvoffuni_to_utf8_flags Perl_uvuni_to_utf8 syn keyword xsFunction Perl_uvuni_to_utf8_flags Perl_valid_utf8_to_uvchr syn keyword xsFunction Perl_vcmp Perl_vcroak Perl_vdeb Perl_vform syn keyword xsFunction Perl_vload_module Perl_vmess Perl_vnewSVpvf syn keyword xsFunction Perl_vnormal Perl_vnumify Perl_vstringify Perl_vverify syn keyword xsFunction Perl_vwarn Perl_vwarner Perl_warn Perl_warn_nocontext syn keyword xsFunction Perl_warn_sv Perl_warner Perl_warner_nocontext syn keyword xsFunction Perl_whichsig_pv Perl_whichsig_pvn Perl_whichsig_sv syn keyword xsFunction Perl_wrap_op_checker _get_regclass_nonbitmap_data syn keyword xsFunction _is_cur_LC_category_utf8 _is_in_locale_category syn keyword xsFunction _is_uni_FOO _is_uni_perl_idcont _is_uni_perl_idstart syn keyword xsFunction _is_utf8_FOO _is_utf8_char_slow _is_utf8_idcont syn keyword xsFunction _is_utf8_idstart _is_utf8_mark _is_utf8_perl_idcont syn keyword xsFunction _is_utf8_perl_idstart _is_utf8_xidcont syn keyword xsFunction _is_utf8_xidstart _new_invlist_C_array syn keyword xsFunction _to_uni_fold_flags _to_utf8_fold_flags syn keyword xsFunction _to_utf8_lower_flags _to_utf8_title_flags syn keyword xsFunction _to_utf8_upper_flags alloccopstash amagic_call syn keyword xsFunction amagic_deref_call any_dup append_utf8_from_native_byte syn keyword xsFunction apply_attrs_string atfork_lock atfork_unlock av_clear syn keyword xsFunction av_delete av_exists av_extend av_fetch av_fill av_len syn keyword xsFunction av_make av_pop av_push av_shift av_store av_top_index syn keyword xsFunction av_undef av_unshift block_end block_gimme block_start syn keyword xsFunction bytes_cmp_utf8 bytes_from_utf8 bytes_to_utf8 call_argv syn keyword xsFunction call_atexit call_list call_method call_pv call_sv syn keyword xsFunction caller_cx cast_i32 cast_iv cast_ulong cast_uv syn keyword xsFunction ck_entersub_args_list ck_entersub_args_proto syn keyword xsFunction ck_entersub_args_proto_or_list ck_warner ck_warner_d syn keyword xsFunction croak croak_memory_wrap croak_no_modify syn keyword xsFunction croak_nocontext croak_sv croak_xs_usage csighandler syn keyword xsFunction custom_op_desc custom_op_name cv_clone cv_const_sv syn keyword xsFunction cv_get_call_checker cv_name cv_set_call_checker syn keyword xsFunction cv_set_call_checker_flags cv_undef cx_dump cx_dup syn keyword xsFunction cxinc deb deb_nocontext debop debprofdump debstack syn keyword xsFunction debstackptrs delimcpy despatch_signals die syn keyword xsFunction die_nocontext die_sv dirp_dup do_aspawn do_binmode syn keyword xsFunction do_close do_gv_dump do_gvgv_dump do_hv_dump do_join syn keyword xsFunction do_magic_dump do_op_dump do_open9 do_openn syn keyword xsFunction do_pmop_dump do_spawn do_spawn_nowait do_sprintf syn keyword xsFunction do_sv_dump doing_taint doref dounwind dowantarray syn keyword xsFunction dump_all dump_c_backtrace dump_eval dump_form syn keyword xsFunction dump_indent dump_mstats dump_packsubs dump_sub syn keyword xsFunction dump_vindent eval_pv eval_sv fbm_compile fbm_instr syn keyword xsFunction filter_add filter_del filter_read find_runcv syn keyword xsFunction find_rundefsv foldEQ foldEQ_latin1 foldEQ_locale syn keyword xsFunction foldEQ_utf8_flags form form_nocontext fp_dup syn keyword xsFunction fprintf_nocontext free_global_struct free_tmps get_av syn keyword xsFunction get_c_backtrace_dump get_context get_cv get_cvn_flags syn keyword xsFunction get_hv get_mstats get_op_descs get_op_names get_ppaddr syn keyword xsFunction get_sv get_vtbl getcwd_sv gp_dup gp_free gp_ref syn keyword xsFunction grok_bin grok_hex grok_infnan grok_number syn keyword xsFunction grok_number_flags grok_numeric_radix grok_oct syn keyword xsFunction gv_add_by_type gv_autoload_pv gv_autoload_pvn syn keyword xsFunction gv_autoload_sv gv_check gv_const_sv gv_dump syn keyword xsFunction gv_efullname gv_efullname4 gv_fetchfile syn keyword xsFunction gv_fetchfile_flags gv_fetchmeth_pv syn keyword xsFunction gv_fetchmeth_pv_autoload gv_fetchmeth_pvn syn keyword xsFunction gv_fetchmeth_pvn_autoload gv_fetchmeth_sv syn keyword xsFunction gv_fetchmeth_sv_autoload gv_fetchmethod_autoload syn keyword xsFunction gv_fetchmethod_pv_flags gv_fetchmethod_pvn_flags syn keyword xsFunction gv_fetchmethod_sv_flags gv_fetchpv gv_fetchpvn_flags syn keyword xsFunction gv_fetchsv gv_fullname gv_fullname4 gv_handler syn keyword xsFunction gv_init_pv gv_init_pvn gv_init_sv gv_name_set syn keyword xsFunction gv_stashpv gv_stashpvn gv_stashsv he_dup hek_dup syn keyword xsFunction hv_clear hv_clear_placeholders hv_common syn keyword xsFunction hv_common_key_len hv_copy_hints_hv hv_delayfree_ent syn keyword xsFunction hv_free_ent hv_iterinit hv_iterkey hv_iterkeysv syn keyword xsFunction hv_iternext_flags hv_iternextsv hv_iterval hv_ksplit syn keyword xsFunction hv_name_set hv_rand_set hv_scalar init_global_struct syn keyword xsFunction init_i18nl10n init_i18nl14n init_stacks init_tm instr syn keyword xsFunction intro_my is_invariant_string is_lvalue_sub syn keyword xsFunction is_safe_syscall is_utf8_string is_utf8_string_loclen syn keyword xsFunction isinfnan leave_scope lex_bufutf8 lex_discard_to syn keyword xsFunction lex_grow_linestr lex_next_chunk lex_peek_unichar syn keyword xsFunction lex_read_space lex_read_to lex_read_unichar lex_start syn keyword xsFunction lex_stuff_pv lex_stuff_pvn lex_stuff_sv lex_unstuff syn keyword xsFunction load_module load_module_nocontext looks_like_number syn keyword xsFunction magic_dump markstack_grow mess mess_nocontext mess_sv syn keyword xsFunction mg_clear mg_copy mg_dup mg_find mg_findext mg_free syn keyword xsFunction mg_free_type mg_get mg_magical mg_set mg_size syn keyword xsFunction mini_mktime moreswitches mro_get_linear_isa syn keyword xsFunction mro_method_changed_in my_atof my_atof2 my_bcopy syn keyword xsFunction my_bzero my_chsize my_dirfd my_exit my_failure_exit syn keyword xsFunction my_fflush_all my_fork my_memcmp my_memset my_pclose syn keyword xsFunction my_popen my_popen_list my_setenv my_setlocale syn keyword xsFunction my_socketpair my_strerror my_strftime newANONATTRSUB syn keyword xsFunction newANONHASH newANONLIST newANONSUB newASSIGNOP syn keyword xsFunction newAVREF newBINOP newCONDOP newCONSTSUB syn keyword xsFunction newCONSTSUB_flags newCVREF newDEFSVOP newFORM newFOROP syn keyword xsFunction newGIVENOP newGVOP newGVREF newGVgen_flags newHVREF syn keyword xsFunction newHVhv newLISTOP newLOGOP newLOOPEX newLOOPOP syn keyword xsFunction newMETHOP newMETHOP_named newMYSUB newNULLLIST newOP syn keyword xsFunction newPADNAMELIST newPADNAMEouter newPADNAMEpvn newPADOP syn keyword xsFunction newPMOP newPROG newPVOP newRANGE newRV newRV_noinc syn keyword xsFunction newSLICEOP newSTATEOP newSV newSVOP newSVREF syn keyword xsFunction newSV_type newSVhek newSViv newSVnv newSVpv syn keyword xsFunction newSVpv_share newSVpvf newSVpvf_nocontext newSVpvn syn keyword xsFunction newSVpvn_flags newSVpvn_share newSVrv newSVsv newSVuv syn keyword xsFunction newUNOP newUNOP_AUX newWHENOP newWHILEOP newXS syn keyword xsFunction newXS_flags new_collate new_ctype new_numeric syn keyword xsFunction new_stackinfo new_version ninstr nothreadhook syn keyword xsFunction op_append_elem op_append_list op_contextualize syn keyword xsFunction op_convert_list op_dump op_free op_linklist op_null syn keyword xsFunction op_parent op_prepend_elem op_refcnt_lock syn keyword xsFunction op_refcnt_unlock op_scope op_sibling_splice pack_cat syn keyword xsFunction packlist pad_add_anon pad_add_name_pv pad_add_name_pvn syn keyword xsFunction pad_add_name_sv pad_alloc pad_compname_type syn keyword xsFunction pad_findmy_pv pad_findmy_pvn pad_findmy_sv pad_new syn keyword xsFunction pad_setsv pad_sv pad_tidy padnamelist_fetch syn keyword xsFunction padnamelist_store parse_arithexpr parse_barestmt syn keyword xsFunction parse_block parse_fullexpr parse_fullstmt parse_label syn keyword xsFunction parse_listexpr parse_stmtseq parse_termexpr parser_dup syn keyword xsFunction pmop_dump pop_scope pregcomp pregexec pregfree syn keyword xsFunction pregfree2 prescan_version printf_nocontext syn keyword xsFunction ptr_table_fetch ptr_table_free ptr_table_new syn keyword xsFunction ptr_table_split ptr_table_store push_scope pv_display syn keyword xsFunction pv_escape pv_pretty pv_uni_display syn keyword xsFunction quadmath_format_needed quadmath_format_single syn keyword xsFunction re_compile re_dup_guts re_intuit_start syn keyword xsFunction re_intuit_string reentrant_free reentrant_init syn keyword xsFunction reentrant_retry reentrant_size reg_named_buff_all syn keyword xsFunction reg_named_buff_exists reg_named_buff_fetch syn keyword xsFunction reg_named_buff_firstkey reg_named_buff_nextkey syn keyword xsFunction reg_named_buff_scalar regclass_swash regdump syn keyword xsFunction regdupe_internal regexec_flags regfree_internal syn keyword xsFunction reginitcolors regnext repeatcpy require_pv rninstr syn keyword xsFunction rsignal rsignal_state runops_debug runops_standard syn keyword xsFunction rv2cv_op_cv rvpv_dup safesyscalloc safesysfree syn keyword xsFunction safesysmalloc safesysrealloc save_I16 save_I32 save_I8 syn keyword xsFunction save_adelete save_aelem_flags save_alloc save_aptr syn keyword xsFunction save_ary save_bool save_clearsv save_delete syn keyword xsFunction save_destructor save_destructor_x save_generic_pvref syn keyword xsFunction save_generic_svref save_gp save_hash save_hdelete syn keyword xsFunction save_helem_flags save_hints save_hptr save_int syn keyword xsFunction save_item save_iv save_list save_long save_nogv syn keyword xsFunction save_padsv_and_mortalize save_pptr save_pushi32ptr syn keyword xsFunction save_pushptr save_pushptrptr save_re_context syn keyword xsFunction save_scalar save_set_svflags save_shared_pvref syn keyword xsFunction save_sptr save_svref save_vptr savepv savepvn syn keyword xsFunction savesharedpv savesharedpvn savesharedsvpv syn keyword xsFunction savestack_grow savestack_grow_cnt savesvpv scan_bin syn keyword xsFunction scan_hex scan_num scan_oct scan_version scan_vstring syn keyword xsFunction seed set_context set_numeric_local set_numeric_radix syn keyword xsFunction set_numeric_standard setdefout share_hek si_dup sortsv syn keyword xsFunction sortsv_flags ss_dup stack_grow start_subparse syn keyword xsFunction str_to_version sv_2bool_flags sv_2cv sv_2io syn keyword xsFunction sv_2iv_flags sv_2mortal sv_2nv_flags sv_2pv_flags syn keyword xsFunction sv_2pvbyte sv_2pvutf8 sv_2uv_flags sv_backoff sv_bless syn keyword xsFunction sv_cat_decode sv_catpv sv_catpv_flags sv_catpv_mg syn keyword xsFunction sv_catpvf sv_catpvf_mg sv_catpvf_mg_nocontext syn keyword xsFunction sv_catpvf_nocontext sv_catpvn_flags sv_catsv_flags syn keyword xsFunction sv_chop sv_clear sv_cmp_flags sv_cmp_locale_flags syn keyword xsFunction sv_collxfrm_flags sv_copypv_flags sv_dec sv_dec_nomg syn keyword xsFunction sv_derived_from sv_derived_from_pv sv_derived_from_pvn syn keyword xsFunction sv_derived_from_sv sv_destroyable sv_does sv_does_pv syn keyword xsFunction sv_does_pvn sv_does_sv sv_dump sv_dup sv_dup_inc syn keyword xsFunction sv_eq_flags sv_force_normal_flags sv_free syn keyword xsFunction sv_get_backrefs sv_gets sv_grow sv_inc sv_inc_nomg syn keyword xsFunction sv_insert_flags sv_isa sv_isobject sv_iv sv_len syn keyword xsFunction sv_len_utf8 sv_magic sv_magicext sv_newmortal syn keyword xsFunction sv_newref sv_nosharing sv_nounlocking sv_nv sv_peek syn keyword xsFunction sv_pos_b2u sv_pos_b2u_flags sv_pos_u2b syn keyword xsFunction sv_pos_u2b_flags sv_pvbyten sv_pvbyten_force sv_pvn syn keyword xsFunction sv_pvn_force_flags sv_pvn_nomg sv_pvutf8n syn keyword xsFunction sv_pvutf8n_force sv_recode_to_utf8 sv_reftype syn keyword xsFunction sv_replace sv_report_used sv_reset sv_rvweaken syn keyword xsFunction sv_setiv sv_setiv_mg sv_setnv sv_setnv_mg sv_setpv syn keyword xsFunction sv_setpv_mg sv_setpvf sv_setpvf_mg syn keyword xsFunction sv_setpvf_mg_nocontext sv_setpvf_nocontext sv_setpviv syn keyword xsFunction sv_setpviv_mg sv_setpvn sv_setpvn_mg sv_setref_iv syn keyword xsFunction sv_setref_nv sv_setref_pv sv_setref_pvn sv_setref_uv syn keyword xsFunction sv_setsv_flags sv_setsv_mg sv_setuv sv_setuv_mg syn keyword xsFunction sv_tainted sv_true sv_uni_display sv_unmagic syn keyword xsFunction sv_unmagicext sv_unref_flags sv_untaint sv_upgrade syn keyword xsFunction sv_usepvn_flags sv_utf8_decode sv_utf8_downgrade syn keyword xsFunction sv_utf8_encode sv_utf8_upgrade_flags_grow sv_uv syn keyword xsFunction sv_vcatpvf sv_vcatpvf_mg sv_vcatpvfn sv_vcatpvfn_flags syn keyword xsFunction sv_vsetpvf sv_vsetpvf_mg sv_vsetpvfn swash_fetch syn keyword xsFunction swash_init sync_locale sys_intern_clear sys_intern_dup syn keyword xsFunction sys_intern_init taint_env taint_proper to_uni_lower syn keyword xsFunction to_uni_title to_uni_upper to_utf8_case unlnk syn keyword xsFunction unpack_str unpackstring unsharepvn upg_version syn keyword xsFunction utf16_to_utf8 utf16_to_utf8_reversed utf8_distance syn keyword xsFunction utf8_hop utf8_length utf8_to_bytes utf8n_to_uvchr syn keyword xsFunction utf8n_to_uvuni uvoffuni_to_utf8_flags uvuni_to_utf8 syn keyword xsFunction uvuni_to_utf8_flags valid_utf8_to_uvchr vcmp vcroak syn keyword xsFunction vdeb vform vload_module vmess vnewSVpvf vnormal syn keyword xsFunction vnumify vstringify vverify vwarn vwarner warn syn keyword xsFunction warn_nocontext warn_sv warner warner_nocontext syn keyword xsFunction whichsig_pv whichsig_pvn whichsig_sv wrap_op_checker syn keyword xsVariable MARK MY_CXT ORIGMARK PL_I PL_No PL_Vars PL_VarsPtr syn keyword xsVariable PL_Yes PL_a2e PL_bincompat_options PL_bitcount syn keyword xsVariable PL_block_type PL_bufend PL_bufptr PL_charclass syn keyword xsVariable PL_check PL_copline PL_core_reg_engine PL_cshname syn keyword xsVariable PL_e2a PL_e2utf PL_error_count PL_expect PL_fold syn keyword xsVariable PL_fold_latin1 PL_fold_locale PL_force_link_funcs syn keyword xsVariable PL_freq PL_global_struct_size PL_hexdigit PL_in_my syn keyword xsVariable PL_in_my_stash PL_interp_size PL_interp_size_5_18_0 syn keyword xsVariable PL_last_lop PL_last_lop_op PL_last_uni PL_latin1_lc syn keyword xsVariable PL_lex_allbrackets PL_lex_brackets PL_lex_brackstack syn keyword xsVariable PL_lex_casemods PL_lex_casestack PL_lex_defer syn keyword xsVariable PL_lex_dojoin PL_lex_fakeeof PL_lex_formbrack syn keyword xsVariable PL_lex_inpat PL_lex_inwhat PL_lex_op PL_lex_repl syn keyword xsVariable PL_lex_starts PL_lex_state PL_lex_stuff PL_linestart syn keyword xsVariable PL_linestr PL_magic_data PL_magic_vtable_names syn keyword xsVariable PL_memory_wrap PL_mod_latin1_uc PL_multi_close syn keyword xsVariable PL_multi_end PL_multi_open PL_multi_start PL_nexttoke syn keyword xsVariable PL_nexttype PL_nextval PL_no_aelem PL_no_dir_func syn keyword xsVariable PL_no_func PL_no_helem_sv PL_no_localize_ref PL_no_mem syn keyword xsVariable PL_no_modify PL_no_myglob PL_no_security syn keyword xsVariable PL_no_sock_func PL_no_symref PL_no_symref_sv syn keyword xsVariable PL_no_usym PL_no_wrongref PL_oldbufptr PL_oldoldbufptr syn keyword xsVariable PL_op_desc PL_op_name PL_op_private_bitdef_ix syn keyword xsVariable PL_op_private_bitdefs PL_op_private_bitfields syn keyword xsVariable PL_op_private_labels PL_op_private_valid PL_opargs syn keyword xsVariable PL_phase_names PL_ppaddr PL_preambled syn keyword xsVariable PL_reg_extflags_name PL_reg_intflags_name PL_reg_name syn keyword xsVariable PL_regkind PL_revision PL_rsfp PL_rsfp_filters syn keyword xsVariable PL_runops_dbg PL_runops_std PL_sh_path PL_sig_name syn keyword xsVariable PL_sig_num PL_simple PL_simple_bitmask PL_sublex_info syn keyword xsVariable PL_subversion PL_tokenbuf PL_utf2e PL_utf8skip syn keyword xsVariable PL_uudmap PL_uuemap PL_valid_types_IVX syn keyword xsVariable PL_valid_types_IV_set PL_valid_types_NVX syn keyword xsVariable PL_valid_types_NV_set PL_valid_types_PVX syn keyword xsVariable PL_valid_types_RV PL_varies PL_varies_bitmask syn keyword xsVariable PL_version PL_warn_nl PL_warn_nosemi PL_warn_reserved syn keyword xsVariable PL_warn_uninit PL_warn_uninit_sv RETVAL SP TARG syn keyword xsVariable _aMY_CXT _aTHX aMY_CXT aMY_CXT_ aTHX aTHX_ items syn keyword xsMacro ABORT ACCEPT ADDOP AHOCORASICK AHOCORASICKC syn keyword xsMacro ALLOC_THREAD_KEY AMG_CALLun AMG_CALLunary AMGf_assign syn keyword xsMacro AMGf_noleft AMGf_noright AMGf_numarg AMGf_numeric syn keyword xsMacro AMGf_set AMGf_unary AMGf_want_list AMGfallNEVER AMGfallNO syn keyword xsMacro AMGfallYES AMT_AMAGIC AMT_AMAGIC_off AMT_AMAGIC_on syn keyword xsMacro AMTf_AMAGIC ANDAND ANDOP ANGSTROM_SIGN ANONSUB ANYOF syn keyword xsMacro ANYOFL ANYOF_ALNUM ANYOF_ALNUML ANYOF_ALPHA syn keyword xsMacro ANYOF_ALPHANUMERIC ANYOF_ASCII ANYOF_BIT ANYOF_BITMAP syn keyword xsMacro ANYOF_BITMAP_BYTE ANYOF_BITMAP_CLEAR syn keyword xsMacro ANYOF_BITMAP_CLEARALL ANYOF_BITMAP_SET syn keyword xsMacro ANYOF_BITMAP_SETALL ANYOF_BITMAP_SIZE ANYOF_BITMAP_TEST syn keyword xsMacro ANYOF_BITMAP_ZERO ANYOF_BLANK ANYOF_CASED syn keyword xsMacro ANYOF_CLASS_CLEAR ANYOF_CLASS_OR ANYOF_CLASS_SET syn keyword xsMacro ANYOF_CLASS_SETALL ANYOF_CLASS_TEST syn keyword xsMacro ANYOF_CLASS_TEST_ANY_SET ANYOF_CLASS_ZERO ANYOF_CNTRL syn keyword xsMacro ANYOF_COMMON_FLAGS ANYOF_DIGIT ANYOF_FLAGS syn keyword xsMacro ANYOF_FLAGS_ALL ANYOF_FOLD_SHARP_S ANYOF_GRAPH syn keyword xsMacro ANYOF_HAS_NONBITMAP_NON_UTF8_MATCHES syn keyword xsMacro ANYOF_HAS_UTF8_NONBITMAP_MATCHES ANYOF_HORIZWS syn keyword xsMacro ANYOF_INVERT ANYOF_LOCALE_FLAGS ANYOF_LOC_FOLD syn keyword xsMacro ANYOF_LOWER ANYOF_MATCHES_ALL_ABOVE_BITMAP syn keyword xsMacro ANYOF_MATCHES_ALL_NON_UTF8_NON_ASCII ANYOF_MATCHES_POSIXL syn keyword xsMacro ANYOF_MAX ANYOF_NALNUM ANYOF_NALNUML ANYOF_NALPHA syn keyword xsMacro ANYOF_NALPHANUMERIC ANYOF_NASCII ANYOF_NBLANK syn keyword xsMacro ANYOF_NCASED ANYOF_NCNTRL ANYOF_NDIGIT ANYOF_NGRAPH syn keyword xsMacro ANYOF_NHORIZWS ANYOF_NLOWER ANYOF_NPRINT ANYOF_NPUNCT syn keyword xsMacro ANYOF_NSPACE ANYOF_NSPACEL ANYOF_NUPPER ANYOF_NVERTWS syn keyword xsMacro ANYOF_NWORDCHAR ANYOF_NXDIGIT ANYOF_ONLY_HAS_BITMAP syn keyword xsMacro ANYOF_POSIXL_AND ANYOF_POSIXL_CLEAR ANYOF_POSIXL_MAX syn keyword xsMacro ANYOF_POSIXL_OR ANYOF_POSIXL_SET ANYOF_POSIXL_SETALL syn keyword xsMacro ANYOF_POSIXL_SKIP ANYOF_POSIXL_SSC_TEST_ALL_SET syn keyword xsMacro ANYOF_POSIXL_SSC_TEST_ANY_SET ANYOF_POSIXL_TEST syn keyword xsMacro ANYOF_POSIXL_TEST_ALL_SET ANYOF_POSIXL_TEST_ANY_SET syn keyword xsMacro ANYOF_POSIXL_ZERO ANYOF_PRINT ANYOF_PUNCT ANYOF_SKIP syn keyword xsMacro ANYOF_SPACE ANYOF_SPACEL ANYOF_UNIPROP ANYOF_UPPER syn keyword xsMacro ANYOF_VERTWS ANYOF_WARN_SUPER ANYOF_WORDCHAR ANYOF_XDIGIT syn keyword xsMacro ARCHLIB ARCHLIB_EXP ARCHNAME ARG ARG1 ARG1_LOC ARG1_SET syn keyword xsMacro ARG2 ARG2L ARG2L_LOC ARG2L_SET ARG2_LOC ARG2_SET ARGTARG syn keyword xsMacro ARG_LOC ARG_SET ARG_VALUE ARG__SET ARROW syn keyword xsMacro ASCII_MORE_RESTRICT_PAT_MODS ASCII_RESTRICT_PAT_MOD syn keyword xsMacro ASCII_RESTRICT_PAT_MODS ASCII_TO_NATIVE ASCTIME_R_PROTO syn keyword xsMacro ASSERT_CURPAD_ACTIVE ASSERT_CURPAD_LEGAL ASSIGNOP ASSUME syn keyword xsMacro Atof Atol Atoul AvALLOC AvARRAY AvARYLEN AvFILL AvFILLp syn keyword xsMacro AvMAX AvREAL AvREALISH AvREAL_off AvREAL_on AvREAL_only syn keyword xsMacro AvREIFY AvREIFY_off AvREIFY_on AvREIFY_only BADVERSION syn keyword xsMacro BASEOP BHKf_bhk_eval BHKf_bhk_post_end BHKf_bhk_pre_end syn keyword xsMacro BHKf_bhk_start BIN BIN_EXP BITANDOP BITMAP_BYTE syn keyword xsMacro BITMAP_TEST BITOROP BIT_BUCKET BIT_DIGITS BOL syn keyword xsMacro BOM_UTF8_FIRST_BYTE BOM_UTF8_TAIL BOUND BOUNDA BOUNDL syn keyword xsMacro BOUNDU BRANCH BRANCHJ BRANCH_next BRANCH_next_fail syn keyword xsMacro BSD_GETPGRP BSD_SETPGRP BSDish BUFSIZ BYTEORDER syn keyword xsMacro BhkDISABLE BhkENABLE BhkENTRY BhkENTRY_set BhkFLAGS Bit syn keyword xsMacro BmFLAGS BmPREVIOUS BmRARE BmUSEFUL CALLREGCOMP syn keyword xsMacro CALLREGCOMP_ENG CALLREGDUPE CALLREGDUPE_PVT CALLREGEXEC syn keyword xsMacro CALLREGFREE CALLREGFREE_PVT CALLREG_INTUIT_START syn keyword xsMacro CALLREG_INTUIT_STRING CALLREG_NAMED_BUFF_ALL syn keyword xsMacro CALLREG_NAMED_BUFF_CLEAR CALLREG_NAMED_BUFF_COUNT syn keyword xsMacro CALLREG_NAMED_BUFF_DELETE CALLREG_NAMED_BUFF_EXISTS syn keyword xsMacro CALLREG_NAMED_BUFF_FETCH CALLREG_NAMED_BUFF_FIRSTKEY syn keyword xsMacro CALLREG_NAMED_BUFF_NEXTKEY CALLREG_NAMED_BUFF_SCALAR syn keyword xsMacro CALLREG_NAMED_BUFF_STORE CALLREG_NUMBUF_FETCH syn keyword xsMacro CALLREG_NUMBUF_LENGTH CALLREG_NUMBUF_STORE syn keyword xsMacro CALLREG_PACKAGE CALLRUNOPS CALL_BLOCK_HOOKS syn keyword xsMacro CALL_CHECKER_REQUIRE_GV CALL_FPTR CANY CAN_COW_FLAGS syn keyword xsMacro CAN_COW_MASK CAN_PROTOTYPE CAN_VAPROTO syn keyword xsMacro CASE_STD_PMMOD_FLAGS_PARSE_SET CASTFLAGS CASTNEGFLOAT syn keyword xsMacro CAT2 CATCH_GET CATCH_SET CHANGE_MULTICALL_FLAGS CHARBITS syn keyword xsMacro CHARSET_PAT_MODS CHECK_MALLOC_TAINT syn keyword xsMacro CHECK_MALLOC_TOO_LATE_FOR CHECK_MALLOC_TOO_LATE_FOR_ syn keyword xsMacro CLEAR_ARGARRAY CLEAR_ERRSV CLONEf_CLONE_HOST syn keyword xsMacro CLONEf_COPY_STACKS CLONEf_JOIN_IN CLONEf_KEEP_PTR_TABLE syn keyword xsMacro CLOSE CLUMP CLUMP_2IV CLUMP_2UV COLONATTR syn keyword xsMacro COMBINING_GRAVE_ACCENT_UTF8 COMMIT COMMIT_next syn keyword xsMacro COMMIT_next_fail COND_BROADCAST COND_DESTROY COND_INIT syn keyword xsMacro COND_SIGNAL COND_WAIT CONTINUE CONTINUE_PAT_MOD syn keyword xsMacro COPHH_KEY_UTF8 COP_SEQMAX_INC COP_SEQ_RANGE_HIGH syn keyword xsMacro COP_SEQ_RANGE_LOW CPERLarg CPERLarg_ CPERLscope CPPLAST syn keyword xsMacro CPPMINUS CPPRUN CPPSTDIN CRYPT_R_PROTO CR_NATIVE CSH syn keyword xsMacro CTERMID_R_PROTO CTIME_R_PROTO CTYPE256 CURLY CURLYM syn keyword xsMacro CURLYM_A CURLYM_A_fail CURLYM_B CURLYM_B_fail CURLYN syn keyword xsMacro CURLYX CURLYX_end CURLYX_end_fail CURLY_B_max syn keyword xsMacro CURLY_B_max_fail CURLY_B_min CURLY_B_min_fail syn keyword xsMacro CURLY_B_min_known CURLY_B_min_known_fail syn keyword xsMacro CURRENT_FEATURE_BUNDLE CURRENT_HINTS CUTGROUP syn keyword xsMacro CUTGROUP_next CUTGROUP_next_fail CV_NAME_NOTQUAL syn keyword xsMacro CV_UNDEF_KEEP_NAME CVf_ANON CVf_ANONCONST CVf_AUTOLOAD syn keyword xsMacro CVf_BUILTIN_ATTRS CVf_CLONE CVf_CLONED CVf_CONST syn keyword xsMacro CVf_CVGV_RC CVf_DYNFILE CVf_HASEVAL CVf_ISXSUB syn keyword xsMacro CVf_LEXICAL CVf_LVALUE CVf_METHOD CVf_NAMED CVf_NODEBUG syn keyword xsMacro CVf_SLABBED CVf_UNIQUE CVf_WEAKOUTSIDE CXINC CXTYPEMASK syn keyword xsMacro CX_CURPAD_SAVE CX_CURPAD_SV CXp_FOR_DEF CXp_FOR_LVREF syn keyword xsMacro CXp_HASARGS CXp_MULTICALL CXp_ONCE CXp_REAL CXp_SUB_RE syn keyword xsMacro CXp_SUB_RE_FAKE CXp_TRYBLOCK C_ARRAY_END C_ARRAY_LENGTH syn keyword xsMacro C_FAC_POSIX CopFILE CopFILEAV CopFILEAVx CopFILEGV syn keyword xsMacro CopFILEGV_set CopFILESV CopFILE_free CopFILE_set syn keyword xsMacro CopFILE_setn CopHINTHASH_get CopHINTHASH_set CopHINTS_get syn keyword xsMacro CopHINTS_set CopLABEL CopLABEL_alloc CopLABEL_len syn keyword xsMacro CopLABEL_len_flags CopLINE CopLINE_dec CopLINE_inc syn keyword xsMacro CopLINE_set CopSTASH CopSTASHPV CopSTASHPV_set syn keyword xsMacro CopSTASH_eq CopSTASH_ne CopSTASH_set Copy CopyD CowREFCNT syn keyword xsMacro Ctl CvANON CvANONCONST CvANONCONST_off CvANONCONST_on syn keyword xsMacro CvANON_off CvANON_on CvAUTOLOAD CvAUTOLOAD_off syn keyword xsMacro CvAUTOLOAD_on CvCLONE CvCLONED CvCLONED_off CvCLONED_on syn keyword xsMacro CvCLONE_off CvCLONE_on CvCONST CvCONST_off CvCONST_on syn keyword xsMacro CvCVGV_RC CvCVGV_RC_off CvCVGV_RC_on CvDEPTH syn keyword xsMacro CvDEPTHunsafe CvDYNFILE CvDYNFILE_off CvDYNFILE_on CvEVAL syn keyword xsMacro CvEVAL_off CvEVAL_on CvFILE CvFILEGV CvFILE_set_from_cop syn keyword xsMacro CvFLAGS CvGV CvGV_set CvHASEVAL CvHASEVAL_off syn keyword xsMacro CvHASEVAL_on CvHASGV CvHSCXT CvISXSUB CvISXSUB_off syn keyword xsMacro CvISXSUB_on CvLEXICAL CvLEXICAL_off CvLEXICAL_on CvLVALUE syn keyword xsMacro CvLVALUE_off CvLVALUE_on CvMETHOD CvMETHOD_off syn keyword xsMacro CvMETHOD_on CvNAMED CvNAMED_off CvNAMED_on CvNAME_HEK_set syn keyword xsMacro CvNODEBUG CvNODEBUG_off CvNODEBUG_on CvOUTSIDE syn keyword xsMacro CvOUTSIDE_SEQ CvPADLIST CvPADLIST_set CvPROTO CvPROTOLEN syn keyword xsMacro CvROOT CvSLABBED CvSLABBED_off CvSLABBED_on CvSPECIAL syn keyword xsMacro CvSPECIAL_off CvSPECIAL_on CvSTART CvSTASH CvSTASH_set syn keyword xsMacro CvUNIQUE CvUNIQUE_off CvUNIQUE_on CvWEAKOUTSIDE syn keyword xsMacro CvWEAKOUTSIDE_off CvWEAKOUTSIDE_on CvXSUB CvXSUBANY syn keyword xsMacro CxFOREACH CxFOREACHDEF CxHASARGS CxITERVAR syn keyword xsMacro CxITERVAR_PADSV CxLABEL CxLABEL_len CxLABEL_len_flags syn keyword xsMacro CxLVAL CxMULTICALL CxOLD_IN_EVAL CxOLD_OP_TYPE CxONCE syn keyword xsMacro CxPADLOOP CxPOPSUB_DONE CxREALEVAL CxTRYBLOCK CxTYPE syn keyword xsMacro CxTYPE_is_LOOP DBL_DIG DBL_MAX DBL_MIN DBM_ckFilter syn keyword xsMacro DBM_setFilter DBVARMG_COUNT DBVARMG_SIGNAL DBVARMG_SINGLE syn keyword xsMacro DBVARMG_TRACE DB_VERSION_MAJOR_CFG DB_VERSION_MINOR_CFG syn keyword xsMacro DB_VERSION_PATCH_CFG DEBUG_A DEBUG_A_FLAG DEBUG_A_TEST syn keyword xsMacro DEBUG_A_TEST_ DEBUG_B DEBUG_BUFFERS_r DEBUG_B_FLAG syn keyword xsMacro DEBUG_B_TEST DEBUG_B_TEST_ DEBUG_C DEBUG_COMPILE_r syn keyword xsMacro DEBUG_CX DEBUG_C_FLAG DEBUG_C_TEST DEBUG_C_TEST_ DEBUG_D syn keyword xsMacro DEBUG_DB_RECURSE_FLAG DEBUG_DUMP_r DEBUG_D_FLAG syn keyword xsMacro DEBUG_D_TEST DEBUG_D_TEST_ DEBUG_EXECUTE_r DEBUG_EXTRA_r syn keyword xsMacro DEBUG_FLAGS_r DEBUG_GPOS_r DEBUG_H DEBUG_H_FLAG syn keyword xsMacro DEBUG_H_TEST DEBUG_H_TEST_ DEBUG_INTUIT_r DEBUG_J_FLAG syn keyword xsMacro DEBUG_J_TEST DEBUG_J_TEST_ DEBUG_L DEBUG_L_FLAG syn keyword xsMacro DEBUG_L_TEST DEBUG_L_TEST_ DEBUG_M DEBUG_MASK syn keyword xsMacro DEBUG_MATCH_r DEBUG_M_FLAG DEBUG_M_TEST DEBUG_M_TEST_ syn keyword xsMacro DEBUG_OFFSETS_r DEBUG_OPTIMISE_MORE_r DEBUG_OPTIMISE_r syn keyword xsMacro DEBUG_P DEBUG_PARSE_r DEBUG_P_FLAG DEBUG_P_TEST syn keyword xsMacro DEBUG_P_TEST_ DEBUG_Pv DEBUG_Pv_TEST DEBUG_Pv_TEST_ syn keyword xsMacro DEBUG_R DEBUG_R_FLAG DEBUG_R_TEST DEBUG_R_TEST_ DEBUG_S syn keyword xsMacro DEBUG_SCOPE DEBUG_STACK_r DEBUG_STATE_r DEBUG_S_FLAG syn keyword xsMacro DEBUG_S_TEST DEBUG_S_TEST_ DEBUG_T DEBUG_TEST_r syn keyword xsMacro DEBUG_TOP_FLAG DEBUG_TRIE_COMPILE_MORE_r syn keyword xsMacro DEBUG_TRIE_COMPILE_r DEBUG_TRIE_EXECUTE_MORE_r syn keyword xsMacro DEBUG_TRIE_EXECUTE_r DEBUG_TRIE_r DEBUG_T_FLAG syn keyword xsMacro DEBUG_T_TEST DEBUG_T_TEST_ DEBUG_U DEBUG_U_FLAG syn keyword xsMacro DEBUG_U_TEST DEBUG_U_TEST_ DEBUG_Uv DEBUG_Uv_TEST syn keyword xsMacro DEBUG_Uv_TEST_ DEBUG_X DEBUG_X_FLAG DEBUG_X_TEST syn keyword xsMacro DEBUG_X_TEST_ DEBUG_Xv DEBUG_Xv_TEST DEBUG_Xv_TEST_ syn keyword xsMacro DEBUG__ DEBUG_c DEBUG_c_FLAG DEBUG_c_TEST DEBUG_c_TEST_ syn keyword xsMacro DEBUG_f DEBUG_f_FLAG DEBUG_f_TEST DEBUG_f_TEST_ DEBUG_l syn keyword xsMacro DEBUG_l_FLAG DEBUG_l_TEST DEBUG_l_TEST_ DEBUG_m syn keyword xsMacro DEBUG_m_FLAG DEBUG_m_TEST DEBUG_m_TEST_ DEBUG_o syn keyword xsMacro DEBUG_o_FLAG DEBUG_o_TEST DEBUG_o_TEST_ DEBUG_p syn keyword xsMacro DEBUG_p_FLAG DEBUG_p_TEST DEBUG_p_TEST_ DEBUG_q syn keyword xsMacro DEBUG_q_FLAG DEBUG_q_TEST DEBUG_q_TEST_ DEBUG_r syn keyword xsMacro DEBUG_r_FLAG DEBUG_r_TEST DEBUG_r_TEST_ DEBUG_s syn keyword xsMacro DEBUG_s_FLAG DEBUG_s_TEST DEBUG_s_TEST_ DEBUG_t_FLAG syn keyword xsMacro DEBUG_t_TEST DEBUG_t_TEST_ DEBUG_u DEBUG_u_FLAG syn keyword xsMacro DEBUG_u_TEST DEBUG_u_TEST_ DEBUG_v DEBUG_v_FLAG syn keyword xsMacro DEBUG_v_TEST DEBUG_v_TEST_ DEBUG_x DEBUG_x_FLAG syn keyword xsMacro DEBUG_x_TEST DEBUG_x_TEST_ syn keyword xsMacro DECLARATION_FOR_LC_NUMERIC_MANIPULATION syn keyword xsMacro DECLARATION_FOR_STORE_LC_NUMERIC_SET_TO_NEEDED syn keyword xsMacro DECLARE_STORE_LC_NUMERIC_SET_TO_NEEDED DEFAULT syn keyword xsMacro DEFAULT_PAT_MOD DEFINEP DEFSV DEFSV_set DEL_NATIVE syn keyword xsMacro DEPENDS_PAT_MOD DEPENDS_PAT_MODS DETACH DIE DM_ARRAY_ISA syn keyword xsMacro DM_DELAY DM_EGID DM_EUID DM_GID DM_RGID DM_RUID DM_UID DO syn keyword xsMacro DOINIT DOLSHARP DONT_DECLARE_STD DORDOR DOROP DOSISH syn keyword xsMacro DOTDOT DOUBLEKIND DOUBLESIZE DOUBLE_BIG_ENDIAN syn keyword xsMacro DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN syn keyword xsMacro DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN syn keyword xsMacro DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN syn keyword xsMacro DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN syn keyword xsMacro DOUBLE_IS_IEEE_754_64_BIT_BIG_ENDIAN syn keyword xsMacro DOUBLE_IS_IEEE_754_64_BIT_LITTLE_ENDIAN syn keyword xsMacro DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE syn keyword xsMacro DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE syn keyword xsMacro DOUBLE_IS_UNKNOWN_FORMAT DOUBLE_LITTLE_ENDIAN syn keyword xsMacro DOUBLE_MIX_ENDIAN DO_UTF8 DPTR2FPTR DRAND48_R_PROTO syn keyword xsMacro DUP_WARNINGS Drand01 ELSE ELSIF EMBEDMYMALLOC END syn keyword xsMacro ENDGRENT_R_PROTO ENDHOSTENT_R_PROTO ENDLIKE syn keyword xsMacro ENDNETENT_R_PROTO ENDPROTOENT_R_PROTO ENDPWENT_R_PROTO syn keyword xsMacro ENDSERVENT_R_PROTO END_EXTERN_C ENTER ENTER_with_name syn keyword xsMacro ENTRY_PROBE EOF EOL EOS EQOP ERRSV ESC_NATIVE EVAL syn keyword xsMacro EVAL_AB EVAL_AB_fail EVAL_INEVAL EVAL_INREQUIRE syn keyword xsMacro EVAL_KEEPERR EVAL_NULL EVAL_RE_REPARSING EVAL_WARNONLY syn keyword xsMacro EXACT EXACTF EXACTFA EXACTFA_NO_TRIE EXACTFL EXACTFLU8 syn keyword xsMacro EXACTFU EXACTFU_SS EXACTL EXEC_ARGV_CAST EXEC_PAT_MOD syn keyword xsMacro EXEC_PAT_MODS EXPECT EXT EXTCONST EXTEND EXTEND_MORTAL syn keyword xsMacro EXTERN_C EXTPERLIO EXTRA_SIZE EXTRA_STEP_2ARGS EXT_MGVTBL syn keyword xsMacro EXT_PAT_MODS FAKE_BIT_BUCKET FAKE_DEFAULT_SIGNAL_HANDLERS syn keyword xsMacro FAKE_PERSISTENT_SIGNAL_HANDLERS FALSE FBMcf_TAIL syn keyword xsMacro FBMcf_TAIL_DOLLAR FBMcf_TAIL_DOLLARM FBMcf_TAIL_Z syn keyword xsMacro FBMcf_TAIL_z FBMrf_MULTILINE FCNTL_CAN_LOCK FD_CLR syn keyword xsMacro FD_ISSET FD_SET FD_ZERO FEATURE_ARYBASE_IS_ENABLED syn keyword xsMacro FEATURE_BITWISE_IS_ENABLED FEATURE_BUNDLE_510 syn keyword xsMacro FEATURE_BUNDLE_511 FEATURE_BUNDLE_515 syn keyword xsMacro FEATURE_BUNDLE_CUSTOM FEATURE_BUNDLE_DEFAULT syn keyword xsMacro FEATURE_EVALBYTES_IS_ENABLED FEATURE_FC_IS_ENABLED syn keyword xsMacro FEATURE_IS_ENABLED FEATURE_LEXSUBS_IS_ENABLED syn keyword xsMacro FEATURE_POSTDEREF_IS_ENABLED syn keyword xsMacro FEATURE_POSTDEREF_QQ_IS_ENABLED syn keyword xsMacro FEATURE_REFALIASING_IS_ENABLED FEATURE_SAY_IS_ENABLED syn keyword xsMacro FEATURE_SIGNATURES_IS_ENABLED FEATURE_STATE_IS_ENABLED syn keyword xsMacro FEATURE_SWITCH_IS_ENABLED FEATURE_UNICODE_IS_ENABLED syn keyword xsMacro FEATURE_UNIEVAL_IS_ENABLED FEATURE___SUB___IS_ENABLED syn keyword xsMacro FFLUSH_NULL FF_0DECIMAL FF_BLANK FF_CHECKCHOP FF_CHECKNL syn keyword xsMacro FF_CHOP FF_DECIMAL FF_END FF_FETCH FF_HALFSPACE FF_ITEM syn keyword xsMacro FF_LINEGLOB FF_LINEMARK FF_LINESNGL FF_LITERAL FF_MORE syn keyword xsMacro FF_NEWLINE FF_SKIP FF_SPACE FILE FILE_base FILE_bufsiz syn keyword xsMacro FILE_cnt FILE_ptr FILL_ADVANCE_NODE syn keyword xsMacro FILL_ADVANCE_NODE_2L_ARG FILL_ADVANCE_NODE_ARG syn keyword xsMacro FILTER_DATA FILTER_ISREADER FILTER_READ syn keyword xsMacro FIND_RUNCV_level_eq FIND_RUNCV_padid_eq syn keyword xsMacro FIRST_SURROGATE_UTF8_FIRST_BYTE FITS_IN_8_BITS FLAGS syn keyword xsMacro FLEXFILENAMES FOLDEQ_LOCALE FOLDEQ_S1_ALREADY_FOLDED syn keyword xsMacro FOLDEQ_S1_FOLDS_SANE FOLDEQ_S2_ALREADY_FOLDED syn keyword xsMacro FOLDEQ_S2_FOLDS_SANE FOLDEQ_UTF8_NOMIX_ASCII syn keyword xsMacro FOLD_FLAGS_FULL FOLD_FLAGS_LOCALE FOLD_FLAGS_NOMIX_ASCII syn keyword xsMacro FOR FORMAT FORMLBRACK FORMRBRACK FPTR2DPTR FP_PINF syn keyword xsMacro FP_QNAN FREETMPS FREE_THREAD_KEY FSEEKSIZE FUNC FUNC0 syn keyword xsMacro FUNC0OP FUNC0SUB FUNC1 FUNCMETH FUNCTION__ F_atan2_amg syn keyword xsMacro F_cos_amg F_exp_amg F_log_amg F_pow_amg F_sin_amg syn keyword xsMacro F_sqrt_amg Fflush FmLINES FreeOp Fstat GCB_ENUM_COUNT syn keyword xsMacro GCC_DIAG_IGNORE GCC_DIAG_PRAGMA GCC_DIAG_RESTORE syn keyword xsMacro GDBMNDBM_H_USES_PROTOTYPES GETATARGET GETGRENT_R_PROTO syn keyword xsMacro GETGRGID_R_PROTO GETGRNAM_R_PROTO GETHOSTBYADDR_R_PROTO syn keyword xsMacro GETHOSTBYNAME_R_PROTO GETHOSTENT_R_PROTO GETLOGIN_R_PROTO syn keyword xsMacro GETNETBYADDR_R_PROTO GETNETBYNAME_R_PROTO syn keyword xsMacro GETNETENT_R_PROTO GETPROTOBYNAME_R_PROTO syn keyword xsMacro GETPROTOBYNUMBER_R_PROTO GETPROTOENT_R_PROTO syn keyword xsMacro GETPWENT_R_PROTO GETPWNAM_R_PROTO GETPWUID_R_PROTO syn keyword xsMacro GETSERVBYNAME_R_PROTO GETSERVBYPORT_R_PROTO syn keyword xsMacro GETSERVENT_R_PROTO GETSPNAM_R_PROTO GETTARGET syn keyword xsMacro GETTARGETSTACKED GET_RE_DEBUG_FLAGS syn keyword xsMacro GET_RE_DEBUG_FLAGS_DECL GIMME GIMME_V GIVEN syn keyword xsMacro GLOBAL_PAT_MOD GMTIME_MAX GMTIME_MIN GMTIME_R syn keyword xsMacro GMTIME_R_PROTO GOSTART GOSUB GPOS GPf_ALIASED_SV syn keyword xsMacro GRAMBARESTMT GRAMBLOCK GRAMEXPR GRAMFULLSTMT GRAMPROG syn keyword xsMacro GRAMSTMTSEQ GREEK_CAPITAL_LETTER_IOTA_UTF8 syn keyword xsMacro GREEK_CAPITAL_LETTER_MU GREEK_SMALL_LETTER_MU syn keyword xsMacro GREEK_SMALL_LETTER_MU_UTF8 GROK_NUMERIC_RADIX GROUPP syn keyword xsMacro GRPASSWD GV_ADD GV_ADDMG GV_ADDMULTI GV_ADDWARN syn keyword xsMacro GV_AUTOLOAD GV_AUTOLOAD_ISMETHOD GV_CACHE_ONLY GV_CROAK syn keyword xsMacro GV_NOADD_MASK GV_NOADD_NOINIT GV_NOEXPAND GV_NOINIT syn keyword xsMacro GV_NOTQUAL GV_NO_SVGMAGIC GV_SUPER GVf_ASSUMECV syn keyword xsMacro GVf_IMPORTED GVf_IMPORTED_AV GVf_IMPORTED_CV syn keyword xsMacro GVf_IMPORTED_HV GVf_IMPORTED_SV GVf_INTRO GVf_MULTI syn keyword xsMacro Gconvert Gid_t_f Gid_t_sign Gid_t_size GvALIASED_SV syn keyword xsMacro GvALIASED_SV_off GvALIASED_SV_on GvASSIGN_GENERATION syn keyword xsMacro GvASSIGN_GENERATION_set GvASSUMECV GvASSUMECV_off syn keyword xsMacro GvASSUMECV_on GvAV GvAVn GvCV GvCVGEN GvCV_set GvCVu syn keyword xsMacro GvEGV GvEGVx GvENAME GvENAMELEN GvENAMEUTF8 GvENAME_HEK syn keyword xsMacro GvESTASH GvFILE GvFILEGV GvFILE_HEK GvFILEx GvFLAGS syn keyword xsMacro GvFORM GvGP GvGPFLAGS GvGP_set GvHV GvHVn GvIMPORTED syn keyword xsMacro GvIMPORTED_AV GvIMPORTED_AV_off GvIMPORTED_AV_on syn keyword xsMacro GvIMPORTED_CV GvIMPORTED_CV_off GvIMPORTED_CV_on syn keyword xsMacro GvIMPORTED_HV GvIMPORTED_HV_off GvIMPORTED_HV_on syn keyword xsMacro GvIMPORTED_SV GvIMPORTED_SV_off GvIMPORTED_SV_on syn keyword xsMacro GvIMPORTED_off GvIMPORTED_on GvINTRO GvINTRO_off syn keyword xsMacro GvINTRO_on GvIN_PAD GvIN_PAD_off GvIN_PAD_on GvIO GvIOn syn keyword xsMacro GvIOp GvLINE GvMULTI GvMULTI_off GvMULTI_on GvNAME syn keyword xsMacro GvNAMELEN GvNAMELEN_get GvNAMEUTF8 GvNAME_HEK GvNAME_get syn keyword xsMacro GvREFCNT GvSTASH GvSV GvSVn GvXPVGV Gv_AMG HANDY_H syn keyword xsMacro HASATTRIBUTE_DEPRECATED HASATTRIBUTE_FORMAT syn keyword xsMacro HASATTRIBUTE_MALLOC HASATTRIBUTE_NONNULL syn keyword xsMacro HASATTRIBUTE_NORETURN HASATTRIBUTE_PURE syn keyword xsMacro HASATTRIBUTE_UNUSED HASATTRIBUTE_WARN_UNUSED_RESULT syn keyword xsMacro HASCONST HASHBRACK HASVOLATILE HAS_ACCESS HAS_ACOSH syn keyword xsMacro HAS_ALARM HAS_ASINH HAS_ATANH HAS_ATOLL HAS_BACKTRACE syn keyword xsMacro HAS_BCMP HAS_BCOPY HAS_BOOL HAS_BUILTIN_CHOOSE_EXPR syn keyword xsMacro HAS_BUILTIN_EXPECT HAS_BZERO HAS_C99 syn keyword xsMacro HAS_C99_VARIADIC_MACROS HAS_CBRT HAS_CHOWN HAS_CHROOT syn keyword xsMacro HAS_CLEARENV HAS_COPYSIGN HAS_COPYSIGNL HAS_CRYPT syn keyword xsMacro HAS_CTERMID HAS_CUSERID HAS_DBL_DIG HAS_DBMINIT_PROTO syn keyword xsMacro HAS_DIFFTIME HAS_DIRFD HAS_DLADDR HAS_DLERROR syn keyword xsMacro HAS_DRAND48_PROTO HAS_DUP2 HAS_EACCESS HAS_ENDGRENT syn keyword xsMacro HAS_ENDHOSTENT HAS_ENDNETENT HAS_ENDPROTOENT HAS_ENDPWENT syn keyword xsMacro HAS_ENDSERVENT HAS_ERF HAS_ERFC HAS_EXP2 HAS_EXPM1 syn keyword xsMacro HAS_FCHDIR HAS_FCHMOD HAS_FCHOWN HAS_FCNTL HAS_FDIM syn keyword xsMacro HAS_FD_SET HAS_FEGETROUND HAS_FGETPOS HAS_FINITE syn keyword xsMacro HAS_FINITEL HAS_FLOCK HAS_FLOCK_PROTO HAS_FMA HAS_FMAX syn keyword xsMacro HAS_FMIN HAS_FORK HAS_FPATHCONF HAS_FPCLASSIFY HAS_FREXPL syn keyword xsMacro HAS_FSEEKO HAS_FSETPOS HAS_FSTATFS HAS_FSTATVFS HAS_FSYNC syn keyword xsMacro HAS_FTELLO HAS_FUTIMES HAS_GETADDRINFO HAS_GETCWD syn keyword xsMacro HAS_GETGRENT HAS_GETGROUPS HAS_GETHOSTBYADDR syn keyword xsMacro HAS_GETHOSTBYNAME HAS_GETHOSTENT HAS_GETHOSTNAME syn keyword xsMacro HAS_GETHOST_PROTOS HAS_GETITIMER HAS_GETLOGIN syn keyword xsMacro HAS_GETMNTENT HAS_GETNAMEINFO HAS_GETNETBYADDR syn keyword xsMacro HAS_GETNETBYNAME HAS_GETNETENT HAS_GETNET_PROTOS syn keyword xsMacro HAS_GETPAGESIZE HAS_GETPGID HAS_GETPGRP HAS_GETPPID syn keyword xsMacro HAS_GETPRIORITY HAS_GETPROTOBYNAME HAS_GETPROTOBYNUMBER syn keyword xsMacro HAS_GETPROTOENT HAS_GETPROTO_PROTOS HAS_GETPWENT syn keyword xsMacro HAS_GETSERVBYNAME HAS_GETSERVBYPORT HAS_GETSERVENT syn keyword xsMacro HAS_GETSERV_PROTOS HAS_GETSPNAM HAS_GETTIMEOFDAY syn keyword xsMacro HAS_GNULIBC HAS_GROUP HAS_HASMNTOPT HAS_HTONL HAS_HTONS syn keyword xsMacro HAS_HYPOT HAS_ILOGB HAS_ILOGBL HAS_INETNTOP HAS_INETPTON syn keyword xsMacro HAS_INET_ATON HAS_INT64_T HAS_IOCTL HAS_IPV6_MREQ syn keyword xsMacro HAS_IP_MREQ HAS_IP_MREQ_SOURCE HAS_ISASCII HAS_ISBLANK syn keyword xsMacro HAS_ISFINITE HAS_ISINF HAS_ISINFL HAS_ISNAN HAS_ISNANL syn keyword xsMacro HAS_ISNORMAL HAS_J0 HAS_J0L HAS_KILL HAS_KILLPG syn keyword xsMacro HAS_LCHOWN HAS_LC_MONETARY_2008 HAS_LDBL_DIG HAS_LDEXPL syn keyword xsMacro HAS_LGAMMA HAS_LGAMMA_R HAS_LINK HAS_LLRINT HAS_LLRINTL syn keyword xsMacro HAS_LLROUND HAS_LLROUNDL HAS_LOCALECONV HAS_LOCKF syn keyword xsMacro HAS_LOG1P HAS_LOG2 HAS_LOGB HAS_LONG_DOUBLE HAS_LONG_LONG syn keyword xsMacro HAS_LRINT HAS_LRINTL HAS_LROUND HAS_LROUNDL syn keyword xsMacro HAS_LSEEK_PROTO HAS_LSTAT HAS_MADVISE HAS_MBLEN syn keyword xsMacro HAS_MBSTOWCS HAS_MBTOWC HAS_MEMCHR HAS_MEMCMP HAS_MEMCPY syn keyword xsMacro HAS_MEMMOVE HAS_MEMSET HAS_MKDIR HAS_MKDTEMP HAS_MKFIFO syn keyword xsMacro HAS_MKSTEMP HAS_MKSTEMPS HAS_MKTIME HAS_MMAP HAS_MODFL syn keyword xsMacro HAS_MODFL_PROTO HAS_MPROTECT HAS_MSG HAS_MSG_CTRUNC syn keyword xsMacro HAS_MSG_DONTROUTE HAS_MSG_OOB HAS_MSG_PEEK HAS_MSG_PROXY syn keyword xsMacro HAS_MSYNC HAS_MUNMAP HAS_NAN HAS_NEARBYINT HAS_NEXTAFTER syn keyword xsMacro HAS_NEXTTOWARD HAS_NICE HAS_NL_LANGINFO HAS_NTOHL syn keyword xsMacro HAS_NTOHS HAS_OPEN3 HAS_PASSWD HAS_PATHCONF HAS_PAUSE syn keyword xsMacro HAS_PIPE HAS_POLL HAS_PRCTL HAS_PRCTL_SET_NAME syn keyword xsMacro HAS_PROCSELFEXE HAS_PTHREAD_ATFORK syn keyword xsMacro HAS_PTHREAD_ATTR_SETSCOPE syn keyword xsMacro HAS_PTHREAD_UNCHECKED_GETSPECIFIC_NP HAS_PTHREAD_YIELD syn keyword xsMacro HAS_PTRDIFF_T HAS_READDIR HAS_READLINK HAS_READV syn keyword xsMacro HAS_RECVMSG HAS_REGCOMP HAS_REMAINDER HAS_REMQUO syn keyword xsMacro HAS_RENAME HAS_REWINDDIR HAS_RINT HAS_RMDIR HAS_ROUND syn keyword xsMacro HAS_SANE_MEMCMP HAS_SBRK_PROTO HAS_SCALBN HAS_SCALBNL syn keyword xsMacro HAS_SCHED_YIELD HAS_SCM_RIGHTS HAS_SEEKDIR HAS_SELECT syn keyword xsMacro HAS_SEM HAS_SENDMSG HAS_SETEGID HAS_SETEUID HAS_SETGRENT syn keyword xsMacro HAS_SETGROUPS HAS_SETHOSTENT HAS_SETITIMER HAS_SETLINEBUF syn keyword xsMacro HAS_SETLOCALE HAS_SETNETENT HAS_SETPGID HAS_SETPGRP syn keyword xsMacro HAS_SETPRIORITY HAS_SETPROTOENT HAS_SETPWENT HAS_SETREGID syn keyword xsMacro HAS_SETRESGID HAS_SETRESUID HAS_SETREUID HAS_SETSERVENT syn keyword xsMacro HAS_SETSID HAS_SETVBUF HAS_SHM HAS_SHMAT_PROTOTYPE syn keyword xsMacro HAS_SIGACTION HAS_SIGNBIT HAS_SIGPROCMASK HAS_SIGSETJMP syn keyword xsMacro HAS_SIN6_SCOPE_ID HAS_SKIP_LOCALE_INIT HAS_SNPRINTF syn keyword xsMacro HAS_SOCKADDR_IN6 HAS_SOCKATMARK HAS_SOCKATMARK_PROTO syn keyword xsMacro HAS_SOCKET HAS_SQRTL HAS_STAT HAS_STATIC_INLINE syn keyword xsMacro HAS_STRCHR HAS_STRCOLL HAS_STRFTIME HAS_STRTOD HAS_STRTOL syn keyword xsMacro HAS_STRTOLD HAS_STRTOLL HAS_STRTOQ HAS_STRTOUL syn keyword xsMacro HAS_STRTOULL HAS_STRTOUQ HAS_STRUCT_CMSGHDR syn keyword xsMacro HAS_STRUCT_MSGHDR HAS_STRUCT_STATFS syn keyword xsMacro HAS_STRUCT_STATFS_F_FLAGS HAS_STRXFRM HAS_SYMLINK syn keyword xsMacro HAS_SYSCALL HAS_SYSCALL_PROTO HAS_SYSCONF HAS_SYSTEM syn keyword xsMacro HAS_SYS_ERRLIST HAS_TCGETPGRP HAS_TCSETPGRP HAS_TELLDIR syn keyword xsMacro HAS_TELLDIR_PROTO HAS_TGAMMA HAS_TIME HAS_TIMEGM syn keyword xsMacro HAS_TIMES HAS_TM_TM_GMTOFF HAS_TM_TM_ZONE HAS_TRUNC syn keyword xsMacro HAS_TRUNCATE HAS_TRUNCL HAS_TZNAME HAS_UALARM HAS_UMASK syn keyword xsMacro HAS_UNAME HAS_UNSETENV HAS_USLEEP HAS_USLEEP_PROTO syn keyword xsMacro HAS_USTAT HAS_UTIME HAS_VPRINTF HAS_VSNPRINTF HAS_WAIT syn keyword xsMacro HAS_WAIT4 HAS_WAITPID HAS_WCSCMP HAS_WCSTOMBS HAS_WCSXFRM syn keyword xsMacro HAS_WCTOMB HAS_WRITEV HEK_BASESIZE HEK_FLAGS HEK_HASH syn keyword xsMacro HEK_KEY HEK_LEN HEK_UTF8 HEK_UTF8_off HEK_UTF8_on syn keyword xsMacro HEK_WASUTF8 HEK_WASUTF8_off HEK_WASUTF8_on HEKf HEKf256 syn keyword xsMacro HEKfARG HE_SVSLOT HEf_SVKEY HINTS_REFCNT_INIT syn keyword xsMacro HINTS_REFCNT_LOCK HINTS_REFCNT_TERM HINTS_REFCNT_UNLOCK syn keyword xsMacro HINT_BLOCK_SCOPE HINT_BYTES HINT_EXPLICIT_STRICT_REFS syn keyword xsMacro HINT_EXPLICIT_STRICT_SUBS HINT_EXPLICIT_STRICT_VARS syn keyword xsMacro HINT_FEATURE_MASK HINT_FEATURE_SHIFT HINT_FILETEST_ACCESS syn keyword xsMacro HINT_INTEGER HINT_LEXICAL_IO_IN HINT_LEXICAL_IO_OUT syn keyword xsMacro HINT_LOCALE HINT_LOCALE_PARTIAL HINT_LOCALIZE_HH syn keyword xsMacro HINT_NEW_BINARY HINT_NEW_FLOAT HINT_NEW_INTEGER syn keyword xsMacro HINT_NEW_RE HINT_NEW_STRING HINT_NO_AMAGIC HINT_RE_EVAL syn keyword xsMacro HINT_RE_FLAGS HINT_RE_TAINT HINT_SORT_MERGESORT syn keyword xsMacro HINT_SORT_QUICKSORT HINT_SORT_SORT_BITS HINT_SORT_STABLE syn keyword xsMacro HINT_STRICT_REFS HINT_STRICT_SUBS HINT_STRICT_VARS syn keyword xsMacro HINT_UNI_8_BIT HINT_UTF8 HS_APIVERLEN_MAX HS_CXT syn keyword xsMacro HS_GETAPIVERLEN HS_GETINTERPSIZE HS_GETXSVERLEN HS_KEY syn keyword xsMacro HS_KEYp HS_XSVERLEN_MAX HSf_IMP_CXT HSf_NOCHK HSf_POPMARK syn keyword xsMacro HSf_SETXSUBFN HSm_APIVERLEN HSm_INTRPSIZE HSm_KEY_MATCH syn keyword xsMacro HSm_XSVERLEN HV_DELETE HV_DISABLE_UVAR_XKEY syn keyword xsMacro HV_FETCH_EMPTY_HE HV_FETCH_ISEXISTS HV_FETCH_ISSTORE syn keyword xsMacro HV_FETCH_JUST_SV HV_FETCH_LVALUE syn keyword xsMacro HV_ITERNEXT_WANTPLACEHOLDERS HV_NAME_SETALL syn keyword xsMacro HVhek_ENABLEHVKFLAGS HVhek_FREEKEY HVhek_KEYCANONICAL syn keyword xsMacro HVhek_MASK HVhek_PLACEHOLD HVhek_UNSHARED HVhek_UTF8 syn keyword xsMacro HVhek_WASUTF8 HVrhek_IV HVrhek_PV HVrhek_PV_UTF8 syn keyword xsMacro HVrhek_UV HVrhek_delete HVrhek_typemask HVrhek_undef syn keyword xsMacro HYPHEN_UTF8 H_EBCDIC_TABLES H_PERL H_REGCHARCLASS syn keyword xsMacro H_UNICODE_CONSTANTS H_UTF8 HeHASH HeKEY HeKEY_hek syn keyword xsMacro HeKEY_sv HeKFLAGS HeKLEN HeKLEN_UTF8 HeKUTF8 HeKWASUTF8 syn keyword xsMacro HeNEXT HePV HeSVKEY HeSVKEY_force HeSVKEY_set HeUTF8 syn keyword xsMacro HeVAL HvAMAGIC HvAMAGIC_off HvAMAGIC_on HvARRAY HvAUX syn keyword xsMacro HvAUXf_NO_DEREF HvAUXf_SCAN_STASH HvEITER HvEITER_get syn keyword xsMacro HvEITER_set HvENAME HvENAMELEN HvENAMELEN_get HvENAMEUTF8 syn keyword xsMacro HvENAME_HEK HvENAME_HEK_NN HvENAME_get HvFILL HvHASKFLAGS syn keyword xsMacro HvHASKFLAGS_off HvHASKFLAGS_on HvKEYS HvLASTRAND_get syn keyword xsMacro HvLAZYDEL HvLAZYDEL_off HvLAZYDEL_on HvMAX HvMROMETA syn keyword xsMacro HvNAME HvNAMELEN HvNAMELEN_get HvNAMEUTF8 HvNAME_HEK syn keyword xsMacro HvNAME_HEK_NN HvNAME_get HvPLACEHOLDERS syn keyword xsMacro HvPLACEHOLDERS_get HvPLACEHOLDERS_set HvRAND_get HvRITER syn keyword xsMacro HvRITER_get HvRITER_set HvSHAREKEYS HvSHAREKEYS_off syn keyword xsMacro HvSHAREKEYS_on HvTOTALKEYS HvUSEDKEYS I16SIZE I16TYPE syn keyword xsMacro I16_MAX I16_MIN I32SIZE I32TYPE I32_MAX I32_MAX_P1 syn keyword xsMacro I32_MIN I64SIZE I64TYPE I8SIZE I8TYPE I8_TO_NATIVE syn keyword xsMacro I8_TO_NATIVE_UTF8 IF IFMATCH IFMATCH_A IFMATCH_A_fail syn keyword xsMacro IFTHEN IGNORE_PAT_MOD ILLEGAL_UTF8_BYTE INIT INIT_THREADS syn keyword xsMacro INIT_TRACK_MEMPOOL INSUBP INT2PTR INT32_MIN INT64_C syn keyword xsMacro INT64_MIN INTSIZE INT_64_T INT_PAT_MODS IN_BYTES syn keyword xsMacro IN_ENCODING IN_LC IN_LC_ALL_COMPILETIME IN_LC_ALL_RUNTIME syn keyword xsMacro IN_LC_COMPILETIME IN_LC_PARTIAL_COMPILETIME syn keyword xsMacro IN_LC_PARTIAL_RUNTIME IN_LC_RUNTIME IN_LOCALE syn keyword xsMacro IN_LOCALE_COMPILETIME IN_LOCALE_RUNTIME syn keyword xsMacro IN_PERL_COMPILETIME IN_PERL_RUNTIME IN_SOME_LOCALE_FORM syn keyword xsMacro IN_SOME_LOCALE_FORM_COMPILETIME syn keyword xsMacro IN_SOME_LOCALE_FORM_RUNTIME IN_UNI_8_BIT syn keyword xsMacro IN_UTF8_CTYPE_LOCALE IOCPARM_LEN IOf_ARGV IOf_DIDTOP syn keyword xsMacro IOf_FAKE_DIRP IOf_FLUSH IOf_NOLINE IOf_START IOf_UNTAINT syn keyword xsMacro ISA_VERSION_OBJ IS_ANYOF_TRIE syn keyword xsMacro IS_NUMBER_GREATER_THAN_UV_MAX IS_NUMBER_INFINITY syn keyword xsMacro IS_NUMBER_IN_UV IS_NUMBER_NAN IS_NUMBER_NEG syn keyword xsMacro IS_NUMBER_NOT_INT IS_NUMBER_TRAILING IS_NUMERIC_RADIX syn keyword xsMacro IS_PADCONST IS_PADGV IS_SAFE_PATHNAME IS_SAFE_SYSCALL syn keyword xsMacro IS_TRIE_AC IS_UTF8_CHAR IS_UTF8_CHAR_FAST IVSIZE IVTYPE syn keyword xsMacro IV_DIG IV_MAX IV_MAX_P1 IV_MIN I_32 I_ARPA_INET I_ASSERT syn keyword xsMacro I_BFD I_CRYPT I_DBM I_DIRENT I_DLFCN I_EXECINFO I_FENV syn keyword xsMacro I_FLOAT I_GDBM I_GDBMNDBM I_GRP I_INTTYPES I_LANGINFO syn keyword xsMacro I_LIMITS I_LOCALE I_MATH I_MNTENT I_NETDB I_NETINET_IN syn keyword xsMacro I_NETINET_TCP I_POLL I_PTHREAD I_PWD I_QUADMATH I_SHADOW syn keyword xsMacro I_STDARG I_STDBOOL I_STDDEF I_STDINT I_STDLIB I_STRING syn keyword xsMacro I_SYSLOG I_SYSUIO I_SYSUTSNAME I_SYS_DIR I_SYS_FILE syn keyword xsMacro I_SYS_IOCTL I_SYS_MOUNT I_SYS_PARAM I_SYS_POLL syn keyword xsMacro I_SYS_RESOURCE I_SYS_SELECT I_SYS_STAT I_SYS_STATFS syn keyword xsMacro I_SYS_STATVFS I_SYS_TIME I_SYS_TIMES I_SYS_TYPES I_SYS_UN syn keyword xsMacro I_SYS_VFS I_SYS_WAIT I_TERMIOS I_TIME I_UNISTD I_USTAT syn keyword xsMacro I_UTIME I_V I_VALUES IoANY IoBOTTOM_GV IoBOTTOM_NAME syn keyword xsMacro IoDIRP IoFLAGS IoFMT_GV IoFMT_NAME IoIFP IoLINES syn keyword xsMacro IoLINES_LEFT IoOFP IoPAGE IoPAGE_LEN IoTOP_GV IoTOP_NAME syn keyword xsMacro IoTYPE IoTYPE_APPEND IoTYPE_CLOSED IoTYPE_IMPLICIT syn keyword xsMacro IoTYPE_NUMERIC IoTYPE_PIPE IoTYPE_RDONLY IoTYPE_RDWR syn keyword xsMacro IoTYPE_SOCKET IoTYPE_STD IoTYPE_WRONLY IsSet syn keyword xsMacro JMPENV_BOOTSTRAP JMPENV_JUMP JMPENV_POP JMPENV_PUSH JOIN syn keyword xsMacro KEEPCOPY_PAT_MOD KEEPCOPY_PAT_MODS KEEPS KEEPS_next syn keyword xsMacro KEEPS_next_fail KELVIN_SIGN KEYWORD_PLUGIN_DECLINE syn keyword xsMacro KEYWORD_PLUGIN_EXPR KEYWORD_PLUGIN_STMT KEY_AUTOLOAD syn keyword xsMacro KEY_BEGIN KEY_CHECK KEY_DESTROY KEY_END KEY_INIT KEY_NULL syn keyword xsMacro KEY_UNITCHECK KEY___DATA__ KEY___END__ KEY___FILE__ syn keyword xsMacro KEY___LINE__ KEY___PACKAGE__ KEY___SUB__ KEY_abs syn keyword xsMacro KEY_accept KEY_alarm KEY_and KEY_atan2 KEY_bind syn keyword xsMacro KEY_binmode KEY_bless KEY_break KEY_caller KEY_chdir syn keyword xsMacro KEY_chmod KEY_chomp KEY_chop KEY_chown KEY_chr KEY_chroot syn keyword xsMacro KEY_close KEY_closedir KEY_cmp KEY_connect KEY_continue syn keyword xsMacro KEY_cos KEY_crypt KEY_dbmclose KEY_dbmopen KEY_default syn keyword xsMacro KEY_defined KEY_delete KEY_die KEY_do KEY_dump KEY_each syn keyword xsMacro KEY_else KEY_elsif KEY_endgrent KEY_endhostent syn keyword xsMacro KEY_endnetent KEY_endprotoent KEY_endpwent KEY_endservent syn keyword xsMacro KEY_eof KEY_eq KEY_eval KEY_evalbytes KEY_exec KEY_exists syn keyword xsMacro KEY_exit KEY_exp KEY_fc KEY_fcntl KEY_fileno KEY_flock syn keyword xsMacro KEY_for KEY_foreach KEY_fork KEY_format KEY_formline syn keyword xsMacro KEY_ge KEY_getc KEY_getgrent KEY_getgrgid KEY_getgrnam syn keyword xsMacro KEY_gethostbyaddr KEY_gethostbyname KEY_gethostent syn keyword xsMacro KEY_getlogin KEY_getnetbyaddr KEY_getnetbyname syn keyword xsMacro KEY_getnetent KEY_getpeername KEY_getpgrp KEY_getppid syn keyword xsMacro KEY_getpriority KEY_getprotobyname KEY_getprotobynumber syn keyword xsMacro KEY_getprotoent KEY_getpwent KEY_getpwnam KEY_getpwuid syn keyword xsMacro KEY_getservbyname KEY_getservbyport KEY_getservent syn keyword xsMacro KEY_getsockname KEY_getsockopt KEY_given KEY_glob syn keyword xsMacro KEY_gmtime KEY_goto KEY_grep KEY_gt KEY_hex KEY_if syn keyword xsMacro KEY_index KEY_int KEY_ioctl KEY_join KEY_keys KEY_kill syn keyword xsMacro KEY_last KEY_lc KEY_lcfirst KEY_le KEY_length KEY_link syn keyword xsMacro KEY_listen KEY_local KEY_localtime KEY_lock KEY_log syn keyword xsMacro KEY_lstat KEY_lt KEY_m KEY_map KEY_mkdir KEY_msgctl syn keyword xsMacro KEY_msgget KEY_msgrcv KEY_msgsnd KEY_my KEY_ne KEY_next syn keyword xsMacro KEY_no KEY_not KEY_oct KEY_open KEY_opendir KEY_or syn keyword xsMacro KEY_ord KEY_our KEY_pack KEY_package KEY_pipe KEY_pop syn keyword xsMacro KEY_pos KEY_print KEY_printf KEY_prototype KEY_push KEY_q syn keyword xsMacro KEY_qq KEY_qr KEY_quotemeta KEY_qw KEY_qx KEY_rand syn keyword xsMacro KEY_read KEY_readdir KEY_readline KEY_readlink syn keyword xsMacro KEY_readpipe KEY_recv KEY_redo KEY_ref KEY_rename syn keyword xsMacro KEY_require KEY_reset KEY_return KEY_reverse syn keyword xsMacro KEY_rewinddir KEY_rindex KEY_rmdir KEY_s KEY_say syn keyword xsMacro KEY_scalar KEY_seek KEY_seekdir KEY_select KEY_semctl syn keyword xsMacro KEY_semget KEY_semop KEY_send KEY_setgrent KEY_sethostent syn keyword xsMacro KEY_setnetent KEY_setpgrp KEY_setpriority KEY_setprotoent syn keyword xsMacro KEY_setpwent KEY_setservent KEY_setsockopt KEY_shift syn keyword xsMacro KEY_shmctl KEY_shmget KEY_shmread KEY_shmwrite syn keyword xsMacro KEY_shutdown KEY_sin KEY_sleep KEY_socket KEY_socketpair syn keyword xsMacro KEY_sort KEY_splice KEY_split KEY_sprintf KEY_sqrt syn keyword xsMacro KEY_srand KEY_stat KEY_state KEY_study KEY_sub KEY_substr syn keyword xsMacro KEY_symlink KEY_syscall KEY_sysopen KEY_sysread syn keyword xsMacro KEY_sysseek KEY_system KEY_syswrite KEY_tell KEY_telldir syn keyword xsMacro KEY_tie KEY_tied KEY_time KEY_times KEY_tr KEY_truncate syn keyword xsMacro KEY_uc KEY_ucfirst KEY_umask KEY_undef KEY_unless syn keyword xsMacro KEY_unlink KEY_unpack KEY_unshift KEY_untie KEY_until syn keyword xsMacro KEY_use KEY_utime KEY_values KEY_vec KEY_wait KEY_waitpid syn keyword xsMacro KEY_wantarray KEY_warn KEY_when KEY_while KEY_write KEY_x syn keyword xsMacro KEY_xor KEY_y LABEL LATIN1_TO_NATIVE syn keyword xsMacro LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE syn keyword xsMacro LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE_NATIVE syn keyword xsMacro LATIN_CAPITAL_LETTER_SHARP_S syn keyword xsMacro LATIN_CAPITAL_LETTER_SHARP_S_UTF8 syn keyword xsMacro LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS syn keyword xsMacro LATIN_SMALL_LETTER_A_WITH_RING_ABOVE syn keyword xsMacro LATIN_SMALL_LETTER_A_WITH_RING_ABOVE_NATIVE syn keyword xsMacro LATIN_SMALL_LETTER_LONG_S LATIN_SMALL_LETTER_LONG_S_UTF8 syn keyword xsMacro LATIN_SMALL_LETTER_SHARP_S syn keyword xsMacro LATIN_SMALL_LETTER_SHARP_S_NATIVE syn keyword xsMacro LATIN_SMALL_LETTER_Y_WITH_DIAERESIS syn keyword xsMacro LATIN_SMALL_LETTER_Y_WITH_DIAERESIS_NATIVE syn keyword xsMacro LATIN_SMALL_LIGATURE_LONG_S_T syn keyword xsMacro LATIN_SMALL_LIGATURE_LONG_S_T_UTF8 syn keyword xsMacro LATIN_SMALL_LIGATURE_ST LATIN_SMALL_LIGATURE_ST_UTF8 syn keyword xsMacro LDBL_DIG LEAVE LEAVESUB LEAVE_SCOPE LEAVE_with_name syn keyword xsMacro LEX_DONT_CLOSE_RSFP LEX_EVALBYTES LEX_IGNORE_UTF8_HINTS syn keyword xsMacro LEX_KEEP_PREVIOUS LEX_NOTPARSING LEX_START_COPIED syn keyword xsMacro LEX_START_FLAGS LEX_START_SAME_FILTER LEX_STUFF_UTF8 syn keyword xsMacro LF_NATIVE LIBERAL LIBM_LIB_VERSION LIB_INVARG LIKELY syn keyword xsMacro LINKLIST LNBREAK LOADED_FILE_PROBE LOADING_FILE_PROBE syn keyword xsMacro LOCAL LOCALE_PAT_MOD LOCALE_PAT_MODS LOCALTIME_MAX syn keyword xsMacro LOCALTIME_MIN LOCALTIME_R LOCALTIME_R_PROTO syn keyword xsMacro LOCAL_PATCH_COUNT LOCK_DOLLARZERO_MUTEX syn keyword xsMacro LOCK_LC_NUMERIC_STANDARD LOCK_NUMERIC_STANDARD LOC_SED syn keyword xsMacro LOGICAL LONGDOUBLE_BIG_ENDIAN LONGDOUBLE_DOUBLEDOUBLE syn keyword xsMacro LONGDOUBLE_LITTLE_ENDIAN LONGDOUBLE_X86_80_BIT LONGJMP syn keyword xsMacro LONGLONGSIZE LONGSIZE LONG_DOUBLEKIND LONG_DOUBLESIZE syn keyword xsMacro LONG_DOUBLE_EQUALS_DOUBLE LONG_DOUBLE_IS_DOUBLE syn keyword xsMacro LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN syn keyword xsMacro LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN syn keyword xsMacro LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN syn keyword xsMacro LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN syn keyword xsMacro LONG_DOUBLE_IS_UNKNOWN_FORMAT syn keyword xsMacro LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN syn keyword xsMacro LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN LOOPEX syn keyword xsMacro LOOP_PAT_MODS LSEEKSIZE LSTOP LSTOPSUB LVRET L_R_TZSET syn keyword xsMacro LvFLAGS LvSTARGOFF LvTARG LvTARGLEN LvTARGOFF LvTYPE syn keyword xsMacro MALLOC_CHECK_TAINT MALLOC_CHECK_TAINT2 MALLOC_CTL_H syn keyword xsMacro MALLOC_INIT MALLOC_OVERHEAD MALLOC_TERM syn keyword xsMacro MALLOC_TOO_LATE_FOR MARKPOINT MARKPOINT_next syn keyword xsMacro MARKPOINT_next_fail MASK MATCHOP MAXARG MAXO MAXPATHLEN syn keyword xsMacro MAXSYSFD MAX_CHARSET_NAME_LENGTH MAX_FEATURE_LEN syn keyword xsMacro MAX_PORTABLE_UTF8_TWO_BYTE syn keyword xsMacro MAX_PRINT_A_FOR_USE_ONLY_BY_REGCOMP_DOT_C syn keyword xsMacro MAX_RECURSE_EVAL_NOCHANGE_DEPTH MAX_UTF8_TWO_BYTE syn keyword xsMacro MAYBE_DEREF_GV MAYBE_DEREF_GV_flags MAYBE_DEREF_GV_nomg syn keyword xsMacro MBOL MB_CUR_MAX MDEREF_ACTION_MASK MDEREF_AV_gvav_aelem syn keyword xsMacro MDEREF_AV_gvsv_vivify_rv2av_aelem MDEREF_AV_padav_aelem syn keyword xsMacro MDEREF_AV_padsv_vivify_rv2av_aelem syn keyword xsMacro MDEREF_AV_pop_rv2av_aelem MDEREF_AV_vivify_rv2av_aelem syn keyword xsMacro MDEREF_FLAG_last MDEREF_HV_gvhv_helem syn keyword xsMacro MDEREF_HV_gvsv_vivify_rv2hv_helem MDEREF_HV_padhv_helem syn keyword xsMacro MDEREF_HV_padsv_vivify_rv2hv_helem syn keyword xsMacro MDEREF_HV_pop_rv2hv_helem MDEREF_HV_vivify_rv2hv_helem syn keyword xsMacro MDEREF_INDEX_MASK MDEREF_INDEX_const MDEREF_INDEX_gvsv syn keyword xsMacro MDEREF_INDEX_none MDEREF_INDEX_padsv MDEREF_MASK syn keyword xsMacro MDEREF_SHIFT MDEREF_reload MEMBER_TO_FPTR MEM_ALIGNBYTES syn keyword xsMacro MEM_LOG_ALLOC MEM_LOG_FREE MEM_LOG_REALLOC MEM_SIZE syn keyword xsMacro MEM_SIZE_MAX MEM_WRAP_CHECK MEM_WRAP_CHECK_ syn keyword xsMacro MEM_WRAP_CHECK_1 MEM_WRAP_CHECK_2 MEOL METHOD MEXTEND syn keyword xsMacro MGf_BYTES MGf_COPY MGf_DUP MGf_GSKIP MGf_LOCAL syn keyword xsMacro MGf_MINMATCH MGf_PERSIST MGf_REFCOUNTED MGf_REQUIRE_GV syn keyword xsMacro MGf_TAINTEDDIR MICRO_SIGN MICRO_SIGN_NATIVE MINMOD syn keyword xsMacro MJD_OFFSET_DEBUG MRO_GET_PRIVATE_DATA MSPAGAIN MULOP syn keyword xsMacro MULTICALL MULTILINE_PAT_MOD MULTIPLICITY MURMUR_C1 syn keyword xsMacro MURMUR_C2 MURMUR_C3 MURMUR_C4 MURMUR_C5 MURMUR_DOBLOCK syn keyword xsMacro MURMUR_DOBYTES MUTABLE_AV MUTABLE_CV MUTABLE_GV syn keyword xsMacro MUTABLE_HV MUTABLE_IO MUTABLE_PTR MUTABLE_SV syn keyword xsMacro MUTEX_DESTROY MUTEX_INIT MUTEX_INIT_NEEDS_MUTEX_ZEROED syn keyword xsMacro MUTEX_LOCK MUTEX_UNLOCK MY MY_CXT_CLONE MY_CXT_INDEX syn keyword xsMacro MY_CXT_INIT MY_CXT_INIT_ARG MY_CXT_INIT_INTERP M_PAT_MODS syn keyword xsMacro MgBYTEPOS MgBYTEPOS_set MgPV MgPV_const MgPV_nolen_const syn keyword xsMacro MgTAINTEDDIR MgTAINTEDDIR_off MgTAINTEDDIR_on Mkdir Move syn keyword xsMacro MoveD NAN_COMPARE_BROKEN NATIVE8_TO_UNI syn keyword xsMacro NATIVE_BYTE_IS_INVARIANT NATIVE_SKIP NATIVE_TO_ASCII syn keyword xsMacro NATIVE_TO_I8 NATIVE_TO_LATIN1 NATIVE_TO_UNI NATIVE_TO_UTF syn keyword xsMacro NATIVE_UTF8_TO_I8 NBOUND NBOUNDA NBOUNDL NBOUNDU syn keyword xsMacro NBSP_NATIVE NBSP_UTF8 NDBM_H_USES_PROTOTYPES NDEBUG syn keyword xsMacro NEED_PTHREAD_INIT NEED_VA_COPY NEGATIVE_INDICES_VAR syn keyword xsMacro NETDB_R_OBSOLETE NEWSV NEW_VERSION NEXTOPER syn keyword xsMacro NEXT_LINE_CHAR NEXT_OFF NGROUPP NOAMP NOCAPTURE_PAT_MOD syn keyword xsMacro NOCAPTURE_PAT_MODS NODE_ALIGN NODE_ALIGN_FILL NODE_STEP_B syn keyword xsMacro NODE_STEP_REGNODE NODE_SZ_STR NOLINE NONDESTRUCT_PAT_MOD syn keyword xsMacro NONDESTRUCT_PAT_MODS syn keyword xsMacro NON_OTHER_COUNT_FOR_USE_ONLY_BY_REGCOMP_DOT_C NOOP syn keyword xsMacro NORETURN_FUNCTION_END NORMAL NOTHING NOTOP NOT_IN_PAD syn keyword xsMacro NOT_REACHED NO_ENV_ARRAY_IN_MAIN NO_LOCALE syn keyword xsMacro NO_LOCALECONV_MON_THOUSANDS_SEP NO_TAINT_SUPPORT NPOSIXA syn keyword xsMacro NPOSIXD NPOSIXL NPOSIXU NREF NREFF NREFFA NREFFL NREFFU syn keyword xsMacro NSIG NUM2PTR NUM_ANYOF_CODE_POINTS NVSIZE NVTYPE syn keyword xsMacro NV_BIG_ENDIAN NV_DIG NV_EPSILON NV_INF NV_LITTLE_ENDIAN syn keyword xsMacro NV_MANT_DIG NV_MAX NV_MAX_10_EXP NV_MAX_EXP NV_MIN syn keyword xsMacro NV_MIN_10_EXP NV_MIN_EXP NV_MIX_ENDIAN NV_NAN syn keyword xsMacro NV_OVERFLOWS_INTEGERS_AT NV_PRESERVES_UV_BITS syn keyword xsMacro NV_WITHIN_IV NV_WITHIN_UV New NewOp NewOpSz Newc Newx syn keyword xsMacro Newxc Newxz Newz NofAMmeth Null Nullav Nullch Nullcv syn keyword xsMacro Nullfp Nullgv Nullhe Nullhek Nullhv Nullop Nullsv OASHIFT syn keyword xsMacro OCSHIFT OCTAL_VALUE OFFUNISKIP ONCE_PAT_MOD ONCE_PAT_MODS syn keyword xsMacro OPEN OPERAND OPFAIL OPSLOT_HEADER OPSLOT_HEADER_P syn keyword xsMacro OPTIMIZED OP_BINARY OP_CHECK_MUTEX_INIT syn keyword xsMacro OP_CHECK_MUTEX_LOCK OP_CHECK_MUTEX_TERM syn keyword xsMacro OP_CHECK_MUTEX_UNLOCK OP_CLASS OP_DESC OP_ENTRY_PROBE syn keyword xsMacro OP_FREED OP_GIMME OP_GIMME_REVERSE OP_IS_DIRHOP syn keyword xsMacro OP_IS_FILETEST OP_IS_FILETEST_ACCESS OP_IS_INFIX_BIT syn keyword xsMacro OP_IS_NUMCOMPARE OP_IS_SOCKET OP_LVALUE_NO_CROAK OP_NAME syn keyword xsMacro OP_REFCNT_INIT OP_REFCNT_LOCK OP_REFCNT_TERM syn keyword xsMacro OP_REFCNT_UNLOCK OP_SIBLING OP_TYPE_IS OP_TYPE_ISNT syn keyword xsMacro OP_TYPE_ISNT_AND_WASNT OP_TYPE_ISNT_AND_WASNT_NN syn keyword xsMacro OP_TYPE_ISNT_NN OP_TYPE_IS_NN OP_TYPE_IS_OR_WAS syn keyword xsMacro OP_TYPE_IS_OR_WAS_NN OROP OROR OSNAME OSVERS O_CREAT syn keyword xsMacro O_RDONLY O_RDWR O_TEXT O_WRONLY Off Off_t_size syn keyword xsMacro OpHAS_SIBLING OpLASTSIB_set OpMAYBESIB_set OpMORESIB_set syn keyword xsMacro OpREFCNT_dec OpREFCNT_inc OpREFCNT_set OpSIBLING OpSLAB syn keyword xsMacro OpSLOT OpslabREFCNT_dec OpslabREFCNT_dec_padok OutCopFILE syn keyword xsMacro PADNAME_FROM_PV PADNAMEt_LVALUE PADNAMEt_OUR syn keyword xsMacro PADNAMEt_OUTER PADNAMEt_STATE PADNAMEt_TYPED PAD_BASE_SV syn keyword xsMacro PAD_CLONE_VARS PAD_COMPNAME PAD_COMPNAME_FLAGS syn keyword xsMacro PAD_COMPNAME_FLAGS_isOUR PAD_COMPNAME_GEN syn keyword xsMacro PAD_COMPNAME_GEN_set PAD_COMPNAME_OURSTASH syn keyword xsMacro PAD_COMPNAME_PV PAD_COMPNAME_SV PAD_COMPNAME_TYPE syn keyword xsMacro PAD_FAKELEX_ANON PAD_FAKELEX_MULTI PAD_RESTORE_LOCAL syn keyword xsMacro PAD_SAVE_LOCAL PAD_SAVE_SETNULLPAD PAD_SETSV PAD_SET_CUR syn keyword xsMacro PAD_SET_CUR_NOSAVE PAD_SV PAD_SVl PARENT_FAKELEX_FLAGS syn keyword xsMacro PARENT_PAD_INDEX PARSE_OPTIONAL PASS1 PASS2 PATCHLEVEL syn keyword xsMacro PERLDB_ALL PERLDB_GOTO PERLDB_INTER PERLDB_LINE syn keyword xsMacro PERLDB_NAMEANON PERLDB_NAMEEVAL PERLDB_NOOPT syn keyword xsMacro PERLDB_SAVESRC PERLDB_SAVESRC_INVALID syn keyword xsMacro PERLDB_SAVESRC_NOSUBS PERLDB_SINGLE PERLDB_SUB syn keyword xsMacro PERLDB_SUBLINE PERLDB_SUB_NN PERLDBf_GOTO PERLDBf_INTER syn keyword xsMacro PERLDBf_LINE PERLDBf_NAMEANON PERLDBf_NAMEEVAL syn keyword xsMacro PERLDBf_NONAME PERLDBf_NOOPT PERLDBf_SAVESRC syn keyword xsMacro PERLDBf_SAVESRC_INVALID PERLDBf_SAVESRC_NOSUBS syn keyword xsMacro PERLDBf_SINGLE PERLDBf_SUB PERLDBf_SUBLINE syn keyword xsMacro PERLIOBUF_DEFAULT_BUFSIZ PERLIO_DUP_CLONE PERLIO_DUP_FD syn keyword xsMacro PERLIO_FUNCS_CAST PERLIO_FUNCS_CONST PERLIO_FUNCS_DECL syn keyword xsMacro PERLIO_F_APPEND PERLIO_F_CANREAD PERLIO_F_CANWRITE syn keyword xsMacro PERLIO_F_CLEARED PERLIO_F_CRLF PERLIO_F_EOF syn keyword xsMacro PERLIO_F_ERROR PERLIO_F_FASTGETS PERLIO_F_LINEBUF syn keyword xsMacro PERLIO_F_NOTREG PERLIO_F_OPEN PERLIO_F_RDBUF syn keyword xsMacro PERLIO_F_TEMP PERLIO_F_TRUNCATE PERLIO_F_TTY syn keyword xsMacro PERLIO_F_UNBUF PERLIO_F_UTF8 PERLIO_F_WRBUF PERLIO_INIT syn keyword xsMacro PERLIO_IS_STDIO PERLIO_K_BUFFERED PERLIO_K_CANCRLF syn keyword xsMacro PERLIO_K_DESTRUCT PERLIO_K_DUMMY PERLIO_K_FASTGETS syn keyword xsMacro PERLIO_K_MULTIARG PERLIO_K_RAW PERLIO_K_UTF8 syn keyword xsMacro PERLIO_LAYERS PERLIO_NOT_STDIO PERLIO_STDTEXT PERLIO_TERM syn keyword xsMacro PERLIO_USING_CRLF PERLSI_DESTROY PERLSI_DIEHOOK syn keyword xsMacro PERLSI_MAGIC PERLSI_MAIN PERLSI_OVERLOAD PERLSI_REQUIRE syn keyword xsMacro PERLSI_SIGNAL PERLSI_SORT PERLSI_UNDEF PERLSI_UNKNOWN syn keyword xsMacro PERLSI_WARNHOOK PERL_ABS PERL_ALLOC_CHECK PERL_ANY_COW syn keyword xsMacro PERL_API_REVISION PERL_API_SUBVERSION PERL_API_VERSION syn keyword xsMacro PERL_API_VERSION_STRING PERL_ARENA_ROOTS_SIZE syn keyword xsMacro PERL_ARENA_SIZE PERL_ARGS_ASSERT_ADD_ABOVE_LATIN1_FOLDS syn keyword xsMacro PERL_ARGS_ASSERT_ADD_DATA syn keyword xsMacro PERL_ARGS_ASSERT_ADD_MULTI_MATCH syn keyword xsMacro PERL_ARGS_ASSERT_ADD_UTF16_TEXTFILTER syn keyword xsMacro PERL_ARGS_ASSERT_ADJUST_SIZE_AND_FIND_BUCKET syn keyword xsMacro PERL_ARGS_ASSERT_ADVANCE_ONE_SB syn keyword xsMacro PERL_ARGS_ASSERT_ADVANCE_ONE_WB syn keyword xsMacro PERL_ARGS_ASSERT_ALLOCCOPSTASH PERL_ARGS_ASSERT_ALLOCMY syn keyword xsMacro PERL_ARGS_ASSERT_ALLOC_MAYBE_POPULATE_EXACT syn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_CALL PERL_ARGS_ASSERT_AMAGIC_CMP syn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE syn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL syn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_I_NCMP syn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_NCMP syn keyword xsMacro PERL_ARGS_ASSERT_ANONYMISE_CV_MAYBE syn keyword xsMacro PERL_ARGS_ASSERT_ANY_DUP syn keyword xsMacro PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE syn keyword xsMacro PERL_ARGS_ASSERT_APPLY PERL_ARGS_ASSERT_APPLY_ATTRS syn keyword xsMacro PERL_ARGS_ASSERT_APPLY_ATTRS_MY syn keyword xsMacro PERL_ARGS_ASSERT_APPLY_ATTRS_STRING syn keyword xsMacro PERL_ARGS_ASSERT_ASSERT_UFT8_CACHE_COHERENT syn keyword xsMacro PERL_ARGS_ASSERT_AV_ARYLEN_P PERL_ARGS_ASSERT_AV_CLEAR syn keyword xsMacro PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH syn keyword xsMacro PERL_ARGS_ASSERT_AV_CREATE_AND_UNSHIFT_ONE syn keyword xsMacro PERL_ARGS_ASSERT_AV_DELETE PERL_ARGS_ASSERT_AV_EXISTS syn keyword xsMacro PERL_ARGS_ASSERT_AV_EXTEND syn keyword xsMacro PERL_ARGS_ASSERT_AV_EXTEND_GUTS PERL_ARGS_ASSERT_AV_FETCH syn keyword xsMacro PERL_ARGS_ASSERT_AV_FILL PERL_ARGS_ASSERT_AV_ITER_P syn keyword xsMacro PERL_ARGS_ASSERT_AV_LEN PERL_ARGS_ASSERT_AV_MAKE syn keyword xsMacro PERL_ARGS_ASSERT_AV_POP PERL_ARGS_ASSERT_AV_PUSH syn keyword xsMacro PERL_ARGS_ASSERT_AV_REIFY PERL_ARGS_ASSERT_AV_SHIFT syn keyword xsMacro PERL_ARGS_ASSERT_AV_STORE PERL_ARGS_ASSERT_AV_TOP_INDEX syn keyword xsMacro PERL_ARGS_ASSERT_AV_UNDEF PERL_ARGS_ASSERT_AV_UNSHIFT syn keyword xsMacro PERL_ARGS_ASSERT_BACKUP_ONE_SB syn keyword xsMacro PERL_ARGS_ASSERT_BACKUP_ONE_WB syn keyword xsMacro PERL_ARGS_ASSERT_BAD_TYPE_GV PERL_ARGS_ASSERT_BAD_TYPE_PV syn keyword xsMacro PERL_ARGS_ASSERT_BIND_MATCH syn keyword xsMacro PERL_ARGS_ASSERT_BLOCKHOOK_REGISTER syn keyword xsMacro PERL_ARGS_ASSERT_BYTES_CMP_UTF8 syn keyword xsMacro PERL_ARGS_ASSERT_BYTES_FROM_UTF8 syn keyword xsMacro PERL_ARGS_ASSERT_BYTES_TO_UTF8 PERL_ARGS_ASSERT_CALL_ARGV syn keyword xsMacro PERL_ARGS_ASSERT_CALL_LIST PERL_ARGS_ASSERT_CALL_METHOD syn keyword xsMacro PERL_ARGS_ASSERT_CALL_PV PERL_ARGS_ASSERT_CALL_SV syn keyword xsMacro PERL_ARGS_ASSERT_CANDO PERL_ARGS_ASSERT_CHECKCOMMA syn keyword xsMacro PERL_ARGS_ASSERT_CHECK_LOCALE_BOUNDARY_CROSSING syn keyword xsMacro PERL_ARGS_ASSERT_CHECK_TYPE_AND_OPEN syn keyword xsMacro PERL_ARGS_ASSERT_CHECK_UTF8_PRINT syn keyword xsMacro PERL_ARGS_ASSERT_CK_ANONCODE PERL_ARGS_ASSERT_CK_BACKTICK syn keyword xsMacro PERL_ARGS_ASSERT_CK_BITOP PERL_ARGS_ASSERT_CK_CMP syn keyword xsMacro PERL_ARGS_ASSERT_CK_CONCAT PERL_ARGS_ASSERT_CK_DEFINED syn keyword xsMacro PERL_ARGS_ASSERT_CK_DELETE PERL_ARGS_ASSERT_CK_EACH syn keyword xsMacro PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_CORE syn keyword xsMacro PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_LIST syn keyword xsMacro PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO syn keyword xsMacro PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO_OR_LIST syn keyword xsMacro PERL_ARGS_ASSERT_CK_EOF PERL_ARGS_ASSERT_CK_EVAL syn keyword xsMacro PERL_ARGS_ASSERT_CK_EXEC PERL_ARGS_ASSERT_CK_EXISTS syn keyword xsMacro PERL_ARGS_ASSERT_CK_FTST PERL_ARGS_ASSERT_CK_FUN syn keyword xsMacro PERL_ARGS_ASSERT_CK_GLOB PERL_ARGS_ASSERT_CK_GREP syn keyword xsMacro PERL_ARGS_ASSERT_CK_INDEX PERL_ARGS_ASSERT_CK_JOIN syn keyword xsMacro PERL_ARGS_ASSERT_CK_LENGTH PERL_ARGS_ASSERT_CK_LFUN syn keyword xsMacro PERL_ARGS_ASSERT_CK_LISTIOB PERL_ARGS_ASSERT_CK_MATCH syn keyword xsMacro PERL_ARGS_ASSERT_CK_METHOD PERL_ARGS_ASSERT_CK_NULL syn keyword xsMacro PERL_ARGS_ASSERT_CK_OPEN PERL_ARGS_ASSERT_CK_PROTOTYPE syn keyword xsMacro PERL_ARGS_ASSERT_CK_READLINE syn keyword xsMacro PERL_ARGS_ASSERT_CK_REFASSIGN PERL_ARGS_ASSERT_CK_REPEAT syn keyword xsMacro PERL_ARGS_ASSERT_CK_REQUIRE PERL_ARGS_ASSERT_CK_RETURN syn keyword xsMacro PERL_ARGS_ASSERT_CK_RFUN PERL_ARGS_ASSERT_CK_RVCONST syn keyword xsMacro PERL_ARGS_ASSERT_CK_SASSIGN PERL_ARGS_ASSERT_CK_SELECT syn keyword xsMacro PERL_ARGS_ASSERT_CK_SHIFT PERL_ARGS_ASSERT_CK_SMARTMATCH syn keyword xsMacro PERL_ARGS_ASSERT_CK_SORT PERL_ARGS_ASSERT_CK_SPAIR syn keyword xsMacro PERL_ARGS_ASSERT_CK_SPLIT PERL_ARGS_ASSERT_CK_STRINGIFY syn keyword xsMacro PERL_ARGS_ASSERT_CK_SUBR PERL_ARGS_ASSERT_CK_SUBSTR syn keyword xsMacro PERL_ARGS_ASSERT_CK_SVCONST PERL_ARGS_ASSERT_CK_TELL syn keyword xsMacro PERL_ARGS_ASSERT_CK_TRUNC PERL_ARGS_ASSERT_CK_WARNER syn keyword xsMacro PERL_ARGS_ASSERT_CK_WARNER_D syn keyword xsMacro PERL_ARGS_ASSERT_CLEAR_PLACEHOLDERS syn keyword xsMacro PERL_ARGS_ASSERT_CLEAR_SPECIAL_BLOCKS syn keyword xsMacro PERL_ARGS_ASSERT_CLONE_PARAMS_DEL syn keyword xsMacro PERL_ARGS_ASSERT_CLONE_PARAMS_NEW syn keyword xsMacro PERL_ARGS_ASSERT_CLOSEST_COP syn keyword xsMacro PERL_ARGS_ASSERT_COMPUTE_EXACTISH syn keyword xsMacro PERL_ARGS_ASSERT_CONSTRUCT_AHOCORASICK_FROM_TRIE syn keyword xsMacro PERL_ARGS_ASSERT_COP_FETCH_LABEL syn keyword xsMacro PERL_ARGS_ASSERT_COP_FREE syn keyword xsMacro PERL_ARGS_ASSERT_COP_STORE_LABEL syn keyword xsMacro PERL_ARGS_ASSERT_CORESUB_OP syn keyword xsMacro PERL_ARGS_ASSERT_CORE_PROTOTYPE syn keyword xsMacro PERL_ARGS_ASSERT_COULD_IT_BE_A_POSIX_CLASS syn keyword xsMacro PERL_ARGS_ASSERT_CROAK_SV PERL_ARGS_ASSERT_CROAK_XS_USAGE syn keyword xsMacro PERL_ARGS_ASSERT_CURSE PERL_ARGS_ASSERT_CUSTOM_OP_DESC syn keyword xsMacro PERL_ARGS_ASSERT_CUSTOM_OP_GET_FIELD syn keyword xsMacro PERL_ARGS_ASSERT_CUSTOM_OP_NAME syn keyword xsMacro PERL_ARGS_ASSERT_CUSTOM_OP_REGISTER syn keyword xsMacro PERL_ARGS_ASSERT_CVGV_FROM_HEK PERL_ARGS_ASSERT_CVGV_SET syn keyword xsMacro PERL_ARGS_ASSERT_CVSTASH_SET syn keyword xsMacro PERL_ARGS_ASSERT_CV_CKPROTO_LEN_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_CV_CLONE PERL_ARGS_ASSERT_CV_CLONE_INTO syn keyword xsMacro PERL_ARGS_ASSERT_CV_DUMP syn keyword xsMacro PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER syn keyword xsMacro PERL_ARGS_ASSERT_CV_NAME syn keyword xsMacro PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER syn keyword xsMacro PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_CV_UNDEF PERL_ARGS_ASSERT_CV_UNDEF_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_CX_DUMP PERL_ARGS_ASSERT_CX_DUP syn keyword xsMacro PERL_ARGS_ASSERT_DEB PERL_ARGS_ASSERT_DEBOP syn keyword xsMacro PERL_ARGS_ASSERT_DEBPROF syn keyword xsMacro PERL_ARGS_ASSERT_DEBUG_START_MATCH syn keyword xsMacro PERL_ARGS_ASSERT_DEB_NOCONTEXT syn keyword xsMacro PERL_ARGS_ASSERT_DEB_STACK_N syn keyword xsMacro PERL_ARGS_ASSERT_DEFELEM_TARGET PERL_ARGS_ASSERT_DELIMCPY syn keyword xsMacro PERL_ARGS_ASSERT_DEL_SV PERL_ARGS_ASSERT_DESTROY_MATCHER syn keyword xsMacro PERL_ARGS_ASSERT_DIE_SV PERL_ARGS_ASSERT_DIE_UNWIND syn keyword xsMacro PERL_ARGS_ASSERT_DIRP_DUP PERL_ARGS_ASSERT_DIV128 syn keyword xsMacro PERL_ARGS_ASSERT_DOFILE PERL_ARGS_ASSERT_DOFINDLABEL syn keyword xsMacro PERL_ARGS_ASSERT_DOFORM PERL_ARGS_ASSERT_DOONELINER syn keyword xsMacro PERL_ARGS_ASSERT_DOOPEN_PM PERL_ARGS_ASSERT_DOPARSEFORM syn keyword xsMacro PERL_ARGS_ASSERT_DOPOPTOLABEL syn keyword xsMacro PERL_ARGS_ASSERT_DOPOPTOSUB_AT PERL_ARGS_ASSERT_DOREF syn keyword xsMacro PERL_ARGS_ASSERT_DO_AEXEC PERL_ARGS_ASSERT_DO_AEXEC5 syn keyword xsMacro PERL_ARGS_ASSERT_DO_ASPAWN PERL_ARGS_ASSERT_DO_BINMODE syn keyword xsMacro PERL_ARGS_ASSERT_DO_CHOMP PERL_ARGS_ASSERT_DO_DUMP_PAD syn keyword xsMacro PERL_ARGS_ASSERT_DO_EOF PERL_ARGS_ASSERT_DO_EXEC syn keyword xsMacro PERL_ARGS_ASSERT_DO_EXEC3 PERL_ARGS_ASSERT_DO_GVGV_DUMP syn keyword xsMacro PERL_ARGS_ASSERT_DO_GV_DUMP PERL_ARGS_ASSERT_DO_HV_DUMP syn keyword xsMacro PERL_ARGS_ASSERT_DO_IPCCTL PERL_ARGS_ASSERT_DO_IPCGET syn keyword xsMacro PERL_ARGS_ASSERT_DO_JOIN PERL_ARGS_ASSERT_DO_MAGIC_DUMP syn keyword xsMacro PERL_ARGS_ASSERT_DO_MSGRCV PERL_ARGS_ASSERT_DO_MSGSND syn keyword xsMacro PERL_ARGS_ASSERT_DO_NCMP PERL_ARGS_ASSERT_DO_ODDBALL syn keyword xsMacro PERL_ARGS_ASSERT_DO_OPEN PERL_ARGS_ASSERT_DO_OPEN6 syn keyword xsMacro PERL_ARGS_ASSERT_DO_OPEN9 PERL_ARGS_ASSERT_DO_OPENN syn keyword xsMacro PERL_ARGS_ASSERT_DO_OPEN_RAW PERL_ARGS_ASSERT_DO_OP_DUMP syn keyword xsMacro PERL_ARGS_ASSERT_DO_PMOP_DUMP PERL_ARGS_ASSERT_DO_PRINT syn keyword xsMacro PERL_ARGS_ASSERT_DO_SEMOP PERL_ARGS_ASSERT_DO_SHMIO syn keyword xsMacro PERL_ARGS_ASSERT_DO_SPAWN syn keyword xsMacro PERL_ARGS_ASSERT_DO_SPAWN_NOWAIT syn keyword xsMacro PERL_ARGS_ASSERT_DO_SPRINTF PERL_ARGS_ASSERT_DO_SV_DUMP syn keyword xsMacro PERL_ARGS_ASSERT_DO_SYSSEEK PERL_ARGS_ASSERT_DO_TELL syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_COMPLEX syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_COMPLEX_UTF8 syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_COUNT syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_COUNT_UTF8 syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_SIMPLE syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_SIMPLE_UTF8 syn keyword xsMacro PERL_ARGS_ASSERT_DO_VECGET PERL_ARGS_ASSERT_DO_VECSET syn keyword xsMacro PERL_ARGS_ASSERT_DO_VOP PERL_ARGS_ASSERT_DRAND48_INIT_R syn keyword xsMacro PERL_ARGS_ASSERT_DRAND48_R PERL_ARGS_ASSERT_DUMPUNTIL syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_C_BACKTRACE syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_EXEC_POS PERL_ARGS_ASSERT_DUMP_FORM syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_INDENT PERL_ARGS_ASSERT_DUMP_MSTATS syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_PACKSUBS syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_PACKSUBS_PERL syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_SUB PERL_ARGS_ASSERT_DUMP_SUB_PERL syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_SV_CHILD PERL_ARGS_ASSERT_DUMP_TRIE syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_LIST syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_TABLE syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_VINDENT syn keyword xsMacro PERL_ARGS_ASSERT_DUP_ATTRLIST syn keyword xsMacro PERL_ARGS_ASSERT_EMULATE_COP_IO PERL_ARGS_ASSERT_EVAL_PV syn keyword xsMacro PERL_ARGS_ASSERT_EVAL_SV PERL_ARGS_ASSERT_EXEC_FAILED syn keyword xsMacro PERL_ARGS_ASSERT_EXPECT_NUMBER PERL_ARGS_ASSERT_F0CONVERT syn keyword xsMacro PERL_ARGS_ASSERT_FBM_COMPILE PERL_ARGS_ASSERT_FBM_INSTR syn keyword xsMacro PERL_ARGS_ASSERT_FEATURE_IS_ENABLED syn keyword xsMacro PERL_ARGS_ASSERT_FILTER_DEL PERL_ARGS_ASSERT_FILTER_GETS syn keyword xsMacro PERL_ARGS_ASSERT_FILTER_READ PERL_ARGS_ASSERT_FINALIZE_OP syn keyword xsMacro PERL_ARGS_ASSERT_FINALIZE_OPTREE syn keyword xsMacro PERL_ARGS_ASSERT_FIND_AND_FORGET_PMOPS syn keyword xsMacro PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT syn keyword xsMacro PERL_ARGS_ASSERT_FIND_BEGINNING syn keyword xsMacro PERL_ARGS_ASSERT_FIND_BYCLASS syn keyword xsMacro PERL_ARGS_ASSERT_FIND_DEFAULT_STASH syn keyword xsMacro PERL_ARGS_ASSERT_FIND_HASH_SUBSCRIPT syn keyword xsMacro PERL_ARGS_ASSERT_FIND_IN_MY_STASH syn keyword xsMacro PERL_ARGS_ASSERT_FIND_RUNDEFSV2 syn keyword xsMacro PERL_ARGS_ASSERT_FIND_SCRIPT syn keyword xsMacro PERL_ARGS_ASSERT_FIND_UNINIT_VAR syn keyword xsMacro PERL_ARGS_ASSERT_FIRST_SYMBOL syn keyword xsMacro PERL_ARGS_ASSERT_FIXUP_ERRNO_STRING syn keyword xsMacro PERL_ARGS_ASSERT_FOLDEQ PERL_ARGS_ASSERT_FOLDEQ_LATIN1 syn keyword xsMacro PERL_ARGS_ASSERT_FOLDEQ_LOCALE syn keyword xsMacro PERL_ARGS_ASSERT_FOLDEQ_UTF8_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_FOLD_CONSTANTS syn keyword xsMacro PERL_ARGS_ASSERT_FORCE_IDENT syn keyword xsMacro PERL_ARGS_ASSERT_FORCE_STRICT_VERSION syn keyword xsMacro PERL_ARGS_ASSERT_FORCE_VERSION syn keyword xsMacro PERL_ARGS_ASSERT_FORCE_WORD PERL_ARGS_ASSERT_FORGET_PMOP syn keyword xsMacro PERL_ARGS_ASSERT_FORM PERL_ARGS_ASSERT_FORM_NOCONTEXT syn keyword xsMacro PERL_ARGS_ASSERT_FORM_SHORT_OCTAL_WARNING syn keyword xsMacro PERL_ARGS_ASSERT_FPRINTF_NOCONTEXT syn keyword xsMacro PERL_ARGS_ASSERT_FP_DUP syn keyword xsMacro PERL_ARGS_ASSERT_FREE_GLOBAL_STRUCT syn keyword xsMacro PERL_ARGS_ASSERT_GETCWD_SV PERL_ARGS_ASSERT_GETENV_LEN syn keyword xsMacro PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME syn keyword xsMacro PERL_ARGS_ASSERT_GET_ANYOF_CP_LIST_FOR_SSC syn keyword xsMacro PERL_ARGS_ASSERT_GET_AUX_MG PERL_ARGS_ASSERT_GET_AV syn keyword xsMacro PERL_ARGS_ASSERT_GET_CV PERL_ARGS_ASSERT_GET_CVN_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_GET_DB_SUB syn keyword xsMacro PERL_ARGS_ASSERT_GET_DEBUG_OPTS syn keyword xsMacro PERL_ARGS_ASSERT_GET_HASH_SEED PERL_ARGS_ASSERT_GET_HV syn keyword xsMacro PERL_ARGS_ASSERT_GET_INVLIST_ITER_ADDR syn keyword xsMacro PERL_ARGS_ASSERT_GET_INVLIST_OFFSET_ADDR syn keyword xsMacro PERL_ARGS_ASSERT_GET_INVLIST_PREVIOUS_INDEX_ADDR syn keyword xsMacro PERL_ARGS_ASSERT_GET_MSTATS PERL_ARGS_ASSERT_GET_NUM syn keyword xsMacro PERL_ARGS_ASSERT_GET_SV PERL_ARGS_ASSERT_GLOB_2NUMBER syn keyword xsMacro PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB PERL_ARGS_ASSERT_GP_DUP syn keyword xsMacro PERL_ARGS_ASSERT_GROK_ATOUV PERL_ARGS_ASSERT_GROK_BIN syn keyword xsMacro PERL_ARGS_ASSERT_GROK_BSLASH_N syn keyword xsMacro PERL_ARGS_ASSERT_GROK_BSLASH_O syn keyword xsMacro PERL_ARGS_ASSERT_GROK_BSLASH_X PERL_ARGS_ASSERT_GROK_HEX syn keyword xsMacro PERL_ARGS_ASSERT_GROK_INFNAN PERL_ARGS_ASSERT_GROK_NUMBER syn keyword xsMacro PERL_ARGS_ASSERT_GROK_NUMBER_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_GROK_NUMERIC_RADIX syn keyword xsMacro PERL_ARGS_ASSERT_GROK_OCT PERL_ARGS_ASSERT_GROUP_END syn keyword xsMacro PERL_ARGS_ASSERT_GV_AMUPDATE syn keyword xsMacro PERL_ARGS_ASSERT_GV_AUTOLOAD_PV syn keyword xsMacro PERL_ARGS_ASSERT_GV_AUTOLOAD_PVN syn keyword xsMacro PERL_ARGS_ASSERT_GV_AUTOLOAD_SV PERL_ARGS_ASSERT_GV_CHECK syn keyword xsMacro PERL_ARGS_ASSERT_GV_CONST_SV syn keyword xsMacro PERL_ARGS_ASSERT_GV_EFULLNAME syn keyword xsMacro PERL_ARGS_ASSERT_GV_EFULLNAME3 syn keyword xsMacro PERL_ARGS_ASSERT_GV_EFULLNAME4 syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHFILE syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHFILE_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD_PVN_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD_PV_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD_SV_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_PV syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_PVN syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_PVN_AUTOLOAD syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_PV_AUTOLOAD syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_SV syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_SV_AUTOLOAD syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHPV syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHSV PERL_ARGS_ASSERT_GV_FULLNAME syn keyword xsMacro PERL_ARGS_ASSERT_GV_FULLNAME3 syn keyword xsMacro PERL_ARGS_ASSERT_GV_FULLNAME4 PERL_ARGS_ASSERT_GV_INIT_PV syn keyword xsMacro PERL_ARGS_ASSERT_GV_INIT_PVN PERL_ARGS_ASSERT_GV_INIT_SV syn keyword xsMacro PERL_ARGS_ASSERT_GV_INIT_SVTYPE syn keyword xsMacro PERL_ARGS_ASSERT_GV_IS_IN_MAIN syn keyword xsMacro PERL_ARGS_ASSERT_GV_MAGICALIZE syn keyword xsMacro PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA syn keyword xsMacro PERL_ARGS_ASSERT_GV_NAME_SET PERL_ARGS_ASSERT_GV_OVERRIDE syn keyword xsMacro PERL_ARGS_ASSERT_GV_SETREF PERL_ARGS_ASSERT_GV_STASHPV syn keyword xsMacro PERL_ARGS_ASSERT_GV_STASHPVN syn keyword xsMacro PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL syn keyword xsMacro PERL_ARGS_ASSERT_GV_STASHSV syn keyword xsMacro PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE syn keyword xsMacro PERL_ARGS_ASSERT_HANDLE_REGEX_SETS syn keyword xsMacro PERL_ARGS_ASSERT_HEK_DUP PERL_ARGS_ASSERT_HE_DUP syn keyword xsMacro PERL_ARGS_ASSERT_HFREEENTRIES syn keyword xsMacro PERL_ARGS_ASSERT_HFREE_NEXT_ENTRY PERL_ARGS_ASSERT_HSPLIT syn keyword xsMacro PERL_ARGS_ASSERT_HV_ASSERT PERL_ARGS_ASSERT_HV_AUXINIT syn keyword xsMacro PERL_ARGS_ASSERT_HV_AUXINIT_INTERNAL syn keyword xsMacro PERL_ARGS_ASSERT_HV_BACKREFERENCES_P syn keyword xsMacro PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS syn keyword xsMacro PERL_ARGS_ASSERT_HV_COMMON_KEY_LEN syn keyword xsMacro PERL_ARGS_ASSERT_HV_DELAYFREE_ENT syn keyword xsMacro PERL_ARGS_ASSERT_HV_DELETE PERL_ARGS_ASSERT_HV_DELETE_ENT syn keyword xsMacro PERL_ARGS_ASSERT_HV_EITER_P PERL_ARGS_ASSERT_HV_EITER_SET syn keyword xsMacro PERL_ARGS_ASSERT_HV_ENAME_ADD syn keyword xsMacro PERL_ARGS_ASSERT_HV_ENAME_DELETE syn keyword xsMacro PERL_ARGS_ASSERT_HV_EXISTS PERL_ARGS_ASSERT_HV_EXISTS_ENT syn keyword xsMacro PERL_ARGS_ASSERT_HV_FETCH PERL_ARGS_ASSERT_HV_FETCH_ENT syn keyword xsMacro PERL_ARGS_ASSERT_HV_FILL PERL_ARGS_ASSERT_HV_FREE_ENT syn keyword xsMacro PERL_ARGS_ASSERT_HV_FREE_ENT_RET syn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERINIT PERL_ARGS_ASSERT_HV_ITERKEY syn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERKEYSV syn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERNEXT syn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERNEXTSV syn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERNEXT_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERVAL syn keyword xsMacro PERL_ARGS_ASSERT_HV_KILL_BACKREFS syn keyword xsMacro PERL_ARGS_ASSERT_HV_KSPLIT PERL_ARGS_ASSERT_HV_MAGIC syn keyword xsMacro PERL_ARGS_ASSERT_HV_MAGIC_CHECK syn keyword xsMacro PERL_ARGS_ASSERT_HV_NAME_SET syn keyword xsMacro PERL_ARGS_ASSERT_HV_NOTALLOWED syn keyword xsMacro PERL_ARGS_ASSERT_HV_PLACEHOLDERS_GET syn keyword xsMacro PERL_ARGS_ASSERT_HV_PLACEHOLDERS_P syn keyword xsMacro PERL_ARGS_ASSERT_HV_PLACEHOLDERS_SET syn keyword xsMacro PERL_ARGS_ASSERT_HV_RAND_SET PERL_ARGS_ASSERT_HV_RITER_P syn keyword xsMacro PERL_ARGS_ASSERT_HV_RITER_SET PERL_ARGS_ASSERT_HV_SCALAR syn keyword xsMacro PERL_ARGS_ASSERT_INCLINE PERL_ARGS_ASSERT_INCPUSH syn keyword xsMacro PERL_ARGS_ASSERT_INCPUSH_IF_EXISTS syn keyword xsMacro PERL_ARGS_ASSERT_INCPUSH_USE_SEP syn keyword xsMacro PERL_ARGS_ASSERT_INIT_ARGV_SYMBOLS syn keyword xsMacro PERL_ARGS_ASSERT_INIT_POSTDUMP_SYMBOLS syn keyword xsMacro PERL_ARGS_ASSERT_INIT_TM PERL_ARGS_ASSERT_INPLACE_AASSIGN syn keyword xsMacro PERL_ARGS_ASSERT_INSTR PERL_ARGS_ASSERT_INTUIT_METHOD syn keyword xsMacro PERL_ARGS_ASSERT_INTUIT_MORE syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_ARRAY syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_CLONE syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_EXTEND syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_HIGHEST syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_IS_ITERATING syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_ITERFINISH syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_ITERINIT syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_ITERNEXT syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_MAX syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_PREVIOUS_INDEX syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_SET_LEN syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_SET_PREVIOUS_INDEX syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_TRIM PERL_ARGS_ASSERT_IO_CLOSE syn keyword xsMacro PERL_ARGS_ASSERT_ISALNUM_LAZY PERL_ARGS_ASSERT_ISA_LOOKUP syn keyword xsMacro PERL_ARGS_ASSERT_ISFOO_UTF8_LC syn keyword xsMacro PERL_ARGS_ASSERT_ISIDFIRST_LAZY syn keyword xsMacro PERL_ARGS_ASSERT_ISINFNANSV PERL_ARGS_ASSERT_ISSB syn keyword xsMacro PERL_ARGS_ASSERT_ISWB PERL_ARGS_ASSERT_IS_AN_INT syn keyword xsMacro PERL_ARGS_ASSERT_IS_HANDLE_CONSTRUCTOR syn keyword xsMacro PERL_ARGS_ASSERT_IS_INVARIANT_STRING syn keyword xsMacro PERL_ARGS_ASSERT_IS_SAFE_SYSCALL syn keyword xsMacro PERL_ARGS_ASSERT_IS_SSC_WORTH_IT syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_ALNUM syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_ALNUMC syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_ALPHA syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_ASCII syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_BLANK syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_CHAR syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_CHAR_BUF syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_CNTRL syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_COMMON syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_DIGIT syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_GRAPH syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_IDCONT syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_IDFIRST syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_LOWER syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_MARK syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_PERL_SPACE syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_PERL_WORD syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_POSIX_DIGIT syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_PRINT syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_PUNCT syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_SPACE syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_STRING syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_UPPER syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_XDIGIT syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_XIDCONT syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_XIDFIRST PERL_ARGS_ASSERT_JMAYBE syn keyword xsMacro PERL_ARGS_ASSERT_JOIN_EXACT PERL_ARGS_ASSERT_KEYWORD syn keyword xsMacro PERL_ARGS_ASSERT_KEYWORD_PLUGIN_STANDARD syn keyword xsMacro PERL_ARGS_ASSERT_LEAVE_COMMON syn keyword xsMacro PERL_ARGS_ASSERT_LEX_DISCARD_TO syn keyword xsMacro PERL_ARGS_ASSERT_LEX_READ_TO syn keyword xsMacro PERL_ARGS_ASSERT_LEX_STUFF_PV syn keyword xsMacro PERL_ARGS_ASSERT_LEX_STUFF_PVN syn keyword xsMacro PERL_ARGS_ASSERT_LEX_STUFF_SV syn keyword xsMacro PERL_ARGS_ASSERT_LEX_UNSTUFF PERL_ARGS_ASSERT_LOAD_MODULE syn keyword xsMacro PERL_ARGS_ASSERT_LOAD_MODULE_NOCONTEXT syn keyword xsMacro PERL_ARGS_ASSERT_LOCALIZE syn keyword xsMacro PERL_ARGS_ASSERT_LOOKS_LIKE_BOOL syn keyword xsMacro PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER PERL_ARGS_ASSERT_LOP syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARARYLEN_P syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARENV syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARHINT syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARHINTS syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARISA syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARPACK syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARSIG syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEAR_ALL_ENV syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_COPYCALLCHECKER syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_EXISTSPACK syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_FREEARYLEN_P syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_FREEOVRLD syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GET syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETARYLEN syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETDEBUGVAR syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETDEFELEM syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETNKEYS syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETPACK syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETPOS syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETSIG syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETSUBSTR syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETTAINT syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETUVAR syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETVEC syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_KILLBACKREFS syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_METHCALL syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_METHCALL1 syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_METHPACK syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_NEXTPACK syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_REGDATA_CNT syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_REGDATUM_GET syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SCALARPACK syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SET syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETARYLEN syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETCOLLXFRM syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETDBLINE syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETDEBUGVAR syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETDEFELEM syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETENV syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETHINT syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETISA syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETLVREF syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETMGLOB syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETNKEYS syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETPACK syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETPOS syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETREGEXP syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETSIG syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETSUBSTR syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETTAINT syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETUTF8 syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETUVAR syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETVEC syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SET_ALL_ENV syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SIZEPACK syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_WIPEPACK syn keyword xsMacro PERL_ARGS_ASSERT_MAKE_MATCHER PERL_ARGS_ASSERT_MAKE_TRIE syn keyword xsMacro PERL_ARGS_ASSERT_MALLOCED_SIZE syn keyword xsMacro PERL_ARGS_ASSERT_MATCHER_MATCHES_SV syn keyword xsMacro PERL_ARGS_ASSERT_MAYBERELOCATE syn keyword xsMacro PERL_ARGS_ASSERT_MAYBE_MULTIMAGIC_GV syn keyword xsMacro PERL_ARGS_ASSERT_MEASURE_STRUCT syn keyword xsMacro PERL_ARGS_ASSERT_MEM_COLLXFRM syn keyword xsMacro PERL_ARGS_ASSERT_MEM_LOG_COMMON PERL_ARGS_ASSERT_MESS syn keyword xsMacro PERL_ARGS_ASSERT_MESS_NOCONTEXT PERL_ARGS_ASSERT_MESS_SV syn keyword xsMacro PERL_ARGS_ASSERT_MG_CLEAR PERL_ARGS_ASSERT_MG_COPY syn keyword xsMacro PERL_ARGS_ASSERT_MG_DUP PERL_ARGS_ASSERT_MG_FIND_MGLOB syn keyword xsMacro PERL_ARGS_ASSERT_MG_FREE PERL_ARGS_ASSERT_MG_FREE_TYPE syn keyword xsMacro PERL_ARGS_ASSERT_MG_GET PERL_ARGS_ASSERT_MG_LENGTH syn keyword xsMacro PERL_ARGS_ASSERT_MG_LOCALIZE PERL_ARGS_ASSERT_MG_MAGICAL syn keyword xsMacro PERL_ARGS_ASSERT_MG_SET PERL_ARGS_ASSERT_MG_SIZE syn keyword xsMacro PERL_ARGS_ASSERT_MINI_MKTIME syn keyword xsMacro PERL_ARGS_ASSERT_MORESWITCHES syn keyword xsMacro PERL_ARGS_ASSERT_MOVE_PROTO_ATTR syn keyword xsMacro PERL_ARGS_ASSERT_MRO_CLEAN_ISAREV syn keyword xsMacro PERL_ARGS_ASSERT_MRO_GATHER_AND_RENAME syn keyword xsMacro PERL_ARGS_ASSERT_MRO_GET_FROM_NAME syn keyword xsMacro PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA syn keyword xsMacro PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_DFS syn keyword xsMacro PERL_ARGS_ASSERT_MRO_GET_PRIVATE_DATA syn keyword xsMacro PERL_ARGS_ASSERT_MRO_ISA_CHANGED_IN syn keyword xsMacro PERL_ARGS_ASSERT_MRO_META_DUP syn keyword xsMacro PERL_ARGS_ASSERT_MRO_META_INIT syn keyword xsMacro PERL_ARGS_ASSERT_MRO_METHOD_CHANGED_IN syn keyword xsMacro PERL_ARGS_ASSERT_MRO_PACKAGE_MOVED syn keyword xsMacro PERL_ARGS_ASSERT_MRO_REGISTER syn keyword xsMacro PERL_ARGS_ASSERT_MRO_SET_MRO syn keyword xsMacro PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA syn keyword xsMacro PERL_ARGS_ASSERT_MUL128 syn keyword xsMacro PERL_ARGS_ASSERT_MULTIDEREF_STRINGIFY syn keyword xsMacro PERL_ARGS_ASSERT_MY_ATOF PERL_ARGS_ASSERT_MY_ATOF2 syn keyword xsMacro PERL_ARGS_ASSERT_MY_ATTRS PERL_ARGS_ASSERT_MY_BCOPY syn keyword xsMacro PERL_ARGS_ASSERT_MY_BYTES_TO_UTF8 syn keyword xsMacro PERL_ARGS_ASSERT_MY_BZERO PERL_ARGS_ASSERT_MY_CXT_INDEX syn keyword xsMacro PERL_ARGS_ASSERT_MY_CXT_INIT PERL_ARGS_ASSERT_MY_KID syn keyword xsMacro PERL_ARGS_ASSERT_MY_MEMCMP PERL_ARGS_ASSERT_MY_MEMSET syn keyword xsMacro PERL_ARGS_ASSERT_MY_POPEN PERL_ARGS_ASSERT_MY_POPEN_LIST syn keyword xsMacro PERL_ARGS_ASSERT_MY_SNPRINTF PERL_ARGS_ASSERT_MY_SPRINTF syn keyword xsMacro PERL_ARGS_ASSERT_MY_STRFTIME syn keyword xsMacro PERL_ARGS_ASSERT_MY_VSNPRINTF PERL_ARGS_ASSERT_NEED_UTF8 syn keyword xsMacro PERL_ARGS_ASSERT_NEWAVREF PERL_ARGS_ASSERT_NEWCONDOP syn keyword xsMacro PERL_ARGS_ASSERT_NEWFOROP PERL_ARGS_ASSERT_NEWGIVENOP syn keyword xsMacro PERL_ARGS_ASSERT_NEWGIVWHENOP PERL_ARGS_ASSERT_NEWGP syn keyword xsMacro PERL_ARGS_ASSERT_NEWGVGEN_FLAGS PERL_ARGS_ASSERT_NEWGVOP syn keyword xsMacro PERL_ARGS_ASSERT_NEWHVREF PERL_ARGS_ASSERT_NEWLOGOP syn keyword xsMacro PERL_ARGS_ASSERT_NEWLOOPEX PERL_ARGS_ASSERT_NEWMETHOP syn keyword xsMacro PERL_ARGS_ASSERT_NEWMETHOP_NAMED syn keyword xsMacro PERL_ARGS_ASSERT_NEWMYSUB syn keyword xsMacro PERL_ARGS_ASSERT_NEWPADNAMEOUTER syn keyword xsMacro PERL_ARGS_ASSERT_NEWPADNAMEPVN PERL_ARGS_ASSERT_NEWPADOP syn keyword xsMacro PERL_ARGS_ASSERT_NEWPROG PERL_ARGS_ASSERT_NEWRANGE syn keyword xsMacro PERL_ARGS_ASSERT_NEWRV PERL_ARGS_ASSERT_NEWRV_NOINC syn keyword xsMacro PERL_ARGS_ASSERT_NEWSTUB PERL_ARGS_ASSERT_NEWSVAVDEFELEM syn keyword xsMacro PERL_ARGS_ASSERT_NEWSVOP PERL_ARGS_ASSERT_NEWSVPVF syn keyword xsMacro PERL_ARGS_ASSERT_NEWSVPVF_NOCONTEXT syn keyword xsMacro PERL_ARGS_ASSERT_NEWSVREF PERL_ARGS_ASSERT_NEWSVRV syn keyword xsMacro PERL_ARGS_ASSERT_NEWWHENOP PERL_ARGS_ASSERT_NEWXS syn keyword xsMacro PERL_ARGS_ASSERT_NEWXS_DEFFILE syn keyword xsMacro PERL_ARGS_ASSERT_NEWXS_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_NEWXS_LEN_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_NEW_CONSTANT PERL_ARGS_ASSERT_NEW_CTYPE syn keyword xsMacro PERL_ARGS_ASSERT_NEW_LOGOP PERL_ARGS_ASSERT_NEW_VERSION syn keyword xsMacro PERL_ARGS_ASSERT_NEW_WARNINGS_BITFIELD syn keyword xsMacro PERL_ARGS_ASSERT_NEXTARGV PERL_ARGS_ASSERT_NEXTCHAR syn keyword xsMacro PERL_ARGS_ASSERT_NEXT_SYMBOL PERL_ARGS_ASSERT_NINSTR syn keyword xsMacro PERL_ARGS_ASSERT_NOPERL_DIE PERL_ARGS_ASSERT_NOT_A_NUMBER syn keyword xsMacro PERL_ARGS_ASSERT_NOT_INCREMENTABLE syn keyword xsMacro PERL_ARGS_ASSERT_NO_BAREWORD_ALLOWED syn keyword xsMacro PERL_ARGS_ASSERT_NO_FH_ALLOWED PERL_ARGS_ASSERT_NO_OP syn keyword xsMacro PERL_ARGS_ASSERT_OOPSAV PERL_ARGS_ASSERT_OOPSHV syn keyword xsMacro PERL_ARGS_ASSERT_OPENN_CLEANUP syn keyword xsMacro PERL_ARGS_ASSERT_OPENN_SETUP PERL_ARGS_ASSERT_OPEN_SCRIPT syn keyword xsMacro PERL_ARGS_ASSERT_OPMETHOD_STASH syn keyword xsMacro PERL_ARGS_ASSERT_OPSLAB_FORCE_FREE syn keyword xsMacro PERL_ARGS_ASSERT_OPSLAB_FREE syn keyword xsMacro PERL_ARGS_ASSERT_OPSLAB_FREE_NOPAD syn keyword xsMacro PERL_ARGS_ASSERT_OP_CLEAR syn keyword xsMacro PERL_ARGS_ASSERT_OP_CONTEXTUALIZE syn keyword xsMacro PERL_ARGS_ASSERT_OP_DUMP PERL_ARGS_ASSERT_OP_INTEGERIZE syn keyword xsMacro PERL_ARGS_ASSERT_OP_LINKLIST PERL_ARGS_ASSERT_OP_NULL syn keyword xsMacro PERL_ARGS_ASSERT_OP_PARENT PERL_ARGS_ASSERT_OP_REFCNT_DEC syn keyword xsMacro PERL_ARGS_ASSERT_OP_RELOCATE_SV syn keyword xsMacro PERL_ARGS_ASSERT_OP_STD_INIT PERL_ARGS_ASSERT_PACKAGE syn keyword xsMacro PERL_ARGS_ASSERT_PACKAGE_VERSION syn keyword xsMacro PERL_ARGS_ASSERT_PACKLIST PERL_ARGS_ASSERT_PACK_CAT syn keyword xsMacro PERL_ARGS_ASSERT_PACK_REC PERL_ARGS_ASSERT_PADLIST_DUP syn keyword xsMacro PERL_ARGS_ASSERT_PADLIST_STORE syn keyword xsMacro PERL_ARGS_ASSERT_PADNAMELIST_DUP syn keyword xsMacro PERL_ARGS_ASSERT_PADNAMELIST_FETCH syn keyword xsMacro PERL_ARGS_ASSERT_PADNAMELIST_FREE syn keyword xsMacro PERL_ARGS_ASSERT_PADNAMELIST_STORE syn keyword xsMacro PERL_ARGS_ASSERT_PADNAME_DUP syn keyword xsMacro PERL_ARGS_ASSERT_PADNAME_FREE syn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_ANON syn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_NAME_PV syn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_NAME_PVN syn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_NAME_SV syn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_WEAKREF syn keyword xsMacro PERL_ARGS_ASSERT_PAD_ALLOC_NAME syn keyword xsMacro PERL_ARGS_ASSERT_PAD_CHECK_DUP syn keyword xsMacro PERL_ARGS_ASSERT_PAD_FINDLEX syn keyword xsMacro PERL_ARGS_ASSERT_PAD_FINDMY_PV syn keyword xsMacro PERL_ARGS_ASSERT_PAD_FINDMY_PVN syn keyword xsMacro PERL_ARGS_ASSERT_PAD_FINDMY_SV syn keyword xsMacro PERL_ARGS_ASSERT_PAD_FIXUP_INNER_ANONS syn keyword xsMacro PERL_ARGS_ASSERT_PAD_PUSH PERL_ARGS_ASSERT_PAD_SETSV syn keyword xsMacro PERL_ARGS_ASSERT_PARSER_DUP PERL_ARGS_ASSERT_PARSER_FREE syn keyword xsMacro PERL_ARGS_ASSERT_PARSER_FREE_NEXTTOKE_OPS syn keyword xsMacro PERL_ARGS_ASSERT_PARSE_GV_STASH_NAME syn keyword xsMacro PERL_ARGS_ASSERT_PARSE_IDENT syn keyword xsMacro PERL_ARGS_ASSERT_PARSE_LPAREN_QUESTION_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS syn keyword xsMacro PERL_ARGS_ASSERT_PATH_IS_SEARCHABLE syn keyword xsMacro PERL_ARGS_ASSERT_PERLIO_READ syn keyword xsMacro PERL_ARGS_ASSERT_PERLIO_UNREAD syn keyword xsMacro PERL_ARGS_ASSERT_PERLIO_WRITE syn keyword xsMacro PERL_ARGS_ASSERT_PERL_ALLOC_USING syn keyword xsMacro PERL_ARGS_ASSERT_PERL_CLONE syn keyword xsMacro PERL_ARGS_ASSERT_PERL_CLONE_USING syn keyword xsMacro PERL_ARGS_ASSERT_PERL_CONSTRUCT syn keyword xsMacro PERL_ARGS_ASSERT_PERL_DESTRUCT PERL_ARGS_ASSERT_PERL_FREE syn keyword xsMacro PERL_ARGS_ASSERT_PERL_PARSE PERL_ARGS_ASSERT_PERL_RUN syn keyword xsMacro PERL_ARGS_ASSERT_PMRUNTIME PERL_ARGS_ASSERT_PMTRANS syn keyword xsMacro PERL_ARGS_ASSERT_PM_DESCRIPTION syn keyword xsMacro PERL_ARGS_ASSERT_POPULATE_ANYOF_FROM_INVLIST syn keyword xsMacro PERL_ARGS_ASSERT_POPULATE_ISA PERL_ARGS_ASSERT_PREGCOMP syn keyword xsMacro PERL_ARGS_ASSERT_PREGEXEC PERL_ARGS_ASSERT_PREGFREE2 syn keyword xsMacro PERL_ARGS_ASSERT_PRESCAN_VERSION syn keyword xsMacro PERL_ARGS_ASSERT_PRINTBUF syn keyword xsMacro PERL_ARGS_ASSERT_PRINTF_NOCONTEXT syn keyword xsMacro PERL_ARGS_ASSERT_PROCESS_SPECIAL_BLOCKS syn keyword xsMacro PERL_ARGS_ASSERT_PTR_TABLE_FETCH syn keyword xsMacro PERL_ARGS_ASSERT_PTR_TABLE_FIND syn keyword xsMacro PERL_ARGS_ASSERT_PTR_TABLE_SPLIT syn keyword xsMacro PERL_ARGS_ASSERT_PTR_TABLE_STORE syn keyword xsMacro PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS syn keyword xsMacro PERL_ARGS_ASSERT_PUT_CODE_POINT syn keyword xsMacro PERL_ARGS_ASSERT_PUT_RANGE PERL_ARGS_ASSERT_PV_DISPLAY syn keyword xsMacro PERL_ARGS_ASSERT_PV_ESCAPE PERL_ARGS_ASSERT_PV_PRETTY syn keyword xsMacro PERL_ARGS_ASSERT_PV_UNI_DISPLAY PERL_ARGS_ASSERT_QERROR syn keyword xsMacro PERL_ARGS_ASSERT_QSORTSVU syn keyword xsMacro PERL_ARGS_ASSERT_QUADMATH_FORMAT_NEEDED syn keyword xsMacro PERL_ARGS_ASSERT_QUADMATH_FORMAT_SINGLE syn keyword xsMacro PERL_ARGS_ASSERT_REENTRANT_RETRY syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PV syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PVN syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_SV syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PV syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PVN syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_SV syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_VALUE syn keyword xsMacro PERL_ARGS_ASSERT_REFTO PERL_ARGS_ASSERT_REG syn keyword xsMacro PERL_ARGS_ASSERT_REG2LANODE PERL_ARGS_ASSERT_REGANODE syn keyword xsMacro PERL_ARGS_ASSERT_REGATOM PERL_ARGS_ASSERT_REGBRANCH syn keyword xsMacro PERL_ARGS_ASSERT_REGCLASS PERL_ARGS_ASSERT_REGCLASS_SWASH syn keyword xsMacro PERL_ARGS_ASSERT_REGCPPOP PERL_ARGS_ASSERT_REGCPPUSH syn keyword xsMacro PERL_ARGS_ASSERT_REGCURLY PERL_ARGS_ASSERT_REGDUMP syn keyword xsMacro PERL_ARGS_ASSERT_REGDUPE_INTERNAL syn keyword xsMacro PERL_ARGS_ASSERT_REGEXEC_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_REGFREE_INTERNAL syn keyword xsMacro PERL_ARGS_ASSERT_REGHOP3 PERL_ARGS_ASSERT_REGHOP4 syn keyword xsMacro PERL_ARGS_ASSERT_REGHOPMAYBE3 PERL_ARGS_ASSERT_REGINCLASS syn keyword xsMacro PERL_ARGS_ASSERT_REGINSERT PERL_ARGS_ASSERT_REGMATCH syn keyword xsMacro PERL_ARGS_ASSERT_REGNODE_GUTS PERL_ARGS_ASSERT_REGPATWS syn keyword xsMacro PERL_ARGS_ASSERT_REGPIECE PERL_ARGS_ASSERT_REGPPOSIXCC syn keyword xsMacro PERL_ARGS_ASSERT_REGPROP PERL_ARGS_ASSERT_REGREPEAT syn keyword xsMacro PERL_ARGS_ASSERT_REGTAIL PERL_ARGS_ASSERT_REGTAIL_STUDY syn keyword xsMacro PERL_ARGS_ASSERT_REGTRY syn keyword xsMacro PERL_ARGS_ASSERT_REG_CHECK_NAMED_BUFF_MATCHED syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_ALL syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_EXISTS syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_FETCH syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_FIRSTKEY syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_ITER syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_NEXTKEY syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_SCALAR syn keyword xsMacro PERL_ARGS_ASSERT_REG_NODE syn keyword xsMacro PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_FETCH syn keyword xsMacro PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_LENGTH syn keyword xsMacro PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_STORE syn keyword xsMacro PERL_ARGS_ASSERT_REG_QR_PACKAGE syn keyword xsMacro PERL_ARGS_ASSERT_REG_RECODE syn keyword xsMacro PERL_ARGS_ASSERT_REG_SCAN_NAME syn keyword xsMacro PERL_ARGS_ASSERT_REG_SKIPCOMMENT syn keyword xsMacro PERL_ARGS_ASSERT_REG_TEMP_COPY PERL_ARGS_ASSERT_REPEATCPY syn keyword xsMacro PERL_ARGS_ASSERT_REPORT_REDEFINED_CV syn keyword xsMacro PERL_ARGS_ASSERT_REQUIRE_PV syn keyword xsMacro PERL_ARGS_ASSERT_REQUIRE_TIE_MOD syn keyword xsMacro PERL_ARGS_ASSERT_RE_COMPILE PERL_ARGS_ASSERT_RE_CROAK2 syn keyword xsMacro PERL_ARGS_ASSERT_RE_DUP_GUTS syn keyword xsMacro PERL_ARGS_ASSERT_RE_INTUIT_START syn keyword xsMacro PERL_ARGS_ASSERT_RE_INTUIT_STRING syn keyword xsMacro PERL_ARGS_ASSERT_RE_OP_COMPILE PERL_ARGS_ASSERT_RNINSTR syn keyword xsMacro PERL_ARGS_ASSERT_RSIGNAL_SAVE syn keyword xsMacro PERL_ARGS_ASSERT_RUN_USER_FILTER syn keyword xsMacro PERL_ARGS_ASSERT_RV2CV_OP_CV PERL_ARGS_ASSERT_RVPV_DUP syn keyword xsMacro PERL_ARGS_ASSERT_RXRES_FREE syn keyword xsMacro PERL_ARGS_ASSERT_RXRES_RESTORE syn keyword xsMacro PERL_ARGS_ASSERT_RXRES_SAVE PERL_ARGS_ASSERT_SAME_DIRENT syn keyword xsMacro PERL_ARGS_ASSERT_SAVESHAREDSVPV PERL_ARGS_ASSERT_SAVESVPV syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_ADELETE syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_AELEM_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_ALIASED_SV syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_APTR PERL_ARGS_ASSERT_SAVE_ARY syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_BOOL PERL_ARGS_ASSERT_SAVE_CLEARSV syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_DELETE syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_DESTRUCTOR syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_GENERIC_PVREF syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_GENERIC_SVREF syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_GP PERL_ARGS_ASSERT_SAVE_HASH syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_HDELETE syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_HEK_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_HELEM_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_HPTR PERL_ARGS_ASSERT_SAVE_I16 syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_I32 PERL_ARGS_ASSERT_SAVE_I8 syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_INT PERL_ARGS_ASSERT_SAVE_ITEM syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_IV PERL_ARGS_ASSERT_SAVE_LINES syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_LIST PERL_ARGS_ASSERT_SAVE_LONG syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_MAGIC_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_MORTALIZESV syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_NOGV PERL_ARGS_ASSERT_SAVE_PPTR syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SCALAR syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SCALAR_AT syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SET_SVFLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SHARED_PVREF syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SPTR PERL_ARGS_ASSERT_SAVE_STRLEN syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SVREF PERL_ARGS_ASSERT_SAVE_VPTR syn keyword xsMacro PERL_ARGS_ASSERT_SCALARBOOLEAN syn keyword xsMacro PERL_ARGS_ASSERT_SCALARVOID PERL_ARGS_ASSERT_SCAN_BIN syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_COMMIT PERL_ARGS_ASSERT_SCAN_CONST syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_FORMLINE syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_HEREDOC PERL_ARGS_ASSERT_SCAN_HEX syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_IDENT syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_INPUTSYMBOL syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_NUM PERL_ARGS_ASSERT_SCAN_OCT syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_PAT PERL_ARGS_ASSERT_SCAN_STR syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_SUBST PERL_ARGS_ASSERT_SCAN_TRANS syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_VERSION syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_VSTRING PERL_ARGS_ASSERT_SCAN_WORD syn keyword xsMacro PERL_ARGS_ASSERT_SEARCH_CONST PERL_ARGS_ASSERT_SETDEFOUT syn keyword xsMacro PERL_ARGS_ASSERT_SET_ANYOF_ARG syn keyword xsMacro PERL_ARGS_ASSERT_SET_CONTEXT PERL_ARGS_ASSERT_SET_PADLIST syn keyword xsMacro PERL_ARGS_ASSERT_SHARE_HEK syn keyword xsMacro PERL_ARGS_ASSERT_SHARE_HEK_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SHOULD_WARN_NL syn keyword xsMacro PERL_ARGS_ASSERT_SIMPLIFY_SORT PERL_ARGS_ASSERT_SI_DUP syn keyword xsMacro PERL_ARGS_ASSERT_SKIPSPACE_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SLAB_FREE PERL_ARGS_ASSERT_SLAB_TO_RO syn keyword xsMacro PERL_ARGS_ASSERT_SLAB_TO_RW PERL_ARGS_ASSERT_SOFTREF2XV syn keyword xsMacro PERL_ARGS_ASSERT_SORTCV PERL_ARGS_ASSERT_SORTCV_STACKED syn keyword xsMacro PERL_ARGS_ASSERT_SORTCV_XSUB PERL_ARGS_ASSERT_SORTSV syn keyword xsMacro PERL_ARGS_ASSERT_SORTSV_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL syn keyword xsMacro PERL_ARGS_ASSERT_SSC_ADD_RANGE PERL_ARGS_ASSERT_SSC_AND syn keyword xsMacro PERL_ARGS_ASSERT_SSC_ANYTHING syn keyword xsMacro PERL_ARGS_ASSERT_SSC_CLEAR_LOCALE syn keyword xsMacro PERL_ARGS_ASSERT_SSC_CP_AND PERL_ARGS_ASSERT_SSC_FINALIZE syn keyword xsMacro PERL_ARGS_ASSERT_SSC_INIT syn keyword xsMacro PERL_ARGS_ASSERT_SSC_INTERSECTION syn keyword xsMacro PERL_ARGS_ASSERT_SSC_IS_ANYTHING syn keyword xsMacro PERL_ARGS_ASSERT_SSC_IS_CP_POSIXL_INIT syn keyword xsMacro PERL_ARGS_ASSERT_SSC_OR PERL_ARGS_ASSERT_SSC_UNION syn keyword xsMacro PERL_ARGS_ASSERT_SS_DUP PERL_ARGS_ASSERT_STACK_GROW syn keyword xsMacro PERL_ARGS_ASSERT_START_GLOB syn keyword xsMacro PERL_ARGS_ASSERT_STDIZE_LOCALE syn keyword xsMacro PERL_ARGS_ASSERT_STRIP_RETURN syn keyword xsMacro PERL_ARGS_ASSERT_STR_TO_VERSION syn keyword xsMacro PERL_ARGS_ASSERT_STUDY_CHUNK syn keyword xsMacro PERL_ARGS_ASSERT_SUB_CRUSH_DEPTH syn keyword xsMacro PERL_ARGS_ASSERT_SV_2BOOL_FLAGS PERL_ARGS_ASSERT_SV_2CV syn keyword xsMacro PERL_ARGS_ASSERT_SV_2IO PERL_ARGS_ASSERT_SV_2IUV_COMMON syn keyword xsMacro PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE syn keyword xsMacro PERL_ARGS_ASSERT_SV_2IV PERL_ARGS_ASSERT_SV_2IV_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_2NUM PERL_ARGS_ASSERT_SV_2NV_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_2PV PERL_ARGS_ASSERT_SV_2PVBYTE syn keyword xsMacro PERL_ARGS_ASSERT_SV_2PVBYTE_NOLEN syn keyword xsMacro PERL_ARGS_ASSERT_SV_2PVUTF8 syn keyword xsMacro PERL_ARGS_ASSERT_SV_2PVUTF8_NOLEN syn keyword xsMacro PERL_ARGS_ASSERT_SV_2PV_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_2PV_NOLEN PERL_ARGS_ASSERT_SV_2UV syn keyword xsMacro PERL_ARGS_ASSERT_SV_2UV_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_ADD_ARENA syn keyword xsMacro PERL_ARGS_ASSERT_SV_ADD_BACKREF syn keyword xsMacro PERL_ARGS_ASSERT_SV_BACKOFF PERL_ARGS_ASSERT_SV_BLESS syn keyword xsMacro PERL_ARGS_ASSERT_SV_BUF_TO_RO syn keyword xsMacro PERL_ARGS_ASSERT_SV_BUF_TO_RW PERL_ARGS_ASSERT_SV_CATPV syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVF PERL_ARGS_ASSERT_SV_CATPVF_MG syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVF_MG_NOCONTEXT syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVF_NOCONTEXT syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVN syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVN_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVN_MG syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPV_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPV_MG PERL_ARGS_ASSERT_SV_CATSV syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATSV_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATSV_MG syn keyword xsMacro PERL_ARGS_ASSERT_SV_CAT_DECODE PERL_ARGS_ASSERT_SV_CHOP syn keyword xsMacro PERL_ARGS_ASSERT_SV_CLEAR syn keyword xsMacro PERL_ARGS_ASSERT_SV_COLLXFRM_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_COPYPV syn keyword xsMacro PERL_ARGS_ASSERT_SV_COPYPV_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_DEL_BACKREF syn keyword xsMacro PERL_ARGS_ASSERT_SV_DERIVED_FROM syn keyword xsMacro PERL_ARGS_ASSERT_SV_DERIVED_FROM_PV syn keyword xsMacro PERL_ARGS_ASSERT_SV_DERIVED_FROM_PVN syn keyword xsMacro PERL_ARGS_ASSERT_SV_DERIVED_FROM_SV syn keyword xsMacro PERL_ARGS_ASSERT_SV_DISPLAY PERL_ARGS_ASSERT_SV_DOES syn keyword xsMacro PERL_ARGS_ASSERT_SV_DOES_PV PERL_ARGS_ASSERT_SV_DOES_PVN syn keyword xsMacro PERL_ARGS_ASSERT_SV_DOES_SV PERL_ARGS_ASSERT_SV_DUMP syn keyword xsMacro PERL_ARGS_ASSERT_SV_DUP PERL_ARGS_ASSERT_SV_DUP_COMMON syn keyword xsMacro PERL_ARGS_ASSERT_SV_DUP_INC syn keyword xsMacro PERL_ARGS_ASSERT_SV_DUP_INC_MULTIPLE syn keyword xsMacro PERL_ARGS_ASSERT_SV_EXP_GROW syn keyword xsMacro PERL_ARGS_ASSERT_SV_FORCE_NORMAL syn keyword xsMacro PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_FREE2 PERL_ARGS_ASSERT_SV_GETS syn keyword xsMacro PERL_ARGS_ASSERT_SV_GET_BACKREFS PERL_ARGS_ASSERT_SV_GROW syn keyword xsMacro PERL_ARGS_ASSERT_SV_INSERT syn keyword xsMacro PERL_ARGS_ASSERT_SV_INSERT_FLAGS PERL_ARGS_ASSERT_SV_ISA syn keyword xsMacro PERL_ARGS_ASSERT_SV_IV PERL_ARGS_ASSERT_SV_I_NCMP syn keyword xsMacro PERL_ARGS_ASSERT_SV_KILL_BACKREFS syn keyword xsMacro PERL_ARGS_ASSERT_SV_LEN_UTF8_NOMG syn keyword xsMacro PERL_ARGS_ASSERT_SV_MAGIC PERL_ARGS_ASSERT_SV_MAGICEXT syn keyword xsMacro PERL_ARGS_ASSERT_SV_MAGICEXT_MGLOB syn keyword xsMacro PERL_ARGS_ASSERT_SV_NCMP PERL_ARGS_ASSERT_SV_NV syn keyword xsMacro PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC syn keyword xsMacro PERL_ARGS_ASSERT_SV_OR_PV_POS_U2B syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_B2U syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_B2U_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_B2U_MIDWAY syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B_CACHED syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B_FORWARDS syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B_MIDWAY PERL_ARGS_ASSERT_SV_PV syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVBYTE PERL_ARGS_ASSERT_SV_PVBYTEN syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE PERL_ARGS_ASSERT_SV_PVN syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVN_FORCE syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVN_NOMG PERL_ARGS_ASSERT_SV_PVUTF8 syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVUTF8N syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE syn keyword xsMacro PERL_ARGS_ASSERT_SV_RECODE_TO_UTF8 syn keyword xsMacro PERL_ARGS_ASSERT_SV_REF PERL_ARGS_ASSERT_SV_REFTYPE syn keyword xsMacro PERL_ARGS_ASSERT_SV_RELEASE_COW syn keyword xsMacro PERL_ARGS_ASSERT_SV_REPLACE PERL_ARGS_ASSERT_SV_RESET syn keyword xsMacro PERL_ARGS_ASSERT_SV_RVWEAKEN PERL_ARGS_ASSERT_SV_SETHEK syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETIV PERL_ARGS_ASSERT_SV_SETIV_MG syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETNV PERL_ARGS_ASSERT_SV_SETNV_MG syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPV PERL_ARGS_ASSERT_SV_SETPVF syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVF_MG syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVF_MG_NOCONTEXT syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVF_NOCONTEXT syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVIV syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVIV_MG PERL_ARGS_ASSERT_SV_SETPVN syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVN_MG syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPV_MG syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_IV syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_NV syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_PV syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_PVN syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_UV PERL_ARGS_ASSERT_SV_SETSV syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETSV_COW syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETSV_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETSV_MG PERL_ARGS_ASSERT_SV_SETUV syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETUV_MG PERL_ARGS_ASSERT_SV_TAINT syn keyword xsMacro PERL_ARGS_ASSERT_SV_TAINTED PERL_ARGS_ASSERT_SV_UNGLOB syn keyword xsMacro PERL_ARGS_ASSERT_SV_UNI_DISPLAY syn keyword xsMacro PERL_ARGS_ASSERT_SV_UNMAGIC syn keyword xsMacro PERL_ARGS_ASSERT_SV_UNMAGICEXT PERL_ARGS_ASSERT_SV_UNREF syn keyword xsMacro PERL_ARGS_ASSERT_SV_UNREF_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_UNTAINT PERL_ARGS_ASSERT_SV_UPGRADE syn keyword xsMacro PERL_ARGS_ASSERT_SV_USEPVN syn keyword xsMacro PERL_ARGS_ASSERT_SV_USEPVN_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_USEPVN_MG syn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_DECODE syn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE syn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_ENCODE syn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_UPGRADE syn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW syn keyword xsMacro PERL_ARGS_ASSERT_SV_UV PERL_ARGS_ASSERT_SV_VCATPVF syn keyword xsMacro PERL_ARGS_ASSERT_SV_VCATPVFN syn keyword xsMacro PERL_ARGS_ASSERT_SV_VCATPVFN_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_SV_VCATPVF_MG syn keyword xsMacro PERL_ARGS_ASSERT_SV_VSETPVF PERL_ARGS_ASSERT_SV_VSETPVFN syn keyword xsMacro PERL_ARGS_ASSERT_SV_VSETPVF_MG syn keyword xsMacro PERL_ARGS_ASSERT_SWALLOW_BOM PERL_ARGS_ASSERT_SWASH_FETCH syn keyword xsMacro PERL_ARGS_ASSERT_SWASH_INIT syn keyword xsMacro PERL_ARGS_ASSERT_SWASH_SCAN_LIST_LINE syn keyword xsMacro PERL_ARGS_ASSERT_SWATCH_GET PERL_ARGS_ASSERT_SYS_INIT syn keyword xsMacro PERL_ARGS_ASSERT_SYS_INIT3 syn keyword xsMacro PERL_ARGS_ASSERT_SYS_INTERN_DUP syn keyword xsMacro PERL_ARGS_ASSERT_TAINT_PROPER syn keyword xsMacro PERL_ARGS_ASSERT_TIED_METHOD syn keyword xsMacro PERL_ARGS_ASSERT_TOKENIZE_USE PERL_ARGS_ASSERT_TOKEQ syn keyword xsMacro PERL_ARGS_ASSERT_TOKEREPORT syn keyword xsMacro PERL_ARGS_ASSERT_TOO_FEW_ARGUMENTS_PV syn keyword xsMacro PERL_ARGS_ASSERT_TOO_MANY_ARGUMENTS_PV syn keyword xsMacro PERL_ARGS_ASSERT_TO_BYTE_SUBSTR syn keyword xsMacro PERL_ARGS_ASSERT_TO_UNI_LOWER syn keyword xsMacro PERL_ARGS_ASSERT_TO_UNI_TITLE syn keyword xsMacro PERL_ARGS_ASSERT_TO_UNI_UPPER syn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_CASE syn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_FOLD syn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_LOWER syn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_SUBSTR syn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_TITLE syn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_UPPER syn keyword xsMacro PERL_ARGS_ASSERT_TRANSLATE_SUBSTR_OFFSETS syn keyword xsMacro PERL_ARGS_ASSERT_UIV_2BUF PERL_ARGS_ASSERT_UNLNK syn keyword xsMacro PERL_ARGS_ASSERT_UNPACKSTRING PERL_ARGS_ASSERT_UNPACK_REC syn keyword xsMacro PERL_ARGS_ASSERT_UNPACK_STR syn keyword xsMacro PERL_ARGS_ASSERT_UNREFERENCED_TO_TMP_STACK syn keyword xsMacro PERL_ARGS_ASSERT_UPG_VERSION syn keyword xsMacro PERL_ARGS_ASSERT_UTF16_TEXTFILTER syn keyword xsMacro PERL_ARGS_ASSERT_UTF16_TO_UTF8 syn keyword xsMacro PERL_ARGS_ASSERT_UTF16_TO_UTF8_REVERSED syn keyword xsMacro PERL_ARGS_ASSERT_UTF8N_TO_UVCHR syn keyword xsMacro PERL_ARGS_ASSERT_UTF8N_TO_UVUNI syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_DISTANCE PERL_ARGS_ASSERT_UTF8_HOP syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_LENGTH syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_MG_LEN_CACHE_UPDATE syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_MG_POS_CACHE_UPDATE syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_TO_BYTES syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_TO_UVCHR syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_TO_UVUNI syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_TO_UVUNI_BUF syn keyword xsMacro PERL_ARGS_ASSERT_UTILIZE syn keyword xsMacro PERL_ARGS_ASSERT_UVOFFUNI_TO_UTF8_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_UVUNI_TO_UTF8 syn keyword xsMacro PERL_ARGS_ASSERT_UVUNI_TO_UTF8_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT_VALIDATE_PROTO syn keyword xsMacro PERL_ARGS_ASSERT_VALIDATE_SUID syn keyword xsMacro PERL_ARGS_ASSERT_VALID_UTF8_TO_UVCHR syn keyword xsMacro PERL_ARGS_ASSERT_VALID_UTF8_TO_UVUNI syn keyword xsMacro PERL_ARGS_ASSERT_VCMP PERL_ARGS_ASSERT_VDEB syn keyword xsMacro PERL_ARGS_ASSERT_VFORM PERL_ARGS_ASSERT_VISIT syn keyword xsMacro PERL_ARGS_ASSERT_VIVIFY_DEFELEM syn keyword xsMacro PERL_ARGS_ASSERT_VIVIFY_REF PERL_ARGS_ASSERT_VLOAD_MODULE syn keyword xsMacro PERL_ARGS_ASSERT_VMESS PERL_ARGS_ASSERT_VNEWSVPVF syn keyword xsMacro PERL_ARGS_ASSERT_VNORMAL PERL_ARGS_ASSERT_VNUMIFY syn keyword xsMacro PERL_ARGS_ASSERT_VSTRINGIFY PERL_ARGS_ASSERT_VVERIFY syn keyword xsMacro PERL_ARGS_ASSERT_VWARN PERL_ARGS_ASSERT_VWARNER syn keyword xsMacro PERL_ARGS_ASSERT_WAIT4PID PERL_ARGS_ASSERT_WARN syn keyword xsMacro PERL_ARGS_ASSERT_WARNER PERL_ARGS_ASSERT_WARNER_NOCONTEXT syn keyword xsMacro PERL_ARGS_ASSERT_WARN_NOCONTEXT PERL_ARGS_ASSERT_WARN_SV syn keyword xsMacro PERL_ARGS_ASSERT_WATCH PERL_ARGS_ASSERT_WHICHSIG_PV syn keyword xsMacro PERL_ARGS_ASSERT_WHICHSIG_PVN syn keyword xsMacro PERL_ARGS_ASSERT_WHICHSIG_SV syn keyword xsMacro PERL_ARGS_ASSERT_WIN32_CROAK_NOT_IMPLEMENTED syn keyword xsMacro PERL_ARGS_ASSERT_WITH_QUEUED_ERRORS syn keyword xsMacro PERL_ARGS_ASSERT_WRAP_OP_CHECKER syn keyword xsMacro PERL_ARGS_ASSERT_WRITE_TO_STDERR syn keyword xsMacro PERL_ARGS_ASSERT_XS_HANDSHAKE syn keyword xsMacro PERL_ARGS_ASSERT_XS_VERSION_BOOTCHECK syn keyword xsMacro PERL_ARGS_ASSERT_YYERROR PERL_ARGS_ASSERT_YYERROR_PV syn keyword xsMacro PERL_ARGS_ASSERT_YYERROR_PVN PERL_ARGS_ASSERT_YYWARN syn keyword xsMacro PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST syn keyword xsMacro PERL_ARGS_ASSERT__CORE_SWASH_INIT syn keyword xsMacro PERL_ARGS_ASSERT__GET_REGCLASS_NONBITMAP_DATA syn keyword xsMacro PERL_ARGS_ASSERT__GET_SWASH_INVLIST syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_CONTAINS_CP syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_CONTENTS syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_DUMP syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_INTERSECTION_MAYBE_COMPLEMENT_2ND syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_INVERT syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_LEN syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_POPULATE_SWATCH syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_SEARCH syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_UNION_MAYBE_COMPLEMENT_2ND syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_CHAR_SLOW syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_FOO syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_IDCONT syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_IDSTART syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_MARK syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_XIDCONT syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_XIDSTART syn keyword xsMacro PERL_ARGS_ASSERT__MAKE_EXACTF_INVLIST syn keyword xsMacro PERL_ARGS_ASSERT__NEW_INVLIST_C_ARRAY syn keyword xsMacro PERL_ARGS_ASSERT__SETUP_CANNED_INVLIST syn keyword xsMacro PERL_ARGS_ASSERT__SWASH_INVERSION_HASH syn keyword xsMacro PERL_ARGS_ASSERT__SWASH_TO_INVLIST syn keyword xsMacro PERL_ARGS_ASSERT__TO_FOLD_LATIN1 syn keyword xsMacro PERL_ARGS_ASSERT__TO_UNI_FOLD_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT__TO_UPPER_TITLE_LATIN1 syn keyword xsMacro PERL_ARGS_ASSERT__TO_UTF8_FOLD_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT__TO_UTF8_LOWER_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT__TO_UTF8_TITLE_FLAGS syn keyword xsMacro PERL_ARGS_ASSERT__TO_UTF8_UPPER_FLAGS PERL_ASYNC_CHECK syn keyword xsMacro PERL_BITFIELD16 PERL_BITFIELD32 PERL_BITFIELD8 syn keyword xsMacro PERL_CALLCONV PERL_CALLCONV_NO_RET PERL_CHECK_INITED syn keyword xsMacro PERL_CKDEF PERL_DEB PERL_DEB2 PERL_DEBUG PERL_DEBUG_PAD syn keyword xsMacro PERL_DEBUG_PAD_ZERO PERL_DECIMAL_VERSION syn keyword xsMacro PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION syn keyword xsMacro PERL_DONT_CREATE_GVSV PERL_DRAND48_QUAD syn keyword xsMacro PERL_ENABLE_EXPERIMENTAL_REGEX_OPTIMISATIONS syn keyword xsMacro PERL_ENABLE_EXTENDED_TRIE_OPTIMISATION syn keyword xsMacro PERL_ENABLE_POSITIVE_ASSERTION_STUDY syn keyword xsMacro PERL_ENABLE_TRIE_OPTIMISATION PERL_EXIT_ABORT syn keyword xsMacro PERL_EXIT_DESTRUCT_END PERL_EXIT_EXPECTED PERL_EXIT_WARN syn keyword xsMacro PERL_EXPORT_C PERL_FILE_IS_ABSOLUTE PERL_FILTER_EXISTS syn keyword xsMacro PERL_FLUSHALL_FOR_CHILD PERL_FPU_INIT PERL_FPU_POST_EXEC syn keyword xsMacro PERL_FPU_PRE_EXEC PERL_FS_VERSION PERL_FS_VER_FMT syn keyword xsMacro PERL_GCC_BRACE_GROUPS_FORBIDDEN PERL_GET_CONTEXT syn keyword xsMacro PERL_GET_INTERP PERL_GET_THX PERL_GET_VARS syn keyword xsMacro PERL_GIT_UNPUSHED_COMMITS PERL_GLOBAL_STRUCT syn keyword xsMacro PERL_GPROF_MONCONTROL PERL_HASH PERL_HASH_DEFAULT_HvMAX syn keyword xsMacro PERL_HASH_FUNC PERL_HASH_FUNC_ONE_AT_A_TIME_HARD syn keyword xsMacro PERL_HASH_INTERNAL PERL_HASH_ITER_BUCKET syn keyword xsMacro PERL_HASH_RANDOMIZE_KEYS PERL_HASH_SEED syn keyword xsMacro PERL_HASH_SEED_BYTES PERL_HASH_WITH_SEED syn keyword xsMacro PERL_HV_ALLOC_AUX_SIZE PERL_HV_ARRAY_ALLOC_BYTES syn keyword xsMacro PERL_IMPLICIT_CONTEXT PERL_INTERPRETER_SIZE_UPTO_MEMBER syn keyword xsMacro PERL_INT_MAX PERL_INT_MIN PERL_LOADMOD_DENY syn keyword xsMacro PERL_LOADMOD_IMPORT_OPS PERL_LOADMOD_NOIMPORT syn keyword xsMacro PERL_LONG_MAX PERL_LONG_MIN PERL_MALLOC_WRAP syn keyword xsMacro PERL_MEMORY_DEBUG_HEADER_SIZE PERL_MG_UFUNC syn keyword xsMacro PERL_MY_SNPRINTF_GUARDED PERL_MY_SNPRINTF_POST_GUARD syn keyword xsMacro PERL_MY_VSNPRINTF_GUARDED PERL_MY_VSNPRINTF_POST_GUARD syn keyword xsMacro PERL_NEW_COPY_ON_WRITE PERL_NO_DEV_RANDOM syn keyword xsMacro PERL_OBJECT_THIS PERL_OBJECT_THIS_ PERL_PADNAME_MINIMAL syn keyword xsMacro PERL_PADSEQ_INTRO PERL_PATCHNUM PERL_POISON_EXPR syn keyword xsMacro PERL_PPADDR_INITED PERL_PPDEF PERL_PRESERVE_IVUV syn keyword xsMacro PERL_PRIeldbl PERL_PRIfldbl PERL_PRIgldbl syn keyword xsMacro PERL_PV_ESCAPE_ALL PERL_PV_ESCAPE_DWIM syn keyword xsMacro PERL_PV_ESCAPE_FIRSTCHAR PERL_PV_ESCAPE_NOBACKSLASH syn keyword xsMacro PERL_PV_ESCAPE_NOCLEAR PERL_PV_ESCAPE_NONASCII syn keyword xsMacro PERL_PV_ESCAPE_QUOTE PERL_PV_ESCAPE_RE PERL_PV_ESCAPE_UNI syn keyword xsMacro PERL_PV_ESCAPE_UNI_DETECT PERL_PV_PRETTY_DUMP syn keyword xsMacro PERL_PV_PRETTY_ELLIPSES PERL_PV_PRETTY_EXACTSIZE syn keyword xsMacro PERL_PV_PRETTY_LTGT PERL_PV_PRETTY_NOCLEAR syn keyword xsMacro PERL_PV_PRETTY_QUOTE PERL_PV_PRETTY_REGPROP PERL_QUAD_MAX syn keyword xsMacro PERL_QUAD_MIN PERL_REENTR_API PERL_REGMATCH_SLAB_SLOTS syn keyword xsMacro PERL_RELOCATABLE_INC PERL_REVISION PERL_SAWAMPERSAND syn keyword xsMacro PERL_SCAN_ALLOW_UNDERSCORES PERL_SCAN_DISALLOW_PREFIX syn keyword xsMacro PERL_SCAN_GREATER_THAN_UV_MAX PERL_SCAN_SILENT_ILLDIGIT syn keyword xsMacro PERL_SCAN_SILENT_NON_PORTABLE PERL_SCAN_TRAILING syn keyword xsMacro PERL_SCNfldbl PERL_SCRIPT_MODE PERL_SEEN_HV_FUNC_H syn keyword xsMacro PERL_SET_CONTEXT PERL_SET_INTERP PERL_SET_PHASE syn keyword xsMacro PERL_SET_THX PERL_SHORT_MAX PERL_SHORT_MIN syn keyword xsMacro PERL_SIGNALS_UNSAFE_FLAG PERL_SNPRINTF_CHECK syn keyword xsMacro PERL_STACK_OVERFLOW_CHECK PERL_STATIC_INLINE syn keyword xsMacro PERL_STATIC_INLINE_NO_RET PERL_STATIC_NO_RET syn keyword xsMacro PERL_STRLEN_EXPAND_SHIFT PERL_STRLEN_ROUNDUP syn keyword xsMacro PERL_STRLEN_ROUNDUP_QUANTUM PERL_SUBVERSION syn keyword xsMacro PERL_SUB_DEPTH_WARN PERL_SYS_FPU_INIT PERL_SYS_INIT syn keyword xsMacro PERL_SYS_INIT3 PERL_SYS_INIT3_BODY PERL_SYS_INIT_BODY syn keyword xsMacro PERL_SYS_TERM PERL_SYS_TERM_BODY PERL_TARGETARCH syn keyword xsMacro PERL_UCHAR_MAX PERL_UCHAR_MIN PERL_UINT_MAX PERL_UINT_MIN syn keyword xsMacro PERL_ULONG_MAX PERL_ULONG_MIN PERL_UNICODE_ALL_FLAGS syn keyword xsMacro PERL_UNICODE_ARGV PERL_UNICODE_ARGV_FLAG syn keyword xsMacro PERL_UNICODE_DEFAULT_FLAGS PERL_UNICODE_IN syn keyword xsMacro PERL_UNICODE_INOUT PERL_UNICODE_INOUT_FLAG syn keyword xsMacro PERL_UNICODE_IN_FLAG PERL_UNICODE_LOCALE syn keyword xsMacro PERL_UNICODE_LOCALE_FLAG PERL_UNICODE_MAX syn keyword xsMacro PERL_UNICODE_OUT PERL_UNICODE_OUT_FLAG PERL_UNICODE_STD syn keyword xsMacro PERL_UNICODE_STDERR PERL_UNICODE_STDERR_FLAG syn keyword xsMacro PERL_UNICODE_STDIN PERL_UNICODE_STDIN_FLAG syn keyword xsMacro PERL_UNICODE_STDOUT PERL_UNICODE_STDOUT_FLAG syn keyword xsMacro PERL_UNICODE_STD_FLAG PERL_UNICODE_UTF8CACHEASSERT syn keyword xsMacro PERL_UNICODE_UTF8CACHEASSERT_FLAG syn keyword xsMacro PERL_UNICODE_WIDESYSCALLS PERL_UNICODE_WIDESYSCALLS_FLAG syn keyword xsMacro PERL_UNUSED_ARG PERL_UNUSED_CONTEXT PERL_UNUSED_DECL syn keyword xsMacro PERL_UNUSED_RESULT PERL_UNUSED_VAR PERL_UQUAD_MAX syn keyword xsMacro PERL_UQUAD_MIN PERL_USES_PL_PIDSTATUS syn keyword xsMacro PERL_USE_GCC_BRACE_GROUPS PERL_USHORT_MAX PERL_USHORT_MIN syn keyword xsMacro PERL_VERSION PERL_VERSION_DECIMAL PERL_VERSION_GE syn keyword xsMacro PERL_VERSION_LT PERL_VERSION_STRING syn keyword xsMacro PERL_WAIT_FOR_CHILDREN PERL_WARNHOOK_FATAL syn keyword xsMacro PERL_WRITE_MSG_TO_CONSOLE PERL_XS_EXPORT_C syn keyword xsMacro PHASE_CHANGE_PROBE PHOSTNAME PIPESOCK_MODE PIPE_OPEN_MODE syn keyword xsMacro PLUGEXPR PLUGSTMT PLUS PL_AboveLatin1 PL_Argv PL_Cmd syn keyword xsMacro PL_DBcontrol PL_DBcv PL_DBgv PL_DBline PL_DBsignal syn keyword xsMacro PL_DBsignal_iv PL_DBsingle PL_DBsingle_iv PL_DBsub syn keyword xsMacro PL_DBtrace PL_DBtrace_iv PL_Dir PL_Env PL_GCB_invlist syn keyword xsMacro PL_Gappctx PL_Gcheck PL_Gcheck_mutex PL_Gcsighandlerp syn keyword xsMacro PL_Gcurinterp PL_Gdo_undump PL_Gdollarzero_mutex syn keyword xsMacro PL_Gfold_locale PL_Ghash_seed PL_Ghash_seed_set syn keyword xsMacro PL_Ghints_mutex PL_Gkeyword_plugin PL_Gmalloc_mutex syn keyword xsMacro PL_Gmmap_page_size PL_Gmy_ctx_mutex PL_Gmy_cxt_index syn keyword xsMacro PL_Gop_mutex PL_Gop_seq PL_Gop_sequence syn keyword xsMacro PL_Gperlio_debug_fd PL_Gperlio_fd_refcnt syn keyword xsMacro PL_Gperlio_fd_refcnt_size PL_Gperlio_mutex PL_Gppaddr syn keyword xsMacro PL_Gsh_path PL_Gsig_defaulting PL_Gsig_handlers_initted syn keyword xsMacro PL_Gsig_ignoring PL_Gsig_trapped PL_Gsigfpe_saved syn keyword xsMacro PL_Gsv_placeholder PL_Gthr_key PL_Gtimesbase syn keyword xsMacro PL_Guse_safe_putenv PL_Gveto_cleanup PL_Gwatch_pvx syn keyword xsMacro PL_HASH_RAND_BITS_ENABLED PL_HasMultiCharFold PL_InBitmap syn keyword xsMacro PL_LIO PL_Latin1 PL_Mem PL_MemParse PL_MemShared syn keyword xsMacro PL_NonL1NonFinalFold PL_Posix_ptrs PL_Proc syn keyword xsMacro PL_RANDOM_STATE_TYPE PL_SB_invlist PL_Sock PL_StdIO PL_Sv syn keyword xsMacro PL_UpperLatin1 PL_WB_invlist PL_XPosix_ptrs PL_Xpv syn keyword xsMacro PL_amagic_generation PL_an PL_appctx PL_argvgv syn keyword xsMacro PL_argvout_stack PL_argvoutgv PL_basetime PL_beginav syn keyword xsMacro PL_beginav_save PL_blockhooks PL_body_arenas syn keyword xsMacro PL_body_roots PL_bodytarget PL_breakable_sub_gen syn keyword xsMacro PL_check_mutex PL_checkav PL_checkav_save PL_chopset syn keyword xsMacro PL_clocktick PL_collation_ix PL_collation_name syn keyword xsMacro PL_collation_standard PL_collxfrm_base PL_collxfrm_mult syn keyword xsMacro PL_colors PL_colorset PL_compcv PL_compiling PL_comppad syn keyword xsMacro PL_comppad_name PL_comppad_name_fill syn keyword xsMacro PL_comppad_name_floor PL_constpadix PL_cop_seqmax syn keyword xsMacro PL_cryptseen PL_cshlen PL_csighandlerp PL_curcop syn keyword xsMacro PL_curcopdb PL_curinterp PL_curpad PL_curpm PL_curstack syn keyword xsMacro PL_curstackinfo PL_curstash PL_curstname syn keyword xsMacro PL_custom_op_descs PL_custom_op_names PL_custom_ops syn keyword xsMacro PL_cv_has_eval PL_dbargs PL_debstash PL_debug syn keyword xsMacro PL_debug_pad PL_def_layerlist PL_defgv PL_defoutgv syn keyword xsMacro PL_defstash PL_delaymagic PL_delaymagic_egid syn keyword xsMacro PL_delaymagic_euid PL_delaymagic_gid PL_delaymagic_uid syn keyword xsMacro PL_destroyhook PL_diehook PL_dirty PL_do_undump syn keyword xsMacro PL_dollarzero_mutex PL_doswitches PL_dowarn PL_dumper_fd syn keyword xsMacro PL_dumpindent PL_e_script PL_efloatbuf PL_efloatsize syn keyword xsMacro PL_encoding PL_endav PL_envgv PL_errgv PL_errors syn keyword xsMacro PL_eval_root PL_eval_start PL_evalseq PL_exit_flags syn keyword xsMacro PL_exitlist PL_exitlistlen PL_fdpid PL_filemode syn keyword xsMacro PL_firstgv PL_forkprocess PL_formtarget PL_generation syn keyword xsMacro PL_gensym PL_globalstash PL_globhook PL_hash_rand_bits syn keyword xsMacro PL_hash_rand_bits_enabled PL_hash_seed PL_hash_seed_set syn keyword xsMacro PL_hintgv PL_hints PL_hints_mutex PL_hv_fetch_ent_mh syn keyword xsMacro PL_in_clean_all PL_in_clean_objs PL_in_eval syn keyword xsMacro PL_in_load_module PL_in_utf8_CTYPE_locale PL_incgv syn keyword xsMacro PL_initav PL_inplace PL_isarev PL_keyword_plugin syn keyword xsMacro PL_known_layers PL_last_in_gv PL_last_swash_hv syn keyword xsMacro PL_last_swash_key PL_last_swash_klen PL_last_swash_slen syn keyword xsMacro PL_last_swash_tmps PL_lastfd PL_lastgotoprobe syn keyword xsMacro PL_laststatval PL_laststype PL_lex_encoding PL_localizing syn keyword xsMacro PL_localpatches PL_lockhook PL_main_cv PL_main_root syn keyword xsMacro PL_main_start PL_mainstack PL_malloc_mutex PL_markstack syn keyword xsMacro PL_markstack_max PL_markstack_ptr PL_max_intro_pending syn keyword xsMacro PL_maxo PL_maxsysfd PL_memory_debug_header PL_mess_sv syn keyword xsMacro PL_min_intro_pending PL_minus_E PL_minus_F PL_minus_a syn keyword xsMacro PL_minus_c PL_minus_l PL_minus_n PL_minus_p syn keyword xsMacro PL_mmap_page_size PL_modcount PL_modglobal syn keyword xsMacro PL_multideref_pc PL_my_ctx_mutex PL_my_cxt_index syn keyword xsMacro PL_my_cxt_keys PL_my_cxt_list PL_my_cxt_size PL_nomemok syn keyword xsMacro PL_numeric_local PL_numeric_name PL_numeric_radix_sv syn keyword xsMacro PL_numeric_standard PL_ofsgv PL_oldname PL_op syn keyword xsMacro PL_op_exec_cnt PL_op_mask PL_op_mutex PL_op_seq syn keyword xsMacro PL_op_sequence PL_opfreehook PL_origalen PL_origargc syn keyword xsMacro PL_origargv PL_origenviron PL_origfilename PL_ors_sv syn keyword xsMacro PL_osname PL_pad_reset_pending PL_padix PL_padix_floor syn keyword xsMacro PL_padlist_generation PL_padname_const PL_padname_undef syn keyword xsMacro PL_parser PL_patchlevel PL_peepp PL_perl_destruct_level syn keyword xsMacro PL_perldb PL_perlio PL_perlio_debug_fd syn keyword xsMacro PL_perlio_fd_refcnt PL_perlio_fd_refcnt_size syn keyword xsMacro PL_perlio_mutex PL_phase PL_pidstatus PL_preambleav syn keyword xsMacro PL_profiledata PL_psig_name PL_psig_pend PL_psig_ptr syn keyword xsMacro PL_ptr_table PL_random_state PL_reentrant_buffer syn keyword xsMacro PL_reentrant_retint PL_reg_curpm PL_regex_pad syn keyword xsMacro PL_regex_padav PL_registered_mros PL_regmatch_slab syn keyword xsMacro PL_regmatch_state PL_replgv PL_restartjmpenv PL_restartop syn keyword xsMacro PL_rpeepp PL_rs PL_runops PL_savebegin PL_savestack syn keyword xsMacro PL_savestack_ix PL_savestack_max PL_sawalias syn keyword xsMacro PL_sawampersand PL_scopestack PL_scopestack_ix syn keyword xsMacro PL_scopestack_max PL_scopestack_name PL_secondgv syn keyword xsMacro PL_sharehook PL_sig_defaulting PL_sig_handlers_initted syn keyword xsMacro PL_sig_ignoring PL_sig_pending PL_sig_trapped syn keyword xsMacro PL_sigfpe_saved PL_sighandlerp PL_signalhook PL_signals syn keyword xsMacro PL_sort_RealCmp PL_sortcop PL_sortstash PL_splitstr syn keyword xsMacro PL_srand_called PL_stack_base PL_stack_max PL_stack_sp syn keyword xsMacro PL_start_env PL_stashcache PL_stashpad PL_stashpadix syn keyword xsMacro PL_stashpadmax PL_statbuf PL_statcache PL_statgv syn keyword xsMacro PL_statname PL_statusvalue PL_statusvalue_posix syn keyword xsMacro PL_statusvalue_vms PL_stderrgv PL_stdingv PL_strtab syn keyword xsMacro PL_sub_generation PL_subline PL_subname PL_sv_arenaroot syn keyword xsMacro PL_sv_consts PL_sv_count PL_sv_no PL_sv_placeholder syn keyword xsMacro PL_sv_root PL_sv_serial PL_sv_undef PL_sv_yes syn keyword xsMacro PL_sys_intern PL_taint_warn PL_tainted PL_tainting syn keyword xsMacro PL_thr_key PL_threadhook PL_timesbase PL_timesbuf syn keyword xsMacro PL_tmps_floor PL_tmps_ix PL_tmps_max PL_tmps_stack syn keyword xsMacro PL_top_env PL_toptarget PL_unicode PL_unitcheckav syn keyword xsMacro PL_unitcheckav_save PL_unlockhook PL_unsafe syn keyword xsMacro PL_use_safe_putenv PL_utf8_charname_begin syn keyword xsMacro PL_utf8_charname_continue PL_utf8_foldable syn keyword xsMacro PL_utf8_foldclosures PL_utf8_idcont PL_utf8_idstart syn keyword xsMacro PL_utf8_mark PL_utf8_perl_idcont PL_utf8_perl_idstart syn keyword xsMacro PL_utf8_swash_ptrs PL_utf8_tofold PL_utf8_tolower syn keyword xsMacro PL_utf8_totitle PL_utf8_toupper PL_utf8_xidcont syn keyword xsMacro PL_utf8_xidstart PL_utf8cache PL_utf8locale syn keyword xsMacro PL_veto_cleanup PL_vtbl_arylen PL_vtbl_arylen_p syn keyword xsMacro PL_vtbl_backref PL_vtbl_bm PL_vtbl_checkcall syn keyword xsMacro PL_vtbl_collxfrm PL_vtbl_dbline PL_vtbl_debugvar syn keyword xsMacro PL_vtbl_defelem PL_vtbl_env PL_vtbl_envelem PL_vtbl_fm syn keyword xsMacro PL_vtbl_hints PL_vtbl_hintselem PL_vtbl_isa syn keyword xsMacro PL_vtbl_isaelem PL_vtbl_lvref PL_vtbl_mglob PL_vtbl_nkeys syn keyword xsMacro PL_vtbl_ovrld PL_vtbl_pack PL_vtbl_packelem PL_vtbl_pos syn keyword xsMacro PL_vtbl_regdata PL_vtbl_regdatum PL_vtbl_regexp syn keyword xsMacro PL_vtbl_sigelem PL_vtbl_substr PL_vtbl_sv PL_vtbl_taint syn keyword xsMacro PL_vtbl_utf8 PL_vtbl_uvar PL_vtbl_vec PL_warn_locale syn keyword xsMacro PL_warnhook PL_watch_pvx PL_watchaddr PL_watchok syn keyword xsMacro PL_xsubfilename PMFUNC PM_GETRE PM_SETRE PMf_BASE_SHIFT syn keyword xsMacro PMf_CHARSET PMf_CODELIST_PRIVATE PMf_CONST PMf_CONTINUE syn keyword xsMacro PMf_EVAL PMf_EXTENDED PMf_EXTENDED_MORE PMf_FOLD syn keyword xsMacro PMf_GLOBAL PMf_HAS_CV PMf_IS_QR PMf_KEEP PMf_KEEPCOPY syn keyword xsMacro PMf_MULTILINE PMf_NOCAPTURE PMf_NONDESTRUCT PMf_ONCE syn keyword xsMacro PMf_RETAINT PMf_SINGLELINE PMf_SPLIT PMf_STRICT PMf_USED syn keyword xsMacro PMf_USE_RE_EVAL PNf PNfARG POPBLOCK POPEVAL POPFORMAT syn keyword xsMacro POPLOOP POPMARK POPSTACK POPSTACK_TO POPSUB POPSUBST syn keyword xsMacro POP_MULTICALL POP_SAVEARRAY POPi POPl POPn POPp POPpbytex syn keyword xsMacro POPpconstx POPpx POPs POPu POPul POSIXA POSIXD POSIXL syn keyword xsMacro POSIXU POSIX_CC_COUNT POSIX_SWASH_COUNT POSTDEC POSTINC syn keyword xsMacro POSTJOIN POWOP PP PREC_LOW PREDEC PREGf_ANCH syn keyword xsMacro PREGf_ANCH_GPOS PREGf_ANCH_MBOL PREGf_ANCH_SBOL syn keyword xsMacro PREGf_CANY_SEEN PREGf_CUTGROUP_SEEN PREGf_GPOS_FLOAT syn keyword xsMacro PREGf_GPOS_SEEN PREGf_IMPLICIT PREGf_NAUGHTY PREGf_NOSCAN syn keyword xsMacro PREGf_SKIP PREGf_USE_RE_EVAL PREGf_VERBARG_SEEN PREINC syn keyword xsMacro PRESCAN_VERSION PREVOPER PRINTF_FORMAT_NULL_OK PRIVATEREF syn keyword xsMacro PRIVLIB PRIVLIB_EXP PRIVSHIFT PROCSELFEXE_PATH PRUNE syn keyword xsMacro PSEUDO PTHREAD_ATFORK PTHREAD_ATTR_SETDETACHSTATE syn keyword xsMacro PTHREAD_CREATE PTHREAD_CREATE_JOINABLE syn keyword xsMacro PTHREAD_GETSPECIFIC PTHREAD_GETSPECIFIC_INT PTR2IV PTR2NV syn keyword xsMacro PTR2UV PTR2nat PTR2ul PTRSIZE PTRV PUSHBLOCK PUSHEVAL syn keyword xsMacro PUSHFORMAT PUSHGIVEN PUSHLOOP_FOR PUSHLOOP_PLAIN PUSHMARK syn keyword xsMacro PUSHSTACK PUSHSTACKi PUSHSUB PUSHSUBST PUSHSUB_BASE syn keyword xsMacro PUSHSUB_DB PUSHSUB_GET_LVALUE_MASK PUSHTARG PUSHWHEN syn keyword xsMacro PUSH_MULTICALL PUSH_MULTICALL_FLAGS PUSHi PUSHmortal syn keyword xsMacro PUSHn PUSHp PUSHs PUSHu PUTBACK PWGECOS PWPASSWD PadARRAY syn keyword xsMacro PadMAX PadlistARRAY PadlistMAX PadlistNAMES syn keyword xsMacro PadlistNAMESARRAY PadlistNAMESMAX PadlistREFCNT syn keyword xsMacro PadnameFLAGS PadnameIsOUR PadnameIsSTATE syn keyword xsMacro PadnameIsSTATE_on PadnameLEN PadnameLVALUE syn keyword xsMacro PadnameLVALUE_on PadnameOURSTASH PadnameOURSTASH_set syn keyword xsMacro PadnameOUTER PadnamePROTOCV PadnamePV PadnameREFCNT syn keyword xsMacro PadnameREFCNT_dec PadnameSV PadnameTYPE PadnameTYPE_set syn keyword xsMacro PadnameUTF8 PadnamelistARRAY PadnamelistMAX syn keyword xsMacro PadnamelistMAXNAMED PadnamelistREFCNT syn keyword xsMacro PadnamelistREFCNT_dec Pause PeRl_CaTiFy PeRl_INT64_C syn keyword xsMacro PeRl_StGiFy PeRl_UINT64_C PerlDir_chdir PerlDir_close syn keyword xsMacro PerlDir_mapA PerlDir_mapW PerlDir_mkdir PerlDir_open syn keyword xsMacro PerlDir_read PerlDir_rewind PerlDir_rmdir PerlDir_seek syn keyword xsMacro PerlDir_tell PerlEnv_ENVgetenv PerlEnv_ENVgetenv_len syn keyword xsMacro PerlEnv_clearenv PerlEnv_free_childdir syn keyword xsMacro PerlEnv_free_childenv PerlEnv_get_child_IO syn keyword xsMacro PerlEnv_get_childdir PerlEnv_get_childenv PerlEnv_getenv syn keyword xsMacro PerlEnv_getenv_len PerlEnv_lib_path PerlEnv_os_id syn keyword xsMacro PerlEnv_putenv PerlEnv_sitelib_path PerlEnv_uname syn keyword xsMacro PerlEnv_vendorlib_path PerlIOArg PerlIOBase PerlIONext syn keyword xsMacro PerlIOSelf PerlIOValid PerlIO_canset_cnt syn keyword xsMacro PerlIO_exportFILE PerlIO_fast_gets PerlIO_fdopen syn keyword xsMacro PerlIO_findFILE PerlIO_getc PerlIO_getname syn keyword xsMacro PerlIO_has_base PerlIO_has_cntptr PerlIO_importFILE syn keyword xsMacro PerlIO_isutf8 PerlIO_open PerlIO_printf PerlIO_putc syn keyword xsMacro PerlIO_puts PerlIO_releaseFILE PerlIO_reopen syn keyword xsMacro PerlIO_rewind PerlIO_stdoutf PerlIO_tmpfile PerlIO_ungetc syn keyword xsMacro PerlIO_vprintf PerlLIO_access PerlLIO_chmod PerlLIO_chown syn keyword xsMacro PerlLIO_chsize PerlLIO_close PerlLIO_dup PerlLIO_dup2 syn keyword xsMacro PerlLIO_flock PerlLIO_fstat PerlLIO_ioctl PerlLIO_isatty syn keyword xsMacro PerlLIO_link PerlLIO_lseek PerlLIO_lstat PerlLIO_mkstemp syn keyword xsMacro PerlLIO_mktemp PerlLIO_open PerlLIO_open3 PerlLIO_read syn keyword xsMacro PerlLIO_rename PerlLIO_setmode PerlLIO_stat syn keyword xsMacro PerlLIO_tmpnam PerlLIO_umask PerlLIO_unlink PerlLIO_utime syn keyword xsMacro PerlLIO_write PerlMemParse_calloc PerlMemParse_free syn keyword xsMacro PerlMemParse_free_lock PerlMemParse_get_lock syn keyword xsMacro PerlMemParse_is_locked PerlMemParse_malloc syn keyword xsMacro PerlMemParse_realloc PerlMemShared_calloc syn keyword xsMacro PerlMemShared_free PerlMemShared_free_lock syn keyword xsMacro PerlMemShared_get_lock PerlMemShared_is_locked syn keyword xsMacro PerlMemShared_malloc PerlMemShared_realloc PerlMem_calloc syn keyword xsMacro PerlMem_free PerlMem_free_lock PerlMem_get_lock syn keyword xsMacro PerlMem_is_locked PerlMem_malloc PerlMem_realloc syn keyword xsMacro PerlProc_DynaLoad PerlProc_GetOSError PerlProc__exit syn keyword xsMacro PerlProc_abort PerlProc_crypt PerlProc_execl syn keyword xsMacro PerlProc_execv PerlProc_execvp PerlProc_exit syn keyword xsMacro PerlProc_fork PerlProc_getegid PerlProc_geteuid syn keyword xsMacro PerlProc_getgid PerlProc_getlogin PerlProc_getpid syn keyword xsMacro PerlProc_gettimeofday PerlProc_getuid PerlProc_kill syn keyword xsMacro PerlProc_killpg PerlProc_lasthost PerlProc_longjmp syn keyword xsMacro PerlProc_pause PerlProc_pclose PerlProc_pipe syn keyword xsMacro PerlProc_popen PerlProc_popen_list PerlProc_setgid syn keyword xsMacro PerlProc_setjmp PerlProc_setuid PerlProc_signal syn keyword xsMacro PerlProc_sleep PerlProc_spawnvp PerlProc_times syn keyword xsMacro PerlProc_wait PerlProc_waitpid PerlSIO_canset_cnt syn keyword xsMacro PerlSIO_clearerr PerlSIO_fast_gets PerlSIO_fclose syn keyword xsMacro PerlSIO_fdopen PerlSIO_fdupopen PerlSIO_feof syn keyword xsMacro PerlSIO_ferror PerlSIO_fflush PerlSIO_fgetc syn keyword xsMacro PerlSIO_fgetpos PerlSIO_fgets PerlSIO_fileno syn keyword xsMacro PerlSIO_fopen PerlSIO_fputc PerlSIO_fputs PerlSIO_fread syn keyword xsMacro PerlSIO_freopen PerlSIO_fseek PerlSIO_fsetpos syn keyword xsMacro PerlSIO_ftell PerlSIO_fwrite PerlSIO_get_base syn keyword xsMacro PerlSIO_get_bufsiz PerlSIO_get_cnt PerlSIO_get_ptr syn keyword xsMacro PerlSIO_has_base PerlSIO_has_cntptr PerlSIO_init syn keyword xsMacro PerlSIO_printf PerlSIO_rewind PerlSIO_set_cnt syn keyword xsMacro PerlSIO_set_ptr PerlSIO_setbuf PerlSIO_setlinebuf syn keyword xsMacro PerlSIO_setvbuf PerlSIO_stderr PerlSIO_stdin syn keyword xsMacro PerlSIO_stdout PerlSIO_stdoutf PerlSIO_tmpfile syn keyword xsMacro PerlSIO_ungetc PerlSIO_vprintf PerlSock_accept syn keyword xsMacro PerlSock_bind PerlSock_closesocket PerlSock_connect syn keyword xsMacro PerlSock_endhostent PerlSock_endnetent syn keyword xsMacro PerlSock_endprotoent PerlSock_endservent syn keyword xsMacro PerlSock_gethostbyaddr PerlSock_gethostbyname syn keyword xsMacro PerlSock_gethostent PerlSock_gethostname syn keyword xsMacro PerlSock_getnetbyaddr PerlSock_getnetbyname syn keyword xsMacro PerlSock_getnetent PerlSock_getpeername syn keyword xsMacro PerlSock_getprotobyname PerlSock_getprotobynumber syn keyword xsMacro PerlSock_getprotoent PerlSock_getservbyname syn keyword xsMacro PerlSock_getservbyport PerlSock_getservent syn keyword xsMacro PerlSock_getsockname PerlSock_getsockopt PerlSock_htonl syn keyword xsMacro PerlSock_htons PerlSock_inet_addr PerlSock_inet_ntoa syn keyword xsMacro PerlSock_listen PerlSock_ntohl PerlSock_ntohs syn keyword xsMacro PerlSock_recv PerlSock_recvfrom PerlSock_select syn keyword xsMacro PerlSock_send PerlSock_sendto PerlSock_sethostent syn keyword xsMacro PerlSock_setnetent PerlSock_setprotoent syn keyword xsMacro PerlSock_setservent PerlSock_setsockopt PerlSock_shutdown syn keyword xsMacro PerlSock_socket PerlSock_socketpair Perl_acos Perl_asin syn keyword xsMacro Perl_assert Perl_atan Perl_atan2 Perl_atof Perl_atof2 syn keyword xsMacro Perl_ceil Perl_cos Perl_cosh Perl_custom_op_xop syn keyword xsMacro Perl_debug_log Perl_drand48 Perl_drand48_init syn keyword xsMacro Perl_error_log Perl_exp Perl_floor Perl_fmod syn keyword xsMacro Perl_fp_class_denorm Perl_fp_class_inf Perl_fp_class_nan syn keyword xsMacro Perl_fp_class_ndenorm Perl_fp_class_ninf syn keyword xsMacro Perl_fp_class_nnorm Perl_fp_class_norm syn keyword xsMacro Perl_fp_class_nzero Perl_fp_class_pdenorm syn keyword xsMacro Perl_fp_class_pinf Perl_fp_class_pnorm syn keyword xsMacro Perl_fp_class_pzero Perl_fp_class_qnan Perl_fp_class_snan syn keyword xsMacro Perl_fp_class_zero Perl_free_c_backtrace Perl_frexp syn keyword xsMacro Perl_isfinite Perl_isfinitel Perl_isinf Perl_isnan syn keyword xsMacro Perl_ldexp Perl_log Perl_log10 Perl_malloc_good_size syn keyword xsMacro Perl_modf Perl_pow Perl_pp_accept Perl_pp_aelemfast_lex syn keyword xsMacro Perl_pp_andassign Perl_pp_avalues Perl_pp_bind syn keyword xsMacro Perl_pp_bit_xor Perl_pp_chmod Perl_pp_chomp syn keyword xsMacro Perl_pp_connect Perl_pp_cos Perl_pp_custom syn keyword xsMacro Perl_pp_dbmclose Perl_pp_dofile Perl_pp_dor syn keyword xsMacro Perl_pp_dorassign Perl_pp_dump Perl_pp_egrent syn keyword xsMacro Perl_pp_enetent Perl_pp_eprotoent Perl_pp_epwent syn keyword xsMacro Perl_pp_eservent Perl_pp_exp Perl_pp_fcntl syn keyword xsMacro Perl_pp_ftatime Perl_pp_ftbinary Perl_pp_ftblk syn keyword xsMacro Perl_pp_ftchr Perl_pp_ftctime Perl_pp_ftdir syn keyword xsMacro Perl_pp_fteexec Perl_pp_fteowned Perl_pp_fteread syn keyword xsMacro Perl_pp_ftewrite Perl_pp_ftfile Perl_pp_ftmtime syn keyword xsMacro Perl_pp_ftpipe Perl_pp_ftrexec Perl_pp_ftrwrite syn keyword xsMacro Perl_pp_ftsgid Perl_pp_ftsize Perl_pp_ftsock syn keyword xsMacro Perl_pp_ftsuid Perl_pp_ftsvtx Perl_pp_ftzero syn keyword xsMacro Perl_pp_getpeername Perl_pp_getsockname Perl_pp_ggrgid syn keyword xsMacro Perl_pp_ggrnam Perl_pp_ghbyaddr Perl_pp_ghbyname syn keyword xsMacro Perl_pp_gnbyaddr Perl_pp_gnbyname Perl_pp_gpbyname syn keyword xsMacro Perl_pp_gpbynumber Perl_pp_gpwnam Perl_pp_gpwuid syn keyword xsMacro Perl_pp_gsbyname Perl_pp_gsbyport Perl_pp_gsockopt syn keyword xsMacro Perl_pp_hex Perl_pp_i_postdec Perl_pp_i_postinc syn keyword xsMacro Perl_pp_i_predec Perl_pp_i_preinc Perl_pp_keys syn keyword xsMacro Perl_pp_kill Perl_pp_lcfirst Perl_pp_lineseq syn keyword xsMacro Perl_pp_listen Perl_pp_localtime Perl_pp_log syn keyword xsMacro Perl_pp_lstat Perl_pp_mapstart Perl_pp_msgctl syn keyword xsMacro Perl_pp_msgget Perl_pp_msgrcv Perl_pp_msgsnd syn keyword xsMacro Perl_pp_nbit_xor Perl_pp_orassign Perl_pp_padany syn keyword xsMacro Perl_pp_pop Perl_pp_postdec Perl_pp_predec Perl_pp_reach syn keyword xsMacro Perl_pp_read Perl_pp_recv Perl_pp_regcmaybe syn keyword xsMacro Perl_pp_rindex Perl_pp_rv2hv Perl_pp_rvalues Perl_pp_say syn keyword xsMacro Perl_pp_sbit_xor Perl_pp_scalar Perl_pp_schomp syn keyword xsMacro Perl_pp_scope Perl_pp_seek Perl_pp_semop Perl_pp_send syn keyword xsMacro Perl_pp_sge Perl_pp_sgrent Perl_pp_sgt Perl_pp_shmctl syn keyword xsMacro Perl_pp_shmget Perl_pp_shmread Perl_pp_shutdown syn keyword xsMacro Perl_pp_slt Perl_pp_snetent Perl_pp_socket syn keyword xsMacro Perl_pp_sprotoent Perl_pp_spwent Perl_pp_sqrt syn keyword xsMacro Perl_pp_sservent Perl_pp_ssockopt Perl_pp_symlink syn keyword xsMacro Perl_pp_transr Perl_pp_unlink Perl_pp_utime syn keyword xsMacro Perl_pp_values Perl_safesysmalloc_size Perl_sharepvn syn keyword xsMacro Perl_signbit Perl_sin Perl_sinh Perl_sqrt Perl_strtod syn keyword xsMacro Perl_tan Perl_tanh Perl_va_copy PmopSTASH PmopSTASHPV syn keyword xsMacro PmopSTASHPV_set PmopSTASH_set Poison PoisonFree PoisonNew syn keyword xsMacro PoisonPADLIST PoisonWith QR_PAT_MODS QUADKIND QUAD_IS_INT syn keyword xsMacro QUAD_IS_INT64_T QUAD_IS_LONG QUAD_IS_LONG_LONG syn keyword xsMacro QUAD_IS___INT64 QUESTION_MARK_CTRL QWLIST RANDBITS syn keyword xsMacro RANDOM_R_PROTO RD_NODATA READDIR64_R_PROTO syn keyword xsMacro READDIR_R_PROTO READ_XDIGIT REENTRANT_PROTO_B_B syn keyword xsMacro REENTRANT_PROTO_B_BI REENTRANT_PROTO_B_BW syn keyword xsMacro REENTRANT_PROTO_B_CCD REENTRANT_PROTO_B_CCS syn keyword xsMacro REENTRANT_PROTO_B_IBI REENTRANT_PROTO_B_IBW syn keyword xsMacro REENTRANT_PROTO_B_SB REENTRANT_PROTO_B_SBI syn keyword xsMacro REENTRANT_PROTO_I_BI REENTRANT_PROTO_I_BW syn keyword xsMacro REENTRANT_PROTO_I_CCSBWR REENTRANT_PROTO_I_CCSD syn keyword xsMacro REENTRANT_PROTO_I_CII REENTRANT_PROTO_I_CIISD syn keyword xsMacro REENTRANT_PROTO_I_CSBI REENTRANT_PROTO_I_CSBIR syn keyword xsMacro REENTRANT_PROTO_I_CSBWR REENTRANT_PROTO_I_CSBWRE syn keyword xsMacro REENTRANT_PROTO_I_CSD REENTRANT_PROTO_I_CWISBWRE syn keyword xsMacro REENTRANT_PROTO_I_CWISD REENTRANT_PROTO_I_D syn keyword xsMacro REENTRANT_PROTO_I_H REENTRANT_PROTO_I_IBI syn keyword xsMacro REENTRANT_PROTO_I_IBW REENTRANT_PROTO_I_ICBI syn keyword xsMacro REENTRANT_PROTO_I_ICSBWR REENTRANT_PROTO_I_ICSD syn keyword xsMacro REENTRANT_PROTO_I_ID REENTRANT_PROTO_I_IISD syn keyword xsMacro REENTRANT_PROTO_I_ISBWR REENTRANT_PROTO_I_ISD syn keyword xsMacro REENTRANT_PROTO_I_LISBI REENTRANT_PROTO_I_LISD syn keyword xsMacro REENTRANT_PROTO_I_SB REENTRANT_PROTO_I_SBI syn keyword xsMacro REENTRANT_PROTO_I_SBIE REENTRANT_PROTO_I_SBIH syn keyword xsMacro REENTRANT_PROTO_I_SBIR REENTRANT_PROTO_I_SBWR syn keyword xsMacro REENTRANT_PROTO_I_SBWRE REENTRANT_PROTO_I_SD syn keyword xsMacro REENTRANT_PROTO_I_TISD REENTRANT_PROTO_I_TS syn keyword xsMacro REENTRANT_PROTO_I_TSBI REENTRANT_PROTO_I_TSBIR syn keyword xsMacro REENTRANT_PROTO_I_TSBWR REENTRANT_PROTO_I_TSR syn keyword xsMacro REENTRANT_PROTO_I_TsISBWRE REENTRANT_PROTO_I_UISBWRE syn keyword xsMacro REENTRANT_PROTO_I_uISBWRE REENTRANT_PROTO_S_CBI syn keyword xsMacro REENTRANT_PROTO_S_CCSBI REENTRANT_PROTO_S_CIISBIE syn keyword xsMacro REENTRANT_PROTO_S_CSBI REENTRANT_PROTO_S_CSBIE syn keyword xsMacro REENTRANT_PROTO_S_CWISBIE REENTRANT_PROTO_S_CWISBWIE syn keyword xsMacro REENTRANT_PROTO_S_ICSBI REENTRANT_PROTO_S_ISBI syn keyword xsMacro REENTRANT_PROTO_S_LISBI REENTRANT_PROTO_S_SBI syn keyword xsMacro REENTRANT_PROTO_S_SBIE REENTRANT_PROTO_S_SBW syn keyword xsMacro REENTRANT_PROTO_S_TISBI REENTRANT_PROTO_S_TSBI syn keyword xsMacro REENTRANT_PROTO_S_TSBIE REENTRANT_PROTO_S_TWISBIE syn keyword xsMacro REENTRANT_PROTO_V_D REENTRANT_PROTO_V_H syn keyword xsMacro REENTRANT_PROTO_V_ID REENTR_H REENTR_MEMZERO REF syn keyword xsMacro REFCOUNTED_HE_EXISTS REFCOUNTED_HE_KEY_UTF8 REFF REFFA syn keyword xsMacro REFFL REFFU REFGEN REF_HE_KEY REGMATCH_STATE_MAX syn keyword xsMacro REGNODE_MAX REGNODE_SIMPLE REGNODE_VARIES REG_ANY syn keyword xsMacro REG_CANY_SEEN REG_CUTGROUP_SEEN REG_EXTFLAGS_NAME_SIZE syn keyword xsMacro REG_GOSTART_SEEN REG_GPOS_SEEN REG_INFTY syn keyword xsMacro REG_INTFLAGS_NAME_SIZE REG_LOOKBEHIND_SEEN REG_MAGIC syn keyword xsMacro REG_RECURSE_SEEN REG_RUN_ON_COMMENT_SEEN syn keyword xsMacro REG_TOP_LEVEL_BRANCHES_SEEN REG_UNBOUNDED_QUANTIFIER_SEEN syn keyword xsMacro REG_UNFOLDED_MULTI_SEEN REG_VERBARG_SEEN syn keyword xsMacro REG_ZERO_LEN_SEEN RELOP RENUM REQUIRE RESTORE_ERRNO syn keyword xsMacro RESTORE_LC_NUMERIC RESTORE_LC_NUMERIC_STANDARD syn keyword xsMacro RESTORE_LC_NUMERIC_UNDERLYING RESTORE_NUMERIC_LOCAL syn keyword xsMacro RESTORE_NUMERIC_STANDARD RETPUSHNO RETPUSHUNDEF syn keyword xsMacro RETPUSHYES RETSETNO RETSETTARG RETSETUNDEF RETSETYES syn keyword xsMacro RETURN RETURNOP RETURNX RETURN_PROBE REXEC_CHECKED syn keyword xsMacro REXEC_COPY_SKIP_POST REXEC_COPY_SKIP_PRE REXEC_COPY_STR syn keyword xsMacro REXEC_FAIL_ON_UNDERFLOW REXEC_IGNOREPOS REXEC_NOT_FIRST syn keyword xsMacro REXEC_SCREAM RE_DEBUG_COMPILE_DUMP RE_DEBUG_COMPILE_FLAGS syn keyword xsMacro RE_DEBUG_COMPILE_MASK RE_DEBUG_COMPILE_OPTIMISE syn keyword xsMacro RE_DEBUG_COMPILE_PARSE RE_DEBUG_COMPILE_TEST syn keyword xsMacro RE_DEBUG_COMPILE_TRIE RE_DEBUG_EXECUTE_INTUIT syn keyword xsMacro RE_DEBUG_EXECUTE_MASK RE_DEBUG_EXECUTE_MATCH syn keyword xsMacro RE_DEBUG_EXECUTE_TRIE RE_DEBUG_EXTRA_BUFFERS syn keyword xsMacro RE_DEBUG_EXTRA_GPOS RE_DEBUG_EXTRA_MASK syn keyword xsMacro RE_DEBUG_EXTRA_OFFDEBUG RE_DEBUG_EXTRA_OFFSETS syn keyword xsMacro RE_DEBUG_EXTRA_OPTIMISE RE_DEBUG_EXTRA_STACK syn keyword xsMacro RE_DEBUG_EXTRA_STATE RE_DEBUG_EXTRA_TRIE RE_DEBUG_FLAG syn keyword xsMacro RE_DEBUG_FLAGS RE_PV_COLOR_DECL RE_PV_QUOTED_DECL syn keyword xsMacro RE_SV_DUMPLEN RE_SV_ESCAPE RE_SV_TAIL syn keyword xsMacro RE_TRACK_PATTERN_OFFSETS RE_TRIE_MAXBUF_INIT syn keyword xsMacro RE_TRIE_MAXBUF_NAME RMS_DIR RMS_FAC RMS_FEX RMS_FNF syn keyword xsMacro RMS_IFI RMS_ISI RMS_PRV ROTL32 ROTL64 ROTL_UV syn keyword xsMacro RUNOPS_DEFAULT RV2CVOPCV_FLAG_MASK RV2CVOPCV_MARK_EARLY syn keyword xsMacro RV2CVOPCV_MAYBE_NAME_GV RV2CVOPCV_RETURN_NAME_GV syn keyword xsMacro RV2CVOPCV_RETURN_STUB RX_ANCHORED_SUBSTR RX_ANCHORED_UTF8 syn keyword xsMacro RX_BUFF_IDX_CARET_FULLMATCH RX_BUFF_IDX_CARET_POSTMATCH syn keyword xsMacro RX_BUFF_IDX_CARET_PREMATCH RX_BUFF_IDX_FULLMATCH syn keyword xsMacro RX_BUFF_IDX_POSTMATCH RX_BUFF_IDX_PREMATCH syn keyword xsMacro RX_CHECK_SUBSTR RX_COMPFLAGS RX_ENGINE RX_EXTFLAGS syn keyword xsMacro RX_FLOAT_SUBSTR RX_FLOAT_UTF8 RX_GOFS RX_HAS_CUTGROUP syn keyword xsMacro RX_INTFLAGS RX_ISTAINTED RX_LASTCLOSEPAREN RX_LASTPAREN syn keyword xsMacro RX_MATCH_COPIED RX_MATCH_COPIED_off RX_MATCH_COPIED_on syn keyword xsMacro RX_MATCH_COPIED_set RX_MATCH_COPY_FREE RX_MATCH_TAINTED syn keyword xsMacro RX_MATCH_TAINTED_off RX_MATCH_TAINTED_on syn keyword xsMacro RX_MATCH_TAINTED_set RX_MATCH_UTF8 RX_MATCH_UTF8_off syn keyword xsMacro RX_MATCH_UTF8_on RX_MATCH_UTF8_set RX_MINLEN RX_MINLENRET syn keyword xsMacro RX_NPARENS RX_OFFS RX_PRECOMP RX_PRECOMP_const RX_PRELEN syn keyword xsMacro RX_REFCNT RX_SAVED_COPY RX_SUBBEG RX_SUBCOFFSET RX_SUBLEN syn keyword xsMacro RX_SUBOFFSET RX_TAINT_on RX_UTF8 RX_WRAPLEN RX_WRAPPED syn keyword xsMacro RX_WRAPPED_const RX_ZERO_LEN RXapif_ALL RXapif_CLEAR syn keyword xsMacro RXapif_DELETE RXapif_EXISTS RXapif_FETCH RXapif_FIRSTKEY syn keyword xsMacro RXapif_NEXTKEY RXapif_ONE RXapif_REGNAME RXapif_REGNAMES syn keyword xsMacro RXapif_REGNAMES_COUNT RXapif_SCALAR RXapif_STORE syn keyword xsMacro RXf_BASE_SHIFT RXf_CHECK_ALL RXf_COPY_DONE RXf_EVAL_SEEN syn keyword xsMacro RXf_INTUIT_TAIL RXf_IS_ANCHORED RXf_MATCH_UTF8 syn keyword xsMacro RXf_NO_INPLACE_SUBST RXf_NULL RXf_PMf_CHARSET syn keyword xsMacro RXf_PMf_COMPILETIME RXf_PMf_EXTENDED syn keyword xsMacro RXf_PMf_EXTENDED_MORE RXf_PMf_FLAGCOPYMASK RXf_PMf_FOLD syn keyword xsMacro RXf_PMf_KEEPCOPY RXf_PMf_MULTILINE RXf_PMf_NOCAPTURE syn keyword xsMacro RXf_PMf_SINGLELINE RXf_PMf_SPLIT RXf_PMf_STD_PMMOD syn keyword xsMacro RXf_PMf_STD_PMMOD_SHIFT RXf_PMf_STRICT RXf_SKIPWHITE syn keyword xsMacro RXf_SPLIT RXf_START_ONLY RXf_TAINTED RXf_TAINTED_SEEN syn keyword xsMacro RXf_UNBOUNDED_QUANTIFIER_SEEN RXf_USE_INTUIT syn keyword xsMacro RXf_USE_INTUIT_ML RXf_USE_INTUIT_NOML RXf_WHITE RXi_GET syn keyword xsMacro RXi_GET_DECL RXi_SET RXp_COMPFLAGS RXp_EXTFLAGS syn keyword xsMacro RXp_INTFLAGS RXp_MATCH_COPIED RXp_MATCH_COPIED_off syn keyword xsMacro RXp_MATCH_COPIED_on RXp_MATCH_TAINTED syn keyword xsMacro RXp_MATCH_TAINTED_on RXp_MATCH_UTF8 RXp_PAREN_NAMES ReANY syn keyword xsMacro ReREFCNT_dec ReREFCNT_inc Renew Renewc RsPARA RsRECORD syn keyword xsMacro RsSIMPLE RsSNARF SAFE_TRIE_NODENUM SANY SAVEADELETE syn keyword xsMacro SAVEBOOL SAVECLEARSV SAVECOMPILEWARNINGS SAVECOMPPAD syn keyword xsMacro SAVECOPFILE SAVECOPFILE_FREE SAVECOPLINE syn keyword xsMacro SAVECOPSTASH_FREE SAVEDELETE SAVEDESTRUCTOR syn keyword xsMacro SAVEDESTRUCTOR_X SAVEFREECOPHH SAVEFREEOP SAVEFREEPADNAME syn keyword xsMacro SAVEFREEPV SAVEFREESV SAVEGENERICPV SAVEGENERICSV syn keyword xsMacro SAVEHDELETE SAVEHINTS SAVEI16 SAVEI32 SAVEI8 SAVEINT syn keyword xsMacro SAVEIV SAVELONG SAVEMORTALIZESV SAVEOP syn keyword xsMacro SAVEPADSVANDMORTALIZE SAVEPARSER SAVEPPTR SAVESETSVFLAGS syn keyword xsMacro SAVESHAREDPV SAVESPTR SAVESTACK_POS SAVESWITCHSTACK syn keyword xsMacro SAVETMPS SAVEVPTR SAVE_DEFSV SAVE_ERRNO SAVE_MASK syn keyword xsMacro SAVE_TIGHT_SHIFT SAVEf_KEEPOLDELEM SAVEf_SETMAGIC syn keyword xsMacro SAVEt_ADELETE SAVEt_AELEM SAVEt_ALLOC SAVEt_APTR syn keyword xsMacro SAVEt_ARG0_MAX SAVEt_ARG1_MAX SAVEt_ARG2_MAX SAVEt_AV syn keyword xsMacro SAVEt_BOOL SAVEt_CLEARPADRANGE SAVEt_CLEARSV syn keyword xsMacro SAVEt_COMPILE_WARNINGS SAVEt_COMPPAD SAVEt_DELETE syn keyword xsMacro SAVEt_DESTRUCTOR SAVEt_DESTRUCTOR_X SAVEt_FREECOPHH syn keyword xsMacro SAVEt_FREEOP SAVEt_FREEPADNAME SAVEt_FREEPV SAVEt_FREESV syn keyword xsMacro SAVEt_GENERIC_PVREF SAVEt_GENERIC_SVREF SAVEt_GP syn keyword xsMacro SAVEt_GP_ALIASED_SV SAVEt_GVSLOT SAVEt_GVSV SAVEt_HELEM syn keyword xsMacro SAVEt_HINTS SAVEt_HPTR SAVEt_HV SAVEt_I16 SAVEt_I32 syn keyword xsMacro SAVEt_I32_SMALL SAVEt_I8 SAVEt_INT SAVEt_INT_SMALL syn keyword xsMacro SAVEt_ITEM SAVEt_IV SAVEt_LONG SAVEt_MORTALIZESV syn keyword xsMacro SAVEt_NSTAB SAVEt_OP SAVEt_PADSV_AND_MORTALIZE syn keyword xsMacro SAVEt_PARSER SAVEt_PPTR SAVEt_READONLY_OFF syn keyword xsMacro SAVEt_REGCONTEXT SAVEt_SAVESWITCHSTACK SAVEt_SET_SVFLAGS syn keyword xsMacro SAVEt_SHARED_PVREF SAVEt_SPTR SAVEt_STACK_POS syn keyword xsMacro SAVEt_STRLEN SAVEt_SV SAVEt_SVREF SAVEt_VPTR syn keyword xsMacro SAWAMPERSAND_LEFT SAWAMPERSAND_MIDDLE SAWAMPERSAND_RIGHT syn keyword xsMacro SBOL SB_ENUM_COUNT SCAN_DEF SCAN_REPL SCAN_TR syn keyword xsMacro SCAN_VERSION SCHED_YIELD SCOPE_SAVES_SIGNAL_MASK SEEK_CUR syn keyword xsMacro SEEK_END SEEK_SET SELECT_MIN_BITS SEOL SETERRNO syn keyword xsMacro SETGRENT_R_PROTO SETHOSTENT_R_PROTO SETLOCALE_R_PROTO syn keyword xsMacro SETNETENT_R_PROTO SETPROTOENT_R_PROTO SETPWENT_R_PROTO syn keyword xsMacro SETSERVENT_R_PROTO SETTARG SET_MARK_OFFSET syn keyword xsMacro SET_NUMERIC_LOCAL SET_NUMERIC_STANDARD syn keyword xsMacro SET_NUMERIC_UNDERLYING SET_THR SET_THREAD_SELF SETi SETn syn keyword xsMacro SETp SETs SETu SHARP_S_SKIP SHIFTOP SHORTSIZE SH_PATH syn keyword xsMacro SIGABRT SIGILL SIG_NAME SIG_NUM SIG_SIZE SINGLE_PAT_MOD syn keyword xsMacro SIPROUND SITEARCH SITEARCH_EXP SITELIB SITELIB_EXP syn keyword xsMacro SITELIB_STEM SIZE_ALIGN SIZE_ONLY SKIP SKIP_next syn keyword xsMacro SKIP_next_fail SLOPPYDIVIDE SOCKET_OPEN_MODE SPAGAIN syn keyword xsMacro SPRINTF_RETURNS_STRLEN SRAND48_R_PROTO SRANDOM_R_PROTO syn keyword xsMacro SSCHECK SSC_MATCHES_EMPTY_STRING SSGROW SSNEW SSNEWa syn keyword xsMacro SSNEWat SSNEWt SSPOPBOOL SSPOPDPTR SSPOPDXPTR SSPOPINT syn keyword xsMacro SSPOPIV SSPOPLONG SSPOPPTR SSPOPUV SSPTR SSPTRt syn keyword xsMacro SSPUSHBOOL SSPUSHDPTR SSPUSHDXPTR SSPUSHINT SSPUSHIV syn keyword xsMacro SSPUSHLONG SSPUSHPTR SSPUSHUV SS_ACCVIO SS_ADD_BOOL syn keyword xsMacro SS_ADD_DPTR SS_ADD_DXPTR SS_ADD_END SS_ADD_INT SS_ADD_IV syn keyword xsMacro SS_ADD_LONG SS_ADD_PTR SS_ADD_UV SS_BUFFEROVF syn keyword xsMacro SS_DEVOFFLINE SS_IVCHAN SS_MAXPUSH SS_NOPRIV SS_NORMAL syn keyword xsMacro SSize_t_MAX ST STANDARD_C STAR STARTPERL START_EXTERN_C syn keyword xsMacro START_MY_CXT STATIC STATIC_ASSERT_1 STATIC_ASSERT_2 syn keyword xsMacro STATIC_ASSERT_GLOBAL STATIC_ASSERT_STMT syn keyword xsMacro STATUS_ALL_FAILURE STATUS_ALL_SUCCESS STATUS_CURRENT syn keyword xsMacro STATUS_EXIT STATUS_EXIT_SET STATUS_NATIVE syn keyword xsMacro STATUS_NATIVE_CHILD_SET STATUS_UNIX STATUS_UNIX_EXIT_SET syn keyword xsMacro STATUS_UNIX_SET STDCHAR STDIO_STREAM_ARRAY STD_PAT_MODS syn keyword xsMacro STD_PMMOD_FLAGS_CLEAR STD_PMMOD_FLAGS_PARSE_X_WARN syn keyword xsMacro STMT_END STMT_START STORE_LC_NUMERIC_FORCE_TO_UNDERLYING syn keyword xsMacro STORE_LC_NUMERIC_SET_TO_NEEDED syn keyword xsMacro STORE_LC_NUMERIC_STANDARD_SET_UNDERLYING syn keyword xsMacro STORE_LC_NUMERIC_UNDERLYING_SET_STANDARD syn keyword xsMacro STORE_NUMERIC_LOCAL_SET_STANDARD syn keyword xsMacro STORE_NUMERIC_STANDARD_FORCE_LOCAL syn keyword xsMacro STORE_NUMERIC_STANDARD_SET_LOCAL STRERROR_R_PROTO STRING syn keyword xsMacro STRINGIFY STRUCT_OFFSET STRUCT_SV STR_LEN STR_SZ syn keyword xsMacro STR_WITH_LEN ST_INO_SIGN ST_INO_SIZE SUB syn keyword xsMacro SUBST_TAINT_BOOLRET SUBST_TAINT_PAT SUBST_TAINT_REPL syn keyword xsMacro SUBST_TAINT_RETAINT SUBST_TAINT_STR SUBVERSION SUCCEED syn keyword xsMacro SUSPEND SVTYPEMASK SV_CATBYTES SV_CATUTF8 syn keyword xsMacro SV_CHECK_THINKFIRST SV_CHECK_THINKFIRST_COW_DROP SV_CONST syn keyword xsMacro SV_CONSTS_COUNT SV_CONST_BINMODE SV_CONST_CLEAR syn keyword xsMacro SV_CONST_CLOSE SV_CONST_DELETE SV_CONST_DESTROY syn keyword xsMacro SV_CONST_EOF SV_CONST_EXISTS SV_CONST_EXTEND syn keyword xsMacro SV_CONST_FETCH SV_CONST_FETCHSIZE SV_CONST_FILENO syn keyword xsMacro SV_CONST_FIRSTKEY SV_CONST_GETC SV_CONST_NEXTKEY syn keyword xsMacro SV_CONST_OPEN SV_CONST_POP SV_CONST_PRINT SV_CONST_PRINTF syn keyword xsMacro SV_CONST_PUSH SV_CONST_READ SV_CONST_READLINE syn keyword xsMacro SV_CONST_RETURN SV_CONST_SCALAR SV_CONST_SEEK syn keyword xsMacro SV_CONST_SHIFT SV_CONST_SPLICE SV_CONST_STORE syn keyword xsMacro SV_CONST_STORESIZE SV_CONST_TELL SV_CONST_TIEARRAY syn keyword xsMacro SV_CONST_TIEHANDLE SV_CONST_TIEHASH SV_CONST_TIESCALAR syn keyword xsMacro SV_CONST_UNSHIFT SV_CONST_UNTIE SV_CONST_WRITE syn keyword xsMacro SV_COW_DROP_PV SV_COW_OTHER_PVS SV_COW_REFCNT_MAX syn keyword xsMacro SV_COW_SHARED_HASH_KEYS SV_DO_COW_SVSETSV syn keyword xsMacro SV_FORCE_UTF8_UPGRADE SV_GMAGIC SV_HAS_TRAILING_NUL syn keyword xsMacro SV_IMMEDIATE_UNREF SV_MUTABLE_RETURN SV_NOSTEAL syn keyword xsMacro SV_SAVED_COPY SV_SKIP_OVERLOAD SV_SMAGIC syn keyword xsMacro SV_UNDEF_RETURNS_NULL SV_UTF8_NO_ENCODING SVrepl_EVAL syn keyword xsMacro SVt_FIRST SVt_MASK SWITCHSTACK SYMBIAN SYSTEM_GMTIME_MAX syn keyword xsMacro SYSTEM_GMTIME_MIN SYSTEM_LOCALTIME_MAX syn keyword xsMacro SYSTEM_LOCALTIME_MIN S_IEXEC S_IFIFO S_IFMT S_IREAD syn keyword xsMacro S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU S_ISBLK syn keyword xsMacro S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISLNK S_ISREG S_ISSOCK syn keyword xsMacro S_ISUID S_IWGRP S_IWOTH S_IWRITE S_IWUSR S_IXGRP S_IXOTH syn keyword xsMacro S_IXUSR S_PAT_MODS Safefree Semctl Sigjmp_buf Siglongjmp syn keyword xsMacro Sigsetjmp Size_t_MAX Size_t_size StGiFy StashHANDLER Stat syn keyword xsMacro Strerror Strtol Strtoul StructCopy SvAMAGIC SvANY syn keyword xsMacro SvCANCOW SvCANEXISTDELETE SvCOMPILED SvCOMPILED_off syn keyword xsMacro SvCOMPILED_on SvCUR SvCUR_set SvDESTROYABLE SvEND syn keyword xsMacro SvEND_set SvENDx SvEVALED SvEVALED_off SvEVALED_on SvFAKE syn keyword xsMacro SvFAKE_off SvFAKE_on SvFLAGS SvGAMAGIC SvGETMAGIC SvGID syn keyword xsMacro SvGMAGICAL SvGMAGICAL_off SvGMAGICAL_on SvGROW syn keyword xsMacro SvGROW_mutable SvIMMORTAL SvIOK SvIOK_UV SvIOK_nog syn keyword xsMacro SvIOK_nogthink SvIOK_notUV SvIOK_off SvIOK_on SvIOK_only syn keyword xsMacro SvIOK_only_UV SvIOKp SvIOKp_on SvIS_FREED SvIV SvIVX syn keyword xsMacro SvIVXx SvIV_nomg SvIV_please SvIV_please_nomg SvIV_set syn keyword xsMacro SvIVx SvIsCOW SvIsCOW_normal SvIsCOW_off SvIsCOW_on syn keyword xsMacro SvIsCOW_shared_hash SvIsUV SvIsUV_off SvIsUV_on SvLEN syn keyword xsMacro SvLEN_set SvLENx SvLOCK SvMAGIC SvMAGICAL SvMAGICAL_off syn keyword xsMacro SvMAGICAL_on SvMAGIC_set SvNIOK SvNIOK_nog syn keyword xsMacro SvNIOK_nogthink SvNIOK_off SvNIOKp SvNOK SvNOK_nog syn keyword xsMacro SvNOK_nogthink SvNOK_off SvNOK_on SvNOK_only SvNOKp syn keyword xsMacro SvNOKp_on SvNV SvNVX SvNVXx SvNV_nomg SvNV_set SvNVx syn keyword xsMacro SvOBJECT SvOBJECT_off SvOBJECT_on SvOK SvOK_off syn keyword xsMacro SvOK_off_exc_UV SvOKp SvOOK SvOOK_off SvOOK_offset syn keyword xsMacro SvOOK_on SvOURSTASH SvOURSTASH_set SvPADMY SvPADMY_on syn keyword xsMacro SvPADSTALE SvPADSTALE_off SvPADSTALE_on SvPADTMP syn keyword xsMacro SvPADTMP_off SvPADTMP_on SvPAD_OUR SvPAD_OUR_on syn keyword xsMacro SvPAD_STATE SvPAD_STATE_on SvPAD_TYPED SvPAD_TYPED_on syn keyword xsMacro SvPCS_IMPORTED SvPCS_IMPORTED_off SvPCS_IMPORTED_on syn keyword xsMacro SvPEEK SvPOK SvPOK_byte_nog SvPOK_byte_nogthink syn keyword xsMacro SvPOK_byte_pure_nogthink SvPOK_nog SvPOK_nogthink syn keyword xsMacro SvPOK_off SvPOK_on SvPOK_only SvPOK_only_UTF8 syn keyword xsMacro SvPOK_pure_nogthink SvPOK_utf8_nog SvPOK_utf8_nogthink syn keyword xsMacro SvPOK_utf8_pure_nogthink SvPOKp SvPOKp_on SvPV SvPVX syn keyword xsMacro SvPVX_const SvPVX_mutable SvPVXtrue SvPVXx SvPV_const syn keyword xsMacro SvPV_flags SvPV_flags_const SvPV_flags_const_nolen syn keyword xsMacro SvPV_flags_mutable SvPV_force SvPV_force_flags syn keyword xsMacro SvPV_force_flags_mutable SvPV_force_flags_nolen syn keyword xsMacro SvPV_force_mutable SvPV_force_nolen SvPV_force_nomg syn keyword xsMacro SvPV_force_nomg_nolen SvPV_free SvPV_mutable SvPV_nolen syn keyword xsMacro SvPV_nolen_const SvPV_nomg SvPV_nomg_const syn keyword xsMacro SvPV_nomg_const_nolen SvPV_nomg_nolen SvPV_renew SvPV_set syn keyword xsMacro SvPV_shrink_to_cur SvPVbyte SvPVbyte_force SvPVbyte_nolen syn keyword xsMacro SvPVbytex SvPVbytex_force SvPVbytex_nolen SvPVutf8 syn keyword xsMacro SvPVutf8_force SvPVutf8_nolen SvPVutf8x SvPVutf8x_force syn keyword xsMacro SvPVx SvPVx_const SvPVx_force SvPVx_nolen syn keyword xsMacro SvPVx_nolen_const SvREADONLY SvREADONLY_off SvREADONLY_on syn keyword xsMacro SvREFCNT SvREFCNT_IMMORTAL SvREFCNT_dec SvREFCNT_dec_NN syn keyword xsMacro SvREFCNT_inc SvREFCNT_inc_NN SvREFCNT_inc_simple syn keyword xsMacro SvREFCNT_inc_simple_NN SvREFCNT_inc_simple_void syn keyword xsMacro SvREFCNT_inc_simple_void_NN SvREFCNT_inc_void syn keyword xsMacro SvREFCNT_inc_void_NN SvRELEASE_IVX SvRELEASE_IVX_ syn keyword xsMacro SvRMAGICAL SvRMAGICAL_off SvRMAGICAL_on SvROK SvROK_off syn keyword xsMacro SvROK_on SvRV SvRV_const SvRV_set SvRVx SvRX SvRXOK syn keyword xsMacro SvSCREAM SvSCREAM_off SvSCREAM_on SvSETMAGIC SvSHARE syn keyword xsMacro SvSHARED_HASH SvSHARED_HEK_FROM_PV SvSMAGICAL syn keyword xsMacro SvSMAGICAL_off SvSMAGICAL_on SvSTASH SvSTASH_set syn keyword xsMacro SvSetMagicSV SvSetMagicSV_nosteal SvSetSV SvSetSV_and syn keyword xsMacro SvSetSV_nosteal SvSetSV_nosteal_and SvTAIL SvTAIL_off syn keyword xsMacro SvTAIL_on SvTAINT SvTAINTED SvTAINTED_off SvTAINTED_on syn keyword xsMacro SvTEMP SvTEMP_off SvTEMP_on SvTHINKFIRST SvTIED_mg syn keyword xsMacro SvTIED_obj SvTRUE SvTRUE_NN SvTRUE_common SvTRUE_nomg syn keyword xsMacro SvTRUE_nomg_NN SvTRUEx SvTRUEx_nomg SvTYPE SvUID SvUNLOCK syn keyword xsMacro SvUOK SvUOK_nog SvUOK_nogthink SvUPGRADE SvUTF8 syn keyword xsMacro SvUTF8_off SvUTF8_on SvUV SvUVX SvUVXx SvUV_nomg SvUV_set syn keyword xsMacro SvUVx SvVALID SvVALID_off SvVALID_on SvVOK SvVSTRING_mg syn keyword xsMacro SvWEAKREF SvWEAKREF_off SvWEAKREF_on Sv_Grow TAIL TAINT syn keyword xsMacro TAINTING_get TAINTING_set TAINT_ENV TAINT_IF TAINT_NOT syn keyword xsMacro TAINT_PROPER TAINT_WARN_get TAINT_WARN_set TAINT_get syn keyword xsMacro TAINT_set THING THR THREAD_CREATE syn keyword xsMacro THREAD_CREATE_NEEDS_STACK THREAD_POST_CREATE syn keyword xsMacro THREAD_RET_CAST THREAD_RET_TYPE syn keyword xsMacro TIED_METHOD_ARGUMENTS_ON_STACK syn keyword xsMacro TIED_METHOD_MORTALIZE_NOT_NEEDED TIED_METHOD_SAY syn keyword xsMacro TIME64_CONFIG_H TIME64_H TM TMPNAM_R_PROTO TOO_LATE_FOR syn keyword xsMacro TOO_LATE_FOR_ TOPBLOCK TOPMARK TOPi TOPl TOPm1s TOPn TOPp syn keyword xsMacro TOPp1s TOPpx TOPs TOPu TOPul TRIE TRIEC TRIE_BITMAP syn keyword xsMacro TRIE_BITMAP_BYTE TRIE_BITMAP_CLEAR TRIE_BITMAP_SET syn keyword xsMacro TRIE_BITMAP_TEST TRIE_CHARCOUNT TRIE_NODEIDX TRIE_NODENUM syn keyword xsMacro TRIE_WORDS_OFFSET TRIE_next TRIE_next_fail TRUE syn keyword xsMacro TTYNAME_R_PROTO TWO_BYTE_UTF8_TO_NATIVE syn keyword xsMacro TWO_BYTE_UTF8_TO_UNI TYPE_CHARS TYPE_DIGITS Timeval syn keyword xsMacro U16SIZE U16TYPE U16_CONST U16_MAX U16_MIN U32SIZE U32TYPE syn keyword xsMacro U32_ALIGNMENT_REQUIRED U32_CONST U32_MAX U32_MAX_P1 syn keyword xsMacro U32_MAX_P1_HALF U32_MIN U64SIZE U64TYPE U64_CONST U8SIZE syn keyword xsMacro U8TO16_LE U8TO32_LE U8TO64_LE U8TYPE U8_MAX U8_MIN syn keyword xsMacro UCHARAT UINT32_MIN UINT64_C UINT64_MIN UMINUS syn keyword xsMacro UNALIGNED_SAFE UNDERBAR UNICODE_ALLOW_ANY syn keyword xsMacro UNICODE_ALLOW_SUPER UNICODE_ALLOW_SURROGATE syn keyword xsMacro UNICODE_BYTE_ORDER_MARK UNICODE_DISALLOW_FE_FF syn keyword xsMacro UNICODE_DISALLOW_ILLEGAL_INTERCHANGE syn keyword xsMacro UNICODE_DISALLOW_NONCHAR UNICODE_DISALLOW_SUPER syn keyword xsMacro UNICODE_DISALLOW_SURROGATE syn keyword xsMacro UNICODE_GREEK_CAPITAL_LETTER_SIGMA syn keyword xsMacro UNICODE_GREEK_SMALL_LETTER_FINAL_SIGMA syn keyword xsMacro UNICODE_GREEK_SMALL_LETTER_SIGMA syn keyword xsMacro UNICODE_IS_BYTE_ORDER_MARK UNICODE_IS_FE_FF syn keyword xsMacro UNICODE_IS_NONCHAR UNICODE_IS_REPLACEMENT syn keyword xsMacro UNICODE_IS_SUPER UNICODE_IS_SURROGATE UNICODE_LINE_SEPA_0 syn keyword xsMacro UNICODE_LINE_SEPA_1 UNICODE_LINE_SEPA_2 syn keyword xsMacro UNICODE_PARA_SEPA_0 UNICODE_PARA_SEPA_1 syn keyword xsMacro UNICODE_PARA_SEPA_2 UNICODE_PAT_MOD UNICODE_PAT_MODS syn keyword xsMacro UNICODE_REPLACEMENT UNICODE_SURROGATE_FIRST syn keyword xsMacro UNICODE_SURROGATE_LAST UNICODE_WARN_FE_FF syn keyword xsMacro UNICODE_WARN_ILLEGAL_INTERCHANGE UNICODE_WARN_NONCHAR syn keyword xsMacro UNICODE_WARN_SUPER UNICODE_WARN_SURROGATE UNIOP UNIOPSUB syn keyword xsMacro UNISKIP UNI_DISPLAY_BACKSLASH UNI_DISPLAY_ISPRINT syn keyword xsMacro UNI_DISPLAY_QQ UNI_DISPLAY_REGEX UNI_IS_INVARIANT syn keyword xsMacro UNI_TO_NATIVE UNKNOWN_ERRNO_MSG UNLESS UNLESSM UNLIKELY syn keyword xsMacro UNLINK UNLOCK_DOLLARZERO_MUTEX UNLOCK_LC_NUMERIC_STANDARD syn keyword xsMacro UNLOCK_NUMERIC_STANDARD UNOP_AUX_item_sv UNTIL syn keyword xsMacro UPG_VERSION USE USE_64_BIT_ALL USE_64_BIT_INT syn keyword xsMacro USE_64_BIT_RAWIO USE_64_BIT_STDIO USE_BSDPGRP syn keyword xsMacro USE_DYNAMIC_LOADING USE_ENVIRON_ARRAY USE_HASH_SEED syn keyword xsMacro USE_HEAP_INSTEAD_OF_STACK USE_LARGE_FILES USE_LEFT syn keyword xsMacro USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE syn keyword xsMacro USE_LOCALE_MESSAGES USE_LOCALE_MONETARY syn keyword xsMacro USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_PERLIO syn keyword xsMacro USE_PERL_PERTURB_KEYS USE_REENTRANT_API syn keyword xsMacro USE_SEMCTL_SEMID_DS USE_SEMCTL_SEMUN USE_STAT_BLOCKS syn keyword xsMacro USE_STAT_RDEV USE_STDIO USE_STRUCT_COPY USE_SYSTEM_GMTIME syn keyword xsMacro USE_SYSTEM_LOCALTIME USE_THREADS USE_TM64 syn keyword xsMacro USE_UTF8_IN_NAMES USING_MSVC6 UTF8SKIP UTF8_ACCUMULATE syn keyword xsMacro UTF8_ALLOW_ANY UTF8_ALLOW_ANYUV UTF8_ALLOW_CONTINUATION syn keyword xsMacro UTF8_ALLOW_DEFAULT UTF8_ALLOW_EMPTY UTF8_ALLOW_FFFF syn keyword xsMacro UTF8_ALLOW_LONG UTF8_ALLOW_NON_CONTINUATION syn keyword xsMacro UTF8_ALLOW_SHORT UTF8_ALLOW_SURROGATE UTF8_CHECK_ONLY syn keyword xsMacro UTF8_DISALLOW_FE_FF UTF8_DISALLOW_ILLEGAL_INTERCHANGE syn keyword xsMacro UTF8_DISALLOW_NONCHAR UTF8_DISALLOW_SUPER syn keyword xsMacro UTF8_DISALLOW_SURROGATE UTF8_EIGHT_BIT_HI syn keyword xsMacro UTF8_EIGHT_BIT_LO syn keyword xsMacro UTF8_FIRST_PROBLEMATIC_CODE_POINT_FIRST_BYTE syn keyword xsMacro UTF8_IS_ABOVE_LATIN1 UTF8_IS_CONTINUATION syn keyword xsMacro UTF8_IS_CONTINUED UTF8_IS_DOWNGRADEABLE_START syn keyword xsMacro UTF8_IS_INVARIANT UTF8_IS_NEXT_CHAR_DOWNGRADEABLE syn keyword xsMacro UTF8_IS_NONCHAR_ syn keyword xsMacro UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC syn keyword xsMacro UTF8_IS_REPLACEMENT UTF8_IS_START UTF8_IS_SUPER syn keyword xsMacro UTF8_IS_SURROGATE UTF8_MAXBYTES UTF8_MAXBYTES_CASE syn keyword xsMacro UTF8_MAXLEN UTF8_MAX_FOLD_CHAR_EXPAND UTF8_QUAD_MAX syn keyword xsMacro UTF8_TWO_BYTE_HI UTF8_TWO_BYTE_HI_nocast UTF8_TWO_BYTE_LO syn keyword xsMacro UTF8_TWO_BYTE_LO_nocast UTF8_WARN_FE_FF syn keyword xsMacro UTF8_WARN_ILLEGAL_INTERCHANGE UTF8_WARN_NONCHAR syn keyword xsMacro UTF8_WARN_SUPER UTF8_WARN_SURROGATE UTF8f UTF8fARG syn keyword xsMacro UTF_ACCUMULATION_OVERFLOW_MASK UTF_ACCUMULATION_SHIFT syn keyword xsMacro UTF_CONTINUATION_MARK UTF_CONTINUATION_MASK syn keyword xsMacro UTF_START_MARK UTF_START_MASK UTF_TO_NATIVE syn keyword xsMacro UVCHR_IS_INVARIANT UVCHR_SKIP UVSIZE UVTYPE UVXf UV_DIG syn keyword xsMacro UV_MAX UV_MAX_P1 UV_MAX_P1_HALF UV_MIN UVf U_32 U_I U_L syn keyword xsMacro U_S U_V Uid_t_f Uid_t_sign Uid_t_size VAL_EAGAIN syn keyword xsMacro VAL_O_NONBLOCK VCMP VERB VNORMAL VNUMIFY VOL VSTRINGIFY syn keyword xsMacro VTBL_amagic VTBL_amagicelem VTBL_arylen VTBL_bm syn keyword xsMacro VTBL_collxfrm VTBL_dbline VTBL_defelem VTBL_env syn keyword xsMacro VTBL_envelem VTBL_fm VTBL_glob VTBL_isa VTBL_isaelem syn keyword xsMacro VTBL_mglob VTBL_nkeys VTBL_pack VTBL_packelem VTBL_pos syn keyword xsMacro VTBL_regdata VTBL_regdatum VTBL_regexp VTBL_sigelem syn keyword xsMacro VTBL_substr VTBL_sv VTBL_taint VTBL_uvar VTBL_vec syn keyword xsMacro VT_NATIVE VUTIL_REPLACE_CORE VVERIFY WARN_ALL syn keyword xsMacro WARN_ALLstring WARN_AMBIGUOUS WARN_BAREWORD WARN_CLOSED syn keyword xsMacro WARN_CLOSURE WARN_DEBUGGING WARN_DEPRECATED WARN_DIGIT syn keyword xsMacro WARN_EXEC WARN_EXITING WARN_EXPERIMENTAL syn keyword xsMacro WARN_EXPERIMENTAL__AUTODEREF WARN_EXPERIMENTAL__BITWISE syn keyword xsMacro WARN_EXPERIMENTAL__CONST_ATTR syn keyword xsMacro WARN_EXPERIMENTAL__LEXICAL_SUBS syn keyword xsMacro WARN_EXPERIMENTAL__LEXICAL_TOPIC syn keyword xsMacro WARN_EXPERIMENTAL__POSTDEREF syn keyword xsMacro WARN_EXPERIMENTAL__REFALIASING syn keyword xsMacro WARN_EXPERIMENTAL__REGEX_SETS syn keyword xsMacro WARN_EXPERIMENTAL__RE_STRICT syn keyword xsMacro WARN_EXPERIMENTAL__SIGNATURES syn keyword xsMacro WARN_EXPERIMENTAL__SMARTMATCH syn keyword xsMacro WARN_EXPERIMENTAL__WIN32_PERLIO WARN_GLOB syn keyword xsMacro WARN_ILLEGALPROTO WARN_IMPRECISION WARN_INPLACE syn keyword xsMacro WARN_INTERNAL WARN_IO WARN_LAYER WARN_LOCALE WARN_MALLOC syn keyword xsMacro WARN_MISC WARN_MISSING WARN_NEWLINE WARN_NONCHAR syn keyword xsMacro WARN_NONEstring WARN_NON_UNICODE WARN_NUMERIC WARN_ONCE syn keyword xsMacro WARN_OVERFLOW WARN_PACK WARN_PARENTHESIS WARN_PIPE syn keyword xsMacro WARN_PORTABLE WARN_PRECEDENCE WARN_PRINTF WARN_PROTOTYPE syn keyword xsMacro WARN_QW WARN_RECURSION WARN_REDEFINE WARN_REDUNDANT syn keyword xsMacro WARN_REGEXP WARN_RESERVED WARN_SEMICOLON WARN_SEVERE syn keyword xsMacro WARN_SIGNAL WARN_SUBSTR WARN_SURROGATE WARN_SYNTAX syn keyword xsMacro WARN_SYSCALLS WARN_TAINT WARN_THREADS WARN_UNINITIALIZED syn keyword xsMacro WARN_UNOPENED WARN_UNPACK WARN_UNTIE WARN_UTF8 WARN_VOID syn keyword xsMacro WARNshift WARNsize WB_ENUM_COUNT WEXITSTATUS WHEN WHILE syn keyword xsMacro WHILEM WHILEM_A_max WHILEM_A_max_fail WHILEM_A_min syn keyword xsMacro WHILEM_A_min_fail WHILEM_A_pre WHILEM_A_pre_fail syn keyword xsMacro WHILEM_B_max WHILEM_B_max_fail WHILEM_B_min syn keyword xsMacro WHILEM_B_min_fail WIDEST_UTYPE WIFEXITED WIFSIGNALED syn keyword xsMacro WIFSTOPPED WIN32SCK_IS_STDSCK WNOHANG WORD WSTOPSIG syn keyword xsMacro WTERMSIG WUNTRACED XDIGIT_VALUE XHvTOTALKEYS syn keyword xsMacro XOPd_xop_class XOPd_xop_desc XOPd_xop_name XOPd_xop_peep syn keyword xsMacro XOPf_xop_class XOPf_xop_desc XOPf_xop_name XOPf_xop_peep syn keyword xsMacro XPUSHTARG XPUSHi XPUSHmortal XPUSHn XPUSHp XPUSHs XPUSHu syn keyword xsMacro XPUSHundef XS XSANY XSINTERFACE_CVT XSINTERFACE_CVT_ANON syn keyword xsMacro XSINTERFACE_FUNC XSINTERFACE_FUNC_SET XSPROTO XSRETURN syn keyword xsMacro XSRETURN_EMPTY XSRETURN_IV XSRETURN_NO XSRETURN_NV syn keyword xsMacro XSRETURN_PV XSRETURN_PVN XSRETURN_UNDEF XSRETURN_UV syn keyword xsMacro XSRETURN_YES XST_mIV XST_mNO XST_mNV XST_mPV XST_mPVN syn keyword xsMacro XST_mUNDEF XST_mUV XST_mYES XS_APIVERSION_BOOTCHECK syn keyword xsMacro XS_APIVERSION_POPMARK_BOOTCHECK syn keyword xsMacro XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK syn keyword xsMacro XS_BOTHVERSION_BOOTCHECK XS_BOTHVERSION_POPMARK_BOOTCHECK syn keyword xsMacro XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK syn keyword xsMacro XS_DYNAMIC_FILENAME XS_EXTERNAL XS_INTERNAL syn keyword xsMacro XS_SETXSUBFN_POPMARK XS_VERSION_BOOTCHECK XSprePUSH syn keyword xsMacro XTENDED_PAT_MOD XopDISABLE XopENABLE XopENTRY syn keyword xsMacro XopENTRYCUSTOM XopENTRY_set XopFLAGS YADAYADA YIELD syn keyword xsMacro YYEMPTY YYSTYPE_IS_DECLARED YYSTYPE_IS_TRIVIAL syn keyword xsMacro YYTOKENTYPE Zero ZeroD _ _CANNOT _CC_ALPHA syn keyword xsMacro _CC_ALPHANUMERIC _CC_ASCII _CC_BLANK _CC_CASED syn keyword xsMacro _CC_CHARNAME_CONT _CC_CNTRL _CC_DIGIT _CC_GRAPH syn keyword xsMacro _CC_IDFIRST _CC_IS_IN_SOME_FOLD _CC_LOWER syn keyword xsMacro _CC_MNEMONIC_CNTRL _CC_NONLATIN1_FOLD syn keyword xsMacro _CC_NONLATIN1_SIMPLE_FOLD _CC_NON_FINAL_FOLD _CC_PRINT syn keyword xsMacro _CC_PUNCT _CC_QUOTEMETA _CC_SPACE _CC_UPPER _CC_VERTSPACE syn keyword xsMacro _CC_WORDCHAR _CC_XDIGIT _CC_mask _CC_mask_A syn keyword xsMacro _CHECK_AND_OUTPUT_WIDE_LOCALE_CP_MSG syn keyword xsMacro _CHECK_AND_OUTPUT_WIDE_LOCALE_UTF8_MSG syn keyword xsMacro _CHECK_AND_WARN_PROBLEMATIC_LOCALE syn keyword xsMacro _CORE_SWASH_INIT_ACCEPT_INVLIST syn keyword xsMacro _CORE_SWASH_INIT_RETURN_IF_UNDEF syn keyword xsMacro _CORE_SWASH_INIT_USER_DEFINED_PROPERTY _CPERLarg syn keyword xsMacro _FIRST_NON_SWASH_CC _GNU_SOURCE syn keyword xsMacro _HAS_NONLATIN1_FOLD_CLOSURE_ONLY_FOR_USE_BY_REGCOMP_DOT_C_AND_REGEXEC_DOT_C syn keyword xsMacro _HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE_ONLY_FOR_USE_BY_REGCOMP_DOT_C_AND_REGEXEC_DOT_C syn keyword xsMacro _HIGHEST_REGCOMP_DOT_H_SYNC _INC_PERL_XSUB_H syn keyword xsMacro _IS_IN_SOME_FOLD_ONLY_FOR_USE_BY_REGCOMP_DOT_C syn keyword xsMacro _IS_MNEMONIC_CNTRL_ONLY_FOR_USE_BY_REGCOMP_DOT_C syn keyword xsMacro _IS_NON_FINAL_FOLD_ONLY_FOR_USE_BY_REGCOMP_DOT_C _LC_CAST syn keyword xsMacro _MEM_WRAP_NEEDS_RUNTIME_CHECK _MEM_WRAP_WILL_WRAP syn keyword xsMacro _NOT_IN_NUMERIC_STANDARD _NOT_IN_NUMERIC_UNDERLYING syn keyword xsMacro _NV_BODYLESS_UNION _OP_SIBPARENT_FIELDNAME _PERLIOL_H syn keyword xsMacro _PERLIO_H _PERL_OBJECT_THIS _REGEXP_COMMON syn keyword xsMacro _RXf_PMf_CHARSET_SHIFT _RXf_PMf_SHIFT_COMPILETIME syn keyword xsMacro _RXf_PMf_SHIFT_NEXT _STDIO_H _STDIO_INCLUDED _V syn keyword xsMacro _XPVCV_COMMON _XPV_HEAD __ASSERT_ __BASE_TWO_BYTE_HI syn keyword xsMacro __BASE_TWO_BYTE_LO __Inc__IPerl___ syn keyword xsMacro __PATCHLEVEL_H_INCLUDED__ __PL_inf_float_int32 syn keyword xsMacro __PL_nan_float_int32 __STDIO_LOADED syn keyword xsMacro __attribute__deprecated__ __attribute__format__ syn keyword xsMacro __attribute__format__null_ok__ __attribute__malloc__ syn keyword xsMacro __attribute__nonnull__ __attribute__noreturn__ syn keyword xsMacro __attribute__pure__ __attribute__unused__ syn keyword xsMacro __attribute__warn_unused_result__ __filbuf __flsbuf syn keyword xsMacro __has_builtin __perlapi_h__ _config_h_ _exit _filbuf syn keyword xsMacro _flsbuf _generic_LC _generic_LC_base syn keyword xsMacro _generic_LC_func_utf8 _generic_LC_swash_utf8 syn keyword xsMacro _generic_LC_swash_uvchr _generic_LC_underscore syn keyword xsMacro _generic_LC_utf8 _generic_LC_uvchr _generic_func_utf8 syn keyword xsMacro _generic_isCC _generic_isCC_A _generic_swash_uni syn keyword xsMacro _generic_swash_utf8 _generic_toFOLD_LC syn keyword xsMacro _generic_toLOWER_LC _generic_toUPPER_LC _generic_uni syn keyword xsMacro _generic_utf8 _generic_utf8_no_upper_latin1 _isQMC syn keyword xsMacro _isQUOTEMETA _swab_16_ _swab_32_ _swab_64_ aTHXa aTHXo syn keyword xsMacro aTHXo_ aTHXx aTHXx_ abort accept access syn keyword xsMacro anchored_end_shift anchored_offset anchored_substr syn keyword xsMacro anchored_utf8 asctime assert assert_ assert_not_ROK syn keyword xsMacro assert_not_glob atoll av_tindex bcmp bind blk_eval syn keyword xsMacro blk_format blk_gimme blk_givwhen blk_loop blk_oldcop syn keyword xsMacro blk_oldmarksp blk_oldpm blk_oldscopesp blk_oldsp blk_sub syn keyword xsMacro blk_u16 bool boolSV cBINOP cBINOPo cBINOPx cBOOL cCOP syn keyword xsMacro cCOPo cCOPx cGVOP_gv cGVOPo_gv cGVOPx_gv cLISTOP cLISTOPo syn keyword xsMacro cLISTOPx cLOGOP cLOGOPo cLOGOPx cLOOP cLOOPo cLOOPx syn keyword xsMacro cMETHOPx cMETHOPx_meth cMETHOPx_rclass cPADOP cPADOPo syn keyword xsMacro cPADOPx cPMOP cPMOPo cPMOPx cPVOP cPVOPo cPVOPx cSVOP syn keyword xsMacro cSVOP_sv cSVOPo cSVOPo_sv cSVOPx cSVOPx_sv cSVOPx_svp syn keyword xsMacro cUNOP cUNOP_AUX cUNOP_AUXo cUNOP_AUXx cUNOPo cUNOPx chdir syn keyword xsMacro check_end_shift check_offset_max check_offset_min syn keyword xsMacro check_substr check_utf8 child_offset_bits chmod chsize syn keyword xsMacro ckDEAD ckWARN ckWARN2 ckWARN2_d ckWARN3 ckWARN3_d ckWARN4 syn keyword xsMacro ckWARN4_d ckWARN_d close closedir connect cop_hints_2hv syn keyword xsMacro cop_hints_fetch_pv cop_hints_fetch_pvn syn keyword xsMacro cop_hints_fetch_pvs cop_hints_fetch_sv cophh_2hv syn keyword xsMacro cophh_copy cophh_delete_pv cophh_delete_pvn syn keyword xsMacro cophh_delete_pvs cophh_delete_sv cophh_fetch_pv syn keyword xsMacro cophh_fetch_pvn cophh_fetch_pvs cophh_fetch_sv cophh_free syn keyword xsMacro cophh_new_empty cophh_store_pv cophh_store_pvn syn keyword xsMacro cophh_store_pvs cophh_store_sv crypt ctermid ctime syn keyword xsMacro cv_ckproto cx_type cxstack cxstack_ix cxstack_max syn keyword xsMacro dATARGET dAX dAXMARK dEXT dEXTCONST dITEMS dJMPENV dMARK syn keyword xsMacro dMULTICALL dMY_CXT dMY_CXT_INTERP dMY_CXT_SV dNOOP syn keyword xsMacro dORIGMARK dPOPPOPiirl dPOPPOPnnrl dPOPPOPssrl dPOPTOPiirl syn keyword xsMacro dPOPTOPiirl_nomg dPOPTOPiirl_ul_nomg dPOPTOPnnrl syn keyword xsMacro dPOPTOPnnrl_nomg dPOPTOPssrl dPOPXiirl dPOPXiirl_ul_nomg syn keyword xsMacro dPOPXnnrl dPOPXssrl dPOPiv dPOPnv dPOPnv_nomg dPOPss syn keyword xsMacro dPOPuv dSAVEDERRNO dSAVE_ERRNO dSP dSS_ADD dTARG dTARGET syn keyword xsMacro dTARGETSTACKED dTHR dTHX dTHXa dTHXo dTHXoa dTHXs dTHXx syn keyword xsMacro dTOPiv dTOPnv dTOPss dTOPuv dUNDERBAR dVAR dXSARGS syn keyword xsMacro dXSBOOTARGSAPIVERCHK dXSBOOTARGSNOVERCHK syn keyword xsMacro dXSBOOTARGSXSAPIVERCHK dXSFUNCTION dXSI32 dXSTARG syn keyword xsMacro dXSUB_SYS deprecate djSP do_open dup dup2 endgrent syn keyword xsMacro endhostent endnetent endprotoent endpwent endservent syn keyword xsMacro environ execl execv execvp fcntl fd_set fdopen fileno syn keyword xsMacro float_end_shift float_max_offset float_min_offset syn keyword xsMacro float_substr float_utf8 flock flockfile foldEQ_utf8 syn keyword xsMacro frewind fscanf fstat ftell ftruncate ftrylockfile syn keyword xsMacro funlockfile fwrite1 get_cvs getc_unlocked getegid geteuid syn keyword xsMacro getgid getgrent getgrgid getgrnam gethostbyaddr syn keyword xsMacro gethostbyname gethostent gethostname getlogin syn keyword xsMacro getnetbyaddr getnetbyname getnetent getpeername getpid syn keyword xsMacro getprotobyname getprotobynumber getprotoent getpwent syn keyword xsMacro getpwnam getpwuid getservbyname getservbyport getservent syn keyword xsMacro getsockname getsockopt getspnam gettimeofday getuid getw syn keyword xsMacro gv_AVadd gv_HVadd gv_IOadd gv_SVadd gv_autoload4 syn keyword xsMacro gv_efullname3 gv_fetchmeth gv_fetchmeth_autoload syn keyword xsMacro gv_fetchmethod gv_fetchmethod_flags gv_fetchpvn syn keyword xsMacro gv_fetchpvs gv_fetchsv_nomg gv_fullname3 gv_init syn keyword xsMacro gv_method_changed gv_stashpvs htoni htonl htons htovl syn keyword xsMacro htovs hv_delete hv_delete_ent hv_deletehek hv_exists syn keyword xsMacro hv_exists_ent hv_fetch hv_fetch_ent hv_fetchhek hv_fetchs syn keyword xsMacro hv_iternext hv_magic hv_store hv_store_ent hv_store_flags syn keyword xsMacro hv_storehek hv_stores hv_undef ibcmp ibcmp_locale syn keyword xsMacro ibcmp_utf8 inet_addr inet_ntoa init_os_extras ioctl syn keyword xsMacro isALNUM isALNUMC isALNUMC_A isALNUMC_L1 isALNUMC_LC syn keyword xsMacro isALNUMC_LC_utf8 isALNUMC_LC_uvchr isALNUMC_uni syn keyword xsMacro isALNUMC_utf8 isALNUMU isALNUM_LC isALNUM_LC_utf8 syn keyword xsMacro isALNUM_LC_uvchr isALNUM_lazy_if isALNUM_uni isALNUM_utf8 syn keyword xsMacro isALPHA isALPHANUMERIC isALPHANUMERIC_A isALPHANUMERIC_L1 syn keyword xsMacro isALPHANUMERIC_LC isALPHANUMERIC_LC_utf8 syn keyword xsMacro isALPHANUMERIC_LC_uvchr isALPHANUMERIC_uni syn keyword xsMacro isALPHANUMERIC_utf8 isALPHAU isALPHA_A isALPHA_FOLD_EQ syn keyword xsMacro isALPHA_FOLD_NE isALPHA_L1 isALPHA_LC isALPHA_LC_utf8 syn keyword xsMacro isALPHA_LC_uvchr isALPHA_uni isALPHA_utf8 isASCII syn keyword xsMacro isASCII_A isASCII_L1 isASCII_LC isASCII_LC_utf8 syn keyword xsMacro isASCII_LC_uvchr isASCII_uni isASCII_utf8 isBLANK syn keyword xsMacro isBLANK_A isBLANK_L1 isBLANK_LC isBLANK_LC_uni syn keyword xsMacro isBLANK_LC_utf8 isBLANK_LC_uvchr isBLANK_uni isBLANK_utf8 syn keyword xsMacro isCHARNAME_CONT isCNTRL isCNTRL_A isCNTRL_L1 isCNTRL_LC syn keyword xsMacro isCNTRL_LC_utf8 isCNTRL_LC_uvchr isCNTRL_uni isCNTRL_utf8 syn keyword xsMacro isDIGIT isDIGIT_A isDIGIT_L1 isDIGIT_LC isDIGIT_LC_utf8 syn keyword xsMacro isDIGIT_LC_uvchr isDIGIT_uni isDIGIT_utf8 isGRAPH syn keyword xsMacro isGRAPH_A isGRAPH_L1 isGRAPH_LC isGRAPH_LC_utf8 syn keyword xsMacro isGRAPH_LC_uvchr isGRAPH_uni isGRAPH_utf8 isGV syn keyword xsMacro isGV_with_GP isGV_with_GP_off isGV_with_GP_on isIDCONT syn keyword xsMacro isIDCONT_A isIDCONT_L1 isIDCONT_LC isIDCONT_LC_utf8 syn keyword xsMacro isIDCONT_LC_uvchr isIDCONT_uni isIDCONT_utf8 isIDFIRST syn keyword xsMacro isIDFIRST_A isIDFIRST_L1 isIDFIRST_LC isIDFIRST_LC_utf8 syn keyword xsMacro isIDFIRST_LC_uvchr isIDFIRST_lazy_if isIDFIRST_uni syn keyword xsMacro isIDFIRST_utf8 isLEXWARN_off isLEXWARN_on isLOWER syn keyword xsMacro isLOWER_A isLOWER_L1 isLOWER_LC isLOWER_LC_utf8 syn keyword xsMacro isLOWER_LC_uvchr isLOWER_uni isLOWER_utf8 isOCTAL syn keyword xsMacro isOCTAL_A isOCTAL_L1 isPRINT isPRINT_A isPRINT_L1 syn keyword xsMacro isPRINT_LC isPRINT_LC_utf8 isPRINT_LC_uvchr isPRINT_uni syn keyword xsMacro isPRINT_utf8 isPSXSPC isPSXSPC_A isPSXSPC_L1 isPSXSPC_LC syn keyword xsMacro isPSXSPC_LC_utf8 isPSXSPC_LC_uvchr isPSXSPC_uni syn keyword xsMacro isPSXSPC_utf8 isPUNCT isPUNCT_A isPUNCT_L1 isPUNCT_LC syn keyword xsMacro isPUNCT_LC_utf8 isPUNCT_LC_uvchr isPUNCT_uni isPUNCT_utf8 syn keyword xsMacro isREGEXP isSPACE isSPACE_A isSPACE_L1 isSPACE_LC syn keyword xsMacro isSPACE_LC_utf8 isSPACE_LC_uvchr isSPACE_uni isSPACE_utf8 syn keyword xsMacro isUPPER isUPPER_A isUPPER_L1 isUPPER_LC isUPPER_LC_utf8 syn keyword xsMacro isUPPER_LC_uvchr isUPPER_uni isUPPER_utf8 isUTF8_CHAR syn keyword xsMacro isVERTWS_uni isVERTWS_utf8 isWARN_ONCE isWARN_on syn keyword xsMacro isWARNf_on isWORDCHAR isWORDCHAR_A isWORDCHAR_L1 syn keyword xsMacro isWORDCHAR_LC isWORDCHAR_LC_utf8 isWORDCHAR_LC_uvchr syn keyword xsMacro isWORDCHAR_lazy_if isWORDCHAR_uni isWORDCHAR_utf8 syn keyword xsMacro isXDIGIT isXDIGIT_A isXDIGIT_L1 isXDIGIT_LC syn keyword xsMacro isXDIGIT_LC_utf8 isXDIGIT_LC_uvchr isXDIGIT_uni syn keyword xsMacro isXDIGIT_utf8 is_ANYOF_SYNTHETIC is_FOLDS_TO_MULTI_utf8 syn keyword xsMacro is_HORIZWS_cp_high is_HORIZWS_high is_LAX_VERSION syn keyword xsMacro is_LNBREAK_latin1_safe is_LNBREAK_safe syn keyword xsMacro is_LNBREAK_utf8_safe is_MULTI_CHAR_FOLD_latin1_safe syn keyword xsMacro is_MULTI_CHAR_FOLD_utf8_safe syn keyword xsMacro is_MULTI_CHAR_FOLD_utf8_safe_part0 syn keyword xsMacro is_MULTI_CHAR_FOLD_utf8_safe_part1 is_NONCHAR_utf8 syn keyword xsMacro is_PATWS_cp is_PATWS_safe syn keyword xsMacro is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp syn keyword xsMacro is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8 syn keyword xsMacro is_PROBLEMATIC_LOCALE_FOLD_cp syn keyword xsMacro is_PROBLEMATIC_LOCALE_FOLD_utf8 is_QUOTEMETA_high syn keyword xsMacro is_QUOTEMETA_high_part0 is_QUOTEMETA_high_part1 syn keyword xsMacro is_REPLACEMENT_utf8_safe is_STRICT_VERSION syn keyword xsMacro is_SURROGATE_utf8 is_UTF8_CHAR_utf8_no_length_checks syn keyword xsMacro is_VERTWS_cp_high is_VERTWS_high is_XDIGIT_cp_high syn keyword xsMacro is_XDIGIT_high is_XPERLSPACE_cp_high is_XPERLSPACE_high syn keyword xsMacro is_ascii_string is_utf8_char_buf is_utf8_string_loc syn keyword xsMacro isatty isnormal kBINOP kCOP kGVOP_gv kLISTOP kLOGOP kLOOP syn keyword xsMacro kPADOP kPMOP kPVOP kSVOP kSVOP_sv kUNOP kUNOP_AUX kill syn keyword xsMacro killpg lex_stuff_pvs link listen lockf longjmp lseek syn keyword xsMacro lstat mPUSHi mPUSHn mPUSHp mPUSHs mPUSHu mXPUSHi mXPUSHn syn keyword xsMacro mXPUSHp mXPUSHs mXPUSHu memEQ memEQs memNE memNEs memchr syn keyword xsMacro memcmp memzero mkdir mktemp my my_binmode my_lstat syn keyword xsMacro my_setlocale my_snprintf my_sprintf my_stat my_strlcat syn keyword xsMacro my_strlcpy my_vsnprintf newATTRSUB newAV newGVgen newHV syn keyword xsMacro newIO newRV_inc newSUB newSVpadname newSVpvn_utf8 syn keyword xsMacro newSVpvs newSVpvs_flags newSVpvs_share newXSproto ntohi syn keyword xsMacro ntohl ntohs opASSIGN op_lvalue open opendir pTHX_1 syn keyword xsMacro pTHX_12 pTHX_2 pTHX_3 pTHX_4 pTHX_5 pTHX_6 pTHX_7 pTHX_8 syn keyword xsMacro pTHX_9 pTHX_FORMAT pTHX_VALUE pTHX_VALUE_ pTHX__FORMAT syn keyword xsMacro pTHX__VALUE pTHX__VALUE_ pTHXo pTHXo_ pTHXx pTHXx_ pVAR syn keyword xsMacro pWARN_ALL pWARN_NONE pWARN_STD packWARN packWARN2 syn keyword xsMacro packWARN3 packWARN4 pad_add_name_pvs pad_findmy_pvs syn keyword xsMacro pad_peg padadd_NO_DUP_CHECK padadd_OUR padadd_STALEOK syn keyword xsMacro padadd_STATE padnew_CLONE padnew_SAVE padnew_SAVESUB syn keyword xsMacro panic_write2 pause pclose pipe popen prepare_SV_for_RV syn keyword xsMacro pthread_attr_init pthread_condattr_default pthread_create syn keyword xsMacro pthread_key_create pthread_keycreate syn keyword xsMacro pthread_mutexattr_default pthread_mutexattr_init syn keyword xsMacro pthread_mutexattr_settype putc_unlocked putenv putw read syn keyword xsMacro readdir readdir64 recv recvfrom ref syn keyword xsMacro refcounted_he_fetch_pvs refcounted_he_new_pvs rename syn keyword xsMacro rewinddir rmdir safecalloc safefree safemalloc syn keyword xsMacro saferealloc save_aelem save_freeop save_freepv syn keyword xsMacro save_freesv save_helem save_mortalizesv save_op savepvs syn keyword xsMacro savesharedpvs sb_dstr sb_iters sb_m sb_maxiters syn keyword xsMacro sb_oldsave sb_orig sb_rflags sb_rx sb_rxres sb_rxtainted syn keyword xsMacro sb_s sb_strend sb_targ seedDrand01 seekdir select send syn keyword xsMacro sendto set_ANYOF_SYNTHETIC setbuf setgid setgrent syn keyword xsMacro sethostent setjmp setlinebuf setlocale setmode setnetent syn keyword xsMacro setprotoent setpwent setregid setreuid setservent syn keyword xsMacro setsockopt setuid setvbuf share_hek_hek sharepvn shutdown syn keyword xsMacro signal sleep socket socketpair specialWARN stat stdoutf syn keyword xsMacro strEQ strGE strGT strLE strLT strNE strchr strerror syn keyword xsMacro strnEQ strnNE strrchr strtoll strtoull sv_2bool syn keyword xsMacro sv_2bool_nomg sv_2iv sv_2nv sv_2pv sv_2pv_nolen syn keyword xsMacro sv_2pv_nomg sv_2pvbyte_nolen sv_2pvutf8_nolen sv_2uv syn keyword xsMacro sv_cathek sv_catpv_nomg sv_catpvn sv_catpvn_mg syn keyword xsMacro sv_catpvn_nomg sv_catpvn_nomg_maybeutf8 syn keyword xsMacro sv_catpvn_nomg_utf8_upgrade sv_catpvs sv_catpvs_flags syn keyword xsMacro sv_catpvs_mg sv_catpvs_nomg sv_catsv sv_catsv_mg syn keyword xsMacro sv_catsv_nomg sv_catxmlpvs sv_cmp sv_cmp_locale syn keyword xsMacro sv_collxfrm sv_copypv_nomg sv_eq sv_force_normal syn keyword xsMacro sv_insert sv_mortalcopy sv_nolocking sv_nounlocking syn keyword xsMacro sv_or_pv_len_utf8 sv_pv sv_pvbyte sv_pvn_force syn keyword xsMacro sv_pvn_force_nomg sv_pvutf8 sv_setgid sv_setpvs syn keyword xsMacro sv_setpvs_mg sv_setref_pvs sv_setsv sv_setsv_nomg syn keyword xsMacro sv_setuid sv_taint sv_unref sv_usepvn sv_usepvn_mg syn keyword xsMacro sv_utf8_upgrade sv_utf8_upgrade_flags syn keyword xsMacro sv_utf8_upgrade_nomg tTHX telldir times tmpfile tmpnam syn keyword xsMacro toCTRL toFOLD toFOLD_A toFOLD_LC toFOLD_uni toFOLD_utf8 syn keyword xsMacro toLOWER toLOWER_A toLOWER_L1 toLOWER_LATIN1 toLOWER_LC syn keyword xsMacro toLOWER_uni toLOWER_utf8 toTITLE toTITLE_A toTITLE_uni syn keyword xsMacro toTITLE_utf8 toUPPER toUPPER_A toUPPER_LATIN1_MOD syn keyword xsMacro toUPPER_LC toUPPER_uni toUPPER_utf8 to_uni_fold syn keyword xsMacro to_utf8_fold to_utf8_lower to_utf8_title to_utf8_upper syn keyword xsMacro truncate tryAMAGICbin_MG tryAMAGICunDEREF syn keyword xsMacro tryAMAGICunTARGETlist tryAMAGICun_MG ttyname umask uname syn keyword xsMacro unlink unpackWARN1 unpackWARN2 unpackWARN3 unpackWARN4 syn keyword xsMacro utf8_to_uvchr_buf utime uvchr_to_utf8 uvchr_to_utf8_flags syn keyword xsMacro vTHX vfprintf vtohl vtohs wait want_vtbl_bm want_vtbl_fm syn keyword xsMacro whichsig write xio_any xio_dirp xiv_iv xlv_targoff syn keyword xsMacro xpv_len xuv_uv yystype " Define the default highlighting. hi def link xsPrivate Error hi def link xsSuperseded Error hi def link xsType Type hi def link xsString String hi def link xsConstant Constant hi def link xsException Exception hi def link xsKeyword Keyword hi def link xsFunction Function hi def link xsVariable Identifier hi def link xsMacro Macro let b:current_syntax = "xs" " vim: ts=8 PK!X@2@2vim80/syntax/yaml.vimnu[" Vim syntax file " Language: YAML (YAML Ain't Markup Language) 1.2 " Maintainer: Nikolai Pavlov " First author: Nikolai Weibull " Latest Revision: 2015-03-28 if exists('b:current_syntax') finish endif let s:cpo_save = &cpo set cpo&vim " Choose the schema to use " TODO: Validate schema if !exists('b:yaml_schema') if exists('g:yaml_schema') let b:yaml_schema = g:yaml_schema else let b:yaml_schema = 'core' endif endif let s:ns_char = '\%([\n\r\uFEFF \t]\@!\p\)' let s:ns_word_char = '[[:alnum:]_\-]' let s:ns_uri_char = '\%(%\x\x\|'.s:ns_word_char.'\|[#/;?:@&=+$,.!~*''()[\]]\)' let s:ns_tag_char = '\%(%\x\x\|'.s:ns_word_char.'\|[#/;?:@&=+$.~*''()]\)' let s:c_ns_anchor_char = '\%([\n\r\uFEFF \t,[\]{}]\@!\p\)' let s:c_indicator = '[\-?:,[\]{}#&*!|>''"%@`]' let s:c_flow_indicator = '[,[\]{}]' let s:ns_char_without_c_indicator = substitute(s:ns_char, '\v\C[\zs', '\=s:c_indicator[1:-2]', '') let s:_collection = '[^\@!\(\%(\\\.\|\[^\\\]]\)\+\)]' let s:_neg_collection = '[^\(\%(\\\.\|\[^\\\]]\)\+\)]' function s:SimplifyToAssumeAllPrintable(p) return substitute(a:p, '\V\C\\%('.s:_collection.'\\@!\\p\\)', '[^\1]', '') endfunction let s:ns_char = s:SimplifyToAssumeAllPrintable(s:ns_char) let s:ns_char_without_c_indicator = s:SimplifyToAssumeAllPrintable(s:ns_char_without_c_indicator) let s:c_ns_anchor_char = s:SimplifyToAssumeAllPrintable(s:c_ns_anchor_char) function s:SimplifyAdjacentCollections(p) return substitute(a:p, '\V\C'.s:_collection.'\\|'.s:_collection, '[\1\2]', 'g') endfunction let s:ns_uri_char = s:SimplifyAdjacentCollections(s:ns_uri_char) let s:ns_tag_char = s:SimplifyAdjacentCollections(s:ns_tag_char) let s:c_verbatim_tag = '!<'.s:ns_uri_char.'\+>' let s:c_named_tag_handle = '!'.s:ns_word_char.'\+!' let s:c_secondary_tag_handle = '!!' let s:c_primary_tag_handle = '!' let s:c_tag_handle = '\%('.s:c_named_tag_handle. \ '\|'.s:c_secondary_tag_handle. \ '\|'.s:c_primary_tag_handle.'\)' let s:c_ns_shorthand_tag = s:c_tag_handle . s:ns_tag_char.'\+' let s:c_non_specific_tag = '!' let s:c_ns_tag_property = s:c_verbatim_tag. \ '\|'.s:c_ns_shorthand_tag. \ '\|'.s:c_non_specific_tag let s:c_ns_anchor_name = s:c_ns_anchor_char.'\+' let s:c_ns_anchor_property = '&'.s:c_ns_anchor_name let s:c_ns_alias_node = '\*'.s:c_ns_anchor_name let s:ns_directive_name = s:ns_char.'\+' let s:ns_local_tag_prefix = '!'.s:ns_uri_char.'*' let s:ns_global_tag_prefix = s:ns_tag_char.s:ns_uri_char.'*' let s:ns_tag_prefix = s:ns_local_tag_prefix. \ '\|'.s:ns_global_tag_prefix let s:ns_plain_safe_out = s:ns_char let s:ns_plain_safe_in = '\%('.s:c_flow_indicator.'\@!'.s:ns_char.'\)' let s:ns_plain_safe_in = substitute(s:ns_plain_safe_in, '\V\C\\%('.s:_collection.'\\@!'.s:_neg_collection.'\\)', '[^\1\2]', '') let s:ns_plain_safe_in_without_colhash = substitute(s:ns_plain_safe_in, '\V\C'.s:_neg_collection, '[^\1:#]', '') let s:ns_plain_safe_out_without_colhash = substitute(s:ns_plain_safe_out, '\V\C'.s:_neg_collection, '[^\1:#]', '') let s:ns_plain_first_in = '\%('.s:ns_char_without_c_indicator.'\|[?:\-]\%('.s:ns_plain_safe_in.'\)\@=\)' let s:ns_plain_first_out = '\%('.s:ns_char_without_c_indicator.'\|[?:\-]\%('.s:ns_plain_safe_out.'\)\@=\)' let s:ns_plain_char_in = '\%('.s:ns_char.'#\|:'.s:ns_plain_safe_in.'\|'.s:ns_plain_safe_in_without_colhash.'\)' let s:ns_plain_char_out = '\%('.s:ns_char.'#\|:'.s:ns_plain_safe_out.'\|'.s:ns_plain_safe_out_without_colhash.'\)' let s:ns_plain_out = s:ns_plain_first_out . s:ns_plain_char_out.'*' let s:ns_plain_in = s:ns_plain_first_in . s:ns_plain_char_in.'*' syn keyword yamlTodo contained TODO FIXME XXX NOTE syn region yamlComment display oneline start='\%\(^\|\s\)#' end='$' \ contains=yamlTodo execute 'syn region yamlDirective oneline start='.string('^\ze%'.s:ns_directive_name.'\s\+').' '. \ 'end="$" '. \ 'contains=yamlTAGDirective,'. \ 'yamlYAMLDirective,'. \ 'yamlReservedDirective '. \ 'keepend' syn match yamlTAGDirective '%TAG\s\+' contained nextgroup=yamlTagHandle execute 'syn match yamlTagHandle contained nextgroup=yamlTagPrefix '.string(s:c_tag_handle.'\s\+') execute 'syn match yamlTagPrefix contained nextgroup=yamlComment ' . string(s:ns_tag_prefix) syn match yamlYAMLDirective '%YAML\s\+' contained nextgroup=yamlYAMLVersion syn match yamlYAMLVersion '\d\+\.\d\+' contained nextgroup=yamlComment execute 'syn match yamlReservedDirective contained nextgroup=yamlComment '. \string('%\%(\%(TAG\|YAML\)\s\)\@!'.s:ns_directive_name) syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start='"' skip='\\"' end='"' \ contains=yamlEscape \ nextgroup=yamlKeyValueDelimiter syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start="'" skip="''" end="'" \ contains=yamlSingleEscape \ nextgroup=yamlKeyValueDelimiter syn match yamlEscape contained '\\\%([\\"abefnrtv\^0_ NLP\n]\|x\x\x\|u\x\{4}\|U\x\{8}\)' syn match yamlSingleEscape contained "''" syn match yamlBlockScalarHeader contained '\s\+\zs[|>]\%([+-]\=[1-9]\|[1-9]\=[+-]\)\=' syn cluster yamlConstant contains=yamlBool,yamlNull syn cluster yamlFlow contains=yamlFlowString,yamlFlowMapping,yamlFlowCollection syn cluster yamlFlow add=yamlFlowMappingKey,yamlFlowMappingMerge syn cluster yamlFlow add=@yamlConstant,yamlPlainScalar,yamlFloat syn cluster yamlFlow add=yamlTimestamp,yamlInteger,yamlMappingKeyStart syn cluster yamlFlow add=yamlComment syn region yamlFlowMapping matchgroup=yamlFlowIndicator start='{' end='}' contains=@yamlFlow syn region yamlFlowCollection matchgroup=yamlFlowIndicator start='\[' end='\]' contains=@yamlFlow execute 'syn match yamlPlainScalar /'.s:ns_plain_out.'/' execute 'syn match yamlPlainScalar contained /'.s:ns_plain_in.'/' syn match yamlMappingKeyStart '?\ze\s' syn match yamlMappingKeyStart '?' contained execute 'syn match yamlFlowMappingKey /\%#=1'.s:ns_plain_in.'\%(\s\+'.s:ns_plain_in.'\)*\ze\s*:/ contained '. \'nextgroup=yamlKeyValueDelimiter' syn match yamlFlowMappingMerge /<<\ze\s*:/ contained nextgroup=yamlKeyValueDelimiter syn match yamlBlockCollectionItemStart '^\s*\zs-\%(\s\+-\)*\s' nextgroup=yamlBlockMappingKey,yamlBlockMappingMerge " Use the old regexp engine, the NFA engine doesn't like all the \@ items. execute 'syn match yamlBlockMappingKey /\%#=1^\s*\zs'.s:ns_plain_out.'\%(\s\+'.s:ns_plain_out.'\)*\ze\s*:\%(\s\|$\)/ '. \'nextgroup=yamlKeyValueDelimiter' execute 'syn match yamlBlockMappingKey /\%#=1\s*\zs'.s:ns_plain_out.'\%(\s\+'.s:ns_plain_out.'\)*\ze\s*:\%(\s\|$\)/ contained '. \'nextgroup=yamlKeyValueDelimiter' syn match yamlBlockMappingMerge /^\s*\zs<<\ze:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter syn match yamlBlockMappingMerge /<<\ze\s*:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter contained syn match yamlKeyValueDelimiter /\s*:/ contained syn match yamlKeyValueDelimiter /\s*:/ contained syn cluster yamlScalarWithSpecials contains=yamlPlainScalar,yamlBlockMappingKey,yamlFlowMappingKey let s:_bounder = s:SimplifyToAssumeAllPrintable('\%([[\]{}, \t]\@!\p\)') if b:yaml_schema is# 'json' syn keyword yamlNull null contained containedin=@yamlScalarWithSpecials syn keyword yamlBool true false exe 'syn match yamlInteger /'.s:_bounder.'\@1 - " First Release: Mon Oct 16 08:49:46 CEST 2006 " Last Change: Thu Aug 7 21:22:48 CEST 2008 " Version: 0.5 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " case is significant " syn case ignore " ProMeLa Keywords syn keyword promelaStatement proctype if else while chan do od fi break goto unless syn keyword promelaStatement active assert label atomic syn keyword promelaFunctions skip timeout run syn keyword promelaTodo contained TODO " ProMeLa Types syn keyword promelaType bit bool byte short int " Operators and special characters syn match promelaOperator "!" syn match promelaOperator "?" syn match promelaOperator "->" syn match promelaOperator "=" syn match promelaOperator "+" syn match promelaOperator "*" syn match promelaOperator "/" syn match promelaOperator "-" syn match promelaOperator "<" syn match promelaOperator ">" syn match promelaOperator "<=" syn match promelaOperator ">=" syn match promelaSpecial "\[" syn match promelaSpecial "\]" syn match promelaSpecial ";" syn match promelaSpecial "::" " ProMeLa Comments syn region promelaComment start="/\*" end="\*/" contains=promelaTodo,@Spell syn match promelaComment "//.*" contains=promelaTodo,@Spell " Class Linking hi def link promelaStatement Statement hi def link promelaType Type hi def link promelaComment Comment hi def link promelaOperator Type hi def link promelaSpecial Special hi def link promelaFunctions Special hi def link promelaString String hi def link promelaTodo Todo let b:current_syntax = "promela" PK!|O vim80/syntax/go.vimnu[" Vim syntax file " Language: Go " Maintainer: David Barnett (https://github.com/google/vim-ft-go) " Last Change: 2014 Aug 16 " Options: " There are some options for customizing the highlighting; the recommended " settings are the default values, but you can write: " let OPTION_NAME = 0 " in your ~/.vimrc file to disable particular options. You can also write: " let OPTION_NAME = 1 " to enable particular options. At present, all options default to on. " " - g:go_highlight_array_whitespace_error " Highlights white space after "[]". " - g:go_highlight_chan_whitespace_error " Highlights white space around the communications operator that don't " follow the standard style. " - g:go_highlight_extra_types " Highlights commonly used library types (io.Reader, etc.). " - g:go_highlight_space_tab_error " Highlights instances of tabs following spaces. " - g:go_highlight_trailing_whitespace_error " Highlights trailing white space. " Quit when a (custom) syntax file was already loaded if exists('b:current_syntax') finish endif if !exists('g:go_highlight_array_whitespace_error') let g:go_highlight_array_whitespace_error = 1 endif if !exists('g:go_highlight_chan_whitespace_error') let g:go_highlight_chan_whitespace_error = 1 endif if !exists('g:go_highlight_extra_types') let g:go_highlight_extra_types = 1 endif if !exists('g:go_highlight_space_tab_error') let g:go_highlight_space_tab_error = 1 endif if !exists('g:go_highlight_trailing_whitespace_error') let g:go_highlight_trailing_whitespace_error = 1 endif syn case match syn keyword goDirective package import syn keyword goDeclaration var const type syn keyword goDeclType struct interface hi def link goDirective Statement hi def link goDeclaration Keyword hi def link goDeclType Keyword " Keywords within functions syn keyword goStatement defer go goto return break continue fallthrough syn keyword goConditional if else switch select syn keyword goLabel case default syn keyword goRepeat for range hi def link goStatement Statement hi def link goConditional Conditional hi def link goLabel Label hi def link goRepeat Repeat " Predefined types syn keyword goType chan map bool string error syn keyword goSignedInts int int8 int16 int32 int64 rune syn keyword goUnsignedInts byte uint uint8 uint16 uint32 uint64 uintptr syn keyword goFloats float32 float64 syn keyword goComplexes complex64 complex128 hi def link goType Type hi def link goSignedInts Type hi def link goUnsignedInts Type hi def link goFloats Type hi def link goComplexes Type " Treat func specially: it's a declaration at the start of a line, but a type " elsewhere. Order matters here. syn match goType /\/ syn match goDeclaration /^func\>/ " Predefined functions and values syn keyword goBuiltins append cap close complex copy delete imag len syn keyword goBuiltins make new panic print println real recover syn keyword goConstants iota true false nil hi def link goBuiltins Keyword hi def link goConstants Keyword " Comments; their contents syn keyword goTodo contained TODO FIXME XXX BUG syn cluster goCommentGroup contains=goTodo syn region goComment start="/\*" end="\*/" contains=@goCommentGroup,@Spell syn region goComment start="//" end="$" contains=@goCommentGroup,@Spell hi def link goComment Comment hi def link goTodo Todo " Go escapes syn match goEscapeOctal display contained "\\[0-7]\{3}" syn match goEscapeC display contained +\\[abfnrtv\\'"]+ syn match goEscapeX display contained "\\x\x\{2}" syn match goEscapeU display contained "\\u\x\{4}" syn match goEscapeBigU display contained "\\U\x\{8}" syn match goEscapeError display contained +\\[^0-7xuUabfnrtv\\'"]+ hi def link goEscapeOctal goSpecialString hi def link goEscapeC goSpecialString hi def link goEscapeX goSpecialString hi def link goEscapeU goSpecialString hi def link goEscapeBigU goSpecialString hi def link goSpecialString Special hi def link goEscapeError Error " Strings and their contents syn cluster goStringGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU,goEscapeError syn region goString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@goStringGroup syn region goRawString start=+`+ end=+`+ hi def link goString String hi def link goRawString String " Characters; their contents syn cluster goCharacterGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU syn region goCharacter start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@goCharacterGroup hi def link goCharacter Character " Regions syn region goBlock start="{" end="}" transparent fold syn region goParen start='(' end=')' transparent " Integers syn match goDecimalInt "\<\d\+\([Ee]\d\+\)\?\>" syn match goHexadecimalInt "\<0x\x\+\>" syn match goOctalInt "\<0\o\+\>" syn match goOctalError "\<0\o*[89]\d*\>" hi def link goDecimalInt Integer hi def link goHexadecimalInt Integer hi def link goOctalInt Integer hi def link Integer Number " Floating point syn match goFloat "\<\d\+\.\d*\([Ee][-+]\d\+\)\?\>" syn match goFloat "\<\.\d\+\([Ee][-+]\d\+\)\?\>" syn match goFloat "\<\d\+[Ee][-+]\d\+\>" hi def link goFloat Float " Imaginary literals syn match goImaginary "\<\d\+i\>" syn match goImaginary "\<\d\+\.\d*\([Ee][-+]\d\+\)\?i\>" syn match goImaginary "\<\.\d\+\([Ee][-+]\d\+\)\?i\>" syn match goImaginary "\<\d\+[Ee][-+]\d\+i\>" hi def link goImaginary Number " Spaces after "[]" if go_highlight_array_whitespace_error != 0 syn match goSpaceError display "\(\[\]\)\@<=\s\+" endif " Spacing errors around the 'chan' keyword if go_highlight_chan_whitespace_error != 0 " receive-only annotation on chan type syn match goSpaceError display "\(<-\)\@<=\s\+\(chan\>\)\@=" " send-only annotation on chan type syn match goSpaceError display "\(\/ syn match goExtraType /\/ syn match goExtraType /\/ syn match goExtraType /\/ endif " Space-tab error if go_highlight_space_tab_error != 0 syn match goSpaceError display " \+\t"me=e-1 endif " Trailing white space error if go_highlight_trailing_whitespace_error != 0 syn match goSpaceError display excludenl "\s\+$" endif hi def link goExtraType Type hi def link goSpaceError Error " Search backwards for a global declaration to start processing the syntax. "syn sync match goSync grouphere NONE /^\(const\|var\|type\|func\)\>/ " There's a bug in the implementation of grouphere. For now, use the " following as a more expensive/less precise workaround. syn sync minlines=500 let b:current_syntax = 'go' " vim: sw=2 sts=2 et PK!.}V V vim80/syntax/dylan.vimnu[" Vim syntax file " Language: Dylan " Authors: Justus Pendleton " Brent A. Fulgham " Last Change: Fri Sep 29 13:45:55 PDT 2000 " " This syntax file is based on the Haskell, Perl, Scheme, and C " syntax files. " Part 1: Syntax definition " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore setlocal lisp " Highlight special characters (those that have backslashes) differently syn match dylanSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" " Keywords syn keyword dylanBlock afterwards begin block cleanup end syn keyword dylanClassMods abstract concrete primary inherited virtual syn keyword dylanException exception handler signal syn keyword dylanParamDefs method class function library macro interface syn keyword dylanSimpleDefs constant variable generic primary syn keyword dylanOther above below from by in instance local slot subclass then to syn keyword dylanConditional if when select case else elseif unless finally otherwise then syn keyword dylanRepeat begin for until while from to syn keyword dylanStatement define let syn keyword dylanImport use import export exclude rename create syn keyword dylanMiscMods open sealed domain singleton sideways inline functional " Matching rules for special forms syn match dylanOperator "\s[-!%&\*\+/=\?@\\^|~:]\+[-#!>%&:\*\+/=\?@\\^|~]*" syn match dylanOperator "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=:[-!#$%&\*\+./=\?@\\^|~:]*" " Numbers syn match dylanNumber "\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>" syn match dylanNumber "\<[0-9]\+\.[0-9]\+\([eE][-+]\=[0-9]\+\)\=\>" " Booleans syn match dylanBoolean "#t\|#f" " Comments syn match dylanComment "//.*" syn region dylanComment start="/\*" end="\*/" " Strings syn region dylanString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=dySpecial syn match dylanCharacter "'[^\\]'" " Constants, classes, and variables syn match dylanConstant "$\<[a-zA-Z0-9\-]\+\>" syn match dylanClass "<\<[a-zA-Z0-9\-]\+\>>" syn match dylanVariable "\*\<[a-zA-Z0-9\-]\+\>\*" " Preconditions syn region dylanPrecondit start="^\s*#\s*\(if\>\|else\>\|endif\>\)" skip="\\$" end="$" " These appear at the top of files (usually). I like to highlight the whole line " so that the definition stands out. They should probably really be keywords, but they " don't generally appear in the middle of a line of code. syn region dylanHeader start="^[Mm]odule:" end="^$" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link dylanBlock PreProc hi def link dylanBoolean Boolean hi def link dylanCharacter Character hi def link dylanClass Structure hi def link dylanClassMods StorageClass hi def link dylanComment Comment hi def link dylanConditional Conditional hi def link dylanConstant Constant hi def link dylanException Exception hi def link dylanHeader Macro hi def link dylanImport Include hi def link dylanLabel Label hi def link dylanMiscMods StorageClass hi def link dylanNumber Number hi def link dylanOther Keyword hi def link dylanOperator Operator hi def link dylanParamDefs Keyword hi def link dylanPrecondit PreCondit hi def link dylanRepeat Repeat hi def link dylanSimpleDefs Keyword hi def link dylanStatement Macro hi def link dylanString String hi def link dylanVariable Identifier let b:current_syntax = "dylan" " vim:ts=8 PK!/)vim80/syntax/sass.vimnu[" Vim syntax file " Language: Sass " Maintainer: Tim Pope " Filenames: *.sass " Last Change: 2016 Aug 29 if exists("b:current_syntax") finish endif runtime! syntax/css.vim syn case ignore syn cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp syn cluster sassCssAttributes contains=css.*Attr,sassEndOfLineComment,scssComment,cssValue.*,cssColor,cssURL,sassDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp syn region sassDefinition matchgroup=cssBraces start="{" end="}" contains=TOP syn match sassProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition syn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute syn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute syn match sassCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation syn match sassDefault "!default\>" contained syn match sassVariable "!\%(important\>\|default\>\)\@![[:alnum:]_-]\+" syn match sassVariable "$[[:alnum:]_-]\+" syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite syn match sassFunction "\<\%(rgb\|rgba\|red\|green\|blue\|mix\)\>(\@=" contained syn match sassFunction "\<\%(hsl\|hsla\|hue\|saturation\|lightness\|adjust-hue\|lighten\|darken\|saturate\|desaturate\|grayscale\|complement\)\>(\@=" contained syn match sassFunction "\<\%(alpha\|opacity\|rgba\|opacify\|fade-in\|transparentize\|fade-out\)\>(\@=" contained syn match sassFunction "\<\%(unquote\|quote\)\>(\@=" contained syn match sassFunction "\<\%(percentage\|round\|ceil\|floor\|abs\)\>(\@=" contained syn match sassFunction "\<\%(type-of\|unit\|unitless\|comparable\)\>(\@=" contained syn region sassInterpolation matchgroup=sassInterpolationDelimiter start="#{" end="}" contains=@sassCssAttributes,sassVariable,sassFunction containedin=cssStringQ,cssStringQQ,cssPseudoClass,sassProperty syn match sassMixinName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute syn match sassMixin "^=" nextgroup=sassMixinName skipwhite syn match sassMixin "\%([{};]\s*\|^\s*\)\@<=@mixin" nextgroup=sassMixinName skipwhite syn match sassMixing "^\s\+\zs+" nextgroup=sassMixinName syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend" syn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%" nextgroup=sassMixinName skipwhite syn match sassFunctionName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute syn match sassFunctionDecl "\%([{};]\s*\|^\s*\)\@<=@function" nextgroup=sassFunctionName skipwhite syn match sassReturn "\%([{};]\s*\|^\s*\)\@<=@return" syn match sassEscape "^\s*\zs\\" syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId syn match sassId "[[:alnum:]_-]\+" contained syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass syn match sassClass "[[:alnum:]_-]\+" contained syn match sassAmpersand "&" " TODO: Attribute namespaces " TODO: Arithmetic (including strings and concatenation) syn region sassMediaQuery matchgroup=sassMedia start="@media" end="[{};]\@=\|$" contains=sassMediaOperators syn keyword sassMediaOperators and not only contained syn region sassCharset start="@charset" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType syn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction syn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction syn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\|each\)\>" end="[{};]\@=\|$" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction syn keyword sassFor from to through in contained syn keyword sassTodo FIXME NOTE TODO OPTIMIZE XXX contained syn region sassComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell syn region sassCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell syn match sassEndOfLineComment "//.*" contains=sassComment,sassTodo,@Spell hi def link sassEndOfLineComment sassComment hi def link sassCssComment sassComment hi def link sassComment Comment hi def link sassDefault cssImportant hi def link sassVariable Identifier hi def link sassFunction Function hi def link sassMixing PreProc hi def link sassMixin PreProc hi def link sassPlaceholder PreProc hi def link sassExtend PreProc hi def link sassFunctionDecl PreProc hi def link sassReturn PreProc hi def link sassTodo Todo hi def link sassCharset PreProc hi def link sassMedia PreProc hi def link sassMediaOperators PreProc hi def link sassInclude Include hi def link sassDebug sassControl hi def link sassWarn sassControl hi def link sassControl PreProc hi def link sassFor PreProc hi def link sassEscape Special hi def link sassIdChar Special hi def link sassClassChar Special hi def link sassInterpolationDelimiter Delimiter hi def link sassAmpersand Character hi def link sassId Identifier hi def link sassClass Type let b:current_syntax = "sass" " vim:set sw=2: PK!64vim80/syntax/robots.vimnu[" Vim syntax file " Language: "Robots.txt" files " Robots.txt files indicate to WWW robots which parts of a web site should not be accessed. " Maintainer: Dominique Stphan (dominique@mggen.com) " URL: http://www.mggen.com/vim/syntax/robots.zip " Last change: 2001 May 09 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " shut case off syn case ignore " Comment syn match robotsComment "#.*$" contains=robotsUrl,robotsMail,robotsString " Star * (means all spiders) syn match robotsStar "\*" " : syn match robotsDelimiter ":" " The keywords " User-agent syn match robotsAgent "^[Uu][Ss][Ee][Rr]\-[Aa][Gg][Ee][Nn][Tt]" " Disallow syn match robotsDisallow "^[Dd][Ii][Ss][Aa][Ll][Ll][Oo][Ww]" " Disallow: or User-Agent: and the rest of the line before an eventual comment synt match robotsLine "\(^[Uu][Ss][Ee][Rr]\-[Aa][Gg][Ee][Nn][Tt]\|^[Dd][Ii][Ss][Aa][Ll][Ll][Oo][Ww]\):[^#]*" contains=robotsAgent,robotsDisallow,robotsStar,robotsDelimiter " Some frequent things in comments syn match robotsUrl "http[s]\=://\S*" syn match robotsMail "\S*@\S*" syn region robotsString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ hi def link robotsComment Comment hi def link robotsAgent Type hi def link robotsDisallow Statement hi def link robotsLine Special hi def link robotsStar Operator hi def link robotsDelimiter Delimiter hi def link robotsUrl String hi def link robotsMail String hi def link robotsString String let b:current_syntax = "robots" " vim: ts=8 sw=2 PK!PY..vim80/syntax/falcon.vimnu[" Vim syntax file " Language: Falcon " Maintainer: Steven Oliver " Website: http://github.com/steveno/vim-files/blob/master/syntax/falcon.vim " Credits: Thanks the ruby.vim authors, I borrowed a lot! " Thanks to the lisp authors for the rainbow code! " ------------------------------------------------------------------------------- " When wanted, highlight the trailing whitespace. if exists("c_space_errors") if !exists("c_no_trail_space_error") syn match falconSpaceError "\s\+$" endif if !exists("c_no_tab_space_error") syn match falconSpaceError " \+\t"me=e-1 endif endif " Symbols syn match falconSymbol "\(;\|,\|\.\)" syn match falconSymbolOther "\(#\|@\)" display " Operators syn match falconOperator "\(+\|-\|\*\|/\|=\|<\|>\|\*\*\|!=\|\~=\)" syn match falconOperator "\(<=\|>=\|=>\|\.\.\|<<\|>>\|\"\)" " Clusters syn region falconSymbol start="[]})\"':]\@\|::\)\@=\%(\s*(\)\@!" " Comments syn match falconCommentSkip contained "^\s*\*\($\|\s\+\)" syn region falconComment start="/\*" end="\*/" contains=@falconCommentGroup,falconSpaceError,falconTodo syn region falconCommentL start="//" end="$" keepend contains=@falconCommentGroup,falconSpaceError,falconTodo syn match falconSharpBang "\%^#!.*" display syn sync ccomment falconComment " Numbers syn match falconNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal syn match falconNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal syn match falconHexadecimal contained "\<0x\x\+\>" syn match falconOctal contained "\<0\o\+\>" syn match falconIntLiteral contained "[+-]\" syn match falconFloatLiteral contained "[+-]\=\d\+\.\d*" syn match falconFloatLiteral contained "[+-]\=\d*\.\d*" " Includes syn keyword falconInclude load import " Expression Substitution and Backslash Notation syn match falconStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display syn match falconStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display syn region falconSymbol start="[]})\"':]\@" skip="\\\\\|\\>" fold contains=falconDelimEscape syn region falconString matchgroup=falconStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape syn region falconString matchgroup=falconStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape " Generalized Double Quoted String and Array of Strings and Shell Command Output syn region falconString matchgroup=falconStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=falconStringEscape,falconDelimEscape fold syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=falconStringEscape,falconDelimEscape fold syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=falconStringEscape,falconDelimEscape fold syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=falconStringEscape,falconDelimEscape fold syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@ " " Version 1.1 S. Myles Prather " Moved some keywords to the type category. " Added the metrix suffixes to the number matcher. " Version 1.2 Prasanna Tamhankar " Minor reserved keyword updates. " Last Update: Thursday September 15 15:36:03 CST 2005 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Set the local value of the 'iskeyword' option setlocal iskeyword=@,48-57,_,192-255 " Annex B.1 'All keywords' syn keyword verilogamsStatement above abs absdelay acos acosh ac_stim syn keyword verilogamsStatement always analog analysis and asin syn keyword verilogamsStatement asinh assign atan atan2 atanh syn keyword verilogamsStatement buf bufif0 bufif1 ceil cmos connectmodule syn keyword verilogamsStatement connectrules cos cosh cross ddt ddx deassign syn keyword verilogamsStatement defparam disable discipline syn keyword verilogamsStatement driver_update edge enddiscipline syn keyword verilogamsStatement endconnectrules endmodule endfunction endgenerate syn keyword verilogamsStatement endnature endparamset endprimitive endspecify syn keyword verilogamsStatement endtable endtask event exp final_step syn keyword verilogamsStatement flicker_noise floor flow force fork syn keyword verilogamsStatement function generate highz0 syn keyword verilogamsStatement highz1 hypot idt idtmod if ifnone inf initial syn keyword verilogamsStatement initial_step inout input join syn keyword verilogamsStatement laplace_nd laplace_np laplace_zd laplace_zp syn keyword verilogamsStatement large last_crossing limexp ln localparam log syn keyword verilogamsStatement macromodule max medium min module nand nature syn keyword verilogamsStatement negedge net_resolution nmos noise_table nor not syn keyword verilogamsStatement notif0 notif1 or output paramset pmos syn keyword verilogamsType parameter real integer electrical input output syn keyword verilogamsType inout reg tri tri0 tri1 triand trior trireg syn keyword verilogamsType string from exclude aliasparam ground genvar syn keyword verilogamsType branch time realtime syn keyword verilogamsStatement posedge potential pow primitive pull0 pull1 syn keyword verilogamsStatement pullup pulldown rcmos release syn keyword verilogamsStatement rnmos rpmos rtran rtranif0 rtranif1 syn keyword verilogamsStatement scalared sin sinh slew small specify specparam syn keyword verilogamsStatement sqrt strong0 strong1 supply0 supply1 syn keyword verilogamsStatement table tan tanh task timer tran tranif0 syn keyword verilogamsStatement tranif1 transition syn keyword verilogamsStatement vectored wait wand weak0 weak1 syn keyword verilogamsStatement white_noise wire wor wreal xnor xor zi_nd syn keyword verilogamsStatement zi_np zi_zd zi_zp syn keyword verilogamsRepeat forever repeat while for syn keyword verilogamsLabel begin end syn keyword verilogamsConditional if else case casex casez default endcase syn match verilogamsConstant ":inf"lc=1 syn match verilogamsConstant "-inf"lc=1 " Annex B.2 Discipline/nature syn keyword verilogamsStatement abstol access continuous ddt_nature discrete syn keyword verilogamsStatement domain idt_nature units " Annex B.3 Connect Rules syn keyword verilogamsStatement connect merged resolveto split syn match verilogamsOperator "[&|~>" syn match verilogamsConstant "\<[A-Z][A-Z0-9_]\+\>" syn match verilogamsNumber "\(\<\d\+\|\)'[bB]\s*[0-1_xXzZ?]\+\>" syn match verilogamsNumber "\(\<\d\+\|\)'[oO]\s*[0-7_xXzZ?]\+\>" syn match verilogamsNumber "\(\<\d\+\|\)'[dD]\s*[0-9_xXzZ?]\+\>" syn match verilogamsNumber "\(\<\d\+\|\)'[hH]\s*[0-9a-fA-F_xXzZ?]\+\>" syn match verilogamsNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)[TGMKkmunpfa]\=\>" syn region verilogamsString start=+"+ skip=+\\"+ end=+"+ contains=verilogamsEscape syn match verilogamsEscape +\\[nt"\\]+ contained syn match verilogamsEscape "\\\o\o\=\o\=" contained "Modify the following as needed. The trade-off is performance versus "functionality. syn sync lines=50 " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default highlighting. hi def link verilogamsCharacter Character hi def link verilogamsConditional Conditional hi def link verilogamsRepeat Repeat hi def link verilogamsString String hi def link verilogamsTodo Todo hi def link verilogamsComment Comment hi def link verilogamsConstant Constant hi def link verilogamsLabel Label hi def link verilogamsNumber Number hi def link verilogamsOperator Special hi def link verilogamsStatement Statement hi def link verilogamsGlobal Define hi def link verilogamsDirective SpecialComment hi def link verilogamsEscape Special hi def link verilogamsType Type hi def link verilogamsSystask Function let b:current_syntax = "verilogams" " vim: ts=8 PK!I7yQ??vim80/syntax/mplayerconf.vimnu[" Vim syntax file " Language: mplayer(1) configuration file " Maintainer: Dmitri Vereshchagin " Previous Maintainer: Nikolai Weibull " Latest Revision: 2015-01-24 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword+=- syn keyword mplayerconfTodo contained TODO FIXME XXX NOTE syn region mplayerconfComment display oneline start='#' end='$' \ contains=mplayerconfTodo,@Spell syn keyword mplayerconfPreProc include syn keyword mplayerconfBoolean yes no true false syn match mplayerconfNumber '\<\d\+\>' syn keyword mplayerconfOption hardframedrop nomouseinput bandwidth dumpstream \ rtsp-stream-over-tcp tv overlapsub \ sub-bg-alpha subfont-outline unicode format \ vo edl cookies fps zrfd af-adv nosound \ audio-density passlogfile vobsuboutindex autoq \ autosync benchmark colorkey nocolorkey edlout \ enqueue fixed-vo framedrop h identify input \ lircconf list-options loop menu menu-cfg \ menu-root nojoystick nolirc nortc playlist \ quiet really-quiet shuffle skin slave \ softsleep speed sstep use-stdin aid alang \ audio-demuxer audiofile audiofile-cache \ cdrom-device cache cdda channels chapter \ cookies-file demuxer dumpaudio dumpfile \ dumpvideo dvbin dvd-device dvdangle forceidx \ frames hr-mp3-seek idx ipv4-only-proxy \ loadidx mc mf ni nobps noextbased \ passwd prefer-ipv4 prefer-ipv6 rawaudio \ rawvideo saveidx sb srate ss tskeepbroken \ tsprog tsprobe user user-agent vid vivo \ dumpjacosub dumpmicrodvdsub dumpmpsub dumpsami \ dumpsrtsub dumpsub ffactor flip-hebrew font \ forcedsubsonly fribidi-charset ifo noautosub \ osdlevel sid slang spuaa spualign spugauss \ sub sub-bg-color sub-demuxer sub-fuzziness \ sub-no-text-pp subalign subcc subcp subdelay \ subfile subfont-autoscale subfont-blur \ subfont-encoding subfont-osd-scale \ subfont-text-scale subfps subpos subwidth \ utf8 vobsub vobsubid abs ao aofile aop delay \ mixer nowaveheader aa bpp brightness contrast \ dfbopts display double dr dxr2 fb fbmode \ fbmodeconfig forcexv fs fsmode-dontuse fstype \ geometry guiwid hue jpeg monitor-dotclock \ monitor-hfreq monitor-vfreq monitoraspect \ nograbpointer nokeepaspect noxv ontop panscan \ rootwin saturation screenw stop-xscreensaver \ vm vsync wid xineramascreen z zrbw zrcrop \ zrdev zrhelp zrnorm zrquality zrvdec zrxdoff \ ac af afm aspect flip lavdopts noaspect \ noslices novideo oldpp pp pphelp ssf stereo \ sws vc vfm x xvidopts xy y zoom vf vop \ audio-delay audio-preload endpos ffourcc \ include info noautoexpand noskip o oac of \ ofps ovc skiplimit v vobsubout vobsuboutid \ lameopts lavcopts nuvopts xvidencopts a52drc \ adapter af-add af-clr af-del af-pre \ allow-dangerous-playlist-parsing ass \ ass-border-color ass-bottom-margin ass-color \ ass-font-scale ass-force-style ass-hinting \ ass-line-spacing ass-styles ass-top-margin \ ass-use-margins ausid bluray-angle \ bluray-device border border-pos-x border-pos-y \ cache-min cache-seek-min capture codecpath \ codecs-file correct-pts crash-debug \ doubleclick-time dvd-speed edl-backward-delay \ edl-start-pts embeddedfonts fafmttag \ field-dominance fontconfig force-avi-aspect \ force-key-frames frameno-file fullscreen gamma \ gui gui-include gui-wid heartbeat-cmd \ heartbeat-interval hr-edl-seek \ http-header-fields idle ignore-start \ key-fifo-size list-properties menu-chroot \ menu-keepdir menu-startup mixer-channel \ monitor-orientation monitorpixelaspect \ mouse-movements msgcharset msgcolor msglevel \ msgmodule name noar nocache noconfig \ noconsolecontrols nocorrect-pts nodouble \ noedl-start-pts noencodedups \ noflip-hebrew-commas nogui noidx noodml \ nostop-xscreensaver nosub noterm-osd \ osd-duration osd-fractions panscanrange \ pausing playing-msg priority profile \ progbar-align psprobe pvr radio referrer \ refreshrate reuse-socket rtc rtc-device \ rtsp-destination rtsp-port \ rtsp-stream-over-http screenh show-profile \ softvol softvol-max sub-paths subfont \ term-osd-esc title tvscan udp-ip udp-master \ udp-port udp-seek-threshold udp-slave \ unrarexec use-filedir-conf use-filename-title \ vf-add vf-clr vf-del vf-pre volstep volume \ zrhdec zrydoff syn region mplayerconfString display oneline start=+"+ end=+"+ syn region mplayerconfString display oneline start=+'+ end=+'+ syn region mplayerconfProfile display oneline start='^\s*\[' end='\]' hi def link mplayerconfTodo Todo hi def link mplayerconfComment Comment hi def link mplayerconfPreProc PreProc hi def link mplayerconfBoolean Boolean hi def link mplayerconfNumber Number hi def link mplayerconfOption Keyword hi def link mplayerconfString String hi def link mplayerconfProfile Special let b:current_syntax = "mplayerconf" let &cpo = s:cpo_save unlet s:cpo_save PK!aK  vim80/syntax/asn.vimnu[" Vim syntax file " Language: ASN.1 " Maintainer: Claudio Fleiner " URL: http://www.fleiner.com/vim/syntax/asn.vim " Last Change: 2012 Oct 05 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " keyword definitions syn keyword asnExternal DEFINITIONS BEGIN END IMPORTS EXPORTS FROM syn match asnExternal "\" syn match asnExternal "\" syn keyword asnFieldOption DEFAULT OPTIONAL syn keyword asnTagModifier IMPLICIT EXPLICIT syn keyword asnTypeInfo ABSENT PRESENT SIZE UNIVERSAL APPLICATION PRIVATE syn keyword asnBoolValue TRUE FALSE syn keyword asnNumber MIN MAX syn match asnNumber "\" syn match asnNumber "\" syn keyword asnType INTEGER REAL STRING BIT BOOLEAN OCTET NULL EMBEDDED PDV syn keyword asnType BMPString IA5String TeletexString GeneralString GraphicString ISO646String NumericString PrintableString T61String UniversalString VideotexString VisibleString syn keyword asnType ANY DEFINED syn match asnType "\.\.\." syn match asnType "OBJECT\s\+IDENTIFIER" syn match asnType "TYPE-IDENTIFIER" syn keyword asnType UTF8String syn keyword asnStructure CHOICE SEQUENCE SET OF ENUMERATED CONSTRAINED BY WITH COMPONENTS CLASS " Strings and constants syn match asnSpecial contained "\\\d\d\d\|\\." syn region asnString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=asnSpecial syn match asnCharacter "'[^\\]'" syn match asnSpecialCharacter "'\\.'" syn match asnNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" syn match asnLineComment "--.*" syn match asnLineComment "--.*--" syn match asnDefinition "^\s*[a-zA-Z][-a-zA-Z0-9_.\[\] \t{}]* *::="me=e-3 contains=asnType syn match asnBraces "[{}]" syn sync ccomment asnComment " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link asnDefinition Function hi def link asnBraces Function hi def link asnStructure Statement hi def link asnBoolValue Boolean hi def link asnSpecial Special hi def link asnString String hi def link asnCharacter Character hi def link asnSpecialCharacter asnSpecial hi def link asnNumber asnValue hi def link asnComment Comment hi def link asnLineComment asnComment hi def link asnType Type hi def link asnTypeInfo PreProc hi def link asnValue Number hi def link asnExternal Include hi def link asnTagModifier Function hi def link asnFieldOption Type let &cpo = s:cpo_save unlet s:cpo_save let b:current_syntax = "asn" " vim: ts=8 PK!I&@@vim80/syntax/rust.vimnu[" Vim syntax file " Language: Rust " Maintainer: Patrick Walton " Maintainer: Ben Blum " Maintainer: Chris Morgan " Last Change: Feb 24, 2016 " For bugs, patches and license go to https://github.com/rust-lang/rust.vim if version < 600 syntax clear elseif exists("b:current_syntax") finish endif " Syntax definitions {{{1 " Basic keywords {{{2 syn keyword rustConditional match if else syn keyword rustRepeat for loop while syn keyword rustTypedef type nextgroup=rustIdentifier skipwhite skipempty syn keyword rustStructure struct enum nextgroup=rustIdentifier skipwhite skipempty syn keyword rustUnion union nextgroup=rustIdentifier skipwhite skipempty contained syn match rustUnionContextual /\/ syn keyword rustInvalidBareKeyword crate syn keyword rustPubScopeCrate crate contained syn match rustPubScopeDelim /[()]/ contained syn match rustPubScope /([^()]*)/ contained contains=rustPubScopeDelim,rustPubScopeCrate,rustSuper,rustModPath,rustModPathSep,rustSelf transparent syn keyword rustExternCrate crate contained nextgroup=rustIdentifier,rustExternCrateString skipwhite skipempty " This is to get the `bar` part of `extern crate "foo" as bar;` highlighting. syn match rustExternCrateString /".*"\_s*as/ contained nextgroup=rustIdentifier skipwhite transparent skipempty contains=rustString,rustOperator syn keyword rustObsoleteExternMod mod contained nextgroup=rustIdentifier skipwhite skipempty syn match rustIdentifier contains=rustIdentifierPrime "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained syn match rustFuncName "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained syn region rustBoxPlacement matchgroup=rustBoxPlacementParens start="(" end=")" contains=TOP contained " Ideally we'd have syntax rules set up to match arbitrary expressions. Since " we don't, we'll just define temporary contained rules to handle balancing " delimiters. syn region rustBoxPlacementBalance start="(" end=")" containedin=rustBoxPlacement transparent syn region rustBoxPlacementBalance start="\[" end="\]" containedin=rustBoxPlacement transparent " {} are handled by rustFoldBraces syn region rustMacroRepeat matchgroup=rustMacroRepeatDelimiters start="$(" end=")" contains=TOP nextgroup=rustMacroRepeatCount syn match rustMacroRepeatCount ".\?[*+]" contained syn match rustMacroVariable "$\w\+" " Reserved (but not yet used) keywords {{{2 syn keyword rustReservedKeyword alignof become do offsetof priv pure sizeof typeof unsized yield abstract virtual final override macro " Built-in types {{{2 syn keyword rustType isize usize char bool u8 u16 u32 u64 u128 f32 syn keyword rustType f64 i8 i16 i32 i64 i128 str Self " Things from the libstd v1 prelude (src/libstd/prelude/v1.rs) {{{2 " This section is just straight transformation of the contents of the prelude, " to make it easy to update. " Reexported core operators {{{3 syn keyword rustTrait Copy Send Sized Sync syn keyword rustTrait Drop Fn FnMut FnOnce " Reexported functions {{{3 " There’s no point in highlighting these; when one writes drop( or drop::< it " gets the same highlighting anyway, and if someone writes `let drop = …;` we " don’t really want *that* drop to be highlighted. "syn keyword rustFunction drop " Reexported types and traits {{{3 syn keyword rustTrait Box syn keyword rustTrait ToOwned syn keyword rustTrait Clone syn keyword rustTrait PartialEq PartialOrd Eq Ord syn keyword rustTrait AsRef AsMut Into From syn keyword rustTrait Default syn keyword rustTrait Iterator Extend IntoIterator syn keyword rustTrait DoubleEndedIterator ExactSizeIterator syn keyword rustEnum Option syn keyword rustEnumVariant Some None syn keyword rustEnum Result syn keyword rustEnumVariant Ok Err syn keyword rustTrait SliceConcatExt syn keyword rustTrait String ToString syn keyword rustTrait Vec " Other syntax {{{2 syn keyword rustSelf self syn keyword rustBoolean true false " If foo::bar changes to foo.bar, change this ("::" to "\."). " If foo::bar changes to Foo::bar, change this (first "\w" to "\u"). syn match rustModPath "\w\(\w\)*::[^<]"he=e-3,me=e-3 syn match rustModPathSep "::" syn match rustFuncCall "\w\(\w\)*("he=e-1,me=e-1 syn match rustFuncCall "\w\(\w\)*::<"he=e-3,me=e-3 " foo::(); " This is merely a convention; note also the use of [A-Z], restricting it to " latin identifiers rather than the full Unicode uppercase. I have not used " [:upper:] as it depends upon 'noignorecase' "syn match rustCapsIdent display "[A-Z]\w\(\w\)*" syn match rustOperator display "\%(+\|-\|/\|*\|=\|\^\|&\||\|!\|>\|<\|%\)=\?" " This one isn't *quite* right, as we could have binary-& with a reference syn match rustSigil display /&\s\+[&~@*][^)= \t\r\n]/he=e-1,me=e-1 syn match rustSigil display /[&~@*][^)= \t\r\n]/he=e-1,me=e-1 " This isn't actually correct; a closure with no arguments can be `|| { }`. " Last, because the & in && isn't a sigil syn match rustOperator display "&&\|||" " This is rustArrowCharacter rather than rustArrow for the sake of matchparen, " so it skips the ->; see http://stackoverflow.com/a/30309949 for details. syn match rustArrowCharacter display "->" syn match rustQuestionMark display "?\([a-zA-Z]\+\)\@!" syn match rustMacro '\w\(\w\)*!' contains=rustAssert,rustPanic syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustPanic syn match rustEscapeError display contained /\\./ syn match rustEscape display contained /\\\([nrt0\\'"]\|x\x\{2}\)/ syn match rustEscapeUnicode display contained /\\u{\x\{1,6}}/ syn match rustStringContinuation display contained /\\\n\s*/ syn region rustString start=+b"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeError,rustStringContinuation syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustStringContinuation,@Spell syn region rustString start='b\?r\z(#*\)"' end='"\z1' contains=@Spell syn region rustAttribute start="#!\?\[" end="\]" contains=rustString,rustDerive,rustCommentLine,rustCommentBlock,rustCommentLineDocError,rustCommentBlockDocError syn region rustDerive start="derive(" end=")" contained contains=rustDeriveTrait " This list comes from src/libsyntax/ext/deriving/mod.rs " Some are deprecated (Encodable, Decodable) or to be removed after a new snapshot (Show). syn keyword rustDeriveTrait contained Clone Hash RustcEncodable RustcDecodable Encodable Decodable PartialEq Eq PartialOrd Ord Rand Show Debug Default FromPrimitive Send Sync Copy " Number literals syn match rustDecNumber display "\<[0-9][0-9_]*\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\=" syn match rustHexNumber display "\<0x[a-fA-F0-9_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\=" syn match rustOctNumber display "\<0o[0-7_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\=" syn match rustBinNumber display "\<0b[01_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\=" " Special case for numbers of the form "1." which are float literals, unless followed by " an identifier, which makes them integer literals with a method call or field access, " or by another ".", which makes them integer literals followed by the ".." token. " (This must go first so the others take precedence.) syn match rustFloat display "\<[0-9][0-9_]*\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\|\.\)\@!" " To mark a number as a normal float, it must have at least one of the three things integral values don't have: " a decimal point and more numbers; an exponent; and a type suffix. syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)\=" syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\(f32\|f64\)\=" syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)" " For the benefit of delimitMate syn region rustLifetimeCandidate display start=/&'\%(\([^'\\]\|\\\(['nrt0\\\"]\|x\x\{2}\|u{\x\{1,6}}\)\)'\)\@!/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime syn region rustGenericRegion display start=/<\%('\|[^[cntrl:][:space:][:punct:]]\)\@=')\S\@=/ end=/>/ contains=rustGenericLifetimeCandidate syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime "rustLifetime must appear before rustCharacter, or chars will get the lifetime highlighting syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" syn match rustLabel display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*:" syn match rustCharacterInvalid display contained /b\?'\zs[\n\r\t']\ze'/ " The groups negated here add up to 0-255 but nothing else (they do not seem to go beyond ASCII). syn match rustCharacterInvalidUnicode display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/ syn match rustCharacter /b'\([^\\]\|\\\(.\|x\x\{2}\)\)'/ contains=rustEscape,rustEscapeError,rustCharacterInvalid,rustCharacterInvalidUnicode syn match rustCharacter /'\([^\\]\|\\\(.\|x\x\{2}\|u{\x\{1,6}}\)\)'/ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustCharacterInvalid syn match rustShebang /\%^#![^[].*/ syn region rustCommentLine start="//" end="$" contains=rustTodo,@Spell syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell syn region rustCommentLineDocError start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell contained syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell syn region rustCommentBlockDocError matchgroup=rustCommentBlockDocError start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,rustCommentBlockDocNestError,@Spell contained syn region rustCommentBlockNest matchgroup=rustCommentBlock start="/\*" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell contained transparent syn region rustCommentBlockDocNest matchgroup=rustCommentBlockDoc start="/\*" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell contained transparent syn region rustCommentBlockDocNestError matchgroup=rustCommentBlockDocError start="/\*" end="\*/" contains=rustTodo,rustCommentBlockDocNestError,@Spell contained transparent " FIXME: this is a really ugly and not fully correct implementation. Most " importantly, a case like ``/* */*`` should have the final ``*`` not being in " a comment, but in practice at present it leaves comments open two levels " deep. But as long as you stay away from that particular case, I *believe* " the highlighting is correct. Due to the way Vim's syntax engine works " (greedy for start matches, unlike Rust's tokeniser which is searching for " the earliest-starting match, start or end), I believe this cannot be solved. " Oh you who would fix it, don't bother with things like duplicating the Block " rules and putting ``\*\@ " Latest Revision: 2008-06-29 " Changes: 2008-06-29 support for RFC3339 tuimestamps James Vega " 2016 Jan 19: messagesDate changed by Bram if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match messagesBegin display '^' nextgroup=messagesDate,messagesDateRFC3339 syn match messagesDate contained display '[[:lower:][:upper:]][[:lower:][:upper:]][[:lower:][:upper:]] [ 0-9]\d *' \ nextgroup=messagesHour syn match messagesHour contained display '\d\d:\d\d:\d\d\s*' \ nextgroup=messagesHost syn match messagesDateRFC3339 contained display '\d\{4}-\d\d-\d\d' \ nextgroup=messagesRFC3339T syn match messagesRFC3339T contained display '\cT' \ nextgroup=messagesHourRFC3339 syn match messagesHourRFC3339 contained display '\c\d\d:\d\d:\d\d\(\.\d\+\)\=\([+-]\d\d:\d\d\|Z\)' \ nextgroup=messagesHost syn match messagesHost contained display '\S*\s*' \ nextgroup=messagesLabel syn match messagesLabel contained display '\s*[^:]*:\s*' \ nextgroup=messagesText contains=messagesKernel,messagesPID syn match messagesPID contained display '\[\zs\d\+\ze\]' syn match messagesKernel contained display 'kernel:' syn match messagesIP '\d\+\.\d\+\.\d\+\.\d\+' syn match messagesURL '\w\+://\S\+' syn match messagesText contained display '.*' \ contains=messagesNumber,messagesIP,messagesURL,messagesError syn match messagesNumber contained '0x[0-9a-fA-F]*\|\[<[0-9a-f]\+>\]\|\<\d[0-9a-fA-F]*' syn match messagesError contained '\c.*\<\(FATAL\|ERROR\|ERRORS\|FAILED\|FAILURE\).*' hi def link messagesDate Constant hi def link messagesHour Type hi def link messagesDateRFC3339 Constant hi def link messagesHourRFC3339 Type hi def link messagesRFC3339T Normal hi def link messagesHost Identifier hi def link messagesLabel Operator hi def link messagesPID Constant hi def link messagesKernel Special hi def link messagesError ErrorMsg hi def link messagesIP Constant hi def link messagesURL Underlined hi def link messagesText Normal hi def link messagesNumber Number let b:current_syntax = "messages" let &cpo = s:cpo_save unlet s:cpo_save PK!: : vim80/syntax/chicken.vimnu[" Vim syntax file " Language: Scheme (CHICKEN) " Last Change: 2018-02-05 " Author: Evan Hanson " Maintainer: Evan Hanson " URL: https://foldling.org/vim/syntax/chicken.vim " Notes: This is supplemental syntax, to be loaded after the core Scheme " syntax file (syntax/scheme.vim). Enable it by setting b:is_chicken=1 " and filetype=scheme. " Only to be used on top of the Scheme syntax. if !exists('b:did_scheme_syntax') finish endif " Lighten parentheses. hi! def link schemeParentheses Comment " foo#bar syn match schemeExtraSyntax /[^ #'`\t\n()\[\]"|;]\+#[^ '`\t\n()\[\]"|;]\+/ " ##foo#bar syn match schemeExtraSyntax /##[^ '`\t\n()\[\]"|;]\+/ " Heredocs. syn region schemeString start=/#<[<#]\s*\z(.*\)/ end=/^\z1$/ " Keywords. syn match schemeKeyword /#[!:][a-zA-Z0-9!$%&*+-./:<=>?@^_~#]\+/ syn match schemeKeyword /[a-zA-Z0-9!$%&*+-./:<=>?@^_~#]\+:\>/ " C/C++ syntax. let s:c = globpath(&rtp, 'syntax/cpp.vim', 0, 1) if len(s:c) exe 'syn include @c ' s:c[0] syn region c matchgroup=schemeComment start=/#>/ end=/<#/ contains=@c endif syn keyword schemeSyntax define-record syn keyword schemeLibrarySyntax declare syn keyword schemeLibrarySyntax module syn keyword schemeLibrarySyntax reexport syn keyword schemeLibrarySyntax require-library syn keyword schemeTypeSyntax --> syn keyword schemeTypeSyntax -> syn keyword schemeTypeSyntax : syn keyword schemeTypeSyntax assume syn keyword schemeTypeSyntax compiler-typecase syn keyword schemeTypeSyntax define-specialization syn keyword schemeTypeSyntax define-type syn keyword schemeTypeSyntax the syn keyword schemeExtraSyntax and-let* syn keyword schemeExtraSyntax match syn keyword schemeExtraSyntax match-lambda syn keyword schemeExtraSyntax match-lambda* syn keyword schemeSpecialSyntax define-compiler-syntax syn keyword schemeSpecialSyntax define-constant syn keyword schemeSpecialSyntax define-external syn keyword schemeSpecialSyntax define-inline syn keyword schemeSpecialSyntax foreign-code syn keyword schemeSpecialSyntax foreign-declare syn keyword schemeSpecialSyntax foreign-lambda syn keyword schemeSpecialSyntax foreign-lambda* syn keyword schemeSpecialSyntax foreign-primitive syn keyword schemeSpecialSyntax foreign-safe-lambda syn keyword schemeSpecialSyntax foreign-safe-lambda* syn keyword schemeSpecialSyntax foreign-value syn keyword schemeSyntaxSyntax begin-for-syntax syn keyword schemeSyntaxSyntax define-for-syntax syn keyword schemeSyntaxSyntax er-macro-transformer syn keyword schemeSyntaxSyntax ir-macro-transformer syn keyword schemeSyntaxSyntax require-library-for-syntax PK!svim80/syntax/tads.vimnu[" Vim syntax file " Language: TADS " Maintainer: Amir Karger " $Date: 2004/06/13 19:28:45 $ " $Revision: 1.1 $ " Stolen from: Bram Moolenaar's C language file " Newest version at: http://www.hec.utah.edu/~karger/vim/syntax/tads.vim " History info at the bottom of the file " TODO lots more keywords " global, self, etc. are special *objects*, not functions. They should " probably be a different color than the special functions " Actually, should cvtstr etc. be functions?! (change tadsFunction) " Make global etc. into Identifiers, since we don't have regular variables? " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " A bunch of useful keywords syn keyword tadsStatement goto break return continue pass syn keyword tadsLabel case default syn keyword tadsConditional if else switch syn keyword tadsRepeat while for do syn keyword tadsStorageClass local compoundWord formatstring specialWords syn keyword tadsBoolean nil true " TADS keywords syn keyword tadsKeyword replace modify syn keyword tadsKeyword global self inherited " builtin functions syn keyword tadsKeyword cvtstr cvtnum caps lower upper substr syn keyword tadsKeyword say length syn keyword tadsKeyword setit setscore syn keyword tadsKeyword datatype proptype syn keyword tadsKeyword car cdr syn keyword tadsKeyword defined isclass syn keyword tadsKeyword find firstobj nextobj syn keyword tadsKeyword getarg argcount syn keyword tadsKeyword input yorn askfile syn keyword tadsKeyword rand randomize syn keyword tadsKeyword restart restore quit save undo syn keyword tadsException abort exit exitobj syn keyword tadsTodo contained TODO FIXME XXX " String and Character constants " Highlight special characters (those which have a backslash) differently syn match tadsSpecial contained "\\." syn region tadsDoubleString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tadsSpecial,tadsEmbedded syn region tadsSingleString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=tadsSpecial " Embedded expressions in strings syn region tadsEmbedded contained start="<<" end=">>" contains=tadsKeyword " TADS doesn't have \xxx, right? "syn match cSpecial contained "\\[0-7][0-7][0-7]\=\|\\." "syn match cSpecialCharacter "'\\[0-7][0-7]'" "syn match cSpecialCharacter "'\\[0-7][0-7][0-7]'" "catch errors caused by wrong parenthesis "syn region cParen transparent start='(' end=')' contains=ALLBUT,cParenError,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel "syn match cParenError ")" "syn match cInParen contained "[{}]" syn region tadsBrace transparent start='{' end='}' contains=ALLBUT,tadsBraceError,tadsIncluded,tadsSpecial,tadsTodo syn match tadsBraceError "}" "integer number (TADS has no floating point numbers) syn case ignore syn match tadsNumber "\<[0-9]\+\>" "hex number syn match tadsNumber "\<0x[0-9a-f]\+\>" syn match tadsIdentifier "\<[a-z][a-z0-9_$]*\>" syn case match " flag an octal number with wrong digits syn match tadsOctalError "\<0[0-7]*[89]" " Removed complicated c_comment_strings syn region tadsComment start="/\*" end="\*/" contains=tadsTodo syn match tadsComment "//.*" contains=tadsTodo syntax match tadsCommentError "\*/" syn region tadsPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=tadsComment,tadsString,tadsNumber,tadsCommentError syn region tadsIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match tadsIncluded contained "<[^>]*>" syn match tadsInclude "^\s*#\s*include\>\s*["<]" contains=tadsIncluded syn region tadsDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInBrace,tadsIdentifier syn region tadsPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInParen,tadsIdentifier " Highlight User Labels " TODO labels for gotos? "syn region cMulti transparent start='?' end=':' contains=ALLBUT,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel,cBitField " Avoid matching foo::bar() in C++ by requiring that the next char is not ':' "syn match cUserCont "^\s*\I\i*\s*:$" contains=cUserLabel "syn match cUserCont ";\s*\I\i*\s*:$" contains=cUserLabel "syn match cUserCont "^\s*\I\i*\s*:[^:]" contains=cUserLabel "syn match cUserCont ";\s*\I\i*\s*:[^:]" contains=cUserLabel "syn match cUserLabel "\I\i*" contained " identifier: class-name [, class-name [...]] [property-list] ; " Don't highlight comment in class def syn match tadsClassDef "\[^/]*" contains=tadsObjectDef,tadsClass syn match tadsClass contained "\" syn match tadsObjectDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*[a-zA-Z0-9_$]\+\(\s*,\s*[a-zA-Z][a-zA-Z0-9_$]*\)*\(\s*;\)\=" syn keyword tadsFunction contained function syn match tadsFunctionDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*function[^{]*" contains=tadsFunction "syn region tadsObject transparent start = '[a-zA-Z][\i$]\s*:\s*' end=";" contains=tadsBrace,tadsObjectDef " How far back do we go to find matching groups if !exists("tads_minlines") let tads_minlines = 15 endif exec "syn sync ccomment tadsComment minlines=" . tads_minlines if !exists("tads_sync_dist") let tads_sync_dist = 100 endif execute "syn sync maxlines=" . tads_sync_dist " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overridden later hi def link tadsFunctionDef Function hi def link tadsFunction Structure hi def link tadsClass Structure hi def link tadsClassDef Identifier hi def link tadsObjectDef Identifier " no highlight for tadsEmbedded, so it prints as normal text w/in the string hi def link tadsOperator Operator hi def link tadsStructure Structure hi def link tadsTodo Todo hi def link tadsLabel Label hi def link tadsConditional Conditional hi def link tadsRepeat Repeat hi def link tadsException Exception hi def link tadsStatement Statement hi def link tadsStorageClass StorageClass hi def link tadsKeyWord Keyword hi def link tadsSpecial SpecialChar hi def link tadsNumber Number hi def link tadsBoolean Boolean hi def link tadsDoubleString tadsString hi def link tadsSingleString tadsString hi def link tadsOctalError tadsError hi def link tadsCommentError tadsError hi def link tadsBraceError tadsError hi def link tadsInBrace tadsError hi def link tadsError Error hi def link tadsInclude Include hi def link tadsPreProc PreProc hi def link tadsDefine Macro hi def link tadsIncluded tadsString hi def link tadsPreCondit PreCondit hi def link tadsString String hi def link tadsComment Comment let b:current_syntax = "tads" " Changes: " 11/18/99 Added a bunch of TADS functions, tadsException " 10/22/99 Misspelled Moolenaar (sorry!), c_minlines to tads_minlines " " vim: ts=8 PK!"vim80/syntax/a65.vimnu[" Vim syntax file " Language: xa 6502 cross assembler " Maintainer: Clemens Kirchgatterer " Last Change: 2016 Aug 31 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " Opcodes syn match a65Opcode "\" syn match a65Number "#\=$[0-9A-F]*\>" syn match a65Number "#\=&[0-7]*\>" syn match a65Number "#\=%[01]*\>" syn case match " Types syn match a65Type "\(^\|\s\)\.byt\($\|\s\)" syn match a65Type "\(^\|\s\)\.word\($\|\s\)" syn match a65Type "\(^\|\s\)\.asc\($\|\s\)" syn match a65Type "\(^\|\s\)\.dsb\($\|\s\)" syn match a65Type "\(^\|\s\)\.fopt\($\|\s\)" syn match a65Type "\(^\|\s\)\.text\($\|\s\)" syn match a65Type "\(^\|\s\)\.data\($\|\s\)" syn match a65Type "\(^\|\s\)\.bss\($\|\s\)" syn match a65Type "\(^\|\s\)\.zero\($\|\s\)" syn match a65Type "\(^\|\s\)\.align\($\|\s\)" " Blocks syn match a65Section "\(^\|\s\)\.(\($\|\s\)" syn match a65Section "\(^\|\s\)\.)\($\|\s\)" " Strings syn match a65String "\".*\"" " Programm Counter syn region a65PC start="\*=" end="\>" keepend " HI/LO Byte syn region a65HiLo start="#[<>]" end="$\|\s" contains=a65Comment keepend " Comments syn keyword a65Todo TODO XXX FIXME BUG contained syn match a65Comment ";.*"hs=s+1 contains=a65Todo syn region a65Comment start="/\*" end="\*/" contains=a65Todo,a65Comment " Preprocessor syn region a65PreProc start="^#" end="$" contains=a65Comment,a65Continue syn match a65End excludenl /end$/ contained syn match a65Continue "\\$" contained " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link a65Section Special hi def link a65Address Special hi def link a65Comment Comment hi def link a65PreProc PreProc hi def link a65Number Number hi def link a65String String hi def link a65Type Statement hi def link a65Opcode Type hi def link a65PC Error hi def link a65Todo Todo hi def link a65HiLo Number let b:current_syntax = "a65" PK!q.11vim80/syntax/rng.vimnu[" Vim syntax file " Language: RELAX NG " Maintainer: Jaromir Hradilek " URL: https://github.com/jhradilek/vim-rng " Last Change: 25 March 2013 " Description: A syntax file for RELAX NG, a schema language for XML if exists('b:current_syntax') finish endif do Syntax xml syn spell toplevel syn cluster xmlTagHook add=rngTagName syn case match syn keyword rngTagName anyName attribute choice data define div contained syn keyword rngTagName element empty except externalRef grammar contained syn keyword rngTagName group include interleave list mixed name contained syn keyword rngTagName notAllowed nsName oneOrMore optional param contained syn keyword rngTagName parentRef ref start text value zeroOrMore contained hi def link rngTagName Statement let b:current_syntax = 'rng' PK!vqoqovim80/syntax/maple.vimnu[" Vim syntax file " Language: Maple V (based on release 4) " Maintainer: Charles E. Campbell " Last Change: Aug 31, 2016 " Version: 15 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_MAPLE " " Package Function Selection: {{{1 " Because there are a lot of packages, and because of the potential for namespace " clashes, this version of needs the user to select which, if any, " package functions should be highlighted. Select your packages and put into your " <.vimrc> none or more of the lines following let ...=1 lines: " " if exists("mvpkg_all") " ... " endif " " *OR* let mvpkg_all=1 " This syntax file contains all the keywords and top-level packages of Maple 9.5 " but only the contents of packages of Maple V Release 4, and the top-level " routines of Release 4. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Iskeyword Effects: {{{1 if !has("patch-7.4.1142") setl isk=$,48-57,_,a-z,@-Z else syn iskeyword $,48-57,_,a-z,@-Z endif " Package Selection: {{{1 " allow user to simply select all packages for highlighting if exists("mvpkg_all") let mv_DEtools = 1 let mv_Galois = 1 let mv_GaussInt = 1 let mv_LREtools = 1 let mv_combinat = 1 let mv_combstruct = 1 let mv_difforms = 1 let mv_finance = 1 let mv_genfunc = 1 let mv_geometry = 1 let mv_grobner = 1 let mv_group = 1 let mv_inttrans = 1 let mv_liesymm = 1 let mv_linalg = 1 let mv_logic = 1 let mv_networks = 1 let mv_numapprox = 1 let mv_numtheory = 1 let mv_orthopoly = 1 let mv_padic = 1 let mv_plots = 1 let mv_plottools = 1 let mv_powseries = 1 let mv_process = 1 let mv_simplex = 1 let mv_stats = 1 let mv_student = 1 let mv_sumtools = 1 let mv_tensor = 1 let mv_totorder = 1 endif " Parenthesis/curly/brace sanity checker: {{{1 syn case match " parenthesis/curly/brace sanity checker syn region mvZone matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,mvError,mvBraceError,mvCurlyError syn region mvZone matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,mvError,mvBraceError,mvParenError syn region mvZone matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,mvError,mvCurlyError,mvParenError syn match mvError "[)\]}]" syn match mvBraceError "[)}]" contained syn match mvCurlyError "[)\]]" contained syn match mvParenError "[\]}]" contained syn match mvComma "[,;:]" syn match mvSemiError "[;:]" contained syn match mvDcolon "::" " Maple Packages, updated for Maple 9.5 syn keyword mvPackage algcurves ArrayTools Cache codegen syn keyword mvPackage CodeGeneration CodeTools combinat combstruct syn keyword mvPackage ContextMenu CurveFitting DEtools diffalg syn keyword mvPackage difforms DiscreteTransforms Domains ExternalCalling syn keyword mvPackage FileTools finance GaussInt genfunc syn keyword mvPackage geom3d geometry gfun Groebner syn keyword mvPackage group hashmset IntegerRelations inttrans syn keyword mvPackage LargeExpressions LibraryTools liesymm linalg syn keyword mvPackage LinearAlgebra LinearFunctionalSystems LinearOperators syn keyword mvPackage ListTools Logic LREtools Maplets syn keyword mvPackage MathematicalFunctions MathML Matlab syn keyword mvPackage MatrixPolynomialAlgebra MmaTranslator networks syn keyword mvPackage numapprox numtheory Optimization OreTools syn keyword mvPackage Ore_algebra OrthogonalSeries orthopoly padic syn keyword mvPackage PDEtools plots plottools PolynomialIdeals syn keyword mvPackage PolynomialTools powseries process QDifferenceEquations syn keyword mvPackage RandomTools RationalNormalForms RealDomain RootFinding syn keyword mvPackage ScientificConstants ScientificErrorAnalysis simplex syn keyword mvPackage Slode SNAP Sockets SoftwareMetrics syn keyword mvPackage SolveTools Spread stats StringTools syn keyword mvPackage Student student sumtools SumTools syn keyword mvPackage tensor TypeTools Units VariationalCalculus syn keyword mvPackage VectorCalculus Worksheet XMLTools " Language Support: {{{1 syn keyword mvTodo contained COMBAK FIXME TODO XXX if exists("g:mapleversion") && g:mapleversion < 9 syn region mvString start=+`+ skip=+``+ end=+`+ keepend contains=mvTodo,@Spell syn region mvString start=+"+ skip=+""+ end=+"+ keepend contains=@Spell syn region mvDelayEval start=+'+ end=+'+ keepend contains=ALLBUT,mvError,mvBraceError,mvCurlyError,mvParenError,mvSemiError syn match mvVarAssign "[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:=" contains=mvAssign syn match mvAssign ":=" contained else syn region mvName start=+`+ skip=+``+ end=+`+ keepend contains=mvTodo syn region mvString start=+"+ skip=+""+ end=+"+ keepend contains=@Spell syn region mvDelayEval start=+'+ end=+'+ keepend contains=ALLBUT,mvError,mvBraceError,mvCurlyError,mvParenError syn match mvDelim "[;:]" display syn match mvAssign ":=" endif " Lower-Priority Operators: {{{1 syn match mvOper "\." " Number handling: {{{1 syn match mvNumber "\<\d\+" " integer syn match mvNumber "[-+]\=\.\d\+" " . integer syn match mvNumber "\<\d\+\.\d\+" " integer . integer syn match mvNumber "\<\d\+\." " integer . syn match mvNumber "\<\d\+\.\." contains=mvRange " integer .. syn match mvNumber "\<\d\+e[-+]\=\d\+" " integer e [-+] integer syn match mvNumber "[-+]\=\.\d\+e[-+]\=\d\+" " . integer e [-+] integer syn match mvNumber "\<\d\+\.\d*e[-+]\=\d\+" " integer . [integer] e [-+] integer syn match mvNumber "[-+]\d\+" " integer syn match mvNumber "[-+]\d\+\.\d\+" " integer . integer syn match mvNumber "[-+]\d\+\." " integer . syn match mvNumber "[-+]\d\+\.\." contains=mvRange " integer .. syn match mvNumber "[-+]\d\+e[-+]\=\d\+" " integer e [-+] integer syn match mvNumber "[-+]\d\+\.\d*e[-+]\=\d\+" " integer . [integer] e [-+] integer syn match mvRange "\.\." " Operators: {{{1 syn keyword mvOper and not or xor implies union intersect subset minus mod syn match mvOper "<>\|[<>]=\|[<>]\|=" syn match mvOper "&+\|&-\|&\*\|&\/\|&" syn match mvError "\.\.\." " MapleV Statements: ? statement {{{1 " MapleV Statements: ? statement " Split into booleans, conditionals, operators, repeat-logic, etc syn keyword mvBool true false FAIL syn keyword mvCond elif else fi if then syn match mvCond "end\s\+if" syn keyword mvRepeat by for in to syn keyword mvRepeat do from od while syn match mvRepeat "end\s\+do" syn keyword mvSpecial NULL syn match mvSpecial "\[\]\|{}" if exists("g:mapleversion") && g:mapleversion < 9 syn keyword mvStatement Order fail options read save syn keyword mvStatement break local point remember stop syn keyword mvStatement done mod proc restart with syn keyword mvStatement end mods quit return syn keyword mvStatement error next else syn keyword mvStatement option options read save syn keyword mvStatement break local remember stop syn keyword mvStatement done mod proc restart syn keyword mvStatement end mods quit return syn keyword mvStatement error next try catch syn keyword mvStatement finally assuming global export syn keyword mvStatement module description use endif " Builtin Constants: ? constants {{{1 syn keyword mvConstant Catalan I gamma infinity syn keyword mvConstant Pi " Comments: DEBUG, if in a comment, is specially highlighted. {{{1 syn keyword mvDebug contained DEBUG syn cluster mvCommentGroup contains=mvTodo,mvDebug,@Spell syn match mvComment "#.*$" contains=@mvCommentGroup " Basic Library Functions: ? index[function] syn keyword mvLibrary $ @ @@ ERROR syn keyword mvLibrary AFactor KelvinHer arctan factor log rhs syn keyword mvLibrary AFactors KelvinKei arctanh factors log10 root syn keyword mvLibrary AiryAi KelvinKer argument fclose lprint roots syn keyword mvLibrary AiryBi LambertW array feof map round syn keyword mvLibrary AngerJ Lcm assign fflush map2 rsolve syn keyword mvLibrary Berlekamp LegendreE assigned filepos match savelib syn keyword mvLibrary BesselI LegendreEc asspar fixdiv matrix scanf syn keyword mvLibrary BesselJ LegendreEc1 assume float max searchtext syn keyword mvLibrary BesselK LegendreF asubs floor maximize sec syn keyword mvLibrary BesselY LegendreKc asympt fnormal maxnorm sech syn keyword mvLibrary Beta LegendreKc1 attribute fopen maxorder select syn keyword mvLibrary C LegendrePi bernstein forget member seq syn keyword mvLibrary Chi LegendrePic branches fortran min series syn keyword mvLibrary Ci LegendrePic1 bspline fprintf minimize setattribute syn keyword mvLibrary CompSeq Li cat frac minpoly shake syn keyword mvLibrary Content Linsolve ceil freeze modp showprofile syn keyword mvLibrary D MOLS chrem fremove modp1 showtime syn keyword mvLibrary DESol Maple_floats close frontend modp2 sign syn keyword mvLibrary Det MeijerG close fscanf modpol signum syn keyword mvLibrary Diff Norm coeff fsolve mods simplify syn keyword mvLibrary Dirac Normal coeffs galois msolve sin syn keyword mvLibrary DistDeg Nullspace coeftayl gc mtaylor singular syn keyword mvLibrary Divide Power collect gcd mul sinh syn keyword mvLibrary Ei Powmod combine gcdex nextprime sinterp syn keyword mvLibrary Eigenvals Prem commutat genpoly nops solve syn keyword mvLibrary EllipticCE Primfield comparray harmonic norm sort syn keyword mvLibrary EllipticCK Primitive compoly has normal sparse syn keyword mvLibrary EllipticCPi Primpart conjugate hasfun numboccur spline syn keyword mvLibrary EllipticE ProbSplit content hasoption numer split syn keyword mvLibrary EllipticF Product convergs hastype op splits syn keyword mvLibrary EllipticK Psi convert heap open sprem syn keyword mvLibrary EllipticModulus Quo coords history optimize sprintf syn keyword mvLibrary EllipticNome RESol copy hypergeom order sqrfree syn keyword mvLibrary EllipticPi Randpoly cos iFFT parse sqrt syn keyword mvLibrary Eval Randprime cosh icontent pclose sscanf syn keyword mvLibrary Expand Ratrecon cost identity pclose ssystem syn keyword mvLibrary FFT Re cot igcd pdesolve stack syn keyword mvLibrary Factor Rem coth igcdex piecewise sturm syn keyword mvLibrary Factors Resultant csc ilcm plot sturmseq syn keyword mvLibrary FresnelC RootOf csch ilog plot3d subs syn keyword mvLibrary FresnelS Roots csgn ilog10 plotsetup subsop syn keyword mvLibrary Fresnelf SPrem dawson implicitdiff pochhammer substring syn keyword mvLibrary Fresnelg Searchtext define indets pointto sum syn keyword mvLibrary Frobenius Shi degree index poisson surd syn keyword mvLibrary GAMMA Si denom indexed polar symmdiff syn keyword mvLibrary GaussAGM Smith depends indices polylog symmetric syn keyword mvLibrary Gaussejord Sqrfree diagonal inifcn polynom system syn keyword mvLibrary Gausselim Ssi diff ininame powmod table syn keyword mvLibrary Gcd StruveH dilog initialize prem tan syn keyword mvLibrary Gcdex StruveL dinterp insert prevprime tanh syn keyword mvLibrary HankelH1 Sum disassemble int primpart testeq syn keyword mvLibrary HankelH2 Svd discont interface print testfloat syn keyword mvLibrary Heaviside TEXT discrim interp printf thaw syn keyword mvLibrary Hermite Trace dismantle invfunc procbody thiele syn keyword mvLibrary Im WeberE divide invztrans procmake time syn keyword mvLibrary Indep WeierstrassP dsolve iostatus product translate syn keyword mvLibrary Interp WeierstrassPPrime eliminate iperfpow proot traperror syn keyword mvLibrary Inverse WeierstrassSigma ellipsoid iquo property trigsubs syn keyword mvLibrary Irreduc WeierstrassZeta entries iratrecon protect trunc syn keyword mvLibrary Issimilar Zeta eqn irem psqrt type syn keyword mvLibrary JacobiAM abs erf iroot quo typematch syn keyword mvLibrary JacobiCD add erfc irreduc radnormal unames syn keyword mvLibrary JacobiCN addcoords eulermac iscont radsimp unapply syn keyword mvLibrary JacobiCS addressof eval isdifferentiable rand unassign syn keyword mvLibrary JacobiDC algebraic evala isolate randomize unload syn keyword mvLibrary JacobiDN algsubs evalapply ispoly randpoly unprotect syn keyword mvLibrary JacobiDS alias evalb isqrfree range updatesR4 syn keyword mvLibrary JacobiNC allvalues evalc isqrt rationalize userinfo syn keyword mvLibrary JacobiND anames evalf issqr ratrecon value syn keyword mvLibrary JacobiNS antisymm evalfint latex readbytes vector syn keyword mvLibrary JacobiSC applyop evalgf lattice readdata verify syn keyword mvLibrary JacobiSD arccos evalhf lcm readlib whattype syn keyword mvLibrary JacobiSN arccosh evalm lcoeff readline with syn keyword mvLibrary JacobiTheta1 arccot evaln leadterm readstat writebytes syn keyword mvLibrary JacobiTheta2 arccoth evalr length realroot writedata syn keyword mvLibrary JacobiTheta3 arccsc exp lexorder recipoly writeline syn keyword mvLibrary JacobiTheta4 arccsch expand lhs rem writestat syn keyword mvLibrary JacobiZeta arcsec expandoff limit remove writeto syn keyword mvLibrary KelvinBei arcsech expandon ln residue zip syn keyword mvLibrary KelvinBer arcsin extract lnGAMMA resultant ztrans syn keyword mvLibrary KelvinHei arcsinh " == PACKAGES ======================================================= {{{1 " Note: highlighting of package functions is now user-selectable by package. " Package: DEtools differential equations tools {{{2 if exists("mv_DEtools") syn keyword mvPkg_DEtools DEnormal Dchangevar autonomous dfieldplot reduceOrder untranslate syn keyword mvPkg_DEtools DEplot PDEchangecoords convertAlg indicialeq regularsp varparam syn keyword mvPkg_DEtools DEplot3d PDEplot convertsys phaseportrait translate endif " Package: Domains: create domains of computation {{{2 if exists("mv_Domains") endif " Package: GF: Galois Fields {{{2 if exists("mv_GF") syn keyword mvPkg_Galois galois endif " Package: GaussInt: Gaussian Integers {{{2 if exists("mv_GaussInt") syn keyword mvPkg_GaussInt GIbasis GIfactor GIissqr GInorm GIquadres GIsmith syn keyword mvPkg_GaussInt GIchrem GIfactors GIlcm GInormal GIquo GIsqrfree syn keyword mvPkg_GaussInt GIdivisor GIgcd GImcmbine GIorder GIrem GIsqrt syn keyword mvPkg_GaussInt GIfacpoly GIgcdex GInearest GIphi GIroots GIunitnormal syn keyword mvPkg_GaussInt GIfacset GIhermite GInodiv GIprime GIsieve endif " Package: LREtools: manipulate linear recurrence relations {{{2 if exists("mv_LREtools") syn keyword mvPkg_LREtools REcontent REprimpart REtodelta delta hypergeomsols ratpolysols syn keyword mvPkg_LREtools REcreate REreduceorder REtoproc dispersion polysols shift syn keyword mvPkg_LREtools REplot REtoDE constcoeffsol endif " Package: combinat: combinatorial functions {{{2 if exists("mv_combinat") syn keyword mvPkg_combinat Chi composition graycode numbcomb permute randperm syn keyword mvPkg_combinat bell conjpart inttovec numbcomp powerset stirling1 syn keyword mvPkg_combinat binomial decodepart lastpart numbpart prevpart stirling2 syn keyword mvPkg_combinat cartprod encodepart multinomial numbperm randcomb subsets syn keyword mvPkg_combinat character fibonacci nextpart partition randpart vectoint syn keyword mvPkg_combinat choose firstpart endif " Package: combstruct: combinatorial structures {{{2 if exists("mv_combstruct") syn keyword mvPkg_combstruct allstructs draw iterstructs options specification structures syn keyword mvPkg_combstruct count finished nextstruct endif " Package: difforms: differential forms {{{2 if exists("mv_difforms") syn keyword mvPkg_difforms const defform formpart parity scalarpart wdegree syn keyword mvPkg_difforms d form mixpar scalar simpform wedge endif " Package: finance: financial mathematics {{{2 if exists("mv_finance") syn keyword mvPkg_finance amortization cashflows futurevalue growingperpetuity mv_finance presentvalue syn keyword mvPkg_finance annuity effectiverate growingannuity levelcoupon perpetuity yieldtomaturity syn keyword mvPkg_finance blackscholes endif " Package: genfunc: rational generating functions {{{2 if exists("mv_genfunc") syn keyword mvPkg_genfunc rgf_charseq rgf_expand rgf_hybrid rgf_pfrac rgf_sequence rgf_term syn keyword mvPkg_genfunc rgf_encode rgf_findrecur rgf_norm rgf_relate rgf_simp termscale endif " Package: geometry: Euclidean geometry {{{2 if exists("mv_geometry") syn keyword mvPkg_geometry circle dsegment hyperbola parabola segment triangle syn keyword mvPkg_geometry conic ellipse line point square endif " Package: grobner: Grobner bases {{{2 if exists("mv_grobner") syn keyword mvPkg_grobner finduni gbasis leadmon normalf solvable spoly syn keyword mvPkg_grobner finite gsolve endif " Package: group: permutation and finitely-presented groups {{{2 if exists("mv_group") syn keyword mvPkg_group DerivedS areconjugate cosets grouporder issubgroup permrep syn keyword mvPkg_group LCS center cosrep inter mulperms pres syn keyword mvPkg_group NormalClosure centralizer derived invperm normalizer subgrel syn keyword mvPkg_group RandElement convert grelgroup isabelian orbit type syn keyword mvPkg_group Sylow core groupmember isnormal permgroup endif " Package: inttrans: integral transforms {{{2 if exists("mv_inttrans") syn keyword mvPkg_inttrans addtable fouriercos hankel invfourier invlaplace mellin syn keyword mvPkg_inttrans fourier fouriersin hilbert invhilbert laplace endif " Package: liesymm: Lie symmetries {{{2 if exists("mv_liesymm") syn keyword mvPkg_liesymm &^ TD depvars getform mixpar vfix syn keyword mvPkg_liesymm &mod annul determine hasclosure prolong wcollect syn keyword mvPkg_liesymm Eta autosimp dvalue hook reduce wdegree syn keyword mvPkg_liesymm Lie close extvars indepvars setup wedgeset syn keyword mvPkg_liesymm Lrank d getcoeff makeforms translate wsubs endif " Package: linalg: Linear algebra {{{2 if exists("mv_linalg") syn keyword mvPkg_linalg GramSchmidt coldim equal indexfunc mulcol singval syn keyword mvPkg_linalg JordanBlock colspace exponential innerprod multiply smith syn keyword mvPkg_linalg LUdecomp colspan extend intbasis norm stack syn keyword mvPkg_linalg QRdecomp companion ffgausselim inverse normalize submatrix syn keyword mvPkg_linalg addcol cond fibonacci ismith orthog subvector syn keyword mvPkg_linalg addrow copyinto forwardsub issimilar permanent sumbasis syn keyword mvPkg_linalg adjoint crossprod frobenius iszero pivot swapcol syn keyword mvPkg_linalg angle curl gausselim jacobian potential swaprow syn keyword mvPkg_linalg augment definite gaussjord jordan randmatrix sylvester syn keyword mvPkg_linalg backsub delcols geneqns kernel randvector toeplitz syn keyword mvPkg_linalg band delrows genmatrix laplacian rank trace syn keyword mvPkg_linalg basis det grad leastsqrs references transpose syn keyword mvPkg_linalg bezout diag hadamard linsolve row vandermonde syn keyword mvPkg_linalg blockmatrix diverge hermite matadd rowdim vecpotent syn keyword mvPkg_linalg charmat dotprod hessian matrix rowspace vectdim syn keyword mvPkg_linalg charpoly eigenval hilbert minor rowspan vector syn keyword mvPkg_linalg cholesky eigenvect htranspose minpoly scalarmul wronskian syn keyword mvPkg_linalg col entermatrix ihermite endif " Package: logic: Boolean logic {{{2 if exists("mv_logic") syn keyword mvPkg_logic MOD2 bsimp distrib environ randbool tautology syn keyword mvPkg_logic bequal canon dual frominert satisfy toinert endif " Package: networks: graph networks {{{2 if exists("mv_networks") syn keyword mvPkg_networks acycpoly connect dinic graph mincut show syn keyword mvPkg_networks addedge connectivity djspantree graphical mindegree shrink syn keyword mvPkg_networks addvertex contract dodecahedron gsimp neighbors span syn keyword mvPkg_networks adjacency countcuts draw gunion new spanpoly syn keyword mvPkg_networks allpairs counttrees duplicate head octahedron spantree syn keyword mvPkg_networks ancestor cube edges icosahedron outdegree tail syn keyword mvPkg_networks arrivals cycle ends incidence path tetrahedron syn keyword mvPkg_networks bicomponents cyclebase eweight incident petersen tuttepoly syn keyword mvPkg_networks charpoly daughter flow indegree random vdegree syn keyword mvPkg_networks chrompoly degreeseq flowpoly induce rank vertices syn keyword mvPkg_networks complement delete fundcyc isplanar rankpoly void syn keyword mvPkg_networks complete departures getlabel maxdegree shortpathtree vweight syn keyword mvPkg_networks components diameter girth endif " Package: numapprox: numerical approximation {{{2 if exists("mv_numapprox") syn keyword mvPkg_numapprox chebdeg chebsort fnorm laurent minimax remez syn keyword mvPkg_numapprox chebmult chebyshev hornerform laurent pade taylor syn keyword mvPkg_numapprox chebpade confracform infnorm minimax endif " Package: numtheory: number theory {{{2 if exists("mv_numtheory") syn keyword mvPkg_numtheory B cyclotomic invcfrac mcombine nthconver primroot syn keyword mvPkg_numtheory F divisors invphi mersenne nthdenom quadres syn keyword mvPkg_numtheory GIgcd euler isolve minkowski nthnumer rootsunity syn keyword mvPkg_numtheory J factorEQ isprime mipolys nthpow safeprime syn keyword mvPkg_numtheory L factorset issqrfree mlog order sigma syn keyword mvPkg_numtheory M fermat ithprime mobius pdexpand sq2factor syn keyword mvPkg_numtheory bernoulli ifactor jacobi mroot phi sum2sqr syn keyword mvPkg_numtheory bigomega ifactors kronecker msqrt pprimroot tau syn keyword mvPkg_numtheory cfrac imagunit lambda nearestp prevprime thue syn keyword mvPkg_numtheory cfracpol index legendre nextprime endif " Package: orthopoly: orthogonal polynomials {{{2 if exists("mv_orthopoly") syn keyword mvPkg_orthopoly G H L P T U endif " Package: padic: p-adic numbers {{{2 if exists("mv_padic") syn keyword mvPkg_padic evalp function orderp ratvaluep rootp valuep syn keyword mvPkg_padic expansion lcoeffp ordp endif " Package: plots: graphics package {{{2 if exists("mv_plots") syn keyword mvPkg_plots animate coordplot3d gradplot3d listplot3d polarplot setoptions3d syn keyword mvPkg_plots animate3d cylinderplot implicitplot loglogplot polygonplot spacecurve syn keyword mvPkg_plots changecoords densityplot implicitplot3d logplot polygonplot3d sparsematrixplot syn keyword mvPkg_plots complexplot display inequal matrixplot polyhedraplot sphereplot syn keyword mvPkg_plots complexplot3d display3d listcontplot odeplot replot surfdata syn keyword mvPkg_plots conformal fieldplot listcontplot3d pareto rootlocus textplot syn keyword mvPkg_plots contourplot fieldplot3d listdensityplot pointplot semilogplot textplot3d syn keyword mvPkg_plots contourplot3d gradplot listplot pointplot3d setoptions tubeplot syn keyword mvPkg_plots coordplot endif " Package: plottools: basic graphical objects {{{2 if exists("mv_plottools") syn keyword mvPkg_plottools arc curve dodecahedron hyperbola pieslice semitorus syn keyword mvPkg_plottools arrow cutin ellipse icosahedron point sphere syn keyword mvPkg_plottools circle cutout ellipticArc line polygon tetrahedron syn keyword mvPkg_plottools cone cylinder hemisphere octahedron rectangle torus syn keyword mvPkg_plottools cuboid disk hexahedron endif " Package: powseries: formal power series {{{2 if exists("mv_powseries") syn keyword mvPkg_powseries compose multiply powcreate powlog powsolve reversion syn keyword mvPkg_powseries evalpow negative powdiff powpoly powsqrt subtract syn keyword mvPkg_powseries inverse powadd powexp powseries quotient tpsform syn keyword mvPkg_powseries multconst powcos powint powsin endif " Package: process: (Unix)-multi-processing {{{2 if exists("mv_process") syn keyword mvPkg_process block fork pclose pipe popen wait syn keyword mvPkg_process exec kill endif " Package: simplex: linear optimization {{{2 if exists("mv_simplex") syn keyword mvPkg_simplex NONNEGATIVE cterm dual maximize pivoteqn setup syn keyword mvPkg_simplex basis define_zero equality minimize pivotvar standardize syn keyword mvPkg_simplex convexhull display feasible pivot ratio endif " Package: stats: statistics {{{2 if exists("mv_stats") syn keyword mvPkg_stats anova describe fit random statevalf statplots endif " Package: student: student calculus {{{2 if exists("mv_student") syn keyword mvPkg_student D Product distance isolate middlesum rightsum syn keyword mvPkg_student Diff Sum equate leftbox midpoint showtangent syn keyword mvPkg_student Doubleint Tripleint extrema leftsum minimize simpson syn keyword mvPkg_student Int changevar integrand makeproc minimize slope syn keyword mvPkg_student Limit combine intercept maximize powsubs trapezoid syn keyword mvPkg_student Lineint completesquare intparts middlebox rightbox value syn keyword mvPkg_student Point endif " Package: sumtools: indefinite and definite sums {{{2 if exists("mv_sumtools") syn keyword mvPkg_sumtools Hypersum extended_gosper hyperrecursion hyperterm sumrecursion sumtohyper syn keyword mvPkg_sumtools Sumtohyper gosper hypersum simpcomb endif " Package: tensor: tensor computations and General Relativity {{{2 if exists("mv_tensor") syn keyword mvPkg_tensor Christoffel1 Riemann connexF display_allGR get_compts partial_diff syn keyword mvPkg_tensor Christoffel2 RiemannF contract dual get_rank permute_indices syn keyword mvPkg_tensor Einstein Weyl convertNP entermetric invars petrov syn keyword mvPkg_tensor Jacobian act cov_diff exterior_diff invert prod syn keyword mvPkg_tensor Killing_eqns antisymmetrize create exterior_prod lin_com raise syn keyword mvPkg_tensor Levi_Civita change_basis d1metric frame lower symmetrize syn keyword mvPkg_tensor Lie_diff commutator d2metric geodesic_eqns npcurve tensorsGR syn keyword mvPkg_tensor Ricci compare directional_diff get_char npspin transform syn keyword mvPkg_tensor Ricciscalar conj displayGR endif " Package: totorder: total orders on names {{{2 if exists("mv_totorder") syn keyword mvPkg_totorder forget init ordering tassume tis endif " ===================================================================== " Highlighting: Define the default highlighting. {{{1 " Only when an item doesn't have highlighting yet if !exists("skip_maplev_syntax_inits") " Maple->Maple Links {{{2 hi def link mvBraceError mvError hi def link mvCurlyError mvError hi def link mvDebug mvTodo hi def link mvParenError mvError hi def link mvPkg_DEtools mvPkgFunc hi def link mvPkg_Galois mvPkgFunc hi def link mvPkg_GaussInt mvPkgFunc hi def link mvPkg_LREtools mvPkgFunc hi def link mvPkg_combinat mvPkgFunc hi def link mvPkg_combstruct mvPkgFunc hi def link mvPkg_difforms mvPkgFunc hi def link mvPkg_finance mvPkgFunc hi def link mvPkg_genfunc mvPkgFunc hi def link mvPkg_geometry mvPkgFunc hi def link mvPkg_grobner mvPkgFunc hi def link mvPkg_group mvPkgFunc hi def link mvPkg_inttrans mvPkgFunc hi def link mvPkg_liesymm mvPkgFunc hi def link mvPkg_linalg mvPkgFunc hi def link mvPkg_logic mvPkgFunc hi def link mvPkg_networks mvPkgFunc hi def link mvPkg_numapprox mvPkgFunc hi def link mvPkg_numtheory mvPkgFunc hi def link mvPkg_orthopoly mvPkgFunc hi def link mvPkg_padic mvPkgFunc hi def link mvPkg_plots mvPkgFunc hi def link mvPkg_plottools mvPkgFunc hi def link mvPkg_powseries mvPkgFunc hi def link mvPkg_process mvPkgFunc hi def link mvPkg_simplex mvPkgFunc hi def link mvPkg_stats mvPkgFunc hi def link mvPkg_student mvPkgFunc hi def link mvPkg_sumtools mvPkgFunc hi def link mvPkg_tensor mvPkgFunc hi def link mvPkg_totorder mvPkgFunc hi def link mvRange mvOper hi def link mvSemiError mvError hi def link mvDelim Delimiter " Maple->Standard Links {{{2 hi def link mvAssign Delimiter hi def link mvBool Boolean hi def link mvComma Delimiter hi def link mvComment Comment hi def link mvCond Conditional hi def link mvConstant Number hi def link mvDelayEval Label hi def link mvDcolon Delimiter hi def link mvError Error hi def link mvLibrary Statement hi def link mvNumber Number hi def link mvOper Operator hi def link mvAssign Delimiter hi def link mvPackage Type hi def link mvPkgFunc Function hi def link mvPktOption Special hi def link mvRepeat Repeat hi def link mvSpecial Special hi def link mvStatement Statement hi def link mvName String hi def link mvString String hi def link mvTodo Todo endif " Current Syntax: {{{1 let b:current_syntax = "maple" " vim: ts=20 fdm=marker PK!ivim80/syntax/dockerfile.vimnu[" dockerfile.vim - Syntax highlighting for Dockerfiles " Maintainer: Honza Pokorny " Version: 0.6 " Last Change: 2016 Aug 9 " License: BSD if exists("b:current_syntax") finish endif let b:current_syntax = "dockerfile" syntax case ignore syntax match dockerfileKeyword /\v^\s*(ONBUILD\s+)?(ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)\s/ syntax region dockerfileString start=/\v"/ skip=/\v\\./ end=/\v"/ syntax match dockerfileComment "\v^\s*#.*$" hi def link dockerfileString String hi def link dockerfileKeyword Keyword hi def link dockerfileComment Comment PK!9AAvim80/syntax/aap.vimnu[" Vim syntax file " Language: A-A-P recipe " Maintainer: Bram Moolenaar " Last Change: 2004 Jun 13 " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn include @aapPythonScript syntax/python.vim syn match aapVariable /$[-+?*="'\\!]*[a-zA-Z0-9_.]*/ syn match aapVariable /$[-+?*="'\\!]*([a-zA-Z0-9_.]*)/ syn keyword aapTodo contained TODO Todo syn match aapString +'[^']\{-}'+ syn match aapString +"[^"]\{-}"+ syn match aapCommand '^\s*:action\>' syn match aapCommand '^\s*:add\>' syn match aapCommand '^\s*:addall\>' syn match aapCommand '^\s*:asroot\>' syn match aapCommand '^\s*:assertpkg\>' syn match aapCommand '^\s*:attr\>' syn match aapCommand '^\s*:attribute\>' syn match aapCommand '^\s*:autodepend\>' syn match aapCommand '^\s*:buildcheck\>' syn match aapCommand '^\s*:cd\>' syn match aapCommand '^\s*:chdir\>' syn match aapCommand '^\s*:checkin\>' syn match aapCommand '^\s*:checkout\>' syn match aapCommand '^\s*:child\>' syn match aapCommand '^\s*:chmod\>' syn match aapCommand '^\s*:commit\>' syn match aapCommand '^\s*:commitall\>' syn match aapCommand '^\s*:conf\>' syn match aapCommand '^\s*:copy\>' syn match aapCommand '^\s*:del\>' syn match aapCommand '^\s*:deldir\>' syn match aapCommand '^\s*:delete\>' syn match aapCommand '^\s*:delrule\>' syn match aapCommand '^\s*:dll\>' syn match aapCommand '^\s*:do\>' syn match aapCommand '^\s*:error\>' syn match aapCommand '^\s*:execute\>' syn match aapCommand '^\s*:exit\>' syn match aapCommand '^\s*:export\>' syn match aapCommand '^\s*:fetch\>' syn match aapCommand '^\s*:fetchall\>' syn match aapCommand '^\s*:filetype\>' syn match aapCommand '^\s*:finish\>' syn match aapCommand '^\s*:global\>' syn match aapCommand '^\s*:import\>' syn match aapCommand '^\s*:include\>' syn match aapCommand '^\s*:installpkg\>' syn match aapCommand '^\s*:lib\>' syn match aapCommand '^\s*:local\>' syn match aapCommand '^\s*:log\>' syn match aapCommand '^\s*:ltlib\>' syn match aapCommand '^\s*:mkdir\>' syn match aapCommand '^\s*:mkdownload\>' syn match aapCommand '^\s*:move\>' syn match aapCommand '^\s*:pass\>' syn match aapCommand '^\s*:popdir\>' syn match aapCommand '^\s*:produce\>' syn match aapCommand '^\s*:program\>' syn match aapCommand '^\s*:progsearch\>' syn match aapCommand '^\s*:publish\>' syn match aapCommand '^\s*:publishall\>' syn match aapCommand '^\s*:pushdir\>' syn match aapCommand '^\s*:quit\>' syn match aapCommand '^\s*:recipe\>' syn match aapCommand '^\s*:refresh\>' syn match aapCommand '^\s*:remove\>' syn match aapCommand '^\s*:removeall\>' syn match aapCommand '^\s*:require\>' syn match aapCommand '^\s*:revise\>' syn match aapCommand '^\s*:reviseall\>' syn match aapCommand '^\s*:route\>' syn match aapCommand '^\s*:rule\>' syn match aapCommand '^\s*:start\>' syn match aapCommand '^\s*:symlink\>' syn match aapCommand '^\s*:sys\>' syn match aapCommand '^\s*:sysdepend\>' syn match aapCommand '^\s*:syspath\>' syn match aapCommand '^\s*:system\>' syn match aapCommand '^\s*:tag\>' syn match aapCommand '^\s*:tagall\>' syn match aapCommand '^\s*:toolsearch\>' syn match aapCommand '^\s*:totype\>' syn match aapCommand '^\s*:touch\>' syn match aapCommand '^\s*:tree\>' syn match aapCommand '^\s*:unlock\>' syn match aapCommand '^\s*:update\>' syn match aapCommand '^\s*:usetool\>' syn match aapCommand '^\s*:variant\>' syn match aapCommand '^\s*:verscont\>' syn match aapCommand '^\s*:print\>' nextgroup=aapPipeEnd syn match aapPipeCmd '\s*:print\>' nextgroup=aapPipeEnd contained syn match aapCommand '^\s*:cat\>' nextgroup=aapPipeEnd syn match aapPipeCmd '\s*:cat\>' nextgroup=aapPipeEnd contained syn match aapCommand '^\s*:syseval\>' nextgroup=aapPipeEnd syn match aapPipeCmd '\s*:syseval\>' nextgroup=aapPipeEnd contained syn match aapPipeCmd '\s*:assign\>' contained syn match aapCommand '^\s*:eval\>' nextgroup=aapPipeEnd syn match aapPipeCmd '\s*:eval\>' nextgroup=aapPipeEndPy contained syn match aapPipeCmd '\s*:tee\>' nextgroup=aapPipeEnd contained syn match aapPipeCmd '\s*:log\>' nextgroup=aapPipeEnd contained syn match aapPipeEnd '[^|]*|' nextgroup=aapPipeCmd contained skipnl syn match aapPipeEndPy '[^|]*|' nextgroup=aapPipeCmd contained skipnl contains=@aapPythonScript syn match aapPipeStart '^\s*|' nextgroup=aapPipeCmd " " A Python line starts with @. Can be continued with a trailing backslash. syn region aapPythonRegion start="\s*@" skip='\\$' end=+$+ contains=@aapPythonScript keepend " " A Python block starts with ":python" and continues so long as the indent is " bigger. syn region aapPythonRegion matchgroup=aapCommand start="\z(\s*\):python" skip='\n\z1\s\|\n\s*\n' end=+$+ contains=@aapPythonScript " A Python expression is enclosed in backticks. syn region aapPythonRegion start="`" skip="``" end="`" contains=@aapPythonScript " TODO: There is something wrong with line continuation. syn match aapComment '#.*' contains=aapTodo syn match aapComment '#.*\(\\\n.*\)' contains=aapTodo syn match aapSpecial '$#' syn match aapSpecial '$\$' syn match aapSpecial '$(.)' " A heredoc assignment. syn region aapHeredoc start="^\s*\k\+\s*$\=+\=?\=<<\s*\z(\S*\)"hs=e+1 end="^\s*\z1\s*$"he=s-1 " Syncing is needed for ":python" and "VAR << EOF". Don't use Python syncing syn sync clear syn sync fromstart " The default highlighting. hi def link aapTodo Todo hi def link aapString String hi def link aapComment Comment hi def link aapSpecial Special hi def link aapVariable Identifier hi def link aapPipeCmd aapCommand hi def link aapCommand Statement hi def link aapHeredoc Constant let b:current_syntax = "aap" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!Lvim80/syntax/wsh.vimnu[" Vim syntax file " Language: Windows Scripting Host " Maintainer: Paul Moore " Last Change: Fre, 24 Nov 2000 21:54:09 +0100 " This reuses the XML, VB and JavaScript syntax files. While VB is not " VBScript, it's close enough for us. No attempt is made to handle " other languages. " Send comments, suggestions and requests to the maintainer. " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:wsh_cpo_save = &cpo set cpo&vim runtime! syntax/xml.vim unlet b:current_syntax syn case ignore syn include @wshVBScript :p:h/vb.vim unlet b:current_syntax syn include @wshJavaScript :p:h/javascript.vim unlet b:current_syntax syn region wshVBScript \ matchgroup=xmlTag start="]*VBScript\(>\|[^>]*[^/>]>\)" \ matchgroup=xmlEndTag end="" \ fold \ contains=@wshVBScript \ keepend syn region wshJavaScript \ matchgroup=xmlTag start="]*J\(ava\)\=Script\(>\|[^>]*[^/>]>\)" \ matchgroup=xmlEndTag end="" \ fold \ contains=@wshJavaScript \ keepend syn cluster xmlRegionHook add=wshVBScript,wshJavaScript let b:current_syntax = "wsh" let &cpo = s:wsh_cpo_save unlet s:wsh_cpo_save PK!q9!!vim80/syntax/csc.vimnu[" Vim syntax file " Language: Essbase script " Maintainer: Raul Segura Acevedo " Last change: 2011 Dec 25 by Thilo Six " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " folds: fix/endfix and comments sy region EssFold start="\" "hex number sy match cscNumber contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" " Flag the first zero of an octal number as something special sy match cscOctal contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" sy match cscFloat contained "\d\+f" "floating point number, with dot, optional exponent sy match cscFloat contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" "floating point number, starting with a dot, optional exponent sy match cscFloat contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, without dot, with exponent sy match cscFloat contained "\d\+e[-+]\=\d\+[fl]\=\>" sy region cscComment start="/\*" end="\*/" contains=@cscCommentGroup,cscSpaceE fold sy match cscCommentE "\*/" sy keyword cscIfError IF ELSE ENDIF ELSEIF sy keyword cscCondition contained IF ELSE ENDIF ELSEIF sy keyword cscFunction contained VARPER VAR UDA TRUNCATE SYD SUMRANGE SUM sy keyword cscFunction contained STDDEVRANGE STDDEV SPARENTVAL SLN SIBLINGS SHIFT sy keyword cscFunction contained SANCESTVAL RSIBLINGS ROUND REMAINDER RELATIVE PTD sy keyword cscFunction contained PRIOR POWER PARENTVAL NPV NEXT MOD MINRANGE MIN sy keyword cscFunction contained MDSHIFT MDPARENTVAL MDANCESTVAL MAXRANGE MAX MATCH sy keyword cscFunction contained LSIBLINGS LEVMBRS LEV sy keyword cscFunction contained ISUDA ISSIBLING ISSAMELEV ISSAMEGEN ISPARENT ISMBR sy keyword cscFunction contained ISLEV ISISIBLING ISIPARENT ISIDESC ISICHILD ISIBLINGS sy keyword cscFunction contained ISIANCEST ISGEN ISDESC ISCHILD ISANCEST ISACCTYPE sy keyword cscFunction contained IRSIBLINGS IRR INTEREST INT ILSIBLINGS IDESCENDANTS sy keyword cscFunction contained ICHILDREN IANCESTORS IALLANCESTORS sy keyword cscFunction contained GROWTH GENMBRS GEN FACTORIAL DISCOUNT DESCENDANTS sy keyword cscFunction contained DECLINE CHILDREN CURRMBRRANGE CURLEV CURGEN sy keyword cscFunction contained COMPOUNDGROWTH COMPOUND AVGRANGE AVG ANCESTVAL sy keyword cscFunction contained ANCESTORS ALLANCESTORS ACCUM ABS sy keyword cscFunction contained @VARPER @VAR @UDA @TRUNCATE @SYD @SUMRANGE @SUM sy keyword cscFunction contained @STDDEVRANGE @STDDEV @SPARENTVAL @SLN @SIBLINGS @SHIFT sy keyword cscFunction contained @SANCESTVAL @RSIBLINGS @ROUND @REMAINDER @RELATIVE @PTD sy keyword cscFunction contained @PRIOR @POWER @PARENTVAL @NPV @NEXT @MOD @MINRANGE @MIN sy keyword cscFunction contained @MDSHIFT @MDPARENTVAL @MDANCESTVAL @MAXRANGE @MAX @MATCH sy keyword cscFunction contained @LSIBLINGS @LEVMBRS @LEV sy keyword cscFunction contained @ISUDA @ISSIBLING @ISSAMELEV @ISSAMEGEN @ISPARENT @ISMBR sy keyword cscFunction contained @ISLEV @ISISIBLING @ISIPARENT @ISIDESC @ISICHILD @ISIBLINGS sy keyword cscFunction contained @ISIANCEST @ISGEN @ISDESC @ISCHILD @ISANCEST @ISACCTYPE sy keyword cscFunction contained @IRSIBLINGS @IRR @INTEREST @INT @ILSIBLINGS @IDESCENDANTS sy keyword cscFunction contained @ICHILDREN @IANCESTORS @IALLANCESTORS sy keyword cscFunction contained @GROWTH @GENMBRS @GEN @FACTORIAL @DISCOUNT @DESCENDANTS sy keyword cscFunction contained @DECLINE @CHILDREN @CURRMBRRANGE @CURLEV @CURGEN sy keyword cscFunction contained @COMPOUNDGROWTH @COMPOUND @AVGRANGE @AVG @ANCESTVAL sy keyword cscFunction contained @ANCESTORS @ALLANCESTORS @ACCUM @ABS sy match cscFunction contained "@" sy match cscError "@\s*\a*" contains=cscFunction sy match cscStatement "&" sy keyword cscStatement AGG ARRAY VAR CCONV CLEARDATA DATACOPY sy match cscComE contained "^\s*CALC.*" sy match cscComE contained "^\s*CLEARBLOCK.*" sy match cscComE contained "^\s*SET.*" sy match cscComE contained "^\s*FIX" sy match cscComE contained "^\s*ENDFIX" sy match cscComE contained "^\s*ENDLOOP" sy match cscComE contained "^\s*LOOP" " sy keyword cscCom FIX ENDFIX LOOP ENDLOOP sy match cscComW "^\s*CALC.*" sy match cscCom "^\s*CALC\s*ALL" sy match cscCom "^\s*CALC\s*AVERAGE" sy match cscCom "^\s*CALC\s*DIM" sy match cscCom "^\s*CALC\s*FIRST" sy match cscCom "^\s*CALC\s*LAST" sy match cscCom "^\s*CALC\s*TWOPASS" sy match cscComW "^\s*CLEARBLOCK.*" sy match cscCom "^\s*CLEARBLOCK\s\+ALL" sy match cscCom "^\s*CLEARBLOCK\s\+UPPER" sy match cscCom "^\s*CLEARBLOCK\s\+NONINPUT" sy match cscComW "^\s*\{}~]\+\s*\|->\s*\)*=\([^=]\@=\|$\)' sy region cscFormula transparent matchgroup=cscVarName start='\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\s*=\([^=]\@=\|\n\)' skip='"[^"]*"' end=';' contains=ALLBUT,cscFormula,cscFormulaIn,cscBPMacro,cscCondition sy region cscFormulaIn matchgroup=cscVarName transparent start='\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\(->\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\)*\s*=\([^=]\@=\|$\)' skip='"[^"]*"' end=';' contains=ALLBUT,cscFormula,cscFormulaIn,cscBPMacro,cscCondition contained sy match cscEq "==" endif if !exists("csc_minlines") let csc_minlines = 50 " mostly for () constructs endif exec "sy sync ccomment cscComment minlines=" . csc_minlines " Define the default highlighting. " Only when an item doesn't have highlighting yet hi cscVarName term=bold ctermfg=9 gui=bold guifg=blue hi def link cscNumber Number hi def link cscOctal Number hi def link cscFloat Float hi def link cscParenE Error hi def link cscCommentE Error hi def link cscSpaceE Error hi def link cscError Error hi def link cscString String hi def link cscComment Comment hi def link cscTodo Todo hi def link cscStatement Statement hi def link cscIfError Error hi def link cscEqError Error hi def link cscFunction Statement hi def link cscCondition Statement hi def link cscWarn WarningMsg hi def link cscComE Error hi def link cscCom Statement hi def link cscComW WarningMsg hi def link cscBPMacro Identifier hi def link cscBPW WarningMsg let b:current_syntax = "csc" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!6ivim80/syntax/javacc.vimnu[" Vim syntax file " Language: JavaCC, a Java Compiler Compiler written by JavaSoft " Maintainer: Claudio Fleiner " URL: http://www.fleiner.com/vim/syntax/javacc.vim " Last Change: 2012 Oct 05 " Uses java.vim, and adds a few special things for JavaCC Parser files. " Those files usually have the extension *.jj " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " source the java.vim file runtime! syntax/java.vim unlet b:current_syntax "remove catching errors caused by wrong parenthesis (does not work in javacc "files) (first define them in case they have not been defined in java) syn match javaParen "--" syn match javaParenError "--" syn match javaInParen "--" syn match javaError2 "--" syn clear javaParen syn clear javaParenError syn clear javaInParen syn clear javaError2 " remove function definitions (they look different) (first define in " in case it was not defined in java.vim) "syn match javaFuncDef "--" syn clear javaFuncDef syn match javaFuncDef "[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)[ \t]*:" contains=javaType syn keyword javaccPackages options DEBUG_PARSER DEBUG_LOOKAHEAD DEBUG_TOKEN_MANAGER syn keyword javaccPackages COMMON_TOKEN_ACTION IGNORE_CASE CHOICE_AMBIGUITY_CHECK syn keyword javaccPackages OTHER_AMBIGUITY_CHECK STATIC LOOKAHEAD ERROR_REPORTING syn keyword javaccPackages USER_TOKEN_MANAGER USER_CHAR_STREAM JAVA_UNICODE_ESCAPE syn keyword javaccPackages UNICODE_INPUT JDK_VERSION syn match javaccPackages "PARSER_END([^)]*)" syn match javaccPackages "PARSER_BEGIN([^)]*)" syn match javaccSpecToken "" " the dot is necessary as otherwise it will be matched as a keyword. syn match javaccSpecToken ".LOOKAHEAD("ms=s+1,me=e-1 syn match javaccToken "<[^> \t]*>" syn keyword javaccActionToken TOKEN SKIP MORE SPECIAL_TOKEN syn keyword javaccError DEBUG IGNORE_IN_BNF " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link javaccSpecToken Statement hi def link javaccActionToken Type hi def link javaccPackages javaScopeDecl hi def link javaccToken String hi def link javaccError Error let b:current_syntax = "javacc" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!Dvim80/syntax/vgrindefs.vimnu[" Vim syntax file " Language: Vgrindefs " Maintainer: Bram Moolenaar " Last Change: 2005 Jun 20 " The Vgrindefs file is used to specify a language for vgrind " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") finish endif " Comments syn match vgrindefsComment "^#.*" " The fields that vgrind recognizes syn match vgrindefsField ":ab=" syn match vgrindefsField ":ae=" syn match vgrindefsField ":pb=" syn match vgrindefsField ":bb=" syn match vgrindefsField ":be=" syn match vgrindefsField ":cb=" syn match vgrindefsField ":ce=" syn match vgrindefsField ":sb=" syn match vgrindefsField ":se=" syn match vgrindefsField ":lb=" syn match vgrindefsField ":le=" syn match vgrindefsField ":nc=" syn match vgrindefsField ":tl" syn match vgrindefsField ":oc" syn match vgrindefsField ":kw=" " Also find the ':' at the end of the line, so all ':' are highlighted syn match vgrindefsField ":\\$" syn match vgrindefsField ":$" syn match vgrindefsField "\\$" " Define the default highlighting. " Only used when an item doesn't have highlighting yet hi def link vgrindefsField Statement hi def link vgrindefsComment Comment let b:current_syntax = "vgrindefs" " vim: ts=8 PK!uUSUvim80/syntax/coco.vimnu[" Vim syntax file " Language: Coco/R " Maintainer: Ashish Shukla " Last Change: 2007 Aug 10 " Remark: Coco/R syntax partially implemented. " License: Vim license " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn keyword cocoKeywords ANY CHARACTERS COMMENTS COMPILER CONTEXT END FROM IF IGNORE IGNORECASE NESTED PRAGMAS PRODUCTIONS SYNC TO TOKENS WEAK syn match cocoUnilineComment #//.*$# syn match cocoIdentifier /[[:alpha:]][[:alnum:]]*/ syn region cocoMultilineComment start=#/[*]# end=#[*]/# syn region cocoString start=/"/ skip=/\\"\|\\\\/ end=/"/ syn region cocoCharacter start=/'/ skip=/\\'\|\\\\/ end=/'/ syn match cocoOperator /+\||\|\.\.\|-\|(\|)\|{\|}\|\[\|\]\|=\|<\|>/ syn region cocoProductionCode start=/([.]/ end=/[.])/ syn match cocoPragma /[$][[:alnum:]]*/ hi def link cocoKeywords Keyword hi def link cocoUnilineComment Comment hi def link cocoMultilineComment Comment hi def link cocoIdentifier Identifier hi def link cocoString String hi def link cocoCharacter Character hi def link cocoOperator Operator hi def link cocoProductionCode Statement hi def link cocoPragma Special PK!jQT+T+vim80/syntax/sshdconfig.vimnu[" Vim syntax file " Language: OpenSSH server configuration file (sshd_config) " Author: David Necas (Yeti) " Maintainer: Dominik Fischer " Contributor: Thilo Six " Contributor: Leonard Ehrenfried " Contributor: Karsten Hopp " Originally: 2009-07-09 " Last Change: 2017 Oct 25 " SSH Version: 7.6p1 " " Setup " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=_,-,a-z,A-Z,48-57 " case on syn case match " Comments syn match sshdconfigComment "^#.*$" contains=sshdconfigTodo syn match sshdconfigComment "\s#.*$" contains=sshdconfigTodo syn keyword sshdconfigTodo TODO FIXME NOTE contained " Constants syn keyword sshdconfigYesNo yes no none syn keyword sshdconfigAddressFamily any inet inet6 syn keyword sshdconfigPrivilegeSeparation sandbox syn keyword sshdconfigTcpForwarding local remote syn keyword sshdconfigRootLogin prohibit-password without-password forced-commands-only syn keyword sshdconfigCiphers 3des-cbc syn keyword sshdconfigCiphers blowfish-cbc syn keyword sshdconfigCiphers cast128-cbc syn keyword sshdconfigCiphers arcfour syn keyword sshdconfigCiphers arcfour128 syn keyword sshdconfigCiphers arcfour256 syn keyword sshdconfigCiphers aes128-cbc syn keyword sshdconfigCiphers aes192-cbc syn keyword sshdconfigCiphers aes256-cbc syn match sshdconfigCiphers "\" syn keyword sshdconfigCiphers aes128-ctr syn keyword sshdconfigCiphers aes192-ctr syn keyword sshdconfigCiphers aes256-ctr syn match sshdconfigCiphers "\" syn match sshdconfigCiphers "\" syn match sshdconfigCiphers "\" syn keyword sshdconfigMAC hmac-sha1 syn keyword sshdconfigMAC mac-sha1-96 syn keyword sshdconfigMAC mac-sha2-256 syn keyword sshdconfigMAC mac-sha2-512 syn keyword sshdconfigMAC mac-md5 syn keyword sshdconfigMAC mac-md5-96 syn keyword sshdconfigMAC mac-ripemd160 syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn keyword sshdconfigHostKeyAlgo ssh-ed25519 syn match sshdconfigHostKeyAlgo "\" syn keyword sshdconfigHostKeyAlgo ssh-rsa syn keyword sshdconfigHostKeyAlgo ssh-dss syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp256 syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp384 syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp521 syn match sshdconfigHostKeyAlgo "\" syn match sshdconfigHostKeyAlgo "\" syn match sshdconfigHostKeyAlgo "\" syn match sshdconfigHostKeyAlgo "\" syn match sshdconfigHostKeyAlgo "\" syn keyword sshdconfigRootLogin prohibit-password without-password forced-commands-only syn keyword sshdconfigLogLevel QUIET FATAL ERROR INFO VERBOSE syn keyword sshdconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3 syn keyword sshdconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1 syn keyword sshdconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7 syn keyword sshdconfigCompression delayed syn match sshdconfigIPQoS "af1[123]" syn match sshdconfigIPQoS "af2[123]" syn match sshdconfigIPQoS "af3[123]" syn match sshdconfigIPQoS "af4[123]" syn match sshdconfigIPQoS "cs[0-7]" syn keyword sshdconfigIPQoS ef lowdelay throughput reliability syn keyword sshdconfigKexAlgo diffie-hellman-group1-sha1 syn keyword sshdconfigKexAlgo diffie-hellman-group14-sha1 syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha1 syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha256 syn keyword sshdconfigKexAlgo ecdh-sha2-nistp256 syn keyword sshdconfigKexAlgo ecdh-sha2-nistp384 syn keyword sshdconfigKexAlgo ecdh-sha2-nistp521 syn match sshdconfigKexAlgo "\" syn keyword sshdconfigTunnel point-to-point ethernet syn keyword sshdconfigSubsystem internal-sftp syn match sshdconfigVar "%[hu]\>" syn match sshdconfigVar "%%" syn match sshdconfigSpecial "[*?]" syn match sshdconfigNumber "\d\+" syn match sshdconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>" syn match sshdconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>" " FIXME: this matches quite a few things which are NOT valid IPv6 addresses syn match sshdconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}:\d\+\>" syn match sshdconfigTime "\<\(\d\+[sSmMhHdDwW]\)\+\>" " case off syn case ignore " Keywords syn keyword sshdconfigMatch Host User Group Address syn keyword sshdconfigKeyword AcceptEnv syn keyword sshdconfigKeyword AddressFamily syn keyword sshdconfigKeyword AllowAgentForwarding syn keyword sshdconfigKeyword AllowGroups syn keyword sshdconfigKeyword AllowStreamLocalForwarding syn keyword sshdconfigKeyword AllowTcpForwarding syn keyword sshdconfigKeyword AllowUsers syn keyword sshdconfigKeyword AuthenticationMethods syn keyword sshdconfigKeyword AuthorizedKeysFile syn keyword sshdconfigKeyword AuthorizedKeysCommand syn keyword sshdconfigKeyword AuthorizedKeysCommandUser syn keyword sshdconfigKeyword AuthorizedPrincipalsFile syn keyword sshdconfigKeyword Banner syn keyword sshdconfigKeyword ChallengeResponseAuthentication syn keyword sshdconfigKeyword ChrootDirectory syn keyword sshdconfigKeyword Ciphers syn keyword sshdconfigKeyword ClientAliveCountMax syn keyword sshdconfigKeyword ClientAliveInterval syn keyword sshdconfigKeyword Compression syn keyword sshdconfigKeyword DebianBanner syn keyword sshdconfigKeyword DenyGroups syn keyword sshdconfigKeyword DenyUsers syn keyword sshdconfigKeyword DisableForwarding syn keyword sshdconfigKeyword ForceCommand syn keyword sshdconfigKeyword GSSAPIAuthentication syn keyword sshdconfigKeyword GSSAPICleanupCredentials syn keyword sshdconfigKeyword GSSAPIKeyExchange syn keyword sshdconfigKeyword GSSAPIStoreCredentialsOnRekey syn keyword sshdconfigKeyword GSSAPIStrictAcceptorCheck syn keyword sshdconfigKeyword GatewayPorts syn keyword sshdconfigKeyword HostCertificate syn keyword sshdconfigKeyword HostKey syn keyword sshdconfigKeyword HostKeyAgent syn keyword sshdconfigKeyword HostKeyAlgorithms syn keyword sshdconfigKeyword HostbasedAcceptedKeyTypes syn keyword sshdconfigKeyword HostbasedAuthentication syn keyword sshdconfigKeyword HostbasedUsesNameFromPacketOnly syn keyword sshdconfigKeyword IPQoS syn keyword sshdconfigKeyword IgnoreRhosts syn keyword sshdconfigKeyword IgnoreUserKnownHosts syn keyword sshdconfigKeyword KbdInteractiveAuthentication syn keyword sshdconfigKeyword KerberosAuthentication syn keyword sshdconfigKeyword KerberosGetAFSToken syn keyword sshdconfigKeyword KerberosOrLocalPasswd syn keyword sshdconfigKeyword KerberosTicketCleanup syn keyword sshdconfigKeyword KexAlgorithms syn keyword sshdconfigKeyword KeyRegenerationInterval syn keyword sshdconfigKeyword ListenAddress syn keyword sshdconfigKeyword LogLevel syn keyword sshdconfigKeyword LoginGraceTime syn keyword sshdconfigKeyword MACs syn keyword sshdconfigKeyword Match syn keyword sshdconfigKeyword MaxAuthTries syn keyword sshdconfigKeyword MaxSessions syn keyword sshdconfigKeyword MaxStartups syn keyword sshdconfigKeyword PasswordAuthentication syn keyword sshdconfigKeyword PermitBlacklistedKeys syn keyword sshdconfigKeyword PermitEmptyPasswords syn keyword sshdconfigKeyword PermitOpen syn keyword sshdconfigKeyword PermitRootLogin syn keyword sshdconfigKeyword PermitTTY syn keyword sshdconfigKeyword PermitTunnel syn keyword sshdconfigKeyword PermitUserEnvironment syn keyword sshdconfigKeyword PermitUserRC syn keyword sshdconfigKeyword PidFile syn keyword sshdconfigKeyword Port syn keyword sshdconfigKeyword PrintLastLog syn keyword sshdconfigKeyword PrintMotd syn keyword sshdconfigKeyword Protocol syn keyword sshdconfigKeyword PubkeyAcceptedKeyTypes syn keyword sshdconfigKeyword PubkeyAuthentication syn keyword sshdconfigKeyword RSAAuthentication syn keyword sshdconfigKeyword RekeyLimit syn keyword sshdconfigKeyword RevokedKeys syn keyword sshdconfigKeyword RhostsRSAAuthentication syn keyword sshdconfigKeyword ServerKeyBits syn keyword sshdconfigKeyword ShowPatchLevel syn keyword sshdconfigKeyword StrictModes syn keyword sshdconfigKeyword Subsystem syn keyword sshdconfigKeyword SyslogFacility syn keyword sshdconfigKeyword TCPKeepAlive syn keyword sshdconfigKeyword TrustedUserCAKeys syn keyword sshdconfigKeyword UseDNS syn keyword sshdconfigKeyword UseLogin syn keyword sshdconfigKeyword UsePAM syn keyword sshdconfigKeyword VersionAddendum syn keyword sshdconfigKeyword X11DisplayOffset syn keyword sshdconfigKeyword X11Forwarding syn keyword sshdconfigKeyword X11UseLocalhost syn keyword sshdconfigKeyword XAuthLocation " Define the default highlighting hi def link sshdconfigComment Comment hi def link sshdconfigTodo Todo hi def link sshdconfigHostPort sshdconfigConstant hi def link sshdconfigTime sshdconfigConstant hi def link sshdconfigNumber sshdconfigConstant hi def link sshdconfigConstant Constant hi def link sshdconfigYesNo sshdconfigEnum hi def link sshdconfigAddressFamily sshdconfigEnum hi def link sshdconfigPrivilegeSeparation sshdconfigEnum hi def link sshdconfigTcpForwarding sshdconfigEnum hi def link sshdconfigRootLogin sshdconfigEnum hi def link sshdconfigCiphers sshdconfigEnum hi def link sshdconfigMAC sshdconfigEnum hi def link sshdconfigHostKeyAlgo sshdconfigEnum hi def link sshdconfigRootLogin sshdconfigEnum hi def link sshdconfigLogLevel sshdconfigEnum hi def link sshdconfigSysLogFacility sshdconfigEnum hi def link sshdconfigVar sshdconfigEnum hi def link sshdconfigCompression sshdconfigEnum hi def link sshdconfigIPQoS sshdconfigEnum hi def link sshdconfigKexAlgo sshdconfigEnum hi def link sshdconfigTunnel sshdconfigEnum hi def link sshdconfigSubsystem sshdconfigEnum hi def link sshdconfigEnum Function hi def link sshdconfigSpecial Special hi def link sshdconfigKeyword Keyword hi def link sshdconfigMatch Type let b:current_syntax = "sshdconfig" " vim:set ts=8 sw=2 sts=2: PK!G??vim80/syntax/cdrdaoconf.vimnu[" Vim syntax file " Language: cdrdao(1) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2007-09-02 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword cdrdaoconfTodo \ TODO FIXME XXX NOTE syn match cdrdaoconfBegin \ display \ nextgroup=@cdrdaoconfKeyword,cdrdaoconfComment \ '^' syn cluster cdrdaoconfKeyword \ contains=cdrdaoconfIntegerKeyword, \ cdrdaoconfDriverKeyword, \ cdrdaoconfDeviceKeyword, \ cdrdaoconfPathKeyword syn keyword cdrdaoconfIntegerKeyword \ contained \ nextgroup=cdrdaoconfIntegerDelimiter \ write_speed \ write_buffers \ user_capacity \ full_burn \ read_speed \ cddb_timeout syn keyword cdrdaoconfIntegerKeyword \ contained \ nextgroup=cdrdaoconfParanoiaModeDelimiter \ read_paranoia_mode syn keyword cdrdaoconfDriverKeyword \ contained \ nextgroup=cdrdaoconfDriverDelimiter \ write_driver \ read_driver syn keyword cdrdaoconfDeviceKeyword \ contained \ nextgroup=cdrdaoconfDeviceDelimiter \ write_device \ read_device syn keyword cdrdaoconfPathKeyword \ contained \ nextgroup=cdrdaoconfPathDelimiter \ cddb_directory \ tmp_file_dir syn match cdrdaoconfIntegerDelimiter \ contained \ nextgroup=cdrdaoconfInteger \ skipwhite \ ':' syn match cdrdaoconfParanoiaModeDelimiter \ contained \ nextgroup=cdrdaoconfParanoiaMode \ skipwhite \ ':' syn match cdrdaoconfDriverDelimiter \ contained \ nextgroup=cdrdaoconfDriver \ skipwhite \ ':' syn match cdrdaoconfDeviceDelimiter \ contained \ nextgroup=cdrdaoconfDevice \ skipwhite \ ':' syn match cdrdaoconfPathDelimiter \ contained \ nextgroup=cdrdaoconfPath \ skipwhite \ ':' syn match cdrdaoconfInteger \ contained \ '\<\d\+\>' syn match cdrdaoParanoiaMode \ contained \ '[0123]' syn match cdrdaoconfDriver \ contained \ '\<\(cdd2600\|generic-mmc\%(-raw\)\=\|plextor\%(-scan\)\|ricoh-mp6200\|sony-cdu9\%(20\|48\)\|taiyo-yuden\|teac-cdr55\|toshiba\|yamaha-cdr10x\)\>' syn region cdrdaoconfDevice \ contained \ matchgroup=cdrdaoconfDevice \ start=+"+ \ end=+"+ syn region cdrdaoconfPath \ contained \ matchgroup=cdrdaoconfPath \ start=+"+ \ end=+"+ syn match cdrdaoconfComment \ contains=cdrdaoconfTodo,@Spell \ '^.*#.*$' hi def link cdrdaoconfTodo Todo hi def link cdrdaoconfComment Comment hi def link cdrdaoconfKeyword Keyword hi def link cdrdaoconfIntegerKeyword cdrdaoconfKeyword hi def link cdrdaoconfDriverKeyword cdrdaoconfKeyword hi def link cdrdaoconfDeviceKeyword cdrdaoconfKeyword hi def link cdrdaoconfPathKeyword cdrdaoconfKeyword hi def link cdrdaoconfDelimiter Delimiter hi def link cdrdaoconfIntegerDelimiter cdrdaoconfDelimiter hi def link cdrdaoconfDriverDelimiter cdrdaoconfDelimiter hi def link cdrdaoconfDeviceDelimiter cdrdaoconfDelimiter hi def link cdrdaoconfPathDelimiter cdrdaoconfDelimiter hi def link cdrdaoconfInteger Number hi def link cdrdaoconfParanoiaMode Number hi def link cdrdaoconfDriver Identifier hi def link cdrdaoconfDevice cdrdaoconfPath hi def link cdrdaoconfPath String let b:current_syntax = "cdrdaoconf" let &cpo = s:cpo_save unlet s:cpo_save PK!4P!!vim80/syntax/xml.vimnu[" Vim syntax file " Language: XML " Maintainer: Johannes Zellner " Author and previous maintainer: " Paul Siegmann " Last Change: 2013 Jun 07 " Filenames: *.xml " $Id: xml.vim,v 1.3 2006/04/11 21:32:00 vimboss Exp $ " CONFIGURATION: " syntax folding can be turned on by " " let g:xml_syntax_folding = 1 " " before the syntax file gets loaded (e.g. in ~/.vimrc). " This might slow down syntax highlighting significantly, " especially for large files. " " CREDITS: " The original version was derived by Paul Siegmann from " Claudio Fleiner's html.vim. " " REFERENCES: " [1] http://www.w3.org/TR/2000/REC-xml-20001006 " [2] http://www.w3.org/XML/1998/06/xmlspec-report-19980910.htm " " as pointed out according to reference [1] " " 2.3 Common Syntactic Constructs " [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender " [5] Name ::= (Letter | '_' | ':') (NameChar)* " " NOTE: " 1) empty tag delimiters "/>" inside attribute values (strings) " confuse syntax highlighting. " 2) for large files, folding can be pretty slow, especially when " loading a file the first time and viewoptions contains 'folds' " so that folds of previous sessions are applied. " Don't use 'foldmethod=syntax' in this case. " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:xml_cpo_save = &cpo set cpo&vim syn case match " mark illegal characters syn match xmlError "[<&]" " strings (inside tags) aka VALUES " " EXAMPLE: " " " ^^^^^^^ syn region xmlString contained start=+"+ end=+"+ contains=xmlEntity,@Spell display syn region xmlString contained start=+'+ end=+'+ contains=xmlEntity,@Spell display " punctuation (within attributes) e.g. " ^ ^ " syn match xmlAttribPunct +[-:._]+ contained display syn match xmlAttribPunct +[:.]+ contained display " no highlighting for xmlEqual (xmlEqual has no highlighting group) syn match xmlEqual +=+ display " attribute, everything before the '=' " " PROVIDES: @xmlAttribHook " " EXAMPLE: " " " ^^^^^^^^^^^^^ " syn match xmlAttrib \ +[-'"<]\@1\%(['">]\@!\|$\)+ \ contained \ contains=xmlAttribPunct,@xmlAttribHook \ display " namespace spec " " PROVIDES: @xmlNamespaceHook " " EXAMPLE: " " " ^^^ " if exists("g:xml_namespace_transparent") syn match xmlNamespace \ +\(<\|"':]\+[:]\@=+ \ contained \ contains=@xmlNamespaceHook \ transparent \ display else syn match xmlNamespace \ +\(<\|"':]\+[:]\@=+ \ contained \ contains=@xmlNamespaceHook \ display endif " tag name " " PROVIDES: @xmlTagHook " " EXAMPLE: " " " ^^^ " syn match xmlTagName \ +<\@1<=[^ /!?<>"']\++ \ contained \ contains=xmlNamespace,xmlAttribPunct,@xmlTagHook \ display if exists('g:xml_syntax_folding') " start tag " use matchgroup=xmlTag to skip over the leading '<' " " PROVIDES: @xmlStartTagHook " " EXAMPLE: " " " s^^^^^^^^^^^^^^^e " syn region xmlTag \ matchgroup=xmlTag start=+<[^ /!?<>"']\@=+ \ matchgroup=xmlTag end=+>+ \ contained \ contains=xmlError,xmlTagName,xmlAttrib,xmlEqual,xmlString,@xmlStartTagHook " highlight the end tag " " PROVIDES: @xmlTagHook " (should we provide a separate @xmlEndTagHook ?) " " EXAMPLE: " " " ^^^^^^ " syn match xmlEndTag \ +"']\+>+ \ contained \ contains=xmlNamespace,xmlAttribPunct,@xmlTagHook " tag elements with syntax-folding. " NOTE: NO HIGHLIGHTING -- highlighting is done by contained elements " " PROVIDES: @xmlRegionHook " " EXAMPLE: " " " " " " some data " " syn region xmlRegion \ start=+<\z([^ /!?<>"']\+\)+ \ skip=++ \ end=++ \ matchgroup=xmlEndTag end=+/>+ \ fold \ contains=xmlTag,xmlEndTag,xmlCdata,xmlRegion,xmlComment,xmlEntity,xmlProcessing,@xmlRegionHook,@Spell \ keepend \ extend else " no syntax folding: " - contained attribute removed " - xmlRegion not defined " syn region xmlTag \ matchgroup=xmlTag start=+<[^ /!?<>"']\@=+ \ matchgroup=xmlTag end=+>+ \ contains=xmlError,xmlTagName,xmlAttrib,xmlEqual,xmlString,@xmlStartTagHook syn match xmlEndTag \ +"']\+>+ \ contains=xmlNamespace,xmlAttribPunct,@xmlTagHook endif " &entities; compare with dtd syn match xmlEntity "&[^; \t]*;" contains=xmlEntityPunct syn match xmlEntityPunct contained "[&.;]" if exists('g:xml_syntax_folding') " The real comments (this implements the comments as defined by xml, " but not all xml pages actually conform to it. Errors are flagged. syn region xmlComment \ start=++ \ contains=xmlCommentStart,xmlCommentError \ extend \ fold else " no syntax folding: " - fold attribute removed " syn region xmlComment \ start=++ \ contains=xmlCommentStart,xmlCommentError \ extend endif syn match xmlCommentStart contained "+ \ contains=xmlCdataStart,xmlCdataEnd,@xmlCdataHook,@Spell \ keepend \ extend " using the following line instead leads to corrupt folding at CDATA regions " syn match xmlCdata ++ contains=xmlCdataStart,xmlCdataEnd,@xmlCdataHook syn match xmlCdataStart ++ contained " Processing instructions " This allows "?>" inside strings -- good idea? syn region xmlProcessing matchgroup=xmlProcessingDelim start="" contains=xmlAttrib,xmlEqual,xmlString if exists('g:xml_syntax_folding') " DTD -- we use dtd.vim here syn region xmlDocType matchgroup=xmlDocTypeDecl \ start="" \ fold \ contains=xmlDocTypeKeyword,xmlInlineDTD,xmlString else " no syntax folding: " - fold attribute removed " syn region xmlDocType matchgroup=xmlDocTypeDecl \ start="" \ contains=xmlDocTypeKeyword,xmlInlineDTD,xmlString endif syn keyword xmlDocTypeKeyword contained DOCTYPE PUBLIC SYSTEM syn region xmlInlineDTD contained matchgroup=xmlDocTypeDecl start="\[" end="]" contains=@xmlDTD syn include @xmlDTD :p:h/dtd.vim unlet b:current_syntax " synchronizing " TODO !!! to be improved !!! syn sync match xmlSyncDT grouphere xmlDocType +\_.\(+ if exists('g:xml_syntax_folding') syn sync match xmlSync grouphere xmlRegion +\_.\(<[^ /!?<>"']\+\)\@=+ " syn sync match xmlSync grouphere xmlRegion "<[^ /!?<>"']*>" syn sync match xmlSync groupthere xmlRegion +"']\+>+ endif syn sync minlines=100 " The default highlighting. hi def link xmlTodo Todo hi def link xmlTag Function hi def link xmlTagName Function hi def link xmlEndTag Identifier if !exists("g:xml_namespace_transparent") hi def link xmlNamespace Tag endif hi def link xmlEntity Statement hi def link xmlEntityPunct Type hi def link xmlAttribPunct Comment hi def link xmlAttrib Type hi def link xmlString String hi def link xmlComment Comment hi def link xmlCommentStart xmlComment hi def link xmlCommentPart Comment hi def link xmlCommentError Error hi def link xmlError Error hi def link xmlProcessingDelim Comment hi def link xmlProcessing Type hi def link xmlCdata String hi def link xmlCdataCdata Statement hi def link xmlCdataStart Type hi def link xmlCdataEnd Type hi def link xmlDocTypeDecl Function hi def link xmlDocTypeKeyword Statement hi def link xmlInlineDTD Function let b:current_syntax = "xml" let &cpo = s:xml_cpo_save unlet s:xml_cpo_save " vim: ts=8 PK! Bj" " vim80/syntax/sm.vimnu[" Vim syntax file " Language: sendmail " Maintainer: Charles E. Campbell " Last Change: Oct 25, 2016 " Version: 8 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SM if exists("b:current_syntax") finish endif " Comments syn match smComment "^#.*$" contains=@Spell " Definitions, Classes, Files, Options, Precedence, Trusted Users, Mailers syn match smDefine "^[CDF]." syn match smDefine "^O[AaBcdDeFfgHiLmNoQqrSsTtuvxXyYzZ]" syn match smDefine "^O\s"he=e-1 syn match smDefine "^M[a-zA-Z0-9]\+,"he=e-1 syn match smDefine "^T" nextgroup=smTrusted syn match smDefine "^P" nextgroup=smMesg syn match smTrusted "\S\+$" contained syn match smMesg "\S*="he=e-1 contained nextgroup=smPrecedence syn match smPrecedence "-\=[0-9]\+" contained " Header Format H?list-of-mailer-flags?name: format syn match smHeaderSep contained "[?:]" syn match smHeader "^H\(?[a-zA-Z]\+?\)\=[-a-zA-Z_]\+:" contains=smHeaderSep " Variables syn match smVar "\$[a-z\.\|]" " Rulesets syn match smRuleset "^S\d*" " Rewriting Rules syn match smRewrite "^R" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsUser syn match smRewriteLhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsSep syn match smRewriteLhsToken contained "\(\$[-*+]\|\$[-=][A-Za-z]\|\$Y\)\+" skipwhite nextgroup=smRewriteLhsUser,smRewriteLhsSep syn match smRewriteLhsSep contained "\t\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsUser syn match smRewriteRhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsSep syn match smRewriteRhsToken contained "\(\$\d\|\$>\d\|\$#\|\$@\|\$:[-_a-zA-Z]\+\|\$[[\]]\|\$@\|\$:\|\$[A-Za-z]\)\+" skipwhite nextgroup=smRewriteRhsUser,smRewriteRhsSep syn match smRewriteRhsSep contained "\t\+" skipwhite nextgroup=smRewriteComment,smRewriteRhsSep syn match smRewriteRhsSep contained "$" syn match smRewriteComment contained "[^\t$]*$" " Clauses syn match smClauseError "\$\." syn match smElse contained "\$|" syn match smClauseCont contained "^\t" syn region smClause matchgroup=Delimiter start="\$?." matchgroup=Delimiter end="\$\." contains=smElse,smClause,smVar,smClauseCont " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link smClause Special hi def link smClauseError Error hi def link smComment Comment hi def link smDefine Statement hi def link smElse Delimiter hi def link smHeader Statement hi def link smHeaderSep String hi def link smMesg Special hi def link smPrecedence Number hi def link smRewrite Statement hi def link smRewriteComment Comment hi def link smRewriteLhsToken String hi def link smRewriteLhsUser Statement hi def link smRewriteRhsToken String hi def link smRuleset Preproc hi def link smTrusted Special hi def link smVar String let b:current_syntax = "sm" " vim: ts=18 PK!< vim80/syntax/resolv.vimnu[" Vim syntax file " Language: resolver configuration file " Maintainer: Radu Dineiu " URL: https://raw.github.com/rid9/vim-resolv/master/resolv.vim " Last Change: 2013 May 21 " Version: 1.0 " " Credits: " David Necas (Yeti) " Stefano Zacchiroli " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Errors, comments and operators syn match resolvError /./ syn match resolvComment /\s*[#;].*$/ syn match resolvOperator /[\/:]/ contained " IP syn cluster resolvIPCluster contains=resolvIPError,resolvIPSpecial syn match resolvIPError /\%(\d\{4,}\|25[6-9]\|2[6-9]\d\|[3-9]\d\{2}\)[\.0-9]*/ contained syn match resolvIPSpecial /\%(127\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)/ contained " General syn match resolvIP contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}/ contains=@resolvIPCluster syn match resolvIPNetmask contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?/ contains=resolvOperator,@resolvIPCluster syn match resolvHostname contained /\w\{-}\.[-0-9A-Za-z_\.]*/ " Particular syn match resolvIPNameserver contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\s\|$\)\)\+/ contains=@resolvIPCluster syn match resolvHostnameSearch contained /\%(\%([-0-9A-Za-z_]\+\.\)*[-0-9A-Za-z_]\+\.\?\%(\s\|$\)\)\+/ syn match resolvIPNetmaskSortList contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?\%(\s\|$\)\)\+/ contains=resolvOperator,@resolvIPCluster " Identifiers syn match resolvNameserver /^\s*nameserver\>/ nextgroup=resolvIPNameserver skipwhite syn match resolvLwserver /^\s*lwserver\>/ nextgroup=resolvIPNameserver skipwhite syn match resolvDomain /^\s*domain\>/ nextgroup=resolvHostname skipwhite syn match resolvSearch /^\s*search\>/ nextgroup=resolvHostnameSearch skipwhite syn match resolvSortList /^\s*sortlist\>/ nextgroup=resolvIPNetmaskSortList skipwhite syn match resolvOptions /^\s*options\>/ nextgroup=resolvOption skipwhite " Options syn match resolvOption /\<\%(debug\|no_tld_query\|rotate\|no-check-names\|inet6\)\>/ contained nextgroup=resolvOption skipwhite syn match resolvOption /\<\%(ndots\|timeout\|attempts\):\d\+\>/ contained contains=resolvOperator nextgroup=resolvOption skipwhite " Additional errors syn match resolvError /^search .\{257,}/ hi def link resolvIP Number hi def link resolvIPNetmask Number hi def link resolvHostname String hi def link resolvOption String hi def link resolvIPNameserver Number hi def link resolvHostnameSearch String hi def link resolvIPNetmaskSortList Number hi def link resolvNameServer Identifier hi def link resolvLwserver Identifier hi def link resolvDomain Identifier hi def link resolvSearch Identifier hi def link resolvSortList Identifier hi def link resolvOptions Identifier hi def link resolvComment Comment hi def link resolvOperator Operator hi def link resolvError Error hi def link resolvIPError Error hi def link resolvIPSpecial Special let b:current_syntax = "resolv" " vim: ts=8 ft=vim PK!F<: : vim80/syntax/webmacro.vimnu[" WebMacro syntax file " Language: WebMacro " Maintainer: Claudio Fleiner " URL: http://www.fleiner.com/vim/syntax/webmacro.vim " Last Change: 2003 May 11 " webmacro is a nice little language that you should " check out if you use java servlets. " webmacro: http://www.webmacro.org " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if !exists("main_syntax") " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let main_syntax = 'webmacro' endif runtime! syntax/html.vim unlet b:current_syntax syn cluster htmlPreProc add=webmacroIf,webmacroUse,webmacroBraces,webmacroParse,webmacroInclude,webmacroSet,webmacroForeach,webmacroComment syn match webmacroVariable "\$[a-zA-Z0-9.()]*;\=" syn match webmacroNumber "[-+]\=\d\+[lL]\=" contained syn keyword webmacroBoolean true false contained syn match webmacroSpecial "\\." contained syn region webmacroString contained start=+"+ end=+"+ contains=webmacroSpecial,webmacroVariable syn region webmacroString contained start=+'+ end=+'+ contains=webmacroSpecial,webmacroVariable syn region webmacroList contained matchgroup=Structure start="\[" matchgroup=Structure end="\]" contains=webmacroString,webmacroVariable,webmacroNumber,webmacroBoolean,webmacroList syn region webmacroIf start="#if" start="#else" end="{"me=e-1 contains=webmacroVariable,webmacroNumber,webmacroString,webmacroBoolean,webmacroList nextgroup=webmacroBraces syn region webmacroForeach start="#foreach" end="{"me=e-1 contains=webmacroVariable,webmacroNumber,webmacroString,webmacroBoolean,webmacroList nextgroup=webmacroBraces syn match webmacroSet "#set .*$" contains=webmacroVariable,webmacroNumber,webmacroNumber,webmacroBoolean,webmacroString,webmacroList syn match webmacroInclude "#include .*$" contains=webmacroVariable,webmacroNumber,webmacroNumber,webmacroBoolean,webmacroString,webmacroList syn match webmacroParse "#parse .*$" contains=webmacroVariable,webmacroNumber,webmacroNumber,webmacroBoolean,webmacroString,webmacroList syn region webmacroUse matchgroup=PreProc start="#use .*" matchgroup=PreProc end="^-.*" contains=webmacroHash,@HtmlTop syn region webmacroBraces matchgroup=Structure start="{" matchgroup=Structure end="}" contained transparent syn match webmacroBracesError "[{}]" syn match webmacroComment "##.*$" syn match webmacroHash "[#{}\$]" contained " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link webmacroComment CommentTitle hi def link webmacroVariable PreProc hi def link webmacroIf webmacroStatement hi def link webmacroForeach webmacroStatement hi def link webmacroSet webmacroStatement hi def link webmacroInclude webmacroStatement hi def link webmacroParse webmacroStatement hi def link webmacroStatement Function hi def link webmacroNumber Number hi def link webmacroBoolean Boolean hi def link webmacroSpecial Special hi def link webmacroString String hi def link webmacroBracesError Error let b:current_syntax = "webmacro" if main_syntax == 'webmacro' unlet main_syntax endif PK! d3<3<vim80/syntax/pine.vimnu[" Vim syntax file " Language: Pine (email program) run commands " Maintainer: David Pascoe " Last Change: Thu Feb 27 10:18:48 WST 2003, update for pine 4.53 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,_,128-167,224-235,- syn keyword pineConfig addrbook-sort-rule syn keyword pineConfig address-book syn keyword pineConfig addressbook-formats syn keyword pineConfig alt-addresses syn keyword pineConfig bugs-additional-data syn keyword pineConfig bugs-address syn keyword pineConfig bugs-fullname syn keyword pineConfig character-set syn keyword pineConfig color-style syn keyword pineConfig compose-mime syn keyword pineConfig composer-wrap-column syn keyword pineConfig current-indexline-style syn keyword pineConfig cursor-style syn keyword pineConfig customized-hdrs syn keyword pineConfig debug-memory syn keyword pineConfig default-composer-hdrs syn keyword pineConfig default-fcc syn keyword pineConfig default-saved-msg-folder syn keyword pineConfig disable-these-authenticators syn keyword pineConfig disable-these-drivers syn keyword pineConfig display-filters syn keyword pineConfig download-command syn keyword pineConfig download-command-prefix syn keyword pineConfig editor syn keyword pineConfig elm-style-save syn keyword pineConfig empty-header-message syn keyword pineConfig fcc-name-rule syn keyword pineConfig feature-level syn keyword pineConfig feature-list syn keyword pineConfig file-directory syn keyword pineConfig folder-collections syn keyword pineConfig folder-extension syn keyword pineConfig folder-sort-rule syn keyword pineConfig font-char-set syn keyword pineConfig font-name syn keyword pineConfig font-size syn keyword pineConfig font-style syn keyword pineConfig forced-abook-entry syn keyword pineConfig form-letter-folder syn keyword pineConfig global-address-book syn keyword pineConfig goto-default-rule syn keyword pineConfig header-in-reply syn keyword pineConfig image-viewer syn keyword pineConfig inbox-path syn keyword pineConfig incoming-archive-folders syn keyword pineConfig incoming-folders syn keyword pineConfig incoming-startup-rule syn keyword pineConfig index-answered-background-color syn keyword pineConfig index-answered-foreground-color syn keyword pineConfig index-deleted-background-color syn keyword pineConfig index-deleted-foreground-color syn keyword pineConfig index-format syn keyword pineConfig index-important-background-color syn keyword pineConfig index-important-foreground-color syn keyword pineConfig index-new-background-color syn keyword pineConfig index-new-foreground-color syn keyword pineConfig index-recent-background-color syn keyword pineConfig index-recent-foreground-color syn keyword pineConfig index-to-me-background-color syn keyword pineConfig index-to-me-foreground-color syn keyword pineConfig index-unseen-background-color syn keyword pineConfig index-unseen-foreground-color syn keyword pineConfig initial-keystroke-list syn keyword pineConfig kblock-passwd-count syn keyword pineConfig keylabel-background-color syn keyword pineConfig keylabel-foreground-color syn keyword pineConfig keyname-background-color syn keyword pineConfig keyname-foreground-color syn keyword pineConfig last-time-prune-questioned syn keyword pineConfig last-version-used syn keyword pineConfig ldap-servers syn keyword pineConfig literal-signature syn keyword pineConfig local-address syn keyword pineConfig local-fullname syn keyword pineConfig mail-check-interval syn keyword pineConfig mail-directory syn keyword pineConfig mailcap-search-path syn keyword pineConfig mimetype-search-path syn keyword pineConfig new-version-threshold syn keyword pineConfig news-active-file-path syn keyword pineConfig news-collections syn keyword pineConfig news-spool-directory syn keyword pineConfig newsrc-path syn keyword pineConfig nntp-server syn keyword pineConfig normal-background-color syn keyword pineConfig normal-foreground-color syn keyword pineConfig old-style-reply syn keyword pineConfig operating-dir syn keyword pineConfig patterns syn keyword pineConfig patterns-filters syn keyword pineConfig patterns-filters2 syn keyword pineConfig patterns-indexcolors syn keyword pineConfig patterns-other syn keyword pineConfig patterns-roles syn keyword pineConfig patterns-scores syn keyword pineConfig patterns-scores2 syn keyword pineConfig personal-name syn keyword pineConfig personal-print-category syn keyword pineConfig personal-print-command syn keyword pineConfig postponed-folder syn keyword pineConfig print-font-char-set syn keyword pineConfig print-font-name syn keyword pineConfig print-font-size syn keyword pineConfig print-font-style syn keyword pineConfig printer syn keyword pineConfig prompt-background-color syn keyword pineConfig prompt-foreground-color syn keyword pineConfig pruned-folders syn keyword pineConfig pruning-rule syn keyword pineConfig quote1-background-color syn keyword pineConfig quote1-foreground-color syn keyword pineConfig quote2-background-color syn keyword pineConfig quote2-foreground-color syn keyword pineConfig quote3-background-color syn keyword pineConfig quote3-foreground-color syn keyword pineConfig read-message-folder syn keyword pineConfig remote-abook-history syn keyword pineConfig remote-abook-metafile syn keyword pineConfig remote-abook-validity syn keyword pineConfig reply-indent-string syn keyword pineConfig reply-leadin syn keyword pineConfig reverse-background-color syn keyword pineConfig reverse-foreground-color syn keyword pineConfig rsh-command syn keyword pineConfig rsh-open-timeout syn keyword pineConfig rsh-path syn keyword pineConfig save-by-sender syn keyword pineConfig saved-msg-name-rule syn keyword pineConfig scroll-margin syn keyword pineConfig selectable-item-background-color syn keyword pineConfig selectable-item-foreground-color syn keyword pineConfig sending-filters syn keyword pineConfig sendmail-path syn keyword pineConfig show-all-characters syn keyword pineConfig signature-file syn keyword pineConfig smtp-server syn keyword pineConfig sort-key syn keyword pineConfig speller syn keyword pineConfig ssh-command syn keyword pineConfig ssh-open-timeout syn keyword pineConfig ssh-path syn keyword pineConfig standard-printer syn keyword pineConfig status-background-color syn keyword pineConfig status-foreground-color syn keyword pineConfig status-message-delay syn keyword pineConfig suggest-address syn keyword pineConfig suggest-fullname syn keyword pineConfig tcp-open-timeout syn keyword pineConfig tcp-query-timeout syn keyword pineConfig tcp-read-warning-timeout syn keyword pineConfig tcp-write-warning-timeout syn keyword pineConfig threading-display-style syn keyword pineConfig threading-expanded-character syn keyword pineConfig threading-index-style syn keyword pineConfig threading-indicator-character syn keyword pineConfig threading-lastreply-character syn keyword pineConfig title-background-color syn keyword pineConfig title-foreground-color syn keyword pineConfig titlebar-color-style syn keyword pineConfig upload-command syn keyword pineConfig upload-command-prefix syn keyword pineConfig url-viewers syn keyword pineConfig use-only-domain-name syn keyword pineConfig user-domain syn keyword pineConfig user-id syn keyword pineConfig user-id syn keyword pineConfig user-input-timeout syn keyword pineConfig viewer-hdr-colors syn keyword pineConfig viewer-hdrs syn keyword pineConfig viewer-overlap syn keyword pineConfig window-position syn keyword pineOption allow-changing-from syn keyword pineOption allow-talk syn keyword pineOption alternate-compose-menu syn keyword pineOption assume-slow-link syn keyword pineOption auto-move-read-msgs syn keyword pineOption auto-open-next-unread syn keyword pineOption auto-unzoom-after-apply syn keyword pineOption auto-zoom-after-select syn keyword pineOption cache-remote-pinerc syn keyword pineOption check-newmail-when-quitting syn keyword pineOption combined-addrbook-display syn keyword pineOption combined-folder-display syn keyword pineOption combined-subdirectory-display syn keyword pineOption compose-cut-from-cursor syn keyword pineOption compose-maps-delete-key-to-ctrl-d syn keyword pineOption compose-rejects-unqualified-addrs syn keyword pineOption compose-send-offers-first-filter syn keyword pineOption compose-sets-newsgroup-without-confirm syn keyword pineOption confirm-role-even-for-default syn keyword pineOption continue-tab-without-confirm syn keyword pineOption delete-skips-deleted syn keyword pineOption disable-2022-jp-conversions syn keyword pineOption disable-busy-alarm syn keyword pineOption disable-charset-conversions syn keyword pineOption disable-config-cmd syn keyword pineOption disable-keyboard-lock-cmd syn keyword pineOption disable-keymenu syn keyword pineOption disable-password-caching syn keyword pineOption disable-password-cmd syn keyword pineOption disable-pipes-in-sigs syn keyword pineOption disable-pipes-in-templates syn keyword pineOption disable-roles-setup-cmd syn keyword pineOption disable-roles-sig-edit syn keyword pineOption disable-roles-template-edit syn keyword pineOption disable-sender syn keyword pineOption disable-shared-namespaces syn keyword pineOption disable-signature-edit-cmd syn keyword pineOption disable-take-last-comma-first syn keyword pineOption enable-8bit-esmtp-negotiation syn keyword pineOption enable-8bit-nntp-posting syn keyword pineOption enable-aggregate-command-set syn keyword pineOption enable-alternate-editor-cmd syn keyword pineOption enable-alternate-editor-implicitly syn keyword pineOption enable-arrow-navigation syn keyword pineOption enable-arrow-navigation-relaxed syn keyword pineOption enable-background-sending syn keyword pineOption enable-bounce-cmd syn keyword pineOption enable-cruise-mode syn keyword pineOption enable-cruise-mode-delete syn keyword pineOption enable-delivery-status-notification syn keyword pineOption enable-dot-files syn keyword pineOption enable-dot-folders syn keyword pineOption enable-exit-via-lessthan-command syn keyword pineOption enable-fast-recent-test syn keyword pineOption enable-flag-cmd syn keyword pineOption enable-flag-screen-implicitly syn keyword pineOption enable-full-header-and-text syn keyword pineOption enable-full-header-cmd syn keyword pineOption enable-goto-in-file-browser syn keyword pineOption enable-incoming-folders syn keyword pineOption enable-jump-shortcut syn keyword pineOption enable-lame-list-mode syn keyword pineOption enable-mail-check-cue syn keyword pineOption enable-mailcap-param-substitution syn keyword pineOption enable-mouse-in-xterm syn keyword pineOption enable-msg-view-addresses syn keyword pineOption enable-msg-view-attachments syn keyword pineOption enable-msg-view-forced-arrows syn keyword pineOption enable-msg-view-urls syn keyword pineOption enable-msg-view-web-hostnames syn keyword pineOption enable-newmail-in-xterm-icon syn keyword pineOption enable-partial-match-lists syn keyword pineOption enable-print-via-y-command syn keyword pineOption enable-reply-indent-string-editing syn keyword pineOption enable-rules-under-take syn keyword pineOption enable-search-and-replace syn keyword pineOption enable-sigdashes syn keyword pineOption enable-suspend syn keyword pineOption enable-tab-completion syn keyword pineOption enable-take-export syn keyword pineOption enable-tray-icon syn keyword pineOption enable-unix-pipe-cmd syn keyword pineOption enable-verbose-smtp-posting syn keyword pineOption expanded-view-of-addressbooks syn keyword pineOption expanded-view-of-distribution-lists syn keyword pineOption expanded-view-of-folders syn keyword pineOption expose-hidden-config syn keyword pineOption expunge-only-manually syn keyword pineOption expunge-without-confirm syn keyword pineOption expunge-without-confirm-everywhere syn keyword pineOption fcc-on-bounce syn keyword pineOption fcc-only-without-confirm syn keyword pineOption fcc-without-attachments syn keyword pineOption include-attachments-in-reply syn keyword pineOption include-header-in-reply syn keyword pineOption include-text-in-reply syn keyword pineOption ldap-result-to-addrbook-add syn keyword pineOption mark-fcc-seen syn keyword pineOption mark-for-cc syn keyword pineOption news-approximates-new-status syn keyword pineOption news-deletes-across-groups syn keyword pineOption news-offers-catchup-on-close syn keyword pineOption news-post-without-validation syn keyword pineOption news-read-in-newsrc-order syn keyword pineOption next-thread-without-confirm syn keyword pineOption old-growth syn keyword pineOption pass-control-characters-as-is syn keyword pineOption prefer-plain-text syn keyword pineOption preserve-start-stop-characters syn keyword pineOption print-formfeed-between-messages syn keyword pineOption print-includes-from-line syn keyword pineOption print-index-enabled syn keyword pineOption print-offers-custom-cmd-prompt syn keyword pineOption quell-attachment-extra-prompt syn keyword pineOption quell-berkeley-format-timezone syn keyword pineOption quell-content-id syn keyword pineOption quell-dead-letter-on-cancel syn keyword pineOption quell-empty-directories syn keyword pineOption quell-extra-post-prompt syn keyword pineOption quell-folder-internal-msg syn keyword pineOption quell-imap-envelope-update syn keyword pineOption quell-lock-failure-warnings syn keyword pineOption quell-maildomain-warning syn keyword pineOption quell-news-envelope-update syn keyword pineOption quell-partial-fetching syn keyword pineOption quell-ssl-largeblocks syn keyword pineOption quell-status-message-beeping syn keyword pineOption quell-timezone-comment-when-sending syn keyword pineOption quell-user-lookup-in-passwd-file syn keyword pineOption quit-without-confirm syn keyword pineOption reply-always-uses-reply-to syn keyword pineOption save-aggregates-copy-sequence syn keyword pineOption save-will-advance syn keyword pineOption save-will-not-delete syn keyword pineOption save-will-quote-leading-froms syn keyword pineOption scramble-message-id syn keyword pineOption select-without-confirm syn keyword pineOption selectable-item-nobold syn keyword pineOption separate-folder-and-directory-entries syn keyword pineOption show-cursor syn keyword pineOption show-plain-text-internally syn keyword pineOption show-selected-in-boldface syn keyword pineOption signature-at-bottom syn keyword pineOption single-column-folder-list syn keyword pineOption slash-collapses-entire-thread syn keyword pineOption spell-check-before-sending syn keyword pineOption store-window-position-in-config syn keyword pineOption strip-from-sigdashes-on-reply syn keyword pineOption tab-visits-next-new-message-only syn keyword pineOption termdef-takes-precedence syn keyword pineOption thread-index-shows-important-color syn keyword pineOption try-alternative-authentication-driver-first syn keyword pineOption unselect-will-not-advance syn keyword pineOption use-current-dir syn keyword pineOption use-function-keys syn keyword pineOption use-sender-not-x-sender syn keyword pineOption use-subshell-for-suspend syn keyword pineOption vertical-folder-list syn match pineComment "^#.*$" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link pineConfig Type hi def link pineComment Comment hi def link pineOption Macro let b:current_syntax = "pine" " vim: ts=8 PK!5TWaavim80/syntax/fvwm.vimnu[" Vim syntax file for Fvwm-2.5.22 " Language: Fvwm{1,2} configuration file " Maintainer: Gautam Iyer " Previous Maintainer: Haakon Riiser " Last Change: Sat 29 Sep 2007 11:08:34 AM PDT " " Thanks to David Necas (Yeti) for adding Fvwm 2.4 support. " " 2006-05-09 gi1242: Rewrote fvwm2 syntax completely. Also since fvwm1 is now " mostly obsolete, made the syntax file pick fvwm2 syntax by default. if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim " Fvwm configuration files are case insensitive syn case ignore " Identifiers in Fvwm can contain most characters, so we only " include the most common ones here. setlocal iskeyword=_,-,+,.,a-z,A-Z,48-57 " Syntax items common to fvwm1 and fvwm2 config files syn cluster fvwmConstants contains=fvwmEnvVar,fvwmNumber syn match fvwmEnvVar "\$\w\+" syn match fvwmNumber '\v<(\d+|0x[0-9a-f]+)>' syn match fvwmModConf nextgroup=fvwmModArg "\v^\s*\*\a+" syn region fvwmModArg contained contains=fvwmString,fvwmRGBValue \ start='.' skip='\\$' end='$' syn region fvwmString contains=fvwmBackslash start='"' \ matchgroup=fvwmBackslash skip='\v\\"' end='"' syn region fvwmString contains=fvwmBackslash start='`' \ matchgroup=fvwmBackslash skip='\v\\`' end='`' syn region fvwmString contains=fvwmBackslash start="'" \ matchgroup=fvwmBackslash skip="\v\\'" end="'" syn match fvwmBackslash contained '\\[^"'`]' syn match fvwmRGBValue "#\x\{3}" syn match fvwmRGBValue "#\x\{6}" syn match fvwmRGBValue "#\x\{9}" syn match fvwmRGBValue "#\x\{12}" syn match fvwmRGBValue "rgb:\x\{1,4}/\x\{1,4}/\x\{1,4}" syn region fvwmComment contains=@Spell \ start='^\s*#\s' skip='\\$' end='$' syn region fvwmComment start="\v^\s*#(\S|$)" skip='\\$' end='$' if (exists("b:fvwm_version") && b:fvwm_version == 1) \ || (exists("use_fvwm_1") && use_fvwm_1) " " Syntax highlighting for Fvwm1 files. " " Moved from common syntax items syn match fvwmModule "\' syn match fvwmGradient contained '\v<[HVDBSCRY]Gradient>' " Styles syn keyword fvwmKeyword nextgroup=fvwmStyleArgs skipwhite \ Style WindowStyle syn region fvwmStyleArgs contained transparent contains=fvwmStyleNames,@fvwmConstants,fvwmString,fvwmRGBValue \ start='.' skip='\\$' end='$' syn keyword fvwmStyleNames contained \ BorderWidth HandleWidth NoIcon Icon MiniIcon \ IconBox IconGrid IconFill IconSize NoTitle \ Title TitleAtBottom TitleAtLeft TitleAtRight \ TitleAtTop LeftTitleRotatedCW \ LeftTitleRotatedCCW RightTitleRotatedCCW \ RightTitleRotatedCW TopTitleRotated \ TopTitleNotRotated BottomTitleRotated \ BottomTitleNotRotated UseTitleDecorRotation \ StippledTitle StippledTitleOff \ IndexedWindowName ExactWindowName \ IndexedIconName ExactIconName Borders \ NoHandles Handles WindowListSkip \ WindowListHit CirculateSkip CirculateHit \ CirculateSkipShaded CirculateHitShaded Layer \ StaysOnTop StaysOnBottom StaysPut Sticky \ Slippery StickyAcrossPages StickyAcrossDesks \ StartIconic StartNormal Color ForeColor \ BackColor Colorset HilightFore HilightBack \ HilightColorset BorderColorset \ HilightBorderColorset IconTitleColorset \ HilightIconTitleColorset \ IconBackgroundColorset IconTitleRelief \ IconBackgroundRelief IconBackgroundPadding \ Font IconFont StartsOnDesk StartsOnPage \ StartsAnyWhere StartsOnScreen \ ManualPlacementHonorsStartsOnPage \ ManualPlacementIgnoresStartsOnPage \ CaptureHonorsStartsOnPage \ CaptureIgnoresStartsOnPage \ RecaptureHonorsStartsOnPage \ RecaptureIgnoresStartsOnPage \ StartsOnPageIncludesTransients \ StartsOnPageIgnoresTransients IconTitle \ NoIconTitle MwmButtons FvwmButtons MwmBorder \ FvwmBorder MwmDecor NoDecorHint MwmFunctions \ NoFuncHint HintOverride NoOverride NoButton \ Button ResizeHintOverride NoResizeOverride \ OLDecor NoOLDecor GNOMEUseHints \ GNOMEIgnoreHints StickyIcon SlipperyIcon \ StickyAcrossPagesIcon StickyAcrossDesksIcon \ ManualPlacement CascadePlacement \ MinOverlapPlacement \ MinOverlapPercentPlacement \ TileManualPlacement TileCascadePlacement \ MinOverlapPlacementPenalties \ MinOverlapPercentPlacementPenalties \ DecorateTransient NakedTransient \ DontRaiseTransient RaiseTransient \ DontLowerTransient LowerTransient \ DontStackTransientParent \ StackTransientParent SkipMapping ShowMapping \ ScatterWindowGroups KeepWindowGroupsOnDesk \ UseDecor UseStyle NoPPosition UsePPosition \ NoUSPosition UseUSPosition \ NoTransientPPosition UseTransientPPosition \ NoTransientUSPosition UseTransientUSPosition \ NoIconPosition UseIconPosition Lenience \ NoLenience ClickToFocus SloppyFocus \ MouseFocus FocusFollowsMouse NeverFocus \ ClickToFocusPassesClickOff \ ClickToFocusPassesClick \ ClickToFocusRaisesOff ClickToFocusRaises \ MouseFocusClickRaises \ MouseFocusClickRaisesOff GrabFocus \ GrabFocusOff GrabFocusTransientOff \ GrabFocusTransient FPFocusClickButtons \ FPFocusClickModifiers \ FPSortWindowlistByFocus FPClickRaisesFocused \ FPClickDecorRaisesFocused \ FPClickIconRaisesFocused \ FPClickRaisesUnfocused \ FPClickDecorRaisesUnfocused \ FPClickIconRaisesUnfocused FPClickToFocus \ FPClickDecorToFocus FPClickIconToFocus \ FPEnterToFocus FPLeaveToUnfocus \ FPFocusByProgram FPFocusByFunction \ FPFocusByFunctionWarpPointer FPLenient \ FPPassFocusClick FPPassRaiseClick \ FPIgnoreFocusClickMotion \ FPIgnoreRaiseClickMotion \ FPAllowFocusClickFunction \ FPAllowRaiseClickFunction FPGrabFocus \ FPGrabFocusTransient FPOverrideGrabFocus \ FPReleaseFocus FPReleaseFocusTransient \ FPOverrideReleaseFocus StartsLowered \ StartsRaised IgnoreRestack AllowRestack \ FixedPosition VariablePosition \ FixedUSPosition VariableUSPosition \ FixedPPosition VariablePPosition FixedSize \ VariableSize FixedUSSize VariableUSSize \ FixedPSize VariablePSize Closable \ Iconifiable Maximizable \ AllowMaximizeFixedSize IconOverride \ NoIconOverride NoActiveIconOverride \ DepressableBorder FirmBorder MaxWindowSize \ IconifyWindowGroups IconifyWindowGroupsOff \ ResizeOpaque ResizeOutline BackingStore \ BackingStoreOff BackingStoreWindowDefault \ Opacity ParentalRelativity SaveUnder \ SaveUnderOff WindowShadeShrinks \ WindowShadeScrolls WindowShadeSteps \ WindowShadeAlwaysLazy WindowShadeBusy \ WindowShadeLazy EWMHDonateIcon \ EWMHDontDonateIcon EWMHDonateMiniIcon \ EWMHDontDonateMiniIcon EWMHMiniIconOverride \ EWMHNoMiniIconOverride \ EWMHUseStackingOrderHints \ EWMHIgnoreStackingOrderHints \ EWMHIgnoreStateHints EWMHUseStateHints \ EWMHIgnoreStrutHints EWMHIgnoreWindowType \ EWMHUseStrutHints \ EWMHMaximizeIgnoreWorkingArea \ EWMHMaximizeUseWorkingArea \ EWMHMaximizeUseDynamicWorkingArea \ EWMHPlacementIgnoreWorkingArea \ EWMHPlacementUseWorkingArea \ EWMHPlacementUseDynamicWorkingArea \ MoveByProgramMethod Unmanaged State \ StippledIconTitle StickyStippledTitle \ StickyStippledIconTitle \ PositionPlacement \ UnderMousePlacementHonorsStartsOnPage \ UnderMousePlacementIgnoresStartsOnPage \ MinOverlapPlacementPenalties \ MinOverlapPercentPlacementPenalties \ MinWindowSize StartShaded " Cursor styles syn keyword fvwmKeyword nextgroup=fvwmCursorStyle skipwhite \ CursorStyle syn case match syn keyword fvwmCursorStyle contained \ POSITION TITLE DEFAULT SYS MOVE RESIZE WAIT \ MENU SELECT DESTROY TOP RIGHT BOTTOM LEFT \ TOP_LEFT TOP_RIGHT BOTTOM_LEFT BOTTOM_RIGHT \ TOP_EDGE RIGHT_EDGE BOTTOM_EDGE LEFT_EDGE \ ROOT STROKE syn case ignore " Menu style syn keyword fvwmKeyword nextgroup=fvwmMStyleArgs skipwhite \ MenuStyle syn region fvwmMStyleArgs contained transparent contains=fvwmMStyleNames,@fvwmConstants,fvwmString,fvwmGradient,fvwmRGBValue \ start='.' skip='\\$' end='$' syn keyword fvwmMStyleNames contained \ Fvwm Mwm Win BorderWidth Foreground \ Background Greyed HilightBack HilightBackOff \ ActiveFore ActiveForeOff MenuColorset \ ActiveColorset GreyedColorset Hilight3DThick \ Hilight3DThin Hilight3DOff \ Hilight3DThickness Animation AnimationOff \ Font MenuFace PopupDelay PopupOffset \ TitleWarp TitleWarpOff TitleUnderlines0 \ TitleUnderlines1 TitleUnderlines2 \ SeparatorsLong SeparatorsShort \ TrianglesSolid TrianglesRelief \ PopupImmediately PopupDelayed \ PopdownImmediately PopdownDelayed \ PopupActiveArea DoubleClickTime SidePic \ SideColor PopupAsRootMenu PopupAsSubmenu \ PopupIgnore PopupClose RemoveSubmenus \ HoldSubmenus SubmenusRight SubmenusLeft \ SelectOnRelease ItemFormat \ VerticalItemSpacing VerticalTitleSpacing \ AutomaticHotkeys AutomaticHotkeysOff \ TitleFont TitleColorset HilightTitleBack " Button style syn keyword fvwmKeyword nextgroup=fvwmBNum skipwhite \ ButtonStyle AddButtonStyle syn match fvwmBNum contained \ nextgroup=fvwmBState,fvwmBStyleArgs skipwhite \ '\v<([0-9]|All|Left|Right|Reset)>' syn keyword fvwmBState contained nextgroup=fvwmBStyleArgs skipwhite \ ActiveUp ActiveDown InactiveUp InactiveDown \ Active Inactive ToggledActiveUp \ ToggledActiveDown ToggledInactiveUp \ ToggledInactiveDown ToggledActive \ ToggledInactive AllNormal AllToggled \ AllActive AllInactive AllUp AllDown syn region fvwmBStyleArgs contained contains=fvwmBStyleFlags,fvwmBStyleNames,fvwmGradient,fvwmRGBValue,@fvwmConstants,fvwmString \ start='\S' skip='\\$' end='$' syn keyword fvwmBStyleNames contained \ Simple Default Solid Colorset Vector Pixmap \ AdjustedPixmap ShrunkPixmap StretchedPixmap \ TiledPixmap MiniIcon syn keyword fvwmBStyleFlags contained \ Raised Sunk Flat UseTitleStyle \ UseBorderStyle " Border style syn keyword fvwmKeyword skipwhite nextgroup=fvwmBdState,fvwmBdStyleArgs \ BorderStyle syn keyword fvwmBdState contained skipwhite nextgroup=fvwmBdStyleArgs \ Active Inactive syn region fvwmBdStyleArgs contained contains=fvwmBdStyNames,fvwmBdStyFlags \ start='\S' skip='\\$' end='$' syn keyword fvwmBdStyNames contained \ TiledPixmap Colorset syn keyword fvwmBdStyFlags contained \ HiddenHandles NoInset Raised Sunk Flat " Title styles syn keyword fvwmKeyword skipwhite nextgroup=fvwmTState,fvwmTStyleArgs \ TitleStyle AddTitleStyle syn keyword fvwmTState contained skipwhite nextgroup=fvwmTStyleArgs \ ActiveUp ActiveDown InactiveUp InactiveDown \ Active Inactive ToggledActiveUp \ ToggledActiveDown ToggledInactiveUp \ ToggledInactiveDown ToggledActive \ ToggledInactive AllNormal AllToggled \ AllActive AllInactive AllUp AllDown syn region fvwmTStyleArgs contained contains=fvwmBStyleNames,fvwmTStyleNames,fvwmMPmapNames,fvwmTStyleFlags,fvwmGradient,fvwmRGBValue,@fvwmConstants \ start='\S' skip='\\$' end='$' syn keyword fvwmTStyleNames contained \ MultiPixmap syn keyword fvwmTStyleNames contained \ LeftJustified Centered RightJustified Height \ MinHeight syn keyword fvwmMPmapNames contained \ Main LeftMain RightMain UnderText LeftOfText \ RightOfText LeftEnd RightEnd Buttons \ LeftButtons RightButtons syn keyword fvwmTStyleFlags contained \ Raised Flat Sunk " Button state syn keyword fvwmKeyword nextgroup=fvwmBStateArgs \ ButtonState syn region fvwmBStateArgs contained contains=fvwmBStateTF,fvwmBStateNames \ start='.' skip='\\$' end='$' syn keyword fvwmBStateNames contained ActiveDown Inactive InactiveDown syn keyword fvwmBStateTF contained True False " Paths syn keyword fvwmKeyword nextgroup=fvwmPath skipwhite \ IconPath ImagePath LocalePath PixmapPath \ ModulePath syn match fvwmPath contained contains=fvwmEnvVar '\v.+$' " Window list command syn keyword fvwmKeyword nextgroup=fvwmWLArgs skipwhite \ WindowList syn region fvwmWLArgs contained \ contains=fvwmCondition,@fvwmConstants,fvwmString,fvwmWLOpts \ start='.' skip='\\$' end='$' syn keyword fvwmWLOpts contained \ Geometry NoGeometry NoGeometryWithInfo \ NoDeskNum NoNumInDeskTitle \ NoCurrentDeskTitle MaxLabelWidth width \ TitleForAllDesks Function funcname Desk \ desknum CurrentDesk NoIcons Icons OnlyIcons \ NoNormal Normal OnlyNormal NoSticky Sticky \ OnlySticky NoStickyAcrossPages \ StickyAcrossPages OnlyStickyAcrossPages \ NoStickyAcrossDesks StickyAcrossDesks \ OnlyStickyAcrossDesks NoOnTop OnTop \ OnlyOnTop NoOnBottom OnBottom OnlyOnBottom \ Layer UseListSkip OnlyListSkip NoDeskSort \ ReverseOrder CurrentAtEnd IconifiedAtEnd \ UseIconName Alphabetic NotAlphabetic \ SortByResource SortByClass NoHotkeys \ SelectOnRelease syn keyword fvwmSpecialFn StartFunction InitFunction RestartFunction \ ExitFunction SessionInitFunction \ SessionRestartFunction SessionExitFunction \ MissingSubmenuFunction WindowListFunc syn keyword fvwmKeyword skipwhite nextgroup=fvwmKeyWin,fvwmKeyName \ Key PointerKey syn region fvwmKeyWin contained skipwhite nextgroup=fvwmKeyName \ start='(' end=')' syn case match syn match fvwmKeyName contained skipwhite nextgroup=fvwmKeyContext \ '\v<([a-zA-Z0-9]|F\d+|KP_\d)>' syn keyword fvwmKeyName contained skipwhite nextgroup=fvwmKeyContext \ BackSpace Begin Break Cancel Clear Delete \ Down End Escape Execute Find Help Home \ Insert KP_Add KP_Begin KP_Decimal KP_Delete \ KP_Divide KP_Down KP_End KP_Enter KP_Equal \ KP_Home KP_Insert KP_Left KP_Multiply \ KP_Next KP_Page_Down KP_Page_Up KP_Prior \ KP_Right KP_Separator KP_Space KP_Subtract \ KP_Tab KP_Up Left Linefeed Menu Mode_switch \ Next Num_Lock Page_Down Page_Up Pause Print \ Prior Redo Return Right script_switch \ Scroll_Lock Select Sys_Req Tab Undo Up space \ exclam quotedbl numbersign dollar percent \ ampersand apostrophe quoteright parenleft \ parenright asterisk plus comma minus period \ slash colon semicolon less equal greater \ question at bracketleft backslash \ bracketright asciicircum underscore grave \ quoteleft braceleft bar braceright \ asciitilde syn match fvwmKeyContext contained skipwhite nextgroup=fvwmKeyMods \ '\v<[][RWDTS_F<^>vI0-9AM-]+>' syn match fvwmKeyMods contained '\v[NCSMLA1-5]+' syn case ignore syn keyword fvwmKeyword skipwhite nextgroup=fvwmMouseWin,fvwmMouseButton \ Mouse syn region fvwmMouseWin contained skipwhite nextgroup=fvwmMouseButton \ start='(' end=')' syn match fvwmMouseButton contained skipwhite nextgroup=fvwmKeyContext \ '[0-5]' endif " Define syntax highlighting groups " " Common highlighting groups " hi def link fvwmComment Comment hi def link fvwmEnvVar Macro hi def link fvwmNumber Number hi def link fvwmKeyword Keyword hi def link fvwmPath Constant hi def link fvwmModConf Macro hi def link fvwmRGBValue Constant hi def link fvwmString String hi def link fvwmBackslash SpecialChar " " Highlighting groups for fvwm1 specific items " hi def link fvwmExec fvwmKeyword hi def link fvwmKey fvwmKeyword hi def link fvwmModule fvwmKeyword hi def link fvwmFunction Function " " Highlighting groups for fvwm2 specific items " hi def link fvwmSpecialFn Type hi def link fvwmCursorStyle fvwmStyleNames hi def link fvwmStyleNames Identifier hi def link fvwmMStyleNames fvwmStyleNames hi def link fvwmCSNames fvwmStyleNames hi def link fvwmGradient fvwmStyleNames hi def link fvwmCondNames fvwmStyleNames hi def link fvwmTCNames fvwmStyleNames hi def link fvwmTRNames fvwmStyleNames hi def link fvwmWLOpts fvwmStyleNames hi def link fvwmBNum Number hi def link fvwmBState Type hi def link fvwmBStyleNames fvwmStyleNames hi def link fvwmBStyleFlags Special hi def link fvwmBStateTF Constant hi def link fvwmBStateNames fvwmStyleNames hi def link fvwmBdState fvwmBState hi def link fvwmBdStyNames fvwmStyleNames hi def link fvwmBdStyFlags fvwmBStyleFlags hi def link fvwmTState fvwmBState hi def link fvwmTStyleNames fvwmStyleNames hi def link fvwmMPmapNames fvwmBStyleFlags hi def link fvwmTStyleFlags fvwmBStyleFlags hi def link fvwmDirection fvwmBStyleFlags hi def link fvwmKeyWin Constant hi def link fvwmMouseWin fvwmKeyWin hi def link fvwmKeyName Special hi def link fvwmKeyContext fvwmKeyName hi def link fvwmKeyMods fvwmKeyName hi def link fvwmMouseButton fvwmKeyName hi def link fvwmMenuString String hi def link fvwmIcon Type hi def link fvwmShortcutKey SpecialChar hi def link fvwmModuleName Function let b:current_syntax = "fvwm" let &cpo = s:keepcpo unlet s:keepcpo PK!,aCvim80/syntax/lisp.vimnu[" Vim syntax file " Language: Lisp " Maintainer: Charles E. Campbell " Last Change: Feb 15, 2018 " Version: 27 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_LISP " " Thanks to F Xavier Noria for a list of 978 Common Lisp symbols taken from HyperSpec " Clisp additions courtesy of http://clisp.cvs.sourceforge.net/*checkout*/clisp/clisp/emacs/lisp.vim " --------------------------------------------------------------------- " Load Once: {{{1 if exists("b:current_syntax") finish endif if exists("g:lisp_isk") exe "setl isk=".g:lisp_isk elseif !has("patch-7.4.1142") setl isk=38,42,43,45,47-58,60-62,64-90,97-122,_ else syn iskeyword 38,42,43,45,47-58,60-62,64-90,97-122,_ endif if exists("g:lispsyntax_ignorecase") || exists("g:lispsyntax_clisp") set ignorecase endif " --------------------------------------------------------------------- " Clusters: {{{1 syn cluster lispAtomCluster contains=lispAtomBarSymbol,lispAtomList,lispAtomNmbr0,lispComment,lispDecl,lispFunc,lispLeadWhite syn cluster lispBaseListCluster contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispEscapeSpecial,lispSymbol,lispVar,lispLeadWhite if exists("g:lisp_instring") syn cluster lispListCluster contains=@lispBaseListCluster,lispString,lispInString,lispInStringString else syn cluster lispListCluster contains=@lispBaseListCluster,lispString endif syn case ignore " --------------------------------------------------------------------- " Lists: {{{1 syn match lispSymbol contained ![^()'`,"; \t]\+! syn match lispBarSymbol contained !|..\{-}|! if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 syn region lispParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen1 syn region lispParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen2 syn region lispParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen3 syn region lispParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen4 syn region lispParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen5 syn region lispParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen6 syn region lispParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen7 syn region lispParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen8 syn region lispParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen9 syn region lispParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen0 else syn region lispList matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=@lispListCluster syn region lispBQList matchgroup=PreProc start="`(" skip="|.\{-}|" matchgroup=PreProc end=")" contains=@lispListCluster endif " --------------------------------------------------------------------- " Atoms: {{{1 syn match lispAtomMark "'" syn match lispAtom "'("me=e-1 contains=lispAtomMark nextgroup=lispAtomList syn match lispAtom "'[^ \t()]\+" contains=lispAtomMark syn match lispAtomBarSymbol !'|..\{-}|! contains=lispAtomMark syn region lispAtom start=+'"+ skip=+\\"+ end=+"+ syn region lispAtomList contained matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contains=@lispAtomCluster,lispString,lispEscapeSpecial syn match lispAtomNmbr contained "\<\d\+" syn match lispLeadWhite contained "^\s\+" " --------------------------------------------------------------------- " Standard Lisp Functions and Macros: {{{1 syn keyword lispFunc < find-method pprint-indent syn keyword lispFunc <= find-package pprint-linear syn keyword lispFunc = find-restart pprint-logical-block syn keyword lispFunc > find-symbol pprint-newline syn keyword lispFunc >= finish-output pprint-pop syn keyword lispFunc - first pprint-tab syn keyword lispFunc / fixnum pprint-tabular syn keyword lispFunc /= flet prin1 syn keyword lispFunc // float prin1-to-string syn keyword lispFunc /// float-digits princ syn keyword lispFunc * floating-point-inexact princ-to-string syn keyword lispFunc ** floating-point-invalid-operation print syn keyword lispFunc *** floating-point-overflow print-not-readable syn keyword lispFunc + floating-point-underflow print-not-readable-object syn keyword lispFunc ++ floatp print-object syn keyword lispFunc +++ float-precision print-unreadable-object syn keyword lispFunc 1- float-radix probe-file syn keyword lispFunc 1+ float-sign proclaim syn keyword lispFunc abort floor prog syn keyword lispFunc abs fmakunbound prog* syn keyword lispFunc access force-output prog1 syn keyword lispFunc acons format prog2 syn keyword lispFunc acos formatter progn syn keyword lispFunc acosh fourth program-error syn keyword lispFunc add-method fresh-line progv syn keyword lispFunc adjoin fround provide syn keyword lispFunc adjustable-array-p ftruncate psetf syn keyword lispFunc adjust-array ftype psetq syn keyword lispFunc allocate-instance funcall push syn keyword lispFunc alpha-char-p function pushnew syn keyword lispFunc alphanumericp function-keywords putprop syn keyword lispFunc and function-lambda-expression quote syn keyword lispFunc append functionp random syn keyword lispFunc apply gbitp random-state syn keyword lispFunc applyhook gcd random-state-p syn keyword lispFunc apropos generic-function rassoc syn keyword lispFunc apropos-list gensym rassoc-if syn keyword lispFunc aref gentemp rassoc-if-not syn keyword lispFunc arithmetic-error get ratio syn keyword lispFunc arithmetic-error-operands get-decoded-time rational syn keyword lispFunc arithmetic-error-operation get-dispatch-macro-character rationalize syn keyword lispFunc array getf rationalp syn keyword lispFunc array-dimension gethash read syn keyword lispFunc array-dimension-limit get-internal-real-time read-byte syn keyword lispFunc array-dimensions get-internal-run-time read-char syn keyword lispFunc array-displacement get-macro-character read-char-no-hang syn keyword lispFunc array-element-type get-output-stream-string read-delimited-list syn keyword lispFunc array-has-fill-pointer-p get-properties reader-error syn keyword lispFunc array-in-bounds-p get-setf-expansion read-eval-print syn keyword lispFunc arrayp get-setf-method read-from-string syn keyword lispFunc array-rank get-universal-time read-line syn keyword lispFunc array-rank-limit go read-preserving-whitespace syn keyword lispFunc array-row-major-index graphic-char-p read-sequence syn keyword lispFunc array-total-size handler-bind readtable syn keyword lispFunc array-total-size-limit handler-case readtable-case syn keyword lispFunc ash hash-table readtablep syn keyword lispFunc asin hash-table-count real syn keyword lispFunc asinh hash-table-p realp syn keyword lispFunc assert hash-table-rehash-size realpart syn keyword lispFunc assoc hash-table-rehash-threshold reduce syn keyword lispFunc assoc-if hash-table-size reinitialize-instance syn keyword lispFunc assoc-if-not hash-table-test rem syn keyword lispFunc atan host-namestring remf syn keyword lispFunc atanh identity remhash syn keyword lispFunc atom if remove syn keyword lispFunc base-char if-exists remove-duplicates syn keyword lispFunc base-string ignorable remove-if syn keyword lispFunc bignum ignore remove-if-not syn keyword lispFunc bit ignore-errors remove-method syn keyword lispFunc bit-and imagpart remprop syn keyword lispFunc bit-andc1 import rename-file syn keyword lispFunc bit-andc2 incf rename-package syn keyword lispFunc bit-eqv initialize-instance replace syn keyword lispFunc bit-ior inline require syn keyword lispFunc bit-nand in-package rest syn keyword lispFunc bit-nor in-package restart syn keyword lispFunc bit-not input-stream-p restart-bind syn keyword lispFunc bit-orc1 inspect restart-case syn keyword lispFunc bit-orc2 int-char restart-name syn keyword lispFunc bit-vector integer return syn keyword lispFunc bit-vector-p integer-decode-float return-from syn keyword lispFunc bit-xor integer-length revappend syn keyword lispFunc block integerp reverse syn keyword lispFunc boole interactive-stream-p room syn keyword lispFunc boole-1 intern rotatef syn keyword lispFunc boole-2 internal-time-units-per-second round syn keyword lispFunc boolean intersection row-major-aref syn keyword lispFunc boole-and invalid-method-error rplaca syn keyword lispFunc boole-andc1 invoke-debugger rplacd syn keyword lispFunc boole-andc2 invoke-restart safety syn keyword lispFunc boole-c1 invoke-restart-interactively satisfies syn keyword lispFunc boole-c2 isqrt sbit syn keyword lispFunc boole-clr keyword scale-float syn keyword lispFunc boole-eqv keywordp schar syn keyword lispFunc boole-ior labels search syn keyword lispFunc boole-nand lambda second syn keyword lispFunc boole-nor lambda-list-keywords sequence syn keyword lispFunc boole-orc1 lambda-parameters-limit serious-condition syn keyword lispFunc boole-orc2 last set syn keyword lispFunc boole-set lcm set-char-bit syn keyword lispFunc boole-xor ldb set-difference syn keyword lispFunc both-case-p ldb-test set-dispatch-macro-character syn keyword lispFunc boundp ldiff set-exclusive-or syn keyword lispFunc break least-negative-double-float setf syn keyword lispFunc broadcast-stream least-negative-long-float set-macro-character syn keyword lispFunc broadcast-stream-streams least-negative-normalized-double-float set-pprint-dispatch syn keyword lispFunc built-in-class least-negative-normalized-long-float setq syn keyword lispFunc butlast least-negative-normalized-short-float set-syntax-from-char syn keyword lispFunc byte least-negative-normalized-single-float seventh syn keyword lispFunc byte-position least-negative-short-float shadow syn keyword lispFunc byte-size least-negative-single-float shadowing-import syn keyword lispFunc call-arguments-limit least-positive-double-float shared-initialize syn keyword lispFunc call-method least-positive-long-float shiftf syn keyword lispFunc call-next-method least-positive-normalized-double-float short-float syn keyword lispFunc capitalize least-positive-normalized-long-float short-float-epsilon syn keyword lispFunc car least-positive-normalized-short-float short-float-negative-epsilon syn keyword lispFunc case least-positive-normalized-single-float short-site-name syn keyword lispFunc catch least-positive-short-float signal syn keyword lispFunc ccase least-positive-single-float signed-byte syn keyword lispFunc cdr length signum syn keyword lispFunc ceiling let simple-array syn keyword lispFunc cell-error let* simple-base-string syn keyword lispFunc cell-error-name lisp simple-bit-vector syn keyword lispFunc cerror lisp-implementation-type simple-bit-vector-p syn keyword lispFunc change-class lisp-implementation-version simple-condition syn keyword lispFunc char list simple-condition-format-arguments syn keyword lispFunc char< list* simple-condition-format-control syn keyword lispFunc char<= list-all-packages simple-error syn keyword lispFunc char= listen simple-string syn keyword lispFunc char> list-length simple-string-p syn keyword lispFunc char>= listp simple-type-error syn keyword lispFunc char/= load simple-vector syn keyword lispFunc character load-logical-pathname-translations simple-vector-p syn keyword lispFunc characterp load-time-value simple-warning syn keyword lispFunc char-bit locally sin syn keyword lispFunc char-bits log single-flaot-epsilon syn keyword lispFunc char-bits-limit logand single-float syn keyword lispFunc char-code logandc1 single-float-epsilon syn keyword lispFunc char-code-limit logandc2 single-float-negative-epsilon syn keyword lispFunc char-control-bit logbitp sinh syn keyword lispFunc char-downcase logcount sixth syn keyword lispFunc char-equal logeqv sleep syn keyword lispFunc char-font logical-pathname slot-boundp syn keyword lispFunc char-font-limit logical-pathname-translations slot-exists-p syn keyword lispFunc char-greaterp logior slot-makunbound syn keyword lispFunc char-hyper-bit lognand slot-missing syn keyword lispFunc char-int lognor slot-unbound syn keyword lispFunc char-lessp lognot slot-value syn keyword lispFunc char-meta-bit logorc1 software-type syn keyword lispFunc char-name logorc2 software-version syn keyword lispFunc char-not-equal logtest some syn keyword lispFunc char-not-greaterp logxor sort syn keyword lispFunc char-not-lessp long-float space syn keyword lispFunc char-super-bit long-float-epsilon special syn keyword lispFunc char-upcase long-float-negative-epsilon special-form-p syn keyword lispFunc check-type long-site-name special-operator-p syn keyword lispFunc cis loop speed syn keyword lispFunc class loop-finish sqrt syn keyword lispFunc class-name lower-case-p stable-sort syn keyword lispFunc class-of machine-instance standard syn keyword lispFunc clear-input machine-type standard-char syn keyword lispFunc clear-output machine-version standard-char-p syn keyword lispFunc close macroexpand standard-class syn keyword lispFunc clrhash macroexpand-1 standard-generic-function syn keyword lispFunc code-char macroexpand-l standard-method syn keyword lispFunc coerce macro-function standard-object syn keyword lispFunc commonp macrolet step syn keyword lispFunc compilation-speed make-array storage-condition syn keyword lispFunc compile make-array store-value syn keyword lispFunc compiled-function make-broadcast-stream stream syn keyword lispFunc compiled-function-p make-char stream-element-type syn keyword lispFunc compile-file make-concatenated-stream stream-error syn keyword lispFunc compile-file-pathname make-condition stream-error-stream syn keyword lispFunc compiler-let make-dispatch-macro-character stream-external-format syn keyword lispFunc compiler-macro make-echo-stream streamp syn keyword lispFunc compiler-macro-function make-hash-table streamup syn keyword lispFunc complement make-instance string syn keyword lispFunc complex make-instances-obsolete string< syn keyword lispFunc complexp make-list string<= syn keyword lispFunc compute-applicable-methods make-load-form string= syn keyword lispFunc compute-restarts make-load-form-saving-slots string> syn keyword lispFunc concatenate make-method string>= syn keyword lispFunc concatenated-stream make-package string/= syn keyword lispFunc concatenated-stream-streams make-pathname string-capitalize syn keyword lispFunc cond make-random-state string-char syn keyword lispFunc condition make-sequence string-char-p syn keyword lispFunc conjugate make-string string-downcase syn keyword lispFunc cons make-string-input-stream string-equal syn keyword lispFunc consp make-string-output-stream string-greaterp syn keyword lispFunc constantly make-symbol string-left-trim syn keyword lispFunc constantp make-synonym-stream string-lessp syn keyword lispFunc continue make-two-way-stream string-not-equal syn keyword lispFunc control-error makunbound string-not-greaterp syn keyword lispFunc copy-alist map string-not-lessp syn keyword lispFunc copy-list mapc stringp syn keyword lispFunc copy-pprint-dispatch mapcan string-right-strim syn keyword lispFunc copy-readtable mapcar string-right-trim syn keyword lispFunc copy-seq mapcon string-stream syn keyword lispFunc copy-structure maphash string-trim syn keyword lispFunc copy-symbol map-into string-upcase syn keyword lispFunc copy-tree mapl structure syn keyword lispFunc cos maplist structure-class syn keyword lispFunc cosh mask-field structure-object syn keyword lispFunc count max style-warning syn keyword lispFunc count-if member sublim syn keyword lispFunc count-if-not member-if sublis syn keyword lispFunc ctypecase member-if-not subseq syn keyword lispFunc debug merge subsetp syn keyword lispFunc decf merge-pathname subst syn keyword lispFunc declaim merge-pathnames subst-if syn keyword lispFunc declaration method subst-if-not syn keyword lispFunc declare method-combination substitute syn keyword lispFunc decode-float method-combination-error substitute-if syn keyword lispFunc decode-universal-time method-qualifiers substitute-if-not syn keyword lispFunc defclass min subtypep syn keyword lispFunc defconstant minusp svref syn keyword lispFunc defgeneric mismatch sxhash syn keyword lispFunc define-compiler-macro mod symbol syn keyword lispFunc define-condition most-negative-double-float symbol-function syn keyword lispFunc define-method-combination most-negative-fixnum symbol-macrolet syn keyword lispFunc define-modify-macro most-negative-long-float symbol-name syn keyword lispFunc define-setf-expander most-negative-short-float symbolp syn keyword lispFunc define-setf-method most-negative-single-float symbol-package syn keyword lispFunc define-symbol-macro most-positive-double-float symbol-plist syn keyword lispFunc defmacro most-positive-fixnum symbol-value syn keyword lispFunc defmethod most-positive-long-float synonym-stream syn keyword lispFunc defpackage most-positive-short-float synonym-stream-symbol syn keyword lispFunc defparameter most-positive-single-float sys syn keyword lispFunc defsetf muffle-warning system syn keyword lispFunc defstruct multiple-value-bind t syn keyword lispFunc deftype multiple-value-call tagbody syn keyword lispFunc defun multiple-value-list tailp syn keyword lispFunc defvar multiple-value-prog1 tan syn keyword lispFunc delete multiple-value-seteq tanh syn keyword lispFunc delete-duplicates multiple-value-setq tenth syn keyword lispFunc delete-file multiple-values-limit terpri syn keyword lispFunc delete-if name-char the syn keyword lispFunc delete-if-not namestring third syn keyword lispFunc delete-package nbutlast throw syn keyword lispFunc denominator nconc time syn keyword lispFunc deposit-field next-method-p trace syn keyword lispFunc describe nil translate-logical-pathname syn keyword lispFunc describe-object nintersection translate-pathname syn keyword lispFunc destructuring-bind ninth tree-equal syn keyword lispFunc digit-char no-applicable-method truename syn keyword lispFunc digit-char-p no-next-method truncase syn keyword lispFunc directory not truncate syn keyword lispFunc directory-namestring notany two-way-stream syn keyword lispFunc disassemble notevery two-way-stream-input-stream syn keyword lispFunc division-by-zero notinline two-way-stream-output-stream syn keyword lispFunc do nreconc type syn keyword lispFunc do* nreverse typecase syn keyword lispFunc do-all-symbols nset-difference type-error syn keyword lispFunc documentation nset-exclusive-or type-error-datum syn keyword lispFunc do-exeternal-symbols nstring type-error-expected-type syn keyword lispFunc do-external-symbols nstring-capitalize type-of syn keyword lispFunc dolist nstring-downcase typep syn keyword lispFunc do-symbols nstring-upcase unbound-slot syn keyword lispFunc dotimes nsublis unbound-slot-instance syn keyword lispFunc double-float nsubst unbound-variable syn keyword lispFunc double-float-epsilon nsubst-if undefined-function syn keyword lispFunc double-float-negative-epsilon nsubst-if-not unexport syn keyword lispFunc dpb nsubstitute unintern syn keyword lispFunc dribble nsubstitute-if union syn keyword lispFunc dynamic-extent nsubstitute-if-not unless syn keyword lispFunc ecase nth unread syn keyword lispFunc echo-stream nthcdr unread-char syn keyword lispFunc echo-stream-input-stream nth-value unsigned-byte syn keyword lispFunc echo-stream-output-stream null untrace syn keyword lispFunc ed number unuse-package syn keyword lispFunc eighth numberp unwind-protect syn keyword lispFunc elt numerator update-instance-for-different-class syn keyword lispFunc encode-universal-time nunion update-instance-for-redefined-class syn keyword lispFunc end-of-file oddp upgraded-array-element-type syn keyword lispFunc endp open upgraded-complex-part-type syn keyword lispFunc enough-namestring open-stream-p upper-case-p syn keyword lispFunc ensure-directories-exist optimize use-package syn keyword lispFunc ensure-generic-function or user syn keyword lispFunc eq otherwise user-homedir-pathname syn keyword lispFunc eql output-stream-p use-value syn keyword lispFunc equal package values syn keyword lispFunc equalp package-error values-list syn keyword lispFunc error package-error-package variable syn keyword lispFunc etypecase package-name vector syn keyword lispFunc eval package-nicknames vectorp syn keyword lispFunc evalhook packagep vector-pop syn keyword lispFunc eval-when package-shadowing-symbols vector-push syn keyword lispFunc evenp package-used-by-list vector-push-extend syn keyword lispFunc every package-use-list warn syn keyword lispFunc exp pairlis warning syn keyword lispFunc export parse-error when syn keyword lispFunc expt parse-integer wild-pathname-p syn keyword lispFunc extended-char parse-namestring with-accessors syn keyword lispFunc fboundp pathname with-compilation-unit syn keyword lispFunc fceiling pathname-device with-condition-restarts syn keyword lispFunc fdefinition pathname-directory with-hash-table-iterator syn keyword lispFunc ffloor pathname-host with-input-from-string syn keyword lispFunc fifth pathname-match-p with-open-file syn keyword lispFunc file-author pathname-name with-open-stream syn keyword lispFunc file-error pathnamep with-output-to-string syn keyword lispFunc file-error-pathname pathname-type with-package-iterator syn keyword lispFunc file-length pathname-version with-simple-restart syn keyword lispFunc file-namestring peek-char with-slots syn keyword lispFunc file-position phase with-standard-io-syntax syn keyword lispFunc file-stream pi write syn keyword lispFunc file-string-length plusp write-byte syn keyword lispFunc file-write-date pop write-char syn keyword lispFunc fill position write-line syn keyword lispFunc fill-pointer position-if write-sequence syn keyword lispFunc find position-if-not write-string syn keyword lispFunc find-all-symbols pprint write-to-string syn keyword lispFunc find-class pprint-dispatch yes-or-no-p syn keyword lispFunc find-if pprint-exit-if-list-exhausted y-or-n-p syn keyword lispFunc find-if-not pprint-fill zerop syn match lispFunc "\" if exists("g:lispsyntax_clisp") " CLISP FFI: syn match lispFunc "\<\(ffi:\)\?with-c-\(place\|var\)\>" syn match lispFunc "\<\(ffi:\)\?with-foreign-\(object\|string\)\>" syn match lispFunc "\<\(ffi:\)\?default-foreign-\(language\|library\)\>" syn match lispFunc "\<\([us]_\?\)\?\(element\|deref\|cast\|slot\|validp\)\>" syn match lispFunc "\<\(ffi:\)\?set-foreign-pointer\>" syn match lispFunc "\<\(ffi:\)\?allocate-\(deep\|shallow\)\>" syn match lispFunc "\<\(ffi:\)\?c-lines\>" syn match lispFunc "\<\(ffi:\)\?foreign-\(value\|free\|variable\|function\|object\)\>" syn match lispFunc "\<\(ffi:\)\?foreign-address\(-null\|unsigned\)\?\>" syn match lispFunc "\<\(ffi:\)\?undigned-foreign-address\>" syn match lispFunc "\<\(ffi:\)\?c-var-\(address\|object\)\>" syn match lispFunc "\<\(ffi:\)\?typeof\>" syn match lispFunc "\<\(ffi:\)\?\(bit\)\?sizeof\>" " CLISP Macros, functions et al: syn match lispFunc "\<\(ext:\)\?with-collect\>" syn match lispFunc "\<\(ext:\)\?letf\*\?\>" syn match lispFunc "\<\(ext:\)\?finalize\>\>" syn match lispFunc "\<\(ext:\)\?memoized\>" syn match lispFunc "\<\(ext:\)\?getenv\>" syn match lispFunc "\<\(ext:\)\?convert-string-\(to\|from\)-bytes\>" syn match lispFunc "\<\(ext:\)\?ethe\>" syn match lispFunc "\<\(ext:\)\?with-gensyms\>" syn match lispFunc "\<\(ext:\)\?open-http\>" syn match lispFunc "\<\(ext:\)\?string-concat\>" syn match lispFunc "\<\(ext:\)\?with-http-\(in\|out\)put\>" syn match lispFunc "\<\(ext:\)\?with-html-output\>" syn match lispFunc "\<\(ext:\)\?expand-form\>" syn match lispFunc "\<\(ext:\)\?\(without-\)\?package-lock\>" syn match lispFunc "\<\(ext:\)\?re-export\>" syn match lispFunc "\<\(ext:\)\?saveinitmem\>" syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(integer\|float\)\>" syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(char\|byte\)-sequence\>" syn match lispFunc "\<\(custom:\)\?\*system-package-list\*\>" syn match lispFunc "\<\(custom:\)\?\*ansi\*\>" endif " --------------------------------------------------------------------- " Lisp Keywords (modifiers): {{{1 syn keyword lispKey :abort :from-end :overwrite syn keyword lispKey :adjustable :gensym :predicate syn keyword lispKey :append :host :preserve-whitespace syn keyword lispKey :array :if-does-not-exist :pretty syn keyword lispKey :base :if-exists :print syn keyword lispKey :case :include :print-function syn keyword lispKey :circle :index :probe syn keyword lispKey :conc-name :inherited :radix syn keyword lispKey :constructor :initial-contents :read-only syn keyword lispKey :copier :initial-element :rehash-size syn keyword lispKey :count :initial-offset :rehash-threshold syn keyword lispKey :create :initial-value :rename syn keyword lispKey :default :input :rename-and-delete syn keyword lispKey :defaults :internal :size syn keyword lispKey :device :io :start syn keyword lispKey :direction :junk-allowed :start1 syn keyword lispKey :directory :key :start2 syn keyword lispKey :displaced-index-offset :length :stream syn keyword lispKey :displaced-to :level :supersede syn keyword lispKey :element-type :name :test syn keyword lispKey :end :named :test-not syn keyword lispKey :end1 :new-version :type syn keyword lispKey :end2 :nicknames :use syn keyword lispKey :error :output :verbose syn keyword lispKey :escape :output-file :version syn keyword lispKey :external " defpackage arguments syn keyword lispKey :documentation :shadowing-import-from :modern :export syn keyword lispKey :case-sensitive :case-inverted :shadow :import-from :intern " lambda list keywords syn keyword lispKey &allow-other-keys &aux &body syn keyword lispKey &environment &key &optional &rest &whole " make-array argument syn keyword lispKey :fill-pointer " readtable-case values syn keyword lispKey :upcase :downcase :preserve :invert " eval-when situations syn keyword lispKey :load-toplevel :compile-toplevel :execute " ANSI Extended LOOP: syn keyword lispKey :while :until :for :do :if :then :else :when :unless :in syn keyword lispKey :across :finally :collect :nconc :maximize :minimize :sum syn keyword lispKey :and :with :initially :append :into :count :end :repeat syn keyword lispKey :always :never :thereis :from :to :upto :downto :below syn keyword lispKey :above :by :on :being :each :the :hash-key :hash-keys syn keyword lispKey :hash-value :hash-values :using :of-type :upfrom :downfrom if exists("g:lispsyntax_clisp") " CLISP FFI: syn keyword lispKey :arguments :return-type :library :full :malloc-free syn keyword lispKey :none :alloca :in :out :in-out :stdc-stdcall :stdc :c syn keyword lispKey :language :built-in :typedef :external syn keyword lispKey :fini :init-once :init-always endif " --------------------------------------------------------------------- " Standard Lisp Variables: {{{1 syn keyword lispVar *applyhook* *load-pathname* *print-pprint-dispatch* syn keyword lispVar *break-on-signals* *load-print* *print-pprint-dispatch* syn keyword lispVar *break-on-signals* *load-truename* *print-pretty* syn keyword lispVar *break-on-warnings* *load-verbose* *print-radix* syn keyword lispVar *compile-file-pathname* *macroexpand-hook* *print-readably* syn keyword lispVar *compile-file-pathname* *modules* *print-right-margin* syn keyword lispVar *compile-file-truename* *package* *print-right-margin* syn keyword lispVar *compile-file-truename* *print-array* *query-io* syn keyword lispVar *compile-print* *print-base* *random-state* syn keyword lispVar *compile-verbose* *print-case* *read-base* syn keyword lispVar *compile-verbose* *print-circle* *read-default-float-format* syn keyword lispVar *debug-io* *print-escape* *read-eval* syn keyword lispVar *debugger-hook* *print-gensym* *read-suppress* syn keyword lispVar *default-pathname-defaults* *print-length* *readtable* syn keyword lispVar *error-output* *print-level* *standard-input* syn keyword lispVar *evalhook* *print-lines* *standard-output* syn keyword lispVar *features* *print-miser-width* *terminal-io* syn keyword lispVar *gensym-counter* *print-miser-width* *trace-output* " --------------------------------------------------------------------- " Strings: {{{1 syn region lispString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell if exists("g:lisp_instring") syn region lispInString keepend matchgroup=Delimiter start=+"(+rs=s+1 skip=+|.\{-}|+ matchgroup=Delimiter end=+)"+ contains=@lispBaseListCluster,lispInStringString syn region lispInStringString start=+\\"+ skip=+\\\\+ end=+\\"+ contained endif " --------------------------------------------------------------------- " Shared with Xlisp, Declarations, Macros, Functions: {{{1 syn keyword lispDecl defmacro do-all-symbols labels syn keyword lispDecl defsetf do-external-symbols let syn keyword lispDecl deftype do-symbols locally syn keyword lispDecl defun dotimes macrolet syn keyword lispDecl do* flet multiple-value-bind if exists("g:lispsyntax_clisp") " CLISP FFI: syn match lispDecl "\<\(ffi:\)\?def-c-\(var\|const\|enum\|type\|struct\)\>" syn match lispDecl "\<\(ffi:\)\?def-call-\(out\|in\)\>" syn match lispDecl "\<\(ffi:\)\?c-\(function\|struct\|pointer\|string\)\>" syn match lispDecl "\<\(ffi:\)\?c-ptr\(-null\)\?\>" syn match lispDecl "\<\(ffi:\)\?c-array\(-ptr\|-max\)\?\>" syn match lispDecl "\<\(ffi:\)\?[us]\?\(char\|short\|int\|long\)\>" syn match lispDecl "\<\(win32:\|w32\)\?d\?word\>" syn match lispDecl "\<\([us]_\?\)\?int\(8\|16\|32\|64\)\(_t\)\?\>" syn keyword lispDecl size_t off_t time_t handle endif " --------------------------------------------------------------------- " Numbers: supporting integers and floating point numbers {{{1 syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\([dDeEfFlL][-+]\=\d\+\)\=" syn match lispNumber "-\=\(\d\+/\d\+\)" syn match lispEscapeSpecial "\*\w[a-z_0-9-]*\*" syn match lispEscapeSpecial !#|[^()'`,"; \t]\+|#! syn match lispEscapeSpecial !#x\x\+! syn match lispEscapeSpecial !#o\o\+! syn match lispEscapeSpecial !#b[01]\+! syn match lispEscapeSpecial !#\\[ -}\~]! syn match lispEscapeSpecial !#[':][^()'`,"; \t]\+! syn match lispEscapeSpecial !#([^()'`,"; \t]\+)! syn match lispEscapeSpecial !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)! syn match lispEscapeSpecial "\<+[a-zA-Z_][a-zA-Z_0-9-]*+\>" syn match lispConcat "\s\.\s" syn match lispParenError ")" " --------------------------------------------------------------------- " Comments: {{{1 syn cluster lispCommentGroup contains=lispTodo,@Spell syn match lispComment ";.*$" contains=@lispCommentGroup syn region lispCommentRegion start="#|" end="|#" contains=lispCommentRegion,@lispCommentGroup syn keyword lispTodo contained combak combak: todo todo: " --------------------------------------------------------------------- " Synchronization: {{{1 syn sync lines=100 " --------------------------------------------------------------------- " Define Highlighting: {{{1 if !exists("skip_lisp_syntax_inits") hi def link lispCommentRegion lispComment hi def link lispAtomNmbr lispNumber hi def link lispAtomMark lispMark hi def link lispInStringString lispString hi def link lispAtom Identifier hi def link lispAtomBarSymbol Special hi def link lispBarSymbol Special hi def link lispComment Comment hi def link lispConcat Statement hi def link lispDecl Statement hi def link lispFunc Statement hi def link lispKey Type hi def link lispMark Delimiter hi def link lispNumber Number hi def link lispParenError Error hi def link lispEscapeSpecial Type hi def link lispString String hi def link lispTodo Todo hi def link lispVar Statement if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 if &bg == "dark" hi def hlLevel0 ctermfg=red guifg=red1 hi def hlLevel1 ctermfg=yellow guifg=orange1 hi def hlLevel2 ctermfg=green guifg=yellow1 hi def hlLevel3 ctermfg=cyan guifg=greenyellow hi def hlLevel4 ctermfg=magenta guifg=green1 hi def hlLevel5 ctermfg=red guifg=springgreen1 hi def hlLevel6 ctermfg=yellow guifg=cyan1 hi def hlLevel7 ctermfg=green guifg=slateblue1 hi def hlLevel8 ctermfg=cyan guifg=magenta1 hi def hlLevel9 ctermfg=magenta guifg=purple1 else hi def hlLevel0 ctermfg=red guifg=red3 hi def hlLevel1 ctermfg=darkyellow guifg=orangered3 hi def hlLevel2 ctermfg=darkgreen guifg=orange2 hi def hlLevel3 ctermfg=blue guifg=yellow3 hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4 hi def hlLevel5 ctermfg=red guifg=green4 hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3 hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4 hi def hlLevel8 ctermfg=blue guifg=darkslateblue hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet endif endif endif let b:current_syntax = "lisp" " --------------------------------------------------------------------- " vim: ts=8 nowrap fdm=marker PK!QS33vim80/syntax/pli.vimnu[" Vim syntax file " Modified from http://plnet.org/files/vim/ " using keywords from http://www.kednos.com/pli/docs/reference_manual/6291pro_contents.html " 2012-11-13 Alan Thompson " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " Todo. syn keyword pl1Todo TODO FIXME XXX DEBUG NOTE " pl1CommentGroup allows adding matches for special things in comments " 20010723az: Added this so that these could be matched in comments... syn cluster pl1CommentGroup contains=pl1Todo syn match pl1Garbage "[^ \t()]" syn match pl1Identifier "[a-z][a-z0-9$_#]*" syn match pl1HostIdentifier ":[a-z][a-z0-9$_#]*" " 20010723az: When wanted, highlight the trailing whitespace -- this is " based on c_space_errors if exists("c_space_errors") if !exists("c_no_trail_space_error") syn match pl1SpaceError "\s\+$" endif if !exists("c_no_tab_space_error") syn match pl1SpaceError " \+\t"me=e-1 endif endif " Symbols. syn match pl1Symbol "\(;\|,\|\.\)" syn match pl1PreProcSym "%" " Operators. syn match pl1Operator "\(&\|:\|!\|+\|-\|\*\|/\|=\|<\|>\|@\|\*\*\|!=\|\~=\)" syn match pl1Operator "\(\^\|\^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\"\)" " Attributes syn keyword pl1Attribute BACKWARDS BUFFERED BUF CONNECTED CONN CONSTANT EVENT syn keyword pl1Attribute EXCLUSIVE EXCL FORMAT GENERIC IRREDUCIBLE IRRED LOCAL syn keyword pl1Attribute REDUCIBLE RED TASK TRANSIENT UNBUFFERED UNBUF ALIGNED ANY syn keyword pl1Attribute AREA AUTOMATIC AUTO BASED BUILTIN CONDITION COND CONTROLLED syn keyword pl1Attribute CTL DEFINED DEF DIRECT ENVIRONMENT ENV EXTERNAL EXT FILE syn keyword pl1Attribute GLOBALDEF GLOBALREF INITIAL INIT INPUT INTERNAL INT KEYED syn keyword pl1Attribute LABEL LIKE LIST MEMBER NONVARYING NONVAR OPTIONAL OPTIONS syn keyword pl1Attribute OUTPUT PARAMETER PARM PICTURE PIC POSITION POS PRECISION syn keyword pl1Attribute PREC PRINT READONLY RECORD REFER RETURNS SEQUENTIAL SEQL syn keyword pl1Attribute STATIC STREAM STRUCTURE TRUNCATE UNALIGNED UNAL UNION UPDATE syn keyword pl1Attribute VARIABLE VARYING VAR COMPLEX CPLX REAL BINARY BIN BIT syn keyword pl1Attribute CHARACTER CHAR DECIMAL DEC DESCRIPTOR DESC DIMENSION DIM syn keyword pl1Attribute FIXED FLOAT OFFSET POINTER PTR REFERENCE VALUE VAL " Functions syn keyword pl1Function AFTER ALL ANY BEFORE COMPLETION CPLN CONJG COUNT syn keyword pl1Function CURRENTSTORAGE CSTG DATAFIELD DECAT DOT ERF ERFC IMAG syn keyword pl1Function ONCOUNT ONFIELD ONLOC POLY PRIORITY REPEAT SAMEKEY STATUS syn keyword pl1Function STORAGE STG ABS ACOS ACTUALCOUNT ADD ADDR ADDREL ALLOCATION syn keyword pl1Function ALLOCN ASIN ATAN ATAND ATANH BOOL BYTE BYTESIZE CEIL COLLATE syn keyword pl1Function COPY COS COSD COSH DATE DATETIME DECODE DISPLAY DIVIDE EMPTY syn keyword pl1Function ENCODE ERROR EVERY EXP EXTEND FLOOR FLUSH FREE HBOUND HIGH syn keyword pl1Function INDEX INFORM INT LBOUND LENGTH LINE LINENO LOG LOG10 LOG2 syn keyword pl1Function LOW LTRIM MAX MAXLENGTH MIN MOD MULTIPLY NEXT_VOLUME NULL syn keyword pl1Function ONARGSLIST ONCHAR ONCODE ONFILE ONKEY ONSOURCE PAGENO POSINT syn keyword pl1Function PRESENT PROD RANK RELEASE RESIGNAL REVERSE REWIND ROUND syn keyword pl1Function RTRIM SEARCH SIGN SIN SIND SINH SIZE SOME SPACEBLOCK SQRT syn keyword pl1Function STRING SUBSTR SUBTRACT SUM TAN TAND TANH TIME TRANSLATE TRIM syn keyword pl1Function TRUNC UNSPEC VALID VARIANT VERIFY WARN " Other keywords syn keyword pl1Other ATTENTION ATTN C CONVERSION CONV DATA NAME NOCONVERSION syn keyword pl1Other NOCONV NOFIXEDOVERFLOW NOFOFL NOOVERFLOW NOSIZE syn keyword pl1Other NOSTRINGRANGE NOSTRG NOSTRINGSIZE NOSTRZ NOSUBSCRIPTRANGE syn keyword pl1Other NOSUBRG NOZERODIVIDE NOZDIV OVERFLOW OFL PENDING RECORD syn keyword pl1Other REENTRANT SIZE STRINGRANGE STRG STRINGSIZE STRZ syn keyword pl1Other SUBSCRIPTRANGE SUBRG TRANSMIT A ANYCONDITION APPEND B B1 B2 syn keyword pl1Other B3 B4 BACKUP_DATE BATCH BLOCK_BOUNDARY_FORMAT BLOCK_IO syn keyword pl1Other BLOCK_SIZE BUCKET_SIZE BY CANCEL_CONTROL_O syn keyword pl1Other CARRIAGE_RETURN_FORMAT COLUMN COL CONTIGUOUS syn keyword pl1Other CONTIGUOUS_BEST_TRY CONVERSION CONV CREATION_DATE syn keyword pl1Other CURRENT_POSITION DEFAULT_FILE_NAME DEFERRED_WRITE E EDIT syn keyword pl1Other ENDFILE ENDPAGE EXPIRATION_DATE EXTENSION_SIZE F FAST_DELETE syn keyword pl1Other FILE_ID FILE_ID_TO FILE_SIZE FINISH FIXEDOVERFLOW FOFL syn keyword pl1Other FIXED_CONTROL_FROM FIXED_CONTROL_SIZE FIXED_CONTROL_SIZE_TO syn keyword pl1Other FIXED_CONTROL_TO FIXED_LENGTH_RECORDS FROM GROUP_PROTECTION syn keyword pl1Other IDENT IGNORE_LINE_MARKS IN INDEXED INDEX_NUMBER INITIAL_FILL syn keyword pl1Other INTO KEY KEYFROM KEYTO LINESIZE LOCK_ON_READ LOCK_ON_WRITE syn keyword pl1Other MAIN MANUAL_UNLOCKING MATCH_GREATER MATCH_GREATER_EQUAL syn keyword pl1Other MATCH_NEXT MATCH_NEXT_EQUAL MAXIMUM_RECORD_NUMBER syn keyword pl1Other MAXIMUM_RECORD_SIZE MULTIBLOCK_COUNT MULTIBUFFER_COUNT syn keyword pl1Other NOLOCK NONEXISTENT_RECORD NONRECURSIVE NO_ECHO NO_FILTER syn keyword pl1Other NO_SHARE OVERFLOW OFL OWNER_GROUP OWNER_ID OWNER_MEMBER syn keyword pl1Other OWNER_PROTECTION P PAGE PAGESIZE PRINTER_FORMAT PROMPT syn keyword pl1Other PURGE_TYPE_AHEAD R READ_AHEAD READ_CHECK READ_REGARDLESS syn keyword pl1Other RECORD_ID RECORD_ID_ACCESS RECORD_ID_TO RECURSIVE REPEAT syn keyword pl1Other RETRIEVAL_POINTERS REVISION_DATE REWIND_ON_CLOSE syn keyword pl1Other REWIND_ON_OPEN SCALARVARYING SET SHARED_READ SHARED_WRITE syn keyword pl1Other SKIP SPOOL STORAGE STRINGRANGE STRG SUBSCRIPTRANGE SUBRG syn keyword pl1Other SUPERSEDE SYSIN SYSPRINT SYSTEM_PROTECTION TAB TEMPORARY syn keyword pl1Other TIMEOUT_PERIOD TITLE TO UNDEFINEDFILE UNDF UNDERFLOW UFL syn keyword pl1Other UNTIL USER_OPEN VAXCONDITION WAIT_FOR_RECORD WHILE syn keyword pl1Other WORLD_PROTECTION WRITE_BEHIND WRITE_CHECK X ZERODIVIDE ZDIV " PreProcessor keywords syn keyword pl1PreProc ACTIVATE DEACTIVATE DECLARE DCL DICTIONARY DO END ERROR syn keyword pl1PreProc FATAL GOTO IF INCLUDE INFORM LIST NOLIST PAGE PROCEDURE PROC syn keyword pl1PreProc REPLACE RETURN SBTTL TITLE WARN THEN ELSE " Statements syn keyword pl1Statement CALL SUB ENTRY BY NAME CASE CHECK COPY DEFAULT DFT DELAY syn keyword pl1Statement DESCRIPTORS DISPLAY EXIT FETCH HALT IGNORE LIST LOCATE syn keyword pl1Statement NOCHECK NOLOCK NONE ORDER RANGE RELEASE REORDER REPLY SNAP syn keyword pl1Statement SYSTEM TAB UNLOCK WAIT ALLOCATE ALLOC BEGIN CALL CLOSE syn keyword pl1Statement DECLARE DCL DELETE DO ELSE END FORMAT GET GOTO GO TO IF syn keyword pl1Statement LEAVE NORESCAN ON OPEN OTHERWISE OTHER PROCEDURE PROC PUT syn keyword pl1Statement READ RESCAN RETURN REVERT REWRITE SELECT SIGNAL SNAP syn keyword pl1Statement STATEMENT STOP SYSTEM THEN WHEN WRITE " PL1's own keywords " syn match pl1Keyword "\" " syn match pl1Keyword "\.COUNT\>"hs=s+1 " syn match pl1Keyword "\.EXISTS\>"hs=s+1 " syn match pl1Keyword "\.FIRST\>"hs=s+1 " syn match pl1Keyword "\.LAST\>"hs=s+1 " syn match pl1Keyword "\.DELETE\>"hs=s+1 " syn match pl1Keyword "\.PREV\>"hs=s+1 " syn match pl1Keyword "\.NEXT\>"hs=s+1 if exists("pl1_highlight_triggers") syn keyword pl1Trigger INSERTING UPDATING DELETING endif " Conditionals. syn keyword pl1Conditional ELSIF ELSE IF syn match pl1Conditional "\" " Loops. syn keyword pl1Repeat FOR LOOP WHILE FORALL syn match pl1Repeat "\" " Various types of comments. " 20010723az: Added the ability to treat strings within comments just like " C does. if exists("c_comment_strings") syntax match pl1CommentSkip contained "^\s*\*\($\|\s\+\)" syntax region pl1CommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=pl1CommentSkip syntax region pl1Comment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError else syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1SpaceError syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1SpaceError endif " 20010723az: These are the old comment commands ... commented out. " syn match pl1Comment "--.*$" contains=pl1Todo " syn region pl1Comment start="/\*" end="\*/" contains=pl1Todo syn sync ccomment pl1Comment syn sync ccomment pl1CommentL " To catch unterminated string literals. syn match pl1StringError "'.*$" " Various types of literals. " 20010723az: Added stuff for comment matching. syn match pl1Numbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral syn match pl1NumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral syn match pl1IntLiteral contained "[+-]\=\d\+" syn match pl1FloatLiteral contained "[+-]\=\d\+\.\d*" syn match pl1FloatLiteral contained "[+-]\=\d*\.\d*" "syn match pl1FloatLiteral "[+-]\=\([0-9]*\.[0-9]\+\|[0-9]\+\.[0-9]\+\)\(e[+-]\=[0-9]\+\)\=" syn match pl1CharLiteral "'[^']'" syn match pl1StringLiteral "'\([^']\|''\)*'" syn keyword pl1BooleanLiteral TRUE FALSE NULL " The built-in types. syn keyword pl1Storage ANYDATA ANYTYPE BFILE BINARY_INTEGER BLOB BOOLEAN syn keyword pl1Storage BYTE CHAR CHARACTER CLOB CURSOR DATE DAY DEC DECIMAL syn keyword pl1Storage DOUBLE DSINTERVAL_UNCONSTRAINED FLOAT HOUR syn keyword pl1Storage INT INTEGER INTERVAL LOB LONG MINUTE syn keyword pl1Storage MLSLABEL MONTH NATURAL NATURALN NCHAR NCHAR_CS NCLOB syn keyword pl1Storage NUMBER NUMERIC NVARCHAR PLS_INT PLS_INTEGER syn keyword pl1Storage POSITIVE POSITIVEN PRECISION RAW REAL RECORD syn keyword pl1Storage SECOND SIGNTYPE SMALLINT STRING SYS_REFCURSOR TABLE TIME syn keyword pl1Storage TIMESTAMP TIMESTAMP_UNCONSTRAINED syn keyword pl1Storage TIMESTAMP_TZ_UNCONSTRAINED syn keyword pl1Storage TIMESTAMP_LTZ_UNCONSTRAINED UROWID VARCHAR syn keyword pl1Storage VARCHAR2 YEAR YMINTERVAL_UNCONSTRAINED ZONE " A type-attribute is really a type. " 20020916bp: Removed leading part of pattern to avoid highlighting the " object syn match pl1TypeAttribute "%\(TYPE\|ROWTYPE\)\>" " All other attributes. syn match pl1Attribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTFOUND\|ROWCOUNT\)\>" " Catch errors caused by wrong parentheses and brackets " 20010723az: significantly more powerful than the values -- commented out " below the replaced values. This adds the C functionality to PL/SQL. syn cluster pl1ParenGroup contains=pl1ParenError,@pl1CommentGroup,pl1CommentSkip,pl1IntLiteral,pl1FloatLiteral,pl1NumbersCom if exists("c_no_bracket_error") syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup syn match pl1ParenError ")" syn match pl1ErrInParen contained "[{}]" else syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup,pl1ErrInBracket syn match pl1ParenError "[\])]" syn match pl1ErrInParen contained "[{}]" syn region pl1Bracket transparent start='\[' end=']' contains=ALLBUT,@pl1ParenGroup,pl1ErrInParen syn match pl1ErrInBracket contained "[);{}]" endif " syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,pl1ParenError " syn match pl1ParenError ")" " Syntax Synchronizing syn sync minlines=10 maxlines=100 " Define the default highlighting. " Only when and item doesn't have highlighting yet. hi def link pl1Attribute Macro hi def link pl1BlockError Error hi def link pl1BooleanLiteral Boolean hi def link pl1CharLiteral Character hi def link pl1Comment Comment hi def link pl1CommentL Comment hi def link pl1Conditional Conditional hi def link pl1Error Error hi def link pl1ErrInBracket Error hi def link pl1ErrInBlock Error hi def link pl1ErrInParen Error hi def link pl1Exception Function hi def link pl1FloatLiteral Float hi def link pl1Function Function hi def link pl1Garbage Error hi def link pl1HostIdentifier Label hi def link pl1Identifier Normal hi def link pl1IntLiteral Number hi def link pl1Operator Operator hi def link pl1Paren Normal hi def link pl1ParenError Error hi def link pl1SpaceError Error hi def link pl1Pseudo PreProc hi def link pl1PreProc PreProc hi def link pl1PreProcSym PreProc hi def link pl1Keyword Keyword hi def link pl1Other Keyword hi def link pl1Repeat Repeat hi def link pl1Statement Keyword hi def link pl1Storage StorageClass hi def link pl1StringError Error hi def link pl1StringLiteral String hi def link pl1CommentString String hi def link pl1Comment2String String hi def link pl1Symbol Normal hi def link pl1Trigger Function hi def link pl1TypeAttribute StorageClass hi def link pl1Todo Todo let b:current_syntax = "pl1" PK!Lvim80/syntax/lifelines.vimnu[" Vim syntax file " Language: LifeLines (v 3.0.62) " Maintainer: Patrick Texier " Location: " Last Change: 2010 May 7 " option to highlight error obsolete statements " add the following line to your .vimrc file : " let lifelines_deprecated = 1 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " A bunch of useful LifeLines keywords 3.0.62 syn keyword lifelinesDecl char_encoding require option include syn keyword lifelinesStatement set syn keyword lifelinesUser getindi geindiset getfam getint getstr choosechild syn keyword lifelinesUser chooseindi choosespouse choosesubset menuchoose syn keyword lifelinesUser choosefam syn keyword lifelinesProc proc func return call syn keyword lifelinesInclude include syn keyword lifelinesDef global syn keyword lifelinesConditional if else elsif switch syn keyword lifelinesRepeat continue break while syn keyword lifelinesLogical and or not eq ne lt gt le ge strcmp eqstr nestr syn keyword lifelinesArithm add sub mul div mod exp neg incr decr syn keyword lifelinesArithm cos sin tan arccos arcsin arctan syn keyword lifelinesArithm deg2dms dms2deg spdist syn keyword lifelinesIndi name fullname surname givens trimname birth syn keyword lifelinesIndi death burial baptism syn keyword lifelinesIndi father mother nextsib prevsib sex male female syn keyword lifelinesIndi pn nspouses nfamilies parents title key syn keyword lifelinesIndi soundex inode root indi firstindi nextindi syn keyword lifelinesIndi previndi spouses families forindi indiset syn keyword lifelinesIndi addtoset deletefromset union intersect syn keyword lifelinesIndi difference parentset childset spouseset siblingset syn keyword lifelinesIndi ancestorset descendentset descendantset uniqueset syn keyword lifelinesIndi namesort keysort valuesort genindiset getindiset syn keyword lifelinesIndi forindiset lastindi writeindi syn keyword lifelinesIndi inset syn keyword lifelinesFam marriage husband wife nchildren firstchild syn keyword lifelinesFam lastchild fnode fam firstfam nextfam lastfam syn keyword lifelinesFam prevfam children forfam writefam syn keyword lifelinesFam fathers mothers Parents syn keyword lifelinesList list empty length enqueue dequeue requeue syn keyword lifelinesList push pop setel getel forlist inlist dup clear syn keyword lifelinesTable table insert lookup syn keyword lifelinesGedcom xref tag value parent child sibling savenode syn keyword lifelinesGedcom fornodes traverse createnode addnode syn keyword lifelinesGedcom detachnode foreven fornotes forothr forsour syn keyword lifelinesGedcom reference dereference getrecord syn keyword lifelinesGedcom gengedcomstrong syn keyword lifelinesFunct date place year long short gettoday dayformat syn keyword lifelinesFunct monthformat dateformat extractdate eraformat syn keyword lifelinesFunct complexdate complexformat complexpic datepic syn keyword lifelinesFunct extractnames extractplaces extracttokens lower syn keyword lifelinesFunct yearformat syn keyword lifelinesFunct upper capitalize trim rjustify syn keyword lifelinesFunct concat strconcat strlen substring index syn keyword lifelinesFunct titlecase gettext syn keyword lifelinesFunct d card ord alpha roman strsoundex strtoint syn keyword lifelinesFunct atoi linemode pagemod col row pos pageout nl syn keyword lifelinesFunct sp qt newfile outfile copyfile print lock unlock test syn keyword lifelinesFunct database version system stddate program syn keyword lifelinesFunct pvalue pagemode level extractdatestr debug syn keyword lifelinesFunct f float int free getcol getproperty heapused syn keyword lifelinesFunct sort rsort syn keyword lifelinesFunct deleteel syn keyword lifelinesFunct bytecode convertcode setlocale " New dates functions (since 3.0.51) syn keyword lifelinesFunct jd2date date2jd dayofweek setdate " options to highlight as error obsolete statements " please read ll-reportmanual. if exists("lifelines_deprecated") syn keyword lifelinesError getintmsg getindimsg getstrmsg syn keyword lifelinesError gengedcom gengedcomweak deletenode syn keyword lifelinesError save strsave syn keyword lifelinesError lengthset if version >= 700 let g:omni_syntax_group_exclude_lifelines = 'lifelinesError' endif else syn keyword lifelinesUser getintmsg getindimsg getstrmsg syn keyword lifelinesGedcom gengedcom gengedcomweak deletenode syn keyword lifelinesFunct save strsave syn keyword lifelinesIndi lengthset endif syn region lifelinesString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lifelinesSpecial syn match lifelinesSpecial "\\\(\\\|\(n\|t\)\)" contained syn keyword lifelinesTodo contained TODO FIXME XXX syn region lifelinesComment start="/\*" end="\*/" contains=lifelinesTodo " integers syn match lifelinesNumber "-\=\<\d\+\>" "floats, with dot syn match lifelinesNumber "-\=\<\d\+\.\d*\>" "floats, starting with a dot syn match lifelinesNumber "-\=\.\d\+\>" " folding using {} syn region lifelinesFoldBlock start="{" end="}" transparent fold "catch errors caused by wrong parenthesis "adapted from original c.vim written by Bram Moolenaar syn cluster lifelinesParenGroup contains=lifelinesParenError syn region lifelinesParen transparent start='(' end=')' contains=ALLBUT,@lifelinesParenGroup syn match lifelinesParenError ")" syn match lifelinesErrInParen contained "[{}]" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link lifelinesConditional Conditional hi def link lifelinesArithm Operator hi def link lifelinesLogical Conditional hi def link lifelinesInclude Include hi def link lifelinesComment Comment hi def link lifelinesStatement Statement hi def link lifelinesUser Statement hi def link lifelinesFunct Statement hi def link lifelinesTable Statement hi def link lifelinesGedcom Statement hi def link lifelinesList Statement hi def link lifelinesRepeat Repeat hi def link lifelinesFam Statement hi def link lifelinesIndi Statement hi def link lifelinesProc Statement hi def link lifelinesDef Statement hi def link lifelinesString String hi def link lifelinesSpecial Special hi def link lifelinesNumber Number hi def link lifelinesParenError Error hi def link lifelinesErrInParen Error hi def link lifelinesError Error hi def link lifelinesTodo Todo hi def link lifelinesDecl PreProc let b:current_syntax = "lifelines" " vim: ts=8 sw=4 PK!B^^vim80/syntax/django.vimnu[" Vim syntax file " Language: Django template " Maintainer: Dave Hodder " Last Change: 2014 Jul 13 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syntax case match " Mark illegal characters syn match djangoError "%}\|}}\|#}" " Django template built-in tags and parameters " 'comment' doesn't appear here because it gets special treatment syn keyword djangoStatement contained autoescape csrf_token empty " FIXME ==, !=, <, >, <=, and >= should be djangoStatements: " syn keyword djangoStatement contained == != < > <= >= syn keyword djangoStatement contained and as block endblock by cycle debug else elif syn keyword djangoStatement contained extends filter endfilter firstof for syn keyword djangoStatement contained endfor if endif ifchanged endifchanged syn keyword djangoStatement contained ifequal endifequal ifnotequal syn keyword djangoStatement contained endifnotequal in include load not now or syn keyword djangoStatement contained parsed regroup reversed spaceless syn keyword djangoStatement contained endspaceless ssi templatetag openblock syn keyword djangoStatement contained closeblock openvariable closevariable syn keyword djangoStatement contained openbrace closebrace opencomment syn keyword djangoStatement contained closecomment widthratio url with endwith syn keyword djangoStatement contained get_current_language trans noop blocktrans syn keyword djangoStatement contained endblocktrans get_available_languages syn keyword djangoStatement contained get_current_language_bidi plural " Django templete built-in filters syn keyword djangoFilter contained add addslashes capfirst center cut date syn keyword djangoFilter contained default default_if_none dictsort syn keyword djangoFilter contained dictsortreversed divisibleby escape escapejs syn keyword djangoFilter contained filesizeformat first fix_ampersands syn keyword djangoFilter contained floatformat get_digit join last length length_is syn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust syn keyword djangoFilter contained lower make_list phone2numeric pluralize syn keyword djangoFilter contained pprint random removetags rjust slice slugify syn keyword djangoFilter contained safe safeseq stringformat striptags syn keyword djangoFilter contained time timesince timeuntil title truncatechars syn keyword djangoFilter contained truncatewords truncatewords_html unordered_list upper urlencode syn keyword djangoFilter contained urlize urlizetrunc wordcount wordwrap yesno " Keywords to highlight within comments syn keyword djangoTodo contained TODO FIXME XXX " Django template constants (always surrounded by double quotes) syn region djangoArgument contained start=/"/ skip=/\\"/ end=/"/ " Mark illegal characters within tag and variables blocks syn match djangoTagError contained "#}\|{{\|[^%]}}\|[&#]" syn match djangoVarError contained "#}\|{%\|%}\|[<>!&#%]" " Django template tag and variable blocks syn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument,djangoTagError display syn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument,djangoVarError display " Django template 'comment' tag and comment block syn region djangoComment start="{%\s*comment\(\s\+.\{-}\)\?%}" end="{%\s*endcomment\s*%}" contains=djangoTodo syn region djangoComBlock start="{#" end="#}" contains=djangoTodo " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link djangoTagBlock PreProc hi def link djangoVarBlock PreProc hi def link djangoStatement Statement hi def link djangoFilter Identifier hi def link djangoArgument Constant hi def link djangoTagError Error hi def link djangoVarError Error hi def link djangoError Error hi def link djangoComment Comment hi def link djangoComBlock Comment hi def link djangoTodo Todo let b:current_syntax = "django" PK!*?vim80/syntax/udevconf.vimnu[" Vim syntax file " Language: udev(8) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword udevconfTodo contained TODO FIXME XXX NOTE syn region udevconfComment display oneline start='^\s*#' end='$' \ contains=udevconfTodo,@Spell syn match udevconfBegin display '^' \ nextgroup=udevconfVariable,udevconfComment \ skipwhite syn keyword udevconfVariable contained udev_root udev_db udev_rules udev_log \ nextgroup=udevconfVariableEq syn match udevconfVariableEq contained '[[:space:]=]' \ nextgroup=udevconfString skipwhite syn region udevconfString contained display oneline start=+"+ end=+"+ hi def link udevconfTodo Todo hi def link udevconfComment Comment hi def link udevconfVariable Identifier hi def link udevconfVariableEq Operator hi def link udevconfString String let b:current_syntax = "udevconf" let &cpo = s:cpo_save unlet s:cpo_save PK!q[vim80/syntax/gkrellmrc.vimnu[" Vim syntax file " This is a GENERATED FILE. Please always refer to source file at the URI below. " Language: gkrellm theme files `gkrellmrc' " Maintainer: David Ne\v{c}as (Yeti) " Last Change: 2003-04-30 " URL: http://trific.ath.cx/Ftp/vim/syntax/gkrellmrc.vim " Setup " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=_,-,a-z,A-Z,48-57 syn case match " Base constructs syn match gkrellmrcComment "#.*$" contains=gkrellmrcFixme syn keyword gkrellmrcFixme FIXME TODO XXX NOT contained syn region gkrellmrcString start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline syn match gkrellmrcNumber "^-\=\(\d\+\)\=\.\=\d\+" syn match gkrellmrcNumber "\W-\=\(\d\+\)\=\.\=\d\+"lc=1 syn keyword gkrellmrcConstant none syn match gkrellmrcRGBColor "#\(\x\{12}\|\x\{9}\|\x\{6}\|\x\{3}\)\>" " Keywords syn keyword gkrellmrcBuiltinExt cpu_nice_color cpu_nice_grid_color krell_depth krell_expand krell_left_margin krell_right_margin krell_x_hot krell_yoff mem_krell_buffers_depth mem_krell_buffers_expand mem_krell_buffers_x_hot mem_krell_buffers_yoff mem_krell_cache_depth mem_krell_cache_expand mem_krell_cache_x_hot mem_krell_cache_yoff sensors_bg_volt timer_bg_timer syn keyword gkrellmrcGlobal allow_scaling author chart_width_ref theme_alternatives syn keyword gkrellmrcSetCmd set_image_border set_integer set_string syn keyword gkrellmrcGlobal bg_slider_meter_border bg_slider_panel_border syn keyword gkrellmrcGlobal frame_bottom_height frame_left_width frame_right_width frame_top_height frame_left_chart_overlap frame_right_chart_overlap frame_left_panel_overlap frame_right_panel_overlap frame_left_spacer_overlap frame_right_spacer_overlap spacer_overlap_off cap_images_off syn keyword gkrellmrcGlobal frame_bottom_border frame_left_border frame_right_border frame_top_border spacer_top_border spacer_bottom_border frame_left_chart_border frame_right_chart_border frame_left_panel_border frame_right_panel_border syn keyword gkrellmrcGlobal chart_in_color chart_in_color_grid chart_out_color chart_out_color_grid syn keyword gkrellmrcGlobal bg_separator_height bg_grid_mode syn keyword gkrellmrcGlobal rx_led_x rx_led_y tx_led_x tx_led_y syn keyword gkrellmrcGlobal decal_mail_frames decal_mail_delay syn keyword gkrellmrcGlobal decal_alarm_frames decal_warn_frames syn keyword gkrellmrcGlobal krell_slider_depth krell_slider_expand krell_slider_x_hot syn keyword gkrellmrcGlobal button_panel_border button_meter_border syn keyword gkrellmrcGlobal large_font normal_font small_font syn keyword gkrellmrcGlobal spacer_bottom_height spacer_top_height spacer_bottom_height_chart spacer_top_height_chart spacer_bottom_height_meter spacer_top_height_meter syn keyword gkrellmrcExpandMode left right bar-mode left-scaled right-scaled bar-mode-scaled syn keyword gkrellmrcMeterName apm cal clock fs host mail mem swap timer sensors uptime syn keyword gkrellmrcChartName cpu proc disk inet and net syn match gkrellmrcSpecialClassName "\*" syn keyword gkrellmrcStyleCmd StyleMeter StyleChart StylePanel syn keyword gkrellmrcStyleItem textcolor alt_textcolor font alt_font transparency border label_position margin margins left_margin right_margin top_margin bottom_margin krell_depth krell_yoff krell_x_hot krell_expand krell_left_margin krell_right_margin " Define the default highlighting hi def link gkrellmrcComment Comment hi def link gkrellmrcFixme Todo hi def link gkrellmrcString gkrellmrcConstant hi def link gkrellmrcNumber gkrellmrcConstant hi def link gkrellmrcRGBColor gkrellmrcConstant hi def link gkrellmrcExpandMode gkrellmrcConstant hi def link gkrellmrcConstant Constant hi def link gkrellmrcMeterName gkrellmrcClass hi def link gkrellmrcChartName gkrellmrcClass hi def link gkrellmrcSpecialClassName gkrellmrcClass hi def link gkrellmrcClass Type hi def link gkrellmrcGlobal gkrellmrcItem hi def link gkrellmrcBuiltinExt gkrellmrcItem hi def link gkrellmrcStyleItem gkrellmrcItem hi def link gkrellmrcItem Function hi def link gkrellmrcSetCmd Special hi def link gkrellmrcStyleCmd Statement let b:current_syntax = "gkrellmrc" PK!6vim80/syntax/cheetah.vimnu[" Vim syntax file " Language: Cheetah template engine " Maintainer: Max Ischenko " Last Change: 2003-05-11 " " Missing features: " match invalid syntax, like bad variable ref. or unmatched closing tag " PSP-style tags: <% .. %> (obsoleted feature) " doc-strings and header comments (rarely used feature) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syntax case match syn keyword cheetahKeyword contained if else unless elif for in not syn keyword cheetahKeyword contained while repeat break continue pass end syn keyword cheetahKeyword contained set del attr def global include raw echo syn keyword cheetahKeyword contained import from extends implements syn keyword cheetahKeyword contained assert raise try catch finally syn keyword cheetahKeyword contained errorCatcher breakpoint silent cache filter syn match cheetahKeyword contained "\" " Matches cached placeholders syn match cheetahPlaceHolder "$\(\*[0-9.]\+[wdhms]\?\*\|\*\)\?\h\w*\(\.\h\w*\)*" display syn match cheetahPlaceHolder "$\(\*[0-9.]\+[wdhms]\?\*\|\*\)\?{\h\w*\(\.\h\w*\)*}" display syn match cheetahDirective "^\s*#[^#].*$" contains=cheetahPlaceHolder,cheetahKeyword,cheetahComment display syn match cheetahContinuation "\\$" syn match cheetahComment "##.*$" display syn region cheetahMultiLineComment start="#\*" end="\*#" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link cheetahPlaceHolder Identifier hi def link cheetahDirective PreCondit hi def link cheetahKeyword Define hi def link cheetahContinuation Special hi def link cheetahComment Comment hi def link cheetahMultiLineComment Comment let b:current_syntax = "cheetah" PK!I|vim80/syntax/viminfo.vimnu[" Vim syntax file " Language: Vim .viminfo file " Maintainer: Bram Moolenaar " Last Change: 2016 Jun 05 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " The lines that are NOT recognized syn match viminfoError "^[^\t].*" " The one-character one-liners that are recognized syn match viminfoStatement "^[/&$@:?=%!<]" " The two-character one-liners that are recognized syn match viminfoStatement "^[-'>"]." syn match viminfoStatement +^"".+ syn match viminfoStatement "^\~[/&]" syn match viminfoStatement "^\~[hH]" syn match viminfoStatement "^\~[mM][sS][lL][eE]\d\+\~\=[/&]" syn match viminfoOption "^\*.*=" contains=viminfoOptionName syn match viminfoOptionName "\*\a*"ms=s+1 contained " Comments syn match viminfoComment "^#.*" " New style lines. TODO: highlight numbers and strings. syn match viminfoNew "^|.*" " Define the default highlighting. " Only used when an item doesn't have highlighting yet hi def link viminfoComment Comment hi def link viminfoError Error hi def link viminfoStatement Statement hi def link viminfoNew String let b:current_syntax = "viminfo" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 sw=2 PK!XVVvim80/syntax/aptconf.vimnu[" Vim syntax file " Language: APT config file " Maintainer: Yann Amar " Last Change: 2015 Dec 22 " quit when a syntax file was already loaded if !exists("main_syntax") if exists("b:current_syntax") finish endif let main_syntax = 'aptconf' endif let s:cpo_save = &cpo set cpo&vim " Errors: " Catch all that is not overridden by next rules/items: syn match aptconfError display '[^[:blank:]]' syn match aptconfError display '^[^[:blank:]][^:{]*' " Options: " Define a general regular expression for the options that are not defined " later as keywords. Following apt.conf(5), we know that options are case " insensitive, and can contain alphanumeric characters and '/-:._+'; we " assume that there can not be consecutive colons (::) which is used as " syntax operator; we also assume that an option name can not start or end " by a colon. syn case ignore syn match aptconfRegexpOpt '[-[:alnum:]/.+_]\+\(:[-[:alnum:]/.+_]\+\)*' contained display " Keywords: setlocal iskeyword+=/,-,.,_,+ "setlocal iskeyword+=: is problematic, because of the '::' separator " Incomplete keywords will be treated differently than completely bad strings: syn keyword aptconfGroupIncomplete \ a[cquire] a[dequate] a[ptitude] a[ptlistbugs] d[ebtags] d[ebug] \ d[ir] d[pkg] d[select] o[rderlist] p[ackagemanager] p[kgcachegen] \ q[uiet] r[pm] s[ynaptic] u[nattended-upgrade] w[hatmaps] " Only the following keywords can be used at toplevel (to begin an option): syn keyword aptconfGroup \ acquire adequate apt aptitude aptlistbugs debtags debug \ dir dpkg dselect orderlist packagemanager pkgcachegen \ quiet rpm synaptic unattended-upgrade whatmaps " Possible options for each group: " Acquire: {{{ syn keyword aptconfAcquire contained \ cdrom Check-Valid-Until CompressionTypes ForceHash ForceIPv4 \ ForceIPv6 ftp gpgv GzipIndexes http https Languages Max-ValidTime \ Min-ValidTime PDiffs Queue-Mode Retries Source-Symlinks syn keyword aptconfAcquireCDROM contained \ AutoDetect CdromOnly Mount UMount syn keyword aptconfAcquireCompressionTypes contained \ bz2 lzma gz Order syn keyword aptconfAcquireFTP contained \ ForceExtended Passive Proxy ProxyLogin Timeout syn keyword aptconfAcquireHTTP contained \ AllowRedirect Dl-Limit Max-Age No-Cache No-Store Pipeline-Depth \ Proxy ProxyAutoDetect Proxy-Auto-Detect Timeout User-Agent syn keyword aptconfAcquireHTTPS contained \ AllowRedirect CaInfo CaPath CrlFile Dl-Limit IssuerCert Max-Age \ No-Cache No-Store Proxy SslCert SslForceVersion SslKey Timeout \ Verify-Host Verify-Peer syn keyword aptconfAcquireMaxValidTime contained \ Debian Debian-Security syn keyword aptconfAcquirePDiffs contained \ FileLimit SizeLimit syn cluster aptconfAcquire_ contains=aptconfAcquire, \ aptconfAcquireCDROM,aptconfAcquireCompressionTypes,aptconfAcquireFTP, \ aptconfAcquireHTTP,aptconfAcquireHTTPS,aptconfAcquireMaxValidTime, \ aptconfAcquirePDiffs " }}} " Adequate: {{{ syn keyword aptconfAdequate contained \ Enabled syn cluster aptconfAdequate_ contains=aptconfAdequate " }}} " Apt: {{{ syn keyword aptconfApt contained \ Architecture Architectures Archive Authentication AutoRemove \ Build-Essential Build-Profiles Cache Cache-Grow Cache-Limit \ Cache-Start CDROM Changelogs Clean-Installed Compressor \ Default-Release Force-LoopBreak Get Ignore-Hold Immediate-Configure \ Install-Recommends Install-Suggests Keep-Fds List-Cleanup \ Move-Autobit-Sections NeverAutoRemove Never-MarkAuto-Sections \ Periodic Status-Fd Update VersionedKernelPackages syn keyword aptconfAptAuthentication contained \ TrustCDROM syn keyword aptconfAptAutoRemove contained \ RecommendsImportant SuggestsImportant syn keyword aptconfAptCache contained \ AllNames AllVersions Generate GivenOnly Important Installed NamesOnly \ RecurseDepends ShowFull syn keyword aptconfAptCDROM contained \ Fast NoAct NoMount Rename syn keyword aptconfAptChangelogs contained \ Server syn keyword aptconfAptCompressor contained \ bzip2 gzip lzma xz syn keyword aptconfAptCompressorAll contained \ Binary CompressArg Cost Extension Name UncompressArg syn keyword aptconfAptGet contained \ AllowUnauthenticated Arch-Only Assume-No Assume-Yes AutomaticRemove \ Build-Dep-Automatic Compile Diff-Only Download Download-Only Dsc-Only \ Fix-Broken Fix-Missing Force-Yes HideAutoRemove Host-Architecture \ List-Cleanup Only-Source Print-URIs Purge ReInstall Remove \ Show-Upgraded Show-User-Simulation-Note Show-Versions Simulate \ Tar-Only Trivial-Only Upgrade syn keyword aptconfAptPeriodic contained \ AutocleanInterval BackupArchiveInterval BackupLevel \ Download-Upgradeable-Packages Download-Upgradeable-Packages-Debdelta \ Enable MaxAge MaxSize MinAge Unattended-Upgrade Update-Package-Lists \ Verbose syn keyword aptconfAptUpdate contained \ List-Refresh Pre-Invoke Post-Invoke Post-Invoke-Success syn cluster aptconfApt_ contains=aptconfApt, \ aptconfAptAuthentication,aptconfAptAutoRemove,aptconfAptCache, \ aptconfAptCDROM,aptconfAptChangelogs,aptconfAptCompressor, \ aptconfAptCompressorAll,aptconfAptGet,aptconfAptPeriodic, \ aptconfAptUpdate " }}} " Aptitude: {{{ syn keyword aptconfAptitude contained \ Allow-Null-Upgrade Always-Use-Safe-Resolver Autoclean-After-Update \ Auto-Install Auto-Fix-Broken Cmdline Debtags-Binary \ Debtags-Update-Options Delete-Unused Delete-Unused-Pattern \ Display-Planned-Action Forget-New-On-Install Forget-New-On-Update \ Get-Root-Command Ignore-Old-Tmp Ignore-Recommends-Important \ Keep-Recommends Keep-Suggests Keep-Unused-Pattern LockFile Log \ Logging Parse-Description-Bullets Pkg-Display-Limit ProblemResolver \ Purge-Unused Recommends-Important Safe-Resolver Screenshot Sections \ Simulate Spin-Interval Suggests-Important Suppress-Read-Only-Warning \ Theme Track-Dselect-State UI Warn-Not-Root syn keyword aptconfAptitudeCmdline contained \ Always-Prompt Assume-Yes Disable-Columns Download-Only Fix-Broken \ Ignore-Trust-Violations Package-Display-Format Package-Display-Width \ Progress Request-Strictness Resolver-Debug Resolver-Dump \ Resolver-Show-Steps Safe-Upgrade Show-Deps Show-Size-Changes \ Show-Versions Show-Why Simulate Verbose Version-Display-Format \ Versions-Group-By Versions-Show-Package-Names Visual-Preview \ Why-Display-Mode syn keyword aptconfAptitudeCmdlineProgress contained \ Percent-On-Right Retain-Completed syn keyword aptconfAptitudeCmdlineSafeUpgrade contained \ No-New-Installs syn keyword aptconfAptitudeLogging contained \ File Levels syn keyword aptconfAptitudeProblemResolver contained \ Allow-Break-Holds BreakHoldScore Break-Hold-Level BrokenScore \ DefaultResolutionScore Discard-Null-Solution \ EssentialRemoveScore ExtraScore FullReplacementScore FutureHorizon \ Hints ImportantScore Infinity InstallScore Keep-All-Level KeepScore \ NonDefaultScore Non-Default-Level OptionalScore PreserveAutoScore \ PreserveManualScore RemoveScore Remove-Essential-Level Remove-Level \ RequiredScore ResolutionScore Safe-Level SolutionCost StandardScore \ StepLimit StepScore Trace-Directory Trace-File \ UndoFullReplacementScore UnfixedSoftScore UpgradeScore syn keyword aptconfAptitudeSafeResolver contained \ No-New-Installs No-New-Upgrades Show-Resolver-Actions syn keyword aptconfAptitudeScreenshot contained \ Cache-Max IncrementalLoadLimit syn keyword aptconfAptitudeSections contained \ Descriptions Top-Sections syn keyword aptconfAptitudeUI contained \ Advance-On-Action Auto-Show-Reasons Default-Grouping \ Default-Package-View Default-Preview-Grouping Default-Sorting \ Description-Visible-By-Default Exit-On-Last-Close Fill-Text \ Flat-View-As-First-View HelpBar Incremental-Search InfoAreaTabs \ KeyBindings MenuBar-Autohide Minibuf-Download-Bar Minibuf-Prompts \ New-package-Commands Package-Display-Format Package-Header-Format \ Package-Status-Format Pause-After-Download Preview-Limit \ Prompt-On-Exit Styles ViewTabs syn keyword aptconfAptitudeUIKeyBindings contained \ ApplySolution Begin BugReport Cancel Changelog ChangePkgTreeGrouping \ ChangePkgTreeLimit ChangePkgTreeSorting ClearAuto CollapseAll \ CollapseTree Commit Confirm Cycle CycleNext CycleOrder CyclePrev \ DelBOL DelBack DelEOL DelForward Dependencies DescriptionCycle \ DescriptionDown DescriptionUp DoInstallRun Down DpkgReconfigure \ DumpResolver EditHier End ExamineSolution ExpandAll ExpandTree \ FirstSolution ForbidUpgrade ForgetNewPackages Help HistoryNext \ HistoryPrev Hold Install InstallSingle Keep LastSolution Left \ LevelDown LevelUp MarkUpgradable MineFlagSquare MineLoadGame \ MineSaveGame MineSweepSquare MineUncoverSquare MineUncoverSweepSquare \ NextPage NextSolution No Parent PrevPage PrevSolution Purge \ PushButton Quit QuitProgram RejectBreakHolds Refresh Remove \ ReInstall RepeatSearchBack ReSearch ReverseDependencies Right \ SaveHier Search SearchBack SearchBroken SetAuto ShowHideDescription \ SolutionActionApprove SolutionActionReject ToggleExpanded \ ToggleMenuActive Undo Up UpdatePackageList Versions Yes syn keyword aptconfAptitudeUIStyles contained \ Bullet ChangeLogNewerVersion Default DepBroken DisabledMenuEntry \ DownloadHit DownloadProgress EditLine Error Header HighlightedMenuBar \ HighlightedMenuEntry MediaChange MenuBar MenuBorder MenuEntry \ MineBomb MineBorder MineFlag MineNumber1 MineNumber2 MineNumber3 \ MineNumber4 MineNumber5 MineNumber6 MineNumber7 MineNumber8 \ MultiplexTab MultiplexTabHighlighted PkgBroken PkgBrokenHighlighted \ PkgIsInstalled PkgIsInstalledHighlighted PkgNotInstalled \ PkgNotInstalledHighlighted PkgToDowngrade PkgToDowngradeHighlighted \ PkgToHold PkgToHoldHighlighted PkgToInstall PkgToInstallHighlighted \ PkgToRemove PkgToRemoveHighlighted PkgToUpgrade \ PkgToUpgradeHighlighted Progress SolutionActionApproved \ SolutionActionRejected Status TreeBackground TrustWarning syn keyword aptconfAptitudeUIStylesElements contained \ bg clear fg flip set syn cluster aptconfAptitude_ contains=aptconfAptitude, \ aptconfAptitudeCmdline,aptconfAptitudeCmdlineProgress, \ aptconfAptitudeCmdlineSafeUpgrade,aptconfAptitudeLogging, \ aptconfAptitudeProblemResolver,aptconfAptitudeSafeResolver, \ aptconfAptitudeScreenshot,aptconfAptitudeSections,aptconfAptitudeUI, \ aptconfAptitudeUIKeyBindings,aptconfAptitudeUIStyles, \ aptconfAptitudeUIStylesElements " }}} " AptListbugs: {{{ syn keyword aptconfAptListbugs contained \ IgnoreRegexp Severities syn cluster aptconfAptListbugs_ contains=aptconfAptListbugs " }}} " DebTags: {{{ syn keyword aptconfDebTags contained \ Vocabulary syn cluster aptconfDebTags_ contains=aptconfDebTags " }}} " Debug: {{{ syn keyword aptconfDebug contained \ Acquire aptcdrom BuildDeps Hashes IdentCdrom Nolocking \ pkgAcquire pkgAutoRemove pkgCacheGen pkgDepCache pkgDPkgPM \ pkgDPkgProgressReporting pkgInitialize pkgOrderList \ pkgPackageManager pkgPolicy pkgProblemResolver RunScripts \ sourceList syn keyword aptconfDebugAcquire contained \ cdrom Ftp gpgv Http Https netrc syn keyword aptconfDebugPkgAcquire contained \ Auth Diffs RRed Worker syn keyword aptconfDebugPkgDepCache contained \ AutoInstall Marker syn keyword aptconfDebugPkgProblemResolver contained \ ShowScores syn cluster aptconfDebug_ contains=aptconfDebug, \ aptconfDebugAcquire,aptconfDebugPkgAcquire,aptconfDebugPkgDepCache, \ aptconfDebugPkgProblemResolver " }}} " Dir: {{{ syn keyword aptconfDir contained \ Aptitude Bin Cache Etc Ignore-Files-Silently Log Media Parts RootDir \ State syn keyword aptconfDirAptitude contained \ state syn keyword aptconfDirBin contained \ apt-get apt-cache dpkg dpkg-buildpackage dpkg-source gpg gzip Methods \ solvers syn keyword aptconfDirCache contained \ Archives Backup pkgcache srcpkgcache syn keyword aptconfDirEtc contained \ Main Netrc Parts Preferences PreferencesParts SourceList SourceParts \ VendorList VendorParts Trusted TrustedParts syn keyword aptconfDirLog contained \ History Terminal syn keyword aptconfDirMedia contained \ MountPath syn keyword aptconfDirState contained \ cdroms extended_states Lists mirrors preferences status syn cluster aptconfDir_ contains=aptconfDir, \ aptconfDirAptitude,aptconfDirBin,aptconfDirCache,aptconfDirEtc, \ aptconfDirLog,aptconfDirMedia,aptconfDirState " }}} " DPkg: {{{ syn keyword aptconfDPkg contained \ Build-Options Chroot-Directory ConfigurePending FlushSTDIN \ MaxArgBytes MaxArgs MaxBytes NoTriggers options \ Pre-Install-Pkgs Pre-Invoke Post-Invoke \ Run-Directory StopOnError Tools TriggersPending syn keyword aptconfDPkgTools contained \ adequate InfoFD Options Version syn cluster aptconfDPkg_ contains=aptconfDPkg, \ aptconfDPkgTools " }}} " DSelect: {{{ syn keyword aptconfDSelect contained \ CheckDir Clean Options PromptAfterUpdate UpdateOptions syn cluster aptconfDSelect_ contains=aptconfDSelect " }}} " OrderList: {{{ syn keyword aptconfOrderList contained \ Score syn keyword aptconfOrderListScore contained \ Delete Essential Immediate PreDepends syn cluster aptconfOrderList_ contains=aptconfOrderList, \ aptconfOrderListScore " }}} " PackageManager: {{{ syn keyword aptconfPackageManager contained \ Configure syn cluster aptconfPackageManager_ contains=aptconfPackageManager " }}} " PkgCacheGen: {{{ syn keyword aptconfPkgCacheGen contained \ Essential syn cluster aptconfPkgCacheGen_ contains=aptconfPkgCacheGen " }}} " Quiet: {{{ syn keyword aptconfQuiet contained \ NoUpdate syn cluster aptconfQuiet_ contains=aptconfQuiet " }}} " Rpm: {{{ syn keyword aptconfRpm contained \ Post-Invoke Pre-Invoke syn cluster aptconfRpm_ contains=aptconfRpm " }}} " Synaptic: {{{ syn keyword aptconfSynaptic contained \ AskQuitOnProceed AskRelated AutoCleanCache CleanCache DefaultDistro \ delAction delHistory Download-Only ftpProxy ftpProxyPort httpProxy \ httpProxyPort Install-Recommends LastSearchType Maximized noProxy \ OneClickOnStatusActions ShowAllPkgInfoInMain showWelcomeDialog \ ToolbarState undoStackSize update upgradeType useProxy UseStatusColors \ UseTerminal useUserFont useUserTerminalFont ViewMode \ availVerColumnPos availVerColumnVisible componentColumnPos \ componentColumnVisible descrColumnPos descrColumnVisible \ downloadSizeColumnPos downloadSizeColumnVisible hpanedPos \ instVerColumnPos instVerColumnVisible instSizeColumnPos \ instSizeColumnVisible nameColumnPos nameColumnVisible \ sectionColumnPos sectionColumnVisible statusColumnPos \ statusColumnVisible supportedColumnPos supportedColumnVisible \ vpanedPos windowWidth windowHeight windowX windowY closeZvt \ color-available color-available-locked color-broken color-downgrade \ color-install color-installed-locked color-installed-outdated \ color-installed-updated color-new color-purge color-reinstall \ color-remove color-upgrade syn keyword aptconfSynapticUpdate contained \ last type syn cluster aptconfSynaptic_ contains=aptconfSynaptic, \ aptconfSynapticUpdate " }}} " Unattended Upgrade: {{{ syn keyword aptconfUnattendedUpgrade contained \ AutoFixInterruptedDpkg Automatic-Reboot Automatic-Reboot-Time \ Automatic-Reboot-WithUsers InstallOnShutdown Mail MailOnlyOnError \ MinimalSteps Origins-Pattern Package-Blacklist \ Remove-Unused-Dependencies syn cluster aptconfUnattendedUpgrade_ contains=aptconfUnattendedUpgrade " }}} " Whatmaps: {{{ syn keyword aptconfWhatmaps contained \ Enable-Restart Security-Update-Origins syn cluster aptconfWhatmaps_ contains=aptconfWhatmaps " }}} syn case match " Now put all the keywords (and 'valid' options) in a single cluster: syn cluster aptconfOptions contains=aptconfRegexpOpt, \ @aptconfAcquire_,@aptconfAdequate_,@aptconfApt_,@aptconfAptitude_, \ @aptconfAptListbugs_,@aptconfDebTags_,@aptconfDebug_,@aptconfDir_, \ @aptconfDPkg_,@aptconfDSelect_,@aptconfOrderList_, \ @aptconfPackageManager_,@aptconfPkgCacheGen_,@aptconfQuiet_, \ @aptconfRpm_,@aptconfSynaptic_,@aptconfUnattendedUpgrade_, \ @aptconfWhatmaps_ " Syntax: syn match aptconfSemiColon ';' syn match aptconfDoubleColon '::' syn match aptconfCurlyBraces '[{}]' syn region aptconfValue start='"' end='"' oneline display syn region aptconfInclude matchgroup=aptconfOperator start='{' end='}' contains=ALLBUT,aptconfGroup,aptconfGroupIncomplete,@aptconfCommentSpecial syn region aptconfInclude matchgroup=aptconfOperator start='::' end='{'me=s-1 contains=@aptconfOptions,aptconfError display syn region aptconfInclude matchgroup=aptconfOperator start='::' end='::\|\s'me=s-1 oneline contains=@aptconfOptions,aptconfError display " Basic Syntax Errors: XXX avoid to generate false positives !!! " " * Undocumented inline comment. Since it is currently largely used, and does " not seem to cause trouble ('apt-config dump' never complains when # is used " the same way than //) it has been moved to aptconfComment group. But it " still needs to be defined here (i.e. before #clear and #include directives) syn match aptconfComment '#.*' contains=@aptconfCommentSpecial " " * When a semicolon is missing after a double-quoted string: " There are some cases (for example in the Dir group of options, but not only) " where this syntax is valid. So we don't treat it as a strict error. syn match aptconfAsError display '"[^"]*"[^;]'me=e-1 syn match aptconfAsError display '"[^"]*"$' " " * When double quotes are missing around a value (before a semicolon): " This omission has no effect if the value is a single string (without blank " characters). But apt.conf(5) says that quotes are required, and this item " avoids to match unquoted keywords. syn match aptconfAsError display '\s[^"[:blank:]]*[^}"];'me=e-1 " " * When only one double quote is missing around a value (before a semicolon): " No comment for that: it must be highly visible. syn match aptconfError display '\(\s\|;\)"[^"[:blank:]]\+;'me=e-1 syn match aptconfError display '\(\s\|;\)[^"[:blank:]]\+";'me=e-1 " " * When space is missing between option and (quoted) value: " TODO (partially implemented) syn match aptconfError display '::[^[:blank:]]*"' " Special Actions: syn match aptconfAction '^#\(clear\|include\)\>' syn region aptconfAction matchgroup=aptconfAction start='^#clear\>' end=';'me=s-1 oneline contains=aptconfGroup,aptconfDoubleColon,@aptconfOptions syn region aptconfAction matchgroup=aptconfAction start='^#include\>' end=';'me=s-1 oneline contains=aptconfRegexpOpt " Comments: syn keyword aptconfTodo TODO FIXME NOTE XXX contained syn cluster aptconfCommentSpecial contains=@Spell,aptconfTodo syn match aptconfComment '//.*' contains=@aptconfCommentSpecial syn region aptconfComment start='/\*' end='\*/' contains=@aptconfCommentSpecial " Highlight Definitions: hi def link aptconfTodo Todo hi def link aptconfError Error hi def link aptconfComment Comment hi def link aptconfOperator Operator hi def link aptconfAction PreProc hi def link aptconfOption Type hi def link aptconfValue String hi def link aptconfRegexpOpt Normal hi def link aptconfAsError Special hi def link aptconfSemiColon aptconfOperator hi def link aptconfDoubleColon aptconfOperator hi def link aptconfCurlyBraces aptconfOperator hi def link aptconfGroupIncomplete Special hi def link aptconfGroup aptconfOption hi def link aptconfAcquire aptconfOption hi def link aptconfAcquireCDROM aptconfOption hi def link aptconfAcquireCompressionTypes aptconfOption hi def link aptconfAcquireFTP aptconfOption hi def link aptconfAcquireHTTP aptconfOption hi def link aptconfAcquireHTTPS aptconfOption hi def link aptconfAcquireMaxValidTime aptconfOption hi def link aptconfAcquirePDiffs aptconfOption hi def link aptconfAdequate aptconfOption hi def link aptconfApt aptconfOption hi def link aptconfAptAuthentication aptconfOption hi def link aptconfAptAutoRemove aptconfOption hi def link aptconfAptCache aptconfOption hi def link aptconfAptCDROM aptconfOption hi def link aptconfAptChangelogs aptconfOption hi def link aptconfAptCompressor aptconfOption hi def link aptconfAptCompressorAll aptconfOption hi def link aptconfAptGet aptconfOption hi def link aptconfAptPeriodic aptconfOption hi def link aptconfAptUpdate aptconfOption hi def link aptconfAptitude aptconfOption hi def link aptconfAptitudeCmdline aptconfOption hi def link aptconfAptitudeCmdlineProgress aptconfOption hi def link aptconfAptitudeCmdlineSafeUpgrade aptconfOption hi def link aptconfAptitudeLogging aptconfOption hi def link aptconfAptitudeProblemResolver aptconfOption hi def link aptconfAptitudeSafeResolver aptconfOption hi def link aptconfAptitudeScreenshot aptconfOption hi def link aptconfAptitudeSections aptconfOption hi def link aptconfAptitudeUI aptconfOption hi def link aptconfAptitudeUIKeyBindings aptconfOption hi def link aptconfAptitudeUIStyles aptconfOption hi def link aptconfAptitudeUIStylesElements aptconfOption hi def link aptconfAptListbugs aptconfOption hi def link aptconfDebTags aptconfOption hi def link aptconfDebug aptconfOption hi def link aptconfDebugAcquire aptconfOption hi def link aptconfDebugPkgAcquire aptconfOption hi def link aptconfDebugPkgDepCache aptconfOption hi def link aptconfDebugPkgProblemResolver aptconfOption hi def link aptconfDir aptconfOption hi def link aptconfDirAptitude aptconfOption hi def link aptconfDirBin aptconfOption hi def link aptconfDirCache aptconfOption hi def link aptconfDirEtc aptconfOption hi def link aptconfDirLog aptconfOption hi def link aptconfDirMedia aptconfOption hi def link aptconfDirState aptconfOption hi def link aptconfDPkg aptconfOption hi def link aptconfDPkgTools aptconfOption hi def link aptconfDSelect aptconfOption hi def link aptconfOrderList aptconfOption hi def link aptconfOrderListScore aptconfOption hi def link aptconfPackageManager aptconfOption hi def link aptconfPkgCacheGen aptconfOption hi def link aptconfQuiet aptconfOption hi def link aptconfRpm aptconfOption hi def link aptconfSynaptic aptconfOption hi def link aptconfSynapticUpdate aptconfOption hi def link aptconfUnattendedUpgrade aptconfOption hi def link aptconfWhatmaps aptconfOption let b:current_syntax = "aptconf" let &cpo = s:cpo_save unlet s:cpo_save PK!1vim80/syntax/objc.vimnu[" Vim syntax file " Language: Objective-C " Maintainer: Kazunobu Kuriyama " Last Change: 2015 Dec 14 """ Preparation for loading ObjC stuff if exists("b:current_syntax") finish endif if &filetype != 'objcpp' syn clear runtime! syntax/c.vim endif let s:cpo_save = &cpo set cpo&vim """ ObjC proper stuff follows... syn keyword objcPreProcMacro __OBJC__ __OBJC2__ __clang__ " Defined Types syn keyword objcPrincipalType id Class SEL IMP BOOL instancetype syn keyword objcUsefulTerm nil Nil NO YES " Preprocessor Directives syn region objcImported display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match objcImported display contained "\(<\h[-a-zA-Z0-9_/]*\.h>\|<[a-z0-9]\+>\)" syn match objcImport display "^\s*\(%:\|#\)\s*import\>\s*["<]" contains=objcImported " ObjC Compiler Directives syn match objcObjDef display /@interface\>\|@implementation\>\|@end\>\|@class\>/ syn match objcProtocol display /@protocol\>\|@optional\>\|@required\>/ syn match objcProperty display /@property\>\|@synthesize\>\|@dynamic\>/ syn match objcIvarScope display /@private\>\|@protected\>\|@public\>\|@package\>/ syn match objcInternalRep display /@selector\>\|@encode\>/ syn match objcException display /@try\>\|@throw\>\|@catch\|@finally\>/ syn match objcThread display /@synchronized\>/ syn match objcPool display /@autoreleasepool\>/ syn match objcModuleImport display /@import\>/ " ObjC Constant Strings syn match objcSpecial display contained "%@" syn region objcString start=+\(@"\|"\)+ skip=+\\\\\|\\"+ end=+"+ contains=cFormat,cSpecial,objcSpecial " ObjC Hidden Arguments syn keyword objcHiddenArgument self _cmd super " ObjC Type Qualifiers for Blocks syn keyword objcBlocksQualifier __block " ObjC Type Qualifiers for Object Lifetime syn keyword objcObjectLifetimeQualifier __strong __weak __unsafe_unretained __autoreleasing " ObjC Type Qualifiers for Toll-Free Bridge syn keyword objcTollFreeBridgeQualifier __bridge __bridge_retained __bridge_transfer " ObjC Type Qualifiers for Remote Messaging syn match objcRemoteMessagingQualifier display contained /\((\s*oneway\s\+\|(\s*in\s\+\|(\s*out\s\+\|(\s*inout\s\+\|(\s*bycopy\s\+\(in\(out\)\?\|out\)\?\|(\s*byref\s\+\(in\(out\)\?\|out\)\?\)/hs=s+1 " ObjC Storage Classes syn keyword objcStorageClass _Nullable _Nonnull _Null_unspecified syn keyword objcStorageClass __nullable __nonnull __null_unspecified syn keyword objcStorageClass nullable nonnull null_unspecified " ObjC type specifier syn keyword objcTypeSpecifier __kindof __covariant " ObjC Type Infomation Parameters syn keyword objcTypeInfoParams ObjectType KeyType " shorthand syn cluster objcTypeQualifier contains=objcBlocksQualifier,objcObjectLifetimeQualifier,objcTollFreeBridgeQualifier,objcRemoteMessagingQualifier " ObjC Fast Enumeration syn match objcFastEnumKeyword display /\sin\(\s\|$\)/ " ObjC Literal Syntax syn match objcLiteralSyntaxNumber display /@\(YES\>\|NO\>\|\d\|-\|+\)/ contains=cNumber,cFloat,cOctal syn match objcLiteralSyntaxSpecialChar display /@'/ contains=cSpecialCharacter syn match objcLiteralSyntaxChar display /@'[^\\]'/ syn match objcLiteralSyntaxOp display /@\((\|\[\|{\)/me=e-1,he=e-1 " ObjC Declared Property Attributes syn match objDeclPropAccessorNameAssign display /\s*=\s*/ contained syn region objcDeclPropAccessorName display start=/\(getter\|setter\)/ end=/\h\w*/ contains=objDeclPropAccessorNameAssign syn keyword objcDeclPropAccessorType readonly readwrite contained syn keyword objcDeclPropAssignSemantics assign retain copy contained syn keyword objcDeclPropAtomicity nonatomic contained syn keyword objcDeclPropARC strong weak contained syn match objcDeclPropNullable /\((\|\s\)nullable\(,\|)\)/ms=s+1,hs=s+1,me=e-1,he=e-1 contained syn match objcDeclPropNonnull /\((\|\s\)nonnull\(,\|)\)/ms=s+1,hs=s+1,me=e-1,he=e-1 contained syn match objcDeclPropNullUnspecified /\((\|\s\)null_unspecified\(,\|)\)/ms=s+1,hs=s+1,me=e-1,he=e-1 contained syn keyword objcDeclProcNullResettable null_resettable contained syn region objcDeclProp display transparent keepend start=/@property\s*(/ end=/)/ contains=objcProperty,objcDeclPropAccessorName,objcDeclPropAccessorType,objcDeclPropAssignSemantics,objcDeclPropAtomicity,objcDeclPropARC,objcDeclPropNullable,objcDeclPropNonnull,objcDeclPropNullUnspecified,objcDeclProcNullResettable " To distinguish colons in methods and dictionaries from those in C's labels. syn match objcColon display /^\s*\h\w*\s*\:\(\s\|.\)/me=e-1,he=e-1 " To distinguish a protocol list from system header files syn match objcProtocolList display /<\h\w*\(\s*,\s*\h\w*\)*>/ contains=objcPrincipalType,cType,Type,objcType,objcTypeInfoParams " Type info for collection classes syn match objcTypeInfo display /<\h\w*\s*<\(\h\w*\s*\**\|\h\w*\)>>/ contains=objcPrincipalType,cType,Type,objcType,objcTypeInfoParams " shorthand syn cluster objcCEntities contains=cType,cStructure,cStorageClass,cString,cCharacter,cSpecialCharacter,cNumbers,cConstant,cOperator,cComment,cCommentL,cStatement,cLabel,cConditional,cRepeat syn cluster objcObjCEntities contains=objcHiddenArgument,objcPrincipalType,objcString,objcUsefulTerm,objcProtocol,objcInternalRep,objcException,objcThread,objcPool,objcModuleImport,@objcTypeQualifier,objcLiteralSyntaxNumber,objcLiteralSyntaxOp,objcLiteralSyntaxChar,objcLiteralSyntaxSpecialChar,objcProtocolList,objcColon,objcFastEnumKeyword,objcType,objcClass,objcMacro,objcEnum,objcEnumValue,objcExceptionValue,objcNotificationValue,objcConstVar,objcPreProcMacro,objcTypeInfo " Objective-C Message Expressions syn region objcMethodCall start=/\[/ end=/\]/ contains=objcMethodCall,objcBlocks,@objcObjCEntities,@objcCEntities " To distinguish class method and instance method syn match objcInstanceMethod display /^s*-\s*/ syn match objcClassMethod display /^s*+\s*/ " ObjC Blocks syn region objcBlocks start=/\(\^\s*([^)]\+)\s*{\|\^\s*{\)/ end=/}/ contains=objcBlocks,objcMethodCall,@objcObjCEntities,@objcCEntities syn cluster cParenGroup add=objcMethodCall syn cluster cPreProcGroup add=objcMethodCall """ Foundation Framework syn match objcClass /Protocol\s*\*/me=s+8,he=s+8 """"""""""""""""" " NSObjCRuntime.h syn keyword objcType NSInteger NSUInteger NSComparator syn keyword objcEnum NSComparisonResult syn keyword objcEnumValue NSOrderedAscending NSOrderedSame NSOrderedDescending syn keyword objcEnum NSEnumerationOptions syn keyword objcEnumValue NSEnumerationConcurrent NSEnumerationReverse syn keyword objcEnum NSSortOptions syn keyword objcEnumValue NSSortConcurrent NSSortStable syn keyword objcEnumValue NSNotFound syn keyword objcMacro NSIntegerMax NSIntegerMin NSUIntegerMax syn keyword objcMacro NS_INLINE NS_BLOCKS_AVAILABLE NS_NONATOMIC_IOSONLY NS_FORMAT_FUNCTION NS_FORMAT_ARGUMENT NS_RETURNS_RETAINED NS_RETURNS_NOT_RETAINED NS_RETURNS_INNER_POINTER NS_AUTOMATED_REFCOUNT_UNAVAILABLE NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE NS_REQUIRES_PROPERTY_DEFINITIONS NS_REPLACES_RECEIVER NS_RELEASES_ARGUMENT NS_VALID_UNTIL_END_OF_SCOPE NS_ROOT_CLASS NS_REQUIRES_SUPER NS_PROTOCOL_REQUIRES_EXPLICIT_IMPLEMENTATION NS_DESIGNATED_INITIALIZER NS_REQUIRES_NIL_TERMINATION syn keyword objcEnum NSQualityOfService syn keyword objcEnumValue NSQualityOfServiceUserInteractive NSQualityOfServiceUserInitiated NSQualityOfServiceUtility NSQualityOfServiceBackground NSQualityOfServiceDefault " NSRange.h syn keyword objcType NSRange NSRangePointer " NSGeometry.h syn keyword objcType NSPoint NSPointPointer NSPointArray NSSize NSSizePointer NSSizeArray NSRect NSRectPointer NSRectArray NSEdgeInsets syn keyword objcEnum NSRectEdge syn keyword objcEnumValue NSMinXEdge NSMinYEdge NSMaxXEdge NSMaxYEdge syn keyword objcEnumValue NSRectEdgeMinX NSRectEdgeMinY NSRectEdgeMaxX NSRectEdgeMaxY syn keyword objcConstVar NSZeroPoint NSZeroSize NSZeroRect NSEdgeInsetsZero syn keyword cType CGFloat CGPoint CGSize CGRect syn keyword objcEnum NSAlignmentOptions syn keyword objcEnumValue NSAlignMinXInward NSAlignMinYInward NSAlignMaxXInward NSAlignMaxYInward NSAlignWidthInward NSAlignHeightInward NSAlignMinXOutward NSAlignMinYOutward NSAlignMaxXOutward NSAlignMaxYOutward NSAlignWidthOutward NSAlignHeightOutward NSAlignMinXNearest NSAlignMinYNearest NSAlignMaxXNearest NSAlignMaxYNearest NSAlignWidthNearest NSAlignHeightNearest NSAlignRectFlipped NSAlignAllEdgesInward NSAlignAllEdgesOutward NSAlignAllEdgesNearest " NSDecimal.h syn keyword objcType NSDecimal syn keyword objcEnum NSRoundingMode syn keyword objcEnumValue NSRoundPlain NSRoundDown NSRoundUp NSRoundBankers syn keyword objcEnum NSCalculationError syn keyword objcEnumValue NSCalculationNoError NSCalculationLossOfPrecision NSCalculationUnderflow NSCalculationOverflow NSCalculationDivideByZero syn keyword objcConstVar NSDecimalMaxSize NSDecimalNoScale " NSDate.h syn match objcClass /NSDate\s*\*/me=s+6,he=s+6 syn keyword objcType NSTimeInterval syn keyword objcNotificationValue NSSystemClockDidChangeNotification syn keyword objcMacro NSTimeIntervalSince1970 " NSZone.h syn match objcType /NSZone\s*\*/me=s+6,he=s+6 syn keyword objcEnumValue NSScannedOption NSCollectorDisabledOption " NSError.h syn match objcClass /NSError\s*\*/me=s+7,he=s+7 syn keyword objcConstVar NSCocoaErrorDomain NSPOSIXErrorDomain NSOSStatusErrorDomain NSMachErrorDomain NSUnderlyingErrorKey NSLocalizedDescriptionKey NSLocalizedFailureReasonErrorKey NSLocalizedRecoverySuggestionErrorKey NSLocalizedRecoveryOptionsErrorKey NSRecoveryAttempterErrorKey NSHelpAnchorErrorKey NSStringEncodingErrorKey NSURLErrorKey NSFilePathErrorKey " NSException.h syn match objcClass /NSException\s*\*/me=s+11,he=s+11 syn match objcClass /NSAssertionHandler\s*\*/me=s+18,he=s+18 syn keyword objcType NSUncaughtExceptionHandler syn keyword objcConstVar NSGenericException NSRangeException NSInvalidArgumentException NSInternalInconsistencyException NSMallocException NSObjectInaccessibleException NSObjectNotAvailableException NSDestinationInvalidException NSPortTimeoutException NSInvalidSendPortException NSInvalidReceivePortException NSPortSendException NSPortReceiveException NSOldStyleException " NSNotification.h syn match objcClass /NSNotification\s*\*/me=s+14,he=s+14 syn match objcClass /NSNotificationCenter\s*\*/me=s+20,he=s+20 " NSDistributedNotificationCenter.h syn match objcClass /NSDistributedNotificationCenter\s*\*/me=s+31,he=s+31 syn keyword objcConstVar NSLocalNotificationCenterType syn keyword objcEnum NSNotificationSuspensionBehavior syn keyword objcEnumValue NSNotificationSuspensionBehaviorDrop NSNotificationSuspensionBehaviorCoalesce NSNotificationSuspensionBehaviorHold NSNotificationSuspensionBehaviorHold NSNotificationSuspensionBehaviorDeliverImmediately syn keyword objcEnumValue NSNotificationDeliverImmediately NSNotificationPostToAllSessions syn keyword objcEnum NSDistributedNotificationOptions syn keyword objcEnumValue NSDistributedNotificationDeliverImmediately NSDistributedNotificationPostToAllSessions " NSNotificationQueue.h syn match objcClass /NSNotificationQueue\s*\*/me=s+19,he=s+19 syn keyword objcEnum NSPostingStyle syn keyword objcEnumValue NSPostWhenIdle NSPostASAP NSPostNow syn keyword objcEnum NSNotificationCoalescing syn keyword objcEnumValue NSNotificationNoCoalescing NSNotificationCoalescingOnName NSNotificationCoalescingOnSender " NSEnumerator.h syn match objcClass /NSEnumerator\s*\*/me=s+12,he=s+12 syn match objcClass /NSEnumerator<.*>\s*\*/me=s+12,he=s+12 contains=objcTypeInfoParams syn keyword objcType NSFastEnumerationState " NSIndexSet.h syn match objcClass /NSIndexSet\s*\*/me=s+10,he=s+10 syn match objcClass /NSMutableIndexSet\s*\*/me=s+17,he=s+17 " NSCharecterSet.h syn match objcClass /NSCharacterSet\s*\*/me=s+14,he=s+14 syn match objcClass /NSMutableCharacterSet\s*\*/me=s+21,he=s+21 syn keyword objcConstVar NSOpenStepUnicodeReservedBase " NSURL.h syn match objcClass /NSURL\s*\*/me=s+5,he=s+5 syn keyword objcEnum NSURLBookmarkCreationOptions syn keyword objcEnumValue NSURLBookmarkCreationPreferFileIDResolution NSURLBookmarkCreationMinimalBookmark NSURLBookmarkCreationSuitableForBookmarkFile NSURLBookmarkCreationWithSecurityScope NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess syn keyword objcEnum NSURLBookmarkResolutionOptions syn keyword objcEnumValue NSURLBookmarkResolutionWithoutUI NSURLBookmarkResolutionWithoutMounting NSURLBookmarkResolutionWithSecurityScope syn keyword objcType NSURLBookmarkFileCreationOptions syn keyword objcConstVar NSURLFileScheme NSURLKeysOfUnsetValuesKey syn keyword objcConstVar NSURLNameKey NSURLLocalizedNameKey NSURLIsRegularFileKey NSURLIsDirectoryKey NSURLIsSymbolicLinkKey NSURLIsVolumeKey NSURLIsPackageKey NSURLIsApplicationKey NSURLApplicationIsScriptableKey NSURLIsSystemImmutableKey NSURLIsUserImmutableKey NSURLIsHiddenKey NSURLHasHiddenExtensionKey NSURLCreationDateKey NSURLContentAccessDateKey NSURLContentModificationDateKey NSURLAttributeModificationDateKey NSURLLinkCountKey NSURLParentDirectoryURLKey NSURLVolumeURLKey NSURLTypeIdentifierKey NSURLLocalizedTypeDescriptionKey NSURLLabelNumberKey NSURLLabelColorKey NSURLLocalizedLabelKey NSURLEffectiveIconKey NSURLCustomIconKey NSURLFileResourceIdentifierKey NSURLVolumeIdentifierKey NSURLPreferredIOBlockSizeKey NSURLIsReadableKey NSURLIsWritableKey NSURLIsExecutableKey NSURLFileSecurityKey NSURLIsExcludedFromBackupKey NSURLTagNamesKey NSURLPathKey NSURLIsMountTriggerKey NSURLGenerationIdentifierKey NSURLDocumentIdentifierKey NSURLAddedToDirectoryDateKey NSURLQuarantinePropertiesKey NSURLFileResourceTypeKey syn keyword objcConstVar NSURLFileResourceTypeNamedPipe NSURLFileResourceTypeCharacterSpecial NSURLFileResourceTypeDirectory NSURLFileResourceTypeBlockSpecial NSURLFileResourceTypeRegular NSURLFileResourceTypeSymbolicLink NSURLFileResourceTypeSocket NSURLFileResourceTypeUnknown NSURLThumbnailDictionaryKey NSURLThumbnailKey NSThumbnail1024x1024SizeKey syn keyword objcConstVar NSURLFileSizeKey NSURLFileAllocatedSizeKey NSURLTotalFileSizeKey NSURLTotalFileAllocatedSizeKey NSURLIsAliasFileKey NSURLFileProtectionKey NSURLFileProtectionNone NSURLFileProtectionComplete NSURLFileProtectionCompleteUnlessOpen NSURLFileProtectionCompleteUntilFirstUserAuthentication syn keyword objcConstVar NSURLVolumeLocalizedFormatDescriptionKey NSURLVolumeTotalCapacityKey NSURLVolumeAvailableCapacityKey NSURLVolumeResourceCountKey NSURLVolumeSupportsPersistentIDsKey NSURLVolumeSupportsSymbolicLinksKey NSURLVolumeSupportsHardLinksKey NSURLVolumeSupportsJournalingKey NSURLVolumeIsJournalingKey NSURLVolumeSupportsSparseFilesKey NSURLVolumeSupportsZeroRunsKey NSURLVolumeSupportsCaseSensitiveNamesKey NSURLVolumeSupportsCasePreservedNamesKey NSURLVolumeSupportsRootDirectoryDatesKey NSURLVolumeSupportsVolumeSizesKey NSURLVolumeSupportsRenamingKey NSURLVolumeSupportsAdvisoryFileLockingKey NSURLVolumeSupportsExtendedSecurityKey NSURLVolumeIsBrowsableKey NSURLVolumeMaximumFileSizeKey NSURLVolumeIsEjectableKey NSURLVolumeIsRemovableKey NSURLVolumeIsInternalKey NSURLVolumeIsAutomountedKey NSURLVolumeIsLocalKey NSURLVolumeIsReadOnlyKey NSURLVolumeCreationDateKey NSURLVolumeURLForRemountingKey NSURLVolumeUUIDStringKey NSURLVolumeNameKey NSURLVolumeLocalizedNameKey syn keyword objcConstVar NSURLIsUbiquitousItemKey NSURLUbiquitousItemHasUnresolvedConflictsKey NSURLUbiquitousItemIsDownloadedKey NSURLUbiquitousItemIsDownloadingKey NSURLUbiquitousItemIsUploadedKey NSURLUbiquitousItemIsUploadingKey NSURLUbiquitousItemPercentDownloadedKey NSURLUbiquitousItemPercentUploadedKey NSURLUbiquitousItemDownloadingStatusKey NSURLUbiquitousItemDownloadingErrorKey NSURLUbiquitousItemUploadingErrorKey NSURLUbiquitousItemDownloadRequestedKey NSURLUbiquitousItemContainerDisplayNameKey NSURLUbiquitousItemDownloadingStatusNotDownloaded NSURLUbiquitousItemDownloadingStatusDownloaded NSURLUbiquitousItemDownloadingStatusCurrent """""""""""" " NSString.h syn match objcClass /NSString\s*\*/me=s+8,he=s+8 syn match objcClass /NSMutableString\s*\*/me=s+15,he=s+15 syn keyword objcType unichar syn keyword objcExceptionValue NSParseErrorException NSCharacterConversionException syn keyword objcMacro NSMaximumStringLength syn keyword objcEnum NSStringCompareOptions syn keyword objcEnumValue NSCaseInsensitiveSearch NSLiteralSearch NSBackwardsSearch NSAnchoredSearch NSNumericSearch NSDiacriticInsensitiveSearch NSWidthInsensitiveSearch NSForcedOrderingSearch NSRegularExpressionSearch syn keyword objcEnum NSStringEncoding syn keyword objcEnumValue NSProprietaryStringEncoding syn keyword objcEnumValue NSASCIIStringEncoding NSNEXTSTEPStringEncoding NSJapaneseEUCStringEncoding NSUTF8StringEncoding NSISOLatin1StringEncoding NSSymbolStringEncoding NSNonLossyASCIIStringEncoding NSShiftJISStringEncoding NSISOLatin2StringEncoding NSUnicodeStringEncoding NSWindowsCP1251StringEncoding NSWindowsCP1252StringEncoding NSWindowsCP1253StringEncoding NSWindowsCP1254StringEncoding NSWindowsCP1250StringEncoding NSISO2022JPStringEncoding NSMacOSRomanStringEncoding NSUTF16StringEncoding NSUTF16BigEndianStringEncoding NSUTF16LittleEndianStringEncoding NSUTF32StringEncoding NSUTF32BigEndianStringEncoding NSUTF32LittleEndianStringEncoding syn keyword objcEnum NSStringEncodingConversionOptions syn keyword objcEnumValue NSStringEncodingConversionAllowLossy NSStringEncodingConversionExternalRepresentation syn keyword objcEnum NSStringEnumerationOptions syn keyword objcEnumValue NSStringEnumerationByLines NSStringEnumerationByParagraphs NSStringEnumerationByComposedCharacterSequences NSStringEnumerationByWords NSStringEnumerationBySentences NSStringEnumerationReverse NSStringEnumerationSubstringNotRequired NSStringEnumerationLocalized syn keyword objcConstVar NSStringTransformLatinToKatakana NSStringTransformLatinToHiragana NSStringTransformLatinToHangul NSStringTransformLatinToArabic NSStringTransformLatinToHebrew NSStringTransformLatinToThai NSStringTransformLatinToCyrillic NSStringTransformLatinToGreek NSStringTransformToLatin NSStringTransformMandarinToLatin NSStringTransformHiraganaToKatakana NSStringTransformFullwidthToHalfwidth NSStringTransformToXMLHex NSStringTransformToUnicodeName NSStringTransformStripCombiningMarks NSStringTransformStripDiacritics syn keyword objcConstVar NSStringEncodingDetectionSuggestedEncodingsKey NSStringEncodingDetectionDisallowedEncodingsKey NSStringEncodingDetectionUseOnlySuggestedEncodingsKey NSStringEncodingDetectionAllowLossyKey NSStringEncodingDetectionFromWindowsKey NSStringEncodingDetectionLossySubstitutionKey NSStringEncodingDetectionLikelyLanguageKey " NSAttributedString.h syn match objcClass /NSAttributedString\s*\*/me=s+18,he=s+18 syn match objcClass /NSMutableAttributedString\s*\*/me=s+25,he=s+25 syn keyword objcEnum NSAttributedStringEnumerationOptions syn keyword objcEnumValue NSAttributedStringEnumerationReverse NSAttributedStringEnumerationLongestEffectiveRangeNotRequired " NSValue.h syn match objcClass /NSValue\s*\*/me=s+7,he=s+7 syn match objcClass /NSNumber\s*\*/me=s+8,he=s+8 " NSDecimalNumber.h syn match objcClass /NSDecimalNumber\s*\*/me=s+15,he=s+15 syn match objcClass /NSDecimalNumberHandler\s*\*/me=s+22,he=s+22 syn keyword objcExceptionValue NSDecimalNumberExactnessException NSDecimalNumberOverflowException NSDecimalNumberUnderflowException NSDecimalNumberDivideByZeroException " NSData.h syn match objcClass /NSData\s*\*/me=s+6,he=s+6 syn match objcClass /NSMutableData\s*\*/me=s+13,he=s+13 syn keyword objcEnum NSDataReadingOptions syn keyword objcEnumValue NSDataReadingMappedIfSafe NSDataReadingUncached NSDataReadingMappedAlways NSDataReadingMapped NSMappedRead NSUncachedRead syn keyword objcEnum NSDataWritingOptions syn keyword objcEnumValue NSDataWritingAtomic NSDataWritingWithoutOverwriting NSDataWritingFileProtectionNone NSDataWritingFileProtectionComplete NSDataWritingFileProtectionCompleteUnlessOpen NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication NSDataWritingFileProtectionMask NSAtomicWrite syn keyword objcEnum NSDataSearchOptions syn keyword objcEnumValue NSDataSearchBackwards NSDataSearchAnchored syn keyword objcEnum NSDataBase64EncodingOptions NSDataBase64DecodingOptions syn keyword objcEnumValue NSDataBase64Encoding64CharacterLineLength NSDataBase64Encoding76CharacterLineLength NSDataBase64EncodingEndLineWithCarriageReturn NSDataBase64EncodingEndLineWithLineFeed NSDataBase64DecodingIgnoreUnknownCharacters " NSArray.h syn match objcClass /NSArray\s*\*/me=s+7,he=s+7 syn match objcClass /NSArray<.*>\s*\*/me=s+7,he=s+7 contains=objcTypeInfoParams syn match objcClass /NSMutableArray\s*\*/me=s+14,he=s+14 syn match objcClass /NSMutableArray<.*>\s*\*/me=s+14,he=s+14 contains=objcTypeInfoParams syn keyword objcEnum NSBinarySearchingOptions syn keyword objcEnumValue NSBinarySearchingFirstEqual NSBinarySearchingLastEqual NSBinarySearchingInsertionIndex " NSDictionary.h syn match objcClass /NSDictionary\s*\*/me=s+12,he=s+12 syn match objcClass /NSDictionary<.*>\s*\*/me=s+12,he=s+12 contains=objcTypeInfoParams syn match objcClass /NSMutableDictionary\s*\*/me=s+19,he=s+19 syn match objcClass /NSMutableDictionary<.*>\s*\*/me=s+19,he=s+19 contains=objcTypeInfoParams " NSSet.h syn match objcClass /NSSet\s*\*/me=s+5,me=s+5 syn match objcClass /NSSet<.*>\s*\*/me=s+5,me=s+5 contains=objcTypeInfoParams syn match objcClass /NSMutableSet\s*\*/me=s+12,me=s+12 syn match objcClass /NSMutableSet<.*>\s*\*/me=s+12,me=s+12 contains=objcTypeInfoParams syn match objcClass /NSCountedSet\s*\*/me=s+12,me=s+12 syn match objcClass /NSCountedSet<.*>\s*\*/me=s+12,me=s+12 contains=objcTypeInfoParams " NSOrderedSet.h syn match objcClass /NSOrderedSet\s*\*/me=s+12,me=s+12 syn match objcClass /NSOrderedSet<.*>\s*\*/me=s+12,me=s+12 contains=objcTypeInfoParams syn match objcClass /NSMutableOrderedSet\s*\*/me=s+19,me=s+19 syn match objcClass /NSMutableOrderedSet<.*>\s*\*/me=s+19,me=s+19 """"""""""""""""""" " NSPathUtilities.h syn keyword objcEnum NSSearchPathDirectory syn keyword objcEnumValue NSApplicationDirectory NSDemoApplicationDirectory NSDeveloperApplicationDirectory NSAdminApplicationDirectory NSLibraryDirectory NSDeveloperDirectory NSUserDirectory NSDocumentationDirectory NSDocumentDirectory NSCoreServiceDirectory NSAutosavedInformationDirectory NSDesktopDirectory NSCachesDirectory NSApplicationSupportDirectory NSDownloadsDirectory NSInputMethodsDirectory NSMoviesDirectory NSMusicDirectory NSPicturesDirectory NSPrinterDescriptionDirectory NSSharedPublicDirectory NSPreferencePanesDirectory NSApplicationScriptsDirectory NSItemReplacementDirectory NSAllApplicationsDirectory NSAllLibrariesDirectory NSTrashDirectory syn keyword objcEnum NSSearchPathDomainMask syn keyword objcEnumValue NSUserDomainMask NSLocalDomainMask NSNetworkDomainMask NSSystemDomainMask NSAllDomainsMask " NSFileManger.h syn match objcClass /NSFileManager\s*\*/me=s+13,he=s+13 syn match objcClass /NSDirectoryEnumerator\s*\*/me=s+21,he=s+21 contains=objcTypeInfoParams syn match objcClass /NSDirectoryEnumerator<.*>\s*\*/me=s+21,he=s+21 syn keyword objcEnum NSVolumeEnumerationOptions syn keyword objcEnumValue NSVolumeEnumerationSkipHiddenVolumes NSVolumeEnumerationProduceFileReferenceURLs syn keyword objcEnum NSURLRelationship syn keyword objcEnumValue NSURLRelationshipContains NSURLRelationshipSame NSURLRelationshipOther syn keyword objcEnum NSFileManagerUnmountOptions syn keyword objcEnumValue NSFileManagerUnmountAllPartitionsAndEjectDisk NSFileManagerUnmountWithoutUI syn keyword objcConstVar NSFileManagerUnmountDissentingProcessIdentifierErrorKey syn keyword objcEnum NSDirectoryEnumerationOptions syn keyword objcEnumValue NSDirectoryEnumerationSkipsSubdirectoryDescendants NSDirectoryEnumerationSkipsPackageDescendants NSDirectoryEnumerationSkipsHiddenFiles syn keyword objcEnum NSFileManagerItemReplacementOptions syn keyword objcEnumValue NSFileManagerItemReplacementUsingNewMetadataOnly NSFileManagerItemReplacementWithoutDeletingBackupItem syn keyword objcNotificationValue NSUbiquityIdentityDidChangeNotification syn keyword objcConstVar NSFileType NSFileTypeDirectory NSFileTypeRegular NSFileTypeSymbolicLink NSFileTypeSocket NSFileTypeCharacterSpecial NSFileTypeBlockSpecial NSFileTypeUnknown NSFileSize NSFileModificationDate NSFileReferenceCount NSFileDeviceIdentifier NSFileOwnerAccountName NSFileGroupOwnerAccountName NSFilePosixPermissions NSFileSystemNumber NSFileSystemFileNumber NSFileExtensionHidden NSFileHFSCreatorCode NSFileHFSTypeCode NSFileImmutable NSFileAppendOnly NSFileCreationDate NSFileOwnerAccountID NSFileGroupOwnerAccountID NSFileBusy NSFileProtectionKey NSFileProtectionNone NSFileProtectionComplete NSFileProtectionCompleteUnlessOpen NSFileProtectionCompleteUntilFirstUserAuthentication NSFileSystemSize NSFileSystemFreeSize NSFileSystemNodes NSFileSystemFreeNodes " NSFileHandle.h syn match objcClass /NSFileHandle\s*\*/me=s+12,he=s+12 syn keyword objcExceptionValue NSFileHandleOperationException syn keyword objcNotificationValue NSFileHandleReadCompletionNotification NSFileHandleReadToEndOfFileCompletionNotification NSFileHandleConnectionAcceptedNotification NSFileHandleDataAvailableNotification NSFileHandleNotificationDataItem NSFileHandleNotificationFileHandleItem NSFileHandleNotificationMonitorModes syn match objcClass /NSPipe\s*\*/me=s+6,he=s+6 """""""""""" " NSLocale.h syn match objcClass /NSLocale\s*\*/me=s+8,he=s+8 syn keyword objcEnum NSLocaleLanguageDirection syn keyword objcEnumValue NSLocaleLanguageDirectionUnknown NSLocaleLanguageDirectionLeftToRight NSLocaleLanguageDirectionRightToLeft NSLocaleLanguageDirectionTopToBottom NSLocaleLanguageDirectionBottomToTop syn keyword objcNotificationValue NSCurrentLocaleDidChangeNotification syn keyword objcConstVar NSLocaleIdentifier NSLocaleLanguageCode NSLocaleCountryCode NSLocaleScriptCode NSLocaleVariantCode NSLocaleExemplarCharacterSet NSLocaleCalendar NSLocaleCollationIdentifier NSLocaleUsesMetricSystem NSLocaleMeasurementSystem NSLocaleDecimalSeparator NSLocaleGroupingSeparator NSLocaleCurrencySymbol NSLocaleCurrencyCode NSLocaleCollatorIdentifier NSLocaleQuotationBeginDelimiterKey NSLocaleQuotationEndDelimiterKey NSLocaleAlternateQuotationBeginDelimiterKey NSLocaleAlternateQuotationEndDelimiterKey NSGregorianCalendar NSBuddhistCalendar NSChineseCalendar NSHebrewCalendar NSIslamicCalendar NSIslamicCivilCalendar NSJapaneseCalendar NSRepublicOfChinaCalendar NSPersianCalendar NSIndianCalendar NSISO8601Calendar " NSFormatter.h syn match objcClass /NSFormatter\s*\*/me=s+11,he=s+11 syn keyword objcEnum NSFormattingContext NSFormattingUnitStyle syn keyword objcEnumValue NSFormattingContextUnknown NSFormattingContextDynamic NSFormattingContextStandalone NSFormattingContextListItem NSFormattingContextBeginningOfSentence NSFormattingContextMiddleOfSentence NSFormattingUnitStyleShort NSFormattingUnitStyleMedium NSFormattingUnitStyleLong " NSNumberFormatter.h syn match objcClass /NSNumberFormatter\s*\*/me=s+17,he=s+17 syn keyword objcEnum NSNumberFormatterStyle syn keyword objcEnumValue NSNumberFormatterNoStyle NSNumberFormatterDecimalStyle NSNumberFormatterCurrencyStyle NSNumberFormatterPercentStyle NSNumberFormatterScientificStyle NSNumberFormatterSpellOutStyle NSNumberFormatterOrdinalStyle NSNumberFormatterCurrencyISOCodeStyle NSNumberFormatterCurrencyPluralStyle NSNumberFormatterCurrencyAccountingStyle syn keyword objcEnum NSNumberFormatterBehavior syn keyword objcEnumValue NSNumberFormatterBehaviorDefault NSNumberFormatterBehavior10_0 NSNumberFormatterBehavior10_4 syn keyword objcEnum NSNumberFormatterPadPosition syn keyword objcEnumValue NSNumberFormatterPadBeforePrefix NSNumberFormatterPadAfterPrefix NSNumberFormatterPadBeforeSuffix NSNumberFormatterPadAfterSuffix syn keyword objcEnum NSNumberFormatterRoundingMode syn keyword objcEnumValue NSNumberFormatterRoundCeiling NSNumberFormatterRoundFloor NSNumberFormatterRoundDown NSNumberFormatterRoundUp NSNumberFormatterRoundHalfEven NSNumberFormatterRoundHalfDown NSNumberFormatterRoundHalfUp " NSDateFormatter.h syn match objcClass /NSDateFormatter\s*\*/me=s+15,he=s+15 syn keyword objcEnum NSDateFormatterStyle syn keyword objcEnumValue NSDateFormatterNoStyle NSDateFormatterShortStyle NSDateFormatterMediumStyle NSDateFormatterLongStyle NSDateFormatterFullStyle syn keyword objcEnum NSDateFormatterBehavior syn keyword objcEnumValue NSDateFormatterBehaviorDefault NSDateFormatterBehavior10_0 NSDateFormatterBehavior10_4 " NSCalendar.h syn match objcClass /NSCalendar\s*\*/me=s+10,he=s+10 syn keyword objcConstVar NSCalendarIdentifierGregorian NSCalendarIdentifierBuddhist NSCalendarIdentifierChinese NSCalendarIdentifierCoptic NSCalendarIdentifierEthiopicAmeteMihret NSCalendarIdentifierEthiopicAmeteAlem NSCalendarIdentifierHebrew NSCalendarIdentifierISO8601 NSCalendarIdentifierIndian NSCalendarIdentifierIslamic NSCalendarIdentifierIslamicCivil NSCalendarIdentifierJapanese NSCalendarIdentifierPersian NSCalendarIdentifierRepublicOfChina NSCalendarIdentifierIslamicTabular NSCalendarIdentifierIslamicUmmAlQura syn keyword objcEnum NSCalendarUnit syn keyword objcEnumValue NSCalendarUnitEra NSCalendarUnitYear NSCalendarUnitMonth NSCalendarUnitDay NSCalendarUnitHour NSCalendarUnitMinute NSCalendarUnitSecond NSCalendarUnitWeekday NSCalendarUnitWeekdayOrdinal NSCalendarUnitQuarter NSCalendarUnitWeekOfMonth NSCalendarUnitWeekOfYear NSCalendarUnitYearForWeekOfYear NSCalendarUnitNanosecond NSCalendarUnitCalendar NSCalendarUnitTimeZone syn keyword objcEnumValue NSEraCalendarUnit NSYearCalendarUnit NSMonthCalendarUnit NSDayCalendarUnit NSHourCalendarUnit NSMinuteCalendarUnit NSSecondCalendarUnit NSWeekCalendarUnit NSWeekdayCalendarUnit NSWeekdayOrdinalCalendarUnit NSQuarterCalendarUnit NSWeekOfMonthCalendarUnit NSWeekOfYearCalendarUnit NSYearForWeekOfYearCalendarUnit NSCalendarCalendarUnit NSTimeZoneCalendarUnit syn keyword objcEnumValue NSWrapCalendarComponents NSUndefinedDateComponent NSDateComponentUndefined syn match objcClass /NSDateComponents\s*\*/me=s+16,he=s+16 syn keyword objcEnum NSCalendarOptions syn keyword objcEnumValue NSCalendarWrapComponents NSCalendarMatchStrictly NSCalendarSearchBackwards NSCalendarMatchPreviousTimePreservingSmallerUnits NSCalendarMatchNextTimePreservingSmallerUnits NSCalendarMatchNextTime NSCalendarMatchFirst NSCalendarMatchLast syn keyword objcConstVar NSCalendarDayChangedNotification " NSTimeZone.h syn match objcClass /NSTimeZone\s*\*/me=s+10,he=s+10 syn keyword objcEnum NSTimeZoneNameStyle syn keyword objcEnumValue NSTimeZoneNameStyleStandard NSTimeZoneNameStyleShortStandard NSTimeZoneNameStyleDaylightSaving NSTimeZoneNameStyleShortDaylightSaving NSTimeZoneNameStyleGeneric NSTimeZoneNameStyleShortGeneric syn keyword objcNotificationValue NSSystemTimeZoneDidChangeNotification """"""""""" " NSCoder.h syn match objcClass /NSCoder\s*\*/me=s+7,he=s+7 " NSArchiver.h syn match objcClass /NSArchiver\s*\*/me=s+10,he=s+10 syn match objcClass /NSUnarchiver\s*\*/me=s+12,he=s+12 syn keyword objcExceptionValue NSInconsistentArchiveException " NSKeyedArchiver.h syn match objcClass /NSKeyedArchiver\s*\*/me=s+15,he=s+15 syn match objcClass /NSKeyedUnarchiver\s*\*/me=s+17,he=s+17 syn keyword objcExceptionValue NSInvalidArchiveOperationException NSInvalidUnarchiveOperationException syn keyword objcConstVar NSKeyedArchiveRootObjectKey """""""""""""""""" " NSPropertyList.h syn keyword objcEnum NSPropertyListMutabilityOptions syn keyword objcEnumValue NSPropertyListImmutable NSPropertyListMutableContainers NSPropertyListMutableContainersAndLeaves syn keyword objcEnum NSPropertyListFormat syn keyword objcEnumValue NSPropertyListOpenStepFormat NSPropertyListXMLFormat_v1_0 NSPropertyListBinaryFormat_v1_0 syn keyword objcType NSPropertyListReadOptions NSPropertyListWriteOptions " NSUserDefaults.h syn match objcClass /NSUserDefaults\s*\*/me=s+14,he=s+14 syn keyword objcConstVar NSGlobalDomain NSArgumentDomain NSRegistrationDomain syn keyword objcNotificationValue NSUserDefaultsDidChangeNotification " NSBundle.h syn match objcClass /NSBundle\s*\*/me=s+8,he=s+8 syn keyword objcEnumValue NSBundleExecutableArchitectureI386 NSBundleExecutableArchitecturePPC NSBundleExecutableArchitectureX86_64 NSBundleExecutableArchitecturePPC64 syn keyword objcNotificationValue NSBundleDidLoadNotification NSLoadedClasses NSBundleResourceRequestLowDiskSpaceNotification syn keyword objcConstVar NSBundleResourceRequestLoadingPriorityUrgent """"""""""""""""" " NSProcessInfo.h syn match objcClass /NSProcessInfo\s*\*/me=s+13,he=s+13 syn keyword objcEnumValue NSWindowsNTOperatingSystem NSWindows95OperatingSystem NSSolarisOperatingSystem NSHPUXOperatingSystem NSMACHOperatingSystem NSSunOSOperatingSystem NSOSF1OperatingSystem syn keyword objcType NSOperatingSystemVersion syn keyword objcEnum NSActivityOptions NSProcessInfoThermalState syn keyword objcEnumValue NSActivityIdleDisplaySleepDisabled NSActivityIdleSystemSleepDisabled NSActivitySuddenTerminationDisabled NSActivityAutomaticTerminationDisabled NSActivityUserInitiated NSActivityUserInitiatedAllowingIdleSystemSleep NSActivityBackground NSActivityLatencyCritical NSProcessInfoThermalStateNominal NSProcessInfoThermalStateFair NSProcessInfoThermalStateSerious NSProcessInfoThermalStateCritical syn keyword objcNotificationValue NSProcessInfoThermalStateDidChangeNotification NSProcessInfoPowerStateDidChangeNotification " NSTask.h syn match objcClass /NSTask\s*\*/me=s+6,he=s+6 syn keyword objcEnum NSTaskTerminationReason syn keyword objcEnumValue NSTaskTerminationReasonExit NSTaskTerminationReasonUncaughtSignal syn keyword objcNotificationValue NSTaskDidTerminateNotification " NSThread.h syn match objcClass /NSThread\s*\*/me=s+8,he=s+8 syn keyword objcNotificationValue NSWillBecomeMultiThreadedNotification NSDidBecomeSingleThreadedNotification NSThreadWillExitNotification " NSLock.h syn match objcClass /NSLock\s*\*/me=s+6,he=s+6 syn match objcClass /NSConditionLock\s*\*/me=s+15,he=s+15 syn match objcClass /NSRecursiveLock\s*\*/me=s+15,he=s+15 " NSDictributedLock syn match objcClass /NSDistributedLock\s*\*/me=s+17,he=s+17 " NSOperation.h """""""""""""""" syn match objcClass /NSOperation\s*\*/me=s+11,he=s+11 syn keyword objcEnum NSOperationQueuePriority syn keyword objcEnumValue NSOperationQueuePriorityVeryLow NSOperationQueuePriorityLow NSOperationQueuePriorityNormal NSOperationQueuePriorityHigh NSOperationQueuePriorityVeryHigh syn match objcClass /NSBlockOperation\s*\*/me=s+16,he=s+16 syn match objcClass /NSInvocationOperation\s*\*/me=s+21,he=s+21 syn keyword objcExceptionValue NSInvocationOperationVoidResultException NSInvocationOperationCancelledException syn match objcClass /NSOperationQueue\s*\*/me=s+16,he=s+16 syn keyword objcEnumValue NSOperationQueueDefaultMaxConcurrentOperationCount " NSConnection.h syn match objcClass /NSConnection\s*\*/me=s+12,he=s+12 syn keyword objcConstVar NSConnectionReplyMode syn keyword objcNotificationValue NSConnectionDidDieNotification NSConnectionDidInitializeNotification syn keyword objcExceptionValue NSFailedAuthenticationException " NSPort.h syn match objcClass /NSPort\s*\*/me=s+6,he=s+6 syn keyword objcType NSSocketNativeHandle syn keyword objcNotificationValue NSPortDidBecomeInvalidNotification syn match objcClass /NSMachPort\s*\*/me=s+10,he=s+10 syn keyword objcEnum NSMachPortOptions syn keyword objcEnumValue NSMachPortDeallocateNone NSMachPortDeallocateSendRight NSMachPortDeallocateReceiveRight syn match objcClass /NSMessagePort\s*\*/me=s+13,he=s+13 syn match objcClass /NSSocketPort\s*\*/me=s+12,he=s+12 " NSPortMessage.h syn match objcClass /NSPortMessage\s*\*/me=s+13,he=s+13 " NSDistantObject.h syn match objcClass /NSDistantObject\s*\*/me=s+15,he=s+15 " NSPortNameServer.h syn match objcClass /NSPortNameServer\s*\*/me=s+16,he=s+16 syn match objcClass /NSMessagePortNameServer\s*\*/me=s+23,he=s+23 syn match objcClass /NSSocketPortNameServer\s*\*/me=s+22,he=s+22 " NSHost.h syn match objcClass /NSHost\s*\*/me=s+6,he=s+6 " NSInvocation.h syn match objcClass /NSInvocation\s*\*/me=s+12,he=s+12 " NSMethodSignature.h syn match objcClass /NSMethodSignature\s*\*/me=s+17,he=s+17 """"" " NSScanner.h syn match objcClass /NSScanner\s*\*/me=s+9,he=s+9 " NSTimer.h syn match objcClass /NSTimer\s*\*/me=s+7,he=s+7 " NSAutoreleasePool.h syn match objcClass /NSAutoreleasePool\s*\*/me=s+17,he=s+17 " NSRunLoop.h syn match objcClass /NSRunLoop\s*\*/me=s+9,he=s+9 syn keyword objcConstVar NSDefaultRunLoopMode NSRunLoopCommonModes " NSNull.h syn match objcClass /NSNull\s*\*/me=s+6,he=s+6 " NSProxy.h syn match objcClass /NSProxy\s*\*/me=s+7,he=s+7 " NSObject.h syn match objcClass /NSObject\s*\*/me=s+8,he=s+8 " NSCache.h syn match objcClass /NSCache\s*\*/me=s+7,he=s+7 syn match objcClass /NSCache<.*>\s*\*/me=s+7,he=s+7 contains=objcTypeInfoParams " NSHashTable.h syn match objcClass /NSHashTable\s*\*/me=s+11,he=s+11 syn match objcClass /NSHashTable<.*>\s*\*/me=s+11,he=s+11 contains=objcTypeInfoParams syn keyword objcConstVar NSHashTableStrongMemory NSHashTableZeroingWeakMemory NSHashTableCopyIn NSHashTableObjectPointerPersonality NSHashTableWeakMemory syn keyword objcType NSHashTableOptions NSHashEnumerator NSHashTableCallBacks syn keyword objcConstVar NSIntegerHashCallBacks NSNonOwnedPointerHashCallBacks NSNonRetainedObjectHashCallBacks NSObjectHashCallBacks NSOwnedObjectIdentityHashCallBacks NSOwnedPointerHashCallBacks NSPointerToStructHashCallBacks NSOwnedObjectIdentityHashCallBacks NSOwnedObjectIdentityHashCallBacks NSIntHashCallBacks " NSMapTable.h syn match objcClass /NSMapTable\s*\*/me=s+10,he=s+10 syn match objcClass /NSMapTable<.*>\s*\*/me=s+10,he=s+10 contains=objcTypeInfoParams syn keyword objcConstVar NSPointerToStructHashCallBacks NSPointerToStructHashCallBacks NSPointerToStructHashCallBacks NSPointerToStructHashCallBacks NSPointerToStructHashCallBacks syn keyword objcConstVar NSMapTableStrongMemory NSMapTableZeroingWeakMemory NSMapTableCopyIn NSMapTableObjectPointerPersonality NSMapTableWeakMemory syn keyword objcType NSMapTableOptions NSMapEnumerator NSMapTableKeyCallBacks NSMapTableValueCallBacks syn keyword objcMacro NSNotAnIntMapKey NSNotAnIntegerMapKey NSNotAPointerMapKey syn keyword objcConstVar NSIntegerMapKeyCallBacks NSNonOwnedPointerMapKeyCallBacks NSNonOwnedPointerOrNullMapKeyCallBacks NSNonRetainedObjectMapKeyCallBacks NSObjectMapKeyCallBacks NSOwnedPointerMapKeyCallBacks NSIntMapKeyCallBacks NSIntegerMapValueCallBacks NSNonOwnedPointerMapValueCallBacks NSObjectMapValueCallBacks NSNonRetainedObjectMapValueCallBacks NSOwnedPointerMapValueCallBacks NSIntMapValueCallBacks " NSPointerFunctions.h syn match objcClass /NSPointerFunctions\s*\*/me=s+18,he=s+18 syn keyword objcEnum NSPointerFunctionsOptions syn keyword objcEnumValue NSPointerFunctionsStrongMemory NSPointerFunctionsZeroingWeakMemory NSPointerFunctionsOpaqueMemory NSPointerFunctionsMallocMemory NSPointerFunctionsMachVirtualMemory NSPointerFunctionsWeakMemory NSPointerFunctionsObjectPersonality NSPointerFunctionsOpaquePersonality NSPointerFunctionsObjectPointerPersonality NSPointerFunctionsCStringPersonality NSPointerFunctionsStructPersonality NSPointerFunctionsIntegerPersonality NSPointerFunctionsCopyIn """ Default Highlighting hi def link objcPreProcMacro cConstant hi def link objcPrincipalType cType hi def link objcUsefulTerm cConstant hi def link objcImport cInclude hi def link objcImported cString hi def link objcObjDef cOperator hi def link objcProtocol cOperator hi def link objcProperty cOperator hi def link objcIvarScope cOperator hi def link objcInternalRep cOperator hi def link objcException cOperator hi def link objcThread cOperator hi def link objcPool cOperator hi def link objcModuleImport cOperator hi def link objcSpecial cSpecial hi def link objcString cString hi def link objcHiddenArgument cStatement hi def link objcBlocksQualifier cStorageClass hi def link objcObjectLifetimeQualifier cStorageClass hi def link objcTollFreeBridgeQualifier cStorageClass hi def link objcRemoteMessagingQualifier cStorageClass hi def link objcStorageClass cStorageClass hi def link objcFastEnumKeyword cStatement hi def link objcLiteralSyntaxNumber cNumber hi def link objcLiteralSyntaxChar cCharacter hi def link objcLiteralSyntaxSpecialChar cCharacter hi def link objcLiteralSyntaxOp cOperator hi def link objcDeclPropAccessorName cConstant hi def link objcDeclPropAccessorType cConstant hi def link objcDeclPropAssignSemantics cConstant hi def link objcDeclPropAtomicity cConstant hi def link objcDeclPropARC cConstant hi def link objcDeclPropNullable cConstant hi def link objcDeclPropNonnull cConstant hi def link objcDeclPropNullUnspecified cConstant hi def link objcDeclProcNullResettable cConstant hi def link objcInstanceMethod Function hi def link objcClassMethod Function hi def link objcType cType hi def link objcClass cType hi def link objcTypeSpecifier cType hi def link objcMacro cConstant hi def link objcEnum cType hi def link objcEnumValue cConstant hi def link objcExceptionValue cConstant hi def link objcNotificationValue cConstant hi def link objcConstVar cConstant hi def link objcTypeInfoParams Identifier """ Final step let b:current_syntax = "objc" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 sw=2 sts=2 PK!%||vim80/syntax/cucumber.vimnu[" Vim syntax file " Language: Cucumber " Maintainer: Tim Pope " Filenames: *.feature " Last Change: 2013 May 30 if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim syn case match syn sync minlines=20 let g:cucumber_languages = { \"en": {"and": "And\\>", "background": "Background\\>", "but": "But\\>", "examples": "Scenarios\\>\\|Examples\\>", "feature": "Business Need\\>\\|Feature\\>\\|Ability\\>", "given": "Given\\>", "scenario": "Scenario\\>", "scenario_outline": "Scenario Template\\>\\|Scenario Outline\\>", "then": "Then\\>", "when": "When\\>"}, \"ar": {"and": "\\%u0648\\>", "background": "\\%u0627\\%u0644\\%u062e\\%u0644\\%u0641\\%u064a\\%u0629\\>", "but": "\\%u0644\\%u0643\\%u0646\\>", "examples": "\\%u0627\\%u0645\\%u062b\\%u0644\\%u0629\\>", "feature": "\\%u062e\\%u0627\\%u0635\\%u064a\\%u0629\\>", "given": "\\%u0628\\%u0641\\%u0631\\%u0636\\>", "scenario": "\\%u0633\\%u064a\\%u0646\\%u0627\\%u0631\\%u064a\\%u0648\\>", "scenario_outline": "\\%u0633\\%u064a\\%u0646\\%u0627\\%u0631\\%u064a\\%u0648 \\%u0645\\%u062e\\%u0637\\%u0637\\>", "then": "\\%u0627\\%u0630\\%u0627\\%u064b\\>\\|\\%u062b\\%u0645\\>", "when": "\\%u0639\\%u0646\\%u062f\\%u0645\\%u0627\\>\\|\\%u0645\\%u062a\\%u0649\\>"}, \"bg": {"and": "\\%u0418\\>", "background": "\\%u041f\\%u0440\\%u0435\\%u0434\\%u0438\\%u0441\\%u0442\\%u043e\\%u0440\\%u0438\\%u044f\\>", "but": "\\%u041d\\%u043e\\>", "examples": "\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\%u0438\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\%u043d\\%u043e\\%u0441\\%u0442\\>", "given": "\\%u0414\\%u0430\\%u0434\\%u0435\\%u043d\\%u043e\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0420\\%u0430\\%u043c\\%u043a\\%u0430 \\%u043d\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "then": "\\%u0422\\%u043e\\>", "when": "\\%u041a\\%u043e\\%u0433\\%u0430\\%u0442\\%u043e\\>"}, \"bm": {"and": "Dan\\>", "background": "Latar Belakang\\>", "but": "Tetapi\\>", "examples": "Contoh \\>", "feature": "Fungsi\\>", "given": "Bagi\\>", "scenario": "Senario\\>", "scenario_outline": "Menggariskan Senario \\>", "then": "Kemudian\\>", "when": "Apabila\\>"}, \"ca": {"and": "I\\>", "background": "Antecedents\\>\\|Rerefons\\>", "but": "Per\\%u00f2\\>", "examples": "Exemples\\>", "feature": "Caracter\\%u00edstica\\>\\|Funcionalitat\\>", "given": "At\\%u00e8s\\>\\|Donada\\>\\|Donat\\>\\|Atesa\\>", "scenario": "Escenari\\>", "scenario_outline": "Esquema de l'escenari\\>", "then": "Aleshores\\>\\|Cal\\>", "when": "Quan\\>"}, \"cs": {"and": "A tak\\%u00e9\\>\\|A\\>", "background": "Pozad\\%u00ed\\>\\|Kontext\\>", "but": "Ale\\>", "examples": "P\\%u0159\\%u00edklady\\>", "feature": "Po\\%u017eadavek\\>", "given": "Za p\\%u0159edpokladu\\>\\|Pokud\\>", "scenario": "Sc\\%u00e9n\\%u00e1\\%u0159\\>", "scenario_outline": "N\\%u00e1\\%u010drt Sc\\%u00e9n\\%u00e1\\%u0159e\\>\\|Osnova sc\\%u00e9n\\%u00e1\\%u0159e\\>", "then": "Pak\\>", "when": "Kdy\\%u017e\\>"}, \"cy-GB": {"and": "A\\>", "background": "Cefndir\\>", "but": "Ond\\>", "examples": "Enghreifftiau\\>", "feature": "Arwedd\\>", "given": "Anrhegedig a\\>", "scenario": "Scenario\\>", "scenario_outline": "Scenario Amlinellol\\>", "then": "Yna\\>", "when": "Pryd\\>"}, \"da": {"and": "Og\\>", "background": "Baggrund\\>", "but": "Men\\>", "examples": "Eksempler\\>", "feature": "Egenskab\\>", "given": "Givet\\>", "scenario": "Scenarie\\>", "scenario_outline": "Abstrakt Scenario\\>", "then": "S\\%u00e5\\>", "when": "N\\%u00e5r\\>"}, \"de": {"and": "Und\\>", "background": "Grundlage\\>", "but": "Aber\\>", "examples": "Beispiele\\>", "feature": "Funktionalit\\%u00e4t\\>", "given": "Gegeben sei\\>\\|Angenommen\\>", "scenario": "Szenario\\>", "scenario_outline": "Szenariogrundriss\\>", "then": "Dann\\>", "when": "Wenn\\>"}, \"el": {"and": "\\%u039a\\%u03b1\\%u03b9\\>", "background": "\\%u03a5\\%u03c0\\%u03cc\\%u03b2\\%u03b1\\%u03b8\\%u03c1\\%u03bf\\>", "but": "\\%u0391\\%u03bb\\%u03bb\\%u03ac\\>", "examples": "\\%u03a0\\%u03b1\\%u03c1\\%u03b1\\%u03b4\\%u03b5\\%u03af\\%u03b3\\%u03bc\\%u03b1\\%u03c4\\%u03b1\\>\\|\\%u03a3\\%u03b5\\%u03bd\\%u03ac\\%u03c1\\%u03b9\\%u03b1\\>", "feature": "\\%u0394\\%u03c5\\%u03bd\\%u03b1\\%u03c4\\%u03cc\\%u03c4\\%u03b7\\%u03c4\\%u03b1\\>\\|\\%u039b\\%u03b5\\%u03b9\\%u03c4\\%u03bf\\%u03c5\\%u03c1\\%u03b3\\%u03af\\%u03b1\\>", "given": "\\%u0394\\%u03b5\\%u03b4\\%u03bf\\%u03bc\\%u03ad\\%u03bd\\%u03bf\\%u03c5 \\%u03cc\\%u03c4\\%u03b9\\>\\|\\%u0394\\%u03b5\\%u03b4\\%u03bf\\%u03bc\\%u03ad\\%u03bd\\%u03bf\\%u03c5\\>", "scenario": "\\%u03a3\\%u03b5\\%u03bd\\%u03ac\\%u03c1\\%u03b9\\%u03bf\\>", "scenario_outline": "\\%u03a0\\%u03b5\\%u03c1\\%u03b9\\%u03b3\\%u03c1\\%u03b1\\%u03c6\\%u03ae \\%u03a3\\%u03b5\\%u03bd\\%u03b1\\%u03c1\\%u03af\\%u03bf\\%u03c5\\>", "then": "\\%u03a4\\%u03cc\\%u03c4\\%u03b5\\>", "when": "\\%u038c\\%u03c4\\%u03b1\\%u03bd\\>"}, \"en-Scouse": {"and": "An\\>", "background": "Dis is what went down\\>", "but": "Buh\\>", "examples": "Examples\\>", "feature": "Feature\\>", "given": "Youse know when youse got\\>\\|Givun\\>", "scenario": "The thing of it is\\>", "scenario_outline": "Wharrimean is\\>", "then": "Den youse gotta\\>\\|Dun\\>", "when": "Youse know like when\\>\\|Wun\\>"}, \"en-au": {"and": "Too right\\>", "background": "First off\\>", "but": "Yeah nah\\>", "examples": "You'll wanna\\>", "feature": "Pretty much\\>", "given": "Y'know\\>", "scenario": "Awww, look mate\\>", "scenario_outline": "Reckon it's like\\>", "then": "But at the end of the day I reckon\\>", "when": "It's just unbelievable\\>"}, \"en-lol": {"and": "AN\\>", "background": "B4\\>", "but": "BUT\\>", "examples": "EXAMPLZ\\>", "feature": "OH HAI\\>", "given": "I CAN HAZ\\>", "scenario": "MISHUN\\>", "scenario_outline": "MISHUN SRSLY\\>", "then": "DEN\\>", "when": "WEN\\>"}, \"en-old": {"and": "Ond\\>\\|7\\>", "background": "\\%u00c6r\\>\\|Aer\\>", "but": "Ac\\>", "examples": "Se \\%u00f0e\\>\\|Se \\%u00fee\\>\\|Se the\\>", "feature": "Hw\\%u00e6t\\>\\|Hwaet\\>", "given": "\\%u00d0urh\\>\\|\\%u00deurh\\>\\|Thurh\\>", "scenario": "Swa\\>", "scenario_outline": "Swa hw\\%u00e6r swa\\>\\|Swa hwaer swa\\>", "then": "\\%u00d0a \\%u00f0e\\>\\|\\%u00dea \\%u00fee\\>\\|\\%u00dea\\>\\|\\%u00d0a\\>\\|Tha the\\>\\|Tha\\>", "when": "\\%u00d0a\\>\\|\\%u00dea\\>\\|Tha\\>"}, \"en-pirate": {"and": "Aye\\>", "background": "Yo-ho-ho\\>", "but": "Avast!\\>", "examples": "Dead men tell no tales\\>", "feature": "Ahoy matey!\\>", "given": "Gangway!\\>", "scenario": "Heave to\\>", "scenario_outline": "Shiver me timbers\\>", "then": "Let go and haul\\>", "when": "Blimey!\\>"}, \"en-tx": {"and": "And y'all\\>", "background": "Background\\>", "but": "But y'all\\>", "examples": "Examples\\>", "feature": "Feature\\>", "given": "Given y'all\\>", "scenario": "Scenario\\>", "scenario_outline": "All y'all\\>", "then": "Then y'all\\>", "when": "When y'all\\>"}, \"eo": {"and": "Kaj\\>", "background": "Fono\\>", "but": "Sed\\>", "examples": "Ekzemploj\\>", "feature": "Trajto\\>", "given": "Donita\\%u0135o\\>", "scenario": "Scenaro\\>", "scenario_outline": "Konturo de la scenaro\\>", "then": "Do\\>", "when": "Se\\>"}, \"es": {"and": "Y\\>", "background": "Antecedentes\\>", "but": "Pero\\>", "examples": "Ejemplos\\>", "feature": "Caracter\\%u00edstica\\>", "given": "Dadas\\>\\|Dados\\>\\|Dada\\>\\|Dado\\>", "scenario": "Escenario\\>", "scenario_outline": "Esquema del escenario\\>", "then": "Entonces\\>", "when": "Cuando\\>"}, \"et": {"and": "Ja\\>", "background": "Taust\\>", "but": "Kuid\\>", "examples": "Juhtumid\\>", "feature": "Omadus\\>", "given": "Eeldades\\>", "scenario": "Stsenaarium\\>", "scenario_outline": "Raamstsenaarium\\>", "then": "Siis\\>", "when": "Kui\\>"}, \"fa": {"and": "\\%u0648\\>", "background": "\\%u0632\\%u0645\\%u06cc\\%u0646\\%u0647\\>", "but": "\\%u0627\\%u0645\\%u0627\\>", "examples": "\\%u0646\\%u0645\\%u0648\\%u0646\\%u0647 \\%u0647\\%u0627\\>", "feature": "\\%u0648\\%u0650\\%u06cc\\%u0698\\%u06af\\%u06cc\\>", "given": "\\%u0628\\%u0627 \\%u0641\\%u0631\\%u0636\\>", "scenario": "\\%u0633\\%u0646\\%u0627\\%u0631\\%u06cc\\%u0648\\>", "scenario_outline": "\\%u0627\\%u0644\\%u06af\\%u0648\\%u06cc \\%u0633\\%u0646\\%u0627\\%u0631\\%u06cc\\%u0648\\>", "then": "\\%u0622\\%u0646\\%u06af\\%u0627\\%u0647\\>", "when": "\\%u0647\\%u0646\\%u06af\\%u0627\\%u0645\\%u06cc\\>"}, \"fi": {"and": "Ja\\>", "background": "Tausta\\>", "but": "Mutta\\>", "examples": "Tapaukset\\>", "feature": "Ominaisuus\\>", "given": "Oletetaan\\>", "scenario": "Tapaus\\>", "scenario_outline": "Tapausaihio\\>", "then": "Niin\\>", "when": "Kun\\>"}, \"fr": {"and": "Et\\>", "background": "Contexte\\>", "but": "Mais\\>", "examples": "Exemples\\>", "feature": "Fonctionnalit\\%u00e9\\>", "given": "\\%u00c9tant donn\\%u00e9es\\>\\|\\%u00c9tant donn\\%u00e9s\\>\\|\\%u00c9tant donn\\%u00e9e\\>\\|\\%u00c9tant donn\\%u00e9\\>\\|Etant donn\\%u00e9es\\>\\|Etant donn\\%u00e9s\\>\\|Etant donn\\%u00e9e\\>\\|Etant donn\\%u00e9\\>\\|Soit\\>", "scenario": "Sc\\%u00e9nario\\>", "scenario_outline": "Plan du sc\\%u00e9nario\\>\\|Plan du Sc\\%u00e9nario\\>", "then": "Alors\\>", "when": "Lorsqu'\\|Lorsque\\>\\|Quand\\>"}, \"gl": {"and": "E\\>", "background": "Contexto\\>", "but": "Mais\\>\\|Pero\\>", "examples": "Exemplos\\>", "feature": "Caracter\\%u00edstica\\>", "given": "Dadas\\>\\|Dados\\>\\|Dada\\>\\|Dado\\>", "scenario": "Escenario\\>", "scenario_outline": "Esbozo do escenario\\>", "then": "Ent\\%u00f3n\\>\\|Logo\\>", "when": "Cando\\>"}, \"he": {"and": "\\%u05d5\\%u05d2\\%u05dd\\>", "background": "\\%u05e8\\%u05e7\\%u05e2\\>", "but": "\\%u05d0\\%u05d1\\%u05dc\\>", "examples": "\\%u05d3\\%u05d5\\%u05d2\\%u05de\\%u05d0\\%u05d5\\%u05ea\\>", "feature": "\\%u05ea\\%u05db\\%u05d5\\%u05e0\\%u05d4\\>", "given": "\\%u05d1\\%u05d4\\%u05d9\\%u05e0\\%u05ea\\%u05df\\>", "scenario": "\\%u05ea\\%u05e8\\%u05d7\\%u05d9\\%u05e9\\>", "scenario_outline": "\\%u05ea\\%u05d1\\%u05e0\\%u05d9\\%u05ea \\%u05ea\\%u05e8\\%u05d7\\%u05d9\\%u05e9\\>", "then": "\\%u05d0\\%u05d6\\%u05d9\\>\\|\\%u05d0\\%u05d6\\>", "when": "\\%u05db\\%u05d0\\%u05e9\\%u05e8\\>"}, \"hi": {"and": "\\%u0924\\%u0925\\%u093e\\>\\|\\%u0914\\%u0930\\>", "background": "\\%u092a\\%u0943\\%u0937\\%u094d\\%u0920\\%u092d\\%u0942\\%u092e\\%u093f\\>", "but": "\\%u092a\\%u0930\\>", "examples": "\\%u0909\\%u0926\\%u093e\\%u0939\\%u0930\\%u0923\\>", "feature": "\\%u0930\\%u0942\\%u092a \\%u0932\\%u0947\\%u0916\\>", "given": "\\%u091a\\%u0942\\%u0902\\%u0915\\%u093f\\>\\|\\%u092f\\%u0926\\%u093f\\>\\|\\%u0905\\%u0917\\%u0930\\>", "scenario": "\\%u092a\\%u0930\\%u093f\\%u0926\\%u0943\\%u0936\\%u094d\\%u092f\\>", "scenario_outline": "\\%u092a\\%u0930\\%u093f\\%u0926\\%u0943\\%u0936\\%u094d\\%u092f \\%u0930\\%u0942\\%u092a\\%u0930\\%u0947\\%u0916\\%u093e\\>", "then": "\\%u0924\\%u092c\\>", "when": "\\%u091c\\%u092c\\>"}, \"hr": {"and": "I\\>", "background": "Pozadina\\>", "but": "Ali\\>", "examples": "Scenariji\\>\\|Primjeri\\>", "feature": "Mogu\\%u0107nost\\>\\|Mogucnost\\>\\|Osobina\\>", "given": "Zadano\\>\\|Zadani\\>\\|Zadan\\>", "scenario": "Scenarij\\>", "scenario_outline": "Koncept\\>\\|Skica\\>", "then": "Onda\\>", "when": "Kada\\>\\|Kad\\>"}, \"hu": {"and": "\\%u00c9s\\>", "background": "H\\%u00e1tt\\%u00e9r\\>", "but": "De\\>", "examples": "P\\%u00e9ld\\%u00e1k\\>", "feature": "Jellemz\\%u0151\\>", "given": "Amennyiben\\>\\|Adott\\>", "scenario": "Forgat\\%u00f3k\\%u00f6nyv\\>", "scenario_outline": "Forgat\\%u00f3k\\%u00f6nyv v\\%u00e1zlat\\>", "then": "Akkor\\>", "when": "Amikor\\>\\|Majd\\>\\|Ha\\>"}, \"id": {"and": "Dan\\>", "background": "Dasar\\>", "but": "Tapi\\>", "examples": "Contoh\\>", "feature": "Fitur\\>", "given": "Dengan\\>", "scenario": "Skenario\\>", "scenario_outline": "Skenario konsep\\>", "then": "Maka\\>", "when": "Ketika\\>"}, \"is": {"and": "Og\\>", "background": "Bakgrunnur\\>", "but": "En\\>", "examples": "Atbur\\%u00f0ar\\%u00e1sir\\>\\|D\\%u00e6mi\\>", "feature": "Eiginleiki\\>", "given": "Ef\\>", "scenario": "Atbur\\%u00f0ar\\%u00e1s\\>", "scenario_outline": "L\\%u00fdsing Atbur\\%u00f0ar\\%u00e1sar\\>\\|L\\%u00fdsing D\\%u00e6ma\\>", "then": "\\%u00de\\%u00e1\\>", "when": "\\%u00deegar\\>"}, \"it": {"and": "E\\>", "background": "Contesto\\>", "but": "Ma\\>", "examples": "Esempi\\>", "feature": "Funzionalit\\%u00e0\\>", "given": "Dato\\>\\|Data\\>\\|Dati\\>\\|Date\\>", "scenario": "Scenario\\>", "scenario_outline": "Schema dello scenario\\>", "then": "Allora\\>", "when": "Quando\\>"}, \"ja": {"and": "\\%u304b\\%u3064", "background": "\\%u80cc\\%u666f\\>", "but": "\\%u3057\\%u304b\\%u3057\\|\\%u305f\\%u3060\\%u3057\\|\\%u4f46\\%u3057", "examples": "\\%u30b5\\%u30f3\\%u30d7\\%u30eb\\>\\|\\%u4f8b\\>", "feature": "\\%u30d5\\%u30a3\\%u30fc\\%u30c1\\%u30e3\\>\\|\\%u6a5f\\%u80fd\\>", "given": "\\%u524d\\%u63d0", "scenario": "\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\>", "scenario_outline": "\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\%u30a2\\%u30a6\\%u30c8\\%u30e9\\%u30a4\\%u30f3\\>\\|\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\%u30c6\\%u30f3\\%u30d7\\%u30ec\\%u30fc\\%u30c8\\>\\|\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\%u30c6\\%u30f3\\%u30d7\\%u30ec\\>\\|\\%u30c6\\%u30f3\\%u30d7\\%u30ec\\>", "then": "\\%u306a\\%u3089\\%u3070", "when": "\\%u3082\\%u3057"}, \"ko": {"and": "\\%uadf8\\%ub9ac\\%uace0", "background": "\\%ubc30\\%uacbd\\>", "but": "\\%ud558\\%uc9c0\\%ub9cc\\|\\%ub2e8", "examples": "\\%uc608\\>", "feature": "\\%uae30\\%ub2a5\\>", "given": "\\%uc870\\%uac74\\|\\%uba3c\\%uc800", "scenario": "\\%uc2dc\\%ub098\\%ub9ac\\%uc624\\>", "scenario_outline": "\\%uc2dc\\%ub098\\%ub9ac\\%uc624 \\%uac1c\\%uc694\\>", "then": "\\%uadf8\\%ub7ec\\%uba74", "when": "\\%ub9cc\\%uc77c\\|\\%ub9cc\\%uc57d"}, \"lt": {"and": "Ir\\>", "background": "Kontekstas\\>", "but": "Bet\\>", "examples": "Pavyzd\\%u017eiai\\>\\|Scenarijai\\>\\|Variantai\\>", "feature": "Savyb\\%u0117\\>", "given": "Duota\\>", "scenario": "Scenarijus\\>", "scenario_outline": "Scenarijaus \\%u0161ablonas\\>", "then": "Tada\\>", "when": "Kai\\>"}, \"lu": {"and": "an\\>\\|a\\>", "background": "Hannergrond\\>", "but": "m\\%u00e4\\>\\|awer\\>", "examples": "Beispiller\\>", "feature": "Funktionalit\\%u00e9it\\>", "given": "ugeholl\\>", "scenario": "Szenario\\>", "scenario_outline": "Plang vum Szenario\\>", "then": "dann\\>", "when": "wann\\>"}, \"lv": {"and": "Un\\>", "background": "Situ\\%u0101cija\\>\\|Konteksts\\>", "but": "Bet\\>", "examples": "Piem\\%u0113ri\\>\\|Paraugs\\>", "feature": "Funkcionalit\\%u0101te\\>\\|F\\%u012b\\%u010da\\>", "given": "Kad\\>", "scenario": "Scen\\%u0101rijs\\>", "scenario_outline": "Scen\\%u0101rijs p\\%u0113c parauga\\>", "then": "Tad\\>", "when": "Ja\\>"}, \"nl": {"and": "En\\>", "background": "Achtergrond\\>", "but": "Maar\\>", "examples": "Voorbeelden\\>", "feature": "Functionaliteit\\>", "given": "Gegeven\\>\\|Stel\\>", "scenario": "Scenario\\>", "scenario_outline": "Abstract Scenario\\>", "then": "Dan\\>", "when": "Als\\>"}, \"no": {"and": "Og\\>", "background": "Bakgrunn\\>", "but": "Men\\>", "examples": "Eksempler\\>", "feature": "Egenskap\\>", "given": "Gitt\\>", "scenario": "Scenario\\>", "scenario_outline": "Abstrakt Scenario\\>\\|Scenariomal\\>", "then": "S\\%u00e5\\>", "when": "N\\%u00e5r\\>"}, \"pl": {"and": "Oraz\\>\\|I\\>", "background": "Za\\%u0142o\\%u017cenia\\>", "but": "Ale\\>", "examples": "Przyk\\%u0142ady\\>", "feature": "W\\%u0142a\\%u015bciwo\\%u015b\\%u0107\\>\\|Potrzeba biznesowa\\>\\|Funkcja\\>\\|Aspekt\\>", "given": "Zak\\%u0142adaj\\%u0105c\\>\\|Maj\\%u0105c\\>", "scenario": "Scenariusz\\>", "scenario_outline": "Szablon scenariusza\\>", "then": "Wtedy\\>", "when": "Je\\%u017celi\\>\\|Je\\%u015bli\\>\\|Kiedy\\>\\|Gdy\\>"}, \"pt": {"and": "E\\>", "background": "Cen\\%u00e1rio de Fundo\\>\\|Cenario de Fundo\\>\\|Contexto\\>\\|Fundo\\>", "but": "Mas\\>", "examples": "Cen\\%u00e1rios\\>\\|Exemplos\\>\\|Cenarios\\>", "feature": "Caracter\\%u00edstica\\>\\|Funcionalidade\\>\\|Caracteristica\\>", "given": "Dadas\\>\\|Dados\\>\\|Dada\\>\\|Dado\\>", "scenario": "Cen\\%u00e1rio\\>\\|Cenario\\>", "scenario_outline": "Delinea\\%u00e7\\%u00e3o do Cen\\%u00e1rio\\>\\|Esquema do Cen\\%u00e1rio\\>\\|Delineacao do Cenario\\>\\|Esquema do Cenario\\>", "then": "Ent\\%u00e3o\\>\\|Entao\\>", "when": "Quando\\>"}, \"ro": {"and": "\\%u015ei\\>\\|\\%u0218i\\>\\|Si\\>", "background": "Context\\>", "but": "Dar\\>", "examples": "Exemple\\>", "feature": "Func\\%u0163ionalitate\\>\\|Func\\%u021bionalitate\\>\\|Functionalitate\\>", "given": "Da\\%u0163i fiind\\>\\|Da\\%u021bi fiind\\>\\|Dati fiind\\>\\|Date fiind\\>\\|Dat fiind\\>", "scenario": "Scenariu\\>", "scenario_outline": "Structur\\%u0103 scenariu\\>\\|Structura scenariu\\>", "then": "Atunci\\>", "when": "C\\%u00e2nd\\>\\|Cand\\>"}, \"ru": {"and": "\\%u041a \\%u0442\\%u043e\\%u043c\\%u0443 \\%u0436\\%u0435\\>\\|\\%u0422\\%u0430\\%u043a\\%u0436\\%u0435\\>\\|\\%u0418\\>", "background": "\\%u041f\\%u0440\\%u0435\\%u0434\\%u044b\\%u0441\\%u0442\\%u043e\\%u0440\\%u0438\\%u044f\\>\\|\\%u041a\\%u043e\\%u043d\\%u0442\\%u0435\\%u043a\\%u0441\\%u0442\\>", "but": "\\%u041d\\%u043e\\>\\|\\%u0410\\>", "examples": "\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\%u044b\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\>\\|\\%u0421\\%u0432\\%u043e\\%u0439\\%u0441\\%u0442\\%u0432\\%u043e\\>\\|\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u044f\\>", "given": "\\%u0414\\%u043e\\%u043f\\%u0443\\%u0441\\%u0442\\%u0438\\%u043c\\>\\|\\%u041f\\%u0443\\%u0441\\%u0442\\%u044c\\>\\|\\%u0414\\%u0430\\%u043d\\%u043e\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0421\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u044f\\>", "then": "\\%u0422\\%u043e\\%u0433\\%u0434\\%u0430\\>\\|\\%u0422\\%u043e\\>", "when": "\\%u041a\\%u043e\\%u0433\\%u0434\\%u0430\\>\\|\\%u0415\\%u0441\\%u043b\\%u0438\\>"}, \"sk": {"and": "A z\\%u00e1rove\\%u0148\\>\\|A taktie\\%u017e\\>\\|A tie\\%u017e\\>\\|A\\>", "background": "Pozadie\\>", "but": "Ale\\>", "examples": "Pr\\%u00edklady\\>", "feature": "Po\\%u017eiadavka\\>\\|Vlastnos\\%u0165\\>\\|Funkcia\\>", "given": "Za predpokladu\\>\\|Pokia\\%u013e\\>", "scenario": "Scen\\%u00e1r\\>", "scenario_outline": "N\\%u00e1\\%u010drt Scen\\%u00e1ru\\>\\|N\\%u00e1\\%u010drt Scen\\%u00e1ra\\>\\|Osnova Scen\\%u00e1ra\\>", "then": "Potom\\>\\|Tak\\>", "when": "Ke\\%u010f\\>\\|Ak\\>"}, \"sr-Cyrl": {"and": "\\%u0418\\>", "background": "\\%u041a\\%u043e\\%u043d\\%u0442\\%u0435\\%u043a\\%u0441\\%u0442\\>\\|\\%u041f\\%u043e\\%u0437\\%u0430\\%u0434\\%u0438\\%u043d\\%u0430\\>\\|\\%u041e\\%u0441\\%u043d\\%u043e\\%u0432\\%u0430\\>", "but": "\\%u0410\\%u043b\\%u0438\\>", "examples": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0458\\%u0438\\>\\|\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\%u0438\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\%u043d\\%u043e\\%u0441\\%u0442\\>\\|\\%u041c\\%u043e\\%u0433\\%u0443\\%u045b\\%u043d\\%u043e\\%u0441\\%u0442\\>\\|\\%u041e\\%u0441\\%u043e\\%u0431\\%u0438\\%u043d\\%u0430\\>", "given": "\\%u0417\\%u0430\\%u0434\\%u0430\\%u0442\\%u043e\\>\\|\\%u0417\\%u0430\\%u0434\\%u0430\\%u0442\\%u0435\\>\\|\\%u0417\\%u0430\\%u0434\\%u0430\\%u0442\\%u0438\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u043e\\>\\|\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\>", "scenario_outline": "\\%u0421\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0458\\%u0430\\>\\|\\%u041a\\%u043e\\%u043d\\%u0446\\%u0435\\%u043f\\%u0442\\>\\|\\%u0421\\%u043a\\%u0438\\%u0446\\%u0430\\>", "then": "\\%u041e\\%u043d\\%u0434\\%u0430\\>", "when": "\\%u041a\\%u0430\\%u0434\\%u0430\\>\\|\\%u041a\\%u0430\\%u0434\\>"}, \"sr-Latn": {"and": "I\\>", "background": "Kontekst\\>\\|Pozadina\\>\\|Osnova\\>", "but": "Ali\\>", "examples": "Scenariji\\>\\|Primeri\\>", "feature": "Mogu\\%u0107nost\\>\\|Funkcionalnost\\>\\|Mogucnost\\>\\|Osobina\\>", "given": "Zadato\\>\\|Zadate\\>\\|Zatati\\>", "scenario": "Scenario\\>\\|Primer\\>", "scenario_outline": "Struktura scenarija\\>\\|Koncept\\>\\|Skica\\>", "then": "Onda\\>", "when": "Kada\\>\\|Kad\\>"}, \"sv": {"and": "Och\\>", "background": "Bakgrund\\>", "but": "Men\\>", "examples": "Exempel\\>", "feature": "Egenskap\\>", "given": "Givet\\>", "scenario": "Scenario\\>", "scenario_outline": "Abstrakt Scenario\\>\\|Scenariomall\\>", "then": "S\\%u00e5\\>", "when": "N\\%u00e4r\\>"}, \"th": {"and": "\\%u0e41\\%u0e25\\%u0e30\\>", "background": "\\%u0e41\\%u0e19\\%u0e27\\%u0e04\\%u0e34\\%u0e14\\>", "but": "\\%u0e41\\%u0e15\\%u0e48\\>", "examples": "\\%u0e0a\\%u0e38\\%u0e14\\%u0e02\\%u0e2d\\%u0e07\\%u0e40\\%u0e2b\\%u0e15\\%u0e38\\%u0e01\\%u0e32\\%u0e23\\%u0e13\\%u0e4c\\>\\|\\%u0e0a\\%u0e38\\%u0e14\\%u0e02\\%u0e2d\\%u0e07\\%u0e15\\%u0e31\\%u0e27\\%u0e2d\\%u0e22\\%u0e48\\%u0e32\\%u0e07\\>", "feature": "\\%u0e04\\%u0e27\\%u0e32\\%u0e21\\%u0e15\\%u0e49\\%u0e2d\\%u0e07\\%u0e01\\%u0e32\\%u0e23\\%u0e17\\%u0e32\\%u0e07\\%u0e18\\%u0e38\\%u0e23\\%u0e01\\%u0e34\\%u0e08\\>\\|\\%u0e04\\%u0e27\\%u0e32\\%u0e21\\%u0e2a\\%u0e32\\%u0e21\\%u0e32\\%u0e23\\%u0e16\\>\\|\\%u0e42\\%u0e04\\%u0e23\\%u0e07\\%u0e2b\\%u0e25\\%u0e31\\%u0e01\\>", "given": "\\%u0e01\\%u0e33\\%u0e2b\\%u0e19\\%u0e14\\%u0e43\\%u0e2b\\%u0e49\\>", "scenario": "\\%u0e40\\%u0e2b\\%u0e15\\%u0e38\\%u0e01\\%u0e32\\%u0e23\\%u0e13\\%u0e4c\\>", "scenario_outline": "\\%u0e42\\%u0e04\\%u0e23\\%u0e07\\%u0e2a\\%u0e23\\%u0e49\\%u0e32\\%u0e07\\%u0e02\\%u0e2d\\%u0e07\\%u0e40\\%u0e2b\\%u0e15\\%u0e38\\%u0e01\\%u0e32\\%u0e23\\%u0e13\\%u0e4c\\>\\|\\%u0e2a\\%u0e23\\%u0e38\\%u0e1b\\%u0e40\\%u0e2b\\%u0e15\\%u0e38\\%u0e01\\%u0e32\\%u0e23\\%u0e13\\%u0e4c\\>", "then": "\\%u0e14\\%u0e31\\%u0e07\\%u0e19\\%u0e31\\%u0e49\\%u0e19\\>", "when": "\\%u0e40\\%u0e21\\%u0e37\\%u0e48\\%u0e2d\\>"}, \"tl": {"and": "\\%u0c2e\\%u0c30\\%u0c3f\\%u0c2f\\%u0c41\\>", "background": "\\%u0c28\\%u0c47\\%u0c2a\\%u0c25\\%u0c4d\\%u0c2f\\%u0c02\\>", "but": "\\%u0c15\\%u0c3e\\%u0c28\\%u0c3f\\>", "examples": "\\%u0c09\\%u0c26\\%u0c3e\\%u0c39\\%u0c30\\%u0c23\\%u0c32\\%u0c41\\>", "feature": "\\%u0c17\\%u0c41\\%u0c23\\%u0c2e\\%u0c41\\>", "given": "\\%u0c1a\\%u0c46\\%u0c2a\\%u0c4d\\%u0c2a\\%u0c2c\\%u0c21\\%u0c3f\\%u0c28\\%u0c26\\%u0c3f\\>", "scenario": "\\%u0c38\\%u0c28\\%u0c4d\\%u0c28\\%u0c3f\\%u0c35\\%u0c47\\%u0c36\\%u0c02\\>", "scenario_outline": "\\%u0c15\\%u0c25\\%u0c28\\%u0c02\\>", "then": "\\%u0c05\\%u0c2a\\%u0c4d\\%u0c2a\\%u0c41\\%u0c21\\%u0c41\\>", "when": "\\%u0c08 \\%u0c2a\\%u0c30\\%u0c3f\\%u0c38\\%u0c4d\\%u0c25\\%u0c3f\\%u0c24\\%u0c3f\\%u0c32\\%u0c4b\\>"}, \"tr": {"and": "Ve\\>", "background": "Ge\\%u00e7mi\\%u015f\\>", "but": "Fakat\\>\\|Ama\\>", "examples": "\\%u00d6rnekler\\>", "feature": "\\%u00d6zellik\\>", "given": "Diyelim ki\\>", "scenario": "Senaryo\\>", "scenario_outline": "Senaryo tasla\\%u011f\\%u0131\\>", "then": "O zaman\\>", "when": "E\\%u011fer ki\\>"}, \"tt": {"and": "\\%u04ba\\%u04d9\\%u043c\\>\\|\\%u0412\\%u04d9\\>", "background": "\\%u041a\\%u0435\\%u0440\\%u0435\\%u0448\\>", "but": "\\%u041b\\%u04d9\\%u043a\\%u0438\\%u043d\\>\\|\\%u04d8\\%u043c\\%u043c\\%u0430\\>", "examples": "\\%u04ae\\%u0440\\%u043d\\%u04d9\\%u043a\\%u043b\\%u04d9\\%u0440\\>\\|\\%u041c\\%u0438\\%u0441\\%u0430\\%u043b\\%u043b\\%u0430\\%u0440\\>", "feature": "\\%u04ae\\%u0437\\%u0435\\%u043d\\%u0447\\%u04d9\\%u043b\\%u0435\\%u043a\\%u043b\\%u0435\\%u043b\\%u0435\\%u043a\\>\\|\\%u041c\\%u04e9\\%u043c\\%u043a\\%u0438\\%u043d\\%u043b\\%u0435\\%u043a\\>", "given": "\\%u04d8\\%u0439\\%u0442\\%u0438\\%u043a\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\%u043d\\%u044b\\%u04a3 \\%u0442\\%u04e9\\%u0437\\%u0435\\%u043b\\%u0435\\%u0448\\%u0435\\>", "then": "\\%u041d\\%u04d9\\%u0442\\%u0438\\%u0497\\%u04d9\\%u0434\\%u04d9\\>", "when": "\\%u04d8\\%u0433\\%u04d9\\%u0440\\>"}, \"uk": {"and": "\\%u0410 \\%u0442\\%u0430\\%u043a\\%u043e\\%u0436\\>\\|\\%u0422\\%u0430\\>\\|\\%u0406\\>", "background": "\\%u041f\\%u0435\\%u0440\\%u0435\\%u0434\\%u0443\\%u043c\\%u043e\\%u0432\\%u0430\\>", "but": "\\%u0410\\%u043b\\%u0435\\>", "examples": "\\%u041f\\%u0440\\%u0438\\%u043a\\%u043b\\%u0430\\%u0434\\%u0438\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0456\\%u043e\\%u043d\\%u0430\\%u043b\\>", "given": "\\%u041f\\%u0440\\%u0438\\%u043f\\%u0443\\%u0441\\%u0442\\%u0438\\%u043c\\%u043e, \\%u0449\\%u043e\\>\\|\\%u041f\\%u0440\\%u0438\\%u043f\\%u0443\\%u0441\\%u0442\\%u0438\\%u043c\\%u043e\\>\\|\\%u041d\\%u0435\\%u0445\\%u0430\\%u0439\\>\\|\\%u0414\\%u0430\\%u043d\\%u043e\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0456\\%u0439\\>", "scenario_outline": "\\%u0421\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0456\\%u044e\\>", "then": "\\%u0422\\%u043e\\%u0434\\%u0456\\>\\|\\%u0422\\%u043e\\>", "when": "\\%u042f\\%u043a\\%u0449\\%u043e\\>\\|\\%u041a\\%u043e\\%u043b\\%u0438\\>"}, \"uz": {"and": "\\%u0412\\%u0430\\>", "background": "\\%u0422\\%u0430\\%u0440\\%u0438\\%u0445\\>", "but": "\\%u041b\\%u0435\\%u043a\\%u0438\\%u043d\\>\\|\\%u0411\\%u0438\\%u0440\\%u043e\\%u043a\\>\\|\\%u0410\\%u043c\\%u043c\\%u043e\\>", "examples": "\\%u041c\\%u0438\\%u0441\\%u043e\\%u043b\\%u043b\\%u0430\\%u0440\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\>", "given": "\\%u0410\\%u0433\\%u0430\\%u0440\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439 \\%u0441\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430\\%u0441\\%u0438\\>", "then": "\\%u0423\\%u043d\\%u0434\\%u0430\\>", "when": "\\%u0410\\%u0433\\%u0430\\%u0440\\>"}, \"vi": {"and": "V\\%u00e0\\>", "background": "B\\%u1ed1i c\\%u1ea3nh\\>", "but": "Nh\\%u01b0ng\\>", "examples": "D\\%u1eef li\\%u1ec7u\\>", "feature": "T\\%u00ednh n\\%u0103ng\\>", "given": "Bi\\%u1ebft\\>\\|Cho\\>", "scenario": "T\\%u00ecnh hu\\%u1ed1ng\\>\\|K\\%u1ecbch b\\%u1ea3n\\>", "scenario_outline": "Khung t\\%u00ecnh hu\\%u1ed1ng\\>\\|Khung k\\%u1ecbch b\\%u1ea3n\\>", "then": "Th\\%u00ec\\>", "when": "Khi\\>"}, \"zh-CN": {"and": "\\%u800c\\%u4e14\\|\\%u5e76\\%u4e14\\|\\%u540c\\%u65f6", "background": "\\%u80cc\\%u666f\\>", "but": "\\%u4f46\\%u662f", "examples": "\\%u4f8b\\%u5b50\\>", "feature": "\\%u529f\\%u80fd\\>", "given": "\\%u5047\\%u5982\\|\\%u5047\\%u8bbe\\|\\%u5047\\%u5b9a", "scenario": "\\%u573a\\%u666f\\>\\|\\%u5267\\%u672c\\>", "scenario_outline": "\\%u573a\\%u666f\\%u5927\\%u7eb2\\>\\|\\%u5267\\%u672c\\%u5927\\%u7eb2\\>", "then": "\\%u90a3\\%u4e48", "when": "\\%u5f53"}, \"zh-TW": {"and": "\\%u800c\\%u4e14\\|\\%u4e26\\%u4e14\\|\\%u540c\\%u6642", "background": "\\%u80cc\\%u666f\\>", "but": "\\%u4f46\\%u662f", "examples": "\\%u4f8b\\%u5b50\\>", "feature": "\\%u529f\\%u80fd\\>", "given": "\\%u5047\\%u5982\\|\\%u5047\\%u8a2d\\|\\%u5047\\%u5b9a", "scenario": "\\%u5834\\%u666f\\>\\|\\%u5287\\%u672c\\>", "scenario_outline": "\\%u5834\\%u666f\\%u5927\\%u7db1\\>\\|\\%u5287\\%u672c\\%u5927\\%u7db1\\>", "then": "\\%u90a3\\%u9ebc", "when": "\\%u7576"}} function! s:pattern(key) let language = matchstr(getline(1),'#\s*language:\s*\zs\S\+') if &fileencoding == 'latin1' && language == '' let language = 'en' endif if has_key(g:cucumber_languages, language) let languages = [g:cucumber_languages[language]] else let languages = values(g:cucumber_languages) end return '\<\%('.join(map(languages,'get(v:val,a:key,"\\%(a\\&b\\)")'),'\|').'\)' endfunction function! s:Add(name) let next = " skipempty skipwhite nextgroup=".join(map(["Region","AndRegion","ButRegion","Comment","String","Table"],'"cucumber".a:name.v:val'),",") exe "syn region cucumber".a:name.'Region matchgroup=cucumber'.a:name.' start="\%(^\s*\)\@<=\%('.s:pattern(tolower(a:name)).'\)" end="$"'.next exe 'syn region cucumber'.a:name.'AndRegion matchgroup=cucumber'.a:name.'And start="\%(^\s*\)\@<='.s:pattern('and').'" end="$" contained'.next exe 'syn region cucumber'.a:name.'ButRegion matchgroup=cucumber'.a:name.'But start="\%(^\s*\)\@<='.s:pattern('but').'" end="$" contained'.next exe 'syn match cucumber'.a:name.'Comment "\%(^\s*\)\@<=#.*" contained'.next exe 'syn region cucumber'.a:name.'String start=+\%(^\s*\)\@<="""+ end=+"""+ contained'.next exe 'syn match cucumber'.a:name.'Table "\%(^\s*\)\@<=|.*" contained contains=cucumberDelimiter'.next exe 'hi def link cucumber'.a:name.'Comment cucumberComment' exe 'hi def link cucumber'.a:name.'String cucumberString' exe 'hi def link cucumber'.a:name.'But cucumber'.a:name.'And' exe 'hi def link cucumber'.a:name.'And cucumber'.a:name exe 'syn cluster cucumberStepRegions add=cucumber'.a:name.'Region,cucumber'.a:name.'AndRegion,cucumber'.a:name.'ButRegion' endfunction syn match cucumberComment "\%(^\s*\)\@<=#.*" syn match cucumberComment "\%(\%^\s*\)\@<=#.*" contains=cucumberLanguage syn match cucumberLanguage "\%(#\s*\)\@<=language:" contained syn match cucumberUnparsed "\S.*" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberTags,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty contained syn match cucumberUnparsedComment "#.*" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberTags,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty contained exe 'syn match cucumberFeature "\%(^\s*\)\@<='.s:pattern('feature').':" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty' exe 'syn match cucumberBackground "\%(^\s*\)\@<='.s:pattern('background').':"' exe 'syn match cucumberScenario "\%(^\s*\)\@<='.s:pattern('scenario').':"' exe 'syn match cucumberScenarioOutline "\%(^\s*\)\@<='.s:pattern('scenario_outline').':"' exe 'syn match cucumberExamples "\%(^\s*\)\@<='.s:pattern('examples').':" nextgroup=cucumberExampleTable skipempty skipwhite' syn match cucumberPlaceholder "<[^<>]*>" contained containedin=@cucumberStepRegions syn match cucumberExampleTable "\%(^\s*\)\@<=|.*" contains=cucumberDelimiter syn match cucumberDelimiter "\\\@ " Last Change: Aug 31, 2016 " Version: 11 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_DCL " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif if !has("patch-7.4.1142") setlocal iskeyword=$,@,48-57,_ else syn iskeyword $,@,48-57,_ endif syn case ignore syn keyword dclInstr accounting del[ete] gen[cat] mou[nt] run syn keyword dclInstr all[ocate] dep[osit] gen[eral] ncp run[off] syn keyword dclInstr ana[lyze] dia[gnose] gos[ub] ncs sca syn keyword dclInstr app[end] dif[ferences] got[o] on sea[rch] syn keyword dclInstr ass[ign] dir[ectory] hel[p] ope[n] set syn keyword dclInstr att[ach] dis[able] ico[nv] pas[cal] sho[w] syn keyword dclInstr aut[horize] dis[connect] if pas[sword] sor[t] syn keyword dclInstr aut[ogen] dis[mount] ini[tialize] pat[ch] spa[wn] syn keyword dclInstr bac[kup] dpm[l] inq[uire] pca sta[rt] syn keyword dclInstr cal[l] dqs ins[tall] pho[ne] sto[p] syn keyword dclInstr can[cel] dsr job pri[nt] sub[mit] syn keyword dclInstr cc dst[graph] lat[cp] pro[duct] sub[routine] syn keyword dclInstr clo[se] dtm lib[rary] psw[rap] swx[cr] syn keyword dclInstr cms dum[p] lic[ense] pur[ge] syn[chronize] syn keyword dclInstr con[nect] edi[t] lin[k] qde[lete] sys[gen] syn keyword dclInstr con[tinue] ena[ble] lmc[p] qse[t] sys[man] syn keyword dclInstr con[vert] end[subroutine] loc[ale] qsh[ow] tff syn keyword dclInstr cop[y] eod log[in] rea[d] then syn keyword dclInstr cre[ate] eoj log[out] rec[all] typ[e] syn keyword dclInstr cxx exa[mine] lse[dit] rec[over] uil syn keyword dclInstr cxx[l_help] exc[hange] mac[ro] ren[ame] unl[ock] syn keyword dclInstr dea[llocate] exi[t] mai[l] rep[ly] ves[t] syn keyword dclInstr dea[ssign] fdl mer[ge] req[uest] vie[w] syn keyword dclInstr deb[ug] flo[wgraph] mes[sage] ret[urn] wai[t] syn keyword dclInstr dec[k] fon[t] mms rms wri[te] syn keyword dclInstr def[ine] for[tran] syn keyword dclLexical f$context f$edit f$getjpi f$message f$setprv syn keyword dclLexical f$csid f$element f$getqui f$mode f$string syn keyword dclLexical f$cvsi f$environment f$getsyi f$parse f$time syn keyword dclLexical f$cvtime f$extract f$identifier f$pid f$trnlnm syn keyword dclLexical f$cvui f$fao f$integer f$privilege f$type syn keyword dclLexical f$device f$file_attributes f$length f$process f$user syn keyword dclLexical f$directory f$getdvi f$locate f$search f$verify syn match dclMdfy "/\I\i*" nextgroup=dclMdfySet,dclMdfySetString syn match dclMdfySet "=[^ \t"]*" contained syn region dclMdfySet matchgroup=dclMdfyBrkt start="=\[" matchgroup=dclMdfyBrkt end="]" contains=dclMdfySep syn region dclMdfySetString start='="' skip='""' end='"' contained syn match dclMdfySep "[:,]" contained " Numbers syn match dclNumber "\d\+" " Varname (mainly to prevent dclNumbers from being recognized when part of a dclVarname) syn match dclVarname "\I\i*" " Filenames (devices, paths) syn match dclDevice "\I\i*\(\$\I\i*\)\=:[^=]"me=e-1 nextgroup=dclDirPath,dclFilename syn match dclDirPath "\[\(\I\i*\.\)*\I\i*\]" contains=dclDirSep nextgroup=dclFilename syn match dclFilename "\I\i*\$\(\I\i*\)\=\.\(\I\i*\)*\(;\d\+\)\=" contains=dclDirSep syn match dclFilename "\I\i*\.\(\I\i*\)\=\(;\d\+\)\=" contains=dclDirSep contained syn match dclDirSep "[[\].;]" " Strings syn region dclString start='"' skip='""' end='"' contains=@Spell " $ stuff and comments syn cluster dclCommentGroup contains=dclStart,dclTodo,@Spell syn match dclStart "^\$" skipwhite nextgroup=dclExe syn match dclContinue "-$" syn match dclComment "^\$!.*$" contains=@dclCommentGroup syn match dclExe "\I\i*" contained syn keyword dclTodo contained COMBAK DEBUG FIXME TODO XXX " Assignments and Operators syn match dclAssign ":==\=" syn match dclAssign "=" syn match dclOper "--\|+\|\*\|/" syn match dclLogOper "\.[a-zA-Z][a-zA-Z][a-zA-Z]\=\." contains=dclLogical,dclLogSep syn keyword dclLogical contained and ge gts lt nes syn keyword dclLogical contained eq ges le lts not syn keyword dclLogical contained eqs gt les ne or syn match dclLogSep "\." contained " @command procedures syn match dclCmdProcStart "@" nextgroup=dclCmdProc syn match dclCmdProc "\I\i*\(\.\I\i*\)\=" contained syn match dclCmdProc "\I\i*:" contained nextgroup=dclCmdDirPath,dclCmdProc syn match dclCmdDirPath "\[\(\I\i*\.\)*\I\i*\]" contained nextgroup=delCmdProc " labels syn match dclGotoLabel "^\$\s*\I\i*:\s*$" contains=dclStart " parameters syn match dclParam "'\I[a-zA-Z0-9_$]*'\=" " () matching (the clusters are commented out until a vim/vms comes out for v5.2+) "syn cluster dclNextGroups contains=dclCmdDirPath,dclCmdProc,dclCmdProc,dclDirPath,dclFilename,dclFilename,dclMdfySet,dclMdfySetString,delCmdProc,dclExe,dclTodo "syn region dclFuncList matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,@dclNextGroups syn region dclFuncList matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,dclCmdDirPath,dclCmdProc,dclCmdProc,dclDirPath,dclFilename,dclFilename,dclMdfySet,dclMdfySetString,delCmdProc,dclExe,dclTodo syn match dclError ")" " Define the default highlighting. if !exists("skip_dcl_syntax_inits") hi def link dclLogOper dclError hi def link dclLogical dclOper hi def link dclLogSep dclSep hi def link dclAssign Operator hi def link dclCmdProc Special hi def link dclCmdProcStart Operator hi def link dclComment Comment hi def link dclContinue Statement hi def link dclDevice Identifier hi def link dclDirPath Identifier hi def link dclDirPath Identifier hi def link dclDirSep Delimiter hi def link dclError Error hi def link dclExe Statement hi def link dclFilename NONE hi def link dclGotoLabel Label hi def link dclInstr Statement hi def link dclLexical Function hi def link dclMdfy Type hi def link dclMdfyBrkt Delimiter hi def link dclMdfySep Delimiter hi def link dclMdfySet Type hi def link dclMdfySetString String hi def link dclNumber Number hi def link dclOper Operator hi def link dclParam Special hi def link dclSep Delimiter hi def link dclStart Delimiter hi def link dclString String hi def link dclTodo Todo endif let b:current_syntax = "dcl" " vim: ts=16 PK!t;r$$vim80/syntax/vhdl.vimnu[" Vim syntax file " Language: VHDL [VHSIC (Very High Speed Integrated Circuit) Hardware Description Language] " Maintainer: Daniel Kho " Previous Maintainer: Czo " Credits: Stephan Hegel " Last Changed: 2016 Mar 05 by Daniel Kho " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " case is not significant syn case ignore " VHDL keywords syn keyword vhdlStatement access after alias all assert syn keyword vhdlStatement architecture array attribute syn keyword vhdlStatement assume assume_guarantee syn keyword vhdlStatement begin block body buffer bus syn keyword vhdlStatement case component configuration constant syn keyword vhdlStatement context cover syn keyword vhdlStatement default disconnect downto syn keyword vhdlStatement elsif end entity exit syn keyword vhdlStatement file for function syn keyword vhdlStatement fairness force syn keyword vhdlStatement generate generic group guarded syn keyword vhdlStatement impure in inertial inout is syn keyword vhdlStatement label library linkage literal loop syn keyword vhdlStatement map syn keyword vhdlStatement new next null syn keyword vhdlStatement of on open others out syn keyword vhdlStatement package port postponed procedure process pure syn keyword vhdlStatement parameter property protected syn keyword vhdlStatement range record register reject report return syn keyword vhdlStatement release restrict restrict_guarantee syn keyword vhdlStatement select severity signal shared syn keyword vhdlStatement subtype syn keyword vhdlStatement sequence strong syn keyword vhdlStatement then to transport type syn keyword vhdlStatement unaffected units until use syn keyword vhdlStatement variable syn keyword vhdlStatement vmode vprop vunit syn keyword vhdlStatement wait when while with syn keyword vhdlStatement note warning error failure " Linting of conditionals. syn match vhdlStatement "\<\(if\|else\)\>" syn match vhdlError "\" " Types and type qualifiers " Predefined standard VHDL types syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" "syn keyword vhdlType severity_level syn keyword vhdlType line syn keyword vhdlType text " Predefined standard IEEE VHDL types syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" " array attributes syn match vhdlAttribute "\'high" syn match vhdlAttribute "\'left" syn match vhdlAttribute "\'length" syn match vhdlAttribute "\'low" syn match vhdlAttribute "\'range" syn match vhdlAttribute "\'reverse_range" syn match vhdlAttribute "\'right" syn match vhdlAttribute "\'ascending" " block attributes syn match vhdlAttribute "\'simple_name" syn match vhdlAttribute "\'instance_name" syn match vhdlAttribute "\'path_name" syn match vhdlAttribute "\'foreign" " VHPI " signal attribute syn match vhdlAttribute "\'active" syn match vhdlAttribute "\'delayed" syn match vhdlAttribute "\'event" syn match vhdlAttribute "\'last_active" syn match vhdlAttribute "\'last_event" syn match vhdlAttribute "\'last_value" syn match vhdlAttribute "\'quiet" syn match vhdlAttribute "\'stable" syn match vhdlAttribute "\'transaction" syn match vhdlAttribute "\'driving" syn match vhdlAttribute "\'driving_value" " type attributes syn match vhdlAttribute "\'base" syn match vhdlAttribute "\'subtype" syn match vhdlAttribute "\'element" syn match vhdlAttribute "\'leftof" syn match vhdlAttribute "\'pos" syn match vhdlAttribute "\'pred" syn match vhdlAttribute "\'rightof" syn match vhdlAttribute "\'succ" syn match vhdlAttribute "\'val" syn match vhdlAttribute "\'image" syn match vhdlAttribute "\'value" syn keyword vhdlBoolean true false " for this vector values case is significant syn case match " Values for standard VHDL types syn match vhdlVector "\'[0L1HXWZU\-\?]\'" syn case ignore syn match vhdlVector "B\"[01_]\+\"" syn match vhdlVector "O\"[0-7_]\+\"" syn match vhdlVector "X\"[0-9a-f_]\+\"" syn match vhdlCharacter "'.'" syn region vhdlString start=+"+ end=+"+ " floating numbers syn match vhdlNumber "-\=\<\d\+\.\d\+\(E[+\-]\=\d\+\)\>" syn match vhdlNumber "-\=\<\d\+\.\d\+\>" syn match vhdlNumber "0*2#[01_]\+\.[01_]\+#\(E[+\-]\=\d\+\)\=" syn match vhdlNumber "0*16#[0-9a-f_]\+\.[0-9a-f_]\+#\(E[+\-]\=\d\+\)\=" " integer numbers syn match vhdlNumber "-\=\<\d\+\(E[+\-]\=\d\+\)\>" syn match vhdlNumber "-\=\<\d\+\>" syn match vhdlNumber "0*2#[01_]\+#\(E[+\-]\=\d\+\)\=" syn match vhdlNumber "0*16#[0-9a-f_]\+#\(E[+\-]\=\d\+\)\=" " operators syn keyword vhdlOperator and nand or nor xor xnor syn keyword vhdlOperator rol ror sla sll sra srl syn keyword vhdlOperator mod rem abs not " Concatenation and math operators syn match vhdlOperator "&\|+\|-\|\*\|\/" " Equality and comparison operators syn match vhdlOperator "=\|\/=\|>\|<\|>=" " Assignment operators syn match vhdlOperator "<=\|:=" syn match vhdlOperator "=>" " VHDL-2008 conversion, matching equality/non-equality operators syn match vhdlOperator "??\|?=\|?\/=\|?<\|?<=\|?>\|?>=" " VHDL-2008 external names syn match vhdlOperator "<<\|>>" " Linting for illegal operators " '=' syn match vhdlError "\(=\)[<=&+\-\*\/\\]\+" syn match vhdlError "[=&+\-\*\\]\+\(=\)" " '>', '<' " Allow external names: '<< ... >>' syn match vhdlError "\(>\)[<&+\-\/\\]\+" syn match vhdlError "[&+\-\/\\]\+\(>\)" syn match vhdlError "\(<\)[&+\-\/\\]\+" syn match vhdlError "[>=&+\-\/\\]\+\(<\)" " Covers most operators " support negative sign after operators. E.g. q<=-b; syn match vhdlError "\(&\|+\|\-\|\*\*\|\/=\|??\|?=\|?\/=\|?<=\|?>=\|>=\|<=\|:=\|=>\)[<>=&+\*\\?:]\+" syn match vhdlError "[<>=&+\-\*\\:]\+\(&\|+\|\*\*\|\/=\|??\|?=\|?\/=\|?<\|?<=\|?>\|?>=\|>=\|<=\|:=\|=>\)" syn match vhdlError "\(?<\|?>\)[<>&+\*\/\\?:]\+" syn match vhdlError "\(<<\|>>\)[<>&+\*\/\\?:]\+" "syn match vhdlError "[?]\+\(&\|+\|\-\|\*\*\|??\|?=\|?\/=\|?<\|?<=\|?>\|?>=\|:=\|=>\)" " '/' syn match vhdlError "\(\/\)[<>&+\-\*\/\\?:]\+" syn match vhdlError "[<>=&+\-\*\/\\:]\+\(\/\)" syn match vhdlSpecial "<>" syn match vhdlSpecial "[().,;]" " time syn match vhdlTime "\<\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>" syn match vhdlTime "\<\d\+\.\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>" syn case match syn keyword vhdlTodo contained TODO NOTE syn keyword vhdlFixme contained FIXME syn case ignore syn region vhdlComment start="/\*" end="\*/" contains=vhdlTodo,vhdlFixme,@Spell syn match vhdlComment "\(^\|\s\)--.*" contains=vhdlTodo,vhdlFixme,@Spell " Standard IEEE P1076.6 preprocessor directives (metacomments). syn match vhdlPreProc "/\*\s*rtl_synthesis\s\+\(on\|off\)\s*\*/" syn match vhdlPreProc "\(^\|\s\)--\s*rtl_synthesis\s\+\(on\|off\)\s*" syn match vhdlPreProc "/\*\s*rtl_syn\s\+\(on\|off\)\s*\*/" syn match vhdlPreProc "\(^\|\s\)--\s*rtl_syn\s\+\(on\|off\)\s*" " Industry-standard directives. These are not standard VHDL, but are commonly " used in the industry. syn match vhdlPreProc "/\*\s*synthesis\s\+translate_\(on\|off\)\s*\*/" "syn match vhdlPreProc "/\*\s*simulation\s\+translate_\(on\|off\)\s*\*/" syn match vhdlPreProc "/\*\s*pragma\s\+translate_\(on\|off\)\s*\*/" syn match vhdlPreProc "/\*\s*pragma\s\+synthesis_\(on\|off\)\s*\*/" syn match vhdlPreProc "/\*\s*synopsys\s\+translate_\(on\|off\)\s*\*/" syn match vhdlPreProc "\(^\|\s\)--\s*synthesis\s\+translate_\(on\|off\)\s*" "syn match vhdlPreProc "\(^\|\s\)--\s*simulation\s\+translate_\(on\|off\)\s*" syn match vhdlPreProc "\(^\|\s\)--\s*pragma\s\+translate_\(on\|off\)\s*" syn match vhdlPreProc "\(^\|\s\)--\s*pragma\s\+synthesis_\(on\|off\)\s*" syn match vhdlPreProc "\(^\|\s\)--\s*synopsys\s\+translate_\(on\|off\)\s*" "Modify the following as needed. The trade-off is performance versus functionality. syn sync minlines=600 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link vhdlSpecial Special hi def link vhdlStatement Statement hi def link vhdlCharacter Character hi def link vhdlString String hi def link vhdlVector Number hi def link vhdlBoolean Number hi def link vhdlTodo Todo hi def link vhdlFixme Fixme hi def link vhdlComment Comment hi def link vhdlNumber Number hi def link vhdlTime Number hi def link vhdlType Type hi def link vhdlOperator Operator hi def link vhdlError Error hi def link vhdlAttribute Special hi def link vhdlPreProc PreProc let b:current_syntax = "vhdl" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!F6vim80/syntax/radiance.vimnu[" Vim syntax file " Language: Radiance Scene Description " Maintainer: Georg Mischler " Last change: 26. April. 2001 " Radiance is a lighting simulation software package written " by Gregory Ward-Larson ("the computer artist formerly known " as Greg Ward"), then at LBNL. " " http://radsite.lbl.gov/radiance/HOME.html " " Of course, there is also information available about it " from http://www.schorsch.com/ " We take a minimalist approach here, highlighting just the " essential properties of each object, its type and ID, as well as " comments, external command names and the null-modifier "void". " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " all printing characters except '#' and '!' are valid in names. setlocal iskeyword=\",$-~ " The null-modifier syn keyword radianceKeyword void " The different kinds of scene description object types " Reference types syn keyword radianceExtraType contained alias instance " Surface types syn keyword radianceSurfType contained ring polygon sphere bubble syn keyword radianceSurfType contained cone cup cylinder tube source " Emitting material types syn keyword radianceLightType contained light glow illum spotlight " Material types syn keyword radianceMatType contained mirror mist prism1 prism2 syn keyword radianceMatType contained metal plastic trans syn keyword radianceMatType contained metal2 plastic2 trans2 syn keyword radianceMatType contained metfunc plasfunc transfunc syn keyword radianceMatType contained metdata plasdata transdata syn keyword radianceMatType contained dielectric interface glass syn keyword radianceMatType contained BRTDfunc antimatter " Pattern modifier types syn keyword radiancePatType contained colorfunc brightfunc syn keyword radiancePatType contained colordata colorpict brightdata syn keyword radiancePatType contained colortext brighttext " Texture modifier types syn keyword radianceTexType contained texfunc texdata " Mixture types syn keyword radianceMixType contained mixfunc mixdata mixpict mixtext " Each type name is followed by an ID. " This doesn't work correctly if the id is one of the type names of the " same class (which is legal for radiance), in which case the id will get " type color as well, and the int count (or alias reference) gets id color. syn region radianceID start="\" end="\<\k*\>" contains=radianceExtraType syn region radianceID start="\" end="\<\k*\>" contains=radianceExtraType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceLightType syn region radianceID start="\" end="\<\k*\>" contains=radianceLightType syn region radianceID start="\" end="\<\k*\>" contains=radianceLightType syn region radianceID start="\" end="\<\k*\>" contains=radianceLightType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radianceTexType syn region radianceID start="\" end="\<\k*\>" contains=radianceTexType syn region radianceID start="\" end="\<\k*\>" contains=radianceMixType syn region radianceID start="\" end="\<\k*\>" contains=radianceMixType syn region radianceID start="\" end="\<\k*\>" contains=radianceMixType " external commands (generators, xform et al.) syn match radianceCommand "^\s*!\s*[^\s]\+\>" " The usual suspects syn keyword radianceTodo contained TODO XXX syn match radianceComment "#.*$" contains=radianceTodo " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link radianceKeyword Keyword hi def link radianceExtraType Type hi def link radianceSurfType Type hi def link radianceLightType Type hi def link radianceMatType Type hi def link radiancePatType Type hi def link radianceTexType Type hi def link radianceMixType Type hi def link radianceComment Comment hi def link radianceCommand Function hi def link radianceID String hi def link radianceTodo Todo let b:current_syntax = "radiance" " vim: ts=8 sw=2 PK!Tvim80/syntax/sindacmp.vimnu[" Vim syntax file " Language: sinda85, sinda/fluint compare file " Maintainer: Adrian Nagle, anagle@ball.com " Last Change: 2003 May 11 " Filenames: *.cmp " URL: http://www.naglenet.org/vim/syntax/sindacmp.vim " MAIN URL: http://www.naglenet.org/vim/ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Ignore case syn case ignore " " Begin syntax definitions for compare files. " " Define keywords for sinda compare (sincomp) syn keyword sindacmpUnit celsius fahrenheit " Define matches for sinda compare (sincomp) syn match sindacmpTitle "Steady State Temperature Comparison" syn match sindacmpLabel "File [1-6] is" syn match sindacmpHeader "^ *Node\( *File \d\)* *Node Description" syn match sindacmpInteger "^ *-\=\<[0-9]*\>" syn match sindacmpFloat "-\=\<[0-9]*\.[0-9]*" " Define the default highlighting " Only when an item doesn't have highlighting yet hi def link sindacmpTitle Type hi def link sindacmpUnit PreProc hi def link sindacmpLabel Statement hi def link sindacmpHeader sindaHeader hi def link sindacmpInteger Number hi def link sindacmpFloat Special let b:current_syntax = "sindacmp" " vim: ts=8 sw=2 PK!KKvim80/syntax/scheme.vimnu[" Vim syntax file " Language: Scheme (R7RS) " Last Change: 2018-01-06 " Author: Evan Hanson " Maintainer: Evan Hanson " Previous Author: Dirk van Deun " Previous Maintainer: Sergey Khorev " URL: https://foldling.org/vim/syntax/scheme.vim if exists('b:current_syntax') finish endif let s:cpo = &cpo set cpo&vim syn match schemeParentheses "[^ '`\t\n()\[\]";]\+" syn match schemeParentheses "[)\]]" syn match schemeIdentifier /[^ '`\t\n()\[\]"|;][^ '`\t\n()\[\]"|;]*/ syn region schemeQuote matchgroup=schemeData start=/'[`']*/ end=/[ \t\n()\[\]";]/me=e-1 syn region schemeQuote matchgroup=schemeData start=/'['`]*"/ skip=/\\[\\"]/ end=/"/ syn region schemeQuote matchgroup=schemeData start=/'['`]*|/ skip=/\\[\\|]/ end=/|/ syn region schemeQuote matchgroup=schemeData start=/'['`]*#\?(/ end=/)/ contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster syn region schemeQuasiquote matchgroup=schemeData start=/`['`]*/ end=/[ \t\n()\[\]";]/me=e-1 syn region schemeQuasiquote matchgroup=schemeData start=/`['`]*#\?(/ end=/)/ contains=ALLBUT,schemeQuote,schemeQuoteForm,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster syn region schemeUnquote matchgroup=schemeParentheses start=/,/ end=/[ `'\t\n\[\]()";]/me=e-1 contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster syn region schemeUnquote matchgroup=schemeParentheses start=/,@/ end=/[ `'\t\n\[\]()";]/me=e-1 contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster syn region schemeUnquote matchgroup=schemeParentheses start=/,(/ end=/)/ contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster syn region schemeUnquote matchgroup=schemeParentheses start=/,@(/ end=/)/ contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster syn region schemeQuoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster syn region schemeQuasiquoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster syn region schemeString start=/\(\\\)\@/ syn match schemeNumber /#x[+\-]*[0-9a-fA-F]\+\>/ syn match schemeBoolean /#t\(rue\)\?/ syn match schemeBoolean /#f\(alse\)\?/ syn match schemeCharacter /#\\.[^ `'\t\n\[\]()]*/ syn match schemeCharacter /#\\x[0-9a-fA-F]\+/ syn match schemeComment /;.*$/ syn region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment syn region schemeForm matchgroup=schemeParentheses start="(" end=")" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster syn region schemeForm matchgroup=schemeParentheses start="\[" end="\]" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster syn region schemeVector matchgroup=schemeData start="#(" end=")" contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster syn region schemeVector matchgroup=schemeData start="#[fsu]\d\+(" end=")" contains=schemeNumber,schemeComment,schemeDatumComment if exists('g:is_chicken') || exists('b:is_chicken') syn region schemeImport matchgroup=schemeImport start="\(([ \t\n]*\)\@<=\(import\|import-syntax\|use\|require-extension\)\(-for-syntax\)\?\>" end=")"me=e-1 contained contains=schemeImportForm,schemeIdentifier,schemeComment,schemeDatumComment else syn region schemeImport matchgroup=schemeImport start="\(([ \t\n]*\)\@<=\(import\)\>" end=")"me=e-1 contained contains=schemeImportForm,schemeIdentifier,schemeComment,schemeDatumComment endif syn match schemeImportKeyword "\(([ \t\n]*\)\@<=\(except\|only\|prefix\|rename\|srfi\)\>" syn region schemeImportForm matchgroup=schemeParentheses start="(" end=")" contained contains=schemeIdentifier,schemeComment,schemeDatumComment,@schemeImportCluster syn cluster schemeImportCluster contains=schemeImportForm,schemeImportKeyword syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*/ end=/[ \t\n()\[\]";]/me=e-1 syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*"/ skip=/\\[\\"]/ end=/"/ syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*|/ skip=/\\[\\|]/ end=/|/ syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*\(#\([usf]\d\+\)\?\)\?(/ end=/)/ contains=schemeDatumCommentForm syn region schemeDatumCommentForm start="(" end=")" contained contains=schemeDatumCommentForm syn cluster schemeSyntaxCluster contains=schemeFunction,schemeKeyword,schemeSyntax,schemeExtraSyntax,schemeLibrarySyntax,schemeSyntaxSyntax syn keyword schemeLibrarySyntax define-library syn keyword schemeLibrarySyntax export syn keyword schemeLibrarySyntax include syn keyword schemeLibrarySyntax include-ci syn keyword schemeLibrarySyntax include-library-declarations syn keyword schemeLibrarySyntax library syn keyword schemeLibrarySyntax cond-expand syn keyword schemeSyntaxSyntax define-syntax syn keyword schemeSyntaxSyntax let-syntax syn keyword schemeSyntaxSyntax letrec-syntax syn keyword schemeSyntaxSyntax syntax-rules syn keyword schemeSyntax => syn keyword schemeSyntax and syn keyword schemeSyntax begin syn keyword schemeSyntax case syn keyword schemeSyntax case-lambda syn keyword schemeSyntax cond syn keyword schemeSyntax define syn keyword schemeSyntax define-record-type syn keyword schemeSyntax define-values syn keyword schemeSyntax delay syn keyword schemeSyntax delay-force syn keyword schemeSyntax do syn keyword schemeSyntax else syn keyword schemeSyntax guard syn keyword schemeSyntax if syn keyword schemeSyntax lambda syn keyword schemeSyntax let syn keyword schemeSyntax let* syn keyword schemeSyntax let*-values syn keyword schemeSyntax let-values syn keyword schemeSyntax letrec syn keyword schemeSyntax letrec* syn keyword schemeSyntax or syn keyword schemeSyntax parameterize syn keyword schemeSyntax quasiquote syn keyword schemeSyntax quote syn keyword schemeSyntax set! syn keyword schemeSyntax unless syn keyword schemeSyntax unquote syn keyword schemeSyntax unquote-splicing syn keyword schemeSyntax when syn keyword schemeFunction * syn keyword schemeFunction + syn keyword schemeFunction - syn keyword schemeFunction / syn keyword schemeFunction < syn keyword schemeFunction <= syn keyword schemeFunction = syn keyword schemeFunction > syn keyword schemeFunction >= syn keyword schemeFunction abs syn keyword schemeFunction acos syn keyword schemeFunction acos syn keyword schemeFunction angle syn keyword schemeFunction append syn keyword schemeFunction apply syn keyword schemeFunction asin syn keyword schemeFunction assoc syn keyword schemeFunction assq syn keyword schemeFunction assv syn keyword schemeFunction atan syn keyword schemeFunction binary-port? syn keyword schemeFunction boolean=? syn keyword schemeFunction boolean? syn keyword schemeFunction bytevector syn keyword schemeFunction bytevector-append syn keyword schemeFunction bytevector-append syn keyword schemeFunction bytevector-copy syn keyword schemeFunction bytevector-copy! syn keyword schemeFunction bytevector-length syn keyword schemeFunction bytevector-u8-ref syn keyword schemeFunction bytevector-u8-set! syn keyword schemeFunction bytevector? syn keyword schemeFunction caaaar syn keyword schemeFunction caaadr syn keyword schemeFunction caaar syn keyword schemeFunction caadar syn keyword schemeFunction caaddr syn keyword schemeFunction caadr syn keyword schemeFunction caar syn keyword schemeFunction cadaar syn keyword schemeFunction cadadr syn keyword schemeFunction cadar syn keyword schemeFunction caddar syn keyword schemeFunction cadddr syn keyword schemeFunction caddr syn keyword schemeFunction cadr syn keyword schemeFunction call-with-current-continuation syn keyword schemeFunction call-with-input-file syn keyword schemeFunction call-with-output-file syn keyword schemeFunction call-with-port syn keyword schemeFunction call-with-values syn keyword schemeFunction call/cc syn keyword schemeFunction car syn keyword schemeFunction cdaaar syn keyword schemeFunction cdaadr syn keyword schemeFunction cdaar syn keyword schemeFunction cdadar syn keyword schemeFunction cdaddr syn keyword schemeFunction cdadr syn keyword schemeFunction cdar syn keyword schemeFunction cddaar syn keyword schemeFunction cddadr syn keyword schemeFunction cddar syn keyword schemeFunction cdddar syn keyword schemeFunction cddddr syn keyword schemeFunction cdddr syn keyword schemeFunction cddr syn keyword schemeFunction cdr syn keyword schemeFunction ceiling syn keyword schemeFunction char->integer syn keyword schemeFunction char-alphabetic? syn keyword schemeFunction char-ci<=? syn keyword schemeFunction char-ci=? syn keyword schemeFunction char-ci>? syn keyword schemeFunction char-downcase syn keyword schemeFunction char-foldcase syn keyword schemeFunction char-lower-case? syn keyword schemeFunction char-numeric? syn keyword schemeFunction char-ready? syn keyword schemeFunction char-upcase syn keyword schemeFunction char-upper-case? syn keyword schemeFunction char-whitespace? syn keyword schemeFunction char<=? syn keyword schemeFunction char=? syn keyword schemeFunction char>? syn keyword schemeFunction char? syn keyword schemeFunction close-input-port syn keyword schemeFunction close-output-port syn keyword schemeFunction close-port syn keyword schemeFunction command-line syn keyword schemeFunction complex? syn keyword schemeFunction cons syn keyword schemeFunction cos syn keyword schemeFunction current-error-port syn keyword schemeFunction current-input-port syn keyword schemeFunction current-jiffy syn keyword schemeFunction current-output-port syn keyword schemeFunction current-second syn keyword schemeFunction delete-file syn keyword schemeFunction denominator syn keyword schemeFunction digit-value syn keyword schemeFunction display syn keyword schemeFunction dynamic-wind syn keyword schemeFunction emergency-exit syn keyword schemeFunction environment syn keyword schemeFunction eof-object syn keyword schemeFunction eof-object? syn keyword schemeFunction eq? syn keyword schemeFunction equal? syn keyword schemeFunction eqv? syn keyword schemeFunction error syn keyword schemeFunction error-object-irritants syn keyword schemeFunction error-object-message syn keyword schemeFunction error-object? syn keyword schemeFunction eval syn keyword schemeFunction even? syn keyword schemeFunction exact syn keyword schemeFunction exact->inexact syn keyword schemeFunction exact-integer-sqrt syn keyword schemeFunction exact-integer? syn keyword schemeFunction exact? syn keyword schemeFunction exit syn keyword schemeFunction exp syn keyword schemeFunction expt syn keyword schemeFunction features syn keyword schemeFunction file-error? syn keyword schemeFunction file-exists? syn keyword schemeFunction finite? syn keyword schemeFunction floor syn keyword schemeFunction floor-quotient syn keyword schemeFunction floor-remainder syn keyword schemeFunction floor/ syn keyword schemeFunction flush-output-port syn keyword schemeFunction for-each syn keyword schemeFunction force syn keyword schemeFunction gcd syn keyword schemeFunction get-environment-variable syn keyword schemeFunction get-environment-variables syn keyword schemeFunction get-output-bytevector syn keyword schemeFunction get-output-string syn keyword schemeFunction imag-part syn keyword schemeFunction inexact syn keyword schemeFunction inexact->exact syn keyword schemeFunction inexact? syn keyword schemeFunction infinite? syn keyword schemeFunction input-port-open? syn keyword schemeFunction input-port? syn keyword schemeFunction integer->char syn keyword schemeFunction integer? syn keyword schemeFunction interaction-environment syn keyword schemeFunction jiffies-per-second syn keyword schemeFunction lcm syn keyword schemeFunction length syn keyword schemeFunction list syn keyword schemeFunction list->string syn keyword schemeFunction list->vector syn keyword schemeFunction list-copy syn keyword schemeFunction list-ref syn keyword schemeFunction list-set! syn keyword schemeFunction list-tail syn keyword schemeFunction list? syn keyword schemeFunction load syn keyword schemeFunction log syn keyword schemeFunction magnitude syn keyword schemeFunction make-bytevector syn keyword schemeFunction make-list syn keyword schemeFunction make-parameter syn keyword schemeFunction make-polar syn keyword schemeFunction make-promise syn keyword schemeFunction make-rectangular syn keyword schemeFunction make-string syn keyword schemeFunction make-vector syn keyword schemeFunction map syn keyword schemeFunction max syn keyword schemeFunction member syn keyword schemeFunction memq syn keyword schemeFunction memv syn keyword schemeFunction min syn keyword schemeFunction modulo syn keyword schemeFunction nan? syn keyword schemeFunction negative? syn keyword schemeFunction newline syn keyword schemeFunction not syn keyword schemeFunction null-environment syn keyword schemeFunction null? syn keyword schemeFunction number->string syn keyword schemeFunction number? syn keyword schemeFunction numerator syn keyword schemeFunction odd? syn keyword schemeFunction open-binary-input-file syn keyword schemeFunction open-binary-output-file syn keyword schemeFunction open-input-bytevector syn keyword schemeFunction open-input-file syn keyword schemeFunction open-input-string syn keyword schemeFunction open-output-bytevector syn keyword schemeFunction open-output-file syn keyword schemeFunction open-output-string syn keyword schemeFunction output-port-open? syn keyword schemeFunction output-port? syn keyword schemeFunction pair? syn keyword schemeFunction peek-char syn keyword schemeFunction peek-u8 syn keyword schemeFunction port? syn keyword schemeFunction positive? syn keyword schemeFunction procedure? syn keyword schemeFunction promise? syn keyword schemeFunction quotient syn keyword schemeFunction raise syn keyword schemeFunction raise-continuable syn keyword schemeFunction rational? syn keyword schemeFunction rationalize syn keyword schemeFunction read syn keyword schemeFunction read-bytevector syn keyword schemeFunction read-bytevector! syn keyword schemeFunction read-char syn keyword schemeFunction read-error? syn keyword schemeFunction read-line syn keyword schemeFunction read-string syn keyword schemeFunction read-u8 syn keyword schemeFunction real-part syn keyword schemeFunction real? syn keyword schemeFunction remainder syn keyword schemeFunction reverse syn keyword schemeFunction round syn keyword schemeFunction scheme-report-environment syn keyword schemeFunction set-car! syn keyword schemeFunction set-cdr! syn keyword schemeFunction sin syn keyword schemeFunction sqrt syn keyword schemeFunction square syn keyword schemeFunction string syn keyword schemeFunction string->list syn keyword schemeFunction string->number syn keyword schemeFunction string->symbol syn keyword schemeFunction string->utf8 syn keyword schemeFunction string->vector syn keyword schemeFunction string-append syn keyword schemeFunction string-ci<=? syn keyword schemeFunction string-ci=? syn keyword schemeFunction string-ci>? syn keyword schemeFunction string-copy syn keyword schemeFunction string-copy! syn keyword schemeFunction string-downcase syn keyword schemeFunction string-fill! syn keyword schemeFunction string-foldcase syn keyword schemeFunction string-for-each syn keyword schemeFunction string-length syn keyword schemeFunction string-map syn keyword schemeFunction string-ref syn keyword schemeFunction string-set! syn keyword schemeFunction string-upcase syn keyword schemeFunction string<=? syn keyword schemeFunction string=? syn keyword schemeFunction string>? syn keyword schemeFunction string? syn keyword schemeFunction substring syn keyword schemeFunction symbol->string syn keyword schemeFunction symbol=? syn keyword schemeFunction symbol? syn keyword schemeFunction syntax-error syn keyword schemeFunction tan syn keyword schemeFunction textual-port? syn keyword schemeFunction transcript-off syn keyword schemeFunction transcript-on syn keyword schemeFunction truncate syn keyword schemeFunction truncate-quotient syn keyword schemeFunction truncate-remainder syn keyword schemeFunction truncate/ syn keyword schemeFunction u8-ready? syn keyword schemeFunction utf8->string syn keyword schemeFunction values syn keyword schemeFunction vector syn keyword schemeFunction vector->list syn keyword schemeFunction vector->string syn keyword schemeFunction vector-append syn keyword schemeFunction vector-copy syn keyword schemeFunction vector-copy! syn keyword schemeFunction vector-fill! syn keyword schemeFunction vector-for-each syn keyword schemeFunction vector-length syn keyword schemeFunction vector-map syn keyword schemeFunction vector-ref syn keyword schemeFunction vector-set! syn keyword schemeFunction vector? syn keyword schemeFunction with-exception-handler syn keyword schemeFunction with-input-from-file syn keyword schemeFunction with-output-to-file syn keyword schemeFunction write syn keyword schemeFunction write-bytevector syn keyword schemeFunction write-char syn keyword schemeFunction write-shared syn keyword schemeFunction write-simple syn keyword schemeFunction write-string syn keyword schemeFunction write-u8 syn keyword schemeFunction zero? hi def link schemeBoolean Boolean hi def link schemeCharacter Character hi def link schemeComment Comment hi def link schemeConstant Constant hi def link schemeData Delimiter hi def link schemeDatumComment Comment hi def link schemeDatumCommentForm Comment hi def link schemeDelimiter Delimiter hi def link schemeError Error hi def link schemeExtraSyntax Underlined hi def link schemeFunction Function hi def link schemeIdentifier Normal hi def link schemeImport PreProc hi def link schemeImportKeyword PreProc hi def link schemeKeyword Type hi def link schemeLibrarySyntax PreProc hi def link schemeMultilineComment Comment hi def link schemeNumber Number hi def link schemeParentheses Normal hi def link schemeQuasiquote Delimiter hi def link schemeQuote Delimiter hi def link schemeSpecialSyntax Special hi def link schemeString String hi def link schemeSymbol Normal hi def link schemeSyntax Statement hi def link schemeSyntaxSyntax PreProc hi def link schemeTypeSyntax Type let b:did_scheme_syntax = 1 if exists('b:is_chicken') || exists('g:is_chicken') exe 'ru! syntax/chicken.vim' endif unlet b:did_scheme_syntax let b:current_syntax = 'scheme' let &cpo = s:cpo unlet s:cpo PK!5 / /vim80/syntax/smcl.vimnu[" smcl.vim -- Vim syntax file for smcl files. " Language: SMCL -- Stata Markup and Control Language " Maintainer: Jeff Pitblado " Last Change: 26apr2006 " Version: 1.1.2 " Log: " 20mar2003 updated the match definition for cmdab " 14apr2006 'syntax clear' only under version control " check for 'b:current_syntax', removed 'did_smcl_syntax_inits' " 26apr2006 changed 'stata_smcl' to 'smcl' " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syntax case match syn keyword smclCCLword current_date contained syn keyword smclCCLword current_time contained syn keyword smclCCLword rmsg_time contained syn keyword smclCCLword stata_version contained syn keyword smclCCLword version contained syn keyword smclCCLword born_date contained syn keyword smclCCLword flavor contained syn keyword smclCCLword SE contained syn keyword smclCCLword mode contained syn keyword smclCCLword console contained syn keyword smclCCLword os contained syn keyword smclCCLword osdtl contained syn keyword smclCCLword machine_type contained syn keyword smclCCLword byteorder contained syn keyword smclCCLword sysdir_stata contained syn keyword smclCCLword sysdir_updates contained syn keyword smclCCLword sysdir_base contained syn keyword smclCCLword sysdir_site contained syn keyword smclCCLword sysdir_plus contained syn keyword smclCCLword sysdir_personal contained syn keyword smclCCLword sysdir_oldplace contained syn keyword smclCCLword adopath contained syn keyword smclCCLword pwd contained syn keyword smclCCLword dirsep contained syn keyword smclCCLword max_N_theory contained syn keyword smclCCLword max_N_current contained syn keyword smclCCLword max_k_theory contained syn keyword smclCCLword max_k_current contained syn keyword smclCCLword max_width_theory contained syn keyword smclCCLword max_width_current contained syn keyword smclCCLword max_matsize contained syn keyword smclCCLword min_matsize contained syn keyword smclCCLword max_macrolen contained syn keyword smclCCLword macrolen contained syn keyword smclCCLword max_cmdlen contained syn keyword smclCCLword cmdlen contained syn keyword smclCCLword namelen contained syn keyword smclCCLword mindouble contained syn keyword smclCCLword maxdouble contained syn keyword smclCCLword epsdouble contained syn keyword smclCCLword minfloat contained syn keyword smclCCLword maxfloat contained syn keyword smclCCLword epsfloat contained syn keyword smclCCLword minlong contained syn keyword smclCCLword maxlong contained syn keyword smclCCLword minint contained syn keyword smclCCLword maxint contained syn keyword smclCCLword minbyte contained syn keyword smclCCLword maxbyte contained syn keyword smclCCLword maxstrvarlen contained syn keyword smclCCLword memory contained syn keyword smclCCLword maxvar contained syn keyword smclCCLword matsize contained syn keyword smclCCLword N contained syn keyword smclCCLword k contained syn keyword smclCCLword width contained syn keyword smclCCLword changed contained syn keyword smclCCLword filename contained syn keyword smclCCLword filedate contained syn keyword smclCCLword more contained syn keyword smclCCLword rmsg contained syn keyword smclCCLword dp contained syn keyword smclCCLword linesize contained syn keyword smclCCLword pagesize contained syn keyword smclCCLword logtype contained syn keyword smclCCLword linegap contained syn keyword smclCCLword scrollbufsize contained syn keyword smclCCLword varlabelpos contained syn keyword smclCCLword reventries contained syn keyword smclCCLword graphics contained syn keyword smclCCLword scheme contained syn keyword smclCCLword printcolor contained syn keyword smclCCLword adosize contained syn keyword smclCCLword maxdb contained syn keyword smclCCLword virtual contained syn keyword smclCCLword checksum contained syn keyword smclCCLword timeout1 contained syn keyword smclCCLword timeout2 contained syn keyword smclCCLword httpproxy contained syn keyword smclCCLword h_current contained syn keyword smclCCLword max_matsize contained syn keyword smclCCLword min_matsize contained syn keyword smclCCLword max_macrolen contained syn keyword smclCCLword macrolen contained syn keyword smclCCLword max_cmdlen contained syn keyword smclCCLword cmdlen contained syn keyword smclCCLword namelen contained syn keyword smclCCLword mindouble contained syn keyword smclCCLword maxdouble contained syn keyword smclCCLword epsdouble contained syn keyword smclCCLword minfloat contained syn keyword smclCCLword maxfloat contained syn keyword smclCCLword epsfloat contained syn keyword smclCCLword minlong contained syn keyword smclCCLword maxlong contained syn keyword smclCCLword minint contained syn keyword smclCCLword maxint contained syn keyword smclCCLword minbyte contained syn keyword smclCCLword maxbyte contained syn keyword smclCCLword maxstrvarlen contained syn keyword smclCCLword memory contained syn keyword smclCCLword maxvar contained syn keyword smclCCLword matsize contained syn keyword smclCCLword N contained syn keyword smclCCLword k contained syn keyword smclCCLword width contained syn keyword smclCCLword changed contained syn keyword smclCCLword filename contained syn keyword smclCCLword filedate contained syn keyword smclCCLword more contained syn keyword smclCCLword rmsg contained syn keyword smclCCLword dp contained syn keyword smclCCLword linesize contained syn keyword smclCCLword pagesize contained syn keyword smclCCLword logtype contained syn keyword smclCCLword linegap contained syn keyword smclCCLword scrollbufsize contained syn keyword smclCCLword varlabelpos contained syn keyword smclCCLword reventries contained syn keyword smclCCLword graphics contained syn keyword smclCCLword scheme contained syn keyword smclCCLword printcolor contained syn keyword smclCCLword adosize contained syn keyword smclCCLword maxdb contained syn keyword smclCCLword virtual contained syn keyword smclCCLword checksum contained syn keyword smclCCLword timeout1 contained syn keyword smclCCLword timeout2 contained syn keyword smclCCLword httpproxy contained syn keyword smclCCLword httpproxyhost contained syn keyword smclCCLword httpproxyport contained syn keyword smclCCLword httpproxyauth contained syn keyword smclCCLword httpproxyuser contained syn keyword smclCCLword httpproxypw contained syn keyword smclCCLword trace contained syn keyword smclCCLword tracedepth contained syn keyword smclCCLword tracesep contained syn keyword smclCCLword traceindent contained syn keyword smclCCLword traceexapnd contained syn keyword smclCCLword tracenumber contained syn keyword smclCCLword type contained syn keyword smclCCLword level contained syn keyword smclCCLword seed contained syn keyword smclCCLword searchdefault contained syn keyword smclCCLword pi contained syn keyword smclCCLword rc contained " Directive for the contant and current-value class syn region smclCCL start=/{ccl / end=/}/ oneline contains=smclCCLword " The order of the following syntax definitions is roughly that of the on-line " documentation for smcl in Stata, from within Stata see help smcl. " Format directives for line and paragraph modes syn match smclFormat /{smcl}/ syn match smclFormat /{sf\(\|:[^}]\+\)}/ syn match smclFormat /{it\(\|:[^}]\+\)}/ syn match smclFormat /{bf\(\|:[^}]\+\)}/ syn match smclFormat /{inp\(\|:[^}]\+\)}/ syn match smclFormat /{input\(\|:[^}]\+\)}/ syn match smclFormat /{err\(\|:[^}]\+\)}/ syn match smclFormat /{error\(\|:[^}]\+\)}/ syn match smclFormat /{res\(\|:[^}]\+\)}/ syn match smclFormat /{result\(\|:[^}]\+\)}/ syn match smclFormat /{txt\(\|:[^}]\+\)}/ syn match smclFormat /{text\(\|:[^}]\+\)}/ syn match smclFormat /{com\(\|:[^}]\+\)}/ syn match smclFormat /{cmd\(\|:[^}]\+\)}/ syn match smclFormat /{cmdab:[^:}]\+:[^:}()]*\(\|:\|:(\|:()\)}/ syn match smclFormat /{hi\(\|:[^}]\+\)}/ syn match smclFormat /{hilite\(\|:[^}]\+\)}/ syn match smclFormat /{ul \(on\|off\)}/ syn match smclFormat /{ul:[^}]\+}/ syn match smclFormat /{hline\(\| \d\+\| -\d\+\|:[^}]\+\)}/ syn match smclFormat /{dup \d\+:[^}]\+}/ syn match smclFormat /{c [^}]\+}/ syn match smclFormat /{char [^}]\+}/ syn match smclFormat /{reset}/ " Formatting directives for line mode syn match smclFormat /{title:[^}]\+}/ syn match smclFormat /{center:[^}]\+}/ syn match smclFormat /{centre:[^}]\+}/ syn match smclFormat /{center \d\+:[^}]\+}/ syn match smclFormat /{centre \d\+:[^}]\+}/ syn match smclFormat /{right:[^}]\+}/ syn match smclFormat /{lalign \d\+:[^}]\+}/ syn match smclFormat /{ralign \d\+:[^}]\+}/ syn match smclFormat /{\.\.\.}/ syn match smclFormat /{col \d\+}/ syn match smclFormat /{space \d\+}/ syn match smclFormat /{tab}/ " Formatting directives for paragraph mode syn match smclFormat /{bind:[^}]\+}/ syn match smclFormat /{break}/ syn match smclFormat /{p}/ syn match smclFormat /{p \d\+}/ syn match smclFormat /{p \d\+ \d\+}/ syn match smclFormat /{p \d\+ \d\+ \d\+}/ syn match smclFormat /{pstd}/ syn match smclFormat /{psee}/ syn match smclFormat /{phang\(\|2\|3\)}/ syn match smclFormat /{pmore\(\|2\|3\)}/ syn match smclFormat /{pin\(\|2\|3\)}/ syn match smclFormat /{p_end}/ syn match smclFormat /{opt \w\+\(\|:\w\+\)\(\|([^)}]*)\)}/ syn match smclFormat /{opth \w*\(\|:\w\+\)(\w*)}/ syn match smclFormat /{opth "\w\+\((\w\+:[^)}]\+)\)"}/ syn match smclFormat /{opth \w\+:\w\+(\w\+:[^)}]\+)}/ syn match smclFormat /{dlgtab\s*\(\|\d\+\|\d\+\s\+\d\+\):[^}]\+}/ syn match smclFormat /{p2colset\s\+\d\+\s\+\d\+\s\+\d\+\s\+\d\+}/ syn match smclFormat /{p2col\s\+:[^{}]*}.*{p_end}/ syn match smclFormat /{p2col\s\+:{[^{}]*}}.*{p_end}/ syn match smclFormat /{p2coldent\s*:[^{}]*}.*{p_end}/ syn match smclFormat /{p2coldent\s*:{[^{}]*}}.*{p_end}/ syn match smclFormat /{p2line\s*\(\|\d\+\s\+\d\+\)}/ syn match smclFormat /{p2colreset}/ syn match smclFormat /{synoptset\s\+\d\+\s\+\w\+}/ syn match smclFormat /{synopt\s*:[^{}]*}.*{p_end}/ syn match smclFormat /{synopt\s*:{[^{}]*}}.*{p_end}/ syn match smclFormat /{syntab\s*:[^{}]*}/ syn match smclFormat /{synopthdr}/ syn match smclFormat /{synoptline}/ " Link directive for line and paragraph modes syn match smclLink /{help [^}]\+}/ syn match smclLink /{helpb [^}]\+}/ syn match smclLink /{help_d:[^}]\+}/ syn match smclLink /{search [^}]\+}/ syn match smclLink /{search_d:[^}]\+}/ syn match smclLink /{browse [^}]\+}/ syn match smclLink /{view [^}]\+}/ syn match smclLink /{view_d:[^}]\+}/ syn match smclLink /{news:[^}]\+}/ syn match smclLink /{net [^}]\+}/ syn match smclLink /{net_d:[^}]\+}/ syn match smclLink /{netfrom_d:[^}]\+}/ syn match smclLink /{ado [^}]\+}/ syn match smclLink /{ado_d:[^}]\+}/ syn match smclLink /{update [^}]\+}/ syn match smclLink /{update_d:[^}]\+}/ syn match smclLink /{dialog [^}]\+}/ syn match smclLink /{back:[^}]\+}/ syn match smclLink /{clearmore:[^}]\+}/ syn match smclLink /{stata [^}]\+}/ syn match smclLink /{newvar\(\|:[^}]\+\)}/ syn match smclLink /{var\(\|:[^}]\+\)}/ syn match smclLink /{varname\(\|:[^}]\+\)}/ syn match smclLink /{vars\(\|:[^}]\+\)}/ syn match smclLink /{varlist\(\|:[^}]\+\)}/ syn match smclLink /{depvar\(\|:[^}]\+\)}/ syn match smclLink /{depvars\(\|:[^}]\+\)}/ syn match smclLink /{depvarlist\(\|:[^}]\+\)}/ syn match smclLink /{indepvars\(\|:[^}]\+\)}/ syn match smclLink /{dtype}/ syn match smclLink /{ifin}/ syn match smclLink /{weight}/ " Comment syn region smclComment start=/{\*/ end=/}/ oneline " Strings syn region smclString matchgroup=Nothing start=/"/ end=/"/ oneline syn region smclEString matchgroup=Nothing start=/`"/ end=/"'/ oneline contains=smclEString " assign highlight groups hi def link smclEString smclString hi def link smclCCLword Statement hi def link smclCCL Type hi def link smclFormat Statement hi def link smclLink Underlined hi def link smclComment Comment hi def link smclString String let b:current_syntax = "smcl" " vim: ts=8 PK!=Io?||vim80/syntax/iss.vimnu[" Vim syntax file " Language: Inno Setup File (iss file) and My InnoSetup extension " Maintainer: Jason Mills (jmills@cs.mun.ca) " Previous Maintainer: Dominique Stphan (dominique@mggen.com) " Last Change: 2004 Dec 14 " " Todo: " - The paramter String: is matched as flag string (because of case ignore). " - Pascal scripting syntax is not recognized. " - Embedded double quotes confuse string matches. e.g. "asfd""asfa" " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " shut case off syn case ignore " Preprocessor syn region issPreProc start="^\s*#" end="$" " Section syn region issSection start="\[" end="\]" " Label in the [Setup] Section syn match issDirective "^[^=]\+=" " URL syn match issURL "http[s]\=:\/\/.*$" " Parameters used for any section. " syn match issParam"[^: ]\+:" syn match issParam "Name:" syn match issParam "MinVersion:\|OnlyBelowVersion:\|Languages:" syn match issParam "Source:\|DestDir:\|DestName:\|CopyMode:" syn match issParam "Attribs:\|Permissions:\|FontInstall:\|Flags:" syn match issParam "FileName:\|Parameters:\|WorkingDir:\|HotKey:\|Comment:" syn match issParam "IconFilename:\|IconIndex:" syn match issParam "Section:\|Key:\|String:" syn match issParam "Root:\|SubKey:\|ValueType:\|ValueName:\|ValueData:" syn match issParam "RunOnceId:" syn match issParam "Type:\|Excludes:" syn match issParam "Components:\|Description:\|GroupDescription:\|Types:\|ExtraDiskSpaceRequired:" syn match issParam "StatusMsg:\|RunOnceId:\|Tasks:" syn match issParam "MessagesFile:\|LicenseFile:\|InfoBeforeFile:\|InfoAfterFile:" syn match issComment "^\s*;.*$" " folder constant syn match issFolder "{[^{]*}" " string syn region issString start=+"+ end=+"+ contains=issFolder " [Dirs] syn keyword issDirsFlags deleteafterinstall uninsalwaysuninstall uninsneveruninstall " [Files] syn keyword issFilesCopyMode normal onlyifdoesntexist alwaysoverwrite alwaysskipifsameorolder dontcopy syn keyword issFilesAttribs readonly hidden system syn keyword issFilesPermissions full modify readexec syn keyword issFilesFlags allowunsafefiles comparetimestampalso confirmoverwrite deleteafterinstall syn keyword issFilesFlags dontcopy dontverifychecksum external fontisnttruetype ignoreversion syn keyword issFilesFlags isreadme onlyifdestfileexists onlyifdoesntexist overwritereadonly syn keyword issFilesFlags promptifolder recursesubdirs regserver regtypelib restartreplace syn keyword issFilesFlags sharedfile skipifsourcedoesntexist sortfilesbyextension touch syn keyword issFilesFlags uninsremovereadonly uninsrestartdelete uninsneveruninstall syn keyword issFilesFlags replacesameversion nocompression noencryption noregerror " [Icons] syn keyword issIconsFlags closeonexit createonlyiffileexists dontcloseonexit syn keyword issIconsFlags runmaximized runminimized uninsneveruninstall useapppaths " [INI] syn keyword issINIFlags createkeyifdoesntexist uninsdeleteentry uninsdeletesection uninsdeletesectionifempty " [Registry] syn keyword issRegRootKey HKCR HKCU HKLM HKU HKCC syn keyword issRegValueType none string expandsz multisz dword binary syn keyword issRegFlags createvalueifdoesntexist deletekey deletevalue dontcreatekey syn keyword issRegFlags preservestringtype noerror uninsclearvalue syn keyword issRegFlags uninsdeletekey uninsdeletekeyifempty uninsdeletevalue " [Run] and [UninstallRun] syn keyword issRunFlags hidewizard nowait postinstall runhidden runmaximized syn keyword issRunFlags runminimized shellexec skipifdoesntexist skipifnotsilent syn keyword issRunFlags skipifsilent unchecked waituntilidle " [Types] syn keyword issTypesFlags iscustom " [Components] syn keyword issComponentsFlags dontinheritcheck exclusive fixed restart disablenouninstallwarning " [UninstallDelete] and [InstallDelete] syn keyword issInstallDeleteType files filesandordirs dirifempty " [Tasks] syn keyword issTasksFlags checkedonce dontinheritcheck exclusive restart unchecked " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overridden later hi def link issSection Special hi def link issComment Comment hi def link issDirective Type hi def link issParam Type hi def link issFolder Special hi def link issString String hi def link issURL Include hi def link issPreProc PreProc hi def link issDirsFlags Keyword hi def link issFilesCopyMode Keyword hi def link issFilesAttribs Keyword hi def link issFilesPermissions Keyword hi def link issFilesFlags Keyword hi def link issIconsFlags Keyword hi def link issINIFlags Keyword hi def link issRegRootKey Keyword hi def link issRegValueType Keyword hi def link issRegFlags Keyword hi def link issRunFlags Keyword hi def link issTypesFlags Keyword hi def link issComponentsFlags Keyword hi def link issInstallDeleteType Keyword hi def link issTasksFlags Keyword let b:current_syntax = "iss" " vim:ts=8 PK!9vim80/syntax/lite.vimnu[" Vim syntax file " Language: lite " Maintainer: Lutz Eymers " URL: http://www.isp.de/data/lite.vim " Email: Subject: send syntax_vim.tgz " Last Change: 2001 Mai 01 " " Options lite_sql_query = 1 for SQL syntax highligthing inside strings " lite_minlines = x to sync at least x lines backwards " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'lite' endif if main_syntax == 'lite' if exists("lite_sql_query") if lite_sql_query == 1 syn include @liteSql :p:h/sql.vim unlet b:current_syntax endif endif endif if main_syntax == 'msql' if exists("msql_sql_query") if msql_sql_query == 1 syn include @liteSql :p:h/sql.vim unlet b:current_syntax endif endif endif syn cluster liteSql remove=sqlString,sqlComment syn case match " Internal Variables syn keyword liteIntVar ERRMSG contained " Comment syn region liteComment start="/\*" end="\*/" contains=liteTodo " Function names syn keyword liteFunctions echo printf fprintf open close read syn keyword liteFunctions readln readtok syn keyword liteFunctions split strseg chop tr sub substr syn keyword liteFunctions test unlink umask chmod mkdir chdir rmdir syn keyword liteFunctions rename truncate link symlink stat syn keyword liteFunctions sleep system getpid getppid kill syn keyword liteFunctions time ctime time2unixtime unixtime2year syn keyword liteFunctions unixtime2year unixtime2month unixtime2day syn keyword liteFunctions unixtime2hour unixtime2min unixtime2sec syn keyword liteFunctions strftime syn keyword liteFunctions getpwnam getpwuid syn keyword liteFunctions gethostbyname gethostbyaddress syn keyword liteFunctions urlEncode setContentType includeFile syn keyword liteFunctions msqlConnect msqlClose msqlSelectDB syn keyword liteFunctions msqlQuery msqlStoreResult msqlFreeResult syn keyword liteFunctions msqlFetchRow msqlDataSeek msqlListDBs syn keyword liteFunctions msqlListTables msqlInitFieldList msqlListField syn keyword liteFunctions msqlFieldSeek msqlNumRows msqlEncode syn keyword liteFunctions exit fatal typeof syn keyword liteFunctions crypt addHttpHeader " Conditional syn keyword liteConditional if else " Repeat syn keyword liteRepeat while " Operator syn keyword liteStatement break return continue " Operator syn match liteOperator "[-+=#*]" syn match liteOperator "/[^*]"me=e-1 syn match liteOperator "\$" syn match liteRelation "&&" syn match liteRelation "||" syn match liteRelation "[!=<>]=" syn match liteRelation "[<>]" " Identifier syn match liteIdentifier "$\h\w*" contains=liteIntVar,liteOperator syn match liteGlobalIdentifier "@\h\w*" contains=liteIntVar " Include syn keyword liteInclude load " Define syn keyword liteDefine funct " Type syn keyword liteType int uint char real " String syn region liteString keepend matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=liteIdentifier,liteSpecialChar,@liteSql " Number syn match liteNumber "-\=\<\d\+\>" " Float syn match liteFloat "\(-\=\<\d+\|-\=\)\.\d\+\>" " SpecialChar syn match liteSpecialChar "\\[abcfnrtv\\]" contained syn match liteParentError "[)}\]]" " Todo syn keyword liteTodo TODO Todo todo contained " dont syn #!... syn match liteExec "^#!.*$" " Parents syn cluster liteInside contains=liteComment,liteFunctions,liteIdentifier,liteGlobalIdentifier,liteConditional,liteRepeat,liteStatement,liteOperator,liteRelation,liteType,liteString,liteNumber,liteFloat,liteParent syn region liteParent matchgroup=Delimiter start="(" end=")" contains=@liteInside syn region liteParent matchgroup=Delimiter start="{" end="}" contains=@liteInside syn region liteParent matchgroup=Delimiter start="\[" end="\]" contains=@liteInside " sync if main_syntax == 'lite' if exists("lite_minlines") exec "syn sync minlines=" . lite_minlines else syn sync minlines=100 endif endif " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link liteComment Comment hi def link liteString String hi def link liteNumber Number hi def link liteFloat Float hi def link liteIdentifier Identifier hi def link liteGlobalIdentifier Identifier hi def link liteIntVar Identifier hi def link liteFunctions Function hi def link liteRepeat Repeat hi def link liteConditional Conditional hi def link liteStatement Statement hi def link liteType Type hi def link liteInclude Include hi def link liteDefine Define hi def link liteSpecialChar SpecialChar hi def link liteParentError liteError hi def link liteError Error hi def link liteTodo Todo hi def link liteOperator Operator hi def link liteRelation Operator let b:current_syntax = "lite" if main_syntax == 'lite' unlet main_syntax endif " vim: ts=8 PK!5!!vim80/syntax/perl6.vimnu[" Vim syntax file " Language: Perl 6 " Maintainer: vim-perl " Homepage: http://github.com/vim-perl/vim-perl/tree/master " Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Last Change: 2013-07-21 " Contributors: Luke Palmer " Moritz Lenz " Hinrik Örn Sigurðsson " " This is a big undertaking. Perl 6 is the sort of language that only Perl " can parse. But I'll do my best to get vim to. " " You can associate the extension ".pl" with the filetype "perl6" by setting " autocmd BufNewFile,BufRead *.pl setf perl6 " in your ~/.vimrc. But that will infringe on Perl 5, so you might want to " put a modeline near the beginning or end of your Perl 6 files instead: " # vim: filetype=perl6 " TODO: " * Deal with s:Perl5// " * m:s// is a match, not a substitution " * Make these highlight as strings, not operators: " <==> <=:=> <===> <=~> <« »> «>» «<» " * Allow more keywords to match as function calls(leave() is export(), etc) " * Optimization: use nextgroup instead of lookaround (:help syn-nextgroup) " * Fix s''' substitutions being matched as package names " * Match s/// and m/// better, so things like "$s/" won't match " * Add more support for folding (:help syn-fold) " * Add more syntax syncing hooks (:help syn-sync) " * Q//: " :to, :heredoc " interpolate \q:s{$scalar} (though the spec isn't very clear on it) " " Impossible TODO?: " * Unspace " * Unicode bracketing characters for quoting (there are so many) " * Various tricks depending on context. I.e. we can't know when Perl " expects «*» to be a string or a hyperoperator. The latter is presumably " more common, so that's what we assume. " * Selective highlighting of Pod formatting codes with the :allow option " * Arbitrary number, order, and negation of adverbs to Q//, q//, qq//. " Currently only the first adverb is considered significant. Anything " more would require an exponential amount of regexes, making this " already slow syntax file even slower. " " If you want to have Pir code inside Q:PIR// strings highlighted, do: " let perl6_embedded_pir=1 " " The above requires pir.vim, which you can find in Parrot's repository: " https://svn.parrot.org/parrot/trunk/editor/ " " Some less than crucial things have been made optional to speed things up. " Look at the comments near the if/else branches in this file to see exactly " which features are affected. "perl6_extended_all" enables everything. " " The defaults are: " " unlet perl6_extended_comments " unlet perl6_extended_q " unlet perl6_extended_all " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim " identifiers syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*" " This is used in the for loops below " Don't use the "syn keyword" construct because that always has higher " priority than matches/regions, so the words can't be autoquoted with " the "=>" and "p5=>" operators. All the lookaround stuff is to make sure " we don't match them as part of some other identifier. let s:before_keyword = " display \"\\%(\\k\\|\\K\\@<=[-']\\)\\@.;\\]" syn match p6Operator display "\%(:\@\)" " "i" requires a digit to the left, and no keyword char to the right syn match p6Operator display "\d\@<=i\k\@!" " index overloading syn match p6Operator display "\%(&\.(\@=\|@\.\[\@=\|%\.{\@=\)" " all infix operators except nonassocative ones let s:infix_a = [ \ "div % mod +& +< +> \\~& ?& \\~< \\~> +| +\\^ \\~| \\~\\^ ?| ?\\^ xx x", \ "\\~ && & also <== ==> <<== ==>> == != < <= > >= \\~\\~ eq ne lt le gt", \ "ge =:= === eqv before after \\^\\^ min max \\^ff ff\\^ \\^ff\\^", \ "\\^fff fff\\^ \\^fff\\^ fff ff ::= := \\.= => , : p5=> Z minmax", \ "\\.\\.\\. and andthen or orelse xor \\^ += -= /= \\*= \\~= //= ||=", \ "+ - \\*\\* \\* // / \\~ || |", \ ] " nonassociative infix operators let s:infix_n = "but does <=> leg cmp \\.\\. \\.\\.\\^\\^ \\^\\.\\. \\^\\.\\.\\^" let s:infix_a_long = join(s:infix_a, " ") let s:infix_a_words = split(s:infix_a_long) let s:infix_a_pattern = join(s:infix_a_words, "\\|") let s:infix_n_words = split(s:infix_n) let s:infix_n_pattern = join(s:infix_n_words, "\\|") let s:both = [s:infix_a_pattern, s:infix_n_pattern] let s:infix = join(s:both, "\\|") let s:infix_assoc = "!\\?\\%(" . s:infix_a_pattern . "\\)" let s:infix = "!\\?\\%(" . s:infix . "\\)" unlet s:infix_a s:infix_a_long s:infix_a_words s:infix_a_pattern unlet s:infix_n s:infix_n_pattern s:both " [+] reduce exec "syn match p6ReduceOp display \"\\k\\@" " does is a type constraint sometimes syn match p6TypeConstraint display "does\%(\s*\%(\k\|[-']\K\@=\)\)\@=" " int is a type sometimes syn match p6Type display "\\%(\s*(\|\s\+\d\)\@!" " these Routine names are also Properties, if preceded by "is" syn match p6Property display "\%(is\s\+\)\@<=\%(signature\|context\|also\|shape\)" " The sigil in ::*Package syn match p6PackageTwigil display "\%(::\)\@<=\*" " $ syn region p6MatchVarSigil \ matchgroup=p6Variable \ start="\$\%(<<\@!\)\@=" \ end=">\@<=" \ contains=p6MatchVar syn region p6MatchVar \ matchgroup=p6Twigil \ start="<" \ end=">" \ contained " Contextualizers syn match p6Context display "\<\%(item\|list\|slice\|hash\)\>" syn match p6Context display "\%(\$\|@\|%\|&\|@@\)(\@=" " the "$" placeholder in "$var1, $, var2 = @list" syn match p6Placeholder display "\%(,\s*\)\@<=\$\%(\K\|\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" \ start="\ze\z(\$\%(\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" \ end="\z1\zs" \ contained \ contains=TOP \ keepend syn region p6InterpArray \ matchgroup=p6Context \ start="@\ze()\@!" \ start="@@\ze()\@!" \ skip="([^)]*)" \ end=")\zs" \ contained \ contains=TOP syn region p6InterpHash \ start="\ze\z(%\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" \ end="\z1\zs" \ contained \ contains=TOP \ keepend syn region p6InterpHash \ matchgroup=p6Context \ start="%\ze()\@!" \ skip="([^)]*)" \ end=")\zs" \ contained \ contains=TOP syn region p6InterpFunction \ start="\ze\z(&\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" \ end="\z1\zs" \ contained \ contains=TOP \ keepend syn region p6InterpFunction \ matchgroup=p6Context \ start="&\ze()\@!" \ skip="([^)]*)" \ end=")\zs" \ contained \ contains=TOP syn region p6InterpClosure \ start="\\\@" contained syn match p6EscCloseFrench display "\\»" contained syn match p6EscBackTick display "\\`" contained syn match p6EscForwardSlash display "\\/" contained syn match p6EscVerticalBar display "\\|" contained syn match p6EscExclamation display "\\!" contained syn match p6EscComma display "\\," contained syn match p6EscDollar display "\\\$" contained syn match p6EscCloseCurly display "\\}" contained syn match p6EscCloseBracket display "\\\]" contained " misc escapes syn match p6EscOctOld display "\\\d\{1,3}" contained syn match p6EscNull display "\\0\d\@!" contained syn match p6EscCodePoint display "\%(\\c\)\@<=\%(\d\|\S\|\[\)\@=" contained nextgroup=p6CodePoint syn match p6EscHex display "\%(\\x\)\@<=\%(\x\|\[\)\@=" contained nextgroup=p6HexSequence syn match p6EscOct display "\%(\\o\)\@<=\%(\o\|\[\)\@=" contained nextgroup=p6OctSequence syn match p6EscQQ display "\\qq" contained nextgroup=p6QQSequence syn match p6EscOpenCurly display "\\{" contained syn match p6EscHash display "\\#" contained syn match p6EscBackSlash display "\\\\" contained syn region p6QQSequence \ matchgroup=p6Escape \ start="\[" \ skip="\[[^\]]*]" \ end="]" \ contained \ transparent \ contains=@p6Interp_qq syn match p6CodePoint display "\%(\d\+\|\S\)" contained syn region p6CodePoint \ matchgroup=p6Escape \ start="\[" \ end="]" \ contained syn match p6HexSequence display "\x\+" contained syn region p6HexSequence \ matchgroup=p6Escape \ start="\[" \ end="]" \ contained syn match p6OctSequence display "\o\+" contained syn region p6OctSequence \ matchgroup=p6Escape \ start="\[" \ end="]" \ contained " matches :key, :!key, :$var, :key, etc " Since we don't know in advance how the adverb ends, we use a trick. " Consume nothing with the start pattern (\ze at the beginning), " while capturing the whole adverb into \z1 and then putting it before " the match start (\zs) of the end pattern. syn region p6Adverb \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)" \ start="\ze\z(:!\?[@$%]\$*\%(::\|\%(\$\@<=\d\+\|!\|/\|¢\)\|\%(\%([.^*?=!~]\|:\@ " FIXME: not sure how to distinguish this from the "less than" operator " in all cases. For now, it matches if any of the following is true: " " * There is whitespace missing on either side of the "<", since " people tend to put spaces around "less than" " * It comes after "enum", "for", "any", "all", or "none" " * It's the first or last thing on a line (ignoring whitespace) " * It's preceded by "= " " " It never matches when: " " * Preceded by [<+~=] (e.g. <>, =<$foo>) " * Followed by [-=] (e.g. <--, <=, <==) syn region p6StringAngle \ matchgroup=p6Quote \ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!" \ start="\%(\s\|[<+~=]\)\@\|[-=]\{1,2}>\@!\)\@!" \ start="[<+~=]\@\|[-=]\{1,2}>\@!\)\@!" \ start="\%(^\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!" \ start="[<+~=]\@\|[-=]\{1,2}>\@!\)\@!" \ skip="\\\@" \ end=">" \ contains=p6InnerAnglesOne,p6EscBackSlash,p6EscCloseAngle syn region p6InnerAnglesOne \ matchgroup=p6StringAngle \ start="<" \ skip="\\\@" \ end=">" \ transparent \ contained \ contains=p6InnerAnglesOne " <> syn region p6StringAngles \ matchgroup=p6Quote \ start="<<=\@!" \ skip="\\\@" \ end=">>" \ contains=p6InnerAnglesTwo,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseAngle,p6Adverb,p6StringSQ,p6StringDQ syn region p6InnerAnglesTwo \ matchgroup=p6StringAngles \ start="<<" \ skip="\\\@" \ end=">>" \ transparent \ contained \ contains=p6InnerAnglesTwo " «words» syn region p6StringFrench \ matchgroup=p6Quote \ start="«" \ skip="\\\@" nextgroup=p6QPairs skipwhite skipempty syn match p6QPairs contained transparent skipwhite skipempty nextgroup=p6StringQ,p6StringQ_PIR "\%(\_s*:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)*" if exists("perl6_embedded_pir") syn include @p6PIR syntax/pir.vim endif " hardcoded set of delimiters let s:delims = [ \ ["\\\"", "\\\"", "p6EscDoubleQuote", "\\\\\\@", "p6EscCloseAngle", "\\%(\\\\\\@\\|<[^>]*>\\)"], \ ["«", "»", "p6EscCloseFrench", "\\%(\\\\\\@>", "p6EscCloseAngle", "\\%(\\\\\\@>\\|<<\\%([^>]\\|>>\\@!\\)*>>\\)"]) call add(s:delims, ["\\s\\@<=<<<", ">>>", "p6EscCloseAngle", "\\%(\\\\\\@>>\\|<<<\\%([^>]\\|>\\%(>>\\)\\@!\\)*>>>\\)"]) endif if !exists("perl6_extended_q") && !exists("perl6_extended_all") " simple version, no special highlighting within the string for [start_delim, end_delim, end_group, skip] in s:delims exec "syn region p6StringQ matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=".end_group." contained" endfor if exists("perl6_embedded_pir") " highlight embedded PIR code for [start_delim, end_delim, end_group, skip] in s:delims exec "syn region p6StringQ_PIR matchgroup=p6Quote start=\"\\%(Q\\s*:PIR\\s*\\)\\@<=".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6PIR,".end_group." contained" endfor endif else let s:before = "syn region p6StringQ matchgroup=p6Quote start=\"\\%(" let s:after = "\\%(\\_s*:!\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\?\\)*\\_s*\\)\\@<=" let s:adverbs = [ \ ["s", "scalar"], \ ["a", "array"], \ ["h", "hash"], \ ["f", "function"], \ ["c", "closure"], \ ["b", "backslash"], \ ["w", "words"], \ ["ww", "quotewords"], \ ["x", "exec"], \ ] " these can't be conjoined with q and qq (e.g. as qqq and qqqq) let s:q_adverbs = [ \ ["q", "single"], \ ["qq", "double"], \ ] for [start_delim, end_delim, end_group, skip] in s:delims " Q, q, and qq with any number of (ignored) adverbs exec s:before ."Q". s:after .start_delim."\" end=\"". end_delim ."\""." contained" exec s:before ."q". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q"." contained" exec s:before ."qq". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq"." contained" for [short, long] in s:adverbs " Qs, qs, qqs, Qa, qa, qqa, etc, with ignored adverbs exec s:before ."Q".short. s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained" exec s:before ."q".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained" exec s:before ."qq".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained" " Q, q, and qq, with one significant adverb exec s:before ."Q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained" for [q_short, q_long] in s:q_adverbs exec s:before ."Q\\s*:\\%(".q_short."\\|".q_long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".q_long." contained" endfor exec s:before ."q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained" exec s:before ."qq\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained" for [short2, long2] in s:adverbs " Qs, qs, qqs, Qa, qa, qqa, etc, with one significant adverb exec s:before ."Q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".long2." contained" for [q_short2, q_long2] in s:q_adverbs exec s:before ."Q".short."\\s*:\\%(".q_short2."\\|".q_long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".q_long2." contained" endfor exec s:before ."q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long.",@p6Interp_".long2." contained" exec s:before ."qq".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long.",@p6Interp_".long2." contained" endfor endfor endfor unlet s:before s:after s:adverbs s:q_adverbs endif unlet s:delims " Match these so something else above can't. E.g. the "q" in "role q { }" " should not be considered a string syn match p6Normal display "\%(\<\%(role\|grammar\|slang\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" " :key syn match p6Operator display ":\@ and p5=> autoquoting syn match p6StringP5Auto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+p5=>" syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\%(p5\)\@" syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+=>" syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*p5\ze=>" " Hyperoperators. Needs to come after the quoting operators (<>, «», etc) exec "syn match p6HyperOp display \"»" .s:infix."»\\?\"" exec "syn match p6HyperOp display \"«\\?".s:infix."«\"" exec "syn match p6HyperOp display \"»" .s:infix."«\"" exec "syn match p6HyperOp display \"«" .s:infix. "»\"" exec "syn match p6HyperOp display \">>" .s:infix."\\%(>>\\)\\?\"" exec "syn match p6HyperOp display \"\\%(<<\\)\\?".s:infix."<<\"" exec "syn match p6HyperOp display \">>" .s:infix."<<\"" exec "syn match p6HyperOp display \"<<" .s:infix.">>\"" unlet s:infix " Regexes and grammars syn match p6RegexName display "\%(\<\%(regex\|rule\|token\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" nextgroup=p6RegexBlockCrap skipwhite skipempty syn match p6RegexBlockCrap "[^{]*" nextgroup=p6RegexBlock skipwhite skipempty transparent contained syn region p6RegexBlock \ matchgroup=p6Normal \ start="{" \ end="}" \ contained \ contains=@p6Regexen,@p6Variables " Perl 6 regex bits syn cluster p6Regexen \ add=p6RxMeta \ add=p6RxEscape \ add=p6EscHex \ add=p6EscOct \ add=p6EscNull \ add=p6RxAnchor \ add=p6RxCapture \ add=p6RxGroup \ add=p6RxAlternation \ add=p6RxAdverb \ add=p6RxAdverbArg \ add=p6RxStorage \ add=p6RxAssertion \ add=p6RxQuoteWords \ add=p6RxClosure \ add=p6RxStringSQ \ add=p6RxStringDQ \ add=p6Comment syn match p6RxMeta display contained ".\%(\k\|\s\)\@" \ contained \ contains=@p6Regexen,@p6Variables,p6RxCharClass,p6RxAssertCall syn region p6RxAssertCall \ matchgroup=p6Normal \ start="\%(::\|\%(\K\%(\k\|[-']\K\@=\)*\)\)\@<=(\@=" \ end=")\@<=" \ contained \ contains=TOP syn region p6RxCharClass \ matchgroup=p6StringSpecial2 \ start="\%(<[-!+?]\?\)\@<=\[" \ skip="\\]" \ end="]" \ contained \ contains=p6RxRange,p6RxEscape,p6EscHex,p6EscOct,p6EscNull syn region p6RxQuoteWords \ matchgroup=p6StringSpecial2 \ start="< " \ end=">" \ contained syn region p6RxAdverb \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\)" \ end="\z1\zs" \ contained \ contains=TOP \ keepend syn region p6RxAdverbArg \ start="\%(:!\?\K\%(\k\|[-']\K\@=\)*\)\@<=(" \ skip="([^)]*)" \ end=")" \ contained \ contains=TOP syn region p6RxStorage \ matchgroup=p6Operator \ start="\%(^\s*\)\@<=:\%(my\>\|temp\>\)\@=" \ end="$" \ contains=TOP \ contained " Perl 5 regex bits syn cluster p6RegexP5Base \ add=p6RxP5Escape \ add=p6RxP5Oct \ add=p6RxP5Hex \ add=p6RxP5EscMeta \ add=p6RxP5CodePoint \ add=p6RxP5Prop " normal regex stuff syn cluster p6RegexP5 \ add=@p6RegexP5Base \ add=p6RxP5Quantifier \ add=p6RxP5Meta \ add=p6RxP5QuoteMeta \ add=p6RxP5ParenMod \ add=p6RxP5Verb \ add=p6RxP5Count \ add=p6RxP5Named \ add=p6RxP5ReadRef \ add=p6RxP5WriteRef \ add=p6RxP5CharClass \ add=p6RxP5Anchor " inside character classes syn cluster p6RegexP5Class \ add=@p6RegexP5Base \ add=p6RxP5Posix \ add=p6RxP5Range syn match p6RxP5Escape display contained "\\\S" syn match p6RxP5CodePoint display contained "\\c\S\@=" nextgroup=p6RxP5CPId syn match p6RxP5CPId display contained "\S" syn match p6RxP5Oct display contained "\\\%(\o\{1,3}\)\@=" nextgroup=p6RxP5OctSeq syn match p6RxP5OctSeq display contained "\o\{1,3}" syn match p6RxP5Anchor display contained "[\^$]" syn match p6RxP5Hex display contained "\\x\%({\x\+}\|\x\{1,2}\)\@=" nextgroup=p6RxP5HexSeq syn match p6RxP5HexSeq display contained "\x\{1,2}" syn region p6RxP5HexSeq \ matchgroup=p6RxP5Escape \ start="{" \ end="}" \ contained syn region p6RxP5Named \ matchgroup=p6RxP5Escape \ start="\%(\\N\)\@<={" \ end="}" \ contained syn match p6RxP5Quantifier display contained "\%([+*]\|(\@" \ contained syn match p6RxP5WriteRef display contained "\\g\%(\d\|{\)\@=" nextgroup=p6RxP5WriteRefId syn match p6RxP5WriteRefId display contained "\d\+" syn region p6RxP5WriteRefId \ matchgroup=p6RxP5Escape \ start="{" \ end="}" \ contained syn match p6RxP5Prop display contained "\\[pP]\%(\a\|{\)\@=" nextgroup=p6RxP5PropId syn match p6RxP5PropId display contained "\a" syn region p6RxP5PropId \ matchgroup=p6RxP5Escape \ start="{" \ end="}" \ contained syn match p6RxP5Meta display contained "[(|).]" syn match p6RxP5ParenMod display contained "(\@<=?\@=" nextgroup=p6RxP5Mod,p6RxP5ModName,p6RxP5Code syn match p6RxP5Mod display contained "?\%(<\?=\|<\?!\|[#:|]\)" syn match p6RxP5Mod display contained "?-\?[impsx]\+" syn match p6RxP5Mod display contained "?\%([-+]\?\d\+\|R\)" syn match p6RxP5Mod display contained "?(DEFINE)" syn match p6RxP5Mod display contained "?\%(&\|P[>=]\)" nextgroup=p6RxP5ModDef syn match p6RxP5ModDef display contained "\h\w*" syn region p6RxP5ModName \ matchgroup=p6StringSpecial \ start="?'" \ end="'" \ contained syn region p6RxP5ModName \ matchgroup=p6StringSpecial \ start="?P\?<" \ end=">" \ contained syn region p6RxP5Code \ matchgroup=p6StringSpecial \ start="??\?{" \ end="})\@=" \ contained \ contains=TOP syn match p6RxP5EscMeta display contained "\\[?*.{}()[\]|\^$]" syn match p6RxP5Count display contained "\%({\d\+\%(,\%(\d\+\)\?\)\?}\)\@=" nextgroup=p6RxP5CountId syn region p6RxP5CountId \ matchgroup=p6RxP5Escape \ start="{" \ end="}" \ contained syn match p6RxP5Verb display contained "(\@<=\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\?\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\?\|ACCEPT\)" syn region p6RxP5QuoteMeta \ matchgroup=p6RxP5Escape \ start="\\Q" \ end="\\E" \ contained \ contains=@p6Variables,p6EscBackSlash syn region p6RxP5CharClass \ matchgroup=p6StringSpecial \ start="\[\^\?" \ skip="\\]" \ end="]" \ contained \ contains=@p6RegexP5Class syn region p6RxP5Posix \ matchgroup=p6RxP5Escape \ start="\[:" \ end=":]" \ contained syn match p6RxP5Range display contained "-" " 'string' inside a regex syn region p6RxStringSQ \ matchgroup=p6Quote \ start="'" \ skip="\\\@, mm, rx syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!>\@!" \ skip="\\>" \ end=">" \ contains=@p6Regexen,@p6Variables " m«foo», mm«foo», rx«foo» syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@ syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!" \ skip="\\>" \ end=">" \ contains=@p6Regexen,@p6Variables " s«foo» syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@ syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!" \ skip="\\>" \ end=">" \ contains=@p6RegexP5,p6Variables " m:P5«» syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@]*>" \ end=">" \ matchgroup=p6Error \ start="^#<" \ contains=p6Attention,p6Comment syn region p6Comment \ matchgroup=p6Comment \ start="^\@]\|>>\@!\)*>>" \ end=">>" \ matchgroup=p6Error \ start="^#<<" \ contains=p6Attention,p6Comment syn region p6Comment \ matchgroup=p6Comment \ start="^\@]\|>\%(>>\)\@!\)*>>>" \ end=">>>" \ matchgroup=p6Error \ start="^#<<<" \ contains=p6Attention,p6Comment syn region p6Comment \ matchgroup=p6Comment \ start="^\@" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodAbbrCodeType \ keepend syn region p6PodAbbrCodeType \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodName,p6PodAbbrCode syn region p6PodAbbrCode \ start="^" \ end="^\ze\%(\s*$\|=\K\)" \ contained " Abbreviated blocks (everything is a comment) syn region p6PodAbbrRegion \ matchgroup=p6PodPrefix \ start="^=\zecomment\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodAbbrCommentType \ keepend syn region p6PodAbbrCommentType \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodComment,p6PodAbbrNoCode " Abbreviated blocks (implicit code allowed) syn region p6PodAbbrRegion \ matchgroup=p6PodPrefix \ start="^=\ze\%(pod\|item\|nested\|\u\+\)\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodAbbrType \ keepend syn region p6PodAbbrType \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodName,p6PodAbbr syn region p6PodAbbr \ start="^" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=@p6PodFormat,p6PodImplicitCode " Abbreviated block to end-of-file syn region p6PodAbbrRegion \ matchgroup=p6PodPrefix \ start="^=\zeEND\>" \ end="\%$" \ contains=p6PodAbbrEOFType \ keepend syn region p6PodAbbrEOFType \ matchgroup=p6PodType \ start="\K\k*" \ end="\%$" \ contained \ contains=p6PodName,p6PodAbbrEOF syn region p6PodAbbrEOF \ start="^" \ end="\%$" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode " Directives syn region p6PodDirectRegion \ matchgroup=p6PodPrefix \ start="^=\%(config\|use\)\>" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contains=p6PodDirectArgRegion \ keepend syn region p6PodDirectArgRegion \ matchgroup=p6PodType \ start="\S\+" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contained \ contains=p6PodDirectConfigRegion syn region p6PodDirectConfigRegion \ start="" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contained \ contains=@p6PodConfig " =encoding is a special directive syn region p6PodDirectRegion \ matchgroup=p6PodPrefix \ start="^=encoding\>" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contains=p6PodEncodingArgRegion \ keepend syn region p6PodEncodingArgRegion \ matchgroup=p6PodName \ start="\S\+" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contained " Paragraph blocks (implicit code forbidden) syn region p6PodParaRegion \ matchgroup=p6PodPrefix \ start="^=for\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodParaNoCodeTypeRegion \ keepend \ extend syn region p6PodParaNoCodeTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodParaNoCode,p6PodParaConfigRegion syn region p6PodParaConfigRegion \ start="" \ end="^\ze\%([^=]\|=\k\@\ze\s*code\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodParaCodeTypeRegion \ keepend \ extend syn region p6PodParaCodeTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodParaCode,p6PodParaConfigRegion syn region p6PodParaCode \ start="^[^=]" \ end="^\ze\%(\s*$\|=\K\)" \ contained " Paragraph blocks (implicit code allowed) syn region p6PodParaRegion \ matchgroup=p6PodPrefix \ start="^=for\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodParaTypeRegion \ keepend \ extend syn region p6PodParaTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodPara,p6PodParaConfigRegion syn region p6PodPara \ start="^[^=]" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=@p6PodFormat,p6PodImplicitCode " Paragraph block to end-of-file syn region p6PodParaRegion \ matchgroup=p6PodPrefix \ start="^=for\>\ze\s\+END\>" \ end="\%$" \ contains=p6PodParaEOFTypeRegion \ keepend \ extend syn region p6PodParaEOFTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="\%$" \ contained \ contains=p6PodParaEOF,p6PodParaConfigRegion syn region p6PodParaEOF \ start="^[^=]" \ end="\%$" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode " Delimited blocks (implicit code forbidden) syn region p6PodDelimRegion \ matchgroup=p6PodPrefix \ start="^=begin\>" \ end="^=end\>" \ contains=p6PodDelimNoCodeTypeRegion \ keepend \ extend syn region p6PodDelimNoCodeTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze=end\>" \ contained \ contains=p6PodDelimNoCode,p6PodDelimConfigRegion syn region p6PodDelimConfigRegion \ start="" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contained \ contains=@p6PodConfig syn region p6PodDelimNoCode \ start="^" \ end="^\ze=end\>" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat " Delimited blocks (everything is code) syn region p6PodDelimRegion \ matchgroup=p6PodPrefix \ start="^=begin\>\ze\s*code\>" \ end="^=end\>" \ contains=p6PodDelimCodeTypeRegion \ keepend \ extend syn region p6PodDelimCodeTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze=end\>" \ contained \ contains=p6PodDelimCode,p6PodDelimConfigRegion syn region p6PodDelimCode \ start="^" \ end="^\ze=end\>" \ contained \ contains=@p6PodNestedBlocks " Delimited blocks (implicit code allowed) syn region p6PodDelimRegion \ matchgroup=p6PodPrefix \ start="^=begin\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>" \ end="^=end\>" \ contains=p6PodDelimTypeRegion \ keepend \ extend syn region p6PodDelimTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze=end\>" \ contained \ contains=p6PodDelim,p6PodDelimConfigRegion syn region p6PodDelim \ start="^" \ end="^\ze=end\>" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode " Delimited block to end-of-file syn region p6PodDelimRegion \ matchgroup=p6PodPrefix \ start="^=begin\>\ze\s\+END\>" \ end="\%$" \ contains=p6PodDelimEOFTypeRegion \ extend syn region p6PodDelimEOFTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="\%$" \ contained \ contains=p6PodDelimEOF,p6PodDelimConfigRegion syn region p6PodDelimEOF \ start="^" \ end="\%$" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode syn cluster p6PodConfig \ add=p6PodConfigOperator \ add=p6PodExtraConfig \ add=p6StringAuto \ add=p6PodAutoQuote \ add=p6StringSQ syn region p6PodParens \ start="(" \ end=")" \ contained \ contains=p6Number,p6StringSQ syn match p6PodAutoQuote display contained "=>" syn match p6PodConfigOperator display contained ":!\?" nextgroup=p6PodConfigOption syn match p6PodConfigOption display contained "[^[:space:](<]\+" nextgroup=p6PodParens,p6StringAngle syn match p6PodExtraConfig display contained "^=" syn match p6PodVerticalBar display contained "|" syn match p6PodColon display contained ":" syn match p6PodSemicolon display contained ";" syn match p6PodComma display contained "," syn match p6PodImplicitCode display contained "^\s.*" syn region p6PodDelimEndRegion \ matchgroup=p6PodType \ start="\%(^=end\>\)\@<=" \ end="\K\k*" " These may appear inside delimited blocks syn cluster p6PodNestedBlocks \ add=p6PodAbbrRegion \ add=p6PodDirectRegion \ add=p6PodParaRegion \ add=p6PodDelimRegion \ add=p6PodDelimEndRegion " Pod formatting codes syn cluster p6PodFormat \ add=p6PodFormatOne \ add=p6PodFormatTwo \ add=p6PodFormatThree \ add=p6PodFormatFrench " Balanced angles found inside formatting codes. Ensures proper nesting. syn region p6PodFormatAnglesOne \ matchgroup=p6PodFormat \ start="<" \ skip="<[^>]*>" \ end=">" \ transparent \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne syn region p6PodFormatAnglesTwo \ matchgroup=p6PodFormat \ start="<<" \ skip="<<[^>]*>>" \ end=">>" \ transparent \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo syn region p6PodFormatAnglesThree \ matchgroup=p6PodFormat \ start="<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ transparent \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree syn region p6PodFormatAnglesFrench \ matchgroup=p6PodFormat \ start="«" \ skip="«[^»]*»" \ end="»" \ transparent \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree " All formatting codes syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="\u<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="\u<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="\u<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="\u«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree " C<> and V<> don't allow nested formatting formatting codes syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="[CV]<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="[CV]<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="[CV]<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="[CV]«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench " L<> can have a "|" separator syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="L<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="L<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="L<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="L«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar " E<> can have a ";" separator syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="E<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodSemiColon syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="E<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodSemiColon syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="E<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="E«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon " M<> can have a ":" separator syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="M<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodColon syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="M<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodColon syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="M<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="M«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon " D<> can have "|" and ";" separators syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="D<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="D<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAngleTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="D<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="D«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon " X<> can have "|", "," and ";" separators syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="X<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon,p6PodComma syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="X<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon,p6PodComma syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="X<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="X«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link p6EscOctOld p6Error hi def link p6PackageTwigil p6Twigil hi def link p6StringAngle p6String hi def link p6StringFrench p6String hi def link p6StringAngles p6String hi def link p6StringSQ p6String hi def link p6StringDQ p6String hi def link p6StringQ p6String hi def link p6RxStringSQ p6String hi def link p6RxStringDQ p6String hi def link p6Substitution p6String hi def link p6Transliteration p6String hi def link p6StringAuto p6String hi def link p6StringP5Auto p6String hi def link p6Key p6String hi def link p6Match p6String hi def link p6RegexBlock p6String hi def link p6RxP5CharClass p6String hi def link p6RxP5QuoteMeta p6String hi def link p6RxCharClass p6String hi def link p6RxQuoteWords p6String hi def link p6ReduceOp p6Operator hi def link p6ReverseCrossOp p6Operator hi def link p6HyperOp p6Operator hi def link p6QuoteQ p6Operator hi def link p6RxRange p6StringSpecial hi def link p6RxAnchor p6StringSpecial hi def link p6RxP5Anchor p6StringSpecial hi def link p6CodePoint p6StringSpecial hi def link p6RxMeta p6StringSpecial hi def link p6RxP5Range p6StringSpecial hi def link p6RxP5CPId p6StringSpecial hi def link p6RxP5Posix p6StringSpecial hi def link p6RxP5Mod p6StringSpecial hi def link p6RxP5HexSeq p6StringSpecial hi def link p6RxP5OctSeq p6StringSpecial hi def link p6RxP5WriteRefId p6StringSpecial hi def link p6HexSequence p6StringSpecial hi def link p6OctSequence p6StringSpecial hi def link p6RxP5Named p6StringSpecial hi def link p6RxP5PropId p6StringSpecial hi def link p6RxP5Quantifier p6StringSpecial hi def link p6RxP5CountId p6StringSpecial hi def link p6RxP5Verb p6StringSpecial hi def link p6Escape p6StringSpecial2 hi def link p6EscNull p6StringSpecial2 hi def link p6EscHash p6StringSpecial2 hi def link p6EscQQ p6StringSpecial2 hi def link p6EscQuote p6StringSpecial2 hi def link p6EscDoubleQuote p6StringSpecial2 hi def link p6EscBackTick p6StringSpecial2 hi def link p6EscForwardSlash p6StringSpecial2 hi def link p6EscVerticalBar p6StringSpecial2 hi def link p6EscExclamation p6StringSpecial2 hi def link p6EscDollar p6StringSpecial2 hi def link p6EscOpenCurly p6StringSpecial2 hi def link p6EscCloseCurly p6StringSpecial2 hi def link p6EscCloseBracket p6StringSpecial2 hi def link p6EscCloseAngle p6StringSpecial2 hi def link p6EscCloseFrench p6StringSpecial2 hi def link p6EscBackSlash p6StringSpecial2 hi def link p6RxEscape p6StringSpecial2 hi def link p6RxCapture p6StringSpecial2 hi def link p6RxAlternation p6StringSpecial2 hi def link p6RxP5 p6StringSpecial2 hi def link p6RxP5ReadRef p6StringSpecial2 hi def link p6RxP5Oct p6StringSpecial2 hi def link p6RxP5Hex p6StringSpecial2 hi def link p6RxP5EscMeta p6StringSpecial2 hi def link p6RxP5Meta p6StringSpecial2 hi def link p6RxP5Escape p6StringSpecial2 hi def link p6RxP5CodePoint p6StringSpecial2 hi def link p6RxP5WriteRef p6StringSpecial2 hi def link p6RxP5Prop p6StringSpecial2 hi def link p6Property Tag hi def link p6Attention Todo hi def link p6Type Type hi def link p6Error Error hi def link p6BlockLabel Label hi def link p6Float Float hi def link p6Normal Normal hi def link p6Package Normal hi def link p6PackageScope Normal hi def link p6Number Number hi def link p6VersionNum Number hi def link p6String String hi def link p6Repeat Repeat hi def link p6Keyword Keyword hi def link p6Pragma Keyword hi def link p6Module Keyword hi def link p6DeclareRoutine Keyword hi def link p6VarStorage Special hi def link p6FlowControl Special hi def link p6NumberBase Special hi def link p6Twigil Special hi def link p6StringSpecial2 Special hi def link p6VersionDot Special hi def link p6Comment Comment hi def link p6Include Include hi def link p6Shebang PreProc hi def link p6ClosureTrait PreProc hi def link p6Routine Function hi def link p6Operator Operator hi def link p6Version Operator hi def link p6Context Operator hi def link p6Quote Delimiter hi def link p6TypeConstraint PreCondit hi def link p6Exception Exception hi def link p6Placeholder Identifier hi def link p6Variable Identifier hi def link p6VarSlash Identifier hi def link p6VarNum Identifier hi def link p6VarExclam Identifier hi def link p6VarMatch Identifier hi def link p6VarName Identifier hi def link p6MatchVar Identifier hi def link p6RxP5ReadRefId Identifier hi def link p6RxP5ModDef Identifier hi def link p6RxP5ModName Identifier hi def link p6Conditional Conditional hi def link p6StringSpecial SpecialChar hi def link p6PodAbbr p6Pod hi def link p6PodAbbrEOF p6Pod hi def link p6PodAbbrNoCode p6Pod hi def link p6PodAbbrCode p6PodCode hi def link p6PodPara p6Pod hi def link p6PodParaEOF p6Pod hi def link p6PodParaNoCode p6Pod hi def link p6PodParaCode p6PodCode hi def link p6PodDelim p6Pod hi def link p6PodDelimEOF p6Pod hi def link p6PodDelimNoCode p6Pod hi def link p6PodDelimCode p6PodCode hi def link p6PodImplicitCode p6PodCode hi def link p6PodExtraConfig p6PodPrefix hi def link p6PodVerticalBar p6PodFormatCode hi def link p6PodColon p6PodFormatCode hi def link p6PodSemicolon p6PodFormatCode hi def link p6PodComma p6PodFormatCode hi def link p6PodFormatOne p6PodFormat hi def link p6PodFormatTwo p6PodFormat hi def link p6PodFormatThree p6PodFormat hi def link p6PodFormatFrench p6PodFormat hi def link p6PodType Type hi def link p6PodConfigOption String hi def link p6PodCode PreProc hi def link p6Pod Comment hi def link p6PodComment Comment hi def link p6PodAutoQuote Operator hi def link p6PodConfigOperator Operator hi def link p6PodPrefix Statement hi def link p6PodName Identifier hi def link p6PodFormatCode SpecialChar hi def link p6PodFormat SpecialComment " Syncing to speed up processing "syn sync match p6SyncPod groupthere p6PodAbbrRegion "^=\K\k*\>" "syn sync match p6SyncPod groupthere p6PodDirectRegion "^=\%(config\|use\|encoding\)\>" "syn sync match p6SyncPod groupthere p6PodParaRegion "^=for\>" "syn sync match p6SyncPod groupthere p6PodDelimRegion "^=begin\>" "syn sync match p6SyncPod groupthere p6PodDelimEndRegion "^=end\>" " Let's just sync whole file, the other methods aren't reliable (or I don't " know how to use them reliably) syn sync fromstart setlocal foldmethod=syntax let b:current_syntax = "perl6" let &cpo = s:keepcpo unlet s:keepcpo " vim:ts=8:sts=4:sw=4:expandtab:ft=vim PK!ssvim80/syntax/pod.vimnu[" Vim syntax file " Language: Perl POD format " Maintainer: vim-perl " Previously: Scott Bigham " Homepage: http://github.com/vim-perl/vim-perl " Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Last Change: 2017-09-12 " To add embedded POD documentation highlighting to your syntax file, add " the commands: " " syn include @Pod :p:h/pod.vim " syn region myPOD start="^=pod" start="^=head" end="^=cut" keepend contained contains=@Pod " " and add myPod to the contains= list of some existing region, probably a " comment. The "keepend" flag is needed because "=cut" is matched as a " pattern in its own right. " Remove any old syntax stuff hanging around (this is suppressed " automatically by ":syn include" if necessary). " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " POD commands syn match podCommand "^=encoding" nextgroup=podCmdText contains=@NoSpell syn match podCommand "^=head[1234]" nextgroup=podCmdText contains=@NoSpell syn match podCommand "^=item" nextgroup=podCmdText contains=@NoSpell syn match podCommand "^=over" nextgroup=podOverIndent skipwhite contains=@NoSpell syn match podCommand "^=back" contains=@NoSpell syn match podCommand "^=cut" contains=@NoSpell syn match podCommand "^=pod" contains=@NoSpell syn match podCommand "^=for" nextgroup=podForKeywd skipwhite contains=@NoSpell syn match podCommand "^=begin" nextgroup=podForKeywd skipwhite contains=@NoSpell syn match podCommand "^=end" nextgroup=podForKeywd skipwhite contains=@NoSpell " Text of a =head1, =head2 or =item command syn match podCmdText ".*$" contained contains=podFormat,@NoSpell " Indent amount of =over command syn match podOverIndent "\d\+" contained contains=@NoSpell " Formatter identifier keyword for =for, =begin and =end commands syn match podForKeywd "\S\+" contained contains=@NoSpell " An indented line, to be displayed verbatim syn match podVerbatimLine "^\s.*$" contains=@NoSpell " Inline textual items handled specially by POD syn match podSpecial "\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)" contains=@NoSpell syn match podSpecial "[$@%]\I\i*\(::\I\i*\)*\>" contains=@NoSpell " Special formatting sequences syn region podFormat start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell syn region podFormat start="[IBSCLFX]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell syn match podFormat "Z<>" syn match podFormat "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell syn match podEscape "\I\i*>"me=e-1 contained contains=@NoSpell syn match podEscape2 "\d\+>"me=e-1 contained contains=@NoSpell " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link podCommand Statement hi def link podCmdText String hi def link podOverIndent Number hi def link podForKeywd Identifier hi def link podFormat Identifier hi def link podVerbatimLine PreProc hi def link podSpecial Identifier hi def link podEscape String hi def link podEscape2 Number if exists("perl_pod_spellcheck_headings") " Spell-check headings syn clear podCmdText syn match podCmdText ".*$" contained contains=podFormat endif if exists("perl_pod_formatting") " By default, escapes like C<> are not checked for spelling. Remove B<> " and I<> from the list of escapes. syn clear podFormat syn region podFormat start="[CLF]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell syn region podFormat start="[CLF]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell " Don't spell-check inside E<>, but ensure that the E< itself isn't " marked as a spelling mistake. syn match podFormat "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell " Z<> is a mock formatting code. Ensure Z<> on its own isn't marked as a " spelling mistake. syn match podFormat "Z<>" contains=podEscape,podEscape2,@NoSpell " These are required so that whatever is *within* B<...>, I<...>, etc. is " spell-checked, but not the B, I, ... itself. syn match podBoldOpen "B<" contains=@NoSpell syn match podItalicOpen "I<" contains=@NoSpell syn match podNoSpaceOpen "S<" contains=@NoSpell syn match podIndexOpen "X<" contains=@NoSpell " Same as above but for the << >> syntax. syn match podBoldAlternativeDelimOpen "B<< " contains=@NoSpell syn match podItalicAlternativeDelimOpen "I<< " contains=@NoSpell syn match podNoSpaceAlternativeDelimOpen "S<< " contains=@NoSpell syn match podIndexAlternativeDelimOpen "X<< " contains=@NoSpell " Add support for spell checking text inside B<>, I<>, S<> and X<>. syn region podBold start="B<[^<]"me=e end=">" oneline contains=podBoldItalic,podBoldOpen syn region podBoldAlternativeDelim start="B<<\s" end="\s>>" oneline contains=podBoldAlternativeDelimOpen syn region podItalic start="I<[^<]"me=e end=">" oneline contains=podItalicBold,podItalicOpen syn region podItalicAlternativeDelim start="I<<\s" end="\s>>" oneline contains=podItalicAlternativeDelimOpen " Nested bold/italic and vice-versa syn region podBoldItalic contained start="I<[^<]"me=e end=">" oneline syn region podItalicBold contained start="B<[^<]"me=e end=">" oneline syn region podNoSpace start="S<[^<]"ms=s-2 end=">"me=e oneline contains=podNoSpaceOpen syn region podNoSpaceAlternativeDelim start="S<<\s"ms=s-2 end="\s>>"me=e oneline contains=podNoSpaceAlternativeDelimOpen syn region podIndex start="X<[^<]"ms=s-2 end=">"me=e oneline contains=podIndexOpen syn region podIndexAlternativeDelim start="X<<\s"ms=s-2 end="\s>>"me=e oneline contains=podIndexAlternativeDelimOpen " Restore this (otherwise B<> is shown as bold inside verbatim) syn match podVerbatimLine "^\s.*$" contains=@NoSpell " Ensure formatted text can be displayed in headings and items syn clear podCmdText if exists("perl_pod_spellcheck_headings") syn match podCmdText ".*$" contained contains=podFormat,podBold, \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim, \podBoldOpen,podItalicOpen,podBoldAlternativeDelimOpen, \podItalicAlternativeDelimOpen,podNoSpaceOpen else syn match podCmdText ".*$" contained contains=podFormat,podBold, \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim, \@NoSpell endif " Specify how to display these hi def podBold term=bold cterm=bold gui=bold hi link podBoldAlternativeDelim podBold hi link podBoldAlternativeDelimOpen podBold hi link podBoldOpen podBold hi link podNoSpace Identifier hi link podNoSpaceAlternativeDelim Identifier hi link podIndex Identifier hi link podIndexAlternativeDelim Identifier hi def podItalic term=italic cterm=italic gui=italic hi link podItalicAlternativeDelim podItalic hi link podItalicAlternativeDelimOpen podItalic hi link podItalicOpen podItalic hi def podBoldItalic term=italic,bold cterm=italic,bold gui=italic,bold hi def podItalicBold term=italic,bold cterm=italic,bold gui=italic,bold endif let b:current_syntax = "pod" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!v2v2vim80/syntax/plsql.vimnu[" Vim syntax file " Language: Oracle Procedureal SQL (PL/SQL) " Maintainer: Jeff Lanzarotta (jefflanzarotta at yahoo dot com) " Original Maintainer: C. Laurence Gonsalves (clgonsal@kami.com) " URL: http://lanzarotta.tripod.com/vim/syntax/plsql.vim.zip " Last Change: September 18, 2002 " History: Geoff Evans & Bill Pribyl (bill at plnet dot org) " Added 9i keywords. " Austin Ziegler (austin at halostatue dot ca) " Added 8i+ features. " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Todo. syn keyword plsqlTodo TODO FIXME XXX DEBUG NOTE syn cluster plsqlCommentGroup contains=plsqlTodo syn case ignore syn match plsqlGarbage "[^ \t()]" syn match plsqlIdentifier "[a-z][a-z0-9$_#]*" syn match plsqlHostIdentifier ":[a-z][a-z0-9$_#]*" " When wanted, highlight the trailing whitespace. if exists("c_space_errors") if !exists("c_no_trail_space_error") syn match plsqlSpaceError "\s\+$" endif if !exists("c_no_tab_space_error") syn match plsqlSpaceError " \+\t"me=e-1 endif endif " Symbols. syn match plsqlSymbol "\(;\|,\|\.\)" " Operators. syn match plsqlOperator "\(+\|-\|\*\|/\|=\|<\|>\|@\|\*\*\|!=\|\~=\)" syn match plsqlOperator "\(^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\"\)" " Some of Oracle's SQL keywords. syn keyword plsqlSQLKeyword ABORT ACCESS ACCESSED ADD AFTER ALL ALTER AND ANY syn keyword plsqlSQLKeyword AS ASC ATTRIBUTE AUDIT AUTHORIZATION AVG BASE_TABLE syn keyword plsqlSQLKeyword BEFORE BETWEEN BY CASCADE CAST CHECK CLUSTER syn keyword plsqlSQLKeyword CLUSTERS COLAUTH COLUMN COMMENT COMPRESS CONNECT syn keyword plsqlSQLKeyword CONSTRAINT CRASH CREATE CURRENT DATA DATABASE syn keyword plsqlSQLKeyword DATA_BASE DBA DEFAULT DELAY DELETE DESC DISTINCT syn keyword plsqlSQLKeyword DROP DUAL ELSE EXCLUSIVE EXISTS EXTENDS EXTRACT syn keyword plsqlSQLKeyword FILE FORCE FOREIGN FROM GRANT GROUP HAVING HEAP syn keyword plsqlSQLKeyword IDENTIFIED IDENTIFIER IMMEDIATE IN INCLUDING syn keyword plsqlSQLKeyword INCREMENT INDEX INDEXES INITIAL INSERT INSTEAD syn keyword plsqlSQLKeyword INTERSECT INTO INVALIDATE IS ISOLATION KEY LIBRARY syn keyword plsqlSQLKeyword LIKE LOCK MAXEXTENTS MINUS MODE MODIFY MULTISET syn keyword plsqlSQLKeyword NESTED NOAUDIT NOCOMPRESS NOT NOWAIT OF OFF OFFLINE syn keyword plsqlSQLKeyword ON ONLINE OPERATOR OPTION OR ORDER ORGANIZATION syn keyword plsqlSQLKeyword PCTFREE PRIMARY PRIOR PRIVATE PRIVILEGES PUBLIC syn keyword plsqlSQLKeyword QUOTA RELEASE RENAME REPLACE RESOURCE REVOKE ROLLBACK syn keyword plsqlSQLKeyword ROW ROWLABEL ROWS SCHEMA SELECT SEPARATE SESSION SET syn keyword plsqlSQLKeyword SHARE SIZE SPACE START STORE SUCCESSFUL SYNONYM syn keyword plsqlSQLKeyword SYSDATE TABLE TABLES TABLESPACE TEMPORARY TO TREAT syn keyword plsqlSQLKeyword TRIGGER TRUNCATE UID UNION UNIQUE UNLIMITED UPDATE syn keyword plsqlSQLKeyword USE USER VALIDATE VALUES VIEW WHENEVER WHERE WITH " PL/SQL's own keywords. syn keyword plsqlKeyword AGENT AND ANY ARRAY ASSIGN AS AT AUTHID BEGIN BODY BY syn keyword plsqlKeyword BULK C CASE CHAR_BASE CHARSETFORM CHARSETID CLOSE syn keyword plsqlKeyword COLLECT CONSTANT CONSTRUCTOR CONTEXT CURRVAL DECLARE syn keyword plsqlKeyword DVOID EXCEPTION EXCEPTION_INIT EXECUTE EXIT FETCH syn keyword plsqlKeyword FINAL FUNCTION GOTO HASH IMMEDIATE IN INDICATOR syn keyword plsqlKeyword INSTANTIABLE IS JAVA LANGUAGE LIBRARY MAP MAXLEN syn keyword plsqlKeyword MEMBER NAME NEW NOCOPY NUMBER_BASE OBJECT OCICOLL syn keyword plsqlKeyword OCIDATE OCIDATETIME OCILOBLOCATOR OCINUMBER OCIRAW syn keyword plsqlKeyword OCISTRING OF OPAQUE OPEN OR ORDER OTHERS OUT syn keyword plsqlKeyword OVERRIDING PACKAGE PARALLEL_ENABLE PARAMETERS syn keyword plsqlKeyword PARTITION PIPELINED PRAGMA PROCEDURE RAISE RANGE REF syn keyword plsqlKeyword RESULT RETURN REVERSE ROWTYPE SB1 SELF SHORT SIZE_T syn keyword plsqlKeyword SQL SQLCODE SQLERRM STATIC STRUCT SUBTYPE TDO THEN syn keyword plsqlKeyword TABLE TIMEZONE_ABBR TIMEZONE_HOUR TIMEZONE_MINUTE syn keyword plsqlKeyword TIMEZONE_REGION TYPE UNDER UNSIGNED USING VARIANCE syn keyword plsqlKeyword VARRAY VARYING WHEN WRITE syn match plsqlKeyword "\" syn match plsqlKeyword "\.COUNT\>"hs=s+1 syn match plsqlKeyword "\.EXISTS\>"hs=s+1 syn match plsqlKeyword "\.FIRST\>"hs=s+1 syn match plsqlKeyword "\.LAST\>"hs=s+1 syn match plsqlKeyword "\.DELETE\>"hs=s+1 syn match plsqlKeyword "\.PREV\>"hs=s+1 syn match plsqlKeyword "\.NEXT\>"hs=s+1 " PL/SQL functions. syn keyword plsqlFunction ABS ACOS ADD_MONTHS ASCII ASCIISTR ASIN ATAN ATAN2 syn keyword plsqlFunction BFILENAME BITAND CEIL CHARTOROWID CHR COALESCE syn keyword plsqlFunction COMMIT COMMIT_CM COMPOSE CONCAT CONVERT COS COSH syn keyword plsqlFunction COUNT CUBE CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP syn keyword plsqlFunction DBTIMEZONE DECODE DECOMPOSE DEREF DUMP EMPTY_BLOB syn keyword plsqlFunction EMPTY_CLOB EXISTS EXP FLOOR FROM_TZ GETBND GLB syn keyword plsqlFunction GREATEST GREATEST_LB GROUPING HEXTORAW INITCAP syn keyword plsqlFunction INSTR INSTR2 INSTR4 INSTRB INSTRC ISNCHAR LAST_DAY syn keyword plsqlFunction LEAST LEAST_UB LENGTH LENGTH2 LENGTH4 LENGTHB LENGTHC syn keyword plsqlFunction LN LOCALTIME LOCALTIMESTAMP LOG LOWER LPAD syn keyword plsqlFunction LTRIM LUB MAKE_REF MAX MIN MOD MONTHS_BETWEEN syn keyword plsqlFunction NCHARTOROWID NCHR NEW_TIME NEXT_DAY NHEXTORAW syn keyword plsqlFunction NLS_CHARSET_DECL_LEN NLS_CHARSET_ID NLS_CHARSET_NAME syn keyword plsqlFunction NLS_INITCAP NLS_LOWER NLSSORT NLS_UPPER NULLFN NULLIF syn keyword plsqlFunction NUMTODSINTERVAL NUMTOYMINTERVAL NVL POWER syn keyword plsqlFunction RAISE_APPLICATION_ERROR RAWTOHEX RAWTONHEX REF syn keyword plsqlFunction REFTOHEX REPLACE ROLLBACK_NR ROLLBACK_SV ROLLUP ROUND syn keyword plsqlFunction ROWIDTOCHAR ROWIDTONCHAR ROWLABEL RPAD RTRIM syn keyword plsqlFunction SAVEPOINT SESSIONTIMEZONE SETBND SET_TRANSACTION_USE syn keyword plsqlFunction SIGN SIN SINH SOUNDEX SQLCODE SQLERRM SQRT STDDEV syn keyword plsqlFunction SUBSTR SUBSTR2 SUBSTR4 SUBSTRB SUBSTRC SUM syn keyword plsqlFunction SYS_AT_TIME_ZONE SYS_CONTEXT SYSDATE SYS_EXTRACT_UTC syn keyword plsqlFunction SYS_GUID SYS_LITERALTODATE SYS_LITERALTODSINTERVAL syn keyword plsqlFunction SYS_LITERALTOTIME SYS_LITERALTOTIMESTAMP syn keyword plsqlFunction SYS_LITERALTOTZTIME SYS_LITERALTOTZTIMESTAMP syn keyword plsqlFunction SYS_LITERALTOYMINTERVAL SYS_OVER__DD SYS_OVER__DI syn keyword plsqlFunction SYS_OVER__ID SYS_OVER_IID SYS_OVER_IIT syn keyword plsqlFunction SYS_OVER__IT SYS_OVER__TI SYS_OVER__TT syn keyword plsqlFunction SYSTIMESTAMP TAN TANH TO_ANYLOB TO_BLOB TO_CHAR syn keyword plsqlFunction TO_CLOB TO_DATE TO_DSINTERVAL TO_LABEL TO_MULTI_BYTE syn keyword plsqlFunction TO_NCHAR TO_NCLOB TO_NUMBER TO_RAW TO_SINGLE_BYTE syn keyword plsqlFunction TO_TIME TO_TIMESTAMP TO_TIMESTAMP_TZ TO_TIME_TZ syn keyword plsqlFunction TO_YMINTERVAL TRANSLATE TREAT TRIM TRUNC TZ_OFFSET UID syn keyword plsqlFunction UNISTR UPPER UROWID USER USERENV VALUE VARIANCE syn keyword plsqlFunction VSIZE WORK XOR syn match plsqlFunction "\" " PL/SQL Exceptions syn keyword plsqlException ACCESS_INTO_NULL CASE_NOT_FOUND COLLECTION_IS_NULL syn keyword plsqlException CURSOR_ALREADY_OPEN DUP_VAL_ON_INDEX INVALID_CURSOR syn keyword plsqlException INVALID_NUMBER LOGIN_DENIED NO_DATA_FOUND syn keyword plsqlException NOT_LOGGED_ON PROGRAM_ERROR ROWTYPE_MISMATCH syn keyword plsqlException SELF_IS_NULL STORAGE_ERROR SUBSCRIPT_BEYOND_COUNT syn keyword plsqlException SUBSCRIPT_OUTSIDE_LIMIT SYS_INVALID_ROWID syn keyword plsqlException TIMEOUT_ON_RESOURCE TOO_MANY_ROWS VALUE_ERROR syn keyword plsqlException ZERO_DIVIDE " Oracle Pseudo Colums. syn keyword plsqlPseudo CURRVAL LEVEL NEXTVAL ROWID ROWNUM if exists("plsql_highlight_triggers") syn keyword plsqlTrigger INSERTING UPDATING DELETING endif " Conditionals. syn keyword plsqlConditional ELSIF ELSE IF syn match plsqlConditional "\" " Loops. syn keyword plsqlRepeat FOR LOOP WHILE FORALL syn match plsqlRepeat "\" " Various types of comments. if exists("c_comment_strings") syntax match plsqlCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region plsqlCommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=plsqlCommentSkip syntax region plsqlComment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" syntax region plsqlCommentL start="--" skip="\\$" end="$" keepend contains=@plsqlCommentGroup,plsqlComment2String,plsqlCharLiteral,plsqlBooleanLiteral,plsqlNumbersCom,plsqlSpaceError syntax region plsqlComment start="/\*" end="\*/" contains=@plsqlCommentGroup,plsqlComment2String,plsqlCharLiteral,plsqlBooleanLiteral,plsqlNumbersCom,plsqlSpaceError else syntax region plsqlCommentL start="--" skip="\\$" end="$" keepend contains=@plsqlCommentGroup,plsqlSpaceError syntax region plsqlComment start="/\*" end="\*/" contains=@plsqlCommentGroup,plsqlSpaceError endif syn sync ccomment plsqlComment syn sync ccomment plsqlCommentL " To catch unterminated string literals. syn match plsqlStringError "'.*$" " Various types of literals. syn match plsqlNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral syn match plsqlNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral syn match plsqlIntLiteral contained "[+-]\=\d\+" syn match plsqlFloatLiteral contained "[+-]\=\d\+\.\d*" syn match plsqlFloatLiteral contained "[+-]\=\d*\.\d*" syn match plsqlCharLiteral "'[^']'" syn match plsqlStringLiteral "'\([^']\|''\)*'" syn keyword plsqlBooleanLiteral TRUE FALSE NULL " The built-in types. syn keyword plsqlStorage ANYDATA ANYTYPE BFILE BINARY_INTEGER BLOB BOOLEAN syn keyword plsqlStorage BYTE CHAR CHARACTER CLOB CURSOR DATE DAY DEC DECIMAL syn keyword plsqlStorage DOUBLE DSINTERVAL_UNCONSTRAINED FLOAT HOUR syn keyword plsqlStorage INT INTEGER INTERVAL LOB LONG MINUTE syn keyword plsqlStorage MLSLABEL MONTH NATURAL NATURALN NCHAR NCHAR_CS NCLOB syn keyword plsqlStorage NUMBER NUMERIC NVARCHAR PLS_INT PLS_INTEGER syn keyword plsqlStorage POSITIVE POSITIVEN PRECISION RAW REAL RECORD syn keyword plsqlStorage SECOND SIGNTYPE SMALLINT STRING SYS_REFCURSOR TABLE TIME syn keyword plsqlStorage TIMESTAMP TIMESTAMP_UNCONSTRAINED syn keyword plsqlStorage TIMESTAMP_TZ_UNCONSTRAINED syn keyword plsqlStorage TIMESTAMP_LTZ_UNCONSTRAINED UROWID VARCHAR syn keyword plsqlStorage VARCHAR2 YEAR YMINTERVAL_UNCONSTRAINED ZONE " A type-attribute is really a type. syn match plsqlTypeAttribute "%\(TYPE\|ROWTYPE\)\>" " All other attributes. syn match plsqlAttribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTFOUND\|ROWCOUNT\)\>" " This'll catch mis-matched close-parens. syn cluster plsqlParenGroup contains=plsqlParenError,@plsqlCommentGroup,plsqlCommentSkip,plsqlIntLiteral,plsqlFloatLiteral,plsqlNumbersCom if exists("c_no_bracket_error") syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup syn match plsqlParenError ")" syn match plsqlErrInParen contained "[{}]" else syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInBracket syn match plsqlParenError "[\])]" syn match plsqlErrInParen contained "[{}]" syn region plsqlBracket transparent start='\[' end=']' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen syn match plsqlErrInBracket contained "[);{}]" endif " Syntax Synchronizing syn sync minlines=10 maxlines=100 " Define the default highlighting. " Only when an item doesn't have highlighting yet. hi def link plsqlAttribute Macro hi def link plsqlBlockError Error hi def link plsqlBooleanLiteral Boolean hi def link plsqlCharLiteral Character hi def link plsqlComment Comment hi def link plsqlCommentL Comment hi def link plsqlConditional Conditional hi def link plsqlError Error hi def link plsqlErrInBracket Error hi def link plsqlErrInBlock Error hi def link plsqlErrInParen Error hi def link plsqlException Function hi def link plsqlFloatLiteral Float hi def link plsqlFunction Function hi def link plsqlGarbage Error hi def link plsqlHostIdentifier Label hi def link plsqlIdentifier Normal hi def link plsqlIntLiteral Number hi def link plsqlOperator Operator hi def link plsqlParen Normal hi def link plsqlParenError Error hi def link plsqlSpaceError Error hi def link plsqlPseudo PreProc hi def link plsqlKeyword Keyword hi def link plsqlRepeat Repeat hi def link plsqlStorage StorageClass hi def link plsqlSQLKeyword Function hi def link plsqlStringError Error hi def link plsqlStringLiteral String hi def link plsqlCommentString String hi def link plsqlComment2String String hi def link plsqlSymbol Normal hi def link plsqlTrigger Function hi def link plsqlTypeAttribute StorageClass hi def link plsqlTodo Todo let b:current_syntax = "plsql" " vim: ts=8 sw=2 PK!++vim80/syntax/sqlhana.vimnu[" Vim syntax file " Language: SQL, SAP HANA In Memory Database " Maintainer: David Fishburn " Last Change: 2012 Oct 23 " Version: SP4 b (Q2 2012) " Homepage: http://www.vim.org/scripts/script.php?script_id=4275 " Description: Updated to SAP HANA SP4 " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " The SQL reserved words, defined as keywords. " These were pulled from the following SQL reference: " http://help.sap.com/hana/hana_sql_en.pdf " An easy approach is to copy all text from the PDF " into a Vim buffer. The keywords are in UPPER case, " so you can run the following commands to be left with " mainly the UPPER case words: " 1. Delete all words that do not begin with a Capital " %s/\(\<[^A-Z]\w*\>\)//g " 2. Remove all words where the 2nd letter is not a Capital " %s/\(\<[A-Z][^A-Z]\w*\>\)//g " 3. Remove all non-word (or space) characters " %s/[^0-9A-Za-z_ ]*//g " 4. Remove some known words " %s/\<\(SAP\|HANA\|OK\|AG\|IBM\|DB2\|AIX\|POWER\d\+\|UNIX\)\>//g " 5. Remove blank lines and trailing spaces " %s/\s\+$//g " %s/^\s\+//g " %s/^$\n//g " 6. Convert spaces to newlines remove single character " %s/[ ]\+/\r/g " %g/^\w$/d " 7. Sort and remove duplicates " :sort " :Uniq " 8. Use the WhatsMissing plugin against the sqlhana.vim file. " 9. Generated a file of all UPPER cased words which should not " be in the syntax file. These items should be removed " from the list in step 7. You can use WhatsNotMissing " between step 7 and this new file to weed out the words " we know are not syntax related. " 10. Use the WhatsMissingRemoveMatches to remove the words " from step 9. syn keyword sqlSpecial false null true " Supported Functions for Date/Time types syn keyword sqlFunction ADD_DAYS ADD_MONTHS ADD_SECONDS ADD_YEARS COALESCE syn keyword sqlFunction CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_UTCDATE syn keyword sqlFunction CURRENT_UTCTIME CURRENT_UTCTIMESTAMP syn keyword sqlFunction DAYNAME DAYOFMONTH DAYOFYEAR DAYS_BETWEEN EXTRACT syn keyword sqlFunction GREATEST HOUR IFNULL ISOWEEK LAST_DAY LEAST LOCALTOUTC syn keyword sqlFunction MINUTE MONTH MONTHNAME NEXT_DAY NOW QUARTER SECOND syn keyword sqlFunction SECONDS_BETWEEN UTCTOLOCAL WEEK WEEKDAY YEAR syn keyword sqlFunction TO_CHAR TO_DATE TO_DATS TO_NCHAR TO_TIME TO_TIMESTAMP UTCTOLOCAL " Aggregate syn keyword sqlFunction COUNT MIN MAX SUM AVG STDDEV VAR " Datatype conversion syn keyword sqlFunction CAST TO_ALPHANUM TO_BIGINT TO_BINARY TO_BLOB TO_CHAR TO_CLOB syn keyword sqlFunction TO_DATE TO_DATS TO_DECIMAL TO_DOUBLE TO_INT TO_INTEGER TO_NCHAR syn keyword sqlFunction TO_NCLOB TO_NVARCHAR TO_REAL TO_SECONDDATE TO_SMALLDECIMAL syn keyword sqlFunction TO_SMALLINT TO_TIME TO_TIMESTAMP TO_TINYINT TO_VARCHAR TO_VARBINARY " Number functions syn keyword sqlFunction ABS ACOS ASIN ATAN ATAN2 BINTOHEX BITAND CEIL COS COSH COT syn keyword sqlFunction EXP FLOOR GREATEST HEXTOBIN LEAST LN LOG MOD POWER ROUND syn keyword sqlFunction SIGN SIN SINH SQRT TAN TANH UMINUS " String functions syn keyword sqlFunction ASCII CHAR CONCAT LCASE LENGTH LOCATE LOWER LPAD LTRIM syn keyword sqlFunction NCHAR REPLACE RPAD RTRIM SUBSTR_AFTER SUBSTR_BEFORE syn keyword sqlFunction SUBSTRING TRIM UCASE UNICODE UPPER " Miscellaneous functions syn keyword sqlFunction COALESCE CURRENT_CONNECTION CURRENT_SCHEMA CURRENT_USER syn keyword sqlFunction GROUPING_ID IFNULL MAP NULLIF SESSION_CONTEXT SESSION_USER SYSUUIDSQL syn keyword sqlFunction GET_NUM_SERVERS " sp_ procedures " syn keyword sqlFunction sp_addalias " Reserved keywords syn keyword sqlkeyword ALL AS AT BEFORE syn keyword sqlkeyword BEGIN BOTH BY syn keyword sqlkeyword CONDITION syn keyword sqlkeyword CURRVAL CURSOR DECLARE syn keyword sqlkeyword DISTINCT DO ELSE ELSEIF ELSIF syn keyword sqlkeyword END EXCEPTION EXEC syn keyword sqlkeyword FOR FROM GROUP syn keyword sqlkeyword HAVING IN syn keyword sqlkeyword INOUT INTO IS syn keyword sqlkeyword LEADING syn keyword sqlkeyword LOOP MINUS NATURAL NEXTVAL syn keyword sqlkeyword OF ON ORDER OUT syn keyword sqlkeyword PRIOR RETURN RETURNS REVERSE syn keyword sqlkeyword ROWID SELECT syn keyword sqlkeyword SQL START STOP SYSDATE syn keyword sqlkeyword SYSTIME SYSTIMESTAMP SYSUUID syn keyword sqlkeyword TRAILING USING UTCDATE syn keyword sqlkeyword UTCTIME UTCTIMESTAMP VALUES syn keyword sqlkeyword WHILE syn keyword sqlkeyword ANY SOME EXISTS ESCAPE " IF keywords syn keyword sqlkeyword IF " CASE keywords syn keyword sqlKeyword WHEN THEN " Syntax rules common to TEXT and SHORTTEXT keywords syn keyword sqlKeyword LANGUAGE DETECTION LINGUISTIC syn keyword sqlkeyword MIME TYPE syn keyword sqlkeyword EXACT WEIGHT FUZZY FUZZINESSTHRESHOLD SEARCH syn keyword sqlkeyword PHRASE INDEX RATIO REBUILD syn keyword sqlkeyword CONFIGURATION syn keyword sqlkeyword SEARCH ONLY syn keyword sqlkeyword FAST PREPROCESS syn keyword sqlkeyword SYNC SYNCHRONOUS ASYNC ASYNCHRONOUS FLUSH QUEUE syn keyword sqlkeyword EVERY AFTER MINUTES DOCUMENTS SUSPEND " Statement keywords (i.e. after ALTER or CREATE) syn keyword sqlkeyword AUDIT POLICY syn keyword sqlkeyword FULLTEXT syn keyword sqlkeyword SEQUENCE RESTART syn keyword sqlkeyword TABLE syn keyword sqlkeyword PROCEDURE STATISTICS syn keyword sqlkeyword SCHEMA syn keyword sqlkeyword SYNONYM syn keyword sqlkeyword VIEW syn keyword sqlkeyword COLUMN syn keyword sqlkeyword SYSTEM LICENSE syn keyword sqlkeyword SESSION syn keyword sqlkeyword CANCEL WORK syn keyword sqlkeyword PLAN CACHE syn keyword sqlkeyword LOGGING NOLOGGING RETENTION syn keyword sqlkeyword RECONFIGURE SERVICE syn keyword sqlkeyword RESET MONITORING syn keyword sqlkeyword SAVE DURATION PERFTRACE FUNCTION_PROFILER syn keyword sqlkeyword SAVEPOINT syn keyword sqlkeyword USER syn keyword sqlkeyword ROLE syn keyword sqlkeyword ASC DESC syn keyword sqlkeyword OWNED syn keyword sqlkeyword DEPENDENCIES SCRAMBLE " Create sequence syn keyword sqlkeyword INCREMENT MAXVALUE MINVALUE CYCLE " Create table syn keyword sqlkeyword HISTORY GLOBAL LOCAL TEMPORARY " Create trigger syn keyword sqlkeyword TRIGGER REFERENCING EACH DEFAULT syn keyword sqlkeyword SIGNAL RESIGNAL MESSAGE_TEXT OLD NEW syn keyword sqlkeyword EXIT HANDLER SQL_ERROR_CODE syn keyword sqlkeyword TARGET CONDITION SIGNAL " Alter table syn keyword sqlkeyword ADD DROP MODIFY GENERATED ALWAYS syn keyword sqlkeyword UNIQUE BTREE CPBTREE PRIMARY KEY syn keyword sqlkeyword CONSTRAINT PRELOAD NONE syn keyword sqlkeyword ROW THREADS BATCH syn keyword sqlkeyword MOVE PARTITION TO LOCATION PHYSICAL OTHERS syn keyword sqlkeyword ROUNDROBIN PARTITIONS HASH RANGE VALUE syn keyword sqlkeyword PERSISTENT DELTA AUTO AUTOMERGE " Create audit policy syn keyword sqlkeyword AUDITING SUCCESSFUL UNSUCCESSFUL syn keyword sqlkeyword PRIVILEGE STRUCTURED CHANGE LEVEL syn keyword sqlkeyword EMERGENCY ALERT CRITICAL WARNING INFO " Privileges syn keyword sqlkeyword DEBUG EXECUTE " Schema syn keyword sqlkeyword CASCADE RESTRICT PARAMETERS SCAN " Traces syn keyword sqlkeyword CLIENT CRASHDUMP EMERGENCYDUMP syn keyword sqlkeyword INDEXSERVER NAMESERVER DAEMON syn keyword sqlkeyword CLEAR REMOVE TRACES " Reclaim syn keyword sqlkeyword RECLAIM DATA VOLUME VERSION SPACE DEFRAGMENT SPARSIFY " Join syn keyword sqlkeyword INNER OUTER LEFT RIGHT FULL CROSS JOIN syn keyword sqlkeyword GROUPING SETS ROLLUP CUBE syn keyword sqlkeyword BEST LIMIT OFFSET syn keyword sqlkeyword WITH SUBTOTAL BALANCE TOTAL syn keyword sqlkeyword TEXT_FILTER FILL UP SORT MATCHES TOP syn keyword sqlkeyword RESULT OVERVIEW PREFIX MULTIPLE RESULTSETS " Lock syn keyword sqlkeyword EXCLUSIVE MODE NOWAIT " Transaction syn keyword sqlkeyword TRANSACTION ISOLATION READ COMMITTED syn keyword sqlkeyword REPEATABLE SERIALIZABLE WRITE " Saml syn keyword sqlkeyword SAML ASSERTION PROVIDER SUBJECT ISSUER " User syn keyword sqlkeyword PASSWORD IDENTIFIED EXTERNALLY ATTEMPTS ATTEMPTS syn keyword sqlkeyword ENABLE DISABLE OFF LIFETIME FORCE DEACTIVATE syn keyword sqlkeyword ACTIVATE IDENTITY KERBEROS " Grant syn keyword sqlkeyword ADMIN BACKUP CATALOG SCENARIO INIFILE MONITOR syn keyword sqlkeyword OPTIMIZER OPTION syn keyword sqlkeyword RESOURCE STRUCTUREDPRIVILEGE TRACE " Import syn keyword sqlkeyword CSV FILE CONTROL NO CHECK SKIP FIRST LIST syn keyword sqlkeyword RECORD DELIMITED FIELD OPTIONALLY ENCLOSED FORMAT " Roles syn keyword sqlkeyword PUBLIC CONTENT_ADMIN MODELING MONITORING " Miscellaneous syn keyword sqlkeyword APPLICATION BINARY IMMEDIATE COREFILE SECURITY DEFINER syn keyword sqlkeyword DUMMY INVOKER MATERIALIZED MESSEGE_TEXT PARAMETER PARAMETERS syn keyword sqlkeyword PART syn keyword sqlkeyword CONSTANT SQLEXCEPTION SQLWARNING syn keyword sqlOperator WHERE BETWEEN LIKE NULL CONTAINS syn keyword sqlOperator AND OR NOT CASE syn keyword sqlOperator UNION INTERSECT EXCEPT syn keyword sqlStatement ALTER CALL CALLS CREATE DROP RENAME TRUNCATE syn keyword sqlStatement DELETE INSERT UPDATE EXPLAIN syn keyword sqlStatement MERGE REPLACE UPSERT SELECT syn keyword sqlStatement SET UNSET LOAD UNLOAD syn keyword sqlStatement CONNECT DISCONNECT COMMIT LOCK ROLLBACK syn keyword sqlStatement GRANT REVOKE syn keyword sqlStatement EXPORT IMPORT syn keyword sqlType DATE TIME SECONDDATE TIMESTAMP TINYINT SMALLINT syn keyword sqlType INT INTEGER BIGINT SMALLDECIMAL DECIMAL syn keyword sqlType REAL DOUBLE FLOAT syn keyword sqlType VARCHAR NVARCHAR ALPHANUM SHORTTEXT VARBINARY syn keyword sqlType BLOB CLOB NCLOB TEXT DAYDATE syn keyword sqlOption Webservice_namespace_host " Strings and characters: syn region sqlString start=+"+ end=+"+ contains=@Spell syn region sqlString start=+'+ end=+'+ contains=@Spell " Numbers: syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" " Comments: syn region sqlDashComment start=/--/ end=/$/ contains=@Spell syn region sqlSlashComment start=/\/\// end=/$/ contains=@Spell syn region sqlMultiComment start="/\*" end="\*/" contains=sqlMultiComment,@Spell syn cluster sqlComment contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell syn sync ccomment sqlComment syn sync ccomment sqlDashComment syn sync ccomment sqlSlashComment hi def link sqlDashComment Comment hi def link sqlSlashComment Comment hi def link sqlMultiComment Comment hi def link sqlNumber Number hi def link sqlOperator Operator hi def link sqlSpecial Special hi def link sqlKeyword Keyword hi def link sqlStatement Statement hi def link sqlString String hi def link sqlType Type hi def link sqlFunction Function hi def link sqlOption PreProc let b:current_syntax = "sqlhana" " vim:sw=4: PK!(DzXXvim80/syntax/objcpp.vimnu[" Vim syntax file " Language: Objective C++ " Maintainer: Kazunobu Kuriyama " Ex-Maintainer: Anthony Hodsdon " Last Change: 2007 Oct 29 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Read in C++ and ObjC syntax files runtime! syntax/cpp.vim unlet b:current_syntax runtime! syntax/objc.vim syn keyword objCppNonStructure class template namespace transparent contained syn keyword objCppNonStatement new delete friend using transparent contained let b:current_syntax = "objcpp" PK!W oovim80/syntax/d.vimnu[" Vim syntax file for the D programming language (version 1.076 and 2.069). " " Language: D " Maintainer: Jesse Phillips " Last Change: 2016 Feb 2 " Version: 0.28 " " Contributors: " - Jason Mills: original Maintainer " - Kirk McDonald " - Tim Keating " - Frank Benoit " - Shougo Matsushita " - Ellery Newcomer " - Steven N. Oliver " - Sohgo Takeuchi " - Robert Clipsham " - Petar Kirov " " Please submit bugs/comments/suggestions to the github repo: " https://github.com/JesseKPhillips/d.vim " " Options: " d_comment_strings - Set to highlight strings and numbers in comments. " " d_hl_operator_overload - Set to highlight D's specially named functions " that when overloaded implement unary and binary operators (e.g. opCmp). " " d_hl_object_types - Set to highlight some common types from object.di. " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Support cpoptions let s:cpo_save = &cpo set cpo&vim " Set the current syntax to be known as d let b:current_syntax = "d" " Keyword definitions " syn keyword dExternal contained import module syn keyword dAssert assert syn keyword dConditional if else switch syn keyword dBranch goto break continue syn keyword dRepeat while for do foreach foreach_reverse syn keyword dBoolean true false syn keyword dConstant null syn keyword dConstant __FILE__ __LINE__ __EOF__ __VERSION__ syn keyword dConstant __DATE__ __TIME__ __TIMESTAMP__ __VENDOR__ syn keyword dConstant __MODULE__ __FUNCTION__ __PRETTY_FUNCTION__ syn keyword dTypedef alias typedef syn keyword dStructure template interface class struct union syn keyword dEnum enum syn keyword dOperator new delete typeof typeid cast align is syn keyword dOperator this super if exists("d_hl_operator_overload") syn keyword dOpOverload opNeg opCom opPostInc opPostDec opCast opAdd syn keyword dOpOverload opSub opSub_r opMul opDiv opDiv_r opMod syn keyword dOpOverload opMod_r opAnd opOr opXor opShl opShl_r opShr syn keyword dOpOverload opShr_r opUShr opUShr_r opCat syn keyword dOpOverload opCat_r opEquals opCmp syn keyword dOpOverload opAssign opAddAssign opSubAssign opMulAssign syn keyword dOpOverload opDivAssign opModAssign opAndAssign syn keyword dOpOverload opOrAssign opXorAssign opShlAssign syn keyword dOpOverload opShrAssign opUShrAssign opCatAssign syn keyword dOpOverload opIndex opIndexAssign opIndexOpAssign syn keyword dOpOverload opCall opSlice opSliceAssign opSliceOpAssign syn keyword dOpOverload opPos opAdd_r opMul_r opAnd_r opOr_r opXor_r syn keyword dOpOverload opIn opIn_r opPow opDispatch opStar opDot syn keyword dOpOverload opApply opApplyReverse opDollar syn keyword dOpOverload opUnary opIndexUnary opSliceUnary syn keyword dOpOverload opBinary opBinaryRight endif syn keyword dType byte ubyte short ushort int uint long ulong cent ucent syn keyword dType void bool Object syn keyword dType float double real syn keyword dType ushort int uint long ulong float syn keyword dType char wchar dchar string wstring dstring syn keyword dType ireal ifloat idouble creal cfloat cdouble syn keyword dType size_t ptrdiff_t sizediff_t equals_t hash_t if exists("d_hl_object_types") syn keyword dType Object Throwable AssociativeArray Error Exception syn keyword dType Interface OffsetTypeInfo TypeInfo TypeInfo_Typedef syn keyword dType TypeInfo_Enum TypeInfo_Pointer TypeInfo_Array syn keyword dType TypeInfo_StaticArray TypeInfo_AssociativeArray syn keyword dType TypeInfo_Function TypeInfo_Delegate TypeInfo_Class syn keyword dType ClassInfo TypeInfo_Interface TypeInfo_Struct syn keyword dType TypeInfo_Tuple TypeInfo_Const TypeInfo_Invariant syn keyword dType TypeInfo_Shared TypeInfo_Inout MemberInfo syn keyword dType MemberInfo_field MemberInfo_function ModuleInfo endif syn keyword dDebug deprecated unittest invariant syn keyword dExceptions throw try catch finally syn keyword dScopeDecl public protected private export package syn keyword dStatement debug return with syn keyword dStatement function delegate __ctfe mixin macro __simd syn keyword dStatement in out body syn keyword dStorageClass contained in out scope syn keyword dStorageClass inout ref lazy pure nothrow syn keyword dStorageClass auto static override final abstract volatile syn keyword dStorageClass __gshared __vector syn keyword dStorageClass synchronized shared immutable const lazy syn keyword dIdentifier _arguments _argptr __vptr __monitor syn keyword dIdentifier _ctor _dtor __argTypes __overloadset syn keyword dScopeIdentifier contained exit success failure syn keyword dTraitsIdentifier contained isAbstractClass isArithmetic syn keyword dTraitsIdentifier contained isAssociativeArray isFinalClass syn keyword dTraitsIdentifier contained isPOD isNested isFloating syn keyword dTraitsIdentifier contained isIntegral isScalar isStaticArray syn keyword dTraitsIdentifier contained isUnsigned isVirtualFunction syn keyword dTraitsIdentifier contained isVirtualMethod isAbstractFunction syn keyword dTraitsIdentifier contained isFinalFunction isStaticFunction syn keyword dTraitsIdentifier contained isOverrideFunction isTemplate syn keyword dTraitsIdentifier contained isRef isOut isLazy hasMember syn keyword dTraitsIdentifier contained identifier getAliasThis syn keyword dTraitsIdentifier contained getAttributes getFunctionAttributes getMember syn keyword dTraitsIdentifier contained getOverloads getPointerBitmap getProtection syn keyword dTraitsIdentifier contained getVirtualFunctions getVirtualIndex syn keyword dTraitsIdentifier contained getVirtualMethods getUnitTests syn keyword dTraitsIdentifier contained parent classInstanceSize allMembers syn keyword dTraitsIdentifier contained derivedMembers isSame compiles syn keyword dPragmaIdentifier contained inline lib mangle msg startaddress GNU_asm syn keyword dExternIdentifier contained C C++ D Windows Pascal System Objective-C syn keyword dAttribute contained safe trusted system syn keyword dAttribute contained property disable nogc syn keyword dVersionIdentifier contained DigitalMars GNU LDC SDC D_NET syn keyword dVersionIdentifier contained X86 X86_64 ARM PPC PPC64 IA64 MIPS MIPS64 Alpha syn keyword dVersionIdentifier contained SPARC SPARC64 S390 S390X HPPA HPPA64 SH SH64 syn keyword dVersionIdentifier contained linux Posix OSX FreeBSD Windows Win32 Win64 syn keyword dVersionIdentifier contained OpenBSD BSD Solaris AIX SkyOS SysV3 SysV4 Hurd syn keyword dVersionIdentifier contained Cygwin MinGW syn keyword dVersionIdentifier contained LittleEndian BigEndian syn keyword dVersionIdentifier contained D_InlineAsm_X86 D_InlineAsm_X86_64 syn keyword dVersionIdentifier contained D_Version2 D_Coverage D_Ddoc D_LP64 D_PIC syn keyword dVersionIdentifier contained unittest assert none all syn cluster dComment contains=dNestedComment,dBlockComment,dLineComment " Highlight the sharpbang syn match dSharpBang "\%^#!.*" display " Attributes/annotations syn match dAnnotation "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>" contains=dAttribute " Version Identifiers syn match dVersion "\" syn match dVersion "\"he=s+7 contains=dVersionIdentifier " Scope Identifiers syn match dStatement "\" syn match dStatement "\"he=s+5 contains=dScopeIdentifier " Traits Statement syn match dStatement "\<__traits\>" syn match dStatement "\<__traits\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+8 contains=dTraitsIdentifier " Pragma Statement syn match dPragma "\" syn match dPragma "\"he=s+6 contains=dPragmaIdentifier " Necessary to highlight C++ in extern modifiers. syn match dExternIdentifier "C\(++\)\?" contained " Extern Identifiers syn match dExternal "\" syn match dExtern "\"he=s+6 contains=dExternIdentifier " Make import a region to prevent highlighting keywords syn region dImport start="\+ contained transparent contains=dNestAngleString,@Spell syn region dNestCurlyString start=+{+ end=+}+ contained transparent contains=dNestCurlyString,@Spell " Nesting delimited strings " syn region dParenString matchgroup=dParenString start=+q"(+ end=+)"+ contains=dNestParenString,@Spell syn region dBrackString matchgroup=dBrackString start=+q"\[+ end=+\]"+ contains=dNestBrackString,@Spell syn region dAngleString matchgroup=dAngleString start=+q"<+ end=+>"+ contains=dNestAngleString,@Spell syn region dCurlyString matchgroup=dCurlyString start=+q"{+ end=+}"+ contains=dNestCurlyString,@Spell hi link dParenString dNestString hi link dBrackString dNestString hi link dAngleString dNestString hi link dCurlyString dNestString syn cluster dTokens add=dString,dRawString,dHexString,dDelimString,dNestString " Token strings " syn region dNestTokenString start=+{+ end=+}+ contained contains=dNestTokenString,@dTokens,dFormat syn region dTokenString matchgroup=dTokenStringBrack transparent start=+q{+ end=+}+ contains=dNestTokenString,@dTokens,dFormat syn cluster dTokens add=dTokenString " Numbers " syn case ignore syn match dDec display "\<\d[0-9_]*\(u\=l\=\|l\=u\=\)\>" " Hex number syn match dHex display "\<0x[0-9a-f_]\+\(u\=l\=\|l\=u\=\)\>" syn match dOctal display "\<0[0-7_]\+\(u\=l\=\|l\=u\=\)\>" " flag an octal number with wrong digits syn match dOctalError display "\<0[0-7_]*[89][0-9_]*" " binary numbers syn match dBinary display "\<0b[01_]\+\(u\=l\=\|l\=u\=\)\>" "floating point without the dot syn match dFloat display "\<\d[0-9_]*\(fi\=\|l\=i\)\>" "floating point number, with dot, optional exponent syn match dFloat display "\<\d[0-9_]*\.[0-9_]*\(e[-+]\=[0-9_]\+\)\=[fl]\=i\=" "floating point number, starting with a dot, optional exponent syn match dFloat display "\(\.[0-9_]\+\)\(e[-+]\=[0-9_]\+\)\=[fl]\=i\=\>" "floating point number, without dot, with exponent "syn match dFloat display "\<\d\+e[-+]\=\d\+[fl]\=\>" syn match dFloat display "\<\d[0-9_]*e[-+]\=[0-9_]\+[fl]\=\>" "floating point without the dot syn match dHexFloat display "\<0x[0-9a-f_]\+\(fi\=\|l\=i\)\>" "floating point number, with dot, optional exponent syn match dHexFloat display "\<0x[0-9a-f_]\+\.[0-9a-f_]*\(p[-+]\=[0-9_]\+\)\=[fl]\=i\=" "floating point number, without dot, with exponent syn match dHexFloat display "\<0x[0-9a-f_]\+p[-+]\=[0-9_]\+[fl]\=i\=\>" syn cluster dTokens add=dDec,dHex,dOctal,dOctalError,dBinary,dFloat,dHexFloat syn case match " Pragma (preprocessor) support " TODO: Highlight following Integer and optional Filespec. syn region dPragma start="#\s*\(line\>\)" skip="\\$" end="$" " Block " syn region dBlock start="{" end="}" transparent fold " The default highlighting. " hi def link dBinary Number hi def link dDec Number hi def link dHex Number hi def link dOctal Number hi def link dFloat Float hi def link dHexFloat Float hi def link dDebug Debug hi def link dBranch Conditional hi def link dConditional Conditional hi def link dLabel Label hi def link dUserLabel Label hi def link dRepeat Repeat hi def link dExceptions Exception hi def link dAssert Statement hi def link dStatement Statement hi def link dScopeDecl dStorageClass hi def link dStorageClass StorageClass hi def link dBoolean Boolean hi def link dUnicode Special hi def link dTokenStringBrack String hi def link dHereString String hi def link dNestString String hi def link dDelimString String hi def link dRawString String hi def link dString String hi def link dHexString String hi def link dCharacter Character hi def link dEscSequence SpecialChar hi def link dFormat SpecialChar hi def link dSpecialCharError Error hi def link dOctalError Error hi def link dOperator Operator hi def link dOpOverload Identifier hi def link dConstant Constant hi def link dTypedef Typedef hi def link dEnum Structure hi def link dStructure Structure hi def link dTodo Todo hi def link dType Type hi def link dLineComment Comment hi def link dBlockComment Comment hi def link dNestedComment Comment hi def link dCommentError Error hi def link dNestedCommentError Error hi def link dCommentStartError Error hi def link dExternal Include hi def link dAnnotation PreProc hi def link dSharpBang PreProc hi def link dAttribute StorageClass hi def link dIdentifier Identifier hi def link dVersion dStatement hi def link dVersionIdentifier Identifier hi def link dScopeIdentifier Identifier hi def link dTraitsIdentifier Identifier hi def link dPragma PreProc hi def link dPragmaIdentifier Identifier hi def link dExtern dExternal hi def link dExternIdentifier Identifier " Marks contents of the asm statment body as special syn match dAsmStatement "\" syn region dAsmBody start="asm[\n]*\s*{"hs=e+1 end="}"he=e-1 contains=dAsmStatement,dAsmOpCode,@dComment,DUserLabel hi def link dAsmBody dUnicode hi def link dAsmStatement dStatement hi def link dAsmOpCode Identifier syn keyword dAsmOpCode contained aaa aad aam aas syn keyword dAsmOpCode contained add addpd addps addsd syn keyword dAsmOpCode contained and andnpd andnps andpd syn keyword dAsmOpCode contained arpl bound bsf bsr syn keyword dAsmOpCode contained bt btc btr bts syn keyword dAsmOpCode contained call bswap andps addss syn keyword dAsmOpCode contained cbw cdq clc cld syn keyword dAsmOpCode contained cli clts cmc cmova syn keyword dAsmOpCode contained cmovb cmovbe cmovc cmove syn keyword dAsmOpCode contained cmovge cmovl cmovle cmovna syn keyword dAsmOpCode contained cmovnae cmovg cmovae clflush syn keyword dAsmOpCode contained cmovnb cmovnbe cmovnc cmovne syn keyword dAsmOpCode contained cmovnge cmovnl cmovnle cmovno syn keyword dAsmOpCode contained cmovns cmovnz cmovo cmovp syn keyword dAsmOpCode contained cmovpo cmovs cmovz cmp syn keyword dAsmOpCode contained cmppd cmovpe cmovnp cmovng syn keyword dAsmOpCode contained cmpps cmps cmpsb cmpsd syn keyword dAsmOpCode contained cmpsw cmpxch8b cmpxchg comisd syn keyword dAsmOpCode contained cpuid cvtdq2pd cvtdq2ps cvtpd2dq syn keyword dAsmOpCode contained cvtpd2ps cvtpi2pd cvtpi2ps cvtps2dq syn keyword dAsmOpCode contained cvtps2pd cvtpd2pi comiss cmpss syn keyword dAsmOpCode contained cvtps2pi cvtsd2si cvtsd2ss cvtsi2sd syn keyword dAsmOpCode contained cvtss2sd cvtss2si cvttpd2dq cvttpd2pi syn keyword dAsmOpCode contained cvttps2pi cvttsd2si cvttss2si cwd syn keyword dAsmOpCode contained da daa das db syn keyword dAsmOpCode contained dd cwde cvttps2dq cvtsi2ss syn keyword dAsmOpCode contained de dec df di syn keyword dAsmOpCode contained divpd divps divsd divss syn keyword dAsmOpCode contained dq ds dt dw syn keyword dAsmOpCode contained enter f2xm1 fabs fadd syn keyword dAsmOpCode contained faddp emms dl div syn keyword dAsmOpCode contained fbld fbstp fchs fclex syn keyword dAsmOpCode contained fcmovbe fcmove fcmovnb fcmovnbe syn keyword dAsmOpCode contained fcmovnu fcmovu fcom fcomi syn keyword dAsmOpCode contained fcomp fcompp fcos fdecstp syn keyword dAsmOpCode contained fdisi fcomip fcmovne fcmovb syn keyword dAsmOpCode contained fdiv fdivp fdivr fdivrp syn keyword dAsmOpCode contained ffree fiadd ficom ficomp syn keyword dAsmOpCode contained fidivr fild fimul fincstp syn keyword dAsmOpCode contained fist fistp fisub fisubr syn keyword dAsmOpCode contained fld finit fidiv feni syn keyword dAsmOpCode contained fld1 fldcw fldenv fldl2e syn keyword dAsmOpCode contained fldlg2 fldln2 fldpi fldz syn keyword dAsmOpCode contained fmulp fnclex fndisi fneni syn keyword dAsmOpCode contained fnop fnsave fnstcw fnstenv syn keyword dAsmOpCode contained fnstsw fninit fmul fldl2t syn keyword dAsmOpCode contained fpatan fprem fprem1 fptan syn keyword dAsmOpCode contained frstor fsave fscale fsetpm syn keyword dAsmOpCode contained fsincos fsqrt fst fstcw syn keyword dAsmOpCode contained fstp fstsw fsub fsubp syn keyword dAsmOpCode contained fsubr fstenv fsin frndint syn keyword dAsmOpCode contained fsubrp ftst fucom fucomi syn keyword dAsmOpCode contained fucomp fucompp fwait fxam syn keyword dAsmOpCode contained fxrstor fxsave fxtract fyl2x syn keyword dAsmOpCode contained hlt idiv imul in syn keyword dAsmOpCode contained inc fyl2xp1 fxch fucomip syn keyword dAsmOpCode contained ins insb insd insw syn keyword dAsmOpCode contained into invd invlpg iret syn keyword dAsmOpCode contained ja jae jb jbe syn keyword dAsmOpCode contained jcxz je jecxz jg syn keyword dAsmOpCode contained jge jc iretd int syn keyword dAsmOpCode contained jl jle jmp jna syn keyword dAsmOpCode contained jnb jnbe jnc jne syn keyword dAsmOpCode contained jnge jnl jnle jno syn keyword dAsmOpCode contained jns jnz jo jp syn keyword dAsmOpCode contained jpe jnp jng jnae syn keyword dAsmOpCode contained jpo js jz lahf syn keyword dAsmOpCode contained ldmxcsr lds lea leave syn keyword dAsmOpCode contained lfence lfs lgdt lgs syn keyword dAsmOpCode contained lldt lmsw lock lods syn keyword dAsmOpCode contained lodsb lidt les lar syn keyword dAsmOpCode contained lodsd lodsw loop loope syn keyword dAsmOpCode contained loopnz loopz lsl lss syn keyword dAsmOpCode contained maskmovdqu maskmovq maxpd maxps syn keyword dAsmOpCode contained maxss mfence minpd minps syn keyword dAsmOpCode contained minsd maxsd ltr loopne syn keyword dAsmOpCode contained minss mov movapd movaps syn keyword dAsmOpCode contained movdq2q movdqa movdqu movhlps syn keyword dAsmOpCode contained movhps movlhps movlpd movlps syn keyword dAsmOpCode contained movmskps movntdq movnti movntpd syn keyword dAsmOpCode contained movntps movmskpd movhpd movd syn keyword dAsmOpCode contained movntq movq movq2dq movs syn keyword dAsmOpCode contained movsd movss movsw movsx syn keyword dAsmOpCode contained movups movzx mul mulpd syn keyword dAsmOpCode contained mulsd mulss neg nop syn keyword dAsmOpCode contained not mulps movupd movsb syn keyword dAsmOpCode contained or orpd orps out syn keyword dAsmOpCode contained outsb outsd outsw packssdw syn keyword dAsmOpCode contained packuswb paddb paddd paddq syn keyword dAsmOpCode contained paddsw paddusb paddusw paddw syn keyword dAsmOpCode contained pand paddsb packsswb outs syn keyword dAsmOpCode contained pandn pavgb pavgw pcmpeqb syn keyword dAsmOpCode contained pcmpeqw pcmpgtb pcmpgtd pcmpgtw syn keyword dAsmOpCode contained pinsrw pmaddwd pmaxsw pmaxub syn keyword dAsmOpCode contained pminub pmovmskb pmulhuw pmulhw syn keyword dAsmOpCode contained pmullw pminsw pextrw pcmpeqd syn keyword dAsmOpCode contained pmuludq pop popa popad syn keyword dAsmOpCode contained popfd por prefetchnta prefetcht0 syn keyword dAsmOpCode contained prefetcht2 psadbw pshufd pshufhw syn keyword dAsmOpCode contained pshufw pslld pslldq psllq syn keyword dAsmOpCode contained psllw pshuflw prefetcht1 popf syn keyword dAsmOpCode contained psrad psraw psrld psrldq syn keyword dAsmOpCode contained psrlw psubb psubd psubq syn keyword dAsmOpCode contained psubsw psubusb psubusw psubw syn keyword dAsmOpCode contained punpckhdq punpckhqdq punpckhwd punpcklbw syn keyword dAsmOpCode contained punpckldq punpckhbw psubsb psrlq syn keyword dAsmOpCode contained punpcklqdq punpcklwd push pusha syn keyword dAsmOpCode contained pushf pushfd pxor rcl syn keyword dAsmOpCode contained rcpss rcr rdmsr rdpmc syn keyword dAsmOpCode contained rep repe repne repnz syn keyword dAsmOpCode contained repz rdtsc rcpps pushad syn keyword dAsmOpCode contained ret retf rol ror syn keyword dAsmOpCode contained rsqrtps rsqrtss sahf sal syn keyword dAsmOpCode contained sbb scas scasb scasd syn keyword dAsmOpCode contained seta setae setb setbe syn keyword dAsmOpCode contained setc scasw sar rsm syn keyword dAsmOpCode contained sete setg setge setl syn keyword dAsmOpCode contained setna setnae setnb setnbe syn keyword dAsmOpCode contained setne setng setnge setnl syn keyword dAsmOpCode contained setno setnp setns setnz syn keyword dAsmOpCode contained seto setnle setnc setle syn keyword dAsmOpCode contained setp setpe setpo sets syn keyword dAsmOpCode contained sfence sgdt shl shld syn keyword dAsmOpCode contained shrd shufpd shufps sidt syn keyword dAsmOpCode contained smsw sqrtpd sqrtps sqrtsd syn keyword dAsmOpCode contained sqrtss sldt shr setz syn keyword dAsmOpCode contained stc std sti stmxcsr syn keyword dAsmOpCode contained stosb stosd stosw str syn keyword dAsmOpCode contained subpd subps subsd subss syn keyword dAsmOpCode contained sysexit test ucomisd ucomiss syn keyword dAsmOpCode contained ud2 sysenter sub stos syn keyword dAsmOpCode contained unpckhpd unpckhps unpcklpd unpcklps syn keyword dAsmOpCode contained verw wbinvd wrmsr xadd syn keyword dAsmOpCode contained xchg xlatb xor xorpd syn keyword dAsmOpCode contained xorps pfrcpit1 pfmin movddup syn keyword dAsmOpCode contained addsubpd addsubps fisttp haddps syn keyword dAsmOpCode contained hsubpd hsubps lddqu monitor syn keyword dAsmOpCode contained haddpd xlat wait verr syn keyword dAsmOpCode contained movshdup movsldup mwait pfcmpeq syn keyword dAsmOpCode contained pavgusb pf2id pfacc pfadd syn keyword dAsmOpCode contained pfcmpge pfcmpgt pfmax pfmul syn keyword dAsmOpCode contained pfnacc pfpnacc pfrcp pfrcpit1 syn keyword dAsmOpCode contained pfrsqit1 pfrsqrt pfsub pfsubr syn keyword dAsmOpCode contained pmulhrw pswapd syscall sysret syn keyword dAsmOpCode contained vpmuldq xgetbv cmpxchg8b cmpxchg16b syn keyword dAsmOpCode contained pabsb pabsd pabsw palignr syn keyword dAsmOpCode contained phaddd phaddsw phaddw phsubd syn keyword dAsmOpCode contained phsubsw phsubw pmaddubsw pmulhrsw syn keyword dAsmOpCode contained pshufb psignb psignd psignw syn keyword dAsmOpCode contained popfq pushfq blendpd blendps syn keyword dAsmOpCode contained blendvpd blendvps extractps insertps syn keyword dAsmOpCode contained movntdqa mpsadbw packusdw pblendvb syn keyword dAsmOpCode contained pblendw pcmpeqq pextrb pextrd syn keyword dAsmOpCode contained pextrq phminposuw pinsrb pinsrd syn keyword dAsmOpCode contained pinsrq pmaxsb pmaxsd pmaxud syn keyword dAsmOpCode contained pmaxuw pminsb pminsd pminud syn keyword dAsmOpCode contained pminuw pmulld ptest roundpd syn keyword dAsmOpCode contained roundps roundsd roundss pmuldq syn keyword dAsmOpCode contained pmovsxbd pmovsxdq pmovzxbq pmovzxdq syn keyword dAsmOpCode contained pmovsxbq pmovsxwd pmovzxbq pmovzxwd syn keyword dAsmOpCode contained pmovsxbw pmovsxwq pmovzxbw pmovzxwq syn keyword dAsmOpCode contained crc32 pcmpestri pcmpestrm pcmpgtq syn keyword dAsmOpCode contained pcmpistri pcmpistrm popcnt pi2fd syn keyword dAsmOpCode contained adc let &cpo = s:cpo_save unlet s:cpo_save PK!d,!,!vim80/syntax/debcontrol.vimnu[" Vim syntax file " Language: Debian control files " Maintainer: Debian Vim Maintainers " Former Maintainers: Gerfried Fuchs " Wichert Akkerman " Last Change: 2018 Jan 06 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcontrol.vim " Standard syntax initialization if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " Should match case except for the keys of each field syn case match syn iskeyword @,48-57,-,/ " Everything that is not explicitly matched by the rules below syn match debcontrolElse "^.*$" " Common seperators syn match debControlComma ",[ \t]*" syn match debControlSpace "[ \t]" let s:kernels = ['linux', 'hurd', 'kfreebsd', 'knetbsd', 'kopensolaris', 'netbsd'] let s:archs = [ \ 'alpha', 'amd64', 'armeb', 'armel', 'armhf', 'arm64', 'avr32', 'hppa' \, 'i386', 'ia64', 'lpia', 'm32r', 'm68k', 'mipsel', 'mips64el', 'mips' \, 'powerpcspe', 'powerpc', 'ppc64el', 'ppc64', 's390x', 's390', 'sh3eb' \, 'sh3', 'sh4eb', 'sh4', 'sh', 'sparc64', 'sparc', 'x32' \ ] let s:pairs = [ \ 'hurd-i386', 'kfreebsd-i386', 'kfreebsd-amd64', 'knetbsd-i386' \, 'kopensolaris-i386', 'netbsd-alpha', 'netbsd-i386' \ ] " Define some common expressions we can use later on syn keyword debcontrolArchitecture contained all any exe 'syn keyword debcontrolArchitecture contained '. join(map(s:kernels, {k,v -> v .'-any'})) exe 'syn keyword debcontrolArchitecture contained '. join(map(s:archs, {k,v -> 'any-'.v})) exe 'syn keyword debcontrolArchitecture contained '. join(s:archs) exe 'syn keyword debcontrolArchitecture contained '. join(s:pairs) unlet s:kernels s:archs s:pairs let s:sections = [ \ 'admin', 'cli-mono', 'comm', 'database', 'debian-installer', 'debug' \, 'devel', 'doc', 'editors', 'education', 'electronics', 'embedded' \, 'fonts', 'games', 'gnome', 'gnustep', 'gnu-r', 'golang', 'graphics' \, 'hamradio', 'haskell', 'httpd', 'interpreters', 'introspection' \, 'java\%(script\)\=', 'kde', 'kernel', 'libs', 'libdevel', 'lisp' \, 'localization', 'mail', 'math', 'metapackages', 'misc', 'net' \, 'news', 'ocaml', 'oldlibs', 'otherosfs', 'perl', 'php', 'python' \, 'ruby', 'rust', 'science', 'shells', 'sound', 'text', 'tex' \, 'utils', 'vcs', 'video', 'web', 'x11', 'xfce', 'zope' \ ] syn keyword debcontrolMultiArch contained no foreign allowed same syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+" syn keyword debcontrolPriority contained extra important optional required standard exe 'syn match debcontrolSection contained "\%(\%(contrib\|non-free\|non-US/main\|non-US/contrib\|non-US/non-free\|restricted\|universe\|multiverse\)/\)\=\%('.join(s:sections, '\|').'\)"' syn keyword debcontrolPackageType contained udeb deb syn match debcontrolVariable contained "\${.\{-}}" syn keyword debcontrolDmUpload contained yes syn keyword debcontrolYesNo contained yes no syn match debcontrolR3 contained "\<\%(no\|binary-targets\|[[:graph:]]\+/[[:graph:]]\+\%( \+[[:graph:]]\+/[[:graph:]]\+\)*\)\>" unlet s:sections " A URL (using the domain name definitions from RFC 1034 and 1738), right now " only enforce protocol and some sanity on the server/path part; syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$" syn match debcontrolVcsGit contained "\v%(git|https?)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?%(\s+-b\s+[^ ~^:?*[\\]+)?$" " An email address syn match debcontrolEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+" syn match debcontrolEmail "<.\{-}>" " #-Comments syn match debcontrolComment "^#.*$" contains=@Spell syn case ignore " Handle all fields from deb-src-control(5) " Fields for which we do strict syntax checking syn region debcontrolStrictField matchgroup=debcontrolKey start="^Architecture: *" end="$" contains=debcontrolArchitecture,debcontrolSpace oneline syn region debcontrolStrictField matchgroup=debcontrolKey start="^Multi-Arch: *" end="$" contains=debcontrolMultiArch oneline syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(Package\|Source\): *" end="$" contains=debcontrolName oneline syn region debcontrolStrictField matchgroup=debcontrolKey start="^Priority: *" end="$" contains=debcontrolPriority oneline syn region debcontrolStrictField matchgroup=debcontrolKey start="^Section: *" end="$" contains=debcontrolSection oneline syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XC-\)\=Package-Type: *" end="$" contains=debcontrolPackageType oneline syn region debcontrolStrictField matchgroup=debcontrolKey start="^Homepage: *" end="$" contains=debcontrolHTTPUrl oneline keepend syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-\)\=Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\): *" end="$" contains=debcontrolHTTPUrl oneline keepend syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-\)\=Vcs-Svn: *" end="$" contains=debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-\)\=Vcs-Cvs: *" end="$" contains=debcontrolVcsCvs oneline keepend syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-\)\=Vcs-Git: *" end="$" contains=debcontrolVcsGit oneline keepend syn region debcontrolStrictField matchgroup=debcontrolKey start="^Rules-Requires-Root: *" end="$" contains=debcontrolR3 oneline syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(Build-\)\=Essential: *" end="$" contains=debcontrolYesNo oneline syn region debcontrolStrictField matchgroup=debcontrolDeprecatedKey start="^\%(XS-\)\=DM-Upload-Allowed: *" end="$" contains=debcontrolDmUpload oneline " Catch-all for the other legal fields syn region debcontrolField matchgroup=debcontrolKey start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\|\%(XS-\)\=Testsuite\%(-Triggers\)\=\|Build-Profiles\|Tag\|Subarchitecture\|Kernel-Version\|Installer-Menu-Item\): " end="$" contains=debcontrolVariable,debcontrolEmail oneline syn region debcontrolMultiField matchgroup=debcontrolKey start="^\%(Build-\%(Conflicts\|Depends\)\%(-Arch\|-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Breaks\|Enhances\|Replaces\|Conflicts\|Provides\|Built-Using\|Uploaders\|X[SBC]\{0,3\}\%(Private-\)\=-[-a-zA-Z0-9]\+\): *" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolEmail,debcontrolVariable,debcontrolComment syn region debcontrolMultiFieldSpell matchgroup=debcontrolKey start="^Description: *" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolEmail,debcontrolVariable,debcontrolComment,@Spell " Associate our matches and regions with pretty colours hi def link debcontrolKey Keyword hi def link debcontrolField Normal hi def link debcontrolStrictField Error hi def link debcontrolDeprecatedKey Error hi def link debcontrolMultiField Normal hi def link debcontrolArchitecture Normal hi def link debcontrolMultiArch Normal hi def link debcontrolName Normal hi def link debcontrolPriority Normal hi def link debcontrolSection Normal hi def link debcontrolPackageType Normal hi def link debcontrolVariable Identifier hi def link debcontrolEmail Identifier hi def link debcontrolVcsSvn Identifier hi def link debcontrolVcsCvs Identifier hi def link debcontrolVcsGit Identifier hi def link debcontrolHTTPUrl Identifier hi def link debcontrolDmUpload Identifier hi def link debcontrolYesNo Identifier hi def link debcontrolR3 Identifier hi def link debcontrolComment Comment hi def link debcontrolElse Special let b:current_syntax = "debcontrol" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 sw=2 PK!4..vim80/syntax/zimbu.vimnu[" Vim syntax file " Language: Zimbu " Maintainer: Bram Moolenaar " Last Change: 2014 Nov 23 if exists("b:current_syntax") finish endif syn include @Ccode syntax/c.vim syn keyword zimbuTodo TODO FIXME XXX contained syn match zimbuNoBar "|" contained syn match zimbuParam "|[^| ]\+|" contained contains=zimbuNoBar syn match zimbuNoBacktick "`" contained syn match zimbuCode "`[^`]\+`" contained contains=zimbuNoBacktick syn match zimbuComment "#.*$" contains=zimbuTodo,zimbuParam,zimbuCode,@Spell syn match zimbuComment "/\*.\{-}\*/" contains=zimbuTodo,zimbuParam,zimbuCode,@Spell syn match zimbuChar "'\\\=.'" syn keyword zimbuBasicType bool status syn keyword zimbuBasicType int1 int2 int3 int4 int5 int6 int7 syn keyword zimbuBasicType int9 int10 int11 int12 int13 int14 int15 syn keyword zimbuBasicType int int8 int16 int32 int64 bigInt syn keyword zimbuBasicType nat nat8 byte nat16 nat32 nat64 bigNat syn keyword zimbuBasicType nat1 nat2 nat3 nat4 nat5 nat6 nat7 syn keyword zimbuBasicType nat9 nat10 nat11 nat12 nat13 nat14 nat15 syn keyword zimbuBasicType float float32 float64 float80 float128 syn keyword zimbuBasicType fixed1 fixed2 fixed3 fixed4 fixed5 fixed6 syn keyword zimbuBasicType fixed7 fixed8 fixed9 fixed10 fixed11 fixed12 syn keyword zimbuBasicType fixed13 fixed14 fixed15 syn keyword zimbuCompType string varString syn keyword zimbuCompType byteString varByteString syn keyword zimbuCompType tuple array list dict dictList set callback syn keyword zimbuCompType sortedList multiDict multiDictList multiSet syn keyword zimbuCompType complex complex32 complex64 complex80 complex128 syn keyword zimbuCompType proc func def thread evalThread lock cond pipe syn keyword zimbuType VAR dyn type USE GET syn match zimbuType "IO.File" syn match zimbuType "IO.Stat" syn keyword zimbuStatement IF ELSE ELSEIF IFNIL WHILE REPEAT FOR IN TO STEP syn keyword zimbuStatement DO UNTIL SWITCH WITH syn keyword zimbuStatement TRY CATCH FINALLY syn keyword zimbuStatement GENERATE_IF GENERATE_ELSE GENERATE_ELSEIF syn keyword zimbuStatement GENERATE_ERROR syn keyword zimbuStatement BUILD_IF BUILD_ELSE BUILD_ELSEIF syn keyword zimbuStatement CASE DEFAULT FINAL ABSTRACT VIRTUAL DEFINE REPLACE syn keyword zimbuStatement IMPLEMENTS EXTENDS PARENT LOCAL syn keyword zimbuStatement PART ALIAS TYPE CONNECT WRAP syn keyword zimbuStatement BREAK CONTINUE PROCEED syn keyword zimbuStatement RETURN EXIT THROW DEFER syn keyword zimbuStatement IMPORT AS OPTIONS MAIN syn keyword zimbuStatement INTERFACE PIECE INCLUDE MODULE ENUM BITS syn keyword zimbuStatement SHARED STATIC syn keyword zimbuStatement LAMBDA syn match zimbuStatement "\<\(FUNC\|PROC\|DEF\)\>" syn match zimbuStatement "\" syn match zimbuStatement "}" syn match zimbuAttribute "@backtrace=no\>" syn match zimbuAttribute "@backtrace=yes\>" syn match zimbuAttribute "@abstract\>" syn match zimbuAttribute "@earlyInit\>" syn match zimbuAttribute "@default\>" syn match zimbuAttribute "@define\>" syn match zimbuAttribute "@replace\>" syn match zimbuAttribute "@final\>" syn match zimbuAttribute "@primitive\>" syn match zimbuAttribute "@notOnExit\>" syn match zimbuAttribute "@private\>" syn match zimbuAttribute "@protected\>" syn match zimbuAttribute "@public\>" syn match zimbuAttribute "@local\>" syn match zimbuAttribute "@file\>" syn match zimbuAttribute "@directory\>" syn match zimbuAttribute "@read=private\>" syn match zimbuAttribute "@read=protected\>" syn match zimbuAttribute "@read=public\>" syn match zimbuAttribute "@read=file\>" syn match zimbuAttribute "@read=directory\>" syn match zimbuAttribute "@items=private\>" syn match zimbuAttribute "@items=protected\>" syn match zimbuAttribute "@items=public\>" syn match zimbuAttribute "@items=file\>" syn match zimbuAttribute "@items=directory\>" syn keyword zimbuMethod NEW EQUAL COPY COMPARE SIZE GET SET INIT EARLYINIT syn keyword zimbuOperator IS ISNOT ISA ISNOTA syn keyword zimbuModule ARG CHECK E GC IO LOG PROTO SYS HTTP ZC ZWT T TIME THREAD syn match zimbuImport "\.\zsPROTO" syn match zimbuImport "\.\zsCHEADER" "syn match zimbuString +"\([^"\\]\|\\.\)*\("\|$\)+ contains=zimbuStringExpr syn region zimbuString start=+"+ skip=+[^"\\]\|\\.+ end=+"\|$+ contains=zimbuStringExpr syn match zimbuString +R"\([^"]\|""\)*\("\|$\)+ syn region zimbuLongString start=+''"+ end=+"''+ syn match zimbuStringExpr +\\([^)]*)+hs=s+2,he=e-1 contained contains=zimbuString,zimbuParenPairOuter syn region zimbuParenPairOuter start=+(+ms=s+1 end=+)+me=e-1 contained contains=zimbuString,zimbuParenPair syn region zimbuParenPair start=+(+ end=+)+ contained contains=zimbuString,zimbuParenPair syn keyword zimbuFixed TRUE FALSE NIL THIS THISTYPE FAIL OK syn keyword zimbuError NULL " trailing whitespace syn match zimbuSpaceError display excludenl "\S\s\+$"ms=s+1 " mixed tabs and spaces syn match zimbuSpaceError display " \+\t" syn match zimbuSpaceError display "\t\+ " syn match zimbuUses contained "\ " Previous version: Sams Ricahrd " Last Change: 2015 Feb 24 " Each record (line) is built as follows: " " field digits states " " +----------+ " | start | 1 (':') hexRecStart " +----------+ " | count | 2 hexDataByteCount " +----------+ " | address | 4 hexNoAddress, hexDataAddress, (hexAddressFieldUnknown) " +----------+ " | type | 2 hexRecType, (hexRecTypeUnknown) " +----------+ " | data | 0..510 hexDataOdd, hexDataEven, hexExtendedAddress, hexStartAddress, (hexDataFieldUnknown, hexDataUnexpected) " +----------+ " | checksum | 2 hexChecksum " +----------+ " " States in parentheses in the upper format description indicate that they " should not appear in a valid file. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn match hexRecStart "^:" syn match hexDataByteCount "^:[0-9a-fA-F]\{2}" contains=hexRecStart nextgroup=hexAddress syn match hexAddress "[0-9a-fA-F]\{4}" transparent contained nextgroup=hexRecTypeUnknown,hexRecType " The address field groups include the record type field in the last 2 " characters, the proper match for highlighting follows below. syn match hexAddressFieldUnknown "^:[0-9a-fA-F]\{8}" contains=hexDataByteCount nextgroup=hexDataFieldUnknown,hexChecksum syn match hexDataAddress "^:[0-9a-fA-F]\{6}00" contains=hexDataByteCount nextgroup=hexDataOdd,hexChecksum syn match hexNoAddress "^:[0-9a-fA-F]\{6}01" contains=hexDataByteCount nextgroup=hexDataUnexpected,hexChecksum syn match hexNoAddress "^:[0-9a-fA-F]\{6}0[24]" contains=hexDataByteCount nextgroup=hexExtendedAddress syn match hexNoAddress "^:[0-9a-fA-F]\{6}0[35]" contains=hexDataByteCount nextgroup=hexStartAddress syn match hexRecTypeUnknown "[0-9a-fA-F]\{2}" contained syn match hexRecType "0[0-5]" contained syn match hexDataFieldUnknown "[0-9a-fA-F]\{2}" contained nextgroup=hexDataFieldUnknown,hexChecksum " alternating highlight per byte for easier reading syn match hexDataOdd "[0-9a-fA-F]\{2}" contained nextgroup=hexDataEven,hexChecksum syn match hexDataEven "[0-9a-fA-F]\{2}" contained nextgroup=hexDataOdd,hexChecksum " data bytes which should not exist syn match hexDataUnexpected "[0-9a-fA-F]\{2}" contained nextgroup=hexDataUnexpected,hexChecksum " Data digit pair regex usage also results in only highlighting the checksum " if the number of data characters is even. " special data fields syn match hexExtendedAddress "[0-9a-fA-F]\{4}" contained nextgroup=hexDataUnexpected,hexChecksum syn match hexStartAddress "[0-9a-fA-F]\{8}" contained nextgroup=hexDataUnexpected,hexChecksum syn match hexChecksum "[0-9a-fA-F]\{2}$" contained " Folding Data Records below an Extended Segment/Linear Address Record syn region hexExtAdrBlock start="^:[0-9a-fA-F]\{7}[24]" skip="^:[0-9a-fA-F]\{7}0" end="^:"me=s-1 fold transparent " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overridden later hi def link hexRecStart hexRecType hi def link hexDataByteCount Constant hi def hexAddressFieldUnknown term=italic cterm=italic gui=italic hi def link hexDataAddress Comment hi def link hexNoAddress DiffAdd hi def link hexRecTypeUnknown hexRecType hi def link hexRecType WarningMsg hi def hexDataFieldUnknown term=italic cterm=italic gui=italic hi def hexDataOdd term=bold cterm=bold gui=bold hi def hexDataEven term=NONE cterm=NONE gui=NONE hi def link hexDataUnexpected Error hi def link hexExtendedAddress hexDataAddress hi def link hexStartAddress hexDataAddress hi def link hexChecksum DiffChange let b:current_syntax = "hex" " vim: ts=8 PK!pO))vim80/syntax/forth.vimnu[" Vim syntax file " Language: FORTH " Current Maintainer: Johan Kotlinski " Previous Maintainer: Christian V. J. Brssow " Last Change: 2018-03-29 " Filenames: *.fs,*.ft " URL: https://github.com/jkotlinski/forth.vim " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " Synchronization method syn sync ccomment syn sync maxlines=200 " I use gforth, so I set this to case ignore syn case ignore " Some special, non-FORTH keywords syn keyword forthTodo contained TODO FIXME XXX syn match forthTodo contained 'Copyright\(\s([Cc])\)\=\(\s[0-9]\{2,4}\)\=' " Characters allowed in keywords " I don't know if 128-255 are allowed in ANS-FORTH setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255 " when wanted, highlight trailing white space if exists("forth_space_errors") if !exists("forth_no_trail_space_error") syn match forthSpaceError display excludenl "\s\+$" endif if !exists("forth_no_tab_space_error") syn match forthSpaceError display " \+\t"me=e-1 endif endif " Keywords " basic mathematical and logical operators syn keyword forthOperators + - * / MOD /MOD NEGATE ABS MIN MAX syn keyword forthOperators AND OR XOR NOT LSHIFT RSHIFT INVERT 2* 2/ 1+ syn keyword forthOperators 1- 2+ 2- 8* UNDER+ syn keyword forthOperators M+ */ */MOD M* UM* M*/ UM/MOD FM/MOD SM/REM syn keyword forthOperators D+ D- DNEGATE DABS DMIN DMAX D2* D2/ syn keyword forthOperators F+ F- F* F/ FNEGATE FABS FMAX FMIN FLOOR FROUND syn keyword forthOperators F** FSQRT FEXP FEXPM1 FLN FLNP1 FLOG FALOG FSIN syn keyword forthOperators FCOS FSINCOS FTAN FASIN FACOS FATAN FATAN2 FSINH syn keyword forthOperators FCOSH FTANH FASINH FACOSH FATANH F2* F2/ 1/F syn keyword forthOperators F~REL F~ABS F~ syn keyword forthOperators 0< 0<= 0<> 0= 0> 0>= < <= <> = > >= U< U<= syn keyword forthOperators U> U>= D0< D0<= D0<> D0= D0> D0>= D< D<= D<> syn keyword forthOperators D= D> D>= DU< DU<= DU> DU>= WITHIN ?NEGATE syn keyword forthOperators ?DNEGATE TRUE FALSE " various words that take an input and do something with it syn keyword forthFunction . U. .R U.R " stack manipulations syn keyword forthStack DROP NIP DUP OVER TUCK SWAP ROT -ROT ?DUP PICK ROLL syn keyword forthStack 2DROP 2NIP 2DUP 2OVER 2TUCK 2SWAP 2ROT 2-ROT syn keyword forthStack 3DUP 4DUP 5DUP 3DROP 4DROP 5DROP 8DROP 4SWAP 4ROT syn keyword forthStack 4-ROT 4TUCK 8SWAP 8DUP syn keyword forthRStack >R R> R@ RDROP 2>R 2R> 2R@ 2RDROP syn keyword forthRstack 4>R 4R> 4R@ 4RDROP syn keyword forthFStack FDROP FNIP FDUP FOVER FTUCK FSWAP FROT " stack pointer manipulations syn keyword forthSP SP@ SP! FP@ FP! RP@ RP! LP@ LP! DEPTH " address operations syn keyword forthMemory @ ! +! C@ C! 2@ 2! F@ F! SF@ SF! DF@ DF! syn keyword forthAdrArith CHARS CHAR+ CELLS CELL+ CELL ALIGN ALIGNED FLOATS syn keyword forthAdrArith FLOAT+ FLOAT FALIGN FALIGNED SFLOATS SFLOAT+ syn keyword forthAdrArith SFALIGN SFALIGNED DFLOATS DFLOAT+ DFALIGN DFALIGNED syn keyword forthAdrArith MAXALIGN MAXALIGNED CFALIGN CFALIGNED syn keyword forthAdrArith ADDRESS-UNIT-BITS ALLOT ALLOCATE HERE syn keyword forthMemBlks MOVE ERASE CMOVE CMOVE> FILL BLANK UNUSED " conditionals syn keyword forthCond IF ELSE ENDIF THEN CASE OF ENDOF ENDCASE ?DUP-IF syn keyword forthCond ?DUP-0=-IF AHEAD CS-PICK CS-ROLL CATCH THROW WITHIN " iterations syn keyword forthLoop BEGIN WHILE REPEAT UNTIL AGAIN syn keyword forthLoop ?DO LOOP I J K +DO U+DO -DO U-DO DO +LOOP -LOOP syn keyword forthLoop UNLOOP LEAVE ?LEAVE EXIT DONE FOR NEXT RECURSE " new words syn match forthClassDef '\<:class\s*[^ \t]\+\>' syn match forthObjectDef '\<:object\s*[^ \t]\+\>' syn match forthColonDef '\<:m\?\s*[^ \t]\+\>' syn keyword forthEndOfColonDef ; ;M ;m syn keyword forthEndOfClassDef ;class syn keyword forthEndOfObjectDef ;object syn keyword forthDefine CONSTANT 2CONSTANT FCONSTANT VARIABLE 2VARIABLE syn keyword forthDefine FVARIABLE CREATE USER VALUE TO DEFER IS DOES> IMMEDIATE syn keyword forthDefine COMPILE-ONLY COMPILE RESTRICT INTERPRET POSTPONE EXECUTE syn keyword forthDefine LITERAL CREATE-INTERPRET/COMPILE INTERPRETATION> syn keyword forthDefine INT NAME?INT NAME>COMP syn keyword forthDefine NAME>STRING STATE C; CVARIABLE BUFFER: MARKER syn keyword forthDefine , 2, F, C, COMPILE, syn match forthDefine "\[IFDEF]" syn match forthDefine "\[IFUNDEF]" syn match forthDefine "\[THEN]" syn match forthDefine "\[ENDIF]" syn match forthDefine "\[ELSE]" syn match forthDefine "\[?DO]" syn match forthDefine "\[DO]" syn match forthDefine "\[LOOP]" syn match forthDefine "\[+LOOP]" syn match forthDefine "\[NEXT]" syn match forthDefine "\[BEGIN]" syn match forthDefine "\[UNTIL]" syn match forthDefine "\[AGAIN]" syn match forthDefine "\[WHILE]" syn match forthDefine "\[REPEAT]" syn match forthDefine "\[COMP']" syn match forthDefine "'" syn match forthDefine '\<\[\>' syn match forthDefine "\[']" syn match forthDefine '\[COMPILE]' syn match forthDefine '\[CHAR]' " debugging syn keyword forthDebug PRINTDEBUGDATA PRINTDEBUGLINE syn match forthDebug "\<\~\~\>" " Assembler syn keyword forthAssembler ASSEMBLER CODE END-CODE ;CODE FLUSH-ICACHE C, " basic character operations syn keyword forthCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY syn keyword forthCharOps KEY? TIB CR BL COUNT SPACE SPACES " recognize 'char (' or '[char] (' correctly, so it doesn't " highlight everything after the paren as a comment till a closing ')' syn match forthCharOps '\ #>> #S (NUMBER) (NUMBER?) CONVERT D>F syn keyword forthConversion D>S DIGIT DPL F>D HLD HOLD NUMBER S>D SIGN >NUMBER syn keyword forthConversion F>S S>F HOLDS " interpreter, wordbook, compiler syn keyword forthForth (LOCAL) BYE COLD ABORT >BODY >NEXT >LINK CFA >VIEW HERE syn keyword forthForth PAD WORDS VIEW VIEW> N>LINK NAME> LINK> L>NAME FORGET syn keyword forthForth BODY> ASSERT( ASSERT0( ASSERT1( ASSERT2( ASSERT3( ) syn keyword forthForth >IN ACCEPT ENVIRONMENT? EVALUATE QUIT SOURCE ACTION-OF syn keyword forthForth DEFER! DEFER@ PARSE PARSE-NAME REFILL RESTORE-INPUT syn keyword forthForth SAVE-INPUT SOURCE-ID syn region forthForth start=+ABORT"\s+ skip=+\\"+ end=+"+ " vocabularies syn keyword forthVocs ONLY FORTH ALSO ROOT SEAL VOCS ORDER CONTEXT #VOCS syn keyword forthVocs VOCABULARY DEFINITIONS " File keywords syn keyword forthFileMode R/O R/W W/O BIN syn keyword forthFileWords OPEN-FILE CREATE-FILE CLOSE-FILE DELETE-FILE syn keyword forthFileWords RENAME-FILE READ-FILE READ-LINE KEY-FILE syn keyword forthFileWords KEY?-FILE WRITE-FILE WRITE-LINE EMIT-FILE syn keyword forthFileWords FLUSH-FILE FILE-STATUS FILE-POSITION syn keyword forthFileWords REPOSITION-FILE FILE-SIZE RESIZE-FILE syn keyword forthFileWords SLURP-FILE SLURP-FID STDIN STDOUT STDERR syn keyword forthFileWords INCLUDE-FILE INCLUDED REQUIRED syn keyword forthBlocks OPEN-BLOCKS USE LOAD --> BLOCK-OFFSET syn keyword forthBlocks GET-BLOCK-FID BLOCK-POSITION LIST SCR BLOCK syn keyword forthBlocks BUFER EMPTY-BUFFERS EMPTY-BUFFER UPDATE UPDATED? syn keyword forthBlocks SAVE-BUFFERS SAVE-BUFFER FLUSH THRU +LOAD +THRU syn keyword forthBlocks BLOCK-INCLUDED BLK " numbers syn keyword forthMath DECIMAL HEX BASE syn match forthInteger '\<-\=[0-9]\+.\=\>' syn match forthInteger '\<&-\=[0-9]\+.\=\>' " recognize hex and binary numbers, the '$' and '%' notation is for gforth syn match forthInteger '\<\$\x*\x\+\>' " *1* --- dont't mess syn match forthInteger '\<\x*\d\x*\>' " *2* --- this order! syn match forthInteger '\<%[0-1]*[0-1]\+\>' syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe]\d\+\>' syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe][-+]\d\+\>' " XXX If you find this overkill you can remove it. this has to come after the " highlighting for numbers otherwise it has no effect. syn region forthComment start='0 \[if\]' end='\[endif\]' end='\[then\]' contains=forthTodo " Strings syn region forthString start=+\.*\"+ end=+"+ end=+$+ " XXX syn region forthString start=+s\"+ end=+"+ end=+$+ syn region forthString start=+s\\\"+ end=+"+ end=+$+ syn region forthString start=+c\"+ end=+"+ end=+$+ " Comments syn match forthComment '\\\s.*$' contains=forthTodo,forthSpaceError syn region forthComment start='\\S\s' end='.*' contains=forthTodo,forthSpaceError syn match forthComment '\.(\s[^)]*)' contains=forthTodo,forthSpaceError syn region forthComment start='\(^\|\s\)\zs(\s' skip='\\)' end=')' contains=forthTodo,forthSpaceError syn region forthComment start='/\*' end='\*/' contains=forthTodo,forthSpaceError " Include files syn match forthInclude '^INCLUDE\s\+\k\+' syn match forthInclude '^REQUIRE\s\+\k\+' syn match forthInclude '^FLOAD\s\+' syn match forthInclude '^NEEDS\s\+' " Locals definitions syn region forthLocals start='{\s' start='{$' end='\s}' end='^}' syn match forthLocals '{ }' " otherwise, at least two spaces between syn region forthDeprecated start='locals|' end='|' " Define the default highlighting. hi def link forthTodo Todo hi def link forthOperators Operator hi def link forthMath Number hi def link forthInteger Number hi def link forthFloat Float hi def link forthStack Special hi def link forthRstack Special hi def link forthFStack Special hi def link forthSP Special hi def link forthMemory Function hi def link forthAdrArith Function hi def link forthMemBlks Function hi def link forthCond Conditional hi def link forthLoop Repeat hi def link forthColonDef Define hi def link forthEndOfColonDef Define hi def link forthDefine Define hi def link forthDebug Debug hi def link forthAssembler Include hi def link forthCharOps Character hi def link forthConversion String hi def link forthForth Statement hi def link forthVocs Statement hi def link forthString String hi def link forthComment Comment hi def link forthClassDef Define hi def link forthEndOfClassDef Define hi def link forthObjectDef Define hi def link forthEndOfObjectDef Define hi def link forthInclude Include hi def link forthLocals Type " nothing else uses type and locals must stand out hi def link forthDeprecated Error " if you must, change to Type hi def link forthFileMode Function hi def link forthFunction Function hi def link forthFileWords Statement hi def link forthBlocks Statement hi def link forthSpaceError Error let b:current_syntax = "forth" let &cpo = s:cpo_save unlet s:cpo_save " vim:ts=8:sw=4:nocindent:smartindent: PK!uvim80/syntax/calendar.vimnu[" Vim syntax file " Language: calendar(1) input file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword calendarTodo contained TODO FIXME XXX NOTE syn region calendarComment start='/\*' end='\*/' \ contains=calendarTodo,@Spell syn region calendarCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl \ end=+"+ end='$' contains=calendarSpecial syn match calendarSpecial display contained '\\\%(x\x\+\|\o\{1,3}\|.\|$\)' syn match calendarSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)" syn region calendarPreCondit start='^\s*#\s*\%(if\|ifdef\|ifndef\|elif\)\>' \ skip='\\$' end='$' \ contains=calendarComment,calendarCppString syn match calendarPreCondit display '^\s*#\s*\%(else\|endif\)\>' syn region calendarCppOut start='^\s*#\s*if\s\+0\+' end='.\@=\|$' \ contains=calendarCppOut2 syn region calendarCppOut2 contained start='0' \ end='^\s*#\s*\%(endif\|else\|elif\)\>' \ contains=calendarSpaceError,calendarCppSkip syn region calendarCppSkip contained \ start='^\s*#\s*\%(if\|ifdef\|ifndef\)\>' \ skip='\\$' end='^\s*#\s*endif\>' \ contains=calendarSpaceError,calendarCppSkip syn region calendarIncluded display contained start=+"+ skip=+\\\\\|\\"+ \ end=+"+ syn match calendarIncluded display contained '<[^>]*>' syn match calendarInclude display '^\s*#\s*include\>\s*["<]' \ contains=calendarIncluded syn cluster calendarPreProcGroup contains=calendarPreCondit,calendarIncluded, \ calendarInclude,calendarDefine, \ calendarCppOut,calendarCppOut2, \ calendarCppSkip,calendarString, \ calendarSpecial,calendarTodo syn region calendarDefine start='^\s*#\s*\%(define\|undef\)\>' \ skip='\\$' end='$' \ contains=ALLBUT,@calendarPreProcGroup syn region calendarPreProc start='^\s*#\s*\%(pragma\|line\|warning\|warn\|error\)\>' \ skip='\\$' end='$' keepend \ contains=ALLBUT,@calendarPreProcGroup syn keyword calendarKeyword CHARSET BODUN LANG syn case ignore syn keyword calendarKeyword Easter Pashka syn case match syn case ignore syn match calendarNumber display '\<\d\+\>' syn keyword calendarMonth Jan[uary] Feb[ruary] Mar[ch] Apr[il] May \ Jun[e] Jul[y] Aug[ust] Sep[tember] \ Oct[ober] Nov[ember] Dec[ember] syn match calendarMonth display '\<\%(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)\.' syn keyword calendarWeekday Mon[day] Tue[sday] Wed[nesday] Thu[rsday] syn keyword calendarWeekday Fri[day] Sat[urday] Sun[day] syn match calendarWeekday display '\<\%(Mon\|Tue\|Wed\|Thu\|Fri\|Sat\|Sun\)\.' \ nextgroup=calendarWeekdayMod syn match calendarWeekdayMod display '[+-]\d\+\>' syn case match syn match calendarTime display '\<\%([01]\=\d\|2[0-3]\):[0-5]\d\%(:[0-5]\d\)\=' syn match calendarTime display '\<\%(0\=[1-9]\|1[0-2]\):[0-5]\d\%(:[0-5]\d\)\=\s*[AaPp][Mm]' syn match calendarVariable '\*' if exists("c_minlines") let b:c_minlines = c_minlines else if !exists("c_no_if0") let b:c_minlines = 50 " #if 0 constructs can be long else let b:c_minlines = 15 " mostly for () constructs endif endif exec "syn sync ccomment calendarComment minlines=" . b:c_minlines hi def link calendarTodo Todo hi def link calendarComment Comment hi def link calendarCppString String hi def link calendarSpecial SpecialChar hi def link calendarPreCondit PreCondit hi def link calendarCppOut Comment hi def link calendarCppOut2 calendarCppOut hi def link calendarCppSkip calendarCppOut hi def link calendarIncluded String hi def link calendarInclude Include hi def link calendarDefine Macro hi def link calendarPreProc PreProc hi def link calendarKeyword Keyword hi def link calendarNumber Number hi def link calendarMonth String hi def link calendarWeekday String hi def link calendarWeekdayMod Special hi def link calendarTime Number hi def link calendarVariable Identifier let b:current_syntax = "calendar" let &cpo = s:cpo_save unlet s:cpo_save PK!Nxbvim80/syntax/papp.vimnu[" Vim syntax file for the "papp" file format (_p_erl _app_lication) " " Language: papp " Maintainer: Marc Lehmann " Last Change: 2009 Nov 11 " Filenames: *.papp *.pxml *.pxsl " URL: http://papp.plan9.de/ " You can set the "papp_include_html" variable so that html will be " rendered as such inside phtml sections (in case you actually put html " there - papp does not require that). Also, rendering html tends to keep " the clutter high on the screen - mixing three languages is difficult " enough(!). PS: it is also slow. " pod is, btw, allowed everywhere, which is actually wrong :( " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " source is basically xml, with included html (this is common) and perl bits runtime! syntax/xml.vim unlet b:current_syntax if exists("papp_include_html") syn include @PAppHtml syntax/html.vim unlet b:current_syntax syntax spell default " added by Bram endif syn include @PAppPerl syntax/perl.vim syn cluster xmlFoldCluster add=papp_perl,papp_xperl,papp_phtml,papp_pxml,papp_perlPOD " preprocessor commands syn region papp_prep matchgroup=papp_prep start="^#\s*\(if\|elsif\)" end="$" keepend contains=@perlExpr contained syn match papp_prep /^#\s*\(else\|endif\|??\).*$/ contained " translation entries syn region papp_gettext start=/__"/ end=/"/ contained contains=@papp_perlInterpDQ syn cluster PAppHtml add=papp_gettext,papp_prep " add special, paired xperl, perl and phtml tags syn region papp_perl matchgroup=xmlTag start="" end="" contains=papp_CDATAp,@PAppPerl keepend syn region papp_xperl matchgroup=xmlTag start="" end="" contains=papp_CDATAp,@PAppPerl keepend syn region papp_phtml matchgroup=xmlTag start="" end="" contains=papp_CDATAh,papp_ph_perl,papp_ph_html,papp_ph_hint,@PAppHtml keepend syn region papp_pxml matchgroup=xmlTag start="" end="" contains=papp_CDATAx,papp_ph_perl,papp_ph_xml,papp_ph_xint keepend syn region papp_perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,perlTodo keepend " cdata sections syn region papp_CDATAp matchgroup=xmlCdataDecl start="" contains=@PAppPerl contained keepend syn region papp_CDATAh matchgroup=xmlCdataDecl start="" contains=papp_ph_perl,papp_ph_html,papp_ph_hint,@PAppHtml contained keepend syn region papp_CDATAx matchgroup=xmlCdataDecl start="" contains=papp_ph_perl,papp_ph_xml,papp_ph_xint contained keepend syn region papp_ph_perl matchgroup=Delimiter start="<[:?]" end="[:?]>"me=e-2 nextgroup=papp_ph_html contains=@PAppPerl contained keepend syn region papp_ph_html matchgroup=Delimiter start=":>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains=@PAppHtml contained keepend syn region papp_ph_hint matchgroup=Delimiter start="?>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains=@perlInterpDQ,@PAppHtml contained keepend syn region papp_ph_xml matchgroup=Delimiter start=":>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains= contained keepend syn region papp_ph_xint matchgroup=Delimiter start="?>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains=@perlInterpDQ contained keepend " synchronization is horrors! syn sync clear syn sync match pappSync grouphere papp_CDATAh "" syn sync match pappSync grouphere papp_CDATAh "^# *\(if\|elsif\|else\|endif\)" syn sync match pappSync grouphere papp_CDATAh "" syn sync match pappSync grouphere NONE "" syn sync maxlines=300 syn sync minlines=5 " The default highlighting. hi def link papp_prep preCondit hi def link papp_gettext String let b:current_syntax = "papp" PK!Hvim80/syntax/sysctl.vimnu[" Vim syntax file " Language: sysctl.conf(5) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2011-05-02 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match sysctlBegin display '^' \ nextgroup=sysctlToken,sysctlComment skipwhite syn match sysctlToken contained display '[^=]\+' \ nextgroup=sysctlTokenEq skipwhite syn match sysctlTokenEq contained display '=' nextgroup=sysctlValue skipwhite syn region sysctlValue contained display oneline \ matchgroup=sysctlValue start='\S' \ matchgroup=Normal end='\s*$' syn keyword sysctlTodo contained TODO FIXME XXX NOTE syn region sysctlComment display oneline start='^\s*[#;]' end='$' \ contains=sysctlTodo,@Spell hi def link sysctlTodo Todo hi def link sysctlComment Comment hi def link sysctlToken Identifier hi def link sysctlTokenEq Operator hi def link sysctlValue String let b:current_syntax = "sysctl" let &cpo = s:cpo_save unlet s:cpo_save PK!)qvvvim80/syntax/xslt.vimnu[" Vim syntax file " Language: XSLT " Maintainer: Johannes Zellner " Last Change: Sun, 28 Oct 2001 21:22:24 +0100 " Filenames: *.xsl " $Id: xslt.vim,v 1.1 2004/06/13 15:52:10 vimboss Exp $ " REFERENCES: " [1] http://www.w3.org/TR/xslt " " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif runtime syntax/xml.vim syn cluster xmlTagHook add=xslElement syn case match syn match xslElement '\%(xsl:\)\@<=apply-imports' syn match xslElement '\%(xsl:\)\@<=apply-templates' syn match xslElement '\%(xsl:\)\@<=attribute' syn match xslElement '\%(xsl:\)\@<=attribute-set' syn match xslElement '\%(xsl:\)\@<=call-template' syn match xslElement '\%(xsl:\)\@<=choose' syn match xslElement '\%(xsl:\)\@<=comment' syn match xslElement '\%(xsl:\)\@<=copy' syn match xslElement '\%(xsl:\)\@<=copy-of' syn match xslElement '\%(xsl:\)\@<=decimal-format' syn match xslElement '\%(xsl:\)\@<=document' syn match xslElement '\%(xsl:\)\@<=element' syn match xslElement '\%(xsl:\)\@<=fallback' syn match xslElement '\%(xsl:\)\@<=for-each' syn match xslElement '\%(xsl:\)\@<=if' syn match xslElement '\%(xsl:\)\@<=include' syn match xslElement '\%(xsl:\)\@<=import' syn match xslElement '\%(xsl:\)\@<=key' syn match xslElement '\%(xsl:\)\@<=message' syn match xslElement '\%(xsl:\)\@<=namespace-alias' syn match xslElement '\%(xsl:\)\@<=number' syn match xslElement '\%(xsl:\)\@<=otherwise' syn match xslElement '\%(xsl:\)\@<=output' syn match xslElement '\%(xsl:\)\@<=param' syn match xslElement '\%(xsl:\)\@<=processing-instruction' syn match xslElement '\%(xsl:\)\@<=preserve-space' syn match xslElement '\%(xsl:\)\@<=script' syn match xslElement '\%(xsl:\)\@<=sort' syn match xslElement '\%(xsl:\)\@<=strip-space' syn match xslElement '\%(xsl:\)\@<=stylesheet' syn match xslElement '\%(xsl:\)\@<=template' syn match xslElement '\%(xsl:\)\@<=transform' syn match xslElement '\%(xsl:\)\@<=text' syn match xslElement '\%(xsl:\)\@<=value-of' syn match xslElement '\%(xsl:\)\@<=variable' syn match xslElement '\%(xsl:\)\@<=when' syn match xslElement '\%(xsl:\)\@<=with-param' hi def link xslElement Statement " vim: ts=8 PK!/((vim80/syntax/tasm.vimnu[" Vim syntax file " Language: TASM: turbo assembler by Borland " Maintaner: FooLman of United Force " Last Change: 2012 Feb 03 by Thilo Six " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn match tasmLabel "^[\ \t]*[@a-z_$][a-z0-9_$@]*\ *:" syn keyword tasmDirective ALIAS ALIGN ARG ASSUME %BIN CATSRT CODESEG syn match tasmDirective "\<\(byte\|word\|dword\|qword\)\ ptr\>" " CALL extended syntax syn keyword tasmDirective COMM %CONDS CONST %CREF %CREFALL %CREFREF syn keyword tasmDirective %CREFUREF %CTLS DATASEG DB DD %DEPTH DF DISPLAY syn keyword tasmDirective DOSSEG DP DQ DT DW ELSE EMUL END ENDIF " IF XXXX syn keyword tasmDirective ENDM ENDP ENDS ENUM EQU ERR EVEN EVENDATA EXITCODE syn keyword tasmDirective EXITM EXTRN FARDATA FASTIMUL FLIPFLAG GETFIELD GLOBAL syn keyword tasmDirective GOTO GROUP IDEAL %INCL INCLUDE INCLUDELIB INSTR IRP "JMP syn keyword tasmDirective IRPC JUMPS LABEL LARGESTACK %LINUM %LIST LOCAL syn keyword tasmDirective LOCALS MACRO %MACS MASKFLAG MASM MASM51 MODEL syn keyword tasmDirective MULTERRS NAME %NEWPAGE %NOCONDS %NOCREF %NOCTLS syn keyword tasmDirective NOEMUL %NOINCL NOJUMPS %NOLIST NOLOCALS %NOMACS syn keyword tasmDirective NOMASM51 NOMULTERRS NOSMART %NOSYMS %NOTRUNC NOWARN syn keyword tasmDirective %PAGESIZE %PCNT PNO87 %POPLCTL POPSTATE PROC PROCDESC syn keyword tasmDirective PROCTYPE PUBLIC PUBLICDLL PURGE %PUSHCTL PUSHSTATE "rept, ret syn keyword tasmDirective QUIRKS RADIX RECORD RETCODE SEGMENT SETFIELD syn keyword tasmDirective SETFLAG SIZESTR SMALLSTACK SMART STACK STARTUPCODE syn keyword tasmDirective STRUC SUBSTR %SUBTTL %SYMS TABLE %TABSIZE TBLINIT syn keyword tasmDirective TBLINST TBLPTR TESTFLAG %TEXT %TITLE %TRUNC TYPEDEF syn keyword tasmDirective UDATASEG UFARDATA UNION USES VERSION WAR WHILE ?DEBUG syn keyword tasmInstruction AAA AAD AAM AAS ADC ADD AND ARPL BOUND BSF BSR syn keyword tasmInstruction BSWAP BT BTC BTR BTS CALL CBW CLC CLD CLI CLTS syn keyword tasmInstruction CMC CMP CMPXCHG CMPXCHG8B CPUID CWD CDQ CWDE syn keyword tasmInstruction DAA DAS DEC DIV ENTER RETN RETF F2XM1 syn keyword tasmCoprocInstr FABS FADD FADDP FBLD FBSTP FCHG FCOM FCOM2 FCOMI syn keyword tasmCoprocInstr FCOMIP FCOMP FCOMP3 FCOMP5 FCOMPP FCOS FDECSTP syn keyword tasmCoprocInstr FDISI FDIV FDIVP FDIVR FENI FFREE FFREEP FIADD syn keyword tasmCoprocInstr FICOM FICOMP FIDIV FIDIVR FILD FIMUL FINIT FINCSTP syn keyword tasmCoprocInstr FIST FISTP FISUB FISUBR FLD FLD1 FLDCW FLDENV syn keyword tasmCoprocInstr FLDL2E FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP syn keyword tasmCoprocInstr FNCLEX FNINIT FNOP FNSAVE FNSTCW FNSTENV FNSTSW syn keyword tasmCoprocInstr FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSCALE syn keyword tasmCoprocInstr FSETPM FSIN FSINCOM FSQRT FST FSTP FSTP1 FSTP8 syn keyword tasmCoprocInstr FSTP9 FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI syn keyword tasmCoprocInstr FUCOMPP FWAIT FXAM FXCH FXCH4 FXCH7 FXTRACT FYL2X syn keyword tasmCoprocInstr FYL2XP1 FSTCW FCHS FSINCOS syn keyword tasmInstruction IDIV IMUL IN INC INT INTO INVD INVLPG IRET JMP syn keyword tasmInstruction LAHF LAR LDS LEA LEAVE LES LFS LGDT LGS LIDT LLDT syn keyword tasmInstruction LMSW LOCK LODSB LSL LSS LTR MOV MOVSX MOVZX MUL syn keyword tasmInstruction NEG NOP NOT OR OUT POP POPA POPAD POPF POPFD PUSH syn keyword tasmInstruction PUSHA PUSHAD PUSHF PUSHFD RCL RCR RDMSR RDPMC RDTSC syn keyword tasmInstruction REP RET ROL ROR RSM SAHF SAR SBB SGDT SHL SAL SHLD syn keyword tasmInstruction SHR SHRD SIDT SMSW STC STD STI STR SUB TEST VERR syn keyword tasmInstruction VERW WBINVD WRMSR XADD XCHG XLAT XOR syn keyword tasmMMXinst EMMS MOVD MOVQ PACKSSDW PACKSSWB PACKUSWB PADDB syn keyword tasmMMXinst PADDD PADDSB PADDSB PADDSW PADDUSB PADDUSW PADDW syn keyword tasmMMXinst PAND PANDN PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD syn keyword tasmMMXinst PCMPGTW PMADDWD PMULHW PMULLW POR PSLLD PSLLQ syn keyword tasmMMXinst PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW PSUBB PSUBD syn keyword tasmMMXinst PSUBSB PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW syn keyword tasmMMXinst PUNPCKHBQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD syn keyword tasmMMXinst PXOR "FCMOV syn match tasmInstruction "\<\(CMPS\|MOVS\|OUTS\|SCAS\|STOS\|LODS\|INS\)[BWD]" syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABCGLESXZ]\>" syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABGL]E\>" syn match tasmInstruction "\<\(LOOP\|REP\)N\=[EZ]\=\>" syn match tasmRegister "\<[A-D][LH]\>" syn match tasmRegister "\" syn match tasmRegister "\<[C-GS]S\>" syn region tasmComment start=";" end="$" "HACK! comment ? ... selection syn region tasmComment start="comment \+\$" end="\$" syn region tasmComment start="comment \+\~" end="\~" syn region tasmComment start="comment \+#" end="#" syn region tasmString start="'" end="'" syn region tasmString start='"' end='"' syn match tasmDec "\<-\=[0-9]\+\.\=[0-9]*\>" syn match tasmHex "\<[0-9][0-9A-F]*H\>" syn match tasmOct "\<[0-7]\+O\>" syn match tasmBin "\<[01]\+B\>" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link tasmString String hi def link tasmDec Number hi def link tasmHex Number hi def link tasmOct Number hi def link tasmBin Number hi def link tasmInstruction Keyword hi def link tasmCoprocInstr Keyword hi def link tasmMMXInst Keyword hi def link tasmDirective PreProc hi def link tasmRegister Identifier hi def link tasmProctype PreProc hi def link tasmComment Comment hi def link tasmLabel Label let b:curret_syntax = "tasm" let &cpo = s:cpo_save unlet s:cpo_save PK!Nzy vim80/syntax/obj.vimnu[" Vim syntax file " Language: 3D wavefront's obj file " Maintainer: Vincent Berthoux " File Types: .obj (used in 3D) " Last Change: 2010 May 18 " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn match objError "^\a\+" syn match objKeywords "^cstype\s" syn match objKeywords "^ctech\s" syn match objKeywords "^stech\s" syn match objKeywords "^deg\s" syn match objKeywords "^curv\(2\?\)\s" syn match objKeywords "^parm\s" syn match objKeywords "^surf\s" syn match objKeywords "^end\s" syn match objKeywords "^bzp\s" syn match objKeywords "^bsp\s" syn match objKeywords "^res\s" syn match objKeywords "^cdc\s" syn match objKeywords "^con\s" syn match objKeywords "^shadow_obj\s" syn match objKeywords "^trace_obj\s" syn match objKeywords "^usemap\s" syn match objKeywords "^lod\s" syn match objKeywords "^maplib\s" syn match objKeywords "^d_interp\s" syn match objKeywords "^c_interp\s" syn match objKeywords "^bevel\s" syn match objKeywords "^mg\s" syn match objKeywords "^s\s" syn match objKeywords "^con\s" syn match objKeywords "^trim\s" syn match objKeywords "^hole\s" syn match objKeywords "^scrv\s" syn match objKeywords "^sp\s" syn match objKeywords "^step\s" syn match objKeywords "^bmat\s" syn match objKeywords "^csh\s" syn match objKeywords "^call\s" syn match objComment "^#.*" syn match objVertex "^v\s" syn match objFace "^f\s" syn match objVertice "^vt\s" syn match objNormale "^vn\s" syn match objGroup "^g\s.*" syn match objMaterial "^usemtl\s.*" syn match objInclude "^mtllib\s.*" syn match objFloat "-\?\d\+\.\d\+\(e\(+\|-\)\d\+\)\?" syn match objInt "\d\+" syn match objIndex "\d\+\/\d*\/\d*" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link objError Error hi def link objComment Comment hi def link objInclude PreProc hi def link objFloat Float hi def link objInt Number hi def link objGroup Structure hi def link objIndex Constant hi def link objMaterial Label hi def link objVertex Keyword hi def link objNormale Keyword hi def link objVertice Keyword hi def link objFace Keyword hi def link objKeywords Keyword let b:current_syntax = "obj" " vim: ts=8 PK!(@>>vim80/syntax/logtalk.vimnu[" Vim syntax file " " Language: Logtalk " Maintainer: Paulo Moura " Last Change: February 4, 2012 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " Logtalk is case sensitive: syn case match " Logtalk variables syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>" " Logtalk clause functor syn match logtalkOperator ":-" " Logtalk quoted atoms and strings syn region logtalkString start=+"+ skip=+\\"+ end=+"+ syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+ contains=logtalkEscapeSequence syn match logtalkEscapeSequence contained "\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)" " Logtalk message sending operators syn match logtalkOperator "::" syn match logtalkOperator ":" syn match logtalkOperator "\^\^" " Logtalk external call syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL " Logtalk opening entity directives syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment " Logtalk closing entity directives syn match logtalkCloseEntityDir ":- end_object\." syn match logtalkCloseEntityDir ":- end_protocol\." syn match logtalkCloseEntityDir ":- end_category\." " Logtalk entity relations syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="complements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained " Logtalk directives syn region logtalkDir matchgroup=logtalkDirTag start=":- if(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- elif(" matchgroup=logtalkDirTag end=")\." contains=ALL syn match logtalkDirTag ":- else\." syn match logtalkDirTag ":- endif\." syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- coinductive(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL syn match logtalkDirTag ":- dynamic\." syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_non_terminal(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- set_logtalk_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- synchronized(" matchgroup=logtalkDirTag end=")\." contains=ALL syn match logtalkDirTag ":- synchronized\." syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL syn match logtalkDirTag ":- threaded\." " Prolog directives syn region logtalkDir matchgroup=logtalkDirTag start=":- ensure_loaded(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- include(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- set_prolog_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL " Module directives syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- reexport(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL " Logtalk built-in predicates syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze(" syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze(" syn match logtalkBuiltIn "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkOperator "->" syn match logtalkKeyword "\" syn match logtalkOperator "@>=" " Term creation and decomposition syn match logtalkKeyword "\" " Arithemtic comparison syn match logtalkOperator "=:=" syn match logtalkOperator "=\\=" syn match logtalkOperator "<" syn match logtalkOperator "=<" syn match logtalkOperator ">" syn match logtalkOperator ">=" " Stream selection and control syn match logtalkKeyword "\<\(curren\|se\)t_\(in\|out\)put\ze(" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\" " Term input/output syn match logtalkKeyword "\" " Atomic term processing syn match logtalkKeyword "\" " Sorting syn match logtalkKeyword "\<\(key\)\?sort\ze(" " Evaluable functors syn match logtalkOperator "+" syn match logtalkOperator "-" syn match logtalkOperator "\*" syn match logtalkOperator "//" syn match logtalkOperator "/" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\>" syn match logtalkOperator "<<" syn match logtalkOperator "/\\" syn match logtalkOperator "\\/" syn match logtalkOperator "\\" " Logtalk list operator syn match logtalkOperator "|" " Logtalk existential quantifier operator syn match logtalkOperator "\^" " Logtalk numbers syn match logtalkNumber "\<\d\+\>" syn match logtalkNumber "\<\d\+\.\d\+\>" syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>" syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>" syn match logtalkNumber "\<0'.\|0''\|0'\"\>" syn match logtalkNumber "\<0b[0-1]\+\>" syn match logtalkNumber "\<0o\o\+\>" syn match logtalkNumber "\<0x\x\+\>" " Logtalk end-of-clause syn match logtalkOperator "\." " Logtalk comments syn region logtalkBlockComment start="/\*" end="\*/" fold syn match logtalkLineComment "%.*" syn cluster logtalkComment contains=logtalkBlockComment,logtalkLineComment " Logtalk conditional compilation folding syn region logtalkIfContainer transparent keepend extend start=":- if(" end=":- endif\." containedin=ALLBUT,@logtalkComment contains=NONE syn region logtalkIf transparent fold keepend start=":- if(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP syn region logtalkElseIf transparent fold keepend start=":- elif(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP syn region logtalkElse transparent fold keepend start=":- else\." end=":- endif\." contained containedin=logtalkIfContainer contains=TOP " Logtalk entity folding syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL syn sync ccomment logtalkBlockComment maxlines=50 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link logtalkBlockComment Comment hi def link logtalkLineComment Comment hi def link logtalkOpenEntityDir Normal hi def link logtalkOpenEntityDirTag PreProc hi def link logtalkIfContainer PreProc hi def link logtalkIf PreProc hi def link logtalkElseIf PreProc hi def link logtalkElse PreProc hi def link logtalkEntity Normal hi def link logtalkEntityRel Normal hi def link logtalkEntityRelTag PreProc hi def link logtalkCloseEntityDir PreProc hi def link logtalkDir Normal hi def link logtalkDirTag PreProc hi def link logtalkAtom String hi def link logtalkString String hi def link logtalkEscapeSequence SpecialChar hi def link logtalkNumber Number hi def link logtalkKeyword Keyword hi def link logtalkBuiltIn Keyword hi def link logtalkBuiltInMethod Keyword hi def link logtalkOperator Operator hi def link logtalkExtCall Normal hi def link logtalkExtCallTag Operator hi def link logtalkVariable Identifier let b:current_syntax = "logtalk" let &cpo = s:cpo_save unlet s:cpo_save PK! bvim80/syntax/sdl.vimnu[" Vim syntax file " Language: SDL " Maintainer: Michael Piefel " Last Change: 2 May 2001 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif if !exists("sdl_2000") syntax case ignore endif " A bunch of useful SDL keywords syn keyword sdlStatement task else nextstate syn keyword sdlStatement in out with from interface syn keyword sdlStatement to via env and use syn keyword sdlStatement process procedure block system service type syn keyword sdlStatement endprocess endprocedure endblock endsystem syn keyword sdlStatement package endpackage connection endconnection syn keyword sdlStatement channel endchannel connect syn keyword sdlStatement synonym dcl signal gate timer signallist signalset syn keyword sdlStatement create output set reset call syn keyword sdlStatement operators literals syn keyword sdlStatement active alternative any as atleast constants syn keyword sdlStatement default endalternative endmacro endoperator syn keyword sdlStatement endselect endsubstructure external syn keyword sdlStatement if then fi for import macro macrodefinition syn keyword sdlStatement macroid mod nameclass nodelay not operator or syn keyword sdlStatement parent provided referenced rem syn keyword sdlStatement select spelling substructure xor syn keyword sdlNewState state endstate syn keyword sdlInput input start stop return none save priority syn keyword sdlConditional decision enddecision join syn keyword sdlVirtual virtual redefined finalized adding inherits syn keyword sdlExported remote exported export if !exists("sdl_no_96") syn keyword sdlStatement all axioms constant endgenerator endrefinement endservice syn keyword sdlStatement error fpar generator literal map noequality ordering syn keyword sdlStatement refinement returns revealed reverse service signalroute syn keyword sdlStatement view viewed syn keyword sdlExported imported endif if exists("sdl_2000") syn keyword sdlStatement abstract aggregation association break choice composition syn keyword sdlStatement continue endmethod handle method syn keyword sdlStatement ordered private protected public syn keyword sdlException exceptionhandler endexceptionhandler onexception syn keyword sdlException catch new raise " The same in uppercase syn keyword sdlStatement TASK ELSE NEXTSTATE syn keyword sdlStatement IN OUT WITH FROM INTERFACE syn keyword sdlStatement TO VIA ENV AND USE syn keyword sdlStatement PROCESS PROCEDURE BLOCK SYSTEM SERVICE TYPE syn keyword sdlStatement ENDPROCESS ENDPROCEDURE ENDBLOCK ENDSYSTEM syn keyword sdlStatement PACKAGE ENDPACKAGE CONNECTION ENDCONNECTION syn keyword sdlStatement CHANNEL ENDCHANNEL CONNECT syn keyword sdlStatement SYNONYM DCL SIGNAL GATE TIMER SIGNALLIST SIGNALSET syn keyword sdlStatement CREATE OUTPUT SET RESET CALL syn keyword sdlStatement OPERATORS LITERALS syn keyword sdlStatement ACTIVE ALTERNATIVE ANY AS ATLEAST CONSTANTS syn keyword sdlStatement DEFAULT ENDALTERNATIVE ENDMACRO ENDOPERATOR syn keyword sdlStatement ENDSELECT ENDSUBSTRUCTURE EXTERNAL syn keyword sdlStatement IF THEN FI FOR IMPORT MACRO MACRODEFINITION syn keyword sdlStatement MACROID MOD NAMECLASS NODELAY NOT OPERATOR OR syn keyword sdlStatement PARENT PROVIDED REFERENCED REM syn keyword sdlStatement SELECT SPELLING SUBSTRUCTURE XOR syn keyword sdlNewState STATE ENDSTATE syn keyword sdlInput INPUT START STOP RETURN NONE SAVE PRIORITY syn keyword sdlConditional DECISION ENDDECISION JOIN syn keyword sdlVirtual VIRTUAL REDEFINED FINALIZED ADDING INHERITS syn keyword sdlExported REMOTE EXPORTED EXPORT syn keyword sdlStatement ABSTRACT AGGREGATION ASSOCIATION BREAK CHOICE COMPOSITION syn keyword sdlStatement CONTINUE ENDMETHOD ENDOBJECT ENDVALUE HANDLE METHOD OBJECT syn keyword sdlStatement ORDERED PRIVATE PROTECTED PUBLIC syn keyword sdlException EXCEPTIONHANDLER ENDEXCEPTIONHANDLER ONEXCEPTION syn keyword sdlException CATCH NEW RAISE endif " String and Character contstants " Highlight special characters (those which have a backslash) differently syn match sdlSpecial contained "\\\d\d\d\|\\." syn region sdlString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial syn region sdlString start=+'+ skip=+''+ end=+'+ " No, this doesn't happen, I just wanted to scare you. SDL really allows all " these characters for identifiers; fortunately, keywords manage without them. " set iskeyword=@,48-57,_,192-214,216-246,248-255,- syn region sdlComment start="/\*" end="\*/" syn region sdlComment start="comment" end=";" syn region sdlComment start="--" end="--\|$" syn match sdlCommentError "\*/" syn keyword sdlOperator present syn keyword sdlType integer real natural duration pid boolean time syn keyword sdlType character charstring ia5string syn keyword sdlType self now sender offspring syn keyword sdlStructure asntype endasntype syntype endsyntype struct if !exists("sdl_no_96") syn keyword sdlStructure newtype endnewtype endif if exists("sdl_2000") syn keyword sdlStructure object endobject value endvalue " The same in uppercase syn keyword sdlStructure OBJECT ENDOBJECT VALUE ENDVALUE syn keyword sdlOperator PRESENT syn keyword sdlType INTEGER NATURAL DURATION PID BOOLEAN TIME syn keyword sdlType CHARSTRING IA5STRING syn keyword sdlType SELF NOW SENDER OFFSPRING syn keyword sdlStructure ASNTYPE ENDASNTYPE SYNTYPE ENDSYNTYPE STRUCT endif " ASN.1 in SDL syn case match syn keyword sdlType SET OF BOOLEAN INTEGER REAL BIT OCTET syn keyword sdlType SEQUENCE CHOICE syn keyword sdlType STRING OBJECT IDENTIFIER NULL syn sync ccomment sdlComment " Define the default highlighting. " Only when an item doesn't have highlighting yet command -nargs=+ Hi hi def hi def link sdlException Label hi def link sdlConditional sdlStatement hi def link sdlVirtual sdlStatement hi def link sdlExported sdlFlag hi def link sdlCommentError sdlError hi def link sdlOperator Operator hi def link sdlStructure sdlType Hi sdlStatement term=bold ctermfg=4 guifg=Blue Hi sdlFlag term=bold ctermfg=4 guifg=Blue gui=italic Hi sdlNewState term=italic ctermfg=2 guifg=Magenta gui=underline Hi sdlInput term=bold guifg=Red hi def link sdlType Type hi def link sdlString String hi def link sdlComment Comment hi def link sdlSpecial Special hi def link sdlError Error delcommand Hi let b:current_syntax = "sdl" " vim: ts=8 PK!dzvim80/syntax/diva.vimnu[" Vim syntax file " Language: SKILL for Diva " Maintainer: Toby Schaffer " Last Change: 2001 May 09 " Comments: SKILL is a Lisp-like programming language for use in EDA " tools from Cadence Design Systems. It allows you to have " a programming environment within the Cadence environment " that gives you access to the complete tool set and design " database. These items are for Diva verification rules decks. " Don't remove any old syntax stuff hanging around! We need stuff " from skill.vim. if !exists("did_skill_syntax_inits") runtime! syntax/skill.vim endif syn keyword divaDRCKeywords area enc notch ovlp sep width syn keyword divaDRCKeywords app diffNet length lengtha lengthb syn keyword divaDRCKeywords notParallel only_perp opposite parallel syn keyword divaDRCKeywords sameNet shielded with_perp syn keyword divaDRCKeywords edge edgea edgeb fig figa figb syn keyword divaDRCKeywords normalGrow squareGrow message raw syn keyword divaMeasKeywords perimeter length bends_all bends_full syn keyword divaMeasKeywords bends_part corners_all corners_full syn keyword divaMeasKeywords corners_part angles_all angles_full syn keyword divaMeasKeywords angles_part fig_count butting coincident syn keyword divaMeasKeywords over not_over outside inside enclosing syn keyword divaMeasKeywords figure one_net two_net three_net grounded syn keyword divaMeasKeywords polarized limit keep ignore syn match divaCtrlFunctions "(ivIf\>"hs=s+1 syn match divaCtrlFunctions "\"hs=s+1 syn match divaCtrlFunctions "\"hs=s+1 syn match divaCtrlFunctions "\"hs=s+1 syn match divaCtrlFunctions "\"hs=s+1 syn match divaCtrlFunctions "\"hs=s+1 syn match divaExtFunctions "\"hs=s+1 syn match divaExtFunctions "\<\(save\|measure\|attach\|multiLevel\|calculate\)Parasitic("he=e-1 syn match divaExtFunctions "(\(calculate\|measure\)Parameter\>"hs=s+1 syn match divaExtFunctions "\<\(calculate\|measure\)Parameter("he=e-1 syn match divaExtFunctions "(measure\(Resistance\|Fringe\)\>"hs=s+1 syn match divaExtFunctions "\"hs=s+1 syn match divaExtFunctions "\"hs=s+1 syn match divaDRCFunctions "\"hs=s+1 syn match divaDRCFunctions "\"hs=s+1 syn match divaDRCFunctions "\"hs=s+1 syn match divaDRCFunctions "\"hs=s+1 syn match divaFunctions "\<\(drcExtract\|lvs\)Rules("he=e-1 syn match divaLayerFunctions "(saveDerived\>"hs=s+1 syn match divaLayerFunctions "\"hs=s+1 syn match divaLayerFunctions "\"hs=s+1 syn match divaChkFunctions "\"hs=s+1 syn match divaChkFunctions "\"hs=s+1 syn match divaLVSFunctions "\"hs=s+1 syn match divaLVSFunctions "\"hs=s+1 syn match divaLVSFunctions "\"hs=s+1 syn match divaLVSFunctions "\<\(permute\|prune\|remove\)Device("he=e-1 syn match divaGeomFunctions "(geom\u\a\+\(45\|90\)\=\>"hs=s+1 syn match divaGeomFunctions "\ " URL: http://www.ocaml.info/vim/syntax/lprolog.vim " Last Change: 2006 Feb 05 " 2001 Apr 26 - Upgraded for new Vim version " 2000 Jun 5 - Initial release " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Lambda Prolog is case sensitive. syn case match syn match lprologBrackErr "\]" syn match lprologParenErr ")" syn cluster lprologContained contains=lprologTodo,lprologModuleName,lprologTypeNames,lprologTypeName " Enclosing delimiters syn region lprologEncl transparent matchgroup=lprologKeyword start="(" matchgroup=lprologKeyword end=")" contains=ALLBUT,@lprologContained,lprologParenErr syn region lprologEncl transparent matchgroup=lprologKeyword start="\[" matchgroup=lprologKeyword end="\]" contains=ALLBUT,@lprologContained,lprologBrackErr " General identifiers syn match lprologIdentifier "\<\(\w\|[-+*/\\^<>=`'~?@#$&!_]\)*\>" syn match lprologVariable "\<\(\u\|_\)\(\w\|[-+*/\\^<>=`'~?@#$&!]\)*\>" syn match lprologOperator "/" " Comments syn region lprologComment start="/\*" end="\*/" contains=lprologComment,lprologTodo syn region lprologComment start="%" end="$" contains=lprologTodo syn keyword lprologTodo contained TODO FIXME XXX syn match lprologInteger "\<\d\+\>" syn match lprologReal "\<\(\d\+\)\=\.\d+\>" syn region lprologString start=+"+ skip=+\\\\\|\\"+ end=+"+ " Clause definitions syn region lprologClause start="^\w\+" end=":-\|\." " Modules syn region lprologModule matchgroup=lprologKeyword start="^\" matchgroup=lprologKeyword end="\." " Types syn match lprologKeyword "^\" skipwhite nextgroup=lprologTypeNames syn region lprologTypeNames matchgroup=lprologBraceErr start="\<\w\+\>" matchgroup=lprologKeyword end="\." contained contains=lprologTypeName,lprologOperator syn match lprologTypeName "\<\w\+\>" contained " Keywords syn keyword lprologKeyword end import accumulate accum_sig syn keyword lprologKeyword local localkind closed sig syn keyword lprologKeyword kind exportdef useonly syn keyword lprologKeyword infixl infixr infix prefix syn keyword lprologKeyword prefixr postfix postfixl syn keyword lprologSpecial pi sigma is true fail halt stop not " Operators syn match lprologSpecial ":-" syn match lprologSpecial "->" syn match lprologSpecial "=>" syn match lprologSpecial "\\" syn match lprologSpecial "!" syn match lprologSpecial "," syn match lprologSpecial ";" syn match lprologSpecial "&" syn match lprologOperator "+" syn match lprologOperator "-" syn match lprologOperator "*" syn match lprologOperator "\~" syn match lprologOperator "\^" syn match lprologOperator "<" syn match lprologOperator ">" syn match lprologOperator "=<" syn match lprologOperator ">=" syn match lprologOperator "::" syn match lprologOperator "=" syn match lprologOperator "\." syn match lprologOperator ":" syn match lprologOperator "|" syn match lprologCommentErr "\*/" syn sync minlines=50 syn sync maxlines=500 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link lprologComment Comment hi def link lprologTodo Todo hi def link lprologKeyword Keyword hi def link lprologSpecial Special hi def link lprologOperator Operator hi def link lprologIdentifier Normal hi def link lprologInteger Number hi def link lprologReal Number hi def link lprologString String hi def link lprologCommentErr Error hi def link lprologBrackErr Error hi def link lprologParenErr Error hi def link lprologModuleName Special hi def link lprologTypeName Identifier hi def link lprologVariable Keyword hi def link lprologAtom Normal hi def link lprologClause Type let b:current_syntax = "lprolog" " vim: ts=8 PK! ْprrvim80/syntax/nsis.vimnu[" Vim syntax file " Language: NSIS script, for version of NSIS 3.02 and later " Maintainer: Ken Takata " URL: https://github.com/k-takata/vim-nsis " Previous Maintainer: Alex Jakushev " Last Change: 2018-01-26 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore "Pseudo definitions syn match nsisLine nextgroup=@nsisPseudoStatement skipwhite "^" syn cluster nsisPseudoStatement contains=nsisFirstComment,nsisLocalLabel,nsisGlobalLabel syn cluster nsisPseudoStatement add=nsisDefine,nsisPreCondit,nsisMacro,nsisInclude,nsisSystem syn cluster nsisPseudoStatement add=nsisAttribute,nsisCompiler,nsisVersionInfo,nsisInstruction,nsisStatement "COMMENTS (4.1) syn keyword nsisTodo todo attention note fixme readme syn region nsisComment start="[;#]" end="$" contains=nsisTodo,nsisLineContinuation,@Spell oneline syn region nsisComment start=".\@1<=/\*" end="\*/" contains=nsisTodo,@Spell syn region nsisFirstComment start="/\*" end="\*/" contained contains=nsisTodo,@Spell skipwhite \ nextgroup=@nsisPseudoStatement syn match nsisLineContinuation "\\$" "STRINGS (4.1) syn region nsisString start=/"/ end=/"/ contains=@nsisStringItems,@Spell syn region nsisString start=/'/ end=/'/ contains=@nsisStringItems,@Spell syn region nsisString start=/`/ end=/`/ contains=@nsisStringItems,@Spell syn cluster nsisStringItems contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar,nsisUserVar,nsisSysVar,nsisRegistry,nsisLineContinuation "NUMBERS (4.1) syn match nsisNumber "\<[1-9]\d*\>" syn match nsisNumber "\<0x\x\+\>" syn match nsisNumber "\<0\o*\>" "STRING REPLACEMENT (5.4, 4.9.15.2, 5.3.1) syn region nsisPreprocSubst start="\${" end="}" contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar syn region nsisPreprocLangStr start="\$(" end=")" contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar syn region nsisPreprocEnvVar start="\$%" end="%" contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar "VARIABLES (4.2.2) syn match nsisUserVar "$\d" syn match nsisUserVar "$R\d" syn match nsisSysVar "$INSTDIR" syn match nsisSysVar "$OUTDIR" syn match nsisSysVar "$CMDLINE" syn match nsisSysVar "$LANGUAGE" "CONSTANTS (4.2.3) syn match nsisSysVar "$PROGRAMFILES" syn match nsisSysVar "$PROGRAMFILES32" syn match nsisSysVar "$PROGRAMFILES64" syn match nsisSysVar "$COMMONFILES" syn match nsisSysVar "$COMMONFILES32" syn match nsisSysVar "$COMMONFILES64" syn match nsisSysVar "$DESKTOP" syn match nsisSysVar "$EXEDIR" syn match nsisSysVar "$EXEFILE" syn match nsisSysVar "$EXEPATH" syn match nsisSysVar "${NSISDIR}" syn match nsisSysVar "$WINDIR" syn match nsisSysVar "$SYSDIR" syn match nsisSysVar "$TEMP" syn match nsisSysVar "$STARTMENU" syn match nsisSysVar "$SMPROGRAMS" syn match nsisSysVar "$SMSTARTUP" syn match nsisSysVar "$QUICKLAUNCH" syn match nsisSysVar "$DOCUMENTS" syn match nsisSysVar "$SENDTO" syn match nsisSysVar "$RECENT" syn match nsisSysVar "$FAVORITES" syn match nsisSysVar "$MUSIC" syn match nsisSysVar "$PICTURES" syn match nsisSysVar "$VIDEOS" syn match nsisSysVar "$NETHOOD" syn match nsisSysVar "$FONTS" syn match nsisSysVar "$TEMPLATES" syn match nsisSysVar "$APPDATA" syn match nsisSysVar "$LOCALAPPDATA" syn match nsisSysVar "$PRINTHOOD" syn match nsisSysVar "$INTERNET_CACHE" syn match nsisSysVar "$COOKIES" syn match nsisSysVar "$HISTORY" syn match nsisSysVar "$PROFILE" syn match nsisSysVar "$ADMINTOOLS" syn match nsisSysVar "$RESOURCES" syn match nsisSysVar "$RESOURCES_LOCALIZED" syn match nsisSysVar "$CDBURN_AREA" syn match nsisSysVar "$HWNDPARENT" syn match nsisSysVar "$PLUGINSDIR" syn match nsisSysVar "$\\r" syn match nsisSysVar "$\\n" syn match nsisSysVar "$\\t" syn match nsisSysVar "$\$" syn match nsisSysVar "$\\["'`]" "LABELS (4.3) syn match nsisLocalLabel contained "[^-+!$0-9;#. \t/*][^ \t:;#]*:\ze\%($\|[ \t;#]\|\/\*\)" syn match nsisGlobalLabel contained "\.[^-+!$0-9;# \t/*][^ \t:;#]*:\ze\%($\|[ \t;#]\|\/\*\)" "CONSTANTS syn keyword nsisBoolean contained true false syn keyword nsisOnOff contained on off syn keyword nsisRegistry contained HKCR HKLM HKCU HKU HKCC HKDD HKPD SHCTX syn keyword nsisRegistry contained HKCR32 HKCR64 HKCU32 HKCU64 HKLM32 HKLM64 syn keyword nsisRegistry contained HKEY_CLASSES_ROOT HKEY_LOCAL_MACHINE HKEY_CURRENT_USER HKEY_USERS syn keyword nsisRegistry contained HKEY_CLASSES_ROOT32 HKEY_CLASSES_ROOT64 syn keyword nsisRegistry contained HKEY_CURRENT_USER32 HKEY_CURRENT_USER64 syn keyword nsisRegistry contained HKEY_LOCAL_MACHINE32 HKEY_LOCAL_MACHINE64 syn keyword nsisRegistry contained HKEY_CURRENT_CONFIG HKEY_DYN_DATA HKEY_PERFORMANCE_DATA syn keyword nsisRegistry contained SHELL_CONTEXT " common options syn cluster nsisAnyOpt contains=nsisComment,nsisLineContinuation,nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar,nsisUserVar,nsisSysVar,nsisString,nsisNumber syn region nsisBooleanOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisBoolean syn region nsisOnOffOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisOnOff syn region nsisLangOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLangKwd syn match nsisLangKwd contained "/LANG\>" syn region nsisFontOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFontKwd syn match nsisFontKwd contained "/\%(ITALIC\|UNDERLINE\|STRIKE\)\>" "STATEMENTS - pages (4.5) syn keyword nsisStatement contained Page UninstPage nextgroup=nsisPageOpt skipwhite syn region nsisPageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPageKwd syn keyword nsisPageKwd contained custom license components directory instfiles uninstConfirm syn match nsisPageKwd contained "/ENABLECANCEL\>" syn keyword nsisStatement contained PageEx nextgroup=nsisPageExOpt skipwhite syn region nsisPageExOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPageExKwd syn match nsisPageExKwd contained "\<\%(un\.\)\?\%(custom\|license\|components\|directory\|instfiles\|uninstConfirm\)\>" syn keyword nsisStatement contained PageExEnd PageCallbacks "STATEMENTS - sections (4.6.1) syn keyword nsisStatement contained AddSize SectionEnd SectionGroupEnd syn keyword nsisStatement contained Section nextgroup=nsisSectionOpt skipwhite syn region nsisSectionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionKwd syn match nsisSectionKwd contained "/o\>" syn keyword nsisStatement contained SectionIn nextgroup=nsisSectionInOpt skipwhite syn region nsisSectionInOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionInKwd syn keyword nsisSectionInKwd contained RO syn keyword nsisStatement contained SectionGroup nextgroup=nsisSectionGroupOpt skipwhite syn region nsisSectionGroupOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionGroupKwd syn match nsisSectionGroupKwd contained "/e\>" "STATEMENTS - functions (4.7.1) syn keyword nsisStatement contained Function FunctionEnd "STATEMENTS - LogicLib.nsh syn match nsisStatement "${If}" syn match nsisStatement "${IfNot}" syn match nsisStatement "${Unless}" syn match nsisStatement "${ElseIf}" syn match nsisStatement "${ElseIfNot}" syn match nsisStatement "${ElseUnless}" syn match nsisStatement "${Else}" syn match nsisStatement "${EndIf}" syn match nsisStatement "${EndUnless}" syn match nsisStatement "${AndIf}" syn match nsisStatement "${AndIfNot}" syn match nsisStatement "${AndUnless}" syn match nsisStatement "${OrIf}" syn match nsisStatement "${OrIfNot}" syn match nsisStatement "${OrUnless}" syn match nsisStatement "${IfThen}" syn match nsisStatement "${IfNotThen}" syn match nsisStatement "${||\?}" nextgroup=@nsisPseudoStatement skipwhite syn match nsisStatement "${IfCmd}" nextgroup=@nsisPseudoStatement skipwhite syn match nsisStatement "${Select}" syn match nsisStatement "${Case}" syn match nsisStatement "${Case[2-5]}" syn match nsisStatement "${CaseElse}" syn match nsisStatement "${Default}" syn match nsisStatement "${EndSelect}" syn match nsisStatement "${Switch}" syn match nsisStatement "${EndSwitch}" syn match nsisStatement "${Break}" syn match nsisStatement "${Do}" syn match nsisStatement "${DoWhile}" syn match nsisStatement "${DoUntil}" syn match nsisStatement "${ExitDo}" syn match nsisStatement "${Continue}" syn match nsisStatement "${Loop}" syn match nsisStatement "${LoopWhile}" syn match nsisStatement "${LoopUntil}" syn match nsisStatement "${For}" syn match nsisStatement "${ForEach}" syn match nsisStatement "${ExitFor}" syn match nsisStatement "${Next}" "STATEMENTS - Memento.nsh syn match nsisStatement "${MementoSection}" syn match nsisStatement "${MementoSectionEnd}" "USER VARIABLES (4.2.1) syn keyword nsisInstruction contained Var nextgroup=nsisVarOpt skipwhite syn region nsisVarOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisVarKwd syn match nsisVarKwd contained "/GLOBAL\>" "INSTALLER ATTRIBUTES (4.8.1) syn keyword nsisAttribute contained Caption ChangeUI CheckBitmap CompletedText ComponentText syn keyword nsisAttribute contained DetailsButtonText DirText DirVar syn keyword nsisAttribute contained FileErrorText Icon InstallButtonText syn keyword nsisAttribute contained InstallDir InstProgressFlags syn keyword nsisAttribute contained LicenseData LicenseText syn keyword nsisAttribute contained MiscButtonText Name OutFile syn keyword nsisAttribute contained SpaceTexts SubCaption UninstallButtonText UninstallCaption syn keyword nsisAttribute contained UninstallIcon UninstallSubCaption UninstallText syn keyword nsisAttribute contained AddBrandingImage nextgroup=nsisAddBrandingImageOpt skipwhite syn region nsisAddBrandingImageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisAddBrandingImageKwd syn keyword nsisAddBrandingImageKwd contained left right top bottom width height syn keyword nsisAttribute contained nextgroup=nsisBooleanOpt skipwhite \ AllowRootDirInstall AutoCloseWindow syn keyword nsisAttribute contained BGFont nextgroup=nsisFontOpt skipwhite syn keyword nsisAttribute contained BGGradient nextgroup=nsisBGGradientOpt skipwhite syn region nsisBGGradientOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisBGGradientKwd syn keyword nsisBGGradientKwd contained off syn keyword nsisAttribute contained BrandingText nextgroup=nsisBrandingTextOpt skipwhite syn region nsisBrandingTextOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisBrandingTextKwd syn match nsisBrandingTextKwd contained "/TRIM\%(LEFT\|RIGHT\|CENTER\)\>" syn keyword nsisAttribute contained CRCCheck nextgroup=nsisCRCCheckOpt skipwhite syn region nsisCRCCheckOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCRCCheckKwd syn keyword nsisCRCCheckKwd contained on off force syn keyword nsisAttribute contained DirVerify nextgroup=nsisDirVerifyOpt skipwhite syn region nsisDirVerifyOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDirVerifyKwd syn keyword nsisDirVerifyKwd contained auto leave syn keyword nsisAttribute contained InstallColors nextgroup=nsisInstallColorsOpt skipwhite syn region nsisInstallColorsOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisInstallColorsKwd syn match nsisInstallColorsKwd contained "/windows\>" syn keyword nsisAttribute contained InstallDirRegKey nextgroup=nsisRegistryOpt skipwhite syn keyword nsisAttribute contained InstType nextgroup=nsisInstTypeOpt skipwhite syn region nsisInstTypeOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisInstTypeKwd syn match nsisInstTypeKwd contained "/\%(NOCUSTOM\|CUSTOMSTRING\|COMPONENTSONLYONCUSTOM\)\>" syn keyword nsisAttribute contained LicenseBkColor nextgroup=nsisLicenseBkColorOpt skipwhite syn region nsisLicenseBkColorOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLicenseBkColorKwd syn match nsisLicenseBkColorKwd contained "/\%(gray\|windows\)\>" syn keyword nsisAttribute contained LicenseForceSelection nextgroup=nsisLicenseForceSelectionOpt skipwhite syn region nsisLicenseForceSelectionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLicenseForceSelectionKwd syn keyword nsisLicenseForceSelectionKwd contained checkbox radiobuttons off syn keyword nsisAttribute contained ManifestDPIAware nextgroup=nsisManifestDPIAwareOpt skipwhite syn region nsisManifestDPIAwareOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisManifestDPIAwareKwd syn keyword nsisManifestDPIAwareKwd contained notset true false syn keyword nsisAttribute contained ManifestSupportedOS nextgroup=nsisManifestSupportedOSOpt skipwhite syn region nsisManifestSupportedOSOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisManifestSupportedOSKwd syn match nsisManifestSupportedOSKwd contained "\<\%(none\|all\|WinVista\|Win7\|Win8\|Win8\.1\|Win10\)\>" syn keyword nsisAttribute contained RequestExecutionLevel nextgroup=nsisRequestExecutionLevelOpt skipwhite syn region nsisRequestExecutionLevelOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRequestExecutionLevelKwd syn keyword nsisRequestExecutionLevelKwd contained none user highest admin syn keyword nsisAttribute contained SetFont nextgroup=nsisLangOpt skipwhite syn keyword nsisAttribute contained nextgroup=nsisShowInstDetailsOpt skipwhite \ ShowInstDetails ShowUninstDetails syn region nsisShowInstDetailsOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisShowInstDetailsKwd syn keyword nsisShowInstDetailsKwd contained hide show nevershow syn keyword nsisAttribute contained SilentInstall nextgroup=nsisSilentInstallOpt skipwhite syn region nsisSilentInstallOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSilentInstallKwd syn keyword nsisSilentInstallKwd contained normal silent silentlog syn keyword nsisAttribute contained SilentUnInstall nextgroup=nsisSilentUnInstallOpt skipwhite syn region nsisSilentUnInstallOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSilentUnInstallKwd syn keyword nsisSilentUnInstallKwd contained normal silent syn keyword nsisAttribute contained nextgroup=nsisOnOffOpt skipwhite \ WindowIcon XPStyle "COMPILER FLAGS (4.8.2) syn keyword nsisCompiler contained nextgroup=nsisOnOffOpt skipwhite \ AllowSkipFiles SetDatablockOptimize SetDateSave syn keyword nsisCompiler contained FileBufSize SetCompressorDictSize syn keyword nsisCompiler contained SetCompress nextgroup=nsisSetCompressOpt skipwhite syn region nsisSetCompressOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetCompressKwd syn keyword nsisSetCompressKwd contained auto force off syn keyword nsisCompiler contained SetCompressor nextgroup=nsisSetCompressorOpt skipwhite syn region nsisSetCompressorOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetCompressorKwd syn keyword nsisSetCompressorKwd contained zlib bzip2 lzma syn match nsisSetCompressorKwd contained "/\%(SOLID\|FINAL\)" syn keyword nsisCompiler contained SetOverwrite nextgroup=nsisSetOverwriteOpt skipwhite syn region nsisSetOverwriteOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetOverwriteKwd syn keyword nsisSetOverwriteKwd contained on off try ifnewer ifdiff lastused syn keyword nsisCompiler contained Unicode nextgroup=nsisBooleanOpt skipwhite "VERSION INFORMATION (4.8.3) syn keyword nsisVersionInfo contained VIAddVersionKey nextgroup=nsisLangOpt skipwhite syn keyword nsisVersionInfo contained VIProductVersion VIFileVersion "FUNCTIONS - basic (4.9.1) syn keyword nsisInstruction contained Delete Rename nextgroup=nsisDeleteOpt skipwhite syn region nsisDeleteOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDeleteKwd syn match nsisDeleteKwd contained "/REBOOTOK\>" syn keyword nsisInstruction contained Exec ExecWait SetOutPath syn keyword nsisInstruction contained ExecShell ExecShellWait nextgroup=nsisExecShellOpt skipwhite syn region nsisExecShellOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisExecShellKwd syn keyword nsisExecShellKwd contained SW_SHOWDEFAULT SW_SHOWNORMAL SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_HIDE syn match nsisExecShellKwd contained "/INVOKEIDLIST\>" syn keyword nsisInstruction contained File nextgroup=nsisFileOpt skipwhite syn region nsisFileOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFileKwd syn match nsisFileKwd contained "/\%(nonfatal\|[arx]\|oname\)\>" syn keyword nsisInstruction contained ReserveFile nextgroup=nsisReserveFileOpt skipwhite syn region nsisReserveFileOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisReserveFileKwd syn match nsisReserveFileKwd contained "/\%(nonfatal\|[rx]\|plugin\)\>" syn keyword nsisInstruction contained RMDir nextgroup=nsisRMDirOpt skipwhite syn region nsisRMDirOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRMDirKwd syn match nsisRMDirKwd contained "/\%(REBOOTOK\|r\)\>" "FUNCTIONS - registry & ini (4.9.2) syn keyword nsisInstruction contained DeleteINISec DeleteINIStr FlushINI ReadINIStr WriteINIStr syn keyword nsisInstruction contained ExpandEnvStrings ReadEnvStr syn keyword nsisInstruction contained DeleteRegKey nextgroup=nsisDeleteRegKeyOpt skipwhite syn region nsisDeleteRegKeyOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDeleteRegKeyKwd,nsisRegistry syn match nsisDeleteRegKeyKwd contained "/ifempty\>" syn keyword nsisInstruction contained nextgroup=nsisRegistryOpt skipwhite \ DeleteRegValue EnumRegKey EnumRegValue ReadRegDWORD ReadRegStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegStr syn region nsisRegistryOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRegistry syn keyword nsisInstruction contained WriteRegMultiStr nextgroup=nsisWriteRegMultiStrOpt skipwhite syn region nsisWriteRegMultiStrOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRegistry,nsisWriteRegMultiStrKwd syn match nsisWriteRegMultiStrKwd contained "/REGEDIT5\>" syn keyword nsisInstruction contained SetRegView nextgroup=nsisSetRegViewOpt skipwhite syn region nsisSetRegViewOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetRegViewKwd syn keyword nsisSetRegViewKwd contained default lastused "FUNCTIONS - general purpose (4.9.3) syn keyword nsisInstruction contained CallInstDLL CreateDirectory GetDLLVersion syn keyword nsisInstruction contained GetDLLVersionLocal GetFileTime GetFileTimeLocal syn keyword nsisInstruction contained GetTempFileName SearchPath RegDLL UnRegDLL syn keyword nsisInstruction contained CopyFiles nextgroup=nsisCopyFilesOpt skipwhite syn region nsisCopyFilesOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCopyFilesKwd syn match nsisCopyFilesKwd contained "/\%(SILENT\|FILESONLY\)\>" syn keyword nsisInstruction contained CreateShortcut nextgroup=nsisCreateShortcutOpt skipwhite syn region nsisCreateShortcutOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCreateShortcutKwd syn match nsisCreateShortcutKwd contained "/NoWorkingDir\>" syn keyword nsisInstruction contained GetFullPathName nextgroup=nsisGetFullPathNameOpt skipwhite syn region nsisGetFullPathNameOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisGetFullPathNameKwd syn match nsisGetFullPathNameKwd contained "/SHORT\>" syn keyword nsisInstruction contained SetFileAttributes nextgroup=nsisSetFileAttributesOpt skipwhite syn region nsisSetFileAttributesOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFileAttrib syn keyword nsisFileAttrib contained NORMAL ARCHIVE HIDDEN OFFLINE READONLY SYSTEM TEMPORARY syn keyword nsisFileAttrib contained FILE_ATTRIBUTE_NORMAL FILE_ATTRIBUTE_ARCHIVE FILE_ATTRIBUTE_HIDDEN syn keyword nsisFileAttrib contained FILE_ATTRIBUTE_OFFLINE FILE_ATTRIBUTE_READONLY FILE_ATTRIBUTE_SYSTEM syn keyword nsisFileAttrib contained FILE_ATTRIBUTE_TEMPORARY "FUNCTIONS - Flow Control (4.9.4) syn keyword nsisInstruction contained Abort Call ClearErrors GetCurrentAddress syn keyword nsisInstruction contained GetFunctionAddress GetLabelAddress Goto syn keyword nsisInstruction contained IfAbort IfErrors IfFileExists IfRebootFlag IfSilent syn keyword nsisInstruction contained IntCmp IntCmpU Return Quit SetErrors StrCmp StrCmpS syn keyword nsisInstruction contained MessageBox nextgroup=nsisMessageBoxOpt skipwhite syn region nsisMessageBoxOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisMessageBox syn keyword nsisMessageBox contained MB_OK MB_OKCANCEL MB_ABORTRETRYIGNORE MB_RETRYCANCEL MB_YESNO MB_YESNOCANCEL syn keyword nsisMessageBox contained MB_ICONEXCLAMATION MB_ICONINFORMATION MB_ICONQUESTION MB_ICONSTOP MB_USERICON syn keyword nsisMessageBox contained MB_TOPMOST MB_SETFOREGROUND MB_RIGHT MB_RTLREADING syn keyword nsisMessageBox contained MB_DEFBUTTON1 MB_DEFBUTTON2 MB_DEFBUTTON3 MB_DEFBUTTON4 syn keyword nsisMessageBox contained IDABORT IDCANCEL IDIGNORE IDNO IDOK IDRETRY IDYES syn match nsisMessageBox contained "/SD\>" "FUNCTIONS - File and directory i/o instructions (4.9.5) syn keyword nsisInstruction contained FileClose FileOpen FileRead FileReadUTF16LE syn keyword nsisInstruction contained FileReadByte FileReadWord FileSeek FileWrite syn keyword nsisInstruction contained FileWriteByte FileWriteWord syn keyword nsisInstruction contained FindClose FindFirst FindNext syn keyword nsisInstruction contained FileWriteUTF16LE nextgroup=nsisFileWriteUTF16LEOpt skipwhite syn region nsisFileWriteUTF16LEOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFileWriteUTF16LEKwd syn match nsisFileWriteUTF16LEKwd contained "/BOM\>" "FUNCTIONS - Uninstaller instructions (4.9.6) syn keyword nsisInstruction contained WriteUninstaller "FUNCTIONS - Misc instructions (4.9.7) syn keyword nsisInstruction contained GetErrorLevel GetInstDirError InitPluginsDir Nop syn keyword nsisInstruction contained SetErrorLevel Sleep syn keyword nsisInstruction contained SetShellVarContext nextgroup=nsisSetShellVarContextOpt skipwhite syn region nsisSetShellVarContextOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetShellVarContextKwd syn keyword nsisSetShellVarContextKwd contained current all "FUNCTIONS - String manipulation support (4.9.8) syn keyword nsisInstruction contained StrCpy StrLen "FUNCTIONS - Stack support (4.9.9) syn keyword nsisInstruction contained Exch Push Pop "FUNCTIONS - Integer manipulation support (4.9.10) syn keyword nsisInstruction contained IntOp IntFmt "FUNCTIONS - Rebooting support (4.9.11) syn keyword nsisInstruction contained Reboot SetRebootFlag "FUNCTIONS - Install logging instructions (4.9.12) syn keyword nsisInstruction contained LogSet nextgroup=nsisOnOffOpt skipwhite syn keyword nsisInstruction contained LogText "FUNCTIONS - Section management instructions (4.9.13) syn keyword nsisInstruction contained SectionSetFlags SectionGetFlags SectionSetText syn keyword nsisInstruction contained SectionGetText SectionSetInstTypes SectionGetInstTypes syn keyword nsisInstruction contained SectionSetSize SectionGetSize SetCurInstType GetCurInstType syn keyword nsisInstruction contained InstTypeSetText InstTypeGetText "FUNCTIONS - User Interface Instructions (4.9.14) syn keyword nsisInstruction contained BringToFront DetailPrint EnableWindow syn keyword nsisInstruction contained FindWindow GetDlgItem HideWindow IsWindow syn keyword nsisInstruction contained ShowWindow syn keyword nsisInstruction contained CreateFont nextgroup=nsisFontOpt skipwhite syn keyword nsisInstruction contained nextgroup=nsisBooleanOpt skipwhite \ LockWindow SetAutoClose syn keyword nsisInstruction contained SendMessage nextgroup=nsisSendMessageOpt skipwhite syn region nsisSendMessageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSendMessageKwd syn match nsisSendMessageKwd contained "/TIMEOUT\>" syn keyword nsisInstruction contained SetBrandingImage nextgroup=nsisSetBrandingImageOpt skipwhite syn region nsisSetBrandingImageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetBrandingImageKwd syn match nsisSetBrandingImageKwd contained "/\%(IMGID\|RESIZETOFIT\)\>" syn keyword nsisInstruction contained SetDetailsView nextgroup=nsisSetDetailsViewOpt skipwhite syn region nsisSetDetailsViewOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetDetailsViewKwd syn keyword nsisSetDetailsViewKwd contained show hide syn keyword nsisInstruction contained SetDetailsPrint nextgroup=nsisSetDetailsPrintOpt skipwhite syn region nsisSetDetailsPrintOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetDetailsPrintKwd syn keyword nsisSetDetailsPrintKwd contained none listonly textonly both lastused syn keyword nsisInstruction contained SetCtlColors nextgroup=nsisSetCtlColorsOpt skipwhite syn region nsisSetCtlColorsOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetCtlColorsKwd syn match nsisSetCtlColorsKwd contained "/BRANDING\>" syn keyword nsisInstruction contained SetSilent nextgroup=nsisSetSilentOpt skipwhite syn region nsisSetSilentOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetSilentKwd syn keyword nsisSetSilentKwd contained silent normal "FUNCTIONS - Multiple Languages Instructions (4.9.15) syn keyword nsisInstruction contained LoadLanguageFile LangString LicenseLangString "SPECIAL FUNCTIONS - install (4.7.2.1) syn match nsisCallback "\.onGUIInit" syn match nsisCallback "\.onInit" syn match nsisCallback "\.onInstFailed" syn match nsisCallback "\.onInstSuccess" syn match nsisCallback "\.onGUIEnd" syn match nsisCallback "\.onMouseOverSection" syn match nsisCallback "\.onRebootFailed" syn match nsisCallback "\.onSelChange" syn match nsisCallback "\.onUserAbort" syn match nsisCallback "\.onVerifyInstDir" "SPECIAL FUNCTIONS - uninstall (4.7.2.2) syn match nsisCallback "un\.onGUIInit" syn match nsisCallback "un\.onInit" syn match nsisCallback "un\.onUninstFailed" syn match nsisCallback "un\.onUninstSuccess" syn match nsisCallback "un\.onGUIEnd" syn match nsisCallback "un\.onRebootFailed" syn match nsisCallback "un\.onSelChange" syn match nsisCallback "un\.onUserAbort" "COMPILER UTILITY (5.1) syn match nsisInclude contained "!include\>" nextgroup=nsisIncludeOpt skipwhite syn region nsisIncludeOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisIncludeKwd syn match nsisIncludeKwd contained "/\%(NONFATAL\|CHARSET\)\>" syn match nsisSystem contained "!addincludedir\>" syn match nsisSystem contained "!addplugindir\>" nextgroup=nsisAddplugindirOpt skipwhite syn region nsisAddplugindirOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisAddplugindirKwd syn match nsisAddplugindirKwd contained "/\%(x86-ansi\|x86-unicode\)\>" syn match nsisSystem contained "!appendfile\>" nextgroup=nsisAppendfileOpt skipwhite syn region nsisAppendfileOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisAppendfileKwd syn match nsisAppendfileKwd contained "/\%(CHARSET\|RawNL\)\>" syn match nsisSystem contained "!cd\>" syn match nsisSystem contained "!delfile\>" nextgroup=nsisDelfileOpt skipwhite syn region nsisDelfileOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDelfileKwd syn match nsisDelfileKwd contained "/nonfatal\>" syn match nsisSystem contained "!echo\>" syn match nsisSystem contained "!error\>" syn match nsisSystem contained "!execute\>" syn match nsisSystem contained "!makensis\>" syn match nsisSystem contained "!packhdr\>" syn match nsisSystem contained "!finalize\>" syn match nsisSystem contained "!system\>" syn match nsisSystem contained "!tempfile\>" syn match nsisSystem contained "!getdllversion\>" syn match nsisSystem contained "!warning\>" syn match nsisSystem contained "!pragma\>" nextgroup=nsisPragmaOpt skipwhite syn region nsisPragmaOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPragmaKwd syn keyword nsisPragmaKwd contained enable disable default push pop syn match nsisSystem contained "!verbose\>" nextgroup=nsisVerboseOpt skipwhite syn region nsisVerboseOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisVerboseKwd syn keyword nsisVerboseKwd contained push pop "PREPROCESSOR (5.4) syn match nsisDefine contained "!define\>" nextgroup=nsisDefineOpt skipwhite syn region nsisDefineOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDefineKwd syn match nsisDefineKwd contained "/\%(ifndef\|redef\|date\|utcdate\|math\|file\)\>" syn match nsisDefine contained "!undef\>" syn match nsisPreCondit contained "!ifdef\>" syn match nsisPreCondit contained "!ifndef\>" syn match nsisPreCondit contained "!if\>" nextgroup=nsisIfOpt skipwhite syn region nsisIfOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisIfKwd syn match nsisIfKwd contained "/FileExists\>" syn match nsisPreCondit contained "!ifmacrodef\>" syn match nsisPreCondit contained "!ifmacrondef\>" syn match nsisPreCondit contained "!else\>" syn match nsisPreCondit contained "!endif\>" syn match nsisMacro contained "!insertmacro\>" syn match nsisMacro contained "!macro\>" syn match nsisMacro contained "!macroend\>" syn match nsisMacro contained "!macroundef\>" syn match nsisMacro contained "!searchparse\>" nextgroup=nsisSearchparseOpt skipwhite syn region nsisSearchparseOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSearchparseKwd syn match nsisSearchparseKwd contained "/\%(ignorecase\|noerrors\|file\)\>" syn match nsisMacro contained "!searchreplace\>" nextgroup=nsisSearchreplaceOpt skipwhite syn region nsisSearchreplaceOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSearchreplaceKwd syn match nsisSearchreplaceKwd contained "/ignorecase\>" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link nsisInstruction Function hi def link nsisComment Comment hi def link nsisFirstComment Comment hi def link nsisLocalLabel Label hi def link nsisGlobalLabel Label hi def link nsisStatement Statement hi def link nsisString String hi def link nsisBoolean Boolean hi def link nsisOnOff Boolean hi def link nsisFontKwd Constant hi def link nsisLangKwd Constant hi def link nsisPageKwd Constant hi def link nsisPageExKwd Constant hi def link nsisSectionKwd Constant hi def link nsisSectionInKwd Constant hi def link nsisSectionGroupKwd Constant hi def link nsisVarKwd Constant hi def link nsisAddBrandingImageKwd Constant hi def link nsisBGGradientKwd Constant hi def link nsisBrandingTextKwd Constant hi def link nsisCRCCheckKwd Constant hi def link nsisDirVerifyKwd Constant hi def link nsisInstallColorsKwd Constant hi def link nsisInstTypeKwd Constant hi def link nsisLicenseBkColorKwd Constant hi def link nsisLicenseForceSelectionKwd Constant hi def link nsisManifestDPIAwareKwd Constant hi def link nsisManifestSupportedOSKwd Constant hi def link nsisRequestExecutionLevelKwd Constant hi def link nsisShowInstDetailsKwd Constant hi def link nsisSilentInstallKwd Constant hi def link nsisSilentUnInstallKwd Constant hi def link nsisSetCompressKwd Constant hi def link nsisSetCompressorKwd Constant hi def link nsisSetOverwriteKwd Constant hi def link nsisDeleteKwd Constant hi def link nsisExecShellKwd Constant hi def link nsisFileKwd Constant hi def link nsisReserveFileKwd Constant hi def link nsisRMDirKwd Constant hi def link nsisDeleteRegKeyKwd Constant hi def link nsisWriteRegMultiStrKwd Constant hi def link nsisSetRegViewKwd Constant hi def link nsisCopyFilesKwd Constant hi def link nsisCreateShortcutKwd Constant hi def link nsisGetFullPathNameKwd Constant hi def link nsisFileAttrib Constant hi def link nsisMessageBox Constant hi def link nsisFileWriteUTF16LEKwd Constant hi def link nsisSetShellVarContextKwd Constant hi def link nsisSendMessageKwd Constant hi def link nsisSetBrandingImageKwd Constant hi def link nsisSetDetailsViewKwd Constant hi def link nsisSetDetailsPrintKwd Constant hi def link nsisSetCtlColorsKwd Constant hi def link nsisSetSilentKwd Constant hi def link nsisRegistry Identifier hi def link nsisNumber Number hi def link nsisError Error hi def link nsisUserVar Identifier hi def link nsisSysVar Identifier hi def link nsisAttribute Type hi def link nsisCompiler Type hi def link nsisVersionInfo Type hi def link nsisTodo Todo hi def link nsisCallback Identifier " preprocessor commands hi def link nsisPreprocSubst PreProc hi def link nsisPreprocLangStr PreProc hi def link nsisPreprocEnvVar PreProc hi def link nsisDefine Define hi def link nsisMacro Macro hi def link nsisPreCondit PreCondit hi def link nsisInclude Include hi def link nsisSystem PreProc hi def link nsisLineContinuation Special hi def link nsisIncludeKwd Constant hi def link nsisAddplugindirKwd Constant hi def link nsisAppendfileKwd Constant hi def link nsisDelfileKwd Constant hi def link nsisPragmaKwd Constant hi def link nsisVerboseKwd Constant hi def link nsisDefineKwd Constant hi def link nsisIfKwd Constant hi def link nsisSearchparseKwd Constant hi def link nsisSearchreplaceKwd Constant let b:current_syntax = "nsis" let &cpo = s:cpo_save unlet s:cpo_save PK!Ovim80/syntax/smil.vimnu[" Vim syntax file " Language: SMIL (Synchronized Multimedia Integration Language) " Maintainer: Herve Foucher " URL: http://www.helio.org/vim/syntax/smil.vim " Last Change: 2012 Feb 03 by Thilo Six " To learn more about SMIL, please refer to http://www.w3.org/AudioVideo/ " and to http://www.helio.org/products/smil/tutorial/ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " SMIL is case sensitive syn case match " illegal characters syn match smilError "[<>&]" syn match smilError "[()&]" if !exists("main_syntax") let main_syntax = 'smil' endif " tags syn match smilSpecial contained "\\\d\d\d\|\\." syn match smilSpecial contained "(" syn match smilSpecial contained "id(" syn match smilSpecial contained ")" syn keyword smilSpecial contained remove freeze true false on off overdub caption new pause replace syn keyword smilSpecial contained first last syn keyword smilSpecial contained fill meet slice scroll hidden syn region smilString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=smilSpecial syn region smilString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=smilSpecial syn match smilValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 syn region smilEndTag start=++ contains=smilTagN,smilTagError syn region smilTag start=+<[^/]+ end=+>+ contains=smilTagN,smilString,smilArg,smilValue,smilTagError,smilEvent,smilCssDefinition syn match smilTagN contained +<\s*[-a-zA-Z0-9]\++ms=s+1 contains=smilTagName,smilSpecialTagName syn match smilTagN contained +]<"ms=s+1 " tag names syn keyword smilTagName contained smil head body anchor a switch region layout meta syn match smilTagName contained "root-layout" syn keyword smilTagName contained par seq syn keyword smilTagName contained animation video img audio ref text textstream syn match smilTagName contained "\<\(head\|body\)\>" " legal arg names syn keyword smilArg contained dur begin end href target id coords show title abstract author copyright alt syn keyword smilArg contained left top width height fit src name content fill longdesc repeat type syn match smilArg contained "z-index" syn match smilArg contained " end-sync" syn match smilArg contained " region" syn match smilArg contained "background-color" syn match smilArg contained "system-bitrate" syn match smilArg contained "system-captions" syn match smilArg contained "system-overdub-or-caption" syn match smilArg contained "system-language" syn match smilArg contained "system-required" syn match smilArg contained "system-screen-depth" syn match smilArg contained "system-screen-size" syn match smilArg contained "clip-begin" syn match smilArg contained "clip-end" syn match smilArg contained "skip-content" " SMIL Boston ext. " This are new SMIL functionnalities seen on www.w3.org on August 3rd 1999 " Animation syn keyword smilTagName contained animate set move syn keyword smilArg contained calcMode from to by additive values origin path syn keyword smilArg contained accumulate hold attribute syn match smilArg contained "xml:link" syn keyword smilSpecial contained discrete linear spline parent layout syn keyword smilSpecial contained top left simple " Linking syn keyword smilTagName contained area syn keyword smilArg contained actuate behavior inline sourceVolume syn keyword smilArg contained destinationVolume destinationPlaystate tabindex syn keyword smilArg contained class style lang dir onclick ondblclick onmousedown onmouseup onmouseover onmousemove onmouseout onkeypress onkeydown onkeyup shape nohref accesskey onfocus onblur syn keyword smilSpecial contained play pause stop rect circ poly child par seq " Media Object syn keyword smilTagName contained rtpmap syn keyword smilArg contained port transport encoding payload clipBegin clipEnd syn match smilArg contained "fmt-list" " Timing and Synchronization syn keyword smilTagName contained excl syn keyword smilArg contained beginEvent endEvent eventRestart endSync repeatCount repeatDur syn keyword smilArg contained syncBehavior syncTolerance syn keyword smilSpecial contained canSlip locked " special characters syn match smilSpecialChar "&[^;]*;" if exists("smil_wrong_comments") syn region smilComment start=++ else syn region smilComment start=++ contains=smilCommentPart,smilCommentError syn match smilCommentError contained "[^>+ " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link smilTag Function hi def link smilEndTag Identifier hi def link smilArg Type hi def link smilTagName smilStatement hi def link smilSpecialTagName Exception hi def link smilValue Value hi def link smilSpecialChar Special hi def link smilSpecial Special hi def link smilSpecialChar Special hi def link smilString String hi def link smilStatement Statement hi def link smilComment Comment hi def link smilCommentPart Comment hi def link smilPreProc PreProc hi def link smilValue String hi def link smilCommentError smilError hi def link smilTagError smilError hi def link smilError Error let b:current_syntax = "smil" if main_syntax == 'smil' unlet main_syntax endif let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!]r\ \ vim80/syntax/eruby.vimnu[" Vim syntax file " Language: eRuby " Maintainer: Tim Pope " URL: https://github.com/vim-ruby/vim-ruby " Release Coordinator: Doug Kearns if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'eruby' endif if !exists("g:eruby_default_subtype") let g:eruby_default_subtype = "html" endif if &filetype =~ '^eruby\.' let b:eruby_subtype = matchstr(&filetype,'^eruby\.\zs\w\+') elseif !exists("b:eruby_subtype") && main_syntax == 'eruby' let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$") let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+') if b:eruby_subtype == '' let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\)\+$','',''),'\.\zs\w\+\%(\ze+\w\+\)\=$') endif if b:eruby_subtype == 'rhtml' let b:eruby_subtype = 'html' elseif b:eruby_subtype == 'rb' let b:eruby_subtype = 'ruby' elseif b:eruby_subtype == 'yml' let b:eruby_subtype = 'yaml' elseif b:eruby_subtype == 'js' let b:eruby_subtype = 'javascript' elseif b:eruby_subtype == 'txt' " Conventional; not a real file type let b:eruby_subtype = 'text' elseif b:eruby_subtype == '' let b:eruby_subtype = g:eruby_default_subtype endif endif if !exists("b:eruby_nest_level") let b:eruby_nest_level = strlen(substitute(substitute(substitute(expand("%:t"),'@','','g'),'\c\.\%(erb\|rhtml\)\>','@','g'),'[^@]','','g')) endif if !b:eruby_nest_level let b:eruby_nest_level = 1 endif if exists("b:eruby_subtype") && b:eruby_subtype != '' exe "runtime! syntax/".b:eruby_subtype.".vim" unlet! b:current_syntax endif syn include @rubyTop syntax/ruby.vim syn cluster erubyRegions contains=erubyOneLiner,erubyBlock,erubyExpression,erubyComment exe 'syn region erubyOneLiner matchgroup=erubyDelimiter start="^%\{1,'.b:eruby_nest_level.'\}%\@!" end="$" contains=@rubyTop containedin=ALLBUT,@erubyRegions keepend oneline' exe 'syn region erubyBlock matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}%\@!-\=" end="[=-]\=%\@" contains=@rubyTop containedin=ALLBUT,@erubyRegions keepend' exe 'syn region erubyExpression matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}=\{1,4}" end="[=-]\=%\@" contains=@rubyTop containedin=ALLBUT,@erubyRegions keepend' exe 'syn region erubyComment matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}-\=#" end="[=-]\=%\@" contains=rubyTodo,@Spell containedin=ALLBUT,@erubyRegions keepend' " Define the default highlighting. hi def link erubyDelimiter PreProc hi def link erubyComment Comment let b:current_syntax = 'eruby' if main_syntax == 'eruby' unlet main_syntax endif " vim: nowrap sw=2 sts=2 ts=8: PK!`]77vim80/syntax/xinetd.vimnu[" Vim syntax file " Language: xinetd.conf(5) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword xinetdTodo contained TODO FIXME XXX NOTE syn region xinetdComment display oneline start='^\s*#' end='$' \ contains=xinetdTodo,@Spell syn match xinetdService '^\s*service\>' \ nextgroup=xinetdServiceName skipwhite syn match xinetdServiceName contained '\S\+' \ nextgroup=xinetdServiceGroup skipwhite skipnl syn match xinetdDefaults '^\s*defaults' \ nextgroup=xinetdServiceGroup skipwhite skipnl syn region xinetdServiceGroup contained transparent \ matchgroup=xinetdServiceGroupD start='{' \ matchgroup=xinetdServiceGroupD end='}' \ contains=xinetdAttribute,xinetdReqAttribute, \ xinetdDisable syn keyword xinetdReqAttribute contained user server protocol \ nextgroup=xinetdStringEq skipwhite syn keyword xinetdAttribute contained id group bind \ interface \ nextgroup=xinetdStringEq skipwhite syn match xinetdStringEq contained display '=' \ nextgroup=xinetdString skipwhite syn match xinetdString contained display '\S\+' syn keyword xinetdAttribute contained type nextgroup=xinetdTypeEq skipwhite syn match xinetdTypeEq contained display '=' \ nextgroup=xinetdType skipwhite syn keyword xinetdType contained RPC INTERNAL TCPMUX TCPMUXPLUS \ UNLISTED \ nextgroup=xinetdType skipwhite syn keyword xinetdAttribute contained flags \ nextgroup=xinetdFlagsEq skipwhite syn cluster xinetdFlagsC contains=xinetdFlags,xinetdDeprFlags syn match xinetdFlagsEq contained display '=' \ nextgroup=@xinetdFlagsC skipwhite syn keyword xinetdFlags contained INTERCEPT NORETRY IDONLY NAMEINARGS \ NODELAY KEEPALIVE NOLIBWRAP SENSOR IPv4 IPv6 \ nextgroup=@xinetdFlagsC skipwhite syn keyword xinetdDeprFlags contained REUSE nextgroup=xinetdFlagsC skipwhite syn keyword xinetdDisable contained disable \ nextgroup=xinetdBooleanEq skipwhite syn match xinetdBooleanEq contained display '=' \ nextgroup=xinetdBoolean skipwhite syn keyword xinetdBoolean contained yes no syn keyword xinetdReqAttribute contained socket_type \ nextgroup=xinetdSocketTypeEq skipwhite syn match xinetdSocketTypeEq contained display '=' \ nextgroup=xinetdSocketType skipwhite syn keyword xinetdSocketType contained stream dgram raw seqpacket syn keyword xinetdReqAttribute contained wait \ nextgroup=xinetdBooleanEq skipwhite syn keyword xinetdAttribute contained groups mdns \ nextgroup=xinetdBooleanEq skipwhite syn keyword xinetdAttribute contained instances per_source rlimit_cpu \ rlimit_data rlimit_rss rlimit_stack \ nextgroup=xinetdUNumberEq skipwhite syn match xinetdUNumberEq contained display '=' \ nextgroup=xinetdUnlimited,xinetdNumber \ skipwhite syn keyword xinetdUnlimited contained UNLIMITED syn match xinetdNumber contained display '\<\d\+\>' syn keyword xinetdAttribute contained nice \ nextgroup=xinetdSignedNumEq skipwhite syn match xinetdSignedNumEq contained display '=' \ nextgroup=xinetdSignedNumber skipwhite syn match xinetdSignedNumber contained display '[+-]\=\d\+\>' syn keyword xinetdAttribute contained server_args \ enabled \ nextgroup=xinetdStringsEq skipwhite syn match xinetdStringsEq contained display '=' \ nextgroup=xinetdStrings skipwhite syn match xinetdStrings contained display '\S\+' \ nextgroup=xinetdStrings skipwhite syn keyword xinetdAttribute contained only_from no_access passenv \ nextgroup=xinetdStringsAdvEq skipwhite syn match xinetdStringsAdvEq contained display '[+-]\==' \ nextgroup=xinetdStrings skipwhite syn keyword xinetdAttribute contained access_times \ nextgroup=xinetdTimeRangesEq skipwhite syn match xinetdTimeRangesEq contained display '=' \ nextgroup=xinetdTimeRanges skipwhite syn match xinetdTimeRanges contained display \ '\%(0?\d\|1\d\|2[0-3]\):\%(0?\d\|[1-5]\d\)-\%(0?\d\|1\d\|2[0-3]\):\%(0?\d\|[1-5]\d\)' \ nextgroup=xinetdTimeRanges skipwhite syn keyword xinetdAttribute contained log_type nextgroup=xinetdLogTypeEq \ skipwhite syn match xinetdLogTypeEq contained display '=' \ nextgroup=xinetdLogType skipwhite syn keyword xinetdLogType contained SYSLOG nextgroup=xinetdSyslogType \ skipwhite syn keyword xinetdLogType contained FILE nextgroup=xinetdLogFile skipwhite syn keyword xinetdSyslogType contained daemon auth authpriv user mail lpr \ news uucp ftp local0 local1 local2 local3 \ local4 local5 local6 local7 \ nextgroup=xinetdSyslogLevel skipwhite syn keyword xinetdSyslogLevel contained emerg alert crit err warning notice \ info debug syn match xinetdLogFile contained display '\S\+' \ nextgroup=xinetdLogSoftLimit skipwhite syn match xinetdLogSoftLimit contained display '\<\d\+\>' \ nextgroup=xinetdLogHardLimit skipwhite syn match xinetdLogHardLimit contained display '\<\d\+\>' syn keyword xinetdAttribute contained log_on_success \ nextgroup=xinetdLogSuccessEq skipwhite syn match xinetdLogSuccessEq contained display '[+-]\==' \ nextgroup=xinetdLogSuccess skipwhite syn keyword xinetdLogSuccess contained PID HOST USERID EXIT DURATION TRAFFIC \ nextgroup=xinetdLogSuccess skipwhite syn keyword xinetdAttribute contained log_on_failure \ nextgroup=xinetdLogFailureEq skipwhite syn match xinetdLogFailureEq contained display '[+-]\==' \ nextgroup=xinetdLogFailure skipwhite syn keyword xinetdLogFailure contained HOST USERID ATTEMPT \ nextgroup=xinetdLogFailure skipwhite syn keyword xinetdReqAttribute contained rpc_version \ nextgroup=xinetdRPCVersionEq skipwhite syn match xinetdRPCVersionEq contained display '=' \ nextgroup=xinetdRPCVersion skipwhite syn match xinetdRPCVersion contained display '\d\+\%(-\d\+\)\=\>' syn keyword xinetdReqAttribute contained rpc_number port \ nextgroup=xinetdNumberEq skipwhite syn match xinetdNumberEq contained display '=' \ nextgroup=xinetdNumber skipwhite syn keyword xinetdAttribute contained env nextgroup=xinetdEnvEq skipwhite syn match xinetdEnvEq contained display '+\==' \ nextgroup=xinetdEnvName skipwhite syn match xinetdEnvName contained display '[^=]\+' \ nextgroup=xinetdEnvNameEq syn match xinetdEnvNameEq contained display '=' nextgroup=xinetdEnvValue syn match xinetdEnvValue contained display '\S\+' \ nextgroup=xinetdEnvName skipwhite syn keyword xinetdAttribute contained banner banner_success banner_failure \ nextgroup=xinetdPathEq skipwhite syn keyword xinetdPPAttribute include includedir \ nextgroup=xinetdPath skipwhite syn match xinetdPathEq contained display '=' \ nextgroup=xinetdPath skipwhite syn match xinetdPath contained display '\S\+' syn keyword xinetdAttribute contained redirect nextgroup=xinetdRedirectEq \ skipwhite syn match xinetdRedirectEq contained display '=' \ nextgroup=xinetdRedirectIP skipwhite syn match xinetdRedirectIP contained display '\S\+' \ nextgroup=xinetdNumber skipwhite syn keyword xinetdAttribute contained cps nextgroup=xinetdCPSEq skipwhite syn match xinetdCPSEq contained display '=' \ nextgroup=xinetdCPS skipwhite syn match xinetdCPS contained display '\<\d\+\>' \ nextgroup=xinetdNumber skipwhite syn keyword xinetdAttribute contained max_load nextgroup=xinetdFloatEq \ skipwhite syn match xinetdFloatEq contained display '=' \ nextgroup=xinetdFloat skipwhite syn match xinetdFloat contained display '\d\+\.\d*\|\.\d\+' syn keyword xinetdAttribute contained umask nextgroup=xinetdOctalEq \ skipwhite syn match xinetdOctalEq contained display '=' \ nextgroup=xinetdOctal,xinetdOctalError \ skipwhite syn match xinetdOctal contained display '\<0\o\+\>' \ contains=xinetdOctalZero syn match xinetdOctalZero contained display '\<0' syn match xinetdOctalError contained display '\<0\o*[89]\d*\>' syn keyword xinetdAttribute contained rlimit_as nextgroup=xinetdASEq \ skipwhite syn match xinetdASEq contained display '=' \ nextgroup=xinetdAS,xinetdUnlimited \ skipwhite syn match xinetdAS contained display '\d\+' nextgroup=xinetdASMult syn match xinetdASMult contained display '[KM]' syn keyword xinetdAttribute contained deny_time nextgroup=xinetdDenyTimeEq \ skipwhite syn match xinetdDenyTimeEq contained display '=' \ nextgroup=xinetdDenyTime,xinetdNumber \ skipwhite syn keyword xinetdDenyTime contained FOREVER NEVER hi def link xinetdTodo Todo hi def link xinetdComment Comment hi def link xinetdService Keyword hi def link xinetdServiceName String hi def link xinetdDefaults Keyword hi def link xinetdServiceGroupD Delimiter hi def link xinetdReqAttribute Keyword hi def link xinetdAttribute Type hi def link xinetdEq Operator hi def link xinetdStringEq xinetdEq hi def link xinetdString String hi def link xinetdTypeEq xinetdEq hi def link xinetdType Identifier hi def link xinetdFlagsEq xinetdEq hi def link xinetdFlags xinetdType hi def link xinetdDeprFlags WarningMsg hi def link xinetdDisable Special hi def link xinetdBooleanEq xinetdEq hi def link xinetdBoolean Boolean hi def link xinetdSocketTypeEq xinetdEq hi def link xinetdSocketType xinetdType hi def link xinetdUNumberEq xinetdEq hi def link xinetdUnlimited Define hi def link xinetdNumber Number hi def link xinetdSignedNumEq xinetdEq hi def link xinetdSignedNumber xinetdNumber hi def link xinetdStringsEq xinetdEq hi def link xinetdStrings xinetdString hi def link xinetdStringsAdvEq xinetdEq hi def link xinetdTimeRangesEq xinetdEq hi def link xinetdTimeRanges Number hi def link xinetdLogTypeEq xinetdEq hi def link xinetdLogType Keyword hi def link xinetdSyslogType xinetdType hi def link xinetdSyslogLevel Number hi def link xinetdLogFile xinetdPath hi def link xinetdLogSoftLimit xinetdNumber hi def link xinetdLogHardLimit xinetdNumber hi def link xinetdLogSuccessEq xinetdEq hi def link xinetdLogSuccess xinetdType hi def link xinetdLogFailureEq xinetdEq hi def link xinetdLogFailure xinetdType hi def link xinetdRPCVersionEq xinetdEq hi def link xinetdRPCVersion xinetdNumber hi def link xinetdNumberEq xinetdEq hi def link xinetdEnvEq xinetdEq hi def link xinetdEnvName Identifier hi def link xinetdEnvNameEq xinetdEq hi def link xinetdEnvValue String hi def link xinetdPPAttribute PreProc hi def link xinetdPathEq xinetdEq hi def link xinetdPath String hi def link xinetdRedirectEq xinetdEq hi def link xinetdRedirectIP String hi def link xinetdCPSEq xinetdEq hi def link xinetdCPS xinetdNumber hi def link xinetdFloatEq xinetdEq hi def link xinetdFloat xinetdNumber hi def link xinetdOctalEq xinetdEq hi def link xinetdOctal xinetdNumber hi def link xinetdOctalZero PreProc hi def link xinetdOctalError Error hi def link xinetdASEq xinetdEq hi def link xinetdAS xinetdNumber hi def link xinetdASMult PreProc hi def link xinetdDenyTimeEq xinetdEq hi def link xinetdDenyTime PreProc let b:current_syntax = "xinetd" let &cpo = s:cpo_save unlet s:cpo_save PK!!vim80/syntax/bc.vimnu[" Vim syntax file " Language: bc - An arbitrary precision calculator language " Maintainer: Vladimir Scholtz " Last change: 2012 Jun 01 " (Dominique Pelle added @Spell) " Available on: www.gjh.sk/~vlado/bc.vim " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " Keywords syn keyword bcKeyword if else while for break continue return limits halt quit syn keyword bcKeyword define syn keyword bcKeyword length read sqrt print " Variable syn keyword bcType auto " Constant syn keyword bcConstant scale ibase obase last syn keyword bcConstant BC_BASE_MAX BC_DIM_MAX BC_SCALE_MAX BC_STRING_MAX syn keyword bcConstant BC_ENV_ARGS BC_LINE_LENGTH " Any other stuff syn match bcIdentifier "[a-z_][a-z0-9_]*" " String syn match bcString "\"[^"]*\"" contains=@Spell " Number syn match bcNumber "[0-9]\+" " Comment syn match bcComment "\#.*" contains=@Spell syn region bcComment start="/\*" end="\*/" contains=@Spell " Parent () syn cluster bcAll contains=bcList,bcIdentifier,bcNumber,bcKeyword,bcType,bcConstant,bcString,bcParentError syn region bcList matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=@bcAll syn region bcList matchgroup=Delimiter start="\[" skip="|.\{-}|" matchgroup=Delimiter end="\]" contains=@bcAll syn match bcParenError "]" syn match bcParenError ")" syn case match " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link bcKeyword Statement hi def link bcType Type hi def link bcConstant Constant hi def link bcNumber Number hi def link bcComment Comment hi def link bcString String hi def link bcSpecialChar SpecialChar hi def link bcParenError Error let b:current_syntax = "bc" " vim: ts=8 PK!:* * vim80/syntax/atlas.vimnu[" Vim syntax file " Language: ATLAS " Maintainer: Inaki Saez " Last Change: 2001 May 09 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore syn keyword atlasStatement begin terminate syn keyword atlasStatement fill calculate compare syn keyword atlasStatement setup connect close open disconnect reset syn keyword atlasStatement initiate read fetch syn keyword atlasStatement apply measure verify remove syn keyword atlasStatement perform leave finish output delay syn keyword atlasStatement prepare execute syn keyword atlasStatement do syn match atlasStatement "\" syn match atlasStatement "\" syn keyword atlasInclude include syn keyword atlasDefine define require declare identify "syn keyword atlasReserved true false go nogo hi lo via syn keyword atlasReserved true false syn keyword atlasStorageClass external global syn keyword atlasConditional if then else end syn keyword atlasRepeat while for thru " Flags BEF and statement number syn match atlasSpecial "^[BE ][ 0-9]\{,6}\>" " Number formats syn match atlasHexNumber "\" "Floating point number part only syn match atlasDecimalNumber "\.\d\+\([eE][-+]\=\d\)\=\>" syn region atlasFormatString start=+((+ end=+\())\)\|\()[ ]*\$\)+me=e-1 syn region atlasString start=+\ " Last Change: Aug 31, 2016 " Version: 7 " Notes: This file includes both SysV and BSD 'isms " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_EXPORTS " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Options: -word syn keyword exportsKeyOptions contained alldirs nohide ro wsync syn keyword exportsKeyOptions contained kerb o rw syn match exportsOptError contained "[a-z]\+" " Settings: word= syn keyword exportsKeySettings contained access anon root rw syn match exportsSetError contained "[a-z]\+" " OptSet: -word= syn keyword exportsKeyOptSet contained mapall maproot mask network syn match exportsOptSetError contained "[a-z]\+" " options and settings syn match exportsSettings "[a-z]\+=" contains=exportsKeySettings,exportsSetError syn match exportsOptions "-[a-z]\+" contains=exportsKeyOptions,exportsOptError syn match exportsOptSet "-[a-z]\+=" contains=exportsKeyOptSet,exportsOptSetError " Separators syn match exportsSeparator "[,:]" " comments syn match exportsComment "^\s*#.*$" contains=@Spell " Define the default highlighting. if !exists("skip_exports_syntax_inits") hi def link exportsKeyOptSet exportsKeySettings hi def link exportsOptSet exportsSettings hi def link exportsComment Comment hi def link exportsKeyOptions Type hi def link exportsKeySettings Keyword hi def link exportsOptions Constant hi def link exportsSeparator Constant hi def link exportsSettings Constant hi def link exportsOptError Error hi def link exportsOptSetError Error hi def link exportsSetError Error endif let b:current_syntax = "exports" " vim: ts=10 PK!Diivim80/syntax/stata.vimnu[" stata.vim -- Vim syntax file for Stata do, ado, and class files. " Language: Stata and/or Mata " Maintainer: Jeff Pitblado " Last Change: 26apr2006 " Version: 1.1.4 " Log: " 14apr2006 renamed syntax groups st* to stata* " 'syntax clear' only under version control " check for 'b:current_syntax', removed 'did_stata_syntax_inits' " 17apr2006 fixed start expression for stataFunc " 26apr2006 fixed brace confusion in stataErrInParen and stataErrInBracket " fixed paren/bracket confusion in stataFuncGroup " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syntax case match " comments - single line " note that the triple slash continuing line comment comes free syn region stataStarComment start=/^\s*\*/ end=/$/ contains=stataComment oneline syn region stataSlashComment start="\s//" end=/$/ contains=stataComment oneline syn region stataSlashComment start="^//" end=/$/ contains=stataComment oneline " comments - multiple line syn region stataComment start="/\*" end="\*/" contains=stataComment " global macros - simple case syn match stataGlobal /\$\a\w*/ " global macros - general case syn region stataGlobal start=/\${/ end=/}/ oneline contains=@stataMacroGroup " local macros - general case syn region stataLocal start=/`/ end=/'/ oneline contains=@stataMacroGroup " numeric formats syn match stataFormat /%-\=\d\+\.\d\+[efg]c\=/ " numeric hex format syn match stataFormat /%-\=21x/ " string format syn match stataFormat /%\(\|-\|\~\)\d\+s/ " Statements syn keyword stataConditional else if syn keyword stataRepeat foreach syn keyword stataRepeat forv[alues] syn keyword stataRepeat while " Common programming commands syn keyword stataCommand about syn keyword stataCommand adopath syn keyword stataCommand adoupdate syn keyword stataCommand assert syn keyword stataCommand break syn keyword stataCommand by syn keyword stataCommand cap[ture] syn keyword stataCommand cd syn keyword stataCommand chdir syn keyword stataCommand checksum syn keyword stataCommand class syn keyword stataCommand classutil syn keyword stataCommand compress syn keyword stataCommand conf[irm] syn keyword stataCommand conren syn keyword stataCommand continue syn keyword stataCommand cou[nt] syn keyword stataCommand cscript syn keyword stataCommand cscript_log syn keyword stataCommand #delimit syn keyword stataCommand d[escribe] syn keyword stataCommand dir syn keyword stataCommand discard syn keyword stataCommand di[splay] syn keyword stataCommand do syn keyword stataCommand doedit syn keyword stataCommand drop syn keyword stataCommand edit syn keyword stataCommand end syn keyword stataCommand erase syn keyword stataCommand eret[urn] syn keyword stataCommand err[or] syn keyword stataCommand e[xit] syn keyword stataCommand expand syn keyword stataCommand expandcl syn keyword stataCommand file syn keyword stataCommand findfile syn keyword stataCommand format syn keyword stataCommand g[enerate] syn keyword stataCommand gettoken syn keyword stataCommand gl[obal] syn keyword stataCommand help syn keyword stataCommand hexdump syn keyword stataCommand include syn keyword stataCommand infile syn keyword stataCommand infix syn keyword stataCommand input syn keyword stataCommand insheet syn keyword stataCommand joinby syn keyword stataCommand la[bel] syn keyword stataCommand levelsof syn keyword stataCommand list syn keyword stataCommand loc[al] syn keyword stataCommand log syn keyword stataCommand ma[cro] syn keyword stataCommand mark syn keyword stataCommand markout syn keyword stataCommand marksample syn keyword stataCommand mata syn keyword stataCommand matrix syn keyword stataCommand memory syn keyword stataCommand merge syn keyword stataCommand mkdir syn keyword stataCommand more syn keyword stataCommand net syn keyword stataCommand nobreak syn keyword stataCommand n[oisily] syn keyword stataCommand note[s] syn keyword stataCommand numlist syn keyword stataCommand outfile syn keyword stataCommand outsheet syn keyword stataCommand _parse syn keyword stataCommand pause syn keyword stataCommand plugin syn keyword stataCommand post syn keyword stataCommand postclose syn keyword stataCommand postfile syn keyword stataCommand preserve syn keyword stataCommand print syn keyword stataCommand printer syn keyword stataCommand profiler syn keyword stataCommand pr[ogram] syn keyword stataCommand q[uery] syn keyword stataCommand qui[etly] syn keyword stataCommand rcof syn keyword stataCommand reg[ress] syn keyword stataCommand rename syn keyword stataCommand repeat syn keyword stataCommand replace syn keyword stataCommand reshape syn keyword stataCommand ret[urn] syn keyword stataCommand _rmcoll syn keyword stataCommand _rmcoll syn keyword stataCommand _rmcollright syn keyword stataCommand rmdir syn keyword stataCommand _robust syn keyword stataCommand save syn keyword stataCommand sca[lar] syn keyword stataCommand search syn keyword stataCommand serset syn keyword stataCommand set syn keyword stataCommand shell syn keyword stataCommand sleep syn keyword stataCommand sort syn keyword stataCommand split syn keyword stataCommand sret[urn] syn keyword stataCommand ssc syn keyword stataCommand su[mmarize] syn keyword stataCommand syntax syn keyword stataCommand sysdescribe syn keyword stataCommand sysdir syn keyword stataCommand sysuse syn keyword stataCommand token[ize] syn keyword stataCommand translate syn keyword stataCommand type syn keyword stataCommand unab syn keyword stataCommand unabcmd syn keyword stataCommand update syn keyword stataCommand use syn keyword stataCommand vers[ion] syn keyword stataCommand view syn keyword stataCommand viewsource syn keyword stataCommand webdescribe syn keyword stataCommand webseek syn keyword stataCommand webuse syn keyword stataCommand which syn keyword stataCommand who syn keyword stataCommand window " Literals syn match stataQuote /"/ syn region stataEString matchgroup=Nothing start=/`"/ end=/"'/ oneline contains=@stataMacroGroup,stataQuote,stataString,stataEString syn region stataString matchgroup=Nothing start=/"/ end=/"/ oneline contains=@stataMacroGroup " define clusters syn cluster stataFuncGroup contains=@stataMacroGroup,stataFunc,stataString,stataEstring,stataParen,stataBracket syn cluster stataMacroGroup contains=stataGlobal,stataLocal syn cluster stataParenGroup contains=stataParenError,stataBracketError,stataBraceError,stataSpecial,stataFormat " Stata functions " Math syn region stataFunc matchgroup=Function start=/\ " Last Change: 2002 Feb 24 " Remark: Huge improvement in folding performance--see filetype plugin " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Abaqus comment lines syn match abaqusComment "^\*\*.*$" " Abaqus keyword lines syn match abaqusKeywordLine "^\*\h.*" contains=abaqusKeyword,abaqusParameter,abaqusValue display syn match abaqusKeyword "^\*\h[^,]*" contained display syn match abaqusParameter ",[^,=]\+"lc=1 contained display syn match abaqusValue "=\s*[^,]*"lc=1 contained display " Illegal syntax syn match abaqusBadLine "^\s\+\*.*" display " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overridden later hi def link abaqusComment Comment hi def link abaqusKeyword Statement hi def link abaqusParameter Identifier hi def link abaqusValue Constant hi def link abaqusBadLine Error let b:current_syntax = "abaqus" PK!5M@77vim80/syntax/r.vimnu[" Vim syntax file " Language: R (GNU S) " Maintainer: Jakson Aquino " Former Maintainers: Vaidotas Zemlys " Tom Payne " Contributor: Johannes Ranke " Homepage: https://github.com/jalvesaq/R-Vim-runtime " Last Change: Sat Apr 08, 2017 07:01PM " Filenames: *.R *.r *.Rhistory *.Rt " " NOTE: The highlighting of R functions might be defined in " runtime files created by a filetype plugin, if installed. " " CONFIGURATION: " Syntax folding can be turned on by " " let r_syntax_folding = 1 " " ROxygen highlighting can be turned off by " " let r_syntax_hl_roxygen = 0 " " Some lines of code were borrowed from Zhuojun Chen. if exists("b:current_syntax") finish endif if has("patch-7.4.1142") syn iskeyword @,48-57,_,. else setlocal iskeyword=@,48-57,_,. endif " The variables g:r_hl_roxygen and g:r_syn_minlines were renamed on April 8, 2017. if exists("g:r_hl_roxygen") let g:r_syntax_hl_roxygen = g:r_hl_roxygen endif if exists("g:r_syn_minlines") let g:r_syntax_minlines = g:r_syn_minlines endif if exists("g:r_syntax_folding") && g:r_syntax_folding setlocal foldmethod=syntax endif if !exists("g:r_syntax_hl_roxygen") let g:r_syntax_hl_roxygen = 1 endif syn case match " Comment syn match rCommentTodo contained "\(BUG\|FIXME\|NOTE\|TODO\):" syn match rComment contains=@Spell,rCommentTodo,rOBlock "#.*" " Roxygen if g:r_syntax_hl_roxygen " A roxygen block can start at the beginning of a file (first version) and " after a blank line (second version). It ends when a line that does not " contain a roxygen comment. In the following comments, any line containing " a roxygen comment marker (one or two hash signs # followed by a single " quote ' and preceded only by whitespace) is called a roxygen line. A " roxygen line containing only a roxygen comment marker, optionally followed " by whitespace is called an empty roxygen line. " First we match all roxygen blocks as containing only a title. In case an " empty roxygen line ending the title or a tag is found, this will be " overriden later by the definitions of rOBlock. syn match rOTitleBlock "\%^\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag syn match rOTitleBlock "^\s*\n\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag " When a roxygen block has a title and additional content, the title " consists of one or more roxygen lines (as little as possible are matched), " followed either by an empty roxygen line syn region rOBlock start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold syn region rOBlock start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold " or by a roxygen tag (we match everything starting with @ but not @@ which is used as escape sequence for a literal @). syn region rOBlock start="\%^\(\s*#\{1,2}' .*\n\)\{-}\s*#\{1,2}' @\(@\)\@!" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold syn region rOBlock start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-}\s*#\{1,2}' @\(@\)\@!" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold " If a block contains an @rdname, @describeIn tag, it may have paragraph breaks, but does not have a title syn region rOBlockNoTitle start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @rdname" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold syn region rOBlockNoTitle start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @rdname" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold syn region rOBlockNoTitle start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold syn region rOBlockNoTitle start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold " A title as part of a block is always at the beginning of the block, i.e. " either at the start of a file or after a completely empty line. syn match rOTitle "\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag syn match rOTitle "^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag syn match rOTitleTag contained "@title" syn match rOCommentKey "#\{1,2}'" contained syn region rOExamples start="^#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOTag fold " rOTag list generated from the lists in " https://github.com/klutometis/roxygen/R/rd.R and " https://github.com/klutometis/roxygen/R/namespace.R " using s/^ \([A-Za-z0-9]*\) = .*/ syn match rOTag contained "@\1"/ " Plus we need the @include tag " rd.R syn match rOTag contained "@aliases" syn match rOTag contained "@author" syn match rOTag contained "@backref" syn match rOTag contained "@concept" syn match rOTag contained "@describeIn" syn match rOTag contained "@description" syn match rOTag contained "@details" syn match rOTag contained "@docType" syn match rOTag contained "@encoding" syn match rOTag contained "@evalRd" syn match rOTag contained "@example" syn match rOTag contained "@examples" syn match rOTag contained "@family" syn match rOTag contained "@field" syn match rOTag contained "@format" syn match rOTag contained "@inherit" syn match rOTag contained "@inheritParams" syn match rOTag contained "@inheritDotParams" syn match rOTag contained "@inheritSection" syn match rOTag contained "@keywords" syn match rOTag contained "@method" syn match rOTag contained "@name" syn match rOTag contained "@md" syn match rOTag contained "@noMd" syn match rOTag contained "@noRd" syn match rOTag contained "@note" syn match rOTag contained "@param" syn match rOTag contained "@rdname" syn match rOTag contained "@rawRd" syn match rOTag contained "@references" syn match rOTag contained "@return" syn match rOTag contained "@section" syn match rOTag contained "@seealso" syn match rOTag contained "@slot" syn match rOTag contained "@source" syn match rOTag contained "@template" syn match rOTag contained "@templateVar" syn match rOTag contained "@title" syn match rOTag contained "@usage" " namespace.R syn match rOTag contained "@export" syn match rOTag contained "@exportClass" syn match rOTag contained "@exportMethod" syn match rOTag contained "@exportPattern" syn match rOTag contained "@import" syn match rOTag contained "@importClassesFrom" syn match rOTag contained "@importFrom" syn match rOTag contained "@importMethodsFrom" syn match rOTag contained "@rawNamespace" syn match rOTag contained "@S3method" syn match rOTag contained "@useDynLib" " other syn match rOTag contained "@include" endif if &filetype == "rhelp" " string enclosed in double quotes syn region rString contains=rSpecial,@Spell start=/"/ skip=/\\\\\|\\"/ end=/"/ " string enclosed in single quotes syn region rString contains=rSpecial,@Spell start=/'/ skip=/\\\\\|\\'/ end=/'/ else " string enclosed in double quotes syn region rString contains=rSpecial,rStrError,@Spell start=/"/ skip=/\\\\\|\\"/ end=/"/ " string enclosed in single quotes syn region rString contains=rSpecial,rStrError,@Spell start=/'/ skip=/\\\\\|\\'/ end=/'/ endif syn match rStrError display contained "\\." " New line, carriage return, tab, backspace, bell, feed, vertical tab, backslash syn match rSpecial display contained "\\\(n\|r\|t\|b\|a\|f\|v\|'\|\"\)\|\\\\" " Hexadecimal and Octal digits syn match rSpecial display contained "\\\(x\x\{1,2}\|[0-8]\{1,3}\)" " Unicode characters syn match rSpecial display contained "\\u\x\{1,4}" syn match rSpecial display contained "\\U\x\{1,8}" syn match rSpecial display contained "\\u{\x\{1,4}}" syn match rSpecial display contained "\\U{\x\{1,8}}" " Statement syn keyword rStatement break next return syn keyword rConditional if else syn keyword rRepeat for in repeat while " Constant (not really) syn keyword rConstant T F LETTERS letters month.abb month.name pi syn keyword rConstant R.version.string syn keyword rNumber NA_integer_ NA_real_ NA_complex_ NA_character_ " Constants syn keyword rConstant NULL syn keyword rBoolean FALSE TRUE syn keyword rNumber NA Inf NaN " integer syn match rInteger "\<\d\+L" syn match rInteger "\<0x\([0-9]\|[a-f]\|[A-F]\)\+L" syn match rInteger "\<\d\+[Ee]+\=\d\+L" " number with no fractional part or exponent syn match rNumber "\<\d\+\>" " hexadecimal number syn match rNumber "\<0x\([0-9]\|[a-f]\|[A-F]\)\+" " floating point number with integer and fractional parts and optional exponent syn match rFloat "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\=" " floating point number with no integer part and optional exponent syn match rFloat "\<\.\d\+\([Ee][-+]\=\d\+\)\=" " floating point number with no fractional part and optional exponent syn match rFloat "\<\d\+[Ee][-+]\=\d\+" " complex number syn match rComplex "\<\d\+i" syn match rComplex "\<\d\++\d\+i" syn match rComplex "\<0x\([0-9]\|[a-f]\|[A-F]\)\+i" syn match rComplex "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\=i" syn match rComplex "\<\.\d\+\([Ee][-+]\=\d\+\)\=i" syn match rComplex "\<\d\+[Ee][-+]\=\d\+i" syn match rAssign '=' syn match rOperator "&" syn match rOperator '-' syn match rOperator '\*' syn match rOperator '+' if &filetype != "rmd" && &filetype != "rrst" syn match rOperator "[|!<>^~/:]" else syn match rOperator "[|!<>^~`/:]" endif syn match rOperator "%\{2}\|%\S\{-}%" syn match rOperator '\([!><]\)\@<==' syn match rOperator '==' syn match rOpError '\*\{3}' syn match rOpError '//' syn match rOpError '&&&' syn match rOpError '|||' syn match rOpError '<<' syn match rOpError '>>' syn match rAssign "<\{1,2}-" syn match rAssign "->\{1,2}" " Special syn match rDelimiter "[,;:]" " Error if exists("g:r_syntax_folding") syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError fold syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError fold syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError fold else syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError endif syn match rError "[)\]}]" syn match rBraceError "[)}]" contained syn match rCurlyError "[)\]]" contained syn match rParenError "[\]}]" contained " Use Nvim-R to highlight functions dynamically if it is installed if !exists("g:r_syntax_fun_pattern") let s:ff = split(substitute(globpath(&rtp, "R/functions.vim"), "functions.vim", "", "g"), "\n") if len(s:ff) > 0 let g:r_syntax_fun_pattern = 0 else let g:r_syntax_fun_pattern = 1 endif endif " Only use Nvim-R to highlight functions if they should not be highlighted " according to a generic pattern if g:r_syntax_fun_pattern == 1 syn match rFunction '[0-9a-zA-Z_\.]\+\s*\ze(' else if !exists("g:R_hi_fun") let g:R_hi_fun = 1 endif if g:R_hi_fun " Nvim-R: runtime R/functions.vim endif endif syn match rDollar display contained "\$" syn match rDollar display contained "@" " List elements will not be highlighted as functions: syn match rLstElmt "\$[a-zA-Z0-9\\._]*" contains=rDollar syn match rLstElmt "@[a-zA-Z0-9\\._]*" contains=rDollar " Functions that may add new objects syn keyword rPreProc library require attach detach source if &filetype == "rhelp" syn match rHelpIdent '\\method' syn match rHelpIdent '\\S4method' endif " Type syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame " Name of object with spaces if &filetype != "rmd" && &filetype != "rrst" syn region rNameWSpace start="`" end="`" endif if &filetype == "rhelp" syn match rhPreProc "^#ifdef.*" syn match rhPreProc "^#endif.*" syn match rhSection "\\dontrun\>" endif if exists("r_syntax_minlines") exe "syn sync minlines=" . r_syntax_minlines else syn sync minlines=40 endif " Define the default highlighting. hi def link rAssign Statement hi def link rBoolean Boolean hi def link rBraceError Error hi def link rComment Comment hi def link rCommentTodo Todo hi def link rComplex Number hi def link rConditional Conditional hi def link rConstant Constant hi def link rCurlyError Error hi def link rDelimiter Delimiter hi def link rDollar SpecialChar hi def link rError Error hi def link rFloat Float hi def link rFunction Function hi def link rHelpIdent Identifier hi def link rhPreProc PreProc hi def link rhSection PreCondit hi def link rInteger Number hi def link rLstElmt Normal hi def link rNameWSpace Normal hi def link rNumber Number hi def link rOperator Operator hi def link rOpError Error hi def link rParenError Error hi def link rPreProc PreProc hi def link rRepeat Repeat hi def link rSpecial SpecialChar hi def link rStatement Statement hi def link rString String hi def link rStrError Error hi def link rType Type if g:r_syntax_hl_roxygen hi def link rOTitleTag Operator hi def link rOTag Operator hi def link rOTitleBlock Title hi def link rOBlock Comment hi def link rOBlockNoTitle Comment hi def link rOTitle Title hi def link rOCommentKey Comment hi def link rOExamples SpecialComment endif let b:current_syntax="r" " vim: ts=8 sw=2 PK!Do vim80/syntax/passwd.vimnu[" Vim syntax file " Language: passwd(5) password file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-10-03 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match passwdBegin display '^' nextgroup=passwdAccount syn match passwdAccount contained display '[^:]\+' \ nextgroup=passwdPasswordColon syn match passwdPasswordColon contained display ':' \ nextgroup=passwdPassword,passwdShadow syn match passwdPassword contained display '[^:]\+' \ nextgroup=passwdUIDColon syn match passwdShadow contained display '[x*!]' \ nextgroup=passwdUIDColon syn match passwdUIDColon contained display ':' nextgroup=passwdUID syn match passwdUID contained display '\d\{0,10}' \ nextgroup=passwdGIDColon syn match passwdGIDColon contained display ':' nextgroup=passwdGID syn match passwdGID contained display '\d\{0,10}' \ nextgroup=passwdGecosColon syn match passwdGecosColon contained display ':' nextgroup=passwdGecos syn match passwdGecos contained display '[^:]*' \ nextgroup=passwdDirColon syn match passwdDirColon contained display ':' nextgroup=passwdDir syn match passwdDir contained display '/[^:]*' \ nextgroup=passwdShellColon syn match passwdShellColon contained display ':' \ nextgroup=passwdShell syn match passwdShell contained display '.*' hi def link passwdColon Normal hi def link passwdAccount Identifier hi def link passwdPasswordColon passwdColon hi def link passwdPassword Number hi def link passwdShadow Special hi def link passwdUIDColon passwdColon hi def link passwdUID Number hi def link passwdGIDColon passwdColon hi def link passwdGID Number hi def link passwdGecosColon passwdColon hi def link passwdGecos Comment hi def link passwdDirColon passwdColon hi def link passwdDir Type hi def link passwdShellColon passwdColon hi def link passwdShell Operator let b:current_syntax = "passwd" let &cpo = s:cpo_save unlet s:cpo_save PK!Ãha vim80/syntax/kwt.vimnu[" Vim syntax file " Language: kimwitu++ " Maintainer: Michael Piefel " Last Change: 2 May 2001 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Read the C++ syntax to start with runtime! syntax/cpp.vim unlet b:current_syntax " kimwitu++ extentions " Don't stop at eol, messes around with CPP mode, but gives line spanning " strings in unparse rules syn region cCppString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat syn keyword cType integer real casestring nocasestring voidptr list syn keyword cType uview rview uview_enum rview_enum " avoid unparsing rule sth:view being scanned as label syn clear cUserCont syn match cUserCont "^\s*\I\i*\s*:$" contains=cUserLabel contained syn match cUserCont ";\s*\I\i*\s*:$" contains=cUserLabel contained syn match cUserCont "^\s*\I\i*\s*:[^:]"me=e-1 contains=cUserLabel contained syn match cUserCont ";\s*\I\i*\s*:[^:]"me=e-1 contains=cUserLabel contained " highlight phylum decls syn match kwtPhylum "^\I\i*:$" syn match kwtPhylum "^\I\i*\s*{\s*\(!\|\I\)\i*\s*}\s*:$" syn keyword kwtStatement with foreach afterforeach provided syn match kwtDecl "%\(uviewvar\|rviewvar\)" syn match kwtDecl "^%\(uview\|rview\|ctor\|dtor\|base\|storageclass\|list\|attr\|member\|option\)" syn match kwtOption "no-csgio\|no-unparse\|no-rewrite\|no-printdot\|no-hashtables\|smart-pointer\|weak-pointer" syn match kwtSep "^%}$" syn match kwtSep "^%{\(\s\+\I\i*\)*$" syn match kwtCast "\ " Simon Bradley " Contributors: Preben Randhol. " $Author: krischik $ " $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ " Version: 4.6 " $Revision: 887 $ " $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/syntax/ada.vim $ " http://www.dwheeler.com/vim " History: 24.05.2006 MK Unified Headers " 26.05.2006 MK ' should not be in iskeyword. " 16.07.2006 MK Ada-Mode as vim-ball " 02.10.2006 MK Better folding. " 15.10.2006 MK Bram's suggestion for runtime integration " 05.11.2006 MK Spell check for comments and strings only " 05.11.2006 MK Bram suggested to save on spaces " Help Page: help ft-ada-syntax "------------------------------------------------------------------------------ " The formal spec of Ada 2005 (ARM) is the "Ada 2005 Reference Manual". " For more Ada 2005 info, see http://www.gnuada.org and http://www.adapower.com. " " This vim syntax file works on vim 7.0 only and makes use of most of Voim 7.0 " advanced features. "------------------------------------------------------------------------------ if exists("b:current_syntax") || version < 700 finish endif let s:keepcpo= &cpo set cpo&vim let b:current_syntax = "ada" " Section: Ada is entirely case-insensitive. {{{1 " syntax case ignore " Section: Highlighting commands {{{1 " " There are 72 reserved words in total in Ada2005. Some keywords are " used in more than one way. For example: " 1. "end" is a general keyword, but "end if" ends a Conditional. " 2. "then" is a conditional, but "and then" is an operator. " for b:Item in g:ada#Keywords " Standard Exceptions (including I/O). " We'll highlight the standard exceptions, similar to vim's Python mode. " It's possible to redefine the standard exceptions as something else, " but doing so is very bad practice, so simply highlighting them makes sense. if b:Item['kind'] == "x" execute "syntax keyword adaException " . b:Item['word'] endif if b:Item['kind'] == "a" execute 'syntax match adaAttribute "\V' . b:Item['word'] . '"' endif " We don't normally highlight types in package Standard " (Integer, Character, Float, etc.). I don't think it looks good " with the other type keywords, and many Ada programs define " so many of their own types that it looks inconsistent. " However, if you want this highlighting, turn on "ada_standard_types". " For package Standard's definition, see ARM section A.1. if b:Item['kind'] == "t" && exists ("g:ada_standard_types") execute "syntax keyword adaBuiltinType " . b:Item['word'] endif endfor " Section: others {{{1 " syntax keyword adaLabel others " Section: Operatoren {{{1 " syntax keyword adaOperator abs mod not rem xor syntax match adaOperator "\" syntax match adaOperator "\" syntax match adaOperator "\" syntax match adaOperator "\" syntax match adaOperator "[-+*/<>&]" syntax keyword adaOperator ** syntax match adaOperator "[/<>]=" syntax keyword adaOperator => syntax match adaOperator "\.\." syntax match adaOperator "=" " Section: <> {{{1 " " Handle the box, <>, specially: " syntax keyword adaSpecial <> " Section: rainbow color {{{1 " if exists("g:ada_rainbow_color") syntax match adaSpecial "[:;.,]" call rainbow_parenthsis#LoadRound () call rainbow_parenthsis#Activate () else syntax match adaSpecial "[:;().,]" endif " Section: := {{{1 " " We won't map "adaAssignment" by default, but we need to map ":=" to " something or the "=" inside it will be mislabelled as an operator. " Note that in Ada, assignment (:=) is not considered an operator. " syntax match adaAssignment ":=" " Section: Numbers, including floating point, exponents, and alternate bases. {{{1 " syntax match adaNumber "\<\d[0-9_]*\(\.\d[0-9_]*\)\=\([Ee][+-]\=\d[0-9_]*\)\=\>" syntax match adaNumber "\<\d\d\=#\x[0-9A-Fa-f_]*\(\.\x[0-9A-Fa-f_]*\)\=#\([Ee][+-]\=\d[0-9_]*\)\=" " Section: Identify leading numeric signs {{{1 " " In "A-5" the "-" is an operator, " but in "A:=-5" the "-" is a sign. This " handles "A3+-5" (etc.) correctly. " This assumes that if you put a " don't put a space after +/- when it's used " as an operator, you won't " put a space before it either -- which is true " in code I've seen. " syntax match adaSign "[[:space:]<>=(,|:;&*/+-][+-]\d"lc=1,hs=s+1,he=e-1,me=e-1 " Section: Labels for the goto statement. {{{1 " syntax region adaLabel start="<<" end=">>" " Section: Boolean Constants {{{1 " Boolean Constants. syntax keyword adaBoolean true false " Section: Warn C/C++ {{{1 " " Warn people who try to use C/C++ notation erroneously: " syntax match adaError "//" syntax match adaError "/\*" syntax match adaError "==" " Section: Space Errors {{{1 " if exists("g:ada_space_errors") if !exists("g:ada_no_trail_space_error") syntax match adaSpaceError excludenl "\s\+$" endif if !exists("g:ada_no_tab_space_error") syntax match adaSpaceError " \+\t"me=e-1 endif if !exists("g:ada_all_tab_usage") syntax match adaSpecial "\t" endif endif " Section: end {{{1 " Unless special ("end loop", "end if", etc.), "end" marks the end of a " begin, package, task etc. Assiging it to adaEnd. syntax match adaEnd /\/ syntax keyword adaPreproc pragma syntax keyword adaRepeat exit for loop reverse while syntax match adaRepeat "\" syntax keyword adaStatement accept delay goto raise requeue return syntax keyword adaStatement terminate syntax match adaStatement "\" " Section: Handle Ada's record keywords. {{{1 " " 'record' usually starts a structure, but "with null record;" does not, " and 'end record;' ends a structure. The ordering here is critical - " 'record;' matches a "with null record", so make it a keyword (this can " match when the 'with' or 'null' is on a previous line). " We see the "end" in "end record" before the word record, so we match that " pattern as adaStructure (and it won't match the "record;" pattern). " syntax match adaStructure "\" contains=adaRecord syntax match adaStructure "\" contains=adaRecord syntax match adaKeyword "\" syntax match adaConditional "\" syntax match adaConditional "\" syntax match adaConditional "\" syntax match adaConditional "\" syntax match adaConditional "\" syntax keyword adaConditional if case select syntax keyword adaConditional elsif when " Section: other keywords {{{1 syntax match adaKeyword "\" contains=adaRecord syntax keyword adaKeyword all do exception in new null out syntax keyword adaKeyword separate until overriding " Section: begin keywords {{{1 " " These keywords begin various constructs, and you _might_ want to " highlight them differently. " syntax keyword adaBegin begin body declare entry generic syntax keyword adaBegin protected renames task syntax match adaBegin "\" contains=adaFunction syntax match adaBegin "\" contains=adaProcedure syntax match adaBegin "\" contains=adaPackage if exists("ada_with_gnat_project_files") syntax keyword adaBegin project endif " Section: with, use {{{1 " if exists("ada_withuse_ordinary") " Don't be fancy. Display "with" and "use" as ordinary keywords in all cases. syntax keyword adaKeyword with use else " Highlight "with" and "use" clauses like C's "#include" when they're used " to reference other compilation units; otherwise they're ordinary keywords. " If we have vim 6.0 or later, we'll use its advanced pattern-matching " capabilities so that we won't match leading spaces. syntax match adaKeyword "\" syntax match adaKeyword "\" syntax match adaBeginWith "^\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc syntax match adaSemiWith ";\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc syntax match adaInc "\" contained contains=NONE syntax match adaInc "\" contained contains=NONE syntax match adaInc "\" contained contains=NONE " Recognize "with null record" as a keyword (even the "record"). syntax match adaKeyword "\" " Consider generic formal parameters of subprograms and packages as keywords. syntax match adaKeyword ";\s*\zswith\s\+\(function\|procedure\|package\)\>" syntax match adaKeyword "^\s*\zswith\s\+\(function\|procedure\|package\)\>" endif " Section: String and character constants. {{{1 " syntax region adaString contains=@Spell start=+"+ skip=+""+ end=+"+ syntax match adaCharacter "'.'" " Section: Todo (only highlighted in comments) {{{1 " syntax keyword adaTodo contained TODO FIXME XXX NOTE " Section: Comments. {{{1 " syntax region adaComment \ oneline \ contains=adaTodo,adaLineError,@Spell \ start="--" \ end="$" " Section: line errors {{{1 " " Note: Line errors have become quite slow with Vim 7.0 " if exists("g:ada_line_errors") syntax match adaLineError "\(^.\{79}\)\@<=." contains=ALL containedin=ALL endif " Section: syntax folding {{{1 " " Syntax folding is very tricky - for now I still suggest to use " indent folding " if exists("g:ada_folding") && g:ada_folding[0] == 's' if stridx (g:ada_folding, 'p') >= 0 syntax region adaPackage \ start="\(\\|\\)\s*\z(\k*\)" \ end="end\s\+\z1\s*;" \ keepend extend transparent fold contains=ALL endif if stridx (g:ada_folding, 'f') >= 0 syntax region adaProcedure \ start="\\s*\z(\k*\)" \ end="\\s\+\z1\s*;" \ keepend extend transparent fold contains=ALL syntax region adaFunction \ start="\\s*\z(\k*\)" \ end="end\s\+\z1\s*;" \ keepend extend transparent fold contains=ALL endif if stridx (g:ada_folding, 'f') >= 0 syntax region adaRecord \ start="\" \ end="\" \ keepend extend transparent fold contains=ALL endif endif " Section: The default methods for highlighting. Can be overridden later. {{{1 " highlight def link adaCharacter Character highlight def link adaComment Comment highlight def link adaConditional Conditional highlight def link adaKeyword Keyword highlight def link adaLabel Label highlight def link adaNumber Number highlight def link adaSign Number highlight def link adaOperator Operator highlight def link adaPreproc PreProc highlight def link adaRepeat Repeat highlight def link adaSpecial Special highlight def link adaStatement Statement highlight def link adaString String highlight def link adaStructure Structure highlight def link adaTodo Todo highlight def link adaType Type highlight def link adaTypedef Typedef highlight def link adaStorageClass StorageClass highlight def link adaBoolean Boolean highlight def link adaException Exception highlight def link adaAttribute Tag highlight def link adaInc Include highlight def link adaError Error highlight def link adaSpaceError Error highlight def link adaLineError Error highlight def link adaBuiltinType Type highlight def link adaAssignment Special " Subsection: Begin, End {{{2 " if exists ("ada_begin_preproc") " This is the old default display: highlight def link adaBegin PreProc highlight def link adaEnd PreProc else " This is the new default display: highlight def link adaBegin Keyword highlight def link adaEnd Keyword endif " Section: sync {{{1 " " We don't need to look backwards to highlight correctly; " this speeds things up greatly. syntax sync minlines=1 maxlines=1 let &cpo = s:keepcpo unlet s:keepcpo finish " 1}}} "------------------------------------------------------------------------------ " Copyright (C) 2006 Martin Krischik " " Vim is Charityware - see ":help license" or uganda.txt for licence details. "------------------------------------------------------------------------------ "vim: textwidth=78 nowrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab "vim: foldmethod=marker PK!2̶a#a#vim80/syntax/pov.vimnu[" Vim syntax file " Language: PoV-Ray(tm) 3.7 Scene Description Language " Maintainer: David Necas (Yeti) " Last Change: 2011-04-23 " Required Vim Version: 6.0 " Setup " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case match " Top level stuff syn keyword povCommands global_settings syn keyword povObjects array atmosphere background bicubic_patch blob box camera component cone cubic cylinder disc fog height_field isosurface julia_fractal lathe light_group light_source mesh mesh2 object ovus parametric pattern photons plane poly polygon polynomial prism quadric quartic rainbow sky_sphere smooth_triangle sor sphere sphere_sweep spline superellipsoid text torus triangle syn keyword povCSG clipped_by composite contained_by difference intersection merge union syn keyword povAppearance interior material media texture interior_texture texture_list syn keyword povGlobalSettings ambient_light assumed_gamma charset hf_gray_16 irid_wavelength max_intersections max_trace_level number_of_waves radiosity noise_generator syn keyword povTransform inverse matrix rotate scale translate transform " Descriptors syn keyword povDescriptors finish inside_vector normal pigment uv_mapping uv_vectors vertex_vectors syn keyword povDescriptors adc_bailout always_sample brightness count error_bound distance_maximum gray_threshold load_file low_error_factor maximum_reuse max_sample media minimum_reuse mm_per_unit nearest_count normal pretrace_end pretrace_start recursion_limit save_file syn keyword povDescriptors color colour rgb rgbt rgbf rgbft srgb srgbf srgbt srgbft syn match povDescriptors "\<\(red\|green\|blue\|gray\)\>" syn keyword povDescriptors bump_map color_map colour_map image_map material_map pigment_map quick_color quick_colour normal_map texture_map image_pattern pigment_pattern syn keyword povDescriptors ambient brilliance conserve_energy crand diffuse fresnel irid metallic phong phong_size refraction reflection reflection_exponent roughness specular subsurface syn keyword povDescriptors cylinder fisheye mesh_camera omnimax orthographic panoramic perspective spherical ultra_wide_angle syn keyword povDescriptors agate aoi average brick boxed bozo bumps cells checker crackle cylindrical dents facets function gradient granite hexagon julia leopard magnet mandel marble onion pavement planar quilted radial ripples slope spherical spiral1 spiral2 spotted square tiles tile2 tiling toroidal triangular waves wood wrinkles syn keyword povDescriptors density_file syn keyword povDescriptors area_light shadowless spotlight parallel syn keyword povDescriptors absorption confidence density emission intervals ratio samples scattering variance syn keyword povDescriptors distance fog_alt fog_offset fog_type turb_depth syn keyword povDescriptors b_spline bezier_spline cubic_spline evaluate face_indices form linear_spline max_gradient natural_spline normal_indices normal_vectors quadratic_spline uv_indices syn keyword povDescriptors target " Modifiers syn keyword povModifiers caustics dispersion dispersion_samples fade_color fade_colour fade_distance fade_power ior syn keyword povModifiers bounded_by double_illuminate hierarchy hollow no_shadow open smooth sturm threshold water_level syn keyword povModifiers importance no_radiosity syn keyword povModifiers hypercomplex max_iteration precision quaternion slice syn keyword povModifiers conic_sweep linear_sweep syn keyword povModifiers flatness type u_steps v_steps syn keyword povModifiers aa_level aa_threshold adaptive area_illumination falloff jitter looks_like media_attenuation media_interaction method point_at radius tightness syn keyword povModifiers angle aperture bokeh blur_samples confidence direction focal_point h_angle location look_at right sky up v_angle variance syn keyword povModifiers all bump_size gamma interpolate map_type once premultiplied slope_map use_alpha use_color use_colour use_index syn match povModifiers "\<\(filter\|transmit\)\>" syn keyword povModifiers black_hole agate_turb brick_size control0 control1 cubic_wave density_map flip frequency interpolate inverse lambda metric mortar octaves offset omega phase poly_wave ramp_wave repeat scallop_wave sine_wave size strength triangle_wave thickness turbulence turb_depth type warp syn keyword povModifiers eccentricity extinction syn keyword povModifiers arc_angle falloff_angle width syn keyword povModifiers accuracy all_intersections altitude autostop circular collect coords cutaway_textures dist_exp expand_thresholds exponent exterior gather global_lights major_radius max_trace no_bump_scale no_image no_reflection orient orientation pass_through precompute projected_through range_divider solid spacing split_union tolerance " Words not marked `reserved' in documentation, but... syn keyword povBMPType alpha exr gif hdr iff jpeg pgm png pot ppm sys tga tiff syn keyword povFontType ttf contained syn keyword povDensityType df3 contained syn keyword povCharset ascii utf8 contained " Math functions on floats, vectors and strings syn keyword povFunctions abs acos acosh asc asin asinh atan atan2 atanh bitwise_and bitwise_or bitwise_xor ceil cos cosh defined degrees dimensions dimension_size div exp file_exists floor inside int internal ln log max min mod pow prod radians rand seed select sin sinh sqrt strcmp strlen sum tan tanh val vdot vlength vstr vturbulence syn keyword povFunctions min_extent max_extent trace vcross vrotate vaxis_rotate vnormalize vturbulence syn keyword povFunctions chr concat datetime now substr str strupr strlwr syn keyword povJuliaFunctions acosh asinh atan cosh cube pwr reciprocal sinh sqr tanh " Specialities syn keyword povConsts clock clock_delta clock_on final_clock final_frame frame_number initial_clock initial_frame input_file_name image_width image_height false no off on pi true version yes syn match povConsts "\<[tuvxyz]\>" syn match povDotItem "\.\@<=\(blue\|green\|gray\|filter\|red\|transmit\|hf\|t\|u\|v\|x\|y\|z\)\>" display " Comments syn region povComment start="/\*" end="\*/" contains=povTodo,povComment syn match povComment "//.*" contains=povTodo syn match povCommentError "\*/" syn sync ccomment povComment syn sync minlines=50 syn keyword povTodo TODO FIXME XXX NOT contained syn cluster povPRIVATE add=povTodo " Language directives syn match povConditionalDir "#\s*\(else\|end\|for\|if\|ifdef\|ifndef\|switch\|while\)\>" syn match povLabelDir "#\s*\(break\|case\|default\|range\)\>" syn match povDeclareDir "#\s*\(declare\|default\|local\|macro\|undef\|version\)\>" nextgroup=povDeclareOption skipwhite syn keyword povDeclareOption deprecated once contained nextgroup=povDeclareOption skipwhite syn match povIncludeDir "#\s*include\>" syn match povFileDir "#\s*\(fclose\|fopen\|read\|write\)\>" syn keyword povFileDataType uint8 sint8 unit16be uint16le sint16be sint16le sint32le sint32be syn match povMessageDir "#\s*\(debug\|error\|render\|statistics\|warning\)\>" syn region povFileOpen start="#\s*fopen\>" skip=+"[^"]*"+ matchgroup=povOpenType end="\<\(read\|write\|append\)\>" contains=ALLBUT,PovParenError,PovBraceError,@PovPRIVATE transparent keepend " Literal strings syn match povSpecialChar "\\u\x\{4}\|\\\d\d\d\|\\." contained syn region povString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=povSpecialChar oneline syn cluster povPRIVATE add=povSpecialChar " Catch errors caused by wrong parenthesization syn region povParen start='(' end=')' contains=ALLBUT,povParenError,@povPRIVATE transparent syn match povParenError ")" syn region povBrace start='{' end='}' contains=ALLBUT,povBraceError,@povPRIVATE transparent syn match povBraceError "}" " Numbers syn match povNumber "\(^\|\W\)\@<=[+-]\=\(\d\+\)\=\.\=\d\+\([eE][+-]\=\d\+\)\=" " Define the default highlighting hi def link povComment Comment hi def link povTodo Todo hi def link povNumber Number hi def link povString String hi def link povFileOpen Constant hi def link povConsts Constant hi def link povDotItem povSpecial hi def link povBMPType povSpecial hi def link povCharset povSpecial hi def link povDensityType povSpecial hi def link povFontType povSpecial hi def link povOpenType povSpecial hi def link povSpecialChar povSpecial hi def link povSpecial Special hi def link povConditionalDir PreProc hi def link povLabelDir PreProc hi def link povDeclareDir Define hi def link povDeclareOption Define hi def link povIncludeDir Include hi def link povFileDir PreProc hi def link povFileDataType Special hi def link povMessageDir Debug hi def link povAppearance povDescriptors hi def link povObjects povDescriptors hi def link povGlobalSettings povDescriptors hi def link povDescriptors Type hi def link povJuliaFunctions PovFunctions hi def link povModifiers povFunctions hi def link povFunctions Function hi def link povCommands Operator hi def link povTransform Operator hi def link povCSG Operator hi def link povParenError povError hi def link povBraceError povError hi def link povCommentError povError hi def link povError Error let b:current_syntax = "pov" PK!E$ vim80/syntax/hitest.vimnu[" Vim syntax file " Language: none; used to see highlighting " Maintainer: Ronald Schild " Last Change: 2017 Jul 28 " Version: 5.4n.1 " To see your current highlight settings, do " :so $VIMRUNTIME/syntax/hitest.vim " save global options and registers let s:hidden = &hidden let s:lazyredraw = &lazyredraw let s:more = &more let s:report = &report let s:shortmess = &shortmess let s:wrapscan = &wrapscan let s:register_a = @a let s:register_se = @/ " set global options set hidden lazyredraw nomore report=99999 shortmess=aoOstTW wrapscan " print current highlight settings into register a redir @a highlight redir END " Open a new window if the current one isn't empty if line("$") != 1 || getline(1) != "" new endif " edit temporary file edit Highlight\ test " set local options setlocal autoindent noexpandtab formatoptions=t shiftwidth=16 noswapfile tabstop=16 let &textwidth=&columns " insert highlight settings % delete put a " remove the colored xxx items g/xxx /s///e " remove color settings (not needed here) global! /links to/ substitute /\s.*$//e " move linked groups to the end of file global /links to/ move $ " move linked group names to the matching preferred groups % substitute /^\(\w\+\)\s*\(links to\)\s*\(\w\+\)$/\3\t\2 \1/e global /links to/ normal mz3ElD0#$p'zdd " delete empty lines global /^ *$/ delete " precede syntax command % substitute /^[^ ]*/syn keyword &\t&/ " execute syntax commands syntax clear % yank a @a " remove syntax commands again % substitute /^syn keyword // " pretty formatting global /^/ exe "normal Wi\\t\eAA\ex" global /^\S/ join " find out first syntax highlighting let b:various = &highlight.',:Normal,:Cursor,:,' let b:i = 1 while b:various =~ ':'.substitute(getline(b:i), '\s.*$', ',', '') let b:i = b:i + 1 if b:i > line("$") | break | endif endwhile " insert headlines call append(0, "Highlighting groups for various occasions") call append(1, "-----------------------------------------") if b:i < line("$")-1 let b:synhead = "Syntax highlighting groups" if exists("hitest_filetypes") redir @a let redir END let @a = substitute(@a, 'did_\(\w\+\)_syn\w*_inits\s*#1', ', \1', 'g') let @a = substitute(@a, "\n\\w[^\n]*", '', 'g') let @a = substitute(@a, "\n", '', 'g') let @a = substitute(@a, '^,', '', 'g') if @a != "" let b:synhead = b:synhead." - filetype" if @a =~ ',' let b:synhead = b:synhead."s" endif let b:synhead = b:synhead.":".@a endif endif call append(b:i+1, "") call append(b:i+2, b:synhead) call append(b:i+3, substitute(b:synhead, '.', '-', 'g')) endif " remove 'hls' highlighting nohlsearch normal 0 " we don't want to save this temporary file set nomodified " the following trick avoids the "Press RETURN ..." prompt 0 append . " restore global options and registers let &hidden = s:hidden let &lazyredraw = s:lazyredraw let &more = s:more let &report = s:report let &shortmess = s:shortmess let &wrapscan = s:wrapscan let @a = s:register_a " restore last search pattern call histdel("search", -1) let @/ = s:register_se " remove variables unlet s:hidden s:lazyredraw s:more s:report s:shortmess unlet s:wrapscan s:register_a s:register_se " vim: ts=8 PK!=11vim80/syntax/sh.vimnu[" Vim syntax file " Language: shell (sh) Korn shell (ksh) bash (sh) " Maintainer: Charles E. Campbell " Previous Maintainer: Lennart Schultz " Last Change: Mar 19, 2018 " Version: 174 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH " For options and settings, please use: :help ft-sh-syntax " This file includes many ideas from Eric Brunet (eric.brunet@ens.fr) " quit when a syntax file was already loaded {{{1 if exists("b:current_syntax") finish endif " trying to answer the question: which shell is /bin/sh, really? " If the user has not specified any of g:is_kornshell, g:is_bash, g:is_posix, g:is_sh, then guess. if getline(1) =~ '\ fold else com! -nargs=* ShFoldFunctions endif if s:sh_fold_heredoc com! -nargs=* ShFoldHereDoc fold else com! -nargs=* ShFoldHereDoc endif if s:sh_fold_ifdofor com! -nargs=* ShFoldIfDoFor fold else com! -nargs=* ShFoldIfDoFor endif " sh syntax is case sensitive {{{1 syn case match " Clusters: contains=@... clusters {{{1 "================================== syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK if exists("b:is_kornshell") || exists("b:is_bash") syn cluster ErrorList add=shDTestError endif syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor syn cluster shArithList contains=@shArithParenList,shParenError syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq syn cluster shCommandSubList contains=shAlias,shArithmetic,shCmdParenRegion,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial syn cluster shDblQuoteList contains=shCommandSub,shDeref,shDerefSimple,shEscape,shPosnParm,shCtrlSeq,shSpecial syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPSR,shDerefPPS syn cluster shDerefVarList contains=shDerefOff,shDerefOp,shDerefVarArray,shDerefOpError syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shEscape,shExpr,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq if exists("b:is_kornshell") || exists("b:is_bash") syn cluster shFunctionList add=shRepeat syn cluster shFunctionList add=shDblBrace,shDblParen endif syn cluster shHereBeginList contains=@shCommandSubList syn cluster shHereList contains=shBeginHere,shHerePayload syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shHereString,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shForPP,shIf,shOption,shSet,shTest,shTestOpr,shTouch syn cluster shPPSRightList contains=shComment,shDeref,shDerefSimple,shEscape,shPosnParm syn cluster shSubShList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator syn cluster shTestList contains=shCharClass,shCommandSub,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr syn cluster shNoZSList contains=shSpecialNoZS " Echo: {{{1 " ==== " This one is needed INSIDE a CommandSub, so that `echo bla` be correct syn region shEcho matchgroup=shStatement start="\" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment syn region shEcho matchgroup=shStatement start="\" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment syn match shEchoQuote contained '\%(\\\\\)*\\["`'()]' " This must be after the strings, so that ... \" will be correct syn region shEmbeddedEcho contained matchgroup=shStatement start="\" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shExDoubleQuote,shDoubleQuote,shCharClass,shCtrlSeq " Alias: {{{1 " ===== if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix") syn match shStatement "\" syn region shAlias matchgroup=shStatement start="\\s\+\(\h[-._[:alnum:]]\+\)\@=" skip="\\$" end="\>\|`" syn region shAlias matchgroup=shStatement start="\\s\+\(\h[-._[:alnum:]]\+=\)\@=" skip="\\$" end="=" " Touch: {{{1 " ===== syn match shTouch '\[^;#]*' skipwhite nextgroup=shComment contains=shTouchCmd,shDoubleQuote,shSingleQuote,shDeref,shDerefSimple syn match shTouchCmd '\' contained endif " Error Codes: {{{1 " ============ if !exists("g:sh_no_error") syn match shDoError "\" syn match shIfError "\" syn match shInError "\" syn match shCaseError ";;" syn match shEsacError "\" syn match shCurlyError "}" syn match shParenError ")" syn match shOK '\.\(done\|fi\|in\|esac\)' if exists("b:is_kornshell") || exists("b:is_bash") syn match shDTestError "]]" endif syn match shTestError "]" endif " Options: {{{1 " ==================== syn match shOption "\s\zs[-+][-_a-zA-Z#@]\+" syn match shOption "\s\zs--[^ \t$`'"|);]\+" " File Redirection Highlighted As Operators: {{{1 "=========================================== syn match shRedir "\d\=>\(&[-0-9]\)\=" syn match shRedir "\d\=>>-\=" syn match shRedir "\d\=<\(&[-0-9]\)\=" syn match shRedir "\d<<-\=" " Operators: {{{1 " ========== syn match shOperator "<<\|>>" contained syn match shOperator "[!&;|]" contained syn match shOperator "\[[[^:]\|\]]" contained syn match shOperator "[-=/*+%]\==" skipwhite nextgroup=shPattern syn match shPattern "\<\S\+\())\)\@=" contained contains=shExSingleQuote,shSingleQuote,shExDoubleQuote,shDoubleQuote,shDeref " Subshells: {{{1 " ========== syn region shExpr transparent matchgroup=shExprRegion start="{" end="}" contains=@shExprList2 nextgroup=shSpecialNxt syn region shSubSh transparent matchgroup=shSubShRegion start="[^(]\zs(" end=")" contains=@shSubShList nextgroup=shSpecialNxt " Tests: {{{1 "======= syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial syn region shTest transparent matchgroup=shStatement start="\+ end="\<;\_s*then\>" end="\" contains=@shIfList ShFoldIfDoFor syn region shFor matchgroup=shLoop start="\#\=" syn match shNumber "\<-\=\.\=\d\+\>#\=" syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained if exists("b:is_bash") syn match shSpecial "[^\\]\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained syn match shSpecial "^\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained syn region shExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial nextgroup=shSpecialNxt syn region shExDoubleQuote matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,shSpecial nextgroup=shSpecialNxt elseif !exists("g:sh_no_error") syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial syn region shExDoubleQuote matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial endif syn region shSingleQuote matchgroup=shQuote start=+'+ end=+'+ contains=@Spell nextgroup=shSpecialStart syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@" else syn keyword shTodo contained COMBAK FIXME TODO XXX endif syn match shComment "^\s*\zs#.*$" contains=@shCommentGroup syn match shComment "\s\zs#.*$" contains=@shCommentGroup syn match shComment contained "#.*$" contains=@shCommentGroup syn match shQuickComment contained "#.*$" " Here Documents: {{{1 " ========================================= ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\\\=\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc01 end="^\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc02 start="<<\s*\"\z([^ \t0-9|>]\+\)\"" matchgroup=shHereDoc02 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc03 start="<<-\s*\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc03 end="^\s*\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*'\z([^'0-9]\+\)'" matchgroup=shHereDoc04 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*'\z([^'0-9]\+\)'" matchgroup=shHereDoc05 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*\"\z([^ \t0-9|>]\+\)\"" matchgroup=shHereDoc06 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\\\_$\_s*\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc07 end="^\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<\s*\\\_$\_s*'\z([^ \t0-9|>]\+\)'" matchgroup=shHereDoc08 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc09 start="<<\s*\\\_$\_s*\"\z([^ \t0-9|>]\+\)\"" matchgroup=shHereDoc09 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc10 start="<<-\s*\\\_$\_s*\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc10 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc11 start="<<-\s*\\\_$\_s*\\\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc11 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc12 start="<<-\s*\\\_$\_s*'\z([^ \t0-9|>]\+\)'" matchgroup=shHereDoc12 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc13 start="<<-\s*\\\_$\_s*\"\z([^ \t0-9|>]\+\)\"" matchgroup=shHereDoc13 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc14 start="<<\\\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc14 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc15 start="<<-\s*\\\z([^ \t0-9|>]\+\)" matchgroup=shHereDoc15 end="^\s*\z1\s*$" " Here Strings: {{{1 " ============= " available for: bash; ksh (really should be ksh93 only) but not if its a posix if exists("b:is_bash") || (exists("b:is_kornshell") && !exists("b:is_posix")) syn match shHereString "<<<" skipwhite nextgroup=shCmdParenRegion endif " Identifiers: {{{1 "============= syn match shSetOption "\s\zs[-+][a-zA-Z0-9]\+\>" contained syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shVarAssign syn match shVarAssign "=" contained nextgroup=shCmdParenRegion,shPattern,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shSingleQuote,shExSingleQuote syn region shAtExpr contained start="@(" end=")" contains=@shIdList if exists("b:is_bash") syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\\ze[^/]" end="\ze[;|)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+=" contains=@shIdList elseif exists("b:is_kornshell") || exists("b:is_posix") syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList else syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList endif " Functions: {{{1 if !exists("b:is_posix") syn keyword shFunctionKey function skipwhite skipnl nextgroup=shFunctionTwo endif if exists("b:is_bash") ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*[A-Za-z_0-9:][-a-zA-Z_0-9:]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_0-9:][-a-zA-Z_0-9:]*\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*[A-Za-z_0-9:][-a-zA-Z_0-9:]*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_0-9:][-a-zA-Z_0-9:]*\>\s*\%(()\)\=\_s*)" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment else ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*\h\w*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment endif " Parameter Dereferencing: {{{1 " ======================== if !exists("g:sh_no_error") syn match shDerefWordError "[^}$[~]" contained endif syn match shDerefSimple "\$\%(\h\w*\|\d\)" nextgroup=@shNoZSList syn region shDeref matchgroup=PreProc start="\${" end="}" contains=@shDerefList,shDerefVarArray syn match shDerefSimple "\$[-#*@!?]" nextgroup=@shNoZSList syn match shDerefSimple "\$\$" nextgroup=@shNoZSList syn match shDerefSimple "\${\d}" nextgroup=@shNoZSList if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix") syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS endif " ksh: ${!var[*]} array index list syntax: {{{1 " ======================================== if exists("b:is_kornshell") || exists("b:is_posix") syn region shDeref matchgroup=PreProc start="\${!" end="}" contains=@shDerefVarArray endif " bash: ${!prefix*} and ${#parameter}: {{{1 " ==================================== if exists("b:is_bash") syn region shDeref matchgroup=PreProc start="\${!" end="\*\=}" contains=@shDerefList,shDerefOff syn match shDerefVar contained "{\@<=!\h\w*" nextgroup=@shDerefVarList endif if exists("b:is_kornshell") syn match shDerefVar contained "{\@<=!\h\w*[[:alnum:]_.]*" nextgroup=@shDerefVarList endif syn match shDerefSpecial contained "{\@<=[-*@?0]" nextgroup=shDerefOp,shDerefOpError syn match shDerefSpecial contained "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp syn match shDerefVar contained "{\@<=\h\w*" nextgroup=@shDerefVarList syn match shDerefVar contained '\d' nextgroup=@shDerefVarList if exists("b:is_kornshell") || exists("b:is_posix") syn match shDerefVar contained "{\@<=\h\w*[[:alnum:]_.]*" nextgroup=@shDerefVarList endif " sh ksh bash : ${var[... ]...} array reference: {{{1 syn region shDerefVarArray contained matchgroup=shDeref start="\[" end="]" contains=@shCommandSubList nextgroup=shDerefOp,shDerefOpError " Special ${parameter OPERATOR word} handling: {{{1 " sh ksh bash : ${parameter:-word} word is default value " sh ksh bash : ${parameter:=word} assign word as default value " sh ksh bash : ${parameter:?word} display word if parameter is null " sh ksh bash : ${parameter:+word} use word if parameter is not null, otherwise nothing " ksh bash : ${parameter#pattern} remove small left pattern " ksh bash : ${parameter##pattern} remove large left pattern " ksh bash : ${parameter%pattern} remove small right pattern " ksh bash : ${parameter%%pattern} remove large right pattern " bash : ${parameter^pattern} Case modification " bash : ${parameter^^pattern} Case modification " bash : ${parameter,pattern} Case modification " bash : ${parameter,,pattern} Case modification syn cluster shDerefPatternList contains=shDerefPattern,shDerefString if !exists("g:sh_no_error") syn match shDerefOpError contained ":[[:punct:]]" endif syn match shDerefOp contained ":\=[-=?]" nextgroup=@shDerefPatternList syn match shDerefOp contained ":\=+" nextgroup=@shDerefPatternList if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix") syn match shDerefOp contained "#\{1,2}" nextgroup=@shDerefPatternList syn match shDerefOp contained "%\{1,2}" nextgroup=@shDerefPatternList syn match shDerefPattern contained "[^{}]\+" contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern syn region shDerefPattern contained start="{" end="}" contains=shDeref,shDerefSimple,shDerefString,shCommandSub nextgroup=shDerefPattern syn match shDerefEscape contained '\%(\\\\\)*\\.' endif if exists("b:is_bash") syn match shDerefOp contained "[,^]\{1,2}" nextgroup=@shDerefPatternList endif syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@" syn sync match shCaseEsacSync groupthere shCaseEsac "\" syn sync match shDoSync grouphere shDo "\" syn sync match shDoSync groupthere shDo "\" syn sync match shForSync grouphere shFor "\" syn sync match shForSync groupthere shFor "\" syn sync match shIfSync grouphere shIf "\" syn sync match shIfSync groupthere shIf "\" syn sync match shUntilSync grouphere shRepeat "\" syn sync match shWhileSync grouphere shRepeat "\" " Default Highlighting: {{{1 " ===================== if !exists("skip_sh_syntax_inits") hi def link shArithRegion shShellVariables hi def link shAstQuote shDoubleQuote hi def link shAtExpr shSetList hi def link shBeginHere shRedir hi def link shCaseBar shConditional hi def link shCaseCommandSub shCommandSub hi def link shCaseDoubleQuote shDoubleQuote hi def link shCaseIn shConditional hi def link shQuote shOperator hi def link shCaseSingleQuote shSingleQuote hi def link shCaseStart shConditional hi def link shCmdSubRegion shShellVariables hi def link shColon shComment hi def link shDerefOp shOperator hi def link shDerefPOL shDerefOp hi def link shDerefPPS shDerefOp hi def link shDerefPSR shDerefOp hi def link shDeref shShellVariables hi def link shDerefDelim shOperator hi def link shDerefSimple shDeref hi def link shDerefSpecial shDeref hi def link shDerefString shDoubleQuote hi def link shDerefVar shDeref hi def link shDoubleQuote shString hi def link shEcho shString hi def link shEchoDelim shOperator hi def link shEchoQuote shString hi def link shForPP shLoop hi def link shFunction Function hi def link shEmbeddedEcho shString hi def link shEscape shCommandSub hi def link shExDoubleQuote shDoubleQuote hi def link shExSingleQuote shSingleQuote hi def link shHereDoc shString hi def link shHereString shRedir hi def link shHerePayload shHereDoc hi def link shLoop shStatement hi def link shSpecialNxt shSpecial hi def link shNoQuote shDoubleQuote hi def link shOption shCommandSub hi def link shPattern shString hi def link shParen shArithmetic hi def link shPosnParm shShellVariables hi def link shQuickComment shComment hi def link shRange shOperator hi def link shRedir shOperator hi def link shSetListDelim shOperator hi def link shSetOption shOption hi def link shSingleQuote shString hi def link shSource shOperator hi def link shStringSpecial shSpecial hi def link shSpecialStart shSpecial hi def link shSubShRegion shOperator hi def link shTestOpr shConditional hi def link shTestPattern shString hi def link shTestDoubleQuote shString hi def link shTestSingleQuote shString hi def link shTouchCmd shStatement hi def link shVariable shSetList hi def link shWrapLineOperator shOperator if exists("b:is_bash") hi def link bashAdminStatement shStatement hi def link bashSpecialVariables shShellVariables hi def link bashStatement shStatement hi def link shCharClass shSpecial hi def link shDerefOff shDerefOp hi def link shDerefLen shDerefOff endif if exists("b:is_kornshell") || exists("b:is_posix") hi def link kshSpecialVariables shShellVariables hi def link kshStatement shStatement endif if !exists("g:sh_no_error") hi def link shCaseError Error hi def link shCondError Error hi def link shCurlyError Error hi def link shDerefOpError Error hi def link shDerefWordError Error hi def link shDoError Error hi def link shEsacError Error hi def link shIfError Error hi def link shInError Error hi def link shParenError Error hi def link shTestError Error if exists("b:is_kornshell") || exists("b:is_posix") hi def link shDTestError Error endif endif hi def link shArithmetic Special hi def link shCharClass Identifier hi def link shSnglCase Statement hi def link shCommandSub Special hi def link shComment Comment hi def link shConditional Conditional hi def link shCtrlSeq Special hi def link shExprRegion Delimiter hi def link shFunctionKey Function hi def link shFunctionName Function hi def link shNumber Number hi def link shOperator Operator hi def link shRepeat Repeat hi def link shSet Statement hi def link shSetList Identifier hi def link shShellVariables PreProc hi def link shSpecial Special hi def link shSpecialNoZS shSpecial hi def link shStatement Statement hi def link shString String hi def link shTodo Todo hi def link shAlias Identifier hi def link shHereDoc01 shRedir hi def link shHereDoc02 shRedir hi def link shHereDoc03 shRedir hi def link shHereDoc04 shRedir hi def link shHereDoc05 shRedir hi def link shHereDoc06 shRedir hi def link shHereDoc07 shRedir hi def link shHereDoc08 shRedir hi def link shHereDoc09 shRedir hi def link shHereDoc10 shRedir hi def link shHereDoc11 shRedir hi def link shHereDoc12 shRedir hi def link shHereDoc13 shRedir hi def link shHereDoc14 shRedir hi def link shHereDoc15 shRedir endif " Delete shell folding commands {{{1 " ============================= delc ShFoldFunctions delc ShFoldHereDoc delc ShFoldIfDoFor " Set Current Syntax: {{{1 " =================== if exists("b:is_bash") let b:current_syntax = "bash" elseif exists("b:is_kornshell") let b:current_syntax = "ksh" elseif exists("b:is_posix") let b:current_syntax = "posix" else let b:current_syntax = "sh" endif " vim: ts=16 fdm=marker PK!ϙvim80/syntax/scss.vimnu[" Vim syntax file " Language: SCSS " Maintainer: Tim Pope " Filenames: *.scss " Last Change: 2010 Jul 26 if exists("b:current_syntax") finish endif runtime! syntax/sass.vim syn match scssComment "//.*" contains=sassTodo,@Spell syn region scssComment start="/\*" end="\*/" contains=sassTodo,@Spell hi def link scssComment sassComment let b:current_syntax = "scss" " vim:set sw=2: PK!Jvim80/syntax/tsscl.vimnu[" Vim syntax file " Language: TSS (Thermal Synthesizer System) Command Line " Maintainer: Adrian Nagle, anagle@ball.com " Last Change: 2003 May 11 " Filenames: *.tsscl " URL: http://www.naglenet.org/vim/syntax/tsscl.vim " MAIN URL: http://www.naglenet.org/vim/ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Ignore case syn case ignore " " " Begin syntax definitions for tss geomtery file. " " Load TSS geometry syntax file "source $VIM/myvim/tssgm.vim "source $VIMRUNTIME/syntax/c.vim " Define keywords for TSS syn keyword tssclCommand begin radk list heatrates attr draw syn keyword tssclKeyword cells rays error nodes levels objects cpu syn keyword tssclKeyword units length positions energy time unit solar syn keyword tssclKeyword solar_constant albedo planet_power syn keyword tssclEnd exit syn keyword tssclUnits cm feet meters inches syn keyword tssclUnits Celsius Kelvin Fahrenheit Rankine " Define matches for TSS syn match tssclString /"[^"]\+"/ contains=ALLBUT,tssInteger,tssclKeyword,tssclCommand,tssclEnd,tssclUnits syn match tssclComment "#.*$" " rational and logical operators " < Less than " > Greater than " <= Less than or equal " >= Greater than or equal " == or = Equal to " != Not equal to " && or & Logical AND " || or | Logical OR " ! Logical NOT " " algebraic operators: " ^ or ** Exponentation " * Multiplication " / Division " % Remainder " + Addition " - Subtraction " syn match tssclOper "||\||\|&&\|&\|!=\|!\|>=\|<=\|>\|<\|+\|-\|^\|\*\*\|\*\|/\|%\|==\|=\|\." skipwhite " CLI Directive Commands, with arguments " " BASIC COMMAND LIST " *ADD input_source " *ARITHMETIC { [ON] | OFF } " *CLOSE unit_number " *CPU " *DEFINE " *ECHO[/qualifiers] { [ON] | OFF } " *ELSE [IF { 0 | 1 } ] " *END { IF | WHILE } " *EXIT " *IF { 0 | 1 } " *LIST/n list variable " *OPEN[/r | /r+ | /w | /w+ ] unit_number file_name " *PROMPT prompt_string sybol_name " *READ/unit=unit_number[/LOCAL | /GLOBAL ] sym1 [sym2, [sym3 ...]] " *REWIND " *STOP " *STRCMP string_1 string_2 difference " *SYSTEM command " *UNDEFINE[/LOCAL][/GLOBAL] symbol_name " *WHILE { 0 | 1 } " *WRITE[/unit=unit_number] output text " syn match tssclDirective "\*ADD" syn match tssclDirective "\*ARITHMETIC \+\(ON\|OFF\)" syn match tssclDirective "\*CLOSE" syn match tssclDirective "\*CPU" syn match tssclDirective "\*DEFINE" syn match tssclDirective "\*ECHO" syn match tssclConditional "\*ELSE" syn match tssclConditional "\*END \+\(IF\|WHILE\)" syn match tssclDirective "\*EXIT" syn match tssclConditional "\*IF" syn match tssclDirective "\*LIST" syn match tssclDirective "\*OPEN" syn match tssclDirective "\*PROMPT" syn match tssclDirective "\*READ" syn match tssclDirective "\*REWIND" syn match tssclDirective "\*STOP" syn match tssclDirective "\*STRCMP" syn match tssclDirective "\*SYSTEM" syn match tssclDirective "\*UNDEFINE" syn match tssclConditional "\*WHILE" syn match tssclDirective "\*WRITE" syn match tssclContChar "-$" " C library functoins " Bessel functions (jn, yn) " Error and complementary error fuctions (erf, erfc) " Exponential functions (exp) " Logrithm (log, log10) " Power (pow) " Square root (sqrt) " Floor (floor) " Ceiling (ceil) " Floating point remainder (fmod) " Floating point absolute value (fabs) " Gamma (gamma) " Euclidean distance function (hypot) " Hperbolic functions (sinh, cosh, tanh) " Trigometric functions in radians (sin, cos, tan, asin, acos, atan, atan2) " Trigometric functions in degrees (sind, cosd, tand, asind, acosd, atand, " atan2d) " " local varialbles: cl_arg1, cl_arg2, etc. (cl_arg is an array of arguments) " cl_args is the number of arguments " " " I/O: *PROMPT, *WRITE, *READ " " Conditional branching: " IF, ELSE IF, END " *IF value *IF I==10 " *ELSE IF value *ELSE IF I<10 " *ELSE *ELSE " *ENDIF *ENDIF " " " Iterative looping: " WHILE " *WHILE test " ..... " *END WHILE " " " EXAMPLE: " *DEFINE I = 1 " *WHILE (I <= 10) " *WRITE I = 'I' " *DEFINE I = (I + 1) " *END WHILE " syn match tssclQualifier "/[^/ ]\+"hs=s+1 syn match tssclSymbol "'\S\+'" "syn match tssclSymbol2 " \S\+ " contained syn match tssclInteger "-\=\<[0-9]*\>" syn match tssclFloat "-\=\<[0-9]*\.[0-9]*" syn match tssclScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>" " Define the default highlighting " Only when an item doesn't have highlighting yet hi def link tssclCommand Statement hi def link tssclKeyword Special hi def link tssclEnd Macro hi def link tssclUnits Special hi def link tssclComment Comment hi def link tssclDirective Statement hi def link tssclConditional Conditional hi def link tssclContChar Macro hi def link tssclQualifier Typedef hi def link tssclSymbol Identifier hi def link tssclSymbol2 Symbol hi def link tssclString String hi def link tssclOper Operator hi def link tssclInteger Number hi def link tssclFloat Number hi def link tssclScientific Number let b:current_syntax = "tsscl" " vim: ts=8 sw=2 PK!@vim80/syntax/plm.vimnu[" Vim syntax file " Language: PL/M " Maintainer: Philippe Coulonges " Last change: 2003 May 11 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " PL/M is a case insensitive language syn case ignore syn keyword plmTodo contained TODO FIXME XXX " String syn region plmString start=+'+ end=+'+ syn match plmOperator "[@=\+\-\*\/\<\>]" syn match plmIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" syn match plmDelimiter "[();,]" syn region plmPreProc start="^\s*\$\s*" skip="\\$" end="$" " FIXME : No Number support for floats, as I'm working on an embedded " project that doesn't use any. syn match plmNumber "-\=\<\d\+\>" syn match plmNumber "\<[0-9a-fA-F]*[hH]*\>" " If you don't like tabs "syn match plmShowTab "\t" "syn match plmShowTabc "\t" "when wanted, highlight trailing white space if exists("c_space_errors") syn match plmSpaceError "\s*$" syn match plmSpaceError " \+\t"me=e-1 endif " " Use the same control variable as C language for I believe " users will want the same behavior if exists("c_comment_strings") " FIXME : don't work fine with c_comment_strings set, " which I don't care as I don't use " A comment can contain plmString, plmCharacter and plmNumber. " But a "*/" inside a plmString in a plmComment DOES end the comment! So we " need to use a special type of plmString: plmCommentString, which also ends on " "*/", and sees a "*" at the start of the line as comment again. syntax match plmCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region plmCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=plmSpecial,plmCommentSkip syntax region plmComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=plmSpecial syntax region plmComment start="/\*" end="\*/" contains=plmTodo,plmCommentString,plmCharacter,plmNumber,plmFloat,plmSpaceError syntax match plmComment "//.*" contains=plmTodo,plmComment2String,plmCharacter,plmNumber,plmSpaceError else syn region plmComment start="/\*" end="\*/" contains=plmTodo,plmSpaceError syn match plmComment "//.*" contains=plmTodo,plmSpaceError endif syntax match plmCommentError "\*/" syn keyword plmReserved ADDRESS AND AT BASED BY BYTE CALL CASE syn keyword plmReserved DATA DECLARE DISABLE DO DWORD syn keyword plmReserved ELSE ENABLE END EOF EXTERNAL syn keyword plmReserved GO GOTO HALT IF INITIAL INTEGER INTERRUPT syn keyword plmReserved LABEL LITERALLY MINUS MOD NOT OR syn keyword plmReserved PLUS POINTER PROCEDURE PUBLIC syn keyword plmReserved REAL REENTRANT RETURN SELECTOR STRUCTURE syn keyword plmReserved THEN TO WHILE WORD XOR syn keyword plm386Reserved CHARINT HWORD LONGINT OFFSET QWORD SHORTINT syn keyword plmBuiltIn ABS ADJUSTRPL BLOCKINPUT BLOCKINWORD BLOCKOUTPUT syn keyword plmBuiltIn BLOCKOUTWORD BUILPTR CARRY CAUSEINTERRUPT CMPB syn keyword plmBuiltIn CMPW DEC DOUBLE FINDB FINDRB FINDRW FINDW FIX syn keyword plmBuiltIn FLAGS FLOAT GETREALERROR HIGH IABS INITREALMATHUNIT syn keyword plmBuiltIn INPUT INT INWORD LAST LOCKSET LENGTH LOW MOVB MOVE syn keyword plmBuiltIn MOVRB MOVRW MOVW NIL OUTPUT OUTWORD RESTOREREALSTATUS syn keyword plmBuiltIn ROL ROR SAL SAVEREALSTATUS SCL SCR SELECTOROF SETB syn keyword plmBuiltIn SETREALMODE SETW SHL SHR SIGN SIGNED SIZE SKIPB syn keyword plmBuiltIn SKIPRB SKIPRW SKIPW STACKBASE STACKPTR TIME SIZE syn keyword plmBuiltIn UNSIGN XLAT ZERO syn keyword plm386BuiltIn INTERRUPT SETINTERRUPT syn keyword plm286BuiltIn CLEARTASKSWITCHEDFLAG GETACCESSRIGHTS syn keyword plm286BuiltIn GETSEGMENTLIMIT LOCALTABLE MACHINESTATUS syn keyword plm286BuiltIn OFFSETOF PARITY RESTOREGLOBALTABLE syn keyword plm286BuiltIn RESTOREINTERRUPTTABLE SAVEGLOBALTABLE syn keyword plm286BuiltIn SAVEINTERRUPTTABLE SEGMENTREADABLE syn keyword plm286BuiltIn SEGMENTWRITABLE TASKREGISTER WAITFORINTERRUPT syn keyword plm386BuiltIn CONTROLREGISTER DEBUGREGISTER FINDHW syn keyword plm386BuiltIn FINDRHW INHWORD MOVBIT MOVRBIT MOVHW MOVRHW syn keyword plm386BuiltIn OUTHWORD SCANBIT SCANRBIT SETHW SHLD SHRD syn keyword plm386BuiltIn SKIPHW SKIPRHW TESTREGISTER syn keyword plm386w16BuiltIn BLOCKINDWORD BLOCKOUTDWORD CMPD FINDD syn keyword plm386w16BuiltIn FINDRD INDWORD MOVD MOVRD OUTDWORD syn keyword plm386w16BuiltIn SETD SKIPD SKIPRD syn sync lines=50 " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overridden later " hi def link plmLabel Label " hi def link plmConditional Conditional " hi def link plmRepeat Repeat hi def link plmTodo Todo hi def link plmNumber Number hi def link plmOperator Operator hi def link plmDelimiter Operator "hi def link plmShowTab Error "hi def link plmShowTabc Error hi def link plmIdentifier Identifier hi def link plmBuiltIn Statement hi def link plm286BuiltIn Statement hi def link plm386BuiltIn Statement hi def link plm386w16BuiltIn Statement hi def link plmReserved Statement hi def link plm386Reserved Statement hi def link plmPreProc PreProc hi def link plmCommentError plmError hi def link plmCommentString plmString hi def link plmComment2String plmString hi def link plmCommentSkip plmComment hi def link plmString String hi def link plmComment Comment let b:current_syntax = "plm" " vim: ts=8 sw=2 PK!||vim80/syntax/cuplsim.vimnu[" Vim syntax file " Language: CUPL simulation " Maintainer: John Cook " Last Change: 2001 Apr 25 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Read the CUPL syntax to start with runtime! syntax/cupl.vim unlet b:current_syntax " omit definition-specific stuff syn clear cuplStatement syn clear cuplFunction syn clear cuplLogicalOperator syn clear cuplArithmeticOperator syn clear cuplAssignmentOperator syn clear cuplEqualityOperator syn clear cuplTruthTableOperator syn clear cuplExtension " simulation order statement syn match cuplsimOrder "order:" nextgroup=cuplsimOrderSpec skipempty syn region cuplsimOrderSpec start="." end=";"me=e-1 contains=cuplComment,cuplsimOrderFormat,cuplBitVector,cuplSpecialChar,cuplLogicalOperator,cuplCommaOperator contained " simulation base statement syn match cuplsimBase "base:" nextgroup=cuplsimBaseSpec skipempty syn region cuplsimBaseSpec start="." end=";"me=e-1 contains=cuplComment,cuplsimBaseType contained syn keyword cuplsimBaseType octal decimal hex contained " simulation vectors statement syn match cuplsimVectors "vectors:" " simulator format control syn match cuplsimOrderFormat "%\d\+\>" contained " simulator control syn match cuplsimStimulus "[10ckpx]\+" syn match cuplsimStimulus +'\(\x\|x\)\+'+ syn match cuplsimOutput "[lhznx*]\+" syn match cuplsimOutput +"\x\+"+ syn sync minlines=1 " Define the default highlighting. " Only when an item doesn't have highlighting yet " append to the highlighting links in cupl.vim " The default highlighting. hi def link cuplsimOrder cuplStatement hi def link cuplsimBase cuplStatement hi def link cuplsimBaseType cuplStatement hi def link cuplsimVectors cuplStatement hi def link cuplsimStimulus cuplNumber hi def link cuplsimOutput cuplNumber hi def link cuplsimOrderFormat cuplNumber let b:current_syntax = "cuplsim" " vim:ts=8 PK!T||vim80/syntax/libao.vimnu[" Vim syntax file " Language: libao.conf(5) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword libaoTodo contained TODO FIXME XXX NOTE syn region libaoComment display oneline start='^\s*#' end='$' \ contains=libaoTodo,@Spell syn keyword libaoKeyword default_driver hi def link libaoTodo Todo hi def link libaoComment Comment hi def link libaoKeyword Keyword let b:current_syntax = "libao" let &cpo = s:cpo_save unlet s:cpo_save PK!+88vim80/syntax/euphoria4.vimnu[" Vim syntax file " Language: Euphoria 4.0.5 (http://www.openeuphoria.org/) " Maintainer: Shian Lee " Last Change: 2014 Feb 26 (for Vim 7.4) " Remark: Euphoria has two syntax files, euphoria3.vim and euphoria4.vim; " For details see :help ft-euphoria-syntax " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Reset compatible-options to Vim default value, just in case: let s:save_cpo = &cpo set cpo&vim " Should suffice for very long strings and expressions: syn sync lines=40 " Euphoria is a case-sensitive language (with only 4 builtin types): syntax case match " Some keywords/Builtins for Debug - from $EUDIR/include/euphoria/keywords.e: syn keyword euphoria4Debug with without trace profile batch check indirect syn keyword euphoria4Debug includes inline warning define " Keywords for conditional compilation - from $EUDIR/include/euphoria/keywords.e: syn keyword euphoria4PreProc elsedef elsifdef ifdef " Keywords (Statments) - from $EUDIR/include/euphoria/keywords.e: syn keyword euphoria4Keyword and as break by case constant continue do else syn keyword euphoria4Keyword elsif end entry enum exit export syn keyword euphoria4Keyword fallthru for function global goto if include syn keyword euphoria4Keyword label loop namespace not or override procedure syn keyword euphoria4Keyword public retry return routine switch then to type syn keyword euphoria4Keyword until while xor " Builtins (Identifiers) - from $EUDIR/include/euphoria/keywords.e: syn keyword euphoria4Builtin abort and_bits append arctan atom c_func c_proc syn keyword euphoria4Builtin call call_func call_proc clear_screen close syn keyword euphoria4Builtin command_line compare cos date delete delete_routine syn keyword euphoria4Builtin equal find floor get_key getc getenv gets hash syn keyword euphoria4Builtin head include_paths insert integer length log syn keyword euphoria4Builtin machine_func machine_proc match mem_copy mem_set syn keyword euphoria4Builtin not_bits object open option_switches or_bits peek syn keyword euphoria4Builtin peek2s peek2u peek4s peek4u peek_string peeks pixel syn keyword euphoria4Builtin platform poke poke2 poke4 position power prepend syn keyword euphoria4Builtin print printf puts rand remainder remove repeat syn keyword euphoria4Builtin replace routine_id sequence sin splice sprintf syn keyword euphoria4Builtin sqrt system system_exec tail tan task_clock_start syn keyword euphoria4Builtin task_clock_stop task_create task_list task_schedule syn keyword euphoria4Builtin task_self task_status task_suspend task_yield time syn keyword euphoria4Builtin xor_bits " Builtins (Identifiers) shortcuts for length() and print(): syn match euphoria4Builtin "\$" syn match euphoria4Builtin "?" " Library Identifiers (Function) - grep from $EUDIR/include/*: syn keyword euphoria4Library DEP_on SyntaxColor abbreviate_path abs absolute_path syn keyword euphoria4Library accept add add_item all_copyrights all_matches syn keyword euphoria4Library allocate allocate_code allocate_data allocate_low syn keyword euphoria4Library allocate_pointer_array allocate_protect syn keyword euphoria4Library allocate_string allocate_string_pointer_array syn keyword euphoria4Library allocate_wstring allocations allow_break any_key syn keyword euphoria4Library append_lines apply approx arccos arccosh arcsin syn keyword euphoria4Library arcsinh arctanh assert at atan2 atom_to_float32 syn keyword euphoria4Library atom_to_float64 attr_to_colors avedev average syn keyword euphoria4Library begins binary_search bind binop_ok bits_to_int syn keyword euphoria4Library bk_color breakup build_commandline build_list syn keyword euphoria4Library bytes_to_int calc_hash calc_primes call_back syn keyword euphoria4Library canon2win canonical canonical_path ceil syn keyword euphoria4Library central_moment chance char_test chdir syn keyword euphoria4Library check_all_blocks check_break check_free_list syn keyword euphoria4Library checksum clear clear_directory cmd_parse syn keyword euphoria4Library colors_to_attr columnize combine connect syn keyword euphoria4Library console_colors copy copy_file cosh count crash syn keyword euphoria4Library crash_file crash_message crash_routine create syn keyword euphoria4Library create_directory create_file curdir current_dir syn keyword euphoria4Library cursor custom_sort datetime days_in_month syn keyword euphoria4Library days_in_year db_cache_clear db_clear_table db_close syn keyword euphoria4Library db_compress db_connect db_create db_create_table syn keyword euphoria4Library db_current db_current_table db_delete_record syn keyword euphoria4Library db_delete_table db_dump db_fetch_record db_find_key syn keyword euphoria4Library db_get_errors db_get_recid db_insert db_open syn keyword euphoria4Library db_record_data db_record_key db_record_recid syn keyword euphoria4Library db_rename_table db_replace_data db_replace_recid syn keyword euphoria4Library db_select db_select_table db_set_caching syn keyword euphoria4Library db_table_list db_table_size deallocate decanonical syn keyword euphoria4Library decode defaulted_value defaultext define_c_func syn keyword euphoria4Library define_c_proc define_c_var deg2rad delete_file syn keyword euphoria4Library dep_works dequote deserialize diff dir dir_size syn keyword euphoria4Library dirname disk_metrics disk_size display syn keyword euphoria4Library display_text_image dnsquery driveid dump dup emovavg syn keyword euphoria4Library encode ends ensure_in_list ensure_in_range syn keyword euphoria4Library error_code error_message error_no error_string syn keyword euphoria4Library error_to_string escape euphoria_copyright exec syn keyword euphoria4Library exp extract fetch fib file_exists file_length syn keyword euphoria4Library file_timestamp file_type filebase fileext filename syn keyword euphoria4Library filter find_all find_all_but find_any find_each syn keyword euphoria4Library find_nested find_replace find_replace_callback syn keyword euphoria4Library find_replace_limit flags_to_string flatten syn keyword euphoria4Library float32_to_atom float64_to_atom flush for_each syn keyword euphoria4Library format frac free free_code free_console free_low syn keyword euphoria4Library free_pointer_array from_date from_unix gcd geomean syn keyword euphoria4Library get get_bytes get_charsets get_def_lang syn keyword euphoria4Library get_display_page get_dstring get_encoding_properties syn keyword euphoria4Library get_integer16 get_integer32 get_lang_path get_lcid syn keyword euphoria4Library get_mouse get_option get_ovector_size get_pid syn keyword euphoria4Library get_position get_rand get_screen_char get_text syn keyword euphoria4Library get_vector getaddrinfo getmxrr getnsrr graphics_mode syn keyword euphoria4Library harmean has has_console has_match hex_text syn keyword euphoria4Library host_by_addr host_by_name http_get http_post iff syn keyword euphoria4Library iif info init_class init_curdir insertion_sort syn keyword euphoria4Library instance int_to_bits int_to_bytes intdiv syn keyword euphoria4Library is_DEP_supported is_empty is_even is_even_obj syn keyword euphoria4Library is_in_list is_in_range is_inetaddr is_leap_year syn keyword euphoria4Library is_match is_using_DEP is_win_nt join join_path syn keyword euphoria4Library keep_comments keep_newlines key_codes keys keyvalues syn keyword euphoria4Library kill kurtosis lang_load larger_of largest last syn keyword euphoria4Library listen load load_map locate_file lock_file syn keyword euphoria4Library lock_memory log10 lookup lower malloc mapping syn keyword euphoria4Library match_all match_any match_replace matches max syn keyword euphoria4Library maybe_any_key median memory_used merge message_box syn keyword euphoria4Library mid min minsize mod mode money mouse_events syn keyword euphoria4Library mouse_pointer movavg move_file nested_get syn keyword euphoria4Library nested_put new new_extra new_from_kvpairs syn keyword euphoria4Library new_from_string new_time next_prime now now_gmt syn keyword euphoria4Library number open_dll optimize option_spec_to_string syn keyword euphoria4Library or_all pad_head pad_tail pairs parse syn keyword euphoria4Library parse_commandline parse_ip_address parse_querystring syn keyword euphoria4Library parse_url patch pathinfo pathname pcre_copyright syn keyword euphoria4Library peek_end peek_top peek_wstring pivot platform_name syn keyword euphoria4Library poke_string poke_wstring pop powof2 prepare_block syn keyword euphoria4Library pretty_print pretty_sprint prime_list process_lines syn keyword euphoria4Library product project prompt_number prompt_string proper syn keyword euphoria4Library push put put_integer16 put_integer32 put_screen_char syn keyword euphoria4Library quote rad2deg rand_range range raw_frequency read syn keyword euphoria4Library read_bitmap read_file read_lines receive receive_from syn keyword euphoria4Library register_block rehash remove_all remove_directory syn keyword euphoria4Library remove_dups remove_item remove_subseq rename_file syn keyword euphoria4Library repeat_pattern reset retain_all reverse rfind rmatch syn keyword euphoria4Library rnd rnd_1 roll rotate rotate_bits round safe_address syn keyword euphoria4Library sample save_bitmap save_map save_text_image scroll syn keyword euphoria4Library seek select send send_to serialize series syn keyword euphoria4Library service_by_name service_by_port set syn keyword euphoria4Library set_accumulate_summary set_charsets set_colors syn keyword euphoria4Library set_decimal_mark set_def_lang set_default_charsets syn keyword euphoria4Library set_encoding_properties set_keycodes set_lang_path syn keyword euphoria4Library set_option set_rand set_test_abort set_test_verbosity syn keyword euphoria4Library set_vector set_wait_on_summary setenv shift_bits syn keyword euphoria4Library show_block show_help show_tokens shuffle shutdown syn keyword euphoria4Library sign sim_index sinh size skewness sleep slice small syn keyword euphoria4Library smaller_of smallest sort sort_columns sound split syn keyword euphoria4Library split_any split_limit split_path sprint start_time syn keyword euphoria4Library statistics stdev store string_numbers subtract sum syn keyword euphoria4Library sum_central_moments swap tanh task_delay temp_file syn keyword euphoria4Library test_equal test_exec test_fail test_false syn keyword euphoria4Library test_not_equal test_pass test_read test_report syn keyword euphoria4Library test_true test_write text_color text_rows threshold syn keyword euphoria4Library tick_rate to_integer to_number to_string to_unix syn keyword euphoria4Library tokenize_file tokenize_string top transform translate syn keyword euphoria4Library transmute trim trim_head trim_tail trsprintf trunc syn keyword euphoria4Library type_of uname unlock_file unregister_block unsetenv syn keyword euphoria4Library upper use_vesa valid valid_index value values version syn keyword euphoria4Library version_date version_major version_minor version_node syn keyword euphoria4Library version_patch version_revision version_string syn keyword euphoria4Library version_string_long version_string_short version_type syn keyword euphoria4Library video_config vlookup vslice wait_key walk_dir syn keyword euphoria4Library warning_file weeks_day where which_bit wildcard_file syn keyword euphoria4Library wildcard_match wrap write write_file write_lines syn keyword euphoria4Library writef writefln years_day " Library Identifiers (Type) - grep from $EUDIR/include/*: syn keyword euphoria4Type ascii_string boolean bordered_address byte_range syn keyword euphoria4Type case_flagset_type color cstring syn keyword euphoria4Type file_number file_position graphics_point syn keyword euphoria4Type integer_array lcid lock_type machine_addr map syn keyword euphoria4Type mixture number_array option_spec syn keyword euphoria4Type page_aligned_address positive_int process regex syn keyword euphoria4Type sequence_array socket stack std_library_address syn keyword euphoria4Type string t_alnum t_alpha t_ascii t_boolean syn keyword euphoria4Type t_bytearray t_cntrl t_consonant t_digit t_display syn keyword euphoria4Type t_graph t_identifier t_lower t_print t_punct syn keyword euphoria4Type t_space t_specword t_text t_upper t_vowel t_xdigit syn keyword euphoria4Type valid_memory_protection_constant valid_wordsize " Linux shell comment (#!...): syn match euphoria4Comment "\%^#!.*$" " Single and multilines comments: syn region euphoria4Comment start=/--/ end=/$/ syn region euphoria4Comment start="/\*" end="\*/" " Delimiters and brackets: syn match euphoria4Delimit "[([\])]" syn match euphoria4Delimit "\.\." syn match euphoria4Delimit ":" syn match euphoria4Operator "[{}]" " Character constant: syn region euphoria4Char start=/'/ skip=/\\'\|\\\\/ end=/'/ oneline " String constant (""" must be *after* "): syn region euphoria4String start=/"/ skip=/\\"\|\\\\/ end=/"/ oneline syn region euphoria4String start=/b"\|x"/ end=/"/ syn region euphoria4String start=/`/ end=/`/ syn region euphoria4String start=/"""/ end=/"""/ " Binary/Octal/Decimal/Hexadecimal integer: syn match euphoria4Number "\<0b[01_]\+\>" syn match euphoria4Number "\<0t[0-7_]\+\>" syn match euphoria4Number "\<0d[0-9_]\+\>" syn match euphoria4Number "\<0x[0-9A-Fa-f_]\+\>" syn match euphoria4Number "#[0-9A-Fa-f_]\+\>" " Integer/Floating point without a dot: syn match euphoria4Number "\<\d\+\>" " Floating point with dot: syn match euphoria4Number "\<\d\+\.\d*\>" " Floating point starting with a dot: syn match euphoria4Number "\.\d\+\>" " Boolean constants: syn keyword euphoria4Boolean true TRUE false FALSE " Define the default highlighting. " Only used when an item doesn't have highlighting yet: hi def link euphoria4Comment Comment hi def link euphoria4String String hi def link euphoria4Char Character hi def link euphoria4Number Number hi def link euphoria4Boolean Boolean hi def link euphoria4Builtin Identifier hi def link euphoria4Library Function hi def link euphoria4Type Type hi def link euphoria4Keyword Statement hi def link euphoria4Operator Statement hi def link euphoria4Debug Debug hi def link euphoria4Delimit Delimiter hi def link euphoria4PreProc PreProc let b:current_syntax = "euphoria4" " Restore current compatible-options: let &cpo = s:save_cpo unlet s:save_cpo PK!̼&vim80/syntax/tilde.vimnu[" Vim syntax file " This file works only for Vim6.x " Language: Tilde " Maintainer: Tobias Rundstrm " URL: http://www.tildesoftware.net " CVS: $Id: tilde.vim,v 1.1 2004/06/13 19:31:51 vimboss Exp $ if exists("b:current_syntax") finish endif "tilde dosent care ... syn case ignore syn match tildeFunction "\~[a-z_0-9]\+"ms=s+1 syn region tildeParen start="(" end=")" contains=tildeString,tildeNumber,tildeVariable,tildeField,tildeSymtab,tildeFunction,tildeParen,tildeHexNumber,tildeOperator syn region tildeString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ keepend syn region tildeString contained start=+'+ skip=+\\\\\|\\"+ end=+'+ keepend syn match tildeNumber "\d" contained syn match tildeOperator "or\|and" contained syn match tildeHexNumber "0x[a-z0-9]\+" contained syn match tildeVariable "$[a-z_0-9]\+" contained syn match tildeField "%[a-z_0-9]\+" contained syn match tildeSymtab "@[a-z_0-9]\+" contained syn match tildeComment "^#.*" syn region tildeCurly start=+{+ end=+}+ contained contains=tildeLG,tildeString,tildeNumber,tildeVariable,tildeField,tildeFunction,tildeSymtab,tildeHexNumber syn match tildeLG "=>" contained hi def link tildeComment Comment hi def link tildeFunction Operator hi def link tildeOperator Operator hi def link tildeString String hi def link tildeNumber Number hi def link tildeHexNumber Number hi def link tildeVariable Identifier hi def link tildeField Identifier hi def link tildeSymtab Identifier hi def link tildeError Error let b:current_syntax = "tilde" PK!u1 \\vim80/syntax/csdl.vimnu[" Vim syntax file " Language: Curated Stream Definition Language (CSDL) " Maintainer: Jacek Artymiak " Latest Revision: 25 February 2013 if exists("b:current_syntax") finish endif setlocal iskeyword=.,@,48-57,_,192-255 syn case ignore syn match csdlKeyword "tag " syn match csdlKeyword "stream " syn match csdlKeyword "return " syn keyword csdlOperator contains syn match csdlOperator "cs contains" syn keyword csdlOperator substr syn match csdlOperator "cs substr" syn keyword csdlOperator contains_any syn match csdlOperator "cs contains_any" syn keyword csdlOperator any syn match csdlOperator "cs any" syn keyword csdlOperator contains_near syn match csdlOperator "cs contains_near" syn keyword csdlOperator exists syn keyword csdlOperator in syn keyword csdlOperator url_in syn match csdlOperator "==" syn match csdlOperator "!=" syn match csdlOperator "cs ==" syn match csdlOperator "cs !=" syn match csdlOperator ">" syn match csdlOperator ">=" syn match csdlOperator "<" syn match csdlOperator "<=" syn keyword csdlOperator regex_partial syn keyword csdlOperator regex_exact syn keyword csdlOperator geo_box syn keyword csdlOperator geo_radius syn keyword csdlOperator geo_polygon syn keyword csdlLogicalOperator and syn keyword csdlLogicalOperator or syn keyword csdlLogicalOperator not syn match csdlTarget 'reddit\.title' syn match csdlTarget 'reddit\.content' syn match csdlTarget 'reddit\.contenttype' syn match csdlTarget 'reddit\.link' syn match csdlTarget 'reddit\.author\.name' syn match csdlTarget 'reddit\.author\.link' syn match csdlTarget 'reddit\.type' syn match csdlTarget 'reddit\.thread' syn match csdlTarget 'interaction\.type' syn match csdlTarget 'interaction\.title' syn match csdlTarget 'interaction\.content' syn match csdlTarget 'interaction\.source' syn match csdlTarget 'interaction\.geo' syn match csdlTarget 'interaction\.link' syn match csdlTarget 'interaction\.author\.username' syn match csdlTarget 'interaction\.author\.name' syn match csdlTarget 'interaction\.author\.id' syn match csdlTarget 'interaction\.author\.avatar' syn match csdlTarget 'interaction\.author\.link' syn match csdlTarget 'interaction\.sample' syn match csdlTarget 'links\.title' syn match csdlTarget 'links\.url' syn keyword csdlTarget links.normalized_url syn match csdlTarget 'links\.hops' syn match csdlTarget 'links\.code' syn match csdlTarget 'links\.domain' syn keyword csdlTarget links.retweet_count syn match csdlTarget 'links\.age' syn keyword csdlTarget links.meta.content_type syn match csdlTarget 'links\.meta\.charset' syn match csdlTarget 'links\.meta\.lang' syn match csdlTarget 'links\.meta\.keywords' syn match csdlTarget 'links\.meta\.description' syn match csdlTarget 'links\.meta\.newskeywords' syn match csdlTarget 'links\.meta\.standout' syn match csdlTarget 'links\.meta\.opengraph\.type' syn match csdlTarget 'links\.meta\.opengraph\.title' syn match csdlTarget 'links\.meta\.opengraph\.image' syn match csdlTarget 'links\.meta\.opengraph\.url' syn match csdlTarget 'links\.meta\.opengraph\.description' syn keyword csdlTarget links.meta.opengraph.site_name syn match csdlTarget 'links\.meta\.opengraph\.email' syn keyword csdlTarget links.meta.opengraph.phone_number syn keyword csdlTarget links.meta.opengraph.fax_number syn match csdlTarget 'links\.meta\.opengraph\.geo' syn keyword csdlTarget links.meta.opengraph.street_address syn match csdlTarget 'links\.meta\.opengraph\.locality' syn match csdlTarget 'links\.meta\.opengraph\.region' syn keyword csdlTarget links.meta.opengraph.postal_code syn match csdlTarget 'links\.meta\.opengraph\.activity' syn match csdlTarget 'links\.meta\.opengraph\.sport' syn match csdlTarget 'links\.meta\.opengraph\.bar' syn match csdlTarget 'links\.meta\.opengraph\.company' syn match csdlTarget 'links\.meta\.opengraph\.cafe' syn match csdlTarget 'links\.meta\.opengraph\.hotel' syn match csdlTarget 'links\.meta\.opengraph\.restaurant' syn match csdlTarget 'links\.meta\.opengraph\.cause' syn keyword csdlTarget links.meta.opengraph.sports_league syn keyword csdlTarget links.meta.opengraph.sports_team syn match csdlTarget 'links\.meta\.opengraph\.band' syn match csdlTarget 'links\.meta\.opengraph\.government' syn keyword csdlTarget links.meta.opengraph.non_profit syn match csdlTarget 'links\.meta\.opengraph\.school' syn match csdlTarget 'links\.meta\.opengraph\.university' syn match csdlTarget 'links\.meta\.opengraph\.actor' syn match csdlTarget 'links\.meta\.opengraph\.athlete' syn match csdlTarget 'links\.meta\.opengraph\.author' syn match csdlTarget 'links\.meta\.opengraph\.director' syn match csdlTarget 'links\.meta\.opengraph\.musician' syn match csdlTarget 'links\.meta\.opengraph\.politician' syn keyword csdlTarget links.meta.opengraph.public_figure syn match csdlTarget 'links\.meta\.opengraph\.city' syn match csdlTarget 'links\.meta\.opengraph\.country' syn match csdlTarget 'links\.meta\.opengraph\.landmark' syn keyword csdlTarget links.meta.opengraph.state_province syn match csdlTarget 'links\.meta\.opengraph\.album' syn match csdlTarget 'links\.meta\.opengraph\.book' syn match csdlTarget 'links\.meta\.opengraph\.drink' syn match csdlTarget 'links\.meta\.opengraph\.food' syn match csdlTarget 'links\.meta\.opengraph\.game' syn match csdlTarget 'links\.meta\.opengraph\.movie' syn match csdlTarget 'links\.meta\.opengraph\.product' syn match csdlTarget 'links\.meta\.opengraph\.song' syn keyword csdlTarget links.meta.opengraph.tv_show syn match csdlTarget 'links\.meta\.opengraph\.blog' syn match csdlTarget 'links\.meta\.opengraph\.website' syn match csdlTarget 'links\.meta\.opengraph\.article' syn match csdlTarget 'links\.meta\.twitter\.card' syn match csdlTarget 'links\.meta\.twitter\.site' syn keyword csdlTarget links.meta.twitter.site_id syn match csdlTarget 'links\.meta\.twitter\.creator' syn keyword csdlTarget links.meta.twitter.creator_id syn match csdlTarget 'links\.meta\.twitter\.url' syn match csdlTarget 'links\.meta\.twitter\.description' syn match csdlTarget 'links\.meta\.twitter\.title' syn match csdlTarget 'links\.meta\.twitter\.image' syn keyword csdlTarget links.meta.twitter.image_width syn keyword csdlTarget links.meta.twitter.image_height syn match csdlTarget 'links\.meta\.twitter\.player' syn keyword csdlTarget links.meta.twitter.player_width syn keyword csdlTarget links.meta.twitter.player_height syn keyword csdlTarget links.meta.twitter.player_stream syn keyword csdlTarget links.meta.twitter.player_stream_content_type syn match csdlTarget 'myspace\.link' syn match csdlTarget 'myspace\.content' syn match csdlTarget 'myspace\.contenttype' syn match csdlTarget 'myspace\.category' syn match csdlTarget 'myspace\.author\.username' syn match csdlTarget 'myspace\.author\.name' syn match csdlTarget 'myspace\.author\.id' syn match csdlTarget 'myspace\.author\.link' syn match csdlTarget 'myspace\.author\.avatar' syn match csdlTarget 'myspace\.geo' syn match csdlTarget 'myspace\.verb' syn match csdlTarget 'newscred\.type' syn match csdlTarget 'newscred\.article\.domain' syn match csdlTarget 'newscred\.video\.domain' syn match csdlTarget 'newscred\.article\.topics' syn match csdlTarget 'newscred\.video\.topics' syn match csdlTarget 'newscred\.article\.category' syn match csdlTarget 'newscred\.video\.category' syn match csdlTarget 'newscred\.article\.title' syn match csdlTarget 'newscred\.video\.title' syn match csdlTarget 'newscred\.article\.content' syn match csdlTarget 'newscred\.article\.fulltext' syn match csdlTarget 'newscred\.article\.authors' syn match csdlTarget 'newscred\.image\.caption' syn match csdlTarget 'newscred\.video\.caption' syn match csdlTarget 'newscred\.image\.attribution\.text' syn match csdlTarget 'newscred\.image\.attribution\.link' syn match csdlTarget 'newscred\.source\.name' syn match csdlTarget 'newscred\.source\.link' syn match csdlTarget 'newscred\.source\.domain' syn keyword csdlTarget newscred.source.media_type syn keyword csdlTarget newscred.source.company_type syn match csdlTarget 'newscred\.source\.country' syn match csdlTarget 'newscred\.source\.circulation' syn match csdlTarget 'newscred\.source\.founded' syn match csdlTarget 'imdb\.title' syn match csdlTarget 'imdb\.content' syn match csdlTarget 'imdb\.contenttype' syn match csdlTarget 'imdb\.link' syn match csdlTarget 'imdb\.author\.name' syn match csdlTarget 'imdb\.author\.link' syn match csdlTarget 'imdb\.type' syn match csdlTarget 'imdb\.thread' syn match csdlTarget 'amazon\.title' syn match csdlTarget 'amazon\.content' syn match csdlTarget 'amazon\.contenttype' syn match csdlTarget 'amazon\.link' syn match csdlTarget 'amazon\.author\.name' syn match csdlTarget 'amazon\.author\.link' syn match csdlTarget 'amazon\.type' syn match csdlTarget 'amazon\.thread' syn match csdlTarget 'salience\.content\.sentiment' syn match csdlTarget 'salience\.content\.topics' syn match csdlTarget 'salience\.title\.sentiment' syn match csdlTarget 'salience\.title\.topics' syn match csdlTarget 'salience\.content\.entities\.name' syn match csdlTarget 'salience\.content\.entities\.type' syn match csdlTarget 'salience\.title\.entities\.name' syn match csdlTarget 'salience\.title\.entities\.type' syn match csdlTarget 'klout\.score' syn match csdlTarget 'klout\.network' syn match csdlTarget 'klout\.amplification' syn keyword csdlTarget klout.true_reach syn match csdlTarget 'klout\.topics' syn match csdlTarget 'wikipedia\.author\.talk' syn match csdlTarget 'wikipedia\.author\.contributions' syn match csdlTarget 'wikipedia\.author\.username' syn match csdlTarget 'wikipedia\.body' syn match csdlTarget 'wikipedia\.title' syn match csdlTarget 'wikipedia\.images' syn match csdlTarget 'wikipedia\.categories' syn match csdlTarget 'wikipedia\.externallinks' syn match csdlTarget 'wikipedia\.ns' syn match csdlTarget 'wikipedia\.namespace' syn match csdlTarget 'wikipedia\.pageid' syn match csdlTarget 'wikipedia\.parentid' syn match csdlTarget 'wikipedia\.oldlen' syn match csdlTarget 'wikipedia\.newlen' syn match csdlTarget 'wikipedia\.changetype' syn match csdlTarget 'wikipedia\.diff\.from' syn match csdlTarget 'wikipedia\.diff\.to' syn match csdlTarget 'wikipedia\.diff\.changes\.added' syn match csdlTarget 'wikipedia\.diff\.changes\.removed' syn keyword csdlTarget demographic.twitter_activity syn match csdlTarget 'demographic\.location\.country' syn keyword csdlTarget demographic.location.us_state syn match csdlTarget 'demographic\.location\.city' syn match csdlTarget 'demographic\.type' syn match csdlTarget 'demographic\.sex' syn match csdlTarget 'demographic\.status\.relationship' syn match csdlTarget 'demographic\.status\.work' syn keyword csdlTarget demographic.likes_and_interests syn keyword csdlTarget demographic.first_language syn match csdlTarget 'demographic\.professions' syn match csdlTarget 'demographic\.services' syn keyword csdlTarget demographic.large_accounts_followed syn keyword csdlTarget demographic.age_range.start syn keyword csdlTarget demographic.age_range.end syn match csdlTarget 'demographic\.income\.start' syn match csdlTarget 'demographic\.income\.end' syn keyword csdlTarget demographic.main_street.dressed_by syn keyword csdlTarget demographic.main_street.shop_at syn keyword csdlTarget demographic.main_street.eat_and_drink_at syn match csdlTarget 'demographic\.accounts\.categories' syn match csdlTarget 'tumblr\.activity' syn match csdlTarget 'tumblr\.source\.blogid' syn match csdlTarget 'tumblr\.dest\.blogid' syn match csdlTarget 'tumblr\.dest\.postid' syn match csdlTarget 'tumblr\.root\.blogid' syn match csdlTarget 'tumblr\.root\.postid' syn match csdlTarget 'tumblr\.blogid' syn keyword csdlTarget tumblr.blog_name syn match csdlTarget 'tumblr\.type' syn match csdlTarget 'tumblr\.title' syn match csdlTarget 'tumblr\.body' syn match csdlTarget 'tumblr\.text' syn match csdlTarget 'tumblr\.tags' syn keyword csdlTarget tumblr.track_name syn match csdlTarget 'tumblr\.album' syn match csdlTarget 'tumblr\.link' syn match csdlTarget 'tumblr\.meta\.url' syn match csdlTarget 'tumblr\.meta\.type' syn match csdlTarget 'tumblr\.meta\.description' syn keyword csdlTarget tumblr.meta.likes_local syn keyword csdlTarget tumblr.meta.likes_global syn keyword csdlTarget tumblr.meta.reblogged_global syn match csdlTarget 'demographic\.gender' syn match csdlTarget 'flickr\.title' syn match csdlTarget 'flickr\.content' syn match csdlTarget 'flickr\.contenttype' syn match csdlTarget 'flickr\.link' syn match csdlTarget 'flickr\.author\.name' syn match csdlTarget 'flickr\.author\.link' syn match csdlTarget 'flickr\.author\.username' syn match csdlTarget 'flickr\.type' syn match csdlTarget 'flickr\.thread' syn match csdlTarget 'twitter\.text' syn match csdlTarget 'twitter\.source' syn match csdlTarget 'twitter\.mentions' syn keyword csdlTarget twitter.mention_ids syn match csdlTarget 'twitter\.links' syn match csdlTarget 'twitter\.domains' syn keyword csdlTarget twitter.in_reply_to_screen_name syn keyword csdlTarget twitter.in_reply_to_user_id syn keyword csdlTarget twitter.in_reply_to_status_id syn keyword csdlTarget twitter.filter_level syn match csdlTarget 'twitter\.lang' syn match csdlTarget 'twitter\.geo' syn match csdlTarget 'twitter\.user\.description' syn match csdlTarget 'twitter\.user\.location' syn keyword csdlTarget twitter.user.statuses_count syn keyword csdlTarget twitter.user.followers_count syn keyword csdlTarget twitter.user.follower_ratio syn keyword csdlTarget twitter.user.profile_age syn keyword csdlTarget twitter.user.friends_count syn keyword csdlTarget twitter.user.screen_name syn match csdlTarget 'twitter\.user\.lang' syn keyword csdlTarget twitter.user.time_zone syn match csdlTarget 'twitter\.user\.name' syn match csdlTarget 'twitter\.user\.id' syn keyword csdlTarget twitter.user.listed_count syn match csdlTarget 'twitter\.user\.url' syn match csdlTarget 'twitter\.user\.verified' syn keyword csdlTarget twitter.place.place_type syn match csdlTarget 'twitter\.place\.country' syn keyword csdlTarget twitter.place.country_code syn keyword csdlTarget twitter.place.full_name syn match csdlTarget 'twitter\.place\.name' syn match csdlTarget 'twitter\.place\.url' syn match csdlTarget 'twitter\.place\.attributes\.locality' syn match csdlTarget 'twitter\.place\.attributes\.region' syn keyword csdlTarget twitter.place.attributes.street_address syn match csdlTarget 'twitter\.status' syn match csdlTarget 'twitter\.retweet\.text' syn match csdlTarget 'twitter\.retweet\.elapsed' syn match csdlTarget 'twitter\.retweet\.source' syn keyword csdlTarget twitter.retweet.filter_level syn match csdlTarget 'twitter\.retweet\.lang' syn match csdlTarget 'twitter\.retweet\.user\.description' syn match csdlTarget 'twitter\.retweet\.user\.location' syn keyword csdlTarget twitter.retweet.user.statuses_count syn keyword csdlTarget twitter.retweet.user.followers_count syn keyword csdlTarget twitter.retweet.user.follower_ratio syn keyword csdlTarget twitter.retweet.user.profile_age syn keyword csdlTarget twitter.retweet.user.friends_count syn keyword csdlTarget twitter.retweet.user.screen_name syn match csdlTarget 'twitter\.retweet\.user\.lang' syn keyword csdlTarget twitter.retweet.user.time_zone syn match csdlTarget 'twitter\.retweet\.user\.name' syn match csdlTarget 'twitter\.retweet\.user\.id' syn keyword csdlTarget twitter.retweet.user.listed_count syn match csdlTarget 'twitter\.retweet\.user\.url' syn match csdlTarget 'twitter\.retweet\.user\.verified' syn match csdlTarget 'twitter\.retweeted\.id' syn match csdlTarget 'twitter\.retweeted\.source' syn keyword csdlTarget twitter.retweeted.in_reply_to_screen_name syn keyword csdlTarget twitter.retweeted.in_reply_to_user_id_str syn keyword csdlTarget twitter.retweeted.in_reply_to_status_id syn match csdlTarget 'twitter\.retweet\.count' syn match csdlTarget 'twitter\.retweet\.mentions' syn keyword csdlTarget twitter.retweet.mention_ids syn match csdlTarget 'twitter\.retweet\.links' syn match csdlTarget 'twitter\.retweet\.domains' syn match csdlTarget 'twitter\.retweeted\.user\.description' syn match csdlTarget 'twitter\.retweeted\.user\.location' syn keyword csdlTarget twitter.retweeted.user.statuses_count syn keyword csdlTarget twitter.retweeted.user.followers_count syn keyword csdlTarget twitter.retweeted.user.follower_ratio syn keyword csdlTarget twitter.retweeted.user.profile_age syn keyword csdlTarget twitter.retweeted.user.friends_count syn keyword csdlTarget twitter.retweeted.user.screen_name syn match csdlTarget 'twitter\.retweeted\.user\.lang' syn keyword csdlTarget twitter.retweeted.user.time_zone syn match csdlTarget 'twitter\.retweeted\.user\.name' syn match csdlTarget 'twitter\.retweeted\.user\.id' syn keyword csdlTarget twitter.retweeted.user.listed_count syn match csdlTarget 'twitter\.retweeted\.user\.url' syn match csdlTarget 'twitter\.retweeted\.user\.verified' syn match csdlTarget 'twitter\.retweeted\.geo' syn keyword csdlTarget twitter.retweeted.place.place_type syn match csdlTarget 'twitter\.retweeted\.place\.country' syn keyword csdlTarget twitter.retweeted.place.country_code syn keyword csdlTarget twitter.retweeted.place.full_name syn match csdlTarget 'twitter\.retweeted\.place\.name' syn match csdlTarget 'twitter\.retweeted\.place\.url' syn match csdlTarget 'twitter\.retweeted\.place\.attributes' syn match csdlTarget 'twitter\.hashtags' syn match csdlTarget 'twitter\.retweet\.hashtags' syn match csdlTarget 'twitter\.media\.type' syn keyword csdlTarget twitter.media.media_url syn keyword csdlTarget twitter.media.display_url syn match csdlTarget 'twitter\.retweet\.media\.type' syn keyword csdlTarget twitter.retweet.media.media_url syn keyword csdlTarget twitter.retweet.media.display_url syn match csdlTarget 'blog\.title' syn match csdlTarget 'blog\.content' syn match csdlTarget 'blog\.contenttype' syn match csdlTarget 'blog\.link' syn match csdlTarget 'blog\.domain' syn match csdlTarget 'blog\.author\.name' syn match csdlTarget 'blog\.author\.link' syn match csdlTarget 'blog\.author\.avatar' syn match csdlTarget 'blog\.author\.username' syn match csdlTarget 'blog\.type' syn match csdlTarget 'blog\.post\.link' syn match csdlTarget 'blog\.post\.title' syn match csdlTarget 'facebook\.author\.name' syn match csdlTarget 'facebook\.author\.link' syn match csdlTarget 'facebook\.author\.id' syn match csdlTarget 'facebook\.author\.avatar' syn match csdlTarget 'facebook\.message' syn match csdlTarget 'facebook\.description' syn match csdlTarget 'facebook\.caption' syn match csdlTarget 'facebook\.type' syn match csdlTarget 'facebook\.application' syn match csdlTarget 'facebook\.source' syn match csdlTarget 'facebook\.link' syn match csdlTarget 'facebook\.name' syn match csdlTarget 'facebook\.to\.names' syn match csdlTarget 'facebook\.to\.ids' syn match csdlTarget 'facebook\.og\.title' syn match csdlTarget 'facebook\.og\.location' syn match csdlTarget 'facebook\.og\.photos' syn match csdlTarget 'facebook\.og\.by' syn match csdlTarget 'facebook\.og\.description' syn match csdlTarget 'facebook\.og\.type' syn match csdlTarget 'facebook\.og\.length' syn match csdlTarget 'facebook\.likes\.count' syn match csdlTarget 'facebook\.likes\.names' syn match csdlTarget 'facebook\.likes\.ids' syn match csdlTarget 'topix\.title' syn match csdlTarget 'topix\.content' syn match csdlTarget 'topix\.contenttype' syn match csdlTarget 'topix\.link' syn match csdlTarget 'topix\.author\.name' syn match csdlTarget 'topix\.type' syn match csdlTarget 'topix\.thread' syn match csdlTarget 'topix\.author\.location' syn match csdlTarget 'bitly\.user\.agent' syn keyword csdlTarget bitly.url_hash syn match csdlTarget 'bitly\.share\.hash' syn match csdlTarget 'bitly\.cname' syn keyword csdlTarget bitly.referring_url syn keyword csdlTarget bitly.referring_domain syn match csdlTarget 'bitly\.url' syn match csdlTarget 'bitly\.domain' syn keyword csdlTarget bitly.country_code syn keyword csdlTarget bitly.geo_region_code syn match csdlTarget 'bitly\.country' syn keyword csdlTarget bitly.geo_region syn keyword csdlTarget bitly.geo_city syn match csdlTarget 'bitly\.geo' syn match csdlTarget 'bitly\.timezone' syn match csdlTarget 'trends\.type' syn match csdlTarget 'trends\.content' syn match csdlTarget 'trends\.source' syn match csdlTarget 'board\.title' syn match csdlTarget 'board\.content' syn match csdlTarget 'board\.contenttype' syn match csdlTarget 'board\.link' syn match csdlTarget 'board\.domain' syn match csdlTarget 'board\.author\.name' syn match csdlTarget 'board\.author\.link' syn match csdlTarget 'board\.author\.avatar' syn match csdlTarget 'board\.author\.username' syn match csdlTarget 'board\.type' syn match csdlTarget 'board\.thread' syn match csdlTarget 'board\.author\.location' syn match csdlTarget 'board\.author\.signature' syn match csdlTarget 'board\.author\.registered' syn match csdlTarget 'board\.author\.age' syn match csdlTarget 'board\.author\.gender' syn match csdlTarget 'video\.title' syn match csdlTarget 'video\.content' syn match csdlTarget 'video\.contenttype' syn match csdlTarget 'video\.domain' syn match csdlTarget 'video\.author\.name' syn match csdlTarget 'video\.author\.link' syn match csdlTarget 'video\.author\.avatar' syn match csdlTarget 'video\.author\.username' syn match csdlTarget 'video\.type' syn match csdlTarget 'video\.videolink' syn match csdlTarget 'video\.commentslink' syn match csdlTarget 'video\.duration' syn match csdlTarget 'video\.thumbnail' syn match csdlTarget 'video\.category' syn match csdlTarget 'video\.tags' syn match csdlTarget '2ch\.title' syn match csdlTarget '2ch\.content' syn match csdlTarget '2ch\.contenttype' syn match csdlTarget '2ch\.link' syn match csdlTarget '2ch\.author\.name' syn match csdlTarget '2ch\.type' syn match csdlTarget '2ch\.thread' syn match csdlTarget 'dailymotion\.title' syn match csdlTarget 'dailymotion\.content' syn match csdlTarget 'dailymotion\.contenttype' syn match csdlTarget 'dailymotion\.author\.link' syn match csdlTarget 'dailymotion\.author\.username' syn match csdlTarget 'dailymotion\.videolink' syn match csdlTarget 'dailymotion\.duration' syn match csdlTarget 'dailymotion\.thumbnail' syn match csdlTarget 'dailymotion\.category' syn match csdlTarget 'dailymotion\.tags' syn match csdlTarget 'language\.tag' syn match csdlTarget 'language\.confidence' syn match csdlTarget 'digg\.type' syn match csdlTarget 'digg\.user\.name' syn match csdlTarget 'digg\.user\.fullname' syn match csdlTarget 'digg\.user\.registered' syn match csdlTarget 'digg\.user\.profileviews' syn match csdlTarget 'digg\.user\.icon' syn match csdlTarget 'digg\.user\.links' syn match csdlTarget 'digg\.item\.status' syn match csdlTarget 'digg\.item\.description' syn match csdlTarget 'digg\.item\.title' syn match csdlTarget 'digg\.item\.diggs' syn match csdlTarget 'digg\.item\.comments' syn match csdlTarget 'digg\.item\.topic' syn match csdlTarget 'digg\.comment\.buries' syn match csdlTarget 'digg\.comment\.diggs' syn match csdlTarget 'digg\.comment\.text' syn match csdlTarget 'youtube\.title' syn match csdlTarget 'youtube\.content' syn match csdlTarget 'youtube\.contenttype' syn match csdlTarget 'youtube\.author\.name' syn match csdlTarget 'youtube\.author\.link' syn match csdlTarget 'youtube\.type' syn match csdlTarget 'youtube\.videolink' syn match csdlTarget 'youtube\.commentslink' syn match csdlTarget 'youtube\.duration' syn match csdlTarget 'youtube\.thumbnail' syn match csdlTarget 'youtube\.category' syn match csdlTarget 'youtube\.tags' syn match csdlComment "^\/\/.*$" syn match csdlComment "^\/\*.*$" syn match csdlComment "^.*\*\/$" highlight link csdlKeyword Statement highlight link csdlOperator Operator highlight link csdlLogicalOperator Operator highlight link csdlTarget Constant highlight link csdlComment Comment " let b:current_syntax = "csdl" PK!h  vim80/syntax/dcd.vimnu[" Vim syntax file " Language: WildPackets EtherPeek Decoder (.dcd) file " Maintainer: Christopher Shinn " Last Change: 2003 Apr 25 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Keywords syn keyword dcdFunction DCod TRTS TNXT CRLF syn match dcdFunction display "\(STR\)\#" syn keyword dcdLabel LABL syn region dcdLabel start="[A-Z]" end=";" syn keyword dcdConditional CEQU CNEQ CGTE CLTE CBIT CLSE syn keyword dcdConditional LSTS LSTE LSTZ syn keyword dcdConditional TYPE TTST TEQU TNEQ TGTE TLTE TBIT TLSE TSUB SKIP syn keyword dcdConditional MARK WHOA syn keyword dcdConditional SEQU SNEQ SGTE SLTE SBIT syn match dcdConditional display "\(CST\)\#" "\(TST\)\#" syn keyword dcdDisplay HBIT DBIT BBIT syn keyword dcdDisplay HBYT DBYT BBYT syn keyword dcdDisplay HWRD DWRD BWRD syn keyword dcdDisplay HLNG DLNG BLNG syn keyword dcdDisplay D64B syn match dcdDisplay display "\(HEX\)\#" "\(CHR\)\#" "\(EBC\)\#" syn keyword dcdDisplay HGLB DGLB BGLB syn keyword dcdDisplay DUMP syn keyword dcdStatement IPLG IPV6 ATLG AT03 AT01 ETHR TRNG PRTO PORT syn keyword dcdStatement TIME OSTP PSTR CSTR NBNM DMPE FTPL CKSM FCSC syn keyword dcdStatement GBIT GBYT GWRD GLNG syn keyword dcdStatement MOVE ANDG ORRG NOTG ADDG SUBG MULG DIVG MODG INCR DECR syn keyword dcdSpecial PRV1 PRV2 PRV3 PRV4 PRV5 PRV6 PRV7 PRV8 " Comment syn region dcdComment start="\*" end="\;" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link dcdFunction Identifier hi def link dcdLabel Constant hi def link dcdConditional Conditional hi def link dcdDisplay Type hi def link dcdStatement Statement hi def link dcdSpecial Special hi def link dcdComment Comment let b:current_syntax = "dcd" PK!Ƚ--vim80/syntax/framescript.vimnu[" Vim syntax file " Language: FrameScript v4.0 " Previous Maintainer: Nikolai Weibull " Latest Revision: 2007-02-22 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match framescriptOperator \ '[+*/%=-]\|[><]=\=\|#[&|]' syn keyword framescriptTodo \ contained \ TODO FIXME XXX NOTE syn cluster framescriptCommentGroup \ contains= \ framescriptTodo, \ @Spell syn match framescriptComment \ display \ contains=@framescriptCommentGroup \ '//.*$' syn region framescriptComment \ contains=@framescriptCommentGroup \ matchgroup=framescriptCommentStart \ start='/\*' \ end='\*/' syn case ignore syn match framescriptInclude \ display \ contains=framescriptIncluded \ "^\s*<#Include\>\s*'" syn region framescriptIncluded \ contained \ display \ start=+'+ \ skip=+\\\\\|\\'+ \ end=+'+ syn match framescriptNumbers \ display \ transparent \ contains= \ framescriptInteger, \ framescriptReal, \ framescriptMetric, \ framescriptCharacter \ '\<\d\|\.\d' syn keyword framescriptBoolean \ True False syn match framescriptInteger \ contained \ display \ '\d\+\>' syn match framescriptInteger \ contained \ display \ '\x\+H\>' syn match framescriptInteger \ contained \ display \ '[01]\+B\>' syn match framescriptReal \ contained \ display \ '\d\+\.\d*\|\.\d\+\>' syn match framescriptMetric \ contained \ display \ '\%(\d\+\%(\.\d*\)\=\|\.\d\+\)\%(pts\|in\|"\|cm\|mm\|pica\)\>' syn match framescriptCharacter \ contained \ display \ '\d\+S\>' syn region framescriptString \ contains=framescriptStringSpecialChar,@Spell \ start=+'+ \ skip=+\\\\\|\\'+ \ end=+'+ syn match framescriptStringSpecialChar \ contained \ display \ "\\[\\']" syn keyword framescriptConstant \ BackSlash \ CharCR \ CharLF \ CharTAB \ ClientDir \ ClientName \ FslVersionMajor \ FslVersionMinor \ InstallName \ InstalledScriptList \ MainScript \ NULL \ ObjEndOffset \ ProductRevision \ Quote \ ThisScript syn keyword framescriptOperator \ not \ and \ or syn keyword framescriptSessionVariables \ ErrorCode \ ErrorMsg \ DeclareVarMode \ PlatformEncodingMode syn keyword framescriptStructure \ Event \ EndEvent syn keyword framescriptStatement \ Sub \ EndSub \ Run \ Function \ EndFunction \ Set \ Add \ Apply \ CallClient \ Close \ Copy \ Cut \ DialogBox \ Delete \ Demote \ Display \ DocCompare \ Export \ Find \ LeaveLoop \ LeaveScript \ LeaveSub \ LoopNext \ Merge \ MsgBox \ Paste \ PopClipboard \ PushClipboard \ Read \ Replace \ Return \ Sort \ Split syn keyword framescriptStatement \ nextgroup=framescriptApplySubStatement skipwhite skipempty \ Apply syn keyword framescriptApplySubStatement \ contained \ Pagelayout \ TextProperties syn keyword framescriptStatement \ nextgroup=framescriptClearSubStatement skipwhite skipempty \ Clear syn keyword framescriptClearSubStatement \ contained \ ChangeBars \ Text syn keyword framescriptStatement \ nextgroup=framescriptCloseSubStatement skipwhite skipempty \ Close syn keyword framescriptCloseSubStatement \ contained \ Book \ Document \ TextFile syn keyword framescriptStatement \ nextgroup=framescriptExecSubStatement skipwhite skipempty \ Exec syn keyword framescriptExecSubStatement \ contained \ Compile \ Script \ Wait syn keyword framescriptStatement \ nextgroup=framescriptExecuteSubStatement skipwhite skipempty \ Execute syn keyword framescriptExecuteSubStatement \ contained \ FrameCommand \ Hypertext \ StartUndoCheckPoint \ EndUndoCheckPoint \ ClearUndoHistory syn keyword framescriptStatement \ nextgroup=framescriptGenerateSubStatement skipwhite skipempty \ Generate syn keyword framescriptGenerateSubStatement \ contained \ Bookfile syn keyword framescriptStatement \ nextgroup=framescriptGetSubStatement skipwhite skipempty \ Get syn keyword framescriptGetSubStatement \ contained \ Member \ Object \ String \ TextList \ TextProperties syn keyword framescriptStatement \ nextgroup=framescriptImportSubStatement skipwhite skipempty \ Import syn keyword framescriptImportSubStatement \ contained \ File \ Formats \ ElementDefs syn keyword framescriptStatement \ nextgroup=framescriptInstallSubStatement skipwhite skipempty \ Install \ Uninstall syn keyword framescriptInstallSubStatement \ contained \ ChangeBars \ Text syn keyword framescriptStatement \ nextgroup=framescriptNewSubStatement skipwhite skipempty \ New syn keyword framescriptNewSubStatement \ contained \ AFrame \ Footnote \ Marker \ TiApiClient \ Variable \ XRef \ FormatChangeList \ FormatRule \ FmtRuleClause \ Arc \ Ellipse \ Flow \ Group \ Inset \ Line \ Math \ Polygon \ Polyline \ Rectangle \ RoundRect \ TextFrame \ Textline \ UnanchoredFrame \ Command \ Menu \ MenuItemSeparator \ Book \ CharacterFormat \ Color \ ConditionFormat \ ElementDef \ FormatChangeList \ MarkerType \ MasterPage \ ParagraphFormat \ PgfFmt \ ReferencePAge \ RulingFormat \ TableFormat \ VariableFormat \ XRefFormat \ BodyPage \ BookComponent \ Paragraph \ Element \ Attribute \ AttributeDef \ AttributeList \ AttributeDefList \ ElementLoc \ ElementRange \ Table \ TableRows \ TableCols \ Text \ Integer \ Real \ Metric \ String \ Object \ TextLoc \ TextRange \ IntList \ UIntList \ MetricList \ StringList \ PointList \ TabList \ PropertyList \ LibVar \ ScriptVar \ SubVar \ TextFile syn keyword framescriptStatement \ nextgroup=framescriptOpenSubStatement skipwhite skipempty \ Open syn keyword framescriptOpenSubStatement \ contained \ Document \ Book \ TextFile syn keyword framescriptStatement \ nextgroup=framescriptPrintSubStatement skipwhite skipempty \ Print syn keyword framescriptPrintSubStatement \ contained \ Document \ Book syn keyword framescriptStatement \ nextgroup=framescriptQuitSubStatement skipwhite skipempty \ Quit syn keyword framescriptQuitSubStatement \ contained \ Session syn keyword framescriptStatement \ nextgroup=framescriptRemoveSubStatement skipwhite skipempty \ Remove syn keyword framescriptRemoveSubStatement \ contained \ Attribute \ CommandObject syn keyword framescriptStatement \ nextgroup=framescriptSaveSubStatement skipwhite skipempty \ Save syn keyword framescriptSaveSubStatement \ contained \ Document \ Book syn keyword framescriptStatement \ nextgroup=framescriptSelectSubStatement skipwhite skipempty \ Select syn keyword framescriptSelectSubStatement \ contained \ TableCells syn keyword framescriptStatement \ nextgroup=framescriptStraddleSubStatement skipwhite skipempty \ Straddle syn keyword framescriptStraddleSubStatement \ contained \ TableCells syn keyword framescriptStatement \ nextgroup=framescriptUpdateSubStatement skipwhite skipempty \ Update syn keyword framescriptUpdateSubStatement \ contained \ ReDisplay \ Formatting \ Hyphenating \ ResetEquationsSettings \ ResetRefFrames \ RestartPgfNums \ TextInset \ Variables \ XRefs \ Book syn keyword framescriptStatement \ nextgroup=framescriptWriteSubStatement skipwhite skipempty \ Write syn keyword framescriptUpdateSubStatement \ contained \ Console \ Display syn keyword framescriptRepeat \ Loop \ EndLoop syn keyword framescriptConditional \ If \ ElseIf \ Else \ EndIf syn keyword framescriptType \ Local \ GlobalVar let b:framescript_minlines = exists("framescript_minlines") \ ? framescript_minlines : 15 exec "syn sync ccomment framescriptComment minlines=" . b:framescript_minlines hi def link framescriptTodo Todo hi def link framescriptComment Comment hi def link framescriptCommentStart framescriptComment hi def link framescriptInclude Include hi def link framescriptIncluded String hi def link framescriptBoolean Boolean hi def link framescriptNumber Number hi def link framescriptInteger framescriptNumber hi def link framescriptReal framescriptNumber hi def link framescriptMetric framescriptNumber hi def link framescriptCharacter framescriptNumber hi def link framescriptString String hi def link framescriptStringSpecialChar SpecialChar hi def link framescriptConstant Constant hi def link framescriptOperator None hi def link framescriptSessionVariables PreProc hi def link framescriptStructure Structure hi def link framescriptStatement Statement hi def link framescriptSubStatement Type hi def link framescriptApplySubStatement framescriptSubStatement hi def link framescriptClearSubStatement framescriptSubStatement hi def link framescriptCloseSubStatement framescriptSubStatement hi def link framescriptExecSubStatement framescriptSubStatement hi def link framescriptExecuteSubStatement framescriptSubStatement hi def link framescriptGenerateSubStatement framescriptSubStatement hi def link framescriptGetSubStatement framescriptSubStatement hi def link framescriptImportSubStatement framescriptSubStatement hi def link framescriptInstallSubStatement framescriptSubStatement hi def link framescriptNewSubStatement framescriptSubStatement hi def link framescriptOpenSubStatement framescriptSubStatement hi def link framescriptPrintSubStatement framescriptSubStatement hi def link framescriptQuitSubStatement framescriptSubStatement hi def link framescriptRemoveSubStatement framescriptSubStatement hi def link framescriptSaveSubStatement framescriptSubStatement hi def link framescriptSelectSubStatement framescriptSubStatement hi def link framescriptStraddleSubStatement framescriptSubStatement hi def link framescriptUpdateSubStatement framescriptSubStatement hi def link framescriptRepeat Repeat hi def link framescriptConditional Conditional hi def link framescriptType Type let b:current_syntax = "framescript" let &cpo = s:cpo_save unlet s:cpo_save PK!;;vim80/syntax/rexx.vimnu[" Vim syntax file " Language: Rexx " Maintainer: Thomas Geulig " Last Change: 2012 Sep 14, added support for new ooRexx 4.0 features " URL: http://www.geulig.de/vim/rexx.vim " Special Thanks to Dan Sharp and Rony G. Flatscher " for comments and additions " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " add to valid identifier chars setlocal iskeyword+=. setlocal iskeyword+=! setlocal iskeyword+=? " ---rgf, position important: must be before comments etc. ! syn match rexxOperator "[=|\/\\\+\*\[\],;:<>&\~%\-]" " rgf syn match rexxIdentifier "\<[a-zA-Z\!\?_]\([a-zA-Z0-9._?!]\)*\>" syn match rexxIdentifier "\<\K\k*\>" syn match rexxEnvironmentSymbol "\<\.\k\+\>" " A Keyword is the first symbol in a clause. A clause begins at the start " of a line or after a semicolon. THEN, ELSE, OTHERWISE, and colons are always " followed by an implied semicolon. syn match rexxClause "\(^\|;\|:\|then \|else \|when \|otherwise \)\s*\S*" contains=ALLBUT,rexxParse2,rexxRaise2,rexxForward2 " Considered keywords when used together in a phrase and begin a clause syn match rexxParse "\\|version\)\>" containedin=rexxClause contains=rexxParse2 syn match rexxParse2 "\" containedin=rexxParse syn match rexxKeyword contained "\" syn match rexxKeyword contained "\<\(address\|trace\)\( value\)\?\>" syn match rexxKeyword contained "\" syn match rexxKeyword contained "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\(\s\+forever\)\?\>" syn match rexxKeyword contained "\\s*\(strict\s*\)\?\" " Another keyword phrase, separated to aid highlighting in rexxFunction syn match rexxRegularCallSignal contained "\<\(call\|signal\)\s\(\s*on\>\|\s*off\>\)\@!\(\k\+\ze\|\ze(\)\(\s*\|;\|$\|(\)" syn region rexxLabel contained start="\<\(call\|signal\)\>\s*\zs\(\k*\|(\)" end="\ze\(\s*\|;\|$\|(\)" containedin=rexxRegularCallSignal syn match rexxExceptionHandling contained "\<\(call\|signal\)\>\s\+\<\(on\|off\)\>.*\(;\|$\)" contains=rexxComment " hilite label given after keyword "name" syn match rexxLabel "name\s\+\zs\k\+\ze" containedin=rexxExceptionHandling " hilite condition name (serves as label) syn match rexxLabel "\<\(call\|signal\)\>\s\+\<\(on\|off\)\>\s*\zs\k\+\ze\s*\(;\|$\)" containedin=rexxExceptionHandling " user exception handling, hilite user defined name syn region rexxLabel contained start="user\s\+\zs\k" end="\ze\(\s\|;\|$\)" containedin=rexxExceptionHandling " Considered keywords when they begin a clause syn match rexxKeywordStatements "\<\(arg\|catch\|do\|drop\|end\|exit\|expose\|finally\|forward\|if\|interpret\|iterate\|leave\|loop\|nop\)\>" syn match rexxKeywordStatements "\<\(options\|pull\|push\|queue\|raise\|reply\|return\|say\|select\|trace\)\>" " Conditional keywords starting a new statement syn match rexxConditional "\<\(then\|else\|when\|otherwise\)\(\s*\|;\|\_$\|\)\>" contains=rexxKeywordStatements " Conditional phrases syn match rexxLoopKeywords "\<\(to\|by\|for\|until\|while\|over\)\>" containedin=doLoopSelectLabelRegion " must be after Conditional phrases! syn match doLoopSelectLabelRegion "\<\(do\|loop\|select\)\>\s\+\(label\s\+\)\?\(\s\+\k\+\s\+\zs\\)\?\k*\(\s\+forever\)\?\(\s\|;\|$\)" contains=doLoopSelectLabelRegion,rexxStartValueAssignment,rexxLoopKeywords " color label's name syn match rexxLabel2 "\<\(do\|loop\|select\)\>\s\+label\s\+\zs\k*\ze" containedin=doLoopSelectLabelRegion " make sure control variable is normal " TODO: re-activate ? "rgf syn match rexxControlVariable "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\s\+\zs.*\ze\s\+\" containedin=doLoopSelectLabelRegion " make sure control variable assignment is normal syn match rexxStartValueAssignment "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\s\+\zs.*\ze\(=.*\)\?\s\+\" containedin=doLoopSelectLabelRegion " highlight label name syn match endIterateLeaveLabelRegion "\<\(end\|leave\|iterate\)\>\(\s\+\K\k*\)" contains=rexxLabel2 syn match rexxLabel2 "\<\(end\|leave\|iterate\)\>\s\+\zs\k*\ze" containedin=endIterateLeaveLabelRegion " Guard statement syn match rexxGuard "\(^\|;\|:\)\s*\\s\+\<\(on\|off\)\>" " Trace statement syn match rexxTrace "\(^\|;\|:\)\s*\\s\+\<\K\k*\>" " Raise statement " syn match rexxRaise "\(^\|;\|:\)\s\+\\s*\<\(propagate\|error\|failure\|syntax\|user\)\>\?" contains=rexxRaise2 syn match rexxRaise "\(^\|;\|:\)\s*\\s*\<\(propagate\|error\|failure\|syntax\|user\)\>\?" contains=rexxRaise2 syn match rexxRaise2 "\<\(additional\|array\|description\|exit\|propagate\|return\)\>" containedin=rexxRaise " Forward statement syn match rexxForward "\(^\|;\|:\)\\s*" contains=rexxForward2 syn match rexxForward2 "\<\(arguments\|array\|continue\|message\|class\|to\)\>" contained " Functions/Procedures syn match rexxFunction "\<\<[a-zA-Z\!\?_]\k*\>("me=e-1 syn match rexxFunction "[()]" " String constants syn region rexxString start=+"+ skip=+""+ end=+"\(x\|b\)\?+ oneline syn region rexxString start=+'+ skip=+''+ end=+'\(x\|b\)\?+ oneline syn region rexxParen transparent start='(' end=')' contains=ALLBUT,rexxParenError,rexxTodo,rexxLabel,rexxKeyword " Catch errors caused by wrong parenthesis syn match rexxParenError ")" syn match rexxInParen "[\\[\\]{}]" " Comments syn region rexxComment start="/\*" end="\*/" contains=rexxTodo,rexxComment syn match rexxCommentError "\*/" syn region rexxLineComment start="--" end="\_$" oneline " Highlight User Labels " check for labels between comments, labels stated in a statement in the middle of a line syn match rexxLabel "\(\_^\|;\)\s*\(\/\*.*\*\/\)*\s*\k\+\s*\(\/\*.*\*\/\)*\s*:"me=e-1 contains=rexxTodo,rexxComment syn keyword rexxTodo contained TODO FIXME XXX " ooRexx messages syn region rexxMessageOperator start="\(\~\|\~\~\)" end="\(\S\|\s\)"me=e-1 syn match rexxMessage "\(\~\|\~\~\)\s*\<\.*[a-zA-Z]\([a-zA-Z0-9._?!]\)*\>" contains=rexxMessageOperator " line continuations, take care of (line-)comments after it syn match rexxLineContinue ",\ze\s*\(--.*\|\/\*.*\)*$" " the following is necessary, otherwise three consecutive dashes will cause it to highlight the first one syn match rexxLineContinue "-\ze-\@!\s*\(--.*\|\s*\/\*.*\)\?$" " Special Variables syn keyword rexxSpecialVariable sigl rc result self super syn keyword rexxSpecialVariable .environment .error .input .local .methods .output .rs .stderr .stdin .stdout .stdque " Constants syn keyword rexxConst .true .false .nil .endOfLine .line .context " Rexx numbers " int like number syn match rexxNumber '\d\+' contained syn match rexxNumber '[-+]\s*\d\+' contained " Floating point number with decimal syn match rexxNumber '\d\+\.\d*' contained syn match rexxNumber '[-+]\s*\d\+\.\d*' contained " Floating point like number with E syn match rexxNumber '[-+]\s*\d*[eE][\-+]\d\+' contained syn match rexxNumber '\d*[eE][\-+]\d\+' contained " Floating point like number with E and decimal point (+,-) syn match rexxNumber '[-+]\s*\d*\.\d*[eE][\-+]\d\+' contained syn match rexxNumber '\d*\.\d*[eE][\-+]\d\+' contained " ooRexx builtin classes (as of version 3.2.0, fall 2007), first define dot to be o.k. in keywords syn keyword rexxBuiltinClass .Alarm .ArgUtil .Array .Bag .CaselessColumnComparator syn keyword rexxBuiltinClass .CaselessComparator .CaselessDescendingComparator .CircularQueue syn keyword rexxBuiltinClass .Class .Collection .ColumnComparator .Comparable .Comparator syn keyword rexxBuiltinClass .DateTime .DescendingComparator .Directory .File .InputOutputStream syn keyword rexxBuiltinClass .InputStream .InvertingComparator .List .MapCollection syn keyword rexxBuiltinClass .Message .Method .Monitor .MutableBuffer .Object syn keyword rexxBuiltinClass .OrderedCollection .OutputStream .Package .Properties .Queue syn keyword rexxBuiltinClass .RegularExpression .Relation .RexxContext .RexxQueue .Routine syn keyword rexxBuiltinClass .Set .SetCollection .Stem .Stream syn keyword rexxBuiltinClass .StreamSupplier .String .Supplier .Table .TimeSpan " Windows-only classes syn keyword rexxBuiltinClass .AdvancedControls .AnimatedButton .BaseDialog .ButtonControl syn keyword rexxBuiltinClass .CategoryDialog .CheckBox .CheckList .ComboBox .DialogControl syn keyword rexxBuiltinClass .DialogExtensions .DlgArea .DlgAreaU .DynamicDialog syn keyword rexxBuiltinClass .EditControl .InputBox .IntegerBox .ListBox .ListChoice syn keyword rexxBuiltinClass .ListControl .MenuObject .MessageExtensions .MultiInputBox syn keyword rexxBuiltinClass .MultiListChoice .OLEObject .OLEVariant syn keyword rexxBuiltinClass .PasswordBox .PlainBaseDialog .PlainUserDialog syn keyword rexxBuiltinClass .ProgressBar .ProgressIndicator .PropertySheet .RadioButton syn keyword rexxBuiltinClass .RcDialog .ResDialog .ScrollBar .SingleSelection .SliderControl syn keyword rexxBuiltinClass .StateIndicator .StaticControl .TabControl .TimedMessage syn keyword rexxBuiltinClass .TreeControl .UserDialog .VirtualKeyCodes .WindowBase syn keyword rexxBuiltinClass .WindowExtensions .WindowObject .WindowsClassesBase .WindowsClipboard syn keyword rexxBuiltinClass .WindowsEventLog .WindowsManager .WindowsProgramManager .WindowsRegistry " BSF4ooRexx classes syn keyword rexxBuiltinClass .BSF .bsf.dialog .bsf_proxy syn keyword rexxBuiltinClass .UNO .UNO_ENUM .UNO_CONSTANTS .UNO_PROPERTIES " ooRexx directives, ---rgf location important, otherwise directives in top of file not matched! syn region rexxClassDirective start="::\s*class\s*"ms=e+1 end="\ze\(\s\|;\|$\)" syn region rexxMethodDirective start="::\s*method\s*"ms=e+1 end="\ze\(\s\|;\|$\)" syn region rexxRequiresDirective start="::\s*requires\s*"ms=e+1 end="\ze\(\s\|;\|$\)" syn region rexxRoutineDirective start="::\s*routine\s*"ms=e+1 end="\ze\(\s\|;\|$\)" syn region rexxAttributeDirective start="::\s*attribute\s*"ms=e+1 end="\ze\(\s\|;\|$\)" " rgf, 2012-09-09 syn region rexxOptionsDirective start="::\s*options\s*"ms=e+1 end="\ze\(\s\|;\|$\)" syn region rexxConstantDirective start="::\s*constant\s*"ms=e+1 end="\ze\(\s\|;\|$\)" syn region rexxDirective start="\(^\|;\)\s*::\s*\w\+" end="\($\|;\)" contains=rexxString,rexxNumber,rexxComment,rexxLineComment,rexxClassDirective,rexxMethodDirective,rexxRoutineDirective,rexxRequiresDirective,rexxAttributeDirective,rexxOptionsDirective,rexxConstantDirective keepend syn match rexxOptionsDirective2 "\<\(digits\|form\|fuzz\|trace\)\>" containedin = rexxOptionsDirective3 syn region rexxOptionsDirective3 start="\(^\|;\)\s*::\s*options\s"ms=e+1 end="\($\|;\)" contains=rexxString,rexxNumber,rexxVariable,rexxComment,rexxLineComment containedin = rexxDirective syn region rexxVariable start="\zs\<\(\.\)\@!\K\k\+\>\ze\s*\(=\|,\|)\|%\|\]\|\\\||\|&\|+=\|-=\|<\|>\)" end="\(\_$\|.\)"me=e-1 syn match rexxVariable "\(=\|,\|)\|%\|\]\|\\\||\|&\|+=\|-=\|<\|>\)\s*\zs\K\k*\ze" " rgf, 2007-07-22: unfortunately, the entire region is colored (not only the " patterns), hence useless (vim 7.0)! (syntax-docs hint that that should work) " attempt: just colorize the parenthesis in matching colors, keep content " transparent to keep the formatting already done to it! " TODO: test on 7.3 " syn region par1 matchgroup=par1 start="(" matchgroup=par1 end=")" transparent contains=par2 " syn region par2 matchgroup=par2 start="(" matchgroup=par2 end=")" transparent contains=par3 contained " syn region par3 matchgroup=par3 start="(" matchgroup=par3 end=")" transparent contains=par4 contained " syn region par4 matchgroup=par4 start="(" matchgroup=par4 end=")" transparent contains=par5 contained " syn region par5 matchgroup=par5 start="(" matchgroup=par5 end=")" transparent contains=par1 contained " this will colorize the entire region, removing any colorizing already done! " syn region par1 matchgroup=par1 start="(" end=")" contains=par2 " syn region par2 matchgroup=par2 start="(" end=")" contains=par3 contained " syn region par3 matchgroup=par3 start="(" end=")" contains=par4 contained " syn region par4 matchgroup=par4 start="(" end=")" contains=par5 contained " syn region par5 matchgroup=par5 start="(" end=")" contains=par1 contained hi par1 ctermfg=red guifg=red "guibg=grey hi par2 ctermfg=blue guifg=blue "guibg=grey hi par3 ctermfg=darkgreen guifg=darkgreen "guibg=grey hi par4 ctermfg=darkyellow guifg=darkyellow "guibg=grey hi par5 ctermfg=darkgrey guifg=darkgrey "guibg=grey " line continuation (trailing comma or single dash) syn sync linecont "\(,\|-\ze-\@!\)\ze\s*\(--.*\|\/\*.*\)*$" " if !exists("rexx_minlines") " let rexx_minlines = 500 " endif " exec "syn sync ccomment rexxComment minlines=" . rexx_minlines " always scan from start, PCs have long become to be powerful enough for that exec "syn sync fromstart" " Define the default highlighting. " Only when an item doesn't have highlighting yet " make binary and hex strings stand out hi rexxStringConstant term=bold,underline ctermfg=5 cterm=bold guifg=darkMagenta gui=bold hi def link rexxLabel2 Function hi def link doLoopSelectLabelRegion rexxKeyword hi def link endIterateLeaveLabelRegion rexxKeyword hi def link rexxLoopKeywords rexxKeyword " Todo hi def link rexxNumber Normal "DiffChange " hi def link rexxIdentifier DiffChange hi def link rexxRegularCallSignal Statement hi def link rexxExceptionHandling Statement hi def link rexxLabel Function hi def link rexxCharacter Character hi def link rexxParenError rexxError hi def link rexxInParen rexxError hi def link rexxCommentError rexxError hi def link rexxError Error hi def link rexxKeyword Statement hi def link rexxKeywordStatements Statement hi def link rexxFunction Function hi def link rexxString String hi def link rexxComment Comment hi def link rexxTodo Todo hi def link rexxSpecialVariable Special hi def link rexxConditional rexxKeyword hi def link rexxOperator Operator hi def link rexxMessageOperator rexxOperator hi def link rexxLineComment Comment hi def link rexxLineContinue WildMenu hi def link rexxDirective rexxKeyword hi def link rexxClassDirective Type hi def link rexxMethodDirective rexxFunction hi def link rexxAttributeDirective rexxFunction hi def link rexxRequiresDirective Include hi def link rexxRoutineDirective rexxFunction " rgf, 2012-09-09 hi def link rexxOptionsDirective rexxFunction hi def link rexxOptionsDirective2 rexxOptionsDirective hi def link rexxOptionsDirective3 Normal " rexxOptionsDirective hi def link rexxConstantDirective rexxFunction hi def link rexxConst Constant hi def link rexxTypeSpecifier Type hi def link rexxBuiltinClass rexxTypeSpecifier hi def link rexxEnvironmentSymbol rexxConst hi def link rexxMessage rexxFunction hi def link rexxParse rexxKeyword hi def link rexxParse2 rexxParse hi def link rexxGuard rexxKeyword hi def link rexxTrace rexxKeyword hi def link rexxRaise rexxKeyword hi def link rexxRaise2 rexxRaise hi def link rexxForward rexxKeyword hi def link rexxForward2 rexxForward let b:current_syntax = "rexx" "vim: ts=8 PK!S ȶ vim80/syntax/ppwiz.vimnu[" Vim syntax file " Language: PPWizard (preprocessor by Dennis Bareis) " Maintainer: Stefan Schwarzer " URL: http://www.ndh.net/home/sschwarzer/download/ppwiz.vim " Last Change: 2003 May 11 " Filename: ppwiz.vim " Remove old syntax stuff " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore if !exists("ppwiz_highlight_defs") let ppwiz_highlight_defs = 1 endif if !exists("ppwiz_with_html") let ppwiz_with_html = 1 endif " comments syn match ppwizComment "^;.*$" syn match ppwizComment ";;.*$" " HTML if ppwiz_with_html > 0 syn region ppwizHTML start="<" end=">" contains=ppwizArg,ppwizMacro syn match ppwizHTML "\&\w\+;" endif " define, evaluate etc. if ppwiz_highlight_defs == 1 syn match ppwizDef "^\s*\#\S\+\s\+\S\+" contains=ALL syn match ppwizDef "^\s*\#\(if\|else\|endif\)" contains=ALL syn match ppwizDef "^\s*\#\({\|break\|continue\|}\)" contains=ALL " elseif ppwiz_highlight_defs == 2 " syn region ppwizDef start="^\s*\#" end="[^\\]$" end="^$" keepend contains=ALL else syn region ppwizDef start="^\s*\#" end="[^\\]$" end="^$" keepend contains=ppwizCont endif syn match ppwizError "\s.\\$" syn match ppwizCont "\s\([+\-%]\|\)\\$" " macros to execute syn region ppwizMacro start="<\$" end=">" contains=@ppwizArgVal,ppwizCont " macro arguments syn region ppwizArg start="{" end="}" contains=ppwizEqual,ppwizString syn match ppwizEqual "=" contained syn match ppwizOperator "<>\|=\|<\|>" contained " standard variables (builtin) syn region ppwizStdVar start="" contains=@ppwizArgVal " Rexx variables syn region ppwizRexxVar start="" contains=@ppwizArgVal " Constants syn region ppwizString start=+"+ end=+"+ contained contains=ppwizMacro,ppwizArg,ppwizHTML,ppwizCont,ppwizStdVar,ppwizRexxVar syn region ppwizString start=+'+ end=+'+ contained contains=ppwizMacro,ppwizArg,ppwizHTML,ppwizCont,ppwizStdVar,ppwizRexxVar syn match ppwizInteger "\d\+" contained " Clusters syn cluster ppwizArgVal add=ppwizString,ppwizInteger " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link ppwizSpecial Special hi def link ppwizEqual ppwizSpecial hi def link ppwizOperator ppwizSpecial hi def link ppwizComment Comment hi def link ppwizDef PreProc hi def link ppwizMacro Statement hi def link ppwizArg Identifier hi def link ppwizStdVar Identifier hi def link ppwizRexxVar Identifier hi def link ppwizString Constant hi def link ppwizInteger Constant hi def link ppwizCont ppwizSpecial hi def link ppwizError Error hi def link ppwizHTML Type let b:current_syntax = "ppwiz" " vim: ts=4 PK!vim80/syntax/specman.vimnu[" Vim syntax file " Language: SPECMAN E-LANGUAGE " Maintainer: Or Freund " Last Update: Wed Oct 24 2001 "--------------------------------------------------------- "| If anyone found an error or fix the parenthesis part | "| I will be happy to hear about it | "| Thanks Or. | "--------------------------------------------------------- " Remove any old syntax stuff hanging around " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn keyword specmanTodo contained TODO todo ToDo FIXME XXX syn keyword specmanStatement var instance on compute start event expect check that routine syn keyword specmanStatement specman is also first only with like syn keyword specmanStatement list of all radix hex dec bin ignore illegal syn keyword specmanStatement traceable untraceable syn keyword specmanStatement cover using count_only trace_only at_least transition item ranges syn keyword specmanStatement cross text call task within syn keyword specmanMethod initialize non_terminal testgroup delayed exit finish syn keyword specmanMethod out append print outf appendf syn keyword specmanMethod post_generate pre_generate setup_test finalize_test extract_test syn keyword specmanMethod init run copy as_a set_config dut_error add clear lock quit syn keyword specmanMethod lock unlock release swap quit to_string value stop_run syn keyword specmanMethod crc_8 crc_32 crc_32_flip get_config add0 all_indices and_all syn keyword specmanMethod apply average count delete exists first_index get_indices syn keyword specmanMethod has insert is_a_permutation is_empty key key_exists key_index syn keyword specmanMethod last last_index max max_index max_value min min_index syn keyword specmanMethod min_value or_all pop pop0 push push0 product resize reverse syn keyword specmanMethod sort split sum top top0 unique clear is_all_iterations syn keyword specmanMethod get_enclosing_unit hdl_path exec deep_compare deep_compare_physical syn keyword specmanMethod pack unpack warning error fatal syn match specmanMethod "size()" syn keyword specmanPacking packing low high syn keyword specmanType locker address syn keyword specmanType body code vec chars syn keyword specmanType integer real bool int long uint byte bits bit time string syn keyword specmanType byte_array external_pointer syn keyword specmanBoolean TRUE FALSE syn keyword specmanPreCondit #ifdef #ifndef #else syn keyword specmanConditional choose matches syn keyword specmanConditional if then else when try syn keyword specmanLabel case casex casez default syn keyword specmanLogical and or not xor syn keyword specmanRepeat until repeat while for from to step each do break continue syn keyword specmanRepeat before next sequence always -kind network syn keyword specmanRepeat index it me in new return result select syn keyword specmanTemporal cycle sample events forever syn keyword specmanTemporal wait change negedge rise fall delay sync sim true detach eventually emit syn keyword specmanConstant MAX_INT MIN_INT NULL UNDEF syn keyword specmanDefine define as computed type extend syn keyword specmanDefine verilog vhdl variable global sys syn keyword specmanStructure struct unit syn keyword specmanInclude import syn keyword specmanConstraint gen keep keeping soft before syn keyword specmanSpecial untyped symtab ECHO DOECHO syn keyword specmanFile files load module ntv source_ref script read write syn keyword specmanFSM initial idle others posedge clock cycles syn match specmanOperator "[&|~>"hs=s+2 end="^<'"he=e-2 syn match specmanHDL "'[`.a-zA-Z0-9_@\[\]]\+\>'" syn match specmanCompare "==" syn match specmanCompare "!===" syn match specmanCompare "===" syn match specmanCompare "!=" syn match specmanCompare ">=" syn match specmanCompare "<=" syn match specmanNumber "[0-9]:[0-9]" syn match specmanNumber "\(\<\d\+\|\)'[bB]\s*[0-1_xXzZ?]\+\>" syn match specmanNumber "0[bB]\s*[0-1_xXzZ?]\+\>" syn match specmanNumber "\(\<\d\+\|\)'[oO]\s*[0-7_xXzZ?]\+\>" syn match specmanNumber "0[oO]\s*[0-9a-fA-F_xXzZ?]\+\>" syn match specmanNumber "\(\<\d\+\|\)'[dD]\s*[0-9_xXzZ?]\+\>" syn match specmanNumber "\(\<\d\+\|\)'[hH]\s*[0-9a-fA-F_xXzZ?]\+\>" syn match specmanNumber "0[xX]\s*[0-9a-fA-F_xXzZ?]\+\>" syn match specmanNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>" syn region specmanString start=+"+ end=+"+ "********************************************************************** " I took this section from c.vim but I didnt succeded to make it work " ANY one who dare jumping to this deep watter is more than welocome! "********************************************************************** ""catch errors caused by wrong parenthesis and brackets "syn cluster specmanParenGroup contains=specmanParenError "" ,specmanNumbera,specmanComment "if exists("specman_no_bracket_error") "syn region specmanParen transparent start='(' end=')' contains=ALLBUT,@specmanParenGroup "syn match specmanParenError ")" "syn match specmanErrInParen contained "[{}]" "else "syn region specmanParen transparent start='(' end=')' contains=ALLBUT,@specmanParenGroup,specmanErrInBracket "syn match specmanParenError "[\])]" "syn match specmanErrInParen contained "[\]{}]" "syn region specmanBracket transparent start='\[' end=']' contains=ALLBUT,@specmanParenGroup,specmanErrInParen "syn match specmanErrInBracket contained "[);{}]" "endif " "Modify the following as needed. The trade-off is performance versus "functionality. syn sync lines=50 " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overridden later hi def link specmanConditional Conditional hi def link specmanConstraint Conditional hi def link specmanRepeat Repeat hi def link specmanString String hi def link specmanComment Comment hi def link specmanConstant Macro hi def link specmanNumber Number hi def link specmanCompare Operator hi def link specmanOperator Operator hi def link specmanLogical Operator hi def link specmanStatement Statement hi def link specmanHDL SpecialChar hi def link specmanMethod Function hi def link specmanInclude Include hi def link specmanStructure Structure hi def link specmanBoolean Boolean hi def link specmanFSM Label hi def link specmanSpecial Special hi def link specmanType Type hi def link specmanTemporal Type hi def link specmanFile Include hi def link specmanPreCondit Include hi def link specmanDefine Typedef hi def link specmanLabel Label hi def link specmanPacking keyword hi def link specmanTodo Todo hi def link specmanParenError Error hi def link specmanErrInParen Error hi def link specmanErrInBracket Error let b:current_syntax = "specman" PK!YNvim80/syntax/gpg.vimnu[" Vim syntax file " Language: gpg(1) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2010-10-14 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword+=- syn keyword gpgTodo contained FIXME TODO XXX NOTE syn region gpgComment contained display oneline start='#' end='$' \ contains=gpgTodo,gpgID,@Spell syn match gpgID contained display '\<\(0x\)\=\x\{8,}\>' syn match gpgBegin display '^' skipwhite nextgroup=gpgComment,gpgOption,gpgCommand syn keyword gpgCommand contained skipwhite nextgroup=gpgArg \ check-sigs decrypt decrypt-files delete-key \ delete-secret-and-public-key delete-secret-key \ edit-key encrypt-files export export-all \ export-ownertrust export-secret-keys \ export-secret-subkeys fast-import fingerprint \ gen-prime gen-random import import-ownertrust \ list-keys list-public-keys list-secret-keys \ list-sigs lsign-key nrsign-key print-md print-mds \ recv-keys search-keys send-keys sign-key verify \ verify-files syn keyword gpgCommand contained skipwhite nextgroup=gpgArgError \ check-trustdb clearsign desig-revoke detach-sign \ encrypt gen-key gen-revoke help list-packets \ rebuild-keydb-caches sign store symmetric \ update-trustdb version warranty syn keyword gpgOption contained skipwhite nextgroup=gpgArg \ attribute-fd cert-digest-algo charset cipher-algo \ command-fd comment completes-needed compress \ compress-algo debug default-cert-check-level \ default-key default-preference-list \ default-recipient digest-algo disable-cipher-algo \ disable-pubkey-algo encrypt-to exec-path \ export-options group homedir import-options \ keyring keyserver keyserver-options load-extension \ local-user logger-fd marginals-needed max-cert-depth \ notation-data options output override-session-key \ passphrase-fd personal-cipher-preferences \ personal-compress-preferences \ personal-digest-preferences photo-viewer \ recipient s2k-cipher-algo s2k-digest-algo s2k-mode \ secret-keyring set-filename set-policy-url status-fd \ trusted-key verify-options keyid-format list-options syn keyword gpgOption contained skipwhite nextgroup=gpgArgError \ allow-freeform-uid allow-non-selfsigned-uid \ allow-secret-key-import always-trust \ armor ask-cert-expire ask-sig-expire \ auto-check-trustdb batch debug-all default-comment \ default-recipient-self dry-run emit-version \ emulate-md-encode-bug enable-special-filenames \ escape-from-lines expert fast-list-mode \ fixed-list-mode for-your-eyes-only \ force-mdc force-v3-sigs force-v4-certs \ gpg-agent-info ignore-crc-error ignore-mdc-error \ ignore-time-conflict ignore-valid-from interactive \ list-only lock-multiple lock-never lock-once \ merge-only no no-allow-non-selfsigned-uid \ no-armor no-ask-cert-expire no-ask-sig-expire \ no-auto-check-trustdb no-batch no-comment \ no-default-keyring no-default-recipient \ no-encrypt-to no-expensive-trust-checks \ no-expert no-for-your-eyes-only no-force-v3-sigs \ no-force-v4-certs no-greeting no-literal \ no-mdc-warning no-options no-permission-warning \ no-pgp2 no-pgp6 no-pgp7 no-random-seed-file \ no-secmem-warning no-show-notation no-show-photos \ no-show-policy-url no-sig-cache no-sig-create-check \ no-sk-comments no-tty no-utf8-strings no-verbose \ no-version not-dash-escaped openpgp pgp2 \ pgp6 pgp7 preserve-permissions quiet rfc1991 \ set-filesize show-keyring show-notation show-photos \ show-policy-url show-session-key simple-sk-checksum \ sk-comments skip-verify textmode throw-keyid \ try-all-secrets use-agent use-embedded-filename \ utf8-strings verbose with-colons with-fingerprint \ with-key-data yes syn match gpgArg contained display '\S\+\(\s\+\S\+\)*' contains=gpgID syn match gpgArgError contained display '\S\+\(\s\+\S\+\)*' hi def link gpgComment Comment hi def link gpgTodo Todo hi def link gpgID Number hi def link gpgOption Keyword hi def link gpgCommand Error hi def link gpgArgError Error let b:current_syntax = "gpg" let &cpo = s:cpo_save unlet s:cpo_save PK! wdvim80/syntax/snnspat.vimnu[" Vim syntax file " Language: SNNS pattern file " Maintainer: Davide Alberani " Last Change: 2012 Feb 03 by Thilo Six " Version: 0.2 " URL: http://digilander.iol.it/alberanid/vim/syntax/snnspat.vim " " SNNS http://www-ra.informatik.uni-tuebingen.de/SNNS/ " is a simulator for neural networks. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " anything that isn't part of the header, a comment or a number " is wrong syn match snnspatError ".*" " hoping that matches any kind of notation... syn match snnspatAccepted "\([-+]\=\(\d\+\.\|\.\)\=\d\+\([Ee][-+]\=\d\+\)\=\)" syn match snnspatAccepted "\s" syn match snnspatBrac "\[\s*\d\+\(\s\|\d\)*\]" contains=snnspatNumbers " the accepted fields in the header syn match snnspatNoHeader "No\. of patterns\s*:\s*" contained syn match snnspatNoHeader "No\. of input units\s*:\s*" contained syn match snnspatNoHeader "No\. of output units\s*:\s*" contained syn match snnspatNoHeader "No\. of variable input dimensions\s*:\s*" contained syn match snnspatNoHeader "No\. of variable output dimensions\s*:\s*" contained syn match snnspatNoHeader "Maximum input dimensions\s*:\s*" contained syn match snnspatNoHeader "Maximum output dimensions\s*:\s*" contained syn match snnspatGen "generated at.*" contained contains=snnspatNumbers syn match snnspatGen "SNNS pattern definition file [Vv]\d\.\d" contained contains=snnspatNumbers " the header, what is not an accepted field, is an error syn region snnspatHeader start="^SNNS" end="^\s*[-+\.]\=[0-9#]"me=e-2 contains=snnspatNoHeader,snnspatNumbers,snnspatGen,snnspatBrac " numbers inside the header syn match snnspatNumbers "\d" contained syn match snnspatComment "#.*$" contains=snnspatTodo syn keyword snnspatTodo TODO XXX FIXME contained hi def link snnspatGen Statement hi def link snnspatHeader Error hi def link snnspatNoHeader Define hi def link snnspatNumbers Number hi def link snnspatComment Comment hi def link snnspatError Error hi def link snnspatTodo Todo hi def link snnspatAccepted NONE hi def link snnspatBrac NONE let b:current_syntax = "snnspat" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 sw=2 PK!Ժ##vim80/syntax/screen.vimnu[" Vim syntax file " Language: screen(1) configuration file " Maintainer: Dmitri Vereshchagin " Previous Maintainer: Nikolai Weibull " Latest Revision: 2015-09-24 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match screenEscape '\\.' syn keyword screenTodo contained TODO FIXME XXX NOTE syn region screenComment display oneline start='#' end='$' \ contains=screenTodo,@Spell syn region screenString display oneline start=+"+ skip=+\\"+ end=+"+ \ contains=screenVariable,screenSpecial syn region screenLiteral display oneline start=+'+ skip=+\\'+ end=+'+ syn match screenVariable contained display '$\%(\h\w*\|{\h\w*}\)' syn keyword screenBoolean on off syn match screenNumbers display '\<\d\+\>' syn match screenSpecials contained \ '%\%([%aAdDhlmMstuwWyY?:{]\|[0-9]*n\|0?cC\)' syn keyword screenCommands \ acladd \ aclchg \ acldel \ aclgrp \ aclumask \ activity \ addacl \ allpartial \ altscreen \ at \ attrcolor \ autodetach \ autonuke \ backtick \ bce \ bd_bc_down \ bd_bc_left \ bd_bc_right \ bd_bc_up \ bd_bell \ bd_braille_table \ bd_eightdot \ bd_info \ bd_link \ bd_lower_left \ bd_lower_right \ bd_ncrc \ bd_port \ bd_scroll \ bd_skip \ bd_start_braille \ bd_type \ bd_upper_left \ bd_upper_right \ bd_width \ bell \ bell_msg \ bind \ bindkey \ blanker \ blankerprg \ break \ breaktype \ bufferfile \ bumpleft \ bumpright \ c1 \ caption \ chacl \ charset \ chdir \ cjkwidth \ clear \ collapse \ colon \ command \ compacthist \ console \ copy \ crlf \ debug \ defautonuke \ defbce \ defbreaktype \ defc1 \ defcharset \ defencoding \ defescape \ defflow \ defgr \ defhstatus \ defkanji \ deflog \ deflogin \ defmode \ defmonitor \ defmousetrack \ defnonblock \ defobuflimit \ defscrollback \ defshell \ defsilence \ defslowpaste \ defutf8 \ defwrap \ defwritelock \ defzombie \ detach \ digraph \ dinfo \ displays \ dumptermcap \ echo \ encoding \ escape \ eval \ exec \ fit \ flow \ focus \ focusminsize \ gr \ group \ hardcopy \ hardcopy_append \ hardcopydir \ hardstatus \ height \ help \ history \ hstatus \ idle \ ignorecase \ info \ kanji \ kill \ lastmsg \ layout \ license \ lockscreen \ log \ logfile \ login \ logtstamp \ mapdefault \ mapnotnext \ maptimeout \ markkeys \ maxwin \ meta \ monitor \ mousetrack \ msgminwait \ msgwait \ multiuser \ nethack \ next \ nonblock \ number \ obuflimit \ only \ other \ partial \ password \ paste \ pastefont \ pow_break \ pow_detach \ pow_detach_msg \ prev \ printcmd \ process \ quit \ readbuf \ readreg \ redisplay \ register \ remove \ removebuf \ rendition \ reset \ resize \ screen \ scrollback \ select \ sessionname \ setenv \ setsid \ shell \ shelltitle \ silence \ silencewait \ sleep \ slowpaste \ sorendition \ sort \ source \ split \ startup_message \ stuff \ su \ suspend \ term \ termcap \ termcapinfo \ terminfo \ time \ title \ umask \ unbindall \ unsetenv \ utf8 \ vbell \ vbell_msg \ vbellwait \ verbose \ version \ wall \ width \ windowlist \ windows \ wrap \ writebuf \ writelock \ xoff \ xon \ zmodem \ zombie \ zombie_timeout hi def link screenEscape Special hi def link screenComment Comment hi def link screenTodo Todo hi def link screenString String hi def link screenLiteral String hi def link screenVariable Identifier hi def link screenBoolean Boolean hi def link screenNumbers Number hi def link screenSpecials Special hi def link screenCommands Keyword let b:current_syntax = "screen" let &cpo = s:cpo_save unlet s:cpo_save PK!''vim80/syntax/named.vimnu[" Vim syntax file " Language: BIND configuration file " Maintainer: Nick Hibma " Last change: 2007-01-30 " Filenames: named.conf, rndc.conf " Location: http://www.van-laarhoven.org/vim/syntax/named.vim " " Previously maintained by glory hump and updated by Marcin " Dalecki. " " This file could do with a lot of improvements, so comments are welcome. " Please submit the named.conf (segment) with any comments. " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case match setlocal iskeyword=.,-,48-58,A-Z,a-z,_ syn sync match namedSync grouphere NONE "^(zone|controls|acl|key)" let s:save_cpo = &cpo set cpo-=C " BIND configuration file syn match namedComment "//.*" syn match namedComment "#.*" syn region namedComment start="/\*" end="\*/" syn region namedString start=/"/ end=/"/ contained " --- omitted trailing semicolon syn match namedError /[^;{#]$/ " --- top-level keywords syn keyword namedInclude include nextgroup=namedString skipwhite syn keyword namedKeyword acl key nextgroup=namedIntIdent skipwhite syn keyword namedKeyword server nextgroup=namedIdentifier skipwhite syn keyword namedKeyword controls nextgroup=namedSection skipwhite syn keyword namedKeyword trusted-keys nextgroup=namedIntSection skipwhite syn keyword namedKeyword logging nextgroup=namedLogSection skipwhite syn keyword namedKeyword options nextgroup=namedOptSection skipwhite syn keyword namedKeyword zone nextgroup=namedZoneString skipwhite " --- Identifier: name of following { ... } Section syn match namedIdentifier contained /\k\+/ nextgroup=namedSection skipwhite " --- IntIdent: name of following IntSection syn match namedIntIdent contained /"\=\k\+"\=/ nextgroup=namedIntSection skipwhite " --- Section: { ... } clause syn region namedSection contained start=+{+ end=+};+ contains=namedSection,namedIntKeyword " --- IntSection: section that does not contain other sections syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError " --- IntKeyword: keywords contained within `{ ... }' sections only " + these keywords are contained within `key' and `acl' sections syn keyword namedIntKeyword contained key algorithm syn keyword namedIntKeyword contained secret nextgroup=namedString skipwhite " + these keywords are contained within `server' section only syn keyword namedIntKeyword contained bogus support-ixfr nextgroup=namedBool,namedNotBool skipwhite syn keyword namedIntKeyword contained transfers nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedIntKeyword contained transfer-format syn keyword namedIntKeyword contained keys nextgroup=namedIntSection skipwhite " + these keywords are contained within `controls' section only syn keyword namedIntKeyword contained inet nextgroup=namedIPaddr,namedIPerror skipwhite syn keyword namedIntKeyword contained unix nextgroup=namedString skipwhite syn keyword namedIntKeyword contained port perm owner group nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedIntKeyword contained allow nextgroup=namedIntSection skipwhite " + these keywords are contained within `update-policy' section only syn keyword namedIntKeyword contained grant nextgroup=namedString skipwhite syn keyword namedIntKeyword contained name self subdomain wildcard nextgroup=namedString skipwhite syn keyword namedIntKeyword TXT A PTR NS SOA A6 CNAME MX ANY skipwhite " --- options syn region namedOptSection contained start=+{+ end=+};+ contains=namedOption,namedCNOption,namedComment,namedParenError syn keyword namedOption contained version directory \ nextgroup=namedString skipwhite syn keyword namedOption contained named-xfer dump-file pid-file \ nextgroup=namedString skipwhite syn keyword namedOption contained mem-statistics-file statistics-file \ nextgroup=namedString skipwhite syn keyword namedOption contained auth-nxdomain deallocate-on-exit \ nextgroup=namedBool,namedNotBool skipwhite syn keyword namedOption contained dialup fake-iquery fetch-glue \ nextgroup=namedBool,namedNotBool skipwhite syn keyword namedOption contained has-old-clients host-statistics \ nextgroup=namedBool,namedNotBool skipwhite syn keyword namedOption contained maintain-ixfr-base multiple-cnames \ nextgroup=namedBool,namedNotBool skipwhite syn keyword namedOption contained notify recursion rfc2308-type1 \ nextgroup=namedBool,namedNotBool skipwhite syn keyword namedOption contained use-id-pool treat-cr-as-space \ nextgroup=namedBool,namedNotBool skipwhite syn keyword namedOption contained also-notify forwarders \ nextgroup=namedIPlist skipwhite syn keyword namedOption contained forward check-names syn keyword namedOption contained allow-query allow-transfer allow-recursion \ nextgroup=namedAML skipwhite syn keyword namedOption contained blackhole listen-on \ nextgroup=namedIntSection skipwhite syn keyword namedOption contained lame-ttl max-transfer-time-in \ nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedOption contained max-ncache-ttl min-roots \ nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedOption contained serial-queries transfers-in \ nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedOption contained transfers-out transfers-per-ns syn keyword namedOption contained transfer-format syn keyword namedOption contained transfer-source \ nextgroup=namedIPaddr,namedIPerror skipwhite syn keyword namedOption contained max-ixfr-log-size \ nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedOption contained coresize datasize files stacksize syn keyword namedOption contained cleaning-interval interface-interval statistics-interval heartbeat-interval \ nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedOption contained topology sortlist rrset-order \ nextgroup=namedIntSection skipwhite syn match namedOption contained /\/ nextgroup=namedSpareDot syn match namedDomain contained /"\."/ms=s+1,me=e-1 syn match namedSpareDot contained /\./ " --- syntax errors syn match namedIllegalDom contained /"\S*[^-A-Za-z0-9.[:space:]]\S*"/ms=s+1,me=e-1 syn match namedIPerror contained /\<\S*[^0-9.[:space:];]\S*/ syn match namedEParenError contained +{+ syn match namedParenError +}\([^;]\|$\)+ " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link namedComment Comment hi def link namedInclude Include hi def link namedKeyword Keyword hi def link namedIntKeyword Keyword hi def link namedIdentifier Identifier hi def link namedIntIdent Identifier hi def link namedString String hi def link namedBool Type hi def link namedNotBool Error hi def link namedNumber Number hi def link namedNotNumber Error hi def link namedOption namedKeyword hi def link namedLogOption namedKeyword hi def link namedCNOption namedKeyword hi def link namedQSKeywords Type hi def link namedCNKeywords Type hi def link namedLogCategory Type hi def link namedIPaddr Number hi def link namedDomain Identifier hi def link namedZoneOpt namedKeyword hi def link namedZoneType Type hi def link namedParenError Error hi def link namedEParenError Error hi def link namedIllegalDom Error hi def link namedIPerror Error hi def link namedSpareDot Error hi def link namedError Error let &cpo = s:save_cpo unlet s:save_cpo let b:current_syntax = "named" " vim: ts=17 PK!QKك%%vim80/syntax/mrxvtrc.vimnu[" Description : Vim syntax file for mrxvtrc (for mrxvt-0.5.0 and up) " Created : Wed 26 Apr 2006 01:20:53 AM CDT " Modified : Thu 02 Feb 2012 08:37:45 PM EST " Maintainer : GI , where a='gi1242+vim', b='gmail', c='com' " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case match " Errors syn match mrxvtrcError contained '\v\S+' " Comments syn match mrxvtrcComment contains=@Spell '^\s*[!#].*$' syn match mrxvtrcComment '\v^\s*[#!]\s*\w+[.*]\w+.*:.*' " " Options. " syn match mrxvtrcClass '\v^\s*\w+[.*]' \ nextgroup=mrxvtrcOptions,mrxvtrcProfile,@mrxvtrcPOpts,mrxvtrcError " Boolean options syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcBColon,mrxvtrcError \ highlightTabOnBell syncTabTitle hideTabbar \ autohideTabbar bottomTabbar hideButtons \ syncTabIcon veryBoldFont maximized \ fullscreen reverseVideo loginShell \ jumpScroll scrollBar scrollbarRight \ scrollbarFloating scrollTtyOutputInhibit \ scrollTtyKeypress transparentForce \ transparentScrollbar transparentMenubar \ transparentTabbar tabUsePixmap utmpInhibit \ visualBell mapAlert meta8 \ mouseWheelScrollPage multibyte_cursor \ tripleclickwords showMenu xft xftNomFont \ xftSlowOutput xftAntialias xftHinting \ xftAutoHint xftGlobalAdvance cmdAllTabs \ protectSecondary thai borderLess \ overrideRedirect broadcast smartResize \ pointerBlank cursorBlink noSysConfig \ disableMacros linuxHomeEndKey sessionMgt \ boldColors smoothResize useFifo veryBright syn match mrxvtrcOptions contained nextgroup=mrxvtrcBColon,mrxvtrcError \ '\v' syn match mrxvtrcBColon contained skipwhite \ nextgroup=mrxvtrcBoolVal,mrxvtrcError ':' syn case ignore syn keyword mrxvtrcBoolVal contained skipwhite nextgroup=mrxvtrcError \ 0 1 yes no on off true false syn case match " Color options syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcCColon,mrxvtrcError \ ufBackground textShadow tabForeground \ itabForeground tabBackground itabBackground \ scrollColor troughColor highlightColor \ cursorColor cursorColor2 pointerColor \ borderColor tintColor syn match mrxvtrcOptions contained nextgroup=mrxvtrcCColon,mrxvtrcError \ '\v' syn match mrxvtrcCColon contained skipwhite \ nextgroup=mrxvtrcColorVal ':' syn match mrxvtrcColorVal contained skipwhite nextgroup=mrxvtrcError \ '\v#[0-9a-fA-F]{6}' " Numeric options syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcNColon,mrxvtrcError \ maxTabWidth minVisibleTabs \ scrollbarThickness xftmSize xftSize desktop \ externalBorder internalBorder lineSpace \ pointerBlankDelay cursorBlinkInterval \ shading backgroundFade bgRefreshInterval \ fading opacity opacityDegree xftPSize syn match mrxvtrcNColon contained skipwhite \ nextgroup=mrxvtrcNumVal,mrxvtrcError ':' syn match mrxvtrcNumVal contained skipwhite nextgroup=mrxvtrcError \ '\v[+-]?<(0[0-7]+|\d+|0x[0-9a-f]+)>' " String options syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcSColon,mrxvtrcError \ tabTitle termName title clientName iconName \ bellCommand backspaceKey deleteKey \ printPipe cutChars answerbackString \ smClientID geometry path boldFont xftFont \ xftmFont xftPFont inputMethod \ greektoggle_key menu menubarPixmap \ scrollbarPixmap tabbarPixmap appIcon \ multichar_encoding initProfileList syn match mrxvtrcOptions contained nextgroup=mrxvtrcSColon,mrxvtrcError \ '\v' syn match mrxvtrcSColon contained skipwhite nextgroup=mrxvtrcStrVal ':' syn match mrxvtrcStrVal contained '\v\S.*' " Profile options syn cluster mrxvtrcPOpts contains=mrxvtrcPSOpts,mrxvtrcPCOpts,mrxvtrcPNOpts syn match mrxvtrcProfile contained nextgroup=@mrxvtrcPOpts,mrxvtrcError \ '\vprofile\d+\.' syn keyword mrxvtrcPSOpts contained nextgroup=mrxvtrcSColon,mrxvtrcError \ tabTitle command holdExitText holdExitTitle \ Pixmap workingDirectory titleFormat \ winTitleFormat syn keyword mrxvtrcPCOpts contained nextgroup=mrxvtrcCColon,mrxvtrcError \ background foreground syn keyword mrxvtrcPNOpts contained nextgroup=mrxvtrcNColon,mrxvtrcError \ holdExit saveLines " scrollbarStyle syn match mrxvtrcOptions contained skipwhite \ nextgroup=mrxvtrcSBstyle,mrxvtrcError \ '\v' " " Highlighting groups " hi def link mrxvtrcError Error hi def link mrxvtrcComment Comment hi def link mrxvtrcClass Statement hi def link mrxvtrcOptions mrxvtrcClass hi def link mrxvtrcBColon mrxvtrcClass hi def link mrxvtrcCColon mrxvtrcClass hi def link mrxvtrcNColon mrxvtrcClass hi def link mrxvtrcSColon mrxvtrcClass hi def link mrxvtrcProfile mrxvtrcClass hi def link mrxvtrcPSOpts mrxvtrcClass hi def link mrxvtrcPCOpts mrxvtrcClass hi def link mrxvtrcPNOpts mrxvtrcClass hi def link mrxvtrcBoolVal Boolean hi def link mrxvtrcStrVal String hi def link mrxvtrcColorVal Constant hi def link mrxvtrcNumVal Number hi def link mrxvtrcSBstyle mrxvtrcStrVal hi def link mrxvtrcSBalign mrxvtrcStrVal hi def link mrxvtrcTSmode mrxvtrcStrVal hi def link mrxvtrcGrkKbd mrxvtrcStrVal hi def link mrxvtrcXftWt mrxvtrcStrVal hi def link mrxvtrcXftSl mrxvtrcStrVal hi def link mrxvtrcXftWd mrxvtrcStrVal hi def link mrxvtrcXftHt mrxvtrcStrVal hi def link mrxvtrcPedit mrxvtrcStrVal hi def link mrxvtrcMod mrxvtrcStrVal hi def link mrxvtrcSelSty mrxvtrcStrVal hi def link mrxvtrcMacro Identifier hi def link mrxvtrcKey mrxvtrcClass hi def link mrxvtrcTitle mrxvtrcStrVal hi def link mrxvtrcShell Special hi def link mrxvtrcCmd PreProc hi def link mrxvtrcSubwin mrxvtrcStrVal let b:current_syntax = "mrxvtrc" let &cpo = s:cpo_save unlet s:cpo_save PK!1LLvim80/syntax/inform.vimnu[" Vim syntax file " Language: Inform " Maintainer: Stephen Thomas (stephen@gowarthomas.com) " URL: http://www.gowarthomas.com/informvim " Last Change: 2006 April 20 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " A bunch of useful Inform keywords. First, case insensitive stuff syn case ignore syn keyword informDefine Constant syn keyword informType Array Attribute Class Nearby syn keyword informType Object Property String Routine syn match informType "\" syn keyword informInclude Import Include Link Replace System_file syn keyword informPreCondit End Endif Ifdef Ifndef Iftrue Iffalse Ifv3 Ifv5 syn keyword informPreCondit Ifnot syn keyword informPreProc Abbreviate Default Fake_action Lowstring syn keyword informPreProc Message Release Serial Statusline Stub Switches syn keyword informPreProc Trace Zcharacter syn region informGlobalRegion matchgroup=informType start="\" matchgroup=NONE skip=+!.*$\|".*"\|'.*'+ end=";" contains=ALLBUT,informGramPreProc,informPredicate,informGrammar,informAsm,informAsmObsolete syn keyword informGramPreProc contained Verb Extend if !exists("inform_highlight_simple") syn keyword informLibAttrib absent animate clothing concealed container syn keyword informLibAttrib door edible enterable female general light syn keyword informLibAttrib lockable locked male moved neuter on open syn keyword informLibAttrib openable pluralname proper scenery scored syn keyword informLibAttrib static supporter switchable talkable syn keyword informLibAttrib visited workflag worn syn match informLibAttrib "\" syn keyword informLibProp e_to se_to s_to sw_to w_to nw_to n_to ne_to syn keyword informLibProp u_to d_to in_to out_to before after life syn keyword informLibProp door_to with_key door_dir invent plural syn keyword informLibProp add_to_scope list_together react_before syn keyword informLibProp react_after grammar orders initial when_open syn keyword informLibProp when_closed when_on when_off description syn keyword informLibProp describe article cant_go found_in time_left syn keyword informLibProp number time_out daemon each_turn capacity syn keyword informLibProp name short_name short_name_indef parse_name syn keyword informLibProp articles inside_description if !exists("inform_highlight_old") syn keyword informLibProp compass_look before_implicit syn keyword informLibProp ext_initialise ext_messages endif syn keyword informLibObj e_obj se_obj s_obj sw_obj w_obj nw_obj n_obj syn keyword informLibObj ne_obj u_obj d_obj in_obj out_obj compass syn keyword informLibObj thedark selfobj player location second actor syn keyword informLibObj noun if !exists("inform_highlight_old") syn keyword informLibObj LibraryExtensions endif syn keyword informLibRoutine Achieved AfterRoutines AddToScope syn keyword informLibRoutine AllowPushDir Banner ChangeDefault syn keyword informLibRoutine ChangePlayer CommonAncestor DictionaryLookup syn keyword informLibRoutine DisplayStatus DoMenu DrawStatusLine syn keyword informLibRoutine EnglishNumber HasLightSource GetGNAOfObject syn keyword informLibRoutine IndirectlyContains IsSeeThrough Locale syn keyword informLibRoutine LoopOverScope LTI_Insert MoveFloatingObjects syn keyword informLibRoutine NextWord NextWordStopped NounDomain syn keyword informLibRoutine ObjectIsUntouchable OffersLight ParseToken syn keyword informLibRoutine PlaceInScope PlayerTo PrintShortName syn keyword informLibRoutine PronounNotice ScopeWithin SetPronoun SetTime syn keyword informLibRoutine StartDaemon StartTimer StopDaemon StopTimer syn keyword informLibRoutine TestScope TryNumber UnsignedCompare syn keyword informLibRoutine WordAddress WordInProperty WordLength syn keyword informLibRoutine WriteListFrom YesOrNo ZRegion RunRoutines syn keyword informLibRoutine AfterLife AfterPrompt Amusing BeforeParsing syn keyword informLibRoutine ChooseObjects DarkToDark DeathMessage syn keyword informLibRoutine GamePostRoutine GamePreRoutine Initialise syn keyword informLibRoutine InScope LookRoutine NewRoom ParseNoun syn keyword informLibRoutine ParseNumber ParserError PrintRank PrintVerb syn keyword informLibRoutine PrintTaskName TimePasses UnknownVerb if exists("inform_highlight_glulx") syn keyword informLibRoutine IdentifyGlkObject HandleGlkEvent syn keyword informLibRoutine InitGlkWindow endif if !exists("inform_highlight_old") syn keyword informLibRoutine KeyCharPrimitive KeyDelay ClearScreen syn keyword informLibRoutine MoveCursor MainWindow StatusLineHeight syn keyword informLibRoutine ScreenWidth ScreenHeight SetColour syn keyword informLibRoutine DecimalNumber PrintToBuffer Length syn keyword informLibRoutine UpperCase LowerCase PrintCapitalised syn keyword informLibRoutine Cap Centre if exists("inform_highlight_glulx") syn keyword informLibRoutine PrintAnything PrintAnyToArray endif endif syn keyword informLibAction Quit Restart Restore Verify Save syn keyword informLibAction ScriptOn ScriptOff Pronouns Score syn keyword informLibAction Fullscore LMode1 LMode2 LMode3 syn keyword informLibAction NotifyOn NotifyOff Version Places syn keyword informLibAction Objects TraceOn TraceOff TraceLevel syn keyword informLibAction ActionsOn ActionsOff RoutinesOn syn keyword informLibAction RoutinesOff TimersOn TimersOff syn keyword informLibAction CommandsOn CommandsOff CommandsRead syn keyword informLibAction Predictable XPurloin XAbstract XTree syn keyword informLibAction Scope Goto Gonear Inv InvTall InvWide syn keyword informLibAction Take Drop Remove PutOn Insert Transfer syn keyword informLibAction Empty Enter Exit GetOff Go Goin Look syn keyword informLibAction Examine Search Give Show Unlock Lock syn keyword informLibAction SwitchOn SwitchOff Open Close Disrobe syn keyword informLibAction Wear Eat Yes No Burn Pray Wake syn keyword informLibAction WakeOther Consult Kiss Think Smell syn keyword informLibAction Listen Taste Touch Dig Cut Jump syn keyword informLibAction JumpOver Tie Drink Fill Sorry Strong syn keyword informLibAction Mild Attack Swim Swing Blow Rub Set syn keyword informLibAction SetTo WaveHands Wave Pull Push PushDir syn keyword informLibAction Turn Squeeze LookUnder ThrowAt Tell syn keyword informLibAction Answer Buy Ask AskFor Sing Climb Wait syn keyword informLibAction Sleep LetGo Receive ThrownAt Order syn keyword informLibAction TheSame PluralFound Miscellany Prompt syn keyword informLibAction ChangesOn ChangesOff Showverb Showobj syn keyword informLibAction EmptyT VagueGo if exists("inform_highlight_glulx") syn keyword informLibAction GlkList endif syn keyword informLibVariable keep_silent deadflag action special_number syn keyword informLibVariable consult_from consult_words etype verb_num syn keyword informLibVariable verb_word the_time real_location c_style syn keyword informLibVariable parser_one parser_two listing_together wn syn keyword informLibVariable parser_action scope_stage scope_reason syn keyword informLibVariable action_to_be menu_item item_name item_width syn keyword informLibVariable lm_o lm_n inventory_style task_scores syn keyword informLibVariable inventory_stage syn keyword informLibConst AMUSING_PROVIDED DEBUG Headline MAX_CARRIED syn keyword informLibConst MAX_SCORE MAX_TIMERS NO_PLACES NUMBER_TASKS syn keyword informLibConst OBJECT_SCORE ROOM_SCORE SACK_OBJECT Story syn keyword informLibConst TASKS_PROVIDED WITHOUT_DIRECTIONS syn keyword informLibConst NEWLINE_BIT INDENT_BIT FULLINV_BIT ENGLISH_BIT syn keyword informLibConst RECURSE_BIT ALWAYS_BIT TERSE_BIT PARTINV_BIT syn keyword informLibConst DEFART_BIT WORKFLAG_BIT ISARE_BIT CONCEAL_BIT syn keyword informLibConst PARSING_REASON TALKING_REASON EACHTURN_REASON syn keyword informLibConst REACT_BEFORE_REASON REACT_AFTER_REASON syn keyword informLibConst TESTSCOPE_REASON LOOPOVERSCOPE_REASON syn keyword informLibConst STUCK_PE UPTO_PE NUMBER_PE CANTSEE_PE TOOLIT_PE syn keyword informLibConst NOTHELD_PE MULTI_PE MMULTI_PE VAGUE_PE EXCEPT_PE syn keyword informLibConst ANIMA_PE VERB_PE SCENERY_PE ITGONE_PE syn keyword informLibConst JUNKAFTER_PE TOOFEW_PE NOTHING_PE ASKSCOPE_PE if !exists("inform_highlight_old") syn keyword informLibConst WORDSIZE TARGET_ZCODE TARGET_GLULX syn keyword informLibConst LIBRARY_PARSER LIBRARY_VERBLIB LIBRARY_GRAMMAR syn keyword informLibConst LIBRARY_ENGLISH NO_SCORE START_MOVE syn keyword informLibConst CLR_DEFAULT CLR_BLACK CLR_RED CLR_GREEN syn keyword informLibConst CLR_YELLOW CLR_BLUE CLR_MAGENTA CLR_CYAN syn keyword informLibConst CLR_WHITE CLR_PURPLE CLR_AZURE syn keyword informLibConst WIN_ALL WIN_MAIN WIN_STATUS endif endif " Now the case sensitive stuff. syntax case match syn keyword informSysFunc child children elder indirect parent random syn keyword informSysFunc sibling younger youngest metaclass if exists("inform_highlight_glulx") syn keyword informSysFunc glk endif syn keyword informSysConst adjectives_table actions_table classes_table syn keyword informSysConst identifiers_table preactions_table version_number syn keyword informSysConst largest_object strings_offset code_offset syn keyword informSysConst dict_par1 dict_par2 dict_par3 syn keyword informSysConst actual_largest_object static_memory_offset syn keyword informSysConst array_names_offset readable_memory_offset syn keyword informSysConst cpv__start cpv__end ipv__start ipv__end syn keyword informSysConst array__start array__end lowest_attribute_number syn keyword informSysConst highest_attribute_number attribute_names_array syn keyword informSysConst lowest_property_number highest_property_number syn keyword informSysConst property_names_array lowest_action_number syn keyword informSysConst highest_action_number action_names_array syn keyword informSysConst lowest_fake_action_number highest_fake_action_number syn keyword informSysConst fake_action_names_array lowest_routine_number syn keyword informSysConst highest_routine_number routines_array syn keyword informSysConst routine_names_array routine_flags_array syn keyword informSysConst lowest_global_number highest_global_number globals_array syn keyword informSysConst global_names_array global_flags_array syn keyword informSysConst lowest_array_number highest_array_number arrays_array syn keyword informSysConst array_names_array array_flags_array lowest_constant_number syn keyword informSysConst highest_constant_number constants_array constant_names_array syn keyword informSysConst lowest_class_number highest_class_number class_objects_array syn keyword informSysConst lowest_object_number highest_object_number if !exists("inform_highlight_old") syn keyword informSysConst sys_statusline_flag endif syn keyword informConditional default else if switch syn keyword informRepeat break continue do for objectloop until while syn keyword informStatement box font give inversion jump move new_line syn keyword informStatement print print_ret quit read remove restore return syn keyword informStatement rfalse rtrue save spaces string style syn keyword informOperator roman reverse bold underline fixed on off to syn keyword informOperator near from syn keyword informKeyword dictionary symbols objects verbs assembly syn keyword informKeyword expressions lines tokens linker on off alias long syn keyword informKeyword additive score time string table syn keyword informKeyword with private has class error fatalerror syn keyword informKeyword warning self if !exists("inform_highlight_old") syn keyword informKeyword buffer endif syn keyword informMetaAttrib remaining create destroy recreate copy call syn keyword informMetaAttrib print_to_array syn keyword informPredicate has hasnt in notin ofclass or syn keyword informPredicate provides syn keyword informGrammar contained noun held multi multiheld multiexcept syn keyword informGrammar contained multiinside creature special number syn keyword informGrammar contained scope topic reverse meta only replace syn keyword informGrammar contained first last syn keyword informKeywordObsolete contained initial data initstr syn keyword informTodo contained TODO " Assembly language mnemonics must be preceded by a '@'. syn match informAsmContainer "@\s*\k*" contains=informAsm,informAsmObsolete if exists("inform_highlight_glulx") syn keyword informAsm contained nop add sub mul div mod neg bitand bitor syn keyword informAsm contained bitxor bitnot shiftl sshiftr ushiftr jump jz syn keyword informAsm contained jnz jeq jne jlt jge jgt jle jltu jgeu jgtu syn keyword informAsm contained jleu call return catch throw tailcall copy syn keyword informAsm contained copys copyb sexs sexb aload aloads aloadb syn keyword informAsm contained aloadbit astore astores astoreb astorebit syn keyword informAsm contained stkcount stkpeek stkswap stkroll stkcopy syn keyword informAsm contained streamchar streamnum streamstr gestalt syn keyword informAsm contained debugtrap getmemsize setmemsize jumpabs syn keyword informAsm contained random setrandom quit verify restart save syn keyword informAsm contained restore saveundo restoreundo protect glk syn keyword informAsm contained getstringtbl setstringtbl getiosys setiosys syn keyword informAsm contained linearsearch binarysearch linkedsearch syn keyword informAsm contained callf callfi callfii callfiii else syn keyword informAsm contained je jl jg dec_chk inc_chk jin test or and syn keyword informAsm contained test_attr set_attr clear_attr store syn keyword informAsm contained insert_obj loadw loadb get_prop syn keyword informAsm contained get_prop_addr get_next_prop add sub mul div syn keyword informAsm contained mod call storew storeb put_prop sread syn keyword informAsm contained print_num random push pull syn keyword informAsm contained split_window set_window output_stream syn keyword informAsm contained input_stream sound_effect jz get_sibling syn keyword informAsm contained get_child get_parent get_prop_len inc dec syn keyword informAsm contained remove_obj print_obj ret jump syn keyword informAsm contained load not rtrue rfalse print syn keyword informAsm contained print_ret nop save restore restart syn keyword informAsm contained ret_popped pop quit new_line show_status syn keyword informAsm contained verify call_2s call_vs aread call_vs2 syn keyword informAsm contained erase_window erase_line set_cursor get_cursor syn keyword informAsm contained set_text_style buffer_mode read_char syn keyword informAsm contained scan_table call_1s call_2n set_colour throw syn keyword informAsm contained call_vn call_vn2 tokenise encode_text syn keyword informAsm contained copy_table print_table check_arg_count syn keyword informAsm contained call_1n catch piracy log_shift art_shift syn keyword informAsm contained set_font save_undo restore_undo draw_picture syn keyword informAsm contained picture_data erase_picture set_margins syn keyword informAsm contained move_window window_size window_style syn keyword informAsm contained get_wind_prop scroll_window pop_stack syn keyword informAsm contained read_mouse mouse_window push_stack syn keyword informAsm contained put_wind_prop print_form make_menu syn keyword informAsm contained picture_table if !exists("inform_highlight_old") syn keyword informAsm contained check_unicode print_unicode endif syn keyword informAsmObsolete contained print_paddr print_addr print_char endif " Handling for different versions of VIM. setlocal iskeyword+=$ command -nargs=+ SynDisplay syntax display " Grammar sections. syn region informGrammarSection matchgroup=informGramPreProc start="\" skip=+".*"+ end=";"he=e-1 contains=ALLBUT,informAsm " Special character forms. SynDisplay match informBadAccent contained "@[^{[:digit:]]\D" SynDisplay match informBadAccent contained "@{[^}]*}" SynDisplay match informAccent contained "@:[aouAOUeiyEI]" SynDisplay match informAccent contained "@'[aeiouyAEIOUY]" SynDisplay match informAccent contained "@`[aeiouAEIOU]" SynDisplay match informAccent contained "@\^[aeiouAEIOU]" SynDisplay match informAccent contained "@\~[anoANO]" SynDisplay match informAccent contained "@/[oO]" SynDisplay match informAccent contained "@ss\|@<<\|@>>\|@oa\|@oA\|@ae\|@AE\|@cc\|@cC" SynDisplay match informAccent contained "@th\|@et\|@Th\|@Et\|@LL\|@oe\|@OE\|@!!\|@??" SynDisplay match informAccent contained "@{\x\{1,4}}" SynDisplay match informBadStrUnicode contained "@@\D" SynDisplay match informStringUnicode contained "@@\d\+" SynDisplay match informStringCode contained "@\d\d" " String and Character constants. Ordering is important here. syn region informString start=+"+ skip=+\\\\+ end=+"+ contains=informAccent,informStringUnicode,informStringCode,informBadAccent,informBadStrUnicode syn region informDictString start="'" end="'" contains=informAccent,informBadAccent SynDisplay match informBadDictString "''" SynDisplay match informDictString "'''" " Integer numbers: decimal, hexadecimal and binary. SynDisplay match informNumber "\<\d\+\>" SynDisplay match informNumber "\<\$\x\+\>" SynDisplay match informNumber "\<\$\$[01]\+\>" " Comments syn match informComment "!.*" contains=informTodo " Syncronization syn sync match informSyncStringEnd grouphere NONE /"[;,]\s*$/ syn sync match informSyncRoutineEnd grouphere NONE /][;,]\s*$/ syn sync match informSyncCommentEnd grouphere NONE /^\s*!.*$/ syn sync match informSyncRoutine groupthere informGrammarSection "\" syn sync maxlines=500 delcommand SynDisplay " The default highlighting. hi def link informDefine Define hi def link informType Type hi def link informInclude Include hi def link informPreCondit PreCondit hi def link informPreProc PreProc hi def link informGramPreProc PreProc hi def link informAsm Special if !exists("inform_suppress_obsolete") hi def link informAsmObsolete informError hi def link informKeywordObsolete informError else hi def link informAsmObsolete Special hi def link informKeywordObsolete Keyword endif hi def link informPredicate Operator hi def link informSysFunc Identifier hi def link informSysConst Identifier hi def link informConditional Conditional hi def link informRepeat Repeat hi def link informStatement Statement hi def link informOperator Operator hi def link informKeyword Keyword hi def link informGrammar Keyword hi def link informDictString String hi def link informNumber Number hi def link informError Error hi def link informString String hi def link informComment Comment hi def link informAccent Special hi def link informStringUnicode Special hi def link informStringCode Special hi def link informTodo Todo if !exists("inform_highlight_simple") hi def link informLibAttrib Identifier hi def link informLibProp Identifier hi def link informLibObj Identifier hi def link informLibRoutine Identifier hi def link informLibVariable Identifier hi def link informLibConst Identifier hi def link informLibAction Identifier endif hi def link informBadDictString informError hi def link informBadAccent informError hi def link informBadStrUnicode informError let b:current_syntax = "inform" " vim: ts=8 PK!([҅99vim80/syntax/xf86conf.vimnu[" Vim syntax file " This is a GENERATED FILE. Please always refer to source file at the URI below. " Language: XF86Config (XFree86 configuration file) " Former Maintainer: David Ne\v{c}as (Yeti) " Last Change: 2010 Nov 01 " URL: http://trific.ath.cx/Ftp/vim/syntax/xf86conf.vim " Required Vim Version: 6.0 " " Options: let xf86conf_xfree86_version = 3 or 4 " to force XFree86 3.x or 4.x XF86Config syntax " Setup " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif if !exists("b:xf86conf_xfree86_version") if exists("xf86conf_xfree86_version") let b:xf86conf_xfree86_version = xf86conf_xfree86_version else let b:xf86conf_xfree86_version = 4 endif endif syn case ignore " Comments syn match xf86confComment "#.*$" contains=xf86confTodo syn case match syn keyword xf86confTodo FIXME TODO XXX NOT contained syn case ignore syn match xf86confTodo "???" contained " Sectioning errors syn keyword xf86confSectionError Section contained syn keyword xf86confSectionError EndSection syn keyword xf86confSubSectionError SubSection syn keyword xf86confSubSectionError EndSubSection syn keyword xf86confModeSubSectionError Mode syn keyword xf86confModeSubSectionError EndMode syn cluster xf86confSectionErrors contains=xf86confSectionError,xf86confSubSectionError,xf86confModeSubSectionError " Values if b:xf86conf_xfree86_version >= 4 syn region xf86confString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained contains=xf86confSpecialChar,xf86confConstant,xf86confOptionName oneline keepend nextgroup=xf86confValue skipwhite else syn region xf86confString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained contains=xf86confSpecialChar,xf86confOptionName oneline keepend endif syn match xf86confSpecialChar "\\\d\d\d\|\\." contained syn match xf86confDecimalNumber "\(\s\|-\)\zs\d*\.\=\d\+\>" syn match xf86confFrequency "\(\s\|-\)\zs\d\+\.\=\d*\(Hz\|k\|kHz\|M\|MHz\)" syn match xf86confOctalNumber "\<0\o\+\>" syn match xf86confOctalNumberError "\<0\o\+[89]\d*\>" syn match xf86confHexadecimalNumber "\<0x\x\+\>" syn match xf86confValue "\s\+.*$" contained contains=xf86confComment,xf86confString,xf86confFrequency,xf86conf\w\+Number,xf86confConstant syn keyword xf86confOption Option nextgroup=xf86confString skipwhite syn match xf86confModeLineValue "\"[^\"]\+\"\(\_s\+[0-9.]\+\)\{9}" nextgroup=xf86confSync skipwhite skipnl " Sections and subsections if b:xf86conf_xfree86_version >= 4 syn region xf86confSection matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\|InputClass\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,xf86confSectionError syn region xf86confSectionModule matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Module\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionAny,xf86confComment,xf86confOption,xf86confKeyword syn region xf86confSectionMonitor matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Monitor\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment,xf86confOption,xf86confKeyword syn region xf86confSectionModes matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Modes\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment syn region xf86confSectionScreen matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Screen\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionDisplay,xf86confComment,xf86confOption,xf86confKeyword syn region xf86confSubSectionAny matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"[^\"]\+\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,@xf86confSectionErrors syn region xf86confSubSectionMode matchgroup=xf86confSectionDelim start="^\s*Mode\s\+\"[^\"]\+\"" end="^\s*EndMode\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confKeyword,@xf86confSectionErrors syn region xf86confSubSectionDisplay matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"Display\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,@xf86confSectionErrors else syn region xf86confSection matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Device\|Keyboard\|Pointer\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword syn region xf86confSectionMX matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Module\|Xinput\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionAny,xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword syn region xf86confSectionMonitor matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Monitor\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword syn region xf86confSectionScreen matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Screen\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionDisplay,xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword syn region xf86confSubSectionAny matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"[^\"]\+\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword,@xf86confSectionErrors syn region xf86confSubSectionMode matchgroup=xf86confSectionDelim start="^\s*Mode\s\+\"[^\"]\+\"" end="^\s*EndMode\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword,@xf86confSectionErrors syn region xf86confSubSectionDisplay matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"Display\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword,@xf86confSectionErrors endif " Options if b:xf86conf_xfree86_version >= 4 command -nargs=+ Xf86confdeclopt syn keyword xf86confOptionName contained else command -nargs=+ Xf86confdeclopt syn keyword xf86confOptionName contained nextgroup=xf86confValue,xf86confComment skipwhite endif Xf86confdeclopt 18bitBus AGPFastWrite AGPMode Accel AllowClosedownGrabs AllowDeactivateGrabs Xf86confdeclopt AllowMouseOpenFail AllowNonLocalModInDev AllowNonLocalXvidtune AlwaysCore Xf86confdeclopt AngleOffset AutoRepeat BaudRate BeamTimeout Beep BlankTime BlockWrite BottomX Xf86confdeclopt BottomY ButtonNumber ButtonThreshold Buttons ByteSwap CacheLines ChordMiddle Xf86confdeclopt ClearDTR ClearDTS ClickMode CloneDisplay CloneHSync CloneMode CloneVRefresh Xf86confdeclopt ColorKey Composite CompositeSync CoreKeyboard CorePointer Crt2Memory CrtScreen Xf86confdeclopt CrtcNumber CyberShadow CyberStretch DDC DDCMode DMAForXv DPMS Dac6Bit DacSpeed Xf86confdeclopt DataBits Debug DebugLevel DefaultServerLayout DeltaX DeltaY Device DeviceName Xf86confdeclopt DisableModInDev DisableVidModeExtension Display Display1400 DontVTSwitch Xf86confdeclopt DontZap DontZoom DoubleScan DozeMode DozeScan DozeTime DragLockButtons Xf86confdeclopt DualCount DualRefresh EarlyRasPrecharge Emulate3Buttons Emulate3Timeout Xf86confdeclopt EmulateWheel EmulateWheelButton EmulateWheelInertia EnablePageFlip EnterCount Xf86confdeclopt EstimateSizesAggressively ExternDisp FPClock16 FPClock24 FPClock32 Xf86confdeclopt FPClock8 FPDither FastDram FifoAggresive FifoConservative FifoModerate Xf86confdeclopt FireGL3000 FixPanelSize FlatPanel FlipXY FlowControl ForceCRT1 ForceCRT2Type Xf86confdeclopt ForceLegacyCRT ForcePCIMode FpmVRAM FrameBufferWC FullMMIO GammaBrightness Xf86confdeclopt HWClocks HWCursor HandleSpecialKeys HistorySize Interlace Interlaced InternDisp Xf86confdeclopt InvX InvY InvertX InvertY KeepShape LCDClock LateRasPrecharge LcdCenter Xf86confdeclopt LeftAlt Linear MGASDRAM MMIO MMIOCache MTTR MaxX MaxY MaximumXPosition Xf86confdeclopt MaximumYPosition MinX MinY MinimumXPosition MinimumYPosition NoAccel Xf86confdeclopt NoAllowMouseOpenFail NoAllowNonLocalModInDev NoAllowNonLocalXvidtune Xf86confdeclopt NoBlockWrite NoCompositeSync NoCompression NoCrtScreen NoCyberShadow NoDCC Xf86confdeclopt NoDDC NoDac6Bit NoDebug NoDisableModInDev NoDisableVidModeExtension NoDontZap Xf86confdeclopt NoDontZoom NoFireGL3000 NoFixPanelSize NoFpmVRAM NoFrameBufferWC NoHWClocks Xf86confdeclopt NoHWCursor NoHal NoLcdCenter NoLinear NoMGASDRAM NoMMIO NoMMIOCache NoMTTR Xf86confdeclopt NoOverClockMem NoOverlay NoPC98 NoPM NoPciBurst NoPciRetry NoProbeClock Xf86confdeclopt NoSTN NoSWCursor NoShadowFb NoShowCache NoSlowEDODRAM NoStretch NoSuspendHack Xf86confdeclopt NoTexturedVideo NoTrapSignals NoUseFBDev NoUseModeline NoUseVclk1 NoVTSysReq Xf86confdeclopt NoXVideo NvAGP OSMImageBuffers OffTime Origin OverClockMem Overlay Xf86confdeclopt PC98 PCIBurst PM PWMActive PWMSleep PanelDelayCompensation PanelHeight Xf86confdeclopt PanelOff PanelWidth Parity PciBurst PciRetry Pixmap Port PressDur PressPitch Xf86confdeclopt PressVol ProbeClocks ProgramFPRegs Protocol RGBBits ReleaseDur ReleasePitch Xf86confdeclopt ReportingMode Resolution RightAlt RightCtl Rotate STN SWCursor SampleRate Xf86confdeclopt ScreenNumber ScrollLock SendCoreEvents SendDragEvents Serial ServerNumLock Xf86confdeclopt SetLcdClk SetMClk SetRefClk ShadowFb ShadowStatus ShowCache SleepMode Xf86confdeclopt SleepScan SleepTime SlowDram SlowEDODRAM StandbyTime StopBits Stretch Xf86confdeclopt SuspendHack SuspendTime SwapXY SyncOnGreen TV TVOutput TVOverscan TVStandard Xf86confdeclopt TVXPosOffset TVYPosOffset TexturedVideo Threshold Tilt TopX TopY TouchTime Xf86confdeclopt TrapSignals Type USB UseBIOS UseFB UseFBDev UseFlatPanel UseModeline Xf86confdeclopt UseROMData UseVclk1 VTInit VTSysReq VTime VideoKey Vmin XAxisMapping Xf86confdeclopt XLeds XVideo XaaNoCPUToScreenColorExpandFill XaaNoColor8x8PatternFillRect Xf86confdeclopt XaaNoColor8x8PatternFillTrap XaaNoDashedBresenhamLine XaaNoDashedTwoPointLine Xf86confdeclopt XaaNoImageWriteRect XaaNoMono8x8PatternFillRect XaaNoMono8x8PatternFillTrap Xf86confdeclopt XaaNoOffscreenPixmaps XaaNoPixmapCache XaaNoScanlineCPUToScreenColorExpandFill Xf86confdeclopt XaaNoScanlineImageWriteRect XaaNoScreenToScreenColorExpandFill Xf86confdeclopt XaaNoScreenToScreenCopy XaaNoSolidBresenhamLine XaaNoSolidFillRect Xf86confdeclopt XaaNoSolidFillTrap XaaNoSolidHorVertLine XaaNoSolidTwoPointLine Xinerama Xf86confdeclopt XkbCompat XkbDisable XkbGeometry XkbKeycodes XkbKeymap XkbLayout XkbModel Xf86confdeclopt XkbOptions XkbRules XkbSymbols XkbTypes XkbVariant XvBskew XvHsync XvOnCRT2 Xf86confdeclopt XvRskew XvVsync YAxisMapping ZAxisMapping ZoomOnLCD delcommand Xf86confdeclopt " Keywords syn keyword xf86confKeyword Device Driver FontPath Group Identifier Load ModelName ModulePath Monitor RGBPath VendorName VideoAdaptor Visual nextgroup=xf86confComment,xf86confString skipwhite syn keyword xf86confKeyword BiosBase Black BoardName BusID ChipID ChipRev Chipset nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword ClockChip Clocks DacSpeed DefaultDepth DefaultFbBpp nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword DefaultColorDepth nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword Depth DisplaySize DotClock FbBpp Flags Gamma HorizSync nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword Hskew HTimings InputDevice IOBase MemBase Mode nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword Modes Ramdac Screen TextClockFreq UseModes VendorName nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword VertRefresh VideoRam ViewPort Virtual VScan VTimings nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword Weight White nextgroup=xf86confComment,xf86confValue syn keyword xf86confModeLine ModeLine nextgroup=xf86confComment,xf86confModeLineValue skipwhite skipnl " Constants if b:xf86conf_xfree86_version >= 4 syn keyword xf86confConstant true false on off yes no omit contained else syn keyword xf86confConstant Meta Compose Control endif syn keyword xf86confConstant StaticGray GrayScale StaticColor PseudoColor TrueColor DirectColor contained syn keyword xf86confConstant Absolute RightOf LeftOf Above Below Relative StaticGray GrayScale StaticColor PseudoColor TrueColor DirectColor contained syn match xf86confSync "\(\s\+[+-][CHV]_*Sync\)\+" contained " Synchronization if b:xf86conf_xfree86_version >= 4 syn sync match xf86confSyncSection grouphere xf86confSection "^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\|InputClass\)\"" syn sync match xf86confSyncSectionModule grouphere xf86confSectionModule "^\s*Section\s\+\"Module\"" syn sync match xf86confSyncSectionModes groupthere xf86confSectionModes "^\s*Section\s\+\"Modes\"" else syn sync match xf86confSyncSection grouphere xf86confSection "^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Device\|Keyboard\|Pointer\)\"" syn sync match xf86confSyncSectionMX grouphere xf86confSectionMX "^\s*Section\s\+\"\(Module\|Xinput\)\"" endif syn sync match xf86confSyncSectionMonitor groupthere xf86confSectionMonitor "^\s*Section\s\+\"Monitor\"" syn sync match xf86confSyncSectionScreen groupthere xf86confSectionScreen "^\s*Section\s\+\"Screen\"" syn sync match xf86confSyncEndSection groupthere NONE "^\s*End_*Section\s*$" " Define the default highlighting hi def link xf86confComment Comment hi def link xf86confTodo Todo hi def link xf86confSectionDelim Statement hi def link xf86confOptionName Identifier hi def link xf86confSectionError xf86confError hi def link xf86confSubSectionError xf86confError hi def link xf86confModeSubSectionError xf86confError hi def link xf86confOctalNumberError xf86confError hi def link xf86confError Error hi def link xf86confOption xf86confKeyword hi def link xf86confModeLine xf86confKeyword hi def link xf86confKeyword Type hi def link xf86confDecimalNumber xf86confNumber hi def link xf86confOctalNumber xf86confNumber hi def link xf86confHexadecimalNumber xf86confNumber hi def link xf86confFrequency xf86confNumber hi def link xf86confModeLineValue Constant hi def link xf86confNumber Constant hi def link xf86confSync xf86confConstant hi def link xf86confConstant Special hi def link xf86confSpecialChar Special hi def link xf86confString String hi def link xf86confValue Constant let b:current_syntax = "xf86conf" PK!գGvim80/syntax/tf.vimnu[" Vim syntax file " Language: tf " Maintainer: Lutz Eymers " URL: http://www.isp.de/data/tf.vim " Email: send syntax_vim.tgz " Last Change: 2001 May 10 " " Options lite_minlines = x to sync at least x lines backwards " Remove any old syntax stuff hanging around " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case match if !exists("main_syntax") let main_syntax = 'tf' endif " Special global variables syn keyword tfVar HOME LANG MAIL SHELL TERM TFHELP TFLIBDIR TFLIBRARY TZ contained syn keyword tfVar background backslash contained syn keyword tfVar bamf bg_output borg clearfull cleardone clock connect contained syn keyword tfVar emulation end_color gag gethostbyname gpri hook hilite contained syn keyword tfVar hiliteattr histsize hpri insert isize istrip kecho contained syn keyword tfVar kprefix login lp lpquote maildelay matching max_iter contained syn keyword tfVar max_recur mecho more mprefix oldslash promt_sec contained syn keyword tfVar prompt_usec proxy_host proxy_port ptime qecho qprefix contained syn keyword tfVar quite quitdone redef refreshtime scroll shpause snarf sockmload contained syn keyword tfVar start_color tabsize telopt sub time_format visual contained syn keyword tfVar watch_dog watchname wordpunct wrap wraplog wrapsize contained syn keyword tfVar wrapspace contained " Worldvar syn keyword tfWorld world_name world_character world_password world_host contained syn keyword tfWorld world_port world_mfile world_type contained " Number syn match tfNumber "-\=\<\d\+\>" " Float syn match tfFloat "\(-\=\<\d+\|-\=\)\.\d\+\>" " Operator syn match tfOperator "[-+=?:&|!]" syn match tfOperator "/[^*~@]"he=e-1 syn match tfOperator ":=" syn match tfOperator "[^/%]\*"hs=s+1 syn match tfOperator "$\+[([{]"he=e-1,me=e-1 syn match tfOperator "\^\[\+"he=s+1 contains=tfSpecialCharEsc " Relational syn match tfRelation "&&" syn match tfRelation "||" syn match tfRelation "[<>/!=]=" syn match tfRelation "[<>]" syn match tfRelation "[!=]\~" syn match tfRelation "[=!]/" " Readonly Var syn match tfReadonly "[#*]" contained syn match tfReadonly "\<-\=L\=\d\{-}\>" contained syn match tfReadonly "\" contained syn match tfReadonly "\" contained " Identifier syn match tfIdentifier "%\+[a-zA-Z_#*-0-9]\w*" contains=tfVar,tfReadonly syn match tfIdentifier "%\+[{]"he=e-1,me=e-1 syn match tfIdentifier "\$\+{[a-zA-Z_#*-0-9]\w*}" contains=tfWorld " Function names syn keyword tfFunctions ascii char columns echo filename ftime fwrite getopts syn keyword tfFunctions getpid idle kbdel kbgoto kbhead kblen kbmatch kbpoint syn keyword tfFunctions kbtail kbwordleft kbwordright keycode lines mod syn keyword tfFunctions moresize pad rand read regmatch send strcat strchr syn keyword tfFunctions strcmp strlen strncmp strrchr strrep strstr substr syn keyword tfFunctions systype time tolower toupper syn keyword tfStatement addworld bamf beep bind break cat changes connect contained syn keyword tfStatement dc def dokey echo edit escape eval export expr fg for contained syn keyword tfStatement gag getfile grab help hilite histsize hook if input contained syn keyword tfStatement kill lcd let list listsockets listworlds load contained syn keyword tfStatement localecho log nohilite not partial paste ps purge contained syn keyword tfStatement purgeworld putfile quit quote recall recordline save contained syn keyword tfStatement saveworld send sh shift sub substitute contained syn keyword tfStatement suspend telnet test time toggle trig trigger unbind contained syn keyword tfStatement undef undefn undeft unhook untrig unworld contained syn keyword tfStatement version watchdog watchname while world contained " Hooks syn keyword tfHook ACTIVITY BACKGROUND BAMF CONFAIL CONFLICT CONNECT DISCONNECT syn keyword tfHook KILL LOAD LOADFAIL LOG LOGIN MAIL MORE PENDING PENDING syn keyword tfHook PROCESS PROMPT PROXY REDEF RESIZE RESUME SEND SHADOW SHELL syn keyword tfHook SIGHUP SIGTERM SIGUSR1 SIGUSR2 WORLD " Conditional syn keyword tfConditional if endif then else elseif contained " Repeat syn keyword tfRepeat while do done repeat for contained " Statement syn keyword tfStatement break quit contained " Include syn keyword tfInclude require load save loaded contained " Define syn keyword tfDefine bind unbind def undef undefn undefn purge hook unhook trig untrig contained syn keyword tfDefine set unset setenv contained " Todo syn keyword tfTodo TODO Todo todo contained " SpecialChar syn match tfSpecialChar "\\[abcfnrtyv\\]" contained syn match tfSpecialChar "\\\d\{3}" contained contains=tfOctalError syn match tfSpecialChar "\\x[0-9a-fA-F]\{2}" contained syn match tfSpecialCharEsc "\[\+" contained syn match tfOctalError "[89]" contained " Comment syn region tfComment start="^;" end="$" contains=tfTodo " String syn region tfString oneline matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=tfIdentifier,tfSpecialChar,tfEscape syn region tfString matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tfIdentifier,tfSpecialChar,tfEscape syn match tfParentError "[)}\]]" " Parents syn region tfParent matchgroup=Delimiter start="(" end=")" contains=ALLBUT,tfReadonly syn region tfParent matchgroup=Delimiter start="\[" end="\]" contains=ALL syn region tfParent matchgroup=Delimiter start="{" end="}" contains=ALL syn match tfEndCommand "%%\{-};" syn match tfJoinLines "\\$" " Types syn match tfType "/[a-zA-Z_~@][a-zA-Z0-9_]*" contains=tfConditional,tfRepeat,tfStatement,tfInclude,tfDefine,tfStatement " Catch /quote .. ' syn match tfQuotes "/quote .\{-}'" contains=ALLBUT,tfString " Catch $(/escape ) syn match tfEscape "(/escape .*)" " sync if exists("tf_minlines") exec "syn sync minlines=" . tf_minlines else syn sync minlines=100 endif " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link tfComment Comment hi def link tfString String hi def link tfNumber Number hi def link tfFloat Float hi def link tfIdentifier Identifier hi def link tfVar Identifier hi def link tfWorld Identifier hi def link tfReadonly Identifier hi def link tfHook Identifier hi def link tfFunctions Function hi def link tfRepeat Repeat hi def link tfConditional Conditional hi def link tfLabel Label hi def link tfStatement Statement hi def link tfType Type hi def link tfInclude Include hi def link tfDefine Define hi def link tfSpecialChar SpecialChar hi def link tfSpecialCharEsc SpecialChar hi def link tfParentError Error hi def link tfTodo Todo hi def link tfEndCommand Delimiter hi def link tfJoinLines Delimiter hi def link tfOperator Operator hi def link tfRelation Operator let b:current_syntax = "tf" if main_syntax == 'tf' unlet main_syntax endif " vim: ts=8 PK!>ggvim80/syntax/spyce.vimnu[" Vim syntax file " Language: SPYCE " Maintainer: Rimon Barr " URL: http://spyce.sourceforge.net " Last Change: 2009 Nov 11 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " we define it here so that included files can test for it if !exists("main_syntax") let main_syntax='spyce' endif " Read the HTML syntax to start with let b:did_indent = 1 " don't perform HTML indentation! let html_no_rendering = 1 " do not render ,, etc... runtime! syntax/html.vim unlet b:current_syntax syntax spell default " added by Bram " include python syn include @Python :p:h/python.vim syn include @Html :p:h/html.vim " spyce definitions syn keyword spyceDirectiveKeyword include compact module import contained syn keyword spyceDirectiveArg name names file contained syn region spyceDirectiveString start=+"+ end=+"+ contained syn match spyceDirectiveValue "=[\t ]*[^'", \t>][^, \t>]*"hs=s+1 contained syn match spyceBeginErrorS ,\[\[, syn match spyceBeginErrorA ,<%, syn cluster spyceBeginError contains=spyceBeginErrorS,spyceBeginErrorA syn match spyceEndErrorS ,\]\], syn match spyceEndErrorA ,%>, syn cluster spyceEndError contains=spyceEndErrorS,spyceEndErrorA syn match spyceEscBeginS ,\\\[\[, syn match spyceEscBeginA ,\\<%, syn cluster spyceEscBegin contains=spyceEscBeginS,spyceEscBeginA syn match spyceEscEndS ,\\\]\], syn match spyceEscEndA ,\\%>, syn cluster spyceEscEnd contains=spyceEscEndS,spyceEscEndA syn match spyceEscEndCommentS ,--\\\]\], syn match spyceEscEndCommentA ,--\\%>, syn cluster spyceEscEndComment contains=spyceEscEndCommentS,spyceEscEndCommentA syn region spyceStmtS matchgroup=spyceStmtDelim start=,\[\[, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend syn region spyceStmtA matchgroup=spyceStmtDelim start=,<%, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend syn region spyceChunkS matchgroup=spyceChunkDelim start=,\[\[\\, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend syn region spyceChunkA matchgroup=spyceChunkDelim start=,<%\\, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend syn region spyceEvalS matchgroup=spyceEvalDelim start=,\[\[=, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend syn region spyceEvalA matchgroup=spyceEvalDelim start=,<%=, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend syn region spyceDirectiveS matchgroup=spyceDelim start=,\[\[\., end=,\]\], contains=spyceBeginError,spyceDirectiveKeyword,spyceDirectiveArg,spyceDirectiveValue,spyceDirectiveString keepend syn region spyceDirectiveA matchgroup=spyceDelim start=,<%@, end=,%>, contains=spyceBeginError,spyceDirectiveKeyword,spyceDirectiveArg,spyceDirectiveValue,spyceDirectiveString keepend syn region spyceCommentS matchgroup=spyceCommentDelim start=,\[\[--, end=,--\]\], syn region spyceCommentA matchgroup=spyceCommentDelim start=,<%--, end=,--%>, syn region spyceLambdaS matchgroup=spyceLambdaDelim start=,\[\[spy!\?, end=,\]\], contains=@Html,@spyce extend syn region spyceLambdaA matchgroup=spyceLambdaDelim start=,<%spy!\?, end=,%>, contains=@Html,@spyce extend syn cluster spyce contains=spyceStmtS,spyceStmtA,spyceChunkS,spyceChunkA,spyceEvalS,spyceEvalA,spyceCommentS,spyceCommentA,spyceDirectiveS,spyceDirectiveA syn cluster htmlPreproc contains=@spyce hi link spyceDirectiveKeyword Special hi link spyceDirectiveArg Type hi link spyceDirectiveString String hi link spyceDirectiveValue String hi link spyceDelim Special hi link spyceStmtDelim spyceDelim hi link spyceChunkDelim spyceDelim hi link spyceEvalDelim spyceDelim hi link spyceLambdaDelim spyceDelim hi link spyceCommentDelim Comment hi link spyceBeginErrorS Error hi link spyceBeginErrorA Error hi link spyceEndErrorS Error hi link spyceEndErrorA Error hi link spyceStmtS spyce hi link spyceStmtA spyce hi link spyceChunkS spyce hi link spyceChunkA spyce hi link spyceEvalS spyce hi link spyceEvalA spyce hi link spyceDirectiveS spyce hi link spyceDirectiveA spyce hi link spyceCommentS Comment hi link spyceCommentA Comment hi link spyceLambdaS Normal hi link spyceLambdaA Normal hi link spyce Statement let b:current_syntax = "spyce" if main_syntax == 'spyce' unlet main_syntax endif PK!+*  vim80/syntax/rtf.vimnu[" Vim syntax file " Language: Rich Text Format " "*.rtf" files " " The Rich Text Format (RTF) Specification is a method of encoding formatted " text and graphics for easy transfer between applications. " .hlp (windows help files) use compiled rtf files " rtf documentation at http://night.primate.wisc.edu/software/RTF/ " " Maintainer: Dominique Stphan (dominique@mggen.com) " URL: http://www.mggen.com/vim/syntax/rtf.zip " Last change: 2001 Mai 02 " TODO: render underline, italic, bold " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " case on (all controls must be lower case) syn case match " Control Words syn match rtfControlWord "\\[a-z]\+[\-]\=[0-9]*" " New Control Words (not in the 1987 specifications) syn match rtfNewControlWord "\\\*\\[a-z]\+[\-]\=[0-9]*" " Control Symbol : any \ plus a non alpha symbol, *, \, { and } and ' syn match rtfControlSymbol "\\[^a-zA-Z\*\{\}\\']" " { } and \ are special characters, to use them " we add a backslash \ syn match rtfCharacter "\\\\" syn match rtfCharacter "\\{" syn match rtfCharacter "\\}" " Escaped characters (for 8 bytes characters upper than 127) syn match rtfCharacter "\\'[A-Za-z0-9][A-Za-z0-9]" " Unicode syn match rtfUnicodeCharacter "\\u[0-9][0-9]*" " Color values, we will put this value in Red, Green or Blue syn match rtfRed "\\red[0-9][0-9]*" syn match rtfGreen "\\green[0-9][0-9]*" syn match rtfBlue "\\blue[0-9][0-9]*" " Some stuff for help files syn match rtfFootNote "[#$K+]{\\footnote.*}" contains=rtfControlWord,rtfNewControlWord " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link rtfControlWord Statement hi def link rtfNewControlWord Special hi def link rtfControlSymbol Constant hi def link rtfCharacter Character hi def link rtfUnicodeCharacter SpecialChar hi def link rtfFootNote Comment " Define colors for the syntax file hi rtfRed term=underline cterm=underline ctermfg=DarkRed gui=underline guifg=DarkRed hi rtfGreen term=underline cterm=underline ctermfg=DarkGreen gui=underline guifg=DarkGreen hi rtfBlue term=underline cterm=underline ctermfg=DarkBlue gui=underline guifg=DarkBlue hi def link rtfRed rtfRed hi def link rtfGreen rtfGreen hi def link rtfBlue rtfBlue let b:current_syntax = "rtf" " vim:ts=8 PK!xk8vim80/syntax/indent.vimnu[" Vim syntax file " Language: indent(1) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2010-01-23 " indent_is_bsd: If exists, will change somewhat to match BSD implementation " " TODO: is the deny-all (a la lilo.vim nice or no?)... " irritating to be wrong to the last char... " would be sweet if right until one char fails if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword+=-,+ syn match indentError '\S\+' syn keyword indentTodo contained TODO FIXME XXX NOTE syn region indentComment start='/\*' end='\*/' \ contains=indentTodo,@Spell syn region indentComment start='//' skip='\\$' end='$' \ contains=indentTodo,@Spell if !exists("indent_is_bsd") syn match indentOptions '-i\|--indentation-level\|-il\|--indent-level' \ nextgroup=indentNumber skipwhite skipempty endif syn match indentOptions '-\%(bli\|c\%([bl]i\|[dip]\)\=\|di\=\|ip\=\|lc\=\|pp\=i\|sbi\|ts\|-\%(brace-indent\|comment-indentation\|case-brace-indentation\|declaration-comment-column\|continuation-indentation\|case-indentation\|else-endif-column\|line-comments-indentation\|declaration-indentation\|indent-level\|parameter-indentation\|line-length\|comment-line-length\|paren-indentation\|preprocessor-indentation\|struct-brace-indentation\|tab-size\)\)' \ nextgroup=indentNumber skipwhite skipempty syn match indentNumber display contained '\d\+\>' syn match indentOptions '-T' \ nextgroup=indentIdent skipwhite skipempty syn match indentIdent display contained '\h\w*\>' syn keyword indentOptions -bacc --blank-lines-after-ifdefs \ -bad --blank-lines-after-declarations \ -badp --blank-lines-after-procedure-declarations \ -bap --blank-lines-after-procedures \ -bbb --blank-lines-before-block-comments \ -bbo --break-before-boolean-operator \ -bc --blank-lines-after-commas \ -bfda --break-function-decl-args \ -bfde --break-function-decl-args-end \ -bl --braces-after-if-line \ -blf --braces-after-func-def-line \ -bls --braces-after-struct-decl-line \ -br --braces-on-if-line \ -brf --braces-on-func-def-line \ -brs --braces-on-struct-decl-line \ -bs --Bill-Shannon --blank-before-sizeof \ -c++ --c-plus-plus \ -cdb --comment-delimiters-on-blank-lines \ -cdw --cuddle-do-while \ -ce --cuddle-else \ -cs --space-after-cast \ -dj --left-justify-declarations \ -eei --extra-expression-indentation \ -fc1 --format-first-column-comments \ -fca --format-all-comments \ -gnu --gnu-style \ -h --help --usage \ -hnl --honour-newlines \ -kr --k-and-r-style --kernighan-and-ritchie --kernighan-and-ritchie-style \ -lp --continue-at-parentheses \ -lps --leave-preprocessor-space \ -nbacc --no-blank-lines-after-ifdefs \ -nbad --no-blank-lines-after-declarations \ -nbadp --no-blank-lines-after-procedure-declarations \ -nbap --no-blank-lines-after-procedures \ -nbbb --no-blank-lines-before-block-comments \ -nbbo --break-after-boolean-operator \ -nbc --no-blank-lines-after-commas \ -nbfda --dont-break-function-decl-args \ -nbfde --dont-break-function-decl-args-end \ -nbs --no-Bill-Shannon --no-blank-before-sizeof \ -ncdb --no-comment-delimiters-on-blank-lines \ -ncdw --dont-cuddle-do-while \ -nce --dont-cuddle-else \ -ncs --no-space-after-casts \ -ndj --dont-left-justify-declarations \ -neei --no-extra-expression-indentation \ -nfc1 --dont-format-first-column-comments \ -nfca --dont-format-comments \ -nhnl --ignore-newlines \ -nip --dont-indent-parameters --no-parameter-indentation \ -nlp --dont-line-up-parentheses \ -nlps --remove-preprocessor-space \ -npcs --no-space-after-function-call-names \ -npmt \ -npro --ignore-profile \ -nprs --no-space-after-parentheses \ -npsl --dont-break-procedure-type \ -nsaf --no-space-after-for \ -nsai --no-space-after-if \ -nsaw --no-space-after-while \ -nsc --dont-star-comments \ -nsob --leave-optional-blank-lines \ -nss --dont-space-special-semicolon \ -nut --no-tabs \ -nv --no-verbosity \ -o --output \ -o --output-file \ -orig --berkeley --berkeley-style --original --original-style \ -pcs --space-after-procedure-calls \ -pmt --preserve-mtime \ -prs --space-after-parentheses \ -psl --procnames-start-lines \ -saf --space-after-for \ -sai --space-after-if \ -saw --space-after-while \ -sc --start-left-side-of-comments \ -sob --swallow-optional-blank-lines \ -ss --space-special-semicolon \ -st --standard-output \ -ut --use-tabs \ -v --verbose \ -version --version \ -linux --linux-style if exists("indent_is_bsd") syn keyword indentOptions -ip -ei -nei endif if exists("c_minlines") let b:c_minlines = c_minlines else if !exists("c_no_if0") let b:c_minlines = 50 " #if 0 constructs can be long else let b:c_minlines = 15 " mostly for () constructs endif endif hi def link indentError Error hi def link indentComment Comment hi def link indentTodo Todo hi def link indentOptions Keyword hi def link indentNumber Number hi def link indentIdent Identifier let b:current_syntax = "indent" let &cpo = s:cpo_save unlet s:cpo_save PK!˕gvim80/syntax/cvsrc.vimnu[" Vim syntax file " Language: cvs(1) RC file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn region cvsrcString display oneline start=+"+ skip=+\\\\\|\\\\"+ end=+"+ syn region cvsrcString display oneline start=+'+ skip=+\\\\\|\\\\'+ end=+'+ syn match cvsrcNumber display '\<\d\+\>' syn match cvsrcBegin display '^' nextgroup=cvsrcCommand skipwhite syn region cvsrcCommand contained transparent matchgroup=cvsrcCommand \ start='add\|admin\|checkout\|commit\|cvs\|diff' \ start='export\|history\|import\|init\|log' \ start='rdiff\|release\|remove\|rtag\|status\|tag' \ start='update' \ end='$' \ contains=cvsrcOption,cvsrcString,cvsrcNumber \ keepend syn match cvsrcOption contained display '-\a\+' hi def link cvsrcString String hi def link cvsrcNumber Number hi def link cvsrcCommand Keyword hi def link cvsrcOption Identifier let b:current_syntax = "cvsrc" let &cpo = s:cpo_save unlet s:cpo_save PK!;iu u vim80/syntax/proto.vimnu[" syntax file for Protocol Buffers - Google's data interchange format " " Copyright 2008 Google Inc. All rights reserved. " " Permission is hereby granted, free of charge, to any person obtaining a copy " of this software and associated documentation files (the "Software"), to deal " in the Software without restriction, including without limitation the rights " to use, copy, modify, merge, publish, distribute, sublicense, and/or sell " copies of the Software, and to permit persons to whom the Software is " furnished to do so, subject to the following conditions: " " The above copyright notice and this permission notice shall be included in " all copies or substantial portions of the Software. " " THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR " IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, " FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE " AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER " LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, " OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN " THE SOFTWARE. " " http://code.google.com/p/protobuf/ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case match syn keyword protoTodo contained TODO FIXME XXX syn cluster protoCommentGrp contains=protoTodo syn keyword protoSyntax syntax import option syn keyword protoStructure package message group syn keyword protoRepeat optional required repeated syn keyword protoDefault default syn keyword protoExtend extend extensions to max syn keyword protoRPC service rpc returns syn keyword protoType int32 int64 uint32 uint64 sint32 sint64 syn keyword protoType fixed32 fixed64 sfixed32 sfixed64 syn keyword protoType float double bool string bytes syn keyword protoTypedef enum syn keyword protoBool true false syn match protoInt /-\?\<\d\+\>/ syn match protoInt /\<0[xX]\x+\>/ syn match protoFloat /\<-\?\d*\(\.\d*\)\?/ syn region protoComment start="\/\*" end="\*\/" contains=@protoCommentGrp syn region protoComment start="//" skip="\\$" end="$" keepend contains=@protoCommentGrp syn region protoString start=/"/ skip=/\\./ end=/"/ syn region protoString start=/'/ skip=/\\./ end=/'/ hi def link protoTodo Todo hi def link protoSyntax Include hi def link protoStructure Structure hi def link protoRepeat Repeat hi def link protoDefault Keyword hi def link protoExtend Keyword hi def link protoRPC Keyword hi def link protoType Type hi def link protoTypedef Typedef hi def link protoBool Boolean hi def link protoInt Number hi def link protoFloat Float hi def link protoComment Comment hi def link protoString String let b:current_syntax = "proto" PK! g}}vim80/syntax/arch.vimnu[" Vim syntax file " Language: GNU Arch inventory file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2007-06-17 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword+=- syn keyword archTodo TODO FIXME XXX NOTE syn region archComment display start='^\%(#\|\s\)' end='$' \ contains=archTodo,@Spell syn match archBegin display '^' nextgroup=archKeyword,archComment syn keyword archKeyword contained implicit tagline explicit names syn keyword archKeyword contained untagged-source \ nextgroup=archTMethod skipwhite syn keyword archKeyword contained exclude junk backup precious unrecognized \ source nextgroup=archRegex skipwhite syn keyword archTMethod contained source precious backup junk unrecognized syn match archRegex contained '\s*\zs.*' hi def link archTodo Todo hi def link archComment Comment hi def link archKeyword Keyword hi def link archTMethod Type hi def link archRegex String let b:current_syntax = "arch" let &cpo = s:cpo_save unlet s:cpo_save PK!X1$$vim80/syntax/moo.vimnu[" Vim syntax file " Language: MOO " Maintainer: Timo Frenay " Last Change: 2001 Oct 06 " Note: Requires Vim 6.0 or above " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Initializations syn case ignore " C-style comments syn match mooUncommentedError display ~\*/~ syn match mooCStyleCommentError display ~/\ze\*~ contained syn region mooCStyleComment matchgroup=mooComment start=~/\*~ end=~\*/~ contains=mooCStyleCommentError " Statements if exists("moo_extended_cstyle_comments") syn match mooIdentifier display ~\%(\%(/\*.\{-}\*/\s*\)*\)\@>\<\h\w*\>~ contained transparent contains=mooCStyleComment,@mooKeyword,mooType,mooVariable else syn match mooIdentifier display ~\<\h\w*\>~ contained transparent contains=@mooKeyword,mooType,mooVariable endif syn keyword mooStatement break continue else elseif endfor endfork endif endtry endwhile finally for if try syn keyword mooStatement except fork while nextgroup=mooIdentifier skipwhite syn keyword mooStatement return nextgroup=mooString skipwhite " Operators syn keyword mooOperatorIn in " Error constants syn keyword mooAny ANY syn keyword mooErrorConstant E_ARGS E_INVARG E_DIV E_FLOAT E_INVIND E_MAXREC E_NACC E_NONE E_PERM E_PROPNF E_QUOTA E_RANGE E_RECMOVE E_TYPE E_VARNF E_VERBNF " Builtin variables syn match mooType display ~\<\%(ERR\|FLOAT\|INT\|LIST\|NUM\|OBJ\|STR\)\>~ syn match mooVariable display ~\<\%(args\%(tr\)\=\|caller\|dobj\%(str\)\=\|iobj\%(str\)\=\|player\|prepstr\|this\|verb\)\>~ " Strings syn match mooStringError display ~[^\t -[\]-~]~ contained syn match mooStringSpecialChar display ~\\["\\]~ contained if !exists("moo_no_regexp") " Regular expressions syn match mooRegexp display ~%%~ contained containedin=mooString,mooRegexpParentheses transparent contains=NONE syn region mooRegexpParentheses display matchgroup=mooRegexpOr start=~%(~ skip=~%%~ end=~%)~ contained containedin=mooString,mooRegexpParentheses transparent oneline syn match mooRegexpOr display ~%|~ contained containedin=mooString,mooRegexpParentheses endif if !exists("moo_no_pronoun_sub") " Pronoun substitutions syn match mooPronounSub display ~%%~ contained containedin=mooString transparent contains=NONE syn match mooPronounSub display ~%[#dilnopqrst]~ contained containedin=mooString syn match mooPronounSub display ~%\[#[dilnt]\]~ contained containedin=mooString syn match mooPronounSub display ~%(\h\w*)~ contained containedin=mooString syn match mooPronounSub display ~%\[[dilnt]\h\w*\]~ contained containedin=mooString syn match mooPronounSub display ~%<\%([dilnt]:\)\=\a\+>~ contained containedin=mooString endif if exists("moo_unmatched_quotes") syn region mooString matchgroup=mooStringError start=~"~ end=~$~ contains=@mooStringContents keepend syn region mooString start=~"~ skip=~\\.~ end=~"~ contains=@mooStringContents oneline keepend else syn region mooString start=~"~ skip=~\\.~ end=~"\|$~ contains=@mooStringContents keepend endif " Numbers and object numbers syn match mooNumber display ~\%(\%(\<\d\+\)\=\.\d\+\|\<\d\+\)\%(e[+\-]\=\d\+\)\=\>~ syn match mooObject display ~#-\=\d\+\>~ " Properties and verbs if exists("moo_builtin_properties") "Builtin properties syn keyword mooBuiltinProperty contents f location name owner programmer r w wizard contained containedin=mooPropRef endif if exists("moo_extended_cstyle_comments") syn match mooPropRef display ~\.\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\h\w*\>~ transparent contains=mooCStyleComment,@mooKeyword syn match mooVerbRef display ~:\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\h\w*\>~ transparent contains=mooCStyleComment,@mooKeyword else syn match mooPropRef display ~\.\s*\h\w*\>~ transparent contains=@mooKeyword syn match mooVerbRef display ~:\s*\h\w*\>~ transparent contains=@mooKeyword endif " Builtin functions, core properties and core verbs if exists("moo_extended_cstyle_comments") syn match mooBuiltinFunction display ~\<\h\w*\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\ze(~ contains=mooCStyleComment syn match mooCorePropOrVerb display ~\$\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\%(in\>\)\@!\h\w*\>~ contains=mooCStyleComment,@mooKeyword else syn match mooBuiltinFunction display ~\<\h\w*\s*\ze(~ contains=NONE syn match mooCorePropOrVerb display ~\$\s*\%(in\>\)\@!\h\w*\>~ contains=@mooKeyword endif if exists("moo_unknown_builtin_functions") syn match mooUnknownBuiltinFunction ~\<\h\w*\>~ contained containedin=mooBuiltinFunction contains=mooKnownBuiltinFunction " Known builtin functions as of version 1.8.1 of the server " Add your own extensions to this group if you like syn keyword mooKnownBuiltinFunction abs acos add_property add_verb asin atan binary_hash boot_player buffered_output_length callers caller_perms call_function ceil children chparent clear_property connected_players connected_seconds connection_name connection_option connection_options cos cosh create crypt ctime db_disk_size decode_binary delete_property delete_verb disassemble dump_database encode_binary equal eval exp floatstr floor flush_input force_input function_info idle_seconds index is_clear_property is_member is_player kill_task length listappend listdelete listen listeners listinsert listset log log10 match max max_object memory_usage min move notify object_bytes open_network_connection output_delimiters parent pass players properties property_info queued_tasks queue_info raise random read recycle renumber reset_max_object resume rindex rmatch seconds_left server_log server_version setadd setremove set_connection_option set_player_flag set_property_info set_task_perms set_verb_args set_verb_code set_verb_info shutdown sin sinh sqrt strcmp string_hash strsub substitute suspend tan tanh task_id task_stack ticks_left time tofloat toint toliteral tonum toobj tostr trunc typeof unlisten valid value_bytes value_hash verbs verb_args verb_code verb_info contained endif "Enclosed expressions syn match mooUnenclosedError display ~[')\]|}]~ syn match mooParenthesesError display ~[';\]|}]~ contained syn region mooParentheses start=~(~ end=~)~ transparent contains=@mooEnclosedContents,mooParenthesesError syn match mooBracketsError display ~[');|}]~ contained syn region mooBrackets start=~\[~ end=~\]~ transparent contains=@mooEnclosedContents,mooBracketsError syn match mooBracesError display ~[');\]|]~ contained syn region mooBraces start=~{~ end=~}~ transparent contains=@mooEnclosedContents,mooBracesError syn match mooQuestionError display ~[');\]}]~ contained syn region mooQuestion start=~?~ end=~|~ transparent contains=@mooEnclosedContents,mooQuestionError syn match mooCatchError display ~[);\]|}]~ contained syn region mooCatch matchgroup=mooExclamation start=~`~ end=~'~ transparent contains=@mooEnclosedContents,mooCatchError,mooExclamation if exists("moo_extended_cstyle_comments") syn match mooExclamation display ~[\t !%&(*+,\-/<=>?@[^`{|]\@!=\@!~ contained contains=mooCStyleComment else syn match mooExclamation display ~[\t !%&(*+,\-/<=>?@[^`{|]\@?@^|]\@?~ transparent contains=mooCStyleComment else syn match mooScattering ~[,{]\@<=\s*?~ transparent contains=NONE endif " Clusters syn cluster mooKeyword contains=mooStatement,mooOperatorIn,mooAny,mooErrorConstant syn cluster mooStringContents contains=mooStringError,mooStringSpecialChar syn cluster mooEnclosedContents contains=TOP,mooUnenclosedError,mooComment,mooNonCode " Define the default highlighting. hi def link mooUncommentedError Error hi def link mooCStyleCommentError Error hi def link mooCStyleComment Comment hi def link mooStatement Statement hi def link mooOperatorIn Operator hi def link mooAny Constant " link this to Keyword if you want hi def link mooErrorConstant Constant hi def link mooType Type hi def link mooVariable Type hi def link mooStringError Error hi def link mooStringSpecialChar SpecialChar hi def link mooRegexpOr SpecialChar hi def link mooPronounSub SpecialChar hi def link mooString String hi def link mooNumber Number hi def link mooObject Number hi def link mooBuiltinProperty Type hi def link mooBuiltinFunction Function hi def link mooUnknownBuiltinFunction Error hi def link mooKnownBuiltinFunction Function hi def link mooCorePropOrVerb Identifier hi def link mooUnenclosedError Error hi def link mooParenthesesError Error hi def link mooBracketsError Error hi def link mooBracesError Error hi def link mooQuestionError Error hi def link mooCatchError Error hi def link mooExclamation Exception hi def link mooComment Comment hi def link mooNonCode PreProc let b:current_syntax = "moo" " vim: ts=8 PK!l l vim80/syntax/dracula.vimnu[" Vim syntax file " Language: Dracula " Maintainer: Scott Bordelon " Last change: Wed Apr 25 18:50:01 PDT 2001 " Extensions: drac.*,*.drac,*.drc,*.lvs,*.lpe " Comment: Dracula is an industry-standard language created by CADENCE (a " company specializing in Electronics Design Automation), for " the purposes of Design Rule Checking, Layout vs. Schematic " verification, and Layout Parameter Extraction. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Ignore case syn case ignore " A bunch of useful Dracula keywords "syn match draculaIdentifier syn keyword draculaStatement indisk primary outdisk printfile system syn keyword draculaStatement mode scale resolution listerror keepdata syn keyword draculaStatement datatype by lt gt output label range touch syn keyword draculaStatement inside outside within overlap outlib syn keyword draculaStatement schematic model unit parset syn match draculaStatement "flag-\(non45\|acuteangle\|offgrid\)" syn match draculaStatement "text-pri-only" syn match draculaStatement "[=&]" syn match draculaStatement "\[[^,]*\]" syn match draculastatement "^ *\(sel\|width\|ext\|enc\|area\|shrink\|grow\|length\)" syn match draculastatement "^ *\(or\|not\|and\|select\|size\|connect\|sconnect\|int\)" syn match draculastatement "^ *\(softchk\|stamp\|element\|parasitic cap\|attribute cap\)" syn match draculastatement "^ *\(flagnon45\|lextract\|equation\|lpeselect\|lpechk\|attach\)" syn match draculaStatement "\(temporary\|connect\)-layer" syn match draculaStatement "program-dir" syn match draculaStatement "status-command" syn match draculaStatement "batch-queue" syn match draculaStatement "cnames-csen" syn match draculaStatement "filter-lay-opt" syn match draculaStatement "filter-sch-opt" syn match draculaStatement "power-node" syn match draculaStatement "ground-node" syn match draculaStatement "subckt-name" syn match draculaType "\*description" syn match draculaType "\*input-layer" syn match draculaType "\*operation" syn match draculaType "\*end" syn match draculaComment ";.*" syn match draculaPreProc "^#.*" "Modify the following as needed. The trade-off is performance versus "functionality. syn sync lines=50 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link draculaIdentifier Identifier hi def link draculaStatement Statement hi def link draculaType Type hi def link draculaComment Comment hi def link draculaPreProc PreProc let b:current_syntax = "dracula" " vim: ts=8 PK!./*%%vim80/syntax/hostsaccess.vimnu[" Vim syntax file " Language: hosts.deny, hosts.allow configuration files " Maintainer: Thilo Six " Last Change: 2011 May 01 " Derived From: conf.vim " Credits: Bram Moolenaar " " This file is there to get at least a minimal highlighting. " A later version may be improved. " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") finish endif " For a starter we just use conf.vim for highlighting runtime! syntax/conf.vim unlet b:current_syntax let b:current_syntax = "hostsaccess" " vim: ts=8 sw=2 PK! BL`vim80/syntax/gdb.vimnu[" Vim syntax file " Language: GDB command files " Maintainer: Claudio Fleiner " URL: http://www.fleiner.com/vim/syntax/gdb.vim " Last Change: 2012 Oct 05 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword gdbInfo contained address architecture args breakpoints catch common copying dcache syn keyword gdbInfo contained display files float frame functions handle line syn keyword gdbInfo contained locals program registers scope set sharedlibrary signals syn keyword gdbInfo contained source sources stack symbol target terminal threads syn keyword gdbInfo contained syn keyword tracepoints types udot variables warranty watchpoints syn match gdbInfo contained "all-registers" syn keyword gdbStatement contained actions apply attach awatch backtrace break bt call catch cd clear collect commands syn keyword gdbStatement contained complete condition continue delete detach directory disable disassemble display down syn keyword gdbStatement contained echo else enable end file finish frame handle hbreak help if ignore syn keyword gdbStatement contained inspect jump kill list load maintenance make next nexti ni output overlay syn keyword gdbStatement contained passcount path print printf ptype pwd quit rbreak remote return run rwatch syn keyword gdbStatement contained search section set sharedlibrary shell show si signal source step stepi stepping syn keyword gdbStatement contained stop target tbreak tdump tfind thbreak thread tp trace tstart tstatus tstop syn keyword gdbStatement contained tty undisplay unset until up watch whatis where while ws x syn match gdbFuncDef "\.*" syn match gdbStatmentContainer "^\s*\S\+" contains=gdbStatement,gdbFuncDef syn match gdbStatement "^\s*info" nextgroup=gdbInfo skipwhite skipempty " some commonly used abbreviations syn keyword gdbStatement c disp undisp disas p syn region gdbDocument matchgroup=gdbFuncDef start="\.*$" matchgroup=gdbFuncDef end="^end\s*$" syn match gdbStatement "\" syn match gdbStatement "\" syn match gdbStatement "\" syn match gdbStatement "\" syn match gdbStatement "\" syn match gdbStatement "\" syn match gdbStatement "\" syn match gdbStatement "\" syn match gdbStatement "\" syn match gdbStatement "\" syn match gdbStatement "\" syn match gdbStatement "\" syn match gdbStatement "\" syn keyword gdbSet annotate architecture args check complaints confirm editing endian syn keyword gdbSet environment gnutarget height history language listsize print prompt syn keyword gdbSet radix remotebaud remotebreak remotecache remotedebug remotedevice remotelogbase syn keyword gdbSet remotelogfile remotetimeout remotewritesize targetdebug variable verbose syn keyword gdbSet watchdog width write syn match gdbSet "\" syn match gdbSet "\" syn match gdbSet "\" syn match gdbSet "\" syn match gdbSet "\" syn match gdbSet "\" syn match gdbSet "\" syn match gdbSet "\" syn match gdbComment "^\s*#.*" contains=@Spell syn match gdbVariable "\$\K\k*" " Strings and constants syn region gdbString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell syn match gdbCharacter "'[^']*'" contains=gdbSpecialChar,gdbSpecialCharError syn match gdbCharacter "'\\''" contains=gdbSpecialChar syn match gdbCharacter "'[^\\]'" syn match gdbNumber "\<[0-9_]\+\>" syn match gdbNumber "\<0x[0-9a-fA-F_]\+\>" if !exists("gdb_minlines") let gdb_minlines = 10 endif exec "syn sync ccomment gdbComment minlines=" . gdb_minlines " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link gdbFuncDef Function hi def link gdbComment Comment hi def link gdbStatement Statement hi def link gdbString String hi def link gdbCharacter Character hi def link gdbVariable Identifier hi def link gdbSet Constant hi def link gdbInfo Type hi def link gdbDocument Special hi def link gdbNumber Number let b:current_syntax = "gdb" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!MAI^I^vim80/syntax/aml.vimnu[" Vim syntax file " Language: AML (ARC/INFO Arc Macro Language) " Written By: Nikki Knuit " Maintainer: Todd Glover " Last Change: 2001 May 10 " FUTURE CODING: Bold application commands after &sys, &tty " Only highlight aml Functions at the beginning " of [], in order to avoid -read highlighted, " or [quote] strings highlighted " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " ARC, ARCEDIT, ARCPLOT, LIBRARIAN, GRID, SCHEMAEDIT reserved words, " defined as keywords. syn keyword amlArcCmd contained 2button abb abb[reviations] abs ac acos acosh add addc[ogoatt] addcogoatt addf[eatureclass] addh[istory] addi addim[age] addindexatt addit[em] additem addressb[uild] addressc[reate] addresse[rrors] addressedit addressm[atch] addressp[arse] addresst[est] addro[utemeasure] addroutemeasure addte[xt] addto[stack] addw[orktable] addx[y] adj[ust] adm[inlicense] adr[ggrid] ads adsa[rc] ae af ag[gregate] ai ai[request] airequest al alia[s] alig[n] alt[erarchive] am[sarc] and annoa[lignment] annoadd annocapture annocl[ip] annoco[verage] annocurve annoe[dit] annoedit annof annofeature annofit annoitem annola[yer] annole[vel] annolevel annoline annooffset annop[osition] annoplace annos[ize] annoselectfeatur annoset annosum annosymbol annot annot[ext] annotext annotype ao ap apm[ode] app[end] arc arcad[s] arcar[rows] arcc[ogo] arcdf[ad] arcdi[me] arcdl[g] arcdx[f] arced[it] arcedit arcen[dtext] arcf[ont] arcigd[s] arcige[s] arcla[bel] arcli[nes] arcma[rkers] arcmo[ss] syn keyword amlArcCmd contained arcpl[ot] arcplot arcpo[int] arcr[oute] arcs arcsc[itex] arcse[ction] arcsh[ape] arcsl[f] arcsn[ap] arcsp[ot] arcte[xt] arctig[er] arctin arcto[ols] arctools arcty[pe] area areaq[uery] arm arrow arrows[ize] arrowt[ype] as asc asciig[rid] asciih[elp] asciihelp asco[nnect] asconnect asd asda[tabase] asdi[sconnect] asdisconnect asel[ect] asex[ecute] asf asin asinh asp[ect] asr[eadlocks] ast[race] at atan atan2 atanh atusage aud[ittrail] autoi[ncrement] autol[ink] axis axish[atch] axisl[abels] axisr[uler] axist[ext] bac[klocksymbol] backcoverage backenvironment backnodeangleite backsymbolitem backtextitem base[select] basi[n] bat[ch] bc be be[lls] blackout blockmaj[ority] blockmax blockmea[n] blockmed[ian] blockmin blockmino[rity] blockr[ange] blockst[d] blocksu[m] blockv[ariety] bnai bou[ndaryclean] box br[ief] bsi bti buf[fer] bug[form] bugform build builds[ta] buildv[at] calco[mp] calcomp calcu[late] cali[brateroutes] calibrateroutes can[d] cartr[ead] cartread syn keyword amlArcCmd contained cartw[rite] cartwrite cei[l] cel[lvalue] cen[troidlabels] cgm cgme[scape] cha[nge] checkin checkinrel checkout checkoutrel chm[od] chown chownt[ransaction] chowntran chowntransaction ci ci[rcle] cir class classp[rob] classs[ig] classsample clean clear clears[elect] clip clipg[raphextent] clipm[apextent] clo[sedatabase] cntvrt co cod[efind] cog[oinverse] cogocom cogoenv cogomenu coll[ocate] color color2b[lue] color2g[reen] color2h[ue] color2r[ed] color2s[at] color2v[al] colorchart coloredit colorh[cbs] colorhcbs colu[mns] comb[ine] comm[ands] commands con connect connectu[ser] cons[ist] conto[ur] contr[olpoints] convertd[oc] convertdoc converti[mage] convertla[yer] convertli[brary] convertr[emap] convertw[orkspace] coo[rdinate] coordinate coordinates copy copyf[eatures] copyi[nfo] copyl[ayer] copyo copyo[ut] copyout copys[tack] copyw[orkspace] copyworkspace cor corr[idor] correlation cos cosh costa[llocation] costb[acklink] costd[istance] costp[ath] cou[ntvertices] syn keyword amlArcCmd contained countvertices cpw cr create create2[dindex] createa[ttributes] createca[talog] createco[go] createcogo createf[eature] createind[ex] createinf[otable] createlab[els] createlay[er] createli[brary] createn[etindex] creater[emap] creates[ystables] createta[blespace] createti[n] createw[orkspace] createworkspace cs culdesac curs[or] curv[ature] curve3pt cut[fill] cutoff cw cx[or] da dar[cyflow] dat[aset] dba[seinfo] dbmsc dbmsc[ursor] dbmscursor dbmse[xecute] dbmsi[nfo] dbmss[et] de delete deletea[rrows] deletet[ic] deletew[orkspace] deleteworkspace demg[rid] deml[attice] dend[rogram] densify densifya[rc] describe describea[rchive] describel[attice] describeti[n] describetr[ans] describetrans dev df[adarc] dg dif[f] digi[tizer] digt[est] dim[earc] dir dir[ectory] directory disa[blepanzoom] disconnect disconnectu[ser] disp disp[lay] display dissolve dissolvee[vents] dissolveevents dista[nce] distr[ibutebuild] div dl[garc] do doce[ll] docu[ment] document dogroup drag syn keyword amlArcCmd contained draw drawenvironment draworder draws[ig] drawselect drawt[raverses] drawz[oneshape] drop2[dindex] dropa[rchive] dropfeaturec[lass] dropfeatures dropfr[omstack] dropgroup droph[istory] dropind[ex] dropinf[otable] dropit[em] dropla[yer] droplib[rary] droplin[e] dropline dropn[etindex] dropt[ablespace] dropw[orktable] ds dt[edgrid] dtrans du[plicate] duplicatearcs dw dxf dxfa[rc] dxfi[nfo] dynamicpan dynpan ebe ec ed edg[esnap] edgematch editboundaryerro edit[coverage] editdistance editf editfeature editp[lot] editplot edits[ig] editsymbol ef el[iminate] em[f] en[d] envrst envsav ep[s] eq equ[alto] er[ase] es et et[akarc] euca[llocation] eucdir[ection] eucdis[tance] eval eventa[rc] evente[nds] eventh[atch] eventi[nfo] eventlinee[ndtext] eventlines eventlinet[ext] eventlis[t] eventma[rkers] eventme[nu] eventmenu eventpoint eventpointt[ext] eventse[ction] eventso[urce] eventt[ransform] eventtransform exi[t] exp exp1[0] exp2 expa[nd] expo[rt] exten[d] external externala[ll] syn keyword amlArcCmd contained fd[convert] featuregroup fg fie[lddata] file fill filt[er] fix[ownership] flip flipa[ngle] float floatg[rid] floo[r] flowa[ccumulation] flowd[irection] flowl[ength] fm[od] focalf[low] focalmaj[ority] focalmax focalmea[n] focalmed[ian] focalmin focalmino[rity] focalr[ange] focalst[d] focalsu[m] focalv[ariety] fonta[rc] fontco[py] fontcr[eate] fontd[elete] fontdump fontl[oad] fontload forc[e] form[edit] formedit forms fr[equency] ge geary general[ize] generat[e] gerbera[rc] gerberr[ead] gerberread gerberw[rite] gerberwrite get getz[factor] gi gi[rasarc] gnds grai[n] graphb[ar] graphe[xtent] graphi[cs] graphicimage graphicview graphlim[its] graphlin[e] graphp[oint] graphs[hade] gray[shade] gre[aterthan] grid grida[scii] gridcl[ip] gridclip gridco[mposite] griddesk[ew] griddesp[eckle] griddi[rection] gride[dit] gridfli[p] gridflo[at] gridim[age] gridin[sert] gridl[ine] gridma[jority] gridmi[rror] gridmo[ss] gridn[et] gridnodatasymbol gridpa[int] gridpoi[nt] gridpol[y] syn keyword amlArcCmd contained gridq[uery] gridr[otate] gridshad[es] gridshap[e] gridshi[ft] gridw[arp] group groupb[y] gt gv gv[tolerance] ha[rdcopy] he[lp] help hid[densymbol] hig[hlow] hil[lshade] his[togram] historicalview ho[ldadjust] hpgl hpgl2 hsv2b[lue] hsv2g[reen] hsv2r[ed] ht[ml] hview ia ided[it] identif[y] identit[y] idw if igdsa[rc] igdsi[nfo] ige[sarc] il[lustrator] illustrator image imageg[rid] imagep[lot] imageplot imageview imp[ort] in index indexi[tem] info infodba[se] infodbm[s] infof[ile] init90[00] init9100 init9100b init91[00] init95[00] int intersect intersectarcs intersecte[rr] isn[ull] iso[cluster] it[ems] iview j[oinitem] join keeps keepselect keyan[gle] keyar[ea] keyb[ox] keyf[orms] keyl[ine] keym keym[arker] keymap keyp[osition] keyse[paration] keysh[ade] keyspot kill killm[ap] kr[iging] la labela[ngle] labele[rrors] labelm[arkers] labels labelsc[ale] labelsp[ot] labelt[ext] lal latticecl[ip] latticeco[ntour] latticed[em] latticem[erge] latticemarkers latticeo[perate] syn keyword amlArcCmd contained latticep[oly] latticerep[lace] latticeres[ample] lattices[pot] latticet[in] latticetext layer layera[nno] layerca[lculate] layerco[lumns] layerde[lete] layerdo[ts] layerdr[aw] layere[xport] layerf[ilter] layerid[entify] layerim[port] layerio[mode] layerli[st] layerloc[k] layerlog[file] layerq[uery] layerse[arch] layersp[ot] layert[ext] lc ldbmst le leadera[rrows] leaders leadersy[mbol] leadert[olerance] len[gth] les[sthan] lf lg lh li lib librari[an] library limitadjust limitautolink line line2pt linea[djustment] linecl[osureangle] linecolor linecolorr[amp] linecopy linecopyl[ayer] linedelete linedeletel[ayer] lineden[sity] linedir[ection] linedis[t] lineedit lineg[rid] lineh[ollow] lineinf[o] lineint[erval] linel[ayer] linelist linem[iterangle] lineo[ffset] linepa[ttern] linepe[n] linepu[t] linesa[ve] linesc[ale] linese[t] linesi[ze] linest[ats] linesy[mbol] linete[mplate] syn keyword amlArcCmd contained linety[pe] link[s] linkfeatures list listarchives listatt listc[overages] listcoverages listdbmstables listg[rids] listgrids listhistory listi[mages] listimages listinfotables listlayers listlibraries listo[utput] listse[lect] listst[acks] liststacks listtablespaces listti[ns] listtins listtr[averses] listtran listtransactions listw[orkspaces] listworkspaces lit ll ll[sfit] lla lm ln load loada[djacent] loadcolormap locko[nly] locks[ymbol] log log1[0] log2 logf[ile] logg[ing] loo[kup] lot[area] lp[os] lstk lt lts lw madditem majority majorityf[ilter] makere[gion] makero[ute] makese[ction] makest[ack] mal[ign] map mapa[ngle] mape[xtent] mapextent mapi[nfo] mapj[oin] mapl[imits] mappo[sition] mappr[ojection] mapsc[ale] mapsh[ift] mapu[nits] mapw[arp] mapz[oom] marker markera[ngle] markercolor markercolorr[amp] markercopy markercopyl[ayer] markerdelete markerdeletel[aye] markeredit markerf[ont] markeri[nfo] markerl[ayer] markerlist markerm[ask] markero[ffset] syn keyword amlArcCmd contained markerpa[ttern] markerpe[n] markerpu[t] markersa[ve] markersc[ale] markerse[t] markersi[ze] markersy[mbol] mas[elect] matchc[over] matchn[ode] max mb[egin] mc[opy] md[elete] me mean measure measurer[oute] measureroute med mend menu[cover] menuedit menv[ironment] merge mergeh[istory] mergev[at] mfi[t] mfr[esh] mg[roup] miadsa[rc] miadsr[ead] miadsread min minf[o] mino[rity] mir[ror] mitems mjoin ml[classify] mma[sk] mmo[ve] mn[select] mod mor[der] moran mosa[ic] mossa[rc] mossg[rid] move movee[nd] movei[tem] mp[osition] mr mr[otate] msc[ale] mse[lect] mselect mt[olerance] mu[nselect] multcurve multinv multipleadditem multipleitems multiplejoin multipleselect multprop mw[ho] nai ne near neatline neatlineg[rid] neatlineh[atch] neatlinel[abels] neatlinet[ics] new next ni[bble] nodeangleitem nodec[olor] nodee[rrors] nodem[arkers] nodep[oint] nodes nodesi[ze] nodesn[ap] nodesp[ot] nodet[ext] nor[mal] not ns[elect] oe ogrid ogridt[ool] oldwindow oo[ps] op[endatabase] or syn keyword amlArcCmd contained osymbol over overflow overflowa[rea] overflowp[osition] overflows[eparati] overl[ayevents] overlapsymbol overlayevents overp[ost] pagee[xtent] pages[ize] pageu[nits] pal[info] pan panview par[ticletrack] patc[h] path[distance] pe[nsize] pi[ck] pli[st] plot plotcopy plotg[erber] ploti[con] plotmany plotpanel plotsc[itex] plotsi[f] pointde[nsity] pointdist pointdista[nce] pointdo[ts] pointg[rid] pointi[nterp] pointm[arkers] pointn[ode] points pointsp[ot] pointst[ats] pointt[ext] polygonb[ordertex] polygond[ots] polygone[vents] polygonevents polygonl[ines] polygons polygonsh[ades] polygonsi[zelimit] polygonsp[ot] polygont[ext] polygr[id] polyr[egion] pop[ularity] por[ouspuff] pos pos[tscript] positions postscript pow prec[ision] prep[are] princ[omp] print product producti[nfo] project projectcom[pare] projectcop[y] projectd[efine] pul[litems] pur[gehistory] put pv q q[uit] quit rand rang[e] rank rb rc re readg[raphic] reads[elect] reb[ox] recl[ass] recoverdb rect[ify] syn keyword amlArcCmd contained red[o] refreshview regionb[uffer] regioncla[ss] regioncle[an] regiondi[ssolve] regiondo[ts] regione[rrors] regiong[roup] regionj[oin] regionl[ines] regionpoly regionpolyc[ount] regionpolycount regionpolyl[ist] regionpolylist regionq[uery] regions regionse[lect] regionsh[ades] regionsp[ot] regiont[ext] regionxa[rea] regionxarea regionxt[ab] regionxtab register registerd[bms] regr[ession] reindex rej[ects] rela[te] rele[ase] rem remapgrid reme[asure] remo[vescalar] remove removeback removecover removeedit removesnap removetransfer rename renamew[orkspace] renameworkspace reno[de] rep[lace] reposition resa[mple] resel[ect] reset resh[ape] restore restorearce[dit] restorearch[ive] resu[me] rgb2h[ue] rgb2s[at] rgb2v[al] rotate rotatep[lot] routea[rc] routeends routeendt[ext] routeer[rors] routeev[entspot] routeh[atch] routel[ines] routes routesp[ot] routest[ats] routet[ext] rp rs rt rt[l] rtl rv rw sa sai sample samples[ig] sav[e] savecolormap sc scal[ar] scat[tergram] syn keyword amlArcCmd contained scenefog sceneformat scenehaze sceneoversample sceneroll scenesave scenesize scenesky scitexl[ine] scitexpoi[nt] scitexpol[y] scitexr[ead] scitexread scitexw[rite] scitexwrite sco screenr[estore] screens[ave] sd sds sdtse[xport] sdtsim[port] sdtsin[fo] sdtsl[ist] se sea[rchtolerance] sectiona[rc] sectionends sectionendt[ext] sectionh[atch] sectionl[ines] sections sectionsn[ap] sectionsp[ot] sectiont[ext] sel select selectb[ox] selectc[ircle] selectg[et] selectm[ask] selectmode selectpoi[nt] selectpol[ygon] selectpu[t] selectt[ype] selectw[ithin] semivariogram sep[arator] separator ser[verstatus] setan[gle] setar[row] setce[ll] setcoa[lesce] setcon[nectinfo] setd[bmscheckin] setdrawsymbol sete[ditmode] setincrement setm[ask] setn[ull] setools setreference setsymbol setturn setw[indow] sext sf sfmt sfo sha shade shadea[ngle] shadeb[ackcolor] shadecolor shadecolorr[amp] shadecopy shadecopyl[ayer] shadedelete shadedeletel[ayer] shadeedit shadegrid shadei[nfo] shadela[yer] syn keyword amlArcCmd contained shadeli[nepattern] shadelist shadeo[ffset] shadepa[ttern] shadepe[n] shadepu[t] shadesa[ve] shadesc[ale] shadesep[aration] shadeset shadesi[ze] shadesy[mbol] shadet[ype] shapea[rc] shapef[ile] shapeg[rid] shi[ft] show showconstants showe[ditmode] shr[ink] si sin sinfo sing[leuser] sinh sink sit[e] sl slf[arc] sli[ce] slo[pe] sm smartanno snap snapc[over] snapcover snapcoverage snapenvironment snapfeatures snapitems snapo[rder] snappi[ng] snappo[ur] so[rt] sobs sos spi[der] spiraltrans spline splinem[ethod] split spot spoto[ffset] spots[ize] sproj sqr sqrt sra sre srl ss ssc ssh ssi ssky ssz sta stackh[istogram] stackprofile stacksc[attergram] stackshade stackst[ats] stati[stics] statu[s] statuscogo std stra[ighten] streamline streamlink streamo[rder] stri[pmap] subm[it] subs[elect] sum surface surfaceabbrev surfacecontours surfacedefaults surfacedrape surfaceextent surfaceinfo surfacel[ength] surfacelimits surfacemarker surfacemenu surfaceobserver surfaceprofile syn keyword amlArcCmd contained surfaceprojectio surfacerange surfaceresolutio surfacesave surfacescene surfaceshade surfacesighting surfacetarget surfacevalue surfaceviewfield surfaceviewshed surfacevisibility surfacexsection surfacezoom surfacezscale sv svfd svs sxs symboldump symboli[tem] symbolsa[ve] symbolsc[ale] symbolse[t] symbolset sz tab[les] tal[ly] tan tanh tc te tes[t] text textal[ignment] textan[gle] textcolor textcolorr[amp] textcop[y] textde[lete] textdi[rection] textedit textfil[e] textfit textfo[nt] textin[fo] textit[em] textj[ustificatio] textlist textm[ask] texto[ffset] textpe[n] textpr[ecision] textpu[t] textq[uality] textsa[ve] textsc[ale] textse[t] textset textsi[ze] textsl[ant] textspa[cing] textspl[ine] textst[yle] textsy[mbol] tf th thie[ssen] thin ti tics tict[ext] tigera[rc] tigert[ool] tigertool til[es] timped tin tina[rc] tinc[ontour] tinerrors tinhull tinl[attice] tinlines tinmarkers tins[pot] tinshades tintext tinv[rml] tl tm tol[erance] top[ogrid] topogridtool syn keyword amlArcCmd contained transa[ction] transfe[r] transfercoverage transferfeature transferitems transfersymbol transfo[rm] travrst travsav tre[nd] ts tsy tt tur[ntable] turnimpedance tut[orial] una[ry] unde[lete] undo ungenerate ungeneratet[in] unio[n] unit[s] unr[egisterdbms] unse[lect] unsp[lit] update updatei[nfoschema] updatel[abels] upo[s] us[age] v va[riety] vcgl vcgl2 veri[fy] vers[ion] vertex viewrst viewsav vip visd[ecode] visdecode vise[ncode] visencode visi[bility] vo[lume] vpfe[xport] vpfi[mport] vpfl[ist] vpft[ile] w war[p] wat[ershed] weedd[raw] weedo[perator] weedt[olerance] weedtolerance whe[re] whi[le] who wi[ndows] wm[f] wo[rkspace] workspace writec[andidates] writeg[raphic] writes[elect] wt x[or] ze[ta] zeta zi zo zonala[rea] zonalc[entroid] zonalf[ill] zonalg[eometry] zonalmaj[ority] zonalmax zonalmea[n] zonalmed[ian] zonalmin zonalmino[rity] zonalp[erimeter] zonalr[ange] zonalsta[ts] zonalstd zonalsu[m] zonalt[hickness] zonalv[ariety] zoomview zv " FORMEDIT reserved words, defined as keywords. syn keyword amlFormedCmd contained button choice display help input slider text " TABLES reserved words, defined as keywords. syn keyword amlTabCmd contained add additem alter asciihelp aselect at calc calculate change commands commit copy define directory dropindex dropitem erase external get help indexitem items kill list move nselect purge quit redefine rename reselect rollback save select show sort statistics unload update usagecontained " INFO reserved words, defined as keywords. syn keyword amlInfoCmd contained accept add adir alter dialog alter alt directory aret arithmetic expressions aselect automatic return calculate cchr change options change comi cominput commands list como comoutput compile concatenate controlling defaults copy cursor data delete data entry data manipulate data retrieval data update date format datafile create datafile management decode define delimiter dfmt directory management directory display do doend documentation done end environment erase execute exiting expand export external fc files first format forms control get goto help import input form ipf internal item types items label lchar list logical expressions log merge modify options modify move next nselect output password prif print programming program protect purge query quit recase redefine relate relate release notes remark rename report options reporting report reselect reserved words restrictions run save security select set sleep sort special form spool stop items system variables take terminal types terminal time topics list type update upf " VTRACE reserved words, defined as keywords. syn keyword amlVtrCmd contained add al arcscan arrowlength arrowwidth as aw backtrack branch bt cj clearjunction commands cs dash endofline endofsession eol eos fan fg foreground gap generalizetolerance gtol help hole js junctionsensitivity linesymbol linevariation linewidth ls lv lw markersymbol mode ms raster regionofinterest reset restore retrace roi save searchradius skip sr sta status stc std str straightenangle straightencorner straightendistance straightenrange vt vtrace " The AML reserved words, defined as keywords. syn keyword amlFunction contained abs access acos after angrad asin atan before calc close copy cos cover coverage cvtdistance date delete dignum dir directory entryname exist[s] exp extract file filelist format formatdate full getchar getchoice getcover getdatabase getdeflayers getfile getgrid getimage getitem getlayercols getlibrary getstack getsymbol gettin getunique iacclose iacconnect iacdisconnect iacopen iacrequest index indexed info invangle invdistance iteminfo joinfile keyword length listfile listitem listunique locase log max menu min mod noecho null okangle okdistance open pathname prefix query quote quoteexists r radang random read rename response round scratchname search show sin sort sqrt subst substr suffix tan task token translate trim truncate type unquote upcase username value variable verify write syn keyword amlDir contained abbreviations above all aml amlpath append arc args atool brief by call canvas cc center cl codepage commands conv_watch_to_aml coordinates cr create current cursor cwta dalines data date_format delete delvar describe dfmt digitizer display do doend dv echo else enable encode encrypt end error expansion fail file flushpoints force form format frame fullscreen function getlastpoint getpoint goto iacreturn if ignore info inform key keypad label lc left lf lg list listchar listfiles listglobal listheader listlocal listprogram listvar ll lp lr lv map matrix menu menupath menutype mess message[s] modal mouse nopaging off on others page pause pinaction popup position pt pulldown push pushpoint r repeat return right routine run runwatch rw screen seconds select self setchar severity show sidebar single size staggered station stop stripe sys system tablet tb terminal test then thread to top translate tty ty type uc ul until ur usage w warning watch when while window workspace syn keyword amlDir2 contained delvar dv s set setvar sv syn keyword amlOutput contained inform warning error pause stop tty ty type " AML Directives: syn match amlDirSym "&" syn match amlDirective "&[a-zA-Z]*" contains=amlDir,amlDir2,amlDirSym " AML Functions syn region amlFunc start="\[ *[a-zA-Z]*" end="\]" contains=amlFunction,amlVar syn match amlFunc2 "\[.*\[.*\].*\]" contains=amlFunction,amlVar " Numbers: "syn match amlNumber "-\=\<[0-9]*\.\=[0-9_]\>" " Quoted Strings: syn region amlQuote start=+"+ skip=+\\"+ end=+"+ contains=amlVar syn region amlQuote start=+'+ skip=+\\'+ end=+'+ " ARC Application Commands only selected at the beginning of the line, " or after a one line &if &then statement syn match amlAppCmd "^ *[a-zA-Z]*" contains=amlArcCmd,amlInfoCmd,amlTabCmd,amlVtrCmd,amlFormedCmd syn region amlAppCmd start="&then" end="$" contains=amlArcCmd,amlFormedCmd,amlInfoCmd,amlTabCmd,amlVtrCmd,amlFunction,amlDirective,amlVar2,amlSkip,amlVar,amlComment " Variables syn region amlVar start="%" end="%" syn region amlVar start="%" end="%" contained syn match amlVar2 "&s [a-zA-Z_.0-9]*" contains=amlDir2,amlDirSym syn match amlVar2 "&sv [a-zA-Z_.0-9]*" contains=amlDir2,amlDirSym syn match amlVar2 "&set [a-zA-Z_.0-9]*" contains=amlDir2,amlDirSym syn match amlVar2 "&setvar [a-zA-Z_.0-9]*" contains=amlDir2,amlDirSym syn match amlVar2 "&dv [a-zA-Z_.0-9]*" contains=amlDir2,amlDirSym syn match amlVar2 "&delvar [a-zA-Z_.0-9]*" contains=amlDir2,amlDirSym " Formedit 2 word commands syn match amlFormed "^ *check box" syn match amlFormed "^ *data list" syn match amlFormed "^ *symbol list" " Tables 2 word commands syn match amlTab "^ *q stop" syn match amlTab "^ *quit stop" " Comments: syn match amlComment "/\*.*" " Regions for skipping over (not highlighting) program output strings: syn region amlSkip matchgroup=amlOutput start="&call" end="$" contains=amlVar syn region amlSkip matchgroup=amlOutput start="&routine" end="$" contains=amlVar syn region amlSkip matchgroup=amlOutput start="&inform" end="$" contains=amlVar syn region amlSkip matchgroup=amlOutput start="&return &inform" end="$" contains=amlVar syn region amlSkip matchgroup=amlOutput start="&return &warning" end="$" contains=amlVar syn region amlSkip matchgroup=amlOutput start="&return &error" end="$" contains=amlVar syn region amlSkip matchgroup=amlOutput start="&pause" end="$" contains=amlVar syn region amlSkip matchgroup=amlOutput start="&stop" end="$" contains=amlVar syn region amlSkip matchgroup=amlOutput start="&tty" end="$" contains=amlVar syn region amlSkip matchgroup=amlOutput start="&ty" end="$" contains=amlVar syn region amlSkip matchgroup=amlOutput start="&typ" end="$" contains=amlVar syn region amlSkip matchgroup=amlOutput start="&type" end="$" contains=amlVar " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link amlComment Comment hi def link amlNumber Number hi def link amlQuote String hi def link amlVar Identifier hi def link amlVar2 Identifier hi def link amlFunction PreProc hi def link amlDir Statement hi def link amlDir2 Statement hi def link amlDirSym Statement hi def link amlOutput Statement hi def link amlArcCmd ModeMsg hi def link amlFormedCmd amlArcCmd hi def link amlTabCmd amlArcCmd hi def link amlInfoCmd amlArcCmd hi def link amlVtrCmd amlArcCmd hi def link amlFormed amlArcCmd hi def link amlTab amlArcCmd let b:current_syntax = "aml" PK!Rq33vim80/syntax/xpm.vimnu[" Vim syntax file " Language: X Pixmap " Maintainer: Ronald Schild " Last Change: 2017 Feb 01 " Version: 5.4n.1 " Jemma Nelson added termguicolors support " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn keyword xpmType char syn keyword xpmStorageClass static syn keyword xpmTodo TODO FIXME XXX contained syn region xpmComment start="/\*" end="\*/" contains=xpmTodo syn region xpmPixelString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@xpmColors if has("gui_running") || has("termguicolors") && &termguicolors let color = "" let chars = "" let colors = 0 let cpp = 0 let n = 0 let i = 1 while i <= line("$") " scanning all lines let s = matchstr(getline(i), '".\{-1,}"') if s != "" " does line contain a string? if n == 0 " first string is the Values string " get the 3rd value: colors = number of colors let colors = substitute(s, '"\s*\d\+\s\+\d\+\s\+\(\d\+\).*"', '\1', '') " get the 4th value: cpp = number of character per pixel let cpp = substitute(s, '"\s*\d\+\s\+\d\+\s\+\d\+\s\+\(\d\+\).*"', '\1', '') if cpp =~ '[^0-9]' break " if cpp is not made of digits there must be something wrong endif " Highlight the Values string as normal string (no pixel string). " Only when there is no slash, it would terminate the pattern. if s !~ '/' exe 'syn match xpmValues /' . s . '/' endif hi link xpmValues String let n = 1 " n = color index elseif n <= colors " string is a color specification " get chars = length string representing the pixels " (first incl. the following whitespace) let chars = substitute(s, '"\(.\{'.cpp.'}\s\).*"', '\1', '') " now get color, first try 'c' key if any (color visual) let color = substitute(s, '".*\sc\s\+\(.\{-}\)\s*\(\(g4\=\|[ms]\)\s.*\)*\s*"', '\1', '') if color == s " no 'c' key, try 'g' key (grayscale with more than 4 levels) let color = substitute(s, '".*\sg\s\+\(.\{-}\)\s*\(\(g4\|[ms]\)\s.*\)*\s*"', '\1', '') if color == s " next try: 'g4' key (4-level grayscale) let color = substitute(s, '".*\sg4\s\+\(.\{-}\)\s*\([ms]\s.*\)*\s*"', '\1', '') if color == s " finally try 'm' key (mono visual) let color = substitute(s, '".*\sm\s\+\(.\{-}\)\s*\(s\s.*\)*\s*"', '\1', '') if color == s let color = "" endif endif endif endif " Vim cannot handle RGB codes with more than 6 hex digits if color =~ '#\x\{10,}$' let color = substitute(color, '\(\x\x\)\x\x', '\1', 'g') elseif color =~ '#\x\{7,}$' let color = substitute(color, '\(\x\x\)\x', '\1', 'g') " nor with 3 digits elseif color =~ '#\x\{3}$' let color = substitute(color, '\(\x\)\(\x\)\(\x\)', '0\10\20\3', '') endif " escape meta characters in patterns let s = escape(s, '/\*^$.~[]') let chars = escape(chars, '/\*^$.~[]') " now create syntax items " highlight the color string as normal string (no pixel string) exe 'syn match xpmCol'.n.'Def /'.s.'/ contains=xpmCol'.n.'inDef' exe 'hi link xpmCol'.n.'Def String' " but highlight the first whitespace after chars in its color exe 'syn match xpmCol'.n.'inDef /"'.chars.'/hs=s+'.(cpp+1).' contained' exe 'hi link xpmCol'.n.'inDef xpmColor'.n " remove the following whitespace from chars let chars = substitute(chars, '.$', '', '') " and create the syntax item contained in the pixel strings exe 'syn match xpmColor'.n.' /'.chars.'/ contained' exe 'syn cluster xpmColors add=xpmColor'.n " if no color or color = "None" show background if color == "" || substitute(color, '.*', '\L&', '') == 'none' exe 'hi xpmColor'.n.' guifg=bg' exe 'hi xpmColor'.n.' guibg=NONE' elseif color !~ "'" exe 'hi xpmColor'.n." guifg='".color."'" exe 'hi xpmColor'.n." guibg='".color."'" endif let n = n + 1 else break " no more color string endif endif let i = i + 1 endwhile unlet color chars colors cpp n i s endif " has("gui_running") || has("termguicolors") && &termguicolors " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link xpmType Type hi def link xpmStorageClass StorageClass hi def link xpmTodo Todo hi def link xpmComment Comment hi def link xpmPixelString String let b:current_syntax = "xpm" " vim: ts=8:sw=3:noet: PK!S>Bf6f6vim80/syntax/spup.vimnu[" Vim syntax file " Language: Speedup, plant simulator from AspenTech " Maintainer: Stefan.Schwarzer " URL: http://www.ndh.net/home/sschwarzer/download/spup.vim " Last Change: 2012 Feb 03 by Thilo Six " Filename: spup.vim " Bugs " - in the appropriate sections keywords are always highlighted " even if they are not used with the appropriate meaning; " example: in " MODEL demonstration " TYPE " *area AS area " both "area" are highlighted as spupType. " " If you encounter problems or have questions or suggestions, mail me " Remove old syntax stuff " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " don't hightlight several keywords like subsections "let strict_subsections = 1 " highlight types usually found in DECLARE section if !exists("hightlight_types") let highlight_types = 1 endif " one line comment syntax (# comments) " 1. allow appended code after comment, do not complain " 2. show code beginnig with the second # as an error " 3. show whole lines with more than one # as an error if !exists("oneline_comments") let oneline_comments = 2 endif " Speedup SECTION regions syn case ignore syn region spupCdi matchgroup=spupSection start="^CDI" end="^\*\*\*\*" contains=spupCdiSubs,@spupOrdinary syn region spupConditions matchgroup=spupSection start="^CONDITIONS" end="^\*\*\*\*" contains=spupConditionsSubs,@spupOrdinary,spupConditional,spupOperator,spupCode syn region spupDeclare matchgroup=spupSection start="^DECLARE" end="^\*\*\*\*" contains=spupDeclareSubs,@spupOrdinary,spupTypes,spupCode syn region spupEstimation matchgroup=spupSection start="^ESTIMATION" end="^\*\*\*\*" contains=spupEstimationSubs,@spupOrdinary syn region spupExternal matchgroup=spupSection start="^EXTERNAL" end="^\*\*\*\*" contains=spupExternalSubs,@spupOrdinary syn region spupFlowsheet matchgroup=spupSection start="^FLOWSHEET" end="^\*\*\*\*" contains=spupFlowsheetSubs,@spupOrdinary,spupStreams,@spupTextproc syn region spupFunction matchgroup=spupSection start="^FUNCTION" end="^\*\*\*\*" contains=spupFunctionSubs,@spupOrdinary,spupHelp,spupCode,spupTypes syn region spupGlobal matchgroup=spupSection start="^GLOBAL" end="^\*\*\*\*" contains=spupGlobalSubs,@spupOrdinary syn region spupHomotopy matchgroup=spupSection start="^HOMOTOPY" end="^\*\*\*\*" contains=spupHomotopySubs,@spupOrdinary syn region spupMacro matchgroup=spupSection start="^MACRO" end="^\*\*\*\*" contains=spupMacroSubs,@spupOrdinary,@spupTextproc,spupTypes,spupStreams,spupOperator syn region spupModel matchgroup=spupSection start="^MODEL" end="^\*\*\*\*" contains=spupModelSubs,@spupOrdinary,spupConditional,spupOperator,spupTypes,spupStreams,@spupTextproc,spupHelp syn region spupOperation matchgroup=spupSection start="^OPERATION" end="^\*\*\*\*" contains=spupOperationSubs,@spupOrdinary,@spupTextproc syn region spupOptions matchgroup=spupSection start="^OPTIONS" end="^\*\*\*\*" contains=spupOptionsSubs,@spupOrdinary syn region spupProcedure matchgroup=spupSection start="^PROCEDURE" end="^\*\*\*\*" contains=spupProcedureSubs,@spupOrdinary,spupHelp,spupCode,spupTypes syn region spupProfiles matchgroup=spupSection start="^PROFILES" end="^\*\*\*\*" contains=@spupOrdinary,@spupTextproc syn region spupReport matchgroup=spupSection start="^REPORT" end="^\*\*\*\*" contains=spupReportSubs,@spupOrdinary,spupHelp,@spupTextproc syn region spupTitle matchgroup=spupSection start="^TITLE" end="^\*\*\*\*" contains=spupTitleSubs,spupComment,spupConstant,spupError syn region spupUnit matchgroup=spupSection start="^UNIT" end="^\*\*\*\*" contains=spupUnitSubs,@spupOrdinary " Subsections syn keyword spupCdiSubs INPUT FREE OUTPUT LINEARTIME MINNONZERO CALCULATE FILES SCALING contained syn keyword spupDeclareSubs TYPE STREAM contained syn keyword spupEstimationSubs ESTIMATE SSEXP DYNEXP RESULT contained syn keyword spupExternalSubs TRANSMIT RECEIVE contained syn keyword spupFlowsheetSubs STREAM contained syn keyword spupFunctionSubs INPUT OUTPUT contained syn keyword spupGlobalSubs VARIABLES MAXIMIZE MINIMIZE CONSTRAINT contained syn keyword spupHomotopySubs VARY OPTIONS contained syn keyword spupMacroSubs MODEL FLOWSHEET contained syn keyword spupModelSubs CATEGORY SET TYPE STREAM EQUATION PROCEDURE contained syn keyword spupOperationSubs SET PRESET INITIAL SSTATE FREE contained syn keyword spupOptionsSubs ROUTINES TRANSLATE EXECUTION contained syn keyword spupProcedureSubs INPUT OUTPUT SPACE PRECALL POSTCALL DERIVATIVE STREAM contained " no subsections for Profiles syn keyword spupReportSubs SET INITIAL FIELDS FIELDMARK DISPLAY WITHIN contained syn keyword spupUnitSubs ROUTINES SET contained " additional keywords for subsections if !exists( "strict_subsections" ) syn keyword spupConditionsSubs STOP PRINT contained syn keyword spupDeclareSubs UNIT SET COMPONENTS THERMO OPTIONS contained syn keyword spupEstimationSubs VARY MEASURE INITIAL contained syn keyword spupFlowsheetSubs TYPE FEED PRODUCT INPUT OUTPUT CONNECTION OF IS contained syn keyword spupMacroSubs CONNECTION STREAM SET INPUT OUTPUT OF IS FEED PRODUCT TYPE contained syn keyword spupModelSubs AS ARRAY OF INPUT OUTPUT CONNECTION contained syn keyword spupOperationSubs WITHIN contained syn keyword spupReportSubs LEFT RIGHT CENTER CENTRE UOM TIME DATE VERSION RELDATE contained syn keyword spupUnitSubs IS A contained endif " Speedup data types if exists( "highlight_types" ) syn keyword spupTypes act_coeff_liq area coefficient concentration contained syn keyword spupTypes control_signal cond_liq cond_vap cp_mass_liq contained syn keyword spupTypes cp_mol_liq cp_mol_vap cv_mol_liq cv_mol_vap contained syn keyword spupTypes diffus_liq diffus_vap delta_p dens_mass contained syn keyword spupTypes dens_mass_sol dens_mass_liq dens_mass_vap dens_mol contained syn keyword spupTypes dens_mol_sol dens_mol_liq dens_mol_vap enthflow contained syn keyword spupTypes enth_mass enth_mass_liq enth_mass_vap enth_mol contained syn keyword spupTypes enth_mol_sol enth_mol_liq enth_mol_vap entr_mol contained syn keyword spupTypes entr_mol_sol entr_mol_liq entr_mol_vap fraction contained syn keyword spupTypes flow_mass flow_mass_liq flow_mass_vap flow_mol contained syn keyword spupTypes flow_mol_vap flow_mol_liq flow_vol flow_vol_vap contained syn keyword spupTypes flow_vol_liq fuga_vap fuga_liq fuga_sol contained syn keyword spupTypes gibb_mol_sol heat_react heat_trans_coeff contained syn keyword spupTypes holdup_heat holdup_heat_liq holdup_heat_vap contained syn keyword spupTypes holdup_mass holdup_mass_liq holdup_mass_vap contained syn keyword spupTypes holdup_mol holdup_mol_liq holdup_mol_vap k_value contained syn keyword spupTypes length length_delta length_short liqfraction contained syn keyword spupTypes liqmassfraction mass massfraction molefraction contained syn keyword spupTypes molweight moment_inertia negative notype percent contained syn keyword spupTypes positive pressure press_diff press_drop press_rise contained syn keyword spupTypes ratio reaction reaction_mass rotation surf_tens contained syn keyword spupTypes temperature temperature_abs temp_diff temp_drop contained syn keyword spupTypes temp_rise time vapfraction vapmassfraction contained syn keyword spupTypes velocity visc_liq visc_vap volume zmom_rate contained syn keyword spupTypes seg_rate smom_rate tmom_rate zmom_mass seg_mass contained syn keyword spupTypes smom_mass tmom_mass zmom_holdup seg_holdup contained syn keyword spupTypes smom_holdup tmom_holdup contained endif " stream types syn keyword spupStreams mainstream vapour liquid contained " "conditional" keywords syn keyword spupConditional IF THEN ELSE ENDIF contained " Operators, symbols etc. syn keyword spupOperator AND OR NOT contained syn match spupSymbol "[,\-+=:;*/\"<>@%()]" contained syn match spupSpecial "[&\$?]" contained " Surprisingly, Speedup allows no unary + instead of the - syn match spupError "[(=+\-*/]\s*+\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained syn match spupError "[(=+\-*/]\s*+\d\+\.\([ed][+-]\=\d\+\)\=\>"lc=1 contained syn match spupError "[(=+\-*/]\s*+\d*\.\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained " String syn region spupString start=+"+ end=+"+ oneline contained syn region spupString start=+'+ end=+'+ oneline contained " Identifier syn match spupIdentifier "\<[a-z][a-z0-9_]*\>" contained " Textprocessor directives syn match spupTextprocGeneric "?[a-z][a-z0-9_]*\>" contained syn region spupTextprocError matchgroup=spupTextprocGeneric start="?ERROR" end="?END"he=s-1 contained " Number, without decimal point syn match spupNumber "-\=\d\+\([ed][+-]\=\d\+\)\=" contained " Number, allows 1. before exponent syn match spupNumber "-\=\d\+\.\([ed][+-]\=\d\+\)\=" contained " Number allows .1 before exponent syn match spupNumber "-\=\d*\.\d\+\([ed][+-]\=\d\+\)\=" contained " Help subsections syn region spupHelp start="^HELP"hs=e+1 end="^\$ENDHELP"he=s-1 contained " Fortran code syn region spupCode start="^CODE"hs=e+1 end="^\$ENDCODE"he=s-1 contained " oneline comments if oneline_comments > 3 oneline_comments = 2 " default endif if oneline_comments == 1 syn match spupComment "#[^#]*#\=" elseif oneline_comments == 2 syn match spupError "#.*$" syn match spupComment "#[^#]*" nextgroup=spupError elseif oneline_comments == 3 syn match spupComment "#[^#]*" syn match spupError "#[^#]*#.*" endif " multiline comments syn match spupOpenBrace "{" contained syn match spupError "}" syn region spupComment matchgroup=spupComment2 start="{" end="}" keepend contains=spupOpenBrace syn cluster spupOrdinary contains=spupNumber,spupIdentifier,spupSymbol syn cluster spupOrdinary add=spupError,spupString,spupComment syn cluster spupTextproc contains=spupTextprocGeneric,spupTextprocError " define syncronizing; especially OPERATION sections can become very large syn sync clear syn sync minlines=100 syn sync maxlines=500 syn sync match spupSyncOperation grouphere spupOperation "^OPERATION" syn sync match spupSyncCdi grouphere spupCdi "^CDI" syn sync match spupSyncConditions grouphere spupConditions "^CONDITIONS" syn sync match spupSyncDeclare grouphere spupDeclare "^DECLARE" syn sync match spupSyncEstimation grouphere spupEstimation "^ESTIMATION" syn sync match spupSyncExternal grouphere spupExternal "^EXTERNAL" syn sync match spupSyncFlowsheet grouphere spupFlowsheet "^FLOWSHEET" syn sync match spupSyncFunction grouphere spupFunction "^FUNCTION" syn sync match spupSyncGlobal grouphere spupGlobal "^GLOBAL" syn sync match spupSyncHomotopy grouphere spupHomotopy "^HOMOTOPY" syn sync match spupSyncMacro grouphere spupMacro "^MACRO" syn sync match spupSyncModel grouphere spupModel "^MODEL" syn sync match spupSyncOperation grouphere spupOperation "^OPERATION" syn sync match spupSyncOptions grouphere spupOptions "^OPTIONS" syn sync match spupSyncProcedure grouphere spupProcedure "^PROCEDURE" syn sync match spupSyncProfiles grouphere spupProfiles "^PROFILES" syn sync match spupSyncReport grouphere spupReport "^REPORT" syn sync match spupSyncTitle grouphere spupTitle "^TITLE" syn sync match spupSyncUnit grouphere spupUnit "^UNIT" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link spupCdi spupSection hi def link spupConditions spupSection hi def link spupDeclare spupSection hi def link spupEstimation spupSection hi def link spupExternal spupSection hi def link spupFlowsheet spupSection hi def link spupFunction spupSection hi def link spupGlobal spupSection hi def link spupHomotopy spupSection hi def link spupMacro spupSection hi def link spupModel spupSection hi def link spupOperation spupSection hi def link spupOptions spupSection hi def link spupProcedure spupSection hi def link spupProfiles spupSection hi def link spupReport spupSection hi def link spupTitle spupConstant " this is correct, truly ;) hi def link spupUnit spupSection hi def link spupCdiSubs spupSubs hi def link spupConditionsSubs spupSubs hi def link spupDeclareSubs spupSubs hi def link spupEstimationSubs spupSubs hi def link spupExternalSubs spupSubs hi def link spupFlowsheetSubs spupSubs hi def link spupFunctionSubs spupSubs hi def link spupHomotopySubs spupSubs hi def link spupMacroSubs spupSubs hi def link spupModelSubs spupSubs hi def link spupOperationSubs spupSubs hi def link spupOptionsSubs spupSubs hi def link spupProcedureSubs spupSubs hi def link spupReportSubs spupSubs hi def link spupUnitSubs spupSubs hi def link spupCode Normal hi def link spupComment Comment hi def link spupComment2 spupComment hi def link spupConditional Statement hi def link spupConstant Constant hi def link spupError Error hi def link spupHelp Normal hi def link spupIdentifier Identifier hi def link spupNumber Constant hi def link spupOperator Special hi def link spupOpenBrace spupError hi def link spupSection Statement hi def link spupSpecial spupTextprocGeneric hi def link spupStreams Type hi def link spupString Constant hi def link spupSubs Statement hi def link spupSymbol Special hi def link spupTextprocError Normal hi def link spupTextprocGeneric PreProc hi def link spupTypes Type let b:current_syntax = "spup" let &cpo = s:cpo_save unlet s:cpo_save " vim:ts=8 PK!/M>vim80/syntax/xhtml.vimnu[" Vim syntax file " Language: XHTML " Maintainer: noone " Last Change: 2003 Feb 04 " Load the HTML syntax for now. runtime! syntax/html.vim let b:current_syntax = "xhtml" " vim: ts=8 PK!=""vim80/syntax/sgml.vimnu[" Vim syntax file " Language: SGML " Maintainer: Johannes Zellner " Last Change: Tue, 27 Apr 2004 15:05:21 CEST " Filenames: *.sgml,*.sgm " $Id: sgml.vim,v 1.1 2004/06/13 17:52:57 vimboss Exp $ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:sgml_cpo_save = &cpo set cpo&vim syn case match " mark illegal characters syn match sgmlError "[<&]" " unicode numbers: " provide different highlithing for unicode characters " inside strings and in plain text (character data). " " EXAMPLE: " " \u4e88 " syn match sgmlUnicodeNumberAttr +\\u\x\{4}+ contained contains=sgmlUnicodeSpecifierAttr syn match sgmlUnicodeSpecifierAttr +\\u+ contained syn match sgmlUnicodeNumberData +\\u\x\{4}+ contained contains=sgmlUnicodeSpecifierData syn match sgmlUnicodeSpecifierData +\\u+ contained " strings inside character data or comments " syn region sgmlString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=sgmlEntity,sgmlUnicodeNumberAttr display syn region sgmlString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=sgmlEntity,sgmlUnicodeNumberAttr display " punctuation (within attributes) e.g. " ^ ^ syn match sgmlAttribPunct +[:.]+ contained display " no highlighting for sgmlEqual (sgmlEqual has no highlighting group) syn match sgmlEqual +=+ " attribute, everything before the '=' " " PROVIDES: @sgmlAttribHook " " EXAMPLE: " " " ^^^^^^^^^^^^^ " syn match sgmlAttrib \ +[^-'"<]\@<=\<[a-zA-Z0-9.:]\+\>\([^'">]\@=\|$\)+ \ contained \ contains=sgmlAttribPunct,@sgmlAttribHook \ display " UNQUOTED value (not including the '=' -- sgmlEqual) " " PROVIDES: @sgmlValueHook " " EXAMPLE: " " " ^^^^^ " syn match sgmlValue \ +[^"' =/!?<>][^ =/!?<>]*+ \ contained \ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook \ display " QUOTED value (not including the '=' -- sgmlEqual) " " PROVIDES: @sgmlValueHook " " EXAMPLE: " " " ^^^^^^^ " " ^^^^^^^ " syn region sgmlValue contained start=+"+ skip=+\\\\\|\\"+ end=+"+ \ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook syn region sgmlValue contained start=+'+ skip=+\\\\\|\\'+ end=+'+ \ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook " value, everything after (and including) the '=' " no highlighting! " " EXAMPLE: " " " ^^^^^^^^^ " " ^^^^^^^ " syn match sgmlEqualValue \ +=\s*[^ =/!?<>]\++ \ contained \ contains=sgmlEqual,sgmlString,sgmlValue \ display " start tag " use matchgroup=sgmlTag to skip over the leading '<' " see also sgmlEmptyTag below. " " PROVIDES: @sgmlTagHook " syn region sgmlTag \ matchgroup=sgmlTag start=+<[^ /!?"']\@=+ \ matchgroup=sgmlTag end=+>+ \ contained \ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook " tag content for empty tags. This is the same as sgmlTag " above, except the `matchgroup=sgmlEndTag for highlighting " the end '/>' differently. " " PROVIDES: @sgmlTagHook " syn region sgmlEmptyTag \ matchgroup=sgmlTag start=+<[^ /!?"']\@=+ \ matchgroup=sgmlEndTag end=+/>+ \ contained \ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook " end tag " highlight everything but not the trailing '>' which " was already highlighted by the containing sgmlRegion. " " PROVIDES: @sgmlTagHook " (should we provide a separate @sgmlEndTagHook ?) " syn match sgmlEndTag \ +"']\+>+ \ contained \ contains=@sgmlTagHook " [-- SGML SPECIFIC --] " SGML specific " tag content for abbreviated regions " " PROVIDES: @sgmlTagHook " syn region sgmlAbbrTag \ matchgroup=sgmlTag start=+<[^ /!?"']\@=+ \ matchgroup=sgmlTag end=+/+ \ contained \ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook " SGML specific " just highlight the trailing '/' syn match sgmlAbbrEndTag +/+ " SGML specific " abbreviated regions " " No highlighing, highlighing is done by contained elements. " " PROVIDES: @sgmlRegionHook " " EXAMPLE: " " "']\+/\_[^/]\+/+ \ contains=sgmlAbbrTag,sgmlAbbrEndTag,sgmlCdata,sgmlComment,sgmlEntity,sgmlUnicodeNumberData,@sgmlRegionHook " [-- END OF SGML SPECIFIC --] " real (non-empty) elements. We cannot do syntax folding " as in xml, because end tags may be optional in sgml depending " on the dtd. " No highlighing, highlighing is done by contained elements. " " PROVIDES: @sgmlRegionHook " " EXAMPLE: " " " " " " some data " " " SGML specific: " compared to xmlRegion: " - removed folding " - added a single '/'in the start pattern " syn region sgmlRegion \ start=+<\z([^ /!?>"']\+\)\(\(\_[^/>]*[^/!?]>\)\|>\)+ \ end=++ \ contains=sgmlTag,sgmlEndTag,sgmlCdata,@sgmlRegionCluster,sgmlComment,sgmlEntity,sgmlUnicodeNumberData,@sgmlRegionHook \ keepend \ extend " empty tags. Just a container, no highlighting. " Compare this with sgmlTag. " " EXAMPLE: " " " " TODO use sgmlEmptyTag intead of sgmlTag syn match sgmlEmptyRegion \ +<[^ /!?>"']\(\_[^"'<>]\|"\_[^"]*"\|'\_[^']*'\)*/>+ \ contains=sgmlEmptyTag " cluster which contains the above two elements syn cluster sgmlRegionCluster contains=sgmlRegion,sgmlEmptyRegion,sgmlAbbrRegion " &entities; compare with dtd syn match sgmlEntity "&[^; \t]*;" contains=sgmlEntityPunct syn match sgmlEntityPunct contained "[&.;]" " The real comments (this implements the comments as defined by sgml, " but not all sgml pages actually conform to it. Errors are flagged. syn region sgmlComment start=++ contains=sgmlCommentPart,sgmlString,sgmlCommentError,sgmlTodo syn keyword sgmlTodo contained TODO FIXME XXX display syn match sgmlCommentError contained "[^>+ \ contains=sgmlCdataStart,sgmlCdataEnd,@sgmlCdataHook \ keepend \ extend " using the following line instead leads to corrupt folding at CDATA regions " syn match sgmlCdata ++ contains=sgmlCdataStart,sgmlCdataEnd,@sgmlCdataHook syn match sgmlCdataStart ++ contained " Processing instructions " This allows "?>" inside strings -- good idea? syn region sgmlProcessing matchgroup=sgmlProcessingDelim start="" contains=sgmlAttrib,sgmlEqualValue " DTD -- we use dtd.vim here syn region sgmlDocType matchgroup=sgmlDocTypeDecl start="\c" contains=sgmlDocTypeKeyword,sgmlInlineDTD,sgmlString syn keyword sgmlDocTypeKeyword contained DOCTYPE PUBLIC SYSTEM syn region sgmlInlineDTD contained start="\[" end="]" contains=@sgmlDTD syn include @sgmlDTD :p:h/dtd.vim " synchronizing " TODO !!! to be improved !!! syn sync match sgmlSyncDT grouphere sgmlDocType +\_.\(+ syn sync match sgmlSync grouphere sgmlRegion +\_.\(<[^ /!?>"']\+\)\@=+ " syn sync match sgmlSync grouphere sgmlRegion "<[^ /!?>"']*>" syn sync match sgmlSync groupthere sgmlRegion +"']\+>+ syn sync minlines=100 " The default highlighting. hi def link sgmlTodo Todo hi def link sgmlTag Function hi def link sgmlEndTag Identifier " SGML specifig hi def link sgmlAbbrEndTag Identifier hi def link sgmlEmptyTag Function hi def link sgmlEntity Statement hi def link sgmlEntityPunct Type hi def link sgmlAttribPunct Comment hi def link sgmlAttrib Type hi def link sgmlValue String hi def link sgmlString String hi def link sgmlComment Comment hi def link sgmlCommentPart Comment hi def link sgmlCommentError Error hi def link sgmlError Error hi def link sgmlProcessingDelim Comment hi def link sgmlProcessing Type hi def link sgmlCdata String hi def link sgmlCdataCdata Statement hi def link sgmlCdataStart Type hi def link sgmlCdataEnd Type hi def link sgmlDocTypeDecl Function hi def link sgmlDocTypeKeyword Statement hi def link sgmlInlineDTD Function hi def link sgmlUnicodeNumberAttr Number hi def link sgmlUnicodeSpecifierAttr SpecialChar hi def link sgmlUnicodeNumberData Number hi def link sgmlUnicodeSpecifierData SpecialChar let b:current_syntax = "sgml" let &cpo = s:sgml_cpo_save unlet s:sgml_cpo_save " vim: ts=8 PK!vim80/syntax/modconf.vimnu[" Vim syntax file " Language: modules.conf(5) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2007-10-25 if exists("b:current_syntax") finish endif setlocal iskeyword+=- let s:cpo_save = &cpo set cpo&vim syn keyword modconfTodo FIXME TODO XXX NOTE syn region modconfComment start='#' skip='\\$' end='$' \ contains=modconfTodo,@Spell syn keyword modconfConditional if else elseif endif syn keyword modconfPreProc alias define include keep prune \ post-install post-remove pre-install \ pre-remove persistdir blacklist syn keyword modconfKeyword add above below install options probe probeall \ remove syn keyword modconfIdentifier depfile insmod_opt path generic_stringfile \ pcimapfile isapnpmapfile usbmapfile \ parportmapfile ieee1394mapfile pnpbiosmapfile syn match modconfIdentifier 'path\[[^]]\+\]' hi def link modconfTodo Todo hi def link modconfComment Comment hi def link modconfConditional Conditional hi def link modconfPreProc PreProc hi def link modconfKeyword Keyword hi def link modconfIdentifier Identifier let b:current_syntax = "modconf" let &cpo = s:cpo_save unlet s:cpo_save PK!iEEEvim80/syntax/gprof.vimnu[" Vim syntax file " Language: Syntax for Gprof Output " Maintainer: Dominique Pelle " Last Change: 2013 Jun 09 " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim syn case match syn sync minlines=100 " Flat profile syn match gprofFlatProfileTitle \ "^Flat profile:$" syn region gprofFlatProfileHeader \ start="^Each sample counts as.*" \ end="^ time.*name\s*$" syn region gprofFlatProfileTrailer \ start="^\s*%\s\+the percentage of the total running time.*" \ end="^\s*the gprof listing if it were to be printed\." " Call graph syn match gprofCallGraphTitle "Call graph (explanation follows)" syn region gprofCallGraphHeader \ start="^granularity: each sample hit covers.*" \ end="^\s*index % time\s\+self\s\+children\s\+called\s\+name$" syn match gprofCallGraphFunction "\s\+\(\d\+\.\d\+\s\+\)\{3}\([0-9+]\+\)\?\s\+[a-zA-Z_<].*\ze\[" syn match gprofCallGraphSeparator "^-\+$" syn region gprofCallGraphTrailer \ start="This table describes the call tree of the program" \ end="^\s*the cycle\.$" " Index syn region gprofIndex \ start="^Index by function name$" \ end="\%$" syn match gprofIndexFunctionTitle "^Index by function name$" syn match gprofNumbers "^\s\+[0-9 ./+]\+" syn match gprofFunctionIndex "\[\d\+\]" syn match gprofSpecial "<\(spontaneous\|cycle \d\+\)>" hi def link gprofFlatProfileTitle Title hi def link gprofFlatProfileHeader Comment hi def link gprofFlatProfileFunction Number hi def link gprofFlatProfileTrailer Comment hi def link gprofCallGraphTitle Title hi def link gprofCallGraphHeader Comment hi def link gprofFlatProfileFunction Number hi def link gprofCallGraphFunction Special hi def link gprofCallGraphTrailer Comment hi def link gprofCallGraphSeparator Label hi def link gprofFunctionIndex Label hi def link gprofSpecial SpecialKey hi def link gprofNumbers Number hi def link gprofIndexFunctionTitle Title let b:current_syntax = "gprof" let &cpo = s:keepcpo unlet s:keepcpo PK!ͅGGvim80/syntax/cfg.vimnu[" Vim syntax file " Language: Good old CFG files " Maintainer: Igor N. Prischepoff (igor@tyumbit.ru, pri_igor@mail.ru) " Last change: 2012 Aug 11 " quit when a syntax file was already loaded if exists ("b:current_syntax") finish endif " case off syn case ignore syn keyword CfgOnOff ON OFF YES NO TRUE FALSE contained syn match UncPath "\\\\\p*" contained "Dos Drive:\Path syn match CfgDirectory "[a-zA-Z]:\\\p*" contained "Parameters syn match CfgParams ".\{0}="me=e-1 contains=CfgComment "... and their values (don't want to highlight '=' sign) syn match CfgValues "=.*"hs=s+1 contains=CfgDirectory,UncPath,CfgComment,CfgString,CfgOnOff " Sections syn match CfgSection "\[.*\]" syn match CfgSection "{.*}" " String syn match CfgString "\".*\"" contained syn match CfgString "'.*'" contained " Comments (Everything before '#' or '//' or ';') syn match CfgComment "#.*" syn match CfgComment ";.*" syn match CfgComment "\/\/.*" " Define the default hightlighting. " Only when an item doesn't have highlighting yet hi def link CfgOnOff Label hi def link CfgComment Comment hi def link CfgSection Type hi def link CfgString String hi def link CfgParams Keyword hi def link CfgValues Constant hi def link CfgDirectory Directory hi def link UncPath Directory let b:current_syntax = "cfg" " vim:ts=8 PK! bZbZvim80/syntax/lpc.vimnu[" Vim syntax file " Language: LPC " Maintainer: Shizhu Pan " URL: http://poet.tomud.com/pub/lpc.vim.bz2 " Last Change: 2016 Aug 31 " Comments: If you are using Vim 6.2 or later, see :h lpc.vim for " file type recognizing, if not, you had to use modeline. " Nodule: This is the start nodule. {{{1 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " Nodule: Keywords {{{1 " LPC keywords " keywords should always be highlighted so "contained" is not used. syn cluster lpcKeywdGrp contains=lpcConditional,lpcLabel,lpcOperator,lpcRepeat,lpcStatement,lpcModifier,lpcReserved syn keyword lpcConditional if else switch syn keyword lpcLabel case default syn keyword lpcOperator catch efun in inherit syn keyword lpcRepeat do for foreach while syn keyword lpcStatement break continue return syn match lpcEfunError /efun[^:]/ display " Illegal to use keyword as function " It's not working, maybe in the next version. syn keyword lpcKeywdError contained if for foreach return switch while " These are keywords only because they take lvalue or type as parameter, " so these keywords should only be used as function but cannot be names of " user-defined functions. syn keyword lpcKeywdFunc new parse_command sscanf time_expression " Nodule: Type and modifiers {{{1 " Type names list. " Special types syn keyword lpcType void mixed unknown " Scalar/Value types. syn keyword lpcType int float string " Pointer types. syn keyword lpcType array buffer class function mapping object " Other types. if exists("lpc_compat_32") syn keyword lpcType closure status funcall else syn keyword lpcError closure status syn keyword lpcType multiset endif " Type modifier. syn keyword lpcModifier nomask private public syn keyword lpcModifier varargs virtual " sensible modifiers if exists("lpc_pre_v22") syn keyword lpcReserved nosave protected ref syn keyword lpcModifier static else syn keyword lpcError static syn keyword lpcModifier nosave protected ref endif " Nodule: Applies {{{1 " Match a function declaration or function pointer syn match lpcApplyDecl excludenl /->\h\w*(/me=e-1 contains=lpcApplies transparent display " We should note that in func_spec.c the efun definition syntax is so " complicated that I use such a long regular expression to describe. syn match lpcLongDecl excludenl /\(\s\|\*\)\h\+\s\h\+(/me=e-1 contains=@lpcEfunGroup,lpcType,@lpcKeywdGrp transparent display " this is form for all functions " ->foo() form had been excluded syn match lpcFuncDecl excludenl /\h\w*(/me=e-1 contains=lpcApplies,@lpcEfunGroup,lpcKeywdError transparent display " The (: :) parenthesis or $() forms a function pointer syn match lpcFuncName /(:\s*\h\+\s*:)/me=e-1 contains=lpcApplies,@lpcEfunGroup transparent display contained syn match lpcFuncName /(:\s*\h\+,/ contains=lpcApplies,@lpcEfunGroup transparent display contained syn match lpcFuncName /\$(\h\+)/ contains=lpcApplies,@lpcEfunGroup transparent display contained " Applies list. " system applies syn keyword lpcApplies contained __INIT clean_up create destructor heart_beat id init move_or_destruct reset " interactive syn keyword lpcApplies contained catch_tell logon net_dead process_input receive_message receive_snoop telnet_suboption terminal_type window_size write_prompt " master applies syn keyword lpcApplies contained author_file compile_object connect crash creator_file domain_file epilog error_handler flag get_bb_uid get_root_uid get_save_file_name log_error make_path_absolute object_name preload privs_file retrieve_ed_setup save_ed_setup slow_shutdown syn keyword lpcApplies contained valid_asm valid_bind valid_compile_to_c valid_database valid_hide valid_link valid_object valid_override valid_read valid_save_binary valid_seteuid valid_shadow valid_socket valid_write " parsing syn keyword lpcApplies contained inventory_accessible inventory_visible is_living parse_command_adjectiv_id_list parse_command_adjective_id_list parse_command_all_word parse_command_id_list parse_command_plural_id_list parse_command_prepos_list parse_command_users parse_get_environment parse_get_first_inventory parse_get_next_inventory parser_error_message " Nodule: Efuns {{{1 syn cluster lpcEfunGroup contains=lpc_efuns,lpcOldEfuns,lpcNewEfuns,lpcKeywdFunc " Compat32 efuns if exists("lpc_compat_32") syn keyword lpc_efuns contained closurep heart_beat_info m_delete m_values m_indices query_once_interactive strstr else syn match lpcErrFunc /#`\h\w*/ " Shell compatible first line comment. syn region lpcCommentFunc start=/^#!/ end=/$/ endif " pre-v22 efuns which are removed in newer versions. syn keyword lpcOldEfuns contained tail dump_socket_status " new efuns after v22 should be added here! syn keyword lpcNewEfuns contained socket_status " LPC efuns list. " DEBUG efuns Not included. " New efuns should NOT be added to this list, see v22 efuns above. " Efuns list {{{2 syn keyword lpc_efuns contained acos add_action all_inventory all_previous_objects allocate allocate_buffer allocate_mapping apply arrayp asin atan author_stats syn keyword lpc_efuns contained bind break_string bufferp syn keyword lpc_efuns contained cache_stats call_other call_out call_out_info call_stack capitalize catch ceil check_memory children classp clear_bit clone_object clonep command commands copy cos cp crc32 crypt ctime syn keyword lpc_efuns contained db_close db_commit db_connect db_exec db_fetch db_rollback db_status debug_info debugmalloc debug_message deep_inherit_list deep_inventory destruct disable_commands disable_wizard domain_stats dumpallobj dump_file_descriptors dump_prog syn keyword lpc_efuns contained each ed ed_cmd ed_start enable_commands enable_wizard environment error errorp eval_cost evaluate exec exp explode export_uid external_start syn keyword lpc_efuns contained fetch_variable file_length file_name file_size filter filter_array filter_mapping find_call_out find_living find_object find_player first_inventory floatp floor flush_messages function_exists function_owner function_profile functionp functions syn keyword lpc_efuns contained generate_source get_char get_config get_dir geteuid getuid syn keyword lpc_efuns contained heart_beats syn keyword lpc_efuns contained id_matrix implode in_edit in_input inherit_list inherits input_to interactive intp syn keyword lpc_efuns contained keys syn keyword lpc_efuns contained link living livings load_object localtime log log10 lookat_rotate lower_case lpc_info syn keyword lpc_efuns contained malloc_check malloc_debug malloc_status map map_array map_delete map_mapping mapp master match_path max_eval_cost member_array memory_info memory_summary message mkdir moncontrol move_object mud_status syn keyword lpc_efuns contained named_livings network_stats next_bit next_inventory notify_fail nullp syn keyword lpc_efuns contained objectp objects oldcrypt opcprof origin syn keyword lpc_efuns contained parse_add_rule parse_add_synonym parse_command parse_dump parse_init parse_my_rules parse_refresh parse_remove parse_sentence pluralize pointerp pow present previous_object printf process_string process_value program_info syn keyword lpc_efuns contained query_ed_mode query_heart_beat query_host_name query_idle query_ip_name query_ip_number query_ip_port query_load_average query_notify_fail query_privs query_replaced_program query_shadowing query_snoop query_snooping query_verb syn keyword lpc_efuns contained random read_buffer read_bytes read_file receive reclaim_objects refs regexp reg_assoc reload_object remove_action remove_call_out remove_interactive remove_shadow rename repeat_string replace_program replace_string replaceable reset_eval_cost resolve restore_object restore_variable rm rmdir rotate_x rotate_y rotate_z rusage syn keyword lpc_efuns contained save_object save_variable say scale set_author set_bit set_eval_limit set_heart_beat set_hide set_light set_living_name set_malloc_mask set_privs set_reset set_this_player set_this_user seteuid shadow shallow_inherit_list shout shutdown sin sizeof snoop socket_accept socket_acquire socket_address socket_bind socket_close socket_connect socket_create socket_error socket_listen socket_release socket_write sort_array sprintf sqrt stat store_variable strcmp stringp strlen strsrch syn keyword lpc_efuns contained tan tell_object tell_room terminal_colour test_bit this_interactive this_object this_player this_user throw time to_float to_int trace traceprefix translate typeof syn keyword lpc_efuns contained undefinedp unique_array unique_mapping upper_case uptime userp users syn keyword lpc_efuns contained values variables virtualp syn keyword lpc_efuns contained wizardp write write_buffer write_bytes write_file " Nodule: Constants {{{1 " LPC Constants. " like keywords, constants are always highlighted, be careful to choose only " the constants we used to add to this list. syn keyword lpcConstant __ARCH__ __COMPILER__ __DIR__ __FILE__ __OPTIMIZATION__ __PORT__ __VERSION__ " Defines in options.h are all predefined in LPC sources surrounding by " two underscores. Do we need to include all of that? syn keyword lpcConstant __SAVE_EXTENSION__ __HEARTBEAT_INTERVAL__ " from the documentation we know that these constants remains only for " backward compatibility and should not be used any more. syn keyword lpcConstant HAS_ED HAS_PRINTF HAS_RUSAGE HAS_DEBUG_LEVEL syn keyword lpcConstant MUD_NAME F__THIS_OBJECT " Nodule: Todo for this file. {{{1 " TODO : need to check for LPC4 syntax and other series of LPC besides " v22, b21 and l32, if you had a good idea, contact me at poet@mudbuilder.net " and I will be appreciated about that. " Notes about some FAQ: " " About variables : We adopts the same behavior for C because almost all the " LPC programmers are also C programmers, so we don't need separate settings " for C and LPC. That is the reason why I don't change variables like " "c_no_utf"s to "lpc_no_utf"s. " " Copy : Some of the following seems to be copied from c.vim but not quite " the same in details because the syntax for C and LPC is different. " " Color scheme : this syntax file had been thouroughly tested to work well " for all of the dark-backgrounded color schemes Vim has provided officially, " and it should be quite Ok for all of the bright-backgrounded color schemes, " of course it works best for the color scheme that I am using, download it " from http://poet.tomud.com/pub/ps_color.vim.bz2 if you want to try it. " " Nodule: String and Character {{{1 " String and Character constants " Highlight special characters (those which have a backslash) differently syn match lpcSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" if !exists("c_no_utf") syn match lpcSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)" endif " LPC version of sprintf() format, syn match lpcFormat display "%\(\d\+\)\=[-+ |=#@:.]*\(\d\+\)\=\('\I\+'\|'\I*\\'\I*'\)\=[OsdicoxXf]" contained syn match lpcFormat display "%%" contained syn region lpcString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lpcSpecial,lpcFormat " lpcCppString: same as lpcString, but ends at end of line syn region lpcCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=lpcSpecial,lpcFormat " LPC preprocessor for the text formatting short cuts " Thanks to Dr. Charles E. Campbell " he suggests the best way to do this. syn region lpcTextString start=/@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial syn region lpcArrayString start=/@@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial " Character syn match lpcCharacter "L\='[^\\]'" syn match lpcCharacter "L'[^']*'" contains=lpcSpecial syn match lpcSpecialError "L\='\\[^'\"?\\abefnrtv]'" syn match lpcSpecialCharacter "L\='\\['\"?\\abefnrtv]'" syn match lpcSpecialCharacter display "L\='\\\o\{1,3}'" syn match lpcSpecialCharacter display "'\\x\x\{1,2}'" syn match lpcSpecialCharacter display "L'\\x\x\+'" " Nodule: White space {{{1 " when wanted, highlight trailing white space if exists("c_space_errors") if !exists("c_no_trail_space_error") syn match lpcSpaceError display excludenl "\s\+$" endif if !exists("c_no_tab_space_error") syn match lpcSpaceError display " \+\t"me=e-1 endif endif " Nodule: Parenthesis and brackets {{{1 " catch errors caused by wrong parenthesis and brackets syn cluster lpcParenGroup contains=lpcParenError,lpcIncluded,lpcSpecial,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcUserCont,lpcUserLabel,lpcBitField,lpcCommentSkip,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom syn region lpcParen transparent start='(' end=')' contains=ALLBUT,@lpcParenGroup,lpcCppParen,lpcErrInBracket,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcKeywdError " lpcCppParen: same as lpcParen but ends at end-of-line; used in lpcDefine syn region lpcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInBracket,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcKeywdError syn match lpcParenError display ")" syn match lpcParenError display "\]" " for LPC: " Here we should consider the array ({ }) parenthesis and mapping ([ ]) " parenthesis and multiset (< >) parenthesis. syn match lpcErrInParen display contained "[^^]{"ms=s+1 syn match lpcErrInParen display contained "\(}\|\]\)[^)]"me=e-1 syn region lpcBracket transparent start='\[' end=']' contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcCppParen,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError " lpcCppBracket: same as lpcParen but ends at end-of-line; used in lpcDefine syn region lpcCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError syn match lpcErrInBracket display contained "[);{}]" " Nodule: Numbers {{{1 " integer number, or floating point number without a dot and with "f". syn case ignore syn match lpcNumbers display transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctalError,lpcOctal " Same, but without octal error (for comments) syn match lpcNumbersCom display contained transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctal syn match lpcNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" " hex number syn match lpcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" " Flag the first zero of an octal number as something special syn match lpcOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=lpcOctalZero syn match lpcOctalZero display contained "\<0" syn match lpcFloat display contained "\d\+f" " floating point number, with dot, optional exponent syn match lpcFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" " floating point number, starting with a dot, optional exponent syn match lpcFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" " floating point number, without dot, with exponent syn match lpcFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" " flag an octal number with wrong digits syn match lpcOctalError display contained "0\o*[89]\d*" syn case match " Nodule: Comment string {{{1 " lpcCommentGroup allows adding matches for special things in comments syn keyword lpcTodo contained TODO FIXME XXX syn cluster lpcCommentGroup contains=lpcTodo if exists("c_comment_strings") " A comment can contain lpcString, lpcCharacter and lpcNumber. syntax match lpcCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region lpcCommentString contained start=+L\=\\\@" skip="\\$" end="$" end="//"me=s-1 contains=lpcComment,lpcCppString,lpcCharacter,lpcCppParen,lpcParenError,lpcNumbers,lpcCommentError,lpcSpaceError syn match lpcPreCondit display "^\s*#\s*\(else\|endif\)\>" if !exists("c_no_if0") syn region lpcCppOut start="^\s*#\s*if\s\+0\+\>" end=".\|$" contains=lpcCppOut2 syn region lpcCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=lpcSpaceError,lpcCppSkip syn region lpcCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=lpcSpaceError,lpcCppSkip endif syn region lpcIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match lpcIncluded display contained "<[^>]*>" syn match lpcInclude display "^\s*#\s*include\>\s*["<]" contains=lpcIncluded syn match lpcLineSkip "\\$" syn cluster lpcPreProcGroup contains=lpcPreCondit,lpcIncluded,lpcInclude,lpcDefine,lpcErrInParen,lpcErrInBracket,lpcUserLabel,lpcSpecial,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom,lpcString,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcParen,lpcBracket,lpcMulti,lpcKeywdError syn region lpcDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@lpcPreProcGroup if exists("lpc_pre_v22") syn region lpcPreProc start="^\s*#\s*\(pragma\>\|echo\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup else syn region lpcPreProc start="^\s*#\s*\(pragma\>\|echo\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup endif " Nodule: User labels {{{1 " Highlight Labels " User labels in LPC is not allowed, only "case x" and "default" is supported syn cluster lpcMultiGroup contains=lpcIncluded,lpcSpecial,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcUserCont,lpcUserLabel,lpcBitField,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom,lpcCppParen,lpcCppBracket,lpcCppString,lpcKeywdError syn region lpcMulti transparent start='\(case\|default\|public\|protected\|private\)' skip='::' end=':' contains=ALLBUT,@lpcMultiGroup syn cluster lpcLabelGroup contains=lpcUserLabel syn match lpcUserCont display "^\s*lpc:$" contains=@lpcLabelGroup " Don't want to match anything syn match lpcUserLabel display "lpc" contained " Nodule: Initializations {{{1 if exists("c_minlines") let b:c_minlines = c_minlines else if !exists("c_no_if0") let b:c_minlines = 50 " #if 0 constructs can be long else let b:c_minlines = 15 " mostly for () constructs endif endif exec "syn sync ccomment lpcComment minlines=" . b:c_minlines " Make sure these options take place since we no longer depend on file type " plugin for C setlocal cindent setlocal fo-=t fo+=croql setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// " Win32 can filter files in the browse dialog if has("gui_win32") && !exists("b:browsefilter") let b:browsefilter = "LPC Source Files (*.c *.d *.h)\t*.c;*.d;*.h\n" . \ "LPC Data Files (*.scr *.o *.dat)\t*.scr;*.o;*.dat\n" . \ "Text Documentation (*.txt)\t*.txt\n" . \ "All Files (*.*)\t*.*\n" endif " Nodule: Highlight links {{{1 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link lpcModifier lpcStorageClass hi def link lpcQuotedFmt lpcFormat hi def link lpcFormat lpcSpecial hi def link lpcCppString lpcString " Cpp means " C Pre-Processor hi def link lpcCommentL lpcComment hi def link lpcCommentStart lpcComment hi def link lpcUserLabel lpcLabel hi def link lpcSpecialCharacter lpcSpecial hi def link lpcOctal lpcPreProc hi def link lpcOctalZero lpcSpecial " LPC will treat octal numbers " as decimals, programmers should " be aware of that. hi def link lpcEfunError lpcError hi def link lpcKeywdError lpcError hi def link lpcOctalError lpcError hi def link lpcParenError lpcError hi def link lpcErrInParen lpcError hi def link lpcErrInBracket lpcError hi def link lpcCommentError lpcError hi def link lpcCommentStartError lpcError hi def link lpcSpaceError lpcError hi def link lpcSpecialError lpcError hi def link lpcErrFunc lpcError if exists("lpc_pre_v22") hi def link lpcOldEfuns lpc_efuns hi def link lpcNewEfuns lpcError else hi def link lpcOldEfuns lpcReserved hi def link lpcNewEfuns lpc_efuns endif hi def link lpc_efuns lpcFunction hi def link lpcReserved lpcPreProc hi def link lpcTextString lpcString " This should be preprocessors, but hi def link lpcArrayString lpcPreProc " let's make some difference " between text and array hi def link lpcIncluded lpcString hi def link lpcCommentString lpcString hi def link lpcComment2String lpcString hi def link lpcCommentSkip lpcComment hi def link lpcCommentFunc lpcComment hi def link lpcCppSkip lpcCppOut hi def link lpcCppOut2 lpcCppOut hi def link lpcCppOut lpcComment " Standard type below hi def link lpcApplies Special hi def link lpcCharacter Character hi def link lpcComment Comment hi def link lpcConditional Conditional hi def link lpcConstant Constant hi def link lpcDefine Macro hi def link lpcError Error hi def link lpcFloat Float hi def link lpcFunction Function hi def link lpcIdentifier Identifier hi def link lpcInclude Include hi def link lpcLabel Label hi def link lpcNumber Number hi def link lpcOperator Operator hi def link lpcPreCondit PreCondit hi def link lpcPreProc PreProc hi def link lpcRepeat Repeat hi def link lpcStatement Statement hi def link lpcStorageClass StorageClass hi def link lpcString String hi def link lpcStructure Structure hi def link lpcSpecial LineNr hi def link lpcTodo Todo hi def link lpcType Type " Nodule: This is the end nodule. {{{1 let b:current_syntax = "lpc" let &cpo = s:cpo_save unlet s:cpo_save " vim:ts=8:nosta:sw=2:ai:si: " vim600:set fdm=marker: }}}1 PK!5vim80/syntax/mail.vimnu[" Vim syntax file " Language: Mail file " Previous Maintainer: Felix von Leitner " Maintainer: GI , where a='gi1242+vim', b='gmail', c='com' " Last Change: Wed 14 Aug 2013 08:24:52 AM PDT " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " The mail header is recognized starting with a "keyword:" line and ending " with an empty line or other line that can't be in the header. All lines of " the header are highlighted. Headers of quoted messages (quoted with >) are " also highlighted. " Syntax clusters syn cluster mailHeaderFields contains=mailHeaderKey,mailSubject,mailHeaderEmail,@mailLinks syn cluster mailLinks contains=mailURL,mailEmail syn cluster mailQuoteExps contains=mailQuoteExp1,mailQuoteExp2,mailQuoteExp3,mailQuoteExp4,mailQuoteExp5,mailQuoteExp6 syn case match " For "From " matching case is required. The "From " is not matched in quoted " emails " According to RFC 2822 any printable ASCII character can appear in a field " name, except ':'. syn region mailHeader contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1 fold syn match mailHeaderKey contained contains=mailEmail,@NoSpell "^From\s.*\d\d\d\d$" " Nothing else depends on case. syn case ignore " Headers in properly quoted (with "> " or ">") emails are matched syn region mailHeader keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1 fold " Usenet headers syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(Newsgroups|Followup-To|Message-ID|Supersedes|Control):.*$" syn region mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$" syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$" fold syn match mailHeaderKey contained contains=@NoSpell "\v(^(\> ?)*)@<=date:" syn match mailSubject contained "\v^subject:.*$" fold syn match mailSubject contained contains=@NoSpell "\v(^(\> ?)+)@<=subject:.*$" " Anything in the header between < and > is an email address syn match mailHeaderEmail contained contains=@NoSpell "<.\{-}>" " Mail Signatures. (Begin with "-- ", end with change in quote level) syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1 fold syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1 fold " Treat verbatim Text special. syn region mailVerbatim contains=@NoSpell keepend start="^#v+$" end="^#v-$" fold syn region mailVerbatim contains=@mailQuoteExps,@NoSpell keepend start="^\z(\(> \?\)\+\)#v+$" end="\z1#v-$" fold " URLs start with a known protocol or www,web,w3. syn match mailURL contains=@NoSpell `\v<(((https?|ftp|gopher)://|(mailto|file|news):)[^' <>"]+|(www|web|w3)[a-z0-9_-]*\.[a-z0-9._-]+\.[^' <>"]+)[a-z0-9/]` syn match mailEmail contains=@NoSpell "\v[_=a-z\./+0-9-]+\@[a-z0-9._-]+\a{2}" " Make sure quote markers in regions (header / signature) have correct color syn match mailQuoteExp1 contained "\v^(\> ?)" syn match mailQuoteExp2 contained "\v^(\> ?){2}" syn match mailQuoteExp3 contained "\v^(\> ?){3}" syn match mailQuoteExp4 contained "\v^(\> ?){4}" syn match mailQuoteExp5 contained "\v^(\> ?){5}" syn match mailQuoteExp6 contained "\v^(\> ?){6}" " Even and odd quoted lines. Order is important here! syn region mailQuoted6 keepend contains=mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold syn region mailQuoted5 keepend contains=mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold syn region mailQuoted4 keepend contains=mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold syn region mailQuoted3 keepend contains=mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold syn region mailQuoted2 keepend contains=mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{1}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold syn region mailQuoted1 keepend contains=mailQuoted2,mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z([a-z]\+>\|[]|}>]\)" end="^\z1\@!" fold " Need to sync on the header. Assume we can do that within 100 lines if exists("mail_minlines") exec "syn sync minlines=" . mail_minlines else syn sync minlines=100 endif " Define the default highlighting. hi def link mailVerbatim Special hi def link mailHeader Statement hi def link mailHeaderKey Type hi def link mailSignature PreProc hi def link mailHeaderEmail mailEmail hi def link mailEmail Special hi def link mailURL String hi def link mailSubject Title hi def link mailQuoted1 Comment hi def link mailQuoted3 mailQuoted1 hi def link mailQuoted5 mailQuoted1 hi def link mailQuoted2 Identifier hi def link mailQuoted4 mailQuoted2 hi def link mailQuoted6 mailQuoted2 hi def link mailQuoteExp1 mailQuoted1 hi def link mailQuoteExp2 mailQuoted2 hi def link mailQuoteExp3 mailQuoted3 hi def link mailQuoteExp4 mailQuoted4 hi def link mailQuoteExp5 mailQuoted5 hi def link mailQuoteExp6 mailQuoted6 let b:current_syntax = "mail" let &cpo = s:cpo_save unlet s:cpo_save PK!PC77vim80/syntax/context.vimnu[" Vim syntax file " Language: ConTeXt typesetting engine " Maintainer: Nicola Vitacolonna " Former Maintainers: Nikolai Weibull " Latest Revision: 2016 Oct 16 if exists("b:current_syntax") finish endif runtime! syntax/plaintex.vim unlet b:current_syntax let s:cpo_save = &cpo set cpo&vim " Dictionary of (filetype, group) pairs to highlight between \startGROUP \stopGROUP. let s:context_include = get(b:, 'context_include', get(g:, 'context_include', {'xml': 'XML'})) " For backward compatibility (g:context_include used to be a List) if type(s:context_include) ==# type([]) let g:context_metapost = (index(s:context_include, 'mp') != -1) let s:context_include = filter( \ {'c': 'C', 'javascript': 'JS', 'ruby': 'Ruby', 'xml': 'XML'}, \ { k,_ -> index(s:context_include, k) != -1 } \ ) endif syn iskeyword @,48-57,a-z,A-Z,192-255 syn spell toplevel " ConTeXt options, i.e., [...] blocks syn region contextOptions matchgroup=contextDelimiter start='\[' end=']\|\ze\\stop' skip='\\\[\|\\\]' contains=ALLBUT,contextBeginEndLua,@Spell " Highlight braces syn match contextDelimiter '[{}]' " Comments syn match contextComment '\\\@>' syn region contextEscaped matchgroup=contextPreProc \ start='\\start\z(\a*\%(typing\|typen\)\)' \ end='\\stop\z1' contains=plaintexComment keepend syn region contextEscaped matchgroup=contextPreProc start='\\\h\+Type\%(\s\|\n\)*{' end='}' syn region contextEscaped matchgroup=contextPreProc start='\\Typed\h\+\%(\s\|\n\)*{' end='}' syn match contextBuiltin display contains=@NoSpell \ '\\\%(unprotect\|protect\|unexpanded\)\>' syn match contextPreProc '^\s*\\\%(start\|stop\)\=\%(component\|environment\|project\|product\)\>' \ contains=@NoSpell if get(b:, 'context_metapost', get(g:, 'context_metapost', 1)) let b:mp_metafun_macros = 1 " Highlight MetaFun keywords syn include @mpTop syntax/mp.vim unlet b:current_syntax syn region contextMPGraphic matchgroup=contextBlockDelim \ start='\\start\z(MP\%(clip\|code\|definitions\|drawing\|environment\|extensions\|inclusions\|initializations\|page\|\)\)\>.*$' \ end='\\stop\z1' \ contains=@mpTop,@NoSpell syn region contextMPGraphic matchgroup=contextBlockDelim \ start='\\start\z(\%(\%[re]usable\|use\|unique\|static\)MPgraphic\|staticMPfigure\|uniqueMPpagegraphic\)\>.*$' \ end='\\stop\z1' \ contains=@mpTop,@NoSpell endif if get(b:, 'context_lua', get(g:, 'context_lua', 1)) syn include @luaTop syntax/lua.vim unlet b:current_syntax syn region contextLuaCode matchgroup=contextBlockDelim \ start='\\startluacode\>' \ end='\\stopluacode\>' keepend \ contains=@luaTop,@NoSpell syn match contextDirectLua "\\\%(directlua\|ctxlua\)\>\%(\s*%.*$\)\=" \ nextgroup=contextBeginEndLua skipwhite skipempty \ contains=initexComment syn region contextBeginEndLua matchgroup=contextSpecial \ start="{" end="}" skip="\\[{}]" \ contained contains=@luaTop,@NoSpell endif for synname in keys(s:context_include) execute 'syn include @' . synname . 'Top' 'syntax/' . synname . '.vim' unlet b:current_syntax execute 'syn region context' . s:context_include[synname] . 'Code' \ 'matchgroup=contextBlockDelim' \ 'start=+\\start' . s:context_include[synname] . '+' \ 'end=+\\stop' . s:context_include[synname] . '+' \ 'contains=@' . synname . 'Top,@NoSpell' endfor syn match contextSectioning '\\\%(start\|stop\)\=\%(\%(sub\)*section\|\%(sub\)*subject\|chapter\|part\|component\|product\|title\)\>' \ contains=@NoSpell syn match contextSpecial '\\crlf\>\|\\par\>\|-\{2,3}\||[<>/]\=|' \ contains=@NoSpell syn match contextSpecial /\\[`'"]/ syn match contextSpecial +\\char\%(\d\{1,3}\|'\o\{1,3}\|"\x\{1,2}\)\>+ \ contains=@NoSpell syn match contextSpecial '\^\^.' syn match contextSpecial '`\%(\\.\|\^\^.\|.\)' syn match contextStyle '\\\%(em\|ss\|hw\|cg\|mf\)\>' \ contains=@NoSpell syn match contextFont '\\\%(CAP\|Cap\|cap\|Caps\|kap\|nocap\)\>' \ contains=@NoSpell syn match contextFont '\\\%(Word\|WORD\|Words\|WORDS\)\>' \ contains=@NoSpell syn match contextFont '\\\%(vi\{1,3}\|ix\|xi\{0,2}\)\>' \ contains=@NoSpell syn match contextFont '\\\%(tf\|b[si]\|s[cl]\|os\)\%(xx\|[xabcd]\)\=\>' \ contains=@NoSpell hi def link contextOptions Typedef hi def link contextComment Comment hi def link contextBlockDelim Keyword hi def link contextBuiltin Keyword hi def link contextDelimiter Delimiter hi def link contextEscaped String hi def link contextPreProc PreProc hi def link contextSectioning PreProc hi def link contextSpecial Special hi def link contextType Type hi def link contextStyle contextType hi def link contextFont contextType hi def link contextDirectLua Keyword let b:current_syntax = "context" let &cpo = s:cpo_save unlet s:cpo_save PK!L%vim80/syntax/model.vimnu[" Vim syntax file " Language: Model " Maintainer: Bram Moolenaar " Last Change: 2005 Jun 20 " very basic things only (based on the vgrindefs file). " If you use this language, please improve it, and send me the patches! " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") finish endif " A bunch of keywords syn keyword modelKeyword abs and array boolean by case cdnl char copied dispose syn keyword modelKeyword div do dynamic else elsif end entry external FALSE false syn keyword modelKeyword fi file for formal fortran global if iff ift in integer include syn keyword modelKeyword inline is lbnd max min mod new NIL nil noresult not notin od of syn keyword modelKeyword or procedure public read readln readonly record recursive rem rep syn keyword modelKeyword repeat res result return set space string subscript such then TRUE syn keyword modelKeyword true type ubnd union until varies while width " Special keywords syn keyword modelBlock beginproc endproc " Comments syn region modelComment start="\$" end="\$" end="$" " Strings syn region modelString start=+"+ end=+"+ " Character constant (is this right?) syn match modelString "'." " Define the default highlighting. " Only used when an item doesn't have highlighting yet hi def link modelKeyword Statement hi def link modelBlock PreProc hi def link modelComment Comment hi def link modelString String let b:current_syntax = "model" " vim: ts=8 sw=2 PK!5H ||vim80/syntax/progress.vimnu[" Vim syntax file " Language: Progress 4GL " Filename extensions: *.p (collides with Pascal), " *.i (collides with assembler) " *.w (collides with cweb) " Maintainer: Philip Uren Remove SPAXY spam block " Contributors: Matthew Stickney " Chris Ruprecht " Mikhail Kuperblum " John Florian " Version: 13 " Last Change: Nov 11 2012 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword=@,48-57,_,-,!,#,$,% " The Progress editor doesn't cope with tabs very well. set expandtab syn case ignore " Progress Blocks of code and mismatched "end." errors. syn match ProgressEndError "\" syn region ProgressDoBlock transparent matchgroup=ProgressDo start="\" matchgroup=ProgressDo end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction syn region ProgressForBlock transparent matchgroup=ProgressFor start="\" matchgroup=ProgressFor end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction syn region ProgressRepeatBlock transparent matchgroup=ProgressRepeat start="\" matchgroup=ProgressRepeat end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction syn region ProgressCaseBlock transparent matchgroup=ProgressCase start="\" matchgroup=ProgressCase end="\\|\" contains=ALLBUT,ProgressProcedure,ProgressFunction " These are Progress reserved words, " and they could go in ProgressReserved, " but I found it more helpful to highlight them in a different color. syn keyword ProgressConditional if else then when otherwise syn keyword ProgressFor each where " Make those TODO and debugging notes stand out! syn keyword ProgressTodo contained TODO BUG FIX syn keyword ProgressDebug contained DEBUG syn keyword ProgressDebug debugger " If you like to highlight the whole line of " the start and end of procedures " to make the whole block of code stand out: syn match ProgressProcedure "^\s*procedure.*" syn match ProgressProcedure "^\s*end\s\s*procedure.*" syn match ProgressFunction "^\s*function.*" syn match ProgressFunction "^\s*end\s\s*function.*" " ... otherwise use this: " syn keyword ProgressFunction procedure function syn keyword ProgressReserved accum[ulate] active-form active-window add alias all alter ambig[uous] analyz[e] and any apply as asc[ending] syn keyword ProgressReserved assign asynchronous at attr[-space] audit-control audit-policy authorization auto-ret[urn] avail[able] back[ground] syn keyword ProgressReserved before-h[ide] begins bell between big-endian blank break buffer-comp[are] buffer-copy by by-pointer by-variant-point[er] call syn keyword ProgressReserved can-do can-find case case-sen[sitive] cast center[ed] check chr clear clipboard codebase-locator colon color column-lab[el] syn keyword ProgressReserved col[umns] com-self compiler connected control copy-lob count-of cpstream create current current-changed current-lang[uage] syn keyword ProgressReserved current-window current_date curs[or] database dataservers dataset dataset-handle db-remote-host dbcodepage dbcollation dbname syn keyword ProgressReserved dbparam dbrest[rictions] dbtaskid dbtype dbvers[ion] dde deblank debug-list debugger decimals declare default syn keyword ProgressReserved default-noxl[ate] default-window def[ine] delete delimiter desc[ending] dict[ionary] disable discon[nect] disp[lay] distinct do dos syn keyword ProgressReserved down drop dynamic-cast dynamic-func[tion] dynamic-new each editing else enable encode end entry error-stat[us] escape syn keyword ProgressReserved etime event-procedure except exclusive[-lock] exclusive-web[-user] exists export false fetch field[s] file-info[rmation] syn keyword ProgressReserved fill find find-case-sensitive find-global find-next-occurrence find-prev-occurrence find-select find-wrap-around first syn keyword ProgressReserved first-of focus font for form[at] fram[e] frame-col frame-db frame-down frame-field frame-file frame-inde[x] frame-line syn keyword ProgressReserved frame-name frame-row frame-val[ue] from from-c[hars] from-p[ixels] function-call-type gateway[s] get-attr-call-type get-byte syn keyword ProgressReserved get-codepage[s] get-coll[ations] get-column get-error-column get-error-row get-file-name get-file-offse[t] get-key-val[ue] syn keyword ProgressReserved get-message-type get-row getbyte global go-on go-pend[ing] grant graphic-e[dge] group having header help hide host-byte-order if syn keyword ProgressReserved import in index indicator input input-o[utput] insert into is is-attr[-space] join kblabel key-code key-func[tion] key-label syn keyword ProgressReserved keycode keyfunc[tion] keylabel keys keyword label last last-even[t] last-key last-of lastkey ldbname leave library like syn keyword ProgressReserved like-sequential line-count[er] listi[ng] little-endian locked log-manager lookup machine-class map member message message-lines mouse syn keyword ProgressReserved mpe new next next-prompt no no-attr[-space] no-error no-f[ill] no-help no-hide no-label[s] no-lobs no-lock no-map syn keyword ProgressReserved no-mes[sage] no-pause no-prefe[tch] no-return-val[ue] no-undo no-val[idate] no-wait not now null num-ali[ases] num-dbs num-entries syn keyword ProgressReserved of off old on open opsys option or os-append os-command os-copy os-create-dir os-delete os-dir os-drive[s] os-error syn keyword ProgressReserved os-rename otherwise output overlay page page-bot[tom] page-num[ber] page-top param[eter] password-field pause pdbname syn keyword ProgressReserved persist[ent] pixels preproc[ess] privileges proc-ha[ndle] proc-st[atus] procedure-call-type process profiler program-name progress syn keyword ProgressReserved prompt[-for] promsgs propath provers[ion] publish put put-byte put-key-val[ue] putbyte query query-tuning quit r-index syn keyword ProgressReserved rcode-info[rmation] read-available read-exact-num readkey recid record-len[gth] rect[angle] release repeat reposition retain retry return syn keyword ProgressReserved return-val[ue] revert revoke row-created row-deleted row-modified row-unmodified run save sax-comple[te] sax-parser-error syn keyword ProgressReserved sax-running sax-uninitialized sax-write-begin sax-write-complete sax-write-content sax-write-element sax-write-error syn keyword ProgressReserved sax-write-idle sax-write-tag schema screen screen-io screen-lines scroll sdbname search search-self search-target security-policy syn keyword ProgressReserved seek select self session set set-attr-call-type setuser[id] share[-lock] shared show-stat[s] skip some source-procedure syn keyword ProgressReserved space status stream stream-handle stream-io string-xref subscribe super system-dialog table table-handle target-procedure syn keyword ProgressReserved term[inal] text text-cursor text-seg[-grow] then this-object this-procedure time title to today top-only trans[action] trigger syn keyword ProgressReserved triggers trim true underl[ine] undo unform[atted] union unique unix unless-hidden unsubscribe up update use-index use-revvideo syn keyword ProgressReserved use-underline user[id] using value values view view-as wait-for web-con[text] when where while window window-delayed-min[imize] syn keyword ProgressReserved window-maxim[ized] window-minim[ized] window-normal with work-tab[le] workfile write xcode xcode-session-key xref xref-xml yes " Strings. Handles embedded quotes. " Note that, for some reason, Progress doesn't use the backslash, "\" " as the escape character; it uses tilde, "~". syn region ProgressString matchgroup=ProgressQuote start=+"+ end=+"+ skip=+\~'\|\~\~\|\~"+ contains=@Spell syn region ProgressString matchgroup=ProgressQuote start=+'+ end=+'+ skip=+\~'\|\~\~\|\~"+ contains=@Spell syn match ProgressIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>()" " syn match ProgressDelimiter "()" syn match ProgressMatrixDelimiter "[][]" " If you prefer you can highlight the range: "syn match ProgressMatrixDelimiter "[\d\+\.\.\d\+]" syn match ProgressNumber "\<\-\=\d\+\(u\=l\=\|lu\|f\)\>" syn match ProgressByte "\$[0-9a-fA-F]\+" " More values: Logicals, and Progress's unknown value, ?. syn match ProgressNumber "?" syn keyword ProgressNumber true false yes no " If you don't like tabs: syn match ProgressShowTab "\t" " If you don't like white space on the end of lines, uncomment this: " syn match ProgressSpaceError "\s\+$" syn region ProgressComment start="/\*" end="\*/" contains=ProgressComment,ProgressTodo,ProgressDebug,@Spell syn region ProgressInclude start="^[ ]*[{]" end="[}]" contains=ProgressPreProc,ProgressOperator,ProgressString,ProgressComment syn region ProgressPreProc start="&" end="\>" contained " This next line works reasonably well. " syn match ProgressOperator "[!;|)(:.><+*=-]" " " Progress allows a '-' to be part of an identifier. To be considered " the subtraction/negation operation operator it needs a non-word " character on either side. Also valid are cases where the minus " operation appears at the beginning or end of a line. " This next line trips up on "no-undo" etc. " syn match ProgressOperator "[!;|)(:.><+*=]\|\W-\W\|^-\W\|\W-$" syn match ProgressOperator "[!;|)(:.><+*=]\|\s-\s\|^-\s\|\s-$" syn keyword ProgressOperator <= <> >= syn keyword ProgressOperator abs[olute] accelerator accept-changes accept-row-changes across active actor add-buffer add-calc-col[umn] syn keyword ProgressOperator add-columns-from add-events-proc[edure] add-fields-from add-first add-header-entry add-index-field add-interval add-last syn keyword ProgressOperator add-like-col[umn] add-like-field add-like-index add-new-field add-new-index add-rel[ation] add-schema-location add-source-buffer syn keyword ProgressOperator add-super-proc[edure] adm-data advise after-buffer after-rowid after-table alert-box allow-column-searching allow-replication alternate-key syn keyword ProgressOperator always-on-top ansi-only anywhere append append-child appl-alert[-boxes] appl-context-id application apply-callback appserver-info syn keyword ProgressOperator appserver-password appserver-userid array-m[essage] ask-overwrite assembly async-request-count async-request-handle attach-data-source syn keyword ProgressOperator attached-pairlist attach attribute-names audit-enabled audit-event-context authentication-failed auto-comp[letion] auto-delete syn keyword ProgressOperator auto-delete-xml auto-end-key auto-endkey auto-go auto-ind[ent] auto-resize auto-synchronize auto-val[idate] auto-z[ap] automatic syn keyword ProgressOperator available-formats ave[rage] avg backward[s] base-ade base-key basic-logging batch[-mode] batch-size before-buffer before-rowid syn keyword ProgressOperator before-table begin-event-group bgc[olor] binary bind bind-where blob block-iteration-display border-b[ottom-chars] syn keyword ProgressOperator border-bottom-p[ixels] border-l[eft-chars] border-left-p[ixels] border-r[ight-chars] border-right-p[ixels] border-t[op-chars] syn keyword ProgressOperator border-top-p[ixels] both bottom box box-select[able] browse buffer buffer-chars buffer-create buffer-delete buffer-field buffer-handle syn keyword ProgressOperator buffer-lines buffer-n[ame] buffer-releas[e] buffer-validate buffer-value button[s] by-reference by-value byte bytes-read syn keyword ProgressOperator bytes-written cache cache-size call-name call-type can-crea[te] can-dele[te] can-query can-read can-set can-writ[e] cancel-break syn keyword ProgressOperator cancel-button cancel-requests cancelled caps careful-paint catch cdecl chained char[acter] character_length charset checked syn keyword ProgressOperator child-buffer child-num choose class class-type clear-appl-context clear-log clear-select[ion] clear-sort-arrow[s] syn keyword ProgressOperator client-connection-id client-principal client-tty client-type client-workstation clob clone-node close close-log code codepage syn keyword ProgressOperator codepage-convert col-of collate colon-align[ed] color-table column-bgc[olor] column-codepage column-dcolor column-fgc[olor] syn keyword ProgressOperator column-font column-movable column-of column-pfc[olor] column-read-only column-resizable column-sc[rolling] com-handle combo-box syn keyword ProgressOperator command compare[s] compile complete config-name connect constructor contents context context-help context-help-file syn keyword ProgressOperator context-help-id context-pop[up] control-box control-fram[e] convert convert-to-offs[et] copy-dataset copy-sax-attributes syn keyword ProgressOperator copy-temp-table count cpcase cpcoll cpint[ernal] cplog cpprint cprcodein cprcodeout cpterm crc-val[ue] create-like syn keyword ProgressOperator create-like-sequential create-node create-node-namespace create-result-list-entry create-test-file current-column current-env[ironment] syn keyword ProgressOperator current-iteration current-query current-result-row current-row-modified current-value cursor-char cursor-line cursor-offset data-b[ind] syn keyword ProgressOperator data-entry-ret[urn] data-rel[ation] data-source data-source-complete-map data-source-modified data-source-rowid data-t[ype] date syn keyword ProgressOperator date-f[ormat] day db-references dcolor dde-error dde-i[d] dde-item dde-name dde-topic debu[g] debug-alert syn keyword ProgressOperator declare-namespace decrypt default-buffer-handle default-but[ton] default-commit default-ex[tension] default-string syn keyword ProgressOperator default-value define-user-event-manager defined delete-char delete-current-row delete-header-entry delete-line delete-node syn keyword ProgressOperator delete-result-list-entry delete-selected-row delete-selected-rows descript[ion] deselect-focused-row deselect-rows deselect-selected-row syn keyword ProgressOperator destructor detach-data-source dialog-box dir directory disable-auto-zap disable-connections disable-dump-triggers syn keyword ProgressOperator disable-load-triggers disabled display-message display-timezone display-t[ype] domain-description domain-name domain-type double syn keyword ProgressOperator drag-enabled drop-down drop-down-list drop-target dump dump-logging-now dynamic dynamic-current-value dynamic-next-value echo syn keyword ProgressOperator edge[-chars] edge-p[ixels] edit-can-paste edit-can-undo edit-clear edit-copy edit-cut edit-paste edit-undo editor empty syn keyword ProgressOperator empty-dataset empty-temp-table enable-connections enabled encoding encrypt encrypt-audit-mac-key encryption-salt end-document syn keyword ProgressOperator end-element end-event-group end-file-drop end-key end-user-prompt endkey entered entry-types-list eq error error-col[umn] syn keyword ProgressOperator error-object-detail error-row error-stack-trace error-string event-group-id event-procedure-context event-t[ype] events exclusive-id syn keyword ProgressOperator execute execution-log exp expand expandable expire explicit export-principal extended extent external extract syn keyword ProgressOperator fetch-selected-row fgc[olor] file file-create-d[ate] file-create-t[ime] file-mod-d[ate] file-mod-t[ime] file-name file-off[set] syn keyword ProgressOperator file-size file-type filename fill-in fill-mode fill-where-string filled filters final finally find-by-rowid find-current syn keyword ProgressOperator find-first find-last find-unique finder first-async[-request] first-buffer first-child first-column first-data-source syn keyword ProgressOperator first-dataset first-form first-object first-proc[edure] first-query first-serv[er] first-server-socket first-socket syn keyword ProgressOperator first-tab-i[tem] fit-last-column fix-codepage fixed-only flat-button float focused-row focused-row-selected font-table force-file syn keyword ProgressOperator fore[ground] foreign-key-hidden form-input form-long-input formatte[d] forward-only forward[s] fragmen[t] frame-spa[cing] frame-x syn keyword ProgressOperator frame-y frequency from-cur[rent] full-height[-chars] full-height-p[ixels] full-pathn[ame] full-width[-chars] syn keyword ProgressOperator full-width-p[ixels] function ge generate-pbe-key generate-pbe-salt generate-random-key generate-uuid get get-attribute get-attribute-node syn keyword ProgressOperator get-binary-data get-bits get-blue[-value] get-browse-col[umn] get-buffer-handle get-byte-order get-bytes get-bytes-available syn keyword ProgressOperator get-callback-proc-context get-callback-proc-name get-cgi-list get-cgi-long-value get-cgi-value get-changes get-child get-child-rel[ation] syn keyword ProgressOperator get-config-value get-curr[ent] get-dataset-buffer get-dir get-document-element get-double get-dropped-file get-dynamic get-file syn keyword ProgressOperator get-firs[t] get-float get-green[-value] get-header-entr[y] get-index-by-namespace-name get-index-by-qname get-iteration get-last syn keyword ProgressOperator get-localname-by-index get-long get-message get-next get-node get-number get-parent get-pointer-value get-prev get-printers get-property syn keyword ProgressOperator get-qname-by-index get-red[-value] get-rel[ation] get-repositioned-row get-rgb[-value] get-selected[-widget] get-serialized get-short syn keyword ProgressOperator get-signature get-size get-socket-option get-source-buffer get-string get-tab-item get-text-height[-chars] get-text-height-p[ixels] syn keyword ProgressOperator get-text-width[-chars] get-text-width-p[ixels] get-top-buffer get-type-by-index get-type-by-namespace-name get-type-by-qname syn keyword ProgressOperator get-unsigned-long get-unsigned-short get-uri-by-index get-value-by-index get-value-by-namespace-name get-value-by-qname syn keyword ProgressOperator get-wait[-state] grayed grid-factor-h[orizontal] grid-factor-v[ertical] grid-snap grid-unit-height[-chars] grid-unit-height-p[ixels] syn keyword ProgressOperator grid-unit-width[-chars] grid-unit-width-p[ixels] grid-visible group-box gt guid handle handler has-lobs has-records height[-chars] syn keyword ProgressOperator height-p[ixels] help-topic hex-decode hex-encode hidden hint hori[zontal] html-charset html-end-of-line html-end-of-page syn keyword ProgressOperator html-frame-begin html-frame-end html-header-begin html-header-end html-title-begin html-title-end hwnd icfparam[eter] icon syn keyword ProgressOperator ignore-current-mod[ified] image image-down image-insensitive image-size image-size-c[hars] image-size-p[ixels] image-up immediate-display syn keyword ProgressOperator implements import-node import-principal in-handle increment-exclusive-id index-hint index-info[rmation] indexed-reposition syn keyword ProgressOperator info[rmation] inherit-bgc[olor] inherit-fgc[olor] inherits init[ial] initial-dir initial-filter initialize-document-type initiate syn keyword ProgressOperator inner inner-chars inner-lines input-value insert-attribute insert-b[acktab] insert-before insert-file insert-row syn keyword ProgressOperator insert-string insert-t[ab] instantiating-procedure int[eger] interface internal-entries interval invoke is-clas[s] syn keyword ProgressOperator is-codepage-fixed is-column-codepage is-lead-byte is-open is-parameter-set is-row-selected is-selected is-xml iso-date item syn keyword ProgressOperator items-per-row join-by-sqldb keep-connection-open keep-frame-z[-order] keep-messages keep-security-cache keep-tab-order key syn keyword ProgressOperator keyword-all label-bgc[olor] label-dc[olor] label-fgc[olor] label-font label-pfc[olor] labels landscape language[s] large syn keyword ProgressOperator large-to-small last-async[-request] last-batch last-child last-form last-object last-proce[dure] last-serv[er] last-server-socket syn keyword ProgressOperator last-socket last-tab-i[tem] lc le leading left left-align[ed] left-trim length line list-events list-item-pairs list-items syn keyword ProgressOperator list-property-names list-query-attrs list-set-attrs list-widgets literal-question load load-domains load-icon load-image load-image-down syn keyword ProgressOperator load-image-insensitive load-image-up load-mouse-p[ointer] load-picture load-small-icon lob-dir local-host local-name local-port syn keyword ProgressOperator locator-column-number locator-line-number locator-public-id locator-system-id locator-type lock-registration log log-audit-event syn keyword ProgressOperator log-entry-types log-threshold logfile-name logging-level logical login-expiration-timestamp login-host login-state logout long[char] syn keyword ProgressOperator longchar-to-node-value lookahead lower lt mandatory manual-highlight margin-extra margin-height[-chars] margin-height-p[ixels] syn keyword ProgressOperator margin-width[-chars] margin-width-p[ixels] mark-new mark-row-state matches max-button max-chars max-data-guess max-height[-chars] syn keyword ProgressOperator max-height-p[ixels] max-rows max-size max-val[ue] max-width[-chars] max-width-p[ixels] maximize max[imum] maximum-level memory memptr syn keyword ProgressOperator memptr-to-node-value menu menu-bar menu-item menu-k[ey] menu-m[ouse] menubar merge-by-field merge-changes merge-row-changes message-area syn keyword ProgressOperator message-area-font method min-button min-column-width-c[hars] min-column-width-p[ixels] min-height[-chars] min-height-p[ixels] syn keyword ProgressOperator min-schema-marshal min-size min-val[ue] min-width[-chars] min-width-p[ixels] min[imum] modified mod[ulo] month mouse-p[ointer] movable syn keyword ProgressOperator move-after[-tab-item] move-befor[e-tab-item] move-col[umn] move-to-b[ottom] move-to-eof move-to-t[op] mtime multi-compile multiple syn keyword ProgressOperator multiple-key multitasking-interval must-exist must-understand name namespace-prefix namespace-uri native ne needs-appserver-prompt syn keyword ProgressOperator needs-prompt nested new-instance new-row next-col[umn] next-rowid next-sibling next-tab-ite[m] next-value no-apply syn keyword ProgressOperator no-array-m[essage] no-assign no-attr-l[ist] no-auto-validate no-bind-where no-box no-console no-convert no-current-value no-debug syn keyword ProgressOperator no-drag no-echo no-empty-space no-focus no-index-hint no-inherit-bgc[olor] no-inherit-fgc[olor] no-join-by-sqldb no-lookahead syn keyword ProgressOperator no-row-markers no-schema-marshal no-scrollbar-v[ertical] no-separate-connection no-separators no-tab[-stop] no-und[erline] syn keyword ProgressOperator no-word-wrap node-value node-value-to-longchar node-value-to-memptr nonamespace-schema-location none normalize not-active syn keyword ProgressOperator num-buffers num-but[tons] num-child-relations num-children num-col[umns] num-copies num-dropped-files num-fields num-formats syn keyword ProgressOperator num-header-entries num-items num-iterations num-lines num-locked-col[umns] num-log-files num-messages num-parameters num-references syn keyword ProgressOperator num-relations num-repl[aced] num-results num-selected-rows num-selected[-widgets] num-source-buffers num-tabs num-to-retain syn keyword ProgressOperator num-top-buffers num-visible-col[umns] numeric numeric-dec[imal-point] numeric-f[ormat] numeric-sep[arator] object ok ok-cancel syn keyword ProgressOperator on-frame[-border] ordered-join ordinal orientation origin-handle origin-rowid os-getenv outer outer-join override owner owner-document syn keyword ProgressOperator page-size page-wid[th] paged parent parent-buffer parent-rel[ation] parse-status partial-key pascal pathname syn keyword ProgressOperator pbe-hash-alg[orithm] pbe-key-rounds perf[ormance] persistent-cache-disabled persistent-procedure pfc[olor] pixels-per-col[umn] syn keyword ProgressOperator pixels-per-row popup-m[enu] popup-o[nly] portrait position precision prefer-dataset prepare-string prepared presel[ect] prev syn keyword ProgressOperator prev-col[umn] prev-sibling prev-tab-i[tem] primary printer printer-control-handle printer-hdc printer-name printer-port syn keyword ProgressOperator printer-setup private private-d[ata] proce[dure] procedure-name progress-s[ource] property protected proxy proxy-password syn keyword ProgressOperator proxy-userid public public-id published-events put-bits put-bytes put-double put-float put-long put-short put-string syn keyword ProgressOperator put-unsigned-long put-unsigned-short query-close query-off-end query-open query-prepare question quoter radio-buttons radio-set random syn keyword ProgressOperator raw raw-transfer read read-file read-only read-xml read-xmlschema real recursive reference-only refresh syn keyword ProgressOperator refresh-audit-policy refreshable register-domain reject-changes reject-row-changes rejected relation-fi[elds] relations-active remote syn keyword ProgressOperator remote-host remote-port remove-attribute remove-child remove-events-proc[edure] remove-super-proc[edure] replace replace-child syn keyword ProgressOperator replace-selection-text replication-create replication-delete replication-write reposition-back[ward] reposition-forw[ard] reposition-to-row syn keyword ProgressOperator reposition-to-rowid request reset resiza[ble] resize restart-row restart-rowid result retain-s[hape] retry-cancel return-ins[erted] syn keyword ProgressOperator return-to-start-di[r] return-value-data-type returns reverse-from rgb-v[alue] right right-align[ed] right-trim roles round rounded syn keyword ProgressOperator routine-level row row-height[-chars] row-height-p[ixels] row-ma[rkers] row-of row-resizable row-state rowid rule run-proc[edure] syn keyword ProgressOperator save-as save-file save-row-changes save-where-string sax-attributes sax-parse sax-parse-first sax-parse-next sax-reader syn keyword ProgressOperator sax-writer schema-change schema-location schema-marshal schema-path screen-val[ue] scroll-bars scroll-delta scroll-offset syn keyword ProgressOperator scroll-to-current-row scroll-to-i[tem] scroll-to-selected-row scrollable scrollbar-h[orizontal] scrollbar-v[ertical] syn keyword ProgressOperator scrolled-row-pos[ition] scrolling seal seal-timestamp section select-all select-focused-row select-next-row select-prev-row select-row syn keyword ProgressOperator selectable selected selection-end selection-list selection-start selection-text send sensitive separate-connection syn keyword ProgressOperator separator-fgc[olor] separators server server-connection-bo[und] server-connection-bound-re[quest] server-connection-co[ntext] syn keyword ProgressOperator server-connection-id server-operating-mode server-socket session-end session-id set-actor set-appl-context set-attribute syn keyword ProgressOperator set-attribute-node set-blue[-value] set-break set-buffers set-byte-order set-callback set-callback-procedure set-client set-commit syn keyword ProgressOperator set-connect-procedure set-contents set-db-client set-dynamic set-green[-value] set-input-source set-must-understand set-node syn keyword ProgressOperator set-numeric-form[at] set-option set-output-destination set-parameter set-pointer-val[ue] set-property set-read-response-procedure syn keyword ProgressOperator set-red[-value] set-repositioned-row set-rgb[-value] set-rollback set-selection set-serialized set-size set-socket-option syn keyword ProgressOperator set-sort-arrow set-wait[-state] short show-in-task[bar] side-label-h[andle] side-lab[els] silent simple single single-character size syn keyword ProgressOperator size-c[hars] size-p[ixels] skip-deleted-rec[ord] slider small-icon small-title smallint soap-fault soap-fault-actor syn keyword ProgressOperator soap-fault-code soap-fault-detail soap-fault-string soap-header soap-header-entryref socket sort sort-ascending sort-number source syn keyword ProgressOperator sql sqrt ssl-server-name standalone start-document start-element start[ing] startup-parameters state-detail static syn keyword ProgressOperator status-area status-area-font stdcall stop stop-parsing stoppe[d] stored-proc[edure] stretch-to-fit strict string string-value syn keyword ProgressOperator sub-ave[rage] sub-count sub-max[imum] sub-menu sub-menu-help sub-min[imum] sub-total subst[itute] substr[ing] subtype sum syn keyword ProgressOperator super-proc[edures] suppress-namespace-processing suppress-w[arnings] suspend symmetric-encryption-algorithm symmetric-encryption-iv syn keyword ProgressOperator symmetric-encryption-key symmetric-support synchronize system-alert[-boxes] system-help system-id tab-position tab-stop table-crc-list syn keyword ProgressOperator table-list table-num[ber] target temp-dir[ectory] temp-table temp-table-prepar[e] terminate text-selected three-d through throw syn keyword ProgressOperator thru tic-marks time-source timezone title-bgc[olor] title-dc[olor] title-fgc[olor] title-fo[nt] to-rowid toggle-box syn keyword ProgressOperator tooltip tooltips top top-nav-query topic total tracking-changes trailing trans-init-proc[edure] transaction-mode syn keyword ProgressOperator transpar[ent] trunc[ate] ttcodepage type type-of unbox unbuff[ered] unique-id unique-match unload unsigned-byte unsigned-integer syn keyword ProgressOperator unsigned-long unsigned-short update-attribute upper url url-decode url-encode url-password url-userid use use-dic[t-exps] syn keyword ProgressOperator use-filename use-text use-widget-pool user-id valid-event valid-handle valid-object validate validate-expressio[n] syn keyword ProgressOperator validate-message validate-seal validate-xml validation-enabled var[iable] verb[ose] version vert[ical] view-first-column-on-reopen syn keyword ProgressOperator virtual-height[-chars] virtual-height-p[ixels] virtual-width[-chars] virtual-width-p[ixels] visible void wait warning weekday where-string syn keyword ProgressOperator widget widget-e[nter] widget-h[andle] widget-id widget-l[eave] widget-pool width[-chars] width-p[ixels] window-name syn keyword ProgressOperator window-sta[te] window-sys[tem] word-index word-wrap work-area-height-p[ixels] work-area-width-p[ixels] work-area-x work-area-y syn keyword ProgressOperator write-cdata write-characters write-comment write-data-element write-empty-element write-entity-ref write-external-dtd syn keyword ProgressOperator write-fragment write-message write-processing-instruction write-status write-xml write-xmlschema x x-document x-noderef x-of syn keyword ProgressOperator xml-data-type xml-node-name xml-node-type xml-schema-pat[h] xml-suppress-namespace-processing y y-of year year-offset yes-no syn keyword ProgressOperator yes-no-cancel syn keyword ProgressType char[acter] int[eger] int64 dec[imal] log[ical] da[te] datetime datetime-tz syn sync lines=800 " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overridden later. hi def link ProgressByte Number hi def link ProgressCase Repeat hi def link ProgressComment Comment hi def link ProgressConditional Conditional hi def link ProgressDebug Debug hi def link ProgressDo Repeat hi def link ProgressEndError Error hi def link ProgressFor Repeat hi def link ProgressFunction Procedure hi def link ProgressIdentifier Identifier hi def link ProgressInclude Include hi def link ProgressMatrixDelimiter Identifier hi def link ProgressNumber Number hi def link ProgressOperator Operator hi def link ProgressPreProc PreProc hi def link ProgressProcedure Procedure hi def link ProgressQuote Delimiter hi def link ProgressRepeat Repeat hi def link ProgressReserved Statement hi def link ProgressSpaceError Error hi def link ProgressString String hi def link ProgressTodo Todo hi def link ProgressType Statement hi def link ProgressShowTab Error let b:current_syntax = "progress" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 sw=8 PK!p<<vim80/syntax/svn.vimnu[" Vim syntax file " Language: Subversion (svn) commit file " Maintainer: Dmitry Vasiliev " URL: https://github.com/hdima/vim-scripts/blob/master/syntax/svn.vim " Last Change: 2013-11-08 " Filenames: svn-commit*.tmp " Version: 1.10 " Contributors: " " List of the contributors in alphabetical order: " " A. S. Budden " Ingo Karkat " Myk Taylor " Stefano Zacchiroli " quit when a syntax file was already loaded. if exists("b:current_syntax") finish endif syn spell toplevel syn match svnFirstLine "\%^.*" nextgroup=svnRegion,svnBlank skipnl syn match svnSummary "^.\{0,50\}" contained containedin=svnFirstLine nextgroup=svnOverflow contains=@Spell syn match svnOverflow ".*" contained contains=@Spell syn match svnBlank "^.*" contained contains=@Spell syn region svnRegion end="\%$" matchgroup=svnDelimiter start="^--.*--$" contains=svnRemoved,svnRenamed,svnAdded,svnModified,svnProperty,@NoSpell syn match svnRemoved "^D .*$" contained contains=@NoSpell syn match svnRenamed "^R[ M][ U][ +] .*$" contained contains=@NoSpell syn match svnAdded "^A[ M][ U][ +] .*$" contained contains=@NoSpell syn match svnModified "^M[ M][ U] .*$" contained contains=@NoSpell syn match svnProperty "^_M[ U] .*$" contained contains=@NoSpell " Synchronization. syn sync clear syn sync match svnSync grouphere svnRegion "^--.*--$"me=s-1 " Define the default highlighting. " Only when an item doesn't have highlighting yet. hi def link svnSummary Keyword hi def link svnBlank Error hi def link svnRegion Comment hi def link svnDelimiter NonText hi def link svnRemoved Constant hi def link svnAdded Identifier hi def link svnModified Special hi def link svnProperty Special hi def link svnRenamed Special let b:current_syntax = "svn" PK!|vim80/syntax/cs.vimnu[" Vim syntax file " Language: C# " Maintainer: Anduin Withers " Former Maintainer: Johannes Zellner " Last Change: Fri Aug 14 13:56:37 PDT 2009 " Filenames: *.cs " $Id: cs.vim,v 1.4 2006/05/03 21:20:02 vimboss Exp $ " " REFERENCES: " [1] ECMA TC39: C# Language Specification (WD13Oct01.doc) if exists("b:current_syntax") finish endif let s:cs_cpo_save = &cpo set cpo&vim " type syn keyword csType bool byte char decimal double float int long object sbyte short string uint ulong ushort void " storage syn keyword csStorage class delegate enum interface namespace struct " repeat / condition / label syn keyword csRepeat break continue do for foreach goto return while syn keyword csConditional else if switch syn keyword csLabel case default " there's no :: operator in C# syn match csOperatorError display +::+ " user labels (see [1] 8.6 Statements) syn match csLabel display +^\s*\I\i*\s*:\([^:]\)\@=+ " modifier syn keyword csModifier abstract const extern internal override private protected public readonly sealed static virtual volatile " constant syn keyword csConstant false null true " exception syn keyword csException try catch finally throw " TODO: syn keyword csUnspecifiedStatement as base checked event fixed in is lock new operator out params ref sizeof stackalloc this typeof unchecked unsafe using " TODO: syn keyword csUnsupportedStatement add remove value " TODO: syn keyword csUnspecifiedKeyword explicit implicit " Contextual Keywords syn match csContextualStatement /\[^:]\+:/me=s+5 " Comments " " PROVIDES: @csCommentHook " " TODO: include strings ? " syn keyword csTodo contained TODO FIXME XXX NOTE syn region csComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell syn match csComment "//.*$" contains=@csCommentHook,csTodo,@Spell " xml markup inside '///' comments syn cluster xmlRegionHook add=csXmlCommentLeader syn cluster xmlCdataHook add=csXmlCommentLeader syn cluster xmlStartTagHook add=csXmlCommentLeader syn keyword csXmlTag contained Libraries Packages Types Excluded ExcludedTypeName ExcludedLibraryName syn keyword csXmlTag contained ExcludedBucketName TypeExcluded Type TypeKind TypeSignature AssemblyInfo syn keyword csXmlTag contained AssemblyName AssemblyPublicKey AssemblyVersion AssemblyCulture Base syn keyword csXmlTag contained BaseTypeName Interfaces Interface InterfaceName Attributes Attribute syn keyword csXmlTag contained AttributeName Members Member MemberSignature MemberType MemberValue syn keyword csXmlTag contained ReturnValue ReturnType Parameters Parameter MemberOfPackage syn keyword csXmlTag contained ThreadingSafetyStatement Docs devdoc example overload remarks returns summary syn keyword csXmlTag contained threadsafe value internalonly nodoc exception param permission platnote syn keyword csXmlTag contained seealso b c i pre sub sup block code note paramref see subscript superscript syn keyword csXmlTag contained list listheader item term description altcompliant altmember syn cluster xmlTagHook add=csXmlTag syn match csXmlCommentLeader +\/\/\/+ contained syn match csXmlComment +\/\/\/.*$+ contains=csXmlCommentLeader,@csXml,@Spell syntax include @csXml syntax/xml.vim hi def link xmlRegion Comment " [1] 9.5 Pre-processing directives syn region csPreCondit \ start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\)" \ skip="\\$" end="$" contains=csComment keepend syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$" \ end="^\s*#\s*endregion" transparent fold contains=TOP " Strings and constants syn match csSpecialError contained "\\." syn match csSpecialCharError contained "[^']" " [1] 9.4.4.4 Character literals syn match csSpecialChar contained +\\["\\'0abfnrtvx]+ " unicode characters syn match csUnicodeNumber +\\\(u\x\{4}\|U\x\{8}\)+ contained contains=csUnicodeSpecifier syn match csUnicodeSpecifier +\\[uU]+ contained syn region csVerbatimString start=+@"+ end=+"+ skip=+""+ contains=csVerbatimSpec,@Spell syn match csVerbatimSpec +@"+he=s+1 contained syn region csString start=+"+ end=+"+ end=+$+ contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError syn match csCharacter "'\\''" contains=csSpecialChar syn match csCharacter "'[^\\]'" syn match csNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" syn match csNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" syn match csNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" syn match csNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" " The default highlighting. hi def link csType Type hi def link csStorage StorageClass hi def link csRepeat Repeat hi def link csConditional Conditional hi def link csLabel Label hi def link csModifier StorageClass hi def link csConstant Constant hi def link csException Exception hi def link csUnspecifiedStatement Statement hi def link csUnsupportedStatement Statement hi def link csUnspecifiedKeyword Keyword hi def link csContextualStatement Statement hi def link csOperatorError Error hi def link csTodo Todo hi def link csComment Comment hi def link csSpecialError Error hi def link csSpecialCharError Error hi def link csString String hi def link csVerbatimString String hi def link csVerbatimSpec SpecialChar hi def link csPreCondit PreCondit hi def link csCharacter Character hi def link csSpecialChar SpecialChar hi def link csNumber Number hi def link csUnicodeNumber SpecialChar hi def link csUnicodeSpecifier SpecialChar " xml markup hi def link csXmlCommentLeader Comment hi def link csXmlComment Comment hi def link csXmlTag Statement let b:current_syntax = "cs" let &cpo = s:cs_cpo_save unlet s:cs_cpo_save " vim: ts=8 PK!L飐 2 2vim80/syntax/slrnrc.vimnu[" Vim syntax file " Language: Slrn setup file (based on slrn 0.9.8.1) " Maintainer: Preben 'Peppe' Guldberg " Last Change: 23 April 2006 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn keyword slrnrcTodo contained Todo " In some places whitespace is illegal syn match slrnrcSpaceError contained "\s" syn match slrnrcNumber contained "-\=\<\d\+\>" syn match slrnrcNumber contained +'[^']\+'+ syn match slrnrcSpecKey contained +\(\\[er"']\|\^[^'"]\|\\\o\o\o\)+ syn match slrnrcKey contained "\S\+" contains=slrnrcSpecKey syn region slrnrcKey contained start=+"+ skip=+\\"+ end=+"+ oneline contains=slrnrcSpecKey syn region slrnrcKey contained start=+'+ skip=+\\'+ end=+'+ oneline contains=slrnrcSpecKey syn match slrnrcSpecChar contained +'+ syn match slrnrcSpecChar contained +\\[n"]+ syn match slrnrcSpecChar contained "%[dfmnrs%]" syn match slrnrcString contained /[^ \t%"']\+/ contains=slrnrcSpecChar syn region slrnrcString contained start=+"+ skip=+\\"+ end=+"+ oneline contains=slrnrcSpecChar syn match slrnSlangPreCondit "^#\s*ifn\=\(def\>\|false\>\|true\>\|\$\)" syn match slrnSlangPreCondit "^#\s*e\(lif\|lse\|ndif\)\>" syn match slrnrcComment "%.*$" contains=slrnrcTodo syn keyword slrnrcVarInt contained abort_unmodified_edits article_window_page_overlap auto_mark_article_as_read beep broken_xref broken_xref cc_followup check_new_groups syn keyword slrnrcVarInt contained color_by_score confirm_actions custom_sort_by_threads display_cursor_bar drop_bogus_groups editor_uses_mime_charset emphasized_text_mask syn keyword slrnrcVarInt contained emphasized_text_mode fold_headers fold_headers followup_strip_signature force_authentication force_authentication generate_date_header syn keyword slrnrcVarInt contained generate_email_from generate_email_from generate_message_id grouplens_port hide_pgpsignature hide_quotes hide_signature syn keyword slrnrcVarInt contained hide_verbatim_marks hide_verbatim_text highlight_unread_subjects highlight_urls ignore_signature kill_score lines_per_update syn keyword slrnrcVarInt contained mail_editor_is_mua max_low_score max_queued_groups min_high_score mouse netiquette_warnings new_subject_breaks_threads no_autosave syn keyword slrnrcVarInt contained no_backups prefer_head process_verbatim_marks query_next_article query_next_group query_read_group_cutoff read_active reject_long_lines syn keyword slrnrcVarInt contained scroll_by_page show_article show_thread_subject simulate_graphic_chars smart_quote sorting_method spoiler_char spoiler_char syn keyword slrnrcVarInt contained spoiler_display_mode spoiler_display_mode spool_check_up_on_nov spool_check_up_on_nov uncollapse_threads unsubscribe_new_groups use_blink syn keyword slrnrcVarInt contained use_color use_flow_control use_grouplens use_grouplens use_header_numbers use_inews use_inews use_localtime use_metamail use_mime use_mime syn keyword slrnrcVarInt contained use_recommended_msg_id use_slrnpull use_slrnpull use_tilde use_tmpdir use_uudeview use_uudeview warn_followup_to wrap_flags wrap_method syn keyword slrnrcVarInt contained write_newsrc_flags " Listed for removal syn keyword slrnrcVarInt contained author_display display_author_realname display_score group_dsc_start_column process_verbatum_marks prompt_next_group query_reconnect syn keyword slrnrcVarInt contained show_descriptions use_xgtitle " Match as a "string" too syn region slrnrcVarIntStr contained matchgroup=slrnrcVarInt start=+"+ end=+"+ oneline contains=slrnrcVarInt,slrnrcSpaceError syn keyword slrnrcVarStr contained Xbrowser art_help_line art_status_line cansecret_file cc_post_string charset custom_headers custom_sort_order decode_directory syn keyword slrnrcVarStr contained editor_command failed_posts_file followup_custom_headers followup_date_format followup_string followupto_string group_help_line syn keyword slrnrcVarStr contained group_status_line grouplens_host grouplens_pseudoname header_help_line header_status_line hostname inews_program macro_directory syn keyword slrnrcVarStr contained mail_editor_command metamail_command mime_charset non_Xbrowser organization overview_date_format post_editor_command post_object syn keyword slrnrcVarStr contained postpone_directory printer_name quote_string realname reply_custom_headers reply_string replyto save_directory save_posts save_replies syn keyword slrnrcVarStr contained score_editor_command scorefile sendmail_command server_object signature signoff_string spool_active_file spool_activetimes_file syn keyword slrnrcVarStr contained spool_inn_root spool_newsgroups_file spool_nov_file spool_nov_root spool_overviewfmt_file spool_root supersedes_custom_headers syn keyword slrnrcVarStr contained top_status_line username " Listed for removal syn keyword slrnrcVarStr contained followup cc_followup_string " Match as a "string" too syn region slrnrcVarStrStr contained matchgroup=slrnrcVarStr start=+"+ end=+"+ oneline contains=slrnrcVarStr,slrnrcSpaceError " Various commands syn region slrnrcCmdLine matchgroup=slrnrcCmd start="\<\(autobaud\|color\|compatible_charsets\|group_display_format\|grouplens_add\|header_display_format\|ignore_quotes\|include\|interpret\|mono\|nnrpaccess\|posting_host\|server\|set\|setkey\|strip_re_regexp\|strip_sig_regexp\|strip_was_regexp\|unsetkey\|visible_headers\)\>" end="$" oneline contains=slrnrc\(String\|Comment\) " Listed for removal syn region slrnrcCmdLine matchgroup=slrnrcCmd start="\<\(cc_followup_string\|decode_directory\|editor_command\|followup\|hostname\|organization\|quote_string\|realname\|replyto\|scorefile\|signature\|username\)\>" end="$" oneline contains=slrnrc\(String\|Comment\) " Setting variables syn keyword slrnrcSet contained set syn match slrnrcSetStr "^\s*set\s\+\S\+" skipwhite nextgroup=slrnrcString contains=slrnrcSet,slrnrcVarStr\(Str\)\= syn match slrnrcSetInt contained "^\s*set\s\+\S\+" contains=slrnrcSet,slrnrcVarInt\(Str\)\= syn match slrnrcSetIntLine "^\s*set\s\+\S\+\s\+\(-\=\d\+\>\|'[^']\+'\)" contains=slrnrcSetInt,slrnrcNumber,slrnrcVarInt " Color definitions syn match slrnrcColorObj contained "\" syn keyword slrnrcColorObj contained article author boldtext box cursor date description error frame from_myself group grouplens_display header_name header_number headers syn keyword slrnrcColorObj contained high_score italicstext menu menu_press message neg_score normal pgpsignature pos_score quotes response_char selection signature status syn keyword slrnrcColorObj contained subject thread_number tilde tree underlinetext unread_subject url verbatim " Listed for removal syn keyword slrnrcColorObj contained verbatum syn region slrnrcColorObjStr contained matchgroup=slrnrcColorObj start=+"+ end=+"+ oneline contains=slrnrcColorObj,slrnrcSpaceError syn keyword slrnrcColorVal contained default syn keyword slrnrcColorVal contained black blue brightblue brightcyan brightgreen brightmagenta brightred brown cyan gray green lightgray magenta red white yellow syn region slrnrcColorValStr contained matchgroup=slrnrcColorVal start=+"+ end=+"+ oneline contains=slrnrcColorVal,slrnrcSpaceError " Mathcing a function with three arguments syn keyword slrnrcColor contained color syn match slrnrcColorInit contained "^\s*color\s\+\S\+" skipwhite nextgroup=slrnrcColorVal\(Str\)\= contains=slrnrcColor\(Obj\|ObjStr\)\= syn match slrnrcColorLine "^\s*color\s\+\S\+\s\+\S\+" skipwhite nextgroup=slrnrcColorVal\(Str\)\= contains=slrnrcColor\(Init\|Val\|ValStr\) " Mono settings syn keyword slrnrcMonoVal contained blink bold none reverse underline syn region slrnrcMonoValStr contained matchgroup=slrnrcMonoVal start=+"+ end=+"+ oneline contains=slrnrcMonoVal,slrnrcSpaceError " Color object is inherited " Mono needs at least one argument syn keyword slrnrcMono contained mono syn match slrnrcMonoInit contained "^\s*mono\s\+\S\+" contains=slrnrcMono,slrnrcColorObj\(Str\)\= syn match slrnrcMonoLine "^\s*mono\s\+\S\+\s\+\S.*" contains=slrnrcMono\(Init\|Val\|ValStr\),slrnrcComment " Functions in article mode syn keyword slrnrcFunArt contained article_bob article_eob article_left article_line_down article_line_up article_page_down article_page_up article_right article_search syn keyword slrnrcFunArt contained author_search_backward author_search_forward browse_url cancel catchup catchup_all create_score decode delete delete_thread digit_arg syn keyword slrnrcFunArt contained enlarge_article_window evaluate_cmd exchange_mark expunge fast_quit followup forward forward_digest get_children_headers get_parent_header syn keyword slrnrcFunArt contained goto_article goto_last_read grouplens_rate_article header_bob header_eob header_line_down header_line_up header_page_down header_page_up syn keyword slrnrcFunArt contained help hide_article locate_article mark_spot next next_high_score next_same_subject pipe post post_postponed previous print quit redraw syn keyword slrnrcFunArt contained repeat_last_key reply request save show_spoilers shrink_article_window skip_quotes skip_to_next_group skip_to_previous_group syn keyword slrnrcFunArt contained subject_search_backward subject_search_forward supersede suspend tag_header toggle_collapse_threads toggle_header_formats syn keyword slrnrcFunArt contained toggle_header_tag toggle_headers toggle_pgpsignature toggle_quotes toggle_rot13 toggle_signature toggle_sort toggle_verbatim_marks syn keyword slrnrcFunArt contained toggle_verbatim_text uncatchup uncatchup_all undelete untag_headers view_scores wrap_article zoom_article_window " Listed for removal syn keyword slrnrcFunArt contained art_bob art_eob art_xpunge article_linedn article_lineup article_pagedn article_pageup down enlarge_window goto_beginning goto_end left syn keyword slrnrcFunArt contained locate_header_by_msgid pagedn pageup pipe_article prev print_article right scroll_dn scroll_up shrink_window skip_to_prev_group syn keyword slrnrcFunArt contained toggle_show_author up " Functions in group mode syn keyword slrnrcFunGroup contained add_group bob catchup digit_arg eob evaluate_cmd group_search group_search_backward group_search_forward help line_down line_up move_group syn keyword slrnrcFunGroup contained page_down page_up post post_postponed quit redraw refresh_groups repeat_last_key save_newsrc select_group subscribe suspend syn keyword slrnrcFunGroup contained toggle_group_formats toggle_hidden toggle_list_all toggle_scoring transpose_groups uncatchup unsubscribe " Listed for removal syn keyword slrnrcFunGroup contained down group_bob group_eob pagedown pageup toggle_group_display uncatch_up up " Functions in readline mode (actually from slang's slrline.c) syn keyword slrnrcFunRead contained bdel bol complete cycle del delbol delbow deleol down enter eol left quoted_insert right self_insert trim up " Binding keys syn keyword slrnrcSetkeyObj contained article group readline syn region slrnrcSetkeyObjStr contained matchgroup=slrnrcSetkeyObj start=+"+ end=+"+ oneline contains=slrnrcSetkeyObj syn match slrnrcSetkeyArt contained '\("\=\)\\1\s\+\S\+' skipwhite nextgroup=slrnrcKey contains=slrnrcSetKeyObj\(Str\)\=,slrnrcFunArt syn match slrnrcSetkeyGroup contained '\("\=\)\\1\s\+\S\+' skipwhite nextgroup=slrnrcKey contains=slrnrcSetKeyObj\(Str\)\=,slrnrcFunGroup syn match slrnrcSetkeyRead contained '\("\=\)\\1\s\+\S\+' skipwhite nextgroup=slrnrcKey contains=slrnrcSetKeyObj\(Str\)\=,slrnrcFunRead syn match slrnrcSetkey "^\s*setkey\>" skipwhite nextgroup=slrnrcSetkeyArt,slrnrcSetkeyGroup,slrnrcSetkeyRead " Unbinding keys syn match slrnrcUnsetkey '^\s*unsetkey\s\+\("\)\=\(article\|group\|readline\)\>\1' skipwhite nextgroup=slrnrcKey contains=slrnrcSetkeyObj\(Str\)\= " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link slrnrcTodo Todo hi def link slrnrcSpaceError Error hi def link slrnrcNumber Number hi def link slrnrcSpecKey SpecialChar hi def link slrnrcKey String hi def link slrnrcSpecChar SpecialChar hi def link slrnrcString String hi def link slrnSlangPreCondit Special hi def link slrnrcComment Comment hi def link slrnrcVarInt Identifier hi def link slrnrcVarStr Identifier hi def link slrnrcCmd slrnrcSet hi def link slrnrcSet Operator hi def link slrnrcColor Keyword hi def link slrnrcColorObj Identifier hi def link slrnrcColorVal String hi def link slrnrcMono Keyword hi def link slrnrcMonoObj Identifier hi def link slrnrcMonoVal String hi def link slrnrcFunArt Macro hi def link slrnrcFunGroup Macro hi def link slrnrcFunRead Macro hi def link slrnrcSetkeyObj Identifier hi def link slrnrcSetkey Keyword hi def link slrnrcUnsetkey slrnrcSetkey let b:current_syntax = "slrnrc" "EOF vim: ts=8 noet tw=120 sw=8 sts=0 PK!s'/vim80/syntax/rrst.vimnu[" reStructured Text with R statements " Language: reST with R code chunks " Maintainer: Alex Zvoleff, azvoleff@mail.sdsu.edu " Homepage: https://github.com/jalvesaq/R-Vim-runtime " Last Change: Tue Jun 28, 2016 08:53AM " " CONFIGURATION: " To highlight chunk headers as R code, put in your vimrc: " let rrst_syn_hl_chunk = 1 if exists("b:current_syntax") finish endif " load all of the rst info runtime syntax/rst.vim unlet b:current_syntax " load all of the r syntax highlighting rules into @R syntax include @R syntax/r.vim " highlight R chunks if exists("g:rrst_syn_hl_chunk") " highlight R code inside chunk header syntax match rrstChunkDelim "^\.\. {r" contained syntax match rrstChunkDelim "}$" contained else syntax match rrstChunkDelim "^\.\. {r .*}$" contained endif syntax match rrstChunkDelim "^\.\. \.\.$" contained syntax region rrstChunk start="^\.\. {r.*}$" end="^\.\. \.\.$" contains=@R,rrstChunkDelim keepend transparent fold " also highlight in-line R code syntax match rrstInlineDelim "`" contained syntax match rrstInlineDelim ":r:" contained syntax region rrstInline start=":r: *`" skip=/\\\\\|\\`/ end="`" contains=@R,rrstInlineDelim keepend hi def link rrstChunkDelim Special hi def link rrstInlineDelim Special let b:current_syntax = "rrst" " vim: ts=8 sw=2 PK!b((vim80/syntax/lilo.vimnu[" Vim syntax file " Language: lilo configuration (lilo.conf) " Maintainer: Niels Horn " Previous Maintainer: David Necas (Yeti) " Last Change: 2010-02-03 " Setup " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,.,-,_ syn case ignore " Base constructs syn match liloError "\S\+" syn match liloComment "#.*$" syn match liloEnviron "\$\w\+" contained syn match liloEnviron "\${[^}]\+}" contained syn match liloDecNumber "\d\+" contained syn match liloHexNumber "0[xX]\x\+" contained syn match liloDecNumberP "\d\+p\=" contained syn match liloSpecial contained "\\\(\"\|\\\|$\)" syn region liloString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained contains=liloSpecial,liloEnviron syn match liloLabel :[^ "]\+: contained contains=liloSpecial,liloEnviron syn region liloPath start=+[$/]+ skip=+\\\\\|\\ \|\\$"+ end=+ \|$+ contained contains=liloSpecial,liloEnviron syn match liloDecNumberList "\(\d\|,\)\+" contained contains=liloDecNumber syn match liloDecNumberPList "\(\d\|[,p]\)\+" contained contains=liloDecNumberP,liloDecNumber syn region liloAnything start=+[^[:space:]#]+ skip=+\\\\\|\\ \|\\$+ end=+ \|$+ contained contains=liloSpecial,liloEnviron,liloString " Path syn keyword liloOption backup bitmap boot disktab force-backup keytable map message nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty syn keyword liloKernelOpt initrd root nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty syn keyword liloImageOpt path loader table nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty syn keyword liloDiskOpt partition nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty " Other syn keyword liloOption menu-scheme raid-extra-boot serial install nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty syn keyword liloOption bios-passes-dl nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty syn keyword liloOption default label alias wmdefault nextgroup=liloEqLabelString,liloEqLabelStringComment,liloError skipwhite skipempty syn keyword liloKernelOpt ramdisk nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty syn keyword liloImageOpt password range nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty syn keyword liloDiskOpt set type nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty " Symbolic syn keyword liloKernelOpt vga nextgroup=liloEqVga,liloEqVgaComment,liloError skipwhite skipempty " Number syn keyword liloOption delay timeout verbose nextgroup=liloEqDecNumber,liloEqDecNumberComment,liloError skipwhite skipempty syn keyword liloDiskOpt sectors heads cylinders start nextgroup=liloEqDecNumber,liloEqDecNumberComment,liloError skipwhite skipempty " String syn keyword liloOption menu-title nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty syn keyword liloKernelOpt append addappend nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty syn keyword liloImageOpt fallback literal nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty " Hex number syn keyword liloImageOpt map-drive to boot-as nextgroup=liloEqHexNumber,liloEqHexNumberComment,liloError skipwhite skipempty syn keyword liloDiskOpt bios normal hidden nextgroup=liloEqNumber,liloEqNumberComment,liloError skipwhite skipempty " Number list syn keyword liloOption bmp-colors nextgroup=liloEqNumberList,liloEqNumberListComment,liloError skipwhite skipempty " Number list, some of the numbers followed by p syn keyword liloOption bmp-table bmp-timer nextgroup=liloEqDecNumberPList,liloEqDecNumberPListComment,liloError skipwhite skipempty " Flag syn keyword liloOption compact fix-table geometric ignore-table lba32 linear mandatory nowarn prompt syn keyword liloOption bmp-retain el-torito-bootable-CD large-memory suppress-boot-time-BIOS-data syn keyword liloKernelOpt read-only read-write syn keyword liloImageOpt bypass lock mandatory optional restricted single-key unsafe syn keyword liloImageOpt master-boot wmwarn wmdisable syn keyword liloDiskOpt change activate deactivate inaccessible reset " Image syn keyword liloImage image other nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty syn keyword liloDisk disk nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty syn keyword liloChRules change-rules " Vga keywords syn keyword liloVgaKeyword ask ext extended normal contained " Comment followed by equal sign and ... syn match liloEqPathComment "#.*$" contained nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty syn match liloEqVgaComment "#.*$" contained nextgroup=liloEqVga,liloEqVgaComment,liloError skipwhite skipempty syn match liloEqNumberComment "#.*$" contained nextgroup=liloEqNumber,liloEqNumberComment,liloError skipwhite skipempty syn match liloEqDecNumberComment "#.*$" contained nextgroup=liloEqDecNumber,liloEqDecNumberComment,liloError skipwhite skipempty syn match liloEqHexNumberComment "#.*$" contained nextgroup=liloEqHexNumber,liloEqHexNumberComment,liloError skipwhite skipempty syn match liloEqStringComment "#.*$" contained nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty syn match liloEqLabelStringComment "#.*$" contained nextgroup=liloEqLabelString,liloEqLabelStringComment,liloError skipwhite skipempty syn match liloEqNumberListComment "#.*$" contained nextgroup=liloEqNumberList,liloEqNumberListComment,liloError skipwhite skipempty syn match liloEqDecNumberPListComment "#.*$" contained nextgroup=liloEqDecNumberPList,liloEqDecNumberPListComment,liloError skipwhite skipempty syn match liloEqAnythingComment "#.*$" contained nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty " Equal sign followed by ... syn match liloEqPath "=" contained nextgroup=liloPath,liloPathComment,liloError skipwhite skipempty syn match liloEqVga "=" contained nextgroup=liloVgaKeyword,liloHexNumber,liloDecNumber,liloVgaComment,liloError skipwhite skipempty syn match liloEqNumber "=" contained nextgroup=liloDecNumber,liloHexNumber,liloNumberComment,liloError skipwhite skipempty syn match liloEqDecNumber "=" contained nextgroup=liloDecNumber,liloDecNumberComment,liloError skipwhite skipempty syn match liloEqHexNumber "=" contained nextgroup=liloHexNumber,liloHexNumberComment,liloError skipwhite skipempty syn match liloEqString "=" contained nextgroup=liloString,liloStringComment,liloError skipwhite skipempty syn match liloEqLabelString "=" contained nextgroup=liloString,liloLabel,liloLabelStringComment,liloError skipwhite skipempty syn match liloEqNumberList "=" contained nextgroup=liloDecNumberList,liloDecNumberListComment,liloError skipwhite skipempty syn match liloEqDecNumberPList "=" contained nextgroup=liloDecNumberPList,liloDecNumberPListComment,liloError skipwhite skipempty syn match liloEqAnything "=" contained nextgroup=liloAnything,liloAnythingComment,liloError skipwhite skipempty " Comment followed by ... syn match liloPathComment "#.*$" contained nextgroup=liloPath,liloPathComment,liloError skipwhite skipempty syn match liloVgaComment "#.*$" contained nextgroup=liloVgaKeyword,liloHexNumber,liloVgaComment,liloError skipwhite skipempty syn match liloNumberComment "#.*$" contained nextgroup=liloDecNumber,liloHexNumber,liloNumberComment,liloError skipwhite skipempty syn match liloDecNumberComment "#.*$" contained nextgroup=liloDecNumber,liloDecNumberComment,liloError skipwhite skipempty syn match liloHexNumberComment "#.*$" contained nextgroup=liloHexNumber,liloHexNumberComment,liloError skipwhite skipempty syn match liloStringComment "#.*$" contained nextgroup=liloString,liloStringComment,liloError skipwhite skipempty syn match liloLabelStringComment "#.*$" contained nextgroup=liloString,liloLabel,liloLabelStringComment,liloError skipwhite skipempty syn match liloDecNumberListComment "#.*$" contained nextgroup=liloDecNumberList,liloDecNumberListComment,liloError skipwhite skipempty syn match liloDecNumberPListComment "#.*$" contained nextgroup=liloDecNumberPList,liloDecNumberPListComment,liloError skipwhite skipempty syn match liloAnythingComment "#.*$" contained nextgroup=liloAnything,liloAnythingComment,liloError skipwhite skipempty " Define the default highlighting hi def link liloEqPath liloEquals hi def link liloEqWord liloEquals hi def link liloEqVga liloEquals hi def link liloEqDecNumber liloEquals hi def link liloEqHexNumber liloEquals hi def link liloEqNumber liloEquals hi def link liloEqString liloEquals hi def link liloEqAnything liloEquals hi def link liloEquals Special hi def link liloError Error hi def link liloEqPathComment liloComment hi def link liloEqVgaComment liloComment hi def link liloEqDecNumberComment liloComment hi def link liloEqHexNumberComment liloComment hi def link liloEqStringComment liloComment hi def link liloEqAnythingComment liloComment hi def link liloPathComment liloComment hi def link liloVgaComment liloComment hi def link liloDecNumberComment liloComment hi def link liloHexNumberComment liloComment hi def link liloNumberComment liloComment hi def link liloStringComment liloComment hi def link liloAnythingComment liloComment hi def link liloComment Comment hi def link liloDiskOpt liloOption hi def link liloKernelOpt liloOption hi def link liloImageOpt liloOption hi def link liloOption Keyword hi def link liloDecNumber liloNumber hi def link liloHexNumber liloNumber hi def link liloDecNumberP liloNumber hi def link liloNumber Number hi def link liloString String hi def link liloPath Constant hi def link liloSpecial Special hi def link liloLabel Title hi def link liloDecNumberList Special hi def link liloDecNumberPList Special hi def link liloAnything Normal hi def link liloEnviron Identifier hi def link liloVgaKeyword Identifier hi def link liloImage Type hi def link liloChRules Preproc hi def link liloDisk Preproc let b:current_syntax = "lilo" PK!6,S'S'vim80/syntax/dnsmasq.vimnu[" Vim syntax file " Maintainer: Thilo Six " Contact: vim-foo@xk2c-foo.de " :3s+-foo++g " Description: highlight dnsmasq configuration files " File: runtime/syntax/dnsmasq.vim " Version: 2.76 " Last Change: 2015 Sep 27 " Modeline: vim: ts=8:sw=2:sts=2: " " License: VIM License " Vim is Charityware, see ":help Uganda" " " Options: You might want to add this to your vimrc: " " if &background == "dark" " let dnsmasq_backrgound_light = 0 " else " let dnsmasq_backrgound_light = 1 " endif " " quit when a syntax file was already loaded if exists("b:current_syntax") || &compatible finish endif let s:cpo_save = &cpo set cpo&vim if !exists("b:dnsmasq_backrgound_light") if exists("dnsmasq_backrgound_light") let b:dnsmasq_backrgound_light = dnsmasq_backrgound_light else let b:dnsmasq_backrgound_light = 0 endif endif " case on syn case match syn match DnsmasqValues "=.*"hs=s+1 contains=DnsmasqComment,DnsmasqSpecial syn match DnsmasqSpecial display '=\|@\|,\|!\|:' nextgroup=DnsmasqValues syn match DnsmasqSpecial "#" syn match DnsmasqIPv4 "\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>" nextgroup=DnsmasqSubnet2,DnsmasqRange syn match DnsmasqSubnet "\<255.\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{2\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>" syn match DnsmasqSubnet2 contained "\/\([0-4]\?[0-9]\)\>" syn match DnsmasqRange contained "-" syn match DnsmasqMac "\<\(\x\x\?:\)\{5}\x\x\?" syn match DnsmasqTime "\<\(\d\{1,3}\)[hm]\>" " String syn match DnsmasqString "\".*\"" contains=@Spell syn match DnsmasqString "'.*'" contains=@Spell " Comments syn keyword DnsmasqTodo FIXME TODO XXX NOTE contained syn match DnsmasqComment "\(^\|\s\+\)#.*$" contains=@Spell,DnsmasqTodo " highlight trailing spaces syn match DnsmasqTrailSpace "[ \t]\+$" syn match DnsmasqTrailSpace "[ \t]\+$" containedin=ALL syn match DnsmasqKeywordSpecial "\:"me=e-1 syn match DnsmasqKeywordSpecial "\:"me=e-1 syn match DnsmasqKeywordSpecial ",\"hs=s+1 contains=DnsmasqSpecial syn match DnsmasqKeywordSpecial ",\"hs=s+1 contains=DnsmasqSpecial syn match DnsmasqKeywordSpecial "\:"me=e-1 syn match DnsmasqKeywordSpecial "\:"me=e-1 syn match DnsmasqKeywordSpecial "\:"me=e-1 syn match DnsmasqKeywordSpecial "\:"me=e-1 syn match DnsmasqKeywordSpecial "\:"me=e-1 syn match DnsmasqKeywordSpecial "\:"me=e-1 syn match DnsmasqKeywordSpecial "\:"me=e-1 syn match DnsmasqKeywordSpecial ",\"hs=s+1 contains=DnsmasqSpecial syn match DnsmasqKeywordSpecial "\:"me=e-1 syn match DnsmasqKeyword "^\s*add-mac\>" syn match DnsmasqKeyword "^\s*add-subnet\>" syn match DnsmasqKeyword "^\s*addn-hosts\>" syn match DnsmasqKeyword "^\s*address\>" syn match DnsmasqKeyword "^\s*alias\>" syn match DnsmasqKeyword "^\s*all-servers\>" syn match DnsmasqKeyword "^\s*auth-zone\>" syn match DnsmasqKeyword "^\s*bind-dynamic\>" syn match DnsmasqKeyword "^\s*bind-interfaces\>" syn match DnsmasqKeyword "^\s*bogus-nxdomain\>" syn match DnsmasqKeyword "^\s*bogus-priv\>" syn match DnsmasqKeyword "^\s*bootp-dynamic\>" syn match DnsmasqKeyword "^\s*bridge-interface\>" syn match DnsmasqKeyword "^\s*cache-size\>" syn match DnsmasqKeyword "^\s*clear-on-reload\>" syn match DnsmasqKeyword "^\s*cname\>" syn match DnsmasqKeyword "^\s*conf-dir\>" syn match DnsmasqKeyword "^\s*conf-file\>" syn match DnsmasqKeyword "^\s*conntrack\>" syn match DnsmasqKeyword "^\s*dhcp-alternate-port\>" syn match DnsmasqKeyword "^\s*dhcp-authoritative\>" syn match DnsmasqKeyword "^\s*dhcp-boot\>" syn match DnsmasqKeyword "^\s*dhcp-broadcast\>" syn match DnsmasqKeyword "^\s*dhcp-circuitid\>" syn match DnsmasqKeyword "^\s*dhcp-client-update\>" syn match DnsmasqKeyword "^\s*dhcp-duid\>" syn match DnsmasqKeyword "^\s*dhcp-fqdn\>" syn match DnsmasqKeyword "^\s*dhcp-generate-names\>" syn match DnsmasqKeyword "^\s*dhcp-host\>" syn match DnsmasqKeyword "^\s*dhcp-hostsfile\>" syn match DnsmasqKeyword "^\s*dhcp-ignore\>" syn match DnsmasqKeyword "^\s*dhcp-ignore-names\>" syn match DnsmasqKeyword "^\s*dhcp-lease-max\>" syn match DnsmasqKeyword "^\s*dhcp-leasefile\>" syn match DnsmasqKeyword "^\s*dhcp-luascript\>" syn match DnsmasqKeyword "^\s*dhcp-mac\>" syn match DnsmasqKeyword "^\s*dhcp-match\>" syn match DnsmasqKeyword "^\s*dhcp-no-override\>" syn match DnsmasqKeyword "^\s*dhcp-option\>" syn match DnsmasqKeyword "^\s*dhcp-option-force\>" syn match DnsmasqKeyword "^\s*dhcp-optsfile\>" syn match DnsmasqKeyword "^\s*dhcp-proxy\>" syn match DnsmasqKeyword "^\s*dhcp-range\>" syn match DnsmasqKeyword "^\s*dhcp-relay\>" syn match DnsmasqKeyword "^\s*dhcp-remoteid\>" syn match DnsmasqKeyword "^\s*dhcp-script\>" syn match DnsmasqKeyword "^\s*dhcp-scriptuser\>" syn match DnsmasqKeyword "^\s*dhcp-sequential-ip\>" syn match DnsmasqKeyword "^\s*dhcp-subscrid\>" syn match DnsmasqKeyword "^\s*dhcp-userclass\>" syn match DnsmasqKeyword "^\s*dhcp-vendorclass\>" syn match DnsmasqKeyword "^\s*dhcp-hostsdir\>" syn match DnsmasqKeyword "^\s*dns-rr\>" syn match DnsmasqKeyword "^\s*dnssec\>" syn match DnsmasqKeyword "^\s*dnssec-check-unsigned\>" syn match DnsmasqKeyword "^\s*dnssec-no-timecheck\>" syn match DnsmasqKeyword "^\s*dnssec-timestamp\>" syn match DnsmasqKeyword "^\s*dns-forward-max\>" syn match DnsmasqKeyword "^\s*domain\>" syn match DnsmasqKeyword "^\s*domain-needed\>" syn match DnsmasqKeyword "^\s*edns-packet-max\>" syn match DnsmasqKeyword "^\s*enable-dbus\>" syn match DnsmasqKeyword "^\s*enable-ra\>" syn match DnsmasqKeyword "^\s*enable-tftp\>" syn match DnsmasqKeyword "^\s*except-interface\>" syn match DnsmasqKeyword "^\s*expand-hosts\>" syn match DnsmasqKeyword "^\s*filterwin2k\>" syn match DnsmasqKeyword "^\s*group\>" syn match DnsmasqKeyword "^\s*host-record\>" syn match DnsmasqKeyword "^\s*interface\>" syn match DnsmasqKeyword "^\s*interface-name\>" syn match DnsmasqKeyword "^\s*ipset\>" syn match DnsmasqKeyword "^\s*ignore-address\>" syn match DnsmasqKeyword "^\s*keep-in-foreground\>" syn match DnsmasqKeyword "^\s*leasefile-ro\>" syn match DnsmasqKeyword "^\s*listen-address\>" syn match DnsmasqKeyword "^\s*local\>" syn match DnsmasqKeyword "^\s*localmx\>" syn match DnsmasqKeyword "^\s*local-ttl\>" syn match DnsmasqKeyword "^\s*local-service\>" syn match DnsmasqKeyword "^\s*localise-queries\>" syn match DnsmasqKeyword "^\s*log-async\>" syn match DnsmasqKeyword "^\s*log-dhcp\>" syn match DnsmasqKeyword "^\s*log-facility\>" syn match DnsmasqKeyword "^\s*log-queries\>" syn match DnsmasqKeyword "^\s*max-ttl\>" syn match DnsmasqKeyword "^\s*max-cache-ttl\>" syn match DnsmasqKeyword "^\s*min-cache-ttl\>" syn match DnsmasqKeyword "^\s*min-port\>" syn match DnsmasqKeyword "^\s*mx-host\>" syn match DnsmasqKeyword "^\s*mx-target\>" syn match DnsmasqKeyword "^\s*naptr-record\>" syn match DnsmasqKeyword "^\s*neg-ttl\>" syn match DnsmasqKeyword "^\s*no-daemon\>" syn match DnsmasqKeyword "^\s*no-dhcp-interface\>" syn match DnsmasqKeyword "^\s*no-hosts\>" syn match DnsmasqKeyword "^\s*no-negcache\>" syn match DnsmasqKeyword "^\s*no-ping\>" syn match DnsmasqKeyword "^\s*no-poll\>" syn match DnsmasqKeyword "^\s*no-resolv\>" syn match DnsmasqKeyword "^\s*pid-file\>" syn match DnsmasqKeyword "^\s*port\>" syn match DnsmasqKeyword "^\s*proxy-dnssec\>" syn match DnsmasqKeyword "^\s*ptr-record\>" syn match DnsmasqKeyword "^\s*pxe-prompt\>" syn match DnsmasqKeyword "^\s*pxe-service\>" syn match DnsmasqKeyword "^\s*query-port\>" syn match DnsmasqKeyword "^\s*quiet-ra\>" syn match DnsmasqKeyword "^\s*quiet-dhcp\>" syn match DnsmasqKeyword "^\s*quiet-dhcp6\>" syn match DnsmasqKeyword "^\s*ra-param\>" syn match DnsmasqKeyword "^\s*read-ethers\>" syn match DnsmasqKeyword "^\s*rebind-domain-ok\>" syn match DnsmasqKeyword "^\s*rebind-localhost-ok\>" syn match DnsmasqKeyword "^\s*resolv-file\>" syn match DnsmasqKeyword "^\s*rev-server\>" syn match DnsmasqKeyword "^\s*selfmx\>" syn match DnsmasqKeyword "^\s*server\>" syn match DnsmasqKeyword "^\s*servers-file\>" syn match DnsmasqKeyword "^\s*srv-host\>" syn match DnsmasqKeyword "^\s*stop-dns-rebind\>" syn match DnsmasqKeyword "^\s*strict-order\>" syn match DnsmasqKeyword "^\s*synth-domain\>" syn match DnsmasqKeyword "^\s*tag-if\>" syn match DnsmasqKeyword "^\s*test\>" syn match DnsmasqKeyword "^\s*tftp-max\>" syn match DnsmasqKeyword "^\s*tftp-lowercase\>" syn match DnsmasqKeyword "^\s*tftp-no-blocksize\>" syn match DnsmasqKeyword "^\s*tftp-no-fail\>" syn match DnsmasqKeyword "^\s*tftp-port-range\>" syn match DnsmasqKeyword "^\s*tftp-root\>" syn match DnsmasqKeyword "^\s*tftp-secure\>" syn match DnsmasqKeyword "^\s*tftp-unique-root\>" syn match DnsmasqKeyword "^\s*txt-record\>" syn match DnsmasqKeyword "^\s*user\>" syn match DnsmasqKeyword "^\s*version\>" if b:dnsmasq_backrgound_light == 1 hi def DnsmasqKeyword ctermfg=DarkGreen guifg=DarkGreen else hi def link DnsmasqKeyword Keyword endif hi def link DnsmasqKeywordSpecial Type hi def link DnsmasqTodo Todo hi def link DnsmasqSpecial Constant hi def link DnsmasqIPv4 Identifier hi def link DnsmasqSubnet2 DnsmasqSubnet hi def link DnsmasqSubnet DnsmasqMac hi def link DnsmasqRange DnsmasqMac hi def link DnsmasqMac Preproc hi def link DnsmasqTime Preproc hi def link DnsmasqComment Comment hi def link DnsmasqTrailSpace DiffDelete hi def link DnsmasqString Constant hi def link DnsmasqValues Normal let b:current_syntax = "dnsmasq" let &cpo = s:cpo_save unlet s:cpo_save PK!(_ӳvim80/syntax/lynx.vimnu[" Vim syntax file " Language: Lynx configuration file (lynx.cfg) " Maintainer: Doug Kearns " Last Change: 2013 Jun 20 " Lynx 2.8.7 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match lynxStart "^" transparent skipwhite nextgroup=lynxOption syn match lynxComment "\(^\|\s\+\)#.*$" contains=lynxTodo syn keyword lynxTodo TODO NOTE FIXME XXX contained syn match lynxDelimiter ":" skipwhite nextgroup=lynxBoolean,lynxNumber,lynxNone,lynxRCOption syn case ignore syn keyword lynxBoolean TRUE FALSE ON OFF contained syn keyword lynxNone NONE contained syn case match syn match lynxNumber "-\=\<\d\+\>" contained "{{{ Options syn case ignore syn keyword lynxOption ACCEPT_ALL_COOKIES ALERTSECS ALWAYS_RESUBMIT_POSTS \ ALWAYS_TRUSTED_EXEC ANONFTP_PASSWORD ASSUMED_COLOR \ ASSUMED_DOC_CHARSET_CHOICE ASSUME_CHARSET ASSUME_LOCAL_CHARSET \ ASSUME_UNREC_CHARSET AUTO_SESSION AUTO_UNCACHE_DIRLISTS BAD_HTML \ BIBP_BIBHOST BIBP_GLOBAL_SERVER BLOCK_MULTI_BOOKMARKS BOLD_H1 \ BOLD_HEADERS BOLD_NAME_ANCHORS BOOKMARK_FILE BROKEN_FTP_EPSV \ BROKEN_FTP_RETR BZIP2_PATH CASE_SENSITIVE_ALWAYS_ON \ CASE_SENSITIVE_SEARCHING CHARACTER_SET CHARSETS_DIRECTORY \ CHARSET_SWITCH_RULES CHECKMAIL CHMOD_PATH COLLAPSE_BR_TAGS COLOR \ COLOR_STYLE COMPRESS_PATH CONNECT_TIMEOUT COOKIE_ACCEPT_DOMAINS \ COOKIE_FILE COOKIE_LOOSE_INVALID_DOMAINS \ COOKIE_QUERY_INVALID_DOMAINS COOKIE_REJECT_DOMAINS COOKIE_SAVE_FILE \ COOKIE_STRICT_INVALID_DOMAINS COPY_PATH CSO_PROXY CSWING_PATH \ DEBUGSECS DEFAULT_BOOKMARK_FILE DEFAULT_CACHE_SIZE DEFAULT_COLORS \ DEFAULT_EDITOR DEFAULT_INDEX_FILE DEFAULT_KEYPAD_MODE \ DEFAULT_KEYPAD_MODE_IS_NUMBERS_AS_ARROWS DEFAULT_USER_MODE \ DEFAULT_VIRTUAL_MEMORY_SIZE DELAYSECS DIRED_MENU DIR_LIST_ORDER \ DIR_LIST_STYLE DISPLAY DISPLAY_CHARSET_CHOICE DOWNLOADER EMACS_KEYS \ EMACS_KEYS_ALWAYS_ON ENABLE_LYNXRC ENABLE_SCROLLBACK EXTERNAL \ FILE_EDITOR FILE_SORTING_METHOD FINGER_PROXY FOCUS_WINDOW \ FORCE_8BIT_TOUPPER FORCE_COOKIE_PROMPT FORCE_EMPTY_HREFLESS_A \ FORCE_SSL_COOKIES_SECURE FORCE_SSL_PROMPT FORMS_OPTIONS FTP_FORMAT \ FTP_PASSIVE FTP_PROXY GLOBAL_EXTENSION_MAP GLOBAL_MAILCAP \ GOPHER_PROXY GOTOBUFFER GZIP_PATH HELPFILE HIDDEN_LINK_MARKER \ HISTORICAL_COMMENTS HTMLSRC_ATTRNAME_XFORM HTMLSRC_TAGNAME_XFORM \ HTTPS_PROXY HTTP_PROXY INCLUDE INFLATE_PATH INFOSECS INSTALL_PATH \ JUMPBUFFER JUMPFILE JUMP_PROMPT JUSTIFY JUSTIFY_MAX_VOID_PERCENT \ KBLAYOUT KEYBOARD_LAYOUT KEYMAP KEYPAD_MODE \ LEFTARROW_IN_TEXTFIELD_PROMPT LINEEDIT_MODE LIST_FORMAT \ LIST_NEWS_DATES LIST_NEWS_NUMBERS LOCALE_CHARSET LOCALHOST_ALIAS \ LOCAL_DOMAIN LOCAL_EXECUTION_LINKS_ALWAYS_ON \ LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE LYNXCGI_DOCUMENT_ROOT \ LYNXCGI_ENVIRONMENT LYNX_HOST_NAME LYNX_SIG_FILE MAIL_ADRS \ MAIL_SYSTEM_ERROR_LOGGING MAKE_LINKS_FOR_ALL_IMAGES \ MAKE_PSEUDO_ALTS_FOR_INLINES MAX_COOKIES_BUFFER MAX_COOKIES_DOMAIN \ MAX_COOKIES_GLOBAL MESSAGESECS MINIMAL_COMMENTS MKDIR_PATH \ MULTI_BOOKMARK MULTI_BOOKMARK_SUPPORT MV_PATH NCR_IN_BOOKMARKS \ NESTED_TABLES NEWSPOST_PROXY NEWSREPLY_PROXY NEWS_CHUNK_SIZE \ NEWS_MAX_CHUNK NEWS_POSTING NEWS_PROXY NNTPSERVER NNTP_PROXY \ NONRESTARTING_SIGWINCH NO_DOT_FILES NO_FILE_REFERER \ NO_FORCED_CORE_DUMP NO_FROM_HEADER NO_ISMAP_IF_USEMAP NO_MARGINS \ NO_PAUSE NO_PROXY NO_REFERER_HEADER NO_TABLE_CENTER NO_TITLE \ NUMBER_FIELDS_ON_LEFT NUMBER_LINKS_ON_LEFT OUTGOING_MAIL_CHARSET \ PARTIAL PARTIAL_THRES PERSISTENT_COOKIES PERSONAL_EXTENSION_MAP \ PERSONAL_MAILCAP PERSONAL_MAIL_ADDRESS POSITIONABLE_EDITOR \ PREFERRED_CHARSET PREFERRED_ENCODING PREFERRED_LANGUAGE \ PREFERRED_MEDIA_TYPES PREPEND_BASE_TO_SOURCE \ PREPEND_CHARSET_TO_SOURCE PRETTYSRC PRETTYSRC_SPEC \ PRETTYSRC_VIEW_NO_ANCHOR_NUMBERING PRINTER QUIT_DEFAULT_YES RAW_MODE \ READ_TIMEOUT REFERER_WITH_QUERY REPLAYSECS REUSE_TEMPFILES \ RLOGIN_PATH RM_PATH RMDIR_PATH RULE RULESFILE \ RUN_ALL_EXECUTION_LINKS RUN_EXECUTION_LINKS_LOCAL SAVE_SPACE \ SCAN_FOR_BURIED_NEWS_REFS SCREEN_SIZE SCROLLBAR SCROLLBAR_ARROW \ SEEK_FRAG_AREA_IN_CUR SEEK_FRAG_MAP_IN_CUR SELECT_POPUPS \ SEND_USERAGENT SESSION_FILE SESSION_LIMIT SET_COOKIES SETFONT_PATH \ SHOW_COLOR SHOW_CURSOR SHOW_DOTFILES SHOW_KB_NAME SHOW_KB_RATE \ SNEWSPOST_PROXY SNEWSREPLY_PROXY SNEWS_PROXY SOFT_DQUOTES \ SOURCE_CACHE SOURCE_CACHE_FOR_ABORTED SSL_CERT_FILE STARTFILE \ STATUS_BUFFER_SIZE STRIP_DOTDOT_URLS SUBSTITUTE_UNDERSCORES \ SUB_BOOKMARKS SUFFIX SUFFIX_ORDER SYSLOG_REQUESTED_URLS SYSLOG_TEXT \ SYSTEM_EDITOR SYSTEM_MAIL SYSTEM_MAIL_FLAGS TAGSOUP TAR_PATH \ TELNET_PATH TEXTFIELDS_NEED_ACTIVATION TIMEOUT TN3270_PATH \ TOUCH_PATH TRIM_INPUT_FIELDS TRUSTED_EXEC TRUSTED_LYNXCGI \ UNCOMPRESS_PATH UNDERLINE_LINKS UNZIP_PATH UPLOADER \ URL_DOMAIN_PREFIXES URL_DOMAIN_SUFFIXES USERAGENT USER_MODE \ USE_FIXED_RECORDS USE_MOUSE USE_SELECT_POPUPS UUDECODE_PATH \ VERBOSE_IMAGES VIEWER VISITED_LINKS VI_KEYS VI_KEYS_ALWAYS_ON \ WAIS_PROXY XHTML_PARSING XLOADIMAGE_COMMAND ZCAT_PATH ZIP_PATH \ contained nextgroup=lynxDelimiter syn keyword lynxRCOption accept_all_cookies assume_charset auto_session \ bookmark_file case_sensitive_searching character_set \ cookie_accept_domains cookie_file cookie_loose_invalid_domains \ cookie_query_invalid_domains cookie_reject_domains \ cookie_strict_invalid_domains dir_list_style display emacs_keys \ file_editor file_sorting_method force_cookie_prompt force_ssl_prompt \ ftp_passive kblayout keypad_mode lineedit_mode locale_charset \ make_links_for_all_images make_pseudo_alts_for_inlines \ multi_bookmark no_pause personal_mail_address preferred_charset \ preferred_encoding preferred_language preferred_media_types raw_mode \ run_all_execution_links run_execution_links_on_local_files scrollbar \ select_popups send_useragent session_file set_cookies show_color \ show_cursor show_dotfiles show_kb_rate sub_bookmarks tagsoup \ underline_links user_mode useragent verbose_images vi_keys \ visited_links \ contained nextgroup=lynxDelimiter syn case match " }}} " cfg2html.pl formatting directives syn match lynxFormatDir "^\.h\d\s.*$" syn match lynxFormatDir "^\.\(ex\|nf\)\(\s\+\d\+\)\=$" syn match lynxFormatDir "^\.fi$" hi def link lynxBoolean Boolean hi def link lynxComment Comment hi def link lynxDelimiter Special hi def link lynxFormatDir Special hi def link lynxNone Constant hi def link lynxNumber Number hi def link lynxOption Identifier hi def link lynxRCOption lynxOption hi def link lynxTodo Todo let b:current_syntax = "lynx" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 fdm=marker: PK!IO@!@!vim80/syntax/vmasm.vimnu[" Vim syntax file " Language: (VAX) Macro Assembly " Maintainer: Tom Uijldert " Last change: 2004 May 16 " " This is incomplete. Feel free to contribute... " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " Partial list of register symbols syn keyword vmasmReg r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 syn keyword vmasmReg ap fp sp pc iv dv " All matches - order is important! syn keyword vmasmOpcode adawi adwc ashl ashq bitb bitw bitl decb decw decl syn keyword vmasmOpcode ediv emul incb incw incl mcomb mcomw mcoml syn keyword vmasmOpcode movzbw movzbl movzwl popl pushl rotl sbwc syn keyword vmasmOpcode cmpv cmpzv cmpc3 cmpc5 locc matchc movc3 movc5 syn keyword vmasmOpcode movtc movtuc scanc skpc spanc crc extv extzv syn keyword vmasmOpcode ffc ffs insv aobleq aoblss bbc bbs bbcci bbssi syn keyword vmasmOpcode blbc blbs brb brw bsbb bsbw caseb casew casel syn keyword vmasmOpcode jmp jsb rsb sobgeq sobgtr callg calls ret syn keyword vmasmOpcode bicpsw bispsw bpt halt index movpsl nop popr pushr xfc syn keyword vmasmOpcode insqhi insqti insque remqhi remqti remque syn keyword vmasmOpcode addp4 addp6 ashp cmpp3 cmpp4 cvtpl cvtlp cvtps cvtpt syn keyword vmasmOpcode cvtsp cvttp divp movp mulp subp4 subp6 editpc syn keyword vmasmOpcode prober probew rei ldpctx svpctx mfpr mtpr bugw bugl syn keyword vmasmOpcode vldl vldq vgathl vgathq vstl vstq vscatl vscatq syn keyword vmasmOpcode vvcvt iota mfvp mtvp vsync syn keyword vmasmOpcode beql[u] bgtr[u] blss[u] syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" " Various number formats syn match vmasmdecNumber "[+-]\=[0-9]\+\>" syn match vmasmdecNumber "^d[0-9]\+\>" syn match vmasmhexNumber "^x[0-9a-f]\+\>" syn match vmasmoctNumber "^o[0-7]\+\>" syn match vmasmbinNumber "^b[01]\+\>" syn match vmasmfloatNumber "[-+]\=[0-9]\+E[-+]\=[0-9]\+" syn match vmasmfloatNumber "[-+]\=[0-9]\+\.[0-9]*\(E[-+]\=[0-9]\+\)\=" " Valid labels syn match vmasmLabel "^[a-z_$.][a-z0-9_$.]\{,30}::\=" syn match vmasmLabel "\<[0-9]\{1,5}\$:\=" " Local label " Character string constants " Too complex really. Could be "<...>" but those could also be " expressions. Don't know how to handle chosen delimiters " ("^...") " syn region vmasmString start="<" end=">" oneline " Operators syn match vmasmOperator "[-+*/@&!\\]" syn match vmasmOperator "=" syn match vmasmOperator "==" " Global assignment syn match vmasmOperator "%length(.*)" syn match vmasmOperator "%locate(.*)" syn match vmasmOperator "%extract(.*)" syn match vmasmOperator "^[amfc]" syn match vmasmOperator "[bwlg]^" syn match vmasmOperator "\<\(not_\)\=equal\>" syn match vmasmOperator "\" syn match vmasmOperator "\" syn match vmasmOperator "\" syn match vmasmOperator "\<\(not_\)\=defined\>" syn match vmasmOperator "\<\(not_\)\=blank\>" syn match vmasmOperator "\" syn match vmasmOperator "\" syn match vmasmOperator "\" syn match vmasmOperator "\<[gl]t\>" syn match vmasmOperator "\" syn match vmasmOperator "\" syn match vmasmOperator "\" syn match vmasmOperator "\<[nlg]e\>" syn match vmasmOperator "\" " Special items for comments syn keyword vmasmTodo contained todo " Comments syn match vmasmComment ";.*" contains=vmasmTodo " Include syn match vmasmInclude "\.library\>" " Macro definition syn match vmasmMacro "\.macro\>" syn match vmasmMacro "\.mexit\>" syn match vmasmMacro "\.endm\>" syn match vmasmMacro "\.mcall\>" syn match vmasmMacro "\.mdelete\>" " Conditional assembly syn match vmasmPreCond "\.iff\=\>" syn match vmasmPreCond "\.if_false\>" syn match vmasmPreCond "\.iftf\=\>" syn match vmasmPreCond "\.if_true\(_false\)\=\>" syn match vmasmPreCond "\.iif\>" " Loop control syn match vmasmRepeat "\.irpc\=\>" syn match vmasmRepeat "\.repeat\>" syn match vmasmRepeat "\.rept\>" syn match vmasmRepeat "\.endr\>" " Directives syn match vmasmDirective "\.address\>" syn match vmasmDirective "\.align\>" syn match vmasmDirective "\.asci[cdiz]\>" syn match vmasmDirective "\.blk[abdfghloqw]\>" syn match vmasmDirective "\.\(signed_\)\=byte\>" syn match vmasmDirective "\.\(no\)\=cross\>" syn match vmasmDirective "\.debug\>" syn match vmasmDirective "\.default displacement\>" syn match vmasmDirective "\.[dfgh]_floating\>" syn match vmasmDirective "\.disable\>" syn match vmasmDirective "\.double\>" syn match vmasmDirective "\.dsabl\>" syn match vmasmDirective "\.enable\=\>" syn match vmasmDirective "\.endc\=\>" syn match vmasmDirective "\.entry\>" syn match vmasmDirective "\.error\>" syn match vmasmDirective "\.even\>" syn match vmasmDirective "\.external\>" syn match vmasmDirective "\.extrn\>" syn match vmasmDirective "\.float\>" syn match vmasmDirective "\.globa\=l\>" syn match vmasmDirective "\.ident\>" syn match vmasmDirective "\.link\>" syn match vmasmDirective "\.list\>" syn match vmasmDirective "\.long\>" syn match vmasmDirective "\.mask\>" syn match vmasmDirective "\.narg\>" syn match vmasmDirective "\.nchr\>" syn match vmasmDirective "\.nlist\>" syn match vmasmDirective "\.ntype\>" syn match vmasmDirective "\.octa\>" syn match vmasmDirective "\.odd\>" syn match vmasmDirective "\.opdef\>" syn match vmasmDirective "\.packed\>" syn match vmasmDirective "\.page\>" syn match vmasmDirective "\.print\>" syn match vmasmDirective "\.psect\>" syn match vmasmDirective "\.quad\>" syn match vmasmDirective "\.ref[1248]\>" syn match vmasmDirective "\.ref16\>" syn match vmasmDirective "\.restore\(_psect\)\=\>" syn match vmasmDirective "\.save\(_psect\)\=\>" syn match vmasmDirective "\.sbttl\>" syn match vmasmDirective "\.\(no\)\=show\>" syn match vmasmDirective "\.\(sub\)\=title\>" syn match vmasmDirective "\.transfer\>" syn match vmasmDirective "\.warn\>" syn match vmasmDirective "\.weak\>" syn match vmasmDirective "\.\(signed_\)\=word\>" syn case match " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overridden later " Comment Constant Error Identifier PreProc Special Statement Todo Type " " Constant Boolean Character Number String " Identifier Function " PreProc Define Include Macro PreCondit " Special Debug Delimiter SpecialChar SpecialComment Tag " Statement Conditional Exception Keyword Label Operator Repeat " Type StorageClass Structure Typedef hi def link vmasmComment Comment hi def link vmasmTodo Todo hi def link vmasmhexNumber Number " Constant hi def link vmasmoctNumber Number " Constant hi def link vmasmbinNumber Number " Constant hi def link vmasmdecNumber Number " Constant hi def link vmasmfloatNumber Number " Constant " hi def link vmasmString String " Constant hi def link vmasmReg Identifier hi def link vmasmOperator Identifier hi def link vmasmInclude Include " PreProc hi def link vmasmMacro Macro " PreProc " hi def link vmasmMacroParam Keyword " Statement hi def link vmasmDirective Special hi def link vmasmPreCond Special hi def link vmasmOpcode Statement hi def link vmasmCond Conditional " Statement hi def link vmasmRepeat Repeat " Statement hi def link vmasmLabel Type let b:current_syntax = "vmasm" " vim: ts=8 sw=2 PK!?p<33vim80/syntax/ldapconf.vimnu[" Vim syntax file " Language: ldap.conf(5) configuration file. " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-12-11 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword ldapconfTodo contained TODO FIXME XXX NOTE syn region ldapconfComment display oneline start='^\s*#' end='$' \ contains=ldapconfTodo, \ @Spell syn match ldapconfBegin display '^' \ nextgroup=ldapconfOption, \ ldapconfDeprOption, \ ldapconfComment syn case ignore syn keyword ldapconfOption contained URI \ nextgroup=ldapconfURI \ skipwhite syn keyword ldapconfOption contained \ BASE \ BINDDN \ nextgroup=ldapconfDNAttrType \ skipwhite syn keyword ldapconfDeprOption contained \ HOST \ nextgroup=ldapconfHost \ skipwhite syn keyword ldapconfDeprOption contained \ PORT \ nextgroup=ldapconfPort \ skipwhite syn keyword ldapconfOption contained \ REFERRALS \ nextgroup=ldapconfBoolean \ skipwhite syn keyword ldapconfOption contained \ SIZELIMIT \ TIMELIMIT \ nextgroup=ldapconfInteger \ skipwhite syn keyword ldapconfOption contained \ DEREF \ nextgroup=ldapconfDerefWhen \ skipwhite syn keyword ldapconfOption contained \ SASL_MECH \ nextgroup=ldapconfSASLMechanism \ skipwhite syn keyword ldapconfOption contained \ SASL_REALM \ nextgroup=ldapconfSASLRealm \ skipwhite syn keyword ldapconfOption contained \ SASL_AUTHCID \ SASL_AUTHZID \ nextgroup=ldapconfSASLAuthID \ skipwhite syn keyword ldapconfOption contained \ SASL_SECPROPS \ nextgroup=ldapconfSASLSecProps \ skipwhite syn keyword ldapconfOption contained \ TLS_CACERT \ TLS_CERT \ TLS_KEY \ TLS_RANDFILE \ nextgroup=ldapconfFilename \ skipwhite syn keyword ldapconfOption contained \ TLS_CACERTDIR \ nextgroup=ldapconfPath \ skipwhite syn keyword ldapconfOption contained \ TLS_CIPHER_SUITE \ nextgroup=@ldapconfTLSCipher \ skipwhite syn keyword ldapconfOption contained \ TLS_REQCERT \ nextgroup=ldapconfTLSCertCheck \ skipwhite syn keyword ldapconfOption contained \ TLS_CRLCHECK \ nextgroup=ldapconfTLSCRLCheck \ skipwhite syn case match syn match ldapconfURI contained display \ 'ldaps\=://[^[:space:]:]\+\%(:\d\+\)\=' \ nextgroup=ldapconfURI \ skipwhite " LDAP Distinguished Names are defined in Section 3 of RFC 2253: " http://www.ietf.org/rfc/rfc2253.txt. syn match ldapconfDNAttrType contained display \ '\a[a-zA-Z0-9-]\+\|\d\+\%(\.\d\+\)*' \ nextgroup=ldapconfDNAttrTypeEq syn match ldapconfDNAttrTypeEq contained display \ '=' \ nextgroup=ldapconfDNAttrValue syn match ldapconfDNAttrValue contained display \ '\%([^,=+<>#;\\"]\|\\\%([,=+<>#;\\"]\|\x\x\)\)*\|#\%(\x\x\)\+\|"\%([^\\"]\|\\\%([,=+<>#;\\"]\|\x\x\)\)*"' \ nextgroup=ldapconfDNSeparator syn match ldapconfDNSeparator contained display \ '[+,]' \ nextgroup=ldapconfDNAttrType syn match ldapconfHost contained display \ '[^[:space:]:]\+\%(:\d\+\)\=' \ nextgroup=ldapconfHost \ skipwhite syn match ldapconfPort contained display \ '\d\+' syn keyword ldapconfBoolean contained \ on \ true \ yes \ off \ false \ no syn match ldapconfInteger contained display \ '\d\+' syn keyword ldapconfDerefWhen contained \ never \ searching \ finding \ always " Taken from http://www.iana.org/assignments/sasl-mechanisms. syn keyword ldapconfSASLMechanism contained \ KERBEROS_V4 \ GSSAPI \ SKEY \ EXTERNAL \ ANONYMOUS \ OTP \ PLAIN \ SECURID \ NTLM \ NMAS_LOGIN \ NMAS_AUTHEN \ KERBEROS_V5 syn match ldapconfSASLMechanism contained display \ 'CRAM-MD5\|GSS-SPNEGO\|DIGEST-MD5\|9798-[UM]-\%(RSA-SHA1-ENC\|\%(EC\)\=DSA-SHA1\)\|NMAS-SAMBA-AUTH' " TODO: I have been unable to find a definition for a SASL realm, " authentication identity, and proxy authorization identity. syn match ldapconfSASLRealm contained display \ '\S\+' syn match ldapconfSASLAuthID contained display \ '\S\+' syn keyword ldapconfSASLSecProps contained \ none \ noplain \ noactive \ nodict \ noanonymous \ forwardsec \ passcred \ nextgroup=ldapconfSASLSecPSep syn keyword ldapconfSASLSecProps contained \ minssf \ maxssf \ maxbufsize \ nextgroup=ldapconfSASLSecPEq syn match ldapconfSASLSecPEq contained display \ '=' \ nextgroup=ldapconfSASLSecFactor syn match ldapconfSASLSecFactor contained display \ '\d\+' \ nextgroup=ldapconfSASLSecPSep syn match ldapconfSASLSecPSep contained display \ ',' \ nextgroup=ldapconfSASLSecProps syn match ldapconfFilename contained display \ '.\+' syn match ldapconfPath contained display \ '.\+' " Defined in openssl-ciphers(1). " TODO: Should we include the stuff under CIPHER SUITE NAMES? syn cluster ldapconfTLSCipher contains=ldapconfTLSCipherOp, \ ldapconfTLSCipherName, \ ldapconfTLSCipherSort syn match ldapconfTLSCipherOp contained display \ '[+!-]' \ nextgroup=ldapconfTLSCipherName syn keyword ldapconfTLSCipherName contained \ DEFAULT \ COMPLEMENTOFDEFAULT \ ALL \ COMPLEMENTOFALL \ HIGH \ MEDIUM \ LOW \ EXP \ EXPORT \ EXPORT40 \ EXPORT56 \ eNULL \ NULL \ aNULL \ kRSA \ RSA \ kEDH \ kDHr \ kDHd \ aRSA \ aDSS \ DSS \ aDH \ kFZA \ aFZA \ eFZA \ FZA \ TLSv1 \ SSLv3 \ SSLv2 \ DH \ ADH \ AES \ 3DES \ DES \ RC4 \ RC2 \ IDEA \ MD5 \ SHA1 \ SHA \ Camellia \ nextgroup=ldapconfTLSCipherSep syn match ldapconfTLSCipherSort contained display \ '@STRENGTH' \ nextgroup=ldapconfTLSCipherSep syn match ldapconfTLSCipherSep contained display \ '[:, ]' \ nextgroup=@ldapconfTLSCipher syn keyword ldapconfTLSCertCheck contained \ never \ allow \ try \ demand \ hard syn keyword ldapconfTLSCRLCheck contained \ none \ peer \ all hi def link ldapconfTodo Todo hi def link ldapconfComment Comment hi def link ldapconfOption Keyword hi def link ldapconfDeprOption Error hi def link ldapconfString String hi def link ldapconfURI ldapconfString hi def link ldapconfDNAttrType Identifier hi def link ldapconfOperator Operator hi def link ldapconfEq ldapconfOperator hi def link ldapconfDNAttrTypeEq ldapconfEq hi def link ldapconfValue ldapconfString hi def link ldapconfDNAttrValue ldapconfValue hi def link ldapconfSeparator ldapconfOperator hi def link ldapconfDNSeparator ldapconfSeparator hi def link ldapconfHost ldapconfURI hi def link ldapconfNumber Number hi def link ldapconfPort ldapconfNumber hi def link ldapconfBoolean Boolean hi def link ldapconfInteger ldapconfNumber hi def link ldapconfType Type hi def link ldapconfDerefWhen ldapconfType hi def link ldapconfDefine Define hi def link ldapconfSASLMechanism ldapconfDefine hi def link ldapconfSASLRealm ldapconfURI hi def link ldapconfSASLAuthID ldapconfValue hi def link ldapconfSASLSecProps ldapconfType hi def link ldapconfSASLSecPEq ldapconfEq hi def link ldapconfSASLSecFactor ldapconfNumber hi def link ldapconfSASLSecPSep ldapconfSeparator hi def link ldapconfFilename ldapconfString hi def link ldapconfPath ldapconfFilename hi def link ldapconfTLSCipherOp ldapconfOperator hi def link ldapconfTLSCipherName ldapconfDefine hi def link ldapconfSpecial Special hi def link ldapconfTLSCipherSort ldapconfSpecial hi def link ldapconfTLSCipherSep ldapconfSeparator hi def link ldapconfTLSCertCheck ldapconfType hi def link ldapconfTLSCRLCheck ldapconfType let b:current_syntax = "ldapconf" let &cpo = s:cpo_save unlet s:cpo_save PK!9EK vim80/syntax/gp.vimnu[" Vim syntax file " Language: gp (version 2.5) " Maintainer: Karim Belabas " Last change: 2012 Jan 08 " URL: http://pari.math.u-bordeaux.fr " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " control statements syntax keyword gpStatement break return next syntax keyword gpConditional if syntax keyword gpRepeat until while for fordiv forell forprime syntax keyword gpRepeat forsubgroup forstep forvec " storage class syntax keyword gpScope my local global " defaults syntax keyword gpInterfaceKey breakloop colors compatible syntax keyword gpInterfaceKey datadir debug debugfiles debugmem syntax keyword gpInterfaceKey echo factor_add_primes factor_proven format syntax keyword gpInterfaceKey graphcolormap graphcolors syntax keyword gpInterfaceKey help histfile histsize syntax keyword gpInterfaceKey lines linewrap log logfile new_galois_format syntax keyword gpInterfaceKey output parisize path prettyprinter primelimit syntax keyword gpInterfaceKey prompt prompt_cont psfile syntax keyword gpInterfaceKey readline realprecision recover syntax keyword gpInterfaceKey secure seriesprecision simplify strictmatch syntax keyword gpInterfaceKey TeXstyle timer syntax match gpInterface "^\s*\\[a-z].*" syntax keyword gpInterface default syntax keyword gpInput read input " functions syntax match gpFunRegion "^\s*[a-zA-Z][_a-zA-Z0-9]*(.*)\s*=\s*[^ \t=]"me=e-1 contains=gpFunction,gpArgs syntax match gpFunRegion "^\s*[a-zA-Z][_a-zA-Z0-9]*(.*)\s*=\s*$" contains=gpFunction,gpArgs syntax match gpArgs contained "[a-zA-Z][_a-zA-Z0-9]*" syntax match gpFunction contained "^\s*[a-zA-Z][_a-zA-Z0-9]*("me=e-1 " String and Character constants " Highlight special (backslash'ed) characters differently syntax match gpSpecial contained "\\[ent\\]" syntax region gpString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=gpSpecial "comments syntax region gpComment start="/\*" end="\*/" contains=gpTodo syntax match gpComment "\\\\.*" contains=gpTodo syntax keyword gpTodo contained TODO syntax sync ccomment gpComment minlines=10 "catch errors caused by wrong parenthesis syntax region gpParen transparent start='(' end=')' contains=ALLBUT,gpParenError,gpTodo,gpFunction,gpArgs,gpSpecial syntax match gpParenError ")" syntax match gpInParen contained "[{}]" hi def link gpConditional Conditional hi def link gpRepeat Repeat hi def link gpError Error hi def link gpParenError gpError hi def link gpInParen gpError hi def link gpStatement Statement hi def link gpString String hi def link gpComment Comment hi def link gpInterface Type hi def link gpInput Type hi def link gpInterfaceKey Statement hi def link gpFunction Function hi def link gpScope Type " contained ones hi def link gpSpecial Special hi def link gpTodo Todo hi def link gpArgs Type let b:current_syntax = "gp" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 PK!T.vim80/syntax/lout.vimnu[" Vim syntax file " Language: Lout " Maintainer: Christian V. J. Brssow " Last Change: So 12 Feb 2012 15:15:03 CET " Filenames: *.lout,*.lt " URL: http://www.cvjb.de/comp/vim/lout.vim " $Id: lout.vim,v 1.4 2012/02/12 15:16:17 bruessow Exp $ " " Lout: Basser Lout document formatting system. " Many Thanks to... " " 2012-02-12: " Thilo Six send a patch for cpoptions. " See the discussion at http://thread.gmane.org/gmane.editors.vim.devel/32151 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save=&cpo set cpo&vim " Lout is case sensitive syn case match " Synchronization, I know it is a huge number, but normal texts can be " _very_ long ;-) syn sync lines=1000 " Characters allowed in keywords " I don't know if 128-255 are allowed in ANS-FORHT setlocal iskeyword=@,48-57,.,@-@,_,192-255 " Some special keywords syn keyword loutTodo contained TODO lout Lout LOUT syn keyword loutDefine def macro " Some big structures syn keyword loutKeyword @Begin @End @Figure @Tab syn keyword loutKeyword @Book @Doc @Document @Report syn keyword loutKeyword @Introduction @Abstract @Appendix syn keyword loutKeyword @Chapter @Section @BeginSections @EndSections " All kind of Lout keywords syn match loutFunction '\<@[^ \t{}]\+\>' " Braces -- Don`t edit these lines! syn match loutMBraces '[{}]' syn match loutIBraces '[{}]' syn match loutBBrace '[{}]' syn match loutBIBraces '[{}]' syn match loutHeads '[{}]' " Unmatched braces. syn match loutBraceError '}' " End of multi-line definitions, like @Document, @Report and @Book. syn match loutEOmlDef '^//$' " Grouping of parameters and objects. syn region loutObject transparent matchgroup=Delimiter start='{' matchgroup=Delimiter end='}' contains=ALLBUT,loutBraceError " The NULL object has a special meaning syn keyword loutNULL {} " Comments syn region loutComment start='\#' end='$' contains=loutTodo " Double quotes syn region loutSpecial start=+"+ skip=+\\\\\|\\"+ end=+"+ " ISO-LATIN-1 characters created with @Char, or Adobe symbols " created with @Sym syn match loutSymbols '@\(\(Char\)\|\(Sym\)\)\s\+[A-Za-z]\+' " Include files syn match loutInclude '@IncludeGraphic\s\+\k\+' syn region loutInclude start='@\(\(SysInclude\)\|\(IncludeGraphic\)\|\(Include\)\)\s*{' end='}' " Tags syn match loutTag '@\(\(Tag\)\|\(PageMark\)\|\(PageOf\)\|\(NumberOf\)\)\s\+\k\+' syn region loutTag start='@Tag\s*{' end='}' " Equations syn match loutMath '@Eq\s\+\k\+' syn region loutMath matchgroup=loutMBraces start='@Eq\s*{' matchgroup=loutMBraces end='}' contains=ALLBUT,loutBraceError " " Fonts syn match loutItalic '@I\s\+\k\+' syn region loutItalic matchgroup=loutIBraces start='@I\s*{' matchgroup=loutIBraces end='}' contains=ALLBUT,loutBraceError syn match loutBold '@B\s\+\k\+' syn region loutBold matchgroup=loutBBraces start='@B\s*{' matchgroup=loutBBraces end='}' contains=ALLBUT,loutBraceError syn match loutBoldItalic '@BI\s\+\k\+' syn region loutBoldItalic matchgroup=loutBIBraces start='@BI\s*{' matchgroup=loutBIBraces end='}' contains=ALLBUT,loutBraceError syn region loutHeadings matchgroup=loutHeads start='@\(\(Title\)\|\(Caption\)\)\s*{' matchgroup=loutHeads end='}' contains=ALLBUT,loutBraceError " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overrriden later. hi def link loutTodo Todo hi def link loutDefine Define hi def link loutEOmlDef Define hi def link loutFunction Function hi def link loutBraceError Error hi def link loutNULL Special hi def link loutComment Comment hi def link loutSpecial Special hi def link loutSymbols Character hi def link loutInclude Include hi def link loutKeyword Keyword hi def link loutTag Tag hi def link loutMath Number hi def link loutMBraces loutMath hi loutItalic term=italic cterm=italic gui=italic hi def link loutIBraces loutItalic hi loutBold term=bold cterm=bold gui=bold hi def link loutBBraces loutBold hi loutBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic hi def link loutBIBraces loutBoldItalic hi loutHeadings term=bold cterm=bold guifg=indianred hi def link loutHeads loutHeadings let b:current_syntax = "lout" let &cpo=s:cpo_save unlet s:cpo_save " vim:ts=8:sw=4:nocindent:smartindent: PK!y__vim80/syntax/nroff.vimnu[" VIM syntax file " Language: nroff/groff " Maintainer: Pedro Alejandro Lpez-Valencia " URL: http://vorbote.wordpress.com/ " Last Change: 2012 Feb 2 " " {{{1 Acknowledgements " " ACKNOWLEDGEMENTS: " " My thanks to Jrme Plt , who was the " creator and maintainer of this syntax file for several years. " May I be as good at it as he has been. " " {{{1 Todo " " TODO: " " * Write syntax highlighting files for the preprocessors, " and integrate with nroff.vim. " " " {{{1 Start syntax highlighting. " " quit when a syntax file was already loaded " if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " " {{{1 plugin settings... " " {{{2 enable spacing error highlighting " if exists("nroff_space_errors") syn match nroffError /\s\+$/ syn match nroffSpaceError /[.,:;!?]\s\{2,}/ endif " " " {{{1 Special file settings " " {{{2 ms exdented paragraphs are not in the default paragraphs list. " setlocal paragraphs+=XP " " {{{2 Activate navigation to preporcessor sections. " if exists("b:preprocs_as_sections") setlocal sections=EQTSPS[\ G1GS endif " {{{1 Escape sequences " ------------------------------------------------------------ syn match nroffEscChar /\\[CN]/ nextgroup=nroffEscCharArg syn match nroffEscape /\\[*fgmnYV]/ nextgroup=nroffEscRegPar,nroffEscRegArg syn match nroffEscape /\\s[+-]\=/ nextgroup=nroffSize syn match nroffEscape /\\[$AbDhlLRvxXZ]/ nextgroup=nroffEscPar,nroffEscArg syn match nroffEscRegArg /./ contained syn match nroffEscRegArg2 /../ contained syn match nroffEscRegPar /(/ contained nextgroup=nroffEscRegArg2 syn match nroffEscArg /./ contained syn match nroffEscArg2 /../ contained syn match nroffEscPar /(/ contained nextgroup=nroffEscArg2 syn match nroffSize /\((\d\)\=\d/ contained syn region nroffEscCharArg start=/'/ end=/'/ contained syn region nroffEscArg start=/'/ end=/'/ contained contains=nroffEscape,@nroffSpecial if exists("b:nroff_is_groff") syn region nroffEscRegArg matchgroup=nroffEscape start=/\[/ end=/\]/ contained oneline syn region nroffSize matchgroup=nroffEscape start=/\[/ end=/\]/ contained endif syn match nroffEscape /\\[adprtu{}]/ syn match nroffEscape /\\$/ syn match nroffEscape /\\\$[@*]/ " {{{1 Strings and special characters " ------------------------------------------------------------ syn match nroffSpecialChar /\\[\\eE?!-]/ syn match nroffSpace "\\[&%~|^0)/,]" syn match nroffSpecialChar /\\(../ if exists("b:nroff_is_groff") syn match nroffSpecialChar /\\\[[^]]*]/ syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\?/ end=/\\?/ oneline endif syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\!/ end=/$/ oneline syn cluster nroffSpecial contains=nroffSpecialChar,nroffSpace syn region nroffString start=/"/ end=/"/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained syn region nroffString start=/'/ end=/'/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained " {{{1 Numbers and units " ------------------------------------------------------------ syn match nroffNumBlock /[0-9.]\a\=/ contained contains=nroffNumber syn match nroffNumber /\d\+\(\.\d*\)\=/ contained nextgroup=nroffUnit,nroffBadChar syn match nroffNumber /\.\d\+)/ contained nextgroup=nroffUnit,nroffBadChar syn match nroffBadChar /./ contained syn match nroffUnit /[icpPszmnvMu]/ contained " {{{1 Requests " ------------------------------------------------------------ " Requests begin with . or ' at the beginning of a line, or " after .if or .ie. syn match nroffReqLeader /^[.']/ nextgroup=nroffReqName skipwhite syn match nroffReqLeader /[.']/ contained nextgroup=nroffReqName skipwhite if exists("b:nroff_is_groff") " " GNU troff allows long request names " syn match nroffReqName /[^\t \\\[?]\+/ contained nextgroup=nroffReqArg else syn match nroffReqName /[^\t \\\[?]\{1,2}/ contained nextgroup=nroffReqArg endif syn region nroffReqArg start=/\S/ skip=/\\$/ end=/$/ contained contains=nroffEscape,@nroffSpecial,nroffString,nroffError,nroffSpaceError,nroffNumBlock,nroffComment " {{{2 Conditional: .if .ie .el syn match nroffReqName /\(if\|ie\)/ contained nextgroup=nroffCond skipwhite syn match nroffReqName /el/ contained nextgroup=nroffReqLeader skipwhite syn match nroffCond /\S\+/ contained nextgroup=nroffReqLeader skipwhite " {{{2 String definition: .ds .as syn match nroffReqname /[da]s/ contained nextgroup=nroffDefIdent skipwhite syn match nroffDefIdent /\S\+/ contained nextgroup=nroffDefinition skipwhite syn region nroffDefinition matchgroup=nroffSpecialChar start=/"/ matchgroup=NONE end=/\\"/me=e-2 skip=/\\$/ start=/\S/ end=/$/ contained contains=nroffDefSpecial syn match nroffDefSpecial /\\$/ contained syn match nroffDefSpecial /\\\((.\)\=./ contained if exists("b:nroff_is_groff") syn match nroffDefSpecial /\\\[[^]]*]/ contained endif " {{{2 Macro definition: .de .am, also diversion: .di syn match nroffReqName /\(d[ei]\|am\)/ contained nextgroup=nroffIdent skipwhite syn match nroffIdent /[^[?( \t]\+/ contained if exists("b:nroff_is_groff") syn match nroffReqName /als/ contained nextgroup=nroffIdent skipwhite endif " {{{2 Register definition: .rn .rr syn match nroffReqName /[rn]r/ contained nextgroup=nroffIdent skipwhite if exists("b:nroff_is_groff") syn match nroffReqName /\(rnn\|aln\)/ contained nextgroup=nroffIdent skipwhite endif " {{{1 eqn/tbl/pic " ------------------------------------------------------------ " " XXX: write proper syntax highlight for eqn / tbl / pic ? " syn region nroffEquation start=/^\.\s*EQ\>/ end=/^\.\s*EN\>/ syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/ syn region nroffPicture start=/^\.\s*PS\>/ end=/^\.\s*PE\>/ syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/ syn region nroffGrap start=/^\.\s*G1\>/ end=/^\.\s*G2\>/ syn region nroffGremlin start=/^\.\s*GS\>/ end=/^\.\s*GE|GF\>/ " {{{1 Comments " ------------------------------------------------------------ syn region nroffIgnore start=/^[.']\s*ig/ end=/^['.]\s*\./ syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo syn match nroffComment /^'''.*/ contains=nroffTodo if exists("b:nroff_is_groff") syn match nroffComment "\\#.*$" contains=nroffTodo endif syn keyword nroffTodo TODO XXX FIXME contained " {{{1 Hilighting " ------------------------------------------------------------ " " " Define the default highlighting. " Only when an item doesn't have highlighting yet " hi def link nroffEscChar nroffSpecialChar hi def link nroffEscCharAr nroffSpecialChar hi def link nroffSpecialChar SpecialChar hi def link nroffSpace Delimiter hi def link nroffEscRegArg2 nroffEscRegArg hi def link nroffEscRegArg nroffIdent hi def link nroffEscArg2 nroffEscArg hi def link nroffEscPar nroffEscape hi def link nroffEscRegPar nroffEscape hi def link nroffEscArg nroffEscape hi def link nroffSize nroffEscape hi def link nroffEscape Preproc hi def link nroffIgnore Comment hi def link nroffComment Comment hi def link nroffTodo Todo hi def link nroffReqLeader nroffRequest hi def link nroffReqName nroffRequest hi def link nroffRequest Statement hi def link nroffCond PreCondit hi def link nroffDefIdent nroffIdent hi def link nroffIdent Identifier hi def link nroffEquation PreProc hi def link nroffTable PreProc hi def link nroffPicture PreProc hi def link nroffRefer PreProc hi def link nroffGrap PreProc hi def link nroffGremlin PreProc hi def link nroffNumber Number hi def link nroffBadChar nroffError hi def link nroffSpaceError nroffError hi def link nroffError Error hi def link nroffPreserve String hi def link nroffString String hi def link nroffDefinition String hi def link nroffDefSpecial Special let b:current_syntax = "nroff" let &cpo = s:cpo_save unlet s:cpo_save " vim600: set fdm=marker fdl=2: PK!m2%44vim80/syntax/idlang.vimnu[" Interactive Data Language syntax file (IDL, too [:-)] " Maintainer: Aleksandar Jelenak " Last change: 2011 Apr 11 " Created by: Hermann Rochholz " Remove any old syntax stuff hanging around " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syntax case ignore syn match idlangStatement "^\s*pro\s" syn match idlangStatement "^\s*function\s" syn keyword idlangStatement return continue mod do break syn keyword idlangStatement compile_opt forward_function goto syn keyword idlangStatement begin common end of syn keyword idlangStatement inherits on_ioerror begin syn keyword idlangConditional if else then for while case switch syn keyword idlangConditional endcase endelse endfor endswitch syn keyword idlangConditional endif endrep endwhile repeat until syn match idlangOperator "\ and\ " syn match idlangOperator "\ eq\ " syn match idlangOperator "\ ge\ " syn match idlangOperator "\ gt\ " syn match idlangOperator "\ le\ " syn match idlangOperator "\ lt\ " syn match idlangOperator "\ ne\ " syn match idlangOperator /\(\ \|(\)not\ /hs=e-3 syn match idlangOperator "\ or\ " syn match idlangOperator "\ xor\ " syn keyword idlangStop stop pause syn match idlangStrucvar "\h\w*\(\.\h\w*\)\+" syn match idlangStrucvar "[),\]]\(\.\h\w*\)\+"hs=s+1 syn match idlangSystem "\!\a\w*\(\.\w*\)\=" syn match idlangKeyword "\([(,]\s*\(\$\_s*\)\=\)\@<=/\h\w*" syn match idlangKeyword "\([(,]\s*\(\$\_s*\)\=\)\@<=\h\w*\s*=" syn keyword idlangTodo contained TODO syn region idlangString start=+"+ end=+"+ syn region idlangString start=+'+ end=+'+ syn match idlangPreCondit "^\s*@\w*\(\.\a\{3}\)\=" syn match idlangRealNumber "\<\d\+\(\.\=\d*e[+-]\=\d\+\|\.\d*d\|\.\d*\|d\)" syn match idlangRealNumber "\.\d\+\(d\|e[+-]\=\d\+\)\=" syn match idlangNumber "\<\.\@!\d\+\.\@!\(b\|u\|us\|s\|l\|ul\|ll\|ull\)\=\>" syn match idlangComment "[\;].*$" contains=idlangTodo syn match idlangContinueLine "\$\s*\($\|;\)"he=s+1 contains=idlangComment syn match idlangContinueLine "&\s*\(\h\|;\)"he=s+1 contains=ALL syn match idlangDblCommaError "\,\s*\," " List of standard routines as of IDL version 5.4. syn match idlangRoutine "EOS_\a*" syn match idlangRoutine "HDF_\a*" syn match idlangRoutine "CDF_\a*" syn match idlangRoutine "NCDF_\a*" syn match idlangRoutine "QUERY_\a*" syn match idlangRoutine "\ " Program URL: http://devel-home.kde.org/~sewardj/ " Last Change: 2015 Jan 27 " Included improvement by Dominique Pelle " " Notes: mostly based on strace.vim and xml.vim " " Contributors: Christoph Gysin " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim " Lines can be long with demangled c++ functions. setlocal synmaxcol=8000 syn case match syn sync minlines=50 syn match valgrindSpecLine "^[+-]\{2}\d\+[+-]\{2}.*$" syn region valgrindRegion \ start=+^==\z(\d\+\)== \w.*$+ \ skip=+^==\z1==\( \| .*\)$+ \ end=+^+ \ fold \ keepend \ contains=valgrindPidChunk,valgrindLine syn region valgrindPidChunk \ start=+^==\zs+ \ end=+\ze==+ \ contained \ contains=valgrindPid0,valgrindPid1,valgrindPid2,valgrindPid3,valgrindPid4,valgrindPid5,valgrindPid6,valgrindPid7,valgrindPid8,valgrindPid9 \ keepend syn match valgrindPid0 "\d\+0=" contained syn match valgrindPid1 "\d\+1=" contained syn match valgrindPid2 "\d\+2=" contained syn match valgrindPid3 "\d\+3=" contained syn match valgrindPid4 "\d\+4=" contained syn match valgrindPid5 "\d\+5=" contained syn match valgrindPid6 "\d\+6=" contained syn match valgrindPid7 "\d\+7=" contained syn match valgrindPid8 "\d\+8=" contained syn match valgrindPid9 "\d\+9=" contained syn region valgrindLine \ start=+\(^==\d\+== \)\@<=+ \ end=+$+ \ keepend \ contained \ contains=valgrindOptions,valgrindMsg,valgrindLoc syn match valgrindOptions "[ ]\{3}-.*$" contained syn match valgrindMsg "\S.*$" contained \ contains=valgrindError,valgrindNote,valgrindSummary syn match valgrindError "\(Invalid\|\d\+ errors\|.* definitely lost\).*$" contained syn match valgrindNote ".*still reachable.*" contained syn match valgrindSummary ".*SUMMARY:" contained syn match valgrindLoc "\s\+\(by\|at\|Address\).*$" contained \ contains=valgrindAt,valgrindAddr,valgrindFunc,valgrindBin,valgrindSrc syn match valgrindAt "at\s\@=" contained syn match valgrindAddr "\W\zs0x\x\+" contained syn match valgrindFunc ": \zs\h[a-zA-Z0-9_:\[\]()<>&*+\-,=%!|^ ]*\ze([^)]*)$" contained syn match valgrindBin "(\(with\)\=in \zs\S\+)\@=" contained syn match valgrindSrc "(\zs[^)]*:\d\+)\@=" contained " Define the default highlighting hi def link valgrindSpecLine Type "hi def link valgrindRegion Special hi def link valgrindPid0 Special hi def link valgrindPid1 Comment hi def link valgrindPid2 Type hi def link valgrindPid3 Constant hi def link valgrindPid4 Number hi def link valgrindPid5 Identifier hi def link valgrindPid6 Statement hi def link valgrindPid7 Error hi def link valgrindPid8 LineNr hi def link valgrindPid9 Normal "hi def link valgrindLine Special hi def link valgrindOptions Type "hi def link valgrindMsg Special "hi def link valgrindLoc Special hi def link valgrindError Special hi def link valgrindNote Comment hi def link valgrindSummary Type hi def link valgrindAt Special hi def link valgrindAddr Number hi def link valgrindFunc Type hi def link valgrindBin Comment hi def link valgrindSrc Statement let b:current_syntax = "valgrind" let &cpo = s:keepcpo unlet s:keepcpo PK!V 22vim80/syntax/sqr.vimnu[" Vim syntax file " Language: Structured Query Report Writer (SQR) " Maintainer: Nathan Stratton Treadway (nathanst at ontko dot com) " URL: http://www.ontko.com/sqr/#editor_config_files " " Modification History: " 2002-Apr-12: Updated for SQR v6.x " 2002-Jul-30: Added { and } to iskeyword definition " 2003-Oct-15: Allow "." in variable names " highlight entire open '... literal when it contains " "''" inside it (e.g. "'I can''t say" is treated " as one open string, not one terminated and one open) " {} variables can occur inside of '...' literals " " Thanks to the previous maintainer of this file, Jeff Lanzarotta: " http://lanzarotta.tripod.com/vim.html " jefflanzarotta at yahoo dot com " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,_,-,#,$,{,} syn case ignore " BEGIN GENERATED SECTION ============================================ " Generated by generate_vim_syntax.sqr at 2002/04/11 13:04 " (based on the UltraEdit syntax file for SQR 6.1.4 " found at http://www.ontko.com/sqr/#editor_config_files ) syn keyword sqrSection begin-footing begin-heading begin-procedure syn keyword sqrSection begin-program begin-report begin-setup syn keyword sqrSection end-footing end-heading end-procedure syn keyword sqrSection end-program end-report end-setup syn keyword sqrParagraph alter-color-map alter-connection syn keyword sqrParagraph alter-locale alter-printer alter-report syn keyword sqrParagraph begin-document begin-execute begin-select syn keyword sqrParagraph begin-sql declare-chart declare-image syn keyword sqrParagraph declare-color-map declare-connection syn keyword sqrParagraph declare-layout declare-printer syn keyword sqrParagraph declare-report declare-procedure syn keyword sqrParagraph declare-toc declare-variable end-declare syn keyword sqrParagraph end-document end-select exit-select end-sql syn keyword sqrParagraph load-lookup syn keyword sqrReserved #current-column #current-date #current-line syn keyword sqrReserved #end-file #page-count #return-status syn keyword sqrReserved #sql-count #sql-status #sqr-max-columns syn keyword sqrReserved #sqr-max-lines #sqr-pid #sqr-toc-level syn keyword sqrReserved #sqr-toc-page $sqr-database {sqr-database} syn keyword sqrReserved $sqr-dbcs {sqr-dbcs} $sqr-encoding syn keyword sqrReserved {sqr-encoding} $sqr-encoding-console syn keyword sqrReserved {sqr-encoding-console} syn keyword sqrReserved $sqr-encoding-database syn keyword sqrReserved {sqr-encoding-database} syn keyword sqrReserved $sqr-encoding-file-input syn keyword sqrReserved {sqr-encoding-file-input} syn keyword sqrReserved $sqr-encoding-file-output syn keyword sqrReserved {sqr-encoding-file-output} syn keyword sqrReserved $sqr-encoding-report-input syn keyword sqrReserved {sqr-encoding-report-input} syn keyword sqrReserved $sqr-encoding-report-output syn keyword sqrReserved {sqr-encoding-report-output} syn keyword sqrReserved $sqr-encoding-source {sqr-encoding-source} syn keyword sqrReserved $sql-error $sqr-hostname {sqr-hostname} syn keyword sqrReserved $sqr-locale $sqr-platform {sqr-platform} syn keyword sqrReserved $sqr-program $sqr-report $sqr-toc-text syn keyword sqrReserved $sqr-ver $username syn keyword sqrPreProc #define #else #end-if #endif #if #ifdef syn keyword sqrPreProc #ifndef #include syn keyword sqrCommand add array-add array-divide array-multiply syn keyword sqrCommand array-subtract ask break call clear-array syn keyword sqrCommand close columns commit concat connect syn keyword sqrCommand create-array create-color-palette date-time syn keyword sqrCommand display divide do dollar-symbol else encode syn keyword sqrCommand end-evaluate end-if end-while evaluate syn keyword sqrCommand execute extract find get get-color goto syn keyword sqrCommand graphic if input last-page let lookup syn keyword sqrCommand lowercase mbtosbs money-symbol move syn keyword sqrCommand multiply new-page new-report next-column syn keyword sqrCommand next-listing no-formfeed open page-number syn keyword sqrCommand page-size position print print-bar-code syn keyword sqrCommand print-chart print-direct print-image syn keyword sqrCommand printer-deinit printer-init put read syn keyword sqrCommand rollback security set-color set-delay-print syn keyword sqrCommand set-generations set-levels set-members syn keyword sqrCommand sbtombs show stop string subtract toc-entry syn keyword sqrCommand unstring uppercase use use-column syn keyword sqrCommand use-printer-type use-procedure use-report syn keyword sqrCommand while write syn keyword sqrParam 3d-effects after after-bold after-page syn keyword sqrParam after-report after-toc and as at-end before syn keyword sqrParam background batch-mode beep before-bold syn keyword sqrParam before-page before-report before-toc blink syn keyword sqrParam bold border bottom-margin box break by syn keyword sqrParam caption center char char-size char-width syn keyword sqrParam chars-inch chart-size checksum cl syn keyword sqrParam clear-line clear-screen color color-palette syn keyword sqrParam cs color_ data-array syn keyword sqrParam data-array-column-count syn keyword sqrParam data-array-column-labels syn keyword sqrParam data-array-row-count data-labels date syn keyword sqrParam date-edit-mask date-seperator syn keyword sqrParam day-of-week-case day-of-week-full syn keyword sqrParam day-of-week-short decimal decimal-seperator syn keyword sqrParam default-numeric delay distinct dot-leader syn keyword sqrParam edit-option-ad edit-option-am syn keyword sqrParam edit-option-bc edit-option-na syn keyword sqrParam edit-option-pm encoding entry erase-page syn keyword sqrParam extent field fill fixed fixed_nolf float syn keyword sqrParam font font-style font-type footing syn keyword sqrParam footing-size foreground for-append syn keyword sqrParam for-reading for-reports for-tocs syn keyword sqrParam for-writing format formfeed from goto-top syn keyword sqrParam group having heading heading-size height syn keyword sqrParam horz-line image-size in indentation syn keyword sqrParam init-string input-date-edit-mask insert syn keyword sqrParam integer into item-color item-size key syn keyword sqrParam layout left-margin legend legend-placement syn keyword sqrParam legend-presentation legend-title level syn keyword sqrParam line-height line-size line-width lines-inch syn keyword sqrParam local locale loops max-columns max-lines syn keyword sqrParam maxlen money money-edit-mask money-sign syn keyword sqrParam money-sign-location months-case months-full syn keyword sqrParam months-short name need newline newpage syn keyword sqrParam no-advance nolf noline noprompt normal not syn keyword sqrParam nowait number number-edit-mask on-break syn keyword sqrParam on-error or order orientation page-depth syn keyword sqrParam paper-size pie-segment-explode syn keyword sqrParam pie-segment-percent-display syn keyword sqrParam pie-segment-quantity-display pitch syn keyword sqrParam point-markers point-size printer syn keyword sqrParam printer-type quiet record reset-string syn keyword sqrParam return_value reverse right-margin rows save syn keyword sqrParam select size skip skiplines sort source syn keyword sqrParam sqr-database sqr-platform startup-file syn keyword sqrParam status stop sub-title symbol-set system syn keyword sqrParam table text thousand-seperator syn keyword sqrParam time-seperator times title to toc syn keyword sqrParam top-margin type underline update using syn keyword sqrParam value vary vert-line wait warn when syn keyword sqrParam when-other where with x-axis-grid syn keyword sqrParam x-axis-label x-axis-major-increment syn keyword sqrParam x-axis-major-tick-marks x-axis-max-value syn keyword sqrParam x-axis-min-value x-axis-minor-increment syn keyword sqrParam x-axis-minor-tick-marks x-axis-rotate syn keyword sqrParam x-axis-scale x-axis-tick-mark-placement xor syn keyword sqrParam y-axis-grid y-axis-label syn keyword sqrParam y-axis-major-increment syn keyword sqrParam y-axis-major-tick-marks y-axis-max-value syn keyword sqrParam y-axis-min-value y-axis-minor-increment syn keyword sqrParam y-axis-minor-tick-marks y-axis-scale syn keyword sqrParam y-axis-tick-mark-placement y2-type syn keyword sqrParam y2-data-array y2-data-array-row-count syn keyword sqrParam y2-data-array-column-count syn keyword sqrParam y2-data-array-column-labels syn keyword sqrParam y2-axis-color-palette y2-axis-label syn keyword sqrParam y2-axis-major-increment syn keyword sqrParam y2-axis-major-tick-marks y2-axis-max-value syn keyword sqrParam y2-axis-min-value y2-axis-minor-increment syn keyword sqrParam y2-axis-minor-tick-marks y2-axis-scale syn keyword sqrFunction abs acos asin atan array ascii asciic ceil syn keyword sqrFunction cos cosh chr cond deg delete dateadd syn keyword sqrFunction datediff datenow datetostr e10 exp edit syn keyword sqrFunction exists floor getenv instr instrb isblank syn keyword sqrFunction isnull log log10 length lengthb lengthp syn keyword sqrFunction lengtht lower lpad ltrim mod nvl power rad syn keyword sqrFunction round range replace roman rpad rtrim rename syn keyword sqrFunction sign sin sinh sqrt substr substrb substrp syn keyword sqrFunction substrt strtodate tan tanh trunc to_char syn keyword sqrFunction to_multi_byte to_number to_single_byte syn keyword sqrFunction transform translate unicode upper wrapdepth " END GENERATED SECTION ============================================== " Variables syn match sqrVariable /\(\$\|#\|&\)\(\k\|\.\)*/ " Debug compiler directives syn match sqrPreProc /\s*#debug\a\=\(\s\|$\)/ syn match sqrSubstVar /{\k*}/ " Strings " Note: if an undoubled ! is found, this is not a valid string " (SQR will treat the end of the line as a comment) syn match sqrString /'\(!!\|[^!']\)*'/ contains=sqrSubstVar syn match sqrStrOpen /'\(!!\|''\|[^!']\)*$/ " If we find a ' followed by an unmatched ! before a matching ', " flag the error. syn match sqrError /'\(!!\|[^'!]\)*![^!]/me=e-1 syn match sqrError /'\(!!\|[^'!]\)*!$/ " Numbers: syn match sqrNumber /-\=\<\d*\.\=[0-9_]\>/ " Comments: " Handle comments that start with "!=" specially; they are only valid " in the first column of the source line. Also, "!!" is only treated " as a start-comment if there is only whitespace ahead of it on the line. syn keyword sqrTodo TODO FIXME XXX DEBUG NOTE ### syn match sqrTodo /???/ " See also the sqrString section above for handling of ! characters " inside of strings. (Those patterns override the ones below.) syn match sqrComment /!\@ " Last Change: 2018 Mar 29 by Marcin Szamotulski " Original Author: John Williams " " Thanks to Ryan Crumley for suggestions and John Meacham for " pointing out bugs. Also thanks to Ian Lynagh and Donald Bruce Stewart " for providing the inspiration for the inclusion of the handling " of C preprocessor directives, and for pointing out a bug in the " end-of-line comment handling. " " Options-assign a value to these variables to turn the option on: " " hs_highlight_delimiters - Highlight delimiter characters--users " with a light-colored background will " probably want to turn this on. " hs_highlight_boolean - Treat True and False as keywords. " hs_highlight_types - Treat names of primitive types as keywords. " hs_highlight_more_types - Treat names of other common types as keywords. " hs_highlight_debug - Highlight names of debugging functions. " hs_allow_hash_operator - Don't highlight seemingly incorrect C " preprocessor directives but assume them to be " operators " " 2004 Feb 19: Added C preprocessor directive handling, corrected eol comments " cleaned away literate haskell support (should be entirely in " lhaskell.vim) " 2004 Feb 20: Cleaned up C preprocessor directive handling, fixed single \ " in eol comment character class " 2004 Feb 23: Made the leading comments somewhat clearer where it comes " to attribution of work. " 2008 Dec 15: Added comments as contained element in import statements " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " (Qualified) identifiers (no default highlighting) syn match ConId "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=\<[A-Z][a-zA-Z0-9_']*\>" contains=@NoSpell syn match VarId "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=\<[a-z][a-zA-Z0-9_']*\>" contains=@NoSpell " Infix operators--most punctuation characters and any (qualified) identifier " enclosed in `backquotes`. An operator starting with : is a constructor, " others are variables (e.g. functions). syn match hsVarSym "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[-!#$%&\*\+/<=>\?@\\^|~.][-!#$%&\*\+/<=>\?@\\^|~:.]*" syn match hsConSym "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=:[-!#$%&\*\+./<=>\?@\\^|~:]*" syn match hsVarSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[a-z][a-zA-Z0-9_']*`" syn match hsConSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[A-Z][a-zA-Z0-9_']*`" " Reserved symbols--cannot be overloaded. syn match hsDelimiter "(\|)\|\[\|\]\|,\|;\|_\|{\|}" " Strings and constants syn match hsSpecialChar contained "\\\([0-9]\+\|o[0-7]\+\|x[0-9a-fA-F]\+\|[\"\\'&\\abfnrtv]\|^[A-Z^_\[\\\]]\)" syn match hsSpecialChar contained "\\\(NUL\|SOH\|STX\|ETX\|EOT\|ENQ\|ACK\|BEL\|BS\|HT\|LF\|VT\|FF\|CR\|SO\|SI\|DLE\|DC1\|DC2\|DC3\|DC4\|NAK\|SYN\|ETB\|CAN\|EM\|SUB\|ESC\|FS\|GS\|RS\|US\|SP\|DEL\)" syn match hsSpecialCharError contained "\\&\|'''\+" syn region hsString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=hsSpecialChar,@NoSpell syn match hsCharacter "[^a-zA-Z0-9_']'\([^\\]\|\\[^']\+\|\\'\)'"lc=1 contains=hsSpecialChar,hsSpecialCharError syn match hsCharacter "^'\([^\\]\|\\[^']\+\|\\'\)'" contains=hsSpecialChar,hsSpecialCharError syn match hsNumber "\v<[0-9]%(_*[0-9])*>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*>|<0[oO]_*%(_*[0-7])*>|<0[bB]_*[01]%(_*[01])*>" syn match hsFloat "\v<[0-9]%(_*[0-9])*\.[0-9]%(_*[0-9])*%(_*[eE][-+]?[0-9]%(_*[0-9])*)?>|<[0-9]%(_*[0-9])*_*[eE][-+]?[0-9]%(_*[0-9])*>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*\.[0-9a-fA-F]%(_*[0-9a-fA-F])*%(_*[pP][-+]?[0-9]%(_*[0-9])*)?>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*_*[pP][-+]?[0-9]%(_*[0-9])*>" " Keyword definitions. These must be patterns instead of keywords " because otherwise they would match as keywords at the start of a " "literate" comment (see lhs.vim). syn match hsModule "\" syn match hsImport "\.*"he=s+6 contains=hsImportMod,hsLineComment,hsBlockComment,@NoSpell syn match hsImportMod contained "\<\(as\|qualified\|hiding\)\>" contains=@NoSpell syn match hsInfix "\<\(infix\|infixl\|infixr\)\>" syn match hsStructure "\<\(class\|data\|deriving\|instance\|default\|where\)\>" syn match hsTypedef "\<\(type\|newtype\)\>" syn match hsStatement "\<\(do\|case\|of\|let\|in\)\>" syn match hsConditional "\<\(if\|then\|else\)\>" " Not real keywords, but close. if exists("hs_highlight_boolean") " Boolean constants from the standard prelude. syn match hsBoolean "\<\(True\|False\)\>" endif if exists("hs_highlight_types") " Primitive types from the standard prelude and libraries. syn match hsType "\<\(Int\|Integer\|Char\|Bool\|Float\|Double\|IO\|Void\|Addr\|Array\|String\)\>" endif if exists("hs_highlight_more_types") " Types from the standard prelude libraries. syn match hsType "\<\(Maybe\|Either\|Ratio\|Complex\|Ordering\|IOError\|IOResult\|ExitCode\)\>" syn match hsMaybe "\" syn match hsExitCode "\<\(ExitSuccess\)\>" syn match hsOrdering "\<\(GT\|LT\|EQ\)\>" endif if exists("hs_highlight_debug") " Debugging functions from the standard prelude. syn match hsDebug "\<\(undefined\|error\|trace\)\>" endif " Comments syn match hsLineComment "---*\([^-!#$%&\*\+./<=>\?@\\^|~].*\)\?$" contains=@Spell syn region hsBlockComment start="{-" end="-}" contains=hsBlockComment,@Spell syn region hsPragma start="{-#" end="#-}" " C Preprocessor directives. Shamelessly ripped from c.vim and trimmed " First, see whether to flag directive-like lines or not if (!exists("hs_allow_hash_operator")) syn match cError display "^\s*\(%:\|#\).*$" endif " Accept %: for # (C99) syn region cPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=cComment,cCppString,cCommentError syn match cPreCondit display "^\s*\(%:\|#\)\s*\(else\|endif\)\>" syn region cCppOut start="^\s*\(%:\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=cCppOut2 syn region cCppOut2 contained start="0" end="^\s*\(%:\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=cCppSkip syn region cCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cCppSkip syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match cIncluded display contained "<[^>]*>" syn match cInclude display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cCppOut,cCppOut2,cCppSkip,cCommentStartError syn region cDefine matchgroup=cPreCondit start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" syn region cPreProc matchgroup=cPreCondit start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=cCommentStartError,cSpaceError contained syntax match cCommentError display "\*/" contained syntax match cCommentStartError display "/\*"me=e-1 contained syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial contained " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link hsModule hsStructure hi def link hsImport Include hi def link hsImportMod hsImport hi def link hsInfix PreProc hi def link hsStructure Structure hi def link hsStatement Statement hi def link hsConditional Conditional hi def link hsSpecialChar SpecialChar hi def link hsTypedef Typedef hi def link hsVarSym hsOperator hi def link hsConSym hsOperator hi def link hsOperator Operator if exists("hs_highlight_delimiters") " Some people find this highlighting distracting. hi def link hsDelimiter Delimiter endif hi def link hsSpecialCharError Error hi def link hsString String hi def link hsCharacter Character hi def link hsNumber Number hi def link hsFloat Float hi def link hsConditional Conditional hi def link hsLiterateComment hsComment hi def link hsBlockComment hsComment hi def link hsLineComment hsComment hi def link hsComment Comment hi def link hsPragma SpecialComment hi def link hsBoolean Boolean hi def link hsType Type hi def link hsMaybe hsEnumConst hi def link hsOrdering hsEnumConst hi def link hsEnumConst Constant hi def link hsDebug Debug hi def link cCppString hsString hi def link cCommentStart hsComment hi def link cCommentError hsError hi def link cCommentStartError hsError hi def link cInclude Include hi def link cPreProc PreProc hi def link cDefine Macro hi def link cIncluded hsString hi def link cError Error hi def link cPreCondit PreCondit hi def link cComment Comment hi def link cCppSkip cCppOut hi def link cCppOut2 cCppOut hi def link cCppOut Comment let b:current_syntax = "haskell" " Options for vi: ts=8 sw=2 sts=2 nowrap noexpandtab ft=vim PK!vim80/syntax/grads.vimnu[" Vim syntax file " Language: grads (GrADS scripts) " Maintainer: Stefan Fronzek (sfronzek at gmx dot net) " Last change: 13 Feb 2004 " Grid Analysis and Display System (GrADS); http://grads.iges.org/grads " This syntax file defines highlighting for only very few features of " the GrADS scripting language. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " GrADS is entirely case-insensitive. syn case ignore " The keywords syn keyword gradsStatement if else endif break exit return syn keyword gradsStatement while endwhile say prompt pull function syn keyword gradsStatement subwrd sublin substr read write close " String syn region gradsString start=+'+ end=+'+ " Integer number syn match gradsNumber "[+-]\=\<[0-9]\+\>" " Operator "syn keyword gradsOperator | ! % & != >= "syn match gradsOperator "[^\.]not[^a-zA-Z]" " Variables syn keyword gradsFixVariables lat lon lev result rec rc syn match gradsglobalVariables "_[a-zA-Z][a-zA-Z0-9]*" syn match gradsVariables "[a-zA-Z][a-zA-Z0-9]*" syn match gradsConst "#[A-Z][A-Z_]+" " Comments syn match gradsComment "\*.*" " Typical Typos " for C programmers: " syn match gradsTypos "==" " syn match gradsTypos "!=" " Define the default highlighting. " Only when an item doesn't hgs highlighting+yet hi def link gradsStatement Statement hi def link gradsString String hi def link gradsNumber Number hi def link gradsFixVariables Special hi def link gradsVariables Identifier hi def link gradsglobalVariables Special hi def link gradsConst Special hi def link gradsClassMethods Function hi def link gradsOperator Operator hi def link gradsComment Comment hi def link gradsTypos Error let b:current_syntax = "grads" PK!`{vim80/syntax/services.vimnu[" Vim syntax file " Language: services(5) - Internet network services list " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match servicesBegin display '^' \ nextgroup=servicesName,servicesComment syn match servicesName contained display '[[:graph:]]\+' \ nextgroup=servicesPort skipwhite syn match servicesPort contained display '\d\+' \ nextgroup=servicesPPDiv,servicesPPDivDepr \ skipwhite syn match servicesPPDiv contained display '/' \ nextgroup=servicesProtocol skipwhite syn match servicesPPDivDepr contained display ',' \ nextgroup=servicesProtocol skipwhite syn match servicesProtocol contained display '\S\+' \ nextgroup=servicesAliases,servicesComment \ skipwhite syn match servicesAliases contained display '\S\+' \ nextgroup=servicesAliases,servicesComment \ skipwhite syn keyword servicesTodo contained TODO FIXME XXX NOTE syn region servicesComment display oneline start='#' end='$' \ contains=servicesTodo,@Spell hi def link servicesTodo Todo hi def link servicesComment Comment hi def link servicesName Identifier hi def link servicesPort Number hi def link servicesPPDiv Delimiter hi def link servicesPPDivDepr Error hi def link servicesProtocol Type hi def link servicesAliases Macro let b:current_syntax = "services" let &cpo = s:cpo_save unlet s:cpo_save PK!Zvim80/syntax/vsejcl.vimnu[" Vim syntax file " Language: JCL job control language - DOS/VSE " Maintainer: Davyd Ondrejko " URL: " Last change: 2001 May 10 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " tags syn keyword vsejclKeyword DLBL EXEC JOB ASSGN EOJ syn keyword vsejclField JNM CLASS DISP USER SYSID JSEP SIZE syn keyword vsejclField VSAM syn region vsejclComment start="^/\*" end="$" syn region vsejclComment start="^[\* ]\{}$" end="$" syn region vsejclMisc start="^ " end="$" contains=Jparms syn match vsejclString /'.\{-}'/ syn match vsejclParms /(.\{-})/ contained " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link vsejclComment Comment hi def link vsejclField Type hi def link vsejclKeyword Statement hi def link vsejclObject Constant hi def link vsejclString Constant hi def link vsejclMisc Special hi def link vsejclParms Constant let b:current_syntax = "vsejcl" " vim: ts=4 PK!wvim80/syntax/kscript.vimnu[" Vim syntax file " Language: kscript " Maintainer: Thomas Capricelli " URL: http://aquila.rezel.enst.fr/thomas/vim/kscript.vim " CVS: $Id: kscript.vim,v 1.1 2004/06/13 17:40:02 vimboss Exp $ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn keyword kscriptPreCondit import from syn keyword kscriptHardCoded print println connect length arg mid upper lower isEmpty toInt toFloat findApplication syn keyword kscriptConditional if else switch syn keyword kscriptRepeat while for do foreach syn keyword kscriptExceptions emit catch raise try signal syn keyword kscriptFunction class struct enum syn keyword kscriptConst FALSE TRUE false true syn keyword kscriptStatement return delete syn keyword kscriptLabel case default syn keyword kscriptStorageClass const syn keyword kscriptType in out inout var syn keyword kscriptTodo contained TODO FIXME XXX syn region kscriptComment start="/\*" end="\*/" contains=kscriptTodo syn match kscriptComment "//.*" contains=kscriptTodo syn match kscriptComment "#.*$" contains=kscriptTodo syn region kscriptString start=+'+ end=+'+ skip=+\\\\\|\\'+ syn region kscriptString start=+"+ end=+"+ skip=+\\\\\|\\"+ syn region kscriptString start=+"""+ end=+"""+ syn region kscriptString start=+'''+ end=+'''+ " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link kscriptConditional Conditional hi def link kscriptRepeat Repeat hi def link kscriptExceptions Statement hi def link kscriptFunction Function hi def link kscriptConst Constant hi def link kscriptStatement Statement hi def link kscriptLabel Label hi def link kscriptStorageClass StorageClass hi def link kscriptType Type hi def link kscriptTodo Todo hi def link kscriptComment Comment hi def link kscriptString String hi def link kscriptPreCondit PreCondit hi def link kscriptHardCoded Statement let b:current_syntax = "kscript" " vim: ts=8 PK!`qttvim80/syntax/rnoweb.vimnu[" Vim syntax file " Language: R noweb Files " Maintainer: Johannes Ranke " Last Change: Sat Feb 06, 2016 06:47AM " Version: 0.9.1 " Remarks: - This file is inspired by the proposal of " Fernando Henrique Ferraz Pereira da Rosa " http://www.ime.usp.br/~feferraz/en/sweavevim.html " if exists("b:current_syntax") finish endif syn case match " Extension of Tex clusters {{{1 runtime syntax/tex.vim unlet b:current_syntax syn cluster texMatchGroup add=@rnoweb syn cluster texMathMatchGroup add=rnowebSexpr syn cluster texMathZoneGroup add=rnowebSexpr syn cluster texEnvGroup add=@rnoweb syn cluster texFoldGroup add=@rnoweb syn cluster texDocGroup add=@rnoweb syn cluster texPartGroup add=@rnoweb syn cluster texChapterGroup add=@rnoweb syn cluster texSectionGroup add=@rnoweb syn cluster texSubSectionGroup add=@rnoweb syn cluster texSubSubSectionGroup add=@rnoweb syn cluster texParaGroup add=@rnoweb " Highlighting of R code using an existing r.vim syntax file if available {{{1 syn include @rnowebR syntax/r.vim syn region rnowebChunk matchgroup=rnowebDelimiter start="^<<.*>>=" matchgroup=rnowebDelimiter end="^@" contains=@rnowebR,rnowebChunkReference,rnowebChunk fold keepend syn match rnowebChunkReference "^<<.*>>$" contained syn region rnowebSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter end="}" contains=@rnowebR contained " Sweave options command {{{1 syn region rnowebSweaveopts matchgroup=Delimiter start="\\SweaveOpts{" matchgroup=Delimiter end="}" " rnoweb Cluster {{{1 syn cluster rnoweb contains=rnowebChunk,rnowebChunkReference,rnowebDelimiter,rnowebSexpr,rnowebSweaveopts " Highlighting {{{1 hi def link rnowebDelimiter Delimiter hi def link rnowebSweaveOpts Statement hi def link rnowebChunkReference Delimiter let b:current_syntax = "rnoweb" " vim: foldmethod=marker: PK!B{{vim80/syntax/README.txtnu[This directory contains Vim scripts for syntax highlighting. These scripts are not for a language, but are used by Vim itself: syntax.vim Used for the ":syntax on" command. Uses synload.vim. manual.vim Used for the ":syntax manual" command. Uses synload.vim. synload.vim Contains autocommands to load a language file when a certain file name (extension) is used. And sets up the Syntax menu for the GUI. nosyntax.vim Used for the ":syntax off" command. Undo the loading of synload.vim. A few special files: 2html.vim Converts any highlighted file to HTML (GUI only). colortest.vim Check for color names and actual color on screen. hitest.vim View the current highlight settings. whitespace.vim View Tabs and Spaces. If you want to write a syntax file, read the docs at ":help usr_44.txt". If you make a new syntax file which would be useful for others, please send it to Bram@vim.org. Include instructions for detecting the file type for this language, by file name extension or by checking a few lines in the file. And please write the file in a portable way, see ":help 44.12". If you have remarks about an existing file, send them to the maintainer of that file. Only when you get no response send a message to Bram@vim.org. If you are the maintainer of a syntax file and make improvements, send the new version to Bram@vim.org. For further info see ":help syntax" in Vim. PK!|'vim80/syntax/pccts.vimnu[" Vim syntax file " Language: PCCTS " Maintainer: Scott Bigham " Last Change: 10 Aug 1999 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Read the C++ syntax to start with syn include @cppTopLevel syntax/cpp.vim syn region pcctsAction matchgroup=pcctsDelim start="<<" end=">>?\=" contains=@cppTopLevel,pcctsRuleRef syn region pcctsArgBlock matchgroup=pcctsDelim start="\(>\s*\)\=\[" end="\]" contains=@cppTopLevel,pcctsRuleRef syn region pcctsString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=pcctsSpecialChar syn match pcctsSpecialChar "\\\\\|\\\"" contained syn region pcctsComment start="/\*" end="\*/" contains=cTodo syn match pcctsComment "//.*$" contains=cTodo syn region pcctsDirective start="^\s*#header\s\+<<" end=">>" contains=pcctsAction keepend syn match pcctsDirective "^\s*#parser\>.*$" contains=pcctsString,pcctsComment syn match pcctsDirective "^\s*#tokdefs\>.*$" contains=pcctsString,pcctsComment syn match pcctsDirective "^\s*#token\>.*$" contains=pcctsString,pcctsAction,pcctsTokenName,pcctsComment syn region pcctsDirective start="^\s*#tokclass\s\+[A-Z]\i*\s\+{" end="}" contains=pcctsString,pcctsTokenName syn match pcctsDirective "^\s*#lexclass\>.*$" contains=pcctsTokenName syn region pcctsDirective start="^\s*#errclass\s\+[^{]\+\s\+{" end="}" contains=pcctsString,pcctsTokenName syn match pcctsDirective "^\s*#pred\>.*$" contains=pcctsTokenName,pcctsAction syn cluster pcctsInRule contains=pcctsString,pcctsRuleName,pcctsTokenName,pcctsAction,pcctsArgBlock,pcctsSubRule,pcctsLabel,pcctsComment syn region pcctsRule start="\<[a-z][A-Za-z0-9_]*\>\(\s*\[[^]]*\]\)\=\(\s*>\s*\[[^]]*\]\)\=\s*:" end=";" contains=@pcctsInRule syn region pcctsSubRule matchgroup=pcctsDelim start="(" end=")\(+\|\*\|?\(\s*=>\)\=\)\=" contains=@pcctsInRule contained syn region pcctsSubRule matchgroup=pcctsDelim start="{" end="}" contains=@pcctsInRule contained syn match pcctsRuleName "\<[a-z]\i*\>" contained syn match pcctsTokenName "\<[A-Z]\i*\>" contained syn match pcctsLabel "\<\I\i*:\I\i*" contained contains=pcctsLabelHack,pcctsRuleName,pcctsTokenName syn match pcctsLabel "\<\I\i*:\"\([^\\]\|\\.\)*\"" contained contains=pcctsLabelHack,pcctsString syn match pcctsLabelHack "\<\I\i*:" contained syn match pcctsRuleRef "\$\I\i*\>" contained syn match pcctsRuleRef "\$\d\+\(\.\d\+\)\>" contained syn keyword pcctsClass class nextgroup=pcctsClassName skipwhite syn match pcctsClassName "\<\I\i*\>" contained nextgroup=pcctsClassBlock skipwhite skipnl syn region pcctsClassBlock start="{" end="}" contained contains=pcctsRule,pcctsComment,pcctsDirective,pcctsAction,pcctsException,pcctsExceptionHandler syn keyword pcctsException exception nextgroup=pcctsExceptionRuleRef skipwhite syn match pcctsExceptionRuleRef "\[\I\i*\]" contained contains=pcctsExceptionID syn match pcctsExceptionID "\I\i*" contained syn keyword pcctsExceptionHandler catch default syn keyword pcctsExceptionHandler NoViableAlt NoSemViableAlt syn keyword pcctsExceptionHandler MismatchedToken syn sync clear syn sync match pcctsSyncAction grouphere pcctsAction "<<" syn sync match pcctsSyncAction "<<\([^>]\|>[^>]\)*>>" syn sync match pcctsSyncRule grouphere pcctsRule "\<[a-z][A-Za-z0-9_]*\>\s*\[[^]]*\]\s*:" syn sync match pcctsSyncRule grouphere pcctsRule "\<[a-z][A-Za-z0-9_]*\>\(\s*\[[^]]*\]\)\=\s*>\s*\[[^]]*\]\s*:" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link pcctsDelim Special hi def link pcctsTokenName Identifier hi def link pcctsRuleName Statement hi def link pcctsLabelHack Label hi def link pcctsDirective PreProc hi def link pcctsString String hi def link pcctsComment Comment hi def link pcctsClass Statement hi def link pcctsClassName Identifier hi def link pcctsException Statement hi def link pcctsExceptionHandler Keyword hi def link pcctsExceptionRuleRef pcctsDelim hi def link pcctsExceptionID Identifier hi def link pcctsRuleRef Identifier hi def link pcctsSpecialChar SpecialChar let b:current_syntax = "pccts" " vim: ts=8 PK!>IFFvim80/syntax/dtd.vimnu[" Vim syntax file " Language: DTD (Document Type Definition for XML) " Maintainer: Johannes Zellner " Author and previous maintainer: " Daniel Amyot " Last Change: Tue, 27 Apr 2004 14:54:59 CEST " Filenames: *.dtd " " REFERENCES: " http://www.w3.org/TR/html40/ " http://www.w3.org/TR/NOTE-html-970421 " " TODO: " - improve synchronizing. if exists("b:current_syntax") finish endif let s:dtd_cpo_save = &cpo set cpo&vim if !exists("dtd_ignore_case") " I prefer having the case takes into consideration. syn case match else syn case ignore endif " the following line makes the opening highlighted using 'dtdFunction'. " " PROVIDES: @dtdTagHook " syn region dtdTag matchgroup=dtdFunction \ start=++ matchgroup=NONE \ contains=dtdTag,dtdTagName,dtdError,dtdComment,dtdString,dtdAttrType,dtdAttrDef,dtdEnum,dtdParamEntityInst,dtdParamEntityDecl,dtdCard,@dtdTagHook if !exists("dtd_no_tag_errors") " mark everything as an error which starts with a + endif " if this is a html like comment hightlight also " the opening as Comment. syn region dtdComment start=++ contains=dtdTodo,@Spell " proper DTD comment syn region dtdComment contained start=+--+ end=+--+ contains=dtdTodo,@Spell " Start tags (keywords). This is contained in dtdFunction. " Note that everything not contained here will be marked " as error. syn match dtdTagName contained +" \ matchgroup=NONE contains=dtdParamEntityPunct syn match dtdParamEntityPunct contained "\." " declarations " syn region dtdParamEntityDecl oneline matchgroup=dtdParamEntityDPunct start=+" contains=dtdParamEntityDPunct syn match dtdParamEntityDecl + " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword grubTodo contained TODO FIXME XXX NOTE syn region grubComment display oneline start='^#' end='$' \ contains=grubTodo,@Spell syn match grubDevice display \ '(\([fh]d\d\|\d\+\|0x\x\+\)\(,\d\+\)\=\(,\l\)\=)' syn match grubBlock display '\(\d\+\)\=+\d\+\(,\(\d\+\)\=+\d\+\)*' syn match grubNumbers display '+\=\<\d\+\|0x\x\+\>' syn match grubBegin display '^' \ nextgroup=@grubCommands,grubComment skipwhite syn cluster grubCommands contains=grubCommand,grubTitleCommand syn keyword grubCommand contained default fallback hiddenmenu timeout syn keyword grubTitleCommand contained title nextgroup=grubTitle skipwhite syn match grubTitle contained display '.*' syn keyword grubCommand contained bootp color device dhcp hide ifconfig \ pager partnew parttype password rarp serial setkey \ terminal tftpserver unhide blocklist boot cat \ chainloader cmp configfile debug displayapm \ displaymem embed find fstest geometry halt help \ impsprobe initrd install ioprobe kernel lock \ makeactive map md5crypt module modulenounzip pause \ quit reboot read root rootnoverify savedefault setup \ testload testvbe uppermem vbeprobe syn keyword grubSpecial saved syn match grubBlink display 'blink-' syn keyword grubBlack black syn keyword grubBlue blue syn keyword grubGreen green syn keyword grubRed red syn keyword grubMagenta magenta syn keyword grubBrown brown yellow syn keyword grubWhite white syn match grubLightGray display 'light-gray' syn match grubLightBlue display 'light-blue' syn match grubLightGreen display 'light-green' syn match grubLightCyan display 'light-cyan' syn match grubLightRed display 'light-red' syn match grubLightMagenta display 'light-magenta' syn match grubDarkGray display 'dark-gray' hi def link grubComment Comment hi def link grubTodo Todo hi def link grubNumbers Number hi def link grubDevice Identifier hi def link grubBlock Identifier hi def link grubCommand Keyword hi def link grubTitleCommand grubCommand hi def link grubTitle String hi def link grubSpecial Special hi def grubBlink cterm=inverse hi def grubBlack ctermfg=Black ctermbg=White guifg=Black guibg=White hi def grubBlue ctermfg=DarkBlue guifg=DarkBlue hi def grubGreen ctermfg=DarkGreen guifg=DarkGreen hi def grubRed ctermfg=DarkRed guifg=DarkRed hi def grubMagenta ctermfg=DarkMagenta guifg=DarkMagenta hi def grubBrown ctermfg=Brown guifg=Brown hi def grubWhite ctermfg=White ctermbg=Black guifg=White guibg=Black hi def grubLightGray ctermfg=LightGray guifg=LightGray hi def grubLightBlue ctermfg=LightBlue guifg=LightBlue hi def grubLightGreen ctermfg=LightGreen guifg=LightGreen hi def grubLightCyan ctermfg=LightCyan guifg=LightCyan hi def grubLightRed ctermfg=LightRed guifg=LightRed hi def grubLightMagenta ctermfg=LightMagenta guifg=LightMagenta hi def grubDarkGray ctermfg=DarkGray guifg=DarkGray let b:current_syntax = "grub" let &cpo = s:cpo_save unlet s:cpo_save PK!>9朤vim80/syntax/cmake.vimnu[" Vim syntax file " Program: CMake - Cross-Platform Makefile Generator " Version: cmake version 3.9.20170830-ge0713 " Language: CMake " Author: Andy Cedilnik , " Nicholas Hutchinson , " Patrick Boettcher " Maintainer: Dimitri Merejkowsky " Former Maintainer: Karthik Krishnan " Last Change: 2017 Aug 30 " " Licence: The CMake license applies to this file. See " https://cmake.org/licensing " This implies that distribution with Vim is allowed if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim syn region cmakeComment start="#" end="$" contains=cmakeTodo,cmakeLuaComment,@Spell syn region cmakeLuaComment start="\[\z(=*\)\[" end="\]\z1\]" contains=cmakeTodo,@Spell syn match cmakeEscaped /\(\\\\\|\\"\|\\n\|\\t\)/ contained syn region cmakeRegistry start="\[" end="]" contained oneline contains=cmakeTodo,cmakeEscaped syn region cmakeGeneratorExpression start="$<" end=">" contained oneline contains=cmakeVariableValue,cmakeProperty,cmakeGeneratorExpressions,cmakeTodo syn region cmakeString start='"' end='"' contained contains=cmakeTodo,cmakeVariableValue,cmakeEscaped syn region cmakeVariableValue start="${" end="}" contained oneline contains=cmakeVariable,cmakeTodo syn region cmakeEnvironment start="$ENV{" end="}" contained oneline contains=cmakeTodo syn region cmakeArguments start="(" end=")" contains=ALLBUT,cmakeCommand,cmakeCommandConditional,cmakeCommandRepeat,cmakeCommandDeprecated,cmakeArguments,cmakeTodo syn case match syn keyword cmakeProperty contained \ ABSTRACT ADDITIONAL_MAKE_CLEAN_FILES ADVANCED ALIASED_TARGET ALLOW_DUPLICATE_CUSTOM_TARGETS ANDROID_ANT_ADDITIONAL_OPTIONS ANDROID_API ANDROID_API_MIN ANDROID_ARCH ANDROID_ASSETS_DIRECTORIES ANDROID_GUI ANDROID_JAR_DEPENDENCIES ANDROID_JAR_DIRECTORIES ANDROID_JAVA_SOURCE_DIR ANDROID_NATIVE_LIB_DEPENDENCIES ANDROID_NATIVE_LIB_DIRECTORIES ANDROID_PROCESS_MAX ANDROID_PROGUARD ANDROID_PROGUARD_CONFIG_PATH ANDROID_SECURE_PROPS_PATH ANDROID_SKIP_ANT_STEP ANDROID_STL_TYPE ARCHIVE_OUTPUT_DIRECTORY ARCHIVE_OUTPUT_NAME ATTACHED_FILES ATTACHED_FILES_ON_FAIL AUTOGEN_BUILD_DIR AUTOGEN_SOURCE_GROUP AUTOGEN_TARGETS_FOLDER AUTOGEN_TARGET_DEPENDS AUTOMOC AUTOMOC_DEPEND_FILTERS AUTOMOC_MACRO_NAMES AUTOMOC_MOC_OPTIONS AUTOMOC_SOURCE_GROUP AUTOMOC_TARGETS_FOLDER AUTORCC AUTORCC_OPTIONS AUTORCC_SOURCE_GROUP AUTOUIC AUTOUIC_OPTIONS AUTOUIC_SEARCH_PATHS BINARY_DIR BUILDSYSTEM_TARGETS BUILD_RPATH BUILD_WITH_INSTALL_NAME_DIR BUILD_WITH_INSTALL_RPATH BUNDLE BUNDLE_EXTENSION CACHE_VARIABLES CLEAN_NO_CUSTOM CMAKE_CONFIGURE_DEPENDS CMAKE_CXX_KNOWN_FEATURES CMAKE_C_KNOWN_FEATURES COMPATIBLE_INTERFACE_BOOL COMPATIBLE_INTERFACE_NUMBER_MAX COMPATIBLE_INTERFACE_NUMBER_MIN COMPATIBLE_INTERFACE_STRING COMPILE_DEFINITIONS COMPILE_FEATURES COMPILE_FLAGS COMPILE_OPTIONS COMPILE_PDB_NAME COMPILE_PDB_OUTPUT_DIRECTORY COST CPACK_DESKTOP_SHORTCUTS CPACK_NEVER_OVERWRITE CPACK_PERMANENT CPACK_STARTUP_SHORTCUTS CPACK_START_MENU_SHORTCUTS CPACK_WIX_ACL CROSSCOMPILING_EMULATOR CUDA_EXTENSIONS CUDA_PTX_COMPILATION CUDA_RESOLVE_DEVICE_SYMBOLS CUDA_SEPARABLE_COMPILATION CUDA_STANDARD CUDA_STANDARD_REQUIRED CXX_EXTENSIONS CXX_STANDARD CXX_STANDARD_REQUIRED C_EXTENSIONS C_STANDARD C_STANDARD_REQUIRED DEBUG_CONFIGURATIONS DEBUG_POSTFIX DEFINE_SYMBOL DEFINITIONS DEPENDS DEPLOYMENT_REMOTE_DIRECTORY DISABLED DISABLED_FEATURES ECLIPSE_EXTRA_NATURES ENABLED_FEATURES ENABLED_LANGUAGES ENABLE_EXPORTS ENVIRONMENT EXCLUDE_FROM_ALL EXCLUDE_FROM_DEFAULT_BUILD EXPORT_NAME EXTERNAL_OBJECT EchoString FAIL_REGULAR_EXPRESSION FIND_LIBRARY_USE_LIB32_PATHS FIND_LIBRARY_USE_LIB64_PATHS FIND_LIBRARY_USE_LIBX32_PATHS FIND_LIBRARY_USE_OPENBSD_VERSIONING FIXTURES_CLEANUP FIXTURES_REQUIRED FIXTURES_SETUP FOLDER FRAMEWORK FRAMEWORK_VERSION Fortran_FORMAT Fortran_MODULE_DIRECTORY GENERATED GENERATOR_FILE_NAME GENERATOR_IS_MULTI_CONFIG GLOBAL_DEPENDS_DEBUG_MODE GLOBAL_DEPENDS_NO_CYCLES GNUtoMS HAS_CXX HEADER_FILE_ONLY HELPSTRING IMPLICIT_DEPENDS_INCLUDE_TRANSFORM IMPORTED IMPORTED_CONFIGURATIONS IMPORTED_IMPLIB IMPORTED_LIBNAME IMPORTED_LINK_DEPENDENT_LIBRARIES IMPORTED_LINK_INTERFACE_LANGUAGES IMPORTED_LINK_INTERFACE_LIBRARIES IMPORTED_LINK_INTERFACE_MULTIPLICITY IMPORTED_LOCATION IMPORTED_NO_SONAME IMPORTED_OBJECTS IMPORTED_SONAME IMPORT_PREFIX IMPORT_SUFFIX INCLUDE_DIRECTORIES INCLUDE_REGULAR_EXPRESSION INSTALL_NAME_DIR INSTALL_RPATH INSTALL_RPATH_USE_LINK_PATH INTERFACE_AUTOUIC_OPTIONS INTERFACE_COMPILE_DEFINITIONS INTERFACE_COMPILE_FEATURES INTERFACE_COMPILE_OPTIONS INTERFACE_INCLUDE_DIRECTORIES INTERFACE_LINK_LIBRARIES INTERFACE_POSITION_INDEPENDENT_CODE INTERFACE_SOURCES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES INTERPROCEDURAL_OPTIMIZATION IN_TRY_COMPILE IOS_INSTALL_COMBINED JOB_POOLS JOB_POOL_COMPILE JOB_POOL_LINK KEEP_EXTENSION LABELS LANGUAGE LIBRARY_OUTPUT_DIRECTORY LIBRARY_OUTPUT_NAME LINKER_LANGUAGE LINK_DEPENDS LINK_DEPENDS_NO_SHARED LINK_DIRECTORIES LINK_FLAGS LINK_INTERFACE_LIBRARIES LINK_INTERFACE_MULTIPLICITY LINK_LIBRARIES LINK_SEARCH_END_STATIC LINK_SEARCH_START_STATIC LINK_WHAT_YOU_USE LISTFILE_STACK LOCATION MACOSX_BUNDLE MACOSX_BUNDLE_INFO_PLIST MACOSX_FRAMEWORK_INFO_PLIST MACOSX_PACKAGE_LOCATION MACOSX_RPATH MACROS MANUALLY_ADDED_DEPENDENCIES MEASUREMENT MODIFIED NAME NO_SONAME NO_SYSTEM_FROM_IMPORTED OBJECT_DEPENDS OBJECT_OUTPUTS OSX_ARCHITECTURES OUTPUT_NAME PACKAGES_FOUND PACKAGES_NOT_FOUND PARENT_DIRECTORY PASS_REGULAR_EXPRESSION PDB_NAME PDB_OUTPUT_DIRECTORY POSITION_INDEPENDENT_CODE POST_INSTALL_SCRIPT PREDEFINED_TARGETS_FOLDER PREFIX PRE_INSTALL_SCRIPT PRIVATE_HEADER PROCESSORS PROJECT_LABEL PUBLIC_HEADER REPORT_UNDEFINED_PROPERTIES REQUIRED_FILES RESOURCE RESOURCE_LOCK RULE_LAUNCH_COMPILE RULE_LAUNCH_CUSTOM RULE_LAUNCH_LINK RULE_MESSAGES RUNTIME_OUTPUT_DIRECTORY RUNTIME_OUTPUT_NAME RUN_SERIAL SKIP_AUTOGEN SKIP_AUTOMOC SKIP_AUTORCC SKIP_AUTOUIC SKIP_BUILD_RPATH SKIP_RETURN_CODE SOURCES SOURCE_DIR SOVERSION STATIC_LIBRARY_FLAGS STRINGS SUBDIRECTORIES SUFFIX SYMBOLIC TARGET_ARCHIVES_MAY_BE_SHARED_LIBS TARGET_MESSAGES TARGET_SUPPORTS_SHARED_LIBS TEST_INCLUDE_FILE TEST_INCLUDE_FILES TIMEOUT TIMEOUT_AFTER_MATCH TYPE USE_FOLDERS VALUE VARIABLES VERSION VISIBILITY_INLINES_HIDDEN VS_CONFIGURATION_TYPE VS_COPY_TO_OUT_DIR VS_DEBUGGER_WORKING_DIRECTORY VS_DEPLOYMENT_CONTENT VS_DEPLOYMENT_LOCATION VS_DESKTOP_EXTENSIONS_VERSION VS_DOTNET_REFERENCES VS_DOTNET_REFERENCES_COPY_LOCAL VS_DOTNET_TARGET_FRAMEWORK_VERSION VS_GLOBAL_KEYWORD VS_GLOBAL_PROJECT_TYPES VS_GLOBAL_ROOTNAMESPACE VS_INCLUDE_IN_VSIX VS_IOT_EXTENSIONS_VERSION VS_IOT_STARTUP_TASK VS_KEYWORD VS_MOBILE_EXTENSIONS_VERSION VS_RESOURCE_GENERATOR VS_SCC_AUXPATH VS_SCC_LOCALPATH VS_SCC_PROJECTNAME VS_SCC_PROVIDER VS_SDK_REFERENCES VS_SHADER_ENTRYPOINT VS_SHADER_FLAGS VS_SHADER_MODEL VS_SHADER_TYPE VS_STARTUP_PROJECT VS_TOOL_OVERRIDE VS_USER_PROPS VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION VS_WINRT_COMPONENT VS_WINRT_EXTENSIONS VS_WINRT_REFERENCES VS_XAML_TYPE WILL_FAIL WIN32_EXECUTABLE WINDOWS_EXPORT_ALL_SYMBOLS WORKING_DIRECTORY WRAP_EXCLUDE XCODE_EMIT_EFFECTIVE_PLATFORM_NAME XCODE_EXPLICIT_FILE_TYPE XCODE_FILE_ATTRIBUTES XCODE_LAST_KNOWN_FILE_TYPE XCODE_PRODUCT_TYPE XCTEST syn keyword cmakeVariable contained \ ANDROID APPLE BORLAND BUILD_SHARED_LIBS CMAKE_ABSOLUTE_DESTINATION_FILES CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS CMAKE_ANDROID_API CMAKE_ANDROID_API_MIN CMAKE_ANDROID_ARCH CMAKE_ANDROID_ARCH_ABI CMAKE_ANDROID_ARM_MODE CMAKE_ANDROID_ARM_NEON CMAKE_ANDROID_ASSETS_DIRECTORIES CMAKE_ANDROID_GUI CMAKE_ANDROID_JAR_DEPENDENCIES CMAKE_ANDROID_JAR_DIRECTORIES CMAKE_ANDROID_JAVA_SOURCE_DIR CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES CMAKE_ANDROID_NDK CMAKE_ANDROID_NDK_DEPRECATED_HEADERS CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION CMAKE_ANDROID_PROCESS_MAX CMAKE_ANDROID_PROGUARD CMAKE_ANDROID_PROGUARD_CONFIG_PATH CMAKE_ANDROID_SECURE_PROPS_PATH CMAKE_ANDROID_SKIP_ANT_STEP CMAKE_ANDROID_STANDALONE_TOOLCHAIN CMAKE_ANDROID_STL_TYPE CMAKE_APPBUNDLE_PATH CMAKE_AR CMAKE_ARCHIVE_OUTPUT_DIRECTORY CMAKE_ARGC CMAKE_ARGV0 CMAKE_AUTOMOC CMAKE_AUTOMOC_DEPEND_FILTERS CMAKE_AUTOMOC_MACRO_NAMES CMAKE_AUTOMOC_MOC_OPTIONS CMAKE_AUTOMOC_RELAXED_MODE CMAKE_AUTORCC CMAKE_AUTORCC_OPTIONS CMAKE_AUTOUIC CMAKE_AUTOUIC_OPTIONS CMAKE_AUTOUIC_SEARCH_PATHS CMAKE_BACKWARDS_COMPATIBILITY CMAKE_BINARY_DIR CMAKE_BUILD_RPATH CMAKE_BUILD_TOOL CMAKE_BUILD_TYPE CMAKE_BUILD_WITH_INSTALL_NAME_DIR CMAKE_BUILD_WITH_INSTALL_RPATH CMAKE_CACHEFILE_DIR CMAKE_CACHE_MAJOR_VERSION CMAKE_CACHE_MINOR_VERSION CMAKE_CACHE_PATCH_VERSION CMAKE_CFG_INTDIR CMAKE_CL_64 CMAKE_CODELITE_USE_TARGETS CMAKE_COLOR_MAKEFILE CMAKE_COMMAND CMAKE_COMPILER_2005 CMAKE_COMPILER_IS_GNUCC CMAKE_COMPILER_IS_GNUCXX CMAKE_COMPILER_IS_GNUG77 CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY CMAKE_CONFIGURATION_TYPES CMAKE_CROSSCOMPILING CMAKE_CROSSCOMPILING_EMULATOR CMAKE_CTEST_COMMAND CMAKE_CUDA_EXTENSIONS CMAKE_CUDA_STANDARD CMAKE_CUDA_STANDARD_REQUIRED CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES CMAKE_CURRENT_BINARY_DIR CMAKE_CURRENT_LIST_DIR CMAKE_CURRENT_LIST_FILE CMAKE_CURRENT_LIST_LINE CMAKE_CURRENT_SOURCE_DIR CMAKE_CXX_COMPILE_FEATURES CMAKE_CXX_EXTENSIONS CMAKE_CXX_STANDARD CMAKE_CXX_STANDARD_REQUIRED CMAKE_C_COMPILE_FEATURES CMAKE_C_EXTENSIONS CMAKE_C_STANDARD CMAKE_C_STANDARD_REQUIRED CMAKE_DEBUG_POSTFIX CMAKE_DEBUG_TARGET_PROPERTIES CMAKE_DEPENDS_IN_PROJECT_ONLY CMAKE_DIRECTORY_LABELS CMAKE_DL_LIBS CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT CMAKE_ECLIPSE_MAKE_ARGUMENTS CMAKE_ECLIPSE_VERSION CMAKE_EDIT_COMMAND CMAKE_ENABLE_EXPORTS CMAKE_ERROR_DEPRECATED CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION CMAKE_EXECUTABLE_SUFFIX CMAKE_EXE_LINKER_FLAGS CMAKE_EXE_LINKER_FLAGS_INIT CMAKE_EXPORT_COMPILE_COMMANDS CMAKE_EXPORT_NO_PACKAGE_REGISTRY CMAKE_EXTRA_GENERATOR CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES CMAKE_FIND_APPBUNDLE CMAKE_FIND_FRAMEWORK CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX CMAKE_FIND_LIBRARY_PREFIXES CMAKE_FIND_LIBRARY_SUFFIXES CMAKE_FIND_NO_INSTALL_PREFIX CMAKE_FIND_PACKAGE_NAME CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY CMAKE_FIND_PACKAGE_SORT_DIRECTION CMAKE_FIND_PACKAGE_SORT_ORDER CMAKE_FIND_PACKAGE_WARN_NO_MODULE CMAKE_FIND_ROOT_PATH CMAKE_FIND_ROOT_PATH_MODE_INCLUDE CMAKE_FIND_ROOT_PATH_MODE_LIBRARY CMAKE_FIND_ROOT_PATH_MODE_PACKAGE CMAKE_FIND_ROOT_PATH_MODE_PROGRAM CMAKE_FRAMEWORK_PATH CMAKE_Fortran_FORMAT CMAKE_Fortran_MODDIR_DEFAULT CMAKE_Fortran_MODDIR_FLAG CMAKE_Fortran_MODOUT_FLAG CMAKE_Fortran_MODULE_DIRECTORY CMAKE_GENERATOR CMAKE_GENERATOR_PLATFORM CMAKE_GENERATOR_TOOLSET CMAKE_GNUtoMS CMAKE_HOME_DIRECTORY CMAKE_HOST_APPLE CMAKE_HOST_SOLARIS CMAKE_HOST_SYSTEM CMAKE_HOST_SYSTEM_NAME CMAKE_HOST_SYSTEM_PROCESSOR CMAKE_HOST_SYSTEM_VERSION CMAKE_HOST_UNIX CMAKE_HOST_WIN32 CMAKE_IGNORE_PATH CMAKE_IMPORT_LIBRARY_PREFIX CMAKE_IMPORT_LIBRARY_SUFFIX CMAKE_INCLUDE_CURRENT_DIR CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE CMAKE_INCLUDE_DIRECTORIES_BEFORE CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE CMAKE_INCLUDE_PATH CMAKE_INSTALL_DEFAULT_COMPONENT_NAME CMAKE_INSTALL_MESSAGE CMAKE_INSTALL_NAME_DIR CMAKE_INSTALL_PREFIX CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT CMAKE_INSTALL_RPATH CMAKE_INSTALL_RPATH_USE_LINK_PATH CMAKE_INTERNAL_PLATFORM_ABI CMAKE_INTERPROCEDURAL_OPTIMIZATION CMAKE_IOS_INSTALL_COMBINED CMAKE_JOB_POOL_COMPILE CMAKE_JOB_POOL_LINK CMAKE_LIBRARY_ARCHITECTURE CMAKE_LIBRARY_ARCHITECTURE_REGEX CMAKE_LIBRARY_OUTPUT_DIRECTORY CMAKE_LIBRARY_PATH CMAKE_LIBRARY_PATH_FLAG CMAKE_LINK_DEF_FILE_FLAG CMAKE_LINK_DEPENDS_NO_SHARED CMAKE_LINK_INTERFACE_LIBRARIES CMAKE_LINK_LIBRARY_FILE_FLAG CMAKE_LINK_LIBRARY_FLAG CMAKE_LINK_LIBRARY_SUFFIX CMAKE_LINK_SEARCH_END_STATIC CMAKE_LINK_SEARCH_START_STATIC CMAKE_LINK_WHAT_YOU_USE CMAKE_MACOSX_BUNDLE CMAKE_MACOSX_RPATH CMAKE_MAJOR_VERSION CMAKE_MAKE_PROGRAM CMAKE_MATCH_COUNT CMAKE_MFC_FLAG CMAKE_MINIMUM_REQUIRED_VERSION CMAKE_MINOR_VERSION CMAKE_MODULE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS_INIT CMAKE_MODULE_PATH CMAKE_MSVCIDE_RUN_PATH CMAKE_NINJA_OUTPUT_PATH_PREFIX CMAKE_NOT_USING_CONFIG_FLAGS CMAKE_NO_BUILTIN_CHRPATH CMAKE_NO_SYSTEM_FROM_IMPORTED CMAKE_OBJECT_PATH_MAX CMAKE_OSX_ARCHITECTURES CMAKE_OSX_DEPLOYMENT_TARGET CMAKE_OSX_SYSROOT CMAKE_PARENT_LIST_FILE CMAKE_PATCH_VERSION CMAKE_PDB_OUTPUT_DIRECTORY CMAKE_POSITION_INDEPENDENT_CODE CMAKE_PREFIX_PATH CMAKE_PROGRAM_PATH CMAKE_PROJECT_DESCRIPTION CMAKE_PROJECT_NAME CMAKE_RANLIB CMAKE_ROOT CMAKE_RUNTIME_OUTPUT_DIRECTORY CMAKE_SCRIPT_MODE_FILE CMAKE_SHARED_LIBRARY_PREFIX CMAKE_SHARED_LIBRARY_SUFFIX CMAKE_SHARED_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS_INIT CMAKE_SHARED_MODULE_PREFIX CMAKE_SHARED_MODULE_SUFFIX CMAKE_SIZEOF_VOID_P CMAKE_SKIP_BUILD_RPATH CMAKE_SKIP_INSTALL_ALL_DEPENDENCY CMAKE_SKIP_INSTALL_RPATH CMAKE_SKIP_INSTALL_RULES CMAKE_SKIP_RPATH CMAKE_SOURCE_DIR CMAKE_STAGING_PREFIX CMAKE_STATIC_LIBRARY_PREFIX CMAKE_STATIC_LIBRARY_SUFFIX CMAKE_STATIC_LINKER_FLAGS CMAKE_STATIC_LINKER_FLAGS_INIT CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE CMAKE_SYSROOT CMAKE_SYSROOT_COMPILE CMAKE_SYSROOT_LINK CMAKE_SYSTEM CMAKE_SYSTEM_APPBUNDLE_PATH CMAKE_SYSTEM_FRAMEWORK_PATH CMAKE_SYSTEM_IGNORE_PATH CMAKE_SYSTEM_INCLUDE_PATH CMAKE_SYSTEM_LIBRARY_PATH CMAKE_SYSTEM_NAME CMAKE_SYSTEM_PREFIX_PATH CMAKE_SYSTEM_PROCESSOR CMAKE_SYSTEM_PROGRAM_PATH CMAKE_SYSTEM_VERSION CMAKE_Swift_LANGUAGE_VERSION CMAKE_TOOLCHAIN_FILE CMAKE_TRY_COMPILE_CONFIGURATION CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CMAKE_TRY_COMPILE_TARGET_TYPE CMAKE_TWEAK_VERSION CMAKE_USER_MAKE_RULES_OVERRIDE CMAKE_USE_RELATIVE_PATHS CMAKE_VERBOSE_MAKEFILE CMAKE_VERSION CMAKE_VISIBILITY_INLINES_HIDDEN CMAKE_VS_DEVENV_COMMAND CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD CMAKE_VS_INTEL_Fortran_PROJECT_VERSION CMAKE_VS_MSBUILD_COMMAND CMAKE_VS_NsightTegra_VERSION CMAKE_VS_PLATFORM_NAME CMAKE_VS_PLATFORM_TOOLSET CMAKE_VS_PLATFORM_TOOLSET_CUDA CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION CMAKE_WARN_DEPRECATED CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION CMAKE_WIN32_EXECUTABLE CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS CMAKE_XCODE_GENERATE_SCHEME CMAKE_XCODE_PLATFORM_TOOLSET CPACK_ABSOLUTE_DESTINATION_FILES CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION CPACK_INCLUDE_TOPLEVEL_DIRECTORY CPACK_INSTALL_SCRIPT CPACK_PACKAGING_INSTALL_PREFIX CPACK_SET_DESTDIR CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION CTEST_BINARY_DIRECTORY CTEST_BUILD_COMMAND CTEST_BUILD_NAME CTEST_BZR_COMMAND CTEST_BZR_UPDATE_OPTIONS CTEST_CHANGE_ID CTEST_CHECKOUT_COMMAND CTEST_CONFIGURATION_TYPE CTEST_CONFIGURE_COMMAND CTEST_COVERAGE_COMMAND CTEST_COVERAGE_EXTRA_FLAGS CTEST_CURL_OPTIONS CTEST_CUSTOM_COVERAGE_EXCLUDE CTEST_CUSTOM_ERROR_EXCEPTION CTEST_CUSTOM_ERROR_MATCH CTEST_CUSTOM_ERROR_POST_CONTEXT CTEST_CUSTOM_ERROR_PRE_CONTEXT CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE CTEST_CUSTOM_MEMCHECK_IGNORE CTEST_CUSTOM_POST_MEMCHECK CTEST_CUSTOM_POST_TEST CTEST_CUSTOM_PRE_MEMCHECK CTEST_CUSTOM_PRE_TEST CTEST_CUSTOM_TEST_IGNORE CTEST_CUSTOM_WARNING_EXCEPTION CTEST_CUSTOM_WARNING_MATCH CTEST_CVS_CHECKOUT CTEST_CVS_COMMAND CTEST_CVS_UPDATE_OPTIONS CTEST_DROP_LOCATION CTEST_DROP_METHOD CTEST_DROP_SITE CTEST_DROP_SITE_CDASH CTEST_DROP_SITE_PASSWORD CTEST_DROP_SITE_USER CTEST_EXTRA_COVERAGE_GLOB CTEST_GIT_COMMAND CTEST_GIT_INIT_SUBMODULES CTEST_GIT_UPDATE_CUSTOM CTEST_GIT_UPDATE_OPTIONS CTEST_HG_COMMAND CTEST_HG_UPDATE_OPTIONS CTEST_LABELS_FOR_SUBPROJECTS CTEST_MEMORYCHECK_COMMAND CTEST_MEMORYCHECK_COMMAND_OPTIONS CTEST_MEMORYCHECK_SANITIZER_OPTIONS CTEST_MEMORYCHECK_SUPPRESSIONS_FILE CTEST_MEMORYCHECK_TYPE CTEST_NIGHTLY_START_TIME CTEST_P4_CLIENT CTEST_P4_COMMAND CTEST_P4_OPTIONS CTEST_P4_UPDATE_OPTIONS CTEST_SCP_COMMAND CTEST_SITE CTEST_SOURCE_DIRECTORY CTEST_SVN_COMMAND CTEST_SVN_OPTIONS CTEST_SVN_UPDATE_OPTIONS CTEST_TEST_LOAD CTEST_TEST_TIMEOUT CTEST_TRIGGER_SITE CTEST_UPDATE_COMMAND CTEST_UPDATE_OPTIONS CTEST_UPDATE_VERSION_ONLY CTEST_USE_LAUNCHERS CYGWIN ENV EXECUTABLE_OUTPUT_PATH GHS-MULTI LIBRARY_OUTPUT_PATH MINGW MSVC MSVC10 MSVC11 MSVC12 MSVC14 MSVC60 MSVC70 MSVC71 MSVC80 MSVC90 MSVC_IDE MSVC_VERSION PROJECT_BINARY_DIR PROJECT_DESCRIPTION PROJECT_NAME PROJECT_SOURCE_DIR PROJECT_VERSION PROJECT_VERSION_MAJOR PROJECT_VERSION_MINOR PROJECT_VERSION_PATCH PROJECT_VERSION_TWEAK UNIX WIN32 WINCE WINDOWS_PHONE WINDOWS_STORE XCODE XCODE_VERSION syn keyword cmakeModule contained \ ExternalProject syn keyword cmakeKWExternalProject contained \ ALGO AWS BINARY_DIR BUILD_ALWAYS BUILD_BYPRODUCTS BUILD_COMMAND BUILD_IN_SOURCE CMAKE_ARGS CMAKE_CACHE_ARGS CMAKE_CACHE_DEFAULT_ARGS CMAKE_TLS_CAINFO CMAKE_TLS_VERIFY COMMENT CONFIGURE_COMMAND CVS CVSROOT CVS_MODULE CVS_REPOSITORY CVS_TAG DEPENDEES DEPENDERS DEPENDS DOWNLOADED_FILE DOWNLOAD_COMMAND DOWNLOAD_DIR DOWNLOAD_NAME DOWNLOAD_NO_EXTRACT DOWNLOAD_NO_PROGRESS EP_BASE EP_INDEPENDENT_STEP_TARGETS EP_PREFIX EP_STEP_TARGETS EP_UPDATE_DISCONNECTED EXCLUDE_FROM_ALL FORCE GIT_CONFIG GIT_PROGRESS GIT_REMOTE_NAME GIT_REPOSITORY GIT_SHALLOW GIT_SUBMODULES GIT_TAG HG_REPOSITORY HG_TAG HTTP_HEADER HTTP_PASSWORD HTTP_USERNAME INDEPENDENT_STEP_TARGETS INSTALL_COMMAND INSTALL_DIR JOB_POOLS LIST_SEPARATOR LOG_ LOG_BUILD LOG_CONFIGURE LOG_DOWNLOAD LOG_INSTALL LOG_TEST LOG_UPDATE MAKE_EXE NAMES NOTE NO_DEPENDS PATCH_COMMAND PREFIX PROPERTY SOURCE_DIR SOURCE_SUBDIR STAMP_DIR STEP_TARGETS STRING SVN_PASSWORD SVN_REPOSITORY SVN_REVISION SVN_TRUST_CERT SVN_USERNAME TEST_AFTER_INSTALL TEST_BEFORE_INSTALL TEST_COMMAND TEST_EXCLUDE_FROM_MAIN TIMEOUT TLS_CAINFO TLS_VERIFY TMP_DIR TRUE UPDATE_COMMAND UPDATE_DISCONNECTED URL URL_HASH USES_TERMINAL_BUILD USES_TERMINAL_CONFIGURE USES_TERMINAL_DOWNLOAD USES_TERMINAL_INSTALL USES_TERMINAL_TEST USES_TERMINAL_UPDATE WORKING_DIRECTORY syn keyword cmakeKWadd_compile_options contained \ COMPILE_OPTIONS syn keyword cmakeKWadd_custom_command contained \ APPEND ARGS BYPRODUCTS CC COMMAND COMMAND_EXPAND_LISTS COMMENT CROSSCOMPILING_EMULATOR DEPENDS DEPFILE GENERATED IMPLICIT_DEPENDS INCLUDE_DIRECTORIES JOIN MAIN_DEPENDENCY NOT OUTPUT POST_BUILD PRE_BUILD PRE_LINK SYMBOLIC TARGET_FILE TARGET_PROPERTY USES_TERMINAL VERBATIM WORKING_DIRECTORY syn keyword cmakeKWadd_custom_target contained \ ALL BYPRODUCTS CC COMMAND COMMAND_EXPAND_LISTS COMMENT CROSSCOMPILING_EMULATOR DEPENDS GENERATED INCLUDE_DIRECTORIES JOIN SOURCES TARGET_PROPERTY USES_TERMINAL VERBATIM WORKING_DIRECTORY syn keyword cmakeKWadd_definitions contained \ COMPILE_DEFINITIONS syn keyword cmakeKWadd_dependencies contained \ DEPENDS OBJECT_DEPENDS syn keyword cmakeKWadd_executable contained \ ALIAS CONFIG EXCLUDE_FROM_ALL GLOBAL HEADER_FILE_ONLY IMPORTED IMPORTED_ IMPORTED_LOCATION IMPORTED_LOCATION_ MACOSX_BUNDLE OUTPUT_NAME RUNTIME_OUTPUT_DIRECTORY TARGET syn keyword cmakeKWadd_library contained \ ALIAS ARCHIVE_OUTPUT_DIRECTORY CLI CONFIG DLL EXCLUDE_FROM_ALL FRAMEWORK GLOBAL HEADER_FILE_ONLY IMPORTED IMPORTED_ IMPORTED_LOCATION IMPORTED_LOCATION_ INTERFACE_ LIBRARY_OUTPUT_DIRECTORY MODULE OBJECT ON OUTPUT_NAME POSITION_INDEPENDENT_CODE POST_BUILD PRE_BUILD PRE_LINK RUNTIME_OUTPUT_DIRECTORY SHARED STATIC TARGET_OBJECTS UNKNOWN syn keyword cmakeKWadd_subdirectory contained \ EXCLUDE_FROM_ALL syn keyword cmakeKWadd_test contained \ BUILD_TESTING COMMAND CONFIGURATIONS FAIL_REGULAR_EXPRESSION NAME PASS_REGULAR_EXPRESSION TARGET_FILE WILL_FAIL WORKING_DIRECTORY syn keyword cmakeKWbuild_command contained \ CONFIGURATION TARGET syn keyword cmakeKWbuild_name contained \ CMAKE_CXX_COMPILER syn keyword cmakeKWcmake_host_system_information contained \ AVAILABLE_PHYSICAL_MEMORY AVAILABLE_VIRTUAL_MEMORY FQDN HAS_FPU HAS_MMX HAS_MMX_PLUS HAS_SERIAL_NUMBER HAS_SSE HAS_SSE_FP HAS_SSE_MMX HOSTNAME ID NUMBER_OF_LOGICAL_CORES NUMBER_OF_PHYSICAL_CORES OS_NAME OS_PLATFORM OS_RELEASE OS_VERSION PROCESSOR_DESCRIPTION PROCESSOR_NAME PROCESSOR_SERIAL_NUMBER QUERY RESULT TOTAL_PHYSICAL_MEMORY TOTAL_VIRTUAL_MEMORY syn keyword cmakeKWcmake_minimum_required contained \ FATAL_ERROR VERSION syn keyword cmakeKWcmake_parse_arguments contained \ ARGN CONFIGURATIONS DESTINATION FALSE FAST FILES MY_INSTALL MY_INSTALL_CONFIGURATIONS MY_INSTALL_DESTINATION MY_INSTALL_FAST MY_INSTALL_OPTIONAL MY_INSTALL_RENAME MY_INSTALL_TARGETS MY_INSTALL_UNPARSED_ARGUMENTS OPTIONAL PARSE_ARGV RENAME TARGETS TRUE _UNPARSED_ARGUMENTS syn keyword cmakeKWcmake_policy contained \ CMAKE_POLICY_DEFAULT_CMP CMP GET NNNN NO_POLICY_SCOPE OLD POP PUSH SET VERSION syn keyword cmakeKWconfigure_file contained \ COPYONLY CRLF DOS ESCAPE_QUOTES FOO_ENABLE FOO_STRING LF NEWLINE_STYLE VAR syn keyword cmakeKWcreate_test_sourcelist contained \ CMAKE_TESTDRIVER_AFTER_TESTMAIN CMAKE_TESTDRIVER_BEFORE_TESTMAIN EXTRA_INCLUDE FUNCTION syn keyword cmakeKWctest_build contained \ ALL_BUILD APPEND BUILD CAPTURE_CMAKE_ERROR CONFIGURATION CTEST_BUILD_CONFIGURATION CTEST_BUILD_FLAGS CTEST_BUILD_TARGET CTEST_PROJECT_NAME FLAGS NUMBER_ERRORS NUMBER_WARNINGS QUIET RETURN_VALUE TARGET syn keyword cmakeKWctest_configure contained \ APPEND BUILD CAPTURE_CMAKE_ERROR OPTIONS QUIET RETURN_VALUE SOURCE syn keyword cmakeKWctest_coverage contained \ APPEND BUILD CAPTURE_CMAKE_ERROR LABELS QUIET RETURN_VALUE syn keyword cmakeKWctest_memcheck contained \ APPEND BUILD DEFECT_COUNT EXCLUDE EXCLUDE_FIXTURE EXCLUDE_FIXTURE_CLEANUP EXCLUDE_FIXTURE_SETUP EXCLUDE_LABEL INCLUDE INCLUDE_LABEL OFF ON PARALLEL_LEVEL QUIET RETURN_VALUE SCHEDULE_RANDOM START STOP_TIME STRIDE TEST_LOAD syn keyword cmakeKWctest_run_script contained \ NEW_PROCESS RETURN_VALUE syn keyword cmakeKWctest_start contained \ APPEND QUIET TAG TRACK syn keyword cmakeKWctest_submit contained \ API CDASH_UPLOAD CDASH_UPLOAD_TYPE CTEST_EXTRA_SUBMIT_FILES CTEST_NOTES_FILES FILES HTTPHEADER PARTS QUIET RETRY_COUNT RETRY_DELAY RETURN_VALUE syn keyword cmakeKWctest_test contained \ APPEND BUILD CAPTURE_CMAKE_ERROR CPU EXCLUDE EXCLUDE_FIXTURE EXCLUDE_FIXTURE_CLEANUP EXCLUDE_FIXTURE_SETUP EXCLUDE_LABEL INCLUDE INCLUDE_LABEL OFF ON PARALLEL_LEVEL QUIET RETURN_VALUE SCHEDULE_RANDOM START STOP_TIME STRIDE TEST_LOAD syn keyword cmakeKWctest_update contained \ QUIET RETURN_VALUE SOURCE syn keyword cmakeKWctest_upload contained \ CAPTURE_CMAKE_ERROR FILES QUIET syn keyword cmakeKWdefine_property contained \ BRIEF_DOCS CACHED_VARIABLE DIRECTORY FULL_DOCS GLOBAL INHERITED PROPERTY SOURCE TARGET TEST VARIABLE syn keyword cmakeKWenable_language contained \ OPTIONAL syn keyword cmakeKWexec_program contained \ ARGS OUTPUT_VARIABLE RETURN_VALUE syn keyword cmakeKWexecute_process contained \ ANSI AUTO COMMAND ENCODING ERROR_FILE ERROR_QUIET ERROR_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE INPUT_FILE NONE OEM OUTPUT_FILE OUTPUT_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE RESULTS_VARIABLE RESULT_VARIABLE TIMEOUT UTF VERBATIM WORKING_DIRECTORY syn keyword cmakeKWexport contained \ ANDROID_MK APPEND CONFIG EXPORT EXPORT_LINK_INTERFACE_LIBRARIES FILE IMPORTED IMPORTED_ NAMESPACE NDK OLD PACKAGE TARGETS syn keyword cmakeKWexport_library_dependencies contained \ APPEND EXPORT INCLUDE LINK_INTERFACE_LIBRARIES SET syn keyword cmakeKWfile contained \ ALGO APPEND ASCII CMAKE_TLS_CAINFO CMAKE_TLS_VERIFY CONDITION CONFIG CONTENT COPY CR DESTINATION DIRECTORY_PERMISSIONS DOWNLOAD ENCODING EXCLUDE EXPECTED_HASH FILES_MATCHING FILE_PERMISSIONS FOLLOW_SYMLINKS FUNCTION GENERATE GLOB GLOB_RECURSE GUARD HASH HEX HTTPHEADER INACTIVITY_TIMEOUT INSTALL LENGTH_MAXIMUM LENGTH_MINIMUM LF LIMIT LIMIT_COUNT LIMIT_INPUT LIMIT_OUTPUT LIST_DIRECTORIES LOCK LOG MAKE_DIRECTORY NEWLINE_CONSUME NO_HEX_CONVERSION NO_SOURCE_PERMISSIONS OFFSET OLD PATTERN PROCESS READ REGEX RELATIVE RELATIVE_PATH RELEASE REMOVE REMOVE_RECURSE RENAME RESULT_VARIABLE SHOW_PROGRESS SSL STATUS STRINGS TIMESTAMP TLS_CAINFO TLS_VERIFY TO_CMAKE_PATH TO_NATIVE_PATH UPLOAD USERPWD USE_SOURCE_PERMISSIONS UTC UTF WRITE syn keyword cmakeKWfind_file contained \ CMAKE_FIND_ROOT_PATH_BOTH DOC DVAR HINTS INCLUDE NAMES NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_FIND_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH NO_DEFAULT_PATH NO_SYSTEM_ENVIRONMENT_PATH ONLY_CMAKE_FIND_ROOT_PATH OS PATHS PATH_SUFFIXES VAR syn keyword cmakeKWfind_library contained \ CMAKE_FIND_ROOT_PATH_BOTH DOC DVAR HINTS LIB NAMES NAMES_PER_DIR NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_FIND_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH NO_DEFAULT_PATH NO_SYSTEM_ENVIRONMENT_PATH ONLY_CMAKE_FIND_ROOT_PATH OS PATHS PATH_SUFFIXES VAR syn keyword cmakeKWfind_package contained \ CMAKE_DISABLE_FIND_PACKAGE_ CMAKE_FIND_ROOT_PATH_BOTH COMPONENTS CONFIG CONFIGS DEC DVAR EXACT HINTS MODULE NAMES NATURAL NO_CMAKE_BUILDS_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_FIND_ROOT_PATH NO_CMAKE_PACKAGE_REGISTRY NO_CMAKE_PATH NO_CMAKE_SYSTEM_PACKAGE_REGISTRY NO_CMAKE_SYSTEM_PATH NO_DEFAULT_PATH NO_MODULE NO_POLICY_SCOPE NO_SYSTEM_ENVIRONMENT_PATH ONLY_CMAKE_FIND_ROOT_PATH OPTIONAL_COMPONENTS OS PACKAGE_FIND_NAME PACKAGE_FIND_VERSION PACKAGE_FIND_VERSION_COUNT PACKAGE_FIND_VERSION_MAJOR PACKAGE_FIND_VERSION_MINOR PACKAGE_FIND_VERSION_PATCH PACKAGE_FIND_VERSION_TWEAK PACKAGE_VERSION PACKAGE_VERSION_COMPATIBLE PACKAGE_VERSION_EXACT PACKAGE_VERSION_UNSUITABLE PATHS PATH_SUFFIXES QUIET REQUIRED SET TRUE _CONFIG _CONSIDERED_CONFIGS _CONSIDERED_VERSIONS _DIR _FIND_COMPONENTS _FIND_QUIETLY _FIND_REQUIRED _FIND_REQUIRED_ _FIND_VERSION_EXACT _FOUND syn keyword cmakeKWfind_path contained \ CMAKE_FIND_ROOT_PATH_BOTH DOC DVAR HINTS INCLUDE NAMES NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_FIND_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH NO_DEFAULT_PATH NO_SYSTEM_ENVIRONMENT_PATH ONLY_CMAKE_FIND_ROOT_PATH OS PATHS PATH_SUFFIXES VAR syn keyword cmakeKWfind_program contained \ CMAKE_FIND_ROOT_PATH_BOTH DOC DVAR HINTS NAMES NAMES_PER_DIR NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_FIND_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH NO_DEFAULT_PATH NO_SYSTEM_ENVIRONMENT_PATH ONLY_CMAKE_FIND_ROOT_PATH OS PATHS PATH_SUFFIXES VAR syn keyword cmakeKWfltk_wrap_ui contained \ FLTK syn keyword cmakeKWforeach contained \ ARGS IN ITEMS LISTS RANGE syn keyword cmakeKWfunction contained \ ARGC ARGN ARGS ARGV PARENT_SCOPE syn keyword cmakeKWget_cmake_property contained \ COMPONENTS GLOBAL MACROS VAR VARIABLES syn keyword cmakeKWget_directory_property contained \ DEFINITION DIRECTORY syn keyword cmakeKWget_filename_component contained \ ABSOLUTE ARG_VAR BASE_DIR CACHE COMP DIRECTORY EXT NAME NAME_WE PATH PROGRAM PROGRAM_ARGS REALPATH VAR syn keyword cmakeKWget_property contained \ BRIEF_DOCS CACHE DEFINED DIRECTORY FULL_DOCS GLOBAL INSTALL PROPERTY SET SOURCE TARGET TEST VARIABLE syn keyword cmakeKWget_source_file_property contained \ LOCATION VAR syn keyword cmakeKWget_target_property contained \ VAR syn keyword cmakeKWget_test_property contained \ VAR syn keyword cmakeKWif contained \ ARGS CMAKE_MATCH_ CMP COMMAND DEFINED EQUAL EXISTS FALSE GREATER GREATER_EQUAL IGNORE IN_LIST IS_ABSOLUTE IS_DIRECTORY IS_NEWER_THAN IS_SYMLINK LESS LESS_EQUAL MATCHES NNNN NOT OFF OR POLICY STREQUAL STRGREATER STRGREATER_EQUAL STRLESS STRLESS_EQUAL TARGET TEST THEN TRUE VERSION_EQUAL VERSION_GREATER VERSION_GREATER_EQUAL VERSION_LESS VERSION_LESS_EQUAL YES syn keyword cmakeKWinclude contained \ NO_POLICY_SCOPE OPTIONAL RESULT_VARIABLE syn keyword cmakeKWinclude_directories contained \ AFTER BEFORE INCLUDE_DIRECTORIES ON SYSTEM syn keyword cmakeKWinclude_external_msproject contained \ GUID MAP_IMPORTED_CONFIG_ PLATFORM TYPE WIX syn keyword cmakeKWinclude_guard contained \ DIRECTORY GLOBAL TRUE __CURRENT_FILE_VAR__ syn keyword cmakeKWinstall contained \ ARCHIVE BUNDLE CODE COMPONENT CONFIGURATIONS CVS DESTDIR DESTINATION DIRECTORY DIRECTORY_PERMISSIONS DLL EXCLUDE_FROM_ALL EXPORT EXPORT_ANDROID_MK EXPORT_LINK_INTERFACE_LIBRARIES FILES FILES_MATCHING FILE_PERMISSIONS FRAMEWORK GROUP_EXECUTE GROUP_READ GROUP_WRITE IMPORTED_ INCLUDES INSTALL_PREFIX INTERFACE_INCLUDE_DIRECTORIES LIBRARY MACOSX_BUNDLE MESSAGE_NEVER NAMELINK_ONLY NAMELINK_SKIP NAMESPACE NDK OBJECTS OPTIONAL OWNER_EXECUTE OWNER_READ OWNER_WRITE PATTERN PERMISSIONS POST_INSTALL_SCRIPT PRE_INSTALL_SCRIPT PRIVATE_HEADER PROGRAMS PUBLIC_HEADER REGEX RENAME RESOURCE RUNTIME SCRIPT SETGID SETUID SOVERSION TARGETS TRUE USE_SOURCE_PERMISSIONS VERSION WORLD_EXECUTE WORLD_READ WORLD_WRITE syn keyword cmakeKWinstall_files contained \ FILES GLOB syn keyword cmakeKWinstall_programs contained \ FILES GLOB PROGRAMS TARGETS syn keyword cmakeKWinstall_targets contained \ DLL RUNTIME_DIRECTORY TARGETS syn keyword cmakeKWlist contained \ APPEND CACHE EXCLUDE FILTER FIND GET INCLUDE INSERT INTERNAL LENGTH LIST NOTES PARENT_SCOPE REGEX REMOVE_AT REMOVE_DUPLICATES REMOVE_ITEM REVERSE SORT syn keyword cmakeKWload_cache contained \ EXCLUDE INCLUDE_INTERNALS READ_WITH_PREFIX syn keyword cmakeKWload_command contained \ CMAKE_LOADED_COMMAND_ COMMAND_NAME syn keyword cmakeKWmacro contained \ ARGC ARGN ARGS ARGV DEFINED GREATER LISTS NOT _BAR _FOO syn keyword cmakeKWmake_directory contained \ MAKE_DIRECTORY syn keyword cmakeKWmark_as_advanced contained \ CLEAR FORCE VAR syn keyword cmakeKWmath contained \ EXPR syn keyword cmakeKWmessage contained \ AUTHOR_WARNING DEPRECATION FATAL_ERROR GUI SEND_ERROR STATUS WARNING syn keyword cmakeKWoption contained \ OFF ON syn keyword cmakeKWproject contained \ CMAKE_PROJECT_ DESCRIPTION LANGUAGES NAME NONE PROJECT VERSION _BINARY_DIR _INCLUDE _SOURCE_DIR _VERSION _VERSION_MAJOR _VERSION_MINOR _VERSION_PATCH _VERSION_TWEAK syn keyword cmakeKWremove contained \ REMOVE_ITEM VALUE VAR syn keyword cmakeKWseparate_arguments contained \ MSDN NATIVE NATIVE_COMMAND UNIX_COMMAND WINDOWS WINDOWS_COMMAND _COMMAND syn keyword cmakeKWset contained \ BOOL CACHE FILEPATH FORCE INTERNAL OFF ON PARENT_SCOPE STRING STRINGS syn keyword cmakeKWset_directory_properties contained \ PROPERTIES syn keyword cmakeKWset_property contained \ APPEND APPEND_STRING CACHE DIRECTORY GLOBAL INSTALL PROPERTY SOURCE TARGET TEST WIX syn keyword cmakeKWset_source_files_properties contained \ PROPERTIES syn keyword cmakeKWset_target_properties contained \ PROPERTIES syn keyword cmakeKWset_tests_properties contained \ PROPERTIES syn keyword cmakeKWsource_group contained \ FILES PREFIX REGULAR_EXPRESSION TREE syn keyword cmakeKWstring contained \ ALPHABET APPEND ASCII CMAKE_MATCH_ COMPARE CONCAT CONFIGURE EQUAL ESCAPE_QUOTES FIND GENEX_STRIP GREATER GREATER_EQUAL GUID HASH LENGTH LESS LESS_EQUAL MAKE_C_IDENTIFIER MATCH MATCHALL MATCHES NAMESPACE NOTEQUAL ONLY PREPEND RANDOM RANDOM_SEED REGEX REPLACE REVERSE RFC SHA SOURCE_DATE_EPOCH STRIP SUBSTRING SZ TIMESTAMP TOLOWER TOUPPER TYPE US UTC UUID syn keyword cmakeKWsubdirs contained \ EXCLUDE_FROM_ALL PREORDER syn keyword cmakeKWtarget_compile_definitions contained \ COMPILE_DEFINITIONS INTERFACE INTERFACE_COMPILE_DEFINITIONS PRIVATE PUBLIC syn keyword cmakeKWtarget_compile_features contained \ COMPILE_FEATURES IMPORTED INTERFACE INTERFACE_COMPILE_FEATURES PRIVATE PUBLIC syn keyword cmakeKWtarget_compile_options contained \ BEFORE COMPILE_OPTIONS IMPORTED INTERFACE INTERFACE_COMPILE_OPTIONS PRIVATE PUBLIC syn keyword cmakeKWtarget_include_directories contained \ BEFORE BUILD_INTERFACE IMPORTED INCLUDE_DIRECTORIES INSTALL_INTERFACE INTERFACE INTERFACE_INCLUDE_DIRECTORIES INTERFACE_LINK_LIBRARIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES PRIVATE PUBLIC SYSTEM syn keyword cmakeKWtarget_link_libraries contained \ ALIAS DAG DEBUG_CONFIGURATIONS IMPORTED IMPORTED_NO_SONAME INTERFACE INTERFACE_LINK_LIBRARIES LINK_FLAGS LINK_INTERFACE_LIBRARIES LINK_INTERFACE_LIBRARIES_DEBUG LINK_INTERFACE_MULTIPLICITY LINK_PRIVATE LINK_PUBLIC OLD OSX PRIVATE PUBLIC STATIC syn keyword cmakeKWtarget_sources contained \ IMPORTED INTERFACE INTERFACE_SOURCES PRIVATE PUBLIC SOURCES syn keyword cmakeKWtry_compile contained \ ALL_BUILD CMAKE_FLAGS COMPILE_DEFINITIONS COPY_FILE COPY_FILE_ERROR CUDA_EXTENSIONS CUDA_STANDARD CUDA_STANDARD_REQUIRED CXX_EXTENSIONS CXX_STANDARD CXX_STANDARD_REQUIRED C_EXTENSIONS C_STANDARD C_STANDARD_REQUIRED DEFINED DLINK_LIBRARIES DVAR FALSE INCLUDE_DIRECTORIES LANG LINK_DIRECTORIES LINK_LIBRARIES NOT OUTPUT_VARIABLE RESULT_VAR SOURCES TRUE TYPE VALUE _EXTENSIONS _STANDARD _STANDARD_REQUIRED syn keyword cmakeKWtry_run contained \ ARGS CMAKE_FLAGS COMPILE_DEFINITIONS COMPILE_OUTPUT_VARIABLE COMPILE_RESULT_VAR DLINK_LIBRARIES DVAR FAILED_TO_RUN FALSE INCLUDE_DIRECTORIES LINK_DIRECTORIES LINK_LIBRARIES RUN_OUTPUT_VARIABLE RUN_RESULT_VAR TRUE TYPE VALUE __TRYRUN_OUTPUT syn keyword cmakeKWunset contained \ CACHE LD_LIBRARY_PATH PARENT_SCOPE syn keyword cmakeKWuse_mangled_mesa contained \ GL OUTPUT_DIRECTORY PATH_TO_MESA syn keyword cmakeKWvariable_requires contained \ RESULT_VARIABLE TEST_VARIABLE syn keyword cmakeKWvariable_watch contained \ COMMAND syn keyword cmakeKWwhile contained \ ARGS syn keyword cmakeKWwrite_file contained \ APPEND CONFIGURE_FILE NOTE WRITE syn keyword cmakeGeneratorExpressions contained \ LINK_LIBRARIES INCLUDE_DIRECTORIES COMPILE_DEFINITIONS CONFIG DEBUG_MODE BOOL AND NOT IF STREQUAL MAP_IMPORTED_CONFIG_ PLATFORM_ID C_COMPILER_ID CXX_COMPILER_ID VERSION_LESS VERSION_GREATER VERSION_EQUAL VERSION_LESS_EQUAL VERSION_GREATER_EQUAL C_COMPILER_VERSION CXX_COMPILER_VERSION TARGET_POLICY COMPILE_FEATURES C_STANDARD CXX_STANDARD COMPILE_LANGUAGE PRIVATE PUBLIC COMPILING_CXX GNU OLD_COMPILER CMAKE_CXX_COMPILER_VERSION CONFIGURATION TARGET_FILE TARGET_FILE_NAME TARGET_FILE_DIR TARGET_LINKER_FILE TARGET_LINKER_FILE_NAME TARGET_LINKER_FILE_DIR TARGET_SONAME_FILE TARGET_SONAME_FILE_NAME TARGET_SONAME_FILE_DIR TARGET_PDB_FILE PDB_NAME PDB_OUTPUT_DIRECTORY PDB_NAME_ PDB_OUTPUT_DIRECTORY_ TARGET_PDB_FILE_NAME TARGET_PDB_FILE_DIR TARGET_BUNDLE_DIR TARGET_BUNDLE_CONTENT_DIR SDK TARGET_PROPERTY INSTALL_PREFIX EXPORT JOIN ANGLE COMMA SEMICOLON TARGET_NAME LINK_ONLY INTERFACE_LINK_LIBRARIES INSTALL_INTERFACE BUILD_INTERFACE LOWER_CASE UPPER_CASE MAKE_C_IDENTIFIER TARGET_OBJECTS OBJECT_LIBRARY SHELL_PATH MSYS syn case ignore syn keyword cmakeCommand \ add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_subdirectory add_test aux_source_directory break build_command cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue create_test_sourcelist ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload define_property enable_language enable_testing endfunction endmacro execute_process export file find_file find_library find_package find_path find_program fltk_wrap_ui function get_cmake_property get_directory_property get_filename_component get_property get_source_file_property get_target_property get_test_property include include_directories include_external_msproject include_guard include_regular_expression install link_directories list load_cache load_command macro mark_as_advanced math message option project qt_wrap_cpp qt_wrap_ui remove_definitions return separate_arguments set set_directory_properties set_property set_source_files_properties set_target_properties set_tests_properties site_name source_group string target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_libraries target_sources try_compile try_run unset variable_watch \ nextgroup=cmakeArguments syn keyword cmakeCommandConditional \ else elseif endif if \ nextgroup=cmakeArguments syn keyword cmakeCommandRepeat \ endforeach endwhile foreach while \ nextgroup=cmakeArguments syn keyword cmakeCommandDeprecated \ build_name exec_program export_library_dependencies install_files install_programs install_targets link_libraries make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file \ nextgroup=cmakeArguments syn case match syn keyword cmakeTodo \ TODO FIXME XXX \ contained hi def link cmakeCommand Function hi def link cmakeCommandConditional Conditional hi def link cmakeCommandDeprecated WarningMsg hi def link cmakeCommandRepeat Repeat hi def link cmakeComment Comment hi def link cmakeEnvironment Special hi def link cmakeEscaped Special hi def link cmakeGeneratorExpression WarningMsg hi def link cmakeGeneratorExpressions Constant hi def link cmakeLuaComment Comment hi def link cmakeModule Include hi def link cmakeProperty Constant hi def link cmakeRegistry Underlined hi def link cmakeString String hi def link cmakeTodo TODO hi def link cmakeVariableValue Type hi def link cmakeVariable Identifier hi def link cmakeKWExternalProject ModeMsg hi def link cmakeKWadd_compile_options ModeMsg hi def link cmakeKWadd_custom_command ModeMsg hi def link cmakeKWadd_custom_target ModeMsg hi def link cmakeKWadd_definitions ModeMsg hi def link cmakeKWadd_dependencies ModeMsg hi def link cmakeKWadd_executable ModeMsg hi def link cmakeKWadd_library ModeMsg hi def link cmakeKWadd_subdirectory ModeMsg hi def link cmakeKWadd_test ModeMsg hi def link cmakeKWbuild_command ModeMsg hi def link cmakeKWbuild_name ModeMsg hi def link cmakeKWcmake_host_system_information ModeMsg hi def link cmakeKWcmake_minimum_required ModeMsg hi def link cmakeKWcmake_parse_arguments ModeMsg hi def link cmakeKWcmake_policy ModeMsg hi def link cmakeKWconfigure_file ModeMsg hi def link cmakeKWcreate_test_sourcelist ModeMsg hi def link cmakeKWctest_build ModeMsg hi def link cmakeKWctest_configure ModeMsg hi def link cmakeKWctest_coverage ModeMsg hi def link cmakeKWctest_memcheck ModeMsg hi def link cmakeKWctest_run_script ModeMsg hi def link cmakeKWctest_start ModeMsg hi def link cmakeKWctest_submit ModeMsg hi def link cmakeKWctest_test ModeMsg hi def link cmakeKWctest_update ModeMsg hi def link cmakeKWctest_upload ModeMsg hi def link cmakeKWdefine_property ModeMsg hi def link cmakeKWenable_language ModeMsg hi def link cmakeKWexec_program ModeMsg hi def link cmakeKWexecute_process ModeMsg hi def link cmakeKWexport ModeMsg hi def link cmakeKWexport_library_dependencies ModeMsg hi def link cmakeKWfile ModeMsg hi def link cmakeKWfind_file ModeMsg hi def link cmakeKWfind_library ModeMsg hi def link cmakeKWfind_package ModeMsg hi def link cmakeKWfind_path ModeMsg hi def link cmakeKWfind_program ModeMsg hi def link cmakeKWfltk_wrap_ui ModeMsg hi def link cmakeKWforeach ModeMsg hi def link cmakeKWfunction ModeMsg hi def link cmakeKWget_cmake_property ModeMsg hi def link cmakeKWget_directory_property ModeMsg hi def link cmakeKWget_filename_component ModeMsg hi def link cmakeKWget_property ModeMsg hi def link cmakeKWget_source_file_property ModeMsg hi def link cmakeKWget_target_property ModeMsg hi def link cmakeKWget_test_property ModeMsg hi def link cmakeKWif ModeMsg hi def link cmakeKWinclude ModeMsg hi def link cmakeKWinclude_directories ModeMsg hi def link cmakeKWinclude_external_msproject ModeMsg hi def link cmakeKWinclude_guard ModeMsg hi def link cmakeKWinstall ModeMsg hi def link cmakeKWinstall_files ModeMsg hi def link cmakeKWinstall_programs ModeMsg hi def link cmakeKWinstall_targets ModeMsg hi def link cmakeKWlist ModeMsg hi def link cmakeKWload_cache ModeMsg hi def link cmakeKWload_command ModeMsg hi def link cmakeKWmacro ModeMsg hi def link cmakeKWmake_directory ModeMsg hi def link cmakeKWmark_as_advanced ModeMsg hi def link cmakeKWmath ModeMsg hi def link cmakeKWmessage ModeMsg hi def link cmakeKWoption ModeMsg hi def link cmakeKWproject ModeMsg hi def link cmakeKWremove ModeMsg hi def link cmakeKWseparate_arguments ModeMsg hi def link cmakeKWset ModeMsg hi def link cmakeKWset_directory_properties ModeMsg hi def link cmakeKWset_property ModeMsg hi def link cmakeKWset_source_files_properties ModeMsg hi def link cmakeKWset_target_properties ModeMsg hi def link cmakeKWset_tests_properties ModeMsg hi def link cmakeKWsource_group ModeMsg hi def link cmakeKWstring ModeMsg hi def link cmakeKWsubdirs ModeMsg hi def link cmakeKWtarget_compile_definitions ModeMsg hi def link cmakeKWtarget_compile_features ModeMsg hi def link cmakeKWtarget_compile_options ModeMsg hi def link cmakeKWtarget_include_directories ModeMsg hi def link cmakeKWtarget_link_libraries ModeMsg hi def link cmakeKWtarget_sources ModeMsg hi def link cmakeKWtry_compile ModeMsg hi def link cmakeKWtry_run ModeMsg hi def link cmakeKWunset ModeMsg hi def link cmakeKWuse_mangled_mesa ModeMsg hi def link cmakeKWvariable_requires ModeMsg hi def link cmakeKWvariable_watch ModeMsg hi def link cmakeKWwhile ModeMsg hi def link cmakeKWwrite_file ModeMsg let b:current_syntax = "cmake" let &cpo = s:keepcpo unlet s:keepcpo " vim: set nowrap: PK!Occcvim80/syntax/wml.vimnu[" Vim syntax file " Language: WML - Website MetaLanguage " Maintainer: Gerfried Fuchs " Filenames: *.wml " Last Change: 07 Feb 2002 " URL: http://alfie.ist.org/software/vim/syntax/wml.vim " " Original Version: Craig Small " Comments are very welcome - but please make sure that you are commenting on " the latest version of this file. " SPAM is _NOT_ welcome - be ready to be reported! " If you are looking for the "Wireless Markup Language" syntax file, " please take a look at the wap.vim file done by Ralf Schandl, soon in a " vim-package around your corner :) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " A lot of the web stuff looks like HTML so we load that first runtime! syntax/html.vim unlet b:current_syntax if !exists("main_syntax") let main_syntax = 'wml' endif " special character syn match wmlNextLine "\\$" " Redfine htmlTag syn clear htmlTag syn region htmlTag start=+<[^/<]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition " " Add in extra Arguments used by wml syn keyword htmlTagName contained gfont imgbg imgdot lowsrc syn keyword htmlTagName contained navbar:define navbar:header syn keyword htmlTagName contained navbar:footer navbar:prolog syn keyword htmlTagName contained navbar:epilog navbar:button syn keyword htmlTagName contained navbar:filter navbar:debug syn keyword htmlTagName contained navbar:render syn keyword htmlTagName contained preload rollover syn keyword htmlTagName contained space hspace vspace over syn keyword htmlTagName contained ps ds pi ein big sc spaced headline syn keyword htmlTagName contained ue subheadline zwue verbcode syn keyword htmlTagName contained isolatin pod sdf text url verbatim syn keyword htmlTagName contained xtable syn keyword htmlTagName contained csmap fsview import box syn keyword htmlTagName contained case:upper case:lower syn keyword htmlTagName contained grid cell info lang: logo page syn keyword htmlTagName contained set-var restore syn keyword htmlTagName contained array:push array:show set-var ifdef syn keyword htmlTagName contained say m4 symbol dump enter divert syn keyword htmlTagName contained toc syn keyword htmlTagName contained wml card do refresh oneevent catch spawn " " The wml arguments syn keyword htmlArg contained adjust background base bdcolor bdspace syn keyword htmlArg contained bdwidth complete copyright created crop syn keyword htmlArg contained direction description domainname eperlfilter syn keyword htmlArg contained file hint imgbase imgstar interchar interline syn keyword htmlArg contained keephr keepindex keywords layout spacing syn keyword htmlArg contained padding nonetscape noscale notag notypo syn keyword htmlArg contained onload oversrc pos select slices style syn keyword htmlArg contained subselected txtcol_select txtcol_normal syn keyword htmlArg contained txtonly via syn keyword htmlArg contained mode columns localsrc ordered " Lines starting with an # are usually comments syn match wmlComment "^\s*#.*" " The different exceptions to comments syn match wmlSharpBang "^#!.*" syn match wmlUsed contained "\s\s*[A-Za-z:_-]*" syn match wmlUse "^\s*#\s*use\s\+" contains=wmlUsed syn match wmlInclude "^\s*#\s*include.+" syn region wmlBody contained start=+<<+ end=+>>+ syn match wmlLocationId contained "[A-Za-z]\+" syn region wmlLocation start=+<<+ end=+>>+ contains=wmlLocationId "syn region wmlLocation start=+{#+ end=+#}+ contains=wmlLocationId "syn region wmlLocationed contained start=+<<+ end=+>>+ contains=wmlLocationId syn match wmlDivert "\.\.[a-zA-Z_]\+>>" syn match wmlDivertEnd "<<\.\." " new version "syn match wmlDivert "{#[a-zA-Z_]\+#:" "syn match wmlDivertEnd ":##}" syn match wmlDefineName contained "\s\+[A-Za-z-]\+" syn region htmlTagName start="\<\(define-tag\|define-region\)" end="\>" contains=wmlDefineName " The perl include stuff if main_syntax != 'perl' " Perl script syn include @wmlPerlScript syntax/perl.vim unlet b:current_syntax syn region perlScript start=++ keepend end=++ contains=@wmlPerlScript,wmlPerlTag " eperl between '<:' and ':>' -- Alfie [1999-12-26] syn region perlScript start=+<:+ keepend end=+:>+ contains=@wmlPerlScript,wmlPerlTag syn match wmlPerlTag contained "" contains=wmlPerlTagN syn keyword wmlPerlTagN contained perl hi link wmlPerlTag htmlTag hi link wmlPerlTagN htmlStatement endif " verbatim tags -- don't highlight anything in between -- Alfie [2002-02-07] syn region wmlVerbatimText start=++ keepend end=++ contains=wmlVerbatimTag syn match wmlVerbatimTag contained "" contains=wmlVerbatimTagN syn keyword wmlVerbatimTagN contained verbatim hi link wmlVerbatimTag htmlTag hi link wmlVerbatimTagN htmlStatement if main_syntax == "html" syn sync match wmlHighlight groupthere NONE "" syn sync match wmlHighlightSkip "^.*['\"].*$" syn sync minlines=10 endif " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link wmlNextLine Special hi def link wmlUse Include hi def link wmlUsed String hi def link wmlBody Special hi def link wmlDiverted Label hi def link wmlDivert Delimiter hi def link wmlDivertEnd Delimiter hi def link wmlLocationId Label hi def link wmlLocation Delimiter " hi def link wmlLocationed Delimiter hi def link wmlDefineName String hi def link wmlComment Comment hi def link wmlInclude Include hi def link wmlSharpBang PreProc let b:current_syntax = "wml" PK!eMMvim80/syntax/idl.vimnu[" Vim syntax file " Language: IDL (Interface Description Language) " Created By: Jody Goldberg " Maintainer: Michael Geddes " Last Change: 2012 Jan 11 " This is an experiment. IDL's structure is simple enough to permit a full " grammar based approach to rather than using a few heuristics. The result " is large and somewhat repetative but seems to work. " There are some Microsoft extensions to idl files that are here. Some of " them are disabled by defining idl_no_ms_extensions. " " The more complex of the extensions are disabled by defining idl_no_extensions. " " History: " 2.0: Michael's new version " 2.1: Support for Vim 7 spell (Anduin Withers) " if exists("b:current_syntax") finish endif let s:cpo_save = &cpo try set cpo&vim if exists("idlsyntax_showerror") syn match idlError +\S+ skipwhite skipempty nextgroup=idlError endif syn region idlCppQuote start='\]*>" syn match idlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=idlIncluded,idlString syn region idlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=idlComment,idlCommentError syn region idlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=idlLiteral,idlString " Constants syn keyword idlConst const skipempty skipwhite nextgroup=idlBaseType,idlBaseTypeInt " Attribute syn keyword idlROAttr readonly skipempty skipwhite nextgroup=idlAttr syn keyword idlAttr attribute skipempty skipwhite nextgroup=idlBaseTypeInt,idlBaseType " Types syn region idlD4 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlSeqType,idlBaseTypeInt,idlBaseType,idlLiteral syn keyword idlSeqType contained sequence skipempty skipwhite nextgroup=idlD4 syn keyword idlBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlSimpDecl syn keyword idlBaseTypeInt contained short long skipempty skipwhite nextgroup=idlSimpDecl syn keyword idlBaseType contained unsigned skipempty skipwhite nextgroup=idlBaseTypeInt syn region idlD1 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlString,idlLiteral syn keyword idlBaseType contained string skipempty skipwhite nextgroup=idlD1,idlSimpDecl syn match idlBaseType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlSimpDecl " Modules syn region idlModuleContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlInterface,idlComment,idlTypedef,idlConst,idlException,idlModule syn match idlModuleName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlModuleContent,idlError,idlSemiColon syn keyword idlModule module skipempty skipwhite nextgroup=idlModuleName " Interfaces syn cluster idlCommentable contains=idlComment syn cluster idlContentCluster contains=idlUnion,idlStruct,idlEnum,idlROAttr,idlAttr,idlOp,idlOneWayOp,idlException,idlConst,idlTypedef,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlInterfaceSections syn region idlInterfaceContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable syn match idlInheritFrom2 contained "," skipempty skipwhite nextgroup=idlInheritFrom syn match idlInheritFrom contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlInheritFrom2,idlInterfaceContent syn match idlInherit contained ":" skipempty skipwhite nextgroup=idlInheritFrom syn match idlInterfaceName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlInterfaceContent,idlInherit,idlError,idlSemiColon syn keyword idlInterface interface dispinterface skipempty skipwhite nextgroup=idlInterfaceName syn keyword idlInterfaceSections contained properties methods skipempty skipwhite nextgroup=idlSectionColon,idlError syn match idlSectionColon contained ":" syn match idlLibraryName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlLibraryContent,idlError,idlSemiColon syn keyword idlLibrary library skipempty skipwhite nextgroup=idlLibraryName syn region idlLibraryContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlCommentable,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlImportlib,idlCoclass,idlTypedef,idlInterface syn keyword idlImportlib contained importlib skipempty skipwhite nextgroup=idlStringArg syn region idlStringArg contained start="(" end=")" contains=idlString nextgroup=idlError,idlSemiColon,idlErrorBrace,idlErrorSquareBracket syn keyword idlCoclass coclass contained skipempty skipwhite nextgroup=idlCoclassName syn match idlCoclassName "[a-zA-Z0-9_]\+" contained skipempty skipwhite nextgroup=idlCoclassDefinition,idlError,idlSemiColon syn region idlCoclassDefinition contained start="{" end="}" contains=idlCoclassAttributes,idlInterface,idlErrorBracket,idlErrorSquareBracket skipempty skipwhite nextgroup=idlError,idlSemiColon syn region idlCoclassAttributes contained start=+\[+ end=+]+ skipempty skipwhite nextgroup=idlInterface contains=idlErrorBracket,idlErrorBrace,idlCoclassAttribute syn keyword idlCoclassAttribute contained default source "syn keyword idlInterface interface skipempty skipwhite nextgroup=idlInterfaceStubName syn match idlImportString +"\f\+"+ skipempty skipwhite nextgroup=idlError,idlSemiColon syn keyword idlImport import skipempty skipwhite nextgroup=idlImportString syn region idlAttributes start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace,idlComment syn keyword idlAttribute contained propput propget propputref id helpstring object uuid pointer_default if !exists('idl_no_ms_extensions') syn keyword idlAttribute contained nonextensible dual version aggregatable restricted hidden noncreatable oleautomation endif syn region idlAttributeParam contained start="(" end=")" contains=idlString,idlUuid,idlLiteral,idlErrorBrace,idlErrorSquareBracket " skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral syn match idlErrorBrace contained "}" syn match idlErrorBracket contained ")" syn match idlErrorSquareBracket contained "\]" syn match idlUuid contained +[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}+ " Raises syn keyword idlRaises contained raises skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon " Context syn keyword idlContext contained context skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon " Operation syn match idlParmList contained "," skipempty skipwhite nextgroup=idlOpParms syn region idlArraySize contained start="\[" end="\]" skipempty skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral syn match idlParmName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlParmList,idlArraySize syn keyword idlParmInt contained short long skipempty skipwhite nextgroup=idlParmName syn keyword idlParmType contained unsigned skipempty skipwhite nextgroup=idlParmInt syn region idlD3 contained start="<" end=">" skipempty skipwhite nextgroup=idlParmName contains=idlString,idlLiteral syn keyword idlParmType contained string skipempty skipwhite nextgroup=idlD3,idlParmName syn keyword idlParmType contained void float double char boolean octet any skipempty skipwhite nextgroup=idlParmName syn match idlParmType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlParmName syn keyword idlOpParms contained in out inout skipempty skipwhite nextgroup=idlParmType if !exists('idl_no_ms_extensions') syn keyword idlOpParms contained retval optional skipempty skipwhite nextgroup=idlParmType syn match idlOpParms contained +\<\(iid_is\|defaultvalue\)\s*([^)]*)+ skipempty skipwhite nextgroup=idlParamType syn keyword idlVariantType contained BSTR VARIANT VARIANT_BOOL long short unsigned double CURRENCY DATE syn region idlSafeArray contained matchgroup=idlVariantType start=+SAFEARRAY(\s*+ end=+)+ contains=idlVariantType endif syn region idlOpContents contained start="(" end=")" skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon contains=idlOpParms,idlSafeArray,idlVariantType,@idlCommentable syn match idlOpName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlOpContents syn keyword idlOpInt contained short long skipempty skipwhite nextgroup=idlOpName syn region idlD2 contained start="<" end=">" skipempty skipwhite nextgroup=idlOpName contains=idlString,idlLiteral syn keyword idlOp contained unsigned skipempty skipwhite nextgroup=idlOpInt syn keyword idlOp contained string skipempty skipwhite nextgroup=idlD2,idlOpName syn keyword idlOp contained void float double char boolean octet any skipempty skipwhite nextgroup=idlOpName syn match idlOp contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlOpName syn keyword idlOp contained void skipempty skipwhite nextgroup=idlOpName syn keyword idlOneWayOp contained oneway skipempty skipwhite nextgroup=idOp " Enum syn region idlEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlId,idlAttributes,@idlCommentable syn match idlEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlEnumContents syn keyword idlEnum enum skipempty skipwhite nextgroup=idlEnumName,idlEnumContents " Typedef syn keyword idlTypedef typedef skipempty skipwhite nextgroup=idlTypedefOtherTypeQualifier,idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError if !exists('idl_no_extensions') syn keyword idlTypedefOtherTypeQualifier contained struct enum interface nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError skipwhite syn region idlDefAttributes contained start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace skipempty skipwhite nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlError syn keyword idlDefBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlTypedefDecl,idlError syn keyword idlDefBaseTypeInt contained short long skipempty skipwhite nextgroup=idlTypedefDecl,idlError syn match idlDefOtherType contained +\<\k\+\>+ skipempty nextgroup=idlTypedefDecl,idlError " syn keyword idlDefSeqType contained sequence skipempty skipwhite nextgroup=idlD4 " Enum typedef syn keyword idlDefEnum contained enum skipempty skipwhite nextgroup=idlDefEnumName,idlDefEnumContents syn match idlDefEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlDefEnumContents,idlTypedefDecl syn region idlDefEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlTypedefDecl contains=idlId,idlAttributes syn match idlTypedefDecl contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlError,idlSemiColon endif " Struct syn region idlStructContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlBaseType,idlBaseTypeInt,idlSeqType,@idlCommentable,idlEnum,idlUnion syn match idlStructName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlStructContent syn keyword idlStruct struct skipempty skipwhite nextgroup=idlStructName " Exception syn keyword idlException exception skipempty skipwhite nextgroup=idlStructName " Union syn match idlColon contained ":" skipempty skipwhite nextgroup=idlCase,idlSeqType,idlBaseType,idlBaseTypeInt syn region idlCaseLabel contained start="" skip="::" end=":"me=e-1 skipempty skipwhite nextgroup=idlColon contains=idlLiteral,idlString syn keyword idlCase contained case skipempty skipwhite nextgroup=idlCaseLabel syn keyword idlCase contained default skipempty skipwhite nextgroup=idlColon syn region idlUnionContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlCase syn region idlSwitchType contained start="(" end=")" skipempty skipwhite nextgroup=idlUnionContent syn keyword idlUnionSwitch contained switch skipempty skipwhite nextgroup=idlSwitchType syn match idlUnionName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlUnionSwitch syn keyword idlUnion union skipempty skipwhite nextgroup=idlUnionName if !exists('idl_no_extensions') syn sync match idlInterfaceSync grouphere idlInterfaceContent "\<\(disp\)\=interface\>\s\+\k\+\s*:\s*\k\+\_s*{" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable syn sync maxlines=1000 minlines=100 else syn sync lines=200 endif " syn sync fromstart if !exists("did_idl_syntax_inits") let did_idl_syntax_inits = 1 " The default methods for highlighting. Can be overridden later hi def link idlInclude Include hi def link idlPreProc PreProc hi def link idlPreCondit PreCondit hi def link idlDefine Macro hi def link idlIncluded String hi def link idlString String hi def link idlComment Comment hi def link idlTodo Todo hi def link idlLiteral Number hi def link idlUuid Number hi def link idlType Type hi def link idlVariantType idlType hi def link idlModule Keyword hi def link idlInterface Keyword hi def link idlEnum Keyword hi def link idlStruct Keyword hi def link idlUnion Keyword hi def link idlTypedef Keyword hi def link idlException Keyword hi def link idlTypedefOtherTypeQualifier keyword hi def link idlModuleName Typedef hi def link idlInterfaceName Typedef hi def link idlEnumName Typedef hi def link idlStructName Typedef hi def link idlUnionName Typedef hi def link idlBaseTypeInt idlType hi def link idlBaseType idlType hi def link idlSeqType idlType hi def link idlD1 Paren hi def link idlD2 Paren hi def link idlD3 Paren hi def link idlD4 Paren "hi def link idlArraySize Paren "hi def link idlArraySize1 Paren hi def link idlModuleContent Paren hi def link idlUnionContent Paren hi def link idlStructContent Paren hi def link idlEnumContents Paren hi def link idlInterfaceContent Paren hi def link idlSimpDecl Identifier hi def link idlROAttr StorageClass hi def link idlAttr Keyword hi def link idlConst StorageClass hi def link idlOneWayOp StorageClass hi def link idlOp idlType hi def link idlParmType idlType hi def link idlOpName Function hi def link idlOpParms SpecialComment hi def link idlParmName Identifier hi def link idlInheritFrom Identifier hi def link idlAttribute SpecialComment hi def link idlId Constant "hi def link idlCase Keyword hi def link idlCaseLabel Constant hi def link idlErrorBracket Error hi def link idlErrorBrace Error hi def link idlErrorSquareBracket Error hi def link idlImport Keyword hi def link idlImportString idlString hi def link idlCoclassAttribute StorageClass hi def link idlLibrary Keyword hi def link idlImportlib Keyword hi def link idlCoclass Keyword hi def link idlLibraryName Typedef hi def link idlCoclassName Typedef " hi def link idlLibraryContent guifg=red hi def link idlTypedefDecl Typedef hi def link idlDefEnum Keyword hi def link idlDefv1Enum Keyword hi def link idlDefEnumName Typedef hi def link idlDefEnumContents Paren hi def link idlDefBaseTypeInt idlType hi def link idlDefBaseType idlType hi def link idlDefSeqType idlType hi def link idlInterfaceSections Label if exists("idlsyntax_showerror") if exists("idlsyntax_showerror_soft") hi default idlError guibg=#d0ffd0 else hi def link idlError Error endif endif endif let b:current_syntax = "idl" finally let &cpo = s:cpo_save unlet s:cpo_save endtry " vim: sw=2 et PK!|..vim80/syntax/mma.vimnu[" Vim syntax file " Language: Mathematica " Maintainer: steve layland " Last Change: 2012 Feb 03 by Thilo Six " Source: http://members.wri.com/layland/vim/syntax/mma.vim " http://vim.sourceforge.net/scripts/script.php?script_id=1273 " Id: $Id: mma.vim,v 1.4 2006/04/14 20:40:38 vimboss Exp $ " NOTE: " " Empty .m files will automatically be presumed as Matlab files " unless you have the following in your .vimrc: " " let filetype_m="mma" " " I also recommend setting the default 'Comment' hilighting to something " other than the color used for 'Function', since both are plentiful in " most mathematica files, and they are often the same color (when using " background=dark). " " Credits: " o Original Mathematica syntax version written by " Wolfgang Waltenberger " o Some ideas like the CommentStar,CommentTitle were adapted " from the Java vim syntax file by Claudio Fleiner. Thanks! " o Everything else written by steve " " Bugs: " o Vim 6.1 didn't really have support for character classes " of other named character classes. For example, [\a\d] " didn't work. Therefore, a lot of this code uses explicit " character classes instead: [0-9a-zA-Z] " " TODO: " folding " fix nesting " finish populating popular symbols " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " Group Definitions: syntax cluster mmaNotes contains=mmaTodo,mmaFixme syntax cluster mmaComments contains=mmaComment,mmaFunctionComment,mmaItem,mmaFunctionTitle,mmaCommentStar syntax cluster mmaCommentStrings contains=mmaLooseQuote,mmaCommentString,mmaUnicode syntax cluster mmaStrings contains=@mmaCommentStrings,mmaString syntax cluster mmaTop contains=mmaOperator,mmaGenericFunction,mmaPureFunction,mmaVariable " Predefined Constants: " to list all predefined Symbols would be too insane... " it's probably smarter to define a select few, and get the rest from " context if absolutely necessary. " TODO - populate this with other often used Symbols " standard fixed symbols: syntax keyword mmaVariable True False None Automatic All Null C General " mathematical constants: syntax keyword mmaVariable Pi I E Infinity ComplexInfinity Indeterminate GoldenRatio EulerGamma Degree Catalan Khinchin Glaisher " stream data / atomic heads: syntax keyword mmaVariable Byte Character Expression Number Real String Word EndOfFile Integer Symbol " sets: syntax keyword mmaVariable Integers Complexes Reals Booleans Rationals " character classes: syntax keyword mmaPattern DigitCharacter LetterCharacter WhitespaceCharacter WordCharacter EndOfString StartOfString EndOfLine StartOfLine WordBoundary " SelectionMove directions/units: syntax keyword mmaVariable Next Previous After Before Character Word Expression TextLine CellContents Cell CellGroup EvaluationCell ButtonCell GeneratedCell Notebook syntax keyword mmaVariable CellTags CellStyle CellLabel " TableForm positions: syntax keyword mmaVariable Above Below Left Right " colors: syntax keyword mmaVariable Black Blue Brown Cyan Gray Green Magenta Orange Pink Purple Red White Yellow " function attributes syntax keyword mmaVariable Protected Listable OneIdentity Orderless Flat Constant NumericFunction Locked ReadProtected HoldFirst HoldRest HoldAll HoldAllComplete SequenceHold NHoldFirst NHoldRest NHoldAll Temporary Stub " Comment Sections: " this: " :that: syntax match mmaItem "\%(^[( |*\t]*\)\@<=\%(:\+\|\w\)\w\+\%( \w\+\)\{0,3}:" contained contains=@mmaNotes " Comment Keywords: syntax keyword mmaTodo TODO NOTE HEY contained syntax match mmaTodo "X\{3,}" contained syntax keyword mmaFixme FIX[ME] FIXTHIS BROKEN contained syntax match mmaFixme "BUG\%( *\#\=[0-9]\+\)\=" contained " yay pirates... syntax match mmaFixme "\%(Y\=A\+R\+G\+\|GRR\+\|CR\+A\+P\+\)\%(!\+\)\=" contained " EmPHAsis: " this unnecessary, but whatever :) syntax match mmaemPHAsis "\%(^\|\s\)\([_/]\)[a-zA-Z0-9]\+\%([- \t':]\+[a-zA-Z0-9]\+\)*\1\%(\s\|$\)" contained contains=mmaemPHAsis syntax match mmaemPHAsis "\%(^\|\s\)(\@]\@!" contains=mmaOperator "pattern default: syntax match mmaPattern ": *[^ ,]\+[\], ]\@=" contains=@mmaCommentStrings,@mmaTop,mmaOperator "pattern head/test: syntax match mmaPattern "[A-Za-z0-9`]*_\+\%(\a\+\)\=\%(?([^)]\+)\|?[^\]},]\+\)\=" contains=@mmaTop,@mmaCommentStrings,mmaPatternError " Operators: " /: ^= ^:= UpValue " /; Conditional " := = DownValue " == === || " != =!= && Logic " >= <= < > " += -= *= " /= ++ -- Math " ^* " -> :> Rules " @@ @@@ Apply " /@ //@ Map " /. //. Replace " // @ Function application " <> ~~ String/Pattern join " ~ infix operator " . : Pattern operators syntax match mmaOperator "\%(@\{1,3}\|//[.@]\=\)" syntax match mmaOperator "\%(/[;:@.]\=\|\^\=:\==\)" syntax match mmaOperator "\%([-:=]\=>\|<=\=\)" "syntax match mmaOperator "\%(++\=\|--\=\|[/+-*]=\|[^*]\)" syntax match mmaOperator "[*+=^.:?-]" syntax match mmaOperator "\%(\~\~\=\)" syntax match mmaOperator "\%(=\{2,3}\|=\=!=\|||\=\|&&\|!\)" contains=ALLBUT,mmaPureFunction " Symbol Tags: " "SymbolName::item" "syntax match mmaSymbol "`\=[a-zA-Z$]\+[0-9a-zA-Z$]*\%(`\%([a-zA-Z$]\+[0-9a-zA-Z$]*\)\=\)*" contained syntax match mmaMessage "`\=\([a-zA-Z$]\+[0-9a-zA-Z$]*\)\%(`\%([a-zA-Z$]\+[0-9a-zA-Z$]*\)\=\)*::\a\+" contains=mmaMessageType syntax match mmaMessageType "::\a\+"hs=s+2 contained " Pure Functions: syntax match mmaPureFunction "#\%(#\|\d\+\)\=" syntax match mmaPureFunction "&" " Named Functions: " Since everything is pretty much a function, get this straight " from context syntax match mmaGenericFunction "[A-Za-z0-9`]\+\s*\%([@[]\|/:\|/\=/@\)\@=" contains=mmaOperator syntax match mmaGenericFunction "\~\s*[^~]\+\s*\~"hs=s+1,he=e-1 contains=mmaOperator,mmaBoring syntax match mmaGenericFunction "//\s*[A-Za-z0-9`]\+"hs=s+2 contains=mmaOperator " Numbers: syntax match mmaNumber "\<\%(\d\+\.\=\d*\|\d*\.\=\d\+\)\>" syntax match mmaNumber "`\d\+\%(\d\@!\.\|\>\)" " Special Characters: " \[Name] named character " \ooo octal " \.xx 2 digit hex " \:xxxx 4 digit hex (multibyte unicode) syntax match mmaUnicode "\\\[\w\+\d*\]" syntax match mmaUnicode "\\\%(\x\{3}\|\.\x\{2}\|:\x\{4}\)" " Syntax Errors: syntax match mmaError "\*)" containedin=ALLBUT,@mmaComments,@mmaStrings syntax match mmaError "\%([/]{3,}\|[&:|+*?~-]\{3,}\|[.=]\{4,}\|_\@<=\.\{2,}\|`\{2,}\)" containedin=ALLBUT,@mmaComments,@mmaStrings " Punctuation: " things that shouldn't really be highlighted, or highlighted " in they're own group if you _really_ want. :) " ( ) { } " TODO - use Delimiter group? syntax match mmaBoring "[(){}]" contained " ------------------------------------ " future explorations... " ------------------------------------ " Function Arguments: " anything between brackets [] " (fold) "syntax region mmaArgument start="\[" end="\]" containedin=ALLBUT,@mmaComments,@mmaStrings transparent fold " Lists: " (fold) "syntax region mmaLists start="{" end="}" containedin=ALLBUT,@mmaComments,@mmaStrings transparent fold " Regions: " (fold) "syntax region mmaRegion start="(\*\+[^<]* \*)" containedin=ALLBUT,@mmaStrings transparent fold keepend " show fold text set commentstring='(*%s*)' "set foldtext=MmaFoldText() "function MmaFoldText() " let line = getline(v:foldstart) " " let lines = v:foldend-v:foldstart+1 " " let sub = substitute(line, '(\*\+|\*\+)|[-*_]\+', '', 'g') " " if match(line, '(\*') != -1 " let lines = lines.' line comment' " else " let lines = lines.' lines' " endif " " return v:folddashes.' '.lines.' '.sub "endf "this is slow for computing folds, but it does so accurately syntax sync fromstart " but this seems to do alright for non fold syntax coloring. " for folding, however, it doesn't get the nesting right. " TODO - find sync group for multiline modules? ick... " sync multi line comments "syntax sync match syncComments groupthere NONE "\*)" "syntax sync match syncComments groupthere mmaComment "(\*" "set foldmethod=syntax "set foldnestmax=1 "set foldminlines=15 " NOTE - the following links are not guaranteed to " look good under all colorschemes. You might need to " :so $VIMRUNTIME/syntax/hitest.vim and tweak these to " look good in yours hi def link mmaComment Comment hi def link mmaCommentStar Comment hi def link mmaFunctionComment Comment hi def link mmaLooseQuote Comment hi def link mmaGenericFunction Function hi def link mmaVariable Identifier " hi def link mmaSymbol Identifier hi def link mmaOperator Operator hi def link mmaPatternOp Operator hi def link mmaPureFunction Operator hi def link mmaString String hi def link mmaCommentString String hi def link mmaUnicode String hi def link mmaMessage Type hi def link mmaNumber Type hi def link mmaPattern Type hi def link mmaError Error hi def link mmaFixme Error hi def link mmaPatternError Error hi def link mmaTodo Todo hi def link mmaemPHAsis Special hi def link mmaFunctionTitle Special hi def link mmaMessageType Special hi def link mmaItem Preproc let b:current_syntax = "mma" let &cpo = s:cpo_save unlet s:cpo_save PK!-ùhhvim80/syntax/mmix.vimnu[" Vim syntax file " Language: MMIX " Maintainer: Dirk Hsken, " Last Change: 2012 Jun 01 " (Dominique Pelle added @Spell) " Filenames: *.mms " URL: http://homepages.uni-tuebingen.de/student/dirk.huesken/vim/syntax/mmix.vim " Limitations: Comments must start with either % or // " (preferably %, Knuth-Style) " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " MMIX data types syn keyword mmixType byte wyde tetra octa " different literals... syn match decNumber "[0-9]*" syn match octNumber "0[0-7][0-7]\+" syn match hexNumber "#[0-9a-fA-F]\+" syn region mmixString start=+"+ skip=+\\"+ end=+"+ contains=@Spell syn match mmixChar "'.'" " ...and more special MMIX stuff syn match mmixAt "@" syn keyword mmixSegments Data_Segment Pool_Segment Stack_Segment syn match mmixIdentifier "[a-z_][a-z0-9_]*" " labels (for branches etc) syn match mmixLabel "^[a-z0-9_:][a-z0-9_]*" syn match mmixLabel "[0-9][HBF]" " pseudo-operations syn keyword mmixPseudo is loc greg " comments syn match mmixComment "%.*" contains=@Spell syn match mmixComment "//.*" contains=@Spell syn match mmixComment "^\*.*" contains=@Spell syn keyword mmixOpcode trap fcmp fun feql fadd fix fsub fixu syn keyword mmixOpcode fmul fcmpe fune feqle fdiv fsqrt frem fint syn keyword mmixOpcode floti flotui sfloti sflotui i syn keyword mmixOpcode muli mului divi divui syn keyword mmixOpcode addi addui subi subui syn keyword mmixOpcode 2addui 4addui 8addui 16addui syn keyword mmixOpcode cmpi cmpui negi negui syn keyword mmixOpcode sli slui sri srui syn keyword mmixOpcode bnb bzb bpb bodb syn keyword mmixOpcode bnnb bnzb bnpb bevb syn keyword mmixOpcode pbnb pbzb pbpb pbodb syn keyword mmixOpcode pbnnb pbnzb pbnpb pbevb syn keyword mmixOpcode csni cszi cspi csodi syn keyword mmixOpcode csnni csnzi csnpi csevi syn keyword mmixOpcode zsni zszi zspi zsodi syn keyword mmixOpcode zsnni zsnzi zsnpi zsevi syn keyword mmixOpcode ldbi ldbui ldwi ldwui syn keyword mmixOpcode ldti ldtui ldoi ldoui syn keyword mmixOpcode ldsfi ldhti cswapi ldunci syn keyword mmixOpcode ldvtsi preldi pregoi goi syn keyword mmixOpcode stbi stbui stwi stwui syn keyword mmixOpcode stti sttui stoi stoui syn keyword mmixOpcode stsfi sthti stcoi stunci syn keyword mmixOpcode syncdi presti syncidi pushgoi syn keyword mmixOpcode ori orni nori xori syn keyword mmixOpcode andi andni nandi nxori syn keyword mmixOpcode bdifi wdifi tdifi odifi syn keyword mmixOpcode muxi saddi mori mxori syn keyword mmixOpcode muli mului divi divui syn keyword mmixOpcode flot flotu sflot sflotu syn keyword mmixOpcode mul mulu div divu syn keyword mmixOpcode add addu sub subu syn keyword mmixOpcode 2addu 4addu 8addu 16addu syn keyword mmixOpcode cmp cmpu neg negu syn keyword mmixOpcode sl slu sr sru syn keyword mmixOpcode bn bz bp bod syn keyword mmixOpcode bnn bnz bnp bev syn keyword mmixOpcode pbn pbz pbp pbod syn keyword mmixOpcode pbnn pbnz pbnp pbev syn keyword mmixOpcode csn csz csp csod syn keyword mmixOpcode csnn csnz csnp csev syn keyword mmixOpcode zsn zsz zsp zsod syn keyword mmixOpcode zsnn zsnz zsnp zsev syn keyword mmixOpcode ldb ldbu ldw ldwu syn keyword mmixOpcode ldt ldtu ldo ldou syn keyword mmixOpcode ldsf ldht cswap ldunc syn keyword mmixOpcode ldvts preld prego go syn keyword mmixOpcode stb stbu stw stwu syn keyword mmixOpcode stt sttu sto stou syn keyword mmixOpcode stsf stht stco stunc syn keyword mmixOpcode syncd prest syncid pushgo syn keyword mmixOpcode or orn nor xor syn keyword mmixOpcode and andn nand nxor syn keyword mmixOpcode bdif wdif tdif odif syn keyword mmixOpcode mux sadd mor mxor syn keyword mmixOpcode seth setmh setml setl inch incmh incml incl syn keyword mmixOpcode orh ormh orml orl andh andmh andml andnl syn keyword mmixOpcode jmp pushj geta put syn keyword mmixOpcode pop resume save unsave sync swym get trip syn keyword mmixOpcode set lda " switch back to being case sensitive syn case match " general-purpose and special-purpose registers syn match mmixRegister "$[0-9]*" syn match mmixRegister "r[A-Z]" syn keyword mmixRegister rBB rTT rWW rXX rYY rZZ " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default methods for highlighting. Can be overridden later hi def link mmixAt Type hi def link mmixPseudo Type hi def link mmixRegister Special hi def link mmixSegments Type hi def link mmixLabel Special hi def link mmixComment Comment hi def link mmixOpcode Keyword hi def link hexNumber Number hi def link decNumber Number hi def link octNumber Number hi def link mmixString String hi def link mmixChar String hi def link mmixType Type hi def link mmixIdentifier Normal hi def link mmixSpecialComment Comment " My default color overrides: " hi mmixSpecialComment ctermfg=red "hi mmixLabel ctermfg=lightcyan " hi mmixType ctermbg=black ctermfg=brown let b:current_syntax = "mmix" " vim: ts=8 PK!T055vim80/syntax/make.vimnu[" Vim syntax file " Language: Makefile " Maintainer: Claudio Fleiner " URL: http://www.fleiner.com/vim/syntax/make.vim " Last Change: 2015 Feb 28 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " some special characters syn match makeSpecial "^\s*[@+-]\+" syn match makeNextLine "\\\n\s*" " some directives syn match makePreCondit "^ *\(ifeq\>\|else\>\|endif\>\|ifneq\>\|ifdef\>\|ifndef\>\)" syn match makeInclude "^ *[-s]\=include" syn match makeStatement "^ *vpath" syn match makeExport "^ *\(export\|unexport\)\>" syn match makeOverride "^ *override" hi link makeOverride makeStatement hi link makeExport makeStatement " catch unmatched define/endef keywords. endef only matches it is by itself on a line, possibly followed by a commend syn region makeDefine start="^\s*define\s" end="^\s*endef\s*\(#.*\)\?$" contains=makeStatement,makeIdent,makePreCondit,makeDefine " Microsoft Makefile specials syn case ignore syn match makeInclude "^! *include" syn match makePreCondit "! *\(cmdswitches\|error\|message\|include\|if\|ifdef\|ifndef\|else\|elseif\|else if\|else\s*ifdef\|else\s*ifndef\|endif\|undef\)\>" syn case match " identifiers syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent,makeSString,makeDString syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent,makeSString,makeDString syn match makeIdent "\$\$\w*" syn match makeIdent "\$[^({]" syn match makeIdent "^ *[^:#= \t]*\s*[:+?!*]="me=e-2 syn match makeIdent "^ *[^:#= \t]*\s*="me=e-1 syn match makeIdent "%" " Makefile.in variables syn match makeConfig "@[A-Za-z0-9_]\+@" " make targets " syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>" syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1 nextgroup=makeSource syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2 nextgroup=makeSource syn region makeTarget transparent matchgroup=makeTarget start="^[~A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]"rs=e-1 end=";"re=e-1,me=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine,makeComment skipnl nextGroup=makeCommands syn match makeTarget "^[~A-Za-z0-9_./$()%*@-][A-Za-z0-9_./\t $()%*@-]*::\=\s*$" contains=makeIdent,makeSpecTarget,makeComment skipnl nextgroup=makeCommands,makeCommandError syn region makeSpecTarget transparent matchgroup=makeSpecTarget start="^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*:\{1,2}[^:=]"rs=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine,makeComment skipnl nextGroup=makeCommands syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*::\=\s*$" contains=makeIdent,makeComment skipnl nextgroup=makeCommands,makeCommandError syn match makeCommandError "^\s\+\S.*" contained syn region makeCommands start=";"hs=s+1 start="^\t" end="^[^\t#]"me=e-1,re=e-1 end="^$" contained contains=makeCmdNextLine,makeSpecial,makeComment,makeIdent,makePreCondit,makeDefine,makeDString,makeSString nextgroup=makeCommandError syn match makeCmdNextLine "\\\n."he=e-1 contained " Statements / Functions (GNU make) syn match makeStatement contained "(\(subst\|abspath\|addprefix\|addsuffix\|and\|basename\|call\|dir\|error\|eval\|filter-out\|filter\|findstring\|firstword\|flavor\|foreach\|if\|info\|join\|lastword\|notdir\|or\|origin\|patsubst\|realpath\|shell\|sort\|strip\|suffix\|value\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1 " Comment if exists("make_microsoft") syn match makeComment "#.*" contains=@Spell,makeTodo elseif !exists("make_no_comments") syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo syn match makeComment "#$" contains=@Spell endif syn keyword makeTodo TODO FIXME XXX contained " match escaped quotes and any other escaped character " except for $, as a backslash in front of a $ does " not make it a standard character, but instead it will " still act as the beginning of a variable " The escaped char is not highlightet currently syn match makeEscapedChar "\\[^$]" syn region makeDString start=+\(\\\)\@ " Filenames: *.bat " Last Change: 6th September 2009 " Web Page: http://www.eandem.co.uk/mrw/vim " " Options Flags: " dosbatch_cmdextversion - 1 = Windows NT, 2 = Windows 2000 [default] " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Set default highlighting to Win2k if !exists("dosbatch_cmdextversion") let dosbatch_cmdextversion = 2 endif " DOS bat files are case insensitive but case preserving! syn case ignore syn keyword dosbatchTodo contained TODO " Dosbat keywords syn keyword dosbatchStatement goto call exit syn keyword dosbatchConditional if else syn keyword dosbatchRepeat for " Some operators - first lot are case sensitive! syn case match syn keyword dosbatchOperator EQU NEQ LSS LEQ GTR GEQ syn case ignore syn match dosbatchOperator "\s[-+\*/%!~]\s" syn match dosbatchOperator "=" syn match dosbatchOperator "[-+\*/%]=" syn match dosbatchOperator "\s\(&\||\|^\|<<\|>>\)=\=\s" syn match dosbatchIfOperator "if\s\+\(\(not\)\=\s\+\)\=\(exist\|defined\|errorlevel\|cmdextversion\)\="lc=2 " String - using "'s is a convenience rather than a requirement outside of FOR syn match dosbatchString "\"[^"]*\"" contains=dosbatchVariable,dosBatchArgument,dosbatchSpecialChar,@dosbatchNumber,@Spell syn match dosbatchString "\|]\|\^\@<=[)>|]\)*"lc=4 contains=dosbatchVariable,dosbatchArgument,dosbatchSpecialChar,@dosbatchNumber,@Spell syn match dosbatchEchoOperator "\^]" syn match dosbatchSpecialChar "\$[a-hl-npqstv_$+]" syn match dosbatchSpecialChar "%%" " Environment variables syn match dosbatchIdentifier contained "\s\h\w*\>" syn match dosbatchVariable "%\h\w*%" syn match dosbatchVariable "%\h\w*:\*\=[^=]*=[^%]*%" syn match dosbatchVariable "%\h\w*:\~[-]\=\d\+\(,[-]\=\d\+\)\=%" contains=dosbatchInteger syn match dosbatchVariable "!\h\w*!" syn match dosbatchVariable "!\h\w*:\*\=[^=]*=[^!]*!" syn match dosbatchVariable "!\h\w*:\~[-]\=\d\+\(,[-]\=\d\+\)\=!" contains=dosbatchInteger syn match dosbatchSet "\s\h\w*[+-]\==\{-1}" contains=dosbatchIdentifier,dosbatchOperator " Args to bat files and for loops, etc syn match dosbatchArgument "%\(\d\|\*\)" syn match dosbatchArgument "%[a-z]\>" if dosbatch_cmdextversion == 1 syn match dosbatchArgument "%\~[fdpnxs]\+\(\($PATH:\)\=[a-z]\|\d\)\>" else syn match dosbatchArgument "%\~[fdpnxsatz]\+\(\($PATH:\)\=[a-z]\|\d\)\>" endif " Line labels syn match dosbatchLabel "^\s*:\s*\h\w*\>" syn match dosbatchLabel "\<\(goto\|call\)\s\+:\h\w*\>"lc=4 syn match dosbatchLabel "\"lc=4 syn match dosbatchLabel ":\h\w*\>" " Comments - usual rem but also two colons as first non-space is an idiom syn match dosbatchComment "^rem\($\|\s.*$\)"lc=3 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell syn match dosbatchComment "^@rem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell syn match dosbatchComment "\srem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell syn match dosbatchComment "\s@rem\($\|\s.*$\)"lc=5 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell syn match dosbatchComment "\s*:\s*:.*$" contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell " Comments in ()'s - still to handle spaces before rem syn match dosbatchComment "(rem\([^)]\|\^\@<=)\)*"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell syn keyword dosbatchImplicit append assoc at attrib break cacls cd chcp chdir syn keyword dosbatchImplicit chkdsk chkntfs cls cmd color comp compact convert copy syn keyword dosbatchImplicit date del dir diskcomp diskcopy doskey echo endlocal syn keyword dosbatchImplicit erase fc find findstr format ftype syn keyword dosbatchImplicit graftabl help keyb label md mkdir mode more move syn keyword dosbatchImplicit path pause popd print prompt pushd rd recover rem syn keyword dosbatchImplicit ren rename replace restore rmdir set setlocal shift syn keyword dosbatchImplicit sort start subst time title tree type ver verify syn keyword dosbatchImplicit vol xcopy " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link dosbatchTodo Todo hi def link dosbatchStatement Statement hi def link dosbatchCommands dosbatchStatement hi def link dosbatchLabel Label hi def link dosbatchConditional Conditional hi def link dosbatchRepeat Repeat hi def link dosbatchOperator Operator hi def link dosbatchEchoOperator dosbatchOperator hi def link dosbatchIfOperator dosbatchOperator hi def link dosbatchArgument Identifier hi def link dosbatchIdentifier Identifier hi def link dosbatchVariable dosbatchIdentifier hi def link dosbatchSpecialChar SpecialChar hi def link dosbatchString String hi def link dosbatchNumber Number hi def link dosbatchInteger dosbatchNumber hi def link dosbatchHex dosbatchNumber hi def link dosbatchBinary dosbatchNumber hi def link dosbatchOctal dosbatchNumber hi def link dosbatchComment Comment hi def link dosbatchImplicit Function hi def link dosbatchSwitch Special hi def link dosbatchCmd PreProc let b:current_syntax = "dosbatch" " vim: ts=8 PK! VYYvim80/syntax/xpm2.vimnu[" Vim syntax file " Language: X Pixmap v2 " Maintainer: Steve Wall (hitched97@velnet.com) " Last Change: 2017 Feb 01 " (Dominique Pelle added @Spell) " Version: 5.8 " Jemma Nelson added termguicolors support " " Made from xpm.vim by Ronald Schild " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn region xpm2PixelString start="^" end="$" contains=@xpm2Colors syn keyword xpm2Todo TODO FIXME XXX contained syn match xpm2Comment "\!.*$" contains=@Spell,xpm2Todo command -nargs=+ Hi hi def if has("gui_running") || has("termguicolors") && &termguicolors let color = "" let chars = "" let colors = 0 let cpp = 0 let n = 0 let i = 1 while i <= line("$") " scanning all lines let s = getline(i) if match(s,"\!.*$") != -1 let s = matchstr(s, "^[^\!]*") endif if s != "" " does line contain a string? if n == 0 " first string is the Values string " get the 3rd value: colors = number of colors let colors = substitute(s, '\s*\d\+\s\+\d\+\s\+\(\d\+\).*', '\1', '') " get the 4th value: cpp = number of character per pixel let cpp = substitute(s, '\s*\d\+\s\+\d\+\s\+\d\+\s\+\(\d\+\).*', '\1', '') if cpp =~ '[^0-9]' break " if cpp is not made of digits there must be something wrong endif " Highlight the Values string as normal string (no pixel string). " Only when there is no slash, it would terminate the pattern. if s !~ '/' exe 'syn match xpm2Values /' . s . '/' endif hi def link xpm2Values Statement let n = 1 " n = color index elseif n <= colors " string is a color specification " get chars = length string representing the pixels " (first incl. the following whitespace) let chars = substitute(s, '\(.\{'.cpp.'}\s\+\).*', '\1', '') " now get color, first try 'c' key if any (color visual) let color = substitute(s, '.*\sc\s\+\(.\{-}\)\s*\(\(g4\=\|[ms]\)\s.*\)*\s*', '\1', '') if color == s " no 'c' key, try 'g' key (grayscale with more than 4 levels) let color = substitute(s, '.*\sg\s\+\(.\{-}\)\s*\(\(g4\|[ms]\)\s.*\)*\s*', '\1', '') if color == s " next try: 'g4' key (4-level grayscale) let color = substitute(s, '.*\sg4\s\+\(.\{-}\)\s*\([ms]\s.*\)*\s*', '\1', '') if color == s " finally try 'm' key (mono visual) let color = substitute(s, '.*\sm\s\+\(.\{-}\)\s*\(s\s.*\)*\s*', '\1', '') if color == s let color = "" endif endif endif endif " Vim cannot handle RGB codes with more than 6 hex digits if color =~ '#\x\{10,}$' let color = substitute(color, '\(\x\x\)\x\x', '\1', 'g') elseif color =~ '#\x\{7,}$' let color = substitute(color, '\(\x\x\)\x', '\1', 'g') " nor with 3 digits elseif color =~ '#\x\{3}$' let color = substitute(color, '\(\x\)\(\x\)\(\x\)', '0\10\20\3', '') endif " escape meta characters in patterns let s = escape(s, '/\*^$.~[]') let chars = escape(chars, '/\*^$.~[]') " change whitespace to "\s\+" let s = substitute(s, "[ \t][ \t]*", "\\\\s\\\\+", "g") let chars = substitute(chars, "[ \t][ \t]*", "\\\\s\\\\+", "g") " now create syntax items " highlight the color string as normal string (no pixel string) exe 'syn match xpm2Col'.n.'Def /'.s.'/ contains=xpm2Col'.n.'inDef' exe 'hi def link xpm2Col'.n.'Def Constant' " but highlight the first whitespace after chars in its color exe 'syn match xpm2Col'.n.'inDef /^'.chars.'/hs=s+'.(cpp).' contained' exe 'hi def link xpm2Col'.n.'inDef xpm2Color'.n " remove the following whitespace from chars let chars = substitute(chars, '\\s\\+$', '', '') " and create the syntax item contained in the pixel strings exe 'syn match xpm2Color'.n.' /'.chars.'/ contained' exe 'syn cluster xpm2Colors add=xpm2Color'.n " if no color or color = "None" show background if color == "" || substitute(color, '.*', '\L&', '') == 'none' exe 'Hi xpm2Color'.n.' guifg=bg guibg=NONE' elseif color !~ "'" exe 'Hi xpm2Color'.n." guifg='".color."' guibg='".color."'" endif let n = n + 1 else break " no more color string endif endif let i = i + 1 endwhile unlet color chars colors cpp n i s endif " has("gui_running") || has("termguicolors") && &termguicolors " Define the default highlighting. " Only when an item doesn't have highlighting yet " The default highlighting. hi def link xpm2Type Type hi def link xpm2StorageClass StorageClass hi def link xpm2Todo Todo hi def link xpm2Comment Comment hi def link xpm2PixelString String delcommand Hi let b:current_syntax = "xpm2" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8:sw=2:noet: PK!9\Iddvim80/syntax/conaryrecipe.vimnu[" Vim syntax file " Language: Conary Recipe " Maintainer: rPath Inc " Updated: 2007-12-08 if exists("b:current_syntax") finish endif runtime! syntax/python.vim syn keyword conarySFunction mainDir addAction addSource addArchive addPatch syn keyword conarySFunction addRedirect addSvnSnapshot addMercurialSnapshot syn keyword conarySFunction addCvsSnapshot addGitSnapshot addBzrSnapshot syn keyword conaryGFunction add addAll addNewGroup addReference createGroup syn keyword conaryGFunction addNewGroup startGroup remove removeComponents syn keyword conaryGFunction replace setByDefault setDefaultGroup syn keyword conaryGFunction setLabelPath addCopy setSearchPath AddAllFlags syn keyword conaryGFunction GroupRecipe GroupReference TroveCacheWrapper syn keyword conaryGFunction TroveCache buildGroups findTrovesForGroups syn keyword conaryGFunction followRedirect processAddAllDirectives syn keyword conaryGFunction processOneAddAllDirective removeDifferences syn keyword conaryGFunction addTrovesToGroup addCopiedComponents syn keyword conaryGFunction findAllWeakTrovesToRemove checkForRedirects syn keyword conaryGFunction addPackagesForComponents getResolveSource syn keyword conaryGFunction resolveGroupDependencies checkGroupDependencies syn keyword conaryGFunction calcSizeAndCheckHashes findSourcesForGroup syn keyword conaryGFunction addPostInstallScript addPostRollbackScript syn keyword conaryGFunction addPostUpdateScript addPreUpdateScript syn keyword conaryGFunction addTrove moveComponents copyComponents syn keyword conaryGFunction removeItemsAlsoInNewGroup removeItemsAlsoInGroup syn keyword conaryGFunction addResolveSource iterReplaceSpecs syn keyword conaryGFunction setCompatibilityClass getLabelPath syn keyword conaryGFunction getResolveTroveSpecs getSearchFlavor syn keyword conaryGFunction getChildGroups getGroupMap syn keyword conaryBFunction Run Automake Configure ManualConfigure syn keyword conaryBFunction Make MakeParallelSubdir MakeInstall syn keyword conaryBFunction MakePathsInstall CompilePython syn keyword conaryBFunction Ldconfig Desktopfile Environment SetModes syn keyword conaryBFunction Install Copy Move Symlink Link Remove Doc syn keyword conaryBFunction Create MakeDirs disableParallelMake syn keyword conaryBFunction ConsoleHelper Replace SGMLCatalogEntry syn keyword conaryBFunction XInetdService XMLCatalogEntry TestSuite syn keyword conaryBFunction PythonSetup CMake Ant JavaCompile ClassPath syn keyword conaryBFunction JavaDoc IncludeLicense MakeFIFO syn keyword conaryPFunction NonBinariesInBindirs FilesInMandir syn keyword conaryPFunction ImproperlyShared CheckSonames CheckDestDir syn keyword conaryPFunction ComponentSpec PackageSpec syn keyword conaryPFunction Config InitScript GconfSchema SharedLibrary syn keyword conaryPFunction ParseManifest MakeDevices DanglingSymlinks syn keyword conaryPFunction AddModes WarnWriteable IgnoredSetuid syn keyword conaryPFunction Ownership ExcludeDirectories syn keyword conaryPFunction BadFilenames BadInterpreterPaths ByDefault syn keyword conaryPFunction ComponentProvides ComponentRequires Flavor syn keyword conaryPFunction EnforceConfigLogBuildRequirements Group syn keyword conaryPFunction EnforceSonameBuildRequirements InitialContents syn keyword conaryPFunction FilesForDirectories LinkCount syn keyword conaryPFunction MakdeDevices NonMultilibComponent ObsoletePaths syn keyword conaryPFunction NonMultilibDirectories NonUTF8Filenames TagSpec syn keyword conaryPFunction Provides RequireChkconfig Requires TagHandler syn keyword conaryPFunction TagDescription Transient User UtilizeGroup syn keyword conaryPFunction WorldWritableExecutables UtilizeUser syn keyword conaryPFunction WarnWritable Strip CheckDesktopFiles syn keyword conaryPFunction FixDirModes LinkType reportMissingBuildRequires syn keyword conaryPFunction reportErrors FixupManpagePaths FixObsoletePaths syn keyword conaryPFunction NonLSBPaths PythonEggs syn keyword conaryPFunction EnforcePythonBuildRequirements syn keyword conaryPFunction EnforceJavaBuildRequirements syn keyword conaryPFunction EnforceCILBuildRequirements syn keyword conaryPFunction EnforcePerlBuildRequirements syn keyword conaryPFunction EnforceFlagBuildRequirements syn keyword conaryPFunction FixupMultilibPaths ExecutableLibraries syn keyword conaryPFunction NormalizeLibrarySymlinks NormalizeCompression syn keyword conaryPFunction NormalizeManPages NormalizeInfoPages syn keyword conaryPFunction NormalizeInitscriptLocation syn keyword conaryPFunction NormalizeInitscriptContents syn keyword conaryPFunction NormalizeAppDefaults NormalizeInterpreterPaths syn keyword conaryPFunction NormalizePamConfig ReadableDocs syn keyword conaryPFunction WorldWriteableExecutables NormalizePkgConfig syn keyword conaryPFunction EtcConfig InstallBucket SupplementalGroup syn keyword conaryPFunction FixBuilddirSymlink RelativeSymlinks " Most destdirPolicy aren't called from recipes, except for these syn keyword conaryPFunction AutoDoc RemoveNonPackageFiles TestSuiteFiles syn keyword conaryPFunction TestSuiteLinks syn match conaryMacro "%(\w\+)[sd]" contained syn match conaryBadMacro "%(\w*)[^sd]" contained " no final marker syn keyword conaryArches contained x86 x86_64 alpha ia64 ppc ppc64 s390 syn keyword conaryArches contained sparc sparc64 syn keyword conarySubArches contained sse2 3dnow 3dnowext cmov i486 i586 syn keyword conarySubArches contained i686 mmx mmxext nx sse sse2 syn keyword conaryBad RPM_BUILD_ROOT EtcConfig InstallBucket subDir syn keyword conaryBad RPM_OPT_FLAGS subdir syn cluster conaryArchFlags contains=conaryArches,conarySubArches syn match conaryArch "Arch\.[a-z0-9A-Z]\+" contains=conaryArches,conarySubArches syn match conaryArch "Arch\.[a-z0-9A-Z]\+" contains=conaryArches,conarySubArches syn keyword conaryKeywords name buildRequires version clearBuildReqs syn keyword conaryUseFlag contained pcre tcpwrappers gcj gnat selinux pam syn keyword conaryUseFlag contained bootstrap python perl syn keyword conaryUseFlag contained readline gdbm emacs krb builddocs syn keyword conaryUseFlag contained alternatives tcl tk X gtk gnome qt syn keyword conaryUseFlag contained xfce gd ldap sasl pie desktop ssl kde syn keyword conaryUseFlag contained slang netpbm nptl ipv6 buildtests syn keyword conaryUseFlag contained ntpl xen dom0 domU syn match conaryUse "Use\.[a-z0-9A-Z]\+" contains=conaryUseFlag " strings syn region pythonString matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=pythonEscape,conaryMacro,conaryBadMacro syn region pythonString matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=pythonEscape,conaryMacro,conaryBadMacro syn region pythonString matchgroup=Normal start=+[uU]\="""+ end=+"""+ contains=pythonEscape,conaryMacro,conaryBadMacro syn region pythonString matchgroup=Normal start=+[uU]\='''+ end=+'''+ contains=pythonEscape,conaryMacro,conaryBadMacro syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]'+ end=+'+ skip=+\\\\\|\\'+ contains=conaryMacro,conaryBadMacro syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]"+ end=+"+ skip=+\\\\\|\\"+ contains=conaryMacro,conaryBadMacro syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]"""+ end=+"""+ contains=conaryMacro,conaryBadMacro syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]'''+ end=+'''+ contains=conaryMacro,conaryBadMacro hi def link conaryMacro Special hi def link conaryrecipeFunction Function hi def link conaryError Error hi def link conaryBFunction conaryrecipeFunction hi def link conaryGFunction conaryrecipeFunction hi def link conarySFunction Operator hi def link conaryPFunction Typedef hi def link conaryFlags PreCondit hi def link conaryArches Special hi def link conarySubArches Special hi def link conaryBad conaryError hi def link conaryBadMacro conaryError hi def link conaryKeywords Special hi def link conaryUseFlag Typedef let b:current_syntax = "conaryrecipe" PK!Yvim80/syntax/takout.vimnu[" Vim syntax file " Language: TAK2, TAK3, TAK2000 thermal modeling output file " Maintainer: Adrian Nagle, anagle@ball.com " Last Change: 2003 May 11 " Filenames: *.out " URL: http://www.naglenet.org/vim/syntax/takout.vim " MAIN URL: http://www.naglenet.org/vim/ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Ignore case syn case match " Load TAK syntax file runtime! syntax/tak.vim unlet b:current_syntax " " " Begin syntax definitions for tak output files. " " Define keywords for TAK output syn case match syn keyword takoutPos ON SI syn keyword takoutNeg OFF ENG " Define matches for TAK output syn match takoutTitle "TAK III" syn match takoutTitle "Release \d.\d\d" syn match takoutTitle " K & K Associates *Thermal Analysis Kit III *Serial Number \d\d-\d\d\d" syn match takoutFile ": \w*\.TAK"hs=s+2 syn match takoutInteger "T\=[0-9]*\>"ms=s+1 syn match takoutSectionDelim "[-<>]\{4,}" contains=takoutSectionTitle syn match takoutSectionDelim ":\=\.\{4,}:\=" contains=takoutSectionTitle syn match takoutSectionTitle "[-<:] \w[0-9A-Za-z_() ]\+ [->:]"hs=s+1,me=e-1 syn match takoutHeaderDelim "=\{5,}" syn match takoutHeaderDelim "|\{5,}" syn match takoutHeaderDelim "+\{5,}" syn match takoutLabel "Input File:" contains=takoutFile syn match takoutLabel "Begin Solution: Routine" syn match takoutError "<<< Error >>>" " Define the default highlighting " Only when an item doesn't have highlighting yet hi def link takoutPos Statement hi def link takoutNeg PreProc hi def link takoutTitle Type hi def link takoutFile takIncludeFile hi def link takoutInteger takInteger hi def link takoutSectionDelim Delimiter hi def link takoutSectionTitle Exception hi def link takoutHeaderDelim SpecialComment hi def link takoutLabel Identifier hi def link takoutError Error let b:current_syntax = "takout" " vim: ts=8 sw=2 PK!z~!vim80/syntax/pf.vimnu[" pf syntax file " Language: OpenBSD packet filter configuration (pf.conf) " Original Author: Camiel Dobbelaar " Maintainer: Lauri Tirkkonen " Last Change: 2016 Jul 06 if exists("b:current_syntax") finish endif setlocal foldmethod=syntax syn iskeyword @,48-57,_,-,+ syn sync fromstart syn cluster pfNotLS contains=pfTodo,pfVarAssign syn keyword pfCmd anchor antispoof block include match pass queue syn keyword pfCmd queue set table syn match pfCmd /^\s*load\sanchor\>/ syn keyword pfTodo TODO XXX contained syn keyword pfWildAddr all any syn match pfComment /#.*$/ contains=pfTodo syn match pfCont /\\$/ syn match pfErrClose /}/ syn match pfIPv4 /\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ syn match pfIPv6 /[a-fA-F0-9:]*::[a-fA-F0-9:.]*/ syn match pfIPv6 /[a-fA-F0-9:]\+:[a-fA-F0-9:]\+:[a-fA-F0-9:.]\+/ syn match pfNetmask /\/\d\+/ syn match pfNum /[a-zA-Z0-9_:.]\@/ syn match pfVar /$[a-zA-Z][a-zA-Z0-9_]*/ syn match pfVarAssign /^\s*[a-zA-Z][a-zA-Z0-9_]*\s*=/me=e-1 syn region pfFold1 start=/^#\{1}>/ end=/^#\{1,3}>/me=s-1 transparent fold syn region pfFold2 start=/^#\{2}>/ end=/^#\{2,3}>/me=s-1 transparent fold syn region pfFold3 start=/^#\{3}>/ end=/^#\{3}>/me=s-1 transparent fold syn region pfList start=/{/ end=/}/ transparent contains=ALLBUT,pfErrClose,@pfNotLS syn region pfString start=/"/ skip=/\\"/ end=/"/ contains=pfIPv4,pfIPv6,pfNetmask,pfTable,pfVar syn region pfString start=/'/ skip=/\\'/ end=/'/ contains=pfIPv4,pfIPv6,pfNetmask,pfTable,pfVar syn keyword pfService 802-11-iapp Microsoft-SQL-Monitor syn keyword pfService Microsoft-SQL-Server NeXTStep NextStep syn keyword pfService afpovertcp afs3-bos afs3-callback afs3-errors syn keyword pfService afs3-fileserver afs3-kaserver afs3-prserver syn keyword pfService afs3-rmtsys afs3-update afs3-vlserver syn keyword pfService afs3-volser amt-redir-tcp amt-redir-tls syn keyword pfService amt-soap-http amt-soap-https asf-rmcp at-echo syn keyword pfService at-nbp at-rtmp at-zis auth authentication syn keyword pfService bfd-control bfd-echo bftp bgp bgpd biff bootpc syn keyword pfService bootps canna cddb cddbp chargen chat cmd syn keyword pfService cmip-agent cmip-man comsat conference syn keyword pfService conserver courier csnet-ns cso-ns cvspserver syn keyword pfService daap datametrics daytime dhcpd-sync syn keyword pfService dhcpv6-client dhcpv6-server discard domain syn keyword pfService echo efs eklogin ekshell ekshell2 epmap eppc syn keyword pfService exec finger ftp ftp-data git gopher hostname syn keyword pfService hostnames hprop http https hunt hylafax iapp syn keyword pfService icb ident imap imap2 imap3 imaps ingreslock syn keyword pfService ipp iprop ipsec-msft ipsec-nat-t ipx irc syn keyword pfService isakmp iscsi isisd iso-tsap kauth kdc kerberos syn keyword pfService kerberos-adm kerberos-iv kerberos-sec syn keyword pfService kerberos_master kf kip klogin kpasswd kpop syn keyword pfService krb524 krb_prop krbupdate krcmd kreg kshell kx syn keyword pfService l2tp ldap ldaps ldp link login mail mdns syn keyword pfService mdnsresponder microsoft-ds ms-sql-m ms-sql-s syn keyword pfService msa msp mtp mysql name nameserver netbios-dgm syn keyword pfService netbios-ns netbios-ssn netnews netplan netrjs syn keyword pfService netstat netwall newdate nextstep nfs nfsd syn keyword pfService nicname nnsp nntp ntalk ntp null openwebnet syn keyword pfService ospf6d ospfapi ospfd photuris pop2 pop3 pop3pw syn keyword pfService pop3s poppassd portmap postgresql postoffice syn keyword pfService pptp presence printer prospero prospero-np syn keyword pfService puppet pwdgen qotd quote radacct radius syn keyword pfService radius-acct rdp readnews remotefs resource rfb syn keyword pfService rfe rfs rfs_server ripd ripng rje rkinit rlp syn keyword pfService routed router rpc rpcbind rsync rtelnet rtsp syn keyword pfService sa-msg-port sane-port sftp shell sieve silc syn keyword pfService sink sip smtp smtps smux snmp snmp-trap syn keyword pfService snmptrap snpp socks source spamd spamd-cfg syn keyword pfService spamd-sync spooler spop3 ssdp ssh submission syn keyword pfService sunrpc supdup supfiledbg supfilesrv support syn keyword pfService svn svrloc swat syslog syslog-tls systat syn keyword pfService tacacs tacas+ talk tap tcpmux telnet tempo syn keyword pfService tftp time timed timeserver timserver tsap syn keyword pfService ttylink ttytst ub-dns-control ulistserv untp syn keyword pfService usenet users uucp uucp-path uucpd vnc vxlan syn keyword pfService wais webster who whod whois www x400 x400-snd syn keyword pfService xcept xdmcp xmpp-bosh xmpp-client xmpp-server syn keyword pfService z3950 zabbix-agent zabbix-trapper zebra syn keyword pfService zebrasrv hi def link pfCmd Statement hi def link pfComment Comment hi def link pfCont Statement hi def link pfErrClose Error hi def link pfIPv4 Type hi def link pfIPv6 Type hi def link pfNetmask Constant hi def link pfNum Constant hi def link pfService Constant hi def link pfString String hi def link pfTable Identifier hi def link pfTodo Todo hi def link pfVar Identifier hi def link pfVarAssign Identifier hi def link pfWildAddr Type let b:current_syntax = "pf" PK!M֫vim80/syntax/uc.vimnu[" Vim syntax file " Language: UnrealScript " Maintainer: Mark Ferrell " URL: ftp://ftp.chaoticdreams.org/pub/ut/vim/uc.vim " Credits: Based on the java.vim syntax file by Claudio Fleiner " Last change: 2003 May 31 " Please check :help uc.vim for comments on some of the options available. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " some characters that cannot be in a UnrealScript program (outside a string) syn match ucError "[\\@`]" syn match ucError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/" " we define it here so that included files can test for it if !exists("main_syntax") let main_syntax='uc' endif syntax case ignore " keyword definitions syn keyword ucBranch break continue syn keyword ucConditional if else switch syn keyword ucRepeat while for do foreach syn keyword ucBoolean true false syn keyword ucConstant null syn keyword ucOperator new instanceof syn keyword ucType boolean char byte short int long float double syn keyword ucType void Pawn sound state auto exec function ipaddr syn keyword ucType ELightType actor ammo defaultproperties bool syn keyword ucType native noexport var out vector name local string syn keyword ucType event syn keyword ucStatement return syn keyword ucStorageClass static synchronized transient volatile final syn keyword ucMethodDecl synchronized throws " UnrealScript defines classes in sorta fscked up fashion syn match ucClassDecl "^[Cc]lass[\s$]*\S*[\s$]*expands[\s$]*\S*;" contains=ucSpecial,ucSpecialChar,ucClassKeys syn keyword ucClassKeys class expands extends syn match ucExternal "^\#exec.*" contains=ucCommentString,ucNumber syn keyword ucScopeDecl public protected private abstract " UnrealScript Functions syn match ucFuncDef "^.*function\s*[\(]*" contains=ucType,ucStorageClass syn match ucEventDef "^.*event\s*[\(]*" contains=ucType,ucStorageClass syn match ucClassLabel "[a-zA-Z0-9]*\'[a-zA-Z0-9]*\'" contains=ucCharacter syn region ucLabelRegion transparent matchgroup=ucLabel start="\" matchgroup=NONE end=":" contains=ucNumber syn match ucUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=ucLabel syn keyword ucLabel default " The following cluster contains all java groups except the contained ones syn cluster ucTop contains=ucExternal,ucError,ucError,ucBranch,ucLabelRegion,ucLabel,ucConditional,ucRepeat,ucBoolean,ucConstant,ucTypedef,ucOperator,ucType,ucType,ucStatement,ucStorageClass,ucMethodDecl,ucClassDecl,ucClassDecl,ucClassDecl,ucScopeDecl,ucError,ucError2,ucUserLabel,ucClassLabel " Comments syn keyword ucTodo contained TODO FIXME XXX syn region ucCommentString contained start=+"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=ucSpecial,ucCommentStar,ucSpecialChar syn region ucComment2String contained start=+"+ end=+$\|"+ contains=ucSpecial,ucSpecialChar syn match ucCommentCharacter contained "'\\[^']\{1,6\}'" contains=ucSpecialChar syn match ucCommentCharacter contained "'\\''" contains=ucSpecialChar syn match ucCommentCharacter contained "'[^\\]'" syn region ucComment start="/\*" end="\*/" contains=ucCommentString,ucCommentCharacter,ucNumber,ucTodo syn match ucCommentStar contained "^\s*\*[^/]"me=e-1 syn match ucCommentStar contained "^\s*\*$" syn match ucLineComment "//.*" contains=ucComment2String,ucCommentCharacter,ucNumber,ucTodo hi link ucCommentString ucString hi link ucComment2String ucString hi link ucCommentCharacter ucCharacter syn cluster ucTop add=ucComment,ucLineComment " match the special comment /**/ syn match ucComment "/\*\*/" " Strings and constants syn match ucSpecialError contained "\\." "syn match ucSpecialCharError contained "[^']" syn match ucSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" syn region ucString start=+"+ end=+"+ contains=ucSpecialChar,ucSpecialError syn match ucStringError +"\([^"\\]\|\\.\)*$+ syn match ucCharacter "'[^']*'" contains=ucSpecialChar,ucSpecialCharError syn match ucCharacter "'\\''" contains=ucSpecialChar syn match ucCharacter "'[^\\]'" syn match ucNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" syn match ucNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" syn match ucNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" syn match ucNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" " unicode characters syn match ucSpecial "\\u\d\{4\}" syn cluster ucTop add=ucString,ucCharacter,ucNumber,ucSpecial,ucStringError " catch errors caused by wrong parenthesis syn region ucParen transparent start="(" end=")" contains=@ucTop,ucParen syn match ucParenError ")" hi link ucParenError ucError if !exists("uc_minlines") let uc_minlines = 10 endif exec "syn sync ccomment ucComment minlines=" . uc_minlines " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link ucFuncDef Conditional hi def link ucEventDef Conditional hi def link ucBraces Function hi def link ucBranch Conditional hi def link ucLabel Label hi def link ucUserLabel Label hi def link ucConditional Conditional hi def link ucRepeat Repeat hi def link ucStorageClass StorageClass hi def link ucMethodDecl ucStorageClass hi def link ucClassDecl ucStorageClass hi def link ucScopeDecl ucStorageClass hi def link ucBoolean Boolean hi def link ucSpecial Special hi def link ucSpecialError Error hi def link ucSpecialCharError Error hi def link ucString String hi def link ucCharacter Character hi def link ucSpecialChar SpecialChar hi def link ucNumber Number hi def link ucError Error hi def link ucStringError Error hi def link ucStatement Statement hi def link ucOperator Operator hi def link ucOverLoaded Operator hi def link ucComment Comment hi def link ucDocComment Comment hi def link ucLineComment Comment hi def link ucConstant ucBoolean hi def link ucTypedef Typedef hi def link ucTodo Todo hi def link ucCommentTitle SpecialComment hi def link ucDocTags Special hi def link ucDocParam Function hi def link ucCommentStar ucComment hi def link ucType Type hi def link ucExternal Include hi def link ucClassKeys Conditional hi def link ucClassLabel Conditional hi def link htmlComment Special hi def link htmlCommentPart Special let b:current_syntax = "uc" if main_syntax == 'uc' unlet main_syntax endif " vim: ts=8 PK!`uIIvim80/syntax/def.vimnu[" Vim syntax file " Language: Microsoft Module-Definition (.def) File " Orig Author: Rob Brady " Maintainer: Wu Yongwei " Last Change: $Date: 2007/10/02 13:51:24 $ " $Revision: 1.2 $ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore syn match defComment ";.*" syn keyword defKeyword LIBRARY STUB EXETYPE DESCRIPTION CODE WINDOWS DOS syn keyword defKeyword RESIDENTNAME PRIVATE EXPORTS IMPORTS SEGMENTS syn keyword defKeyword HEAPSIZE DATA syn keyword defStorage LOADONCALL MOVEABLE DISCARDABLE SINGLE syn keyword defStorage FIXED PRELOAD syn match defOrdinal "\s\+@\d\+" syn region defString start=+'+ end=+'+ syn match defNumber "\d+" syn match defNumber "0x\x\+" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link defComment Comment hi def link defKeyword Keyword hi def link defStorage StorageClass hi def link defString String hi def link defNumber Number hi def link defOrdinal Operator let b:current_syntax = "def" " vim: ts=8 PK!fL66vim80/syntax/hamster.vimnu[" Vim syntax file " Language: Hamster Scripting Language " Maintainer: David Fishburn " Last Change: Sun Oct 24 2004 7:11:50 PM " Version: 2.0.6.0 " Description: Hamster Classic " Hamster is a local server for news and mail. It's a windows-32-bit-program. " It allows the use of multiple news- and mailserver and combines them to one " mail- and newsserver for the news/mail-client. It load faster than a normal " newsreader because many threads can run simultaneous. It contains scorefile " for news and mail, a build-in script language, the GUI allows translation to " other languages, it can be used in a network and that's not all features... " " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore syn keyword hamsterSpecial abs syn keyword hamsterSpecial artaddheader syn keyword hamsterSpecial artalloc syn keyword hamsterSpecial artdelheader syn keyword hamsterSpecial artfree syn keyword hamsterSpecial artgetbody syn keyword hamsterSpecial artgetheader syn keyword hamsterSpecial artgetheaders syn keyword hamsterSpecial artgettext syn keyword hamsterSpecial artheaderexists syn keyword hamsterSpecial artload syn keyword hamsterSpecial artsave syn keyword hamsterSpecial artsetbody syn keyword hamsterSpecial artsetheader syn keyword hamsterSpecial artsetheaders syn keyword hamsterSpecial artsettext syn keyword hamsterSpecial assert syn keyword hamsterSpecial atadd syn keyword hamsterSpecial atclear syn keyword hamsterSpecial atcount syn keyword hamsterSpecial ateverymins syn keyword hamsterSpecial atexecute syn keyword hamsterSpecial atfrom syn keyword hamsterSpecial atondays syn keyword hamsterSpecial atsubfunction syn keyword hamsterSpecial atuntil syn keyword hamsterSpecial beep syn keyword hamsterSpecial break syn keyword hamsterSpecial chr syn keyword hamsterSpecial clearxcounter syn keyword hamsterSpecial clipread syn keyword hamsterSpecial clipwrite syn keyword hamsterSpecial const syn keyword hamsterSpecial constenum syn keyword hamsterSpecial continue syn keyword hamsterSpecial copy syn keyword hamsterSpecial debug syn keyword hamsterSpecial dec syn keyword hamsterSpecial decodebase64 syn keyword hamsterSpecial decodeqp syn keyword hamsterSpecial decodetime syn keyword hamsterSpecial decxcounter syn keyword hamsterSpecial delete syn keyword hamsterSpecial deletehostsentry syn keyword hamsterSpecial digest syn keyword hamsterSpecial dirchange syn keyword hamsterSpecial dircurrent syn keyword hamsterSpecial direxists syn keyword hamsterSpecial dirmake syn keyword hamsterSpecial dirremove syn keyword hamsterSpecial dirsystem syn keyword hamsterSpecial dirwindows syn keyword hamsterSpecial diskfreekb syn keyword hamsterSpecial dllcall syn keyword hamsterSpecial dllfree syn keyword hamsterSpecial dlllasterror syn keyword hamsterSpecial dllload syn keyword hamsterSpecial dump syn keyword hamsterSpecial encodetime syn keyword hamsterSpecial entercontext syn keyword hamsterSpecial errcatch syn keyword hamsterSpecial errline syn keyword hamsterSpecial errlineno syn keyword hamsterSpecial errmodule syn keyword hamsterSpecial errmsg syn keyword hamsterSpecial errnum syn keyword hamsterSpecial error syn keyword hamsterSpecial errsender syn keyword hamsterSpecial eval syn keyword hamsterSpecial eventclose syn keyword hamsterSpecial eventcreate syn keyword hamsterSpecial eventmultiplewait syn keyword hamsterSpecial eventpulse syn keyword hamsterSpecial eventreset syn keyword hamsterSpecial eventset syn keyword hamsterSpecial eventwait syn keyword hamsterSpecial execute syn keyword hamsterSpecial false syn keyword hamsterSpecial filecopy syn keyword hamsterSpecial filedelete syn keyword hamsterSpecial fileexists syn keyword hamsterSpecial filemove syn keyword hamsterSpecial filerename syn keyword hamsterSpecial filesize syn keyword hamsterSpecial filetime syn keyword hamsterSpecial getenv syn keyword hamsterSpecial getprocessidentifier syn keyword hamsterSpecial getuptimedays syn keyword hamsterSpecial getuptimehours syn keyword hamsterSpecial getuptimemins syn keyword hamsterSpecial getuptimesecs syn keyword hamsterSpecial gosub syn keyword hamsterSpecial goto syn keyword hamsterSpecial hex syn keyword hamsterSpecial icase syn keyword hamsterSpecial iif syn keyword hamsterSpecial inc syn keyword hamsterSpecial incxcounter syn keyword hamsterSpecial inidelete syn keyword hamsterSpecial inierasesection syn keyword hamsterSpecial iniread syn keyword hamsterSpecial iniwrite syn keyword hamsterSpecial inputbox syn keyword hamsterSpecial inputpw syn keyword hamsterSpecial int syn keyword hamsterSpecial isint syn keyword hamsterSpecial isstr syn keyword hamsterSpecial leavecontext syn keyword hamsterSpecial len syn keyword hamsterSpecial listadd syn keyword hamsterSpecial listalloc syn keyword hamsterSpecial listappend syn keyword hamsterSpecial listbox syn keyword hamsterSpecial listclear syn keyword hamsterSpecial listcount syn keyword hamsterSpecial listdelete syn keyword hamsterSpecial listdirs syn keyword hamsterSpecial listexists syn keyword hamsterSpecial listfiles syn keyword hamsterSpecial listfiles syn keyword hamsterSpecial listfree syn keyword hamsterSpecial listget syn keyword hamsterSpecial listgetkey syn keyword hamsterSpecial listgettag syn keyword hamsterSpecial listgettext syn keyword hamsterSpecial listindexof syn keyword hamsterSpecial listinsert syn keyword hamsterSpecial listload syn keyword hamsterSpecial listrasentries syn keyword hamsterSpecial listsave syn keyword hamsterSpecial listset syn keyword hamsterSpecial listsetkey syn keyword hamsterSpecial listsettag syn keyword hamsterSpecial listsettext syn keyword hamsterSpecial listsort syn keyword hamsterSpecial localhostaddr syn keyword hamsterSpecial localhostname syn keyword hamsterSpecial lookuphostaddr syn keyword hamsterSpecial lookuphostname syn keyword hamsterSpecial lowercase syn keyword hamsterSpecial memalloc syn keyword hamsterSpecial memforget syn keyword hamsterSpecial memfree syn keyword hamsterSpecial memgetint syn keyword hamsterSpecial memgetstr syn keyword hamsterSpecial memsetint syn keyword hamsterSpecial memsetstr syn keyword hamsterSpecial memsize syn keyword hamsterSpecial memvarptr syn keyword hamsterSpecial msgbox syn keyword hamsterSpecial ord syn keyword hamsterSpecial paramcount syn keyword hamsterSpecial paramstr syn keyword hamsterSpecial popupbox syn keyword hamsterSpecial pos syn keyword hamsterSpecial print syn keyword hamsterSpecial quit syn keyword hamsterSpecial random syn keyword hamsterSpecial randomize syn keyword hamsterSpecial rasdial syn keyword hamsterSpecial rasgetconnection syn keyword hamsterSpecial rasgetip syn keyword hamsterSpecial rashangup syn keyword hamsterSpecial rasisconnected syn keyword hamsterSpecial re_extract syn keyword hamsterSpecial re_match syn keyword hamsterSpecial re_parse syn keyword hamsterSpecial re_split syn keyword hamsterSpecial replace syn keyword hamsterSpecial return syn keyword hamsterSpecial runscript syn keyword hamsterSpecial scriptpriority syn keyword hamsterSpecial set syn keyword hamsterSpecial sethostsentry_byaddr syn keyword hamsterSpecial sethostsentry_byname syn keyword hamsterSpecial setxcounter syn keyword hamsterSpecial sgn syn keyword hamsterSpecial shell syn keyword hamsterSpecial sleep syn keyword hamsterSpecial stopthread syn keyword hamsterSpecial str syn keyword hamsterSpecial syserrormessage syn keyword hamsterSpecial testmailfilterline syn keyword hamsterSpecial testnewsfilterline syn keyword hamsterSpecial ticks syn keyword hamsterSpecial time syn keyword hamsterSpecial timegmt syn keyword hamsterSpecial trace syn keyword hamsterSpecial trim syn keyword hamsterSpecial true syn keyword hamsterSpecial uppercase syn keyword hamsterSpecial utf7toucs16 syn keyword hamsterSpecial utf8toucs32 syn keyword hamsterSpecial var syn keyword hamsterSpecial varset syn keyword hamsterSpecial warning syn keyword hamsterSpecial xcounter " common functions syn keyword hamsterFunction addlog syn keyword hamsterFunction decodemimeheaderstring syn keyword hamsterFunction decodetolocalcharset syn keyword hamsterFunction gettasksactive syn keyword hamsterFunction gettasksrun syn keyword hamsterFunction gettaskswait syn keyword hamsterFunction hamaddgroup syn keyword hamsterFunction hamaddlog syn keyword hamsterFunction hamaddpull syn keyword hamsterFunction hamartcount syn keyword hamsterFunction hamartdeletemid syn keyword hamsterFunction hamartdeletemidingroup syn keyword hamsterFunction hamartdeletenringroup syn keyword hamsterFunction hamartimport syn keyword hamsterFunction hamartlocatemid syn keyword hamsterFunction hamartlocatemidingroup syn keyword hamsterFunction hamartnomax syn keyword hamsterFunction hamartnomin syn keyword hamsterFunction hamarttext syn keyword hamsterFunction hamarttextexport syn keyword hamsterFunction hamchangepassword syn keyword hamsterFunction hamcheckpurge syn keyword hamsterFunction hamdelgroup syn keyword hamsterFunction hamdelpull syn keyword hamsterFunction hamdialogaddpull syn keyword hamsterFunction hamdialogeditdirs syn keyword hamsterFunction hamdialogmailkillfilelog syn keyword hamsterFunction hamdialognewskillfilelog syn keyword hamsterFunction hamdialogscripts syn keyword hamsterFunction hamenvelopefrom syn keyword hamsterFunction hamexepath syn keyword hamsterFunction hamfetchmail syn keyword hamsterFunction hamflush syn keyword hamsterFunction hamgetstatus syn keyword hamsterFunction hamgroupclose syn keyword hamsterFunction hamgroupcount syn keyword hamsterFunction hamgroupindex syn keyword hamsterFunction hamgroupname syn keyword hamsterFunction hamgroupnamebyhandle syn keyword hamsterFunction hamgroupopen syn keyword hamsterFunction hamgroupspath syn keyword hamsterFunction hamhscpath syn keyword hamsterFunction hamhsmpath syn keyword hamsterFunction hamimapserver syn keyword hamsterFunction hamisidle syn keyword hamsterFunction hamlogspath syn keyword hamsterFunction hammailexchange syn keyword hamsterFunction hammailpath syn keyword hamsterFunction hammailsoutpath syn keyword hamsterFunction hammainfqdn syn keyword hamsterFunction hammainwindow syn keyword hamsterFunction hammessage syn keyword hamsterFunction hammidfqdn syn keyword hamsterFunction hamnewmail syn keyword hamsterFunction hamnewserrpath syn keyword hamsterFunction hamnewsjobsadd syn keyword hamsterFunction hamnewsjobscheckactive syn keyword hamsterFunction hamnewsjobsclear syn keyword hamsterFunction hamnewsjobsdelete syn keyword hamsterFunction hamnewsjobsfeed syn keyword hamsterFunction hamnewsjobsgetcounter syn keyword hamsterFunction hamnewsjobsgetparam syn keyword hamsterFunction hamnewsjobsgetpriority syn keyword hamsterFunction hamnewsjobsgetserver syn keyword hamsterFunction hamnewsjobsgettype syn keyword hamsterFunction hamnewsjobspost syn keyword hamsterFunction hamnewsjobspostdef syn keyword hamsterFunction hamnewsjobspull syn keyword hamsterFunction hamnewsjobspulldef syn keyword hamsterFunction hamnewsjobssetpriority syn keyword hamsterFunction hamnewsjobsstart syn keyword hamsterFunction hamnewsoutpath syn keyword hamsterFunction hamnewspost syn keyword hamsterFunction hamnewspull syn keyword hamsterFunction hamnntpserver syn keyword hamsterFunction hampassreload syn keyword hamsterFunction hampath syn keyword hamsterFunction hampop3server syn keyword hamsterFunction hampostmaster syn keyword hamsterFunction hampurge syn keyword hamsterFunction hamrasdial syn keyword hamsterFunction hamrashangup syn keyword hamsterFunction hamrcpath syn keyword hamsterFunction hamrebuildgloballists syn keyword hamsterFunction hamrebuildhistory syn keyword hamsterFunction hamrecoserver syn keyword hamsterFunction hamreloadconfig syn keyword hamsterFunction hamreloadipaccess syn keyword hamsterFunction hamresetcounters syn keyword hamsterFunction hamrotatelog syn keyword hamsterFunction hamscorelist syn keyword hamsterFunction hamscoretest syn keyword hamsterFunction hamsendmail syn keyword hamsterFunction hamsendmailauth syn keyword hamsterFunction hamserverpath syn keyword hamsterFunction hamsetlogin syn keyword hamsterFunction hamshutdown syn keyword hamsterFunction hamsmtpserver syn keyword hamsterFunction hamstopalltasks syn keyword hamsterFunction hamthreadcount syn keyword hamsterFunction hamtrayicon syn keyword hamsterFunction hamusenetacc syn keyword hamsterFunction hamversion syn keyword hamsterFunction hamwaitidle syn keyword hamsterFunction raslasterror syn keyword hamsterFunction rfctimezone syn keyword hamsterFunction settasklimiter syn keyword hamsterStatement if syn keyword hamsterStatement else syn keyword hamsterStatement elseif syn keyword hamsterStatement endif syn keyword hamsterStatement do syn keyword hamsterStatement loop syn keyword hamsterStatement while syn keyword hamsterStatement endwhile syn keyword hamsterStatement repeat syn keyword hamsterStatement until syn keyword hamsterStatement for syn keyword hamsterStatement endfor syn keyword hamsterStatement sub syn keyword hamsterStatement endsub syn keyword hamsterStatement label " Strings and characters: syn region hamsterString start=+"+ end=+"+ contains=@Spell syn region hamsterString start=+'+ end=+'+ contains=@Spell " Numbers: syn match hamsterNumber "-\=\<\d*\.\=[0-9_]\>" " Comments: syn region hamsterHashComment start=/#/ end=/$/ contains=@Spell syn cluster hamsterComment contains=hamsterHashComment syn sync ccomment hamsterHashComment " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link hamsterHashComment Comment hi def link hamsterSpecial Special hi def link hamsterStatement Statement hi def link hamsterString String hi def link hamsterFunction Function let b:current_syntax = "hamster" " vim:sw=4 PK!8h--vim80/syntax/rcslog.vimnu[" Vim syntax file " Language: RCS log output " Maintainer: Joe Karthauser " Last Change: 2001 May 09 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn match rcslogRevision "^revision.*$" syn match rcslogFile "^RCS file:.*" syn match rcslogDate "^date: .*$" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link rcslogFile Type hi def link rcslogRevision Constant hi def link rcslogDate Identifier let b:current_syntax = "rcslog" " vim: ts=8 PK!['C/C/vim80/syntax/lscript.vimnu[" Vim syntax file " Language: LotusScript " Maintainer: Taryn East (taryneast@hotmail.com) " Last Change: 2003 May 11 " This is a rough amalgamation of the visual basic syntax file, and the UltraEdit " and Textpad syntax highlighters. " It's not too brilliant given that a) I've never written a syntax.vim file before " and b) I'm not so crash hot at LotusScript either. If you see any problems " feel free to email me with them. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " LotusScript is case insensitive syn case ignore " These are Notes thingies that had an equivalent in the vb highlighter " or I was already familiar with them syn keyword lscriptStatement ActivateApp As And Base Beep Call Case ChDir ChDrive Class syn keyword lscriptStatement Const Dim Declare DefCur DefDbl DefInt DefLng DefSng DefStr syn keyword lscriptStatement DefVar Do Else %Else ElseIf %ElseIf End %End Erase Event Exit syn keyword lscriptStatement Explicit FileCopy FALSE For ForAll Function Get GoTo GoSub syn keyword lscriptStatement If %If In Is Kill Let List Lock Loop MkDir syn keyword lscriptStatement Name Next New NoCase NoPitch Not Nothing NULL syn keyword lscriptStatement On Option Or PI Pitch Preserve Private Public syn keyword lscriptStatement Property Public Put syn keyword lscriptStatement Randomize ReDim Reset Resume Return RmDir syn keyword lscriptStatement Select SendKeys SetFileAttr Set Static Sub Then To TRUE syn keyword lscriptStatement Type Unlock Until While WEnd With Write XOr syn keyword lscriptDatatype Array Currency Double Integer Long Single String String$ Variant syn keyword lscriptNotesType Field Button Navigator syn keyword lscriptNotesType NotesACL NotesACLEntry NotesAgent NotesDatabase NotesDateRange syn keyword lscriptNotesType NotesDateTime NotesDbDirectory NotesDocument syn keyword lscriptNotesType NotesDocumentCollection NotesEmbeddedObject NotesForm syn keyword lscriptNotesType NotesInternational NotesItem NotesLog NotesName NotesNewsLetter syn keyword lscriptNotesType NotesMIMEEntry NotesOutline NotesOutlineEntry NotesRegistration syn keyword lscriptNotesType NotesReplication NotesRichTextItem NotesRichTextParagraphStyle syn keyword lscriptNotesType NotesRichTextStyle NotesRichTextTab syn keyword lscriptNotesType NotesSession NotesTimer NotesView NotesViewColumn NotesViewEntry syn keyword lscriptNotesType NotesViewEntryCollection NotesViewNavigator NotesUIDatabase syn keyword lscriptNotesType NotesUIDocument NotesUIView NotesUIWorkspace syn keyword lscriptNotesConst ACLLEVEL_AUTHOR ACLLEVEL_DEPOSITOR ACLLEVEL_DESIGNER syn keyword lscriptNotesConst ACLLEVEL_EDITOR ACLLEVEL_MANAGER ACLLEVEL_NOACCESS syn keyword lscriptNotesConst ACLLEVEL_READER ACLTYPE_MIXED_GROUP ACLTYPE_PERSON syn keyword lscriptNotesConst ACLTYPE_PERSON_GROUP ACLTYPE_SERVER ACLTYPE_SERVER_GROUP syn keyword lscriptNotesConst ACLTYPE_UNSPECIFIED ACTIONCD ALIGN_CENTER syn keyword lscriptNotesConst ALIGN_FULL ALIGN_LEFT ALIGN_NOWRAP ALIGN_RIGHT syn keyword lscriptNotesConst ASSISTANTINFO ATTACHMENT AUTHORS COLOR_BLACK syn keyword lscriptNotesConst COLOR_BLUE COLOR_CYAN COLOR_DARK_BLUE COLOR_DARK_CYAN syn keyword lscriptNotesConst COLOR_DARK_GREEN COLOR_DARK_MAGENTA COLOR_DARK_RED syn keyword lscriptNotesConst COLOR_DARK_YELLOW COLOR_GRAY COLOR_GREEN COLOR_LIGHT_GRAY syn keyword lscriptNotesConst COLOR_MAGENTA COLOR_RED COLOR_WHITE COLOR_YELLOW syn keyword lscriptNotesConst DATABASE DATETIMES DB_REPLICATION_PRIORITY_HIGH syn keyword lscriptNotesConst DB_REPLICATION_PRIORITY_LOW DB_REPLICATION_PRIORITY_MED syn keyword lscriptNotesConst DB_REPLICATION_PRIORITY_NOTSET EFFECTS_EMBOSS syn keyword lscriptNotesConst EFFECTS_EXTRUDE EFFECTS_NONE EFFECTS_SHADOW syn keyword lscriptNotesConst EFFECTS_SUBSCRIPT EFFECTS_SUPERSCRIPT EMBED_ATTACHMENT syn keyword lscriptNotesConst EMBED_OBJECT EMBED_OBJECTLINK EMBEDDEDOBJECT ERRORITEM syn keyword lscriptNotesConst EV_ALARM EV_COMM EV_MAIL EV_MISC EV_REPLICA EV_RESOURCE syn keyword lscriptNotesConst EV_SECURITY EV_SERVER EV_UNKNOWN EV_UPDATE FONT_COURIER syn keyword lscriptNotesConst FONT_HELV FONT_ROMAN FORMULA FT_DATABASE FT_DATE_ASC syn keyword lscriptNotesConst FT_DATE_DES FT_FILESYSTEM FT_FUZZY FT_SCORES FT_STEMS syn keyword lscriptNotesConst FT_THESAURUS HTML ICON ID_CERTIFIER ID_FLAT syn keyword lscriptNotesConst ID_HIERARCHICAL LSOBJECT MIME_PART NAMES NOTESLINKS syn keyword lscriptNotesConst NOTEREFS NOTES_DESKTOP_CLIENT NOTES_FULL_CLIENT syn keyword lscriptNotesConst NOTES_LIMITED_CLIENT NUMBERS OTHEROBJECT syn keyword lscriptNotesConst OUTLINE_CLASS_DATABASE OUTLINE_CLASS_DOCUMENT syn keyword lscriptNotesConst OUTLINE_CLASS_FOLDER OUTLINE_CLASS_FORM syn keyword lscriptNotesConst OUTLINE_CLASS_FRAMESET OUTLINE_CLASS_NAVIGATOR syn keyword lscriptNotesConst OUTLINE_CLASS_PAGE OUTLINE_CLASS_UNKNOWN syn keyword lscriptNotesConst OUTLINE_CLASS_VIEW OUTLINE_OTHER_FOLDERS_TYPE syn keyword lscriptNotesConst OUTLINE_OTHER_UNKNOWN_TYPE OUTLINE_OTHER_VIEWS_TYPE syn keyword lscriptNotesConst OUTLINE_TYPE_ACTION OUTLINE_TYPE_NAMEDELEMENT syn keyword lscriptNotesConst OUTLINE_TYPE_NOTELINK OUTLINE_TYPE_URL PAGINATE_BEFORE syn keyword lscriptNotesConst PAGINATE_DEFAULT PAGINATE_KEEP_TOGETHER syn keyword lscriptNotesConst PAGINATE_KEEP_WITH_NEXT PICKLIST_CUSTOM PICKLIST_NAMES syn keyword lscriptNotesConst PICKLIST_RESOURCES PICKLIST_ROOMS PROMPT_OK PROMPT_OKCANCELCOMBO syn keyword lscriptNotesConst PROMPT_OKCANCELEDIT PROMPT_OKCANCELEDITCOMBO PROMPT_OKCANCELLIST syn keyword lscriptNotesConst PROMPT_OKCANCELLISTMULT PROMPT_PASSWORD PROMPT_YESNO syn keyword lscriptNotesConst PROMPT_YESNOCANCEL QUERYCD READERS REPLICA_CANDIDATE syn keyword lscriptNotesConst RICHTEXT RULER_ONE_CENTIMETER RULER_ONE_INCH SEV_FAILURE syn keyword lscriptNotesConst SEV_FATAL SEV_NORMAL SEV_WARNING1 SEV_WARNING2 syn keyword lscriptNotesConst SIGNATURE SPACING_DOUBLE SPACING_ONE_POINT_50 syn keyword lscriptNotesConst SPACING_SINGLE STYLE_NO_CHANGE TAB_CENTER TAB_DECIMAL syn keyword lscriptNotesConst TAB_LEFT TAB_RIGHT TARGET_ALL_DOCS TARGET_ALL_DOCS_IN_VIEW syn keyword lscriptNotesConst TARGET_NEW_DOCS TARGET_NEW_OR_MODIFIED_DOCS TARGET_NONE syn keyword lscriptNotesConst TARGET_RUN_ONCE TARGET_SELECTED_DOCS TARGET_UNREAD_DOCS_IN_VIEW syn keyword lscriptNotesConst TEMPLATE TEMPLATE_CANDIDATE TEXT TRIGGER_AFTER_MAIL_DELIVERY syn keyword lscriptNotesConst TRIGGER_BEFORE_MAIL_DELIVERY TRIGGER_DOC_PASTED syn keyword lscriptNotesConst TRIGGER_DOC_UPDATE TRIGGER_MANUAL TRIGGER_NONE syn keyword lscriptNotesConst TRIGGER_SCHEDULED UNAVAILABLE UNKNOWN USERDATA syn keyword lscriptNotesConst USERID VC_ALIGN_CENTER VC_ALIGN_LEFT VC_ALIGN_RIGHT syn keyword lscriptNotesConst VC_ATTR_PARENS VC_ATTR_PUNCTUATED VC_ATTR_PERCENT syn keyword lscriptNotesConst VC_FMT_ALWAYS VC_FMT_CURRENCY VC_FMT_DATE VC_FMT_DATETIME syn keyword lscriptNotesConst VC_FMT_FIXED VC_FMT_GENERAL VC_FMT_HM VC_FMT_HMS syn keyword lscriptNotesConst VC_FMT_MD VC_FMT_NEVER VC_FMT_SCIENTIFIC syn keyword lscriptNotesConst VC_FMT_SOMETIMES VC_FMT_TIME VC_FMT_TODAYTIME VC_FMT_YM syn keyword lscriptNotesConst VC_FMT_YMD VC_FMT_Y4M VC_FONT_BOLD VC_FONT_ITALIC syn keyword lscriptNotesConst VC_FONT_STRIKEOUT VC_FONT_UNDERLINE VC_SEP_COMMA syn keyword lscriptNotesConst VC_SEP_NEWLINE VC_SEP_SEMICOLON VC_SEP_SPACE syn keyword lscriptNotesConst VIEWMAPDATA VIEWMAPLAYOUT VW_SPACING_DOUBLE syn keyword lscriptNotesConst VW_SPACING_ONE_POINT_25 VW_SPACING_ONE_POINT_50 syn keyword lscriptNotesConst VW_SPACING_ONE_POINT_75 VW_SPACING_SINGLE syn keyword lscriptFunction Abs Asc Atn Atn2 ACos ASin syn keyword lscriptFunction CCur CDat CDbl Chr Chr$ CInt CLng Command Command$ syn keyword lscriptFunction Cos CSng CStr syn keyword lscriptFunction CurDir CurDir$ CVar Date Date$ DateNumber DateSerial DateValue syn keyword lscriptFunction Day Dir Dir$ Environ$ Environ EOF Error Error$ Evaluate Exp syn keyword lscriptFunction FileAttr FileDateTime FileLen Fix Format Format$ FreeFile syn keyword lscriptFunction GetFileAttr GetThreadInfo Hex Hex$ Hour syn keyword lscriptFunction IMESetMode IMEStatus Input Input$ InputB InputB$ syn keyword lscriptFunction InputBP InputBP$ InputBox InputBox$ InStr InStrB InStrBP InstrC syn keyword lscriptFunction IsA IsArray IsDate IsElement IsList IsNumeric syn keyword lscriptFunction IsObject IsResponse IsScalar IsUnknown LCase LCase$ syn keyword lscriptFunction Left Left$ LeftB LeftB$ LeftC syn keyword lscriptFunction LeftBP LeftBP$ Len LenB LenBP LenC Loc LOF Log syn keyword lscriptFunction LSet LTrim LTrim$ MessageBox Mid Mid$ MidB MidB$ MidC syn keyword lscriptFunction Minute Month Now Oct Oct$ Responses Right Right$ syn keyword lscriptFunction RightB RightB$ RightBP RightBP$ RightC Round Rnd RSet RTrim RTrim$ syn keyword lscriptFunction Second Seek Sgn Shell Sin Sleep Space Space$ Spc Sqr Str Str$ syn keyword lscriptFunction StrConv StrLeft StrleftBack StrRight StrRightBack syn keyword lscriptFunction StrCompare Tab Tan Time Time$ TimeNumber Timer syn keyword lscriptFunction TimeValue Trim Trim$ Today TypeName UCase UCase$ syn keyword lscriptFunction UniversalID Val Weekday Year syn keyword lscriptMethods AppendToTextList ArrayAppend ArrayReplace ArrayGetIndex syn keyword lscriptMethods Append Bind Close "syn keyword lscriptMethods Contains syn keyword lscriptMethods CopyToDatabase CopyAllItems Count CurrentDatabase Delete Execute syn keyword lscriptMethods GetAllDocumentsByKey GetDatabase GetDocumentByKey syn keyword lscriptMethods GetDocumentByUNID GetFirstDocument GetFirstItem syn keyword lscriptMethods GetItems GetItemValue GetNthDocument GetView syn keyword lscriptMethods IsEmpty IsNull %Include Items syn keyword lscriptMethods Line LBound LoadMsgText Open Print syn keyword lscriptMethods RaiseEvent ReplaceItemValue Remove RemoveItem Responses syn keyword lscriptMethods Save Stop UBound UnprocessedDocuments Write syn keyword lscriptEvents Compare OnError "************************************************************************************* "These are Notes thingies that I'm not sure how to classify as they had no vb equivalent " At a wild guess I'd put them as Functions... " if anyone sees something really out of place... tell me! syn keyword lscriptFunction Access Alias Any Bin Bin$ Binary ByVal syn keyword lscriptFunction CodeLock CodeLockCheck CodeUnlock CreateLock syn keyword lscriptFunction CurDrive CurDrive$ DataType DestroyLock Eqv syn keyword lscriptFunction Erl Err Fraction From FromFunction FullTrim syn keyword lscriptFunction Imp Int Lib Like ListTag LMBCS LSServer Me syn keyword lscriptFunction Mod MsgDescription MsgText Output Published syn keyword lscriptFunction Random Read Shared Step UChr UChr$ Uni Unicode syn keyword lscriptFunction Until Use UseLSX UString UString$ Width Yield syn keyword lscriptTodo contained TODO "integer number, or floating point number without a dot. syn match lscriptNumber "\<\d\+\>" "floating point number, with dot syn match lscriptNumber "\<\d\+\.\d*\>" "floating point number, starting with a dot syn match lscriptNumber "\.\d\+\>" " String and Character constants syn region lscriptString start=+"+ end=+"+ syn region lscriptComment start="REM" end="$" contains=lscriptTodo syn region lscriptComment start="'" end="$" contains=lscriptTodo syn region lscriptLineNumber start="^\d" end="\s" syn match lscriptTypeSpecifier "[a-zA-Z0-9][\$%&!#]"ms=s+1 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi lscriptNotesType term=underline ctermfg=DarkGreen guifg=SeaGreen gui=bold hi def link lscriptNotesConst lscriptNotesType hi def link lscriptLineNumber Comment hi def link lscriptDatatype Type hi def link lscriptNumber Number hi def link lscriptError Error hi def link lscriptStatement Statement hi def link lscriptString String hi def link lscriptComment Comment hi def link lscriptTodo Todo hi def link lscriptFunction Identifier hi def link lscriptMethods PreProc hi def link lscriptEvents Special hi def link lscriptTypeSpecifier Type let b:current_syntax = "lscript" " vim: ts=8 PK!?|)|)vim80/syntax/nanorc.vimnu[" Vim syntax file " Language: nanorc(5) - GNU nano configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword nanorcTodo contained TODO FIXME XXX NOTE syn region nanorcComment display oneline start='^\s*#' end='$' \ contains=nanorcTodo,@Spell syn match nanorcBegin display '^' \ nextgroup=nanorcKeyword,nanorcComment \ skipwhite syn keyword nanorcKeyword contained set unset \ nextgroup=nanorcBoolOption, \ nanorcStringOption,nanorcNumberOption \ skipwhite syn keyword nanorcKeyword contained syntax \ nextgroup=nanorcSynGroupName skipwhite syn keyword nanorcKeyword contained color \ nextgroup=@nanorcFGColor skipwhite syn keyword nanorcBoolOption contained autoindent backup const cut \ historylog morespace mouse multibuffer \ noconvert nofollow nohelp nowrap preserve \ rebinddelete regexp smarthome smooth suspend \ tempfile view syn keyword nanorcStringOption contained backupdir brackets operatingdir \ punct quotestr speller whitespace \ nextgroup=nanorcString skipwhite syn keyword nanorcNumberOption contained fill tabsize \ nextgroup=nanorcNumber skipwhite syn region nanorcSynGroupName contained display oneline start=+"+ \ end=+"\ze\%([[:blank:]]\|$\)+ \ nextgroup=nanorcRegexes skipwhite syn match nanorcString contained display '".*"' syn region nanorcRegexes contained display oneline start=+"+ \ end=+"\ze\%([[:blank:]]\|$\)+ \ nextgroup=nanorcRegexes skipwhite syn match nanorcNumber contained display '[+-]\=\<\d\+\>' syn cluster nanorcFGColor contains=nanorcFGWhite,nanorcFGBlack, \ nanorcFGRed,nanorcFGBlue,nanorcFGGreen, \ nanorcFGYellow,nanorcFGMagenta,nanorcFGCyan, \ nanorcFGBWhite,nanorcFGBBlack,nanorcFGBRed, \ nanorcFGBBlue,nanorcFGBGreen,nanorcFGBYellow, \ nanorcFGBMagenta,nanorcFGBCyan syn keyword nanorcFGWhite contained white \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBlack contained black \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGRed contained red \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBlue contained blue \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGGreen contained green \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGYellow contained yellow \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGMagenta contained magenta \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGCyan contained cyan \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBWhite contained brightwhite \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBBlack contained brightblack \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBRed contained brightred \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBBlue contained brightblue \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBGreen contained brightgreen \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBYellow contained brightyellow \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBMagenta contained brightmagenta \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBCyan contained brightcyan \ nextgroup=@nanorcFGSpec skipwhite syn cluster nanorcBGColor contains=nanorcBGWhite,nanorcBGBlack, \ nanorcBGRed,nanorcBGBlue,nanorcBGGreen, \ nanorcBGYellow,nanorcBGMagenta,nanorcBGCyan, \ nanorcBGBWhite,nanorcBGBBlack,nanorcBGBRed, \ nanorcBGBBlue,nanorcBGBGreen,nanorcBGBYellow, \ nanorcBGBMagenta,nanorcBGBCyan syn keyword nanorcBGWhite contained white \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBlack contained black \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGRed contained red \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBlue contained blue \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGGreen contained green \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGYellow contained yellow \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGMagenta contained magenta \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGCyan contained cyan \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBWhite contained brightwhite \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBBlack contained brightblack \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBRed contained brightred \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBBlue contained brightblue \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBGreen contained brightgreen \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBYellow contained brightyellow \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBMagenta contained brightmagenta \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBCyan contained brightcyan \ nextgroup=@nanorcBGSpec skipwhite syn match nanorcBGColorSep contained ',' nextgroup=@nanorcBGColor syn cluster nanorcFGSpec contains=nanorcBGColorSep,nanorcRegexes, \ nanorcStartRegion syn cluster nanorcBGSpec contains=nanorcRegexes,nanorcStartRegion syn keyword nanorcStartRegion contained start nextgroup=nanorcStartRegionEq syn match nanorcStartRegionEq contained '=' nextgroup=nanorcRegion syn region nanorcRegion contained display oneline start=+"+ \ end=+"\ze\%([[:blank:]]\|$\)+ \ nextgroup=nanorcEndRegion skipwhite syn keyword nanorcEndRegion contained end nextgroup=nanorcStartRegionEq syn match nanorcEndRegionEq contained '=' nextgroup=nanorcRegex syn region nanorcRegex contained display oneline start=+"+ \ end=+"\ze\%([[:blank:]]\|$\)+ hi def link nanorcTodo Todo hi def link nanorcComment Comment hi def link nanorcKeyword Keyword hi def link nanorcBoolOption Identifier hi def link nanorcStringOption Identifier hi def link nanorcNumberOption Identifier hi def link nanorcSynGroupName String hi def link nanorcString String hi def link nanorcRegexes nanorcString hi def link nanorcNumber Number hi def nanorcFGWhite ctermfg=Gray guifg=Gray hi def nanorcFGBlack ctermfg=Black guifg=Black hi def nanorcFGRed ctermfg=DarkRed guifg=DarkRed hi def nanorcFGBlue ctermfg=DarkBlue guifg=DarkBlue hi def nanorcFGGreen ctermfg=DarkGreen guifg=DarkGreen hi def nanorcFGYellow ctermfg=Brown guifg=Brown hi def nanorcFGMagenta ctermfg=DarkMagenta guifg=DarkMagenta hi def nanorcFGCyan ctermfg=DarkCyan guifg=DarkCyan hi def nanorcFGBWhite ctermfg=White guifg=White hi def nanorcFGBBlack ctermfg=DarkGray guifg=DarkGray hi def nanorcFGBRed ctermfg=Red guifg=Red hi def nanorcFGBBlue ctermfg=Blue guifg=Blue hi def nanorcFGBGreen ctermfg=Green guifg=Green hi def nanorcFGBYellow ctermfg=Yellow guifg=Yellow hi def nanorcFGBMagenta ctermfg=Magenta guifg=Magenta hi def nanorcFGBCyan ctermfg=Cyan guifg=Cyan hi def link nanorcBGColorSep Normal hi def nanorcBGWhite ctermbg=Gray guibg=Gray hi def nanorcBGBlack ctermbg=Black guibg=Black hi def nanorcBGRed ctermbg=DarkRed guibg=DarkRed hi def nanorcBGBlue ctermbg=DarkBlue guibg=DarkBlue hi def nanorcBGGreen ctermbg=DarkGreen guibg=DarkGreen hi def nanorcBGYellow ctermbg=Brown guibg=Brown hi def nanorcBGMagenta ctermbg=DarkMagenta guibg=DarkMagenta hi def nanorcBGCyan ctermbg=DarkCyan guibg=DarkCyan hi def nanorcBGBWhite ctermbg=White guibg=White hi def nanorcBGBBlack ctermbg=DarkGray guibg=DarkGray hi def nanorcBGBRed ctermbg=Red guibg=Red hi def nanorcBGBBlue ctermbg=Blue guibg=Blue hi def nanorcBGBGreen ctermbg=Green guibg=Green hi def nanorcBGBYellow ctermbg=Yellow guibg=Yellow hi def nanorcBGBMagenta ctermbg=Magenta guibg=Magenta hi def nanorcBGBCyan ctermbg=Cyan guibg=Cyan hi def link nanorcStartRegion Type hi def link nanorcStartRegionEq Operator hi def link nanorcRegion nanorcString hi def link nanorcEndRegion Type hi def link nanorcEndRegionEq Operator hi def link nanorcRegex nanoRegexes let b:current_syntax = "nanorc" let &cpo = s:cpo_save unlet s:cpo_save PK!D)UUvim80/syntax/rcs.vimnu[" Vim syntax file " Language: RCS file " Maintainer: Dmitry Vasiliev " URL: https://github.com/hdima/vim-scripts/blob/master/syntax/rcs.vim " Last Change: 2012-02-11 " Filenames: *,v " Version: 1.12 " Options: " rcs_folding = 1 For folding strings " quit when a syntax file was already loaded. if exists("b:current_syntax") finish endif " RCS file must end with a newline. syn match rcsEOFError ".\%$" containedin=ALL " Keywords. syn keyword rcsKeyword head branch access symbols locks strict syn keyword rcsKeyword comment expand date author state branches syn keyword rcsKeyword next desc log syn keyword rcsKeyword text nextgroup=rcsTextStr skipwhite skipempty " Revision numbers and dates. syn match rcsNumber "\<[0-9.]\+\>" display " Strings. if exists("rcs_folding") && has("folding") " Folded strings. syn region rcsString matchgroup=rcsString start="@" end="@" skip="@@" fold contains=rcsSpecial syn region rcsTextStr matchgroup=rcsTextStr start="@" end="@" skip="@@" fold contained contains=rcsSpecial,rcsDiffLines else syn region rcsString matchgroup=rcsString start="@" end="@" skip="@@" contains=rcsSpecial syn region rcsTextStr matchgroup=rcsTextStr start="@" end="@" skip="@@" contained contains=rcsSpecial,rcsDiffLines endif syn match rcsSpecial "@@" contained syn match rcsDiffLines "[da]\d\+ \d\+$" contained " Synchronization. syn sync clear if exists("rcs_folding") && has("folding") syn sync fromstart else " We have incorrect folding if following sync patterns is turned on. syn sync match rcsSync grouphere rcsString "[0-9.]\+\(\s\|\n\)\+log\(\s\|\n\)\+@"me=e-1 syn sync match rcsSync grouphere rcsTextStr "@\(\s\|\n\)\+text\(\s\|\n\)\+@"me=e-1 endif " Define the default highlighting. " Only when an item doesn't have highlighting yet. hi def link rcsKeyword Keyword hi def link rcsNumber Identifier hi def link rcsString String hi def link rcsTextStr String hi def link rcsSpecial Special hi def link rcsDiffLines Special hi def link rcsEOFError Error let b:current_syntax = "rcs" PK!jP"S)S)vim80/syntax/sshconfig.vimnu[" Vim syntax file " Language: OpenSSH client configuration file (ssh_config) " Author: David Necas (Yeti) " Maintainer: Dominik Fischer " Contributor: Leonard Ehrenfried " Contributor: Karsten Hopp " Contributor: Dean, Adam Kenneth " Last Change: 2016 Dec 28 " SSH Version: 7.4p1 " " Setup " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif setlocal iskeyword=_,-,a-z,A-Z,48-57 " case on syn case match " Comments syn match sshconfigComment "^#.*$" contains=sshconfigTodo syn match sshconfigComment "\s#.*$" contains=sshconfigTodo syn keyword sshconfigTodo TODO FIXME NOTE contained " Constants syn keyword sshconfigYesNo yes no ask confirm syn keyword sshconfigYesNo any auto syn keyword sshconfigYesNo force autoask none syn keyword sshconfigCipher 3des blowfish syn keyword sshconfigCiphers 3des-cbc syn keyword sshconfigCiphers blowfish-cbc syn keyword sshconfigCiphers cast128-cbc syn keyword sshconfigCiphers arcfour syn keyword sshconfigCiphers arcfour128 syn keyword sshconfigCiphers arcfour256 syn keyword sshconfigCiphers aes128-cbc syn keyword sshconfigCiphers aes192-cbc syn keyword sshconfigCiphers aes256-cbc syn match sshconfigCiphers "\" syn keyword sshconfigCiphers aes128-ctr syn keyword sshconfigCiphers aes192-ctr syn keyword sshconfigCiphers aes256-ctr syn match sshconfigCiphers "\" syn match sshconfigCiphers "\" syn match sshconfigCiphers "\" syn keyword sshconfigMAC hmac-sha1 syn keyword sshconfigMAC mac-sha1-96 syn keyword sshconfigMAC mac-sha2-256 syn keyword sshconfigMAC mac-sha2-512 syn keyword sshconfigMAC mac-md5 syn keyword sshconfigMAC mac-md5-96 syn keyword sshconfigMAC mac-ripemd160 syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn keyword sshconfigHostKeyAlgo ssh-ed25519 syn match sshconfigHostKeyAlgo "\" syn keyword sshconfigHostKeyAlgo ssh-rsa syn keyword sshconfigHostKeyAlgo ssh-dss syn keyword sshconfigHostKeyAlgo ecdsa-sha2-nistp256 syn keyword sshconfigHostKeyAlgo ecdsa-sha2-nistp384 syn keyword sshconfigHostKeyAlgo ecdsa-sha2-nistp521 syn match sshconfigHostKeyAlgo "\" syn match sshconfigHostKeyAlgo "\" syn match sshconfigHostKeyAlgo "\" syn match sshconfigHostKeyAlgo "\" syn match sshconfigHostKeyAlgo "\" syn keyword sshconfigPreferredAuth hostbased publickey password gssapi-with-mic syn keyword sshconfigPreferredAuth keyboard-interactive syn keyword sshconfigLogLevel QUIET FATAL ERROR INFO VERBOSE syn keyword sshconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3 syn keyword sshconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1 syn keyword sshconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7 syn keyword sshconfigAddressFamily inet inet6 syn match sshconfigIPQoS "af1[123]" syn match sshconfigIPQoS "af2[123]" syn match sshconfigIPQoS "af3[123]" syn match sshconfigIPQoS "af4[123]" syn match sshconfigIPQoS "cs[0-7]" syn keyword sshconfigIPQoS ef lowdelay throughput reliability syn keyword sshconfigKbdInteractive bsdauth pam skey syn keyword sshconfigKexAlgo diffie-hellman-group1-sha1 syn keyword sshconfigKexAlgo diffie-hellman-group14-sha1 syn keyword sshconfigKexAlgo diffie-hellman-group-exchange-sha1 syn keyword sshconfigKexAlgo diffie-hellman-group-exchange-sha256 syn keyword sshconfigKexAlgo ecdh-sha2-nistp256 syn keyword sshconfigKexAlgo ecdh-sha2-nistp384 syn keyword sshconfigKexAlgo ecdh-sha2-nistp521 syn match sshconfigKexAlgo "\" syn keyword sshconfigTunnel point-to-point ethernet syn match sshconfigVar "%[rhplLdun]\>" syn match sshconfigSpecial "[*?]" syn match sshconfigNumber "\d\+" syn match sshconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>" syn match sshconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>" syn match sshconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}[:/]\d\+\>" syn match sshconfigHostPort "\(Host \)\@<=.\+" syn match sshconfigHostPort "\(HostName \)\@<=.\+" " case off syn case ignore " Keywords syn keyword sshconfigHostSect Host syn keyword sshconfigMatch canonical exec host originalhost user localuser all syn keyword sshconfigKeyword AddressFamily syn keyword sshconfigKeyword AddKeysToAgent syn keyword sshconfigKeyword BatchMode syn keyword sshconfigKeyword BindAddress syn keyword sshconfigKeyword CanonicalDomains syn keyword sshconfigKeyword CanonicalizeFallbackLocal syn keyword sshconfigKeyword CanonicalizeHostname syn keyword sshconfigKeyword CanonicalizeMaxDots syn keyword sshconfigKeyword CertificateFile syn keyword sshconfigKeyword ChallengeResponseAuthentication syn keyword sshconfigKeyword CheckHostIP syn keyword sshconfigKeyword Cipher syn keyword sshconfigKeyword Ciphers syn keyword sshconfigKeyword ClearAllForwardings syn keyword sshconfigKeyword Compression syn keyword sshconfigKeyword CompressionLevel syn keyword sshconfigKeyword ConnectTimeout syn keyword sshconfigKeyword ConnectionAttempts syn keyword sshconfigKeyword ControlMaster syn keyword sshconfigKeyword ControlPath syn keyword sshconfigKeyword ControlPersist syn keyword sshconfigKeyword DynamicForward syn keyword sshconfigKeyword EnableSSHKeysign syn keyword sshconfigKeyword EscapeChar syn keyword sshconfigKeyword ExitOnForwardFailure syn keyword sshconfigKeyword ForwardAgent syn keyword sshconfigKeyword ForwardX11 syn keyword sshconfigKeyword ForwardX11Timeout syn keyword sshconfigKeyword ForwardX11Trusted syn keyword sshconfigKeyword GSSAPIAuthentication syn keyword sshconfigKeyword GSSAPIClientIdentity syn keyword sshconfigKeyword GSSAPIDelegateCredentials syn keyword sshconfigKeyword GSSAPIKeyExchange syn keyword sshconfigKeyword GSSAPIRenewalForcesRekey syn keyword sshconfigKeyword GSSAPIServerIdentity syn keyword sshconfigKeyword GSSAPITrustDNS syn keyword sshconfigKeyword GSSAPITrustDns syn keyword sshconfigKeyword GatewayPorts syn keyword sshconfigKeyword GlobalKnownHostsFile syn keyword sshconfigKeyword HashKnownHosts syn keyword sshconfigKeyword HostKeyAlgorithms syn keyword sshconfigKeyword HostKeyAlias syn keyword sshconfigKeyword HostName syn keyword sshconfigKeyword HostbasedAuthentication syn keyword sshconfigKeyword HostbasedKeyTypes syn keyword sshconfigKeyword IPQoS syn keyword sshconfigKeyword IdentitiesOnly syn keyword sshconfigKeyword IdentityFile syn keyword sshconfigKeyword IgnoreUnknown syn keyword sshconfigKeyword Include syn keyword sshconfigKeyword IPQoS syn keyword sshconfigKeyword KbdInteractiveAuthentication syn keyword sshconfigKeyword KbdInteractiveDevices syn keyword sshconfigKeyword KexAlgorithms syn keyword sshconfigKeyword LocalCommand syn keyword sshconfigKeyword LocalForward syn keyword sshconfigKeyword LogLevel syn keyword sshconfigKeyword MACs syn keyword sshconfigKeyword Match syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost syn keyword sshconfigKeyword NumberOfPasswordPrompts syn keyword sshconfigKeyword PKCS11Provider syn keyword sshconfigKeyword PasswordAuthentication syn keyword sshconfigKeyword PermitLocalCommand syn keyword sshconfigKeyword Port syn keyword sshconfigKeyword PreferredAuthentications syn keyword sshconfigKeyword Protocol syn keyword sshconfigKeyword ProxyCommand syn keyword sshconfigKeyword ProxyJump syn keyword sshconfigKeyword ProxyUseFDPass syn keyword sshconfigKeyword PubkeyAcceptedKeyTypes syn keyword sshconfigKeyword PubkeyAuthentication syn keyword sshconfigKeyword RSAAuthentication syn keyword sshconfigKeyword RekeyLimit syn keyword sshconfigKeyword RemoteForward syn keyword sshconfigKeyword RequestTTY syn keyword sshconfigKeyword RhostsRSAAuthentication syn keyword sshconfigKeyword SendEnv syn keyword sshconfigKeyword ServerAliveCountMax syn keyword sshconfigKeyword ServerAliveInterval syn keyword sshconfigKeyword SmartcardDevice syn keyword sshconfigKeyword StrictHostKeyChecking syn keyword sshconfigKeyword TCPKeepAlive syn keyword sshconfigKeyword Tunnel syn keyword sshconfigKeyword TunnelDevice syn keyword sshconfigKeyword UseBlacklistedKeys syn keyword sshconfigKeyword UsePrivilegedPort syn keyword sshconfigKeyword User syn keyword sshconfigKeyword UserKnownHostsFile syn keyword sshconfigKeyword UseRoaming syn keyword sshconfigKeyword VerifyHostKeyDNS syn keyword sshconfigKeyword VisualHostKey syn keyword sshconfigKeyword XAuthLocation " Define the default highlighting hi def link sshconfigComment Comment hi def link sshconfigTodo Todo hi def link sshconfigHostPort sshconfigConstant hi def link sshconfigNumber sshconfigConstant hi def link sshconfigConstant Constant hi def link sshconfigYesNo sshconfigEnum hi def link sshconfigCipher sshconfigEnum hi def link sshconfigCiphers sshconfigEnum hi def link sshconfigMAC sshconfigEnum hi def link sshconfigHostKeyAlgo sshconfigEnum hi def link sshconfigLogLevel sshconfigEnum hi def link sshconfigSysLogFacility sshconfigEnum hi def link sshconfigAddressFamily sshconfigEnum hi def link sshconfigIPQoS sshconfigEnum hi def link sshconfigKbdInteractive sshconfigEnum hi def link sshconfigKexAlgo sshconfigEnum hi def link sshconfigTunnel sshconfigEnum hi def link sshconfigPreferredAuth sshconfigEnum hi def link sshconfigVar sshconfigEnum hi def link sshconfigEnum Identifier hi def link sshconfigSpecial Special hi def link sshconfigKeyword Keyword hi def link sshconfigHostSect Type hi def link sshconfigMatch Type let b:current_syntax = "sshconfig" " vim:set ts=8 sw=2 sts=2: PK!RO O vim80/syntax/clean.vimnu[" Vim syntax file " Language: Clean " Author: Pieter van Engelen " Co-Author: Arthur van Leeuwen " Last Change: 2013 Oct 15 by Jurriën Stutterheim " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " Some Clean-keywords syn keyword cleanConditional if case syn keyword cleanLabel let! with where in of syn keyword cleanSpecial Start syn keyword cleanKeyword infixl infixr infix syn keyword cleanBasicType Int Real Char Bool String syn keyword cleanSpecialType World ProcId Void Files File syn keyword cleanModuleSystem module implementation definition system syn keyword cleanTypeClass class instance export " Import highlighting syn region cleanIncludeRegion start="^\s*\(from\|import\|\s\+\(as\|qualified\)\)" end="\n" contains=cleanIncludeKeyword keepend syn keyword cleanIncludeKeyword contained from import as qualified " To do some Denotation Highlighting syn keyword cleanBoolDenot True False syn region cleanStringDenot start=+"+ skip=+\(\(\\\\\)\+\|\\"\)+ end=+"+ display syn match cleanCharDenot "'\(\\\\\|\\'\|[^'\\]\)\+'" display syn match cleanIntegerDenot "[\~+-]\?\<\(\d\+\|0[0-7]\+\|0x[0-9A-Fa-f]\+\)\>" display syn match cleanRealDenot "[\~+-]\?\d\+\.\d\+\(E[\~+-]\?\d\+\)\?" display " To highlight the use of lists, tuples and arrays syn region cleanList start="\[" end="\]" contains=ALL syn region cleanRecord start="{" end="}" contains=ALL syn region cleanArray start="{:" end=":}" contains=ALL syn match cleanTuple "([^=]*,[^=]*)" contains=ALL " To do some Comment Highlighting syn region cleanComment start="/\*" end="\*/" contains=cleanComment,cleanTodo fold syn region cleanComment start="//.*" end="$" display contains=cleanTodo syn keyword cleanTodo TODO FIXME XXX contained " Now for some useful type definition recognition syn match cleanFuncTypeDef "\([a-zA-Z].*\|(\=[-~@#$%^?!+*<>\/|&=:]\+)\=\)\s*\(infix[lr]\=\)\=\s*\d\=\s*::.*->.*" contains=cleanSpecial,cleanBasicType,cleanSpecialType,cleanKeyword " Define the default highlighting. " Only when an item doesn't have highlighting yet " Comments hi def link cleanComment Comment " Constants and denotations hi def link cleanStringDenot String hi def link cleanCharDenot Character hi def link cleanIntegerDenot Number hi def link cleanBoolDenot Boolean hi def link cleanRealDenot Float " Identifiers " Statements hi def link cleanTypeClass Keyword hi def link cleanConditional Conditional hi def link cleanLabel Label hi def link cleanKeyword Keyword " Generic Preprocessing hi def link cleanIncludeKeyword Include hi def link cleanModuleSystem PreProc " Type hi def link cleanBasicType Type hi def link cleanSpecialType Type hi def link cleanFuncTypeDef Typedef " Special hi def link cleanSpecial Special hi def link cleanList Special hi def link cleanArray Special hi def link cleanRecord Special hi def link cleanTuple Special " Error " Todo hi def link cleanTodo Todo let b:current_syntax = "clean" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=4 PK!*&$ddvim80/syntax/skill.vimnu[" Vim syntax file " Language: SKILL " Maintainer: Toby Schaffer " Last Change: 2003 May 11 " Comments: SKILL is a Lisp-like programming language for use in EDA " tools from Cadence Design Systems. It allows you to have " a programming environment within the Cadence environment " that gives you access to the complete tool set and design " database. This file also defines syntax highlighting for " certain Design Framework II interface functions. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn keyword skillConstants t nil unbound " enumerate all the SKILL reserved words/functions syn match skillFunction "(abs\>"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillConditional "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillConditional "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillRepeat "\"hs=s+1 syn match skillFunction "\<[fs]\=printf("he=e-1 syn match skillFunction "(f\=scanf\>"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillRepeat "\"hs=s+1 syn match skillConditional "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\<[mn]\=procedure("he=e-1 syn match skillFunction "(ncon[cs]\>"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillConditional "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillConditional "\"hs=s+1 syn match skillRepeat "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillcdfFunctions "\"hs=s+1 syn match skillgeFunctions "\"hs=s+1 syn match skillhiFunctions "\"hs=s+1 syn match skillleFunctions "\"hs=s+1 syn match skilldbefFunctions "\"hs=s+1 syn match skillddFunctions "\"hs=s+1 syn match skillpcFunctions "\"hs=s+1 syn match skilltechFunctions "\<\(tech\|tc\)\u\a\+("he=e-1 " strings syn region skillString start=+"+ skip=+\\"+ end=+"+ syn keyword skillTodo contained TODO FIXME XXX syn keyword skillNote contained NOTE IMPORTANT " comments are either C-style or begin with a semicolon syn region skillComment start="/\*" end="\*/" contains=skillTodo,skillNote syn match skillComment ";.*" contains=skillTodo,skillNote syn match skillCommentError "\*/" syn sync ccomment skillComment minlines=10 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link skillcdfFunctions Function hi def link skillgeFunctions Function hi def link skillhiFunctions Function hi def link skillleFunctions Function hi def link skilldbefFunctions Function hi def link skillddFunctions Function hi def link skillpcFunctions Function hi def link skilltechFunctions Function hi def link skillConstants Constant hi def link skillFunction Function hi def link skillKeywords Statement hi def link skillConditional Conditional hi def link skillRepeat Repeat hi def link skillString String hi def link skillTodo Todo hi def link skillNote Todo hi def link skillComment Comment hi def link skillCommentError Error let b:current_syntax = "skill" " vim: ts=4 PK!VVvim80/syntax/ipfilter.vimnu[" ipfilter syntax file " Language: ipfilter configuration file " Maintainer: Hendrik Scholz " Last Change: 2005 Jan 27 " " http://www.wormulon.net/files/misc/ipfilter.vim " " This will also work for OpenBSD pf but there might be some tags that are " not correctly identified. " Please send comments to hendrik@scholz.net " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Comment syn match IPFComment /#.*$/ contains=ipfTodo syn keyword IPFTodo TODO XXX FIXME contained syn keyword IPFActionBlock block syn keyword IPFActionPass pass syn keyword IPFProto tcp udp icmp syn keyword IPFSpecial quick log first " how could we use keyword for words with '-' ? syn match IPFSpecial /return-rst/ syn match IPFSpecial /dup-to/ "syn match IPFSpecial /icmp-type unreach/ syn keyword IPFAny all any syn match IPFIPv4 /\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ syn match IPFNetmask /\/\d\+/ " service name constants syn keyword IPFService auth bgp domain finger ftp http https ident syn keyword IPFService imap irc isakmp kerberos mail nameserver nfs syn keyword IPFService nntp ntp pop3 portmap pptp rpcbind rsync smtp syn keyword IPFService snmp snmptrap socks ssh sunrpc syslog telnet syn keyword IPFService tftp www " Comment hi def link IPFComment Comment hi def link IPFTodo Todo hi def link IPFService Constant hi def link IPFAction Type hi def link ipfActionBlock String hi def link ipfActionPass Type hi def link IPFSpecial Statement hi def link IPFIPv4 Label hi def link IPFNetmask String hi def link IPFAny Statement hi def link IPFProto Identifier PK!T1T1vim80/syntax/spec.vimnu[" Filename: spec.vim " Purpose: Vim syntax file " Language: SPEC: Build/install scripts for Linux RPM packages " Maintainer: Igor Gnatenko i.gnatenko.brain@gmail.com " Former Maintainer: Donovan Rebbechi elflord@panix.com (until March 2014) " Last Change: Sat Apr 9 15:30 2016 Filip Szymański " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn sync minlines=1000 syn match specSpecialChar contained '[][!$()\\|>^;:{}]' syn match specColon contained ':' syn match specPercent contained '%' syn match specVariables contained '\$\h\w*' contains=specSpecialVariablesNames,specSpecialChar syn match specVariables contained '\${\w*}' contains=specSpecialVariablesNames,specSpecialChar syn match specMacroIdentifier contained '%\h\w*' contains=specMacroNameLocal,specMacroNameOther,specPercent syn match specMacroIdentifier contained '%{\w*}' contains=specMacroNameLocal,specMacroNameOther,specPercent,specSpecialChar syn match specSpecialVariables contained '\$[0-9]\|\${[0-9]}' syn match specCommandOpts contained '\s\(-\w\+\|--\w[a-zA-Z_-]\+\)'ms=s+1 syn match specComment '^\s*#.*$' syn case match "matches with no highlight syn match specNoNumberHilite 'X11\|X11R6\|[a-zA-Z]*\.\d\|[a-zA-Z][-/]\d' syn match specManpageFile '[a-zA-Z]\.1' "Day, Month and most used license acronyms syn keyword specLicense contained GPL LGPL BSD MIT GNU distributable syn keyword specWeekday contained Mon Tue Wed Thu Fri Sat Sun syn keyword specMonth contained Jan Feb Mar Apr Jun Jul Aug Sep Oct Nov Dec syn keyword specMonth contained January February March April May June July August September October November December "#, @, www syn match specNumber '\(^-\=\|[ \t]-\=\|-\)[0-9.-]*[0-9]' syn match specEmail contained "<\=\<[A-Za-z0-9_.-]\+@\([A-Za-z0-9_-]\+\.\)\+[A-Za-z]\+\>>\=" syn match specURL contained '\<\(\(https\{0,1}\|ftp\)://\|\(www[23]\{0,1}\.\|ftp\.\)\)[A-Za-z0-9._/~:,#-]\+\>' syn match specURLMacro contained '\<\(\(https\{0,1}\|ftp\)://\|\(www[23]\{0,1}\.\|ftp\.\)\)[A-Za-z0-9._/~:,#%{}-]\+\>' contains=specMacroIdentifier "TODO take specSpecialVariables out of the cluster for the sh* contains (ALLBUT) "Special system directories syn match specListedFilesPrefix contained '/\(usr\|local\|opt\|X11R6\|X11\)/'me=e-1 syn match specListedFilesBin contained '/s\=bin/'me=e-1 syn match specListedFilesLib contained '/\(lib\|include\)/'me=e-1 syn match specListedFilesDoc contained '/\(man\d*\|doc\|info\)\>' syn match specListedFilesEtc contained '/etc/'me=e-1 syn match specListedFilesShare contained '/share/'me=e-1 syn cluster specListedFiles contains=specListedFilesBin,specListedFilesLib,specListedFilesDoc,specListedFilesEtc,specListedFilesShare,specListedFilesPrefix,specVariables,specSpecialChar "specComands syn match specConfigure contained '\./configure' syn match specTarCommand contained '\' "valid _macro names from /usr/lib/rpm/macros syn keyword specMacroNameLocal contained _arch _binary_payload _bindir _build _build_alias _build_cpu _builddir _build_os _buildshell _buildsubdir _build_vendor _bzip2bin _datadir _dbpath _dbpath_rebuild _defaultdocdir _docdir _excludedocs _exec_prefix _fixgroup _fixowner _fixperms _ftpport _ftpproxy _gpg_path _gzipbin _host _host_alias _host_cpu _host_os _host_vendor _httpport _httpproxy _includedir _infodir _install_langs _install_script_path _instchangelog _langpatt _lib _libdir _libexecdir _localstatedir _mandir _netsharedpath _oldincludedir _os _pgpbin _pgp_path _prefix _preScriptEnvironment _provides _rpmdir _rpmfilename _sbindir _sharedstatedir _signature _sourcedir _source_payload _specdir _srcrpmdir _sysconfdir _target _target_alias _target_cpu _target_os _target_platform _target_vendor _timecheck _tmppath _topdir _usr _usrsrc _var _vendor "------------------------------------------------------------------------------ " here's is all the spec sections definitions: PreAmble, Description, Package, " Scripts, Files and Changelog "One line macros - valid in all ScriptAreas "tip: remember do include new items on specScriptArea's skip section syn region specSectionMacroArea oneline matchgroup=specSectionMacro start='^%\(define\|global\|patch\d*\|setup\|autosetup\|autopatch\|configure\|GNUconfigure\|find_lang\|make_build\|makeinstall\|make_install\|include\)\>' end='$' contains=specCommandOpts,specMacroIdentifier syn region specSectionMacroBracketArea oneline matchgroup=specSectionMacro start='^%{\(configure\|GNUconfigure\|find_lang\|make_build\|makeinstall\|make_install\)}' end='$' contains=specCommandOpts,specMacroIdentifier "%% Files Section %% "TODO %config valid parameters: missingok\|noreplace "TODO %verify valid parameters: \(not\)\= \(md5\|atime\|...\) syn region specFilesArea matchgroup=specSection start='^%[Ff][Ii][Ll][Ee][Ss]\>' skip='%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|verify\|ghost\|license\)\>' end='^%[a-zA-Z]'me=e-2 contains=specFilesOpts,specFilesDirective,@specListedFiles,specComment,specCommandSpecial,specMacroIdentifier "tip: remember to include new itens in specFilesArea above syn match specFilesDirective contained '%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|verify\|ghost\|license\)\>' "valid options for certain section headers syn match specDescriptionOpts contained '\s-[ln]\s*\a'ms=s+1,me=e-1 syn match specPackageOpts contained '\s-n\s*\w'ms=s+1,me=e-1 syn match specFilesOpts contained '\s-f\s*\w'ms=s+1,me=e-1 syn case ignore "%% PreAmble Section %% "Copyright and Serial were deprecated by License and Epoch syn region specPreAmbleDeprecated oneline matchgroup=specError start='^\(Copyright\|Serial\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier syn region specPreAmble oneline matchgroup=specCommand start='^\(Prereq\|Summary\|Name\|Version\|Packager\|Requires\|Recommends\|Suggests\|Supplements\|Enhances\|Icon\|URL\|Source\d*\|Patch\d*\|Prefix\|Packager\|Group\|License\|Release\|BuildRoot\|Distribution\|Vendor\|Provides\|ExclusiveArch\|ExcludeArch\|ExcludeOS\|ExclusiveOS\|Obsoletes\|BuildArch\|BuildArchitectures\|BuildRequires\|BuildConflicts\|BuildPreReq\|Conflicts\|AutoRequires\|AutoReq\|AutoReqProv\|AutoProv\|Epoch\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier "%% Description Section %% syn region specDescriptionArea matchgroup=specSection start='^%description' end='^%'me=e-1 contains=specDescriptionOpts,specEmail,specURL,specNumber,specMacroIdentifier,specComment "%% Package Section %% syn region specPackageArea matchgroup=specSection start='^%package' end='^%'me=e-1 contains=specPackageOpts,specPreAmble,specComment "%% Scripts Section %% syn region specScriptArea matchgroup=specSection start='^%\(prep\|build\|install\|check\|clean\|pre\|postun\|preun\|post\|posttrans\)\>' skip='^%{\|^%\(define\|global\|patch\d*\|configure\|GNUconfigure\|setup\|find_lang\|makeinstall\|make_install\)\>' end='^%'me=e-1 contains=specSpecialVariables,specVariables,@specCommands,specVariables,shDo,shFor,shCaseEsac,specNoNumberHilite,specCommandOpts,shComment,shIf,specSpecialChar,specMacroIdentifier,specSectionMacroArea,specSectionMacroBracketArea,shOperator,shQuote1,shQuote2 "%% Changelog Section %% syn region specChangelogArea matchgroup=specSection start='^%changelog' end='^%'me=e-1 contains=specEmail,specURL,specWeekday,specMonth,specNumber,specComment,specLicense "------------------------------------------------------------------------------ "here's the shell syntax for all the Script Sections syn case match "sh-like comment stile, only valid in script part syn match shComment contained '#.*$' syn region shQuote1 contained matchgroup=shQuoteDelim start=+'+ skip=+\\'+ end=+'+ contains=specMacroIdentifier syn region shQuote2 contained matchgroup=shQuoteDelim start=+"+ skip=+\\"+ end=+"+ contains=specVariables,specMacroIdentifier syn match shOperator contained '[><|!&;]\|[!=]=' syn region shDo transparent matchgroup=specBlock start="\" end="\" contains=ALLBUT,shFunction,shDoError,shCase,specPreAmble,@specListedFiles syn region specIf matchgroup=specBlock start="%ifosf\|%ifos\|%ifnos\|%ifarch\|%ifnarch\|%else" end='%endif' contains=ALLBUT, specIfError, shCase syn region shIf transparent matchgroup=specBlock start="\" end="\" contains=ALLBUT,shFunction,shIfError,shCase,@specListedFiles syn region shFor matchgroup=specBlock start="\" end="\" contains=ALLBUT,shFunction,shInError,shCase,@specListedFiles syn region shCaseEsac transparent matchgroup=specBlock start="\" matchgroup=NONE end="\"me=s-1 contains=ALLBUT,shFunction,shCaseError,@specListedFiles nextgroup=shCaseEsac syn region shCaseEsac matchgroup=specBlock start="\" end="\" contains=ALLBUT,shFunction,shCaseError,@specListedFilesBin syn region shCase matchgroup=specBlock contained start=")" end=";;" contains=ALLBUT,shFunction,shCaseError,shCase,@specListedFiles syn sync match shDoSync grouphere shDo "\" syn sync match shDoSync groupthere shDo "\" syn sync match shIfSync grouphere shIf "\" syn sync match shIfSync groupthere shIf "\" syn sync match specIfSync grouphere specIf "%ifarch\|%ifos\|%ifnos" syn sync match specIfSync groupthere specIf "%endIf" syn sync match shForSync grouphere shFor "\" syn sync match shForSync groupthere shFor "\" syn sync match shCaseEsacSync grouphere shCaseEsac "\" syn sync match shCaseEsacSync groupthere shCaseEsac "\" " Define the default highlighting. " Only when an item doesn't have highlighting yet "main types color definitions hi def link specSection Structure hi def link specSectionMacro Macro hi def link specWWWlink PreProc hi def link specOpts Operator "yes, it's ugly, but white is sooo cool if &background == "dark" hi def specGlobalMacro ctermfg=white else hi def link specGlobalMacro Identifier endif "sh colors hi def link shComment Comment hi def link shIf Statement hi def link shOperator Special hi def link shQuote1 String hi def link shQuote2 String hi def link shQuoteDelim Statement "spec colors hi def link specBlock Function hi def link specColon Special hi def link specCommand Statement hi def link specCommandOpts specOpts hi def link specCommandSpecial Special hi def link specComment Comment hi def link specConfigure specCommand hi def link specDate String hi def link specDescriptionOpts specOpts hi def link specEmail specWWWlink hi def link specError Error hi def link specFilesDirective specSectionMacro hi def link specFilesOpts specOpts hi def link specLicense String hi def link specMacroNameLocal specGlobalMacro hi def link specMacroNameOther specGlobalMacro hi def link specManpageFile NONE hi def link specMonth specDate hi def link specNoNumberHilite NONE hi def link specNumber Number hi def link specPackageOpts specOpts hi def link specPercent Special hi def link specSpecialChar Special hi def link specSpecialVariables specGlobalMacro hi def link specSpecialVariablesNames specGlobalMacro hi def link specTarCommand specCommand hi def link specURL specWWWlink hi def link specURLMacro specWWWlink hi def link specVariables Identifier hi def link specWeekday specDate hi def link specListedFilesBin Statement hi def link specListedFilesDoc Statement hi def link specListedFilesEtc Statement hi def link specListedFilesLib Statement hi def link specListedFilesPrefix Statement hi def link specListedFilesShare Statement let b:current_syntax = "spec" " vim: ts=8 PK!H''vim80/syntax/monk.vimnu[" Vim syntax file " Language: Monk (See-Beyond Technologies) " Maintainer: Mike Litherland " Last Change: 2012 Feb 03 by Thilo Six " This syntax file is good enough for my needs, but others " may desire more features. Suggestions and bug reports " are solicited by the author (above). " Originally based on the Scheme syntax file by: " Maintainer: Dirk van Deun " Last Change: April 30, 1998 " In fact it's almost identical. :) " The original author's notes: " This script incorrectly recognizes some junk input as numerals: " parsing the complete system of Scheme numerals using the pattern " language is practically impossible: I did a lax approximation. " Initializing: " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore " Fascist highlighting: everything that doesn't fit the rules is an error... syn match monkError oneline ![^ \t()";]*! syn match monkError oneline ")" " Quoted and backquoted stuff syn region monkQuoted matchgroup=Delimiter start="['`]" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkQuoted matchgroup=Delimiter start="['`]#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkStrucRestricted matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkStrucRestricted matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkUnquote matchgroup=Delimiter start="," end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkUnquote matchgroup=Delimiter start=",@" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkUnquote matchgroup=Delimiter start=",(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkUnquote matchgroup=Delimiter start=",@(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkUnquote matchgroup=Delimiter start=",#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkUnquote matchgroup=Delimiter start=",@#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc " R5RS Scheme Functions and Syntax: setlocal iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_ syn keyword monkSyntax lambda and or if cond case define let let* letrec syn keyword monkSyntax begin do delay set! else => syn keyword monkSyntax quote quasiquote unquote unquote-splicing syn keyword monkSyntax define-syntax let-syntax letrec-syntax syntax-rules syn keyword monkFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car! syn keyword monkFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr syn keyword monkFunc cdaar cdadr cddar cdddr caaaar caaadr caadar caaddr syn keyword monkFunc cadaar cadadr caddar cadddr cdaaar cdaadr cdadar cdaddr syn keyword monkFunc cddaar cddadr cdddar cddddr null? list? list length syn keyword monkFunc append reverse list-ref memq memv member assq assv assoc syn keyword monkFunc symbol? symbol->string string->symbol number? complex? syn keyword monkFunc real? rational? integer? exact? inexact? = < > <= >= syn keyword monkFunc zero? positive? negative? odd? even? max min + * - / abs syn keyword monkFunc quotient remainder modulo gcd lcm numerator denominator syn keyword monkFunc floor ceiling truncate round rationalize exp log sin cos syn keyword monkFunc tan asin acos atan sqrt expt make-rectangular make-polar syn keyword monkFunc real-part imag-part magnitude angle exact->inexact syn keyword monkFunc inexact->exact number->string string->number char=? syn keyword monkFunc char-ci=? char? char-ci>? char<=? syn keyword monkFunc char-ci<=? char>=? char-ci>=? char-alphabetic? char? syn keyword monkFunc char-numeric? char-whitespace? char-upper-case? syn keyword monkFunc char-lower-case? syn keyword monkFunc char->integer integer->char char-upcase char-downcase syn keyword monkFunc string? make-string string string-length string-ref syn keyword monkFunc string-set! string=? string-ci=? string? string-ci>? string<=? string-ci<=? string>=? syn keyword monkFunc string-ci>=? substring string-append vector? make-vector syn keyword monkFunc vector vector-length vector-ref vector-set! procedure? syn keyword monkFunc apply map for-each call-with-current-continuation syn keyword monkFunc call-with-input-file call-with-output-file input-port? syn keyword monkFunc output-port? current-input-port current-output-port syn keyword monkFunc open-input-file open-output-file close-input-port syn keyword monkFunc close-output-port eof-object? read read-char peek-char syn keyword monkFunc write display newline write-char call/cc syn keyword monkFunc list-tail string->list list->string string-copy syn keyword monkFunc string-fill! vector->list list->vector vector-fill! syn keyword monkFunc force with-input-from-file with-output-to-file syn keyword monkFunc char-ready? load transcript-on transcript-off eval syn keyword monkFunc dynamic-wind port? values call-with-values syn keyword monkFunc monk-report-environment null-environment syn keyword monkFunc interaction-environment " Keywords specific to STC's implementation syn keyword monkFunc $event-clear $event-parse $event->string $make-event-map syn keyword monkFunc $resolve-event-definition change-pattern copy copy-strip syn keyword monkFunc count-data-children count-map-children count-rep data-map syn keyword monkFunc duplicate duplicate-strip file-check file-lookup get syn keyword monkFunc insert list-lookup node-has-data? not-verify path? syn keyword monkFunc path-defined-as-repeating? path-nodeclear path-nodedepth syn keyword monkFunc path-nodename path-nodeparentname path->string path-valid? syn keyword monkFunc regex string->path timestamp uniqueid verify " Keywords from the Monk function library (from e*Gate 4.1 programmers ref) syn keyword monkFunc allcap? capitalize char-punctuation? char-substitute syn keyword monkFunc char-to-char conv count-used-children degc->degf syn keyword monkFunc diff-two-dates display-error empty-string? fail_id syn keyword monkFunc fail_id_if fail_translation fail_translation_if syn keyword monkFunc find-get-after find-get-before get-timestamp julian-date? syn keyword monkFunc julian->standard leap-year? map-string not-empty-string? syn keyword monkFunc standard-date? standard->julian string-begins-with? syn keyword monkFunc string-contains? string-ends-with? string-search-from-left syn keyword monkFunc string-search-from-right string->ssn strip-punct syn keyword monkFunc strip-string substring=? symbol-table-get symbol-table-put syn keyword monkFunc trim-string-left trim-string-right valid-decimal? syn keyword monkFunc valid-integer? verify-type " Writing out the complete description of Scheme numerals without " using variables is a day's work for a trained secretary... " This is a useful lax approximation: syn match monkNumber oneline "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*" syn match monkError oneline ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t()";][^ \t()";]*! syn match monkOther oneline ![+-][ \t()";]!me=e-1 syn match monkOther oneline ![+-]$! " ... so that a single + or -, inside a quoted context, would not be " interpreted as a number (outside such contexts, it's a monkFunc) syn match monkDelimiter oneline !\.[ \t()";]!me=e-1 syn match monkDelimiter oneline !\.$! " ... and a single dot is not a number but a delimiter " Simple literals: syn match monkBoolean oneline "#[tf]" syn match monkError oneline !#[tf][^ \t()";]\+! syn match monkChar oneline "#\\" syn match monkChar oneline "#\\." syn match monkError oneline !#\\.[^ \t()";]\+! syn match monkChar oneline "#\\space" syn match monkError oneline !#\\space[^ \t()";]\+! syn match monkChar oneline "#\\newline" syn match monkError oneline !#\\newline[^ \t()";]\+! " This keeps all other stuff unhighlighted, except *stuff* and : syn match monkOther oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*, syn match monkError oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, syn match monkOther oneline "\.\.\." syn match monkError oneline !\.\.\.[^ \t()";]\+! " ... a special identifier syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t()";],me=e-1 syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$, syn match monkError oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t()";],me=e-1 syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$, syn match monkError oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, " Monk input and output structures syn match monkSyntax oneline "\(\~input\|\[I\]->\)[^ \t]*" syn match monkFunc oneline "\(\~output\|\[O\]->\)[^ \t]*" " Non-quoted lists, and strings: syn region monkStruc matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALL syn region monkStruc matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALL syn region monkString start=+"+ skip=+\\[\\"]+ end=+"+ " Comments: syn match monkComment ";.*$" " Synchronization and the wrapping up... syn sync match matchPlace grouphere NONE "^[^ \t]" " ... i.e. synchronize on a line that starts at the left margin " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link monkSyntax Statement hi def link monkFunc Function hi def link monkString String hi def link monkChar Character hi def link monkNumber Number hi def link monkBoolean Boolean hi def link monkDelimiter Delimiter hi def link monkConstant Constant hi def link monkComment Comment hi def link monkError Error let b:current_syntax = "monk" let &cpo = s:cpo_save unlet s:cpo_save PK!#HHvim80/syntax/cf.vimnu[" Vim syntax file " " Language: CFML (ColdFusion) " Author: Ernst M. van der Linden " License: The MIT License (MIT) " " Maintainer: Ernst M. van der Linden " URL: https://github.com/ernstvanderlinden/vim-coldfusion " Last Change: 2017 Nov 28 " " Filenames: *.cfc *.cfm " Quit when a syntax file was already loaded. if exists("b:current_syntax") finish endif " Using line continuation here. let s:cpo_save=&cpo set cpo-=C sy sync fromstart " 20171126: disabled as we have fast computers now. "sy sync maxlines=2000 sy case ignore " INCLUDES {{{ sy include @sqlSyntax $VIMRUNTIME/syntax/sql.vim " 20161010: Disabled include html highlighting as it contains huge keywords " regex, so it will have impact on performance. Use own simple SGML tag " coloring instead. "runtime! syntax/html.vim " / INCLUDES }}} " NUMBER {{{ sy match cfmlNumber \ "\v<\d+>" " / NUMBER }}} " EQUAL SIGN {{{ sy match cfmlEqualSign \ "\v\=" " / EQUAL SIGN }}} " BOOLEAN {{{ sy match cfmlBoolean \ "\v<(true|false)>" " / BOOLEAN }}} " HASH SURROUNDED {{{ sy region cfmlHashSurround \ keepend \ oneline \ start="#" \ end="#" \ skip="##" \ contains= \@cfmlOperator, \@cfmlPunctuation, \cfmlBoolean, \cfmlCoreKeyword, \cfmlCoreScope, \cfmlCustomKeyword, \cfmlCustomScope, \cfmlEqualSign, \cfmlFunctionName, \cfmlNumber " / HASH SURROUNDED }}} " OPERATOR {{{ " OPERATOR - ARITHMETIC {{{ " +7 -7 " ++i --i " i++ i-- " + - * / % " += -= *= /= %= " ^ mod sy match cfmlArithmeticOperator \ "\v \(\+|-)\ze\d \|(\+\+|--)\ze\w \|\w\zs(\+\+|--) \|(\s( \(\+|-|\*|\/|\%){1}\={,1} \|\^ \|mod \)\s) \" " / OPERATOR - ARITHMETIC }}} " OPERATOR - BOOLEAN {{{ " not and or xor eqv imp " ! && || sy match cfmlBooleanOperator \ "\v\s \(not|and|or|xor|eqv|imp \|\!|\&\&|\|\| \)(\s|\)) \|\s\!\ze\w \" " / OPERATOR - BOOLEAN }}} " OPERATOR - DECISION {{{ "is|equal|eq "is not|not equal|neq "contains|does not contain "greater than|gt "less than|lt "greater than or equal to|gte|ge "less than or equal to|lte|le "==|!=|>|<|>=|<= sy match cfmlDecisionOperator \ "\v\s \(is|equal|eq \|is not|not equal|neq \|contains|does not contain \|greater than|gt \|less than|lt \|greater than or equal to|gte|ge \|less than or equal to|lte|le \|(!|\<|\>|\=){1}\= \|\< \|\> \)\s" " / OPERATOR - DECISION }}} " OPERATOR - STRING {{{ " & " &= sy match cfmlStringOperator \ "\v\s\&\={,1}\s" " / OPERATOR - STRING }}} " OPERATOR - TERNARY {{{ " ? : sy match cfmlTernaryOperator \ "\v\s \\?|\: \\s" " / OPERATOR - TERNARY }}} sy cluster cfmlOperator \ contains= \cfmlArithmeticOperator, \cfmlBooleanOperator, \cfmlDecisionOperator, \cfmlStringOperator, \cfmlTernaryOperator " / OPERATOR }}} " PARENTHESIS {{{ sy cluster cfmlParenthesisRegionContains \ contains= \@cfmlAttribute, \@cfmlComment, \@cfmlFlowStatement, \@cfmlOperator, \@cfmlPunctuation, \cfmlBoolean, \cfmlBrace, \cfmlCoreKeyword, \cfmlCoreScope, \cfmlCustomKeyword, \cfmlCustomScope, \cfmlEqualSign, \cfmlFunctionName, \cfmlNumber, \cfmlStorageKeyword, \cfmlStorageType sy region cfmlParenthesisRegion1 \ extend \ matchgroup=cfmlParenthesis1 \ transparent \ start=/(/ \ end=/)/ \ contains= \cfmlParenthesisRegion2, \@cfmlParenthesisRegionContains sy region cfmlParenthesisRegion2 \ matchgroup=cfmlParenthesis2 \ transparent \ start=/(/ \ end=/)/ \ contains= \cfmlParenthesisRegion3, \@cfmlParenthesisRegionContains sy region cfmlParenthesisRegion3 \ matchgroup=cfmlParenthesis3 \ transparent \ start=/(/ \ end=/)/ \ contains= \cfmlParenthesisRegion1, \@cfmlParenthesisRegionContains sy cluster cfmlParenthesisRegion \ contains= \cfmlParenthesisRegion1, \cfmlParenthesisRegion2, \cfmlParenthesisRegion3 " / PARENTHESIS }}} " BRACE {{{ sy match cfmlBrace \ "{\|}" sy region cfmlBraceRegion \ extend \ fold \ keepend \ transparent \ start="{" \ end="}" " / BRACE }}} " PUNCTUATION {{{ " PUNCTUATION - BRACKET {{{ sy match cfmlBracket \ "\(\[\|\]\)" \ contained " / PUNCTUATION - BRACKET }}} " PUNCTUATION - CHAR {{{ sy match cfmlComma "," sy match cfmlDot "\." sy match cfmlSemiColon ";" " / PUNCTUATION - CHAR }}} " PUNCTUATION - QUOTE {{{ sy region cfmlSingleQuotedValue \ matchgroup=cfmlSingleQuote \ start=/'/ \ skip=/''/ \ end=/'/ \ contains= \cfmlHashSurround sy region cfmlDoubleQuotedValue \ matchgroup=cfmlDoubleQuote \ start=/"/ \ skip=/""/ \ end=/"/ \ contains= \cfmlHashSurround sy cluster cfmlQuotedValue \ contains= \cfmlDoubleQuotedValue, \cfmlSingleQuotedValue sy cluster cfmlQuote \ contains= \cfmlDoubleQuote, \cfmlSingleQuote " / PUNCTUATION - QUOTE }}} sy cluster cfmlPunctuation \ contains= \@cfmlQuote, \@cfmlQuotedValue, \cfmlBracket, \cfmlComma, \cfmlDot, \cfmlSemiColon " / PUNCTUATION }}} " TAG START AND END {{{ " tag start " " s^^ e sy region cfmlTagStart \ keepend \ transparent \ start="\c " s^^^ e sy match cfmlTagEnd \ transparent \ "\c]*>" \ contains= \cfmlTagBracket, \cfmlTagName " tag bracket " " ^^ ^ sy match cfmlTagBracket \ contained \ "\(<\|>\|\/\)" " tag name " " s^^^e sy match cfmlTagName \ contained \ "\v<\/*\zs\ccf\w*" " / TAG START AND END }}} " ATTRIBUTE NAME AND VALUE {{{ sy match cfmlAttrName \ contained \ "\v(var\s)@ " ^^^^^^^^^^^^^e sy region cfmlComponentTagRegion \ fold \ keepend \ transparent \ start="\c " ^^^^^^^^^^^^e sy region cfmlFunctionTagRegion \ fold \ keepend \ transparent \ start="\c " ^^^^^^e sy region cfmlIfTagRegion \ fold \ keepend \ transparent \ start="\c " ^^^^^^^^e sy region cfmlLoopTagRegion \ fold \ keepend \ transparent \ start="\c " ^^^^^^^^^^e sy region cfmlOutputTagRegion \ fold \ keepend \ transparent \ start="\c " ^^^^^^^^^e "\@cfmlSqlStatement, sy region cfmlQueryTagRegion \ fold \ keepend \ transparent \ start="\c " ^^^^^^^^^^^^^e sy region cfmlSavecontentTagRegion \ fold \ keepend \ transparent \ start="\c " s^^^^^^^^^ " " ^^^^^^^^^^e "\cfmlCustomScope, sy region cfmlScriptTagRegion \ fold \ keepend \ transparent \ start="\c" \ end="\c" \ contains= \@cfmlComment, \@cfmlFlowStatement, \cfmlHashSurround, \@cfmlOperator, \@cfmlParenthesisRegion, \@cfmlPunctuation, \cfmlBoolean, \cfmlBrace, \cfmlCoreKeyword, \cfmlCoreScope, \cfmlCustomKeyword, \cfmlCustomScope, \cfmlEqualSign, \cfmlFunctionDefinition, \cfmlFunctionName, \cfmlNumber, \cfmlOddFunction, \cfmlStorageKeyword, \cfmlTagEnd, \cfmlTagStart " / CFSCRIPT REGION AND FOLD }}} " CFSWITCH REGION AND FOLD {{{ " " ^^^^^^^^^^e sy region cfmlSwitchTagRegion \ fold \ keepend \ transparent \ start="\c " ^^^^^^^^^^^^^^^e sy region cfmlTransactionTagRegion \ fold \ keepend \ transparent \ start="\c " s^^^ ^ " " ^^^^^ e sy region cfmlCustomTagRegion \ fold \ keepend \ transparent \ start="\c]*>" \ end="\c]*>" " / CUSTOM TAG REGION AND FOLD }}} " / TAG REGION AND FOLDING }}} " COMMENT {{{ " COMMENT BLOCK {{{ " /*...*/ " s^ ^e sy region cfmlCommentBlock \ keepend \ start="/\*" \ end="\*/" \ contains= \cfmlMetaData " / COMMENT BLOCK }}} " COMMENT LINE {{{ " //... " s^ sy match cfmlCommentLine \ "\/\/.*" " / COMMENT LINE }}} sy cluster cfmlComment \ contains= \cfmlCommentBlock, \cfmlCommentLine " / COMMENT }}} " TAG COMMENT {{{ " " s^^^^ ^^^e sy region cfmlTagComment \ keepend \ start="" \ contains= \cfmlTagComment " / TAG COMMENT }}} " FLOW STATEMENT {{{ " BRANCH FLOW KEYWORD {{{ sy keyword cfmlBranchFlowKeyword \ break \ continue \ return " / BRANCH KEYWORD }}} " DECISION FLOW KEYWORD {{{ sy keyword cfmlDecisionFlowKeyword \ case \ defaultcase \ else \ if \ switch " / DECISION FLOW KEYWORD }}} " LOOP FLOW KEYWORD {{{ sy keyword cfmlLoopFlowKeyword \ do \ for \ in \ while " / LOOP FLOW KEYWORD }}} " TRY FLOW KEYWORD {{{ sy keyword cfmlTryFlowKeyword \ catch \ finally \ rethrow \ throw \ try " / TRY FLOW KEYWORD }}} sy cluster cfmlFlowStatement \ contains= \cfmlBranchFlowKeyword, \cfmlDecisionFlowKeyword, \cfmlLoopFlowKeyword, \cfmlTryFlowKeyword " / FLOW STATEMENT }}} " STORAGE KEYWORD {{{ sy keyword cfmlStorageKeyword \ var " / STORAGE KEYWORD }}} " STORAGE TYPE {{{ sy match cfmlStorageType \ contained \ "\v< \(any \|array \|binary \|boolean \|date \|numeric \|query \|string \|struct \|uuid \|void \|xml \){1}\ze(\s*\=)@!" " / STORAGE TYPE }}} " CORE KEYWORD {{{ sy match cfmlCoreKeyword \ "\v< \(new \|required \)\ze\s" " / CORE KEYWORD }}} " CORE SCOPE {{{ sy match cfmlCoreScope \ "\v< \(application \|arguments \|attributes \|caller \|cfcatch \|cffile \|cfhttp \|cgi \|client \|cookie \|form \|local \|request \|server \|session \|super \|this \|thisTag \|thread \|variables \|url \){1}\ze(,|\.|\[|\)|\s)" " / CORE SCOPE }}} " SQL STATEMENT {{{ sy cluster cfmlSqlStatement \ contains= \@cfmlParenthesisRegion, \@cfmlQuote, \@cfmlQuotedValue, \@sqlSyntax, \cfmlBoolean, \cfmlDot, \cfmlEqualSign, \cfmlFunctionName, \cfmlHashSurround, \cfmlNumber " / SQL STATEMENT }}} " TAG IN SCRIPT {{{ sy match cfmlTagNameInScript \ "\vcf_*\w+\s*\ze\(" " / TAG IN SCRIPT }}} " METADATA {{{ sy region cfmlMetaData \ contained \ keepend \ start="@\w\+" \ end="$" \ contains= \cfmlMetaDataName sy match cfmlMetaDataName \ contained \ "@\w\+" " / METADATA }}} " COMPONENT DEFINITION {{{ sy region cfmlComponentDefinition \ start="component" \ end="{"me=e-1 \ contains= \@cfmlAttribute, \cfmlComponentKeyword sy match cfmlComponentKeyword \ contained \ "\v" " / COMPONENT DEFINITION }}} " INTERFACE DEFINITION {{{ sy match cfmlInterfaceDefinition \ "interface\s.*{"me=e-1 \ contains= \cfmlInterfaceKeyword sy match cfmlInterfaceKeyword \ contained \ "\v" " / INTERFACE DEFINITION }}} " PROPERTY {{{ sy region cfmlProperty \ transparent \ start="\v" \ end=";"me=e-1 \ contains= \@cfmlQuotedValue, \cfmlAttrEqualSign, \cfmlAttrName, \cfmlAttrValue, \cfmlPropertyKeyword sy match cfmlPropertyKeyword \ contained \ "\v" " / PROPERTY }}} " FUNCTION DEFINITION {{{ sy match cfmlFunctionDefinition \ "\v \(<(public|private|package)\s){,1} \(< \(any \|array \|binary \|boolean \|date \|numeric \|query \|string \|struct \|uuid \|void \|xml \)\s){,1} \" " / FUNCTION KEYWORD }}} " FUNCTION MODIFIER {{{ sy match cfmlFunctionModifier \ contained \ "\v< \(public \|private \|package \)>" " / FUNCTION MODIFIER }}} " FUNCTION RETURN TYPE {{{ sy match cfmlFunctionReturnType \ contained \ "\v \(any \|array \|binary \|boolean \|date \|numeric \|query \|string \|struct \|uuid \|void \|xml \)" " / FUNCTION RETURN TYPE }}} " FUNCTION NAME {{{ " specific regex for core functions decreases performance " so use the same highlighting for both function types sy match cfmlFunctionName \ "\v<(cf|if|elseif|throw)@!\w+\s*\ze\(" " / FUNCTION NAME }}} " / FUNCTION DEFINITION }}} " ODD FUNCTION {{{ sy region cfmlOddFunction \ transparent \ start="\v< \(abort \|exit \|import \|include \|lock \|pageencoding \|param \|savecontent \|thread \|transaction \){1}" \ end="\v(\{|;)"me=e-1 \ contains= \@cfmlQuotedValue, \cfmlAttrEqualSign, \cfmlAttrName, \cfmlAttrValue, \cfmlCoreKeyword, \cfmlOddFunctionKeyword, \cfmlCoreScope " ODD FUNCTION KEYWORD {{{ sy match cfmlOddFunctionKeyword \ contained \ "\v< \(abort \|exit \|import \|include \|lock \|pageencoding \|param \|savecontent \|thread \|transaction \)\ze(\s|$|;)" " / ODD FUNCTION KEYWORD }}} " / ODD FUNCTION }}} " CUSTOM {{{ " CUSTOM KEYWORD {{{ sy match cfmlCustomKeyword \ contained \ "\v< \(customKeyword1 \|customKeyword2 \|customKeyword3 \)>" " / CUSTOM KEYWORD }}} " CUSTOM SCOPE {{{ sy match cfmlCustomScope \ contained \ "\v< \(prc \|rc \|event \|(\w+Service) \){1}\ze(\.|\[)" " / CUSTOM SCOPE }}} " / CUSTOM }}} " SGML TAG START AND END {{{ " SGML tag start " <...> " s^^^e sy region cfmlSGMLTagStart \ keepend \ transparent \ start="\v(\ " s^^^^e sy match cfmlSGMLTagEnd \ transparent \ "\v(\<\/cf)@!\zs\<\/\w+\>" \ contains= \cfmlTagBracket, \cfmlSGMLTagName " SGML tag name " <...> " s^^^e sy match cfmlSGMLTagName \ contained \ "\v(\<\/*)\zs\w+" " / SGML TAG START AND END }}} " HIGHLIGHTING {{{ hi link cfmlNumber Number hi link cfmlBoolean Boolean hi link cfmlEqualSign Keyword " HASH SURROUND hi link cfmlHash PreProc hi link cfmlHashSurround PreProc " OPERATOR hi link cfmlArithmeticOperator Function hi link cfmlBooleanOperator Function hi link cfmlDecisionOperator Function hi link cfmlStringOperator Function hi link cfmlTernaryOperator Function " PARENTHESIS hi link cfmlParenthesis1 Statement hi link cfmlParenthesis2 String hi link cfmlParenthesis3 Delimiter " BRACE hi link cfmlBrace PreProc " PUNCTUATION - BRACKET hi link cfmlBracket Statement " PUNCTUATION - CHAR hi link cfmlComma Comment hi link cfmlDot Comment hi link cfmlSemiColon Comment " PUNCTUATION - QUOTE hi link cfmlDoubleQuote String hi link cfmlDoubleQuotedValue String hi link cfmlSingleQuote String hi link cfmlSingleQuotedValue String " TAG START AND END hi link cfmlTagName Function hi link cfmlTagBracket Comment " ATTRIBUTE NAME AND VALUE hi link cfmlAttrName Type hi link cfmlAttrValue Special " COMMENT hi link cfmlCommentBlock Comment hi link cfmlCommentLine Comment hi link cfmlTagComment Comment " FLOW STATEMENT hi link cfmlDecisionFlowKeyword Conditional hi link cfmlLoopFlowKeyword Repeat hi link cfmlTryFlowKeyword Exception hi link cfmlBranchFlowKeyword Keyword " STORAGE KEYWORD hi link cfmlStorageKeyword Keyword " STORAGE TYPE hi link cfmlStorageType Keyword " CORE KEYWORD hi link cfmlCoreKeyword PreProc " CORE SCOPE hi link cfmlCoreScope Keyword " TAG IN SCRIPT hi link cfmlTagNameInScript Function " METADATA " meta data value = cfmlMetaData hi link cfmlMetaData String hi link cfmlMetaDataName Type " COMPONENT DEFINITION hi link cfmlComponentKeyword Keyword " INTERFACE DEFINITION hi link cfmlInterfaceKeyword Keyword " PROPERTY hi link cfmlPropertyKeyword Keyword " FUNCTION DEFINITION hi link cfmlFunctionKeyword Keyword hi link cfmlFunctionModifier Keyword hi link cfmlFunctionReturnType Keyword hi link cfmlFunctionName Function " ODD FUNCTION hi link cfmlOddFunctionKeyword Function " CUSTOM hi link cfmlCustomKeyword Keyword hi link cfmlCustomScope Structure " SGML TAG hi link cfmlSGMLTagName Ignore " / HIGHLIGHTING }}} let b:current_syntax = "cfml" let &cpo = s:cpo_save unlet s:cpo_save PK!<iivim80/syntax/ishd.vimnu[" Vim syntax file " Language: InstallShield Script " Maintainer: Robert M. Cortopassi " Last Change: 2001 May 09 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn keyword ishdStatement abort begin case default downto else end syn keyword ishdStatement endif endfor endwhile endswitch endprogram exit elseif syn keyword ishdStatement error for function goto if syn keyword ishdStatement program prototype return repeat string step switch syn keyword ishdStatement struct then to typedef until while syn keyword ishdType BOOL BYREF CHAR GDI HWND INT KERNEL LIST LONG syn keyword ishdType NUMBER POINTER SHORT STRING USER syn keyword ishdConstant _MAX_LENGTH _MAX_STRING syn keyword ishdConstant AFTER ALLCONTENTS ALLCONTROLS APPEND ASKDESTPATH syn keyword ishdConstant ASKOPTIONS ASKPATH ASKTEXT BATCH_INSTALL BACK syn keyword ishdConstant BACKBUTTON BACKGROUND BACKGROUNDCAPTION BADPATH syn keyword ishdConstant BADTAGFILE BASEMEMORY BEFORE BILLBOARD BINARY syn keyword ishdConstant BITMAP256COLORS BITMAPFADE BITMAPICON BK_BLUE BK_GREEN syn keyword ishdConstant BK_MAGENTA BK_MAGENTA1 BK_ORANGE BK_PINK BK_RED syn keyword ishdConstant BK_SMOOTH BK_SOLIDBLACK BK_SOLIDBLUE BK_SOLIDGREEN syn keyword ishdConstant BK_SOLIDMAGENTA BK_SOLIDORANGE BK_SOLIDPINK BK_SOLIDRED syn keyword ishdConstant BK_SOLIDWHITE BK_SOLIDYELLOW BK_YELLOW BLACK BLUE syn keyword ishdConstant BOOTUPDRIVE BUTTON_CHECKED BUTTON_ENTER BUTTON_UNCHECKED syn keyword ishdConstant BUTTON_UNKNOWN CMDLINE COMMONFILES CANCEL CANCELBUTTON syn keyword ishdConstant CC_ERR_FILEFORMATERROR CC_ERR_FILEREADERROR syn keyword ishdConstant CC_ERR_NOCOMPONENTLIST CC_ERR_OUTOFMEMORY CDROM syn keyword ishdConstant CDROM_DRIVE CENTERED CHANGEDIR CHECKBOX CHECKBOX95 syn keyword ishdConstant CHECKLINE CHECKMARK CMD_CLOSE CMD_MAXIMIZE CMD_MINIMIZE syn keyword ishdConstant CMD_PUSHDOWN CMD_RESTORE COLORMODE256 COLORS syn keyword ishdConstant COMBOBOX_ENTER COMBOBOX_SELECT COMMAND COMMANDEX syn keyword ishdConstant COMMON COMP_DONE COMP_ERR_CREATEDIR syn keyword ishdConstant COMP_ERR_DESTCONFLICT COMP_ERR_FILENOTINLIB syn keyword ishdConstant COMP_ERR_FILESIZE COMP_ERR_FILETOOLARGE syn keyword ishdConstant COMP_ERR_HEADER COMP_ERR_INCOMPATIBLE syn keyword ishdConstant COMP_ERR_INTPUTNOTCOMPRESSED COMP_ERR_INVALIDLIST syn keyword ishdConstant COMP_ERR_LAUNCHSERVER COMP_ERR_MEMORY syn keyword ishdConstant COMP_ERR_NODISKSPACE COMP_ERR_OPENINPUT syn keyword ishdConstant COMP_ERR_OPENOUTPUT COMP_ERR_OPTIONS syn keyword ishdConstant COMP_ERR_OUTPUTNOTCOMPRESSED COMP_ERR_SPLIT syn keyword ishdConstant COMP_ERR_TARGET COMP_ERR_TARGETREADONLY COMP_ERR_WRITE syn keyword ishdConstant COMP_INFO_ATTRIBUTE COMP_INFO_COMPSIZE COMP_INFO_DATE syn keyword ishdConstant COMP_INFO_INVALIDATEPASSWORD COMP_INFO_ORIGSIZE syn keyword ishdConstant COMP_INFO_SETPASSWORD COMP_INFO_TIME syn keyword ishdConstant COMP_INFO_VERSIONLS COMP_INFO_VERSIONMS COMP_NORMAL syn keyword ishdConstant COMP_UPDATE_DATE COMP_UPDATE_DATE_NEWER syn keyword ishdConstant COMP_UPDATE_SAME COMP_UPDATE_VERSION COMPACT syn keyword ishdConstant COMPARE_DATE COMPARE_SIZE COMPARE_VERSION syn keyword ishdConstant COMPONENT_FIELD_CDROM_FOLDER syn keyword ishdConstant COMPONENT_FIELD_DESCRIPTION COMPONENT_FIELD_DESTINATION syn keyword ishdConstant COMPONENT_FIELD_DISPLAYNAME COMPONENT_FIELD_FILENEED syn keyword ishdConstant COMPONENT_FIELD_FTPLOCATION syn keyword ishdConstant COMPONENT_FIELD_HTTPLOCATION COMPONENT_FIELD_MISC syn keyword ishdConstant COMPONENT_FIELD_OVERWRITE COMPONENT_FIELD_PASSWORD syn keyword ishdConstant COMPONENT_FIELD_SELECTED COMPONENT_FIELD_SIZE syn keyword ishdConstant COMPONENT_FIELD_STATUS COMPONENT_FIELD_VISIBLE syn keyword ishdConstant COMPONENT_FILEINFO_COMPRESSED syn keyword ishdConstant COMPONENT_FILEINFO_COMPRESSENGINE syn keyword ishdConstant COMPONENT_FILEINFO_LANGUAGECOMPONENT_FILEINFO_OS syn keyword ishdConstant COMPONENT_FILEINFO_POTENTIALLYLOCKED syn keyword ishdConstant COMPONENT_FILEINFO_SELFREGISTERING syn keyword ishdConstant COMPONENT_FILEINFO_SHARED COMPONENT_INFO_ATTRIBUTE syn keyword ishdConstant COMPONENT_INFO_COMPSIZE COMPONENT_INFO_DATE syn keyword ishdConstant COMPONENT_INFO_DATE_EX_EX COMPONENT_INFO_LANGUAGE syn keyword ishdConstant COMPONENT_INFO_ORIGSIZE COMPONENT_INFO_OS syn keyword ishdConstant COMPONENT_INFO_TIME COMPONENT_INFO_VERSIONLS syn keyword ishdConstant COMPONENT_INFO_VERSIONMS COMPONENT_INFO_VERSIONSTR syn keyword ishdConstant COMPONENT_VALUE_ALWAYSOVERWRITE syn keyword ishdConstant COMPONENT_VALUE_CRITICAL syn keyword ishdConstant COMPONENT_VALUE_HIGHLYRECOMMENDED syn keyword ishdConstant COMPONENT_FILEINFO_LANGUAGE COMPONENT_FILEINFO_OS syn keyword ishdConstant COMPONENT_VALUE_NEVEROVERWRITE syn keyword ishdConstant COMPONENT_VALUE_NEWERDATE COMPONENT_VALUE_NEWERVERSION syn keyword ishdConstant COMPONENT_VALUE_OLDERDATE COMPONENT_VALUE_OLDERVERSION syn keyword ishdConstant COMPONENT_VALUE_SAMEORNEWDATE syn keyword ishdConstant COMPONENT_VALUE_SAMEORNEWERVERSION syn keyword ishdConstant COMPONENT_VALUE_STANDARD COMPONENT_VIEW_CHANGE syn keyword ishdConstant COMPONENT_INFO_DATE_EX COMPONENT_VIEW_CHILDVIEW syn keyword ishdConstant COMPONENT_VIEW_COMPONENT COMPONENT_VIEW_DESCRIPTION syn keyword ishdConstant COMPONENT_VIEW_MEDIA COMPONENT_VIEW_PARENTVIEW syn keyword ishdConstant COMPONENT_VIEW_SIZEAVAIL COMPONENT_VIEW_SIZETOTAL syn keyword ishdConstant COMPONENT_VIEW_TARGETLOCATION COMPRESSHIGH COMPRESSLOW syn keyword ishdConstant COMPRESSMED COMPRESSNONE CONTIGUOUS CONTINUE syn keyword ishdConstant COPY_ERR_CREATEDIR COPY_ERR_NODISKSPACE syn keyword ishdConstant COPY_ERR_OPENINPUT COPY_ERR_OPENOUTPUT syn keyword ishdConstant COPY_ERR_TARGETREADONLY COPY_ERR_MEMORY syn keyword ishdConstant CORECOMPONENTHANDLING CPU CUSTOM DATA_COMPONENT syn keyword ishdConstant DATA_LIST DATA_NUMBER DATA_STRING DATE DEFAULT syn keyword ishdConstant DEFWINDOWMODE DELETE_EOF DIALOG DIALOGCACHE syn keyword ishdConstant DIALOGTHINFONT DIR_WRITEABLE DIRECTORY DISABLE DISK syn keyword ishdConstant DISK_FREESPACE DISK_TOTALSPACE DISKID DLG_ASK_OPTIONS syn keyword ishdConstant DLG_ASK_PATH DLG_ASK_TEXT DLG_ASK_YESNO DLG_CANCEL syn keyword ishdConstant DLG_CDIR DLG_CDIR_MSG DLG_CENTERED DLG_CLOSE syn keyword ishdConstant DLG_DIR_DIRECTORY DLG_DIR_FILE DLG_ENTER_DISK DLG_ERR syn keyword ishdConstant DLG_ERR_ALREADY_EXISTS DLG_ERR_ENDDLG DLG_INFO_ALTIMAGE syn keyword ishdConstant DLG_INFO_CHECKMETHOD DLG_INFO_CHECKSELECTION syn keyword ishdConstant DLG_INFO_ENABLEIMAGE DLG_INFO_KUNITS syn keyword ishdConstant DLG_INFO_USEDECIMAL DLG_INIT DLG_MSG_ALL syn keyword ishdConstant DLG_MSG_INFORMATION DLG_MSG_NOT_HAND DLG_MSG_SEVERE syn keyword ishdConstant DLG_MSG_STANDARD DLG_MSG_WARNING DLG_OK DLG_STATUS syn keyword ishdConstant DLG_USER_CAPTION DRIVE DRIVEOPEN DLG_DIR_DRIVE syn keyword ishdConstant EDITBOX_CHANGE EFF_BOXSTRIPE EFF_FADE EFF_HORZREVEAL syn keyword ishdConstant EFF_HORZSTRIPE EFF_NONE EFF_REVEAL EFF_VERTSTRIPE syn keyword ishdConstant ENABLE END_OF_FILE END_OF_LIST ENHANCED ENTERDISK syn keyword ishdConstant ENTERDISK_ERRMSG ENTERDISKBEEP ENVSPACE EQUALS syn keyword ishdConstant ERR_BADPATH ERR_BADTAGFILE ERR_BOX_BADPATH syn keyword ishdConstant ERR_BOX_BADTAGFILE ERR_BOX_DISKID ERR_BOX_DRIVEOPEN syn keyword ishdConstant ERR_BOX_EXIT ERR_BOX_HELP ERR_BOX_NOSPACE ERR_BOX_PAUSE syn keyword ishdConstant ERR_BOX_READONLY ERR_DISKID ERR_DRIVEOPEN syn keyword ishdConstant EXCLUDE_SUBDIR EXCLUSIVE EXISTS EXIT EXTENDEDMEMORY syn keyword ishdConstant EXTENSION_ONLY ERRORFILENAME FADE_IN FADE_OUT syn keyword ishdConstant FAILIFEXISTS FALSE FDRIVE_NUM FEEDBACK FEEDBACK_FULL syn keyword ishdConstant FEEDBACK_OPERATION FEEDBACK_SPACE FILE_ATTR_ARCHIVED syn keyword ishdConstant FILE_ATTR_DIRECTORY FILE_ATTR_HIDDEN FILE_ATTR_NORMAL syn keyword ishdConstant FILE_ATTR_READONLY FILE_ATTR_SYSTEM FILE_ATTRIBUTE syn keyword ishdConstant FILE_BIN_CUR FILE_BIN_END FILE_BIN_START FILE_DATE syn keyword ishdConstant FILE_EXISTS FILE_INSTALLED FILE_INVALID FILE_IS_LOCKED syn keyword ishdConstant FILE_LINE_LENGTH FILE_LOCKED FILE_MODE_APPEND syn keyword ishdConstant FILE_MODE_BINARY FILE_MODE_BINARYREADONLY syn keyword ishdConstant FILE_MODE_NORMAL FILE_NO_VERSION FILE_NOT_FOUND syn keyword ishdConstant FILE_RD_ONLY FILE_SIZE FILE_SRC_EQUAL FILE_SRC_OLD syn keyword ishdConstant FILE_TIME FILE_WRITEABLE FILENAME FILENAME_ONLY syn keyword ishdConstant FINISHBUTTON FIXED_DRIVE FONT_TITLE FREEENVSPACE syn keyword ishdConstant FS_CREATEDIR FS_DISKONEREQUIRED FS_DONE FS_FILENOTINLIB syn keyword ishdConstant FS_GENERROR FS_INCORRECTDISK FS_LAUNCHPROCESS syn keyword ishdConstant FS_OPERROR FS_OUTOFSPACE FS_PACKAGING FS_RESETREQUIRED syn keyword ishdConstant FS_TARGETREADONLY FS_TONEXTDISK FULL FULLSCREEN syn keyword ishdConstant FULLSCREENSIZE FULLWINDOWMODE FOLDER_DESKTOP syn keyword ishdConstant FOLDER_PROGRAMS FOLDER_STARTMENU FOLDER_STARTUP syn keyword ishdConstant GREATER_THAN GREEN HELP HKEY_CLASSES_ROOT syn keyword ishdConstant HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_DYN_DATA syn keyword ishdConstant HKEY_LOCAL_MACHINE HKEY_PERFORMANCE_DATA HKEY_USERS syn keyword ishdConstant HOURGLASS HWND_DESKTOP HWND_INSTALL IGNORE_READONLY syn keyword ishdConstant INCLUDE_SUBDIR INDVFILESTATUS INFO INFO_DESCRIPTION syn keyword ishdConstant INFO_IMAGE INFO_MISC INFO_SIZE INFO_SUBCOMPONENT syn keyword ishdConstant INFO_VISIBLE INFORMATION INVALID_LIST IS_186 IS_286 syn keyword ishdConstant IS_386 IS_486 IS_8514A IS_86 IS_ALPHA IS_CDROM IS_CGA syn keyword ishdConstant IS_DOS IS_EGA IS_FIXED IS_FOLDER IS_ITEM ISLANG_ALL syn keyword ishdConstant ISLANG_ARABIC ISLANG_ARABIC_SAUDIARABIA syn keyword ishdConstant ISLANG_ARABIC_IRAQ ISLANG_ARABIC_EGYPT syn keyword ishdConstant ISLANG_ARABIC_LIBYA ISLANG_ARABIC_ALGERIA syn keyword ishdConstant ISLANG_ARABIC_MOROCCO ISLANG_ARABIC_TUNISIA syn keyword ishdConstant ISLANG_ARABIC_OMAN ISLANG_ARABIC_YEMEN syn keyword ishdConstant ISLANG_ARABIC_SYRIA ISLANG_ARABIC_JORDAN syn keyword ishdConstant ISLANG_ARABIC_LEBANON ISLANG_ARABIC_KUWAIT syn keyword ishdConstant ISLANG_ARABIC_UAE ISLANG_ARABIC_BAHRAIN syn keyword ishdConstant ISLANG_ARABIC_QATAR ISLANG_AFRIKAANS syn keyword ishdConstant ISLANG_AFRIKAANS_STANDARD ISLANG_ALBANIAN syn keyword ishdConstant ISLANG_ENGLISH_TRINIDAD ISLANG_ALBANIAN_STANDARD syn keyword ishdConstant ISLANG_BASQUE ISLANG_BASQUE_STANDARD ISLANG_BULGARIAN syn keyword ishdConstant ISLANG_BULGARIAN_STANDARD ISLANG_BELARUSIAN syn keyword ishdConstant ISLANG_BELARUSIAN_STANDARD ISLANG_CATALAN syn keyword ishdConstant ISLANG_CATALAN_STANDARD ISLANG_CHINESE syn keyword ishdConstant ISLANG_CHINESE_TAIWAN ISLANG_CHINESE_PRC syn keyword ishdConstant ISLANG_SPANISH_PUERTORICO ISLANG_CHINESE_HONGKONG syn keyword ishdConstant ISLANG_CHINESE_SINGAPORE ISLANG_CROATIAN syn keyword ishdConstant ISLANG_CROATIAN_STANDARD ISLANG_CZECH syn keyword ishdConstant ISLANG_CZECH_STANDARD ISLANG_DANISH syn keyword ishdConstant ISLANG_DANISH_STANDARD ISLANG_DUTCH syn keyword ishdConstant ISLANG_DUTCH_STANDARD ISLANG_DUTCH_BELGIAN syn keyword ishdConstant ISLANG_ENGLISH ISLANG_ENGLISH_BELIZE syn keyword ishdConstant ISLANG_ENGLISH_UNITEDSTATES syn keyword ishdConstant ISLANG_ENGLISH_UNITEDKINGDOM ISLANG_ENGLISH_AUSTRALIAN syn keyword ishdConstant ISLANG_ENGLISH_CANADIAN ISLANG_ENGLISH_NEWZEALAND syn keyword ishdConstant ISLANG_ENGLISH_IRELAND ISLANG_ENGLISH_SOUTHAFRICA syn keyword ishdConstant ISLANG_ENGLISH_JAMAICA ISLANG_ENGLISH_CARIBBEAN syn keyword ishdConstant ISLANG_ESTONIAN ISLANG_ESTONIAN_STANDARD syn keyword ishdConstant ISLANG_FAEROESE ISLANG_FAEROESE_STANDARD ISLANG_FARSI syn keyword ishdConstant ISLANG_FINNISH ISLANG_FINNISH_STANDARD ISLANG_FRENCH syn keyword ishdConstant ISLANG_FRENCH_STANDARD ISLANG_FRENCH_BELGIAN syn keyword ishdConstant ISLANG_FRENCH_CANADIAN ISLANG_FRENCH_SWISS syn keyword ishdConstant ISLANG_FRENCH_LUXEMBOURG ISLANG_FARSI_STANDARD syn keyword ishdConstant ISLANG_GERMAN ISLANG_GERMAN_STANDARD syn keyword ishdConstant ISLANG_GERMAN_SWISS ISLANG_GERMAN_AUSTRIAN syn keyword ishdConstant ISLANG_GERMAN_LUXEMBOURG ISLANG_GERMAN_LIECHTENSTEIN syn keyword ishdConstant ISLANG_GREEK ISLANG_GREEK_STANDARD ISLANG_HEBREW syn keyword ishdConstant ISLANG_HEBREW_STANDARD ISLANG_HUNGARIAN syn keyword ishdConstant ISLANG_HUNGARIAN_STANDARD ISLANG_ICELANDIC syn keyword ishdConstant ISLANG_ICELANDIC_STANDARD ISLANG_INDONESIAN syn keyword ishdConstant ISLANG_INDONESIAN_STANDARD ISLANG_ITALIAN syn keyword ishdConstant ISLANG_ITALIAN_STANDARD ISLANG_ITALIAN_SWISS syn keyword ishdConstant ISLANG_JAPANESE ISLANG_JAPANESE_STANDARD ISLANG_KOREAN syn keyword ishdConstant ISLANG_KOREAN_STANDARD ISLANG_KOREAN_JOHAB syn keyword ishdConstant ISLANG_LATVIAN ISLANG_LATVIAN_STANDARD syn keyword ishdConstant ISLANG_LITHUANIAN ISLANG_LITHUANIAN_STANDARD syn keyword ishdConstant ISLANG_NORWEGIAN ISLANG_NORWEGIAN_BOKMAL syn keyword ishdConstant ISLANG_NORWEGIAN_NYNORSK ISLANG_POLISH syn keyword ishdConstant ISLANG_POLISH_STANDARD ISLANG_PORTUGUESE syn keyword ishdConstant ISLANG_PORTUGUESE_BRAZILIAN ISLANG_PORTUGUESE_STANDARD syn keyword ishdConstant ISLANG_ROMANIAN ISLANG_ROMANIAN_STANDARD ISLANG_RUSSIAN syn keyword ishdConstant ISLANG_RUSSIAN_STANDARD ISLANG_SLOVAK syn keyword ishdConstant ISLANG_SLOVAK_STANDARD ISLANG_SLOVENIAN syn keyword ishdConstant ISLANG_SLOVENIAN_STANDARD ISLANG_SERBIAN syn keyword ishdConstant ISLANG_SERBIAN_LATIN ISLANG_SERBIAN_CYRILLIC syn keyword ishdConstant ISLANG_SPANISH ISLANG_SPANISH_ARGENTINA syn keyword ishdConstant ISLANG_SPANISH_BOLIVIA ISLANG_SPANISH_CHILE syn keyword ishdConstant ISLANG_SPANISH_COLOMBIA ISLANG_SPANISH_COSTARICA syn keyword ishdConstant ISLANG_SPANISH_DOMINICANREPUBLIC ISLANG_SPANISH_ECUADOR syn keyword ishdConstant ISLANG_SPANISH_ELSALVADOR ISLANG_SPANISH_GUATEMALA syn keyword ishdConstant ISLANG_SPANISH_HONDURAS ISLANG_SPANISH_MEXICAN syn keyword ishdConstant ISLANG_THAI_STANDARD ISLANG_SPANISH_MODERNSORT syn keyword ishdConstant ISLANG_SPANISH_NICARAGUA ISLANG_SPANISH_PANAMA syn keyword ishdConstant ISLANG_SPANISH_PARAGUAY ISLANG_SPANISH_PERU syn keyword ishdConstant IISLANG_SPANISH_PUERTORICO syn keyword ishdConstant ISLANG_SPANISH_TRADITIONALSORT ISLANG_SPANISH_VENEZUELA syn keyword ishdConstant ISLANG_SPANISH_URUGUAY ISLANG_SWEDISH syn keyword ishdConstant ISLANG_SWEDISH_FINLAND ISLANG_SWEDISH_STANDARD syn keyword ishdConstant ISLANG_THAI ISLANG_THA_STANDARDI ISLANG_TURKISH syn keyword ishdConstant ISLANG_TURKISH_STANDARD ISLANG_UKRAINIAN syn keyword ishdConstant ISLANG_UKRAINIAN_STANDARD ISLANG_VIETNAMESE syn keyword ishdConstant ISLANG_VIETNAMESE_STANDARD IS_MIPS IS_MONO IS_OS2 syn keyword ishdConstant ISOSL_ALL ISOSL_WIN31 ISOSL_WIN95 ISOSL_NT351 syn keyword ishdConstant ISOSL_NT351_ALPHA ISOSL_NT351_MIPS ISOSL_NT351_PPC syn keyword ishdConstant ISOSL_NT40 ISOSL_NT40_ALPHA ISOSL_NT40_MIPS syn keyword ishdConstant ISOSL_NT40_PPC IS_PENTIUM IS_POWERPC IS_RAMDRIVE syn keyword ishdConstant IS_REMOTE IS_REMOVABLE IS_SVGA IS_UNKNOWN IS_UVGA syn keyword ishdConstant IS_VALID_PATH IS_VGA IS_WIN32S IS_WINDOWS IS_WINDOWS95 syn keyword ishdConstant IS_WINDOWSNT IS_WINOS2 IS_XVGA ISTYPE INFOFILENAME syn keyword ishdConstant ISRES ISUSER ISVERSION LANGUAGE LANGUAGE_DRV LESS_THAN syn keyword ishdConstant LINE_NUMBER LISTBOX_ENTER LISTBOX_SELECT LISTFIRST syn keyword ishdConstant LISTLAST LISTNEXT LISTPREV LOCKEDFILE LOGGING syn keyword ishdConstant LOWER_LEFT LOWER_RIGHT LIST_NULL MAGENTA MAINCAPTION syn keyword ishdConstant MATH_COPROCESSOR MAX_STRING MENU METAFILE MMEDIA_AVI syn keyword ishdConstant MMEDIA_MIDI MMEDIA_PLAYASYNCH MMEDIA_PLAYCONTINUOUS syn keyword ishdConstant MMEDIA_PLAYSYNCH MMEDIA_STOP MMEDIA_WAVE MOUSE syn keyword ishdConstant MOUSE_DRV MEDIA MODE NETWORK NETWORK_DRV NEXT syn keyword ishdConstant NEXTBUTTON NO NO_SUBDIR NO_WRITE_ACCESS NONCONTIGUOUS syn keyword ishdConstant NONEXCLUSIVE NORMAL NORMALMODE NOSET NOTEXISTS NOTRESET syn keyword ishdConstant NOWAIT NULL NUMBERLIST OFF OK ON ONLYDIR OS OSMAJOR syn keyword ishdConstant OSMINOR OTHER_FAILURE OUT_OF_DISK_SPACE PARALLEL syn keyword ishdConstant PARTIAL PATH PATH_EXISTS PAUSE PERSONAL PROFSTRING syn keyword ishdConstant PROGMAN PROGRAMFILES RAM_DRIVE REAL RECORDMODE RED syn keyword ishdConstant REGDB_APPPATH REGDB_APPPATH_DEFAULT REGDB_BINARY syn keyword ishdConstant REGDB_ERR_CONNECTIONEXISTS REGDB_ERR_CORRUPTEDREGISTRY syn keyword ishdConstant REGDB_ERR_FILECLOSE REGDB_ERR_FILENOTFOUND syn keyword ishdConstant REGDB_ERR_FILEOPEN REGDB_ERR_FILEREAD syn keyword ishdConstant REGDB_ERR_INITIALIZATION REGDB_ERR_INVALIDFORMAT syn keyword ishdConstant REGDB_ERR_INVALIDHANDLE REGDB_ERR_INVALIDNAME syn keyword ishdConstant REGDB_ERR_INVALIDPLATFORM REGDB_ERR_OUTOFMEMORY syn keyword ishdConstant REGDB_ERR_REGISTRY REGDB_KEYS REGDB_NAMES REGDB_NUMBER syn keyword ishdConstant REGDB_STRING REGDB_STRING_EXPAND REGDB_STRING_MULTI syn keyword ishdConstant REGDB_UNINSTALL_NAME REGKEY_CLASSES_ROOT syn keyword ishdConstant REGKEY_CURRENT_USER REGKEY_LOCAL_MACHINE REGKEY_USERS syn keyword ishdConstant REMOTE_DRIVE REMOVE REMOVEABLE_DRIVE REPLACE syn keyword ishdConstant REPLACE_ITEM RESET RESTART ROOT ROTATE RUN_MAXIMIZED syn keyword ishdConstant RUN_MINIMIZED RUN_SEPARATEMEMORY SELECTFOLDER syn keyword ishdConstant SELFREGISTER SELFREGISTERBATCH SELFREGISTRATIONPROCESS syn keyword ishdConstant SERIAL SET SETUPTYPE SETUPTYPE_INFO_DESCRIPTION syn keyword ishdConstant SETUPTYPE_INFO_DISPLAYNAME SEVERE SHARE SHAREDFILE syn keyword ishdConstant SHELL_OBJECT_FOLDER SILENTMODE SPLITCOMPRESS SPLITCOPY syn keyword ishdConstant SRCTARGETDIR STANDARD STATUS STATUS95 STATUSBAR syn keyword ishdConstant STATUSDLG STATUSEX STATUSOLD STRINGLIST STYLE_BOLD syn keyword ishdConstant STYLE_ITALIC STYLE_NORMAL STYLE_SHADOW STYLE_UNDERLINE syn keyword ishdConstant SW_HIDE SW_MAXIMIZE SW_MINIMIZE SW_NORMAL SW_RESTORE syn keyword ishdConstant SW_SHOW SW_SHOWMAXIMIZED SW_SHOWMINIMIZED syn keyword ishdConstant SW_SHOWMINNOACTIVE SW_SHOWNA SW_SHOWNOACTIVATE syn keyword ishdConstant SW_SHOWNORMAL SYS_BOOTMACHINE SYS_BOOTWIN syn keyword ishdConstant SYS_BOOTWIN_INSTALL SYS_RESTART SYS_SHUTDOWN SYS_TODOS syn keyword ishdConstant SELECTED_LANGUAGE SHELL_OBJECT_LANGUAGE SRCDIR SRCDISK syn keyword ishdConstant SUPPORTDIR TEXT TILED TIME TRUE TYPICAL TARGETDIR syn keyword ishdConstant TARGETDISK UPPER_LEFT UPPER_RIGHT USER_ADMINISTRATOR syn keyword ishdConstant UNINST VALID_PATH VARIABLE_LEFT VARIABLE_UNDEFINED syn keyword ishdConstant VER_DLL_NOT_FOUND VER_UPDATE_ALWAYS VER_UPDATE_COND syn keyword ishdConstant VERSION VIDEO VOLUMELABEL WAIT WARNING WELCOME WHITE syn keyword ishdConstant WIN32SINSTALLED WIN32SMAJOR WIN32SMINOR WINDOWS_SHARED syn keyword ishdConstant WINMAJOR WINMINOR WINDIR WINDISK WINSYSDIR WINSYSDISK syn keyword ishdConstant XCOPY_DATETIME YELLOW YES syn keyword ishdFunction AskDestPath AskOptions AskPath AskText AskYesNo syn keyword ishdFunction AppCommand AddProfString AddFolderIcon BatchAdd syn keyword ishdFunction BatchDeleteEx BatchFileLoad BatchFileSave BatchFind syn keyword ishdFunction BatchGetFileName BatchMoveEx BatchSetFileName syn keyword ishdFunction ComponentDialog ComponentAddItem syn keyword ishdFunction ComponentCompareSizeRequired ComponentDialog syn keyword ishdFunction ComponentError ComponentFileEnum ComponentFileInfo syn keyword ishdFunction ComponentFilterLanguage ComponentFilterOS syn keyword ishdFunction ComponentGetData ComponentGetItemSize syn keyword ishdFunction ComponentInitialize ComponentIsItemSelected syn keyword ishdFunction ComponentListItems ComponentMoveData syn keyword ishdFunction ComponentSelectItem ComponentSetData ComponentSetTarget syn keyword ishdFunction ComponentSetupTypeEnum ComponentSetupTypeGetData syn keyword ishdFunction ComponentSetupTypeSet ComponentTotalSize syn keyword ishdFunction ComponentValidate ConfigAdd ConfigDelete ConfigFileLoad syn keyword ishdFunction ConfigFileSave ConfigFind ConfigGetFileName syn keyword ishdFunction ConfigGetInt ConfigMove ConfigSetFileName ConfigSetInt syn keyword ishdFunction CmdGetHwndDlg CtrlClear CtrlDir CtrlGetCurSel syn keyword ishdFunction CtrlGetMLEText CtrlGetMultCurSel CtrlGetState syn keyword ishdFunction CtrlGetSubCommand CtrlGetText CtrlPGroups syn keyword ishdFunction CtrlSelectText CtrlSetCurSel CtrlSetFont CtrlSetList syn keyword ishdFunction CtrlSetMLEText CtrlSetMultCurSel CtrlSetState syn keyword ishdFunction CtrlSetText CallDLLFx ChangeDirectory CloseFile syn keyword ishdFunction CopyFile CreateDir CreateFile CreateRegistrySet syn keyword ishdFunction CommitSharedFiles CreateProgramFolder syn keyword ishdFunction CreateShellObjects CopyBytes DefineDialog Delay syn keyword ishdFunction DeleteDir DeleteFile Do DoInstall DeinstallSetReference syn keyword ishdFunction DeinstallStart DialogSetInfo DeleteFolderIcon syn keyword ishdFunction DeleteProgramFolder Disable EzBatchAddPath syn keyword ishdFunction EzBatchAddString ExBatchReplace EnterDisk syn keyword ishdFunction EzConfigAddDriver EzConfigAddString EzConfigGetValue syn keyword ishdFunction EzConfigSetValue EndDialog EzDefineDialog ExistsDir syn keyword ishdFunction ExistsDisk ExitProgMan Enable EzBatchReplace syn keyword ishdFunction FileCompare FileDeleteLine FileGrep FileInsertLine syn keyword ishdFunction FindAllDirs FindAllFiles FindFile FindWindow syn keyword ishdFunction GetFileInfo GetLine GetFont GetDiskSpace GetEnvVar syn keyword ishdFunction GetExtents GetMemFree GetMode GetSystemInfo syn keyword ishdFunction GetValidDrivesList GetWindowHandle GetProfInt syn keyword ishdFunction GetProfString GetFolderNameList GetGroupNameList syn keyword ishdFunction GetItemNameList GetDir GetDisk HIWORD Handler Is syn keyword ishdFunction ISCompareServicePack InstallationInfo LOWORD LaunchApp syn keyword ishdFunction LaunchAppAndWait ListAddItem ListAddString ListCount syn keyword ishdFunction ListCreate ListCurrentItem ListCurrentString syn keyword ishdFunction ListDeleteItem ListDeleteString ListDestroy syn keyword ishdFunction ListFindItem ListFindString ListGetFirstItem syn keyword ishdFunction ListGetFirstString ListGetNextItem ListGetNextString syn keyword ishdFunction ListReadFromFile ListSetCurrentItem syn keyword ishdFunction ListSetCurrentString ListSetIndex ListWriteToFile syn keyword ishdFunction LongPathFromShortPath LongPathToQuote syn keyword ishdFunction LongPathToShortPath MessageBox MessageBeep NumToStr syn keyword ishdFunction OpenFile OpenFileMode PathAdd PathDelete PathFind syn keyword ishdFunction PathGet PathMove PathSet ProgDefGroupType ParsePath syn keyword ishdFunction PlaceBitmap PlaceWindow PlayMMedia QueryProgGroup syn keyword ishdFunction QueryProgItem QueryShellMgr RebootDialog ReleaseDialog syn keyword ishdFunction ReadBytes RenameFile ReplaceProfString ReloadProgGroup syn keyword ishdFunction ReplaceFolderIcon RGB RegDBConnectRegistry syn keyword ishdFunction RegDBCreateKeyEx RegDBDeleteKey RegDBDeleteValue syn keyword ishdFunction RegDBDisConnectRegistry RegDBGetAppInfo RegDBGetItem syn keyword ishdFunction RegDBGetKeyValueEx RegDBKeyExist RegDBQueryKey syn keyword ishdFunction RegDBSetAppInfo RegDBSetDefaultRoot RegDBSetItem syn keyword ishdFunction RegDBSetKeyValueEx SeekBytes SelectDir SetFileInfo syn keyword ishdFunction SelectDir SelectFolder SetupType SprintfBox SdSetupType syn keyword ishdFunction SdSetupTypeEx SdMakeName SilentReadData SilentWriteData syn keyword ishdFunction SendMessage Sprintf System SdAskDestPath SdAskOptions syn keyword ishdFunction SdAskOptionsList SdBitmap SdComponentDialog syn keyword ishdFunction SdComponentDialog2 SdComponentDialogAdv SdComponentMult syn keyword ishdFunction SdConfirmNewDir SdConfirmRegistration SdDisplayTopics syn keyword ishdFunction SdFinish SdFinishReboot SdInit SdLicense SdMakeName syn keyword ishdFunction SdOptionsButtons SdProductName SdRegisterUser syn keyword ishdFunction SdRegisterUserEx SdSelectFolder SdSetupType syn keyword ishdFunction SdSetupTypeEx SdShowAnyDialog SdShowDlgEdit1 syn keyword ishdFunction SdShowDlgEdit2 SdShowDlgEdit3 SdShowFileMods syn keyword ishdFunction SdShowInfoList SdShowMsg SdStartCopy SdWelcome syn keyword ishdFunction SelectFolder ShowGroup ShowProgamFolder SetColor syn keyword ishdFunction SetDialogTitle SetDisplayEffect SetErrorMsg syn keyword ishdFunction SetErrorTitle SetFont SetStatusWindow SetTitle syn keyword ishdFunction SizeWindow StatusUpdate StrCompare StrFind StrGetTokens syn keyword ishdFunction StrLength StrRemoveLastSlash StrSub StrToLower StrToNum syn keyword ishdFunction StrToUpper ShowProgramFolder UnUseDLL UseDLL VarRestore syn keyword ishdFunction VarSave VerUpdateFile VerCompare VerFindFileVersion syn keyword ishdFunction VerGetFileVersion VerSearchAndUpdateFile VerUpdateFile syn keyword ishdFunction Welcome WaitOnDialog WriteBytes WriteLine syn keyword ishdFunction WriteProfString XCopyFile syn keyword ishdTodo contained TODO "integer number, or floating point number without a dot. syn match ishdNumber "\<\d\+\>" "floating point number, with dot syn match ishdNumber "\<\d\+\.\d*\>" "floating point number, starting with a dot syn match ishdNumber "\.\d\+\>" " String constants syn region ishdString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region ishdComment start="//" end="$" contains=ishdTodo syn region ishdComment start="/\*" end="\*/" contains=ishdTodo " Pre-processor commands syn region ishdPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=ishdComment,ishdString if !exists("ishd_no_if0") syn region ishdHashIf0 start="^\s*#\s*if\s\+0\>" end=".\|$" contains=ishdHashIf0End syn region ishdHashIf0End contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=ishdHashIf0Skip syn region ishdHashIf0Skip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=ishdHashIf0Skip endif syn region ishdIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match ishdInclude +^\s*#\s*include\>\s*"+ contains=ishdIncluded syn cluster ishdPreProcGroup contains=ishdPreCondit,ishdIncluded,ishdInclude,ishdDefine,ishdHashIf0,ishdHashIf0End,ishdHashIf0Skip,ishdNumber syn region ishdDefine start="^\s*#\s*\(define\|undef\)\>" end="$" contains=ALLBUT,@ishdPreProcGroup " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link ishdNumber Number hi def link ishdError Error hi def link ishdStatement Statement hi def link ishdString String hi def link ishdComment Comment hi def link ishdTodo Todo hi def link ishdFunction Identifier hi def link ishdConstant PreProc hi def link ishdType Type hi def link ishdInclude Include hi def link ishdDefine Macro hi def link ishdIncluded String hi def link ishdPreCondit PreCondit hi def link ishdHashIf0Skip ishdHashIf0 hi def link ishdHashIf0End ishdHashIf0 hi def link ishdHashIf0 Comment let b:current_syntax = "ishd" " vim: ts=8 PK!78!8!vim80/syntax/nastran.vimnu[" Vim syntax file " Language: NASTRAN input/DMAP " Maintainer: Tom Kowalski " Last change: April 27, 2001 " Thanks to the authors and maintainers of fortran.vim. " Since DMAP shares some traits with fortran, this syntax file " is based on the fortran.vim syntax file. "---------------------------------------------------------------------- " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " DMAP is not case dependent syn case ignore " "--------------------DMAP SYNTAX--------------------------------------- " " -------Executive Modules and Statements " syn keyword nastranDmapexecmod call dbview delete end equiv equivx exit syn keyword nastranDmapexecmod file message purge purgex return subdmap syn keyword nastranDmapType type syn keyword nastranDmapLabel go to goto syn keyword nastranDmapRepeat if else elseif endif then syn keyword nastranDmapRepeat do while syn region nastranDmapString start=+"+ end=+"+ oneline syn region nastranDmapString start=+'+ end=+'+ oneline " If you don't like initial tabs in dmap (or at all) "syn match nastranDmapIniTab "^\t.*$" "syn match nastranDmapTab "\t" " Any integer syn match nastranDmapNumber "-\=\<[0-9]\+\>" " floating point number, with dot, optional exponent syn match nastranDmapFloat "\<[0-9]\+\.[0-9]*\([edED][-+]\=[0-9]\+\)\=\>" " floating point number, starting with a dot, optional exponent syn match nastranDmapFloat "\.[0-9]\+\([edED][-+]\=[0-9]\+\)\=\>" " floating point number, without dot, with exponent syn match nastranDmapFloat "\<[0-9]\+[edED][-+]\=[0-9]\+\>" syn match nastranDmapLogical "\(true\|false\)" syn match nastranDmapPreCondit "^#define\>" syn match nastranDmapPreCondit "^#include\>" " " -------Comments may be contained in another line. " syn match nastranDmapComment "^[\$].*$" syn match nastranDmapComment "\$.*$" syn match nastranDmapComment "^[\$].*$" contained syn match nastranDmapComment "\$.*$" contained " Treat all past 72nd column as a comment. Do not work with tabs! " Breaks down when 72-73rd column is in another match (eg number or keyword) syn match nastranDmapComment "^.\{-72}.*$"lc=72 contained " " -------Utility Modules " syn keyword nastranDmapUtilmod append copy dbc dbdict dbdir dmin drms1 syn keyword nastranDmapUtilmod dtiin eltprt ifp ifp1 inputt2 inputt4 lamx syn keyword nastranDmapUtilmod matgen matgpr matmod matpch matprn matprt syn keyword nastranDmapUtilmod modtrl mtrxin ofp output2 output4 param syn keyword nastranDmapUtilmod paraml paramr prtparam pvt scalar syn keyword nastranDmapUtilmod seqp setval tabedit tabprt tabpt vec vecplot syn keyword nastranDmapUtilmod xsort " " -------Matrix Modules " syn keyword nastranDmapMatmod add add5 cead dcmp decomp diagonal fbs merge syn keyword nastranDmapMatmod mpyad norm read reigl smpyad solve solvit syn keyword nastranDmapMatmod trnsp umerge umerge1 upartn dmiin partn syn region nastranDmapMatmod start=+^ *[Dd][Mm][Ii]+ end=+[\/]+ " " -------Implicit Functions " syn keyword nastranDmapImplicit abs acos acosh andl asin asinh atan atan2 syn keyword nastranDmapImplicit atanh atanh2 char clen clock cmplx concat1 syn keyword nastranDmapImplicit concat2 concat3 conjg cos cosh dble diagoff syn keyword nastranDmapImplicit diagon dim dlablank dlxblank dprod eqvl exp syn keyword nastranDmapImplicit getdiag getsys ichar imag impl index indexstr syn keyword nastranDmapImplicit int itol leq lge lgt lle llt lne log log10 syn keyword nastranDmapImplicit logx ltoi mcgetsys mcputsys max min mod neqvl syn keyword nastranDmapImplicit nint noop normal notl numeq numge numgt numle syn keyword nastranDmapImplicit numlt numne orl pi precison putdiag putsys syn keyword nastranDmapImplicit rand rdiagon real rtimtogo setcore sign sin syn keyword nastranDmapImplicit sinh sngl sprod sqrt substrin tan tanh syn keyword nastranDmapImplicit timetogo wlen xorl " " "--------------------INPUT FILE SYNTAX--------------------------------------- " " " -------Nastran Statement " syn keyword nastranNastranCard nastran " " -------The File Management Section (FMS) " syn region nastranFMSCard start=+^ *[Aa][Cc][Qq][Uu][Ii]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Aa][Ss][Ss][Ii][Gg]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Cc][oO][Nn][Nn][Ee]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Cc][Ll][Ee]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Dd][Ii][Cc]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Dd][Ii][Rr]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Ff][Ii][Xx]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Ll][Oo][Aa]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Ll][Oo][Cc]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Ss][Ee][Tt]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Uu][Nn][Ll]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Uu][Pp][Dd]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Ee][Ff][Ii][Nn]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Ee][Nn][Dd][Jj][Oo]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Ee][Xx][Pp][Aa][Nn]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Ii][Nn][Cc][Ll][Uu]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Ii][Nn][Ii][Tt]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Pp][Rr][Oo][Jj]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Rr][Ee][Ss][Tt]+ end=+$+ oneline syn match nastranDmapUtilmod "^ *[Rr][Ee][Ss][Tt][Aa].*,.*," contains=nastranDmapComment " " -------Executive Control Section " syn region nastranECSCard start=+^ *[Aa][Ll][Tt][Ee][Rr]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Aa][Pp][Pp]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Cc][Oo][Mm][Pp][Ii]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Dd][Ii][Aa][Gg] + end=+$+ oneline syn region nastranECSCard start=+^ *[Ee][Cc][Hh][Oo]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Ee][Nn][Dd][Aa][Ll]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Ii][Dd]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Ii][Nn][Cc][Ll][Uu]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Ll][Ii][Nn][Kk]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Mm][Aa][Ll][Tt][Ee]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Ss][Oo][Ll] + end=+$+ oneline syn region nastranECSCard start=+^ *[Tt][Ii][Mm][Ee]+ end=+$+ oneline " " -------Delimiters " syn match nastranDelimiter "[Cc][Ee][Nn][Dd]" contained syn match nastranDelimiter "[Bb][Ee][Gg][Ii][Nn]" contained syn match nastranDelimiter " *[Bb][Uu][Ll][Kk]" contained syn match nastranDelimiter "[Ee][Nn][Dd] *[dD][Aa][Tt][Aa]" contained " " -------Case Control section " syn region nastranCC start=+^ *[Cc][Ee][Nn][Dd]+ end=+^ *[Bb][Ee][Gg][Ii][Nn]+ contains=nastranDelimiter,nastranBulkData,nastranDmapComment " " -------Bulk Data section " syn region nastranBulkData start=+ *[Bb][Uu][Ll][Kk] *$+ end=+^ [Ee][Nn][Dd] *[Dd]+ contains=nastranDelimiter,nastranDmapComment " " -------The following cards may appear in multiple sections of the file " syn keyword nastranUtilCard ECHOON ECHOOFF INCLUDE PARAM " The default methods for highlighting. Can be overridden later hi def link nastranDmapexecmod Statement hi def link nastranDmapType Type hi def link nastranDmapPreCondit Error hi def link nastranDmapUtilmod PreProc hi def link nastranDmapMatmod nastranDmapUtilmod hi def link nastranDmapString String hi def link nastranDmapNumber Constant hi def link nastranDmapFloat nastranDmapNumber hi def link nastranDmapInitTab nastranDmapNumber hi def link nastranDmapTab nastranDmapNumber hi def link nastranDmapLogical nastranDmapExecmod hi def link nastranDmapImplicit Identifier hi def link nastranDmapComment Comment hi def link nastranDmapRepeat nastranDmapexecmod hi def link nastranNastranCard nastranDmapPreCondit hi def link nastranECSCard nastranDmapUtilmod hi def link nastranFMSCard nastranNastranCard hi def link nastranCC nastranDmapexecmod hi def link nastranDelimiter Special hi def link nastranBulkData nastranDmapType hi def link nastranUtilCard nastranDmapexecmod let b:current_syntax = "nastran" "EOF vim: ts=8 noet tw=120 sw=8 sts=0 PK!  vim80/syntax/jovial.vimnu[" Vim syntax file " Language: JOVIAL J73 " Version: 1.2 " Maintainer: Paul McGinnis " Last Change: 2011/06/17 " Remark: Based on MIL-STD-1589C for JOVIAL J73 language " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore syn keyword jovialTodo TODO FIXME XXX contained " JOVIAL beads - first digit is number of bits, [0-9A-V] is the bit value " representing 0-31 (for 5 bits on the bead) syn match jovialBitConstant "[1-5]B'[0-9A-V]'" syn match jovialNumber "\<\d\+\>" syn match jovialFloat "\d\+E[-+]\=\d\+" syn match jovialFloat "\d\+\.\d*\(E[-+]\=\d\+\)\=" syn match jovialFloat "\.\d\+\(E[-+]\=\d\+\)\=" syn region jovialComment start=/"/ end=/"/ contains=jovialTodo syn region jovialComment start=/%/ end=/%/ contains=jovialTodo " JOVIAL variable names. This rule is to prevent conflicts with strings. " Handle special case where ' character can be part of a JOVIAL variable name. syn match jovialIdentifier "[A-Z\$][A-Z0-9'\$]\+" syn region jovialString start="\s*'" skip=/''/ end=/'/ oneline " JOVIAL compiler directives -- see Section 9 in MIL-STD-1589C syn region jovialPreProc start="\s*![A-Z]\+" end=/;/ syn keyword jovialOperator AND OR NOT XOR EQV MOD " See Section 2.1 in MIL-STD-1589C for data types syn keyword jovialType ITEM B C P V syn match jovialType "\" syn match jovialType "\" syn match jovialType "\" syn match jovialType "\" syn keyword jovialStorageClass STATIC CONSTANT PARALLEL BLOCK N M D W syn keyword jovialStructure TABLE STATUS syn keyword jovialConstant NULL syn keyword jovialBoolean FALSE TRUE syn keyword jovialTypedef TYPE syn keyword jovialStatement ABORT BEGIN BY BYREF BYRES BYVAL CASE COMPOOL syn keyword jovialStatement DEF DEFAULT DEFINE ELSE END EXIT FALLTHRU FOR syn keyword jovialStatement GOTO IF INLINE INSTANCE LABEL LIKE OVERLAY POS syn keyword jovialStatement PROC PROGRAM REC REF RENT REP RETURN START STOP syn keyword jovialStatement TERM THEN WHILE " JOVIAL extensions, see section 8.2.2 in MIL-STD-1589C syn keyword jovialStatement CONDITION ENCAPSULATION EXPORTS FREE HANDLER IN INTERRUPT NEW syn keyword jovialStatement PROTECTED READONLY REGISTER SIGNAL TO UPDATE WITH WRITEONLY ZONE " implementation specific constants and functions, see section 1.4 in MIL-STD-1589C syn keyword jovialConstant BITSINBYTE BITSINWORD LOCSINWORD syn keyword jovialConstant BYTESINWORD BITSINPOINTER INTPRECISION syn keyword jovialConstant FLOATPRECISION FIXEDPRECISION FLOATRADIX syn keyword jovialConstant MAXFLOATPRECISION MAXFIXEDPRECISION syn keyword jovialConstant MAXINTSIZE MAXBYTES MAXBITS syn keyword jovialConstant MAXTABLESIZE MAXSTOP MINSTOP MAXSIGDIGITS syn keyword jovialFunction BYTEPOS MAXINT MININT syn keyword jovialFunction IMPLFLOATPRECISION IMPLFIXEDPRECISION IMPLINTSIZE syn keyword jovialFunction MINSIZE MINFRACTION MINSCALE MINRELPRECISION syn keyword jovialFunction MAXFLOAT MINFLOAT FLOATRELPRECISION syn keyword jovialFunction FLOATUNDERFLOW MAXFIXED MINFIXED " JOVIAL built-in functions syn keyword jovialFunction LOC NEXT BIT BYTE SHIFTL SHIFTR ABS SGN BITSIZE syn keyword jovialFunction BYTESIZE WORDSIZE LBOUND UBOUND NWDSEN FIRST syn keyword jovialFunction LAST NENT " Define the default highlighting. hi def link jovialBitConstant Number hi def link jovialBoolean Boolean hi def link jovialComment Comment hi def link jovialConstant Constant hi def link jovialFloat Float hi def link jovialFunction Function " No color highlighting for JOVIAL identifiers. See above, " this is to prevent confusion with JOVIAL strings "hi def link jovialIdentifier Identifier hi def link jovialNumber Number hi def link jovialOperator Operator hi def link jovialPreProc PreProc hi def link jovialStatement Statement hi def link jovialStorageClass StorageClass hi def link jovialString String hi def link jovialStructure Structure hi def link jovialTodo Todo hi def link jovialType Type hi def link jovialTypedef Typedef let b:current_syntax = "jovial" " vim: ts=8 PK!T vim80/syntax/privoxy.vimnu[" Vim syntax file " Language: Privoxy actions file " Maintainer: Doug Kearns " URL: http://gus.gscit.monash.edu.au/~djkea2/vim/syntax/privoxy.vim " Last Change: 2007 Mar 30 " Privoxy 3.0.6 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword=@,48-57,_,- syn keyword privoxyTodo contained TODO FIXME XXX NOTE syn match privoxyComment "#.*" contains=privoxyTodo,@Spell syn region privoxyActionLine matchgroup=privoxyActionLineDelimiter start="^\s*\zs{" end="}\ze\s*$" \ contains=privoxyEnabledPrefix,privoxyDisabledPrefix syn match privoxyEnabledPrefix "\%(^\|\s\|{\)\@<=+\l\@=" nextgroup=privoxyAction,privoxyFilterAction contained syn match privoxyDisabledPrefix "\%(^\|\s\|{\)\@<=-\l\@=" nextgroup=privoxyAction,privoxyFilterAction contained syn match privoxyAction "\%(add-header\|block\|content-type-overwrite\|crunch-client-header\|crunch-if-none-match\)\>" contained syn match privoxyAction "\%(crunch-incoming-cookies\|crunch-outgoing-cookies\|crunch-server-header\|deanimate-gifs\)\>" contained syn match privoxyAction "\%(downgrade-http-version\|fast-redirects\|filter-client-headers\|filter-server-headers\)\>" contained syn match privoxyAction "\%(filter\|force-text-mode\|handle-as-empty-document\|handle-as-image\)\>" contained syn match privoxyAction "\%(hide-accept-language\|hide-content-disposition\|hide-forwarded-for-headers\)\>" contained syn match privoxyAction "\%(hide-from-header\|hide-if-modified-since\|hide-referrer\|hide-user-agent\|inspect-jpegs\)\>" contained syn match privoxyAction "\%(kill-popups\|limit-connect\|overwrite-last-modified\|prevent-compression\|redirect\)\>" contained syn match privoxyAction "\%(send-vanilla-wafer\|send-wafer\|session-cookies-only\|set-image-blocker\)\>" contained syn match privoxyAction "\%(treat-forbidden-connects-like-blocks\)\>" syn match privoxyFilterAction "filter{[^}]*}" contained contains=privoxyFilterArg,privoxyActionBraces syn match privoxyActionBraces "[{}]" contained syn keyword privoxyFilterArg js-annoyances js-events html-annoyances content-cookies refresh-tags unsolicited-popups all-popups \ img-reorder banners-by-size banners-by-link webbugs tiny-textforms jumping-windows frameset-borders demoronizer \ shockwave-flash quicktime-kioskmode fun crude-parental ie-exploits site-specifics no-ping google yahoo msn blogspot \ x-httpd-php-to-html html-to-xml xml-to-html hide-tor-exit-notation contained " Alternative spellings syn match privoxyAction "\%(kill-popup\|hide-referer\|prevent-keeping-cookies\)\>" contained " Pre-3.0 compatibility syn match privoxyAction "\%(no-cookie-read\|no-cookie-set\|prevent-reading-cookies\|prevent-setting-cookies\)\>" contained syn match privoxyAction "\%(downgrade\|hide-forwarded\|hide-from\|image\|image-blocker\|no-compression\)\>" contained syn match privoxyAction "\%(no-cookies-keep\|no-cookies-read\|no-cookies-set\|no-popups\|vanilla-wafer\|wafer\)\>" contained syn match privoxySetting "\" syn match privoxyHeader "^\s*\zs{{\%(alias\|settings\)}}\ze\s*$" hi def link privoxyAction Identifier hi def link privoxyFilterAction Identifier hi def link privoxyActionLineDelimiter Delimiter hi def link privoxyDisabledPrefix SpecialChar hi def link privoxyEnabledPrefix SpecialChar hi def link privoxyHeader PreProc hi def link privoxySetting Identifier hi def link privoxyFilterArg Constant hi def link privoxyComment Comment hi def link privoxyTodo Todo let b:current_syntax = "privoxy" let &cpo = s:cpo_save unlet s:cpo_save PK!vim80/syntax/group.vimnu[" Vim syntax file " Language: group(5) user group file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2012-08-05 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match groupBegin display '^' nextgroup=groupName syn match groupName contained display '[^:]\+' \ nextgroup=groupPasswordColon syn match groupPasswordColon contained display ':' \ nextgroup=groupPassword,groupShadow syn match groupPassword contained display '[^:]*' \ nextgroup=groupGIDColon syn match groupShadow contained display '[x*]' nextgroup=groupGIDColon syn match groupGIDColon contained display ':' nextgroup=groupGID syn match groupGID contained display '\d*' \ nextgroup=groupUserListColon syn match groupUserListColon contained display ':' nextgroup=groupUserList syn match groupUserList contained '[^,]\+' \ nextgroup=groupUserListSep syn match groupUserListSep contained display ',' nextgroup=groupUserList hi def link groupDelimiter Normal hi def link groupName Identifier hi def link groupPasswordColon groupDelimiter hi def link groupPassword Number hi def link groupShadow Special hi def link groupGIDColon groupDelimiter hi def link groupGID Number hi def link groupUserListColon groupDelimiter hi def link groupUserList Identifier hi def link groupUserListSep groupDelimiter let b:current_syntax = "group" let &cpo = s:cpo_save unlet s:cpo_save PK!Y. . vim80/syntax/dictconf.vimnu[" Vim syntax file " Language: dict(1) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword dictconfTodo contained TODO FIXME XXX NOTE syn region dictconfComment display oneline start='#' end='$' \ contains=dictconfTodo,@Spell syn match dictconfBegin display '^' \ nextgroup=dictconfKeyword,dictconfComment \ skipwhite syn keyword dictconfKeyword contained server \ nextgroup=dictconfServer skipwhite syn keyword dictconfKeyword contained pager \ nextgroup=dictconfPager syn match dictconfServer contained display \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*' \ nextgroup=dictconfServerOptG skipwhite syn region dictconfServer contained display oneline \ start=+"+ skip=+""+ end=+"+ \ nextgroup=dictconfServerOptG skipwhite syn region dictconfServerOptG contained transparent \ matchgroup=dictconfServerOptsD start='{' \ matchgroup=dictconfServerOptsD end='}' \ contains=dictconfServerOpts,dictconfComment syn keyword dictconfServerOpts contained port \ nextgroup=dictconfNumber skipwhite syn keyword dictconfServerOpts contained user \ nextgroup=dictconfUsername skipwhite syn match dictconfUsername contained display \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*' \ nextgroup=dictconfSecret skipwhite syn region dictconfUsername contained display oneline \ start=+"+ skip=+""+ end=+"+ \ nextgroup=dictconfSecret skipwhite syn match dictconfSecret contained display \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*' syn region dictconfSecret contained display oneline \ start=+"+ skip=+""+ end=+"+ syn match dictconfNumber contained '\<\d\+\>' syn match dictconfPager contained display \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*' syn region dictconfPager contained display oneline \ start=+"+ skip=+""+ end=+"+ hi def link dictconfTodo Todo hi def link dictconfComment Comment hi def link dictconfKeyword Keyword hi def link dictconfServer String hi def link dictconfServerOptsD Delimiter hi def link dictconfServerOpts Identifier hi def link dictconfUsername String hi def link dictconfSecret Special hi def link dictconfNumber Number hi def link dictconfPager String let b:current_syntax = "dictconf" let &cpo = s:cpo_save unlet s:cpo_save PK!{H vim80/syntax/msidl.vimnu[" Vim syntax file " Language: MS IDL (Microsoft dialect of Interface Description Language) " Maintainer: Vadim Zeitlin " Last Change: 2012 Feb 12 by Thilo Six " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " Misc basic syn match msidlId "[a-zA-Z][a-zA-Z0-9_]*" syn match msidlUUID "{\?[[:xdigit:]]\{8}-\([[:xdigit:]]\{4}-\)\{3}[[:xdigit:]]\{12}}\?" syn region msidlString start=/"/ skip=/\\\(\\\\\)*"/ end=/"/ syn match msidlLiteral "\d\+\(\.\d*\)\=" syn match msidlLiteral "\.\d\+" syn match msidlSpecial contained "[]\[{}:]" " Comments syn keyword msidlTodo contained TODO FIXME XXX syn region msidlComment start="/\*" end="\*/" contains=msidlTodo syn match msidlComment "//.*" contains=msidlTodo syn match msidlCommentError "\*/" " C style Preprocessor syn region msidlIncluded contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+ syn match msidlIncluded contained "<[^>]*>" syn match msidlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=msidlIncluded,msidlString syn region msidlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=msidlComment,msidlCommentError syn region msidlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=msidlLiteral, msidlString " Attributes syn keyword msidlAttribute contained in out propget propput propputref retval syn keyword msidlAttribute contained aggregatable appobject binadable coclass control custom default defaultbind defaultcollelem defaultvalue defaultvtable dispinterface displaybind dual entry helpcontext helpfile helpstring helpstringdll hidden id immediatebind lcid library licensed nonbrowsable noncreatable nonextensible oleautomation optional object public readonly requestedit restricted source string uidefault usesgetlasterror vararg version syn match msidlAttribute /uuid(.*)/he=s+4 contains=msidlUUID syn match msidlAttribute /helpstring(.*)/he=s+10 contains=msidlString syn region msidlAttributes start="\[" end="]" keepend contains=msidlSpecial,msidlString,msidlAttribute,msidlComment,msidlCommentError " Keywords syn keyword msidlEnum enum syn keyword msidlImport import importlib syn keyword msidlStruct interface library coclass syn keyword msidlTypedef typedef " Types syn keyword msidlStandardType byte char double float hyper int long short void wchar_t syn keyword msidlStandardType BOOL BSTR HRESULT VARIANT VARIANT_BOOL syn region msidlSafeArray start="SAFEARRAY(" end=")" contains=msidlStandardType syn sync lines=50 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link msidlInclude Include hi def link msidlPreProc PreProc hi def link msidlPreCondit PreCondit hi def link msidlDefine Macro hi def link msidlIncluded String hi def link msidlString String hi def link msidlComment Comment hi def link msidlTodo Todo hi def link msidlSpecial SpecialChar hi def link msidlLiteral Number hi def link msidlUUID Number hi def link msidlImport Include hi def link msidlEnum StorageClass hi def link msidlStruct Structure hi def link msidlTypedef Typedef hi def link msidlAttribute StorageClass hi def link msidlStandardType Type hi def link msidlSafeArray Type let b:current_syntax = "msidl" let &cpo = s:cpo_save unlet s:cpo_save " vi: set ts=8 sw=4: PK!'}vim80/syntax/asmh8300.vimnu[" Vim syntax file " Language: Hitachi H-8300h specific syntax for GNU Assembler " Maintainer: Kevin Dahlhausen " Last Change: 2002 Sep 19 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore syn match asmDirective "\.h8300[h]*" "h8300[h] registers syn match asmReg "e\=r[0-7][lh]\=" "h8300[h] opcodes - order is important! syn match asmOpcode "add\.[lbw]" syn match asmOpcode "add[sx :]" syn match asmOpcode "and\.[lbw]" syn match asmOpcode "bl[deots]" syn match asmOpcode "cmp\.[lbw]" syn match asmOpcode "dec\.[lbw]" syn match asmOpcode "divx[us].[bw]" syn match asmOpcode "ext[su]\.[lw]" syn match asmOpcode "inc\.[lw]" syn match asmOpcode "mov\.[lbw]" syn match asmOpcode "mulx[su]\.[bw]" syn match asmOpcode "neg\.[lbw]" syn match asmOpcode "not\.[lbw]" syn match asmOpcode "or\.[lbw]" syn match asmOpcode "pop\.[wl]" syn match asmOpcode "push\.[wl]" syn match asmOpcode "rotx\=[lr]\.[lbw]" syn match asmOpcode "sha[lr]\.[lbw]" syn match asmOpcode "shl[lr]\.[lbw]" syn match asmOpcode "sub\.[lbw]" syn match asmOpcode "xor\.[lbw]" syn keyword asmOpcode "andc" "band" "bcc" "bclr" "bcs" "beq" "bf" "bge" "bgt" syn keyword asmOpcode "bhi" "bhs" "biand" "bild" "bior" "bist" "bixor" "bmi" syn keyword asmOpcode "bne" "bnot" "bnp" "bor" "bpl" "bpt" "bra" "brn" "bset" syn keyword asmOpcode "bsr" "btst" "bst" "bt" "bvc" "bvs" "bxor" "cmp" "daa" syn keyword asmOpcode "das" "eepmov" "eepmovw" "inc" "jmp" "jsr" "ldc" "movfpe" syn keyword asmOpcode "movtpe" "mov" "nop" "orc" "rte" "rts" "sleep" "stc" syn keyword asmOpcode "sub" "trapa" "xorc" syn case match " Read the general asm syntax runtime! syntax/asm.vim " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link asmOpcode Statement hi def link asmRegister Identifier " My default-color overrides: "hi asmOpcode ctermfg=yellow "hi asmReg ctermfg=lightmagenta let b:current_syntax = "asmh8300" " vim: ts=8 PK!kzvim80/syntax/catalog.vimnu[" Vim syntax file " Language: sgml catalog file " Maintainer: Johannes Zellner " Last Change: Fr, 04 Nov 2005 12:46:45 CET " Filenames: /etc/sgml.catalog " $Id: catalog.vim,v 1.2 2005/11/23 21:11:10 vimboss Exp $ " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore " strings syn region catalogString start=+"+ skip=+\\\\\|\\"+ end=+"+ keepend syn region catalogString start=+'+ skip=+\\\\\|\\'+ end=+'+ keepend syn region catalogComment start=+--+ end=+--+ contains=catalogTodo syn keyword catalogTodo TODO FIXME XXX NOTE contained syn keyword catalogKeyword DOCTYPE OVERRIDE PUBLIC DTDDECL ENTITY CATALOG " The default highlighting. hi def link catalogString String hi def link catalogComment Comment hi def link catalogTodo Todo hi def link catalogKeyword Statement let b:current_syntax = "catalog" PK!.vim80/syntax/doxygen.vimnu[" DoxyGen syntax hilighting extension for c/c++/idl/java " Language: doxygen on top of c, cpp, idl, java, php " Maintainer: Michael Geddes " Author: Michael Geddes " Last Change: November 2017 (\throws by Candy Gumdrop) " Version: 1.27 " " Copyright 2004-2017 Michael Geddes " Please feel free to use, modify & distribute all or part of this script, " providing this copyright message remains. " I would appreciate being acknowledged in any derived scripts, and would " appreciate and welcome any updates, modifications or suggestions. " NOTE: Comments welcome! " " There are two variables that control the syntax highlighting produced by this " script: " doxygen_enhanced_colour - Use the (non-standard) original colours designed " for this highlighting. " doxygen_my_rendering - Disable the HTML bold/italic/underline rendering. " " A brief description without '.' or '!' will cause the end comment " character to be marked as an error. You can define the colour of this using " the highlight doxygenErrorComment. " A \link without an \endlink will cause an error highlight on the end-comment. " This is defined by doxygenLinkError " " The variable g:doxygen_codeword_font can be set to the guifont for marking \c " words - a 'typewriter' like font normally. Spaces must be escaped. It can " also be set to any highlight attribute. Alternatively, a highlight for doxygenCodeWord " can be used to override it. " " By default, highlighting is done assuming you have the JAVADOC_AUTOBRIEF " setting turned on in your Doxygen configuration. If you don't, you " can set the variable g:doxygen_javadoc_autobrief to 0 to have the " highlighting more accurately reflect the way Doxygen will interpret your " comments. " " Support for cpp, c, idl, doxygen and php. " " Special thanks to: Wu Yongwei, Toby Allsopp " if exists('b:suppress_doxygen') unlet b:suppress_doxygen finish endif if exists('b:current_syntax') && b:current_syntax =~ 'doxygen' && !exists('doxygen_debug_script') finish endif let s:cpo_save = &cpo try set cpo&vim " Start of Doxygen syntax hilighting: " " C/C++ Style line comments syn match doxygenCommentWhite +\s*\ze/\*\(\*/\)\@![*!]+ containedin=phpRegion syn match doxygenCommentWhite +\s*\ze//[/!]+ containedin=phpRegion syn match doxygenCommentWhite +\s*\ze/\*\(\*/\)\@![*!]+ syn match doxygenCommentWhite +\s*\ze//[/!]+ containedin=phpRegion syn region doxygenComment start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contains=doxygenSyncStart,doxygenStart,doxygenTODO,doxygenLeadingWhite keepend fold containedin=phpRegion syn region doxygenCommentL start=+//[/!]<\@!+me=e-1 end=+$+ contains=doxygenLeadingLWhite,doxygenStartL,@Spell keepend skipwhite skipnl nextgroup=doxygenCommentWhite2 fold containedin=phpRegion syn region doxygenCommentL start=+//[/!]<+me=e-2 end=+$+ contains=doxygenStartL,@Spell keepend skipwhite skipnl fold containedin=phpRegion syn region doxygenCommentL start=+//@\ze[{}]+ end=+$+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial,@Spell fold containedin=phpRegion syn region doxygenComment start=+/\*@\ze[{}]+ end=+\*/+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial,@Spell fold containedin=phpRegion " Single line brief followed by multiline comment. syn match doxygenCommentWhite2 +\_s*\ze/\*\(\*/\)\@![*!]+ contained nextgroup=doxygenComment2 syn region doxygenComment2 start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contained contains=doxygenSyncStart2,doxygenStart2,doxygenTODO keepend fold " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched. syn match doxygenSyncStart2 +[^*/]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenStartSpecial,doxygenSkipComment,doxygenStartSkip2 skipwhite skipnl " Skip empty lines at the start for when comments start on the 2nd/3rd line. syn match doxygenStartSkip2 +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenBody,doxygenStartSpecial,doxygenStartSkipWhite skipwhite skipnl syn match doxygenStartSkip2 +^\s*\*$+ contained nextgroup=doxygenBody,doxygenStartSpecial,doxygenStartSkipWhite skipwhite skipnl syn match doxygenStart2 +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenStartSpecial,doxygenStartSkip2 skipwhite skipnl " Match the Starting pattern (effectively creating the start of a BNF) if !exists('g:doxygen_javadoc_autobrief') || g:doxygen_javadoc_autobrief syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl syn match doxygenLeadingLWhite +\s\++ contained nextgroup=doxygenPrevL,doxygenBriefL,doxygenSpecial syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenLeaingLWhite,doxygenPrevL,doxygenBriefL,doxygenSpecial " Match the first sentence as a brief comment if ! exists('g:doxygen_end_punctuation') let g:doxygen_end_punctuation='[.]' endif exe 'syn region doxygenBrief contained start=+[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]+ start=+\(^\s*\)\@\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\@=+ contains=doxygenSmallSpecial,doxygenContinueCommentWhite,doxygenLeadingWhite,doxygenBriefEndComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell skipnl nextgroup=doxygenBody' syn match doxygenBriefEndComment +\*/+ contained exe 'syn region doxygenBriefL start=+@\k\@!\|[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@]+ start=+\<+ skip=+'.doxygen_end_punctuation.'\S+ end=+'.doxygen_end_punctuation.'\|$+ contained contains=doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell keepend' syn match doxygenPrevL +<+ contained nextgroup=doxygenBriefL,doxygenSpecial skipwhite else syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenLeadingLWhite,doxygenPrevL,doxygenLine,doxygenSpecial syn match doxygenLeadingLWhite +\s\++ contained nextgroup=doxygenPrevL,doxygenLine,doxygenSpecial syn region doxygenLine start=+@\k\@!\|[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@<]+ start=+\<+ end='$' contained contains=doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell keepend syn match doxygenPrevL +<+ contained nextgroup=doxygenLine,doxygenSpecial skipwhite endif " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched. syn match doxygenSyncStart +\ze[^*/]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl " Match an [@\]brief so that it moves to body-mode. " " " syn match doxygenBriefLine contained syn match doxygenBriefSpecial contained +[@\\]+ nextgroup=doxygenBriefWord skipwhite " syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained " end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ "syn region doxygenBriefLine contained start=+\<\k+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contains=doxygenContinueCommentWhite,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell skipwhite keepend matchgroup=xxx syn region doxygenBriefLine contained start=+\<\k+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ skipwhite keepend matchgroup=xxx " syn region doxygenBriefLine matchgroup=xxxy contained start=+\<\k.\++ skip=+^\s*\k+ end=+end+ skipwhite keepend "doxygenFindBriefSpecial, "" syn region doxygenSpecialMultilineDesc start=+.\++ contained contains=doxygenSpecialContinueCommentWhite,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell skipwhite keepend " Match a '<' for applying a comment to the previous element. syn match doxygenPrev +<+ contained nextgroup=doxygenBrief,doxygenBody,doxygenSpecial,doxygenStartSkipWhite skipwhite if exists("c_comment_strings") " These are anti-Doxygen comments. If there are more than two asterisks or 3 '/'s " then turn the comments back into normal C comments. syn region cComment start="/\*\*\*" end="\*/" contains=@cCommentGroup,cCommentString,cCharacter,cNumbersCom,cSpaceError syn region cCommentL start="////" skip="\\$" end="$" contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError else syn region cComment start="/\*\*\*" end="\*/" contains=@cCommentGroup,cSpaceError syn region cCommentL start="////" skip="\\$" end="$" contains=@cCommentGroup,cSpaceError endif " Special commands at the start of the area: starting with '@' or '\' syn region doxygenStartSpecial contained start=+[@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=doxygenSpecial nextgroup=doxygenSkipComment skipnl keepend syn match doxygenSkipComment contained +^\s*\*/\@!+ nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenPage skipwhite "syn region doxygenBodyBit contained start=+$+ " The main body of a doxygen comment. syn region doxygenBody contained start=+\(/\*[*!]\)\@|]\@|#]\+[-0-9A-Za-z_%=+*/!~>|]\@!\|\\[\\<>&.]@\|[.,][0-9a-zA-Z_]\@=\|::\|([^)]*)\|&[0-9a-zA-Z]\{2,7};\)\+' exe 'syn region doxygenSpecial'.a:name.'Word contained start=+'.a:kword.'+ end=+\(\_s\+'.mx.'\)\@<=[-a-zA-Z_0-9+*/^%|~!=&\\]\@!+ skipwhite contains=doxygenContinueCommentWhite,doxygen'.a:name.'Word' exe 'syn match doxygen'.a:name.'Word contained "\_s\@<='.mx.'" contains=doxygenHtmlSpecial,@Spell keepend' endfun call s:DxyCreateSmallSpecial('p', 'Code') call s:DxyCreateSmallSpecial('c', 'Code') call s:DxyCreateSmallSpecial('b', 'Bold') call s:DxyCreateSmallSpecial('e', 'Emphasised') call s:DxyCreateSmallSpecial('em', 'Emphasised') call s:DxyCreateSmallSpecial('a', 'Argument') call s:DxyCreateSmallSpecial('ref', 'Ref') delfun s:DxyCreateSmallSpecial syn match doxygenSmallSpecial contained +[@\\]\(\<[npcbea]\>\|\\|\\|\\|f\$\|[$\\&<>#]\)\@=+ nextgroup=doxygenOtherLink,doxygenHyperLink,doxygenHashLink,doxygenFormula,doxygenSymbol,doxygenSpecial.*Word " Now for special characters syn match doxygenSpecial contained +[@\\]\(\<[npcbea]\>\|\\|\\>\|\#]\)\@!+ nextgroup=doxygenParam,doxygenRetval,doxygenBriefWord,doxygenBold,doxygenBOther,doxygenOther,doxygenOtherTODO,doxygenOtherWARN,doxygenOtherBUG,doxygenPage,doxygenGroupDefine,doxygenCodeRegion,doxygenVerbatimRegion,doxygenDotRegion " doxygenOtherLink,doxygenSymbol,doxygenFormula,doxygenErrorSpecial,doxygenSpecial.*Word " syn match doxygenGroupDefine contained +@\@<=[{}]+ syn match doxygenGroupDefineSpecial contained +@\ze[{}]+ syn match doxygenErrorSpecial contained +\s+ " Match parameters and retvals (highlighting the first word as special). syn match doxygenParamDirection contained "\v\[(\s*in>((]\s*\[|\s*,\s*)out>)=|out>((]\s*\[|\s*,\s*)in>)=)\]" nextgroup=doxygenParamName skipwhite syn keyword doxygenParam contained param nextgroup=doxygenParamName,doxygenParamDirection skipwhite syn keyword doxygenTParam contained tparam nextgroup=doxygenParamName skipwhite syn match doxygenParamName contained +[A-Za-z0-9_:]\++ nextgroup=doxygenSpecialMultilineDesc skipwhite syn keyword doxygenRetval contained retval throw throws exception nextgroup=doxygenParamName skipwhite " Match one line identifiers. syn keyword doxygenOther contained addindex anchor \ dontinclude endhtmlonly endlatexonly showinitializer hideinitializer \ example htmlonly image include includelineno ingroup internal latexonly line \ overload relates relatesalso sa skip skipline \ until verbinclude version addtogroup htmlinclude copydoc dotfile \ xmlonly endxmlonly \ nextgroup=doxygenSpecialOnelineDesc copybrief copydetails copyright dir extends \ implements syn region doxygenCodeRegion contained matchgroup=doxygenOther start=+\+ matchgroup=doxygenOther end=+[\\@]\@<=\+ contains=doxygenCodeRegionSpecial,doxygenContinueCommentWhite,doxygenErrorComment,@NoSpell syn match doxygenCodeRegionSpecial contained +[\\@]\(endcode\>\)\@=+ syn region doxygenVerbatimRegion contained matchgroup=doxygenOther start=+\+ matchgroup=doxygenOther end=+[\\@]\@<=\+ contains=doxygenVerbatimRegionSpecial,doxygenContinueCommentWhite,doxygenErrorComment,@NoSpell syn match doxygenVerbatimRegionSpecial contained +[\\@]\(endverbatim\>\)\@=+ if exists('b:current_syntax') let b:doxygen_syntax_save=b:current_syntax unlet b:current_syntax endif syn include @Dotx syntax/dot.vim if exists('b:doxygen_syntax_save') let b:current_syntax=b:doxygen_syntax_save unlet b:doxygen_syntax_save else unlet b:current_syntax endif syn region doxygenDotRegion contained matchgroup=doxygenOther start=+\+ matchgroup=doxygenOther end=+[\\@]\@<=\+ contains=doxygenDotRegionSpecial,doxygenErrorComment,doxygenContinueCommentWhite,@NoSpell,@Dotx syn match doxygenDotRegionSpecial contained +[\\@]\(enddot\>\)\@=+ " Match single line identifiers. syn keyword doxygenBOther contained class enum file fn mainpage interface \ namespace struct typedef union var def name \ nextgroup=doxygenSpecialTypeOnelineDesc syn keyword doxygenOther contained par nextgroup=doxygenHeaderLine syn region doxygenHeaderLine start=+.+ end=+^+ contained skipwhite nextgroup=doxygenSpecialMultilineDesc syn keyword doxygenOther contained arg author authors date deprecated li return returns see invariant note post pre remarks since test nextgroup=doxygenSpecialMultilineDesc syn keyword doxygenOtherTODO contained todo attention nextgroup=doxygenSpecialMultilineDesc syn keyword doxygenOtherWARN contained warning nextgroup=doxygenSpecialMultilineDesc syn keyword doxygenOtherBUG contained bug nextgroup=doxygenSpecialMultilineDesc " Handle \link, \endlink, highlighting the link-to and the link text bits separately. syn region doxygenOtherLink matchgroup=doxygenOther start=+\+ end=+[\@]\@<=endlink\>+ contained contains=doxygenLinkWord,doxygenContinueCommentWhite,doxygenLinkError,doxygenEndlinkSpecial syn match doxygenEndlinkSpecial contained +[\\@]\zeendlink\>+ syn match doxygenLinkWord "[_a-zA-Z:#()][_a-z0-9A-Z:#()]*\>" contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment syn match doxygenLinkRest +[^*@\\]\|\*/\@!\|[@\\]\(endlink\>\)\@!+ contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment syn match doxygenContinueLinkComment contained +^\s*\*\=[^/]+me=e-1 nextgroup=doxygenLinkRest syn match doxygenLinkError "\*/" contained " #Link hilighting. syn match doxygenHashLink /\([a-zA-Z_][0-9a-zA-Z_]*\)\?#\(\.[0-9a-zA-Z_]\@=\|[a-zA-Z0-9_]\+\|::\|()\)\+/ contained contains=doxygenHashSpecial syn match doxygenHashSpecial /#/ contained syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@~]\+/ contained " Handle \page. This does not use doxygenBrief. syn match doxygenPage "[\\@]page\>"me=s+1 contained skipwhite nextgroup=doxygenPagePage syn keyword doxygenPagePage page contained skipwhite nextgroup=doxygenPageIdent syn region doxygenPageDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenBody syn match doxygenPageIdent "\<[a-zA-Z_0-9]\+\>" contained nextgroup=doxygenPageDesc " Handle section syn keyword doxygenOther defgroup section subsection subsubsection weakgroup contained skipwhite nextgroup=doxygenSpecialIdent syn region doxygenSpecialSectionDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenContinueCommentWhite syn match doxygenSpecialIdent "\<[a-zA-Z_0-9]\+\>" contained nextgroup=doxygenSpecialSectionDesc " Does the one-line description for the one-line type identifiers. syn region doxygenSpecialTypeOnelineDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend syn region doxygenSpecialOnelineDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend " Handle the multiline description for the multiline type identifiers. " Continue until an 'empty' line (can contain a '*' continuation) or until the " next whole-line @ command \ command. syn region doxygenSpecialMultilineDesc start=+.\++ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contained contains=doxygenSpecialContinueCommentWhite,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell skipwhite keepend " syn match doxygenSpecialContinueComment contained +^\s*\*/\@!\s*+ nextgroup=doxygenSpecial skipwhite syn match doxygenSpecialContinueCommentWhite contained +^\s*\ze\*+ nextgroup=doxygenSpecialContinueComment syn match doxygenSpecialContinueComment contained +\*/\@!+ " Handle special cases 'bold' and 'group' syn keyword doxygenBold contained bold nextgroup=doxygenSpecialHeading syn keyword doxygenBriefWord contained brief nextgroup=doxygenBriefLine skipwhite syn match doxygenSpecialHeading +.\++ contained skipwhite syn keyword doxygenGroup contained group nextgroup=doxygenGroupName skipwhite syn keyword doxygenGroupName contained +\k\++ nextgroup=doxygenSpecialOnelineDesc skipwhite " Handle special symbol identifiers @$, @\, @$ etc syn match doxygenSymbol contained +[$\\&<>#n]+ " Simplistic handling of formula regions syn region doxygenFormula contained matchgroup=doxygenFormulaEnds start=+f\$+ end=+[@\\]f\$+ contains=doxygenFormulaSpecial,doxygenFormulaOperator syn match doxygenFormulaSpecial contained +[@\\]\(f[^$]\|[^f]\)+me=s+1 nextgroup=doxygenFormulaKeyword,doxygenFormulaEscaped syn match doxygenFormulaEscaped contained "." syn match doxygenFormulaKeyword contained "[a-z]\+" syn match doxygenFormulaOperator contained +[_^]+ syn region doxygenFormula contained matchgroup=doxygenFormulaEnds start=+f\[+ end=+[@\\]f]+ contains=doxygenFormulaSpecial,doxygenFormulaOperator,doxygenAtom syn region doxygenAtom contained transparent matchgroup=doxygenFormulaOperator start=+{+ end=+}+ contains=doxygenAtom,doxygenFormulaSpecial,doxygenFormulaOperator " Add TODO hilighting. syn keyword doxygenTODO contained TODO README XXX FIXME " Supported HTML subset. Not perfect, but okay. syn case ignore syn region doxygenHtmlTag contained matchgroup=doxygenHtmlCh start=+\v\+ skip=+\\<\|\<\k\+=\("[^"]*"\|'[^']*\)+ end=+>+ contains=doxygenHtmlCmd,doxygenContinueCommentWhite,doxygenHtmlVar syn keyword doxygenHtmlCmd contained b i em strong u img a br p center code dfn dl dd dt hr h1 h2 h3 li ol ul pre small sub sup table tt var caption nextgroup=doxygenHtmlVar skipwhite syn keyword doxygenHtmlVar contained src alt longdesc name height width usemap ismap href type nextgroup=doxygenHtmlEqu skipwhite syn match doxygenHtmlEqu contained +=+ nextgroup=doxygenHtmlExpr skipwhite syn match doxygenHtmlExpr contained +"\(\\.\|[^"]\)*"\|'\(\\.\|[^']\)*'+ nextgroup=doxygenHtmlVar skipwhite syn case match syn match doxygenHtmlSpecial contained "&\(copy\|quot\|[AEIOUYaeiouy]uml\|[AEIOUYaeiouy]acute\|[AEIOUaeiouy]grave\|[AEIOUaeiouy]circ\|[ANOano]tilde\|szlig\|[Aa]ring\|nbsp\|gt\|lt\|amp\);" syn cluster doxygenHtmlGroup contains=doxygenHtmlCode,doxygenHtmlBold,doxygenHtmlUnderline,doxygenHtmlItalic,doxygenHtmlSpecial,doxygenHtmlTag,doxygenHtmlLink syn cluster doxygenHtmlTop contains=@Spell,doxygenHtmlSpecial,doxygenHtmlTag,doxygenContinueCommentWhite " Html Support syn region doxygenHtmlLink contained start=+<[aA]\>\s*\(\n\s*\*\s*\)\=\(\(name\|href\)=\("[^"]*"\|'[^']*'\)\)\=\s*>+ end=++me=e-4 contains=@doxygenHtmlTop hi link doxygenHtmlLink Underlined syn region doxygenHtmlBold contained start="\c" end="\c"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic,@Spell syn region doxygenHtmlBold contained start="\c" end="\c
"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic,@Spell syn region doxygenHtmlBoldUnderline contained start="\c" end="\c
"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic,@Spell syn region doxygenHtmlBoldItalic contained start="\c" end="\c"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline,@Spell syn region doxygenHtmlBoldItalic contained start="\c" end="\c"me=e-5 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline,@Spell syn region doxygenHtmlBoldUnderlineItalic contained start="\c" end="\c
"me=e-4 contains=@doxygenHtmlTop,@Spell syn region doxygenHtmlBoldUnderlineItalic contained start="\c" end="\c"me=e-5 contains=@doxygenHtmlTop,@Spell syn region doxygenHtmlBoldItalicUnderline contained start="\c" end="\c"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic,@Spell syn region doxygenHtmlUnderline contained start="\c" end="\c"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBold,doxygenHtmlUnderlineItalic,@Spell syn region doxygenHtmlUnderlineBold contained start="\c" end="\c
"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic,@Spell syn region doxygenHtmlUnderlineBold contained start="\c" end="\c
"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic,@Spell syn region doxygenHtmlUnderlineItalic contained start="\c" end="\c
"me=e-4 contains=@doxygenHtmlTop,htmUnderlineItalicBold,@Spell syn region doxygenHtmlUnderlineItalic contained start="\c" end="\c"me=e-5 contains=@doxygenHtmlTop,htmUnderlineItalicBold,@Spell syn region doxygenHtmlUnderlineItalicBold contained start="\c" end="\c
"me=e-4 contains=@doxygenHtmlTop,@Spell syn region doxygenHtmlUnderlineItalicBold contained start="\c" end="\c"me=e-9 contains=@doxygenHtmlTop,@Spell syn region doxygenHtmlUnderlineBoldItalic contained start="\c" end="\c"me=e-4 contains=@doxygenHtmlTop,@Spell syn region doxygenHtmlUnderlineBoldItalic contained start="\c" end="\c"me=e-5 contains=@doxygenHtmlTop,@Spell syn region doxygenHtmlItalic contained start="\c" end="\c"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBold,doxygenHtmlItalicUnderline,@Spell syn region doxygenHtmlItalic contained start="\c" end="\c"me=e-5 contains=@doxygenHtmlTop,@Spell syn region doxygenHtmlItalicBold contained start="\c" end="\c"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline,@Spell syn region doxygenHtmlItalicBold contained start="\c" end="\c"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline,@Spell syn region doxygenHtmlItalicBoldUnderline contained start="\c" end="\c"me=e-4 contains=@doxygenHtmlTop,@Spell syn region doxygenHtmlItalicUnderline contained start="\c" end="\c"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicUnderlineBold,@Spell syn region doxygenHtmlItalicUnderlineBold contained start="\c" end="\c"me=e-4 contains=@doxygenHtmlTop,@Spell syn region doxygenHtmlItalicUnderlineBold contained start="\c" end="\c"me=e-9 contains=@doxygenHtmlTop,@Spell syn region doxygenHtmlCode contained start="\c" end="\c"me=e-7 contains=@doxygenHtmlTop,@NoSpell " Prevent the doxygen contained matches from leaking into the c/rc groups. syn cluster cParenGroup add=doxygen.* syn cluster cParenGroup remove=doxygenComment,doxygenCommentL syn cluster cPreProcGroup add=doxygen.* syn cluster cMultiGroup add=doxygen.* syn cluster rcParenGroup add=doxygen.* syn cluster rcParenGroup remove=doxygenComment,doxygenCommentL syn cluster rcGroup add=doxygen.* let s:my_syncolor=0 if !exists(':SynColor') command -nargs=+ SynColor hi def let s:my_syncolor=1 endif let s:my_synlink=0 if !exists(':SynLink') command -nargs=+ SynLink hi def link let s:my_synlink=1 endif try "let did_doxygen_syntax_inits = &background hi doxygen_Dummy guifg=black fun! s:Doxygen_Hilights_Base() SynLink doxygenHtmlSpecial Special SynLink doxygenHtmlVar Type SynLink doxygenHtmlExpr String SynLink doxygenSmallSpecial SpecialChar SynLink doxygenSpecialCodeWord doxygenSmallSpecial SynLink doxygenSpecialBoldWord doxygenSmallSpecial SynLink doxygenSpecialEmphasisedWord doxygenSmallSpecial SynLink doxygenSpecialArgumentWord doxygenSmallSpecial " SynColor doxygenFormulaKeyword cterm=bold ctermfg=DarkMagenta guifg=DarkMagenta gui=bold SynLink doxygenFormulaKeyword Keyword "SynColor doxygenFormulaEscaped ctermfg=DarkMagenta guifg=DarkMagenta gui=bold SynLink doxygenFormulaEscaped Special SynLink doxygenFormulaOperator Operator SynLink doxygenFormula Statement SynLink doxygenSymbol Constant SynLink doxygenSpecial Special SynLink doxygenFormulaSpecial Special "SynColor doxygenFormulaSpecial ctermfg=DarkBlue guifg=DarkBlue endfun call s:Doxygen_Hilights_Base() fun! s:Doxygen_Hilights() " Pick a sensible default for 'codeword'. let font='' if exists('g:doxygen_codeword_font') if g:doxygen_codeword_font !~ '\<\k\+=' let font='font='.g:doxygen_codeword_font else let font=g:doxygen_codeword_font endif else " Try and pick a font (only some platforms have been tested). if has('gui_running') if has('gui_gtk2') if &guifont == '' let font="font='FreeSerif 12'" else let font="font='".substitute(&guifont, '^.\{-}\([0-9]\+\)$', 'FreeSerif \1','')."'" endif elseif has('gui_win32') || has('gui_win16') || has('gui_win95') if exists('g:doxygen_use_bitsream_vera') && g:doxygen_use_bitsream_vera let font_base='Bitstream_Vera_Sans_Mono' else let font_base='Lucida_Console' endif if &guifont == '' let font='font='.font_base.':h10' else let font='font='.matchstr(substitute(&guifont, '^[^:]*', font_base,''),'[^,]*') endif elseif has('gui_athena') || has('gui_gtk') || &guifont=~'^\(-[^-]\+\)\{14}' if &guifont == '' let font='font=-b&h-lucidatypewriter-medium-r-normal-*-*-140-*-*-m-*-iso8859-1' else " let font='font='.substitute(&guifont,'^\(-[^-]\+\)\{7}-\([0-9]\+\).*', '-b\&h-lucidatypewriter-medium-r-normal-*-*-\2-*-*-m-*-iso8859-1','') " The above line works, but it is hard to expect the combination of " the two fonts will look good. endif elseif has('gui_kde') " let font='font=Bitstream\ Vera\ Sans\ Mono/12/-1/5/50/0/0/0/0/0' endif endif endif if font=='' | let font='gui=bold' | endif exe 'SynColor doxygenCodeWord term=bold cterm=bold '.font if (exists('g:doxygen_enhanced_color') && g:doxygen_enhanced_color) || (exists('g:doxygen_enhanced_colour') && g:doxygen_enhanced_colour) if &background=='light' SynColor doxygenComment ctermfg=DarkRed guifg=DarkRed SynColor doxygenBrief cterm=bold ctermfg=Cyan guifg=DarkBlue gui=bold SynColor doxygenBody ctermfg=DarkBlue guifg=DarkBlue SynColor doxygenSpecialTypeOnelineDesc cterm=bold ctermfg=DarkRed guifg=firebrick3 gui=bold SynColor doxygenBOther cterm=bold ctermfg=DarkMagenta guifg=#aa50aa gui=bold SynColor doxygenParam ctermfg=DarkGray guifg=#aa50aa SynColor doxygenParamName cterm=italic ctermfg=DarkBlue guifg=DeepSkyBlue4 gui=italic,bold SynColor doxygenSpecialOnelineDesc cterm=bold ctermfg=DarkCyan guifg=DodgerBlue3 gui=bold SynColor doxygenSpecialHeading cterm=bold ctermfg=DarkBlue guifg=DeepSkyBlue4 gui=bold SynColor doxygenPrev ctermfg=DarkGreen guifg=DarkGreen else SynColor doxygenComment ctermfg=LightRed guifg=LightRed SynColor doxygenBrief cterm=bold ctermfg=Cyan ctermbg=darkgrey guifg=LightBlue gui=Bold,Italic SynColor doxygenBody ctermfg=Cyan guifg=LightBlue SynColor doxygenSpecialTypeOnelineDesc cterm=bold ctermfg=Red guifg=firebrick3 gui=bold SynColor doxygenBOther cterm=bold ctermfg=Magenta guifg=#aa50aa gui=bold SynColor doxygenParam ctermfg=LightGray guifg=LightGray SynColor doxygenParamName cterm=italic ctermfg=LightBlue guifg=LightBlue gui=italic,bold SynColor doxygenSpecialOnelineDesc cterm=bold ctermfg=LightCyan guifg=LightCyan gui=bold SynColor doxygenSpecialHeading cterm=bold ctermfg=LightBlue guifg=LightBlue gui=bold SynColor doxygenPrev ctermfg=LightGreen guifg=LightGreen endif else SynLink doxygenComment SpecialComment SynLink doxygenBrief Statement SynLink doxygenBody Comment SynLink doxygenSpecialTypeOnelineDesc Statement SynLink doxygenBOther Constant SynLink doxygenParam SpecialComment SynLink doxygenParamName Underlined SynLink doxygenSpecialOnelineDesc Statement SynLink doxygenSpecialHeading Statement SynLink doxygenPrev SpecialComment endif endfun call s:Doxygen_Hilights() syn match doxygenLeadingWhite +\(^\s*\*\)\@<=\s*+ contained " This is still a proposal, but won't do any harm. aug doxygengroup au! au Syntax UserColor_reset nested call s:Doxygen_Hilights_Base() au Syntax UserColor_{on,reset,enable} nested call s:Doxygen_Hilights() aug END SynLink doxygenBody Comment SynLink doxygenLine doxygenBody SynLink doxygenTODO Todo SynLink doxygenOtherTODO Todo SynLink doxygenOtherWARN Todo SynLink doxygenOtherBUG Todo SynLink doxygenLeadingLWhite doxygenBody SynLink doxygenErrorSpecial Error SynLink doxygenErrorEnd Error SynLink doxygenErrorComment Error SynLink doxygenLinkError Error SynLink doxygenBriefSpecial doxygenSpecial SynLink doxygenHashSpecial doxygenSpecial SynLink doxygenGroupDefineSpecial doxygenSpecial SynLink doxygenEndlinkSpecial doxygenSpecial SynLink doxygenCodeRegionSpecial doxygenSpecial SynLink doxygenVerbatimRegionSpecial doxygenSpecial SynLink doxygenDotRegionSpecial doxygenSpecial SynLink doxygenGroupDefine doxygenParam SynLink doxygenSpecialMultilineDesc doxygenSpecialOnelineDesc SynLink doxygenFormulaEnds doxygenSpecial SynLink doxygenBold doxygenParam SynLink doxygenBriefWord doxygenParam SynLink doxygenRetval doxygenParam SynLink doxygenOther doxygenParam SynLink doxygenStart doxygenComment SynLink doxygenStart2 doxygenStart SynLink doxygenComment2 doxygenComment SynLink doxygenCommentL doxygenComment SynLink doxygenContinueComment doxygenComment SynLink doxygenSpecialContinueComment doxygenComment SynLink doxygenSkipComment doxygenComment SynLink doxygenEndComment doxygenComment SynLink doxygenStartL doxygenComment SynLink doxygenBriefEndComment doxygenComment SynLink doxygenPrevL doxygenPrev SynLink doxygenBriefL doxygenBrief SynLink doxygenBriefLine doxygenBrief SynLink doxygenHeaderLine doxygenSpecialHeading SynLink doxygenCommentWhite Normal SynLink doxygenCommentWhite2 doxygenCommentWhite SynLink doxygenContinueCommentWhite doxygenCommentWhite SynLink doxygenStartSkipWhite doxygenContinueCommentWhite SynLink doxygenLinkWord doxygenParamName SynLink doxygenLinkRest doxygenSpecialMultilineDesc SynLink doxygenHyperLink doxygenLinkWord SynLink doxygenHashLink doxygenLinkWord SynLink doxygenPage doxygenSpecial SynLink doxygenPagePage doxygenBOther SynLink doxygenPageIdent doxygenParamName SynLink doxygenPageDesc doxygenSpecialTypeOnelineDesc SynLink doxygenSpecialIdent doxygenPageIdent SynLink doxygenSpecialSectionDesc doxygenSpecialMultilineDesc SynLink doxygenSpecialRefWord doxygenOther SynLink doxygenRefWord doxygenPageIdent SynLink doxygenContinueLinkComment doxygenComment SynLink doxygenHtmlCh Function SynLink doxygenHtmlCmd Statement SynLink doxygenHtmlBoldItalicUnderline doxygenHtmlBoldUnderlineItalic SynLink doxygenHtmlUnderlineBold doxygenHtmlBoldUnderline SynLink doxygenHtmlUnderlineItalicBold doxygenHtmlBoldUnderlineItalic SynLink doxygenHtmlUnderlineBoldItalic doxygenHtmlBoldUnderlineItalic SynLink doxygenHtmlItalicUnderline doxygenHtmlUnderlineItalic SynLink doxygenHtmlItalicBold doxygenHtmlBoldItalic SynLink doxygenHtmlItalicBoldUnderline doxygenHtmlBoldUnderlineItalic SynLink doxygenHtmlItalicUnderlineBold doxygenHtmlBoldUnderlineItalic SynLink doxygenHtmlLink Underlined SynLink doxygenParamDirection StorageClass if !exists("doxygen_my_rendering") && !exists("html_my_rendering") SynColor doxygenBoldWord term=bold cterm=bold gui=bold SynColor doxygenEmphasisedWord term=italic cterm=italic gui=italic SynLink doxygenArgumentWord doxygenEmphasisedWord SynLink doxygenHtmlCode doxygenCodeWord SynLink doxygenHtmlBold doxygenBoldWord SynColor doxygenHtmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline SynColor doxygenHtmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic SynColor doxygenHtmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline SynColor doxygenHtmlUnderline term=underline cterm=underline gui=underline SynColor doxygenHtmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline SynColor doxygenHtmlItalic term=italic cterm=italic gui=italic endif finally if s:my_synlink | delcommand SynLink | endif if s:my_syncolor | delcommand SynColor | endif endtry if &syntax=='idl' syn cluster idlCommentable add=doxygenComment,doxygenCommentL endif "syn sync clear "syn sync maxlines=500 "syn sync minlines=50 syn sync match doxygenComment groupthere cComment "/\@ " Latest Revision: 2006-04-19 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword slpspiTodo contained TODO FIXME XXX NOTE syn region slpspiComment display oneline start='^[#;]' end='$' \ contains=slpspiTodo,@Spell syn match slpspiBegin display '^' \ nextgroup=slpspiKeyType, \ slpspiComment skipwhite syn keyword slpspiKeyType contained PRIVATE PUBLIC \ nextgroup=slpspiString skipwhite syn match slpspiString contained '\S\+' \ nextgroup=slpspiKeyFile skipwhite syn match slpspiKeyFile contained '\S\+' hi def link slpspiTodo Todo hi def link slpspiComment Comment hi def link slpspiKeyType Type hi def link slpspiString Identifier hi def link slpspiKeyFile String let b:current_syntax = "slpspi" let &cpo = s:cpo_save unlet s:cpo_save PK! Jvim80/syntax/config.vimnu[" Vim syntax file " Language: configure.in script: M4 with sh " Former Maintainer: Christian Hammesr " Last Change: 2018 Feb 03 " (patch from Yngve Inntjore Levinsen to detect AC_MSG) " (patch from Khym Chanur to add @Spell) " (patch from James McCoy to fix paren matching) " Well, I actually even do not know much about m4. This explains why there " is probably very much missing here, yet ! " But I missed good highlighting when editing my GNU autoconf/automake " script, so I wrote this quick and dirty patch. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " define the config syntax syn match configdelimiter "[()\[\];,]" syn match configoperator "[=|&\*\+\<\>]" syn match configcomment "\(dnl.*\)\|\(#.*\)" contains=configDnl,@Spell syn match configfunction "\<[A-Z_][A-Z0-9_]*\>" syn match confignumber "[-+]\=\<\d\+\(\.\d*\)\=\>" syn keyword configDnl dnl contained syn keyword configkeyword if then else fi test for in do done syn keyword configspecial cat rm eval " This shortens the script, see syn-ext-match.. syn region configstring start=+\z(["'`]\)+ skip=+\\\z1+ end=+\z1+ contains=@Spell " Anything inside AC_MSG_TYPE([...]) and AC_MSG_TYPE(...) is a string. syn region configmsg matchgroup=configfunction start="AC_MSG_[A-Z]*\ze(\[" matchgroup=configdelimiter end="\])" contains=configdelimiter,@Spell syn region configmsg matchgroup=configfunction start="AC_MSG_[A-Z]*\ze([^[]" matchgroup=configdelimiter end=")" contains=configdelimiter,@Spell " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link configdelimiter Delimiter hi def link configoperator Operator hi def link configcomment Comment hi def link configDnl Comment hi def link configfunction Function hi def link confignumber Number hi def link configkeyword Keyword hi def link configspecial Special hi def link configstring String hi def link configmsg String let b:current_syntax = "config" " vim: ts=4 PK!J5vim80/syntax/bindzone.vimnu[" Vim syntax file " Language: BIND zone files (RFC 1035) " Maintainer: Julian Mehnle " URL: http://www.mehnle.net/source/odds+ends/vim/syntax/ " Last Change: Thu 2011-07-16 20:42:00 UTC " " Based on an earlier version by Вячеслав Горбанев (Slava Gorbanev), with " heavy modifications. " " $Id: bindzone.vim 12 2011-07-16 21:09:57Z julian $ " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case match " Directives syn region zoneRRecord start=/^/ end=/$/ contains=zoneOwnerName,zoneSpecial,zoneTTL,zoneClass,zoneRRType,zoneComment,zoneUnknown syn match zoneDirective /^\$ORIGIN\s\+/ nextgroup=zoneOrigin,zoneUnknown syn match zoneDirective /^\$TTL\s\+/ nextgroup=zoneTTL,zoneUnknown syn match zoneDirective /^\$INCLUDE\s\+/ nextgroup=zoneText,zoneUnknown syn match zoneDirective /^\$GENERATE\s/ syn match zoneUnknown contained /\S\+/ syn match zoneOwnerName contained /^[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\)\@=/ nextgroup=zoneTTL,zoneClass,zoneRRType skipwhite syn match zoneOrigin contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/ syn match zoneDomain contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/ syn match zoneSpecial contained /^[@*.]\s/ syn match zoneTTL contained /\s\@<=\d[0-9WwDdHhMmSs]*\(\s\|$\)\@=/ nextgroup=zoneClass,zoneRRType skipwhite syn keyword zoneClass contained IN CHAOS nextgroup=zoneRRType,zoneTTL skipwhite syn keyword zoneRRType contained A AAAA CNAME DNAME HINFO MX NS PTR SOA SRV TXT SPF nextgroup=zoneRData skipwhite syn match zoneRData contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown syn match zoneIPAddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/ " Plain IPv6 address IPv6-embedded-IPv4 address " 1111:2:3:4:5:6:7:8 1111:2:3:4:5:6:127.0.0.1 syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{6}\(\x\{1,4}:\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ " ::[...:]8 ::[...:]127.0.0.1 syn match zoneIP6Addr contained /\s\@<=::\(\(\x\{1,4}:\)\{,6}\x\{1,4}\|\(\x\{1,4}:\)\{,5}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ " 1111::[...:]8 1111::[...:]127.0.0.1 syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{1}:\(\(\x\{1,4}:\)\{,5}\x\{1,4}\|\(\x\{1,4}:\)\{,4}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ " 1111:2::[...:]8 1111:2::[...:]127.0.0.1 syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{2}:\(\(\x\{1,4}:\)\{,4}\x\{1,4}\|\(\x\{1,4}:\)\{,3}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ " 1111:2:3::[...:]8 1111:2:3::[...:]127.0.0.1 syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{3}:\(\(\x\{1,4}:\)\{,3}\x\{1,4}\|\(\x\{1,4}:\)\{,2}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ " 1111:2:3:4::[...:]8 1111:2:3:4::[...:]127.0.0.1 syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{4}:\(\(\x\{1,4}:\)\{,2}\x\{1,4}\|\(\x\{1,4}:\)\{,1}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ " 1111:2:3:4:5::[...:]8 1111:2:3:4:5::127.0.0.1 syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{5}:\(\(\x\{1,4}:\)\{,1}\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ " 1111:2:3:4:5:6::8 - syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{6}:\x\{1,4}\>/ " 1111[:...]:: - syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{1,7}:\(\s\|;\|$\)\@=/ syn match zoneText contained /"\([^"\\]\|\\.\)*"\(\s\|;\|$\)\@=/ syn match zoneNumber contained /\<[0-9]\+\(\s\|;\|$\)\@=/ syn match zoneSerial contained /\<[0-9]\{9,10}\(\s\|;\|$\)\@=/ syn match zoneErrParen /)/ syn region zoneParen contained start="(" end=")" contains=zoneSerial,zoneTTL,zoneNumber,zoneComment syn match zoneComment /;.*/ " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link zoneDirective Macro hi def link zoneUnknown Error hi def link zoneOrigin Statement hi def link zoneOwnerName Statement hi def link zoneDomain Identifier hi def link zoneSpecial Special hi def link zoneTTL Constant hi def link zoneClass Include hi def link zoneRRType Type hi def link zoneIPAddr Number hi def link zoneIP6Addr Number hi def link zoneText String hi def link zoneNumber Number hi def link zoneSerial Special hi def link zoneErrParen Error hi def link zoneComment Comment let b:current_syntax = "bindzone" " vim:sts=2 sw=2 PK!Y vim80/syntax/aflex.vimnu[ " Vim syntax file " Language: AfLex (from Lex syntax file) " Maintainer: Mathieu Clabaut " LastChange: 02 May 2001 " Original: Lex, maintained by Dr. Charles E. Campbell, Jr. " Comment: Replaced sourcing c.vim file by ada.vim and rename lex* " in aflex* " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Read the Ada syntax to start with runtime! syntax/ada.vim unlet b:current_syntax " --- AfLex stuff --- "I'd prefer to use aflex.* , but it doesn't handle forward definitions yet syn cluster aflexListGroup contains=aflexAbbrvBlock,aflexAbbrv,aflexAbbrv,aflexAbbrvRegExp,aflexInclude,aflexPatBlock,aflexPat,aflexBrace,aflexPatString,aflexPatTag,aflexPatTag,aflexPatComment,aflexPatCodeLine,aflexMorePat,aflexPatSep,aflexSlashQuote,aflexPatCode,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2 syn cluster aflexListPatCodeGroup contains=aflexAbbrvBlock,aflexAbbrv,aflexAbbrv,aflexAbbrvRegExp,aflexInclude,aflexPatBlock,aflexPat,aflexBrace,aflexPatTag,aflexPatTag,aflexPatComment,aflexPatCodeLine,aflexMorePat,aflexPatSep,aflexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2 " Abbreviations Section syn region aflexAbbrvBlock start="^\([a-zA-Z_]\+\t\|%{\)" end="^%%$"me=e-2 skipnl nextgroup=aflexPatBlock contains=aflexAbbrv,aflexInclude,aflexAbbrvComment syn match aflexAbbrv "^\I\i*\s"me=e-1 skipwhite contained nextgroup=aflexAbbrvRegExp syn match aflexAbbrv "^%[sx]" contained syn match aflexAbbrvRegExp "\s\S.*$"lc=1 contained nextgroup=aflexAbbrv,aflexInclude syn region aflexInclude matchgroup=aflexSep start="^%{" end="%}" contained contains=ALLBUT,@aflexListGroup syn region aflexAbbrvComment start="^\s\+/\*" end="\*/" "%% : Patterns {Actions} syn region aflexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=aflexPat,aflexPatTag,aflexPatComment syn region aflexPat start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=aflexMorePat,aflexPatSep contains=aflexPatString,aflexSlashQuote,aflexBrace syn region aflexBrace start="\[" skip=+\\\\\|\\+ end="]" contained syn region aflexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained syn match aflexPatTag "^<\I\i*\(,\I\i*\)*>*" contained nextgroup=aflexPat,aflexPatTag,aflexMorePat,aflexPatSep syn match aflexPatTag +^<\I\i*\(,\I\i*\)*>*\(\\\\\)*\\"+ contained nextgroup=aflexPat,aflexPatTag,aflexMorePat,aflexPatSep syn region aflexPatComment start="^\s*/\*" end="\*/" skipnl contained contains=cTodo nextgroup=aflexPatComment,aflexPat,aflexPatString,aflexPatTag syn match aflexPatCodeLine ".*$" contained contains=ALLBUT,@aflexListGroup syn match aflexMorePat "\s*|\s*$" skipnl contained nextgroup=aflexPat,aflexPatTag,aflexPatComment syn match aflexPatSep "\s\+" contained nextgroup=aflexMorePat,aflexPatCode,aflexPatCodeLine syn match aflexSlashQuote +\(\\\\\)*\\"+ contained syn region aflexPatCode matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" skipnl contained contains=ALLBUT,@aflexListPatCodeGroup syn keyword aflexCFunctions BEGIN input unput woutput yyleng yylook yytext syn keyword aflexCFunctions ECHO output winput wunput yyless yymore yywrap " includes several ALLBUTs; these have to be treated so as to exclude aflex* groups syn cluster cParenGroup add=aflex.* syn cluster cDefineGroup add=aflex.* syn cluster cPreProcGroup add=aflex.* syn cluster cMultiGroup add=aflex.* " Synchronization syn sync clear syn sync minlines=300 syn sync match aflexSyncPat grouphere aflexPatBlock "^%[a-zA-Z]" syn sync match aflexSyncPat groupthere aflexPatBlock "^<$" syn sync match aflexSyncPat groupthere aflexPatBlock "^%%$" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link aflexSlashQuote aflexPat hi def link aflexBrace aflexPat hi def link aflexAbbrvComment aflexPatComment hi def link aflexAbbrv SpecialChar hi def link aflexAbbrvRegExp Macro hi def link aflexCFunctions Function hi def link aflexMorePat SpecialChar hi def link aflexPat Function hi def link aflexPatComment Comment hi def link aflexPatString Function hi def link aflexPatTag Special hi def link aflexSep Delimiter let b:current_syntax = "aflex" " vim:ts=10 PK!fs77vim80/syntax/muttrc.vimnu[" Vim syntax file " Language: Mutt setup files " Original: Preben 'Peppe' Guldberg " Maintainer: Kyle Wheeler " Last Change: 18 August 2016 " This file covers mutt version 1.7.0 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " Set the keyword characters setlocal isk=@,48-57,_,- " handling optional variables if !exists("use_mutt_sidebar") let use_mutt_sidebar=0 endif syn match muttrcComment "^# .*$" contains=@Spell syn match muttrcComment "^#[^ ].*$" syn match muttrcComment "^#$" syn match muttrcComment "[^\\]#.*$"lc=1 " Escape sequences (back-tick and pipe goes here too) syn match muttrcEscape +\\[#tnr"'Cc ]+ syn match muttrcEscape +[`|]+ syn match muttrcEscape +\\$+ " The variables takes the following arguments "syn match muttrcString contained "=\s*[^ #"'`]\+"lc=1 contains=muttrcEscape syn region muttrcString contained keepend start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcCommand,muttrcAction,muttrcShellString syn region muttrcString contained keepend start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcCommand,muttrcAction syn match muttrcStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcString,muttrcStringNL syn region muttrcShellString matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand syn match muttrcRXChars contained /[^\\][][.*?+]\+/hs=s+1 syn match muttrcRXChars contained /[][|()][.*?+]*/ syn match muttrcRXChars contained /['"]^/ms=s+1 syn match muttrcRXChars contained /$['"]/me=e-1 syn match muttrcRXChars contained /\\/ " Why does muttrcRXString2 work with one \ when muttrcRXString requires two? syn region muttrcRXString contained skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXChars syn region muttrcRXString contained skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXChars syn region muttrcRXString contained skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXChars " For some reason, skip refuses to match backslashes here... syn region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXChars syn region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXChars syn region muttrcRXString2 contained skipwhite start=+'+ skip=+\'+ end=+'+ contains=muttrcRXChars syn region muttrcRXString2 contained skipwhite start=+"+ skip=+\"+ end=+"+ contains=muttrcRXChars " these must be kept synchronized with muttrcRXString, but are intended for " muttrcRXHooks syn region muttrcRXHookString contained keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syn region muttrcRXHookString contained keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syn region muttrcRXHookString contained keepend skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syn region muttrcRXHookString contained keepend skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syn region muttrcRXHookString contained keepend matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syn match muttrcRXHookStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcRXHookString,muttrcRXHookStringNL " these are exclusively for args lists (e.g. -rx pat pat pat ...) syn region muttrcRXPat contained keepend skipwhite start=+'+ skip=+\\'+ end=+'\s*+ contains=muttrcRXString nextgroup=muttrcRXPat syn region muttrcRXPat contained keepend skipwhite start=+"+ skip=+\\"+ end=+"\s*+ contains=muttrcRXString nextgroup=muttrcRXPat syn match muttrcRXPat contained /[^-'"#!]\S\+/ skipwhite contains=muttrcRXChars nextgroup=muttrcRXPat syn match muttrcRXDef contained "-rx\s\+" skipwhite nextgroup=muttrcRXPat syn match muttrcSpecial +\(['"]\)!\1+ syn match muttrcSetStrAssignment contained skipwhite /=\s*\%(\\\?\$\)\?[0-9A-Za-z_-]\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable syn region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*"+hs=s+1 end=+"+ skip=+\\"+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString syn region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*'+hs=s+1 end=+'+ skip=+\\'+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString syn match muttrcSetBoolAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable syn match muttrcSetBoolAssignment contained skipwhite /=\s*\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetBoolAssignment contained skipwhite /=\s*"\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetBoolAssignment contained skipwhite /=\s*'\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetQuadAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable syn match muttrcSetQuadAssignment contained skipwhite /=\s*\%(ask-\)\?\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetQuadAssignment contained skipwhite /=\s*"\%(ask-\)\?\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetQuadAssignment contained skipwhite /=\s*'\%(ask-\)\?\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetNumAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable syn match muttrcSetNumAssignment contained skipwhite /=\s*\d\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetNumAssignment contained skipwhite /=\s*"\d\+"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetNumAssignment contained skipwhite /=\s*'\d\+'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr " Now catch some email addresses and headers (purified version from mail.vim) syn match muttrcEmail "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+" syn match muttrcHeader "\<\c\%(From\|To\|C[Cc]\|B[Cc][Cc]\|Reply-To\|Subject\|Return-Path\|Received\|Date\|Replied\|Attach\)\>:\=" syn match muttrcKeySpecial contained +\%(\\[Cc'"]\|\^\|\\[01]\d\{2}\)+ syn match muttrcKey contained "\S\+" contains=muttrcKeySpecial,muttrcKeyName syn region muttrcKey contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=muttrcKeySpecial,muttrcKeyName syn region muttrcKey contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=muttrcKeySpecial,muttrcKeyName syn match muttrcKeyName contained "\" syn match muttrcKeyName contained "\\[trne]" syn match muttrcKeyName contained "\c<\%(BackSpace\|BackTab\|Delete\|Down\|End\|Enter\|Esc\|Home\|Insert\|Left\|PageDown\|PageUp\|Return\|Right\|Space\|Tab\|Up\)>" syn match muttrcKeyName contained "" syn keyword muttrcVarBool skipwhite contained \ allow_8bit allow_ansi arrow_cursor ascii_chars askbcc askcc attach_split \ auto_tag autoedit beep beep_new bounce_delivered braille_friendly \ check_mbox_size check_new collapse_unread confirmappend confirmcreate \ crypt_autoencrypt crypt_autopgp crypt_autosign crypt_autosmime \ crypt_confirmhook crypt_opportunistic_encrypt crypt_replyencrypt \ crypt_replysign crypt_replysignencrypted crypt_timestamp crypt_use_gpgme \ crypt_use_pka delete_untag digest_collapse duplicate_threads edit_hdrs \ edit_headers encode_from envelope_from fast_reply fcc_clear followup_to \ force_name forw_decode forw_decrypt forw_quote forward_decode forward_decrypt \ forward_quote hdrs header help hidden_host hide_limited hide_missing \ hide_thread_subject hide_top_limited hide_top_missing honor_disposition \ idn_decode idn_encode ignore_linear_white_space ignore_list_reply_to \ imap_check_subscribed imap_list_subscribed imap_passive imap_peek \ imap_servernoise implicit_autoview include_onlyfirst keep_flagged \ mail_check_recent mail_check_stats mailcap_sanitize maildir_check_cur \ maildir_header_cache_verify maildir_trash mark_old markers menu_move_off \ menu_scroll message_cache_clean meta_key metoo mh_purge mime_forward_decode \ narrow_tree pager_stop pgp_auto_decode pgp_auto_traditional pgp_autoencrypt \ pgp_autoinline pgp_autosign pgp_check_exit pgp_create_traditional \ pgp_ignore_subkeys pgp_long_ids pgp_replyencrypt pgp_replyinline pgp_replysign \ pgp_replysignencrypted pgp_retainable_sigs pgp_show_unusable pgp_strict_enc \ pgp_use_gpg_agent pipe_decode pipe_split pop_auth_try_all pop_last \ postpone_encrypt postpone_encrypt_as print_decode print_split prompt_after \ read_only reflow_space_quotes reflow_text reflow_wrap reply_self resolve \ resume_draft_files resume_edited_draft_files reverse_alias reverse_name \ reverse_realname rfc2047_parameters save_address save_empty save_name score \ sidebar_folder_indent sidebar_new_mail_only sidebar_next_new_wrap \ sidebar_short_path sidebar_sort sidebar_visible sig_dashes sig_on_top \ smart_wrap smime_ask_cert_label smime_decrypt_use_default_key smime_is_default \ sort_re ssl_force_tls ssl_use_sslv2 ssl_use_sslv3 ssl_use_tlsv1 \ ssl_usesystemcerts ssl_verify_dates ssl_verify_host status_on_top strict_mime \ strict_threads suspend text_flowed thorough_search thread_received tilde \ ts_enabled uncollapse_jump use_8bitmime use_domain use_envelope_from use_from \ use_idn use_ipv6 user_agent wait_key weed wrap_search write_bcc \ nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarBool skipwhite contained \ noallow_8bit noallow_ansi noarrow_cursor noascii_chars noaskbcc noaskcc noattach_split \ noauto_tag noautoedit nobeep nobeep_new nobounce_delivered nobraille_friendly \ nocheck_mbox_size nocheck_new nocollapse_unread noconfirmappend noconfirmcreate \ nocrypt_autoencrypt nocrypt_autopgp nocrypt_autosign nocrypt_autosmime \ nocrypt_confirmhook nocrypt_opportunistic_encrypt nocrypt_replyencrypt \ nocrypt_replysign nocrypt_replysignencrypted nocrypt_timestamp nocrypt_use_gpgme \ nocrypt_use_pka nodelete_untag nodigest_collapse noduplicate_threads noedit_hdrs \ noedit_headers noencode_from noenvelope_from nofast_reply nofcc_clear nofollowup_to \ noforce_name noforw_decode noforw_decrypt noforw_quote noforward_decode noforward_decrypt \ noforward_quote nohdrs noheader nohelp nohidden_host nohide_limited nohide_missing \ nohide_thread_subject nohide_top_limited nohide_top_missing nohonor_disposition \ noidn_decode noidn_encode noignore_linear_white_space noignore_list_reply_to \ noimap_check_subscribed noimap_list_subscribed noimap_passive noimap_peek \ noimap_servernoise noimplicit_autoview noinclude_onlyfirst nokeep_flagged \ nomail_check_recent nomail_check_stats nomailcap_sanitize nomaildir_check_cur \ nomaildir_header_cache_verify nomaildir_trash nomark_old nomarkers nomenu_move_off \ nomenu_scroll nomessage_cache_clean nometa_key nometoo nomh_purge nomime_forward_decode \ nonarrow_tree nopager_stop nopgp_auto_decode nopgp_auto_traditional nopgp_autoencrypt \ nopgp_autoinline nopgp_autosign nopgp_check_exit nopgp_create_traditional \ nopgp_ignore_subkeys nopgp_long_ids nopgp_replyencrypt nopgp_replyinline nopgp_replysign \ nopgp_replysignencrypted nopgp_retainable_sigs nopgp_show_unusable nopgp_strict_enc \ nopgp_use_gpg_agent nopipe_decode nopipe_split nopop_auth_try_all nopop_last \ nopostpone_encrypt nopostpone_encrypt_as noprint_decode noprint_split noprompt_after \ noread_only noreflow_space_quotes noreflow_text noreflow_wrap noreply_self noresolve \ noresume_draft_files noresume_edited_draft_files noreverse_alias noreverse_name \ noreverse_realname norfc2047_parameters nosave_address nosave_empty nosave_name noscore \ nosidebar_folder_indent nosidebar_new_mail_only nosidebar_next_new_wrap \ nosidebar_short_path nosidebar_sort nosidebar_visible nosig_dashes nosig_on_top \ nosmart_wrap nosmime_ask_cert_label nosmime_decrypt_use_default_key nosmime_is_default \ nosort_re nossl_force_tls nossl_use_sslv2 nossl_use_sslv3 nossl_use_tlsv1 \ nossl_usesystemcerts nossl_verify_dates nossl_verify_host nostatus_on_top nostrict_mime \ nostrict_threads nosuspend notext_flowed nothorough_search nothread_received notilde \ nots_enabled nouncollapse_jump nouse_8bitmime nouse_domain nouse_envelope_from nouse_from \ nouse_idn nouse_ipv6 nouser_agent nowait_key noweed nowrap_search nowrite_bcc \ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarBool skipwhite contained \ invallow_8bit invallow_ansi invarrow_cursor invascii_chars invaskbcc invaskcc invattach_split \ invauto_tag invautoedit invbeep invbeep_new invbounce_delivered invbraille_friendly \ invcheck_mbox_size invcheck_new invcollapse_unread invconfirmappend invconfirmcreate \ invcrypt_autoencrypt invcrypt_autopgp invcrypt_autosign invcrypt_autosmime \ invcrypt_confirmhook invcrypt_opportunistic_encrypt invcrypt_replyencrypt \ invcrypt_replysign invcrypt_replysignencrypted invcrypt_timestamp invcrypt_use_gpgme \ invcrypt_use_pka invdelete_untag invdigest_collapse invduplicate_threads invedit_hdrs \ invedit_headers invencode_from invenvelope_from invfast_reply invfcc_clear invfollowup_to \ invforce_name invforw_decode invforw_decrypt invforw_quote invforward_decode invforward_decrypt \ invforward_quote invhdrs invheader invhelp invhidden_host invhide_limited invhide_missing \ invhide_thread_subject invhide_top_limited invhide_top_missing invhonor_disposition \ invidn_decode invidn_encode invignore_linear_white_space invignore_list_reply_to \ invimap_check_subscribed invimap_list_subscribed invimap_passive invimap_peek \ invimap_servernoise invimplicit_autoview invinclude_onlyfirst invkeep_flagged \ invmail_check_recent invmail_check_stats invmailcap_sanitize invmaildir_check_cur \ invmaildir_header_cache_verify invmaildir_trash invmark_old invmarkers invmenu_move_off \ invmenu_scroll invmessage_cache_clean invmeta_key invmetoo invmh_purge invmime_forward_decode \ invnarrow_tree invpager_stop invpgp_auto_decode invpgp_auto_traditional invpgp_autoencrypt \ invpgp_autoinline invpgp_autosign invpgp_check_exit invpgp_create_traditional \ invpgp_ignore_subkeys invpgp_long_ids invpgp_replyencrypt invpgp_replyinline invpgp_replysign \ invpgp_replysignencrypted invpgp_retainable_sigs invpgp_show_unusable invpgp_strict_enc \ invpgp_use_gpg_agent invpipe_decode invpipe_split invpop_auth_try_all invpop_last \ invpostpone_encrypt invpostpone_encrypt_as invprint_decode invprint_split invprompt_after \ invread_only invreflow_space_quotes invreflow_text invreflow_wrap invreply_self invresolve \ invresume_draft_files invresume_edited_draft_files invreverse_alias invreverse_name \ invreverse_realname invrfc2047_parameters invsave_address invsave_empty invsave_name invscore \ invsidebar_folder_indent invsidebar_new_mail_only invsidebar_next_new_wrap \ invsidebar_short_path invsidebar_sort invsidebar_visible invsig_dashes invsig_on_top \ invsmart_wrap invsmime_ask_cert_label invsmime_decrypt_use_default_key invsmime_is_default \ invsort_re invssl_force_tls invssl_use_sslv2 invssl_use_sslv3 invssl_use_tlsv1 \ invssl_usesystemcerts invssl_verify_dates invssl_verify_host invstatus_on_top invstrict_mime \ invstrict_threads invsuspend invtext_flowed invthorough_search invthread_received invtilde \ invts_enabled invuncollapse_jump invuse_8bitmime invuse_domain invuse_envelope_from invuse_from \ invuse_idn invuse_ipv6 invuser_agent invwait_key invweed invwrap_search invwrite_bcc \ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarQuad skipwhite contained \ abort_nosubject abort_unmodified bounce copy crypt_verify_sig delete \ fcc_attach forward_edit honor_followup_to include mime_forward \ mime_forward_rest mime_fwd move pgp_mime_auto pgp_verify_sig pop_delete \ pop_reconnect postpone print quit recall reply_to ssl_starttls \ nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarQuad skipwhite contained \ noabort_nosubject noabort_unmodified nobounce nocopy nocrypt_verify_sig nodelete \ nofcc_attach noforward_edit nohonor_followup_to noinclude nomime_forward \ nomime_forward_rest nomime_fwd nomove nopgp_mime_auto nopgp_verify_sig nopop_delete \ nopop_reconnect nopostpone noprint noquit norecall noreply_to nossl_starttls \ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarQuad skipwhite contained \ invabort_nosubject invabort_unmodified invbounce invcopy invcrypt_verify_sig invdelete \ invfcc_attach invforward_edit invhonor_followup_to invinclude invmime_forward \ invmime_forward_rest invmime_fwd invmove invpgp_mime_auto invpgp_verify_sig invpop_delete \ invpop_reconnect invpostpone invprint invquit invrecall invreply_to invssl_starttls \ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarNum skipwhite contained \ connect_timeout history imap_keepalive imap_pipeline_depth mail_check \ mail_check_stats_interval menu_context net_inc pager_context pager_index_lines \ pgp_timeout pop_checkinterval read_inc save_history score_threshold_delete \ score_threshold_flag score_threshold_read search_context sendmail_wait \ sidebar_width sleep_time smime_timeout ssl_min_dh_prime_bits time_inc timeout \ wrap wrap_headers wrapmargin write_inc \ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcFormatErrors contained /%./ syn match muttrcStrftimeEscapes contained /%[AaBbCcDdeFGgHhIjklMmnpRrSsTtUuVvWwXxYyZz+%]/ syn match muttrcStrftimeEscapes contained /%E[cCxXyY]/ syn match muttrcStrftimeEscapes contained /%O[BdeHImMSuUVwWy]/ syn region muttrcIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcQueryFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcAliasFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcAliasFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcAttachFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcAttachFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcComposeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcComposeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcFolderFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcFolderFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcMixFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcMixFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcPGPFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcPGPFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcPGPCmdFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcPGPCmdFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcStatusFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcStatusFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcSmimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcSmimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcStrftimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcStrftimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr " The following info was pulled from hdr_format_str in hdrline.c syn match muttrcIndexFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[aAbBcCdDeEfFHilLmMnNOPsStTuvXyYZ%]/ syn match muttrcIndexFormatEscapes contained /%[>|*]./ syn match muttrcIndexFormatConditionals contained /%?[EFHlLMNOXyY]?/ nextgroup=muttrcFormatConditionals2 " The following info was pulled from alias_format_str in addrbook.c syn match muttrcAliasFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[afnrt%]/ " The following info was pulled from query_format_str in query.c syn match muttrcQueryFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[acent%]/ syn match muttrcQueryFormatConditionals contained /%?[e]?/ nextgroup=muttrcFormatConditionals2 " The following info was pulled from mutt_attach_fmt in recvattach.c syn match muttrcAttachFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CcDdefImMnQstTuX%]/ syn match muttrcAttachFormatEscapes contained /%[>|*]./ syn match muttrcAttachFormatConditionals contained /%?[CcdDefInmMQstTuX]?/ nextgroup=muttrcFormatConditionals2 syn match muttrcFormatConditionals2 contained /[^?]*?/ " The following info was pulled from compose_format_str in compose.c syn match muttrcComposeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ahlv%]/ syn match muttrcComposeFormatEscapes contained /%[>|*]./ " The following info was pulled from folder_format_str in browser.c syn match muttrcFolderFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CDdfFglNstu%]/ syn match muttrcFolderFormatEscapes contained /%[>|*]./ syn match muttrcFolderFormatConditionals contained /%?[N]?/ " The following info was pulled from mix_entry_fmt in remailer.c syn match muttrcMixFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ncsa%]/ syn match muttrcMixFormatConditionals contained /%?[ncsa]?/ " The following info was pulled from crypt_entry_fmt in crypt-gpgme.c " and pgp_entry_fmt in pgpkey.c (note that crypt_entry_fmt supports " 'p', but pgp_entry_fmt does not). syn match muttrcPGPFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[nkualfctp%]/ syn match muttrcPGPFormatConditionals contained /%?[nkualfct]?/ " The following info was pulled from _mutt_fmt_pgp_command in " pgpinvoke.c syn match muttrcPGPCmdFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[pfsar%]/ syn match muttrcPGPCmdFormatConditionals contained /%?[pfsar]?/ nextgroup=muttrcFormatConditionals2 " The following info was pulled from status_format_str in status.c syn match muttrcStatusFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[bdfFhlLmMnopPrsStuvV%]/ syn match muttrcStatusFormatEscapes contained /%[>|*]./ syn match muttrcStatusFormatConditionals contained /%?[bdFlLmMnoptuV]?/ nextgroup=muttrcFormatConditionals2 " This matches the documentation, but directly contradicts the code " (according to the code, this should be identical to the " muttrcPGPCmdFormatEscapes syn match muttrcPGPGetKeysFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[r%]/ " The following info was pulled from _mutt_fmt_smime_command in " smime.c syn match muttrcSmimeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[Cciskaf%]/ syn match muttrcSmimeFormatConditionals contained /%?[Cciskaf]?/ nextgroup=muttrcFormatConditionals2 syn region muttrcTimeEscapes contained start=+%{+ end=+}+ contains=muttrcStrftimeEscapes syn region muttrcTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes syn region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrftimeEscapes syn region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes syn region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes syn keyword muttrcVarStr contained skipwhite attribution index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt syn match muttrcVarEqualsIdxFmt contained skipwhite "=" nextgroup=muttrcIndexFormatStr syn keyword muttrcVarStr contained skipwhite alias_format nextgroup=muttrcVarEqualsAliasFmt syn match muttrcVarEqualsAliasFmt contained skipwhite "=" nextgroup=muttrcAliasFormatStr syn keyword muttrcVarStr contained skipwhite attach_format nextgroup=muttrcVarEqualsAttachFmt syn match muttrcVarEqualsAttachFmt contained skipwhite "=" nextgroup=muttrcAttachFormatStr syn keyword muttrcVarStr contained skipwhite compose_format nextgroup=muttrcVarEqualsComposeFmt syn match muttrcVarEqualsComposeFmt contained skipwhite "=" nextgroup=muttrcComposeFormatStr syn keyword muttrcVarStr contained skipwhite folder_format nextgroup=muttrcVarEqualsFolderFmt syn match muttrcVarEqualsFolderFmt contained skipwhite "=" nextgroup=muttrcFolderFormatStr syn keyword muttrcVarStr contained skipwhite mix_entry_format nextgroup=muttrcVarEqualsMixFmt syn match muttrcVarEqualsMixFmt contained skipwhite "=" nextgroup=muttrcMixFormatStr syn keyword muttrcVarStr contained skipwhite pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt syn match muttrcVarEqualsPGPFmt contained skipwhite "=" nextgroup=muttrcPGPFormatStr syn keyword muttrcVarStr contained skipwhite query_format nextgroup=muttrcVarEqualsQueryFmt syn match muttrcVarEqualsQueryFmt contained skipwhite "=" nextgroup=muttrcQueryFormatStr syn keyword muttrcVarStr contained skipwhite pgp_decode_command pgp_verify_command pgp_decrypt_command pgp_clearsign_command pgp_sign_command pgp_encrypt_sign_command pgp_encrypt_only_command pgp_import_command pgp_export_command pgp_verify_key_command pgp_list_secring_command pgp_list_pubring_command nextgroup=muttrcVarEqualsPGPCmdFmt syn match muttrcVarEqualsPGPCmdFmt contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr syn keyword muttrcVarStr contained skipwhite ts_icon_format ts_status_format status_format nextgroup=muttrcVarEqualsStatusFmt syn match muttrcVarEqualsStatusFmt contained skipwhite "=" nextgroup=muttrcStatusFormatStr syn keyword muttrcVarStr contained skipwhite pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt syn match muttrcVarEqualsPGPGetKeysFmt contained skipwhite "=" nextgroup=muttrcPGPGetKeysFormatStr syn keyword muttrcVarStr contained skipwhite smime_decrypt_command smime_verify_command smime_verify_opaque_command smime_sign_command smime_sign_opaque_command smime_encrypt_command smime_pk7out_command smime_get_cert_command smime_get_signer_cert_command smime_import_cert_command smime_get_cert_email_command nextgroup=muttrcVarEqualsSmimeFmt syn match muttrcVarEqualsSmimeFmt contained skipwhite "=" nextgroup=muttrcSmimeFormatStr syn keyword muttrcVarStr contained skipwhite date_format nextgroup=muttrcVarEqualsStrftimeFmt syn match muttrcVarEqualsStrftimeFmt contained skipwhite "=" nextgroup=muttrcStrftimeFormatStr syn match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcVarStr contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarStr contained skipwhite \ alias_file assumed_charset attach_charset attach_sep certificate_file charset \ config_charset content_type default_hook display_filter dotlock_program \ dsn_notify dsn_return editor entropy_file envelope_from_address escape folder \ forw_format forward_format from gecos_mask hdr_format header_cache \ header_cache_compress header_cache_pagesize history_file hostname \ imap_authenticators imap_delim_chars imap_headers imap_idle imap_login \ imap_pass imap_user indent_str indent_string ispell locale mailcap_path mask \ mbox mbox_type message_cachedir mh_seq_flagged mh_seq_replied mh_seq_unseen \ mixmaster msg_format pager pgp_decryption_okay pgp_good_sign \ pgp_mime_signature_description pgp_mime_signature_filename pgp_sign_as \ pgp_sort_keys pipe_sep pop_authenticators pop_host pop_pass pop_user \ post_indent_str post_indent_string postpone_encrypt_as postponed preconnect \ print_cmd print_command query_command quote_regexp realname record \ reply_regexp send_charset sendmail shell sidebar_delim sidebar_delim_chars \ sidebar_divider_char sidebar_format sidebar_indent_string sidebar_sort_method \ signature simple_search smileys smime_ca_location smime_certificates \ smime_default_key smime_encrypt_with smime_keys smime_sign_as \ smime_sign_digest_alg smtp_authenticators smtp_pass smtp_url sort sort_alias \ sort_aux sort_browser spam_separator spoolfile ssl_ca_certificates_file \ ssl_ciphers ssl_client_cert status_chars tmpdir to_chars trash ts_icon_format \ ts_status_format tunnel visual \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr " Present in 1.4.2.1 (pgp_create_traditional was a bool then) syn keyword muttrcVarBool contained skipwhite imap_force_ssl noimap_force_ssl invimap_force_ssl nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr "syn keyword muttrcVarQuad contained pgp_create_traditional nopgp_create_traditional invpgp_create_traditional syn keyword muttrcVarStr contained skipwhite alternates nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcMenu contained alias attach browser compose editor index pager postpone pgp mix query generic syn match muttrcMenuList "\S\+" contained contains=muttrcMenu syn match muttrcMenuCommas /,/ contained syn keyword muttrcHooks contained skipwhite account-hook charset-hook iconv-hook message-hook folder-hook mbox-hook save-hook fcc-hook fcc-save-hook send-hook send2-hook reply-hook crypt-hook syn keyword muttrcCommand skipwhite \ alternative_order auto_view exec hdr_order iconv-hook ignore mailboxes \ mailto_allow mime_lookup my_hdr pgp-hook push score sidebar_whitelist source \ unalternative_order unalternative_order unauto_view ungroup unhdr_order \ unignore unmailboxes unmailto_allow unmime_lookup unmono unmy_hdr unscore syn keyword muttrcCommand skipwhite charset-hook nextgroup=muttrcRXString syn keyword muttrcCommand skipwhite unhook nextgroup=muttrcHooks syn keyword muttrcCommand skipwhite spam nextgroup=muttrcSpamPattern syn region muttrcSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL syn region muttrcSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL syn keyword muttrcCommand skipwhite nospam nextgroup=muttrcNoSpamPattern syn region muttrcNoSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern syn region muttrcNoSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern syn match muttrcAttachmentsMimeType contained "[*a-z0-9_-]\+/[*a-z0-9._-]\+\s*" skipwhite nextgroup=muttrcAttachmentsMimeType syn match muttrcAttachmentsFlag contained "[+-]\%([AI]\|inline\|attachment\)\s\+" skipwhite nextgroup=muttrcAttachmentsMimeType syn match muttrcAttachmentsLine "^\s*\%(un\)\?attachments\s\+" skipwhite nextgroup=muttrcAttachmentsFlag syn match muttrcUnHighlightSpace contained "\%(\s\+\|\\$\)" syn keyword muttrcAsterisk contained * syn keyword muttrcListsKeyword lists skipwhite nextgroup=muttrcGroupDef,muttrcComment syn keyword muttrcListsKeyword unlists skipwhite nextgroup=muttrcAsterisk,muttrcComment syn keyword muttrcSubscribeKeyword subscribe nextgroup=muttrcGroupDef,muttrcComment syn keyword muttrcSubscribeKeyword unsubscribe nextgroup=muttrcAsterisk,muttrcComment syn keyword muttrcAlternateKeyword contained alternates unalternates syn region muttrcAlternatesLine keepend start=+^\s*\%(un\)\?alternates\s+ skip=+\\$+ end=+$+ contains=muttrcAlternateKeyword,muttrcGroupDef,muttrcRXPat,muttrcUnHighlightSpace,muttrcComment " muttrcVariable includes a prefix because partial strings are considered " valid. syn match muttrcVariable contained "\\\@]\+" contains=muttrcEmail syn match muttrcFunction contained "\<\%(attach\|bounce\|copy\|delete\|display\|flag\|forward\|parent\|pipe\|postpone\|print\|purge\|recall\|resend\|save\|send\|tag\|undelete\)-message\>" syn match muttrcFunction contained "\<\%(delete\|next\|previous\|read\|tag\|break\|undelete\)-thread\>" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\<\%(backward\|capitalize\|downcase\|forward\|kill\|upcase\)-word\>" syn match muttrcFunction contained "\<\%(delete\|filter\|first\|last\|next\|pipe\|previous\|print\|save\|select\|tag\|undelete\)-entry\>" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\<\%(backspace\|backward-char\|bol\|bottom\|bottom-page\|buffy-cycle\|clear-flag\|complete\%(-query\)\?\|copy-file\|create-alias\|detach-file\|eol\|exit\|extract-keys\|\%(imap-\)\?fetch-mail\|forget-passphrase\|forward-char\|group-reply\|help\|ispell\|jump\|limit\|list-reply\|mail\|mail-key\|mark-as-new\|middle-page\|new-mime\|noop\|pgp-menu\|query\|query-append\|quit\|quote-char\|read-subthread\|redraw-screen\|refresh\|rename-file\|reply\|select-new\|set-flag\|shell-escape\|skip-quoted\|sort\|subscribe\|sync-mailbox\|top\|top-page\|transpose-chars\|unsubscribe\|untag-pattern\|verify-key\|what-key\|write-fcc\)\>" syn keyword muttrcFunction contained imap-logout-all if use_mutt_sidebar == 1 syn match muttrcFunction contained "\]\{-}>" contains=muttrcBadAction,muttrcFunction,muttrcKeyName syn keyword muttrcCommand set skipwhite nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcCommand unset skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcCommand reset skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcCommand toggle skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr " First, functions that take regular expressions: syn match muttrcRXHookNot contained /!\s*/ skipwhite nextgroup=muttrcRXHookString,muttrcRXHookStringNL syn match muttrcRXHooks /\<\%(account\|folder\)-hook\>/ skipwhite nextgroup=muttrcRXHookNot,muttrcRXHookString,muttrcRXHookStringNL " Now, functions that take patterns syn match muttrcPatHookNot contained /!\s*/ skipwhite nextgroup=muttrcPattern syn match muttrcPatHooks /\<\%(mbox\|crypt\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcPattern syn match muttrcPatHooks /\<\%(message\|reply\|send\|send2\|save\|\|fcc\%(-save\)\?\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcOptPattern syn match muttrcBindFunction contained /\S\+\>/ skipwhite contains=muttrcFunction syn match muttrcBindFunctionNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindFunction,muttrcBindFunctionNL syn match muttrcBindKey contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcBindFunction,muttrcBindFunctionNL syn match muttrcBindKeyNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindKey,muttrcBindKeyNL syn match muttrcBindMenuList contained /\S\+/ skipwhite contains=muttrcMenu,muttrcMenuCommas nextgroup=muttrcBindKey,muttrcBindKeyNL syn match muttrcBindMenuListNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindMenuList,muttrcBindMenuListNL syn keyword muttrcCommand skipwhite bind nextgroup=muttrcBindMenuList,muttrcBindMenuListNL syn region muttrcMacroDescr contained keepend skipwhite start=+\s*\S+ms=e skip=+\\ + end=+ \|$+me=s syn region muttrcMacroDescr contained keepend skipwhite start=+'+ms=e skip=+\\'+ end=+'+me=s syn region muttrcMacroDescr contained keepend skipwhite start=+"+ms=e skip=+\\"+ end=+"+me=s syn match muttrcMacroDescrNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroDescr,muttrcMacroDescrNL syn region muttrcMacroBody contained skipwhite start="\S" skip='\\ \|\\$' end=' \|$' contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL syn region muttrcMacroBody matchgroup=Type contained skipwhite start=+'+ms=e skip=+\\'+ end=+'\|\%(\%(\\\\\)\@]\+>/ contains=muttrcEmail nextgroup=muttrcAliasComma syn match muttrcAliasEncEmailNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL syn match muttrcAliasNameNoParens contained /[^<(@]\+\s\+/ nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL syn region muttrcAliasName contained matchgroup=Type start=/(/ end=/)/ skipwhite syn match muttrcAliasNameNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasName,muttrcAliasNameNL syn match muttrcAliasENNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL syn match muttrcAliasKey contained /\s*[^- \t]\S\+/ skipwhite nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL syn match muttrcAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL syn keyword muttrcCommand skipwhite alias nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL syn match muttrcUnAliasKey contained "\s*\w\+\s*" skipwhite nextgroup=muttrcUnAliasKey,muttrcUnAliasNL syn match muttrcUnAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcUnAliasKey,muttrcUnAliasNL syn keyword muttrcCommand skipwhite unalias nextgroup=muttrcUnAliasKey,muttrcUnAliasNL syn match muttrcSimplePat contained "!\?\^\?[~][ADEFgGklNOpPQRSTuUvV=$]" syn match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s*\%([<>-][0-9]\+[kM]\?\|[0-9]\+[kM]\?[-]\%([0-9]\+[kM]\?\)\?\)" syn match muttrcSimplePat contained "!\?\^\?[~][dr]\s*\%(\%(-\?[0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)\|\%(\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)-\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)\?\)\?\)\|\%([<>=][0-9]\+[ymwd]\)\|\%(`[^`]\+`\)\|\%(\$[a-zA-Z0-9_-]\+\)\)" contains=muttrcShellString,muttrcVariable syn match muttrcSimplePat contained "!\?\^\?[~][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatRXContainer syn match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString syn match muttrcSimplePat contained "!\?\^\?[=][bcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString syn region muttrcSimplePat contained keepend start=+!\?\^\?[~](+ end=+)+ contains=muttrcSimplePat "syn match muttrcSimplePat contained /'[^~=%][^']*/ contains=muttrcRXString syn region muttrcSimplePatString contained keepend start=+"+ end=+"+ skip=+\\"+ syn region muttrcSimplePatString contained keepend start=+'+ end=+'+ skip=+\\'+ syn region muttrcSimplePatString contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 syn region muttrcSimplePatRXContainer contained keepend start=+"+ end=+"+ skip=+\\"+ contains=muttrcRXString syn region muttrcSimplePatRXContainer contained keepend start=+'+ end=+'+ skip=+\\'+ contains=muttrcRXString syn region muttrcSimplePatRXContainer contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 contains=muttrcRXString syn match muttrcSimplePatMetas contained /[(|)]/ syn match muttrcOptSimplePat contained skipwhite /[~=%!(^].*/ contains=muttrcSimplePat,muttrcSimplePatMetas syn match muttrcOptSimplePat contained skipwhite /[^~=%!(^].*/ contains=muttrcRXString syn region muttrcOptPattern contained matchgroup=Type keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL syn region muttrcOptPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL syn region muttrcOptPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL syn match muttrcOptPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL syn match muttrcOptPattern contained skipwhite /[.]/ nextgroup=muttrcString,muttrcStringNL " Keep muttrcPattern and muttrcOptPattern synchronized syn region muttrcPattern contained matchgroup=Type keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas syn region muttrcPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas syn region muttrcPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat syn match muttrcPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat syn match muttrcPattern contained skipwhite /[.]/ syn region muttrcPatternInner contained keepend start=+"[~=%!(^]+ms=s+1 skip=+\\"+ end=+"+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas syn region muttrcPatternInner contained keepend start=+'[~=%!(^]+ms=s+1 skip=+\\'+ end=+'+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas " Colour definitions takes object, foreground and background arguments (regexps excluded). syn match muttrcColorMatchCount contained "[0-9]\+" syn match muttrcColorMatchCountNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL syn region muttrcColorRXPat contained start=+\s*'+ skip=+\\'+ end=+'\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL syn region muttrcColorRXPat contained start=+\s*"+ skip=+\\"+ end=+"\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL syn keyword muttrcColorField skipwhite contained \ attachment body bold error hdrdefault header index indicator markers message \ normal prompt quoted search sidebar-divider sidebar-flagged sidebar-highlight \ sidebar-indicator sidebar-new sidebar-spoolfile signature status tilde tree \ underline syn match muttrcColorField contained "\" if use_mutt_sidebar == 1 syn keyword muttrcColorField contained sidebar_new endif syn keyword muttrcColor contained black blue cyan default green magenta red white yellow syn keyword muttrcColor contained brightblack brightblue brightcyan brightdefault brightgreen brightmagenta brightred brightwhite brightyellow syn match muttrcColor contained "\<\%(bright\)\=color\d\{1,3}\>" " Now for the structure of the color line syn match muttrcColorRXNL contained skipnl "\s*\\$" nextgroup=muttrcColorRXPat,muttrcColorRXNL syn match muttrcColorBG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorRXPat,muttrcColorRXNL syn match muttrcColorBGNL contained skipnl "\s*\\$" nextgroup=muttrcColorBG,muttrcColorBGNL syn match muttrcColorFG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBG,muttrcColorBGNL syn match muttrcColorFGNL contained skipnl "\s*\\$" nextgroup=muttrcColorFG,muttrcColorFGNL syn match muttrcColorContext contained /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorFG,muttrcColorFGNL syn match muttrcColorNL contained skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL syn match muttrcColorKeyword contained /^\s*color\s\+/ nextgroup=muttrcColorContext,muttrcColorNL syn region muttrcColorLine keepend start=/^\s*color\s\+\%(index\|header\)\@!/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace " Now for the structure of the color index line syn match muttrcPatternNL contained skipnl "\s*\\$" nextgroup=muttrcPattern,muttrcPatternNL syn match muttrcColorBGI contained /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcPattern,muttrcPatternNL syn match muttrcColorBGNLI contained skipnl "\s*\\$" nextgroup=muttrcColorBGI,muttrcColorBGNLI syn match muttrcColorFGI contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGI,muttrcColorBGNLI syn match muttrcColorFGNLI contained skipnl "\s*\\$" nextgroup=muttrcColorFGI,muttrcColorFGNLI syn match muttrcColorContextI contained /\s*\/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGI,muttrcColorFGNLI syn match muttrcColorNLI contained skipnl "\s*\\$" nextgroup=muttrcColorContextI,muttrcColorNLI syn match muttrcColorKeywordI contained skipwhite /\/ nextgroup=muttrcColorContextI,muttrcColorNLI syn region muttrcColorLine keepend skipwhite start=/\/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordI,muttrcComment,muttrcUnHighlightSpace " Now for the structure of the color header line syn match muttrcRXPatternNL contained skipnl "\s*\\$" nextgroup=muttrcRXString,muttrcRXPatternNL syn match muttrcColorBGH contained /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcRXString,muttrcRXPatternNL syn match muttrcColorBGNLH contained skipnl "\s*\\$" nextgroup=muttrcColorBGH,muttrcColorBGNLH syn match muttrcColorFGH contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGH,muttrcColorBGNLH syn match muttrcColorFGNLH contained skipnl "\s*\\$" nextgroup=muttrcColorFGH,muttrcColorFGNLH syn match muttrcColorContextH contained /\s*\/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGH,muttrcColorFGNLH syn match muttrcColorNLH contained skipnl "\s*\\$" nextgroup=muttrcColorContextH,muttrcColorNLH syn match muttrcColorKeywordH contained skipwhite /\/ nextgroup=muttrcColorContextH,muttrcColorNLH syn region muttrcColorLine keepend skipwhite start=/\/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordH,muttrcComment,muttrcUnHighlightSpace " And now color's brother: syn region muttrcUnColorPatterns contained skipwhite start=+\s*'+ end=+'+ skip=+\\'+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL syn region muttrcUnColorPatterns contained skipwhite start=+\s*"+ end=+"+ skip=+\\"+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL syn match muttrcUnColorPatterns contained skipwhite /\s*[^'"\s]\S\*/ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL syn match muttrcUnColorPatNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL syn match muttrcUnColorAll contained skipwhite /[*]/ syn match muttrcUnColorAPNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL syn match muttrcUnColorIndex contained skipwhite /\s*index\s\+/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL syn match muttrcUnColorIndexNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL syn match muttrcUnColorKeyword contained skipwhite /^\s*uncolor\s\+/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL syn region muttrcUnColorLine keepend start=+^\s*uncolor\s+ skip=+\\$+ end=+$+ contains=muttrcUnColorKeyword,muttrcComment,muttrcUnHighlightSpace " Mono are almost like color (ojects inherited from color) syn keyword muttrcMonoAttrib contained bold none normal reverse standout underline syn keyword muttrcMono contained mono skipwhite nextgroup=muttrcColorField syn match muttrcMonoLine "^\s*mono\s\+\S\+" skipwhite nextgroup=muttrcMonoAttrib contains=muttrcMono " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link muttrcComment Comment hi def link muttrcEscape SpecialChar hi def link muttrcRXChars SpecialChar hi def link muttrcString String hi def link muttrcRXString String hi def link muttrcRXString2 String hi def link muttrcSpecial Special hi def link muttrcHooks Type hi def link muttrcGroupFlag Type hi def link muttrcGroupDef Macro hi def link muttrcAddrDef muttrcGroupFlag hi def link muttrcRXDef muttrcGroupFlag hi def link muttrcRXPat String hi def link muttrcAliasGroupName Macro hi def link muttrcAliasKey Identifier hi def link muttrcUnAliasKey Identifier hi def link muttrcAliasEncEmail Identifier hi def link muttrcAliasParens Type hi def link muttrcSetNumAssignment Number hi def link muttrcSetBoolAssignment Boolean hi def link muttrcSetQuadAssignment Boolean hi def link muttrcSetStrAssignment String hi def link muttrcEmail Special hi def link muttrcVariableInner Special hi def link muttrcEscapedVariable String hi def link muttrcHeader Type hi def link muttrcKeySpecial SpecialChar hi def link muttrcKey Type hi def link muttrcKeyName SpecialChar hi def link muttrcVarBool Identifier hi def link muttrcVarQuad Identifier hi def link muttrcVarNum Identifier hi def link muttrcVarStr Identifier hi def link muttrcMenu Identifier hi def link muttrcCommand Keyword hi def link muttrcMacroDescr String hi def link muttrcAction Macro hi def link muttrcBadAction Error hi def link muttrcBindFunction Error hi def link muttrcBindMenuList Error hi def link muttrcFunction Macro hi def link muttrcGroupKeyword muttrcCommand hi def link muttrcGroupLine Error hi def link muttrcSubscribeKeyword muttrcCommand hi def link muttrcSubscribeLine Error hi def link muttrcListsKeyword muttrcCommand hi def link muttrcListsLine Error hi def link muttrcAlternateKeyword muttrcCommand hi def link muttrcAlternatesLine Error hi def link muttrcAttachmentsLine muttrcCommand hi def link muttrcAttachmentsFlag Type hi def link muttrcAttachmentsMimeType String hi def link muttrcColorLine Error hi def link muttrcColorContext Error hi def link muttrcColorContextI Identifier hi def link muttrcColorContextH Identifier hi def link muttrcColorKeyword muttrcCommand hi def link muttrcColorKeywordI muttrcColorKeyword hi def link muttrcColorKeywordH muttrcColorKeyword hi def link muttrcColorField Identifier hi def link muttrcColor Type hi def link muttrcColorFG Error hi def link muttrcColorFGI Error hi def link muttrcColorFGH Error hi def link muttrcColorBG Error hi def link muttrcColorBGI Error hi def link muttrcColorBGH Error hi def link muttrcMonoAttrib muttrcColor hi def link muttrcMono muttrcCommand hi def link muttrcSimplePat Identifier hi def link muttrcSimplePatString Macro hi def link muttrcSimplePatMetas Special hi def link muttrcPattern Error hi def link muttrcUnColorLine Error hi def link muttrcUnColorKeyword muttrcCommand hi def link muttrcUnColorIndex Identifier hi def link muttrcShellString muttrcEscape hi def link muttrcRXHooks muttrcCommand hi def link muttrcRXHookNot Type hi def link muttrcPatHooks muttrcCommand hi def link muttrcPatHookNot Type hi def link muttrcFormatConditionals2 Type hi def link muttrcIndexFormatStr muttrcString hi def link muttrcIndexFormatEscapes muttrcEscape hi def link muttrcIndexFormatConditionals muttrcFormatConditionals2 hi def link muttrcAliasFormatStr muttrcString hi def link muttrcAliasFormatEscapes muttrcEscape hi def link muttrcAttachFormatStr muttrcString hi def link muttrcAttachFormatEscapes muttrcEscape hi def link muttrcAttachFormatConditionals muttrcFormatConditionals2 hi def link muttrcComposeFormatStr muttrcString hi def link muttrcComposeFormatEscapes muttrcEscape hi def link muttrcFolderFormatStr muttrcString hi def link muttrcFolderFormatEscapes muttrcEscape hi def link muttrcFolderFormatConditionals muttrcFormatConditionals2 hi def link muttrcMixFormatStr muttrcString hi def link muttrcMixFormatEscapes muttrcEscape hi def link muttrcMixFormatConditionals muttrcFormatConditionals2 hi def link muttrcPGPFormatStr muttrcString hi def link muttrcPGPFormatEscapes muttrcEscape hi def link muttrcPGPFormatConditionals muttrcFormatConditionals2 hi def link muttrcPGPCmdFormatStr muttrcString hi def link muttrcPGPCmdFormatEscapes muttrcEscape hi def link muttrcPGPCmdFormatConditionals muttrcFormatConditionals2 hi def link muttrcStatusFormatStr muttrcString hi def link muttrcStatusFormatEscapes muttrcEscape hi def link muttrcStatusFormatConditionals muttrcFormatConditionals2 hi def link muttrcPGPGetKeysFormatStr muttrcString hi def link muttrcPGPGetKeysFormatEscapes muttrcEscape hi def link muttrcSmimeFormatStr muttrcString hi def link muttrcSmimeFormatEscapes muttrcEscape hi def link muttrcSmimeFormatConditionals muttrcFormatConditionals2 hi def link muttrcTimeEscapes muttrcEscape hi def link muttrcPGPTimeEscapes muttrcEscape hi def link muttrcStrftimeEscapes Type hi def link muttrcStrftimeFormatStr muttrcString hi def link muttrcFormatErrors Error hi def link muttrcBindFunctionNL SpecialChar hi def link muttrcBindKeyNL SpecialChar hi def link muttrcBindMenuListNL SpecialChar hi def link muttrcMacroDescrNL SpecialChar hi def link muttrcMacroBodyNL SpecialChar hi def link muttrcMacroKeyNL SpecialChar hi def link muttrcMacroMenuListNL SpecialChar hi def link muttrcColorMatchCountNL SpecialChar hi def link muttrcColorNL SpecialChar hi def link muttrcColorRXNL SpecialChar hi def link muttrcColorBGNL SpecialChar hi def link muttrcColorFGNL SpecialChar hi def link muttrcAliasNameNL SpecialChar hi def link muttrcAliasENNL SpecialChar hi def link muttrcAliasNL SpecialChar hi def link muttrcUnAliasNL SpecialChar hi def link muttrcAliasGroupDefNL SpecialChar hi def link muttrcAliasEncEmailNL SpecialChar hi def link muttrcPatternNL SpecialChar hi def link muttrcUnColorPatNL SpecialChar hi def link muttrcUnColorAPNL SpecialChar hi def link muttrcUnColorIndexNL SpecialChar hi def link muttrcStringNL SpecialChar let b:current_syntax = "muttrc" let &cpo = s:cpo_save unlet s:cpo_save "EOF vim: ts=8 noet tw=100 sw=8 sts=0 ft=vim PK!H1vim80/syntax/sgmldecl.vimnu[" Vim syntax file " Language: SGML (SGML Declaration ) " Last Change: jueves, 28 de diciembre de 2000, 13:51:44 CLST " Maintainer: "Daniel A. Molina W." " You can modify and maintain this file, in other case send comments " the maintainer email address. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim syn case ignore syn region sgmldeclDeclBlock transparent start=++ syn region sgmldeclTagBlock transparent start=+<+ end=+>+ \ contains=ALLBUT, \ @sgmlTagError,@sgmlErrInTag syn region sgmldeclComment contained start=+--+ end=+--+ syn keyword sgmldeclDeclKeys SGML CHARSET CAPACITY SCOPE SYNTAX \ FEATURES syn keyword sgmldeclTypes BASESET DESCSET DOCUMENT NAMING DELIM \ NAMES QUANTITY SHUNCHAR DOCTYPE \ ELEMENT ENTITY ATTLIST NOTATION \ TYPE syn keyword sgmldeclStatem CONTROLS FUNCTION NAMECASE MINIMIZE \ LINK OTHER APPINFO REF ENTITIES syn keyword sgmldeclVariables TOTALCAP GRPCAP ENTCAP DATATAG OMITTAG RANK \ SIMPLE IMPLICIT EXPLICIT CONCUR SUBDOC FORMAL ATTCAP \ ATTCHCAP AVGRPCAP ELEMCAP ENTCHCAP IDCAP IDREFCAP \ SHORTTAG syn match sgmldeclNConst contained +[0-9]\++ syn region sgmldeclString contained start=+"+ end=+"+ syn keyword sgmldeclBool YES NO syn keyword sgmldeclSpecial SHORTREF SGMLREF UNUSED NONE GENERAL \ SEEALSO ANY syn sync lines=250 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link sgmldeclDeclKeys Keyword hi def link sgmldeclTypes Type hi def link sgmldeclConst Constant hi def link sgmldeclNConst Constant hi def link sgmldeclString String hi def link sgmldeclDeclBlock Normal hi def link sgmldeclBool Boolean hi def link sgmldeclSpecial Special hi def link sgmldeclComment Comment hi def link sgmldeclStatem Statement hi def link sgmldeclVariables Type let b:current_syntax = "sgmldecl" let &cpo = s:keepcpo unlet s:keepcpo " vim:set tw=78 ts=4: PK!m{""vim80/syntax/rst.vimnu[" Vim syntax file " Language: reStructuredText documentation format " Maintainer: Marshall Ward " Previous Maintainer: Nikolai Weibull " Website: https://github.com/marshallward/vim-restructuredtext " Latest Revision: 2016-08-18 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn match rstTransition /^[=`:.'"~^_*+#-]\{4,}\s*$/ syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis, \ rstInterpretedText,rstInlineLiteral,rstSubstitutionReference, \ rstInlineInternalTargets,rstFootnoteReference,rstHyperlinkReference syn region rstLiteralBlock matchgroup=rstDelimiter \ start='::\_s*\n\ze\z(\s\+\)' skip='^$' end='^\z1\@!' \ contains=@NoSpell syn region rstQuotedLiteralBlock matchgroup=rstDelimiter \ start="::\_s*\n\ze\z([!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]\)" \ end='^\z1\@!' contains=@NoSpell syn region rstDoctestBlock oneline display matchgroup=rstDelimiter \ start='^>>>\s' end='^$' syn region rstTable transparent start='^\n\s*+[-=+]\+' end='^$' \ contains=rstTableLines,@rstCruft syn match rstTableLines contained display '|\|+\%(=\+\|-\+\)\=' syn region rstSimpleTable transparent \ start='^\n\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$' \ end='^$' \ contains=rstSimpleTableLines,@rstCruft syn match rstSimpleTableLines contained display \ '^\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$' syn match rstSimpleTableLines contained display \ '^\%(\s*\)\@>\%(\%(-\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(-\+\)\@>\%(\s*\)\@>\)\+\)\@>$' syn cluster rstDirectives contains=rstFootnote,rstCitation, \ rstHyperlinkTarget,rstExDirective syn match rstExplicitMarkup '^\s*\.\.\_s' \ nextgroup=@rstDirectives,rstComment,rstSubstitutionDefinition let s:ReferenceName = '[[:alnum:]]\+\%([_.-][[:alnum:]]\+\)*' syn keyword rstTodo contained FIXME TODO XXX NOTE execute 'syn region rstComment contained' . \ ' start=/.*/' \ ' end=/^\s\@!/ contains=rstTodo' execute 'syn region rstFootnote contained matchgroup=rstDirective' . \ ' start=+\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]\_s+' . \ ' skip=+^$+' . \ ' end=+^\s\@!+ contains=@rstCruft,@NoSpell' execute 'syn region rstCitation contained matchgroup=rstDirective' . \ ' start=+\[' . s:ReferenceName . '\]\_s+' . \ ' skip=+^$+' . \ ' end=+^\s\@!+ contains=@rstCruft,@NoSpell' syn region rstHyperlinkTarget contained matchgroup=rstDirective \ start='_\%(_\|[^:\\]*\%(\\.[^:\\]*\)*\):\_s' skip=+^$+ end=+^\s\@!+ syn region rstHyperlinkTarget contained matchgroup=rstDirective \ start='_`[^`\\]*\%(\\.[^`\\]*\)*`:\_s' skip=+^$+ end=+^\s\@!+ syn region rstHyperlinkTarget matchgroup=rstDirective \ start=+^__\_s+ skip=+^$+ end=+^\s\@!+ execute 'syn region rstExDirective contained matchgroup=rstDirective' . \ ' start=+' . s:ReferenceName . '::\_s+' . \ ' skip=+^$+' . \ ' end=+^\s\@!+ contains=@rstCruft,rstLiteralBlock' execute 'syn match rstSubstitutionDefinition contained' . \ ' /|' . s:ReferenceName . '|\_s\+/ nextgroup=@rstDirectives' function! s:DefineOneInlineMarkup(name, start, middle, end, char_left, char_right) execute 'syn region rst' . a:name . \ ' start=+' . a:char_left . '\zs' . a:start . \ '\ze[^[:space:]' . a:char_right . a:start[strlen(a:start) - 1] . ']+' . \ a:middle . \ ' end=+\S' . a:end . '\ze\%($\|\s\|[''"’)\]}>/:.,;!?\\-]\)+' endfunction function! s:DefineInlineMarkup(name, start, middle, end) let middle = a:middle != "" ? \ (' skip=+\\\\\|\\' . a:middle . '+') : \ "" call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, "'", "'") call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '"', '"') call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '(', ')') call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\[', '\]') call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '{', '}') call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '<', '>') call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '’', '’') " TODO: Additional Unicode Pd, Po, Pi, Pf, Ps characters call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\%(^\|\s\|[/:]\)', '') execute 'syn match rst' . a:name . \ ' +\%(^\|\s\|[''"([{/:.,;!?\\-]\)+' execute 'hi def link rst' . a:name . 'Delimiter' . ' rst' . a:name endfunction call s:DefineInlineMarkup('Emphasis', '\*', '\*', '\*') call s:DefineInlineMarkup('StrongEmphasis', '\*\*', '\*', '\*\*') call s:DefineInlineMarkup('InterpretedTextOrHyperlinkReference', '`', '`', '`_\{0,2}') call s:DefineInlineMarkup('InlineLiteral', '``', "", '``') call s:DefineInlineMarkup('SubstitutionReference', '|', '|', '|_\{0,2}') call s:DefineInlineMarkup('InlineInternalTargets', '_`', '`', '`') syn match rstSections "^\%(\([=`:.'"~^_*+#-]\)\1\+\n\)\=.\+\n\([=`:.'"~^_*+#-]\)\2\+$" " TODO: Can’t remember why these two can’t be defined like the ones above. execute 'syn match rstFootnoteReference contains=@NoSpell' . \ ' +\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]_+' execute 'syn match rstCitationReference contains=@NoSpell' . \ ' +\[' . s:ReferenceName . '\]_\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)+' execute 'syn match rstHyperlinkReference' . \ ' /\<' . s:ReferenceName . '__\=\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)/' syn match rstStandaloneHyperlink contains=@NoSpell \ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]" syn region rstCodeBlock contained matchgroup=rstDirective \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s\+\w*\_s*\n\ze\z(\s\+\)+ \ skip=+^$+ \ end=+^\z1\@!+ \ contains=@NoSpell syn cluster rstDirectives add=rstCodeBlock if !exists('g:rst_syntax_code_list') let g:rst_syntax_code_list = ['vim', 'java', 'cpp', 'lisp', 'php', \ 'python', 'perl', 'sh'] endif for code in g:rst_syntax_code_list unlet! b:current_syntax " guard against setting 'isk' option which might cause problems (issue #108) let prior_isk = &l:iskeyword exe 'syn include @rst'.code.' syntax/'.code.'.vim' exe 'syn region rstDirective'.code.' matchgroup=rstDirective fold' \.' start=#\%(sourcecode\|code\%(-block\)\=\)::\s\+'.code.'\_s*\n\ze\z(\s\+\)#' \.' skip=#^$#' \.' end=#^\z1\@!#' \.' contains=@NoSpell,@rst'.code exe 'syn cluster rstDirectives add=rstDirective'.code " reset 'isk' setting, if it has been changed if &l:iskeyword !=# prior_isk let &l:iskeyword = prior_isk endif unlet! prior_isk endfor " TODO: Use better syncing. syn sync minlines=50 linebreaks=2 hi def link rstTodo Todo hi def link rstComment Comment hi def link rstSections Title hi def link rstTransition rstSections hi def link rstLiteralBlock String hi def link rstQuotedLiteralBlock String hi def link rstDoctestBlock PreProc hi def link rstTableLines rstDelimiter hi def link rstSimpleTableLines rstTableLines hi def link rstExplicitMarkup rstDirective hi def link rstDirective Keyword hi def link rstFootnote String hi def link rstCitation String hi def link rstHyperlinkTarget String hi def link rstExDirective String hi def link rstSubstitutionDefinition rstDirective hi def link rstDelimiter Delimiter hi def rstEmphasis ctermfg=13 term=italic cterm=italic gui=italic hi def rstStrongEmphasis ctermfg=1 term=bold cterm=bold gui=bold hi def link rstInterpretedTextOrHyperlinkReference Identifier hi def link rstInlineLiteral String hi def link rstSubstitutionReference PreProc hi def link rstInlineInternalTargets Identifier hi def link rstFootnoteReference Identifier hi def link rstCitationReference Identifier hi def link rstHyperLinkReference Identifier hi def link rstStandaloneHyperlink Identifier hi def link rstCodeBlock String let b:current_syntax = "rst" let &cpo = s:cpo_save unlet s:cpo_save PK!%EEvim80/syntax/fan.vimnu[" Vim syntax file " Language: Fantom " Maintainer: Kamil Toman " Last Change: 2010 May 27 " Based on Java syntax file by Claudio Fleiner " Quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " keyword definitions syn keyword fanExternal using native syn keyword fanError goto void serializable volatile syn keyword fanConditional if else switch syn keyword fanRepeat do while for foreach each syn keyword fanBoolean true false syn keyword fanConstant null syn keyword fanTypedef this super syn keyword fanOperator new is isnot as syn keyword fanLongOperator plus minus mult div mod get set slice lshift rshift and or xor inverse negate increment decrement equals compare syn keyword fanType Void Bool Int Float Decimal Str Duration Uri Type Range List Map Obj syn keyword fanStatement return syn keyword fanStorageClass static const final syn keyword fanSlot virtual override once syn keyword fanField readonly syn keyword fanExceptions throw try catch finally syn keyword fanAssert assert syn keyword fanTypedef class enum mixin syn match fanFacet "@[_a-zA-Z][_a-zA-Z0-9_]*\>" syn keyword fanBranch break continue syn keyword fanScopeDecl public internal protected private abstract if exists("fan_space_errors") if !exists("fan_no_trail_space_error") syn match fanSpaceError "\s\+$" endif if !exists("fan_no_tab_space_error") syn match fanSpaceError " \+\t"me=e-1 endif endif syn region fanLabelRegion transparent matchgroup=fanLabel start="\" matchgroup=NONE end=":" contains=fanNumber,fanCharacter syn keyword fanLabel default syn keyword fanLabel case " The following cluster contains all fan groups except the contained ones syn cluster fanTop add=fanExternal,fanError,fanConditional,fanRepeat,fanBoolean,fanConstant,fanTypedef,fanOperator,fanLongOperator,fanType,fanType,fanStatement,fanStorageClass,fanSlot,fanField,fanExceptions,fanAssert,fanClassDecl,fanTypedef,fanFacet,fanBranch,fanScopeDecl,fanLabelRegion,fanLabel " Comments syn keyword fanTodo contained TODO FIXME XXX syn region fanComment start="/\*" end="\*/" contains=@fanCommentSpecial,fanTodo,fanComment,@Spell syn match fanCommentStar contained "^\s*\*[^/]"me=e-1 syn match fanCommentStar contained "^\s*\*$" syn match fanLineComment "//.*" contains=@fanCommentSpecial2,fanTodo,@Spell syn match fanDocComment "\*\*.*" contains=@fanCommentSpecial2,fanTodo,@Spell hi def link fanCommentString fanString hi def link fanComment2String fanString hi def link fanCommentCharacter fanCharacter syn cluster fanTop add=fanComment,fanLineComment,fanDocComment " match the special comment /**/ syn match fanComment "/\*\*/" " Strings and constants syn match fanSpecialError contained "\\." syn match fanSpecialCharError contained "[^']" syn match fanSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\|\$\)" syn match fanStringSubst contained "\$[A-Za-z][A-Za-z_.]*" syn match fanStringSubst contained "\${[^}]*}" syn region fanString start=+"+ end=+"+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell syn region fanTripleString start=+"""+ end=+"""+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell syn region fanDSL start=+<|+ end=+|>+ syn match fanUri "`[^`]*`" syn match fanCharacter "'[^']*'" contains=fanSpecialChar,fanSpecialCharError syn match fanCharacter "'\\''" contains=fanSpecialChar syn match fanCharacter "'[^\\]'" syn match fanNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" syn match fanNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" syn match fanNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" syn match fanNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" syn cluster fanTop add=fanString,fanCharacter,fanNumber,fanSpecial,fanStringError " The default highlighting. hi def link fanBranch Conditional hi def link fanLabel Label hi def link fanUserLabel Label hi def link fanConditional Conditional hi def link fanRepeat Repeat hi def link fanExceptions Exception hi def link fanAssert Statement hi def link fanStorageClass StorageClass hi def link fanSlot StorageClass hi def link fanField StorageClass hi def link fanScopeDecl StorageClass hi def link fanBoolean Boolean hi def link fanSpecial Special hi def link fanSpecialError Error hi def link fanSpecialCharError Error hi def link fanTripleString String hi def link fanString String hi def link fanDSL String hi def link fanCharacter String hi def link fanStringSubst Identifier hi def link fanUri SpecialChar hi def link fanSpecialChar SpecialChar hi def link fanNumber Number hi def link fanError Error hi def link fanStringError Error hi def link fanStatement Statement hi def link fanOperator Operator hi def link fanLongOperator Operator hi def link fanComment Comment hi def link fanDocComment Comment hi def link fanLineComment Comment hi def link fanConstant Constant hi def link fanTypedef Typedef hi def link fanTodo Todo hi def link fanFacet PreProc hi def link fanCommentTitle SpecialComment hi def link fanCommentStar SpecialComment hi def link fanType Identifier hi def link fanExternal Include hi def link fanSpaceError Error let b:current_syntax = "fan" " vim: ts=8 PK!$s  vim80/syntax/dsl.vimnu[" Vim syntax file " Language: DSSSL " Maintainer: Johannes Zellner " Last Change: Tue, 27 Apr 2004 14:54:59 CEST " Filenames: *.dsl " $Id: dsl.vim,v 1.1 2004/06/13 19:13:31 vimboss Exp $ if exists("b:current_syntax") | finish | endif runtime syntax/xml.vim syn cluster xmlRegionHook add=dslRegion,dslComment syn cluster xmlCommentHook add=dslCond " EXAMPLE: " " (define html-manifest #f) " ]]> " " NOTE: 'contains' the same as xmlRegion, except xmlTag / xmlEndTag syn region dslCond matchgroup=dslCondDelim start="\[\_[^[]\+\[" end="]]" contains=xmlCdata,@xmlRegionCluster,xmlComment,xmlEntity,xmlProcessing,@xmlRegionHook " NOTE, that dslRegion and dslComment do both NOT have a 'contained' " argument, so this will also work in plain dsssl documents. syn region dslRegion matchgroup=Delimiter start=+(+ end=+)+ contains=dslRegion,dslString,dslComment syn match dslString +"\_[^"]*"+ contained syn match dslComment +;.*$+ contains=dslTodo syn keyword dslTodo contained TODO FIXME XXX display " The default highlighting. hi def link dslTodo Todo hi def link dslString String hi def link dslComment Comment " compare the following with xmlCdataStart / xmlCdataEnd hi def link dslCondDelim Type let b:current_syntax = "dsl" PK!:ÞÞvim80/syntax/ruby.vimnu[" Vim syntax file " Language: Ruby " Maintainer: Doug Kearns " URL: https://github.com/vim-ruby/vim-ruby " Release Coordinator: Doug Kearns " ---------------------------------------------------------------------------- " " Previous Maintainer: Mirko Nasato " Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN) " ---------------------------------------------------------------------------- " Prelude {{{1 if exists("b:current_syntax") finish endif " this file uses line continuations let s:cpo_sav = &cpo set cpo&vim " Folding Config {{{1 if has("folding") && exists("ruby_fold") setlocal foldmethod=syntax endif let s:foldable_groups = split( \ get( \ b:, \ 'ruby_foldable_groups', \ get(g:, 'ruby_foldable_groups', 'ALL') \ ) \ ) function! s:foldable(...) abort if index(s:foldable_groups, 'ALL') > -1 return 1 endif for l:i in a:000 if index(s:foldable_groups, l:i) > -1 return 1 endif endfor return 0 endfunction " }}} syn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo " Whitespace Errors {{{1 if exists("ruby_space_errors") if !exists("ruby_no_trail_space_error") syn match rubySpaceError display excludenl "\s\+$" endif if !exists("ruby_no_tab_space_error") syn match rubySpaceError display " \+\t"me=e-1 endif endif " Operators {{{1 if exists("ruby_operators") syn match rubyOperator "[~!^|*/%+-]\|&\.\@!\|\%(class\s*\)\@\|<=\|\%(<\|\>\|>=\|=\@1\|\*\*\|\.\.\.\|\.\.\|::" syn match rubyOperator "->\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!=" syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@2<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop endif " Expression Substitution and Backslash Notation {{{1 syn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display syn match rubyQuoteEscape "\\[\\']" contained display syn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop syn match rubyInterpolation "#\%(\$\|@@\=\)\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable syn match rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained syn match rubyInterpolation "#\$\%(-\w\|\W\)" display contained contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable syn match rubyInterpolationDelimiter "#\ze\$\%(-\w\|\W\)" display contained syn region rubyNoInterpolation start="\\#{" end="}" contained syn match rubyNoInterpolation "\\#{" display contained syn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained syn match rubyNoInterpolation "\\#\$\W" display contained syn match rubyDelimiterEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE syn region rubyNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=rubyString end=")" transparent contained syn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=rubyString end="}" transparent contained syn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=rubyString end=">" transparent contained syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]" transparent contained " Regular Expression Metacharacters {{{1 " These are mostly Oniguruma ready syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\)" end=")" contained syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@rubyRegexpSpecial syn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\]" end="\]" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline syn match rubyRegexpCharClass "\\[DdHhSsWw]" contained display syn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained syn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained syn match rubyRegexpQuantifier "[*?+][?+]\=" contained display syn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display syn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display syn match rubyRegexpDot "\." contained display syn match rubyRegexpSpecial "|" contained display syn match rubyRegexpSpecial "\\[1-9]\d\=\d\@!" contained display syn match rubyRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display syn match rubyRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display syn match rubyRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display syn match rubyRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display syn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets syn cluster rubyRegexpSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment " Numbers and ASCII Codes {{{1 syn match rubyASCIICode "\%(\w\|[]})\"'/]\)\@1" display syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@" display syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@" display syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@" display syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@" display syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@" display " Identifiers {{{1 syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent syn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent syn match rubyConstant "\%(\%(^\|[^.]\)\.\s*\)\@\%(\s*(\)\@!" syn match rubyClassVariable "@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display syn match rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display syn match rubyGlobalVariable "$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)" syn match rubySymbol "[]})\"':]\@1\|<=\|<\|===\|[=!]=\|[=!]\~\|!@\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" syn match rubySymbol "[]})\"':]\@1_,;:!?/.'"@$*\&+0]\)" syn match rubySymbol "[]})\"':]\@1\@!\)\=" if s:foldable(':') syn region rubySymbol start="[]})\"':]\@1\%(\s*(\)*\s*(\@=" syn match rubyBlockParameter "\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contained syn region rubyBlockParameterList start="\%(\%(\\|{\)\_s*\)\@32<=|" end="|" oneline display contains=rubyBlockParameter syn match rubyInvalidVariable "$[^ A-Za-z_-]" syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~]# syn match rubyPredefinedVariable "$\d\+" display syn match rubyPredefinedVariable "$_\>" display syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@\%(\s*(\)\@!" syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@\%(\s*(\)\@!" " Normal Regular Expression {{{1 if s:foldable('/') syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold else syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial endif " Generalized Regular Expression {{{1 if s:foldable('%') syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold else syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial endif " Normal String {{{1 let s:spell_cluster = exists('ruby_spellcheck_strings') ? ',@Spell' : '' exe 'syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" ' . \ (s:foldable('%') ? 'fold' : '') . ' contains=@rubyStringSpecial' . s:spell_cluster exe 'syn region rubyString matchgroup=rubyStringDelimiter start="''" end="''" skip="\\\\\|\\''" ' . \ (s:foldable('%') ? 'fold' : '') . ' contains=rubyQuoteEscape' . s:spell_cluster " Shell Command Output {{{1 if s:foldable('%') syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold else syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial endif " Generalized Single Quoted String, Symbol and Array of Strings {{{1 if s:foldable('%') syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold else syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" endif " Generalized Double Quoted String and Array of Strings and Shell Command Output {{{1 " Note: %= is not matched here as the beginning of a double quoted string if s:foldable('%') syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold else syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial endif " Array of Symbols {{{1 if s:foldable('%') " Array of Symbols syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape " Array of interpolated Symbols syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold else " Array of Symbols syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape " Array of interpolated Symbols syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape endif " Here Document {{{1 syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter " Keywords {{{1 " Note: the following keywords have already been defined: " begin case class def do end for if module unless until while syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!" syn match rubyOperator "\[?!]\@!" syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!" syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__dir__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!" " Expensive Mode {{{1 " Match 'end' with the appropriate opening keyword for syntax based folding " and special highlighting of module/class/method definitions if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive") syn match rubyDefine "\" nextgroup=rubyAliasDeclaration skipwhite skipnl syn match rubyDefine "\" nextgroup=rubyMethodDeclaration skipwhite skipnl syn match rubyDefine "\" nextgroup=rubyFunction skipwhite skipnl syn match rubyClass "\" nextgroup=rubyClassDeclaration skipwhite skipnl syn match rubyModule "\" nextgroup=rubyModuleDeclaration skipwhite skipnl if s:foldable('def') syn region rubyMethodBlock start="\" matchgroup=rubyDefine end="\%(\" contains=ALLBUT,@rubyNotTop fold else syn region rubyMethodBlock start="\" matchgroup=rubyDefine end="\%(\" contains=ALLBUT,@rubyNotTop endif if s:foldable('class') syn region rubyBlock start="\" matchgroup=rubyClass end="\" contains=ALLBUT,@rubyNotTop fold else syn region rubyBlock start="\" matchgroup=rubyClass end="\" contains=ALLBUT,@rubyNotTop endif if s:foldable('module') syn region rubyBlock start="\" matchgroup=rubyModule end="\" contains=ALLBUT,@rubyNotTop fold else syn region rubyBlock start="\" matchgroup=rubyModule end="\" contains=ALLBUT,@rubyNotTop endif " modifiers syn match rubyLineContinuation "\\$" nextgroup=rubyConditionalModifier,rubyRepeatModifier skipwhite skipnl syn match rubyConditionalModifier "\<\%(if\|unless\)\>" syn match rubyRepeatModifier "\<\%(while\|until\)\>" if s:foldable('do') syn region rubyDoBlock matchgroup=rubyControl start="\" end="\" contains=ALLBUT,@rubyNotTop fold else syn region rubyDoBlock matchgroup=rubyControl start="\" end="\" contains=ALLBUT,@rubyNotTop endif " curly bracket block or hash literal if s:foldable('{') syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop fold else syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop endif if s:foldable('[') syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@" end="\" contains=ALLBUT,@rubyNotTop fold else syn region rubyBlockExpression matchgroup=rubyControl start="\" end="\" contains=ALLBUT,@rubyNotTop endif if s:foldable('case') syn region rubyCaseExpression matchgroup=rubyConditional start="\" end="\" contains=ALLBUT,@rubyNotTop fold else syn region rubyCaseExpression matchgroup=rubyConditional start="\" end="\" contains=ALLBUT,@rubyNotTop endif if s:foldable('if') syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" end="\%(\%(\%(\.\@1" contains=ALLBUT,@rubyNotTop fold else syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" end="\%(\%(\%(\.\@1" contains=ALLBUT,@rubyNotTop endif syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!" contained containedin=rubyCaseExpression syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression syn match rubyExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression syn match rubyMethodExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyMethodBlock " statements with optional 'do' syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" matchgroup=rubyOptionalDo end="\%(\\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop if s:foldable('for') syn region rubyRepeatExpression start="\[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" matchgroup=rubyRepeat end="\" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold else syn region rubyRepeatExpression start="\[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" matchgroup=rubyRepeat end="\" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine endif if !exists("ruby_minlines") let ruby_minlines = 500 endif exec "syn sync minlines=" . ruby_minlines else syn match rubyControl "\[?!]\@!" nextgroup=rubyMethodDeclaration skipwhite skipnl syn match rubyControl "\[?!]\@!" nextgroup=rubyClassDeclaration skipwhite skipnl syn match rubyControl "\[?!]\@!" nextgroup=rubyModuleDeclaration skipwhite skipnl syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!" syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!" endif " Special Methods {{{1 if !exists("ruby_no_special_methods") syn keyword rubyAccess public protected private public_class_method private_class_method public_constant private_constant module_function " attr is a common variable name syn match rubyAttribute "\%(\%(^\|;\)\s*\)\@<=attr\>\(\s*[.=]\)\@!" syn keyword rubyAttribute attr_accessor attr_reader attr_writer syn match rubyControl "\<\%(exit!\|\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>[?!]\@!\)" syn keyword rubyEval eval class_eval instance_eval module_eval syn keyword rubyException raise fail catch throw " false positive with 'include?' syn match rubyInclude "\[?!]\@!" syn keyword rubyInclude autoload extend load prepend refine require require_relative using syn keyword rubyKeyword callcc caller lambda proc endif " Comments and Documentation {{{1 syn match rubySharpBang "\%^#!.*" display syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell if !exists("ruby_no_comment_fold") && s:foldable('#') syn region rubyMultilineComment start="^\s*#.*\n\%(^\s*#\)\@=" end="^\s*#.*\n\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend syn region rubyDocumentation start="^=begin\ze\%(\s.*\)\=$" end="^=end\%(\s.*\)\=$" contains=rubySpaceError,rubyTodo,@Spell fold else syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell endif " Keyword Nobbling {{{1 " Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver syn match rubyKeywordAsMethod "\%(\%(\.\@1\)" transparent contains=NONE syn match rubyKeywordAsMethod "\(defined?\|exit!\)\@!\<[_[:lower:]][_[:alnum:]]*[?!]" transparent contains=NONE " More Symbols {{{1 syn match rubySymbol "\%([{(,]\_s*\)\zs\l\w*[!?]\=::\@!"he=e-1 syn match rubySymbol "[]})\"':]\@1 " Former Maintainer: Christian Hammers " ChangeLog: " 2017-12-17,ch " correctly detect comments " 2001-05-04,ch " adopted Vim 6.0 syntax style " 1999-10-28,ch " initial release " The following formats are recognised: " Apache-style .conf " # Comment " Option value " Option value1 value2 " Option = value1 value2 #not apache but also allowed "
" Option value " " "
" quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore syn match apOption /^\s*[^ \t#<=]*/ syn match apComment /^\s*#.*$/ "syn match apLastValue /[^ \t<=#]*$/ contains=apComment ugly " tags syn region apTag start=// contains=apTagOption,apTagError " the following should originally be " [^<>]+" but this didn't work :( syn match apTagOption contained / [-\/_\.:*a-zA-Z0-9]\+/ms=s+1 syn match apTagError contained /[^>] " The SQL reserved words, defined as keywords. syntax match sqlTriggers /on-.*$/ syntax match sqlTriggers /key-.*$/ syntax match sqlTriggers /post-.*$/ syntax match sqlTriggers /pre-.*$/ syntax match sqlTriggers /user-.*$/ syntax keyword sqlSpecial null false true syntax keyword sqlProcedure abort_query anchor_view bell block_menu break call syntax keyword sqlProcedure call_input call_query clear_block clear_eol syntax keyword sqlProcedure clear_field clear_form clear_record commit_form syntax keyword sqlProcedure copy count_query create_record default_value syntax keyword sqlProcedure delete_record display_error display_field down syntax keyword sqlProcedure duplicate_field duplicate_record edit_field syntax keyword sqlProcedure enter enter_query erase execute_query syntax keyword sqlProcedure execute_trigger exit_form first_Record go_block syntax keyword sqlProcedure go_field go_record help hide_menu hide_page host syntax keyword sqlProcedure last_record list_values lock_record message syntax keyword sqlProcedure move_view new_form next_block next_field next_key syntax keyword sqlProcedure next_record next_set pause post previous_block syntax keyword sqlProcedure previous_field previous_record print redisplay syntax keyword sqlProcedure replace_menu resize_view scroll_down scroll_up syntax keyword sqlProcedure set_field show_keys show_menu show_page syntax keyword sqlProcedure synchronize up user_exit syntax keyword sqlFunction block_characteristic error_code error_text syntax keyword sqlFunction error_type field_characteristic form_failure syntax keyword sqlFunction form_fatal form_success name_in syntax keyword sqlParameters hide no_hide replace no_replace ask_commit syntax keyword sqlParameters do_commit no_commit no_validate all_records syntax keyword sqlParameters for_update no_restrict restrict no_screen syntax keyword sqlParameters bar full_screen pull_down auto_help auto_skip syntax keyword sqlParameters fixed_length enterable required echo queryable syntax keyword sqlParameters updateable update_null upper_case attr_on syntax keyword sqlParameters attr_off base_table first_field last_field syntax keyword sqlParameters datatype displayed display_length field_length syntax keyword sqlParameters list page primary_key query_length x_pos y_pos syntax match sqlSystem /system\.block_status/ syntax match sqlSystem /system\.current_block/ syntax match sqlSystem /system\.current_field/ syntax match sqlSystem /system\.current_form/ syntax match sqlSystem /system\.current_value/ syntax match sqlSystem /system\.cursor_block/ syntax match sqlSystem /system\.cursor_field/ syntax match sqlSystem /system\.cursor_record/ syntax match sqlSystem /system\.cursor_value/ syntax match sqlSystem /system\.form_status/ syntax match sqlSystem /system\.last_query/ syntax match sqlSystem /system\.last_record/ syntax match sqlSystem /system\.message_level/ syntax match sqlSystem /system\.record_status/ syntax match sqlSystem /system\.trigger_block/ syntax match sqlSystem /system\.trigger_field/ syntax match sqlSystem /system\.trigger_record/ syntax match sqlSystem /\$\$date\$\$/ syntax match sqlSystem /\$\$time\$\$/ syntax keyword sqlKeyword accept access add as asc by check cluster column syntax keyword sqlKeyword compress connect current decimal default syntax keyword sqlKeyword desc exclusive file for from group syntax keyword sqlKeyword having identified immediate increment index syntax keyword sqlKeyword initial into is level maxextents mode modify syntax keyword sqlKeyword nocompress nowait of offline on online start syntax keyword sqlKeyword successful synonym table to trigger uid syntax keyword sqlKeyword unique user validate values view whenever syntax keyword sqlKeyword where with option order pctfree privileges syntax keyword sqlKeyword public resource row rowlabel rownum rows syntax keyword sqlKeyword session share size smallint sql\*forms_version syntax keyword sqlKeyword terse define form name title procedure begin syntax keyword sqlKeyword default_menu_application trigger block field syntax keyword sqlKeyword enddefine declare exception raise when cursor syntax keyword sqlKeyword definition base_table pragma syntax keyword sqlKeyword column_name global trigger_type text description syntax match sqlKeyword "<<<" syntax match sqlKeyword ">>>" syntax keyword sqlOperator not and or out to_number to_date message erase syntax keyword sqlOperator in any some all between exists substr nvl syntax keyword sqlOperator exception_init syntax keyword sqlOperator like escape trunc lpad rpad sum syntax keyword sqlOperator union intersect minus to_char greatest syntax keyword sqlOperator prior distinct decode least avg syntax keyword sqlOperator sysdate true false field_characteristic syntax keyword sqlOperator display_field call host syntax keyword sqlStatement alter analyze audit comment commit create syntax keyword sqlStatement delete drop explain grant insert lock noaudit syntax keyword sqlStatement rename revoke rollback savepoint select set syntax keyword sqlStatement truncate update if elsif loop then syntax keyword sqlStatement open fetch close else end syntax keyword sqlType char character date long raw mlslabel number rowid syntax keyword sqlType varchar varchar2 float integer boolean global syntax keyword sqlCodes sqlcode no_data_found too_many_rows others syntax keyword sqlCodes form_trigger_failure notfound found syntax keyword sqlCodes validate no_commit " Comments: syntax region sqlComment start="/\*" end="\*/" syntax match sqlComment "--.*" " Strings and characters: syntax region sqlString start=+"+ skip=+\\\\\|\\"+ end=+"+ syntax region sqlString start=+'+ skip=+\\\\\|\\"+ end=+'+ " Numbers: syntax match sqlNumber "-\=\<[0-9]*\.\=[0-9_]\>" syntax sync ccomment sqlComment hi def link sqlComment Comment hi def link sqlKeyword Statement hi def link sqlNumber Number hi def link sqlOperator Statement hi def link sqlProcedure Statement hi def link sqlFunction Statement hi def link sqlSystem Identifier hi def link sqlSpecial Special hi def link sqlStatement Statement hi def link sqlString String hi def link sqlType Type hi def link sqlCodes Identifier hi def link sqlTriggers PreProc let b:current_syntax = "sqlforms" " vim: ts=8 sw=4 PK!gvim80/syntax/docbksgml.vimnu[" Vim syntax file " Language: DocBook SGML " Maintainer: Johannes Zellner " Last Change: Sam, 07 Sep 2002 17:20:46 CEST let b:docbk_type="sgml" runtime syntax/docbk.vim PK!H  vim80/syntax/trustees.vimnu[" Vim syntax file " Language: trustees " Maintainer: Nima Talebi " Last Change: 2005-10-12 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syntax case match syntax sync minlines=0 maxlines=0 " Errors & Comments syntax match tfsError /.*/ highlight link tfsError Error syntax keyword tfsSpecialComment TODO XXX FIXME contained highlight link tfsSpecialComment Todo syntax match tfsComment ~\s*#.*~ contains=tfsSpecialComment highlight link tfsComment Comment " Operators & Delimiters highlight link tfsSpecialChar Operator syntax match tfsSpecialChar ~[*!+]~ contained highlight link tfsDelimiter Delimiter syntax match tfsDelimiter ~:~ contained " Trustees Rules - Part 1 of 3 - The Device syntax region tfsRuleDevice matchgroup=tfsDeviceContainer start=~\[/~ end=~\]~ nextgroup=tfsRulePath oneline highlight link tfsRuleDevice Label highlight link tfsDeviceContainer PreProc " Trustees Rules - Part 2 of 3 - The Path syntax match tfsRulePath ~/[-_a-zA-Z0-9/]*~ nextgroup=tfsRuleACL contained contains=tfsDelimiter highlight link tfsRulePath String " Trustees Rules - Part 3 of 3 - The ACLs syntax match tfsRuleACL ~\(:\(\*\|[+]\{0,1\}[a-zA-Z0-9/]\+\):[RWEBXODCU!]\+\)\+$~ contained contains=tfsDelimiter,tfsRuleWho,tfsRuleWhat syntax match tfsRuleWho ~\(\*\|[+]\{0,1\}[a-zA-Z0-9/]\+\)~ contained contains=tfsSpecialChar highlight link tfsRuleWho Identifier syntax match tfsRuleWhat ~[RWEBXODCU!]\+~ contained contains=tfsSpecialChar highlight link tfsRuleWhat Structure PK!=Y2vim80/syntax/htmlm4.vimnu[" Vim syntax file " Language: HTML and M4 " Maintainer: Claudio Fleiner " URL: http://www.fleiner.com/vim/syntax/htmlm4.vim " Last Change: 2001 Apr 30 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " we define it here so that included files can test for it if !exists("main_syntax") let main_syntax='htmlm4' endif runtime! syntax/html.vim unlet b:current_syntax syn case match runtime! syntax/m4.vim unlet b:current_syntax syn cluster htmlPreproc add=@m4Top syn cluster m4StringContents add=htmlTag,htmlEndTag let b:current_syntax = "htmlm4" if main_syntax == 'htmlm4' unlet main_syntax endif PK!jQ1vim80/syntax/art.vimnu[" Vim syntax file " Language: ART-IM and ART*Enterprise " Maintainer: Dorai Sitaram " URL: http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html " Last Change: 2011 Dec 28 by Thilo Six if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn keyword artspform => and assert bind syn keyword artspform declare def-art-fun deffacts defglobal defrule defschema do syn keyword artspform else for if in$ not or syn keyword artspform progn retract salience schema test then while syn match artvariable "?[^ \t";()|&~]\+" syn match artglobalvar "?\*[^ \t";()|&~]\+\*" syn match artinstance "![^ \t";()|&~]\+" syn match delimiter "[()|&~]" syn region string start=/"/ skip=/\\[\\"]/ end=/"/ syn match number "\<[-+]\=\([0-9]\+\(\.[0-9]*\)\=\|\.[0-9]\+\)\>" syn match comment ";.*$" syn match comment "#+:\=ignore" nextgroup=artignore skipwhite skipnl syn region artignore start="(" end=")" contained contains=artignore,comment syn region artignore start=/"/ skip=/\\[\\"]/ end=/"/ contained hi def link artinstance type hi def link artglobalvar preproc hi def link artignore comment hi def link artspform statement hi def link artvariable function let b:current_syntax = "art" let &cpo = s:cpo_save unlet s:cpo_save PK!1j5"5"vim80/syntax/fasm.vimnu[" Vim syntax file " Language: Flat Assembler (FASM) " Maintainer: Ron Aaron " Last Change: 2012/02/13 " Vim URL: http://www.vim.org/lang.html " FASM Home: http://flatassembler.net/ " FASM Version: 1.56 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword=a-z,A-Z,48-57,.,_ setlocal isident=a-z,A-Z,48-57,.,_ syn case ignore syn keyword fasmRegister ah al ax bh bl bp bx ch cl cr0 cr1 cr2 cr3 cr4 cr5 cr6 syn keyword fasmRegister cr7 cs cx dh di dl dr0 dr1 dr2 dr3 dr4 dr5 dr6 dr7 ds dx syn keyword fasmRegister eax ebp ebx ecx edi edx es esi esp fs gs mm0 mm1 mm2 mm3 syn keyword fasmRegister mm4 mm5 mm6 mm7 si sp ss st st0 st1 st2 st3 st4 st5 st6 syn keyword fasmRegister st7 tr0 tr1 tr2 tr3 tr4 tr5 tr6 tr7 xmm0 xmm1 xmm2 xmm3 syn keyword fasmRegister xmm4 xmm5 xmm6 xmm7 syn keyword fasmAddressSizes byte dqword dword fword pword qword tword word syn keyword fasmDataDirectives db dd df dp dq dt du dw file rb rd rf rp rq rt rw syn keyword fasmInstr aaa aad aam aas adc add addpd addps addsd addss addsubpd syn keyword fasmInstr addsubps and andnpd andnps andpd andps arpl bound bsf bsr syn keyword fasmInstr bswap bt btc btr bts call cbw cdq clc cld clflush cli clts syn keyword fasmInstr cmc cmova cmovae cmovb cmovbe cmovc cmove cmovg cmovge cmovl syn keyword fasmInstr cmovle cmovna cmovnae cmovnb cmovnbe cmovnc cmovne cmovng syn keyword fasmInstr cmovnge cmovnl cmovnle cmovno cmovnp cmovns cmovnz cmovo cmovp syn keyword fasmInstr cmovpe cmovpo cmovs cmovz cmp cmpeqpd cmpeqps cmpeqsd cmpeqss syn keyword fasmInstr cmplepd cmpleps cmplesd cmpless cmpltpd cmpltps cmpltsd cmpltss syn keyword fasmInstr cmpneqpd cmpneqps cmpneqsd cmpneqss cmpnlepd cmpnleps cmpnlesd syn keyword fasmInstr cmpnless cmpnltpd cmpnltps cmpnltsd cmpnltss cmpordpd cmpordps syn keyword fasmInstr cmpordsd cmpordss cmppd cmpps cmps cmpsb cmpsd cmpss cmpsw syn keyword fasmInstr cmpunordpd cmpunordps cmpunordsd cmpunordss cmpxchg cmpxchg8b syn keyword fasmInstr comisd comiss cpuid cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps syn keyword fasmInstr cvtpi2pd cvtpi2ps cvtps2dq cvtps2pd cvtps2pi cvtsd2si cvtsd2ss syn keyword fasmInstr cvtsi2sd cvtsi2ss cvtss2sd cvtss2si cvttpd2dq cvttpd2pi cvttps2dq syn keyword fasmInstr cvttps2pi cvttsd2si cvttss2si cwd cwde daa das data dec div syn keyword fasmInstr divpd divps divsd divss else emms end enter extrn f2xm1 fabs syn keyword fasmInstr fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb syn keyword fasmInstr fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp syn keyword fasmInstr fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree syn keyword fasmInstr ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp syn keyword fasmInstr finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv syn keyword fasmInstr fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi syn keyword fasmInstr fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem syn keyword fasmInstr fprem1 fptan frndint frstor frstpm fsave fscale fsetpm fsin syn keyword fasmInstr fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr syn keyword fasmInstr fsubrp ftst fucom fucomi fucomip fucomp fucompp fwait fxam syn keyword fasmInstr fxch fxrstor fxsave fxtract fyl2x fyl2xp1 haddpd haddps heap syn keyword fasmInstr hlt hsubpd hsubps idiv if imul in inc ins insb insd insw int syn keyword fasmInstr int3 into invd invlpg iret iretd iretw ja jae jb jbe jc jcxz syn keyword fasmInstr je jecxz jg jge jl jle jmp jna jnae jnb jnbe jnc jne jng jnge syn keyword fasmInstr jnl jnle jno jnp jns jnz jo jp jpe jpo js jz lahf lar lddqu syn keyword fasmInstr ldmxcsr lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw syn keyword fasmInstr load loadall286 loadall386 lock lods lodsb lodsd lodsw loop syn keyword fasmInstr loopd loope looped loopew loopne loopned loopnew loopnz loopnzd syn keyword fasmInstr loopnzw loopw loopz loopzd loopzw lsl lss ltr maskmovdqu maskmovq syn keyword fasmInstr maxpd maxps maxsd maxss mfence minpd minps minsd minss monitor syn keyword fasmInstr mov movapd movaps movd movddup movdq2q movdqa movdqu movhlps syn keyword fasmInstr movhpd movhps movlhps movlpd movlps movmskpd movmskps movntdq syn keyword fasmInstr movnti movntpd movntps movntq movq movq2dq movs movsb movsd syn keyword fasmInstr movshdup movsldup movss movsw movsx movupd movups movzx mul syn keyword fasmInstr mulpd mulps mulsd mulss mwait neg nop not or org orpd orps syn keyword fasmInstr out outs outsb outsd outsw packssdw packsswb packuswb paddb syn keyword fasmInstr paddd paddq paddsb paddsw paddusb paddusw paddw pand pandn syn keyword fasmInstr pause pavgb pavgusb pavgw pcmpeqb pcmpeqd pcmpeqw pcmpgtb syn keyword fasmInstr pcmpgtd pcmpgtw pextrw pf2id pf2iw pfacc pfadd pfcmpeq pfcmpge syn keyword fasmInstr pfcmpgt pfmax pfmin pfmul pfnacc pfpnacc pfrcp pfrcpit1 pfrcpit2 syn keyword fasmInstr pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pi2fw pinsrw pmaddwd pmaxsw syn keyword fasmInstr pmaxub pminsw pminub pmovmskb pmulhrw pmulhuw pmulhw pmullw syn keyword fasmInstr pmuludq pop popa popad popaw popd popf popfd popfw popw por syn keyword fasmInstr prefetch prefetchnta prefetcht0 prefetcht1 prefetcht2 prefetchw syn keyword fasmInstr psadbw pshufd pshufhw pshuflw pshufw pslld pslldq psllq psllw syn keyword fasmInstr psrad psraw psrld psrldq psrlq psrlw psubb psubd psubq psubsb syn keyword fasmInstr psubsw psubusb psubusw psubw pswapd punpckhbw punpckhdq punpckhqdq syn keyword fasmInstr punpckhwd punpcklbw punpckldq punpcklqdq punpcklwd push pusha syn keyword fasmInstr pushad pushaw pushd pushf pushfd pushfw pushw pxor rcl rcpps syn keyword fasmInstr rcpss rcr rdmsr rdpmc rdtsc rep repe repne repnz repz ret syn keyword fasmInstr retd retf retfd retfw retn retnd retnw retw rol ror rsm rsqrtps syn keyword fasmInstr rsqrtss sahf sal salc sar sbb scas scasb scasd scasw seta syn keyword fasmInstr setae setalc setb setbe setc sete setg setge setl setle setna syn keyword fasmInstr setnae setnb setnbe setnc setne setng setnge setnl setnle syn keyword fasmInstr setno setnp setns setnz seto setp setpe setpo sets setz sfence syn keyword fasmInstr sgdt shl shld shr shrd shufpd shufps sidt sldt smsw sqrtpd syn keyword fasmInstr sqrtps sqrtsd sqrtss stc std sti stmxcsr store stos stosb syn keyword fasmInstr stosd stosw str sub subpd subps subsd subss sysenter sysexit syn keyword fasmInstr test ucomisd ucomiss ud2 unpckhpd unpckhps unpcklpd unpcklps syn keyword fasmInstr verr verw wait wbinvd wrmsr xadd xchg xlat xlatb xor xorpd syn keyword fasmPreprocess common equ fix forward include local macro purge restore syn keyword fasmPreprocess reverse struc syn keyword fasmDirective align binary code coff console discardable display dll syn keyword fasmDirective elf entry executable export extern far fixups format gui syn keyword fasmDirective import label ms mz native near notpageable pe public readable syn keyword fasmDirective repeat resource section segment shareable stack times syn keyword fasmDirective use16 use32 virtual wdm writable writeable syn keyword fasmOperator as at defined eq eqtype from mod on ptr rva used syn match fasmNumericOperator "[+-/*]" syn match fasmLogicalOperator "[=|&~<>]\|<=\|>=\|<>" " numbers syn match fasmBinaryNumber "\<[01]\+b\>" syn match fasmHexNumber "\<\d\x*h\>" syn match fasmHexNumber "\<\(0x\|$\)\x*\>" syn match fasmFPUNumber "\<\d\+\(\.\d*\)\=\(e[-+]\=\d*\)\=\>" syn match fasmOctalNumber "\<\(0\o\+o\=\|\o\+o\)\>" syn match fasmDecimalNumber "\<\(0\|[1-9]\d*\)\>" syn region fasmComment start=";" end="$" syn region fasmString start="\"" end="\"\|$" syn region fasmString start="'" end="'\|$" syn match fasmSymbol "[()|\[\]:]" syn match fasmSpecial "[#?%$,]" syn match fasmLabel "^\s*[^; \t]\+:" hi def link fasmAddressSizes type hi def link fasmNumericOperator fasmOperator hi def link fasmLogicalOperator fasmOperator hi def link fasmBinaryNumber fasmNumber hi def link fasmHexNumber fasmNumber hi def link fasmFPUNumber fasmNumber hi def link fasmOctalNumber fasmNumber hi def link fasmDecimalNumber fasmNumber hi def link fasmSymbols fasmRegister hi def link fasmPreprocess fasmDirective " link to standard syn groups so the 'colorschemes' work: hi def link fasmOperator operator hi def link fasmComment comment hi def link fasmDirective preproc hi def link fasmRegister type hi def link fasmNumber constant hi def link fasmSymbol structure hi def link fasmString String hi def link fasmSpecial special hi def link fasmInstr keyword hi def link fasmLabel label hi def link fasmPrefix preproc let b:current_syntax = "fasm" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=8 sw=8 : PK!VUx/x/vim80/syntax/winbatch.vimnu[" Vim syntax file " Language: WinBatch/Webbatch (*.wbt, *.web) " Maintainer: dominique@mggen.com " URL: http://www.mggen.com/vim/syntax/winbatch.zip " Last change: 2001 May 10 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn case ignore syn keyword winbatchCtl if then else endif break end return exit next syn keyword winbatchCtl while for gosub goto switch select to case syn keyword winbatchCtl endselect endwhile endselect endswitch " String syn region winbatchVar start=+%+ end=+%+ " %var% in strings syn region winbatchString start=+"+ end=+"+ contains=winbatchVar syn match winbatchComment ";.*$" syn match winbatchLabel "^\ *:[0-9a-zA-Z_\-]\+\>" " constant (bezgin by @) syn match winbatchConstant "@[0_9a-zA-Z_\-]\+" " number syn match winbatchNumber "\<[0-9]\+\(u\=l\=\|lu\|f\)\>" syn keyword winbatchImplicit aboveicons acc_attrib acc_chng_nt acc_control acc_create syn keyword winbatchImplicit acc_delete acc_full_95 acc_full_nt acc_list acc_pfull_nt syn keyword winbatchImplicit acc_pmang_nt acc_print_nt acc_read acc_read_95 acc_read_nt syn keyword winbatchImplicit acc_write amc arrange ascending attr_a attr_a attr_ci attr_ci syn keyword winbatchImplicit attr_dc attr_dc attr_di attr_di attr_dm attr_dm attr_h attr_h syn keyword winbatchImplicit attr_ic attr_ic attr_p attr_p attr_ri attr_ri attr_ro attr_ro syn keyword winbatchImplicit attr_sh attr_sh attr_sy attr_sy attr_t attr_t attr_x attr_x syn keyword winbatchImplicit avogadro backscan boltzmann cancel capslock check columns syn keyword winbatchImplicit commonformat cr crlf ctrl default default deg2rad descending syn keyword winbatchImplicit disable drive electric enable eulers false faraday float8 syn keyword winbatchImplicit fwdscan gftsec globalgroup gmtsec goldenratio gravitation hidden syn keyword winbatchImplicit icon lbutton lclick ldblclick lf lightmps lightmtps localgroup syn keyword winbatchImplicit magfield major mbokcancel mbutton mbyesno mclick mdblclick minor syn keyword winbatchImplicit msformat multiple ncsaformat no none none noresize normal syn keyword winbatchImplicit notify nowait numlock off on open parsec parseonly pi syn keyword winbatchImplicit planckergs planckjoules printer rad2deg rbutton rclick rdblclick syn keyword winbatchImplicit regclasses regcurrent regmachine regroot regusers rows save syn keyword winbatchImplicit scrolllock server shift single sorted stack string tab tile syn keyword winbatchImplicit true uncheck unsorted wait wholesection word1 word2 word4 yes syn keyword winbatchImplicit zoomed about abs acos addextender appexist appwaitclose asin syn keyword winbatchImplicit askfilename askfiletext askitemlist askline askpassword askyesno syn keyword winbatchImplicit atan average beep binaryalloc binarycopy binaryeodget binaryeodset syn keyword winbatchImplicit binaryfree binaryhashrec binaryincr binaryincr2 binaryincr4 syn keyword winbatchImplicit binaryincrflt binaryindex binaryindexnc binaryoletype binarypeek syn keyword winbatchImplicit binarypeek2 binarypeek4 binarypeekflt binarypeekstr binarypoke syn keyword winbatchImplicit binarypoke2 binarypoke4 binarypokeflt binarypokestr binaryread syn keyword winbatchImplicit binarysort binarystrcnt binarywrite boxbuttondraw boxbuttonkill syn keyword winbatchImplicit boxbuttonstat boxbuttonwait boxcaption boxcolor syn keyword winbatchImplicit boxdataclear boxdatatag syn keyword winbatchImplicit boxdestroy boxdrawcircle boxdrawline boxdrawrect boxdrawtext syn keyword winbatchImplicit boxesup boxmapmode boxnew boxopen boxpen boxshut boxtext boxtextcolor syn keyword winbatchImplicit boxtextfont boxtitle boxupdates break buttonnames by call syn keyword winbatchImplicit callext ceiling char2num clipappend clipget clipput syn keyword winbatchImplicit continue cos cosh datetime syn keyword winbatchImplicit ddeexecute ddeinitiate ddepoke dderequest ddeterminate syn keyword winbatchImplicit ddetimeout debug debugdata decimals delay dialog syn keyword winbatchImplicit dialogbox dirattrget dirattrset dirchange direxist syn keyword winbatchImplicit dirget dirhome diritemize dirmake dirremove dirrename syn keyword winbatchImplicit dirwindows diskexist diskfree diskinfo diskscan disksize syn keyword winbatchImplicit diskvolinfo display dllcall dllfree dllhinst dllhwnd dllload syn keyword winbatchImplicit dosboxcursorx dosboxcursory dosboxgetall dosboxgetdata syn keyword winbatchImplicit dosboxheight dosboxscrmode dosboxversion dosboxwidth dosversion syn keyword winbatchImplicit drop edosgetinfo edosgetvar edoslistvars edospathadd edospathchk syn keyword winbatchImplicit edospathdel edossetvar syn keyword winbatchImplicit endsession envgetinfo envgetvar environment syn keyword winbatchImplicit environset envitemize envlistvars envpathadd envpathchk syn keyword winbatchImplicit envpathdel envsetvar errormode exclusive execute exetypeinfo syn keyword winbatchImplicit exp fabs fileappend fileattrget fileattrset fileclose syn keyword winbatchImplicit filecompare filecopy filedelete fileexist fileextension filefullname syn keyword winbatchImplicit fileitemize filelocate filemapname filemove filenameeval1 syn keyword winbatchImplicit filenameeval2 filenamelong filenameshort fileopen filepath syn keyword winbatchImplicit fileread filerename fileroot filesize filetimecode filetimeget syn keyword winbatchImplicit filetimeset filetimetouch fileverinfo filewrite fileymdhms syn keyword winbatchImplicit findwindow floor getexacttime gettickcount syn keyword winbatchImplicit iconarrange iconreplace ignoreinput inidelete inideletepvt syn keyword winbatchImplicit iniitemize iniitemizepvt iniread inireadpvt iniwrite iniwritepvt syn keyword winbatchImplicit installfile int intcontrol isdefined isfloat isint iskeydown syn keyword winbatchImplicit islicensed isnumber itemcount itemextract iteminsert itemlocate syn keyword winbatchImplicit itemremove itemselect itemsort keytoggleget keytoggleset syn keyword winbatchImplicit lasterror log10 logdisk loge max message min mod mouseclick syn keyword winbatchImplicit mouseclickbtn mousedrag mouseinfo mousemove msgtextget n3attach syn keyword winbatchImplicit n3captureend n3captureprt n3chgpassword n3detach n3dirattrget syn keyword winbatchImplicit n3dirattrset n3drivepath n3drivepath2 n3drivestatus n3fileattrget syn keyword winbatchImplicit n3fileattrset n3getloginid n3getmapped n3getnetaddr n3getuser syn keyword winbatchImplicit n3getuserid n3logout n3map n3mapdelete n3mapdir n3maproot n3memberdel syn keyword winbatchImplicit n3memberget n3memberset n3msgsend n3msgsendall n3serverinfo syn keyword winbatchImplicit n3serverlist n3setsrchdrv n3usergroups n3version n4attach syn keyword winbatchImplicit n4captureend n4captureprt n4chgpassword n4detach n4dirattrget syn keyword winbatchImplicit n4dirattrset n4drivepath n4drivestatus n4fileattrget n4fileattrset syn keyword winbatchImplicit n4getloginid n4getmapped n4getnetaddr n4getuser n4getuserid syn keyword winbatchImplicit n4login n4logout n4map n4mapdelete n4mapdir n4maproot n4memberdel syn keyword winbatchImplicit n4memberget n4memberset n4msgsend n4msgsendall n4serverinfo syn keyword winbatchImplicit n4serverlist n4setsrchdrv n4usergroups n4version netadddrive syn keyword winbatchImplicit netaddprinter netcancelcon netdirdialog netgetcon netgetuser syn keyword winbatchImplicit netinfo netresources netversion num2char objectclose syn keyword winbatchImplicit objectopen parsedata pause playmedia playmidi playwaveform syn keyword winbatchImplicit print random regapp regclosekey regconnect regcreatekey syn keyword winbatchImplicit regdeletekey regdelvalue regentrytype regloadhive regopenkey syn keyword winbatchImplicit regquerybin regquerydword regqueryex regqueryexpsz regqueryitem syn keyword winbatchImplicit regquerykey regquerymulsz regqueryvalue regsetbin syn keyword winbatchImplicit regsetdword regsetex regsetexpsz regsetmulsz regsetvalue syn keyword winbatchImplicit regunloadhive reload reload rtstatus run runenviron syn keyword winbatchImplicit runexit runhide runhidewait runicon runiconwait runshell runwait syn keyword winbatchImplicit runzoom runzoomwait sendkey sendkeyschild sendkeysto syn keyword winbatchImplicit sendmenusto shellexecute shortcutedit shortcutextra shortcutinfo syn keyword winbatchImplicit shortcutmake sin sinh snapshot sounds sqrt syn keyword winbatchImplicit srchfree srchinit srchnext strcat strcharcount strcmp syn keyword winbatchImplicit strfill strfix strfixchars stricmp strindex strlen syn keyword winbatchImplicit strlower strreplace strscan strsub strtrim strupper syn keyword winbatchImplicit tan tanh tcpaddr2host tcpftpchdir tcpftpclose tcpftpget syn keyword winbatchImplicit tcpftplist tcpftpmode tcpftpopen tcpftpput tcphost2addr tcphttpget syn keyword winbatchImplicit tcphttppost tcpparmget tcpparmset tcpping tcpsmtp terminate syn keyword winbatchImplicit textbox textboxsort textoutbufdel textoutbuffer textoutdebug syn keyword winbatchImplicit textoutfree textoutinfo textoutreset textouttrack textouttrackb syn keyword winbatchImplicit textouttrackp textoutwait textselect timeadd timedate syn keyword winbatchImplicit timedelay timediffdays timediffsecs timejulianday timejultoymd syn keyword winbatchImplicit timesubtract timewait timeymdhms version versiondll syn keyword winbatchImplicit w3addcon w3cancelcon w3dirbrowse w3getcaps w3getcon w3netdialog syn keyword winbatchImplicit w3netgetuser w3prtbrowse w3version w95accessadd w95accessdel syn keyword winbatchImplicit w95adddrive w95addprinter w95cancelcon w95dirdialog w95getcon syn keyword winbatchImplicit w95getuser w95resources w95shareadd w95sharedel w95shareset syn keyword winbatchImplicit w95version waitforkey wallpaper webbaseconv webcloselog syn keyword winbatchImplicit webcmddata webcondata webcounter webdatdata webdumperror webhashcode syn keyword winbatchImplicit webislocal weblogline webopenlog webout weboutfile webparamdata syn keyword winbatchImplicit webparamnames websettimeout webverifycard winactivate syn keyword winbatchImplicit winactivchild winarrange winclose winclosenot winconfig winexename syn keyword winbatchImplicit winexist winparset winparget winexistchild wingetactive syn keyword winbatchImplicit winhelp winhide winiconize winidget winisdos winitemchild syn keyword winbatchImplicit winitemize winitemnameid winmetrics winname winparmget syn keyword winbatchImplicit winparmset winplace winplaceget winplaceset syn keyword winbatchImplicit winposition winresources winshow winstate winsysinfo syn keyword winbatchImplicit wintitle winversion winwaitchild winwaitclose winwaitexist syn keyword winbatchImplicit winzoom wnaddcon wncancelcon wncmptrinfo wndialog syn keyword winbatchImplicit wndlgbrowse wndlgcon wndlgcon2 wndlgcon3 syn keyword winbatchImplicit wndlgcon4 wndlgdiscon wndlgnoshare wndlgshare wngetcaps syn keyword winbatchImplicit wngetcon wngetuser wnnetnames wnrestore wnservers wnsharecnt syn keyword winbatchImplicit wnsharename wnsharepath wnshares wntaccessadd wntaccessdel syn keyword winbatchImplicit wntaccessget wntadddrive wntaddprinter wntcancelcon wntdirdialog syn keyword winbatchImplicit wntgetcon wntgetuser wntlistgroups wntmemberdel wntmemberget syn keyword winbatchImplicit wntmembergrps wntmemberlist wntmemberset wntresources wntshareadd syn keyword winbatchImplicit wntsharedel wntshareset wntversion wnversion wnwrkgroups wwenvunload syn keyword winbatchImplicit xbaseconvert xcursorset xdisklabelget xdriveready xextenderinfo syn keyword winbatchImplicit xgetchildhwnd xgetelapsed xhex xmemcompact xmessagebox syn keyword winbatchImplicit xsendmessage xverifyccard yield " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link winbatchLabel PreProc hi def link winbatchCtl Operator hi def link winbatchStatement Statement hi def link winbatchTodo Todo hi def link winbatchString String hi def link winbatchVar Type hi def link winbatchComment Comment hi def link winbatchImplicit Special hi def link winbatchNumber Number hi def link winbatchConstant StorageClass let b:current_syntax = "winbatch" " vim: ts=8 PK!Z77vim80/syntax/2html.vimnu[" Vim syntax support file " Maintainer: Ben Fritz " Last Change: 2015 Sep 08 " " Additional contributors: " " Original by Bram Moolenaar " Modified by David Ne\v{c}as (Yeti) " XHTML support by Panagiotis Issaris " Made w3 compliant by Edd Barrett " Added html_font. Edd Barrett " Progress bar based off code from "progressbar widget" plugin by " Andreas Politz, heavily modified: " http://www.vim.org/scripts/script.php?script_id=2006 " " See Mercurial change logs for more! " Transform a file into HTML, using the current syntax highlighting. " this file uses line continuations let s:cpo_sav = &cpo let s:ls = &ls set cpo&vim let s:end=line('$') " Font if exists("g:html_font") if type(g:html_font) == type([]) let s:htmlfont = "'". join(g:html_font,"','") . "', monospace" else let s:htmlfont = "'". g:html_font . "', monospace" endif else let s:htmlfont = "monospace" endif let s:settings = tohtml#GetUserSettings() if !exists('s:FOLDED_ID') let s:FOLDED_ID = hlID("Folded") | lockvar s:FOLDED_ID let s:FOLD_C_ID = hlID("FoldColumn") | lockvar s:FOLD_C_ID let s:LINENR_ID = hlID('LineNr') | lockvar s:LINENR_ID let s:DIFF_D_ID = hlID("DiffDelete") | lockvar s:DIFF_D_ID let s:DIFF_A_ID = hlID("DiffAdd") | lockvar s:DIFF_A_ID let s:DIFF_C_ID = hlID("DiffChange") | lockvar s:DIFF_C_ID let s:DIFF_T_ID = hlID("DiffText") | lockvar s:DIFF_T_ID let s:CONCEAL_ID = hlID('Conceal') | lockvar s:CONCEAL_ID endif " Whitespace if s:settings.pre_wrap let s:whitespace = "white-space: pre-wrap; " else let s:whitespace = "" endif if !empty(s:settings.prevent_copy) if s:settings.no_invalid " User has decided they don't want invalid markup. Still works in " OpenOffice, and for text editors, but when pasting into Microsoft Word the " input elements get pasted too and they cannot be deleted (at least not " easily). let s:unselInputType = "" else " Prevent from copy-pasting the input elements into Microsoft Word where " they cannot be deleted easily by deliberately inserting invalid markup. let s:unselInputType = " type='invalid_input_type'" endif endif " When not in gui we can only guess the colors. " TODO - is this true anymore? if has("gui_running") let s:whatterm = "gui" else let s:whatterm = "cterm" if &t_Co == 8 let s:cterm_color = { \ 0: "#808080", 1: "#ff6060", 2: "#00ff00", 3: "#ffff00", \ 4: "#8080ff", 5: "#ff40ff", 6: "#00ffff", 7: "#ffffff" \ } else let s:cterm_color = { \ 0: "#000000", 1: "#c00000", 2: "#008000", 3: "#804000", \ 4: "#0000c0", 5: "#c000c0", 6: "#008080", 7: "#c0c0c0", \ 8: "#808080", 9: "#ff6060", 10: "#00ff00", 11: "#ffff00", \ 12: "#8080ff", 13: "#ff40ff", 14: "#00ffff", 15: "#ffffff" \ } " Colors for 88 and 256 come from xterm. if &t_Co == 88 call extend(s:cterm_color, { \ 16: "#000000", 17: "#00008b", 18: "#0000cd", 19: "#0000ff", \ 20: "#008b00", 21: "#008b8b", 22: "#008bcd", 23: "#008bff", \ 24: "#00cd00", 25: "#00cd8b", 26: "#00cdcd", 27: "#00cdff", \ 28: "#00ff00", 29: "#00ff8b", 30: "#00ffcd", 31: "#00ffff", \ 32: "#8b0000", 33: "#8b008b", 34: "#8b00cd", 35: "#8b00ff", \ 36: "#8b8b00", 37: "#8b8b8b", 38: "#8b8bcd", 39: "#8b8bff", \ 40: "#8bcd00", 41: "#8bcd8b", 42: "#8bcdcd", 43: "#8bcdff", \ 44: "#8bff00", 45: "#8bff8b", 46: "#8bffcd", 47: "#8bffff", \ 48: "#cd0000", 49: "#cd008b", 50: "#cd00cd", 51: "#cd00ff", \ 52: "#cd8b00", 53: "#cd8b8b", 54: "#cd8bcd", 55: "#cd8bff", \ 56: "#cdcd00", 57: "#cdcd8b", 58: "#cdcdcd", 59: "#cdcdff", \ 60: "#cdff00", 61: "#cdff8b", 62: "#cdffcd", 63: "#cdffff", \ 64: "#ff0000" \ }) call extend(s:cterm_color, { \ 65: "#ff008b", 66: "#ff00cd", 67: "#ff00ff", 68: "#ff8b00", \ 69: "#ff8b8b", 70: "#ff8bcd", 71: "#ff8bff", 72: "#ffcd00", \ 73: "#ffcd8b", 74: "#ffcdcd", 75: "#ffcdff", 76: "#ffff00", \ 77: "#ffff8b", 78: "#ffffcd", 79: "#ffffff", 80: "#2e2e2e", \ 81: "#5c5c5c", 82: "#737373", 83: "#8b8b8b", 84: "#a2a2a2", \ 85: "#b9b9b9", 86: "#d0d0d0", 87: "#e7e7e7" \ }) elseif &t_Co == 256 call extend(s:cterm_color, { \ 16: "#000000", 17: "#00005f", 18: "#000087", 19: "#0000af", \ 20: "#0000d7", 21: "#0000ff", 22: "#005f00", 23: "#005f5f", \ 24: "#005f87", 25: "#005faf", 26: "#005fd7", 27: "#005fff", \ 28: "#008700", 29: "#00875f", 30: "#008787", 31: "#0087af", \ 32: "#0087d7", 33: "#0087ff", 34: "#00af00", 35: "#00af5f", \ 36: "#00af87", 37: "#00afaf", 38: "#00afd7", 39: "#00afff", \ 40: "#00d700", 41: "#00d75f", 42: "#00d787", 43: "#00d7af", \ 44: "#00d7d7", 45: "#00d7ff", 46: "#00ff00", 47: "#00ff5f", \ 48: "#00ff87", 49: "#00ffaf", 50: "#00ffd7", 51: "#00ffff", \ 52: "#5f0000", 53: "#5f005f", 54: "#5f0087", 55: "#5f00af", \ 56: "#5f00d7", 57: "#5f00ff", 58: "#5f5f00", 59: "#5f5f5f", \ 60: "#5f5f87", 61: "#5f5faf", 62: "#5f5fd7", 63: "#5f5fff", \ 64: "#5f8700" \ }) call extend(s:cterm_color, { \ 65: "#5f875f", 66: "#5f8787", 67: "#5f87af", 68: "#5f87d7", \ 69: "#5f87ff", 70: "#5faf00", 71: "#5faf5f", 72: "#5faf87", \ 73: "#5fafaf", 74: "#5fafd7", 75: "#5fafff", 76: "#5fd700", \ 77: "#5fd75f", 78: "#5fd787", 79: "#5fd7af", 80: "#5fd7d7", \ 81: "#5fd7ff", 82: "#5fff00", 83: "#5fff5f", 84: "#5fff87", \ 85: "#5fffaf", 86: "#5fffd7", 87: "#5fffff", 88: "#870000", \ 89: "#87005f", 90: "#870087", 91: "#8700af", 92: "#8700d7", \ 93: "#8700ff", 94: "#875f00", 95: "#875f5f", 96: "#875f87", \ 97: "#875faf", 98: "#875fd7", 99: "#875fff", 100: "#878700", \ 101: "#87875f", 102: "#878787", 103: "#8787af", 104: "#8787d7", \ 105: "#8787ff", 106: "#87af00", 107: "#87af5f", 108: "#87af87", \ 109: "#87afaf", 110: "#87afd7", 111: "#87afff", 112: "#87d700" \ }) call extend(s:cterm_color, { \ 113: "#87d75f", 114: "#87d787", 115: "#87d7af", 116: "#87d7d7", \ 117: "#87d7ff", 118: "#87ff00", 119: "#87ff5f", 120: "#87ff87", \ 121: "#87ffaf", 122: "#87ffd7", 123: "#87ffff", 124: "#af0000", \ 125: "#af005f", 126: "#af0087", 127: "#af00af", 128: "#af00d7", \ 129: "#af00ff", 130: "#af5f00", 131: "#af5f5f", 132: "#af5f87", \ 133: "#af5faf", 134: "#af5fd7", 135: "#af5fff", 136: "#af8700", \ 137: "#af875f", 138: "#af8787", 139: "#af87af", 140: "#af87d7", \ 141: "#af87ff", 142: "#afaf00", 143: "#afaf5f", 144: "#afaf87", \ 145: "#afafaf", 146: "#afafd7", 147: "#afafff", 148: "#afd700", \ 149: "#afd75f", 150: "#afd787", 151: "#afd7af", 152: "#afd7d7", \ 153: "#afd7ff", 154: "#afff00", 155: "#afff5f", 156: "#afff87", \ 157: "#afffaf", 158: "#afffd7" \ }) call extend(s:cterm_color, { \ 159: "#afffff", 160: "#d70000", 161: "#d7005f", 162: "#d70087", \ 163: "#d700af", 164: "#d700d7", 165: "#d700ff", 166: "#d75f00", \ 167: "#d75f5f", 168: "#d75f87", 169: "#d75faf", 170: "#d75fd7", \ 171: "#d75fff", 172: "#d78700", 173: "#d7875f", 174: "#d78787", \ 175: "#d787af", 176: "#d787d7", 177: "#d787ff", 178: "#d7af00", \ 179: "#d7af5f", 180: "#d7af87", 181: "#d7afaf", 182: "#d7afd7", \ 183: "#d7afff", 184: "#d7d700", 185: "#d7d75f", 186: "#d7d787", \ 187: "#d7d7af", 188: "#d7d7d7", 189: "#d7d7ff", 190: "#d7ff00", \ 191: "#d7ff5f", 192: "#d7ff87", 193: "#d7ffaf", 194: "#d7ffd7", \ 195: "#d7ffff", 196: "#ff0000", 197: "#ff005f", 198: "#ff0087", \ 199: "#ff00af", 200: "#ff00d7", 201: "#ff00ff", 202: "#ff5f00", \ 203: "#ff5f5f", 204: "#ff5f87" \ }) call extend(s:cterm_color, { \ 205: "#ff5faf", 206: "#ff5fd7", 207: "#ff5fff", 208: "#ff8700", \ 209: "#ff875f", 210: "#ff8787", 211: "#ff87af", 212: "#ff87d7", \ 213: "#ff87ff", 214: "#ffaf00", 215: "#ffaf5f", 216: "#ffaf87", \ 217: "#ffafaf", 218: "#ffafd7", 219: "#ffafff", 220: "#ffd700", \ 221: "#ffd75f", 222: "#ffd787", 223: "#ffd7af", 224: "#ffd7d7", \ 225: "#ffd7ff", 226: "#ffff00", 227: "#ffff5f", 228: "#ffff87", \ 229: "#ffffaf", 230: "#ffffd7", 231: "#ffffff", 232: "#080808", \ 233: "#121212", 234: "#1c1c1c", 235: "#262626", 236: "#303030", \ 237: "#3a3a3a", 238: "#444444", 239: "#4e4e4e", 240: "#585858", \ 241: "#626262", 242: "#6c6c6c", 243: "#767676", 244: "#808080", \ 245: "#8a8a8a", 246: "#949494", 247: "#9e9e9e", 248: "#a8a8a8", \ 249: "#b2b2b2", 250: "#bcbcbc", 251: "#c6c6c6", 252: "#d0d0d0", \ 253: "#dadada", 254: "#e4e4e4", 255: "#eeeeee" \ }) endif endif endif " Return good color specification: in GUI no transformation is done, in " terminal return RGB values of known colors and empty string for unknown if s:whatterm == "gui" function! s:HtmlColor(color) return a:color endfun else function! s:HtmlColor(color) if has_key(s:cterm_color, a:color) return s:cterm_color[a:color] else return "" endif endfun endif " Find out the background and foreground color for use later let s:fgc = s:HtmlColor(synIDattr(hlID("Normal"), "fg#", s:whatterm)) let s:bgc = s:HtmlColor(synIDattr(hlID("Normal"), "bg#", s:whatterm)) if s:fgc == "" let s:fgc = ( &background == "dark" ? "#ffffff" : "#000000" ) endif if s:bgc == "" let s:bgc = ( &background == "dark" ? "#000000" : "#ffffff" ) endif if !s:settings.use_css " Return opening HTML tag for given highlight id function! s:HtmlOpening(id, extra_attrs) let a = "" if synIDattr(a:id, "inverse") " For inverse, we always must set both colors (and exchange them) let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm)) let a = a . '' let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm)) let a = a . '' else let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm)) if x != "" let a = a . '' elseif !empty(a:extra_attrs) let a = a . '' endif let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm)) if x != "" | let a = a . '' | endif endif if synIDattr(a:id, "bold") | let a = a . "" | endif if synIDattr(a:id, "italic") | let a = a . "" | endif if synIDattr(a:id, "underline") | let a = a . "" | endif return a endfun " Return closing HTML tag for given highlight id function! s:HtmlClosing(id, has_extra_attrs) let a = "" if synIDattr(a:id, "underline") | let a = a . "" | endif if synIDattr(a:id, "italic") | let a = a . "" | endif if synIDattr(a:id, "bold") | let a = a . "" | endif if synIDattr(a:id, "inverse") let a = a . '' else let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm)) if x != "" | let a = a . '' | endif let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm)) if x != "" || a:has_extra_attrs | let a = a . '' | endif endif return a endfun endif " Use a different function for formatting based on user options. This way we " can avoid a lot of logic during the actual execution. " " Build the function line by line containing only what is needed for the options " in use for maximum code sharing with minimal branch logic for greater speed. " " Note, 'exec' commands do not recognize line continuations, so must concatenate " lines rather than continue them. if s:settings.use_css " save CSS to a list of rules to add to the output at the end of processing " first, get the style names we need let wrapperfunc_lines = [ \ 'function! s:BuildStyleWrapper(style_id, diff_style_id, extra_attrs, text, make_unselectable, unformatted)', \ '', \ ' let l:style_name = synIDattr(a:style_id, "name", s:whatterm)' \ ] if &diff let wrapperfunc_lines += [ \ ' let l:diff_style_name = synIDattr(a:diff_style_id, "name", s:whatterm)'] " Add normal groups and diff groups to separate lists so we can order them to " allow diff highlight to override normal highlight " if primary style IS a diff style, grab it from the diff cache instead " (always succeeds because we pre-populate it) let wrapperfunc_lines += [ \ '', \ ' if a:style_id == s:DIFF_D_ID || a:style_id == s:DIFF_A_ID ||'. \ ' a:style_id == s:DIFF_C_ID || a:style_id == s:DIFF_T_ID', \ ' let l:saved_style = get(s:diffstylelist,a:style_id)', \ ' else' \ ] endif " get primary style info from cache or build it on the fly if not found let wrapperfunc_lines += [ \ ' let l:saved_style = get(s:stylelist,a:style_id)', \ ' if type(l:saved_style) == type(0)', \ ' unlet l:saved_style', \ ' let l:saved_style = s:CSS1(a:style_id)', \ ' if l:saved_style != ""', \ ' let l:saved_style = "." . l:style_name . " { " . l:saved_style . "}"', \ ' endif', \ ' let s:stylelist[a:style_id]= l:saved_style', \ ' endif' \ ] if &diff let wrapperfunc_lines += [ ' endif' ] endif " Build the wrapper tags around the text. It turns out that caching these " gives pretty much zero performance gain and adds a lot of logic. let wrapperfunc_lines += [ \ '', \ ' if l:saved_style == "" && empty(a:extra_attrs)' \ ] if &diff let wrapperfunc_lines += [ \ ' if a:diff_style_id <= 0' \ ] endif " no surroundings if neither primary nor diff style has any info let wrapperfunc_lines += [ \ ' return a:text' \ ] if &diff " no primary style, but diff style let wrapperfunc_lines += [ \ ' else', \ ' return "".a:text.""', \ ' endif' \ ] endif " open tag for non-empty primary style let wrapperfunc_lines += [ \ ' else'] " non-empty primary style. handle either empty or non-empty diff style. " " separate the two classes by a space to apply them both if there is a diff " style name, unless the primary style is empty, then just use the diff style " name let diffstyle = \ (&diff ? '(a:diff_style_id <= 0 ? "" : " ". l:diff_style_name) .' \ : "") if s:settings.prevent_copy == "" let wrapperfunc_lines += [ \ ' return "".a:text.""' \ ] else " " Wrap the in a to allow fixing the stupid bug in some fonts " which cause browsers to display a 1px gap between lines when these " s have a background color (maybe not really a bug, this isn't " well-defined) " " use strwidth, because we care only about how many character boxes are " needed to size the input, we don't care how many characters (including " separately counted composing chars, from strchars()) or bytes (from " len())the string contains. strdisplaywidth() is not needed because none of " the unselectable groups can contain tab characters (fold column, fold " text, line number). " " Note, if maxlength property needs to be added in the future, it will need " to use strchars(), because HTML specifies that the maxlength parameter " uses the number of unique codepoints for its limit. let wrapperfunc_lines += [ \ ' if a:make_unselectable', \ ' return "'. \ '"', \ ' else', \ ' return "".a:text.""' \ ] endif let wrapperfunc_lines += [ \ ' endif', \ 'endfun' \ ] else " Non-CSS method just needs the wrapper. " " Functions used to get opening/closing automatically return null strings if " no styles exist. if &diff let wrapperfunc_lines = [ \ 'function! s:BuildStyleWrapper(style_id, diff_style_id, extra_attrs, text, unusedarg, unusedarg2)', \ ' return s:HtmlOpening(a:style_id, a:extra_attrs).(a:diff_style_id <= 0 ? "" :'. \ 's:HtmlOpening(a:diff_style_id, "")).a:text.'. \ '(a:diff_style_id <= 0 ? "" : s:HtmlClosing(a:diff_style_id, 0)).s:HtmlClosing(a:style_id, !empty(a:extra_attrs))', \ 'endfun' \ ] else let wrapperfunc_lines = [ \ 'function! s:BuildStyleWrapper(style_id, diff_style_id, extra_attrs, text, unusedarg, unusedarg2)', \ ' return s:HtmlOpening(a:style_id, a:extra_attrs).a:text.s:HtmlClosing(a:style_id, !empty(a:extra_attrs))', \ 'endfun' \ ] endif endif " create the function we built line by line above exec join(wrapperfunc_lines, "\n") let s:diff_mode = &diff " Return HTML valid characters enclosed in a span of class style_name with " unprintable characters expanded and double spaces replaced as necessary. " " TODO: eliminate unneeded logic like done for BuildStyleWrapper function! s:HtmlFormat(text, style_id, diff_style_id, extra_attrs, make_unselectable) " Replace unprintable characters let unformatted = strtrans(a:text) let formatted = unformatted " Replace the reserved html characters let formatted = substitute(formatted, '&', '\&', 'g') let formatted = substitute(formatted, '<', '\<', 'g') let formatted = substitute(formatted, '>', '\>', 'g') let formatted = substitute(formatted, '"', '\"', 'g') " ' is not valid in HTML but it is in XHTML, so just use the numeric " reference for it instead. Needed because it could appear in quotes " especially if unselectable regions is turned on. let formatted = substitute(formatted, '"', '\'', 'g') " Replace a "form feed" character with HTML to do a page break " TODO: need to prevent this in unselectable areas? Probably it should never " BE in an unselectable area... let formatted = substitute(formatted, "\x0c", '
', 'g') " Replace double spaces, leading spaces, and trailing spaces if needed if ' ' != s:HtmlSpace let formatted = substitute(formatted, ' ', s:HtmlSpace . s:HtmlSpace, 'g') let formatted = substitute(formatted, '^ ', s:HtmlSpace, 'g') let formatted = substitute(formatted, ' \+$', s:HtmlSpace, 'g') endif " Enclose in the correct format return s:BuildStyleWrapper(a:style_id, a:diff_style_id, a:extra_attrs, formatted, a:make_unselectable, unformatted) endfun " set up functions to call HtmlFormat in certain ways based on whether the " element is supposed to be unselectable or not if s:settings.prevent_copy =~# 'n' if s:settings.number_lines if s:settings.line_ids function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr) if a:lnr > 0 return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 1) else return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1) endif endfun else function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr) return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1) endfun endif elseif s:settings.line_ids " if lines are not being numbered the only reason this function gets called " is to put the line IDs on each line; "text" will be emtpy but lnr will " always be non-zero, however we don't want to use the because that " won't work as nice for empty text function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr) return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 0) endfun endif else if s:settings.line_ids function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr) if a:lnr > 0 return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 0) else return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0) endif endfun else function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr) return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0) endfun endif endif if s:settings.prevent_copy =~# 'd' function! s:HtmlFormat_d(text, style_id, diff_style_id) return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1) endfun else function! s:HtmlFormat_d(text, style_id, diff_style_id) return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0) endfun endif if s:settings.prevent_copy =~# 'f' " Note the elements for fill spaces will have a single space for " content, to allow active cursor CSS selection to work. " " Wrap the whole thing in a span for the 1px padding workaround for gaps. function! s:FoldColumn_build(char, len, numfill, char2, class, click) let l:input_open = "" : "'>") return "". \ l:input_open.l:common_attrs.repeat(a:char, a:len). \ (!empty(a:char2) ? a:char2 : ""). \ l:input_close . "" endfun function! s:FoldColumn_fill() return s:FoldColumn_build('', s:foldcolumn, 0, '', 'FoldColumn', '') endfun else " For normal fold columns, simply space-pad to the desired width (note that " the FoldColumn definition includes a whitespace:pre rule) function! s:FoldColumn_build(char, len, numfill, char2, class, click) return "". \ repeat(a:char, a:len).a:char2.repeat(' ', a:numfill). \ "" endfun function! s:FoldColumn_fill() return s:HtmlFormat(repeat(' ', s:foldcolumn), s:FOLD_C_ID, 0, "", 0) endfun endif if s:settings.prevent_copy =~# 't' " put an extra empty span at the end for dynamic folds, so the linebreak can " be surrounded. Otherwise do it as normal. " " TODO: isn't there a better way to do this, than placing it here and using a " substitute later? if s:settings.dynamic_folds function! s:HtmlFormat_t(text, style_id, diff_style_id) return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1) . \ s:HtmlFormat("", a:style_id, 0, "", 0) endfun else function! s:HtmlFormat_t(text, style_id, diff_style_id) return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1) endfun endif else function! s:HtmlFormat_t(text, style_id, diff_style_id) return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0) endfun endif " Return CSS style describing given highlight id (can be empty) function! s:CSS1(id) let a = "" if synIDattr(a:id, "inverse") " For inverse, we always must set both colors (and exchange them) let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm)) let a = a . "color: " . ( x != "" ? x : s:bgc ) . "; " let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm)) let a = a . "background-color: " . ( x != "" ? x : s:fgc ) . "; " else let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm)) if x != "" | let a = a . "color: " . x . "; " | endif let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm)) if x != "" let a = a . "background-color: " . x . "; " " stupid hack because almost every browser seems to have at least one font " which shows 1px gaps between lines which have background let a = a . "padding-bottom: 1px; " elseif (a:id == s:FOLDED_ID || a:id == s:LINENR_ID || a:id == s:FOLD_C_ID) && !empty(s:settings.prevent_copy) " input elements default to a different color than the rest of the page let a = a . "background-color: " . s:bgc . "; " endif endif if synIDattr(a:id, "bold") | let a = a . "font-weight: bold; " | endif if synIDattr(a:id, "italic") | let a = a . "font-style: italic; " | endif if synIDattr(a:id, "underline") | let a = a . "text-decoration: underline; " | endif return a endfun if s:settings.dynamic_folds " compares two folds as stored in our list of folds " A fold is "less" than another if it starts at an earlier line number, " or ends at a later line number, ties broken by fold level function! s:FoldCompare(f1, f2) if a:f1.firstline != a:f2.firstline " put it before if it starts earlier return a:f1.firstline - a:f2.firstline elseif a:f1.lastline != a:f2.lastline " put it before if it ends later return a:f2.lastline - a:f1.lastline else " if folds begin and end on the same lines, put lowest fold level first return a:f1.level - a:f2.level endif endfunction endif " Set some options to make it work faster. " Don't report changes for :substitute, there will be many of them. " Don't change other windows; turn off scroll bind temporarily let s:old_title = &title let s:old_icon = &icon let s:old_et = &l:et let s:old_bind = &l:scrollbind let s:old_report = &report let s:old_search = @/ let s:old_more = &more set notitle noicon setlocal et set nomore set report=1000000 setlocal noscrollbind if exists(':ownsyntax') && exists('w:current_syntax') let s:current_syntax = w:current_syntax elseif exists('b:current_syntax') let s:current_syntax = b:current_syntax else let s:current_syntax = 'none' endif if s:current_syntax == '' let s:current_syntax = 'none' endif " Split window to create a buffer with the HTML file. let s:orgbufnr = winbufnr(0) let s:origwin_stl = &l:stl if expand("%") == "" if exists('g:html_diff_win_num') exec 'new Untitled_win'.g:html_diff_win_num.'.'.(s:settings.use_xhtml ? 'x' : '').'html' else exec 'new Untitled.'.(s:settings.use_xhtml ? 'x' : '').'html' endif else exec 'new %.'.(s:settings.use_xhtml ? 'x' : '').'html' endif " Resize the new window to very small in order to make it draw faster let s:old_winheight = winheight(0) let s:old_winfixheight = &l:winfixheight if s:old_winheight > 2 resize 1 " leave enough room to view one line at a time norm! G norm! zt endif setlocal winfixheight let s:newwin_stl = &l:stl " on the new window, set the least time-consuming fold method let s:old_fen = &foldenable setlocal foldmethod=manual setlocal nofoldenable let s:newwin = winnr() let s:orgwin = bufwinnr(s:orgbufnr) setlocal modifiable %d let s:old_paste = &paste set paste let s:old_magic = &magic set magic " set the fileencoding to match the charset we'll be using let &l:fileencoding=s:settings.vim_encoding " According to http://www.w3.org/TR/html4/charset.html#doc-char-set, the byte " order mark is highly recommend on the web when using multibyte encodings. But, " it is not a good idea to include it on UTF-8 files. Otherwise, let Vim " determine when it is actually inserted. if s:settings.vim_encoding == 'utf-8' setlocal nobomb else setlocal bomb endif let s:lines = [] if s:settings.use_xhtml if s:settings.encoding != "" call add(s:lines, "") else call add(s:lines, "") endif let s:tag_close = ' />' else let s:tag_close = '>' endif let s:HtmlSpace = ' ' let s:LeadingSpace = ' ' let s:HtmlEndline = '' if s:settings.no_pre let s:HtmlEndline = '", \ ""]) " include encoding as close to the top as possible, but only if not already " contained in XML information (to avoid haggling over content type) if s:settings.encoding != "" && !s:settings.use_xhtml call add(s:lines, "".expand("%:p:~").""), \ ("", \ s:settings.use_xhtml ? "" : "', \ '']) " TODO: IE7 doesn't *actually* support XHTML, maybe we should remove this. " But if it's served up as tag soup, maybe the following will work, so " leave it in for now. call extend(s:lines, [ \ "", \]) else " if we aren't doing hover_unfold, use CSS 1 only call extend(s:lines, [ \ "' \]) endif else " if we aren't doing any dynamic folding, no need for any special rules call extend(s:lines, [ \ "", \]) endif endif " insert script tag; javascript is always needed for the line number " normalization for URL hashes call extend(s:lines, [ \ "", \ "" \ ]) call extend(s:lines, [""]) if !empty(s:settings.prevent_copy) call extend(s:lines, \ ["", \ "", \ "
0
", \ "
", \ "
" \ ]) else call extend(s:lines, [""]) endif if s:settings.no_pre " if we're not using CSS we use a font tag which can't have a div inside if s:settings.use_css call extend(s:lines, ["
"]) endif else call extend(s:lines, ["
"])
endif

exe s:orgwin . "wincmd w"

" caches of style data
" initialize to include line numbers if using them
if s:settings.number_lines
  let s:stylelist = { s:LINENR_ID : ".LineNr { " . s:CSS1( s:LINENR_ID ) . "}" }
else
  let s:stylelist = {}
endif
let s:diffstylelist = {
      \   s:DIFF_A_ID : ".DiffAdd { " . s:CSS1( s:DIFF_A_ID ) . "}",
      \   s:DIFF_C_ID : ".DiffChange { " . s:CSS1( s:DIFF_C_ID ) . "}",
      \   s:DIFF_D_ID : ".DiffDelete { " . s:CSS1( s:DIFF_D_ID ) . "}",
      \   s:DIFF_T_ID : ".DiffText { " . s:CSS1( s:DIFF_T_ID ) . "}"
      \ }

" set up progress bar in the status line
if !s:settings.no_progress
  " ProgressBar Indicator
  let s:progressbar={}

  " Progessbar specific functions
  func! s:ProgressBar(title, max_value, winnr)
    let pgb=copy(s:progressbar)
    let pgb.title = a:title.' '
    let pgb.max_value = a:max_value
    let pgb.winnr = a:winnr
    let pgb.cur_value = 0
    let pgb.items = { 'title'   : { 'color' : 'Statusline' },
	  \'bar'     : { 'color' : 'Statusline' , 'fillcolor' : 'DiffDelete' , 'bg' : 'Statusline' } ,
	  \'counter' : { 'color' : 'Statusline' } }
    let pgb.last_value = 0
    let pgb.needs_redraw = 0
    " Note that you must use len(split) instead of len() if you want to use 
    " unicode in title.
    "
    " Subtract 3 for spacing around the title.
    " Subtract 4 for the percentage display.
    " Subtract 2 for spacing before this.
    " Subtract 2 more for the '|' on either side of the progress bar
    let pgb.subtractedlen=len(split(pgb.title, '\zs'))+3+4+2+2
    let pgb.max_len = 0
    set laststatus=2
    return pgb
  endfun

  " Function: progressbar.calculate_ticks() {{{1
  func! s:progressbar.calculate_ticks(pb_len)
    if a:pb_len<=0
      let pb_len = 100
    else
      let pb_len = a:pb_len
    endif
    let self.progress_ticks = map(range(pb_len+1), "v:val * self.max_value / pb_len")
  endfun

  "Function: progressbar.paint()
  func! s:progressbar.paint()
    " Recalculate widths.
    let max_len = winwidth(self.winnr)
    let pb_len = 0
    " always true on first call because of initial value of self.max_len
    if max_len != self.max_len
      let self.max_len = max_len

      " Progressbar length
      let pb_len = max_len - self.subtractedlen

      call self.calculate_ticks(pb_len)

      let self.needs_redraw = 1
      let cur_value = 0
      let self.pb_len = pb_len
    else
      " start searching at the last found index to make the search for the
      " appropriate tick value normally take 0 or 1 comparisons
      let cur_value = self.last_value
      let pb_len = self.pb_len
    endif

    let cur_val_max = pb_len > 0 ? pb_len : 100

    " find the current progress bar position based on precalculated thresholds
    while cur_value < cur_val_max && self.cur_value > self.progress_ticks[cur_value]
      let cur_value += 1
    endwhile

    " update progress bar
    if self.last_value != cur_value || self.needs_redraw || self.cur_value == self.max_value
      let self.needs_redraw = 1
      let self.last_value = cur_value

      let t_color  = self.items.title.color
      let b_fcolor = self.items.bar.fillcolor
      let b_color  = self.items.bar.color
      let c_color  = self.items.counter.color

      let stl =  "%#".t_color."#%-( ".self.title." %)".
	    \"%#".b_color."#".
	    \(pb_len>0 ?
	    \	('|%#'.b_fcolor."#%-(".repeat(" ",cur_value)."%)".
	    \	 '%#'.b_color."#".repeat(" ",pb_len-cur_value)."|"):
	    \	('')).
	    \"%=%#".c_color."#%( ".printf("%3.d ",100*self.cur_value/self.max_value)."%% %)"
      call setwinvar(self.winnr, '&stl', stl)
    endif
  endfun

  func! s:progressbar.incr( ... )
    let self.cur_value += (a:0 ? a:1 : 1)
    " if we were making a general-purpose progress bar, we'd need to limit to a
    " lower limit as well, but since we always increment with a positive value
    " in this script, we only need limit the upper value
    let self.cur_value = (self.cur_value > self.max_value ? self.max_value : self.cur_value)
    call self.paint()
  endfun
  " }}}
  if s:settings.dynamic_folds
    " to process folds we make two passes through each line
    let s:pgb = s:ProgressBar("Processing folds:", line('$')*2, s:orgwin)
  endif
endif

" First do some preprocessing for dynamic folding. Do this for the entire file
" so we don't accidentally start within a closed fold or something.
let s:allfolds = []

if s:settings.dynamic_folds
  let s:lnum = 1
  let s:end = line('$')
  " save the fold text and set it to the default so we can find fold levels
  let s:foldtext_save = &foldtext
  setlocal foldtext&

  " we will set the foldcolumn in the html to the greater of the maximum fold
  " level and the current foldcolumn setting
  let s:foldcolumn = &foldcolumn

  " get all info needed to describe currently closed folds
  while s:lnum <= s:end
    if foldclosed(s:lnum) == s:lnum
      " default fold text has '+-' and then a number of dashes equal to fold
      " level, so subtract 2 from index of first non-dash after the dashes
      " in order to get the fold level of the current fold
      let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
      " store fold info for later use
      let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
      call add(s:allfolds, s:newfold)
      " open the fold so we can find any contained folds
      execute s:lnum."foldopen"
    else
      if !s:settings.no_progress
	call s:pgb.incr()
	if s:pgb.needs_redraw
	  redrawstatus
	  let s:pgb.needs_redraw = 0
	endif
      endif
      let s:lnum = s:lnum + 1
    endif
  endwhile

  " close all folds to get info for originally open folds
  silent! %foldclose!
  let s:lnum = 1

  " the originally open folds will be all folds we encounter that aren't
  " already in the list of closed folds
  while s:lnum <= s:end
    if foldclosed(s:lnum) == s:lnum
      " default fold text has '+-' and then a number of dashes equal to fold
      " level, so subtract 2 from index of first non-dash after the dashes
      " in order to get the fold level of the current fold
      let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
      let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
      " only add the fold if we don't already have it
      if empty(s:allfolds) || index(s:allfolds, s:newfold) == -1
	let s:newfold.type = "open-fold"
	call add(s:allfolds, s:newfold)
      endif
      " open the fold so we can find any contained folds
      execute s:lnum."foldopen"
    else
      if !s:settings.no_progress
	call s:pgb.incr()
	if s:pgb.needs_redraw
	  redrawstatus
	  let s:pgb.needs_redraw = 0
	endif
      endif
      let s:lnum = s:lnum + 1
    endif
  endwhile

  " sort the folds so that we only ever need to look at the first item in the
  " list of folds
  call sort(s:allfolds, "s:FoldCompare")

  let &l:foldtext = s:foldtext_save
  unlet s:foldtext_save

  " close all folds again so we can get the fold text as we go
  silent! %foldclose!

  " Go through and remove folds we don't need to (or cannot) process in the
  " current conversion range
  "
  " If a fold is removed which contains other folds, which are included, we need
  " to adjust the level of the included folds as used by the conversion logic
  " (avoiding special cases is good)
  "
  " Note any time we remove a fold, either all of the included folds are in it,
  " or none of them, because we only remove a fold if neither its start nor its
  " end are within the conversion range.
  let leveladjust = 0
  for afold in s:allfolds
    let removed = 0
    if exists("g:html_start_line") && exists("g:html_end_line")
      if afold.firstline < g:html_start_line
	if afold.lastline <= g:html_end_line && afold.lastline >= g:html_start_line
	  " if a fold starts before the range to convert but stops within the
	  " range, we need to include it. Make it start on the first converted
	  " line.
	  let afold.firstline = g:html_start_line
	else
	  " if the fold lies outside the range or the start and stop enclose
	  " the entire range, don't bother parsing it
	  call remove(s:allfolds, index(s:allfolds, afold))
	  let removed = 1
	  if afold.lastline > g:html_end_line
	    let leveladjust += 1
	  endif
	endif
      elseif afold.firstline > g:html_end_line
	" If the entire fold lies outside the range we need to remove it.
	call remove(s:allfolds, index(s:allfolds, afold))
	let removed = 1
      endif
    elseif exists("g:html_start_line")
      if afold.firstline < g:html_start_line
	" if there is no last line, but there is a first line, the end of the
	" fold will always lie within the region of interest, so keep it
	let afold.firstline = g:html_start_line
      endif
    elseif exists("g:html_end_line")
      " if there is no first line we default to the first line in the buffer so
      " the fold start will always be included if the fold itself is included.
      " If however the entire fold lies outside the range we need to remove it.
      if afold.firstline > g:html_end_line
	call remove(s:allfolds, index(s:allfolds, afold))
	let removed = 1
      endif
    endif
    if !removed
      let afold.level -= leveladjust
      if afold.level+1 > s:foldcolumn
	let s:foldcolumn = afold.level+1
      endif
    endif
  endfor

  " if we've removed folds containing the conversion range from processing,
  " getting foldtext as we go won't know to open the removed folds, so the
  " foldtext would be wrong; open them now.
  "
  " Note that only when a start and an end line is specified will a fold
  " containing the current range ever be removed.
  while leveladjust > 0
    exe g:html_start_line."foldopen"
    let leveladjust -= 1
  endwhile
endif

" Now loop over all lines in the original text to convert to html.
" Use html_start_line and html_end_line if they are set.
if exists("g:html_start_line")
  let s:lnum = html_start_line
  if s:lnum < 1 || s:lnum > line("$")
    let s:lnum = 1
  endif
else
  let s:lnum = 1
endif
if exists("g:html_end_line")
  let s:end = html_end_line
  if s:end < s:lnum || s:end > line("$")
    let s:end = line("$")
  endif
else
  let s:end = line("$")
endif

" stack to keep track of all the folds containing the current line
let s:foldstack = []

if !s:settings.no_progress
  let s:pgb = s:ProgressBar("Processing lines:", s:end - s:lnum + 1, s:orgwin)
endif

if s:settings.number_lines
  let s:margin = strlen(s:end) + 1
else
  let s:margin = 0
endif

if has('folding') && !s:settings.ignore_folding
  let s:foldfillchar = &fillchars[matchend(&fillchars, 'fold:')]
  if s:foldfillchar == ''
    let s:foldfillchar = '-'
  endif
endif
let s:difffillchar = &fillchars[matchend(&fillchars, 'diff:')]
if s:difffillchar == ''
  let s:difffillchar = '-'
endif

let s:foldId = 0

if !s:settings.expand_tabs
  " If keeping tabs, add them to printable characters so we keep them when
  " formatting text (strtrans() doesn't replace printable chars)
  let s:old_isprint = &isprint
  setlocal isprint+=9
endif

while s:lnum <= s:end

  " If there are filler lines for diff mode, show these above the line.
  let s:filler = diff_filler(s:lnum)
  if s:filler > 0
    let s:n = s:filler
    while s:n > 0
      let s:new = repeat(s:difffillchar, 3)

      if s:n > 2 && s:n < s:filler && !s:settings.whole_filler
	let s:new = s:new . " " . s:filler . " inserted lines "
	let s:n = 2
      endif

      if !s:settings.no_pre
	" HTML line wrapping is off--go ahead and fill to the margin
	" TODO: what about when CSS wrapping is turned on?
	let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new) - s:margin)
      else
	let s:new = s:new . repeat(s:difffillchar, 3)
      endif

      let s:new = s:HtmlFormat_d(s:new, s:DIFF_D_ID, 0)
      if s:settings.number_lines
	" Indent if line numbering is on. Indent gets style of line number
	" column.
	let s:new = s:HtmlFormat_n(repeat(' ', s:margin), s:LINENR_ID, 0, 0) . s:new
      endif
      if s:settings.dynamic_folds && !s:settings.no_foldcolumn && s:foldcolumn > 0
	" Indent for foldcolumn if there is one. Assume it's empty, there should
	" not be a fold for deleted lines in diff mode.
	let s:new = s:FoldColumn_fill() . s:new
      endif
      call add(s:lines, s:new.s:HtmlEndline)

      let s:n = s:n - 1
    endwhile
    unlet s:n
  endif
  unlet s:filler

  " Start the line with the line number.
  if s:settings.number_lines
    let s:numcol = repeat(' ', s:margin - 1 - strlen(s:lnum)) . s:lnum . ' '
  endif

  let s:new = ""

  if has('folding') && !s:settings.ignore_folding && foldclosed(s:lnum) > -1 && !s:settings.dynamic_folds
    "
    " This is the beginning of a folded block (with no dynamic folding)
    let s:new = foldtextresult(s:lnum)
    if !s:settings.no_pre
      " HTML line wrapping is off--go ahead and fill to the margin
      let s:new = s:new . repeat(s:foldfillchar, &columns - strlen(s:new))
    endif

    " put numcol in a separate group for sake of unselectable text
    let s:new = (s:settings.number_lines ? s:HtmlFormat_n(s:numcol, s:FOLDED_ID, 0, s:lnum): "") . s:HtmlFormat_t(s:new, s:FOLDED_ID, 0)

    " Skip to the end of the fold
    let s:new_lnum = foldclosedend(s:lnum)

    if !s:settings.no_progress
      call s:pgb.incr(s:new_lnum - s:lnum)
    endif

    let s:lnum = s:new_lnum

  else
    "
    " A line that is not folded, or doing dynamic folding.
    "
    let s:line = getline(s:lnum)
    let s:len = strlen(s:line)

    if s:settings.dynamic_folds
      " First insert a closing for any open folds that end on this line
      while !empty(s:foldstack) && get(s:foldstack,0).lastline == s:lnum-1
	let s:new = s:new.""
	call remove(s:foldstack, 0)
      endwhile

      " Now insert an opening for any new folds that start on this line
      let s:firstfold = 1
      while !empty(s:allfolds) && get(s:allfolds,0).firstline == s:lnum
	let s:foldId = s:foldId + 1
	let s:new .= ""


	" Unless disabled, add a fold column for the opening line of a fold.
	"
	" Note that dynamic folds require using css so we just use css to take
	" care of the leading spaces rather than using   in the case of
	" html_no_pre to make it easier
	if !s:settings.no_foldcolumn
	  " add fold column that can open the new fold
	  if s:allfolds[0].level > 1 && s:firstfold
	    let s:new = s:new . s:FoldColumn_build('|', s:allfolds[0].level - 1, 0, "",
		  \ 'toggle-open FoldColumn','javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
	  endif
	  " add the filler spaces separately from the '+' char so that it can be
	  " shown/hidden separately during a hover unfold
	  let s:new = s:new . s:FoldColumn_build("+", 1, 0, "",
		\ 'toggle-open FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
	  " If this is not the last fold we're opening on this line, we need
	  " to keep the filler spaces hidden if the fold is opened by mouse
	  " hover. If it is the last fold to open in the line, we shouldn't hide
	  " them, so don't apply the toggle-filler class.
	  let s:new = s:new . s:FoldColumn_build(" ", 1, s:foldcolumn - s:allfolds[0].level - 1, "",
		\ 'toggle-open FoldColumn'. (get(s:allfolds, 1, {'firstline': 0}).firstline == s:lnum ?" toggle-filler" :""),
		\ 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')

	  " add fold column that can close the new fold
	  " only add extra blank space if we aren't opening another fold on the
	  " same line
	  if get(s:allfolds, 1, {'firstline': 0}).firstline != s:lnum
	    let s:extra_space = s:foldcolumn - s:allfolds[0].level
	  else
	    let s:extra_space = 0
	  endif
	  if s:firstfold
	    " the first fold in a line has '|' characters from folds opened in
	    " previous lines, before the '-' for this fold
	    let s:new .= s:FoldColumn_build('|', s:allfolds[0].level - 1, s:extra_space, '-',
		  \ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
	  else
	    " any subsequent folds in the line only add a single '-'
	    let s:new = s:new . s:FoldColumn_build("-", 1, s:extra_space, "",
		  \ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
	  endif
	  let s:firstfold = 0
	endif

	" Add fold text, moving the span ending to the next line so collapsing
	" of folds works correctly.
	" Put numcol in a separate group for sake of unselectable text.
	let s:new = s:new . (s:settings.number_lines ? s:HtmlFormat_n(s:numcol, s:FOLDED_ID, 0, 0) : "") . substitute(s:HtmlFormat_t(foldtextresult(s:lnum), s:FOLDED_ID, 0), '', s:HtmlEndline.'\n\0', '')
	let s:new = s:new . ""

	" open the fold now that we have the fold text to allow retrieval of
	" fold text for subsequent folds
	execute s:lnum."foldopen"
	call insert(s:foldstack, remove(s:allfolds,0))
	let s:foldstack[0].id = s:foldId
      endwhile

      " Unless disabled, add a fold column for other lines.
      "
      " Note that dynamic folds require using css so we just use css to take
      " care of the leading spaces rather than using   in the case of
      " html_no_pre to make it easier
      if !s:settings.no_foldcolumn
	if empty(s:foldstack)
	  " add the empty foldcolumn for unfolded lines if there is a fold
	  " column at all
	  if s:foldcolumn > 0
	    let s:new = s:new . s:FoldColumn_fill()
	  endif
	else
	  " add the fold column for folds not on the opening line
	  if get(s:foldstack, 0).firstline < s:lnum
	    let s:new = s:new . s:FoldColumn_build('|', s:foldstack[0].level, s:foldcolumn - s:foldstack[0].level, "",
		  \ 'FoldColumn', 'javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
	  endif
	endif
      endif
    endif

    " Now continue with the unfolded line text
    if s:settings.number_lines
      let s:new = s:new . s:HtmlFormat_n(s:numcol, s:LINENR_ID, 0, s:lnum)
    elseif s:settings.line_ids
      let s:new = s:new . s:HtmlFormat_n("", s:LINENR_ID, 0, s:lnum)
    endif

    " Get the diff attribute, if any.
    let s:diffattr = diff_hlID(s:lnum, 1)

    " initialize conceal info to act like not concealed, just in case
    let s:concealinfo = [0, '']

    " Loop over each character in the line
    let s:col = 1

    " most of the time we won't use the diff_id, initialize to zero
    let s:diff_id = 0

    while s:col <= s:len || (s:col == 1 && s:diffattr)
      let s:startcol = s:col " The start column for processing text
      if !s:settings.ignore_conceal && has('conceal')
	let s:concealinfo = synconcealed(s:lnum, s:col)
      endif
      if !s:settings.ignore_conceal && s:concealinfo[0]
	let s:col = s:col + 1
	" Speed loop (it's small - that's the trick)
	" Go along till we find a change in the match sequence number (ending
	" the specific concealed region) or until there are no more concealed
	" characters.
	while s:col <= s:len && s:concealinfo == synconcealed(s:lnum, s:col) | let s:col = s:col + 1 | endwhile
      elseif s:diffattr
	let s:diff_id = diff_hlID(s:lnum, s:col)
	let s:id = synID(s:lnum, s:col, 1)
	let s:col = s:col + 1
	" Speed loop (it's small - that's the trick)
	" Go along till we find a change in hlID
	while s:col <= s:len && s:id == synID(s:lnum, s:col, 1)
	      \   && s:diff_id == diff_hlID(s:lnum, s:col) |
	      \     let s:col = s:col + 1 |
	      \ endwhile
	if s:len < &columns && !s:settings.no_pre
	  " Add spaces at the end of the raw text line to extend the changed
	  " line to the full width.
	  let s:line = s:line . repeat(' ', &columns - virtcol([s:lnum, s:len]) - s:margin)
	  let s:len = &columns
	endif
      else
	let s:id = synID(s:lnum, s:col, 1)
	let s:col = s:col + 1
	" Speed loop (it's small - that's the trick)
	" Go along till we find a change in synID
	while s:col <= s:len && s:id == synID(s:lnum, s:col, 1) | let s:col = s:col + 1 | endwhile
      endif

      if s:settings.ignore_conceal || !s:concealinfo[0]
	" Expand tabs if needed
	let s:expandedtab = strpart(s:line, s:startcol - 1, s:col - s:startcol)
	if s:settings.expand_tabs
	  let s:offset = 0
	  let s:idx = stridx(s:expandedtab, "\t")
	  while s:idx >= 0
	    if has("multi_byte_encoding")
	      if s:startcol + s:idx == 1
		let s:i = &ts
	      else
		if s:idx == 0
		  let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:idx + s:offset) . 'c')
		else
		  let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c')
		endif
		let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)])
		let s:i = &ts - (s:vcol % &ts)
	      endif
	      let s:offset -= s:i - 1
	    else
	      let s:i = &ts - ((s:idx + s:startcol - 1) % &ts)
	    endif
	    let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '')
	    let s:idx = stridx(s:expandedtab, "\t")
	  endwhile
	end

	" get the highlight group name to use
	let s:id = synIDtrans(s:id)
      else
	" use Conceal highlighting for concealed text
	let s:id = s:CONCEAL_ID
	let s:expandedtab = s:concealinfo[1]
      endif

      " Output the text with the same synID, with class set to the highlight ID
      " name, unless it has been concealed completely.
      if strlen(s:expandedtab) > 0
	let s:new = s:new . s:HtmlFormat(s:expandedtab,  s:id, s:diff_id, "", 0)
      endif
    endwhile
  endif

  call extend(s:lines, split(s:new.s:HtmlEndline, '\n', 1))
  if !s:settings.no_progress && s:pgb.needs_redraw
    redrawstatus
    let s:pgb.needs_redraw = 0
  endif
  let s:lnum = s:lnum + 1

  if !s:settings.no_progress
    call s:pgb.incr()
  endif
endwhile

if s:settings.dynamic_folds
  " finish off any open folds
  while !empty(s:foldstack)
    let s:lines[-1].=""
    call remove(s:foldstack, 0)
  endwhile

  " add fold column to the style list if not already there
  let s:id = s:FOLD_C_ID
  if !has_key(s:stylelist, s:id)
    let s:stylelist[s:id] = '.FoldColumn { ' . s:CSS1(s:id) . '}'
  endif
endif

if s:settings.no_pre
  if !s:settings.use_css
    " Close off the font tag that encapsulates the whole 
    call extend(s:lines, ["", "", ""])
  else
    call extend(s:lines, ["
", "", ""]) endif else call extend(s:lines, ["", "", ""]) endif exe s:newwin . "wincmd w" call setline(1, s:lines) unlet s:lines " Mangle modelines so Vim doesn't try to use HTML text as a modeline if editing " this file in the future; need to do this after generating all the text in case " the modeline text has different highlight groups which all turn out to be " stripped from the final output. %s!\v(%(^|\s+)%([Vv]i%(m%([<=>]?\d+)?)?|ex)):!\1\:!ge " The generated HTML is admittedly ugly and takes a LONG time to fold. " Make sure the user doesn't do syntax folding when loading a generated file, " using a modeline. call append(line('$'), "") " Now, when we finally know which, we define the colors and styles if s:settings.use_css 1;/