Czy istnieje sposób na skopiowanie bloku tekstu do schowka systemowego, aby można go było wkleić w innym programie?
cut-copy-paste
os-clipboard
Thameera
źródło
źródło
cpip
,cpi{
.Odpowiedzi:
W przypadku systemów opartych na X11 (tj. Linux i większość innych systemów podobnych do UNIX ) istnieją dwa schowki, które są od siebie niezależne:
^C
i wklejane^V
(To jest jak MS Windows).Systemy OS X i Windows mają tylko jeden schowek.
W systemach X11 dostępnych jest również wiele narzędzi, które synchronizują te schowki; więc jeśli wydają się być takie same, być może jeden z nich działa.
Vim ma dwa specjalne rejestry odpowiadające tym schowkom:
*
używa PODSTAWOWY; pamięciowy: S TAR S elekt (na kopię-on- a elekt)+
używa SCHOWKA; mnemonic: CTRL PLUS C (dla wspólnego skrótu klawiszowego)W systemach Windows i OS X nie ma różnicy między
+
i*
, ponieważ systemy te mają tylko jeden schowek, a oba rejestry odnoszą się do tej samej rzeczy (nie ma znaczenia, którego używasz).Możesz używać tych rejestrów jako dowolnego rejestru. Na przykład za pomocą schowka PODSTAWOWEGO
*
z poleceniamiy
ip
:"*yy
"*p
Możesz użyć tego jako wygodniejszych skrótów klawiszowych:
Jeśli chcesz „automatycznie” łączyć się ze schowkiem systemu zamiast odwoływać się do niego ręcznie przez cały czas, możesz ustawić
clipboard
zmienną:unnamed
na użycie*
(PODSTAWOWE, po wybraniu)unnamedplus
użyć+
(SCHOWEK,^C
)Teraz wystarczy użyć
yy
spowoduje przejście do schowka systemu, zamiast nienazwanego rejestru Vima ip
wklei schowek systemu.Możesz także przypisać do tych rejestrów, tak jak każdy rejestr z
let
::let @+=42
:let @*=42
To
clipboard
ustawienie ma kilka dodatkowych opcji (takich jak filtry wykluczania); ale to są podstawy. Zobacz:help 'clipboard'
całą historię ;-)gVim
Jeśli używasz gVim, możesz uzyskać zachowanie kopiowania przy wybieraniu podczas korzystania
:set guioptions+=a
.Jest to domyślnie włączone w systemach X11 (kopiowanie do PODSTAWOWEJ), ale nie w MS Windows i OSX (ponieważ zaznaczenie dowolnego tekstu zastąpiłoby Twój schowek).
Nie
+clipboard
?Aby Vim
+clipboard
działał, Vim wymaga flagi funkcji; można sprawdzić, czy Vim ma to za pomocą:echo has('clipboard')
od wewnątrz vim (jeśli wyjście jest0
, to nie występuje, jeśli jest1
, to jest), lub sprawdzając dane wyjściowevim --version
dla+clipboard
.Większość dystrybucji Linuksa jest domyślnie dostarczana z „minimalną” kompilacją Vima, której nie ma
+clipboard
, ale zazwyczaj można ją zainstalować:vim-gtk
lubvim-gnome
.vim-X11
i uruchomvimx
zamiastvim
( więcej informacji ).gvim
(pozwoli to również+clipboard
na normalnevim
).Możesz także użyć
xclip
,xcopy
lub,xsel
aby skopiować tekst do schowka; zobacz następujące pytania dotyczące rozwiązań:SSH
Możesz także użyć schowka na zdalnych komputerach, jeśli włączysz przekazywanie X11 przez SSH. Jest to szczególnie przydatne w przypadku powyższej wskazówki, ponieważ można następnie użyć
xclip
do uzyskania dostępu do schowka na pulpicie. Vim na maszynie, do której śpiewasz, nadal będzie potrzebował tej+clipboard
funkcji.Wymaga to
ForwardX11Trusted
ustawienia i powinno być wykonywane tylko z zaufanymi serwerami , ponieważ daje to serwerowi prawie całkowitą kontrolę nad twoją sesją X11:Aby te ustawienia były trwałe (więc nie trzeba ich dodawać za
-XY
każdym razem), możesz zrobić coś takiego~/.ssh/config
:Neovim
Neovim odnowił obsługę schowka. Wbudowany w interfejs został usunięty i zastąpiony przez system, który nazywają narzędzia zewnętrznego, takiego jak
xclip
,xsel
lubpbcopy
/pbpaste
.Powinien automatycznie podnieść te narzędzia i z nich korzystać. W systemie OS X
pbcopy
ipbpaste
powinien być domyślnie dostępny, w systemie Linux prawdopodobnie chcesz go zainstalowaćxclip
, ponieważ jest on najbardziej dostępny (w rzeczywistości istnieją dwie wersjexsel
z niezgodnymi flagami . To naprawdę głupie).Zobacz także
:help clipboard
w Neovim.źródło
"<Space>
aby uzyskać"
. W takim przypadku należy nacisnąć"<Space>+y
lub"<Space>*y
skopiować."
może wybrać wiele nazwanych rejestrów."+
to nie magia, to tylko rejestracja+
. Tak na przykład, jeśli chcesz skopiować trzy rzeczy jednocześnie i wkleić każdy z nich, jeden po drugim, można"1y
,"2y
a"3y
później"1p
,"2p
i"3p
. Jest to naprawdę potężne i nie istnieje w prawie żadnym innym edytorze. Innym interesującym zastosowaniem jest przeglądanie przechowywanych makr. Na przykład, jeśli nagrywasz za pomocąqq
, ale zdajesz sobie sprawę, że musisz to naprawić, możesz: w linii tymczasowej"qp
naprawić to i"qd
.Pozostałe odpowiedzi dotyczą sposobu kopiowania tekstu z bufora do schowka systemowego. Inną częstą operacją jest kopiowanie tekstu z innego rejestru do schowka. Na przykład, jeśli szarpnąłeś już jakiś tekst
"
(rejestr domyślny), możesz chcieć załadować ten rejestr do schowka.Możesz to zrobić za pomocą
:let
:let @+=@"
- kopiuje domyślny rejestr do schowkalet @*=@"
- kopiuje domyślny rejestr do podstawowego wyboru X11 („schowek myszy”)let @+=@a
- skopiuj z rejestrua
do schowkaZauważ, że działa to ogólnie dla rejestrów:
let @a=@b
kopie rejestrują się wb
celu rejestracjia
.źródło
Ze strony http://vim.wikia.com/wiki/Accessing_the_system_clipboard
To zmienia domyślny rejestr Vima na
+
rejestr, który jest połączony ze schowkiem systemowym. Od:h clipboard-unnamedplus
:źródło
:version
w Vimie, aby sprawdzić, czy + X11 pojawia się na liście zawartych funkcji. Możesz również sprawdzić, czy funkcja „unnamedplus” jest dostępna za pomocą:if has('unnamedplus')⏎ echo 'yes'⏎ endif
Jeśli nie używasz Linuksa, powinieneś użyć unnamedplus zamiast unnamedplus.W kompilacjach, które go obsługują, nazwanym rejestrem
*
jest schowek systemowy. Aby skopiować tekst z Vima do schowka systemowego, możesz zaznaczyć tekst w trybie wizualnym, a następnie nacisnąć, "*yaby skopiować go do schowka systemowego.I odwrotnie, użyj, "*paby wkleić tekst ze schowka systemowego do Vima.
źródło
Polecam używać Gvim i dodać to do
.vimrc
:Umożliwia to obsługę CtrlC, CtrlX, CtrlVjak notatnika w systemie Windows.
Pamiętaj, że spowoduje to również dodanie innych typowych skrótów systemu Windows, takich jak CtrlSdla
:w
, CtrlAdla zaznaczania wszystkich itp.źródło
Jeśli twój vim nie obsługuje
+clipboard
, możesz użyć wtyczki fakeclip dla systemów Linux, Mac, Windows, Tmux, Screen, ...źródło
Każda inna odpowiedź obejmowała wszystkie ważne rzeczy dotyczące rejestrów. Chciałbym dodać jeszcze jedną rzecz, której używam.
W Vimie jest sposób na bezpośrednie skopiowanie wizualnie zaznaczonego tekstu do schowka. Po prostu umieść to w swoim pliku vimrc :
Dzięki temu za każdym razem, gdy wizualnie wybierzesz jakiś tekst, zostanie on skopiowany do schowka. Aby uzyskać więcej informacji na ten temat,
:help guioptions
BTW, to jest tylko dla gVim.
źródło
guioptions+=a
jest również wspomniany w odpowiedzi Carpetsmoker.Możesz także użyć polecenia globalnego, aby umieścić określony wzór w schowku. Może być przydatny w sytuacjach, w których informacje są rozproszone w pliku, a ręczne kopiowanie jest podatne na błędy i męczenie.
Najpierw wyczyść rejestr, który otrzyma informacje
Następnie skopiuj do niego wszystkie linie zawierające wzór
Wreszcie przeniesienie (skopiowanie) informacji do schowka systemowego
jeśli spróbujesz skopiować każdą linię zawierającą „wzór” bezpośrednio do schowka, to nie zadziała, ponieważ schowek nie ma możliwości dodania nowej zawartości, dlatego używamy tutaj normalnego rejestru vim do przechowywania wszystkich linii zawierających wzór od razu, a następnie umieszczenie go w schowku.
OBS: Konieczne jest wyczyszczenie rejestru przed jego użyciem, a użycie wersji UPPERCASE rejestru pozwala nam na dołączanie treści, w przeciwnym razie też nie będzie działać.
źródło
Jeśli nie możesz wymyślić, jak dostać się
+clipboard
do pracy, czego z jakiegoś powodu nie mogłem, możesz to zrobić.Zakładając, że chcesz tylko skopiować sekcję pliku, robię
shift
+,v
aby przejść do trybu wizualnego i zaznaczać tylko linie, które chcę skopiować. Potem to robię.Wyjaśnienie
'<,'>
- oznacza, że użyłeś trybu wizualnego, aby wybrać zakres (nie wpisujesz tego)w !{cmd}
- zapisz zakres na standardowe wejściecmd
, patrz więcej na:help w_c
wl-copy
ixclip
są programami, do których możesz przeciągać tekst i dodają go do schowka systemowegoPonadto, gdy znajdzie się to w twojej historii, nie musisz ponownie wpisywać całego tekstu. Po prostu wybierz w trybie wizualnym, wpisz,
w
a następnie naciśnij w górę, a polecenie powinno się automatycznie uzupełniać. Ponadto nie musisz używać trybu wizualnego. Możesz ustawić dowolny zakres.źródło