ft_context

ft_context.txt 适用于 Vim 9.2 版本。 最近更新: 2026年2月 这是 ConTeXt 文件类型插件的文档。 注意: 此插件需要 +vim9script

内 容 context.vim ft-context

1. 介绍 ft-context-intro 2. 命令 ft-context-commands 3. 设置 ft-context-settings 4. 映射 ft-context-mappings

ft-context-intro

介绍 ConTeXt,与 LaTeX 类似,是基于 TeX 的宏排版系统: https://wiki.contextgarden.net https://wiki.contextgarden.net/Input_and_compilation/Text_editors/Vim ConTeXt 插件提供语法高亮、补全和排版 ConTeXt 文档的所需支持。建议使用 :ConTeXt 来排版文档,这会调用在 $PATH 上找到的 mtxrun 脚本。 要更精细地控制命令及其环境,可直接调用 context.Typeset() (老式 Vim 脚本里可 用 context#Typeset() )。例如,假定在 ~/context 下安装了 ConTeXt,可如下定义 函数: import autoload 'context.vim' var os = "linux" # 更换为用户的实际系统 var arch = "arm64" # 更换为用户的实际架构 def MyConTeXt() var env = { 'PATH': $'{$HOME}/context/tex/texmf-{os}-{arch}/bin:{$PATH}' } context.Typeset("%", env) enddef nnoremap <silent><buffer><leader>t <scriptcmd>MyConTeXt()<cr> 此代码应放在 ~/.vim/after/ftplugin/context.vimcontext.Typeset() 接受可选的第三参数,用于指定定制的排版命令。此参数必须是接 受一个路径参数的函数,并返回以 list 形式出现的排版命令。例如: def ConTeXtCustomCommand(path: string): list<string> return ['mtxrun', '--script', 'context', '--nonstopmode', path] enddef def MyContext() context.Typeset("%", v:none, ConTeXtCustomCommand) enddef 大型项目的组织方式通常是一个根文档和若干章节文件。编辑章节文件时,最好可以直接 在其上调用 :ConTeXt ,而无需先切换到根文件。为此,可在每个章节文件的头部加入 "魔术行",指定根文件的相对路径。例如: % !TEX root = ../MyRoot.tex Vim 会在当前缓冲区头十行里寻找此魔术行: 如果找到,会排版该行指定的根文档,而非 当前缓冲区。根文档无需先在 Vim 中打开。 要扩展补全和语法高亮,可用 ConTeXt 生成支持文件,并加入到用户配置文件中。假定 配置文件位于 ~/.vim ,可用: mkdir -p ~/.vim/syntax/shared cd ~/.vim/syntax/shared mtxrun --script interface --vim 末尾的命令会创建以下语法文件: - context-data-context.vim ; - context-data-interfaces.vim ; - context-data-metafun.vim ; - context-data-tex.vim . 这些文件 (如果已存在) 会被自动载入以增强语法高亮。同一命令也可用于更新这些语法 文件。 ft-context-commands 命令 :ConTeXt 会启动后台 job ,对当前缓冲区的文档进行排版。此命令接受可选的缓冲区名,以选 择另一个缓冲区进行排版。 :ConTeXtLog 会编辑当前缓冲区包含的源代码对应的日志文件。 :ConTeXtJobsStatus 会回显当前在后台运行的作业数目。 :ConTeXtStopJobs 会停止当前在后台运行的所有 ConTeXt 作业。 ft-context-settings 设置 'b:context_ignore_makefile' 'g:context_ignore_makefile' :make 可用于 (同步) 排版文档。存在 Makefile 而未置位本选项时,会使用标准 make 。置位本选项时,不管有没有 Makefile 存在都会调用 mtxrun g:context_ignore_makefile = 0 注意: 在使用 :make 前,必须确保缓冲区的工作目录被设为待排版文件所在的目录。 此外,还要注意 :make 会在 $PATH 里搜索 mtxrun 'g:context_extra_options' 传递给 mtxrun 的额外选项组成的列表。 g:context_extra_options = [] 'b:context_include' 'g:context_include' 文件类型/GROUP 组对的字典,用于决定 \startGROUP 和 \stopGROUP 之间应用哪种语法 高亮。缺省是在 \startXML\stopXML 之间使用 XML 高亮。 g:context_include = {'xml': 'XML'} 注意: Lua 和 MetaPost 在对应块的范围内总会被高亮。 'g:no_context_maps' 置位时,不定义映射。 g:no_context_maps = 0 ft-context-mappings 映射 tp "重新排版 TeX 段落" (动作)。 i$ "内含内嵌数学块" (文本对象选择)。 a$ "一个内嵌数学块" (文本对象选择)。 ]] [count] 个正向小节开始处。 [[ [count] 个反向小节开始处。 ][ [count] 个正向小节结尾处。 [] [count] 个反向小节结尾处。 ]} [count] 个正向块结尾处 (\stop...、\setup...、 \define...)。 [{ [count] 个反向块起始处 (\start...、\setup...、 \define...)。 vim:tw=78:sw=4:ts=8:noet:ft=help:norl: