2011-12-16 9 views
12

giả sử tôi có set cindent trong .vimrc
def func() Tiếp theo Enter, và sau đó gõ end, nó được thụt vào (không phù hợp với các def)

Làm thế nào để reindent từ khóa end (căn chỉnh nó đến def).

Thậm chí sử dụng endwise.vim plugin không khắc phục vấn đề
https://github.com/tpope/vim-endwise.git
Nó cho biết thêm tự động các end từ khóa nhưng một lần nữa indentedLàm thế nào để Autoindent mã nguồn Ruby trong Vim

Trả lời

2

vimfiles bao gồm mã ruby ​​indention thông minh và rất nhiều điều hữu ích khác

ruby mã được định dạng tự động như

class Foo 
    def bar 
    if xxx 
     blah 
    else 
     blahblah 
    end 
    barfoo 
    barfoo 
    end 
end 
+0

gì làm việc cho tôi được cài đặt 'vim-pathogen'
https://github.com /tpope/vim-pathogen.git – user815693

21

Hãy thử sử dụng smartindent thay vì cindent (theo hành vi thụt lề giống như C) và bật thụt lề cụ thể theo loại tệp.

Bạn cũng có thể cần phải tắt tính tương thích vi.

Hãy thử thêm này cho bạn vimrc:

" Turn off vi compatibility 
set nocompatible 

set smartindent 
set autoindent 

" load indent file for the current filetype 
filetype indent on 
+0

Tôi nhận được thụt đầu dòng nhưng nó sai dựa trên loại tệp? Đối với các tập tin ruby ​​tôi nhận được tab thụt đầu dòng khổng lồ, trong khi tôi chỉ nhận được 2 khoảng trống? –

+1

Và để tắt 'set nosmartindent',' set noautoindent', 'filetype indent off' – Dorian

0

này đã làm việc cho tôi.

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

Trong trường hợp của tôi đây là những gì cố định vấn đề thụt đầu dòng của tôi (ví dụ như nhảy ở những nơi ngẫu nhiên):

set smartindent 
set noautoindent 
filetype indent off