Bash: Ich möchte eine Tilde tippen. Wenn Sie F10 drücken, wird "1 ~" anstelle von "~" angezeigt.

633
user3055163

Bisher konnte ich das Tilde-Symbol in meinem Bash-Terminal durch Drücken von F10 ausgeben. Wenn ich jetzt F10 drücke, bekomme ich zwei Zeichen: '1 ~'. Gleiches gilt für F9 / F11 / F12. Seltsamerweise geben mir die anderen Funktionstasten F1-F8 eine Tilde, aber ich möchte, dass F10 meine Tilde-Taste ist.

Irgendwelche Ideen, wie man das beheben kann?

0
Sie müssen wahrscheinlich ein neues Tastaturlayout für Ihre Zwecke erstellen. Unter Windows kann dies mit [MSKLC] (https://superuser.com/q/695293/241386) durchgeführt werden. [Italienische Tastatur: Eingabe der Zeichen Tilde (~) und Backtick (`) ohne Änderung des Tastaturlayouts] (https://superuser.com/q/667622/241386) phuclv vor 5 Jahren 0

3 Antworten auf die Frage

8
grawity

Keiner dieser Schlüssel sind Tilde-Schlüssel. Sie generieren alle eine Folge von mehreren Zeichen, z. B. ESC [24~für den F12Schlüssel oder ESC [15~für den F5Schlüssel (obwohl F1 – F4 etwas unterschiedlich sind) oder sogar ESC [5~für den PgUpSchlüssel.

Der einzige Grund, warum Sie bekommen eine Tilde ist, weil Bash Schlüsselsequenz Parser den gemeinsamen Teil verbraucht, dass sie weiß ( ESC [2) und stoppt , sobald er weiß, dass die vollständige Sequenz unbekannt sein wird. Alles was folgt (nicht unbedingt eine Tilde!) Wird separat interpretiert.

Beachten Sie, dass sich dieses Verhalten bei Terminal-basierten Programmen unterscheiden kann: Bash (readline) hat einen eigenen Code zum Interpretieren von Sondertasten, Vim hat einen eigenen, Irssi hat wieder einen eigenen Code. Einige Programme erkennen Ihren Tastendruck möglicherweise vollständig als F10 (und ignorieren ihn daher).


Um F10einen tatsächlichen Tilde-Schlüssel global (OS-weit) zu erstellen, suchen Sie nach "Key Remapper" -Tools (möglicherweise AutoHotkey).


Um F10eine Tilde-Taste in allen Terminal-basierten Programmen zu erstellen, durchsuchen Sie die Einstellungen des Terminals. (Das 'Terminal' bezieht sich in diesem Fall auf ConEmu.)

Das Terminal verfügt möglicherweise über eine eigene Funktionalität zum Neudefinieren einzelner Tasten oder zum Erstellen von "Makros". (Die ConEmu- Dokumentation schlägt vor, ein Makro mit der print(…)Aktion zu definieren.)


So erstellen Sie F10einen Tilde-Schlüssel in Bash (aber nur Bash):

  1. Stellen Sie sicher, dass Ihr Terminalemulator (ConEmu) F10 nicht an eine eigene Funktion gebunden hat. (Normales F10 ist normalerweise an nichts gebunden - Shift + F10 ist jedoch die Standardtaste zum Öffnen des Rechtsklick-Menüs.)

  2. Drücken Sie in der Bash CtrlV(wörtliches Einfügen) und dann F10 . Sie sehen eine Sequenz wie ^[[21~.

    (Die Initiale steht ^[für ESC, während der Rest nur aus Literalen besteht.)

    Wenn zu diesem Zeitpunkt der Schlüssel überhaupt keine Sequenz einfügt, wurde er vom Terminal selbst oder einem anderen Programm übernommen - gehen Sie zurück zu Schritt 1.

  3. Öffnen Sie die ~/.inputrcDatei (oder erstellen Sie sie) in einem Texteditor.

  4. Fügen Sie diese Zeile, wobei die Sequenz von Schritt # 2 und Ersetzen ^[mit \e:

    "\e[21~": "~" 

    Dadurch wird inputrc angewiesen, ~beim Empfang ein einzufügen ESC [21~.

  5. Öffnen Sie die Bash-Shell erneut (oder drücken Sie CtrlX, CtrlRum inputrc neu zu laden).

`~ / .inputrc` steht für die` readline (3) `Bibliothek. Andere Programme als Bash können es ebenfalls verwenden und einige tun dies. +1 trotzdem. Kamil Maciorowski vor 5 Jahren 0
2
Art Gertner

Welches Tastaturlayout verwenden Sie?

Eine spezielle Tilde- ~Taste befindet sich direkt über der TabUS-Standardtastatur.

enter image description here

Viele europäische Tastaturen sind berüchtigt für [ohne Tilde (~) und Backtick (`)] (https://superuser.com/q/667622/241386). phuclv vor 5 Jahren 2
-1
user3055163

Ich habe dies behoben, indem ich ~ .inputrc entfernte, was ohnehin nichts brauchbares hatte.

Können Sie erklären, warum * das Problem behoben wurde, indem Sie das Problem beheben? Berücksichtigen Sie insbesondere die nächste Person mit diesem Problem ... Welche Informationen müssen sie berücksichtigen, um festzustellen, ob das Problem durch das Entfernen behoben wird? Twisty Impersonator vor 5 Jahren 2