OS X Terminal-Äquivalent zu Strg + Links / Strg + Rechts

19

Unter Windows und Linux konnte ich immer ctrl+ oder ctrl+ drücken, um ein Wort im Terminal nach links oder rechts zu überspringen. In Texteditoren scheint + / zu funktionieren, aber keine Würfel im Terminal. Ich habe Google durchsucht und nichts gefunden, außer einer Wikipedia-Seite, die behauptet, + B/ Ferledigt den Job, aber alles, was sie tut, ist, ∫ und ƒ Zeichen auf mein Terminal zu drucken (oder ı und Ï, wenn ich halte ). Irgendwelche Ideen?

Patrick Krecker
quelle

Antworten:

12

Sie können den Schlüssel verwenden, müssen jedoch die Option auswählen, um ihn als "Meta" -Schlüssel zu verwenden: Alt-Text

Sobald Sie dies tun, funktionieren + Fund + Bwie erwartet.

Mipadi
quelle
genial ... das hat mich schon lange verrückt gemacht. Vielen Dank.
Robert S Ciaccio
2
Überprüfen Sie auch apple.stackexchange.com/q/1391/115 auf mögliche „Nachteile“ dieser Option.
Martin Marconcini
Coole Antwort. +1
Soner Gönül
12

Das hat mich auch verrückt gemacht, aber ich wollte kein Terminal-spezifisches Update, da ich kein Terminal verwende, und um SSH in meine OSX-Box einbinden zu können, mussten auch die richtigen Tastenkombinationen verwendet werden.

Auch persönlich interessierte mich der Schlüssel nicht, wie zuvor besprochen; Ich wollte die ctrl+ / Kombination beibehalten, die ich unter Linux gewohnt bin.

Um dieses Problem zu lösen, habe ich Folgendes zu meinem hinzugefügt ~/.profile:

bind '"\e[5C": forward-word'
bind '"\e[5D": backward-word'
bind '"\e[1;5C": forward-word'
bind '"\e[1;5D": backward-word'

Beachten Sie, dass die ersten beiden für Bash im Terminal gelten . Die letzten beiden gelten für Bash in iTerm2 und eingehende SSH- Verbindungen. Frag mich nicht, warum die Tastaturemulation anders ist;)

Für die Aufzeichnung konnte ich dank eines Hinweises aus dieser Stackoverflow-Antwort herausfinden, was die Schlüsselcodes tatsächlich waren : Sie können cat > /dev/nulldie genauen Schlüsselcodes überwachen, die während einer Tastenkombination gesendet wurden.

(Beachten Sie, dass beim Ausführen cat > /dev/nullund Drücken von ctrl+ Folgendes erzeugt wird ^[[1;5D. Ihr genauer Schlüsselcode kann abweichen , der erste ^[wird jedoch \ewie in meinem Beispielcode dargestellt dargestellt.)

Übrigens, wenn Sie alle aktiven Bash-Tastenkombinationen sehen möchten, führen Sie aus bind -p.

adamrmcd
quelle
Ich benutze gerne xxd, um Tastatureingaben zu untersuchen. Sie können das Zeichen sehen, während Sie es xxdeingeben , und geben dann den Wert in hexadezimaler Form aus, wenn Sie return eingeben.
Chris Page
Perfekt! Genau das, wonach ich gesucht habe :) Ich hatte nie das Glück, die oben genannten "App-spezifischen" Einstellungen vorzunehmen, aber das funktioniert einfach!
Bisko
Stellen Sie sicher, dass Strg + links / rechts in Ihren Sysprefs> Tastatur> Verknüpfungen> Exposé nicht "Leerzeichen wechseln" zugeordnet ist. Ich hatte keine anderen Leerzeichen offen, also sah es so aus, als würde meine Tastatureingabe nicht funktionieren.
Sudo
6

Ab Mac OS X Lion 10.7 ordnet Terminal - / to esc+ B/ Fstandardmäßig zu. Dies ist jetzt für Bash- und andere Programme integriert, die diese Emacs-kompatiblen Tastenkombinationen verwenden.

Chris Page
quelle
5

Wenn Sie wissen, wie man vi verwendet, können Sie den vi-Zeilenbearbeitungsmodus auch set -o viin Ihrer .bash_profileoder jederzeit in der Befehlszeile aktivieren. Anschließend können Sie zwischen dem Befehl vi und dem Einfügemodus wechseln. Sie können also Escape drücken und dann die vi-Befehle zum Navigieren in der Zeile verwenden:

0 = move to beginning of line
$ = move to end of line
w = move forward one word
b = move backward one word

Sobald Sie an der richtigen Position angekommen sind, können Sie mit den anderen vi-Befehlen den Einfüge- oder Anhänge-Modus aufrufen oder Zeichen nacheinander entfernen usw.

Robert S. Ciaccio
quelle
Ich wusste nie, dass Sie 0 für den Zeilenanfang verwenden können, ich habe immer ^
Jason Salaz
1
@vxjasonxv: ya, ^ bewegt sich zum ersten Nicht-Leerzeichen-Zeichen, 0 bewegt sich zur ersten Spalte (was Sie wahrscheinlich bereits bemerkt haben, aber ich dachte, ich würde es für andere da
rauswerfen
1
OH WOW, DAS IST NOCH BESSER, das hatte ich noch nicht bemerkt! Oh man, diese Funktionalität (erstes Nicht-Leerzeichen) von ^ hat mich immer angepisst. Vielen Dank.
Jason Salaz
Natürlich ESC ^ist es großartig, wenn Sie es brauchen, es ist nur ärgerlich, wenn Sie etwas ganz anderes machen wollten :)
ocodo
3

Öffnen Sie das Terminal, gehen Sie zu Einstellungen, Tastatur. In der Liste finden Sie "Strg-Cursor rechts" und "Strg-Cursor links".
Ändern Sie die zugewiesenen Aktionen in "\ 033f" bzw. "\ 033b", und Sie können ctrl+ und ctrl+ zum Bewegen verwenden, ohne die Alt-Taste zu verlieren.

Agos
quelle
2

Es scheint, dass esc+ Bund esc+ Fstandardmäßig zugeordnet sind, um an den Anfang und das Ende von Wörtern zu gelangen. Für mein System kann man zwar nicht gedrückt halten, escsondern muss es für jedes Wort erneut drücken.

Derek Morrison
quelle
1
Esc ist niemals ein Modifikator, sondern wechselt nur in den "Escape" -Modus, wenn Sie ihn drücken. Betrachten Sie ihn als eine modale Vorgehensweise, im Gegensatz zu Shift / Strg / Meta usw. (im Readline-Schema der Dinge sowieso.)
ocodo
0

Die neueste Version des Betriebssystems ordnet dies Spaces zu. Selbst wenn Sie Leerzeichen deaktiviert haben, können die Hotkeys an dieser versteckten Stelle kurzgeschlossen werden:

Terminal.app-Cursortasten: Deaktivieren Sie die Systemeinstellungen -> Verknüpfungen -> Missionssteuerung -> Nach links ein Leerzeichen verschieben

Keith Knauber
quelle