Używam VI i VIM od lat (30 lub więcej) (w xterms, nie w swoim własnym oknie, gvim) i mam ogromną bibliotekę poleceń vim , które daję vim używając środkowego przycisku myszy jako wyboru.
Na przykład często robiłem takie rzeczy jak ...
vi {many_hundreds_of_files}
paste vim commands using mouse - one paste per file.
Wybór obejmowałby wiele poleceń VIM do wykonywania takich czynności, jak zamiana testu, formatowania, przesuwania linii itp. Itd., I zwykle kończy się na: w i: następne polecenia VIM na końcu wyboru, więc vim jest gotowy, aby wkleić go ponownie do następnego pliku. To pozwala mi aktualizować ogromną liczbę plików na BARDZO skomplikowane sposoby, bez potrzeby specjalnych skryptów (takich jak edycja lokalna Perla), aby to zrobić.
Niektóre z tych past poleceń vim mają ponad 200 linii (przechowywane w plikach tekstowych, które wyskakują na ekranie i „kopiuj wszystko”! Wprowadzają one wiele zmian w zestawie tysięcy plików, które ponownie formatuję. Ale tylko dla określonego zestawu plików, nie dla mojej codziennej pracy z vimem: EG: Ponowne formatowanie plików tekstowych / danych.
Problem...
Podczas mojej ostatniej poprawki systemowej (Fedora 25) vim wkleja teraz zaznaczenie myszy JAKO TEKST, a nie jako polecenia vim, i nie mogę tego powstrzymać!
Nadal działa dobrze na innym systemie (Fedora 24).
Jeśli chcę wkleić tekst, wklejam go przed wklejeniem! Nie chcę, aby VIM automatycznie wklejał zaznaczenia jako tekst, gdy nie jest w trybie wstawiania. Rozumiem, że miało to na celu zabezpieczenie, ale dla mnie jest to GŁÓWNY problem z użytecznością.
Próbowałem z powrotem randki wpisów terminfo (xterm-256color) z maszyny, która tego nie robi (szczególnie wpis „terminous” kmous). Spojrzałem również na ustawienie vim ": set mouse =" (które jest zerowe!). Nie wiem, czy jest to xterm (wątpliwy), czy coś, co zmieniło się w VIM (prawdopodobnie), a dzienniki zmian i Google były nieprzydatne.
Nic jednak nie wydaje mi się tak stare.
vim
zmiana: Jak możnavim
wewnątrzxterm
coś wiedzieć wprowadzone poprzez klawiaturę lub wklejone przez klawiszem myszy? Nie znam takiego mechanizmu. Z drugiej stronyxterm
wie, że się wykonuje,vim
więc może zdecydować, aby otoczyć wklejaniei
i <esc>. Spróbuj (a) z innym rodzajem okna terminala i (b) kopięvim
z inną nazwą. To powinno pomóc w zawężeniu przyczyny problemu.vim
przejęcie metody wklejania. Może spróbuj ssh'ing lub telnetować na maszynie i wkleić w ten sposób. Jeśli masz okno Windows, użyj putta, aby ssh na maszynie Fedora25 i wkleić w ten sposób.gvim.exe
(graphic-vim) i wiersz poleceńvim.exe
. Wklej „itext” w gvim.exe i otrzymaszitext
. Wklej go w vim.exe, a otrzymasztext
pastetoggle
opcja?Odpowiedzi:
Cóż, po przejrzeniu wielu stron internetowych, z których wiele zawierało wskazówki, które nie działały, znalazłem podpowiedź (dodatkowy tekst wokół pasty), która doprowadziła mnie do przyczyny i rozwiązania problemu.
Wygląda na to, że vim wbudował w to wiele „fałszywych” wpisów termcap, których używa, gdy rozpoznaje określone terminale (i czasem się myli, choć w tym przypadku nie było źle).
Ustawienia termcap w vimie są bardzo liczne, ponieważ NIE pojawiają się na normalnej liście ustawień „: set all”. Aby je zobaczyć, musisz użyć „: set termcap”. Określone „niestandardowe” ustawienie termcap to „t_BE” (patrz vim „: help t_BE”). Wbudowana pomoc „xterm-bracketed-paste” wyjaśnia to ustawienie termcap wewnętrznych do vim.
Zasadniczo, jeśli to ustawienie jest zdefiniowane (w tym przypadku przez Vima, a nie termcap / terminfo), wtedy vim wyśle je do xterm podczas uruchamiania, co mówi xterm, aby dodał specjalne kody wokół dowolnego tekstu wklejanego przez użytkownika z zewnętrznego źródła. Kiedy vim je zobaczy, automatycznie przechodzi nie tylko w tryb wstawiania, ale także ustawia tryb wklejania, aby nie formatować tekstu.
Później (tryb wklejania) wydaje mi się BARDZO przydatny! To pierwsze przysparza mi kłopotów.
Rozwiązanie brute force wyłącza się wklejanie nawiasów, dodając to do „.vimrc”
Alternatywne rozwiązanie ....
Zamiast całkowicie wyłączać wklejanie nawiasów, przestań podejmować działania vima, gdy zobaczy początkową sekwencję wklejania terminali (z myszy), w trybie poleceń lub w trybie normalnym.
Użycie tego oznacza, że jeśli wkleisz tekst w trybie wstawiania, vim nie będzie próbował sformatować (wcięcia) tekstu, który jest więcej niż prawdopodobnie już wcięty.
Nie oznacza to, że nie muszę już przełączać trybu wklejania, ponieważ używam również przełączania trybu wklejania (mapowanego na F2), aby wyłączyć „showbreak” i „listchars” (wyświetlanie zawijanych linii, tabulatorów, spacji bez przerw i dodatkowe spacje na końcu linii). Nadal będę musiał ustawić vima w tym trybie, gdy chcę dokonać wyboru myszy, aby wkleić go w innym miejscu.
Komentarze i sugestie dotyczące rozwiązań są mile widziane.
źródło