Installation des Vim Plugins Snipmate und Snippet Datei für die Kramdown Syntax

Geschrieben von Eric Scheibler am 06.01.2013

Ich erstelle die Artikel für meinen Blog im Vim und verwende dafür die Kramdown Syntax. Damit ich wiederkehrende Tags nicht jedes Mal wiederholen muss, habe ich mich nach einer Lösung zur Automatisierung umgesehen. Gefunden habe ich schließlich ein sehr nützliches Plugin namens Snipmate.

Die Installation des Plugins ist schnell erledigt, einfach herunterladen und nach ~/.vim/ entpacken. Für einige Programmiersprachen gibts bereits fertige Snippet Dateien.

Hier gibts zusätzlich meine Snippet Datei, die nun nach ~/.vim/after/ftplugin/ kopiert werden muss.

if !exists('g:loaded_snips')
    fini
en

" octopress blob snips with kramdown processor
" more
exe "Snip more <!-- more -->\n\n${1}"

" code block
exe "Snip code ~~~\n${1}\n~~~\n${2}"
exe "Snip icode {% include_code ${1} lang:${2} ${3} %}\n\n${4}"

" tables
" two columns
exe "Snip th2 |--\n| ${1}\t| ${2}\n|-|-\n| ${3}\t| ${4}\n${5}"
exe "Snip t2 | ${1}\t| ${2}\n${3}"
" three columns
exe "Snip th3 |---\n| ${1}\t| ${2}\t| ${3}\n|-|-|-\n| ${4}\t| ${5}\t| ${6}\n${7}"
exe "Snip t3 | ${1}\t| ${2}\t| ${3}\n${4}"

" link
exe "Snip link [${1}](${2}) ${3}"

" headings
exe "Snip h1 # ${1} #\n\n${2}"
exe "Snip h2 ## ${1} ##\n\n${2}"
exe "Snip h3 ### ${1} ###\n\n${2}"
exe "Snip h4 #### ${1} ####\n\n${2}"
exe "Snip h5 ##### ${1} #####\n\n${2}"
exe "Snip h6 ###### ${1} ######\n\n${2}"

Damit die Snippet Datei auch geladen werden kann, muss Vim noch der Filetype der Datei mitgeteilt werden. Denn die Snippets sollen ja nur in einer .markdown Datei reagieren. Dazu die folgende Datei unter ~/.vim/ ablegen:

" my filetype file
if exists("did_load_filetypes")
    finish
endif
augroup filetypedetect
    au! BufRead,BufNewFile *.markdown        setfiletype markdown
augroup END

Zuletzt noch folgende Zeile an den Anfang der ~/.vimrc:

filetype plugin indent on

Nun in einer .markdown Textdatei mit “i” in den Eingabemodus wechseln und z.B. “more” schreiben. Nach dem drücken der Tab-Taste sollte dann <!-- more --> erscheinen.