Skopiuj, usuń, a następnie wklej w Vimie


15

Wczoraj zacząłem z Vimem i mam problem ze zrozumieniem funkcji kopiuj i wklej. Rozumiem, że kopiuję Wchodzę w tryb wizualny, zaznaczam, a potem szarpię. Następnie przechodzę do wiersza, do którego chcę wkleić, ale częściej nie muszę usuwać tekstu z tego wiersza. Robię to za pomocą xlub dw. To powoduje, że moja oryginalna kopia jest nadpisywana (jak xi dwwydaje się ciąć). Jak to obejść?

Aby podać przykład

$foo = $this->foo->property;
thislineuses($foo);

Tak więc z powyższym kodem, który kopiuję $this->foo->property, chciałbym przejść do linii 2, usunąć $fooi wkleić. Problem w tym, że kiedy usuwam $fooz linii 2, to jest to, co zostaje wklejone zamiast $this->foo->property.

Odpowiedzi:


16

Spójrz na :h copy-move. Domyślne szarpnięcie lub usunięcie przechodzi do miejsca zwanego rejestrem (rejestrem o nazwie "). Jeśli musisz usunąć jakiś tekst przed wklejeniem, musisz unikać nadpisywania rejestru x, jak odkryłeś. Na szczęście możesz użyć dowolnej innej litery lub cyfry, aby nazwać inny rejestr.

  • "ayy(pociągnij linię do rejestru a)
  • x, dditp. (usuń część tekstu do rejestru bez nazwy, ")
  • "ap(wklej tekst z rejestru a)

9

Jeśli problem polega na tym, że wystarczy wymienić niektóre na textniektóre text2, po prostu zaznacz i szarpnij text2. Następnie zaznacz texti naciśnij plub, Paby wkleić text2zamiast text.

Szybki dalszy przewodnik po niektórych popularnych poleceniach vima to http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know

Cieszyć się!

Edycja: pamiętaj, że pwkleja tekst za kursorem i Pprzed kursorem.


jest to miłe, ponieważ nie musisz myśleć o rejestrach pośrednich, aby się do nich szarpać. to po prostu działa.
Jon Schoning

7

Możesz skopiować do rejestru nazwanego "ayw, usunąć i wkleić z rejestru nazwanego "ap.

Zwykle jednak łatwiej jest po prostu zmienić kolejność wykonywania czynności. Wklej, a następnie usuń lub usuń, a następnie skopiuj / wklej.

Alternatywnie możesz usunąć z rejestru czarnej dziury "_d. Zobacz /programming//q/54255/70863


3

Masz różne rejestry, których możesz użyć do przechowywania różnych wartości tekstowych. Jeśli chcesz zapisać tekst w innym rejestrze niż miejsce, w którym zostanie usunięty tekst (tj. Od użycia xlub d w), użyj następujących czynności:

Aby zapisać tekst w rejestrze a:

  • naciśnij " a[polecenie szarpnięcia i ruchu] (zapisuje tekst do rejestru a)
  • przejdź do miejsca, w którym chcesz wkleić tekst
  • naciśnij " a p(wklej tekst z rejestru a)

Możesz użyć rejestru dla każdej litery na klawiaturze i każdego numeru. Usunięcie tekstu nie spowoduje użycia tych rejestrów, więc tekst pozostanie w rejestrze, dopóki nie zakończysz sesji lub nie umieścisz ręcznie czegoś innego.


0

Nie musisz zaznaczać całej linii, jeśli używasz v(w przeciwieństwie do V) trybu wizualnego. Jeśli o to prosisz.

Jeśli mówisz o modyfikowaniu skopiowanego tekstu, najpierw skopiuj i usuń części.

A jeśli chcesz skopiować, zmodyfikuj oryginał, a następnie wklej, a następnie możesz szarpać do innego rejestru. Jak "2y, potem zmodyfikuj, a następnie idź gdzie indziej i "2p.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.