This is a Vim plugin.
这是一个 VIM 插件。
一些您需要知道的问题:这个插件仅支持类 Unix 系统。
当你的文件名包含空格时,耗子尾汁吧。
这个插件仍在开发中,可能包含一些神秘小 Bug.
这个插件用于为 OIer 提供更方便的 VIM 使用体验,其功能如下:
- 一键编译运行(已实现,现支持 C/C++ 以及 Python)
- 一键评测样例(基于 Competitive Companion,已完成)
- 一键编译并调试(如果你使用默认设置,需要 Insight 的支持)
使用这个插件是极其简单的,在插件列表中加入该插件即可。可喜可贺的是,这个插件目前已经支持了近乎所有的插件管理器。
如果你使用的是 vim-plug,你可以在 .vimrc
键入以下内容:
call plug#begin('~/.vim/plugged')
Plug 'lixuannan/VOIM'
call plug#end()
然后在 vim 中输入命令 :PlugInstall
。要更新插件,请在 vim 中输入命令 :PlugUpdate
。
由于插件的特殊性,无论你使用的是什么插件管理器,你都需要在使用对应插件的更新命令的同时使用 :UpdateVOIM
命令来更新 VOIM 的必要运行组件。
我们定义了一个一键编译运行的命令 :RunCode
,以及一键评测样例的命令 :JudgeCode
,同时还有一个一键调试的命令 :DebugCode
。如果你要自定义快捷键,可以在 .vimrc
中这样写:
"设置全局的快捷键,其中 % 为当前文件的文件名
map <F5> :RunCode %<CR>
"设置插入模式的快捷键
imap <F5> <esc> :RunCode %<CR>
"设置选择模式的快捷键
vmap <F5> <esc> :RunCode %<CR>
map <F6> :JudgeCode %<CR>
imap <F6> <esc> :JudgeCode %<CR>
vmap <F6> <esc> :JudgeCode %<CR>
map <F7> :DebugCode %<CR>
imap <F7> <esc> :DebugCode %<CR>
vmap <F7> <esc> :DebugCode %<CR>
在最新版本的插件中,我们支持自定义编译器以及编译参数,你可以在用户的 HOME
目录中创建文件 .VOIM.conf
并写下配置。下面展示的文件为默认配置:
# C 语言编译器
C_COMPILER = "gcc"
# C++ 编译器
CPP_COMPILER = "g++"
# Python 解释器
PYTHON_INTERPRETER = "python"
# C 编译选项
C_ARGV = "-Wextra -g -lm"
# C++ 编译选项
CPP_ARGV = "-Wextra -g"
# 默认调试器
DEBUGGER = "insight"
如果你得到报错 Unsupport filetype detected, run failed
但是你的代码后缀名没有问题,请你检查你的光标是否在你需要的文件上。
如果你的文件没有问题,那么当你按下配置的快捷键或者输入命令 :RunCode /some/code/file.cpp
的时候程序就会自动的根据配置进行编译,然后运行。通常来说会输出编译的所有信息,包括警告、报错等等。编译完成后,程序会自动运行,你只需要正常的与你的代码交互即可。
编译运行结束后,插件会输出你的代码的返回值,以及运行时长以方便调试。
这个功能需要浏览器插件 Competitive Companion 的支持,你可以前往他的 Github 仓库或者在插件应用商店安装。
当你需要这个功能的时候,你可以按下快捷键或者输入命令 :JudgeCode /some/code/file.cpp
,如果插件检测到了之前保存的数据文件,那么就会直接评测,如果没有,程序会提示你需要打开浏览器,这时你就需要打开浏览器,然后左键单击 Competitive Companion 插件。此时浏览器插件就会将数据发送到 VOIM,然后 VOIM 就会处理数据,编译并评测。
一般地评测后有可能返回以下结果:
- Accept,即通过
- Time Limite Exceeded,时间超限
- Runtime Error,运行时错误
- Wrong Answer,答案错误
特别地,本插件并不支持 MLE,即内存超限的判罚。同时 TLE 的判罚是基于 Real Time 而不是 CPU Time 的。为了方便各位调试,RE 的报错会提供返回值以及其对应的可能错误,但是不保证对应正确,仅供参考。
这个功能可能需要 Insight 软件,你可以在网上搜索 如何安装 Insight 调试器 来查询如何安装。下面可以提供一些常见系统的安装命令:
yay -S insight
安装后你只需要调用 :DebugCode /some/code/file.cpp
或者按下你所设置的快捷键来进行编译并调试。关于 Insight 软件或其他调试器的使用方法,可以自行上网查找。
你可以使用 :CleanCache /some/code/file.cpp
来清除代码的编译缓存以及缓存的数据。