• 终端命令工具收集fd fzf


    fd命令

    简介

    fd 是基于 Rust 开发的一个速度超快的命令行搜索工具,fd 旨在成为 Linux / Unix 下 find 命令的替代品。

    fd的一些显着特征:

    1. 易于使用的语法 - fd * pattern *而不是find -iname * pattern *
    2. 多彩输出类似于ls命令之一
    3. 性能快。 开发人员的基准测试可在此处获得
    4. 默认情况下,智能搜索不区分大小写,如果图标容器为大写符号,则切换为区分大小写。
    5. 默认情况下不查看隐藏文件和目录
    6. 默认情况下不会查看*.gitignore*
    7. Unicode意识。

    使用

    模糊匹配

    ❯ fd plugin
    bin/doc/img/zplugin.png
    bin/doc/img/zplugin.svg
    bin/doc/img/zplugin_refcard.png
    bin/doc/img/zplugin_refcard.svg
    bin/zmodules/Src/zdharma/zplugin.c
    bin/zmodules/Src/zdharma/zplugin.mdd
    

    fd 默认是不区分大小写和支持模糊查询的。

    区分查找的类别

    使用 -t 命令来区别要查找的内容

    f, file  		     普通文件
    d, directories 		 目录
    l, symlink 			 symbolic links
    x, executable 		 可执行文件
    e 					空文件或者目录
    

    使用,筛选文件夹

    ❯ fd -td plugin
    plugins
    snippets/OMZ::plugins
    snippets/https--github.com--robbyrussell--oh-my-zsh--blob--master--plugins--fd
    

    搜索指定目录

    ❯ fd plugin ~/.zinit/plugins
    /root/.zinit/plugins/Aloxaf---fzf-tab/fzf-tab.plugin.zsh
    /root/.zinit/plugins/romkatv---powerlevel10k/gitstatus/gitstatus.plugin.sh
    /root/.zinit/plugins/romkatv---powerlevel10k/gitstatus/gitstatus.plugin.zsh
    /root/.zinit/plugins/skywind3000---z.lua/z.lua.plugin.zsh
    /root/.zinit/plugins/skywind3000---z.lua/z.lua.plugin.zsh.zwc
    

    搜索隐藏文件

    ❯ fd -H plugin
    .tmux/plugins
    .tmux/plugins/tpm/HOW_TO_PLUGIN.md
    .tmux/plugins/tpm/bin/clean_plugins
    .tmux/plugins/tpm/bin/install_plugins
    .tmux/plugins/tpm/bin/update_plugins
    

    搜索指定扩展名的文件

    ❯ fd -H -e md
    .tmux/README.md
    .tmux/plugins/tmux-continuum/CHANGELOG.md
    .tmux/plugins/tmux-continuum/CONTRIBUTING.md
    .tmux/plugins/tmux-continuum/LICENSE.md
    .tmux/plugins/tmux-continuum/README.md
    

    在当前目录下搜索文件名包含 reademe 且扩展名为 md 的文件

    ❯ fd -H -e md readme
    .tmux/README.md
    .tmux/plugins/tmux-continuum/README.md
    .tmux/plugins/tmux-continuum/scripts/handle_tmux_automatic_start/README.md
    .tmux/plugins/tmux-logging/README.md
    .tmux/plugins/tmux-resurrect/README.md
    

    fzf命令

    简介

    fzf是目前最快的fuzzy finder。使用golang编写。结合其他工具(比如ag和fasd)可以完成非常多的工作。

    环境变量

    如下表所示:

    name description example
    FZF_DEFAULT_COMMAND 输入为 tty 时的默认命令 export FZF_DEFAULT_COMMAND='fd --type f'
    FZF_DEFAULT_OPTS 设置默认选项 export FZF_DEFAULT_OPTS="--layout=reverse --inline-info"
    FZF_CTRL_T_COMMAND 按键映射<CTRL-T>行为设置
    FZF_CTRL_T_OPTS 按键映射<CTRL-T>选项设置
    FZF_CTRL_R_OPTS 按键映射<CTRL-R>选项设置
    FZF_ALT_C_COMMAND 按键映射<CTRL-C>行为设置
    FZF_ALT_C_OPTS 按键映射<CTRL-C>选项设置
    • 界面fzf 默认会以全屏方式显示交互界面,可以使用--height选项设置交互界面高度:
    # 使用 rg 进行搜索   export FZF_DEFAULT_COMMAND='rg --files --hidden' 
    

    使用

    常用快捷键:

    • Ctrl-j Ctrl-n 都能往下,不过 Ctrl-j 在我的配置中是切换到下 pane 所以我只用 Ctrl-n
    • Ctrl-k Ctrl-p 都能往上,不过 Ctrl-k 在我的配置中是切换到上 pane 所以我只用 Ctrl-p
    • Ctrl-c 或者 Ctrl-g 或者 Ctrl-q 或者 Esc 用来退出 abort
    • Ctrl-h 退格键 backspace,不过这个键和 tmux vim 有冲突所以一般不用
    • Ctrl-a 光标跳转到开头 Ctrl-e 跳转到行结尾
    • Ctrl-w 向前删以 word
    • Ctrl-u 删除所有输入

    常用操作

    历史记录搜索

    终端命令行下按下 Ctrl-r 会列出 history 命令目录,选中 Enter 离开 fzf 后,该条目会拷贝到命令行中。

    搜索当前文件夹

    在命令行中按下 Ctrl-t 会打开 fzf 窗口,此时如果找到某文件,并选择 Enter,那么该文件名会被拷贝到命令行中。

    假如在 fzf 选择窗口中想要选择多个文件,那么可以使用 tab 来进行多选,使用 Ctrl-n, Ctrl-p 上下切换的时候,可以使用 Tab 来选中期望的文件进行多选操作。

    如果想同时预览文件内容,可以使用--preview选项

    export FZF_CTRL_T_OPTS="--preview '(highlight -O ansi -l {} 2> /dev/null || cat {} || tree -C {}) 2> /dev/null | head -200'"
    

    列出文件夹目录,并自动进入

    在命令行上按下Alt-c, 会列出当前文件夹下的目录,选中条目会自动进入到相应目录

    预览窗口

    如果使用--preview选项, fzf会自动用外部程序打开现在条目的文件, {}会被fzf选中行内容代替

    fzf --preview 'cat {}'
    

    建议安装bat, 是一个Rust编写的独立程序
    也可以安装rougify(先安装ruby, 然后gem intall rouge)

    Bat: https://github.com/sharkdp/bat
    Highlight: http://www.andre-simon.de/dok...
    CodeRay: http://coderay.rubychan.de/
    Rouge: https://github.com/jneen/rouge

    然后在.zshrc里用函数或别名

    fzfp() {
    fzf --preview '[[ $(file --mime {}) =~ binary ]] && echo {} is a binary file || (bat --style=numbers --color=always{} || rougify {}  || highlight -O ansi -l {} || coderay {} || cat {}) 2> /dev/null | head -500'
    }
    alias tt='fzf --preview '"'"'[[ $(file --mime {}) =~ binary ]] && echo {} is a binary file || (bat --style=numbers --color=always{} || rougify {}  || highlight -O ansi -l {} || coderay {} || cat {}) 2> /dev/null | head -500'"'"
    
    #文件查找
    alias fzf.w="fzf --height 40% --layout reverse --info inline --border 
        --preview 'file {}' --preview-window down:1:noborder 
        --color 'fg:#bbccdd,fg+:#ddeeff,bg:#334455,preview-bg:#223344,border:#778899'"
    
    #文件预览
    alias fzf.p="fzf --preview 'bat --style=numbers --color=always --line-range :500 {}'"
    alias f="fzf.p"
    
    #Git 分支查找/Git Commit 查找
    _fzf_gco() {
      git branch | fzf | sed -e "s/* //g" | xargs -I {} git checkout {}
    }
     
    _fzf_gcs() {
      git log --oneline | fzf | grep -o -E "^[0-9a-z]+" | xargs -I {} git show {}
    }
    

    参考:

    推荐一款比 Find 快 10 倍的搜索工具 FD

    fd - 查找命令的简单快速替代方案

    每天学习一个命令:fzf 使用笔记

    fzf Examples

    模糊搜索神器fzf

    fzf - 命令行模糊搜索神器

    Bash “实趣”系列 —— 文件查找与预览(fzf)

  • 相关阅读:
    福大软工 · 第七次作业
    git分支重命名
    vscode左侧文件不同颜色标识含义
    正则表达式匹配指定字符区间的内容,且不包含指定字符
    git如何撤销工作区的修改
    git查看某个文件的提交历史
    扫盲篇--远程桌面连接
    git merge后如何撤销
    element-ui+vue-treeselect校验
    typeof 踩坑总结
  • 原文地址:https://www.cnblogs.com/hongdada/p/14071281.html
Copyright © 2020-2023  润新知