Vim/Python
Šį kartą sujungsime dvi fantastiškas priemones Vim Editorių ir Python'ą. Ubuntu linux norint naudotis šiuo funkcionalumu tereikia turėti suinstaliuotą vim'ą su python palaikymu (reikia instaliuoti vim-python). Microsoft Windows reikės susinstaliuoti tą Python'o versija su kuria sukompiliuotas Vimas (šiuo metu Python 2.4) ir užtikrinti, kad python'as bus PATH'e. Norint naudoti kitą Python'o versiją reikės Vim'ą susikompiliuoti patiems (tai nėra sudėtinga, bet paprasčiau tiesiog susinstaliuoti Python 2.4).
Tarkime mums reikia VIM skripto, kuris sukurtų štai tokius komentarus:
# Autorius: Mikė Pūkuotukas
# Data: 2007-11-18 21:36:42.746568
# Komentaras:
Tarkim jūsų kompanijoje reikia sudėti tokius komentarus, kur nurodomas autorius ir dabartinė data/laikas. Plius reikia prirašyti kažkokį trumpą komentarą. Tokį procesą natūraliai norėtųsi automatizuoti.
Taigi sukuriame comment.vim failą ir į jį įrašome štai tokias eilutes:
function Add()
python << EOF
import vim
from datetime import datetime
template = """# Autorius: Mikė Pūkuotukas
# Data: %s
# Komentaras:"""
now = datetime.now()
comment = template % now
vim.current.range.append(comment.split('\n'))
EOF
endfunction
Tada Vim'e įvykdome :call Add() ir po ta eilute, kurioje yra kursorius turėtų atsirasti aukščiau mano paminėtas komentaras.
O dabar paanalizuokime kiekvieną eilutę.
import vim
Ši eilutė importuoja Vim'o biblioteka. Joje yra visos galimybės kontroliuoti vim'ą naudojantis python'u. Daugiau apie tai skaitykite :help python.
from datetime import datetime
Čia tiesiog importuojame datetime python modulį.
template = """# Autorius: Mikė Pūkuotukas
Sukuriame šabloną komentarui.
now = datetime.now()
comment = template % now
Gauname dabartinę datą ir naudodami šabloną sukuriame komentarą su dabartine data. Jei norite kažkokio konkretaus datos formatavimo naudokite now.strftime(formatas) vietoj now.
vim.current.range.append(comment.split('\n'))
current.range žymės tą vietą, kur dabar yra kursorius. Todėl mes galime prie jo pridėti sąrašą sudarytą iš komentaro eilučių. Štai ir viskas.
Ruby ir Perl su vim'u irgi draugauja. Daugiau informacijos :help ruby ir :help perl.
Taip pat pridedu tvarkingą plugin'ą, kurį galite naudoti savo reikmėms. Jį reikia padėti į ~/.vim/plugin direktoriją. Norėdami įvykdyti komentaro pridėjimą klaviatūroje galite surinkti \a. Daugiau apie tai paskaityti :help leader.
" Vim plugin for adding comment.
" Last Change: 2007 Nov 18
" Maintainer: Dalius <dalius@sandbox.lt>
" License: This file is placed in the public domain.
if exists("loaded_comment")
finish
endif
let loaded_comment = 1
let s:save_cpo = &cpo
set cpo&vim
"
" Functions
"
function s:Add()
python << EOF
import vim
from datetime import datetime
template = """# Autorius: Mikė Pūkuotukas
# Data: %s
# Komentaras:"""
now = datetime.now()
comment = template % now
vim.current.range.append(comment.split('\n'))
EOF
endfunction
"
" Mappings
"
if !hasmapto('<Plug>CommentAdd')
map <unique> <Leader>a <Plug>CommentAdd
endif
noremap <unique> <script> <Plug>CommentAdd <SID>Add
noremap <SID>Add :call <SID>Add()<CR>
"
" Commands
"
if !exists(":CommentAdd")
command -nargs=0 CommentAdd :call s:Add()
endif
let &cpo = s:save_cpo