O ile mi wiadomo, nie ma zdarzenia autocmd do kopiowania i wklejania. Byłem więc ciekawy, czy można napisać skrypt, który przełącza tryb wklejania, gdy schowek jest używany do wklejania. Jeśli może obsłużyć Shift+Insert, Ctrl+Shift+va przycisk myszy w średnim lub nawet skrypt wewnętrzny, to byłoby niesamowite, ale jestem przede wszystkim stara się rozwiązać sprawę ze skrótów klawiaturowych. Mój vim ma -clipboard
atrybut.
vim
shortcuts
copy-paste
paste
Myśliciel
źródło
źródło
"+y
?y
zamiastp
?) Nieważne, chodzi mi o to, że jeśli używaszp
(z"+
/"*
lub bez rejestru, jeśli maszset clipboard^=unnamedplus
), wklejony tekst jest zawsze taki, jak się spodziewasz. <kbd> Shift + Insert </kbd>, <kbd> Ctrl + Shift + v </kbd> i środkowy przycisk myszy to niewłaściwy sposób wklejania tekstu w Vimie.p
jest właściwą drogą. Chyba że pracujesz zdalnie.p
(iP
).Odpowiedzi:
Kiedy używasz GVIM lub wklej za pomocą poleceń
p
/i_CTRL-R
razem z rejestrem"*
lub"+
Vim rozpoznaje wklej i wszystko powinno działać dobrze. To, o czym mówisz, to prawdopodobnie'pastetoggle'
ustawienie, które służy do przełączania trybu „wklej” podczas wklejania przez terminal (np. Środkowym przyciskiem myszy lub skrótem terminalu). Powodem istnienia mapowania trybu i przełączania jest dokładnie to, że Vim nie jest w stanie wykryć, czy tekst pochodzi od użytkownika, który pisze, czy wkleja.Możesz w jakiś sposób nauczyć swój terminal, aby wysyłał
'pastetoggle'
klucz Vima przed i po wklejeniu (gdy Vim jest obecnie uruchomiony); nie da się tego rozwiązać w samym Vimie.źródło
Moje pytanie jest właściwie błędne, ponieważ nie odzwierciedla dokładnie tego, czego chciałem, ale teraz mam to, czego chcę. Przynajmniej w mojej konfiguracji (
set nopaste
,set autoindent
,copyindent
,smarttab
są ustawione), otrzymuję pasty stylu pastę plub Pi nopaste pasty ze stylu Ctrl-Shift-vw trybie wstawiania. Jeśli wkleję Ctrl-Shift-vw trybie normalnym, mam dziwne zachowanie.Moje ustawienia mogą nie naśladować
pastetoggle
ustawień identycznie i nie odpowiadają na pytanie w tytule, ale rozwiązują problem, który miałem. Testowałem zarówno pod kątem mięty, jak i terminatora.źródło
Mam poniżej
map
ustawione w vimie:Możesz dodać ten wiersz do swojego
~/.vimrc
lub~/.exrc
.Myślę, że jest to dość proste i nie wymagałoby wielu wyjaśnień.
(Re) mapuj środkową mysz, aby ustawić tryb wklejania, następnie wklej zawartość
*
rejestru, a następnie wyłącz tryb wklejania.Potrzebujesz do tego myszy .
Uwaga: Jak już sugerowano w komentarzach do pytania, nie jest prawidłowym sposobem wklejania tekstu w vimie. Ale teraz mamy zwyczaj wklejania na Linuksie. Przydaje się to mapowanie.
Testowany na vimie 7.4 na gnome-terminalu przez putty + xming.
źródło