Vim / Neovim¶
自动补全¶
对于 C++,任何可以使用 LSP 的工具,例如 coc.nvim
、nvim-lspconfig
等,只要您生成了一个 编译数据库 并指向它,就可以正常工作。
此外,YouCompleteMe 在您运行 ./mach build
或 ./mach configure
后无需 C++ 编译数据库即可工作。此配置位于仓库根目录下的 .ycm_extra_conf 中。
Rust 自动补全应该可以使用 Rust 的 LSP rust-analyzer
。
确保 LSP 以一种将树的根目录检测为工作区的方式配置,而不是您正在编辑的 crate。例如,nvim-lspconfig
的默认设置是搜索最接近的 Cargo.toml
文件,这不是您想要的。您可能需要类似以下内容:
root_dir = lspconfig.util.root_pattern(".git", ".hg")
您还需要设置一些选项才能获得完整的诊断信息
"rust-analyzer.server.extraEnv": {
"CARGO_TARGET_DIR": "/path/to/objdir"
},
"rust-analyzer.check.overrideCommand": [ "/path/to/mach", "--log-no-times", "cargo", "check", "--all-crates", "--message-format-json" ],
"rust-analyzer.cargo.buildScripts.overrideCommand": [ "/path/to/mach", "--log-no-times", "cargo", "check", "--all-crates", "--message-format-json" ],
使这些功能开箱即用的最简单方法是使用 neoconf,它自动支持导入 VSCode 配置文件。然后,./mach ide vscode --no-interactive
将为您生成正确的配置。
ESLint¶
将 ESLint 与 VIM 集成的最简单方法是使用 Syntastic 插件。
为了使 VIM 将 jsm 文件检测为 JS,您可能需要在您的 .vimrc
中添加类似以下内容
autocmd BufRead,BufNewFile *.jsm set filetype=javascript
mach eslint --setup
会将特定版本的 ESLint 和一些 ESLint 插件安装到仓库的 node_modules
中。
您需要在您的 .vimrc
中添加类似以下内容,以便在保存时自动运行检查器
autocmd FileType javascript,html,xhtml let b:syntastic_checkers = ['javascript/eslint']
您需要在 PATH
中包含 eslint
,您可以使用 npm install -g eslint
获取。您至少需要 6.0.0 版本。
您也可以使用类似 eslint_d 的工具,它也应该可以自动执行此操作
let g:syntastic_javascript_eslint_exec = 'eslint_d'