GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum fügt Strg + V nicht in Bash (Linux-Shell) ein?

Zu Zeiten physischer Terminals gab es noch keine sitzungsweite Zwischenablage, nur wenige Programme unterstützten internes Kopieren/Einfügen – oft unter dem Namen „Buffer“ oder „Kill Rings“ – und verwendeten verschiedene Tastenanschläge. Zum Beispiel die bash Shell verwendet Strg K oder Strg U zum "töten" (schneiden), Strg Y zu "ziehen" (einfügen); das kommt vom emacs Herausgeber.

Strg C Fast überall in Unix gab es die "Unterbrechungstaste", die zum Abbrechen des aktuellen Programms oder Vorgangs verwendet wurde. Die Strg V Schlüssel bedeutete oft "wörtliche Einfügung" - das heißt, das folgende Zeichen wörtlich einzufügen, ohne eine damit verbundene Aktion auszuführen. Zum Beispiel ein normales Esc wechselt in den Befehlsmodus im vi Editor, sondern Strg V , Esc fügt den ESC ein Zeichen in das Dokument.

Die Verwendung von Strg C zu kopieren und Strg V 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 IBM CUA Tasten Strg Ins zu kopieren und Shift Ins einfügen; diese Shortcuts werden weiterhin von allen Windows-Versionen unterstützt.)

Als GUIs mit Clipboard-Unterstützung schließlich Unix erreichten, wurde die Ctrl Tastendrücke wurden bereits von vielen Terminalprogrammen verwendet. Außerdem hatte die grafische Oberfläche von X etwas andere Mechanismen:"Auswahlen" und "Puffer schneiden". Schon jetzt können Sie 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 verwenden letzteres), war Ctrl V hatte ich schon seit vielen Jahren eine ganz andere Bedeutung und konnte nicht geändert werden. Darüber hinaus war eine alternative Methode zum Kopieren von Text – die „Auswahl“ – bereits in X11 vorhanden, sodass explizites Kopieren/Einfügen wahrscheinlich als nicht so wichtig erachtet wurde, wie es in 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, Strg Shift C und Strg Shift V . (Wenn Sie Xterm verwenden, können dieselben Verknüpfungen manuell mit den XTerm*vt100*translations hinzugefügt werden Xresource. Rxvt hat keine solche Option.)

(Die meisten X11-Toolkits unterstützen auch die CUA-Tasten "Kopieren" und "Einfügen", die nicht mit Terminalprogrammen in Konflikt geraten. Leider sind die Implementierungen ziemlich inkonsistent – ​​Ctrl Ins Kopien in die "Zwischenablage" in den meisten Programmen (GTK, Qt4, aber von Xaw ignoriert); jedoch Shift Ins Einfügungen aus der "primären Auswahl" in den meisten GTK- und Qt4-Programmen, aber aus der "Zwischenablage" in Firefox und aus den jetzt veralteten Cut-Buffers im jetzt veralteten Xaw.)

Trotzdem tun einige Terminals oder Konsolen (insbesondere die Windows 10-Konsole). unterstützt diese Tasten. Da die Windows-Konsole immer einen eigenen "Markieren/Auswählen"-Modus hatte, Strg C hat jetzt auch zwei kontextabhängige Bedeutungen – im regulären Modus sendet es einen Interrupt, im Auswahlmodus kopiert es in die Zwischenablage (genau wie Enter früher).

Inzwischen werden Windows-Befehlszeilentools nie wirklich verwendet Strg V für alles, also musste es "einfügen", ohne viel zu stören. Das Gleiche auf Unix-ähnlichen Terminals zu tun, wäre jedoch problematischer.


Verwenden Sie Strg Shift V zum Einfügen.

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


Hier sind Ihre Allzweck-Einstellungen zum Kopieren und Einfügen mit gängigen Terminals:

gnome-terminal (am beliebtesten unter Linux)
Kopieren :Strg Shift C
Einfügen :Strg Shift V
Hinweis :Zum Kopieren auswählen und Mittelklick Einfügen funktioniert auch, aber es verwendet eine alternative Zwischenablage.

PuTTY (beliebtestes Terminal in Windows)
Kopieren :(mit Maus auswählen, keine Tastaturinteraktion)
Einfügen :Rechtsklick (oder zuverlässiger:shift Rechtsklick )
Hinweis :Apps, die Mauseingaben akzeptieren (wie vim und links ) kann Rechtsklick stehlen -- shift Rechtsklick funktioniert immer in jeder App.

OSX-Terminal
Kopieren :Apple C
Einfügen :Apple V
Hinweis: Apps, die die Maussteuerung übernehmen (wie vim und links ) kann überschreiben, was es bedeutet, Text auszuwählen, in diesem Fall funktioniert das Kopieren nicht so, wie Sie es erwarten. Halten Sie in diesen Fällen Strg gedrückt während Sie die Maus zum Auswählen ziehen. Die Mausinteraktion mit Apps ist in Ihren Terminaleinstellungen standardmäßig deaktiviert, sodass die meisten Leute davon nichts wissen werden.


Linux
  1. Warum stimmt [a-z] mit Kleinbuchstaben in Bash überein?

  2. Woher weiß Bash, wie es aufgerufen wird?

  3. Variablen in der Bash-Shell unter Linux verstehen

  4. Warum wird diese Shell-Pipeline beendet?

  5. So codieren Sie ein Bild mit Base64 in Linux Bash / Shell

So verwenden Sie den Declare-Befehl in der Linux Bash Shell

So installieren Sie Linux Bash Shell unter Windows 10

Shell/Bash-Skript zum Finden von Primzahlen in Linux

Wie verwende ich die Linux-Bash-Shell in Windows 10?

Warum ist Bash überall (in den meisten, wenn nicht allen Linux-Distributionen)?

Was macht % in Linux-Shell-Strings?