Meta

A UNIX rendszer felhasználói és
fejlesztői felülete

Vim logó

Őry Máté <orymate kukac iit.bme.hu>
http://bagira.iit.bme.hu/~maat/

Budapest, 2011. október 14.

Miért?

  • „De az Emacs jobb.”
    • Biztos. Tanuld meg azt.
  • „Egy programozó a brit tudósok legújabb tanulmánya szerint egy nap 20/50/100 sor kódot ír.”
    • Miért baj, ha ez nem a szövegszerkesztés miatt fárasztó?

Történelem

  • ca. 1976. em [editor for mortals], en, ex
    • Kisebb fejlesztések, például hibaüzenetek.
    • Már kihasználja a képernyőt: a prompt mindig a kép alján (raw mode).
  • 1977. vi (Bill Joy) [visual]
    • Az ex vizuális módja.
    • A képernyőn lévő sorokat helyben lehet szerkeszteni.
    • Sok különböző megvalósítás, változat.
    • POSIX-szabvány, amelynek a gyakrabban használt részei szinte mindenhol működnek.

Vim (jelen)

gvim screenshot

Indítás

Ural2 (mielőtt elkezdenénk)

syntax on                     " kódszínezés
filetype plugin indent on     " fájltípusnak megfelelő behúzások
set fileencodings=ucs-bom,utf-8,latin2   " szöveg kódolásának detektálása
" set encoding=utf8           " ha UTF-8 terminálból használjuk

Alapvetések

Módok

Használat

Minden jelent valamit!

billentyűzet

Használat tl;dr

Erre még az mcedit is jobb!

Tényleg van egy csomó jó lakossági szövegszerkesztő!

Parancsmód

  • Kurzor mozgatása:
    • Lehetne a nyilakkal is.
    • j, k: le-föl. – Jobb mutatóujj a j-n!
    • h, l: balra-jobbra.
    • ,   ␣  : balra-jobbra (kényelmesebben). Terminált jól kell beállítani.
  • Fájl betöltése
    • $ vim fájlnév vagy
    • :e ␣ (fájlnév)
  • Fájl kiírása (mentése)
    • :w
    • Ha még nincs neve: :w ␣ (fájlnév)
    • Ha írásvédett: :w!

Szöveg beszúrása

  • Kurzor elé: i (insert).
  • Kurzor után: a (append).
  • Sor elejére: I.
  • Sor végére: A.
  • Sor beszúrása
    • aktuális sor elé: O,
    • aktuális sor után: o.
  • Átírás: R.

Beszúrási mód

  • Szöveget beszúró parancsoknál beszúrási módba kerülünk.
  • Ebben a módban magát a szöveget gépelhetjük be.
  • Teljesen más parancsok működnek: kevesebb, az éppen beszúrt szöveget érintő, általában Ctrl-os billentyűparancs.
  • A tényleges beszúráshoz, a mód elhagyásához: Esc.

Törlő és változtató utasítások

Ex-parancsok

  • :-tal kezdődnek – erre megjelenik egy prompt.
  • -rel hajthatók végre.
  • A régebben használt parancsok között / nyilakkal válogathatunk.
  • Akár félig megkezdettet is: elejét begépeljük, .
  • Ha meggondoltuk magunkat, EscEsc alapállapotba visz.
  • Rövidíthetőek, amíg egyértelműek. :write = :writ = … = :w.
  • Néhány kombinálható: :write + :quit = :wq. (Jelölés továbbiakban így.)

  • :help <téma>! -ra kiegészít.

Vágólap

Vágólap (2.)

Kurzormozgatás++

  • Következő szó eleje: w (word).
  • Következő szóvég: e (end).
  • Előző szókezdet: b (backwards, begin).
  • (Előző szó vége: ge). ♚
  • szó: betűk, számok, aláhúzás (:set iskeyword?).
  • SZÓ: minden, ami nem szóköz, tabulátor, újsor
    • ugyanezek a parancsok nagybetűvel: W, E, B, gE.
  • A kurzor alatti kerek, szögletes vagy kapcsos zárójel párjára ugrik: %.
    • Ha nincs a kurzor alatt, akkor a szó végéig keres egy nyitót, és annak a párjára.

Ugrálás a fájlokban

  • A regiszterekhez hasonlóan (de függetlenül) a Vi-ban van sok mark is.
  • Az a,bz jelzők általános célúak, az adott fájlra vonatkoznak.
  • Az A,BZ jelzők perzisztensek, globálisak. ♚
  • A többi speciális. ♚
    • Például a ^ jelző az utolsó beszúrás helyére mutat,
    • a . pedig az utolsó csere helyére.
  • Jelzőt az mjelző azonosítója paranccsal tehetünk le.
  • Az 'jelző azonosítója paranccsal a jelző sorába ugorhatunk.
  • A `jelző azonosítója paranccsal a jelzőhöz ugorhatunk (magyar billentyűzeten használhatatlan, megoldás lehet az :no § ` paranccsal a §-re állítani).

Keresés

  • Keresés visszafele: ?minta.
  • Ugrás a következő találatra: n (next).
  • Ugrás az előző találatra: N
  • A kurzor alatt lévő szóra keresés előre: *, vissza: #.
    • Szóhatárhoz nem ragaszkodva: g*, g#.
  • Soron belüli következő k karakterre ugrás: fk.
  • Soron belüli előző k karakterre ugrás: Fk.
  • Soron belüli következő, utoljára keresett karakterre ugrás: ;, előzőre: ,.

Kijelölő mód

  • Ezután a hatókörrel rendelkező parancsokat a kijelölésen hajthatjuk végre.
    • Például csere, d: törlés, y: másolás.
  • Néhány további (a fentiekhez hasonlóan működnek normál módban is):
    • ~: kIS-Nagybetűk mEGCSERÉLÉSE.
    • u, U: kis/nagybetűsítés (normál módban gu, gU).
    • <, >: behúzás csökkentése, növelése.
    • =: automatikus kódbehúzás.
    • gq: automatikus sortördelés.
  • Egész sorok kijelölése: V.
  • Blokkos kijelölés: ^V (Ctrl+v).
    • Blokk elé és mögé írás: I, A.

Szűrők

Beállítások

Konfiguráció

Néhány hasznos beállítás: :help option-list

Pufferek, ablakok, lapok

  • Pufferek:
    • A Vim több fájlt tud egyszerre megnyitni, egy megnyitott fájl = egy puffer.
    • Váltogatni köztük a :next és :prev♚ parancsokkal lehet.
    • :buffers listázza őket, sorszám alapján a :b szám-mal lehet arra váltani. ♚
    • $ vim a b c: 3 puffert indít, ebből az első (a) lesz az egyetlen ablakban.
    • Kilépés, ha több puffer van: :qa, vagy egyesével :q.
    • Minden puffer mentése: :wa. ♚
  • Ablakok (normál módban): ♚
    • ^Wn: új ablak,
    • ^Wv: függőlegesen új ablak,
    • ^Whjkl: lépkedés az ablakok között,
    • :q: ablak becsukása.
  • Lapok: ♚
    • Egy lapon több ablak lehet.
    • :tabnew: új tab,
    • :tabnext vagy gt: következő tabra lépés,
    • :tabclose: tab bezárása.

További parancsmódú parancsok

Makrók

Visszavonás-újracsinálás

További parancsmódú parancsok

Ismétlés

Normál módban ugrálás++

  • ( és ): mondatok között.
  • { és }: üres sorral elválasztott bekezdések között.
  • ]], ][, [[ és []: {előre,vissza} függvények {eleje,vége} között.
  • gg: fájl eleje ♚, G: fájl vége, sorG: adott számú sorba.

További tartományok ♚

  • Idézőjel között: …i, zárójel között: …i(, i[, i{, egész szó: …iw.
  • Idézőjellel együtt: …a, zárójellel együtt: …a(, a[, a{, egész szó szóközökkel: …iw.
  • Például szó cseréje: ciw, zárójeles kifejezés törlése da(.

További beszúrási módú parancsok

További Ex-parancsok

Külső programok

Beszúrás

EOF

^D^D^D^D^D^D^D^C^C^C^C^C^C^C^C^C^C
^D
^\^\^\qqq
exit


^[^[^[^[^[:q!
unix% lynx 'http://bagira.iit.bme.hu/~maat'

További referencia