Как сделать автоиндентирование исходного кода Ruby в Vim - PullRequest
12 голосов
/ 16 декабря 2011

предположим, у меня есть set cindent в .vimrc
def func(), затем Enter, а затем введите end, с отступом (не выравнивается по def)

Как переопределить ключевое слово end (выровняйте его по def).

Даже использование endwise.vim plugin не решает проблему
https://github.com/tpope/vim-endwise.git
Он добавляет автоматически ключевое слово end, но снова indented

Ответы [ 4 ]

22 голосов
/ 16 декабря 2011

Попробуйте использовать smartindent вместо cindent (что соответствует поведению C-подобного отступа) и включите специфичный для типа файла отступ.

Возможно, вам также потребуется отключить совместимость с vi.

Попробуйте добавить это к вам .vimrc:

" Turn off vi compatibility
set nocompatible

set smartindent
set autoindent

" load indent file for the current filetype
filetype indent on
2 голосов
/ 16 декабря 2011

vimfiles включает в себя смарт-отступ рубинового кода и много других полезных вещей

код рубина автоматически форматируется как

class Foo
  def bar
    if xxx
      blah
    else
      blahblah
    end
    barfoo
    barfoo
  end
end
0 голосов
/ 04 марта 2017

В моем случае это то, что исправило мои проблемы с отступами (например, прыжки в случайных местах):

set smartindent
set noautoindent
filetype indent off
0 голосов
/ 24 мая 2013

Это сработало для меня.

" Ruby indentation from http://ubuntuforums.org/showthread.php?t=290462
if has ("autocmd")
    filetype indent on
endif
...