# nvim-treesitter-textobjects **Repository Path**: cangmj/nvim-treesitter-textobjects ## Basic Information - **Project Name**: nvim-treesitter-textobjects - **Description**: mirror https://github.com/nvim-treesitter/nvim-treesitter-textobjects.git - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-01-04 - **Last Updated**: 2023-01-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # nvim-treesitter-textobjects Syntax aware text-objects, select, move, swap, and peek support. **Warning: tree-sitter and nvim-treesitter are an experimental feature of nightly versions of Neovim. Please consider the experience with this plug-in as experimental until tree-sitter support in Neovim is stable! We recommend using the nightly builds of Neovim or the latest stable version.** ## Installation You can install nvim-treesitter-textobjects with your favorite package manager, or using the default pack feature of Neovim! ### Using a package manager If you are using vim-plug, put this in your init.vim file: ```vim Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} Plug 'nvim-treesitter/nvim-treesitter-textobjects' ``` ## Text objects: select Define your own text objects mappings similar to `ip` (inner paragraph) and `ap` (a paragraph). ```lua lua <') or a table -- mapping query_strings to modes. selection_modes = { ['@parameter.outer'] = 'v', -- charwise ['@function.outer'] = 'V', -- linewise ['@class.outer'] = '', -- blockwise }, -- If you set this to `true` (default is `false`) then any textobject is -- extended to include preceding or succeeding whitespace. Succeeding -- whitespace has priority in order to act similarly to eg the built-in -- `ap`. -- -- Can also be a function which gets passed a table with the keys -- * query_string: eg '@function.inner' -- * selection_mode: eg 'v' -- and should return true of false include_surrounding_whitespace = true, }, }, } EOF ``` ## Text objects: swap Define your own mappings to swap the node under the cursor with the next or previous one, like function parameters or arguments. ```lua lua <a"] = "@parameter.inner", }, swap_previous = { ["A"] = "@parameter.inner", }, }, }, } EOF ``` ## Text objects: move Define your own mappings to jump to the next or previous text object. This is similar to `]m`, `[m`, `]M`, `[M` Neovim's mappings to jump to the next or previous function. ```lua lua <df"] = "@function.outer", ["dF"] = "@class.outer", }, }, }, } EOF ``` # Overriding or extending textobjects Textobjects are defined in the `textobjects.scm` files. You can extend or override those files by following the instructions at . You can also use a custom capture for your own textobjects, and use it in any of the textobject modules, for example: ```scm -- after/queries/python/textobjects.scm ; extends (function_definition) @custom-capture ``` ``` lua < 1. @attribute.inner 2. @attribute.outer 3. @block.inner 4. @block.outer 5. @call.inner 6. @call.outer 7. @class.inner 8. @class.outer 9. @comment.outer 10. @conditional.inner 11. @conditional.outer 12. @frame.inner 13. @frame.outer 14. @function.inner 15. @function.outer 16. @loop.inner 17. @loop.outer 18. @parameter.inner 19. @parameter.outer 20. @scopename.inner 21. @statement.outer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
agda
astro
bash 🟩 🟩 🟩 🟩 🟩 🟩 🟩
beancount
bibtex 🟩 🟩
blueprint
c 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
c_sharp 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
clojure
cmake 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
comment
commonlisp
cooklang
cpp 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
css
cuda 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
d
dart 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
devicetree
diff
dockerfile
dot
eex
elixir 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
elm 🟩 🟩 🟩 🟩 🟩 🟩 🟩
elvish
embedded_template
erlang
fennel 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
fish 🟩 🟩 🟩 🟩 🟩 🟩
foam 🟩 🟩 🟩 🟩 🟩 🟩
fortran
fusion
Godot (gdscript)
git_rebase
gitattributes
gitignore
gleam
Glimmer and Ember
glsl 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
go 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
Godot Resources (gdresource)
gomod
gowork
graphql
hack 🟩
haskell 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
hcl 🟩 🟩 🟩 🟩
heex🟩 🟩 🟩 🟩
help
hjson
hlsl
hocon
html🟩 🟩 🟩 🟩 🟩 🟩
http
java 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
javascript 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
jsdoc
json
json5
JSON with comments
jsonnet
julia 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
kotlin
lalrpop
latex 🟩 🟩 🟩 🟩 🟩 🟩
ledger
llvm
lua 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
m68k
make
markdown 🟩 🟩 🟩 🟩
markdown_inline
menhir
meson
nickel
ninja
nix 🟩 🟩 🟩 🟩 🟩 🟩 🟩
norg
ocaml
ocaml_interface
ocamllex
org
pascal
perl
php 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
phpdoc
pioasm
prisma
proto
pug
python 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
ql 🟩 🟩 🟩 🟩 🟩
qmljs
Tree-sitter query language
r 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
racket
rasi
regex
rego
rnoweb
rst 🟩 🟩 🟩 🟩 🟩 🟩 🟩
ruby 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
rust 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
scala 🟩 🟩 🟩 🟩 🟩 🟩 🟩
scheme
scss
slint
solidity
sparql
sql
supercollider 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
surface
svelte
swift 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
sxhkdrc
teal
tiger
tlaplus
todotxt
toml
tsx 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
turtle
twig 🟩 🟩 🟩 🟩
typescript 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
v
vala
verilog 🟩 🟩 🟩 🟩 🟩 🟩
vim 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
vue 🟩 🟩 🟩
wgsl 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩
yaml
yang
zig 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩