Не знаю вашего мнения, но мне самому нравится, то есть, очень нравится, когда все чисто, с хорошими отступами, отсортировано по алфавиту… В какой-то момент просто читабельно.

Если я начну работать над кодом, который не соответствует этим правилам, я должен изменить его. Иначе я не смогу сосредоточиться на том, что делает код.

Если у вас одинаковые потребности, вы знаете, как болезненно изменять этот код вручную, снова и снова. Итак, я объясню вам, как мы можем настроить VIM, чтобы позаботиться о нашем обсессивно-компульсивном расстройстве.

Первый пример, Руби. Мне нравится, когда мои задания идеально выровнены на =. Мне также нравится, когда мои хэши идеально выровнены по :.

Для выравнивания уже есть куча хороших плагинов. Тот, который полностью соответствует моим потребностям, — EasyAlign. Он обрабатывает все необходимые мне выравнивания из коробки (т.е.: =, :, .).

В настоящее время я работаю над старым приложением (более 6 лет), и многие хэши все еще используют старый синтаксис (например, :my_key => "value").

Поэтому я также хочу иметь возможность изменять эти хэши, чтобы они соответствовали новому синтаксису.

Для этого мы можем создать простую команду VIM в нашем файле vimrc.

Теперь мы можем заменить старый хеш на новый, просто вызвав :OldToNewHash для выбора. Мы также можем совместить клавиши вызова :EasyAlign : с одним и тем же выбором. Прохладный!

Вводить эти команды несложно, но медленно. Чтобы сделать это быстрее, мы можем начать с сопоставления этих команд с ярлыками.

Вот пример:

Теперь мы можем выровнять наши ключи, набрав \t:, и преобразовать наш старый хэш в новый с помощью \ro. Здорово!

Но я определенно слишком ленив, чтобы набирать две команды только для того, чтобы изменить свои хэши, и я думаю, что вы тоже. Мы могли бы попытаться создать еще одну команду, которая объединяет две другие.

Чудесно! Теперь мы можем преобразовать наши старые хэши в новые и выровнять ключи за один проход.

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

Все хорошо, мы только что исправили OCD для Ruby. Но как насчет SCSS, например? Мы могли бы отсортировать свойства в алфавитном порядке и выровнять значения.

Мы уже знаем, как выравнивать значения (благодаря EasyAlign), нам просто нужно научиться сортировать наши свойства по алфавиту. Будем надеяться, что в VIM есть множество встроенных команд, таких как :sort, которые… ну… сортируют строки в алфавитном порядке.

Таким образом, мы можем следовать тому же процессу, что и ранее, и создать другой наш метод OCD и добавить для него псевдоним:

Хорошо, это круто, но теперь вы можете возразить, что было бы трудно напомнить название всех команд OCD, которые у нас есть… И вы были бы совершенно правы.

Более того, Ruby полезен только в контексте файла Ruby. Второй удобен только в контексте файла SCSS.

Было бы здорово, если бы мы могли вызывать один и тот же метод или ярлык и иметь поведение, зависящее от типа файла, не так ли? Да, конечно, было бы!

Давайте сделаем это!

Поскольку VIM — лучший редактор, нам просто нужно переместить наши команды и функции в файл с именем ruby ​​или scss в нашей папке ~/.vim/after/ftplugin.

Затем автоматически, каждый раз, когда вы открываете файл и VIM определяет, что это файл ruby, он будет использовать ваш файл ~/.vim/after/ftplugin/ruby.vim.

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

На этом этапе мы могли бы получить ожидаемый результат со следующей конфигурацией:

Аккуратный! Теперь мы можем вызвать \ocd в файле Ruby или в файле SCSS, и он применит команду good на основе текущего типа файла.

Ниже пример на старом рубиновом хэше.

Первоначально опубликовано на сайте kevin.disneur.me 30 апреля 2015 г.