2012-05-07 07:44:30 +0000 2012-05-07 07:44:30 +0000
196
196

Warum werden Strg + V in der Bash (Linux-Shell) nicht eingefügt?

Wenn ich etwas in die Zwischenablage kopiere und Strg + V in der Bash drücke, passiert nichts; Rechtsklick und Auswahl von Einfügen erfüllt jedoch die Aufgabe.

Warum? Gibt es ein vernünftiges Problem (da bin ich mir sicher) hinter diesem Verhalten unter Linux?

Antworten (7)

364
364
364
2012-05-07 08:03:14 +0000

In den Tagen der physischen Terminals gab es keine sitzungsweiten Zwischenablagen, nur wenige Programme unterstützten internes Kopieren/Einfügen - oft unter dem Namen “Buffer” oder “Killringe” - und benutzten verschiedene Tastenanschläge. Zum Beispiel verwendet die Bash-Shell StrgK oder StrgU zum “Kill” (Ausschneiden), StrgY zum “Yank” (Einfügen); dies kommt von dem emacs-Editor .

StrgC war fast überall in Unix die “Interrupt”-Taste , die zum Abbrechen des aktuellen Programms oder der aktuellen Operation verwendet wurde. Die Taste CtrlV bedeutete oft “wörtliches Einfügen” - d.h., das folgende Zeichen wörtlich einzufügen, ohne eine damit verbundene Aktion auszuführen. Beispielsweise schaltet eine normale Esc-Taste im vi-Editor in den Befehlsmodus, aber StrgV, Esc fügt das Zeichen ESC in das Dokument ein.

Die Verwendung von StrgC zum Kopieren und StrgV zum Einfügen aus der sitzungsweiten Zwischenablage wurde 1983 von Mac OS und 1990 von Microsoft Windows 3.x eingeführt. (Frühere Windows-Versionen (1.x und 2.x) sowie IBM OS/2 unterstützten nur die Tasten IBM CUA CtrlIns zum Kopieren und ShiftIns zum Einfügen; diese Tastenkombinationen werden nach wie vor von allen Windows-Versionen unterstützt)

Als GUIs mit Zwischenablage-Unterstützung schließlich Unix erreichten, wurden die Strg-Tastenkombinationen bereits von vielen Terminal-Programmen verwendet. Darüber hinaus hatte die grafische X-Oberfläche etwas verschiedene Mechanismen : “Auswahlen” und “Ausschneiden von Puffern”. Schon jetzt kann man Text in einem Programm markieren und mit der mittleren Maustaste einfügen, ohne explizite Kopieraktion.

Kurz gesagt, zu der Zeit, als Xterm und GNOME-Terminal geschrieben wurden (ich vermute, Sie benutzen letzteres), hatte StrgV bereits seit vielen Jahren _eine völlig andere Bedeutung und konnte nicht geändert werden. Außerdem war eine alternative Methode zum Kopieren von Text - die “Auswahl” - bereits in X11 vorhanden, so dass eine explizite Kopieren/Einfügen-Aktion wahrscheinlich nicht als so wichtig angesehen wurde, wie es unter Windows der Fall wäre. Das bedeutet, dass verschiedene Tastaturkürzel ausgewählt werden mussten - zum Beispiel verwenden die meisten modernen Terminalprogramme, wie GNOME Terminal, CtrlShiftC und CtrlShiftV. (Wenn Sie Xterm verwenden, können die gleichen Tastenkürzel manuell mit der _XTerm*vt100*translations Xresource hinzugefügt werden. Rxvt verfügt nicht über eine solche Option)

(Die meisten X11-Toolkits unterstützen auch die CUA-Tasten “Kopieren” und “Einfügen”, die nicht mit Terminal-Programmen in Konflikt stehen. Leider sind die Implementierungen ziemlich inkonsistent - CtrlIns kopiert in den meisten Programmen (GTK, Qt4, wird aber von Xaw ignoriert) in die “Zwischenablage”; ShiftIns fügt jedoch in den meisten GTK- und Qt4-Programmen aus der “primären Auswahl” ein, in Firefox aus der “Zwischenablage” und im jetzt veralteten Xaw aus den jetzt veralteten Schnittpuffern. )


All das gesagt, unterstützen einige Terminals oder Konsolen (insbesondere die Windows 10-Konsole) diese Tasten nicht. Da die Windows-Konsole immer einen separaten “Markieren/Auswählen”-Modus hatte, hat CtrlC jetzt auch zwei kontextabhängige Bedeutungen - im regulären Modus sendet es einen Interrupt, im Auswahlmodus kopiert es in die Zwischenablage (genau wie früher Enter).

Inzwischen haben die Windows-Kommandozeilen-Tools CtrlV nie wirklich verwendet, so daß es gezwungen war, “einzufügen”, ohne viel zu stören. Dasselbe auf Unix-ähnlichen Terminals zu tun, wäre jedoch problematischer.

48
48
48
2012-05-07 07:45:55 +0000

Verwenden Sie StrgShiftV zum Einfügen.

Strg mit anderen Zeichen wird normalerweise von der Shell für spezielle Funktionen verwendet.

21
21
21
2012-05-07 21:22:43 +0000

Hier sind Ihre Allzweck-Copy-Paste-Einstellungen für gängige Terminals:

gnome-Terminal (unter Linux am beliebtesten) Copy : StrgUmschalttasteC Einfügen : StrgUmschalttasteV Hinweis : StrgUmschalttasteV Hinweis : Auswählen-zum-Kopieren und Mittelklick zum Einfügen funktioniert auch, aber es wird eine alternative Zwischenablage verwendet.

PuTTY (beliebtestes Terminal unter Windows) Kopieren : (Auswahl mit der Maus, keine Interaktion mit der Tastatur) Einfügen : Rechts-Klick (oder zuverlässiger: Umschalt-Rechts-Klick) Hinweis : (Auswahl mit der Maus, keine Tastaturinteraktion) Anwendungen, die Mauseingaben entgegennehmen (wie vim und links) können Rechtsklick stehlen – shiftRechtsklick funktioniert immer in jeder Anwendung

OSX Terminal Kopieren : AppleC Einfügen : AppleV Hinweis:Anwendungen, die die Maussteuerung übernehmen (wie vim und links), können das, was es bedeutet, Text auszuwählen, außer Kraft setzen; in diesem Fall funktioniert Kopieren nicht so, wie Sie es erwarten. Halten Sie in diesen Fällen die Steuerung gedrückt, während Sie die Maus zur Auswahl ziehen. Die Mausinteraktion mit Anwendungen ist in Ihren Terminal-Einstellungen standardmäßig deaktiviert, so dass die meisten Leute nicht einmal etwas davon wissen werden.

17
17
17
2012-05-07 14:34:50 +0000

Es ist eine tief verwurzelte Tradition, dass die Strg-Taste zusammen mit einem Buchstaben ASCII-Steuerzeichen erzeugt, die durch Subtraktion von 64 vom ASCII-Wert des Großbuchstabens gefunden werden. Diese Berechnung bildet Ctrl-A auf 1 ab, und so weiter. Zum Beispiel ist Ctrl-I Tabulator und Ctrl-J Zeilenvorschub.

Es gibt keine ähnliche Tradition für Ctrl-Shift.

Terminalemulatoren müssen die Tradition unterstützen, indem sie die Strg-Konvention transparent durchlaufen und sie als Zeicheneingabe für die Programme erscheinen lassen, die über dieses Terminalfenster bedient werden. Terminal-basierte Programme bilden Steuertasten auf Befehle ab. Beispielsweise verwendet die Bash Strg-V als Befehl, was bedeutet: “Nimm das nächste Zeichen wörtlich”. Auf diese Weise können Sie ein Steuerzeichen in die Befehlszeile einbetten. Wenn das Terminal für seinen eigenen Gebrauch Steuertasten stiehlt, stehen solche Befehle nicht mehr zur Verfügung. Es kommt also nicht in Frage, Strg-V für eine Meta-Funktion abzufangen (zumindest in einer Standardkonfiguration).

Terminalemulatoren steht es jedoch frei, Strg-Shift-V abzufangen, von dem nicht erwartet wird, dass es ein Zeichen erzeugt. Strg-Umschalt-V ist kein Standard; es ist eine Gnome-Terminal-Sache (die sich in einigen anderen Terminals befinden kann).

Auf X-basierten Unix-Desktops ist die Konvention, dass zum Kopieren kein Befehl erforderlich ist. Man wählt einfach den Text aus. Und der mittlere Knopf fügt den Text an anderer Stelle ein. Sie werden feststellen, dass dies sowohl in Xterm, Gnome-Terminal und Firefox funktioniert.

Ctrl-V ist eine Konvention von Microsoft Windows, die eine Imitation von Apple-V vom Macintosh ist.

3
3
3
2015-08-03 12:57:48 +0000

Für mich ist der einfachste Weg, Einfügen in die Shell zu kopieren:

Wählen Sie den gewünschten Code aus und fügen Sie ihn dann durch Klicken mit der Maus-Mitteltaste

2
2
2
2015-05-08 13:42:05 +0000

Wir können die Taste Insert Keyboard zum Kopieren und Einfügen verwenden (in alten Tastaturen kann sie fehlen)

Kopieren : StrgEinfügen Einfügen : StrgUmschalt-Einfügen

1
1
1
2015-05-19 16:08:05 +0000

Sie können auch die mittlere Taste einer Maus benutzen, wenn Sie sich faul fühlen, und einen Befehl aus einem Textdokument, Skript, Web oder Forum auswählen. Wenn Sie den gewünschten Befehl ausgewählt haben, gehen Sie einfach zu Ihrem Terminal und klicken Sie auf die mittlere Taste der Maus. Ich benutze diese Methode, da ich Welpen-Linux benutze, das das normale Verhalten von Rechtsklick und Einfügen nicht zu unterstützen scheint. In einem Datei-Handler-Fenster tut es das, nur nicht in einem Terminal-Fenster. ich weiß nicht warum, aber ich bin sehr froh, dass ich die Mitteltastenmethode herausgefunden habe, sehr praktisch! ;-)