{"id":9072,"date":"2012-09-05T06:34:53","date_gmt":"2012-09-05T04:34:53","guid":{"rendered":"https:\/\/www.gambaru.de\/blog\/?p=9072"},"modified":"2012-09-05T06:34:53","modified_gmt":"2012-09-05T04:34:53","slug":"xclip-copypaste-mit-rxvt-unicode-vim-elinks-und-der-konsole","status":"publish","type":"post","link":"https:\/\/gambaru.de\/blog\/2012\/09\/05\/xclip-copypaste-mit-rxvt-unicode-vim-elinks-und-der-konsole\/","title":{"rendered":"Xclip: Copy&amp;Paste mit Rxvt-Unicode, Vim, Elinks und der Konsole"},"content":{"rendered":"<p>Text kopieren von X nach Konsole ist manchmal keine ganz triviale Aufgabe. Umgekehrt leider auch nicht. Etwas einfacher macht es <a href=\"http:\/\/sourceforge.net\/projects\/xclip\/\">Xclip<\/a>.<br \/>\nIm Regelfall lassen sich Texte mit der Maus markieren und mit einem Klick auf die mittlere Maustaste (bei nur zwei Maustasten beide simultan gedr\u00fcckt halten) an einer anderen Stelle wieder einf\u00fcgen (Prim\u00e4re Auswahl). Ebenso funktioniert z.B. in Rxvt-Unicode die Tastenkombination Shift+Einfg. Ich stellte jedoch immer wieder fest, dass Text falsch formatiert in einer Konsolenanwendung gelandet ist.<br \/>\nXclip ist da der ideale Helfer, wenn man in einer X-Anwendung, z.B. einem Browser, Text markiert und in der Zwischenablage (Clipboard) speichert und ihn dann in ein Konsolenprogramm mit STRG+v oder ALT+v einf\u00fcgen m\u00f6chte. Hier sind ein paar Ideen Xclip mit bekannter Software f\u00fcr die Konsole einzusetzen.<\/p>\n<h2>Xclip im Terminal und in Skripten<\/h2>\n<p>Z.B. Quellcode markieren und in der Datei clipboard ausgeben. Der Parameter <strong>-o<\/strong> gibt den Inhalt der prim\u00e4ren Zwischenablage nach STDOUT aus.<br \/>\n<code>xclip -o &gt; clipboard<\/code><br \/>\nXclip eignet sich auch hervorragend f\u00fcr Pipe-Konstruktionen. Hier wird z.B. die Ausgabe von <code>dmesg | grep eth0<\/code> in die prim\u00e4re Zwischenablage kopiert, die sich mit der mittleren Maustaste in jede X-Anwendung einf\u00fcgen l\u00e4sst.<br \/>\n<code>dmesg | grep eth0 | xclip<\/code><br \/>\nSiehe auch <strong>man xclip<\/strong>.<\/p>\n<h2>Xclip und VIM<\/h2>\n<p>Gl\u00fccklich darf man sich sch\u00e4tzen, wenn man nicht nur auf <a href=\"https:\/\/www.gambaru.de\/blog\/2011\/10\/30\/die-shell-austauschen-der-wechsel-von-bash-zu-zsh\/\">GRMLs ZSH-Konfiguration<\/a>, sondern auch GRMLs .vimrc gesto\u00dfen ist. <a href=\"http:\/\/vim.wikia.com\/wiki\/GNU\/Linux_clipboard_copy\/paste_with_xclip\">Der Tipp<\/a> stammt urspr\u00fcnglich aus dem Vim-Wiki.<\/p>\n<pre class=\"brush:plain\">:map &lt;F7&gt; :w !xclip&lt;CR&gt;&lt;CR&gt;\n:vmap &lt;F7&gt; \"*y\n:map &lt;S-F7&gt; :r!xclip -o&lt;CR&gt;<\/pre>\n<p>Wenn SHIFT-F7 im Terminal der Wahl nicht funktioniert und \"*y den Text ebenfalls nicht wie vorgesehen in den Buffer von Vim kopiert, kann man noch eine andere Variante aus den Kommentaren zum Tipp benutzen.<\/p>\n<pre class=\"brush:plain\">vmap &lt;F6&gt; :!xclip -f -sel clip\nmap &lt;F7&gt; mz:-1r !xclip -o -sel clip`z<\/pre>\n<p>Sobald sich etwas in Vims Buffer befindet, l\u00e4sst sich mit F6 dieser Inhalt in die Zwischenablage kopieren und wie gewohnt mit STRG+V in eine X-Anwendung einf\u00fcgen. Anders herum geht es mit F7 innerhalb von Vim, wenn man zuvor einen Text in einer grafischen Anwendung kopiert hat.<\/p>\n<h2>Xclip und Elinks<\/h2>\n<p>Ich will nun niemanden zu <a href=\"https:\/\/www.gambaru.de\/blog\/2011\/06\/17\/der-universelle-browser-elinks\/\">Textbrowsern wie Elinks<\/a> bekehren, aber es gibt auch Anwendungsf\u00e4lle, in denen sie sich sehr gut mit grafischen Browsern und anderen Anwendung erg\u00e4nzen. Es gibt leider Webseiten, die lassen sich selbst mit modernen Rechnern nur schwerf\u00e4llig betrachten, wenn Javascript und Flash die \u00dcberhand zu nehmen scheinen. Ich benutze deswegen zum Download und Anschauen von Youtube-Videos gerne auch Elinks in Kombination mit <a href=\"http:\/\/rg3.github.com\/youtube-dl\/\">Youtube-dl<\/a> und dem <a href=\"http:\/\/www.mplayerhq.hu\">MPlayer<\/a>. <a href=\"https:\/\/www.gambaru.de\/blog\/2010\/11\/14\/youtube-videos-mit-elinks-und-mplayer-anschauen\/\">Die Konfiguration<\/a> funktioniert nicht nur mit betagten <a href=\"https:\/\/www.gambaru.de\/blog\/hardware\/\">Oldtimern<\/a>, sondern spart mir auch die Zeit beim Auffinden von neuen Videos.<br \/>\nDurch die Brille eines Textbrowsers betrachtet ist Youtube nur eine Ansammlung von Links zu mehr oder weniger gut gelungenen Videos. Im alten Beitrag benutze ich die <strong>y-Taste<\/strong> zum Download oder Abspielen eines markierten Links und <strong>Alt-y<\/strong> um das Video der aktuell aufgerufenen Seite zu verarbeiten.<br \/>\nMit Elinks l\u00e4sst sich ein Link nat\u00fcrlich nicht nur an Youtube-dl oder Mplayer delegieren. Nicht ganz einfach ist es, die Adresse der gerade besuchten Seite in Elinks an die Zwischenablage zu \u00fcbergeben und den Link anschlie\u00dfend weiterzureichen. Benutzt man jedoch Xclip ist nur ein weiterer Eintrag im Optionsmanager notwendig.<\/p>\n<blockquote><p>Taste O -&gt; Dokumente -&gt; URI-Delegierung<\/p><\/blockquote>\n<p>Jetzt nur noch einen neuen Eintrag namens \"Zwischenablage\" hinzuf\u00fcgen, der den folgenden Befehl ausf\u00fchrt.<br \/>\n<code>echo -n %c | xclip -i -selection clipboard<\/code><br \/>\nBedeutet nichts anderes, als dass der Link an Xclip \u00fcbergeben und in die Zwischenablage kopiert wird, von wo er mit STRG+v in jede X- oder Konsolenanwendung eingef\u00fcgt wird. Je nach dem, ob nun die y-Taste oder Alt-y aufgerufen wird, l\u00e4sst sich so der Link der gerade besuchten Webseite oder irgendein beliebiger Link auf einer Seite, der gerade ausgew\u00e4hlt ist, in die Zwischenablage kopieren und dort weiterverarbeiten.<br \/>\nKlingt nach einer esoterischen L\u00f6sung, jedoch ist sie au\u00dferordentlich schnell. Am besten beh\u00e4lt man sie im Hinterkopf, wenn man wieder einmal Elinks, Irssi, Mplayer, Youtube-dl, Wget, Aria2 und andere bekannte Applikationen f\u00fcr die Konsole benutzt.<\/p>\n<h2>Rxvt-Unicode<\/h2>\n<p>Zum Schluss: Rxvt-Unicode oder kurz urxvt. Ein schlanker Terminal-Emulator, der \u00fcber Unicode- und Perl-Unterst\u00fctzung verf\u00fcgt. Bert M\u00fcnnich hat eine <a href=\"https:\/\/github.com\/muennich\/urxvt-perls\">nette Sammlung<\/a> von n\u00fctzlichen Perl-Erweiterungen f\u00fcr urxvt zur Verf\u00fcgung gestellt, darunter auch das <a href=\"https:\/\/github.com\/muennich\/urxvt-perls\/blob\/master\/clipboard\">Clipboard-Skript<\/a>. Welche Ver\u00e4nderungen man daf\u00fcr in der .Xdefaults\/.Xresources vornehmen muss, steht z.B. <a href=\"http:\/\/wiki.gentoo.org\/wiki\/Rxvt-unicode\">im Gentoo-Wiki<\/a>.<br \/>\nMit Xclip und der Perl-Erweiterung ist es danach m\u00f6glich auch Text in die Zwischenablage zu kopieren und umgekehrt auch von X-Anwendungen mit Control-v in Rxvt-Unicode einzuf\u00fcgen.<br \/>\nKopiert das Clipboard-Skript nach <em>\/usr\/lib\/urxvt\/perl<\/em>, um es global verf\u00fcgbar zu machen. Meine Optionen f\u00fcr die .Xdefaults sind dann:<\/p>\n<pre class=\"brush:plain\">\nurxvt*perl-lib:         \/usr\/lib\/urxvt\/perl\nurxvt*perl-ext-common:  default,clipboard\nurxvt.keysym.A-c:     perl:clipboard:copy\nurxvt.keysym.A-v:     perl:clipboard:paste\nurxvt.keysym.A-C-v:   perl:clipboard:paste_escaped\nurxvt.clipboard.copycmd:  xclip -i -selection clipboard\nurxvt.clipboard.pastecmd: xclip -o -selection clipboard\n<\/pre>\n<p>Hier wird der Pfad zu den Perl-Erweiterungen definiert und die neue Erweiterung clipboard freigeschaltet. Die restlichen Zeilen legen die Tastenkombinationen fest, mit denen man Text vom Terminal in die Zwischenablage kopieren und umgekehrt auch wieder einf\u00fcgen kann. Wichtig ist auch hier, dass sowohl f\u00fcr das Kopieren als auch f\u00fcr das Einf\u00fcgen Xclip verwendet wird.<\/p>\n<h2>Fazit<\/h2>\n<p>Ich bin mir sicher, jeder st\u00f6\u00dft im Laufe der Zeit auf das Kopieren-und-Einf\u00fcgen-Problem. Zwar ist die Standardl\u00f6sung mit dem Markieren von Text mit der Maus und dem Einf\u00fcgen mit der mittleren Maustaste sehr bequem und dazu auch noch \u00e4u\u00dferst schnell ausgef\u00fchrt, jedoch funktioniert das bei umfangreich formatiertem Text nicht immer bestens. Mit Xclip gibt es ein sehr leichtgewichtiges Programm, dass das Leben auf der Konsole auf jeden Fall angenehmer macht. \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Text kopieren von X nach Konsole ist manchmal keine ganz triviale Aufgabe. Umgekehrt leider auch nicht. Etwas einfacher macht es Xclip. Im Regelfall lassen sich Texte mit der Maus markieren und mit einem Klick auf die mittlere Maustaste (bei nur zwei Maustasten beide simultan gedr\u00fcckt halten) an einer anderen Stelle wieder einf\u00fcgen (Prim\u00e4re Auswahl). Ebenso &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/gambaru.de\/blog\/2012\/09\/05\/xclip-copypaste-mit-rxvt-unicode-vim-elinks-und-der-konsole\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eXclip: Copy&amp;Paste mit Rxvt-Unicode, Vim, Elinks und der Konsole\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[53,67,207,211,226],"_links":{"self":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/9072"}],"collection":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/comments?post=9072"}],"version-history":[{"count":0,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/9072\/revisions"}],"wp:attachment":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/media?parent=9072"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/categories?post=9072"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/tags?post=9072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}