2010-10-13 7 views
22

Chcę używać zawartości rejestru jako wzorca wyszukiwania w Vimie.Użyj wartości rejestru jako wzorca wyszukiwania

Chciałbym zrobić to z linii poleceń, więc nie mogę użyć składni <c-r>, ponieważ zakłada sesję interaktywną.

Jest możliwe użycie rejestru jako zastąpić wzór, jak to

:%s/foo/\[email protected]/g 

Jednak używając tej składni jako wyszukiwania wzór nie działa

:%s/\[email protected]/foo/g 

wyprowadza

E64: \= follows nothing 
E476: Invalid command 
+0

Ale większość ludzi, którzy tu przychodzą, prawdopodobnie szuka "": [odpowiednie pytanie + odpowiedzi] (https://stackoverflow.com/q/101258/1143274). –

Odpowiedz

11

Nie sądzę, że to możliwe bezpośrednio, ale można użyć :exe do osiągnięcia tego celu:

:exe '%s/' . @a . '/foo/g' 
+0

Preferuję tę odpowiedź, ponieważ mogę przekazać wiele zmiennych do skryptu. Na przykład, potrzebuję określić zakres wyszukiwania według dwóch zmiennych, które mogę zrobić, używając tego: ': exe '/ ^'. @a. "/,/^". @b . "/ s /". @ c. "/". @d. "/ g''. – lerner

11

w deseń (nie części zamiennej), \= oznacza „0 lub 1 raz” (jest to synonim dla pozycji \? pozycja preferowana powinna być większa niż \?, ponieważ ta ostatnia oznacza literałową ? patrząc wstecz.

Aby uzyskać więcej informacji, zobacz :help /\= i help pattern.

Dlaczego nie:

let @/[email protected] 
%s//foo/g 
+0

Zaakceptowałem odpowiedź Al, ponieważ działa również na inne polecenia, takie jak '' vimgrep'' (którego również szukałem pod kontrolą). – pkit

+1

Bez problemu. Nie przepraszaj przy wyborze odpowiedzi, wiemy, że możesz wybrać tylko jedną. – Benoit

10

Można to zrobić z / rejestru

To nie rozwiąże żadnego problemu, ale wydaje mi się, że rejestr / jest wyjątkowy w tym zakresie: jeśli pozostawisz szukany termin pusty, użyje on tego, co znajduje się w rejestrze /; mianowicie, cokolwiek szukałeś na końcu.

Więc jeśli chcesz zastąpić foo z treścią @a, można to zrobić:

  1. Szukaj foo
  2. %s//\[email protected]/g (lub podświetlić tekst i rozpocząć wpisywanie :s zastąpić tylko w tym zakresie)
Powiązane problemy