mirror of https://github.com/helix-editor/helix
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
2.1 KiB
Markdown
48 lines
2.1 KiB
Markdown
6 months ago
|
## 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] 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][tree-sitter-nav-demo]
|
||
|
|
||
|
For the full reference see the [unimpaired][unimpaired-keybinds] section of the key bind
|
||
|
documentation.
|
||
|
|
||
|
> 💡 This feature relies on tree-sitter textobjects
|
||
|
> and requires the corresponding query file to work properly.
|
||
|
|