2013-04-05 12 views

Odpowiedz

19

Gdy znak separatora (/ w Twoim przypadku) pomiędzy {pattern} i {string} zawarty jest w jednym z nich, to musi być uciekł z \. Sztuczka, której należy unikać, to użycie innego znaku separatora, np. #:

:%s#@\(\w\+\)#<a href="http://www.twitter.com/\1">\0</a>#gc 

PS: Jeśli powinien robić to, co myślę, że powinno to zrobić, Twój wzór jest źle; zobacz moją poprawkę.

+0

Tak, mój wzorzec również był błędny. –

+0

Dziękuję za wstępną odpowiedź, działało idealnie. Ciekawi mnie, dlaczego używamy '/ 1' do wstrzykiwania wzoru po raz pierwszy, a'/0' do wstrzykiwania go po raz drugi. –

+3

Och, czekaj. Myślę, że to rozumiem. '/ 0' wstrzyknie całe słowo, a'/1' wstrzyknie właśnie przechwyconą część. –

1

miałem ten problem i nie mogła odejść, dopóki nie okazało się, że plik .vimrc że miałem części, które ja skopiowane z innego jeżeli zawarte skróty, jak to na przykład:

abbrev gc !php artisan generate:controller

to skrót będzie bałagan moje poszukiwania i zastąpienie polecenia, które zazwyczaj wyglądają tak:

:%s/foo/bar/gc

rozszerzając że gc do !php artisan generate:controller, z tym że nie zrobi tego na miejscu/w czasie rzeczywistym. Sposób, w jaki ja clued był przeglądając historię komend (przez naciśnięcie : i strzałka w górę) i widząc

:%s/foo/bar/!php artisan generate:controller

Więc jeśli jesteś coraz spływu błędy znaków bez względu na to co robisz, ja zajrzeć

~/.vimrc

i zobaczyć czy można znaleźć tam problem.

0

:%s/\/apps/log_dir/g

gdzie ciąg zastąpić =/apps i zastąpić ciąg = LOG_DIR jak widzieliśmy/więc musimy użyć "\/"

Powiązane problemy