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ą.
vim
copy-paste
vi
Danilo Bargen
źródło
źródło
+
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.)*P
wydaje 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ą).*P
?Odpowiedzi:
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'paste
opcja 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ć,
'paste
aby 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.
źródło