如何在 Vim 中创建类似 Sublime 的构建系统?

How to Create Sublime-Like Build Systems in Vim?

我目前是 neovim 的新手,仍在适应所有的键绑定,但让我有点卡住的是能够轻松 运行 我的代码。我在尝试 vim 之前使用的文本编辑器是 Sublime Text 3,在该文本编辑器中,我所要做的就是按 cmd + B,它将使用文本编辑器附带的构建系统或我自己做的。我还没有找到在 vim 中执行此操作的方法,我已经开始做类似的事情是将其添加到我的 init.vim “命令 PY运行 :!python3 %" 但我只让它与 python 一起工作,它远不及 Sublime 中的构建系统。 neovim 是否可以通过某种方式读取文件的扩展名(例如 .py、.asm、.cs)并使用预配置的构建系统来 运行 代码?

默认Python构建系统:

"cmd": ["/usr/local/bin/python3", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"quiet": true

我的自定义程序集构建系统:

"shell": true,
"cmd": ["nasm -f macho64 ${file} && ld -macosx_version_min 10.12 -lSystem -o ${file_base_name} ${file_base_name}.o && ./${file_base_name}"],
"file_regex": "^(.+):([0-9]+)()?: error: (.*)$",
"working_dir": "${file_path}",
"selector": "source.assembly"

如果您只想快速 运行 一个文件而不做任何准备,我建议 quickrun.vim。它有一些预配置的 运行-configurations 所以你只需要 运行 :Quickrun 来执行你当前的文件,你也可以根据你的需要自定义它。

如果你想有不同的 运行ning 选项(如果这就是你的意思),你可以使用内置 :make 命令或这个插件:asynctasks.vim。此插件使您能够创建“配置文件”以在不同的执行“样式”之间切换。

我只试过 QuickRun,所以这里有一些演示(打开 bash 文件和 python 文件):

你也可以 asyncrun 试一试,运行你的执行(顾名思义)是异步的。

经过一番研究,我发现了一个名为“quickrun.vim*”的插件,这个插件(据我了解)运行是一系列基于当前文件扩展名的命令你正在努力。您可以使用插件附带的默认“构建系统”,但是,当您在特定文件类型上使用 QuickRun 时,您可以通过指定需要 运行 的命令来创建自己的构建系统。下面是我当前的设置和 quickrun.vim.

的构建系统

我的 C++ 构建系统:

let g:quickrun_known_file_types = {
    \"cpp": ["!g++ % -o $(basename % .cpp) && eval ./$(basename % .cpp)"],
\}

我的 init.vim 中的程序集构建系统:

let g:quickrun_known_file_types = {
    \"asm": ["!nasm -f macho64 % && ld -macosx_version_min 10.12 -lSystem -o $(basename % .asm) $(echo $(basename % .asm).o) && eval ./$(basename % .asm)"]
\}

我当前的快捷方式运行 设置:

let g:quickrun_known_file_types = {
    \"cpp": ["!g++ % -o $(basename % .cpp) && eval ./$(basename % .cpp)"],
    \"c": ["!gcc % -o $(basename % .c)"],
    \"vim": ["source %"],
    \"py": ["!python3 %"],
    \"asm": ["!nasm -f macho64 % && ld -macosx_version_min 10.12 -lSystem -o $(basename % .asm) $(echo $(basename % .asm).o) && eval ./$(basename % .asm)"]
\}

nnoremap <space>b :QuickRun<CR>

安装插件并在 .vimrc/init.vim 中设置 quickrun.vim 后,您只需在命令模式下执行“QuickRun”,插件就会然后为您完成剩下的工作。