Настройка правил форматирования в Vim - PullRequest
4 голосов
/ 24 марта 2012

Я не Vim Noob, но я тоже не профессионал. Если у меня есть сегмент, в данном случае javascript, код, такой как

function foo(a,b,c,d) {
if (one||two) {
if (rhyme||reason) {
return true;
}
return false;
}
}

и я форматирую его (gg=G), я получаю следующий код:

function foo(a,b,c,d) {
   if (one||two) {
      if (rhyme||reason) {
         return true;
      }
      return false;
   }
}

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

function foo( a, b, c, d ) 
{
   if ( one || two ) 
   {
      if ( rhyme || reason ) 
      {
         return true;
      }
      return false;
   }
}

Есть ли способ проинструктировать Vim, как анализировать код? Я могу использовать хак с регулярными выражениями для поиска парантезов и пробелов, но он разваливается, когда рассматриваются все операторы (!,%,*,-,+,=,/)

Ответы [ 2 ]

5 голосов
/ 24 марта 2012

Несколько разных комментариев:

  • Оператор = обрабатывает только отступы; если вы не переопределите его поведение с помощью :set equalprg=foo. Это не изменит содержание каждой строки. См :help =.

  • Оператор gq переформатирует текст между строками. По умолчанию он использует свой внутренний форматер, который принимает параметры, установленные с помощью :set formatoptions (см. :help fo и :help fo-table). Если вам известен внешний инструмент, который будет переформатировать код так, как вам нужно, вы можете установить formatexpr (для каждого буфера) или formatprg (глобально) для вызова этой программы, когда вы делаете gq. Смотри :help gq. Использование этого вместо gg=G просто становится gggqG.

  • На сайте vim есть плагин для украшения Javascript здесь . Я не использовал это. Это просто vimscript, так что если вы хотите взломать его, чтобы отформатировать вещи именно так, как вы хотите, это все для вас.

4 голосов
/ 23 марта 2013

Попробуйте этот плагин vim: https://github.com/Chiel92/vim-autoformat

Одно нажатие кнопки, и все готово.Он использует gq и устанавливает внешние программы форматирования для правильного его использования.

Таким образом, в принципе, если вы установите этот плагин вместе с einars js-beautify, он сможет форматировать JavaScript из коробки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...