ersetzt Zeichenfolgen in der zsh-Befehlszeile

7

Ich benutze zsh und emacs keybindings. Irgendwann muss ich denselben Befehl mit verschiedenen Eingaben ausführen. Die Eingaben haben üblicherweise gemeinsame Teilstrings. Gibt es eine einfache Möglichkeit, Teile des vorherigen Befehls durch eine andere Zeichenfolge zu ersetzen? Zum Beispiel ist der vorherige Befehl:

%Vor%

Wie könnte ich einfach "chr2" durch "chr3" ersetzen?

Eine Erweiterung der Frage, wie man mehrere verschiedene Teilstrings im Befehl durch andere ersetzen kann:

%Vor%

Wie kann man beispielsweise "chr1" mit "chrX", "chr2" mit "chrY", "chr3" mit "chrZ" ersetzen?

Danke.

    
Rainfield 25.04.2013, 18:21
quelle

2 Antworten

17

Sie können auch die schnelle Verlaufsersetzung mit ^old^new (viel schneller als !!:s^old^new^ )

durchführen %Vor%

Dies ändert nur das erste Auftreten. Wenn Sie mehr benötigen, verwenden Sie einen der Änderungsmodifikatoren. Beispiel: globale Änderungen:

%Vor%

PS: Durchsuchen Sie das zshexpn Handbuch nach ^foo^bar , um den Abschnitt zu finden, der dies beschreibt. Scrollen Sie ein wenig nach unten (in der Anleitung), und Sie sehen die Liste der 'History Expansion Modifiers'.

PS: Für eine Mehrfachsubstitution: ^old1^new1^:s^old2^new2^ etc

    
Francisco 26.04.2013, 14:48
quelle
6

Um zu erreichen, wonach Sie direkt gefragt haben:

%Vor%

Dies ändert den zuletzt eingegebenen Befehl. Um eine globale Ersetzung durchzuführen, verwenden Sie :gs/a/b/ .

Beispiel:

%Vor%

Lesen Sie mehr in man zshexpn - ZSH Expansion und Substitution.

    
Tom Regner 26.04.2013 08:43
quelle

Tags und Links