Skip to content

Instantly share code, notes, and snippets.

@rz6agx
Last active July 20, 2025 03:52
Show Gist options
  • Select an option

  • Save rz6agx/fdd3ad04d0a4db2c6e7e85eb560b7390 to your computer and use it in GitHub Desktop.

Select an option

Save rz6agx/fdd3ad04d0a4db2c6e7e85eb560b7390 to your computer and use it in GitHub Desktop.
Редактор кода Helix

Редактор кода Helix

В заметке кратко описан новый редактор кода Helix, которой является продолжением философии модальных редакторов Vim или NeoVim.

Цитата с официального сайта разработчиков: Начав с нуля, мы смогли извлечь уроки из нашего опыта работы с Vim и внести некоторые кардинальные изменения. Результатом является гораздо меньшая кодовая база и современный набор значений по умолчанию. Легче начать работу, если вы никогда раньше не использовали модальный редактор, и надо будет гораздо меньше возиться с файлами конфигурации. Helix использует традиционную для Vim модель редактирования с режимами (normal, insert, visual и т.д.), что позволяет эффективно выполнять различные операции над текстом. Helix стремится предоставить пользователям больше возможностей "из коробки", избавляя от необходимости устанавливать множество плагинов, как это часто бывает в Vim.

Helix написан на Rust, без Electron, без VimScript, без JavaScript. Helix устанавливается не голым чистым листом, предназначенным для дальнейшей доработки напильником. Он уже заряжен и готов к работе. Для примера посмотрим что у нас есть "из коробки":

Color scheme

Из коробки доступны все темы для NeoVim с первой страницы по популярности. Пишем ":theme " и щелкаем "tab" в поисках того, что глаз радует, или вводим первые буквы своей любимой темы.

Multiple Cursor

Это вообще за гранью добра и зла. Жмем "Shift-с" и появляется второй курсор, еще раз "Shift-с" и еще один. Хоть 100500 курсоров делай, жми "," чтобы вернуться к одному курсору.

LSP

Это Language Server Protocol, к Helix все прикручивается само, нужно набрать в терминале helix --health, чтобы увидеть список доступных LSP, DAP, Formatter, Highlight, Textobject, Indent. Затем установить нужный пакет, автодополнение работает, аргументы функции при вводе подсвечиваются, и документация подтягивается. У меня прикручен LSP для markdown под названием Marksman. Хорошо работает навигация по заголовкам в документе по Space + s. Также есть автодополнение для ссылок, заголовков и списков; проверка ссылок и заголовков; поддержка перекрёстных ссылок между файлами. Если видишь ссылку на другой раздел или файл, наведи курсор на неё и нажми gd, чтобы перейти. Для поиска конкретного слова или фразы используй space + f. Если документ большой, используй закладки для быстрого возврата к важным разделам (установи закладку: m + буква, перейди к закладке: ' + буква).

Для настройки LSP необходимо править файл конфигурации language.toml, вот пример для сервера markdown-oxide:

[language-server]
markdown-oxide = { command = "markdown-oxide", args = [] }

[[language]]
name = "markdown"
scope = "text.markdown"
file-types = ["md", "markdown"]
auto-format = true
indent = { tab-width = 2, unit = "  " }
language-servers = ["markdown-oxide"]

[[grammar]]
name = "markdown"
scope = "text.markdown"
source = { git = "https://github.com/tree-sitter/tree-sitter-markdown", rev = "d648397d155ea7f96e71da5cc707a1d7a12abf86" }

Интеграция с tree-sitter

Helix использует tree-sitter для парсинга кода, что обеспечивает точное и быстрое выделение синтаксиса, а также возможность выполнять сложные операции над кодом на основе его структуры.

Интеграция с git

Измененные/удаленные/добавленные строки подсвечиваются по-умолчанию. В строке статуса показывает название ветки и статус файла.

Простой config - toml

После Vim никакой конфиг нам не страшен. Но некоторые конфиги приятно удивляют своей простотой и понятностью. А тут еще и краткостью. Думаю рабочий конфиг Helix-a будет где-то в 10-50 раз меньше вашего конфига в Vim. И было очень приятно увидеть простые команды :config-open, :config-reload. Пример конфига:

theme = "emacs"

[editor]
color-modes = true
auto-save = true
bufferline = "multiple"
completion-replace = true
mouse = true
true-color = true

[editor.soft-wrap]
enable = true
wrap-indicator = ""

[editor.statusline]
left = [
  "mode",
  "spinner",
  "file-modification-indicator",
  "version-control"
]
center = ["file-name", "read-only-indicator"]
right = [
  "diagnostics",
  "selections",
  "position",
  "file-encoding",
  "file-line-ending",
  "file-type"
]
mode.normal = "NORMAL"
mode.insert = "INSERT"
mode.select = "SELECT"

[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"

Всплывающие окна справки по хоткеям

В составных командах, типа "gg", после нажатия первой клавиши появляется окно с хоткеями.

Keymap

Все клавиатурные команды редактора доступны на специальной странице сайта с документацией. Ниже кратко основные.

Режимы

Helix использует несколько режимов для работы с текстом. Каждый режим имеет свои ключевые сочетания для выполнения различных команд.

Режим Описание
Normal Режим для навигации и редактирования текста
Insert Режим для вставки текста.
Visual Режим для выделения текста.
Command Режим для выполнения команд.

Минорные режимы

Эти подрежимы доступны из нормального режима и обычно возвращают к нормальному режиму после выполнения команды.

Клавиша Описание
v Войти в режим выделения (расширенное выделение)
g Войти в режим перехода
m Войти в режим соответствия
w Войти в оконный режим
Space Войти в режим пространства "picker"

Режим окон

Клавиша Описание
w Переключение между окнами
Ctrl-w Переход в предыдущее окно
Ctrl-q Закрытие текущего окна
Ctrl-t Открытие нового окна
Alt-w Разделить окно по вертикали
Alt-v Разделить окно по горизонтали

Режим перехода

Клавиша Описание
: Перейти к строке по номеру.
g Перейти к символу на строке.
Ctrl-] Перейти к следующей функции/методу в файле.
Ctrl-[ Вернуться к предыдущей функции/методу в файле.
m Перейти к маркеру в файле.
f Перейти к символу в текущей строке.
Ctrl-f Перейти к следующему вхождению символа в файле.
Ctrl-b Перейти к предыдущему вхождению символа в файле.

Команды

Helix имеет множество команд для выполнения различных действий в редакторе. Каждая команда связана с конкретной задачей.

Команда Описание
:w Сохранить файл.
:q Закрыть редактор.
:wq Сохранить и выйти.
:e файл Открыть указанный файл.

Навигация

В Helix доступны различные команды для эффективной навигации по тексту.

Команда Описание
gg Перейти в начало файла.
G Перейти в конец файла.
Ctrl + f Прокрутить вниз по странице.
Ctrl + b Прокрутить вверх по странице.

Изменения

Команда Описание
r Заменить символ на другой.
R Заменить символ на текст, который был скопирован.
~ Переключить регистр выделенного текста.
` Преобразовать выделенный текст в нижний регистр.
Alt- Преобразовать выделенный текст в верхний регистр.
i Вставить до выделения.
a Вставить после выделения.
I Вставить в начало строки.
A Вставить в конец строки.
o Открыть новую строку ниже выделения.
O Открыть новую строку выше выделения.
. Повторить последнюю вставку.
u Отменить изменения.
U Повторить изменения.
Alt-u Переместиться назад по истории изменений.
Alt-U Переместиться вперед по истории изменений.
y Скопировать выделение.
p Вставить после выделения.
P Вставить перед выделением.
"+reg Выбрать регистр для копирования или вставки.
> Сделать отступ для выделения.
< Убрать отступ для выделения.
= Отформатировать выделение (с помощью LSP).
d Удалить выделение.
Alt-d Удалить выделение без копирования в буфер обмена.
c Изменить выделение (удалить и войти в режим вставки).
Alt-c Изменить выделение (удалить и войти в режим вставки без копирования)
Ctrl-a Увеличить число под курсором.
Ctrl-x Уменьшить число под курсором.

Манипуляция выделением

Команда Описание
s Выбрать все совпадения в выделении.
S Разделить выделение на несколько частей.
Alt-s Разделить выделение по строкам.
Alt-minus Объединить несколько выделений.
Alt-_ Объединить последовательные выделения.
& Выровнять выделения по столбцам.
_ Удалить пробелы в выделении.
; Сжать выделение в один курсор.
Alt-; Перевернуть курсор и выделение.
Alt-: Переместить выделение вперед.
, Оставить только основное выделение.
Alt-, Удалить основное выделение.
C Копировать выделение на следующую строку.
Alt-C Копировать выделение на предыдущую строку.
( Повернуть выделение назад.
) Повернуть выделение вперед.
Alt-( Повернуть содержимое выделения назад.
Alt-) Повернуть содержимое выделения вперед.
% Выбрать весь файл.
x Выделить текущую строку.
X Расширить выделение до границ строки.
Alt-x Сжать выделение до границ строки.
J Соединить строки в выделении.
Alt-J Соединить строки и добавить пробел.
K Сохранить выделения.
Alt-K Удалить выделения.
Ctrl-c Закомментировать или раскомментировать выделение.

Редактирование

В Helix есть команды для быстрого редактирования текста, такие как удаление, замена и вставка.

Команда Описание
x Удалить символ под курсором.
dw Удалить слово перед курсором.
d$ Удалить до конца строки.
yy Копировать строку.

Поиск

Helix поддерживает мощные функции поиска для быстрого нахождения текста.

Команда Описание
/ Найти текст вперед по файлу.
? Найти текст назад по файлу.
n Перейти к следующему результату поиска.
N Перейти к предыдущему результату поиска.

Визуальные команды

Helix поддерживает визуальные команды для выделения текста и работы с ним.

Команда Описание
v Включить визуальный режим для выделения текста
V Включить визуальный режим по строкам.
Ctrl + v Включить визуальный режим по столбцам.
d Удалить выделенный текст.

Модификаторы

Модификаторы помогают изменять поведение команд в Helix.

Команда Описание
Ctrl Используется для дополнительных действий
(например, Ctrl + f для прокрутки вниз).
Alt Может быть использован для специальных команд.
Shift Используется для изм. регистра и других операций

Отмена

Helix поддерживает команды для отмены и повторения действий.

Команда Описание
u Отменить последнее действие.
Ctrl + r Повторить отмененное действие.

Открытие и сохранение файлов

Helix поддерживает команды для открытия и сохранения файлов, что позволяет быстро работать с различными проектами.

Команда Описание
:e <файл> Открыть файл.
:w Сохранить файл.
:q Закрыть редактор.
:wq Сохранить и выйти.

Работа с буфером обмена

Helix поддерживает работу с буфером обмена для копирования и вставки текста.

Команда Описание
y Копировать выделенный текст.
p Вставить скопированный текст после курсора.
P Вставить скопированный текст перед курсором.
d Удалить выделенный текст и скопировать его в буфер

Многооконный режим

Helix позволяет работать с несколькими окнами одновременно, что увеличивает удобство при работе с большим количеством файлов.

Команда Описание
:split Разделить окно на два.
Ctrl + w Переключение между окнами.
:vsplit Разделить окно вертикально.
Ctrl + w + q Закрыть текущее окно.

Многозадачность

Helix позволяет работать с несколькими задачами одновременно для повышения продуктивности.

Команда Описание
:tabnew Открыть новый таб.
:tabnext Перейти к следующему табу.
:tabprev Перейти к предыдущему табу.
:tabclose Закрыть текущий таб.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment