Stellen Sie sicher, dass iTerm "Meta-Key" auf die gleiche Weise wie in anderen Betriebssystemen übersetzt


178

In einer Bash-Shell mit Emacs-Schlüsselbindung können Sie eine Tastenkombination wie Mf, Mb verwenden, um ein Wort an der Shell-Eingabeaufforderung vorwärts oder rückwärts zu verschieben. Normalerweise wird der Metaschlüssel unter Windows und Linux der Alt-Taste zugeordnet. In iTerm konnte ich jedoch keine Möglichkeit finden, diesen Metaschlüssel der Optionstaste oder der Befehlstaste auf meinem MacBook Pro zuzuordnen.

Es scheint, dass in OS X der Metaschlüssel standardmäßig dem ESC-Schlüssel zugeordnet ist. Sie können also ESC-f, ESC-b auf iTerm verwenden. Der ESC-Schlüssel ist jedoch anscheinend nicht praktisch zu verwenden. Darüber hinaus verfügt iTerm über eine Option, mit der Sie die Zuordnung des Metaschlüssels ändern können (Lesezeichen> Profile> Tastaturprofile> Global> Optionsschlüssel als ...). Diese Einstellung scheint überhaupt nicht zu funktionieren.

Wenn jemand weiß, was die Lösung für dieses Problem ist, lassen Sie es mich bitte wissen.

Ich habe ein Upgrade auf die neueste Version 0.9.6.1012 durchgeführt, und dieses Verhalten besteht weiterhin.

Edit: Einige Klarstellungen zu meiner Frage. Die Schlüsselbindung, von der ich spreche, ist für Bash-Shell, nicht für Emacs. Es kommt nur vor, dass die Bash-Shell standardmäßig dieselbe Schlüsselbindung verwendet wie Emacs.


Nachdem Sie sich eine Weile mit diesem Problem beschäftigt haben und keine Lösung finden können. Ich gab auf und wechselte jetzt zum Terminal.
Ejel

2
Vergiss nicht, dass iterm2 bereits existiert und alles in Ordnung ist =)
holms

Antworten:


207

Cmd+., Profiles, KeysUnd wählen Sie Left option Key acts as: +Esc.

Funktioniert für mich in Emacs, obwohl ich nicht sicher bin, ob es andere unerwünschte Effekte haben wird.


Ich habe Option Key as ... mit allen Auswahlmöglichkeiten ausprobiert, aber keine davon funktioniert für mich in der Bash-Shell. Es wird nur "?" Jedes Mal, wenn ich die Meta-Tastenkombination drücke.
Ejel

2
Es sieht so aus, als müsste Ihre Eingabesprache US sein, damit die Option + ESC funktioniert. + ESC funktionierte nicht für mich, als ich die Japanisch / Romaji-Eingabemethode ausgewählt hatte, aber es begann zu funktionieren, als ich die Eingabesprache auf US
umstellte

2
Einstellungen, Profil, Tasten und wählen Sie die Option Linke Taste. Die Taste fungiert als: + Esc. Dann haben Sie sowohl die linke Optionstaste als auch die Esc-Taste als Metaschlüssel. Das ist in meinem Fall passiert.
cgl

Mit iTerm 2 scheint dies die empfohlene Option zu sein.
Ejel

4
Für meine externe Tastatur musste ich sowohl die linke als auch die rechte Optionstaste einstellen Esc+, obwohl ich die linke Optionstaste verwendete, wurden immer noch seltsame Zeichen gedruckt. Dies kann passieren , weil ich die Verwendung Tastatur Modifikatoren Option in Mac - Tastatureinstellungen , um die Tasten zu ändern.
Grego

128

Gehen Sie zu Lesezeichen> Profile verwalten . Wählen Sie dann Tastaturprofile> Global und wählen Sie Optionstaste als Meta . Dies funktioniert bei mir in Version 0.9.6.1201.


2
Ich musste den xterm (OS X) -Eintrag anstatt global ändern, aber es funktioniert jetzt.
Jason Axelson

Ich weiß nicht, warum auf meinem Computer die Einstellung auf 0.9.6.1201 und mehreren anderen Builds, die ich ausprobiert habe, fehlerhaft ist. Es funktioniert jedoch mit dem neuesten Build 0.9.6 und 0.10. Also sollte es jetzt kein Problem sein.
Ejel

11
in iTerm2 arbeitete dies erst , nachdem ich die neu definiert Profil Shortcut - Tasten für alt+ ->und alt+ <-zu Escape - Sequenz senden + f/ bist.
Amirnissim

Ich musste eine neue iterm-Sitzung eröffnen, damit es
losging

@SridharRatnakumar Funktioniert auch für iTerm
Krzysztof Wende

30

In der Menüleiste Iterm2 => Einstellungen => Profile wählen Sie die Registerkarte Tasten und wählen Sie

linke Optionstaste fungiert als + Esc

Geben Sie hier die Bildbeschreibung ein

arbeitete auch für mich in irssi.


Hervorragend, dies funktioniert auch in der Kombination von iTerm2 + tmux
TheJavaGuy-Ivan Milosavljević

8

Ich konnte die Alt-Taste auch nicht zum Laufen bringen, aber es gibt eine Problemumgehung, mit der sie zumindest für die Wortnavigation über die Cursortasten funktioniert:

Mit Alt / Wahltaste + Pfeiltasten nach links oder rechts zum nächsten oder vorherigen Wort in iTerm springen


2
Für backward-delete-word(⎇-DEL) senden Sie einen Hex-Code 0x17, für den Sprung zum Anfang der Eingabe (⌘- ←) senden 0x01und für den Sprung zum Ende (⌘- →) senden 0x05.
Lenar Hoyt

5

Ich benutze iTerm2 und für mich hat diese Antwort mein Problem nur teilweise gelöst:

Cmd+ ,=> Profile => Tasten und wählen Sie die Option Linke Taste. Die Taste fungiert als: + Esc .

Geben Sie hier die Bildbeschreibung ein

Außerdem musste ich zu Cmd+ ,=> Profile => Schlüssel gehen und in der Liste der Schlüsselzuordnungen beide Schlüsselkombinationen finden : Geben Sie hier die Bildbeschreibung einund Geben Sie hier die Bildbeschreibung eindoppelklicken Sie darauf und ändern Sie ihre Verknüpfungen wie folgt:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

* Stellen Sie sicher, dass Sie die Aktion Escape-Sequenz senden auswählen .


Das ist wirklich hilfreich. Vielen Dank Kumpel!
LeOn - Han Li

4

Alle Zombie-Auferstehung hier gehen, aber der Nachwelt zuliebe -

In diesem Beitrag funktioniert es so, wie Sie es für mich, für Mb und Mf wünschen, während der Optionsschlüssel als Meta festgelegt bleibt, damit Sie keinen Modifikator opfern (ich habe Vim-Zuordnungen, die Meta verwenden, persönlich).

Zusammenfassend können Sie in Ihrem globalen Tastaturprofil zwei neue Zuordnungen mit Einstellungen hinzufügen:

  1. Schlüssel als Hex-Code, Wert 62 für b, 66 für f ( man ascii)
  2. Modifikator als Option
  3. Aktion als Send-Escape-Sequenz, Wert b oder f

Das einzige, was ich in Terminal.app noch vermisse, ist Opt-Backspacedas Löschen per Wort. Es gibt andere Problemumgehungen dafür, aber ich versuche nur, mich für die Verwendung zu schulen Ctrl-w.


Möglicherweise eine neue Funktion seit dieser Antwort, aber Sie können eine globale Tastenkombination zuordnen, die Ctrl-wbeim Opt-BackspaceDrücken gesendet werden soll.
Steve Buzonas

4

In iTerm2 ist es einfacher. Gehen Sie zu Einstellungen-> Lesezeichen-> Tastatur und wählen Sie Option sendet + ESC. In iTerm2 können Sie die linken und rechten Optionstasten separat konfigurieren. Denken Sie also daran, beide zu ändern, wenn Sie dies wünschen. Link für iTerm2: http://sites.google.com/site/iterm2home/


2

Gehen Sie zu Lesezeichen> Profile verwalten. Wählen Sie dann Tastaturprofile> Global und wählen Sie Optionstaste als + ESC.

Funktioniert in iTerm Build 0.9.5.0611 & Build 0.9.6.20090415


Hmm. Die Einstellung auf meinem Computer scheint auch bei diesen beiden Versionen fehlerhaft zu sein. Die neuesten Versionen 0.9.6.20090928 und 0.10 funktionieren jedoch wie erwartet.
Ejel

2

Ich habe auch eine Lösung für den Stackoverflow gefunden. Gehen Sie einfach zum Tastaturprofil und wählen Sie unter "Global" die Optionstaste "+ ESC"

das funktioniert bei mir perfekt =) Übrigens gibt es auch einen iterm-Patch: http://www.emacswiki.org/emacs/EmacsForMacOS


0

Versuchen Sie "export LANG = C". Ich bin kein Emacs-Experte, aber ich habe festgestellt, dass Emacs unter OS X den Optionsschlüssel als Meta-Schlüssel in iTerm erkennen können.


0

Ich weiß nichts über iTerm, aber Sie können dies im Terminal tun. Anweisungen finden Sie hier:

Emacs unter Mac OS X Leopard-Tastenkombinationen


Danke dir. Mir ist bewusst, dass ich das im Terminal tun kann. Ich möchte nur das gleiche Ergebnis in iTerm erzielen. Ich suche übrigens die Schlüsselbindung in der Bash-Shell, nicht in Emacs. Es kommt einfach vor, dass die Bash-Shell auch die Emacs-Schlüsselbindung verwendet.
Ejel

0

Folgendes hat bei mir funktioniert: Lesezeichen> Profile verwalten> Tastaturprofile> Global / xterm> Optionstaste als + Esc. Damit kann ich Option + Eingabetaste in Midnight Commander verwenden und der aktuell ausgewählte Datei- / Verzeichnisname wird in der Befehlszeichenfolge angezeigt, wie es sollte. Optionsschlüssel als Meta hat bei mir nicht funktioniert. Mein Build von iTerm ist 0.10.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.