Vim ja tekstin automaattinen sisennys

Linuxille on monia hyviä tekstieditoreja komentorivikäyttöön. Toiset pitävät nanosta, toiset emacsista, mutta mielestäni kenties parhain on kuitenkin vim. Tuo ohjelma, jonka ekaa kertaa käynnistäessäsi et tiennyt kuinka siitä pääsee pois. Myöhemmin viisaammat kertoivat ESC-:q -komennon ja kirosit koko ohjelman syvimpään hautaan. Jos ensimmäinen käyttökerta ei pelästyttänyt, kannattaa tutustua vimtutor -ohjelmaan ja oppia käyttämään vim:iä, sillä vim on pieni ja tehokas tekstieditori.

Vim on kehittyvä ohjelma ja uudet versiot tuovat uusia ominaisuuksia, joista kaikki eivät ole aina toivottuja. Jossain vaiheessa huomasin, että liittäessäni tekstiä vimissä auki olevaan tiedostoon, menivät kaikki liitetyn tekstin sisennykset aivan ketuilleen. Onneksi Google kertoi oikean vastauksen ongelmaan löytyvän vim.org -sivustolta. Kysymykseen oli annettu monia eri ratkaisuja, mutta itselle ja omaan tarkoitukseen kelpaava ratkaisu löytyi asettamalla kotihakemistoni .vimrc -tiedostoon rivit:

set nosmartindent
set noautoindent 

Nyt vim ei automaattisesti käytä edellisen rivin sisennystä liitettäessä tekstiä tai sisennä automaattisesti, kun kirjoitetaan koodia. Ei aivan täydellinen ratkaisu, sillä automaattinen sisennys koodatessa on kyllä kätevä.

Ohjeissa ehdotettiin myös lisäämään filetype off .vimrc -tiedostoon tai F11-napin määrittämistä :set paste -komennolle:

" Paste Mode On/Off
map <F11> :call Paste_on_off()
set pastetoggle=<F11>

let paste_mode = 0 " 0 = normal, 1 = paste

func! Paste_on_off()
        if g:paste_mode == 0
                set paste
                let g:paste_mode = 1
        else
                set nopaste
                let g:paste_mode = 0
        endif  
        return
endfunc

Kyseinen funktio mahdollistaa paste-ominaisuuden päälle/pois -kytkemisen ja nyt myös voidaan käyttää autoindent ja smartindent -optioita koodauksen helpottamiseksi.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *