Changes

Jump to navigation Jump to search
6,097 bytes added ,  06:57, 31 July 2023
m
< [[Text Editors]] | [[Related Programs]] >
httphttps://www.vim.org/
[[File:context-This page is about editing ConTeXt source in-vimVim, gVim, MacVim, and other Vim clones.The page describes the scripts available in Vim v8.0.0055 or later. If you are using Vim 7, see''Using the scripts with an older Vim'' below.png]]
Asciicast[https:<b>If you feel that something is missing, please contribute!<//asciinema.org/a/91111]b>
This page Information about providing feedback is about editing ConTeXt source in Vim, gVim, MacVim, NeoVim, and other Vim clones.The page describes the scripts available with Vim v8.0.0047 or later.If you are using an older Vim, you may copy header of the <tt>context.vim</tt> scripts from Vim's distribution (https://github.com/vim/vim) under the <tt>runtime</tt> directory, into correspondingfolders in your <tt>vim</tt> folder (so, for example <tt>ftplugin/context.vim</tt> must be copied into<tt>~/.vim/ftplugin/context.vim</tt>).Everything should work, at least with Vim 7.4.
== Using ConTeXt in Vim ==
Nikolai Weibull was the first one who wrote <tt>context.vim</tt> files and submitted them to the official Vim repository.
They are part of the official Vim 7, and were expanded and improved in Vim 8. Starting with Vim 9.0.0218, the scripts supporting ConTeXt in Vim have been rewritten in Vim 9 script (the new Vim's scripting language). For the complete documentation, see <tt>:help ft-context</tt>.
<b>If you feel that something is missing, please contribute!</b>=== Asciicast === [[File:context-in-vim.png]]
Information about providing feedback is This asciicast[https://asciinema.org/a/91111] gives you a taste of ConTeXt editing in the header of the scriptsVim.
=== Typesetting ===
The recommended way to typeset a ConTeXt document is to use the <tt>:ConTeXt</tt> command. Just type:
:ConTeXt%
to compile the document in the current buffer.
Typesetting happens in the background if you are using Vim 8.0.0047 or later,so you may continue working on your document. If there are errors, the quickfix window opens will open automaticallyto show the errors (one per line). The cursor stays will stay in the main document, so your typing workflow is will notbe disrupted. You may use standard quickfix commands to jump between errors: <tt>:cfirst</tt>, <tt>:cprev</tt>,
<tt>:cnext</tt>, etc… (see <tt>:help quickfix</tt>). See below for useful mappings for these commands.
You may check the status of your ConTeXt jobs with <tt>:ConTeXtJobStatus</tt>, and you may stop all
running jobs with <tt>:ConTeXtStopJobs</tt> . === Setting a custom typesetting engine === The <tt>:ConTeXt</tt> command invokes the <tt>mtxrun</tt> script that is found in <tt>$PATH</tt>. For more fine grained control over the command and its environment, you may invoke `context.Typeset()` directly (these commands are available only or `context#Typeset()` from legacy Vim script). For instance, if you have installed a version of ConTeXt in Vim 8<tt>$HOME/context</tt> (where <tt>$HOME</tt> is the path to your home directory), you may define a function to use it similar to the following (you may put the following code in <tt>~/.vim/after/ftplugin/context.vim</tt>, creating the file and the directories if they do not exist):  import autoload 'context.vim'  def MyConTeXt() const env = {'PATH': printf("%s/context/tex/texmf-<os>-<arch>/bin:%s", $HOME, $PATH)} context.Typeset("%", env) enddef and perhaps use it with a mapping:  nnoremap <silent><buffer><leader>t <scriptcmd>MyConTeXt()<cr> <tt>context.Typeset()</tt> accepts a third optional argument to specify a customtypesetting command.0That must be a function that takes a path and returns thecommand as a List.0047 or laterFor example:  def ConTeXtCustomCommand(path: string): list<string> return ['mtxrun', '--script', 'context', '--nonstopmode', path] enddef  context.ConTeXtTypeset("%", v:none, ConTeXtCustomCommand)
An alternative way to typeset a document is to use <tt>:make</tt>. Set the current workingdirectory to the directory of the current buffer, then execute <tt>:make</tt>: lcd /path/to/my/project :makeIf a <tt>Makefile</tt> exists in the working directory, it is used (see below for a sample Makefile).You may <tt>let g:context_ignore_makefile=1</tt> to ignore an existing Makefile.If no Makefile is found, <tt>mtxrun</tt> will be invoked directly.Note that <tt>:make</tt> always performs synchronous typesetting. Also, if there areerrors, the quickfix list is populated, but you have open it manually == Working with <tt>:copen</tt>.large projects ===
It is recommended that you map the above commandsLarge projects are often organized as a root document and various chapterfiles. For exampleWhen editing a chapter file, you may add nnoremap it is convenient to invoke <silent> <leader>tt :<c-u>update<cr>:ConTeXt<cr>to your <tt>.vimrc</tt>directly on it, or (better) nnoremap <buffer> <silent> <leader>tt :<c-u>update<cr>:ConTeXt<cr>rather than having to switch to <tt>~/the root file.vim/after/ftplugin/context.vim</tt>A “magic line”can be added at the beginning of each chapter file, after which pressing <tt>\tt</tt> (where <tt>\</tt> is your leader key)specifies thewill save and compile relative path to the root file.For instance:
You may customize the path to the <tt>mtxrun</tt> executable by setting <tt>g:context_mtxrun</tt>.For example, if you want to use your ConTeXt Beta installation at <tt>~/Applications/ConTeXt-Beta</tt>,and you are using macOS, you may set the variable as follows: let g:context_mtxrun % !TEX root = 'PATH=$HOME/Applications/ConTeXt-Beta../MyRoot.tex/texmf-osx-64/bin:$PATH mtxrun'
You may enable synctex by setting <tt>gVim searches for the magic line in the first ten lines of the current buffer:context_synctex</tt> to <tt>1</tt> (if the default magic line is <tt>0</tt>):found, the document specified by that line is typeset rather than theone in the current buffer. The root document does not have to be opened in let g:context_synctex = 1Vim.
You may pass === Updating the syntax files === Vim includes syntax files generated by <tt>mtxrun</tt> additional options by putting them . If you want to use more up-to-date files, overriding those distributed with Vim, you may proceed as follows. Assuming your Vim configuration lives in <tt>g:context_extra_options~/.vim</tt>., you may type:For example: let g:context_extra_options = 'mkdir --arrange --autopdf'p ~/.vim/syntax/sharedThe <tt>--autogenerate< cd ~/.vim/syntax/tt>, <tt>shared mtxrun --nonstopmode</tt> and <tt>script interface --synctex</tt> options are always included in thevim The last command.will create the following syntax files:
Finally, for each of the above variables, a corresponding buffer* <tt>context-local variable with the same namedata-context.vim</tt>;may be defined, whose value takes precedence over the global value* <tt>context-data-interfaces.vim</tt>;* <tt>context-data-metafun.vim</tt>;* <tt>context-data-tex.vim</tt>.
=== Editing features ===
If you have enabled the <tt>matchit</tt> plugin included in Vim (see <tt>:help matchit</tt>), you may also
type <tt>%</tt> to jump between the start matching <tt>\start…</tt> and the stop of a command<tt>\stop…</tt> commands, or between matching parentheses.
You may jump to a different file by positioning the cursor over the file name and typing <tt>gf</tt> (<tt>:help gf</tt>).
putting the cursor over <tt>my_component</tt> and pressing <tt>gf</tt> will open <tt>my_component.tex</tt>.
Vim searches for files in the locations specified by the <tt>path</tt> option (this is a Vim feature). You likelyhave to change the value of <tt>path</tt> for the above to work. Similarly, you may use <tt>[<c-i></tt> (this is square bracket followed by ctrl-i)to jump to the definition of the word under the cursor (even if it is in a different
file), or <tt>[i</tt> to display the (first line of the) definition under the status line. For these and similar commands,
see <tt>:help include-search</tt>.
Vim searches for files in the locations specified by the <tt>path</tt> option. You may
need to adjust the value of <tt>path</tt> for the above to work (see <tt>:help 'path'</tt>).
=== Integration with MetaPost ===
Vim offers excellent support for editing METAFONT and MetaPost documents (<tt>mf</tt> and <tt>mp</tt> filetypes).
See <tt>:help ft-metapost</tt> for the details.
Most of the features of such filetypes work also inside ConTeXt's MetaPost environments,
such as <tt>\startMPpage… \stopMPpage</tt>.
Besides, when you are inside a MetaPost environment, you may press CTRL-X followed by CTRL-O
to complete a MetaPost/MetaFun keyword (see below for a list of several autocompletion plugins to streamline this).
This works out of the box: no configuration is required. Watch the asciicast above for a demo.
=== Integration with other languages ===
The key is the name of the filetype and the corresponding value is name of the command.
=== TODO === * Extract data from texweb and create syntax highlighting definitions for ConTeXt.* Some essential math support.* Proper URL highlighting ('%' doesn't start a comment, ...) [request by VnPenguin].* Perhaps borrow something from https://github.com/lervag/vimtex or http://vim-latex.sourceforge.net/? == Other useful Vim plugins == === Autocompletion === Vim offers a rich completion mechanism (<tt>:help ins-completion</tt>), but there are several pluginsthat improve on it, in particular, to provide automatic completion of keywords: * µcomplete[https://github.com/lifepillar/vim-mucomplete]* Completor[https://github.com/maralla/completor.vim]* NeoComplete[https://github.com/Shougo/neocomplete.vim]* Deoplete (for NeoVim)[https://github.com/Shougo/deoplete.nvim]* YouCompleteMe[https://github.com/Valloric/YouCompleteMe]* AutoComplPop[https://github.com/vim-Using the scripts/AutoComplPop]* SuperTab[https://github.com/ervandew/supertab] The asciicast at the top of this page uses µcomplete. === Snippets === with an older Vim allows you to define abbreviations for frequently used pieces of text (see <tt>:help abbreviations</tt>).If you need more sophisticated support for snippets of code, UltiSnips[https://github.com/SirVer/ultisnips]is the plugin to use. Here are a few examples of useful UltiSnips snippets for ConTeXt:  snippet "s(tart)?" "start / stop" br \start${1:something}$2 ${3:${VISUAL}} \stop$1 endsnippet snippet enum "Enumerate" b \startitemize[n] \item ${0:${VISUAL}} \stopitemize endsnippet snippet item "Itemize" b \startitemize \item ${0:${VISUAL}} \stopitemize endsnippet snippet it "Individual item" b \item ${0:${VISUAL}} endsnippet snippet fig "External figure" b \startplacefigure \externalfigure[${1:${VISUAL}}][$2] \stopplacefigure endsnippet Save the above text into <tt>~/.vim/UltiSnips/context.snippets</tt>. Click on the asciicast linked at the top of this document to see UltiSnips snippets in action. === Outline of a document === Tagbar[https://github.com/majutsushi/tagbar] is a useful plugin to display an outline or a table of contents of a document.It uses Ctags, which you must install, too. Ctags does not support ConTeXt directly, but it is easy to extend.Create a <tt>.ctags</tt> file in your home directory, then copy and paste the following:
--langdef=contextIf you are using an older Vim, you may copy the following scripts from Vim's distribution --regex-context=(https:/^[[:space:]]*\\startsection[[:space:]]*\[[^]]*title[[:space:]]*=[[:space:]]*\{[[:space:]]*(.+)\}/\github. \1com/s,sectionvim/vim) into corresponding --regex-context=folders in your <tt>.vim</^[[:space:]]*\\startsubsection[[:space:]]*\[[^]]*title[[:space:]]*=[[:space:]]*\{[[:space:]]*tt> folder (.+)\}so, for example <tt>runtime/\.\. \1ftplugin/s,subsection/ --regex-context=/^[[:space:]]*\\startsubsubsection[[:space:]]*\[[^]]*title[[:space:]]*=[[:space:]]*\{[[:space:]]*(.+)\}/\.\.\. \1/s,subsubsectionvim</tt> must be copied into --regex-context=<tt>~/^[[:space:]]*\\startchapter[[:space:]]*\[[^]]*title[[:space:]]*=[[:space:]]*\{[[:space:]]*(.+)\}vim/\1ftplugin/c,chapter/ --regex-context=.vim</^[[:space:]]*\\startsubject[[:space:]]*\[[^]]*title[[:space:]]*=[[:space:]]*\{[[:space:]]*(.+tt>)\}/SUBJ \1/c,subject/ --regex-context=/^[[:space:]]*\\startpart[[:space:]]*\[[^]]*title[[:space:]]*=[[:space:]]*\{[[:space:]]*(.+)\}/\1/p,part/
Put this in your <tt>vimrc< runtime/tt>:autoload/context.vim runtime/autoload/contextcomplete.vim let g:tagbar_type_context = runtime/compiler/context.vim runtime/ftplugin/{context,mf,mp}.vim \ 'ctagstype': ' runtime/indent/{context', \ 'kinds': [ \ 'p:parts'mf,mp}.vim \ 'c:chapters' runtime/syntax/{context, \ 's:sections' \ ]mf, \ 'sort': 0 \ mp}.vim
That's it! See <b>Note:</b> the image at runtime scripts in Vim 9.0.0218 or later are written in Vim 9 script (the top new scripting language embedded in Vim) and there is no guarantee that they will work with older versions of this document for an example.Vim!
=== Using LaTeX-Suite ===If you get the following error when you open a ConTeXt or MetaPost document:
[http E410://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 documentsInvalid :syntax subcommand: iskeyword
1. After downloading edit the syntax files and installing latex-suite, locate remove the file "texrc" (usually located in <codett>~syn iskeyword</.vim/ftplugin/latex-suitett> or <tt>syntax iskeyword</codett>)line. Copy this file to Instead, put a corresponding command in <codett>~/.vim/after/ftplugin/tex/texrccontext.vim</codett>:
2. Open this copy in your favorite editor (vim comes to mind...) setlocal iskeyword=@,48-57,a-z,A-Z,192-255
3and in <tt>~/. After line 80 in this file, there is a series of "Compiler rulesvim/after/ftplugin/mp." Just add this line to the sectionvim</tt> for MetaPost:
TexLet g:Tex_CompileRule_cont setlocal iskeyword= 'texexec --pdf --nonstopmode $*'@,_
This will add compilation for ConTeXTEverything should work, at least with Vim 7.4. In order to use it:
4. When you're in vim normal mode, run this command:=== TODO ===
TGTarget cont * Some essential math support.* Proper URL highlighting ('%' doesn't start a comment, ...) [that's "colon TGTarger cont"request by VnPenguin] .* Perhaps borrow something from https://github.com/lervag/vimtex or http://vim-latex.sourceforge.net/?
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'  == A note on filetype Filetype detection ==
TeX (Plain TeX), LaTex and ConTeXt all use the <tt>.tex</tt> 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 <tt>plaintex</tt> or <tt>latex</tt> or <tt>context</tt>.
Currently no other formats are recognized.
* If you use ConTeXt most of the time, but occasionally use LaTeX or Plain TeX, you can add the following to your <tt>.vimrc</tt>
let g:tex_flavor = "context"
* If you only use ConTeXt, you can add the following lines to <tt>filetype.vim</tt>:
so the next time you open a <tt>*.tex</tt> file, Vim will always recognize it as a ConTeXt document.
== A note on spell Spell checking ==
Vim 7 or later has a built-in spell checker. To enable it or disable it, use:
Use lowercase letters (<tt>en_us</tt>, not <tt>en_US</tt>). When you set <tt>spelllang</tt>, Vim offers to
download the language data into your <tt>.vim</tt> folder, if such language is not available.
You can put the above settings in your <tt>.vimrc</tt> if you like.
== Powerful key mappings ==
the prefix for user-defined mappings.
By default, the leader is the backslash character, but that may be changed by the user.
For example, to use a comma as a leader, put this in your <tt>.vimrc</tt>:
map <leader> ,
Rather than overriding the default leader, you may define an alternative key. The <tt><space></tt> is a good
choice, because by default it has the same function as the <tt><right></tt> key, and it is comfortable to type:
map <space> <leader> " Use <space> as an alternative leader (backslash can still be used)
 
=== Clean up auxiliary files ===
 
The following function can be used to clean up temporary files:
fun! ConTeXtClean()
let l:currdir = expand("%:p:h")
let l:tmpdirs = ['out'] " Temporary directories
let l:suffixes = ['aux', 'bbl', 'blg', 'fls', 'log', 'tuc'] " Suffixes of temporary files
for ff in glob(l:currdir . '/*.{' . join(l:suffixes, ',') . '}', 1, 1)
call delete(ff)
endfor
for dd in l:tmpdirs
let l:subdir = l:currdir . '/' . dd
if isdirectory(l:subdir)
for ff in glob(l:subdir . '/*.{' . join(l:suffixes, ',') . '}', 1, 1)
call delete(ff)
endfor
endif
call delete(l:subdir) " Delete directory (only if empty)
endfor
echomsg "Aux files removed"
endf
Customize <tt>l:tmpdirs</tt> and <tt>l:suffixes</tt> to suit your needs.
In Windows systems, you may have to replace each slash with a backslash, too.
 
The following mapping allows you to remove auxiliary files by pressing <tt>\tc</tt>:
nnoremap <silent><buffer> <leader>tc :<c-u>call ConTeXtClean()<cr>
 
=== Snippets ===
 
Vim allows you to define abbreviations for frequently used pieces of text (see <tt>:help abbreviations</tt>).
Here are a few examples:
<pre>
fun! Eatchar(pat) " See :help abbreviations
let c = nr2char(getchar(0))
return (c =~ a:pat) ? '' : c
endfun
 
iab <buffer> ch- \startchapter[title={<c-o>ma}]<cr><c-o>mb<cr>\stopchapter<esc>`a`b<c-o>a<c-r>=Eatchar('\s')<cr>
iab <buffer> s- \startsection[title={<c-o>ma}]<cr><c-o>mb<cr>\stopsection<esc>`a`b<c-o>a<c-r>=Eatchar('\s')<cr>
iab <buffer> ss- \startsubsection[title={<c-o>ma}]<cr><c-o>mb<cr>\stopsubsection<esc>`a`b<c-o>a<c-r>=Eatchar('\s')<cr>
iab <buffer> sss- \startsubsubsection[title={<c-o>ma}]<cr><c-o>mb<cr>\stopsubsubsection<esc>`a`b<c-o>a<c-r>=Eatchar('\s')<cr>
iab <buffer> slide- \startslide[title={<c-o>ma}]<cr><c-o>mb<cr>\stopslide<esc>`a`b<c-o>a<c-r>=Eatchar('\s')<cr>
iab <buffer> fig- \startplacefigure<cr><tab>\externalfigure[<c-o>ma]%<cr>[]<c-o>mb<cr><c-d>\stopplacefigure<esc>`a`b<c-o>a<c-r>=Eatchar('\s')<cr>
iab <buffer> item- \startitemize<cr><cr>\stopitemize<up><tab>\item
iab <buffer> enum- \startitemize[n]<cr><cr>\stopitemize<up><tab>\item
iab <buffer> i- \item
</pre>
 
Type the abbreviation followed by Space to expand the snippet, then continue typing normally.
 
Inside the definition of an abbreviation, marks may be set (see <tt>:h m</tt>), which allow you to jump between the different
parts of a snippet with TAB (CTRL-i) and CTRL-O (in Normal mode) after the abbreviation is expanded (see <tt>:h jump-motions</tt>).
For example, after typing <tt>ch- </tt>, the cursor will be at the title's position. If you press <tt><esc><tab></tt> (or
<tt><c-o><tab></tt> if you want to stay in Insert mode after the jump), you will jump between <tt>\startchapter</tt>
and <tt>\stopchapter</tt>.
=== Buffer-local Insert-mode macros to speed up editing ===
You can reset the key mapping to speed ConTeXt compiling.
Just add the following code to your <tt>_vimrc</t>tt> (or <tt>.vimrc</tt> file under Linux) file:
<pre>
"run setup and complie, then open the result pdf file
"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>
nnoremap <silent> ]q :<c-u><c-r>=v:count1<cr>cnext<cr>zz
nnoremap <silent> [q :<c-u><c-r>=v:count1<cr>cprevious<cr>zz
nnoremap <silent> ]Q :<c-u>clast<cr>zz
nnoremap <silent> [Q :<c-u>cfirst<cr>zz
Or install Tim Pope's <i>unimpaired</i> plugin.
rm *.aux *.bbl *.blg *.log *.tuc
If you put these mappings to your <code>.vimrc</code> file, you can than then compile the document with F9 and preview it with F8:
" map ":make" to the F9 key
nmap <F8> :exe "lcd" fnameescape(expand("%:p:h"))<CR>:make test<CR>
Note that if you use <tt>:make</tt> typesetting will happen synchronously.
 
== Other useful Vim plugins ==
 
=== Autocompletion ===
 
Vim offers a rich completion mechanism (<tt>:help ins-completion</tt>), but there are several plugins
that improve on it, in particular, to provide automatic completion of keywords:
 
* MUcomplete[https://github.com/lifepillar/vim-mucomplete]
* Coc [https://github.com/neoclide/coc.nvim].
* Completor[https://github.com/maralla/completor.vim]
* NeoComplete[https://github.com/Shougo/neocomplete.vim]
* Deoplete (for NeoVim)[https://github.com/Shougo/deoplete.nvim]
* YouCompleteMe[https://github.com/Valloric/YouCompleteMe]
* AutoComplPop[https://github.com/vim-scripts/AutoComplPop]
* SuperTab[https://github.com/ervandew/supertab]
 
In the asciicast at the top of this page MUcomplete was used.
 
=== UltiSnips ===
 
UltiSnips[https://github.com/SirVer/ultisnips] is a sophisticated snippets manager.
Here are a few examples of useful UltiSnips snippets for ConTeXt:
 
snippet "s(tart)?" "start / stop" br
\start${1:something}$2
${3:${VISUAL}}
\stop$1
endsnippet
snippet enum "Enumerate" b
\startitemize[n]
\item ${0:${VISUAL}}
\stopitemize
endsnippet
snippet item "Itemize" b
\startitemize
\item
${0:${VISUAL}}
\stopitemize
endsnippet
snippet it "Individual item" b
\item
${0:${VISUAL}}
endsnippet
snippet fig "External figure" b
\startplacefigure
\externalfigure[${1:${VISUAL}}][$2]
\stopplacefigure
endsnippet
Save the above text into <tt>~/.vim/UltiSnips/context.snippets</tt>.
Click on the asciicast linked at the top of this document to see UltiSnips snippets in action.
 
=== Outline of a document ===
 
Tagbar[https://github.com/majutsushi/tagbar] is a useful plugin to display an outline or a table of contents of a document.
It uses Ctags, which you must install, too. Ctags does not support ConTeXt out of the box, but it is easy to extend.
Create a <tt>.ctags</tt> file in your home directory, then copy and paste the following:
 
--langdef=context
--regex-context=/^<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\\startsection<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\<nowiki>[[</nowiki>^<nowiki>]]</nowiki>*title<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*=<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\{<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*(.+)\}/\. \1/s,section/
--regex-context=/^<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\\startsubsection<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\<nowiki>[[</nowiki>^<nowiki>]]</nowiki>*title<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*=<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\{<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*(.+)\}/\.\. \1/s,subsection/
--regex-context=/^<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\\startsubsubsection<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\<nowiki>[[</nowiki>^<nowiki>]]</nowiki>*title<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*=<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\{<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*(.+)\}/\.\.\. \1/s,subsubsection/
--regex-context=/^<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\\startchapter<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\<nowiki>[[</nowiki>^<nowiki>]]</nowiki>*title<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*=<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\{<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*(.+)\}/\1/c,chapter/
--regex-context=/^<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\\startsubject<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\<nowiki>[[</nowiki>^<nowiki>]]</nowiki>*title<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*=<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\{<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*(.+)\}/SUBJ \1/c,subject/
--regex-context=/^<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\\startpart<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\<nowiki>[[</nowiki>^<nowiki>]]</nowiki>*title<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*=<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*\{<nowiki>[[</nowiki>:space:<nowiki>]]</nowiki>*(.+)\}/\1/p,part/
 
Put this in your <tt>vimrc</tt>:
let g:tagbar_type_context = {
\ 'ctagstype': 'context',
\ 'kinds': [
\ 'p:parts',
\ 'c:chapters',
\ 's:sections'
\ ],
\ 'sort': 0
\ }
 
That's it! See the image at the top of this document for an example.
 
=== 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'
{{Installation navbox}}
[[Category:Text Editors]]

Navigation menu