Selecting and manipulating text with textobjects
In Helix, textobjects are a way to select, manipulate and operate on a piece of text in a structured way. They allow you to refer to blocks of text based on their structure or purpose, such as a word, sentence, paragraph, or even a function or block of code.

ma- Select around the object (vain Vim,<alt-a>in Kakoune)mi- Select inside the object (viin Vim,<alt-i>in Kakoune)
Key after mi or ma | Textobject selected |
|---|---|
w | Word |
W | WORD |
p | Paragraph |
(, [, ', etc. | Specified surround pairs |
m | The closest surround pair |
f | Function |
t | Type (or Class) |
a | Argument/parameter |
c | Comment |
T | Test |
g | Change |
💡
f,t, etc. need a tree-sitter grammar active for the current document and a special tree-sitter query file to work properly. Only some grammars currently have the query file implemented. Contributions are welcome!
Navigating using tree-sitter textobjects
Navigating between functions, classes, parameters, and other elements is
possible using tree-sitter and textobject queries. For
example to move to the next function use ]f, to move to previous
type use [t, and so on.

For the full reference see the unimpaired section of the key bind documentation.
💡 This feature relies on tree-sitter textobjects and requires the corresponding query file to work properly.