Was ist die Verknüpfung zum Löschen eines Wortes "vorwärts" in einem Unix-Terminal?

14

Ich mache Ctrl+Wim Mac-Terminal, um ein Wort zu löschen (löscht von der Stelle, an der sich der Cursor am Anfang des Wortes befindet)

Wie mache ich das Gegenteil - löscht, wo sich der Cursor bis zum Ende des Wortes befindet?

Gleiten
quelle

Antworten:

14

Dies hängt von Ihrer Shell und ihrem aktiven Befehlszeilen-Bearbeitungsmodus ab.

set -o emacsVerwenden Sie für eine Shell mit Emacs-Befehlszeilen-Bearbeitungsmodus ( in einigen Shells) Alt+D(dies funktioniert unter macOS aus irgendeinem Grund nicht, sondern druckt das Zeichen , verwenden Sie Escdstattdessen).

set -o viVerwenden Sie für eine Shell mit Vi-Befehlszeilenbearbeitungsmodus ( in einigen Shells) Escdw(dies funktioniert auch unter macOS).

Kusalananda
quelle
Nur in zsh löscht Meta-D den gleichen Worttyp wie Strg-W (durch Leerzeichen getrennte). In bashin - viModus können Sie verwenden , dWdiejenigen löschen
Stéphane Chazelas
1
@ StéphaneChazelas Ja, sie (die beiden Keycombos) sehen das, was ein "Wort" ausmacht, unterschiedlich.
Kusalananda
Sie können die Option "Option als Meta verwenden" in den Tastatureinstellungen des Terminals aktivieren, damit sie funktioniert.
Jozef Legény
Sowohl Esc + D als auch Alt + D funktionieren in xfce4-Terminal 0.6.3 .
NeverMind9
1

Löscht für die Disziplin tty line ^Wdas vorherige durch Leerzeichen getrennte Wort .

Im viEditor im Einfügemodus, ^Wlöscht rückwärts zu Beginn der ersten Sequenz von alnums oder nicht-alnums (auf foo-+-bar.. baz, es zuerst Löschungen baz, dann .., dann bar, dann -+-, dann foo).

Löscht im emacsEditor ^Wvon der Cursorposition bis zur Markierung (der, mit der Sie festgelegt haben Ctrl+Space).

Einige Zeileneditoren wie readline(verwendet von bash, gdb...), zle(verwendet von zsh), verhalten sich pdkshim viModus wie viin dieser Hinsicht und im emacsModus wie die tty-Zeilendisziplin (nicht emacs).

libedit(verwendet von BSD Schalen oder (optional) dash) tcsh, AT & T ksh, in emacsModus verhalten sich wie in emacsdem ^WLöschungen auf die Markierung (zunächst am Anfang des Puffers).

Um ein Wort vorwärts zu löschen, vitun Sie dies im Editor im Befehlsmodus ( normal ), dwindem Sie bis zum Anfang der nächsten Folge von Alnums oder Nicht-Alnums (oder bis zum Ende der Zeile) dWlöschen und bis zum löschen nächste Folge von Nicht-Leerzeichen (der Anhänger der ^WDisziplin der tty-Linie).

Im emacsZeileneditor, Meta-Dwürde zum Löschen Ende der nächsten Folge von alnum Zeichen. Die Wortbewegungsoperatoren ( Meta-B, Meta-F) verhalten sich ähnlich.

Befehlszeileneditoren viverhalten sich im Modus wie vi, aber im emacsModus haben Sie zwei Hauptschulen: die tcshSchule und die kshSchule.

Die kshSchule ( readline, ksh, yash) verhält sich meist wie emacs( fishs Verhalten in etwas anders ist , wie es behandelt nicht-alnum, Nicht-Leerzeichen in beide emacsund viModus).

In der tcshSchule ( tcsh, libedit, zsh) werden auf Wort Bewegungen basieren Leerzeichen getrennte Wörter sind so mit dem tty Linie Disziplin konsequent ^Win dieser Hinsicht.

In zshist das Verhalten mit verschiedenen Wortstilen für alle Wortbewegungs-Widgets anpassbar .

Für readline, können Sie die bekommen tcshSchule (und haben Meta-Ddie gleiche Art von Wort zu löschen , wie der Ctrl-WFall ist) , indem zu Ihrem ~/.inputrc:

set keymap vi-move
"\e[EMACS~": emacs-editing-mode
set keymap emacs
"\e[VI~": vi-movement-mode
"\ed": "\e[VI~dW\e[EMACS~"
"\ef": vi-fWord
"\eb": vi-bWord

Oder richten Sie sich andererseits ^Wan den anderen Wortbewegungs-Widgets aus (verhalten Sie sich wie Meta-Backscape) mit:

set keymap emacs
"\C-W": backward-kill-word

Was der MetaSchlüssel ist, finden Sie dort .

Stéphane Chazelas
quelle
-1

Versuchen Sie unter Linux Ctrl+kzu löschen, wo sich der Cursor am Ende des Wortes befindet.

Im Folgenden sind einige andere Verknüpfungen aufgeführt (funktioniert unter Linux):

  1. Ctrl+e -> Nimmt den Cursor am Ende des Wortes.
  2. Ctrl+t -> Ändern Sie die Position der Alphabete.
  3. Ctrl+y -> fügt dem aktuellen Wort den Postfix "hh" hinzu.
  4. Ctrl+u -> Löscht die gesamte Zeile.
  5. Ctrl+o -> Funktioniert genauso wie die Eingabetaste.
  6. Ctrl+p -> Funktioniert genauso wie die Aufwärtspfeiltaste.
  7. Ctrl+a -> Bringt den Cursor an die Startposition des Befehls.
  8. Ctrl+d -> Schließt das Terminal.
  9. Ctrl+f -> Bewegt den Cursor um ein Zeichen vorwärts.
  10. Ctrl+h -> Funktioniert genauso wie die Rücktaste.
  11. Ctrl+j -> Funktioniert genauso wie die Eingabetaste.
  12. Ctrl+m -> Funktioniert genauso wie die Eingabetaste.
  13. Ctrl+b-> Funktioniert genauso wie die Rechtspfeiltaste. 14 Ctrl+4 -> Löscht das Wort
Smshrimant
quelle
3
Ctrl+kwird bis zum Ende der Zeile gelöscht . Ctrl+ulöscht die gesamte Zeile (wenn sich der Cursor am Ende befindet). Ctrl+dsendet EOF. Ctrl+egeht bis zum Ende der Zeile usw.
Kusalananda
Strg + y wird verwendet, um das letzte, was Sie in der Zwischenablage gespeichert haben, einzufügen oder zu ziehen. In Ihrem Fall war es wahrscheinlich "hh". Warum in aller Welt gibt es Ihrer Meinung nach eine Tastenkombination, um ein bestimmtes Wort mit den Buchstaben "hh" nachzubestellen? Wie wäre das sinnvoll?
bmcentee148