Vim

From Wiki
Revision as of 01:26, 3 August 2005 by Mojca Miklavec (talk | contribs) (added link to Nikolai's context.vim, some comments, minor changes)
Jump to navigation Jump to search

< Related Programs | Text editor >

http://www.vim.org/

This page will be about editing ConTeXt source in (g)vim.

context.vim

Nikolai Weibull was the first one who wrote context.vim files and submitted them to the official vim cvs repository. They will be part of the official Vim 7. However, as it is still in alpha state at the time of writing, you probably don't have those files in Vim 6.

You can download the files at:

If you don't use LaTeX (if your *.tex files are mostly for ConTeXt), you can add the following lines to filetype.vim:

" ConTeXt
augroup filetypedetect
	au! BufRead,BufNewFile *.tex		setfiletype context
augroup END

so the next time you open a *.tex file in vim, context.vim will be loaded instead of tex.vim.

It's mostly up to you which syntax highlighting scheme you prefer. context.vim is a lighter version than tex.vim. It knows some ConTeXt details that are not implemented in tex.vim, while math and some other TeX features are not supported yet in .

If you feel that something is missing in the file, please contribute!

TODO

  • extract data from texweb and create syntax highlighting definitions for ConTeXt
  • add metafun macros (from metafun manual)
  • enable metapost/metafun and XML inside ConTeXt

Other useful vim plugins

LaTeX plugins

perhaps it would be possible to borrow anything from them:

http://vim-latex.sourceforge.net/


MetaPost extension

Should highlight the syntax between btex/verbatimtex ... etex as TeX.

This doesn't work 100% (problems with commands inside comments): If anyone knows how to repair that, please do so. It would be nice if this would have landed in the official metapost syntax highlighting script for vim one day.

unlet b:current_syntax
syn include @texTop syntax/tex.vim
" MetaPost has TeX inserts for typeset labels
" verbatimtex, btex, and etex will be treated as keywords
syn match mpTeXbegin "\(verbatimtex\|btex\)"
syn match mpTeXend "etex"
syn region mpTeXinsert start="\(verbatimtex\|btex\)"hs=e+1 end="etex"he=s-1 \
                       contains=@texTop,mpTeXbegin,mpTeXend containedin=ALL keepend

Powerful key mappings

a set of buffer-local insert-mode macros to speed up ConTeXt source editing (by D.A. 19:52, 8 Jul 2005 (CEST))

  • I have remapped <leader> to comma (one hardly ever use commas just before a letter)
  • two types of mappings: stand-alone and changing the previous word
  • usage of mappings that change the previous word: type the name of the macro and ,ta (for tag, use your leader character instead of the comma); it created \start-\stop block of the macro
  • put the code into .vim/after/plugin/context.vim
let maplocalleader = mapleader

" Make start-stop block out of the previous word
imap <buffer> <LocalLeader>ta \start<Cr>\stop<Cr><Esc>4bhdiw$pj$pO
imap <buffer> <LocalLeader>tb \begin<Cr>\end<Cr><Esc>4bhdiw$pj$pO

" Itemize
imap <buffer> <LocalLeader>it \startitemize<Cr>\stopitemize<Esc>O\item<Space>
imap <buffer> <LocalLeader>en \startitemize[n]<Cr>\stopitemize<Esc>O\item<Space>
imap <buffer> <LocalLeader>i<Return> \item<Space>

" Font switching and emphasize
imap <buffer> <LocalLeader>em {\em }<Left>
imap <buffer> <LocalLeader>sc {\sc }<Left>

" Define... and setup...
imap <buffer> <LocalLeader>de \define
imap <buffer> <LocalLeader>se \setup

" Typing and type
imap <buffer> <LocalLeader>ty \type{}<Left>
imap <buffer> <LocalLeader>typ typing<LocalLeader>ta

" Quote and quotation
imap <buffer> <LocalLeader>" \quotation{}<Left>
imap <buffer> <LocalLeader>' \quote{}<Left>