vim i schowek systemowy

9

Mogę przechwycić plik, skopiować i wkleić tekst za pomocą środkowego przycisku lub shift-insert.

Jak mogę skopiować tekst w vimie i wkleić go ze schowka systemowego?

przyznać
źródło
czasami używam sed -n5,10pdo drukowania linii 5-10, aby łatwiej kopiować i wklejać bez reakcji vima na mysz.
grantbow
tak naprawdę z wewnątrz vima polecenie wygląda tak:!sed -n 5,10p %
grantbow
Dziękuję za wszystkie komentarze i odpowiedzi. xclip jest czasem użyteczny, dzięki @ sergiy-kolodyazhnyy. Kiedy pracuję na różnych maszynach, czasami nie mam kontroli nad tym, który vim jest zainstalowany, ale pomocne są instrukcje sprawdzania odpowiedzi @muru, dzięki @ ashutosh-tripathy. Muszę częściej używać poleceń rejestru vim, aby zapamiętać je, kiedy ich potrzebuję. Jak wspomniałem w powyższym pytaniu, jeśli chcę to zrobić szybko, a plik jest mały, polecenie wewnątrz vima wygląda tak:!cat %
grantbow

Odpowiedzi:

12

Trzeba mieć z Vima clipboardi xtermclipboardfunkcji skompilowany w. W Ubuntu, są dostępne tylko z pakietami vim GUI ( vim-gnome, vim-gtk, vim-athena, itp).

Po zainstalowaniu jednego z nich możesz skopiować (i wkleić) rejestry schowka ( *i +). Z tego bardzo pouczającego postu na temat Vi i Vima :

W przypadku systemów opartych na X11 (tj. Linux i większość innych systemów podobnych do UNIX ) istnieją 2 schowki, które są od siebie niezależne:

  • PODSTAWOWE - Jest to kopiowanie przy wyborze i można je wkleić środkowym przyciskiem myszy.
  • SCHOWEK - Jest to kopiowane (zwykle) ^Ci wklejane ^V(To jest jak MS Windows).

Vim ma 2 specjalne rejestry odpowiadające tym schowkom:

  • *używa PODSTAWOWY; mnemonic: s tar is s elect (dla copy-on- s elect)
  • +używa SCHOWKA; mnemonic: CTRL + C (dla wspólnego skrótu klawiszowego)

Aby skopiować do rejestru, poprzedzaj polecenie kopiowania ( y) znakiem "i nazwą rejestru ( *na przykład). "*y, a następnie kliknij środkowym przyciskiem myszy, aby wkleić lub "+yi ShiftInsertwkleić.

muru
źródło
3

Z tego pytania wynika dość interesujące rozwiązanie . Zainstaluj xclip, a następnie potokuj dane wyjściowe polecenia do xclip ( cat file | xclip -selection clipboardna przykład), a następnie wklej je w dowolnym miejscu (jeśli jest w terminalu - użyj Ctrl ShiftV ). Okazuje się, że możesz faktycznie skrócić to polecenie xclip -sel clip, co nie jest do końca oczywiste po przeczytaniu strony podręcznika man lub zawartych tam przykładów.

Sergiy Kolodyazhnyy
źródło
2
Innym wyjściem jest skorzystanie z screena lub tmuxa wraz z tą wtyczką . W każdym razie coś musi zostać zainstalowane.
mur 24.04.2015
Jaki jest rzeczywisty schowek używany w serwerze x? Nic nie znalazłem /dev, ale tekst jest gdzieś przechowywany, prawda?
Sergiy Kolodyazhnyy
Zawsze zakładałem, że będzie w pamięci. Wydaje się to jednak miłym pytaniem dla systemów Unix i Linux .
mur 24.0415
3

Miałem problem, ponieważ mój vim nie obsługiwał schowka :

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Zainstalowałem vim-gnome (który obsługuje schowek), a następnie sprawdziłem ponownie:

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Teraz jestem w stanie skopiować i wkleić, używając odpowiednio „+ y” i „+ p”.

Ashutosh Tripathy
źródło