Changes

Jump to navigation Jump to search
9,620 bytes added ,  06:57, 31 July 2023
m
< [[Text Editors]] | [[Related Programs]] >
httphttps://www.vim.org/
This page is about editing ConTeXt source in Vim, gVim, MacVim, NeoVim, and other Vim clones. Some of The page describes the described features are scripts available only in Vim v8.0.0047 0055 or later: they will be noted . If you are using Vim 7, see''Using the scripts with an older Vim'' below.
== A note on filetype detection ==<b>If you feel that something is missing, please contribute!</b>
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 Information about providing feedback is <tt>plaintex</tt> or <tt>latex</tt> or <tt>context</tt>. If in the first line header of a <tt>*.tex</tt> file has the form %&<format>then this determines the file type: <tt>plaintex</tt> (for Plain TeX), <tt>context</tt> (forConTeXt), or <tt>tex</tt> (for LaTeX). Otherwise, the file is searched for keywords tochoose <tt>context</tt> or <tt>tex</tt>. If no keywords are found, it defaults to <tt>plaintex</tt>.You can change the default by defining the variable <tt>g:tex_flavor</tt> 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 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>: " ConTeXt augroup filetypedetect au! BufRead,BufNewFile *.tex setfiletype context augroup ENDso the next time you open a <tt>*.tex</tt> file, Vim will always recognize it as a ConTeXt document. == A note on spell checking == Vim 7 or later has a built-in spell checker. To enable it or disable it, use: :set spellor :set nospellrespectively.To set the language to be used for spell checking, set the <tt>spelllang</tt> option accordingly. For example: :set spelllang=en_usUse lowercase letters (<tt>en_us</tt>, not <tt>en_US</tt>). When you set <tt>spelllang</tt>, Vim offers todownload 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 likescripts.
== 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 typeset 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 error 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>). It is See below for useful to add mappings for these commands. For example: 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>zzOr install Tim Pope's <i>unimpaired</i> plugin.
If your document is typeset without errors, <tt>Success!</tt> is printed at the bottom of the screen.
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) === Working with large projects ===
An alternative way to typeset Large projects are often organized as a root document and various chapterfiles. When editing a chapter file, it is convenient to use invoke <tt>:makeConTeXt</tt>. Make sure that the current workingdirectory is set directly on it, rather than having to the path switch to the root file you want to compile (set with <tt>:lcd …</tt>), and type:. A “magic line” :makeIf a <tt>Makefile</tt> is present in can be added at the working directorybeginning of each chapter file, it will be used (you maywhich specifies the<tt>let g:context_ignore_makefile=1</tt> relative path to ignore it). Otherwise, <tt>mtxrun</tt> willbe invoked directlythe root file. Note that <tt>For instance:make</tt> always performs synchronous typesetting. Also, if there areerrors, the quickfix list is populated, but you have open it manually with <tt>:copen</tt>.
It is recommended that you map the above commands % !TEX root = . For example, you may add nnoremap <silent> <leader>tt :<c-u>update<cr>:ConTeXt<cr>to your <tt>.vimrc</tt>, or (better) nnoremap <buffer> <silent> <leader>tt :<c-u>update<cr>:ConTeXt<cr>to <tt>~/.vim/after/ftplugin/context.vim</tt>, after which pressing <tt>\tt</tt> (where <tt>\</tt> is your leader key) will save (if necessary) and compile the fileMyRoot.tex
You may customize Vim searches for the path to magic line in the first ten lines of the <tt>mtxrun</tt> executable by setting <tt>gcurrent buffer:context_mtxrun</tt>.For example, if you want to use your ConTeXt Beta installation at <tt>~/Applications/ConTeXt-Beta</tt>the magic line is found,the document specified by that line is typeset rather than theand you are using macOS, you may set one in the variable as follows:current buffer. The root document does not have to be opened in let g:context_mtxrun = 'PATH=$HOME/Applications/ConTeXt-Beta/tex/texmf-osx-64/bin:$PATH mtxrun'Vim.
You may decide whether to use synctex or not by setting === Updating the <tt>g:context_synctex</tt> flag to <tt>1</tt> or <tt>0</tt>,respectively. For example: let g:context_synctex syntax files === 1
You may pass 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 name may be defined,data-context.vim</tt>;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 ===
You may use the following commands to quickly jump to different parts of your document:
* <tt>[[</tt>: jump to the previous start of subject/, section/, chapter/, part/, component/, or product;* <tt>]]</tt>: jump to the next start of subject/, section/, chapter/, part/, component/, or product;
* <tt>[]</tt>: jump to the previous end of section, chapter, etc…;
* <tt>][</tt>: jump to the next end of section, chapter, etc…;
* <tt>[{</tt>: jump to the previous <tt>\start…</tt> or <tt>\setup…</tt> command;
* <tt>]}</tt>: jump to the next <tt>\stop…</tt> or <tt>/\setup…</tt> command;
Each of the above accepts an optional count. For example, you may type <tt>3[{</tt> to jump
So, for example, you may copy (“yank” in Vim's jargon) a paragraph by typing <tt>ytp</tt> (“yank a TeX
paragraph“), delete it with <tt>dtp</tt>, select it with <tt>vtp</tt> and so on. In particular, you may reflowa paragraph it with <tt>gqtp</tt> (see <tt>:help gq</tt>)., etc…
Similarly, you may yank a formula with <tt>vi$</tt> (or <tt>va$</tt>), and delete it, select it, etc…, in a
similar fashion.
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>.
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 differentfile), 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 (this is a Vim feature). You may likelyhave need to change 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>.
 
In particular, Vim automatically highlights and indents MetaPost and MetaFun code inside a ConTeXt document.
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 ===
Lua syntax highlighting is used inside <tt>\directlua{}</tt>, and <tt>\ctxlua{}</tt> commands,and inside <tt>\startluacode… \stopluacode</tt>. XML highlighting is used inside <tt>\startXML… \stopXML</tt>.
You may embed other filetypes. Just define <tt>g:context_include</tt> (or <tt>b:context_include</tt> for
define:
let g:context_include = { 'cpp' : 'CPP' }
The key is the name of the filetype and the corresponding value if is name of the command.
=== Using the scripts with an older Vim ===
== Other useful If you are using an older Vim, you may copy the following scripts from Vim's distribution (https://github.com/vim plugins ==/vim) into correspondingfolders in your <tt>.vim</tt> folder (so, for example <tt>runtime/ftplugin/context.vim</tt> must be copied into<tt>~/.vim/ftplugin/context.vim</tt>):
* autocomplete: http: runtime/autoload/context.vim runtime/autoload/contextcomplete.sourceforgevim runtime/compiler/context.netvim runtime/scriptsftplugin/{context,mf,mp}.vim runtime/indent/script{context,mf,mp}.php?script_id=182vim runtime/syntax/{context, almost undocumentedmf, but life-savingmp}.vim <b>Note:</b> the runtime scripts in Vim 9.0.0218 or later are written in Vim 9 script (the new scripting language embedded in Vim) and there is no guarantee that they will work with older versions of Vim! If you get the following error when you open a ConTeXt or MetaPost document: * spell-checker E410: Invalid : httpsyntax subcommand:iskeyword edit the syntax files and remove the <tt>syn iskeyword</tt> or <tt>syntax iskeyword</tt> line.Instead, put a corresponding command in <tt>~/www.vim.org/scriptsafter/ftplugin/scriptcontext.php?script_idvim</tt>:  setlocal iskeyword=499@,48-57,a-z,A-Z, but native spell192-checking support is included 255 and in <tt>~/.vim/after/ftplugin/mp.vim</tt> for MetaPost:  setlocal iskeyword=@,_ Everything should work, at least with Vim 7 (see above).4.
=== TODO ===
* extract data from texweb and create syntax highlighting definitions for ConTeXt* some Some essential math support.* proper Proper URL highlighting ('%' doesn't start a comment, ...) [request by VnPenguin].* perhaps Perhaps borrow something from https://github.com/lervag/vimtex or http://vim-latex.sourceforge.net/? == 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>. If the first line of a <tt>*.tex</tt> file has the form %&<format>then this determines the file type: <tt>plaintex</tt> (for Plain TeX), <tt>context</tt> (forConTeXt), or <tt>tex</tt> (for LaTeX). Otherwise, the file is searched for keywords tochoose <tt>context</tt> or <tt>tex</tt>. If no keywords are found, it defaults to <tt>plaintex</tt>.You can change the default by defining the variable <tt>g:tex_flavor</tt> 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 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>: " ConTeXt augroup filetypedetect au! BufRead,BufNewFile *.tex setfiletype context augroup ENDso the next time you open a <tt>*.tex</tt> file, Vim will always recognize it as a ConTeXt document. == Spell checking ==
== using latexVim 7 or later has a built-suite =in spell checker. To enable it or disable it, use: :set spellor :set nospellrespectively.To set the language to be used for spell checking, set the <tt>spelllang</tt> option accordingly. For example: :set spelllang=en_usUse lowercase letters (<tt>en_us</tt>, not <tt>en_US</tt>). When you set <tt>spelllang</tt>, Vim offers todownload 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.
[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:== Powerful key mappings ==
1. After downloading and installing latex-suiteIn the following, locate the file "texrc" <tt><leader></tt> denotes your “leader” (usually located in <codett>~/.vim/ftplugin/latex-suite:help mapleader</codett>), that is,the prefix for user-defined mappings. Copy 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 file to in your <codett>~vimrc</tt>: map <leader> ,Rather than overriding the default leader, you may define an alternative key.vimThe <tt><space></ftplugintt> is a goodchoice, because by default it has the same function as the <tt><right></tex/texrctt> key, and it is comfortable to type: map <space> <leader> " Use </codespace>as an alternative leader (backslash can still be used)
2. Open this copy in your favorite editor (vim comes to mind...)=== Clean up auxiliary files ===
3The 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, ',') . After line 80 '}', 1, 1) call delete(ff) endfor for dd in this filel:tmpdirs let l:subdir = l:currdir . '/' . dd if isdirectory(l:subdir) for ff in glob(l:subdir . '/*.{' . join(l:suffixes, ',') . '}', 1, there is a series of 1) call delete(ff) endfor endif call delete(l:subdir) " Delete directory (only if empty) endfor echomsg "Aux files removed"Compiler rules endfCustomize <tt>l:tmpdirs</tt> and <tt>l:suffixes</tt> to suit your needs." Just add this line In Windows systems, you may have to the section:replace each slash with a backslash, too.
The following mapping allows you to remove auxiliary files by pressing <tt>\tc</tt>: TexLet gnnoremap <silent><buffer> <leader>tc :Tex_CompileRule_cont = 'texexec --pdf -<c-nonstopmode $*'u>call ConTeXtClean()<cr>
This will add compilation for ConTeXT. In order to use it:=== Snippets ===
4Vim allows you to define abbreviations for frequently used pieces of text (see <tt>:help abbreviations</tt>). When youHere are a few examples:<pre>fun! Eatchar(pat) " See :help abbreviations let c = nr2char(getchar(0)) return (c =~ a:pat) ? ''re in vim normal mode, run this command:cendfun
TGTarget cont iab <buffer> ch- \startchapter[thattitle={<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 "colon TGTarger cont"')<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>\itemiab <buffer> enum- \startitemize[n] <cr><cr>\stopitemize<up><tab>\itemiab <buffer> i- \item</pre>
5. Edit your TeX-files, save Type the changes; when you want abbreviation followed by Space to compileexpand the snippet, switch to normal mode and just type <code>\ll</code> (that's '' 'backslash el el' '')then continue typing normally.
VoilaInside the definition of an abbreviation, marks may be set (see <tt>:h m</tt>), compilation should start. You'll have which allow you to specify this compiler target every timeI you open jump between the differentparts of a TeXsnippet with TAB (CTRL-file i) and CTRL-O (in VimNormal 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 make this stay in Insert mode after the default compilerjump), you should have this line in your texrc:will jump between <tt>\startchapter</tt>and <tt>\stopchapter</tt>.
TexLet g:Tex_DefaultTargetFormat = 'cont' == Buffer-local Insert-mode macros to speed up editing ===
== Powerful key mappings ==(By [[User:David antos|D.A.]] 19:52, 8 Jul 2005 (CEST))
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
</pre>
==key = Key mappings borrowed from sciteSciTE ===If you use the stand-alone distribution for windows/Linux.You can reset the key mappingto speed ConTeXt compiling.
just 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 <tt>_vimrc</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>
=== Quickfix mappings === It is useful to define mappings for quickfix commands, to be able to navigate among ConTeXt errors.For example: 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>zzOr install Tim Pope's <i>unimpaired</prei>plugin.
== Makefile Makefiles ==
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 context paper
test:
clean:
rm *.bbl aux *.dvi bbl *.aux blg *.log *.blgtuc
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
imap <F9> <ESC>:exe "lcd" fnameescape(expand("%:p:h"))<CR>:make<CR> nmap <F9> :exe "lcd" fnameescape(expand("%:p:h"))<CR> :make<CR>
"map ":make test" to the F8 key
imap <F8> <ESC>:exe "lcd" fnameescape(expand("%:p:h"))<CR>:make test<CR> 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 pluginsthat 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 ===
== MetaPost extension ==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:
Should highlight the syntax between --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>*\{<codenowiki>btex[[</verbatimtexnowiki>:space:<nowiki>]]</codenowiki> *(.+)\}/\.\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:<codenowiki>etex]]</codenowiki>*\<nowiki> as TeX[[</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/
This doesnPut this in your <tt>vimrc</tt>: let g:tagbar_type_context = { \ 'ctagstype': 'context', \ 'kinds't work 100% (problems with commands inside comments): If anyone knows how to repair that[ \ 'p:parts', please do so. It would be nice if this would have landed in the official metapost syntax highlighting script for vim one day. \ 'c:chapters', \ 's:sections' \ ], \ 'sort': 0 \ }
unlet bThat'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:current_syntax syn include @texTop syntax1. 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 (vimcomes to mind...) 3. After line 80 in this file, there is a series of "Compiler rules." Just add this line to the section:  " MetaPost has TeX inserts TexLet g:Tex_CompileRule_cont = 'texexec --pdf --nonstopmode $*' This will add compilation for typeset labelsConTeXT. In order to use it: 4. When you're in vim normal mode, run this command:  TGTarget cont [that's " verbatimtexcolon TGTarger cont"]  5. Edit your TeX-files, btexsave the changes; when you want to compile, switch to normal mode and etex will be treated as keywords syn match mpTeXbegin "just type <code>\ll</code> (verbatimtex\|btex\that's '' 'backslash el el' '')" syn match mpTeXend "etex" syn region mpTeXinsert Voila, compilation should start="\(verbatimtex\|btex\)"hs=e+1 end="etex"he=s. You'll have to specify this compiler target every timeI you open a TeX-1 \file in Vim. If you want to make this the default compiler, you should have this line in your texrc:  contains=@texTop,mpTeXbegin,mpTeXend containedin TexLet g:Tex_DefaultTargetFormat =ALL keepend'cont'
{{Installation navbox}}
[[Category:Text Editors]]

Navigation menu