Chcę używać wyrażeń regularnych perla w wierszu poleceń vim. Na przykład, aby wpisać wielkie litery w bieżącym wierszu, możesz wpisać:
:s/(\w+)/\u$1/g
Chcę używać wyrażeń regularnych perla w wierszu poleceń vim. Na przykład, aby wpisać wielkie litery w bieżącym wierszu, możesz wpisać:
:s/(\w+)/\u$1/g
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.
(
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
: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ą +perl
funkcją. Widzieć
:help if_perl.txt
:help perl-patterns
rozwiązał jedną rzecz, której wcześniej nie lubiłem w vimie
Możesz także użyć:
/\v"your regex"
zamiast:
/"your regex"
nnoremap / /\v
i vnoremap / /\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.)
Użyj wtyczki eregex.vim . Jest to bardzo przydatne i nie miałem z tym żadnych problemów.