Od : pomóż wzorom Perla ... Wyrażenia regularne Vima są najbardziej podobne do wzorców Perla pod względem tego, co możesz zrobić. Różnica między nimi polega głównie na zapisie uhhmm ... to tak jakby powiedzieć, że chiński jest podobny do greckiego pod względem tego, co można komunikować. Różnica polega głównie na zapisie. regex to nic innego jak notacja! Różnice są denerwujące, jeśli jedna notacja jest mniej znana niż inna. Dlatego ludzie pytają przede wszystkim o perla!
dreftymac
Odpowiedzi:
19
Możesz filtrować dowolną linię lub zakres linii za pomocą zewnętrznego polecenia w vimie, używając! Na przykład możesz wykonać:
:.!perl -pe "s/(\w+)/\u\1/g"
który przefiltruje bieżącą linię przez to polecenie perla. (Tutaj, :aby przejść do trybu wiersza poleceń, a .następujące po nim oznaczają bieżącą linię; możesz również określić zakres linii lub %cały plik itp.)
Jeśli chcesz użyć wbudowanych wzorców zastępczych vima, najbliżej przyjdziesz to użyć opcji „bardzo magicznej” vima, \ v, w ten sposób:
:s/\v(\w+)/\u\1/g
zobacz :help patterni :help substitutepo więcej szczegółów. Nie sądzę, że „bardzo magia” jest dość identyczna z wzorami Perla, ale jest bardzo bliska. W każdym razie możesz zawsze używać samego perla, jeśli czujesz się z nim swobodniej, jak wyżej.
ponadto, z bardzo magią, nie musisz zapamiętywać, które (jest traktowane specjalnie, dopóki {nie jest: „wszystkie znaki ASCII oprócz„ 0 ”-„ 9 ”,„ a ”-„ z ”,„ A ”-„ Z ”i „_” ma specjalne znaczenie. ” dzięki!
Ayrat
10
Nie, nie możesz w ten sposób używać wyrażeń regularnych Perla. Aby uzyskać pomoc w nauce ekwiwalentów Vima dla składników wyrażeń regularnych Perl, patrz
:help perl-patterns
Możesz jednak użyć Perla jako zewnętrznego filtra, jak wyjaśniono przez frabjous. Możesz także wykonywać polecenia Perla w Vimie, używając interfejsu Perla, jeśli twój Vim został skompilowany z tą +perlfunkcją. Widzieć
Odpowiedzi:
Możesz filtrować dowolną linię lub zakres linii za pomocą zewnętrznego polecenia w vimie, używając! Na przykład możesz wykonać:
:.!perl -pe "s/(\w+)/\u\1/g"
który przefiltruje bieżącą linię przez to polecenie perla. (Tutaj,
:
aby przejść do trybu wiersza poleceń, a.
następujące po nim oznaczają bieżącą linię; możesz również określić zakres linii lub%
cały plik itp.)Jeśli chcesz użyć wbudowanych wzorców zastępczych vima, najbliżej przyjdziesz to użyć opcji „bardzo magicznej” vima, \ v, w ten sposób:
:s/\v(\w+)/\u\1/g
zobacz
:help pattern
i:help substitute
po więcej szczegółów. Nie sądzę, że „bardzo magia” jest dość identyczna z wzorami Perla, ale jest bardzo bliska. W każdym razie możesz zawsze używać samego perla, jeśli czujesz się z nim swobodniej, jak wyżej.źródło
(
jest traktowane specjalnie, dopóki{
nie jest: „wszystkie znaki ASCII oprócz„ 0 ”-„ 9 ”,„ a ”-„ z ”,„ A ”-„ Z ”i „_” ma specjalne znaczenie. ” dzięki!Nie, nie możesz w ten sposób używać wyrażeń regularnych Perla. Aby uzyskać pomoc w nauce ekwiwalentów Vima dla składników wyrażeń regularnych Perl, patrz
Możesz jednak użyć Perla jako zewnętrznego filtra, jak wyjaśniono przez frabjous. Możesz także wykonywać polecenia Perla w Vimie, używając interfejsu Perla, jeśli twój Vim został skompilowany z tą
+perl
funkcją. Widziećźródło
:help perl-patterns
rozwiązał jedną rzecz, której wcześniej nie lubiłem w vimieMożesz także użyć:
zamiast:
źródło
nnoremap / /\v
ivnoremap / /\v
do .vimrc, aby po wpisaniu działało/
.Oto rozwiązanie z http://vim.wikia.com/wiki/Perl_compatible_regular_expressions
:perldo s/(\w+)/\u$1/g
(Potwierdź za pomocą
:ver
tego+perl
lub+perl/dyn
jest wkompilowany.)źródło
Użyj wtyczki eregex.vim . Jest to bardzo przydatne i nie miałem z tym żadnych problemów.
źródło