28. huhtikuu 2012, 18:21

Vim-käyttötaito portaina

Mieltäni aina piristää nähdä kanssavimistelijä, etenkin työn touhussa. Mutta usein hymy hyytyy tavasta, jolla editoria käsitellään. Nuolinäppäimiä, haasteita kopioinnissa. Ei sovi moittiakaan, koska itsekin aloitin pohjalta ja etenin hienosti kohti pilviä. Sen sijaan ajattelin reflektoida omista kokemuksistani ja näkemyksistäni ja johtaa jonkinlaisen tasoasteikon, joka karakterisoisi joitakin Vim-käytön piirteitä luokkajaoksi.

Listahan ei ole täydellinen, koska kaikkea ei voi muistaa yhdeltä (eikä kolmelta) istumalta. Ja tietenkin omat rajoitukseni tulevat vastaan osittain: miten voisin määritellä toiminnon, josta en ole tietoinenkaan?

Taso ‘Windows-mies’

Referenssiksi kelpaa esimerkiksi seuraava huuli:

Q: How do you generate a random string?
A: Put a fresh student in front of vi and tell him to quit.

Oletusasetuksilla käynnistettäessä vim antaa suoran ohjeen siitä, miten poistua. Sitä ei valitettavasti lueta. Toisaalta vi/vim on usein $EDITOR-arvona oletuksena ja tiedostoa avattaessa ohjetta ei anneta.

  • Osaa käynnistää vimin

Taso ‘Glorified notepad’

Tällä aloittelijoiden tasolla vim on löydetty ja sen perusideoista pidetään kovasti. Editorista osataan poistuakin. Mutta konsolissa toimivan syntaksivärjäyksen lisäksi keksitään vain vähän hienoja puolia. Moni jää tälle tasolle, koska vimiä luultavasti käytetään vain hätätapauksissa tai muuten vain liian harvoin.

  • Editoija osaa poistua editorista siististi; tiedoston tallennus sujuu hyvin.
  • Osaa siirtyä lisäystilaan, vaikka sitten viihtyykin siellä rikollisen pitkiä aikoja.
  • Osaa etsiä tiedostosta tekstillä.

Taso ‘When Things Are Dim, Give ‘em Vim!’

Osaa hallita editoria jo verraten hyvin, vaikka hiiri ja nuolinäppäimet poistettaisiin käytöstä. Tästä on hyvä jatkaa oppimista.

  • Osaa hyppiä ruudulla ilman (nuoli)näppäimen pohjassapitämistä.
  • Osaa rullata näkymää ilman hiiren rullaa: G, gg, HMS -komennot tuttuja.
  • Tiedostotyyppien mukaiset pluginit (ftplugin) ymmärretään. Ehkä jopa osataan asentaa sellainen.
  • Tietää web-liikkumakomennot ja hjkl:nkin, mutta ei vielä omaksunut.
  • Tuntee vimin käyttämän regex-murteen riittävän hyvin peruskäyttöön
  • Uusi tiedosto osataan avata vimistä käsin :edit-komennolla sen sijaan, että aina suljetaan vim, ja avataan komentoriviltä uudestaan.
  • Perustason puljautuminen ikkunoiden kanssa: :split tuttu. :quit ymmärretään ikkunansulkukomennoksi sen sijaan, että se sulkee koko editorin.
  • osaa vaihtaa esimerkiksi tabstoppia ja fileencodingia lennosta
  • :make sen sijaan, että <Alt-tab>make<Alt-tab>
  • ex-moodin (komentotila) peruskomennot :g, :v, :s tuttuja
  • käyttää tekstintäydennystoimintoja (lisäysmoodin <C-n>, <C-x>, …)
  • tuntee lyhenteiden (abbr) perusidean
  • Tietää, että pisteellä . toistetaan edellinen komento.

Taso ‘I Know Vim.’

Käyttötaito alkaa muodostua kriittiseksi: tästä ei ole enää paluuta vanhaan.

  • Osaa kutsua ulkopuolisia ohjelmia bufferissa olevan datan käsittelyyn.
  • Käyttää web-liikkumista ja hjkl:ää sopivasti tarpeen mukaan.
  • Liikkuu myös enemmän semanttisilla liikekomennoilla {[()]}
  • osaa käyttää sisäänrakennettuja ohjeita sujuvasti ja itsenäisesti
  • Nopeata selailua varten tuntee näppäimet <C-f>, <C-b>
  • vimin tiedostoselaustoiminnot, tai peräti tuntee NerdTree-lisäosan
  • tuunailee vimrc-tiedostoaan; ehkä kokee jonkinlaista ylpeyttä siitä?
  • Lukuarvot ennen komentoa toistavat komentoa
  • Pystyy tarvittaessa laittamaan vimin oikolukijaksi.
  • Näyttöä voi sovittaa silmilleen sopivaksi zz, zt, zb -komentojen avulla.
  • Foldauksia osaa käyttää, jos pitää niistä.
  • Poistoja ei aina visual moden kautta, vaan sopivissa tilanteissa osataan käyttää “pending mode” -liikkeitä.
  • osaa nauhoittaa ja toistaa toimivia makroja

Taso ‘I Vim You So’

Vimille antaumuksella, koska olet sen arvoinen.

  • osaa kustomoida statusbaria, jos oletus ei miellytä
  • merkkejä osataan käyttää: sekä omia että automaattisia merkkejä (esimerkiksi '')
  • :match yksittäistapauksiin.
  • koodissa hoksaa käyttää tageja, jos sovellettavissa, sekä hyppiä tagien välillä ja takaisin.
  • vimin etäeditointitoiminnot, eli muokkaa scp:n yli tiedostoa lokaalilla vimillä
  • automaattinen sisennys ja sen tuunaaminen (cindent yms).
  • :make ja sen kaverina QuickFix -ikkuna.
  • :grep tai :vimgrep ja osumien kanssa navigointi.
  • tekstioliot tuttuja (esimerkiksi da')
  • Osaa navigoida kielioppivirheiden välillä ([s, ]s).
  • Osaa käyttää tabeja oikein, eli tabien ja buffereiden välinen ero viimein käsitetään.
  • Käyttää web-liikkumista ja hjkl:ää aina.
  • Tekee lisäysmoodissa vain atomisia muutoksia; osaa käyttää c-komentoja.
  • Kehittynyt puljautuminen ikkunoiden kanssa: ikkunoiden liikuttelu ja koonmuuttelu.
  • osaa mapata näppäimen johonkin komentosarjaan
  • kustomoi väriteemaa, jos valmiit eivät miellytä.
  • rekisterit tuttuja; lisäysmoodin <C-r> tuttu.
  • vastaavasti siis tiedät, että miten vimin ja leikepöytien välillä siirtyy data luontevasti.
  • Omaksunut seikan, että (melkein) kaikki liike on sovitettavissa “pending modessa”

Taso ‘King Of The Hill’

Et mukaudu editoriin: editori mukautuu sinuun.

  • Pystyy hyppimään eri paikoissa, joissa on käynyt, <C-i> / <C-o> -yhdistelmien voimin
  • ex-moodi tuttu muiltakin osin; kirjoittaa ex-skriptejä tarvittaessa
  • osaa muokata jo tehtyä makroa (liitä (p) makro bufferiin ja yankkaa muokkauksen jälkeen takaisin)
  • vi-näppäimet pakko saada kaikkialle (pdf-lukija (evince), nettiselain (vimperator, vimium), sähköposti (gmail, mutt), …)
  • tietää, miten kaapata komentoriviohjelman tulostus bufferiin ilman leikepöytää
  • kirjoittaa omia syntaksivärityksiä
  • kirjoittaa omia väriteemoja
  • kirjoittaa omia tiedostoplugineita
  • kirjoittaa omia yleisplugineita
  • Erittäin nopeata selailua varten /foo puhtaasti liikkumatapana
  • vimdiff on tuttu keino vertailla.
  • käyttää g;-komentoa palaamaan työn alla olevaan kohtaan (jump to last edited point)

Taso ‘Master of vi [vı:] Universe’

Seikkailukoordinaattorin jopi kutsuu.

  • osallistuu vim_dev-sähköpostilistalle ja kirjoittaa paikkoja löytyneisiin bugeihin.
  • ex-moodi on oletuksena päällä.

Tageja:

---
---

---

Aiheen vierestä