Używanie% w językach bez nawiasów klamrowych


17

W językach C i C mogę %przeskakiwać do odpowiedniego nawiasu klamrowego, na którym znajduje się kursor. To dobrze znana „sztuczka”.

Ale na przykład w Ruby:

def fun
    [1, 2].each do |n|
    end
end 

To nie działa, ponieważ ruby ​​nie używa znaków w matchpairs( (:),{:},[:],<:>domyślnie ustawione na .

Próbowałem to ustawić, ale to nie działa:

:set matchpairs=def:end
E474: Invalid argument: matchpairs=def:end

Czy mogę zmusić to do pracy z takimi językami jak Ruby? Zauważ, że nie jest to pytanie specyficzne dla Ruby, innymi przykładami mogą być skrypty powłoki ( if/ fi) lub Lua ( function/ end) i wiele innych.

Odpowiedzi:


17

Możesz użyć wtyczki matchit . Jest to uwzględnione w nowoczesnych dystrybucjach vim, więc wszystko, co musisz zrobić, aby go użyć, to dodać do swojego vimrc:

runtime macros/matchit.vim

Możesz również spakować go jako wtyczkę, jeśli wolisz. Domyślnie rozpoznaje wiele słów kluczowych (w tym defi end) i może zostać rozszerzony o więcej.


1
Uwaga: pisanie :runtime macros/matchit.vimnie działa; musisz włożyć vimrc i zrestartować Vima ...
Martin Tournoij

Ja to zrobiłem. Nadal nie działa dla mnie :(
Thirupathi Thangavel

0

Następujący doc matchit, poniższe dodatki w ~ / .vimrc zadziałały dla mnie

:runtime macros/matchit.vim
filetype plugin on

Witamy na stronie! Jest to zasadniczo ta sama odpowiedź, co istniejąca, zaakceptowana odpowiedź. Różnica polega na twoim filetypepoleceniu: może być pomocne, jeśli szczegółowo opisałeś, dlaczego dodałeś ten wiersz i jak pomaga odpowiedzieć na pytanie. (Masz też kilka literówek: „doc”, „the”.)
Rich
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.