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 indented
Làm thế nào để Autoindent mã nguồn Ruby trong Vim
Trả lời
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
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
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? –
Và để tắt 'set nosmartindent',' set noautoindent', 'filetype indent off' – Dorian
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
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
gì làm việc cho tôi được cài đặt 'vim-pathogen'
https://github.com /tpope/vim-pathogen.git – user815693