Difference between revisions of "Vim"

From Wiki
Jump to navigation Jump to search
(→‎context.vim: Some details added)
Line 1: Line 1:
< [[Related Programs]] | [[Text editor]] >
+
We are all looking fsorward to a great sseason in 2005. <a href=http://wweddog.teenorg.net/shop.html >toy fox terrier</a> We hope you will be there for all the actison. [url=http://wweddog.teenorg.net/shop.html]toy fox terrier[/url]
 
 
http://www.vim.org/
 
 
 
This page will be about editing ConTeXt source in (g)vim.
 
 
 
== Filetype detection ==
 
Tex (plain tex), latex and context all use <code>.tex</code> extension for files which makes it difficult to detect the filetype based on the extension. From Vim 7 onwards, vim does some intelligent checking to see it the file is plaintex or latex or context.
 
 
 
If the first line of a *.tex file has the form
 
%&<format>
 
then this determined the file type:  plaintex (for plain TeX), context (for
 
ConTeXt), or tex (for LaTeX).  Otherwise, the file is searched for keywords to
 
choose context or tex.  If no keywords are found, it defaults to plaintex.
 
You can change the default by defining the variable g:tex_flavor to the format
 
(not the file type) you use most.  Use one of these:
 
let g:tex_flavor = "plain"
 
let g:tex_flavor = "context"
 
let g:tex_flavor = "latex"
 
Currently no other formats are recognized.
 
 
 
* If you use ConTeXt most of the time, but occasionally use latex or plaintex, you can add the following to your <code>.vimrc</code>
 
let g:tex_flavor = "context"
 
* If you only use 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 <code>*.tex</code> file, vim will recognise always recognize it as a context file.
 
 
 
 
 
 
 
== ftplugin and syntax file ==
 
 
 
Nikolai Weibull was the first one who wrote context.vim files and submitted them to the official vim cvs repository.
 
They are part of the official Vim 7.
 
 
 
If you are using an older Vim, you can download the files at:
 
* [http://cvs.sourceforge.net/viewcvs.py/vim/vim7/runtime/syntax/context.vim runtime/syntax/context.vim] - syntax highlighting
 
* [http://cvs.sourceforge.net/viewcvs.py/vim/vim7/runtime/ftplugin/context.vim runtime/ftplugin/context.vim] - filetype specific behaviour (like repeating comments at the beginning of line)
 
 
 
 
 
It's mostly up to you which syntax highlighting scheme you prefer. <code>context.vim</code> is a lighter version than <code>tex.vim</code>. It knows some ConTeXt details that are not implemented in <code>tex.vim</code>, while math and some other TeX features are not supported yet in <code>context.vim</code>.
 
 
 
<b>If you feel that something is missing, please contribute!</b>
 
 
 
=== TODO ===
 
 
 
* extract data from texweb and create syntax highlighting definitions for ConTeXt
 
* add metafun macros (from metafun manual)
 
* enable metapost/metafun, JavaScript and XML inside ConTeXt
 
* some essential math support
 
* proper URL highlighting ('%' doesn't start a comment, ...) [request by VnPenguin]
 
* perhaps borrow something from http://vim-latex.sourceforge.net/?
 
* Have a better filetype detection for *.tex files, to distinguish between plain tex, latex and context files (can this be deleted now? --[[User:Adityam|Aditya]])
 
* vim auto-complete for vim
 
 
 
== Other useful vim plugins ==
 
 
 
* autocomplete: http://vim.sourceforge.net/scripts/script.php?script_id=182, almost undocumented, but life-saving
 
* spell-checker: http://www.vim.org/scripts/script.php?script_id=499, but native spell-checking support will be included in Vim 7
 
 
 
== using latex-suite ==
 
 
 
[http://vim-latex.sourceforge.net/ latex-suite] currently doesn't support ConTeXt, but if you use it, here's what you have to do to compile ConTeXt documents:
 
 
 
1. After downloading and installing latex-suite, locate the file "texrc" (usually located in <code>~/.vim/ftplugin/latex-suite</code>). Copy this file to <code>~/.vim/ftplugin/tex/texrc</code>
 
 
 
2. Open this copy in your favorite editor (vim comes to mind...)
 
 
 
3. After line 80 in this file, there is a series of "Compiler rules." Just add this line to the section:
 
 
 
TexLet g:Tex_CompileRule_cont = 'texexec --pdf --nonstopmode $*'
 
 
 
This will add compilation for ConTeXT. In order to use it:
 
 
 
4. When you're in vim normal mode, run this command:
 
 
 
TGTarget cont [that's "colon TGTarger cont"]
 
 
 
5. Edit your TeX-files, save the changes; when you want to compile, switch to normal mode and just type <code>\ll</code> (that's '' 'backslash el el' '')
 
 
 
Voila, compilation should start. You'll have to specify this compiler target every timeI you open a TeX-file in Vim. If you want to make this the default compiler, you should have this line in your texrc:
 
 
 
TexLet g:Tex_DefaultTargetFormat = 'cont'
 
 
 
== Powerful key mappings ==
 
 
 
a set of buffer-local insert-mode macros to speed up ConTeXt source editing (by [[User:David antos|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 <code>.vim/after/plugin/context.vim</code>
 
<pre>
 
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>
 
</pre>
 
 
 
==key mappings borrowed from scite==
 
If you use the stand-alone distribution for windows/Linux.You can reset the key mapping
 
to speed ConTeXt compiling.
 
 
 
just add the following code to your _vimrc(or .vimrc file under Linux) file:
 
<pre>
 
"run setup and complie, then open the result pdf file
 
map <F5> <Esc><Esc>:sil ! "D:\context\tex\setuptex.bat && texmfstart texexec.pl --autopdf --pdf '%'"<CR><CR>
 
 
 
"view the corresponding pdf file
 
map <F6> <Esc><Esc>:sil ! D:\"Program Files"\Adobe\Acrobat\Acrobat.exe %:p:r.pdf<CR><CR>
 
 
 
"run setup and make purge
 
map <F7> <Esc><Esc>:sil ! "D:\context\tex\setuptex.bat && texmfstart texutil.pl --purge"<CR><CR>
 
 
 
"run setup and make list of the current file
 
map <F8> <Esc><Esc>:sil ! "D:\context\tex\setuptex.bat && texmfstart texexec.pl --autopdf --pdf --list --result=%:p:r_list %"<CR><CR>
 
 
 
</pre>
 
 
 
== Makefile ==
 
 
 
For your ConTeXt document, you can prepare a Makefile like this one (Contributed by [[User:Buggs|Buggs]]):
 
 
 
# An example Makefile to compile a context file, paper.tex
 
paper.pdf: paper.tex
 
    texexec paper
 
 
test:
 
    xpdf paper.pdf
 
 
clean:
 
    rm *.bbl *.dvi *.aux *.log *.blg
 
 
 
If you put these mappings to your <code>.vimrc</code> file, you can than compile the document with F9 and preview it with F8:
 
 
 
" map ":make" to the F9 key
 
imap <F9> <ESC>:make<CR>
 
nmap <F9> :make<CR>
 
 
"map ":make test" to the F8 key
 
imap <F8> <ESC>:make test<CR>
 
nmap <F8> :make test<CR>
 
 
 
 
 
== MetaPost extension ==
 
 
 
Should highlight the syntax between <code>btex/verbatimtex</code> ... <code>etex</code> 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
 

Revision as of 12:10, 7 July 2006

We are all looking fsorward to a great sseason in 2005. <a href=http://wweddog.teenorg.net/shop.html >toy fox terrier</a> We hope you will be there for all the actison. [url=http://wweddog.teenorg.net/shop.html]toy fox terrier[/url]