hyperion/10-linux/00-utils/helix/fill match arms.md

2.1 KiB
Raw Blame History

В Helix пока нет встроенной полноценной поддержки сниппетов в том виде, как это сделано в VS Code (где нажал Tab и развернулся шаблон кода), но есть очень мощная альтернатива через LSP (Language Server Protocol).

То, что ты описываешь ("заполнить match по всем вариантам enum"), — это фича rust-analyzer, и она работает в Helix через Code Actions.

Как сделать "Fill match arms" в Helix:

  1. Напиши match s.split_once(',') {}.
  2. Поставь курсор внутри фигурных скобок {} или на ключевое слово match.
  3. Нажми Space + a (команда code_action).
  4. В появившемся меню выбери "Fill match arms".

Rust-analyzer автоматически сгенерирует код:

match s.split_once(',') {
    Some(_) => todo!(),
    None => todo!(),
}

Насчет классических сниппетов

В Helix нативная поддержка сниппетов (как в VSCode: набрал for -> Tab -> развернулся цикл) находится в разработке/планах. Сейчас сообщество использует:

  1. Внешние решения: Например, через автодополнение LSP, если сервер их поддерживает (rust-analyzer кое-что умеет, например tmod разворачивает тестовый модуль).
  2. Скрипты/Пайпы: Можно настроить хоткеи на вставку текста через pipe из внешних файлов, но это костыльно.

Так что для Rust твой лучший друг — это Space + a (Code Actions). Это даже круче сниппетов, потому что оно контекстно-зависимое.