Email or username:

Password:

Forgot your password?
AkhIL

И так, после недели (может больше) использования #HelixEditor у меня есть мысли по поводу того чем он отличается от #VIM и #NeoVIM.

#Vim обладает большим количеством команд, всяких разных, d и x - удаляют. dd - удаляет строку, c, C, s, S - делают одно и то же, но с разными объектами. В Вим великое множество специализированных команд не очень хорошо организовано, много нужно запоминать, бооольшущая документация по этому всему.

Helix меньше, в нём не так много команд, меньше запоминать, документация по командам - одна веб страничка. Все команды чётко разделяются на категории. Например команды начинающиеся на g -идти куда-то: gg - в начало буфера, ge - в конец, gs - первый не пробльный символ строки, gl - конец строки, gn - начало строки, gd - определение функции/класса/переменной, и так далее. На экране появляются подсказки. Эти простые команды Htlix хорошо компонуются в выкрутасы которые в Vim делать либо очень сложно, либо вообще невозможно без скриптов.

Обратно в NeoVIM не хочется.

10 comments
AkhIL

@oreolek
В виме так:
gg - начало буфера
G - конец буфера
^ - первый непроблеьный символ строки
$ - конец строки
0 - начало строки
перейти к определению символа - как настроишь, это уже плагины.

AkhIL

Пришлось пожертвовать достаточно прятными штуками из напичканного плагинами NeoVIM: интеграцией git, сравнивалкой vimdiff, редактором цвета, встроенной проверкой орфографии, методами ввода. Надеюсь постепенно эти вещи будут компенсированы чем-то ещё.

Для орфографии планирую утилизировать языковой сервер, для гита пока больше пользуюсь lazygit, vimdiff, так и, всё ещё использую.

lazycat

@akhil можно поподробнее про орфографию в helix?

AkhIL

@lazycat
Есть языковой сервер github.com/iamcco/diagnostic-l который запускает произвольные линтеры. В качестве линтеров в него можно добавить cspell, или даже enchant.
В итоге должно получиться подсвечивание назнакомых слов прямо в редакторе.

Конфигов готовых пока нету, я лишь запустил cspell чрез deno, до языкового сервера руки ещё не дошли.

Второй вариант, запасной, который я рассматриваю - накатать по быстрому на пайтоне языковой сервер который будет дёргать enchant по API.

Ещё в стандартном конфиге определён языковой сервер ltex, который как раз для проверки человеческих языков. Его следует прописать как языковой сервер для выбранных типов файлов.
Вот пример blog.getreu.net/20220828-tp-no

@lazycat
Есть языковой сервер github.com/iamcco/diagnostic-l который запускает произвольные линтеры. В качестве линтеров в него можно добавить cspell, или даже enchant.
В итоге должно получиться подсвечивание назнакомых слов прямо в редакторе.

Конфигов готовых пока нету, я лишь запустил cspell чрез deno, до языкового сервера руки ещё не дошли.

AkhIL

@lazycat
Учти, у diagnostic-languageserver с #HelixEditor не работает в режиме onSaveOnly. Буду баг-репорт оформалять.

AkhIL

Вот один из примеров магии #HelixEditor
Имеем строку
CMD = foo --bar --baz<>
где <> - границы выделения.
Даём команды:
T= - выделить и переместиться назад до символа =, но не включать его в выделение;
_ - обрезать пробелы вокруг выделения;
ms[ - окружить выделение квадратными скобками.
В текущий момент строка выглядит так:
CMD = <[foo --bar --baz]>
Продолжаем...
mi[ - выделить всё что внутри квадратных скобок;
S <ret> - между S и <ret> - пробел, разделяем выделение пробелами.
Получается:
CMD = [<foo> <--bar> <--baz>]
При том первое выделение является главным.
Теперь...
ms" - окружаем выделенное кавычками;
( - переключаем главное выделение влево, главным выделением становиться последнее, там где --baz;
<Alt-,> - удаляем главное выделение;
a,<esc> - вставляем запятую после всех выделений и возвращаемся в нормальный режим;
;, - сбрасываем выделения до одного символа, превращая их в курсоры, и удаляем все выделения кроме главного.

Получаем:
CMD = ["foo", "--bar"<,> "--baz"]

Вот один из примеров магии #HelixEditor
Имеем строку
CMD = foo --bar --baz<>
где <> - границы выделения.
Даём команды:
T= - выделить и переместиться назад до символа =, но не включать его в выделение;
_ - обрезать пробелы вокруг выделения;
ms[ - окружить выделение квадратными скобками.
В текущий момент строка выглядит так:
CMD = <[foo --bar --baz]>
Продолжаем...
mi[ - выделить всё что внутри квадратных скобок;
S <ret> - между S и <ret> - пробел, разделяем выделение пробелами.
Получается:
CMD = [<foo> <--bar> <--baz>]

Go Up