Eingabe bis zum letzten Schrägstrich löschen

16

Ich werde sehr oft zwischen mehreren Dateien auf einem Server hin und her huschen. Ich werde die folgenden Beispielbefehle nacheinander ausführen:

nano /web/site/path/to/file
/web/site/script.py
nano /web/site/path/to/anotherFile
nano /web/site/path/to/yetAnotherFile
/web/site/script.py
nano /web/site/path/to/etc

Um von einem nanoBefehl zum nächsten zu gelangen, drücke ich momentan Upund Backspaceersetze das letzte Segment des Pfades. Das Problem dabei ist, dass ich wirklich sehr, sehr faul bin .

Gibt es eine Tastenkombination (oder Bashism), die entweder:

  • Lass dich durch den zuletzt verwendeten Pfad ersetzen (mit einem zusätzlichen Bit am Ende)
  • Löschen Sie in der aktuellen Zeile (z. B. nach Drücken von Up) bis zur letzten/
Oli
quelle
1
Ich bin nicht sicher, was Sie genau meinen, aber ich denke, für den ersten Teil können Sie alt+ verwenden .?
Sparhawk
@Sparhawk Alt + .wird für etwas anderes verwendet .
Radu Rădeanu
@ RaduRădeanu Ja, vielleicht verstehe ich die Frage falsch. Ich dachte, "Ersetzt durch den zuletzt verwendeten Pfad (mit einem zusätzlichen Bit am Ende)" bedeutet, was alt+ .tut.
Sparhawk
@Sparhawk Nochmals, eine dieser Verknüpfungen, die ungefähr einmal im Monat wirklich nützlich sind und die ich anscheinend nicht speichern kann. In Kombination mit Alt-Backspace ist es ziemlich praktisch, ähnliche Dateien mit verschiedenen Befehlen auszuführen.
Oli
@Oli Ich benutze es eher ein bisschen, aber ich vergesse immer, wie ich mich in die andere Richtung bewege !
Sparhawk

Antworten:

21

Ich denke, Sie suchen nach der Verknüpfung Alt+ Backspace.

Nach dem Drücken von Upsollte dies zurück zum vorherigen /oder spaceZeichen löschen .

Sylvain Pineau
quelle
7
Jetzt bin ich unaufhaltsam! (Edit: Ich schwöre, ich habe diese Verknüpfung mindestens zehn Mal im Jahr gelernt und vergessen.)
Oli
3
Was soll das tun? Auf meinem Terminal scheint es nichts anderes zu tun als schlicht backspace.
Bakuriu
1
@ Bakuriu Diese Verknüpfung sollte die Standardverknüpfung sein. Wenn Sie herausfinden wollen , was es abgebildet auf dem System laufenbind -P | grep '^backward-kill-word'
Sylvain Pineau
1
@ Bakuriu Gleiche hier, ich bin auf dem Mac.
laike9m
9

Verwenden Sie den folgenden Befehl in Ihrem Terminal, um die Readline-Bindung zu ermitteln, die ein Wort rückwärts tötet, wie Sie möchten:

bind -p | awk '/kill/ && /word/ && /backward/'

In einer Ubuntu-Standardinstallation könnte die Ausgabe folgendermaßen aussehen:

"\e\C-h": backward-kill-word
# shell-backward-kill-word (not bound)

Die zweite Zeile scheint an dieser Stelle ohne Bedeutung zu sein. Versuchen wir also zu sehen, was die erste Zeile bedeutet. Von dem, was ich verstehe, die backward-kill-worddie Readline- Funktion in der Tat alle Zeichen löschen , bis die vorherigen Sonderzeichen ( /, ;, ,etc.) an der gebundene \e\C-hTastenfolge. In dieser Reihenfolge \e steht nun der EscSchlüssel, \C- der CtrlSchlüssel, und \C-hsteht für Ctrl+ h, was in diesem Fall mit Backspacekey äquivalent ist .

Also, suchen Sie für Esc+ Ctrl+h Tastenkombination , die mit entspricht Esc+Backspace und die, wegen des Verhaltens des xterm , dass Make - AltTaste als Meta - Zeichen und Meta - Zeichen zu handeln umgewandelt werden in eine Zwei-Zeichen - Sequenz mit dem Zeichen selbst durch vorangestellt Esc(siehe man xterm) entspricht Alt+Backspace .

Wenn es Ihnen jetzt nicht gefällt und Sie es weiterhin vergessen, können Sie den folgenden Befehl verwenden, um eine neue Verknüpfung für Ihren Zweck zu erstellen , z. B. Esc+ w:

bind '"\ew": backward-kill-word'

Fügen Sie Ihrer ~/.inputrcDatei die folgende Zeile hinzu, um diese neue Verknüpfung für alle Befehle, die readline verwenden, dauerhaft zu machen :

"\ew": backward-kill-word

Siehe help -m bind | sensible-pagerfür weitere Informationen.

Radu Rădeanu
quelle
2
Gute Antwort. Üblicherweise würden Sie die gesamte Einstellung mit dem Befehl bind in einfache Anführungszeichen setzen. bind '"\ew": backward-kill-word', aber das ist ein Trottel. Und kann es sein , zu erwähnen , dass Sie auch setzen können "\ew": backward-kill-wordin ~/.inputrc, in welchem Fall andere Befehle, die Verwendung Readline- auch haben , dass die Bindung, zB wenn Sie Readline- in dem Python - interaktiv Shell zu aktivieren, dass die Bindung auch dort gilt.
Geirha
@geirha Ja, ich weiß, was du gesagt hast, aber ich dachte, dass das OP weiß, wie man das macht. Wie auch immer, jetzt merke ich, dass meine Antwort für das OP nicht so nützlich ist (er wollte sich nur an die Verknüpfung erinnern), aber ich hoffe, dass sie für andere Benutzer dieser Website nützlich ist und ich habe meine Antwort bearbeitet, indem ich Ihre Beobachtung hinzufügte. Vielen Dank.
Radu Rădeanu
0

Eine weitere Tastenkombination ist:

Alt+ Bdann Ctrl+K

Alt + B     Move cursor backward one word on the current line    
Ctrl + K    Clear the line after the cursor

Alt+ Bdann Alt+D

Dadurch wird das letzte Wort entfernt, ohne dass Sonderzeichen zwischen Wörtern gelöscht werden.

αғsнιη
quelle