2010-09-24 2 views
26

Просто перейдите к Vim на данный момент. В TextMate я мог форматировать код, нажав Cmd - Alt - [. Как я могу достичь того же в Vim?Формат Ruby-код в Vim


См. Ответ ниже для команды. Я обнаружил, что мне также понадобилось следующее в моем .vimrc, так что Вим знал, как автоиндивидуальный Ruby.

if has("autocmd") 
    filetype indent on 
endif 

ответ

40

Vimcasts имеет a useful screencast на эту тему, что вы можете быть заинтересованы в

gg=G 

gg => go to start of file 
= => apply autoformatting 
G => ... to the end of file 
+0

Я пробовал это в рубиновом файле, и он отступал от всех строк, так что они начали 8 символов слева. Он полностью проигнорировал исходный отступ. – opsb

+0

См. Редактирование в оригинальном вопросе для моего решения проблемы форматирования. – opsb

+0

Просмотрел vimcast, это стоит посмотреть – opsb

0

ggVGgq будет переформатировать весь файл в соответствии с текущим типом файла

+5

Я думаю, ggVG = будет делать то же самое. –

+1

Я пробовал ggVGqg, и хотя документ был переформатирован, он был совершенно неправильным, например. первая строка первого определения метода была прикреплена к концу строки определения класса. Я вообще не имел никакого смысла в форматировании. – opsb

+0

См. Редактирование в оригинальном вопросе для моего решения проблемы форматирования. – opsb

3

Try:

gg=G 

в нормальном режиме.

15

Когда я вижу вопросы о Vim и переформатирования и reindenting, я обычно чувствую замешательство. Но это довольно легко.

Reindenting, done with = ключ, представляет собой процесс смены строки, не вставляя никаких концов линии - без жесткой упаковки. Проще говоря, начальные столбцы выбранных строк могут меняться, но контент не может.

С другой стороны, переформатирование является полной переделкой выбранного фрагмента кода. Проще говоря, все удаляется и записывается снова в соответствии с правилами языка, определенными в Vim. Легко, да?

Обычные лаковая для reindentation должны пойти в начало файла (гг), изменение выбора линии (V), перейти на конец файла (G) и выполнить reidentation (=).

Это отступов в Vim: ггВG=

переформатирование шаблона начинается с теми же самыми ключами (ггВG), но вместо равного ключа вы делаете gq - reformat Команда Vim.

Это форматирование в Vim: ггVGгд

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

Reformatting for Ruby работает только при установке плагина vim-ruby.

Я должен был опубликовать это on my blog ;-) Не Vim круто? Это.

0

Я выпустил плагин VIM, который сделает более подробное форматирование для файлов Ruby. В дополнении к отступу, он делает такие вещи, как удалить конечные пробельные символы и последовательно пространства вне метода декларации:

vim-autoformat-rails

0

Для небольшого отступа, попробуйте: =}, =)

2

Если вы ищете более чем просто отступы, посмотрите на ruby-beautify. Он может быть интегрирован с vim через vim-autoformat.

Смежные вопросы