Всем добра!
Хочу спросить советов у бывалых вимеров - благо их тут есть.
Сейчас работаю с фреймворком на js (точнее, на angular, то есть typescript) - Ionic. Соответственно, это html+css+js. Перетыкал много редакторов, из-за возможностей и особенностей пока был вынужден остановиться на webstorm - просто потому, что его поведение соответствует моим ожиданиям. Но хочу таки сменить редактор на vim, как основной. Проблема в том, что плагинов к ionic у vim нет, только подсветка синтаксиса. Попробую составить список тех моментов, которые мне нужны, буду очень признателен, если кто-то даст советы по их решению.
Сразу скажу - режим эмуляции vim для webstorm не предлагать. Редакторы atom, vs code, sublime text - тоже не предлагать - их поведение во многом больше мешает, чем помогает.
- превращение текста по нажатию tab в тэги в html; в ionic много своих тэгов - таких как ion-button, ion-list, ion-item - большинство редакторов не умеют так, только webstorm ведёт себя прогнозируемо - превращает в тэг, согласно своим настройкам, а если такого тэга в его базе сниппетов нет - просто превращает введённый текст в тэг, с соответствующим закрывающим;
- вставка ответных скобок, кавычек и т.д. - ремап в конфиге может приводить к некоторым проблемам, когда тебе, например, нужно просто поставить 1 скобку или кавычку; в общем, не совсем очевидно;
- работа с git - хочу коммитить прямо из редактора максимально простым способом - webstorm, например, делает коммит по cmd+k;
- легко и просто заворачивать выделенный текст во внешний тэг (вроде фича emmet) - причём и в html, и в css (точнее, scss, поскольку ionic завязан на нём и это очень удобно)
- навигация в режиме вставки - СТРЕЛОЧКИ НЕ ПРЕДЛАГАТЬ!
- как научить YouCompleteMe в русские символы в пути к файлу?
- можно ли научить vim в подхват имен классов между html и css/scss? создал правило для класса mysuperclass в scss, а в html добавляешь class=«my» и оно тебе предлагает дополнить до mysuperclass; и наоборот - если в scss нету такого класса - при начале ввода предлагать его вставить; благо контролировать на этот счёт надо всего 2 файла: variables.scss и локальные html/scss, которые находятся попарно в соответствующих каталогах (короче, ищем такое же имя файла в этом же каталоге, только с расширением html вместо scss и наоборот)
- быстро переформатировать весь документ в соответствии с установками (выравнивание тэгов и так далее)
- поддержка синтаксиса в двойных фигурных скобках - так вызываются функции и методы и в angular и в vue.js
- предпросмотр цветов, с возможностью добавить способ определения цвета - в ionic создаются переменные цветов, которые вызываются потом в scss как - тут пасуют все редакторы, которыми я пользовался; если подсветить обычный hex или rgba они могут, то в этом случае бессильны.
color: color($colors, colorname)
- ну и конечно работа с самим js в лице ts и angular - что тут может предложить vim?
Я так и не понял, как мне добавить свои сниппеты в ultisnips. Вот я хочу чтоб сниппеты из плагинов оставались, а просто добавить своё расширяющее правило - тот же ion-button, например, для html.
Ну и вообще - можно ли использовать для веба vim полноценно и не страдать?