Jade Dungeon

文件管理工具fzf

fzf基础功能

fzf结合其他工具

fzf结合apt实现包管理

把apt-cache的结果格式化为目录的格式,让fzf浏览:

 apt-cache search '' | sort | cut --delimiter ' ' --fields 1 |
            fzf --multi --cycle --reverse \
            --preview-window=right:70%:wrap \
            --preview 'apt-cache show {1}' |
            xargs -r sudo apt install -y

就可以像浏览文件结构一样浏览包结构。还可以直接按回车就直接安装:

>                 ╭─────────────────────────────────────────────────── │
 84292/84292 (0)  │ Package: 2vcard                               1/27 │
 0ad-data-common  │ Architecture: all                                  │
 0ad-data         │ Version: 0.6-4                                     │
 0ad              │ Multi-Arch: foreign                                │
 0install-core    │ Priority: optional  ┌───┐                          │
 0install         │ Section: universe/ut│ 0 │                          │
 0xffff           │ Origin: Ubuntu      └───┘                          │
 1oom             │ Maintainer: Ubuntu Developers <ubuntu-devel-di     │
 2048-qt          │ Original-Maintainer: Debian QA Group <packages     │
 2048             │ Bugs: https://bugs.launchpad.net/ubuntu/+fileb     │
 2ping            │ Installed-Size: 51                                 │
                  ─────────────────────────────────────────────────────┘

fzf结合ps实现进程管理

(date; ps -ef) |
  fzf --bind='ctrl-r:reload(date; ps -ef)' \
      --header=$'Press CTRL-R to reload\n\n' --header-lines=2 \
      --preview='echo {}' --preview-window=down,3,wrap \
      --layout=reverse --height=80% | awk '{print $2}' | xargs kill -9

直接搜索并结束要关掉的进程:

>
  258/258
  Press CTRL-R to reload

  Sun May  5 09:58:32 PM CST 2024
  UID   PID  PPID  C STIME TTY      TIME CMD
> root    1     0  0 20:19 ?    00:00:01 /sbin/init splash
  root    2     0  0 20:19 ?    00:00:00 [kthreadd]
  root    3     2  0 20:19 ?    00:00:00 [rcu_gp]
  root    4     2  0 20:19 ?    00:00:00 [rcu_par_gp]
  root    5     2  0 20:19 ?    00:00:00 [slub_flushwq]
  root    6     2  0 20:19 ?    00:00:00 [netns]
  root    8     2  0 20:19 ?    00:00:00 [kworker/0:0H-events_highpri]
  root   10     2  0 20:19 ?    00:00:00 [mm_percpu_wq]
┌────────────────────────────────────────────────────────────────────┐
│ root    1     0  0 20:19 ?    00:00:01 /sbin/init splash           │
│                                                                    │
│                                                                    │
└────────────────────────────────────────────────────────────────────┘

fzf结合Ripgrep进行搜索

创建一个搜索脚本rfv

#!/usr/bin/env bash

# 1. Search for text in files using Ripgrep
# 2. Interactively narrow down the list using fzf
# 3. Open the file in Vim
rg --color=always --line-number --no-heading --smart-case "${*:-}" |
  fzf --ansi \
      --color "hl:-1:underline,hl+:-1:underline:reverse" \
      --delimiter : \
      --preview 'bat --color=always {1} --highlight-line {2}' \
      --preview-window 'up,60%,border-bottom,+{2}+3/3,~3' \
      --bind 'enter:become(vim {1} +{2})'

加上可执行权限:

chmod +x rfv

可以用这个脚本查找字符串algo

./rfv algo