Nie można skopiować z vima do schowka systemowego


54

Jak wspomniano w tytule, nie mogę skopiować z vima do schowka systemowego. Viceversa działa, kopiowanie z zewnętrznego vima i wklejanie pjest w porządku.

Zainstalowałem obsługę schowka, wersja vima to 7.3.429:

$ vim --version | grep clip
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+xsmp_interact +xterm_clipboard -xterm_save 

Mam:

set clipboard=unnamedplus

w moim .vimrci jest ustawiony, gdy:

set clipboard?

lub

:echo has('clipboard')

Używam Ubuntu 12.04 LTS i vim wewnątrz gnome-terminal(ale także GVim ma ten sam problem). Dowolny pomysł?

Dzięki



Czy zrezygnowałeś z vima między pisaniem „+ y na zaznaczeniu wizualnym a próbą wklejenia poza vimem? Nie zadziała, jeśli to zrobisz
Samuel Peter

@SamuelPeter Nie, nie rzuciłem vima
gc5

1
Natknąłem się na ten problem, ponieważ robiłem ustawić clipboard+=unnamedpluscoś w ustawieniu domyślnym wyłączało to. Zmiana na clipboard=unnamedplus(np. Usunięcie innych ustawień) działała dla mnie.
JonnyRaa

Jak wspomniano @JonnyLeeds. Konfiguracja set clipboard+=unnamedi set clipboard+=unnamedplusnie działa podczas używania y i p do udostępniania schowka systemowego. :set clipboard?== clipboard=autoselect,exclude:cons\|linux,unnamed,unnamedplus; Po usunięciu pierwszego +, który jest set clipboard=unnamedi set clipboard+=unnamedplus, i działa !! :set clipboard?==clipboard=unnamed,unnamedplus
Marslo,

Odpowiedzi:


87

Oto, co działa dla mnie (Ubuntu 13.10):

Ponownie zainstaluj vim jako vim-gtk:

sudo apt-get install vim-gtk

wybierz, co chcesz za pomocą myszy - a następnie wpisz, aby skopiować do schowka :

"+y

wkleić do vima ze schowka :

"+p

Nie wiem dlaczego, ale porównanie wyników vim --versionpokazuje, że zwykła instalacja vima jest dość ograniczona w porównaniu do vim-gtk. Zastąpienie vima vim-gtk nie wpłynęło na żadne wtyczki.


Dalsza informacja:


1
Nie potrafię wyrazić, jak bardzo mi pomogłeś i jak bardzo się cieszę: D
7hi4g0

1
Co ciekawe, w dniu 14.04 zarówno zwykły VIM, jak i VIM-GTK mają xterm_clipboardwsparcie, ale "+pnie działa w zwykłym VIM. Zamiast przycinać do schowka, zwiększa ilość wybranych linii.
dotancohen,

1
Instalacja vim-gtkostatecznie działała dla mnie w 14.04.4, ale doświadczyłem rzeczy nieco inaczej niż inni komentując. Przed vim-gtkzainstalowaniem vim pokazywał -xterm_clipboard(tzn. Nie był włączony). Po zainstalowaniu vim-gtkpokazuje (+ xterm_clipboard). Sprawdzam to za pomocą vim --version | grep clip. W każdym razie ma sens, że potrzebujesz +xterm_clipboard!
przemyśleli

To świetne rozwiązanie. Właściwie to po raz pierwszy zrobiłem to po zainstalowaniu nowego systemu operacyjnego Ubuntu.
linbianxiaocao

Instalacja vim-gtk działała dla mnie. Dzięki
Miguel Mota,

6

Pierwszą odpowiedź pozostawię poniżej, ponieważ może być ważna dla innych osób, które szukają tego pytania.

Krótko mówiąc, wydaje się, że nie ma jednego rozmiaru dla wszystkich odpowiedzi, ale w przypadku „set clipboard = unnamedplus” jeden z „* p” lub „+ p” powinien działać ze schowka „systemowego”.

„* p” jest prawie na pewno tym, czego chcesz. ( stąd )


vim to program cli. Gdy używasz go w gnome-terminalu (lub dowolnym emulatorze terminali), crtl + c (lub dowolna kombinacja klawiszy) jest obsługiwany najpierw przez emulator terminala, następnie powłokę, a na końcu program (w tym przypadku vim). vim i ctrl + c prawie na pewno nigdy nie będą działać, ponieważ ctrl + c wysyła sygnał SIGINT do uruchomionego zadania. vim używa SIGINT do zatrzymania innych rzeczy, takich jak przerywanie trybu wstawiania lub zatrzymywanie funkcji wyszukiwania.

Innymi słowy. Ctrl + C nigdy tak naprawdę nie jest przekazywany do VIM. SIGINT jest przekazywany do VIM. SIGINT ma inne zastosowania w vimie, więc użycie do kopiowania prawdopodobnie nie zadziała (a nawet jeśli możesz to narzucić, nie jest to dobry pomysł).

Zamiast tego spróbuj trzymać się Ctrl + Shift + C i Ctrl + Shift + V (istnieją inne, ale myślę, że umieszczają tekst w schowku systemowym)

Szczerze mówiąc, niewiele wiem o gvimie.


Może myliłem cię .. Powiedziałem używając ctrl-cVIDEO ZEWNĘTRZNEGO i wklejania p, ale w vimie wiem, że muszę użyć y..
Zedytuję

1
LOL jeszcze nie miałem mojej kofeiny, przepraszam.
coteyr

5

Użyj w swoim vimrc:

set mouse=a

Umożliwi to ręczne wybieranie i kopiowanie za pomocą myszy.


3

Oprócz zaakceptowanej odpowiedzi , jeśli pracujesz zdalnie przez SSH (np. tmuxZ wieloma panelami z różnymi vimprocesami, między którymi chcesz kopiować), musisz także wyeksportować ekran X, ponieważ vimsłuży on xterm-clipboarddo łączenia różnych procesów. Możesz ustawić wyświetlanie X, uruchamiając

export DISPLAY=:0.0

To musi być uruchomione przed vim uruchomieniem i pod każdą inną powłoką, którą masz.


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.