Nie mogę skopiować z vima. Czy możesz zdiagnozować mój plik .vimrc?

7

Oparłem swój plik vimrc na popularnym wątku tutaj na SO, i chociaż jest świetny, mam prawdziwy problem z kopiowaniem tekstu z vima do innych aplikacji linuksowych. Podejrzewam, że błąd leży w tym vimrc, ponieważ mogę kopiować, gdy vim jest ładowany z pustego pliku vimrc.

Co tu jest nie tak?

Dodatkowe pytanie: jak skopiować z mojego gościa ubuntu do systemu Windows?

Mój plik vimrc można znaleźć tutaj: http://dpaste.org/X4MY/

DevX
źródło
1
Używasz vimlub gvim?
Benoit
krzepkość. Jestem w Ubuntu.

Odpowiedzi:

6

Nic w twoim pliku .vimrc nie wydaje mi się problemem, może poza linią

set clipboard+=unnamed

Problem polega na tym, że excludetermin opcji „schowek”, który jest domyślnie obecny w przypadku wykrycia X, musi być ostatnim terminem. Korzystając z +=, podałeś unnamedostatni termin. Lepszym rozwiązaniem byłoby

set clipboard^=unnamed

który umieszcza się na unnamedpierwszym miejscu w ciągu opcji.

Inną rzeczą, którą możesz wypróbować, ponieważ działa dla ciebie pusty plik .vimrc, jest wykonanie binarnej przycinania pliku .vimrc. Oznacza to, że umieść :finishpolecenie jako pierwszy wiersz w pliku .vimrc, uruchom ponownie vim i sprawdź, czy kopiowanie działa, a następnie przenieś :finishpolecenie mniej więcej do połowy pliku .vimrc, uruchom ponownie vim i spróbuj ponownie. Powtórz, próbując zawęzić region zawierający problematyczne polecenia. Linie komentowania również działają zamiast :finishpolecenia. Możesz utrzymać plik .vimrc otwarty w jednym Vimie podczas restartowania innego Vima, aby cały proces przebiegał trochę szybciej.

garyjohn
źródło
2
Polecenie: wykończenie pomogło mi rozwiązać problem. Sprawcą była linia „set mouse = a”. dzięki!
DevX
1
Zakładam, że próbujesz skopiować / wkleić, zaznaczając tekst, a następnie klikając środkowo w innym oknie. Jeśli uruchamiasz vima w terminalu i ustawiłeś mouse = a, vim otrzymuje kliknięcia myszą zamiast aplikacji terminala, więc po kliknięciu i przeciągnięciu zaznaczasz tekst w trybie wizualnym vima. Jest to bardzo przydatne w vimie i możesz nie chcieć go po prostu wyłączać. Jeśli chcesz wybrać, musisz znaleźć klucz kontrolny, który powoduje, że kliknięcia są obsługiwane przez terminal zamiast vim. Jeśli używasz szpachli, po prostu przytrzymaj Shift podczas wybierania. Z jakiego programu terminalowego korzystasz?
mkomitee
Przekazywanie problemu za pomocą „set mouse = a” i przydatności: zakończenia. Dzięki!
Gulasz
5

Jak kopiujesz rzeczy z Vima? Vim używa kilku rejestrów, w których rejestr + służy do dzielenia się informacjami ze schowkiem systemowym. Na przykład, aby skopiować całą linię do schowka systemowego, użyj

"+Y

Następnie użyj CTRL-V, aby wkleić jak zawsze.

Daniel Torres
źródło
1
Widziałem tę sugestię w kilku miejscach, ale dla mnie to nie działa.
DevX
3

Naciśnij shiftklawisz podczas zaznaczania tekstu, jeśli masz włączoną obsługę myszy w vimie. Normalny wybór (bez shift) włącza tryb VISUAL. Używanie shiftprzekazuje zdarzenia myszy do emulatora terminala.

ninjalj
źródło
Ok, zbliża mnie to do celu. Mogę teraz kopiować, gdy przytrzymuję klawisz Shift (wcześniej polecenie kopiowania było wyłączone w menu kontekstowym). Jedynym problemem jest to, że kopiuje również moje numery linii. nie chcę tego. jakieś wskazówki?
DevX
Jeśli naciśniesz klawisz Shift podczas kopiowania lub wklejania, użyjesz funkcji kopiowania i wklejania terminala, a nie Vima, więc skopiujesz to, co terminal „widzi”, w tym numery linii. To działa w celu rozwiązania problemu, a nie jego rozwiązania.
garyjohn
2

Z jednego z twoich komentarzy:

Widziałem tę sugestię w kilku miejscach, ale dla mnie to nie działa.

Rozwiązanie:

Prawdopodobnie nie masz vimzainstalowanej z clipboardwłączoną funkcją, która jest wymagana do kopiowania / wklejania do / ze schowka systemowego.

Jeśli wpiszesz vim --versionw wierszu polecenia, prawdopodobnie zobaczysz -clipboardna liście funkcji. Spróbuj skompilować vima ze źródła z następującą opcją:

 ./configure --with-features=huge

(uwzględnij inne potrzebne opcje), a następnie przejdź do makei make install. Teraz powinieneś zobaczyć na +clipboardliście funkcji i możesz szarpać za pomocą schowka systemowego

"+y

i wklej ze schowka systemowego za pomocą

"+p

źródło
Możesz także być w stanie zainstalować dodatkowe pakiety zamiast kompilować ze źródła. Zainstalowałem vim-gui-commonw Kubuntu 12.10.
Jacob Dalton
0

O twoim dodatkowym pytaniu: wiem, że to nie jest skomplikowane, ale zazwyczaj mam apache działający na wszystkich moich komputerach - fizycznych i wirtualnych - dlatego mogę kopiować pliki gdzieś w drzewie dokumentów i wyświetlać je (i pobierać) z wszystkich innych maszyn .

pavium
źródło
0

Ale lubię obsługę myszy!

Po przeszukaniu dokumentacji pomocy znalazłem również ten mały klejnot:

Uwaga: Po włączeniu myszy w terminalu, kopiuj / wklej użyje rejestru „*, jeśli istnieje dostęp do serwera X. Z Xtermowej obsługi przycisków myszy można nadal korzystać, trzymając wciśnięty klawisz Shift.

Rzeczywiście, przytrzymanie klawisza shift umożliwia regularne wklejanie starej kopii za pomocą PuTTY.

abcd
źródło
0

Skomentuj linię

set mouse=a

w .vimrcpliku.

użytkownik1514248
źródło