Повторіть останню команду, що відповідає “два слова” zsh


1

Я хочу повторити останню команду, яка відповідає foo bar. Використання !! не працює (це не остання команда, яку я використав), і ні !foo, тому що моя історія виглядає приблизно так

foo bar dee zep
foo boo lee kee
foo bee

Якщо я спробую набрати !foo bar, zsh автоматично завершується до foo bee (що є таким же, як !! так чи інакше), коли я потрапив у простір. Як я можу це зробити?

Відповіді:


2
!?foo bar

Подивитися http://zsh.sourceforge.net/Doc/Release/Expansion.html#Event-Designators

Редагувати : Ні, ви не повинні уникати пробілів. Якщо потрібно додати щось, що не є частиною розширення історії, відокремте його від іншого ?, напр .:

echo hello
echo foo
!?echo hello? world # runs "echo hello world"

Вам потрібно уникнути просторів?
rubixibuc

Можливо, я не можу це зробити, тому що використовую oh-my-zsh; Я не можу друкувати !?foo bar, оскільки як я вдарив ' ' пробіл , zsh автозавершення до foo bee; Я втрачаю позначку події з підказки, і далі ? не допомагайте мені замінити bee с bar.
simont

Там є bindkey у oh-my-zsh, під lib/keybindings.zsh, називається magic-space (лінія 23, прибл.). Вона розширює історію ' '; Вимкнення цього прив'язки дозволило мені використовувати !? позначення події. Дякую :)
simont

0

Краща відповідь:

!{?foo bar?}

Я вважаю фігурні дужки корисними для затримки розширення історії за допомогою магічного простору, хоча вони і задокументовані як:

Ізолюйте посилання на історію з суміжних символів (якщо необхідно).

на сторінці:

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

Примітка: у деяких випадках використання набагато швидше n попередній синтаксис елемента історії, наприклад:

!-2

для другої команди назад, !-1 є таким же, як !!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.