161 lines
No EOL
8.5 KiB
Markdown
161 lines
No EOL
8.5 KiB
Markdown
**: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 |