Не знаю вашего мнения, но мне самому нравится, то есть, очень нравится, когда все чисто, с хорошими отступами, отсортировано по алфавиту… В какой-то момент просто читабельно.
Если я начну работать над кодом, который не соответствует этим правилам, я должен изменить его. Иначе я не смогу сосредоточиться на том, что делает код.
Если у вас одинаковые потребности, вы знаете, как болезненно изменять этот код вручную, снова и снова. Итак, я объясню вам, как мы можем настроить 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 г.