ubuntu 18.04下neovim手动添加treesitter支持(c语言为例)
环境准备
- rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
node.js
https://nodejs.org/dist/v16.20.2/node-v16.20.2-linux-x64.tar.xz -
neovim
https://github.com/neovim/neovim-releases/releases/download/v0.10.3/nvim-linux64.tar.gz
集成步骤
- tree-sitter
git clone https://github.com/tree-sitter/tree-sitter
cd tree-sitter
# nvim-treesitter abi支持13和14,版本太新启动会报错
git checkout v0.20.9
cargo build --release
# 目标文件
# target/release/tree-sitter
- tree-sitter-c
git clone https://github.com/tree-sitter/tree-sitter-c
cd tree-sitter-c
# 参考nvim-treesitter目录下的lockfile.json
git checkout 3aa2995549d5d8b26928e8d3fa2770fd4327414e
# 目标文件
# grammar.js
- 编译c.so
mkdir c
cd c
cp xxx/tree-sitter-c/grammar.js .
# tree-sitter命令需要node.js,确保node添加到PATH
tree-sitter generate
# 命令正常执行完会生成src目录
cd src
gcc -fPIC -std=c99 -O2 -shared -o c.so parser.c
验证
- nvim-treesitter
mkdir -p ~/.config/nvim/pack/nvim/start
cd ~/.config/nvim/pack/nvim/start
git clone https://github.com/nvim-treesitter/nvim-treesitter
# 将c.so拷贝到nvim-treesitter中
cp xxx/c.so nvim-treesitter/parser/
- init.lua
require'nvim-treesitter.configs'.setup {
-- A list of parser names, or "all" (the listed parsers MUST always be installed)
ensure_installed = { "c" },
-- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = false,
-- Automatically install missing parsers when entering buffer
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
auto_install = false,
highlight = {
enable = true,
},
}
nvim xxx.c
最后
确实不错,希望vim也能支持

浙公网安备 33010602011771号