2017-06-10 43 views
6

Najczęściej gdy robie znajdowania i zamieniania w vi zrobię to tak:Jak powrócić do poprzedniej czynności podczas wyszukiwania znaleźć zastąpić potwierdzić w vi?

:%s/find/replace/gc 

Daje to możliwość pominięcia przez naciśnięcie n lub wymienić naciskając y. Ale czasami będę pomijać jeden z dużych plików, naciskając n, kiedy zamierzałem nacisnąć y.

Jak przejść wstecz do poprzedniej i podać drugą zmianę?

Zasadniczo, jak I find (search) w innym kierunku tymczasowo? dzięki.

+0

dzieje się w 'vim' też – Sother

+0

Zauważ, że' Shift + N' NIE DZIAŁA :) – Sother

+1

W trybie potwierdzania substytucji tylko wyzwalacze '(y, n, q, l, a,^E,^Y)' keys praca. –

Odpowiedz

2

To nie jest odpowiedź na pytanie, ale bardzo dobra alternatywa. Niedawno odkryłem wtyczkę CtrlSF, która znacznie poprawia proces wyszukiwania/zamieniania.

Zasadniczo wyniki wyszukiwania są zapisane w buforze i można wykonać wszystkie zastępstwa w tym pojedynczym buforze.

W swoim scenariuszu najpierw zrobić :CtrlSF find, dostać bufor ze wszystkich meczów we wszystkich plikach, a następnie zrobić /find i przenieść z n nad swoimi celami i zmienić je (oczywiście, rzeczywiście można zmienić tylko pierwszy z nich a następnie powtórz zastąpienie za pomocą .).

Jeśli przegapisz jakiś cel, po prostu naciśnij N, aby powrócić do poprzedniego wyniku i zastąp go.

2

Nie jestem pewien, czy chciałbyś przerwać bieżącą operację szukania-zamiany i wznowić ją ponownie. Ale jeśli jest to dopuszczalne, tutaj jest moja propozycja:

  1. Zacznij swoje znalezisko-wymienić sposób wymienić: :%s/find/replace/gc
  2. Po przypadkowo przeskoczyć podstawienie naciskając n, przerwać wyszukiwanie naciskając <ctrl-C>
  3. Prasa <shift-N> wrócić do poprzedniego wystąpienia swojej find terminu
  4. Run Find-wymienić trochę inaczej, gdy jesteś w tym słowie: :.,$s/find/replace/gc
  5. Kontynuuj operację

Ta funkcjonalność działa z natywnymi funkcjami vim bez konieczności instalowania jakiegokolwiek dodatku.

Uwaga: .,$ zakres specyfikator wskazuje wykonać :s (substitute) działanie na różnych liniach, które są uruchamiane z obecnego linii (oznaczonej przez .) i aż do ostatniegolinii (oznaczonej przez $).

Uwaga2: To może być wam znany, ale rekomendację dla każdego, kto natyka się na tym stanowisku szukasz czegoś podobnego - The % zakres specifier wskazuje wykonać :s (substitute) pracę nad wszystkie linie z aktywnego bufora.