2009-10-19 19 views
20

Często muszę wkleić coś do kilku sąsiednich linii, w tej samej lub podobnej pozycji. Boli, gdy trzeba przesuwać kursor z powrotem na początek wklejonej zawartości za każdym razem, kiedy przechodzimy do następnej linii. Jak mogę wkleić (jak w poleceniu "p") bez przesuwania kursora? Lub, jak mogę szybko przywrócić kursor do miejsca, w którym znajdował się przed wklejeniem?Wklej w Vimie bez przesuwania kursora

Odpowiedz

20

Najbezpieczniej bez niszczenia rejestr jest wykonanie następujących czynności:

p`[ 

Jeśli chcesz utworzyć skrót, wystarczy użyć dowolnej funkcji Vima Mapa które są odpowiednie dla Ciebie, np

noremap p p`[ 
+0

Czy istnieje sposób, aby bezpiecznie korzystać z więcej znaków, tak aby nie zniszczyć coś, co zdarzy się w tym rejestrze? Może jakiś inny rejestr, który normalnie nie jest używany - nie jestem pewien, co jest dostępne lub zwyczajowe. – aehlke

+0

Przepraszam, w moim komentarzu miałem na myśli, że chciałbym zapisać to jako zaprogramowane polecenie, żeby było mniej pisać. – aehlke

+0

Zobacz poprawioną odpowiedź. – carl

-4

"K"? (jak na strzałce w górę)

Jeśli użyjesz "p" do wklejenia tekstu poniżej bieżącego wiersza, kursor znajdzie się w pierwszym wierszu wklejonej treści. Wpisanie "k" w trybie poleceń powoduje przejście do linii nad początkiem wklejanej treści.

+0

Proszę ponownie przeczytać moje pytanie. – aehlke

+0

p pasty po kursie. to nie musi być w następnej linii. zależy to od wybranego bloku do skopiowania (v vs. shift-v). -1 –

+0

to nie OP chce – mko

10

Ilekroć mam kilka kroków do powtórzenia kilku razy, nagrywam makro, które jest banalnie łatwe w Vimie. Ogólną metodą jest

  1. Ustaw kursor w miejscu, w którym chcesz dokonać pierwszej zmiany.
  2. Wpisz qx, aby rozpocząć nagrywanie naciśnięć klawiszy.
  3. Dokonaj pierwszej edycji.
  4. Przenieś kursor do miejsca, w którym powinna rozpocząć się druga edycja.
  5. Naciśnij ponownie przycisk q, aby opuścić nagrywanie.
  6. Wpisz @, aby odtworzyć makro i dokonać kolejnej edycji. Polecenie @ przyjmuje liczbę, dzięki czemu możesz powtórzyć edycję tyle razy, ile chcesz, za pomocą jednego polecenia.

Więc w twoim przypadku, cała sekwencja klawiszy Aby nagrać makro może być

qxp`[jq 

i [email protected] odtworzyć go pięć razy w sumie 6 zmian.

Należy zauważyć, że znak po pierwszym znaku q jest rejestrem, w którym zapisywane jest makro i może to być dowolna litera, a nie tylko x. Tylko uważaj, że twoje makra nie szarpią tekstu do rejestru, w którym obecnie się nagrywa, powoduje to prawdziwy bałagan!

Makra mogą być dowolnie długie i złożone. Mogą zawierać polecenia trybu Ex, a nawet wywoływać inne makra.

+0

To wspaniałe wyjaśnienie, dziękuję. Będę eksperymentować z tym. – aehlke

+0

Czy możesz rozwinąć ten bit -> "Po prostu bądź ostrożny, twoje makra nie szarpią tekstu do rejestru, który obecnie rejestruje"? Dzięki –

1

Możesz szybko wrócić do miejsca, w którym wcześniej wkleiłeś, naciskając CTRL-o. Powoduje to przejście do poprzedniej pozycji kursora.

Wklejam linie z całego dużego dokumentu do jednego z 3 znaków (poruszam się po liniach, aby znaleźć się pod nagłówkiem). Najszybszy sposób znalazłem to:

'ap 

następnie CTRL-O

Powiązane problemy