hyperion/10-linux/00-utils/helix/keys.md
2025-11-22 17:48:07 +03:00

161 lines
No EOL
8.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**:w** или **:write**
**:bc** или **:buffer-close**
Отлично! В Helix есть мощная LSP-интеграция для навигации по коду. Вот полный гайд:
## Переход к определению и обратно
## Основные команды навигации (goto mode)
Нажми **g** затем:[helix-editor+2](https://docs.helix-editor.com/keymap.html)
**К определению:**
- **gd** — Go to **definition** (переход к определению функции/переменной)[helix-editor+2](https://docs.helix-editor.com/commands.html)
- **gy** — Go to **type definition** (переход к определению типа)[huqingye-1798.xlog+1](https://huqingye-1798.xlog.app/Helix-an-jian-ying-she--zhuan-)
- **gi** — Go to **implementation** (переход к реализации трейта/интерфейса)[helix-editor+1](https://docs.helix-editor.com/keymap.html)
**К использованиям:**
- **gr** — Go to **references** (показать все места, где используется функция)[kapeli+2](https://kapeli.com/cheat_sheets/Helix.docset/Contents/Resources/Documents/index)
## Возврат назад (Jumplist)
После перехода по `gd`, Helix автоматически сохраняет твою предыдущую позицию в **jumplist** (список переходов):[helix-editor](https://docs.helix-editor.com/master/jumplist.html)youtube
- **Ctrl+o** — jump **Out** (вернуться назад по jumplist)[reddit+1](https://www.reddit.com/r/HelixEditor/comments/1hhae1n/undo_go_to_definition/)youtube
- **Ctrl+i** — jump **In** (вернуться вперёд по jumplist)youtube[helix-editor](https://docs.helix-editor.com/master/jumplist.html)
- **Ctrl+s** — вручную сохранить текущую позицию в jumplist[helix-editor](https://docs.helix-editor.com/master/jumplist.html)youtube
**Пример воркфлоу:**
1. Ты на вызове функции `calculate_sum()`
2. Жмёшь **gd** → переходишь к определению
3. Смотришь код, делаешь правки
4. Жмёшь **Ctrl+o** → возвращаешься к вызову
5. Если нужно снова к определению — **Ctrl+i**
## Просмотр всего jumplist
**Space+j** — открыть picker со всеми сохранёнными переходамиyoutube[helix-editor](https://docs.helix-editor.com/master/jumplist.html)
Это интерактивное меню, где видны все позиции, куда ты прыгал. Можешь выбрать любую стрелками и нажать Enter.youtube
## Навигация между вызовами функции
**Найти все использования:**
1. Встань на имя функции
2. Нажми **gr** (goto references)[kapeli+1](https://kapeli.com/cheat_sheets/Helix.docset/Contents/Resources/Documents/index)
3. Откроется picker со всеми местами, где функция вызывается
4. Используй стрелки для выбора, Enter для перехода[huqingye-1798.xlog](https://huqingye-1798.xlog.app/Helix-an-jian-ying-she--zhuan-)
**Переход между функциями в файле:**
- **]f** — следующая функция (next function)[helix-editor+1](https://docs.helix-editor.com/keymap.html)
- **[f** — предыдущая функция (previous function)[huqingye-1798.xlog+1](https://huqingye-1798.xlog.app/Helix-an-jian-ying-she--zhuan-)
Это работает через Tree-sitter (TS), не требует LSP.[helix-editor+1](https://docs.helix-editor.com/keymap.html)
## Навигация по диагностике (ошибки/предупреждения)
Бонус для дебага:[huqingye-1798.xlog+1](https://huqingye-1798.xlog.app/Helix-an-jian-ying-she--zhuan-)
- **]d** — следующая ошибка/предупреждение
- **[d** — предыдущая ошибка
- **[D** — первая ошибка в файле
- **]D** — последняя ошибка в файле
## Полный workflow для Rust-разработки
**Сценарий 1: Изучение чужого кода**
text
`1. Встал на функцию → gd (перешёл к определению) 2. Посмотрел типы → gy (перешёл к type definition) 3. Хочу вернуться → Ctrl+o (назад к вызову) 4. Хочу посмотреть все вызовы → gr (список references) 5. Выбрал другой вызов → Enter 6. Возвращаюсь к первому → Space+j (jumplist picker)`
**Сценарий 2: Рефакторинг**
text
`1. Встал на функцию → gr (показать все вызовы) 2. Перешёл к первому → Enter 3. Сделал правки → Ctrl+s (сохранил позицию в jumplist) 4. Следующий вызов → выбрал из picker 5. Вернулся к предыдущему → Ctrl+o`
**Сценарий 3: Исследование трейтов**
text
`1. Встал на трейт → gy (type definition) 2. Хочу увидеть реализации → gi (implementations) 3. Picker показал все impl блоки → выбираю нужный 4. Возврат → Ctrl+o`
## Горячие клавиши для закладок (опционально)
Если хочешь быстро прыгать между важными местами, используй **marks** (закладки):[helix-editor](https://docs.helix-editor.com/remapping.html)
- **m** затем **буква** — установить закладку (например, `ma` для закладки 'a')
- **` ** (backtick) затем **буква** — перейти к закладке (например, `` ` a``)
Это полезно для долгой работы над одним участком кода.[helix-editor](https://docs.helix-editor.com/remapping.html)
1. [https://docs.helix-editor.com/keymap.html](https://docs.helix-editor.com/keymap.html)
2. [https://docs.helix-editor.com/commands.html](https://docs.helix-editor.com/commands.html)
3. [https://kapeli.com/cheat_sheets/Helix.docset/Contents/Resources/Documents/index](https://kapeli.com/cheat_sheets/Helix.docset/Contents/Resources/Documents/index)
4. [https://www.reddit.com/r/HelixEditor/comments/1hhae1n/undo_go_to_definition/](https://www.reddit.com/r/HelixEditor/comments/1hhae1n/undo_go_to_definition/)
5. [https://huqingye-1798.xlog.app/Helix-an-jian-ying-she--zhuan-](https://huqingye-1798.xlog.app/Helix-an-jian-ying-she--zhuan-)
6. [https://docs.helix-editor.com/master/jumplist.html](https://docs.helix-editor.com/master/jumplist.html)
7. [https://www.youtube.com/watch?v=B3vQDHzsU0g](https://www.youtube.com/watch?v=B3vQDHzsU0g)
8. [https://docs.helix-editor.com/remapping.html](https://docs.helix-editor.com/remapping.html)
9. [https://github.com/helix-editor/helix/issues/3167](https://github.com/helix-editor/helix/issues/3167)
10. [https://zed.dev/docs/key-bindings](https://zed.dev/docs/key-bindings)
В Helix для удаления строки используется **двухнажатийная комбинация** (не одна клавиша, как в некоторых редакторах):
## Основная команда
**x d**
- **x** — выделить текущую строку целиком
- **d** — удалить выделение
Это самый быстрый и стандартный способ в Helix.[](https://pikabu.ru/story/osnovyi_helix_mini_gayd_13142410)
## Удаление нескольких строк
Если нужно удалить несколько строк подряд:
- **5x d** — удалить 5 строк (начиная с текущей вниз)
- **x 3k d** — выделить строку, расширить на 3 строки вверх, удалить
## Удаление и переход в режим вставки
**x c** — удалить строку и сразу войти в insert mode (аналог vim's `cc`)
shift + A - это сразу войти в режим i