Przerwij pastę vim


5

Czasami wklejam dużo danych do vima (> 5000 wierszy) i zapominam włączyć tryb wklejania. W takim przypadku vim jest zajęty przez kilka minut, próbując poprawnie wciąć cały tekst (co NAPRAWDĘ robi się źle z jakimś rodzajem danych, wcięcie go o jakieś 10 000 znaków).

Czy istnieje sposób na przerwanie procesu wklejania? ESC, CTRL-C i CTRL-D nie działają.


Nie wiem, jak to przerwać, ale w zależności od konkretnego rodzaju vima, który posiadasz, możesz wkleić go ze schowka systemowego, co nie powoduje, że Vim go sformatuje. Skorzystaj z +rejestru, np "+P. (Lub w X11 użyj *rejestru, aby wkleić wszystko, co zostało ostatnio wybrane; ten sam tekst, który otrzymasz, gdybyś kliknął środkowym przyciskiem myszy na większość aplikacji X.)
echristopherson

Hm, *Pwydaje się , że nie wkleja właściwych rzeczy ... Ani podświetlony tekst, ani ctrl + c nie są wklejane (wkleja inne dane, których nie wiem skąd pochodzą).
Danilo Bargen,

Czy umieściłeś wcześniej podwójny cytat *P?
echristopherson,

Próbowałem zarówno z podwójnym cytatem, jak i bez niego, ten sam wynik ...
Danilo Bargen,

Myślałem, że CTRL + C powinien działać. Jestem ciekawy, jakiego systemu i wersji Vima używasz? A GUI czy terminal? Może to błąd ...
Ben

Odpowiedzi:


3

Jeśli używasz wersji GUI, naprawdę powinieneś wkleić z rejestru schowka ( "*) lub wyboru X11 ( "+), jak już zasugerował echristopherson. Zamiast klikać środkowym przyciskiem lub cokolwiek innego, nawigujesz w miejscu, w którym chcesz wkleić, a następnie piszesz "*P, w tym początkowy cytat. Podczas wklejania za pomocą poleceń plub P, vim wie, że wklejasz, dlatego 'pasteopcja jest niepotrzebna - bez względu na to, z którego rejestru wklejasz.

Jeśli wklejasz z terminala, vim tak naprawdę nie ma nic do powiedzenia w tej sprawie. Emulator terminala zrzuci wszystko, co go poinstruowałeś, a w większości przypadków vim nie może rozróżnić, czy znaki, które wciąż przychodzą, są pisane, czy wklejane. Dlatego musisz ustawić, 'pasteaby powiedzieć vimowi, że nie powinno robić wcięć i tym podobne.

W rezultacie, jeśli wklejasz z terminala, wszystkie znaki, które chcesz wkleić, są umieszczane w kolejce za jednym razem i są zasadniczo wysyłane do vima, więc naprawdę nie możesz nic zrobić, aby to przerwać. Z punktu widzenia emulatora terminala CTRL+ cjest zwykłym znakiem, dlatego ustawia się w kolejce za wszystkimi innymi rzeczami, które czekają na wklejenie. Kiedy vim w końcu zobaczy znak CTRL+ c, jest już za późno, ponieważ nie ma już nic do przerwania.

(Aktualizacja: W zależności od emulatora terminala, CTRL+ ci podobne sygnały mogą być wysyłane w sposób priorytetowy. W szczególności zauważyłem to w Putty, która dostarcza sygnał przerwania natychmiast i rzeczywiście pozwala mi przerwać operacje niewłaściwego wklejania. ale naprawdę wiem, jak to działa.)


Krótka historia: Jeśli to w ogóle możliwe, użyj "*Plub "+Pwklej (co działa nawet w niektórych emulatorach terminali, jeśli dobrze pamiętam). To jest „poprawny” sposób wklejania; wszystko inne jest w zasadzie obejściem tego rodzaju bólów głowy.

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.