Повторите последнюю команду, соответствующую "два слова" zsh

479
simont

Я хочу повторить последнюю команду, которая соответствует foo bar. Использование !!не работает (это не последняя команда, которую я использовал), и не работает !foo, потому что моя история выглядит примерно так

foo bar dee zep foo boo lee kee foo bee 

Если я пытаюсь набрать !foo bar, zshавтозаполнение до foo bee(что в !!любом случае), когда я нажимаю пробел. Как бы я это сделал?

1

2 ответа на вопрос

2
WakiMiko
!?foo bar 

Смотрите http://zsh.sourceforge.net/Doc/Release/Expansion.html#Event-Designators

Редактировать : Нет, вы не должны избегать пробелов. Если вам нужно добавить что-то, что не является частью расширения истории, отделите его от другого ?, например:

echo hello echo foo !?echo hello? world # runs "echo hello world" 
вам нужно сбежать из пробелов? rubixibuc 12 лет назад 0
Возможно, я не могу этого сделать, потому что я использую `oh-my-zsh`; Я не могу набрать `!? Foo bar`, потому что * когда я нажимаю клавишу` '' `` `*, zsh автоматически завершает работу до` foo bee`; Я теряю указатель события из приглашения, и дальнейшее `?` Не помогает мне заменить `bee` на` bar`. simont 12 лет назад 0
В `oh-my-zsh`, под` lib / keybindings.zsh`, есть `bindkey ', называемый magic-space (строка 23, прим.). Это делает расширение истории на `''`; отключение этой привязки позволило мне использовать указатель событий `!?`. Спасибо :) simont 12 лет назад 0
0
Mike

Better answer:

!{?foo bar?} 

I find the braces helpful in delaying history expansion with magic-space, though they are documented as:

Insulate a history reference from adjacent characters (if necessary).

on the page:

http://zsh.sourceforge.net/Doc/Release/Expansion.html#History-Expansion

Note: in some cases it may be much faster to use the nth previous history item syntax like:

!-2 

for 2nd command back, !-1 is the same as !!

Похожие вопросы