Niedawno przeprowadziłem migrację do ZSH i chciałbym być bardziej wydajny w zastępowaniu argumentów w poleceniach. W szczególności chciałbym zastąpić argument „N” w najnowszym wywołaniu polecenia „cmd”. Nie chcę wiedzieć, jaki był poprzedni wzorzec argumentów, chcę tylko zastąpić cały argument.

Powiedzmy, że mam to polecenie gdzieś w mojej historii,

foo arg-1 arg-2 arg-3

I chcę zastąpić pierwszy argument pozycyjny słowem „arg-replace” przy następnym wywołaniu. Przeglądając zshexpn, pomyślałem, że mogę zrobić coś takiego:

!foo:1:s/.*/arg-replaced/ [TAB]

Oczekiwane wyniki:

foo arg-replaced arg-2 arg-3

Ale to powoduje błąd „zsh: podstawienie nie powiodło się”.

Spojrzałem na pytanie „ Jak zastąpić konkretny argument poprzedniego polecenia w zsh? ” I wydaje się, że prawie tego chcę, poza tym, że zastępuje ono tylko poprzednie polecenie, zamiast przeszukiwać historię pod kątem mojego wzorca poleceń. Wydaje mi się, że powinno to być coś domyślnie wspieranego przez rozszerzenie Zsh, ale mam cholerę, jeśli mogę wymyślić, jak to osiągnąć.

Palpatim
źródło