ubuntu 18.04下neovim手动添加treesitter支持(c语言为例)

环境准备

  • rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

集成步骤

  • 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也能支持

posted @ 2025-01-10 11:05  rdwr  阅读(343)  评论(0)    收藏  举报