Я недавно перешел на ZSH, и я хотел бы стать более эффективным при замене аргументов в командах. В частности, я хотел бы заменить аргумент "N" в самом последнем вызове команды "cmd". Я не хочу знать, каков был предыдущий шаблон аргумента, я просто хочу заменить весь аргумент.
Например, скажем, у меня есть эта команда где-то в моей истории,
foo arg-1 arg-2 arg-3
И я хочу заменить первый позиционный аргумент на «arg-replace» при моем следующем вызове. Просматривая zshexpn
, я подумал, что могу сделать что-то вроде:
!foo:1:s/.*/arg-replaced/ [TAB]
С ожидаемыми результатами:
foo arg-replaced arg-2 arg-3
Но это приводит к ошибке "zsh: substitution failed".
Я посмотрел на вопрос « Как заменить конкретный аргумент предыдущей команды в Zsh?"и кажется почти то, что я хочу, за исключением того, что он заменяет только предыдущую команду, а не ищет в истории мой шаблон команды. Я чувствую, что это должно быть чем-то поддерживаемым расширением zsh по умолчанию, но я проклят, если смогу понять, как это сделать.