Najbardziej wydajny sposób na zastąpienie całego bufora?

10

Obecnie mam dwie podobne metody, aby zastąpić cały bufor innym tekstem (powiedzmy w schowku).

Metoda nr 1:

  1. usunąć wszystkie wiersze: :%d.

  2. wklej tekst: "+P(lub podobny:) :put+.

Metoda nr 2:

  1. wizualnie zaznaczyć wszystkie wiersze: ggVG.

  2. wklej tekst: "+P.

Jednak nie mogłem znaleźć sposobu, aby to zrobić jednym poleceniem. Najbliższym z nich jest :changepolecenie. Ale wydaje się, że nie działa dobrze z rejestrami. Oczywiście mogę stworzyć jakąś funkcję i / lub zmapować klucz, aby to zrobić. Ale zanim będę mógł dokonać wszystkich tych dostosowań, chcę się upewnić:

Czy jest jakieś wbudowane polecenie zastępujące zakres wierszy innym tekstem? Czy możesz :%replace+zastąpić cały bufor tekstem w schowku?

Naitree
źródło
2
Nic nie wiem z góry mojej głowy, ale jeśli często to robisz, dlaczego nie utworzyć mapowania / polecenia?
Matt Boehm,
5
Hmm, 1,$s/\_./\=@+nie jest rozwiązaniem: P :%d|put+jest bliżej, ale nie do końca.
Runium,
1
Zapomniałem gwiazdki po kropce ... 1,$s/\_.*/\=@+, która \_.pasuje do dowolnej postaci, w tym nowej linii.
Runium,
2
Czy mają do ponownego użycia bufora, czy byłoby to dopuszczalne, aby rozpocząć nowy bufor?
200_success
3
Myślę, że Sukminder :%d|put+pasuje do rachunku. Jest krótki i niezapomniany. Drugie polecenie jest po prostu zbyt tajemnicze, aby poprawnie zapamiętać i wpisać.
Lie Ryan,

Odpowiedzi:

2

Możesz zrobić, ggvG<CTRL-G>aby wizualnie wybrać cały bufor i wejść Select-mode. Jest to najprostszy sposób na zastąpienie bufora tekstem, który planujesz wpisać. Być może będziesz w stanie wykonać Select-modemapowanie, :smapktóre rozwiąże twój problem.

Aaron Massey
źródło
0

Jednym ze sposobów zastąpienia całego bufora schowkiem może być polecenie zewnętrzne, na przykład:

:%!pbpaste
:%!echo my_text

Zobacz także: Udostępnianie schowka w systemie Mac OS X.

Lub za pomocą podstawienia:

:%s/\_.*/\=@+/
:%s/\_.*/my text/

Alternatywnie użyj :%d|put+(jak już sugerowano w komentarzach).

kenorb
źródło