fzf-git.sh
基于 fzf 的 Git 对象 bash 和 zsh 按键绑定。
每个绑定都允许您浏览特定类型的 Git 对象,并选择要粘贴到命令行的对象。
安装
- 安装最新版本的 fzf(包括 fzf-tmux)
- (可选)安装 bat 以获得语法高亮的文件预览
- 在您的 .bashrc 或 .zshrc 中加载 fzf-git.sh 文件
使用方法
绑定列表
- CTRL-GCTRL-F 用于文件
- CTRL-GCTRL-B 用于分支
- CTRL-GCTRL-T 用于标签
- CTRL-GCTRL-R 用于远程仓库
- CTRL-GCTRL-H 用于提交哈希
- CTRL-GCTRL-S 用于贮藏
- CTRL-GCTRL-L 用于引用日志
- CTRL-GCTRL-W 用于工作树
- CTRL-GCTRL-E 用于每个引用(
git for-each-ref
)
[!警告] 在以下情况下,您可能会遇到这些绑定的问题:
- 如果 CTRL-B 被用作 tmux 前缀键,CTRL-GCTRL-B 将不起作用
- 如果启用了流控制,CTRL-GCTRL-S 将不起作用, CTRL-S 会冻结终端
- (
stty -ixon
可以禁用它)要解决这些问题,您可以使用 CTRL-G{key} 代替 CTRL-GCTRL-{KEY}。
[!警告] 如果 zsh 的
KEYTIMEOUT
太小(例如 1),您可能无法及时按下两个键。
在 fzf 中
- TAB 或 SHIFT-TAB 选择多个对象
- CTRL-/ 更改预览窗口布局
- CTRL-O 在网络浏览器中打开对象(使用 GitHub URL 方案)
自定义
# 重新定义此函数以更改选项
_fzf_git_fzf() {
fzf-tmux -p80%,60% -- \
--layout=reverse --multi --height=50% --min-height=20 --border \
--border-label-pos=2 \
--color='header:italic:underline,label:blue' \
--preview-window='right,50%,border-left' \
--bind='ctrl-/:change-preview-window(down,50%,border-top|hidden|)' "$@"
}
定义快捷命令
每个绑定都由 _fzf_git_*
函数支持,因此您可以在 shell 配置文件中这样做:
gco() {
_fzf_git_each_ref --no-multi | xargs git checkout
}
gswt() {
cd "$(_fzf_git_worktrees --no-multi)"
}
环境变量
变量 | 描述 | 默认值 |
---|---|---|
BAT_STYLE | 指定使用 bat 显示文件的样式 | full |
FZF_GIT_CAT | 定义用于显示文件的预览命令 | bat --style=$BAT_STYLE --color=$FZF_GIT_COLOR |
FZF_GIT_COLOR | 设置为 never 以禁用列表中的颜色 | always |
FZF_GIT_PAGER | 指定预览窗口的分页命令 | $(git config --get core.pager) |
FZF_GIT_PREVIEW_COLOR | 设置为 never 以禁用预览窗口中的颜色 | always |