2010-08-05 9 views
29

W jednym z edytorów opartych na platformie Eclipse, który wypróbowałem ostatnio (prawdopodobnie RubyMine), gdy słowo kluczowe Ruby otworzyło się lub zamknięta została wybrana metoda lub blok, odpowiednie słowo kluczowe "otwórz/zamknij" zostało podświetlone. Podobny do sposobu, w jaki Vim jest w stanie podświetlić odpowiedni nawias otwierający/zamykający.Vim: Podkreśl pary słów kluczowych w Ruby (def/end, do/end, etc)

Na przykład, jeśli wybrałem opcję "def", podświetli się odpowiedni "koniec". Pracował również dla bloków do/end.

To było naprawdę przydatne, szczególnie w przypadku długich, a czasem mocno zagnieżdżonych plików Rspec.

Czy ktoś wie, jak to osiągnąć w Vim?

+2

Spójrz na ruby-matchit.vim - który pozwala na odbijanie się pomiędzy 'def' ...' end' i 'class'..'end' oraz firmą używającą'% '. Logika powinna być taka sama, jak chcesz. http://vim.sourceforge.net/scripts/script.php?script_id=290 – Telemachus

+1

Kolejną użyteczną wtyczką Vima dla 'x' ... końcówek' end' jest "endwise" Tima Pope'a, która automagicznie wstawi 'koniec' za każdym razem, gdy rozpoczynasz sekcję, która wymaga jednej: http://github.com/tpope/vim-endwise – Telemachus

+0

Dzięki za komentarze Telemachus. Nie jest to dokładnie to, czego szukam, ale mimo to pomocne. ruby-matchit może służyć temu samemu celowi, ale wolałbym, jeśli to możliwe, wyróżnienie, jak opisano w moim pytaniu. Gdy dowiem się więcej o Vimie, mogę zbadać, czy możliwe jest wdrożenie się. – pakeha

Odpowiedz

2

Wygląda na to, że wtyczka vima nie pasuje do paren: http://vimdoc.sourceforge.net/htmldoc/pi_paren.html prawdopodobnie mógłbyś zagłębić się w ten kod, aby zobaczyć, jak rozszerzyć go na dopasowanie do innych rzeczy.

+1

nie będzie działać, ponieważ jako ': help matchpairs' mówi: Obecnie dozwolone są tylko pary znaków jednobajtowych, i muszą być różne. –

+0

Tak, obecnie mówi ... ale kod da pojęcie o dopasowywaniu paren, a następnie można go rozszerzyć tak, aby obsługiwał pary multi-char tak? To miejsce, aby zacząć :) –

8

VIM (do 7,2) nie może podświetlić zamkniętych par "jeśli/koniec", ponieważ pasujące ustawienia akceptują pojedynczy znak (patrz: pomocna para dopasowań). Polecam używanie zamiast składane, pod warunkiem, że dokładnie wciąć kod:

:set foldmethod=indent 

następnie użyj: zc, za, aby upewnić się, że jesteś w odpowiednim bloku.

17

Jeśli używasz Vima 7.3, powinieneś mieć dostęp do makra vim MatchIt.

Dodaj do pliku .vimrc i powinieneś być w stanie użyć%, aby dopasować bloki ruby.

Możesz spojrzeć na wtyczkę typu pliku dla ruby, aby zobaczyć, co będzie się przemieszczać.

+0

Idealne! Działa znacznie lepiej niż ': set foldmethod = indent' i' zc' +1 –

1

znalazłem tej wtyczki w poszukiwaniu odpowiedzi na ten sam problem, że pracuje dla podstawowego kodu Ruby, ale nie przetestować go na rspec itp

Wystarczy zainstalować go poprzez pathogen i dodać let g:hl_matchit_enable_on_vim_startup = 1

https://github.com/vimtaku/hl_matchit.vim

Powiązane problemy