Gibt es eine Möglichkeit, einen Textblock in die Systemzwischenablage zu kopieren, damit ich ihn in ein anderes Programm einfügen kann?
cut-copy-paste
os-clipboard
Thameera
quelle
quelle
cpip
,cpi{
.Antworten:
Für X11- basierte Systeme (dh Linux und die meisten anderen UNIX- ähnlichen Systeme) gibt es zwei voneinander unabhängige Zwischenablagen:
^C
und eingefügt^V
(es ist wie bei MS Windows).OS X- und Windows- Systeme haben nur eine Zwischenablage.
Für X11-Systeme gibt es auch eine Reihe von Tools, die diese Zwischenablagen für Sie synchronisieren. Wenn sie also identisch zu sein scheinen, kann einer von ihnen ausgeführt werden.
Vim hat zwei spezielle Register, die diesen Zwischenablagen entsprechen:
*
benutzt PRIMARY; mnemonic: S Teer ist S elect (für Copy-on - s wählen)+
benutzt CLIPBOARD; Gedächtnisstütze: STRG PLUS C (für die allgemeine Tastenkombination)Unter Windows und OS X gibt es keinen Unterschied zwischen
+
und*
, da diese Systeme nur eine Zwischenablage haben und beide Register auf dasselbe verweisen (es ist egal, welches Sie verwenden).Sie können diese Register als jedes Register verwenden. Verwenden Sie beispielsweise die PRIMARY-Zwischenablage
*
mit den Befehleny
undp
:"*yy
"*p
Sie könnten dies vielleicht als bequemere Tastenkombination verwenden:
Wenn Sie sich "automatisch" mit der Zwischenablage des Systems verbinden möchten, anstatt ständig manuell darauf zu verweisen, können Sie die
clipboard
Variable festlegen :unnamed
verwenden*
(primär, bei der Auswahl)unnamedplus
verwenden+
(Zwischenablage^C
)Wenn Sie jetzt nur verwenden,
yy
wird anstelle des unbenannten Registers von Vim die Zwischenablage des Systems aufgerufen undp
die Zwischenablage des Systems eingefügt.Sie können diesen Registern auch wie jedem anderen Register Folgendes zuweisen
let
::let @+=42
:let @*=42
Die
clipboard
Einstellung verfügt über einige weitere Optionen (z. B. Filter ausschließen). Aber das sind die Grundlagen. Siehe:help 'clipboard'
für die ganze Geschichte ;-)gVim
Wenn Sie gVim verwenden, können Sie bei der Verwendung Copy-on-Select-Verhalten erhalten
:set guioptions+=a
.Dies ist standardmäßig auf X11-Systemen aktiviert (Kopien nach PRIMARY), jedoch nicht unter MS Windows und OSX (wenn Sie einen beliebigen Text auswählen, wird Ihre Zwischenablage überschrieben).
Nein
+clipboard
?Für Vim ist das
+clipboard
Feature-Flag erforderlich, damit dies funktioniert. Sie können überprüfen, ob Ihr Vim dies hat, indem Sie:echo has('clipboard')
in Vim (wenn die Ausgabe vorhanden ist0
, ist sie nicht vorhanden, wenn sie vorhanden1
ist) oder die Ausgabe vonvim --version
for überprüfen+clipboard
.Die meisten Linux-Distributionen werden standardmäßig mit einem "minimalen" Vim-Build ausgeliefert, den es nicht gibt
+clipboard
, den Sie jedoch normalerweise installieren können:vim-gtk
odervim-gnome
.vim-X11
und ausführenvimx
stattvim
( mehr Infos ).gvim
(dies wird auch+clipboard
für den normalen Betrieb aktiviertvim
).Sie können auch verwenden
xclip
,xcopy
oderxsel
Text in die Zwischenablage zu kopieren; Siehe die folgenden Fragen für Lösungen:SSH
Sie können eine Zwischenablage auch auf Remotecomputern verwenden, wenn Sie die X11-Weiterleitung über SSH aktivieren. Dies ist besonders bei dem obigen Tipp hilfreich, da Sie dann
xclip
auf die Zwischenablage Ihres Desktops zugreifen können. Das Vim auf dem Computer, auf dem Sie gerade shoppen, benötigt diese+clipboard
Funktion weiterhin.Dies erfordert die
ForwardX11Trusted
Einstellung und sollte nur mit vertrauenswürdigen Servern durchgeführt werden , da der Server so fast die vollständige Kontrolle über Ihre X11-Sitzung hat:Um diese Einstellungen dauerhaft zu machen (sodass Sie sie nicht
-XY
jedes Mal hinzufügen müssen ), können Sie in folgenden Schritten Folgendes tun~/.ssh/config
:Neovim
Neovim überarbeitete die Unterstützung für die Zwischenablage. Die eingebaute Schnittstelle wurde mit einem System entfernt und ersetzt werden, die ein externes Dienstprogramm aufrufen , wie beispielsweise
xclip
,xsel
oderpbcopy
/pbpaste
.Diese Dienstprogramme sollten automatisch abgerufen und verwendet werden. Unter OS X
pbcopy
undpbpaste
sollte standardmäßig verfügbar sein, unter Linux möchten Sie wahrscheinlich installierenxclip
, da dies am weitesten verbreitet ist (es gibt tatsächlich zwei Versionenxsel
mit inkompatiblen Flags . Das ist wirklich dumm).Siehe auch
:help clipboard
in Neovim.quelle
"<Space>
, um eine zu erhalten"
. In diesem Fall müssten Sie also drücken"<Space>+y
oder"<Space>*y
kopieren."
viele benannte Register ausgewählt werden können."+
ist keine Magie, es ist nur registrieren+
. So zum Beispiel, wenn Sie wollen drei Dinge gleichzeitig kopieren und jeder von ihnen eins nach dem anderen einfügen, können Sie"1y
,"2y
und"3y
später"1p
,"2p
und"3p
. Das ist wirklich mächtig und in fast jedem anderen Editor nicht vorhanden. Eine andere interessante Verwendung ist das Betrachten gespeicherter Makros. Wenn Sie beispielsweise mit aufnehmenqq
, aber feststellen, dass Sie das Problem beheben müssen, können Sie: in einer temporären Zeile das Problem"qp
beheben und"qd
.Die anderen Antworten beschreiben, wie Sie Text aus Ihrem Puffer in die Zwischenablage des Systems kopieren. Eine weitere häufige Operation ist das Kopieren von Text aus einem anderen Register in die Zwischenablage. Wenn Sie beispielsweise bereits Text in
"
das Standardregister gezogen haben, möchten Sie dieses Register möglicherweise in die Zwischenablage laden.Sie können dies tun mit
:let
:let @+=@"
- kopiert das Standardregister in die Zwischenablagelet @*=@"
- kopiert das Standardregister in die X11-Primärauswahl ("Maus-Zwischenablage")let @+=@a
- aus dem Registera
in die Zwischenablage kopierenBeachten Sie, dass dies für Register im Allgemeinen funktioniert:
let @a=@b
kopiert Registerb
zu Registera
.quelle
Von http://vim.wikia.com/wiki/Accessing_the_system_clipboard
Dadurch wird das Standard-Vim-Register in das
+
Register geändert , das mit der Systemzwischenablage verknüpft ist. Von:h clipboard-unnamedplus
:quelle
:version
in Vim überprüfen, ob + X11 in der Liste der enthaltenen Funktionen angezeigt wird. Sie können auch überprüfen, ob die Funktion "unnamedplus" verfügbar ist.:if has('unnamedplus')⏎ echo 'yes'⏎ endif
Wenn Sie nicht unter Linux arbeiten, sollten Sie unnamed anstelle von unnamedplus verwenden.Bei Builds, die dies unterstützen, ist das genannte Register
*
die Systemzwischenablage. Um Text von Vim in die Systemzwischenablage zu kopieren, können Sie den Text im visuellen Modus auswählen und dann drücken, "*yum ihn in die Systemzwischenablage zu kopieren.Verwenden Sie umgekehrt, um "*pText aus der Systemzwischenablage in Vim einzufügen.
quelle
Ich empfehle Ihnen, Gvim zu verwenden und Folgendes hinzuzufügen
.vimrc
:Dies ermöglicht die Unterstützung für CtrlC, CtrlX, CtrlVwie Notepad in Windows.
Beachten Sie, dass dies auch einige andere gängige Windows - Verknüpfungen hinzuzufügen, wie CtrlSfür
:w
, CtrlAfür alle auswählen usw.quelle
Wenn Ihr vim nicht unterstützt
+clipboard
, können Sie das fakeclip- Plugin für Linux, Mac, Windows, tmux, screen, ... verwenden.quelle
Jede andere Antwort hat alle wichtigen Dinge über die Register abgedeckt. Ich möchte noch eine Sache hinzufügen, die ich benutze.
In Vim gibt es eine Möglichkeit, den visuell ausgewählten Text direkt in die Zwischenablage zu kopieren . Fügen Sie dies einfach in Ihre vimrc- Datei ein:
Wenn Sie einen Text visuell auswählen, wird dieser in Ihre Zwischenablage kopiert. Weitere Informationen hierzu finden Sie unter
:help guioptions
Übrigens ist dies nur für gVim.
quelle
guioptions+=a
wird auch in der Antwort von Carpetsmoker erwähnt.Sie können auch einen globalen Befehl verwenden, um ein bestimmtes Muster in die Zwischenablage zu kopieren. Dies kann in Situationen nützlich sein, in denen Informationen in einer Datei verstreut sind und das manuelle Kopieren fehleranfällig und anstrengend ist.
Reinigen Sie zuerst das Register, das die Informationen erhalten soll
Kopieren Sie dann alle Zeilen, die das Muster enthalten
Zuletzt werden die Informationen in die Zwischenablage des Systems übertragen (kopiert)
Wenn Sie versuchen, jede Zeile, die ein "Muster" enthält, direkt in die Zwischenablage zu kopieren, funktioniert dies nicht, da die Zwischenablage keinen neuen Inhalt anfügen kann. Daher verwenden wir hier ein normales VIM-Register, um alle Zeilen zu speichern, die das Muster enthalten Muster sofort und dann in die Zwischenablage legen.
OBS: Es ist notwendig, das Register zu löschen, bevor es verwendet wird, und die Verwendung der GROSSBUCHSTABEN-Version des Registers ermöglicht es uns, Inhalte anzufügen, andernfalls funktioniert es auch nicht.
quelle
Wenn Sie nicht herausfinden können, wie Sie
+clipboard
zur Arbeit kommen, was ich aus irgendeinem Grund nicht konnte, dann können Sie dies tun.Angenommen, Sie möchten nur einen Teil der Datei kopieren , dann gehe ich
shift
+v
in den visuellen Modus und hebe nur die Zeilen hervor, die ich kopieren möchte. Dann mache ich das.Erläuterung
'<,'>
- bedeutet, dass Sie den visuellen Modus zur Auswahl eines Bereichs verwendet haben (Sie geben dies nicht ein)w !{cmd}
- Schreibe den Bereich auf den Standard voncmd
, siehe mehr unter:help w_c
wl-copy
undxclip
sind Programme, an die Sie Text weiterleiten können, und diese fügen ihn in die Zwischenablage Ihres Systems einSobald dies einmal in Ihrem Verlauf ist, müssen Sie das Ganze nicht noch einmal eingeben. Wählen Sie einfach im visuellen Modus aus, geben Sie ein
w
und drücken Sie die Taste nach oben. Der Befehl sollte sich automatisch vervollständigen. Außerdem müssen Sie den visuellen Modus nicht verwenden. Sie können den gewünschten Bereich einstellen.quelle