Есть ли в Fish функциональность "обратного инкрементального поиска", аналогичная BRL CTRL+R?
Я действительно впечатлен функциональностью автозаполнения Fish. Однако в Bash есть одна особенность, которую я не могу найти в Fish. Когда вы нажимаете Ctrl+R в Bash и начинаете вводить термин, поиск выполняется на вашем .bash_history
найти совпадения в обратном порядке.
Есть ли подобная функциональность в Fish?
10 ответов
Я никогда не использовал fish
сам, но беглый поиск Google поднял эту страницу, которая утверждает, что
Мощный исторический механизм
Современные оболочки сохраняют предыдущие команды в истории команд. Вы можете просмотреть более ранние команды, используя стрелки вверх и вниз. Fish расширяет эту концепцию, интегрируя функции поиска по истории. Для поиска в истории просто введите строку поиска и нажмите стрелку вверх. Используя стрелки вверх и вниз, вы можете искать более старые и новые совпадения. The fish history automatically removes duplicate matches and the matching substring is highlighted. These features make searching and reusing previous commands much faster.
Это то, что вы ищете? It seems quite similar to bash's.
Вы можете использовать: https://github.com/junegunn/fzf
эта библиотека обеспечивает мощный поиск для рыбных раковин.
fish не реализует пошаговый поиск по истории, хотя, похоже, время от времени появляется. Документация до 2.0 содержит раздел "Отсутствующие функции и ошибки" 1, в котором перечисляется пошаговый поиск по истории в списке "Возможных возможностей". Список рассылки пользователей рыбы включает это сообщение Акселя Лиленкрата от 21 августа 2006 года, в котором он говорит, что инкрементальный поиск был бы полезной функцией.
Если вы привыкли к инкрементальному поиску в стиле bash, то поиск по истории рыб требует некоторого привыкания. Сначала нужно ввести поисковый запрос, и вы переместитесь вверх и вниз по соответствующим записям с помощью стрелок вверх и вниз. Но я полагаю, вы привыкли к этому.
Теперь в рыбной оболочке 3.6.0
https://github.com/fish-shell/fish-shell/releases/tag/3.6.0
По умолчанию Control-R теперь открывает историю команд на пейджере (#602). Это полностью доступно для поиска и выделено синтаксисом в качестве альтернативы инкрементному поиску, наблюдаемому в других оболочках. Для пользовательских привязок добавлена новая специальная функция ввода истории-пейджера.
Гораздо лучше выполнить Ctrl+r обратный поиск с помощью плагина FZF и fzf fish, используя менеджер пакетов рыбы Triton, настроенный для использования Silver Searcher.
~ /.Config/ рыба /config.fish:
triton jethrokuan/fzf
set -U FZF_COMPLETE 2
set -U FZF_FIND_FILE_COMMAND "ag -l --hidden --ignore .git"
set -U FZF_DEFAULT_OPTS "--height 40% --layout=reverse --border"
В Mac OS, чтобы установить предварительные требования:
brew install the_silver_searcher
brew install fzf
В трекере ошибок рыбок открыт запрос:
https://github.com/fish-shell/fish-shell/issues/602
Кто-то уже реализовал обходной путь для этого:
Для тех, кто все еще пытается найти что-то вроде Ctrl+ R, я вместо этого использую Ctrl+ P.
Это такой же мощный инструмент, как и обратный поиск (Ctrl+ R).
Вы можете использовать, как показано ниже:
Введите частичное ключевое слово, которое вы хотите найти.
Затем нажмите Ctrl+P
Повторяйте нажатие, Pпока не появится команда.
Использование стрелок вверх и вниз не является хорошей альтернативой Ctrl+R
потому что если искомая фраза действительно глубоко в истории, вам придется многократно нажимать клавиши вверх / вниз! Я просто использую history | grep -i [phrase]
Вы можете использовать peco в FISHELL в качестве обратного поиска. Вам необходимо сделать сокращения в файле config.fish в каталоге /home/user/.config/fish/.
Я использую сокращение «история | peco», а затем, если я набираю rr ->, введите im в поиск по истории. Но сейчас у меня проблема. Если я ищу строку в истории и набираю Enter, она ничего не делает:/
РЕДАКТИРОВАТЬ: Хорошо, я искал в Интернете решение истории исполняемого файла peco и нашел этот сайт - https://jonasweissensel.de/post/fish_peco/
Просто следуйте инструкциям и поместите его в свой файл config.fish.