Заощадьте 15% на всіх хостингових послугах

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код: Skills Почати
Рубрики
Linux Віртуальні сервери

Як встановити та використовувати fzf на Linux: Повний посібник з нечіткого пошуку в терміналі

Якщо ви проводите значну кількість часу в терміналі Linux, ви вже знаєте, що пошук файлів, згадування команд та навігація по каталогам можуть сповільнити вашу роботу. fzf (Fuzzy Finder) — це надзвичайно швидкий, інтерактивний інструмент командного рядка, який повністю усуває цю проблему. Чи то фільтрування тисяч файлів, пошук в історії команд, чи перемикання гілок Git, fzf перетворює нудні завдання терміналу на плавні, майже миттєві операції.

У цьому комплексному посібнику ви дізнаєтесь, як встановити fzf на Linux, оволодіти його основними функціями, інтегрувати його з популярними інструментами та налаштувати його відповідно до вашого точного робочого процесу.

> Запускаєте власне середовище Linux? Потужна конфігурація розробки починається з правильної інфраструктури. VPS Hosting AlexHost надає вам повний доступ root, високопродуктивне сховище SSD та повну свободу налаштування вашого сервера — ідеальну основу для побудови продуктивного робочого процесу терміналу Linux.

Що таке fzf?

fzf — це універсальна утиліта командного рядка для нечіткого пошуку, написана на Go. Вона читає список елементів зі стандартного введення та представляє їх у реальному часі через інтерактивний інтерфейс фільтрування. Під час введення тексту fzf звужує результати за допомогою алгоритму нечіткого збігу — це означає, що вам не потрібно вводити точні рядки для пошуку того, що вам потрібно.

Ключові можливості fzf включають:

  • Пошук файлів та каталогів у великих деревах директорій
  • Навігація по історії команд з миттєвим відновленням
  • Перегляд гілок та комітів Git
  • Управління процесами та інтерактивне завершення
  • Вибір хоста SSH з вашого файлу конфігурації
  • Інтеграція практично з будь-якою командою, яка видає вихідні дані на основі рядків

fzf — це легка утиліта, без залежностей після встановлення, і безперебійно працює з оболонками Bash, Zsh та Fish.

Встановлення fzf на Linux

Існує два основні методи встановлення: клонування офіційного репозиторію Git або використання менеджера пакетів вашого дистрибутива. Обидва методи прості.

Метод 1: Встановлення через Git (Рекомендується для найновішої версії)

Встановлення з репозиторію GitHub гарантує, що ви завжди отримаєте найновішу версію.

Крок 1 — Клонуйте репозиторій:

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf

Крок 2 — Запустіть скрипт встановлення:

cd ~/.fzf
./install

Під час встановлення вам буде запропоновано три питання конфігурації:

  • Увімкнути прив’язки клавіш? (Рекомендується: Так) — Додає Ctrl+T, Ctrl+R та Alt+C ярлики
  • Увімкнути нечітке автодоповнення? (Рекомендується: Так) — Включає інтеграцію доповнення вкладок
  • Оновити файли конфігурації shell? (Рекомендується: Так) — Автоматично завантажує fzf у .bashrc / .zshrc

Після встановлення перезавантажте вашу shell:

source ~/.bashrc   # For Bash users
source ~/.zshrc    # For Zsh users

Метод 2: Встановлення через менеджер пакетів

Встановлення через менеджер пакетів є швидшим і інтегрується з механізмом оновлення вашої системи, хоча може надати дещо старішу версію.

Ubuntu / Debian:

sudo apt update && sudo apt install fzf

Fedora:

sudo dnf install fzf

Arch Linux / Manjaro:

sudo pacman -S fzf

macOS (Homebrew):

brew install fzf
$(brew --prefix)/opt/fzf/install

Перевірте ваше встановлення:

fzf --version

Базове використання fzf

Після встановлення fzf одразу готовий до використання. Ось основні команди для побудови вашої основи.

1. Інтерактивний пошук файлів

Запустіть fzf у вашій поточній директорії для інтерактивного пошуку файлів:

fzf

З’являється інтерактивний запит. Почніть вводити будь-яку частину імені файлу — fzf фільтрує результати в реальному часі. Використовуйте клавіші зі стрілками для навігації та натисніть Enter для вибору.

Корисні ярлики навігації:

КлавішаДія
/ Навігація по результатам
EnterПідтвердити вибір
TabПозначити кілька елементів
Ctrl+C / EscСкасувати

2. Пошук історії команд

Один з найпопулярніших варіантів використання fzf — це інтерактивний пошук історії команд:

history | fzf

Якщо ви увімкнули прив’язки клавіш під час встановлення, ви можете натиснути Ctrl+R у будь-який час у вашому терміналі, щоб активувати це миттєво — набагато потужніше за стандартний зворотний пошук.

3. Поєднайте fzf з find

Рекурсивно шукайте у вашій файловій системі та передавайте результати в fzf:

find . -type f | fzf

Для пошуку лише директорій:

find . -type d | fzf

4. Перейдіть до директорії за допомогою Alt+C

Якщо ви увімкнули прив’язки клавіш, натиснення Alt+C відкриває інтерактивний навігатор директорій. Виберіть директорію, і fzf автоматично запустить cd для переходу туди.

5. Пошук гілок Git

Швидко знайдіть та посилайтеся на гілки Git у великих репозиторіях:

git branch | fzf

Для інтерактивного переходу на гілку:

git checkout $(git branch | fzf)

Інтеграція fzf з іншими командами

Справжня потужність fzf проявляється, коли ви комбінуєте його з іншими інструментами, використовуючи підстановку команд ($(fzf)).

1. Відкрити файл безпосередньо в vim або nano

vim $(fzf)
nano $(fzf)

Введіть частину назви файлу, виберіть його, і редактор відкриється миттєво — не потрібно вводити повний шлях.

2. Скопіювати шлях файлу в буфер обміну

fzf | xclip -selection clipboard

На системах, що використовують xsel:

fzf | xsel --clipboard --input

3. Інтерактивний вибір хоста SSH

Якщо ви керуєте кількома серверами, ця інтеграція — справжня гра:

ssh $(grep -i "^Host " ~/.ssh/config | awk '{print $2}' | fzf)

Це аналізує ваш файл конфігурації SSH і дозволяє інтерактивно вибрати хост перед підключенням — більше не потрібно запам’ятовувати імена хостів або IP-адреси.

> Керуєте кількома віддаленими серверами? Виділені сервери AlexHost забезпечують апаратне забезпечення корпоративного рівня з повним адміністративним контролем, що робить їх ідеальними для команд, які покладаються на SSH-інтенсивні робочі процеси.

4. Інтерактивно завершити процес

kill -9 $(ps aux | fzf | awk '{print $2}')

Перелічіть усі запущені процеси, нечітко шукайте той, який вам потрібен, і завершіть його — все без необхідності знати PID заздалегідь.

5. Переглянути вміст файлу під час пошуку

fzf підтримує прапор --preview, який відображає вміст файлу поряд з результатами пошуку:

fzf --preview 'cat {}'

Для попередніх переглядів з синтаксичним виділенням (потрібен bat):

fzf --preview 'bat --color=always {}'

Налаштування fzf

fzf широко налаштовується через змінні середовища та файли конфігурації оболонки.

1. Встановіть параметри за замовчуванням за допомогою FZF_DEFAULT_OPTS

Додайте це до вашого ~/.bashrc або ~/.zshrc, щоб застосувати параметри глобально:

export FZF_DEFAULT_OPTS="--height 40% --reverse --inline-info --border"

Пояснення поширених параметрів:

ПараметрОпис
--height 40%Відобразити fzf у нижніх 40% терміналу
--reverseПоказувати результати зверху вниз (введення вгорі)
--inline-infoВідобразити кількість збігів в рядку
--borderНамалювати рамку навколо вікна fzf
--multiУвімкнути багатовибір за допомогою Tab

2. Налаштування кольорів

Узгодьте кольорову схему fzf з темою вашого терміналу:

export FZF_DEFAULT_OPTS="--color=bg+:#3c3836,bg:#282828,fg:#ebdbb2,fg+:#ebdbb2,hl:#fabd2f,hl+:#fabd2f,info:#83a598,prompt:#bdae93,spinner:#fabd2f,pointer:#83a598,marker:#fe8019,border:#665c54"

Цей приклад використовує популярну кольорову схему Gruvbox. Відрегулюйте значення hex, щоб вони відповідали вашій улюбленій темі.

3. Користувацькі комбінації клавіш

Додайте користувацькі прив’язки до файлу конфігурації оболонки:

# Ctrl+T — fuzzy file finder
export FZF_CTRL_T_COMMAND="find . -type f 2>/dev/null"

# Alt+C — fuzzy directory navigator
export FZF_ALT_C_COMMAND="find . -type d 2>/dev/null"

# Ctrl+R — command history search with preview
export FZF_CTRL_R_OPTS="--preview 'echo {}' --preview-window down:3:hidden:wrap --bind '?:toggle-preview'"

4. Встановіть джерело файлів за замовчуванням за допомогою FZF_DEFAULT_COMMAND

За замовчуванням fzf використовує find для перелічення файлів. Ви можете замінити це на швидші інструменти, такі як fd або ripgrep:

# Using fd (faster alternative to find)
export FZF_DEFAULT_COMMAND="fd --type f --hidden --follow --exclude .git"

# Using ripgrep
export FZF_DEFAULT_COMMAND="rg --files --hidden --follow --glob '!.git'"

5. Постійний файл конфігурації

Для користувачів Zsh ви можете зберігати постійні параметри fzf у спеціальному файлі:

echo "export FZF_DEFAULT_OPTS='--height 40% --reverse --inline-info --border'" >> ~/.fzf.zsh

Переконайтеся, що цей файл завантажується у вашому ~/.zshrc:

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

Практичні приклади робочого процесу fzf

Ось готові функції, які ви можете додати до вашого .bashrc або .zshrc:

Інтерактивний cd з fzf

fcd() {
  local dir
  dir=$(find ${1:-.} -type d 2>/dev/null | fzf +m) && cd "$dir"
}

Відкриття недавніх файлів у vim

fvim() {
  local file
  file=$(find . -type f -name "*.${1:-*}" | fzf --preview 'cat {}')
  [ -n "$file" ] && vim "$file"
}

Пошук та застосування Git Stash

fstash() {
  local stash
  stash=$(git stash list | fzf | cut -d: -f1)
  [ -n "$stash" ] && git stash apply "$stash"
}

Усунення типових проблем fzf

ПроблемаРішення
fzf: command not foundПереконайтеся, що ~/.fzf/bin знаходиться у вашому $PATH; повторно запустіть ~/.fzf/install
Комбінації клавіш не працюютьПовторно запустіть скрипт установки та підтвердьте, що конфігурація оболонки завантажена
Повільна продуктивність у великих каталогахВстановіть FZF_DEFAULT_COMMAND для використання fd або rg замість find
Кольори відображаються неправильноПереконайтеся, що ваш термінал підтримує 256 кольорів; додайте --color=always до команд попереднього перегляду
fzf не знайдено після установки пакетаЗапустіть source ~/.bashrc або відкрийте новий сеанс терміналу

Чому ваше хостинг-середовище важливе для продуктивності розробника

Потужний робочий процес терміналу, як fzf, настільки ж ефективний, як і середовище, в якому він працює. Повільна I/O, обмежені ресурси або обмежені дозволи можуть підірвати навіть найкращі інструменти.

  • Для розробників та системних адміністраторів, яким потрібен повний контроль, VPS Hosting AlexHost надає виділені ресурси, root доступ та гнучкість для встановлення будь-якого інструменту без обмежень.
  • Для команд, які керують веб-додатками, поєднання вашого сервера з VPS з cPanel дає вам як потужність терміналу, так і графічний інтерфейс управління.
  • Для проектів, які потребують домену та веб-присутності, Domain Registration та Shared Web Hosting AlexHost пропонують доступну, повністю керовану стартову точку.

Висновок

fzf — один з найвпливовіших інструментів, які ви можете додати до свого робочого процесу Linux терміналу. Його алгоритм нечіткого пошуку, фільтрування в реальному часі та безперебійна інтеграція з командами оболонки роблять його незамінним множником продуктивності — незалежно від того, чи ви шукаєте файли, відновлюєте команди, керуєте гілками Git чи навігуєте по віддаленим серверам.

Ключові висновки з цього посібника:

  • Встановіть fzf через Git clone для найновіших функцій або використовуйте менеджер пакетів для простоти
  • Увімкніть прив’язки клавіш (Ctrl+T, Ctrl+R, Alt+C) для миттєвого доступу до найкорисніших функцій fzf
  • Комбінуйте fzf з vim, ssh, git, kill та find за допомогою підстановки команд
  • Налаштуйте зовнішній вигляд та поведінку через FZF_DEFAULT_OPTS та конфігурацію оболонки
  • Використовуйте --preview для перетворення fzf на повнофункціональний браузер файлів

Почніть з основ, поступово включайте інтеграції, які відповідають вашому робочому процесу, і ви швидко задумаєтесь, як ви коли-небудь керували терміналом без нього.