开源项目 treesitter-unit
教程
1、项目介绍
treesitter-unit
是一个用于 Neovim 的插件,旨在处理 treesitter 单元。一个单元被定义为一个 treesitter 节点,包括其所有子节点。该插件允许用户快速选择、复制、删除或替换特定语言的范围。对于内部选择,光标下的主节点被选中;对于外部选择,下一个节点被选中。
2、项目快速启动
安装要求
nvim-treesitter
,包括适用于您语言的解析器。
使用 vim-plug
安装
Plug 'David-Kunz/treesitter-unit'
使用 packer
安装
use 'David-Kunz/treesitter-unit'
基本使用
选择 treesitter 单元
:lua require"treesitter-unit".select(outer)
该函数接受一个可选的布尔标志,用于指定是否应选择外部范围(默认值为 false
)。
自动高亮
:lua require"treesitter-unit".toggle_highlighting(higroup)
可选参数可以指定高亮组(默认值为 "CursorLine"
)。
常用映射
在 init.vim
中
xnoremap iu :lua require"treesitter-unit".select()<CR>
xnoremap au :lua require"treesitter-unit".select(true)<CR>
onoremap iu :<c-u>lua require"treesitter-unit".select()<CR>
onoremap au :<c-u>lua require"treesitter-unit".select(true)<CR>
在 init.lua
中
vim.api.nvim_set_keymap('x', 'iu', ':lua require"treesitter-unit".select()<CR>', {noremap=true})
vim.api.nvim_set_keymap('x', 'au', ':lua require"treesitter-unit".select(true)<CR>', {noremap=true})
vim.api.nvim_set_keymap('o', 'iu', ':<c-u>lua require"treesitter-unit".select()<CR>', {noremap=true})
vim.api.nvim_set_keymap('o', 'au', ':<c-u>lua require"treesitter-unit".select(true)<CR>', {noremap=true})
3、应用案例和最佳实践
示例
viu
选择内部单元cau
更改外部单元
最佳实践
- 使用自动高亮功能来提高代码的可读性。
- 通过映射快捷键来提高操作效率。
4、典型生态项目
nvim-treesitter-textobjects
:提供更细粒度的控制。nvim-treesitter
:用于增量选择。nvim-ts-hint-textobject
:提供更多文本对象选择功能。
通过这些生态项目,可以进一步扩展和优化 treesitter-unit
的功能和使用体验。