|
|
|
## 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.
|
|
|
|
|
|
|
|
![Textobject demo](https://user-images.githubusercontent.com/23398472/124231131-81a4bb00-db2d-11eb-9d10-8e577ca7b177.gif)
|
|
|
|
![Textobject tree-sitter demo](https://user-images.githubusercontent.com/23398472/132537398-2a2e0a54-582b-44ab-a77f-eb818942203d.gif)
|
|
|
|
|
|
|
|
- `ma` - Select around the object (`va` in Vim, `<alt-a>` in Kakoune)
|
|
|
|
- `mi` - Select inside the object (`vi` in 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](./lang-support.md) 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.
|
|
|
|
|
|
|
|
![Tree-sitter-nav-demo](https://user-images.githubusercontent.com/23398472/152332550-7dfff043-36a2-4aec-b8f2-77c13eb56d6f.gif)
|
|
|
|
|
|
|
|
For the full reference see the [unimpaired](./keymap.html#unimpaired) section of the key bind
|
|
|
|
documentation.
|
|
|
|
|
|
|
|
> 💡 This feature relies on tree-sitter textobjects
|
|
|
|
> and requires the corresponding query file to work properly.
|
|
|
|
|