Мне сказали, что в ZSH вы можете сделать что-то вроде command
, а затем, когда вы нажмете, он будет фильтровать историю на основе данной команды. Но когда я пытаюсь это сделать, он просто циклирует историю, как это делает bash. Отключено ли это по умолчанию?
Фильтрация истории ZSH по команде
Ответ 1
Нажмите Ctrl+R
, введите несколько букв, он найдет предыдущую команду с этими буквами, продолжайте нажимать Ctrl + R, чтобы продолжить предыдущие выводы.
Работает в bash, zsh (и других оболочках, предположим).
Мне лично нравится: введите несколько букв, нажмите Up
, появятся предыдущие команды, начинающиеся с тех же букв. Очень мощный, мне это нравится.
Вы должны привязать ключи к history-beginning-search-backward
и history-beginning-search-forward
.
В случае, если этого недостаточно для вас, у zsh есть много вариантов, попробуйте найти Zsh Line Editor и сообщите нам.
Для bash, менее мощных, но более общих, Bash команд для истории.
Ответ 2
Использовать восклицательный знак:
> !<starts-with this string>
Вы можете стрелять вверх/вниз по всем командам, которые начинались с этого. Я использую "! V" все время, чтобы получить мою предыдущую команду для открытия файла с помощью Vim.
Вы также можете использовать знак вопроса для поиска, не соответствующий началу строки,
> !?status
Может найти "git status".
Ответ 3
Эта функция доступна в fish, но кажется, что кто-то сделал zsh для. Он недоступен в стандартном ZSH.
Ответ 4
С помощью клавиш vim, активированных в zsh, вы можете использовать vi-history-search-backward (/) в режиме командной строки vi.
Ответ 5
Используйте percol для динамического поиска и навигации по истории с помощью Ctrl - r.
- установить percol:
sudo pip install percol
- добавьте фрагмент кода zsh-history-search в ваш .zshrc файл.
После Ctrl - r вы можете увидеть всю свою историю в том же окне. Поиск ключевого слова (динамически) сужает список вниз. Вы можете использовать привязки клавиш (например, emacs, например config), чтобы перемещаться вверх и вниз по списку и в конечном итоге делать выбор.
Вот поиск всех sudo install
команд, доступных в истории, с выбранным sudo make install
.
Enter выдает выбранную команду.