Mac OS X Terminal: Zuordnungsoption + Löschen zu "Wort rückwärts löschen"

232

Es wurde versucht, es über Einstellungen -> Einstellungen -> Tastatur zuzuordnen, aber das Kombinationsfeld "Schlüssel" enthält nur "Vorwärts löschen", aber kein "Löschen". Meine Tastatur hat dagegen nur "Löschen" und kein "Vorwärtslöschen"!

Gibt es eine andere Möglichkeit als die Einstellungen?

ibz
quelle
Mit "Wort rückwärts löschen" meinen Sie die Rücktaste? Mir ist keine aktuelle Apple-Tastatur mit einer Löschtaste bekannt.
Sören Kuklau
Mit "Wort rückwärts löschen" meine ich genau das - um das ganze Wort ausgehend vom Cursor rückwärts zu löschen. :) Das letzte Macbook hat eine Taste mit der Bezeichnung "Löschen", fungiert jedoch als Rücktaste.
ibz
Ich stehe vor dem gleichen Problem. Tastatur hat Rückwärtslöschung, kann aber nicht als Bindung in Terminal.app verwendet werden.
Knoopx
Für mich verdient Ihre Frage Millionen von Gegenstimmen. Es hat mir sehr geholfen. Früher war ich Ubuntu. Dies hat mir das Leben auch unter Mac OS erleichtert. Vielen Dank.
Doptimusprime

Antworten:

424

Optionsschlüssel als Metaschlüssel aktivieren

  1. Zum Terminal> Preferences> Profiles>Keyboard
  2. Überprüfen Sie Use option key as meta key.

Bild

Auf macOS High Sierra 10.13.6, aufgenommen am 23. Oktober 2018.

Abbildung des Fensters zum Umschalten des Optionsschlüssels als Metaschlüssel

Anmerkungen

Viele Anwendungen (einschließlich bash und tcsh) behandeln Meta-Delete als "rückwärts löschendes Wort".

Andru Luvisi
quelle
32
Es befindet sich unter Terminaleinstellungen> Einstellungen> Tastatur ganz unten.
Jon
16
Warum ist das nicht Standard?!
Ross Hambrick
8
In Yosemite befindet sich diese Einstellung jetzt unter Einstellungen -> Profile -> Tastatur. Sieht so aus, als müssten Sie es für jedes Profil ändern / einstellen.
Palimpsestor
6
Bei Tastaturen außerhalb der USA wird häufig eine Optionstaste benötigt, um bestimmte Zeichen abzurufen (z. B. ist die Pipe '|' bei Shell ziemlich wichtig). In diesem Fall sind <Esc> b und <Esc> f, die in anderen Antworten erwähnt wurden, wahrscheinlich die beste Lösung?
Touko
8
Leider ist dies für Programmierer mit fremden Tastaturen kontraproduktiv, die die Optionstaste verwenden müssen, um spezielle Symbole zu erhalten {, da dies nicht funktioniert, wenn die Optionstaste als Metataste verwendet wird.
Magne
74

Auf dem Terminal von OS X wird Bash ausgeführt, einschließlich Readline-Unterstützung. Befolgen Sie die Anweisungen von Glomek und weisen Sie das Terminal an, die Option als Metaschlüssel zu verwenden (oder zu verwenden Esc). Dann haben Sie eine Reihe praktischer Optionen: Ctrl+ wlöscht das vorherige Wort (wie Meta + wie erwähnt löschen), aber Sie können auch Meta + verwenden f und Meta + b, um vorwärts und rückwärts durch Wörter zu gehen, Ctrl+ aund Ctrl+ ezum Anfang und Ende der Zeile, Ctrl+ kvom Cursor bis zum Ende der Zeile löschen (töten) und eine Menge mehr.

Unter http://www.bigsmoke.us/readline/shortcuts finden Sie eine nette kleine Referenztabelle.

Nadafigment
quelle
3
Wie ist das "praktisch"? Der Rest des Systems verwendet deletemit Qualifikationsmerkmalen, um Wörter zu löschen.
Idrougge
Ist es möglich, auch "Zeile löschen" zu haben?
Wenbert
1
Readline ist großartig, aber das hilft OP nicht. Strg + w löscht ein WORT (durch Leerzeichen getrennt), kein Wort (durch Interpunktion + Leerzeichen getrennt). Mit dem Cursor am Ende von cat .git/refs/headsergibt sich Strg-w cat. Meta + löschen Ergebnisse incat .git/refs/
idbrii
@nadafigment, 'a' und 'e' stehen für?
Pacerier
63

Löschen Sie ein Wort, das zurückgeht:

Ctr-w.

Shai
quelle
2
Nachdem ich dies gelesen hatte, fand ich heraus, dass "Wort vorwärts löschen" Strg + k ist (durch Versuch und Irrtum). Jetzt frage ich mich, warum es so wenig Dokumentation zu all dem gibt.
Sieger n.
8
Ctr-k löscht alle vor, nicht nur ein Wort, nein?
Shai
Das funktioniert auf meinem Mac. funktioniert es auch unter Ubuntu Linux?
user391339
1
Strg + w löscht ein WORT (durch Leerzeichen getrennt), kein Wort (durch Interpunktion + Leerzeichen getrennt). Mit dem Cursor am Ende von cat .git/refs/headsergibt sich Strg-w cat. Meta + löschen Ergebnisse incat .git/refs/
idbrii
24

Standardmäßig zieht die Meta-Rücktaste in den meisten Shells ein Rückwärtswort. Wenn Sie die Esc-Taste und dann die Rücktaste drücken, funktioniert das praktisch überall.

Dustin
quelle
3
Fantastisch, das erfordert kein zusätzliches Setup. Ich bemerke <Esc> bund <Esc> farbeite auch daran, ein Wort vor oder zurück zu springen.
Joeytwiddle
1
Ich mag <ALT> + ARROW mehr. ESC erlaubt keine kontinuierlichen Klicks auf b oder f.
Vitali Pom
1
Ich habe <ALT> + ARROW verwendet, um mich zu bewegen, aber ich finde, dass es keine Möglichkeit gibt, auf ähnliche Weise zu löschen. Der oben erwähnte STRG + W-Ansatz hört nicht bei Nicht-Wort-Zeichen auf, wie dies bei <ALT> + PFEIL der Fall ist, sondern löscht alles bis zum Leerzeichen. Jede Möglichkeit zum Löschen mit einer ähnlichen Grenzerkennung wie <ALT> + PFEIL wäre willkommen
Rene Wooller
18

⌃W(Strg + W) ist nicht dasselbe wie Meta + Löschen (ESC + Löschen, wenn Sie die Option Option als Metaschlüssel nicht aktiviert haben). Meta + Löschen wird / _als Worttrennzeichen behandelt , wobei ^WLeerzeichen als Trennzeichen betrachtet werden.

zB mit ESC + Bakcspace an (Cursor am Ende)

rm /dira/dirb/file1

gibt

rm /dira/dirb/

während ^ W auf dem gleichen geben wird

rm

Daher ist es besser, \ 033 \ 177 anstelle von ^ W zu verwenden, wenn Sie das Ändern des Terminalprofils definieren. Auf diese Weise ordnen Sie ⌥⌫ wirklich dem zu, was esc⌫ tut, und Sie haben immer wieder ^ W, um Wörter basierend auf dem Leerzeichen zu löschen.

Ich würde gerne ein Bild darüber posten können, wie das geht, aber als Neuling kann ich nicht.

Informationen zum Ändern des Terminalprofils finden Sie im Bouke-Kommentar.

Stephane Gasparini
quelle
5
Wenn Sie dies tun möchten iterm2, können Sie unter Einstellungen> Schlüssel> Schlüsselzuordnung hinzufügen ⌥⌫, um Hex-Codes zu senden 0x1B 0x7F. 🍻
qix
Wie haben Sie herausgefunden, dass \033\177Sie "einen Teil eines Wortes löschen" möchten?
Adiabatic
In der Tat müssen Sie nur die gewünschte Tastenfolge im Dialogfeld "Terminaleinstellungen" drücken. Einstellungen → Profile → Registerkarte Tastatur → + Taste, dann Modifikator "Option" und Taste "⌫ Löschen" auswählen, dann das Textfeld auswählen und Escape-Taste drücken, dann die Taste ⌫ drücken und fertig. Esc + ⌫ macht das Gleiche wie ⌥⌫
Stephane Gasparini
14

Im Profil Ihres Terminals können Sie ⌥⌫ (Option + Löschen) an ⌃W (Strg + W) binden, sodass es ähnlich wie andere Apps funktioniert.

Terminalprofil Tastatureinstellungen

Bouke
quelle
stty muss ^ w werase zugeordnet sein (Standardverhalten), damit dies funktioniert. Verwenden Sie stty -a in der Befehlszeile, um zu sehen, wie Zuordnungen festgelegt werden.
Natersoz
4

Befehlsbearbeitungsverknüpfungen

Strg + a - gehe zum Anfang der Befehlszeile

Strg + e - Gehen Sie zum Ende der Befehlszeile

Strg + k - Löscht vom Cursor bis zum Ende der Befehlszeile

Strg + u - Löschen vom Cursor bis zum Anfang der Befehlszeile

Strg + w - vom Cursor zum Wortanfang löschen (dh ein Wort rückwärts löschen)

Strg + Y - Fügen Sie ein Wort oder einen Text ein, der mit einer der Löschverknüpfungen (wie der oben genannten) nach dem Cursor ausgeschnitten wurde

Strg + xx - zwischen Start der Befehlszeile und aktueller Cursorposition (und wieder zurück) bewegen

Alt + b - ein Wort rückwärts bewegen (oder zum Wortanfang gehen, auf dem sich der Cursor gerade befindet)

Alt + f - ein Wort vorwärts bewegen (oder zum Ende des Wortes gehen, auf dem sich der Cursor gerade befindet)

Alt + d - Löschen bis zum Ende des Wortes beginnend mit dem Cursor (ganzes Wort, wenn sich der Cursor am Anfang des Wortes befindet)

Alt + c - Großschreibung bis zum Ende des Wortes ab Cursor (ganzes Wort, wenn sich der Cursor am Wortanfang befindet)

Alt + u - Großbuchstaben vom Cursor bis zum Ende des Wortes

Alt + l - Kleinbuchstaben vom Cursor bis zum Ende des Wortes

Alt + t - aktuelles Wort mit vorherigem tauschen

Strg + f - ein Zeichen vorwärts bewegen

Strg + b - ein Zeichen rückwärts bewegen

Strg + d - Zeichen unter dem Cursor löschen

Strg + h - Zeichen vor dem Cursor löschen

Strg + t - Zeichen unter dem Cursor mit dem vorherigen austauschen

Befehlsrückrufverknüpfungen

Strg + r - Durchsucht den Verlauf rückwärts

Strg + g - Flucht aus dem Verlaufssuchmodus

Strg + p - vorheriger Befehl im Verlauf (dh zurück durch den Befehlsverlauf gehen)

Strg + n - nächster Befehl im Verlauf (dh vorwärts durch den Befehlsverlauf gehen) Alt +. - Verwenden Sie das letzte Wort des vorherigen Befehls

Befehlssteuerungs-Verknüpfungen

Strg + l - Bildschirm löschen

Strg + s - stoppt die Ausgabe auf dem Bildschirm (für lang laufende ausführliche Befehle)

Strg + q - Ausgabe auf dem Bildschirm zulassen (falls zuvor mit dem obigen Befehl gestoppt)

Strg + c - Beenden Sie den Befehl

Strg + z - Befehl anhalten / stoppen

Bash Bang (!) Befehle Bash hat auch einige praktische Funktionen, die die! (bang) damit du ein paar funky Sachen mit Bash-Befehlen machen kannst.

!! - letzten Befehl ausführen! Blah - den neuesten Befehl ausführen, der mit 'blah' beginnt (zB! Ls)

! blah: p - druckt den Befehl aus, den! blah ausführen würde (fügt ihn auch als neuesten Befehl im Befehlsverlauf hinzu)

! $ - das letzte Wort des vorherigen Befehls (wie Alt +.)

! $: p - drucke das Wort aus, das! $ ersetzen würde

! * - der vorherige Befehl mit Ausnahme des letzten Wortes (z. B. wenn Sie '_find somefile.txt /' eingeben, dann! * Würde Ihnen '_find somefile.txt' geben)

! : p - was ausdrucken! würde ersetzen

Curtis M.
quelle
2

Mit Natural Text Editingaktivierter Voreinstellung unter Profil -> Tasten. Sie können das Wort einfach entfernen

  • Rückwärts mit alt + delete
  • Weiterleiten mit fn + alt + delete
Anthony Artemiev
quelle