2009-10-27 31 views
12

Tôi đang sử dụng vim để phát triển ruby, php và perl. Có phím tắt % để nhảy từ đầu của một khối (chương trình con/hàm/phương pháp/nếu) đến cuối và ngược lại. Đối với tôi, số % trên thẻ do/kết thúc bằng ruby ​​không hoạt động.Làm thế nào để nhảy từ làm đến cuối của một khối Ruby bằng cách sử dụng Vim?

Tôi có thể làm điều đó bằng cách nào?

+1

% nhảy đến khung khớp hoặc dây đeo, đó là lý do tại sao nó không hoạt động trong ruby . Vẫn là một câu hỏi hay, phỏng đoán của tôi sẽ giống như trên các biểu thức cú pháp/gấp, nhưng tôi không có đầu mối thực sự ... :) – falstro

Trả lời

11

matchit plugin cho phép kết hợp nhiều hơn chỉ là dấu ngoặc đơn và nhận xét. Có thể tìm thấy phiên bản ruby ​​here.

+0

plugin rất tuyệt, cũng rất hữu ích cho các thẻ HTML. Khi thực hiện và kết thúc, tôi gặp sự cố. Tôi có thể nhảy từ đầu -> làm, nhưng tôi không thể nhảy từ vị trí này trở về kết thúc, bởi vì không phải là ở đầu dòng tôi nghĩ. – gustavgans

+6

Lưu ý rằng với các phiên bản Vim mới hơn, matchit được bao gồm theo mặc định, và theo như tôi có thể nói, ruby-matchit.vim chỉ phá vỡ mọi thứ. Đừng cài đặt gì. Tất cả những gì bạn muốn là như sau trong .vimrc của bạn (nó không được kích hoạt theo mặc định vì các vấn đề tương thích): 'runtime macros/matchit.vim' –

+1

Nếu ai đó đang sử dụng [Vundle] (https://github.com/gmarik/Vundle. vim), chỉ cần thêm 'Bundle 'vim-scripts \ matchit.zip'' vào .vimrc của bạn và chạy BundleInstall. –

6

với matchit plugin và mã này trong ~/.vim/ftplugin/ruby.vim nó hoạt động bây giờ :)

" Matchit support: 
if exists("loaded_matchit") 
    if !exists("b:match_words") 
    let b:match_ignorecase = 0 
    let b:match_words = 
\ '\%(\%(\%(^\|[;=]\)\s*\)\@<=\%(class\|module\|while\|begin\|until\|for\|if\|unless\|def\|case\)\|\<do\)\>:' . 
\ '\<\%(else\|elsif\|ensure\|rescue\|when\)\>:\%(^\|[^.]\)\@<=\<end\>' 
    endif 
endif 
Các vấn đề liên quan