Wenn ich etwas in die Zwischenablage kopiere und Ctrl+ Vin Bash drücke , passiert nichts. Wenn Sie jedoch mit der rechten Maustaste klicken und Einfügen auswählen, wird der Job ausgeführt.
Warum? Gibt es ein vernünftiges Problem (da bin ich mir sicher) hinter diesem Verhalten in Linux?
linux
bash
keyboard-shortcuts
copy-paste
Yasser Zamani
quelle
quelle
Shift
-Insert
funktioniert auchCtrl-Shift-V
persönlich bevorzuge .Antworten:
In den Tagen der physischen Terminals gab es keine sitzungsweiten Zwischenablagen, nur wenige Programme unterstützten internes Kopieren / Einfügen - häufig unter dem Namen "Puffer" oder "Kill Rings" - und verwendeten verschiedene Tastenanschläge. Zum Beispiel verwendet die Bash- Shell CtrlKoder, um CtrlUzu "töten" (ausschneiden), um CtrlYzu "reißen" (einfügen); dies kommt aus dem Emacs - Editor .
CtrlCFast überall in Unix wurde die "Interrupt" -Taste verwendet, um das aktuelle Programm oder den aktuellen Vorgang abzubrechen. Der CtrlVSchlüssel bedeutete oft "wörtlich einfügen" - das heißt, das folgende Zeichen wird wörtlich eingefügt, ohne dass eine zugehörige Aktion ausgeführt wird. Beispielsweise wechselt ein normaler EscBenutzer im vi- Editor in den Befehlsmodus CtrlV, Escfügt jedoch das
ESC
Zeichen in das Dokument ein.Das CtrlCKopieren und CtrlVEinfü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ützte nur die IBM CUA- Schlüssel CtrlInszum Kopieren und ShiftInsEinfügen; diese Verknüpfungen werden weiterhin von allen Windows-Versionen unterstützt.)
Als GUIs mit Zwischenablage-Unterstützung endlich Unix erreichten, wurden die CtrlTastendrücke bereits von vielen Terminalprogrammen verwendet. Außerdem hatte die grafische Oberfläche von X etwas andere Mechanismen : "Auswahlen" und "Puffer ausschneiden". Schon jetzt können Sie Text in einem Programm markieren und mit der mittleren Maustaste einfügen, ohne explizite Kopieraktion.
Kurz gesagt, zu dem Zeitpunkt, als Xterm und GNOME Terminal geschrieben wurden (ich nehme an, Sie verwenden das letztere), hatten sie CtrlV bereits seit vielen Jahren eine völlig andere Bedeutung und konnten nicht geändert werden. Darüber hinaus gab es in X11 bereits eine alternative Methode zum Kopieren von Text - die "Auswahl" -, sodass das explizite Kopieren / Einfügen wahrscheinlich nicht so wichtig war wie in Windows. Dies bedeutet, dass verschiedene Tastaturkürzel ausgewählt werden mussten - beispielsweise die meisten modernen Terminalprogramme, wie GNOME Terminal, verwenden CtrlShiftCund CtrlShiftV. (Wenn Sie Xterm verwenden, können dieselben Verknüpfungen mithilfe der XResource für XTerm * vt100 * -Übersetzungen manuell hinzugefügt werden . Rxvt verfügt nicht über eine solche Option.)
(Die meisten X11 - Toolkits unterstützen auch die CUA - Schlüssel "Kopieren" und "Einfügen", die nicht mit Terminalprogrammen in Konflikt stehen. Leider sind die Implementierungen eher inkonsistent - CtrlInsKopien in die "Zwischenablage" in den meisten Programmen (GTK, Qt4, aber von ignoriert) Xaw); allerdings werden ShiftInsin den meisten GTK- und Qt4-Programmen Pasten aus der "primären Auswahl", in Firefox jedoch aus der "Zwischenablage" und in den jetzt veralteten Cut-Puffern in Xaw eingefügt.)
Alles , was gesagt, einige Endgeräte oder Konsolen (insbesondere die Windows - 10 - Konsole) tun diese Tasten unterstützen. Da die Windows-Konsole immer einen separaten "Mark / Select" -Modus hatte, hat sie CtrlCjetzt auch zwei Bedeutungen, die auf dem Kontext basieren: Im regulären Modus sendet sie einen Interrupt, im Auswahlmodus kopiert sie in die Zwischenablage (wie Enterfrüher).
Inzwischen Tools Windows - Befehlszeilen nie wirklich verwendet CtrlV für alles, so wurde es gebunden „Paste“ , ohne viel etwas zu stören. Dasselbe auf Unix-ähnlichen Terminals zu tun, wäre jedoch problematischer.
quelle
<C-v>
aufi
Version 3 einen Fehler gemacht haben , aber ich konnte nicht genau sagen, warum .Verwenden Sie CtrlShiftVzum Einfügen.
Ctrl mit anderen Zeichen wird von der Shell normalerweise für spezielle Funktionen verwendet.
quelle
bash
sich aus. Wenn Sie sich jemals außerhalb einer GUI-Umgebung befinden oder einen anderen Term-Emulator verwenden, funktioniert dies wahrscheinlich nicht. Denken Sie nicht, dass dieser Befehl portierbar ist.Hier sind Ihre allgemeinen Einstellungen zum Kopieren und Einfügen mit gängigen Terminals:
gnome-terminal (am beliebtesten unter Linux)
Kopieren : CtrlShiftC
Einfügen : CtrlShiftV
Hinweis : Auswählen zum Kopieren und middle-clickEinfügen funktioniert ebenfalls, es wird jedoch eine alternative Zwischenablage verwendet.
PuTTY (populärste Terminal in Windows)
Kopieren : (wählen Sie mit der Maus, keine Tastatur - Interaktion)
Paste : Right-click (oder zuverlässiger: shiftRight-click)
Hinweis : Apps , die Mauseingabe nehmen (wie
vim
undlinks
) kann stehlen Right-click- shiftRight-clickimmer in jedem App arbeiten.OSX-Terminal-
Kopie : AppleC
Einfügen : AppleV
Hinweis: Apps, die die Maussteuerung übernehmen (wie
vim
undlinks
), setzen möglicherweise außer Kraft, was das Auswählen von Text bedeutet. In diesem Fall funktioniert das Kopieren nicht so, wie Sie es erwarten. Halten ControlSie in diesen Fällen die Maustaste gedrückt, um eine Auswahl zu treffen. Die Mausinteraktion mit Apps ist in Ihren Terminaleinstellungen standardmäßig deaktiviert, sodass die meisten Benutzer nicht einmal darüber informiert sind.quelle
cmd.exe
PuTTY unter Windows nicht beliebter? :-)cmd.exe
ist kein SSH-Terminal. Das ist sehr wahrcmd.exe
im Schnellbearbeitungsmodus (und ist der einzige Weg dorthin, wenn Sie Menü> Bearbeiten> Einfügen nicht öffnen möchten) . Es gibt keine Verknüpfung in der Eingabeaufforderung vorEs ist eine tief verwurzelte Tradition, dass der CtrlSchlüssel zusammen mit einem Buchstaben ASCII-Steuerzeichen generiert, die durch Subtrahieren von 64 vom ASCII-Wert des Großbuchstabens ermittelt werden. Diese Berechnung bildet Ctrl- Abis 1, und so weiter. Zum Beispiel Ctrl- Iist Tabund Ctrl- Jist Zeilenvorschub.
Es gibt keine ähnliche Tradition Ctrl- Shift. CtrlEs wird nicht erwartet, dass - Shift- Veinen bestimmten Charakter erzeugt.
Terminalemulatoren müssen die Tradition unterstützen, indem sie die CtrlKonvention transparent durchlaufen und sie als Zeicheneingabe für die Programme erscheinen lassen, die über dieses Terminalfenster ausgeführt werden. Terminal-basierte Programme ordnen Steuertasten Befehlen zu. Zum Beispiel verwendet Bash Ctrl- Vals Befehl, was bedeutet "das nächste Zeichen wörtlich nehmen". Auf diese Weise können Sie ein Steuerzeichen in die Befehlszeile einbetten. Wenn das Terminal Steuertasten für den eigenen Gebrauch stiehlt, sind solche Befehle nicht mehr verfügbar. Abfangen Ctrl- Vfür eine Meta-Funktion kommt das nicht in Frage (zumindest in einer Standardkonfiguration).
Terminalemulatoren können jedoch frei abfangen Ctrl- Shift- Vwas voraussichtlich kein Zeichen erzeugt. Ctrl- Shift- Vist kein Standard; Es ist eine Gnome-Terminal-Sache (die in einigen anderen Terminals sein kann).
Auf X-basierten Unix-Desktops ist die Konvention, dass zum Kopieren kein Befehl erforderlich ist. Sie wählen nur den Text aus. Mit der mittleren Schaltfläche wird der Text an einer anderen Stelle eingefügt. Sie werden feststellen, dass es in Xterm, Gnome Terminal und Firefox gleichermaßen funktioniert.
Ctrl- Vist eine Microsoft Windows-Konvention, die eine Nachahmung von Apple- Vauf dem Macintosh ist.
quelle
<kbd>
Tags in zukünftige Posts.Ctrl-A
ist1
. Wie kann ich das probieren? Mein Gnome-Terminal tut nichts, wenn ich drückeCtrl-A
.Für mich ist der einfachste Weg, Paste in die Shell zu kopieren:
Wählen Sie den gewünschten Code aus und fügen Sie ihn durch Klicken auf ein mouse-middle-key
quelle
xdotool click 2
, um den Klick auf die dritte Schaltfläche für Sie zu emulieren. Dann in welchem Fenstermanager / Desktop - Umgebung , die Sie in sind, können Sie dieses Skript in eine Taste binden kann - sagenmod
i
(für Einsatz) oder keybindings was auch immer können Sie zur Verfügung haben (oder was auch immer mod bedeuten könnte - was wirklich hängt , wo Sie diese binden)Wir können die Schaltfläche zum Einfügen der Tastatur zum Kopieren und Einfügen verwenden (in alten Tastaturen kann es fehlen)
Kopieren : CtrlInsert
Einfügen :CtrlShiftInsert
quelle
Sie können auch die mittlere Taste und eine Maus verwenden, wenn Sie sich faul fühlen und einen Befehl aus einem Textdokument, einem Skript, einem Web oder einem Forum auswählen. Sobald Sie den gewünschten Befehl ausgewählt haben, bewegen Sie sich einfach zu Ihrem Terminal und klicken Sie auf die mittlere Maustaste. Ich benutze diese Methode, da ich Welpen-Linux verwende, das das normale Verhalten von Rechtsklick und Einfügen nicht zu unterstützen scheint. Dies geschieht in einem Datei-Handler-Fenster, nur nicht in einem Terminal-Fenster. Ich weiß nicht warum, aber ich bin sehr froh, dass ich etwas über die mittlere Tastenmethode herausgefunden habe. Sehr praktisch! ;-)
quelle