Bash предлагает функциональность для обратного поиска через Ctrl+ R. Затем можно ввести часть команды, которая покажет подходящую запись из истории.
Предположим, это моя история:
vim foo1
vim foo2 # I want to go here
vim foo3 # this is where I land, how to go back?
Я ищу foo
. Нажатие Ctrl+ Rснова показывает следующую подходящую запись поиска. Часто со мной случается, что я слишком быстр и перехожу намеченный результат, и vim foo3
мне показывают, и теперь я хочу вернуться к vim foo2
.
Отсюда мой вопрос: как мне ориентироваться в обратном поиске?
bash
command-history
search
k0pernikus
источник
источник
Ответы:
Вы можете получить доступ к этому через
forward-search-history
функцию, которая по умолчанию привязана к ctrl+s. К сожалению ctrl+s, используется для сигнализацииxoff
по умолчанию, что означает, что вы не можете использовать его для изменения направления поиска. Есть два решения для решения проблемы: одно отключение отправкиxoff/xon
сигналов, а другое изменение привязки клавиш дляforward-search-history
Отключить xon / xoff
Запустите
stty -ixon
в своем терминале или добавьте его в свой~/.bashrc
. Это позволяет использовать ctrl+sиспользоватьforward-search-history
функцию истории.Для получения дополнительной информации о потоке управления посмотрите на Как разморозить после случайного нажатия Ctrl-S в терминале? и некоторые ответы
Изменить связывание клавиш
Если вы не хотите изменять поведение по умолчанию, ctrl+sвы можете изменить связывание клавиш для
forward-search-history
сbind
. Поскольку большинство ключей уже определены в bash, вам, возможно, придется проявить творческий подход:Это связывается ctrl+tс вперед-розыскной-историей, но следует помнить , что по умолчанию ctrl+tпрогонов
transpose-chars
источник
stty -ixon
вzsh
и она работает очень хорошо. Однако есть ли какие-либо нежелательные побочные эффекты при отключенииxoff/xon
сигнализации?ctrl+s
для приостановки вывода терминала. Если вы никогда не использовали его раньше, это не проблемаC-s
.. очень полезно при использовании tail в журналах сервера. Аккуратно! (Хотелось бы, чтобы у меня был еще один голос :))bind '"\C-t": history-search-forward'
В качестве альтернативы простому обратному поиску и прямому поиску, предоставляемому вашим bash, вы можете рассмотреть:
fzf , самоописанный "нечеткий искатель командной строки".
Он может заменить поиск по умолчанию вашего bash (и других терминалов).
Его преимущества в том, что он:
Мой рабочий процесс теперь полностью зависит от базового обратного поиска на машинах, которые я контролирую.
источник