2012-02-02 15 views
43

Mam dwie kolumny pełne tekstu i chcę je umieścić obok siebie. Na przykład, mamJak wkleić kolumnę tekstu po innej kolumnie tekstu w Vim?

abc 
def 
ghi 

i

123 
456 
789 

i chcę

123 abc 
456 def 
789 ghi 

Wszystko mogę znaleźć sposób, aby wkleić samą linię na końcu każdej linii kolumna. Nie mogę wymyślić, jak wkleić wieloliniowy blok tekstu na końcu innej kolumny.

Odpowiedz

38

Użyj bloku wizualnego (ctrl-v), aby wyciąć kolumnę z literami. Następnie przejdź do pierwszego wiersza kolumny liczbowej. Przejdź do końca i wykonaj jedną spację. Następnie wklej kolumnę z literą.

+0

Czy w trybie blokowania wizualnego jest coś szczególnego w przycinaniu/szarpaniu? Moim problemem w tej chwili jest to, że rejestr, którego używam, jest w rzeczywistości rejestrem '*', co oznacza schowek systemu. –

+1

Ten sam rejestr jest używany dla zwykłych 'y' i' p', jeśli nie określasz specjalnej z '' '. – Matej

+1

Uważam, że ta ładna wtyczka Ingo Karkata jest pomocna, gdy chce się" rzucić "wklej. http://www.vim.org/scripts/script.php?script_id=3355 –

14

Masz:

abc 
def 
ghi 

123 
456 
789 

Najedź kursorem na a. Następnie CTRL+V i przesuń kursor na i. Naciśnij y.

Następnie dodaj spację po znaku 3 i naciśnij p.

Gotowe.

41

Zastanawiam się, dlaczego "tryb bloków wizualnych" nie działa dla mnie. Kluczem jest yank (lub usunąć) w trybie wizualnym.

Potrzebuję skopiować niektóre rzeczy z kolumn Excela o zmiennej długości. Oto, jak to zrobić:

Names 
Donald Knuth 
Sebastian Thrun 
Peter Norvig 
Satoshi Nakamoto 

Age 
100 
50 
60 
45 

Załóżmy, że chcesz umieścić drugą kolumnę po pierwszej.

  1. Yank go w trybie wizualnym:
    • Przesuń kursor do początku Age
    • Naciśnij Ctrl + v aby wprowadzić tryb Visual
    • przesunąć kursor do 5 w 45
    • Naciśnij y szarpać (lub d do usunięcia)

Teraz szarpnąłeś w trybie wizualnym.

  1. masy (w trybie normalnym)

    • się na końcu pierwszej linii i dodać więcej miejsca, ponieważ jest mniejsza niż druga linia na przykład. Jeśli wkleisz "blok" bez dodawania dodatkowych spacji, nadpisze on "run" w Sebastian Thrun.

    • Teraz jesteś w pierwszym wierszu, wstaw kilka spacji po ostatniej postaci. Upewnij się, że nie jesteś w trybie wstawiania i naciśnij p, aby wkleić blok. (Jeśli chcesz wkleić w trybie wstawiania, należy ctrl+r ")

enter image description here

+0

@Abdo: Dzięki, pomogło mi to. Jednak mimo, że wklejanie w trybie normalnym działa zgodnie z oczekiwaniami, wstawianie za pomocą 'ctrl + r" 'nie działa tak, jak zostało to opisane.Jak to powinno być? – Xiphias

+0

@Xiphias wpisz': registers' i zobacz, co tam masz. masz coś pod '' ', prawdopodobnie wpisujesz' ctrl + r ''(upewnij się, że trzymasz przesunięcie) – Abdo

+0

Właściwie nazywa się to" trybem bloków wizualnych ", a nie tylko" trybem wizualnym ". – Fritz

2

Może się to wydawać oczywiste, ale jeśli wklejając z zewnętrznie skopiowanym bufor nie będzie działać z tylko wizualny Tryb wklej. Możesz najpierw zrobić zwykły wklej w pustym obszarze i wyciąć/wkleić w pionie, korzystając z powyższej metody.

0

Jeśli chcesz ręcznie ustawić typ rejestru do powiedzenia blokowo, użyj tego

:call setreg(0, getreg(0), 'b') 

lub

:call setreg('*', getreg('*'), 'b') 

Przydatne do wklejania kolumnę z edytora arkuszy kalkulacyjnych.

Aby uzyskać szczegółowe informacje, patrz: :help setreg i vimtip.

Powiązane problemy