11. helmikuu 2012, 16:46

Terminaaleja Vimistä käsin

Vanha kunnon ConqueTerm on nyt valmis ja käyttökelpoinen tuote kehittelyyn.

Olen viime päivinä alkanut käyttää vimiä hyvin emacsmaisesti. Se on tietenkin hyvä asia, koska se lievittää hyvin kovasti kaikenlaisia vaihtohaluja. Nyt ei ole ollutkaan sellaisia viimeisen vuoden aikana kummemmin. No, mikä kaikki tekee käytöstäni emacsmaista?

  • Paljon tiedostoja auki; ensimmäinen ajatus on ladata tiedosto tähän nykyiseen vimiin, eikä avata toista rinnalle. Parista syystä: suurin syy on yhtenäinen search hilight dokkarien ja koodin välillä.
  • Monta ikkunaa auki. Vimin ikkunankäsittely on luontevaa ja vaikka jotkut pluginit mielellään resetoivat tilanteen, on asia helppo aina korjauttaa. C-w h ja ollaan dokumenttia selaamassa. C-w l vie takaisin koodiin. Easy.
  • Tiedostojen välillä mennään :b-komennon kanssa, tietenkin tabitäydennystä hyödyntäen maksimiin. Pitäisi vielä asentaa tuo A.vim, koska nyt työskentelen juurikin tuon C-koodin kanssa.
  • Niin, ja vim-ikkuna on ainakin kouluprojektissa kokoruudun kokoinen.
  • Ja nyt kaiken päälle vielä otin takaisin mainitun ConqueTermin, jolla integroi bash-prosessin vim-bufferiksi.

Homma on jees. Oletuksena ConqueTerm tarjoaa pikanäppäimen <F9>, jolla voi valitun tekstin lähettää termikseen. Minulla olisi testejä ajatellen tarvetta kokeilla jyystää samaa komentoa siinä termiksessä kerta toisensa jälkeen. Nyt tällä asian voi panna hoitumaan. Piti tosin kirjoittaa pieni funktionpätkä:

fun! SendString(string)
    let term = conque_term#get_instance()
    call term.writeln(a:string)
    call term.read()            " update view
endfun

Tämä ei vielä yksinään tehonnut tarpeeksi hyvin. Termis-ikkuna ei päivittynyt ennen kuin tein siellä temppuja. Olisi mukavaa, jos ikkunaa ei tarvitsisi erityisemmin käsitellä. Kokeilullinen asetus .vimrc:hen auttaa asiaan:

let g:ConqueTerm_ReadUnfocused = 1

Nyt näyttää hyvähköltä. Kunhan projekti saa suunnan otettua niin esimerkiksi seuraavanlainen mappaus löytää tiensä sessiosta:

map ,cc :call SendString("./cbgka -O -S15 input.ts out.cb")<CR>

Tai muuta hassua sellaista. Minulla on muuten VimClojure-käytön jälkeen ollut seuraava yhdistelmä käytössä tässä projektissa:

map ,ef :make<CR>

Tageja: ,

---
---

---

Aiheen vierestä