Linux CentOS 7安装fzf和bat命令

杂记 / 2022-10-10

本文介绍了在Centos中安装fzf与bat指令的方法
(macos可以使用brew install进行安装)

fzf指令

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

image-1665345342911

https://github.com/junegunn/fzf/wiki/Examples 以下使用均来自官网示例,参考文件也多是官网示例的翻译;

1、基础使用, 筛选当前路径下所有的文件,回车返回选择的文件;

fzf
fzf --preview 'cat {}' # 预览当前路径下文件

2、fzf把全屏显示变为指定高度60%;

export FZF_DEFAULT_OPTS='--height 60% --reverse --border' 

3、定义函数fd

在bashrc中定义函数fd, 作用:筛选当前目录下的所有文件夹, 回车就能直接到该目录下;目录结构越复杂,效果越明显;

fd() {
  local dir
  dir=$(find ${1:-.} -path '*/\.*' -prune \
				  -o -type d -print 2> /dev/null | fzf +m) &&
  cd "$dir"
}

4、定义函数fe

在bashrc中定义函数fe, 作用:筛选当前目录下的所有文件,回车直接vim打开所选文件;

fe() {
  IFS=$'\n' out=("$(fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}' --query="$1" --exit-0 --expect=ctrl-o,ctrl-e)")
  key=$(head -1 <<< "$out")
  file=$(head -2 <<< "$out" | tail -1)
  if [ -n "$file" ]; then
    [ "$key" = ctrl-o ] && open "$file" || ${EDITOR:-vim} "$file"
  fi
}

5、定义函数fh

在bashrc中定义函数fh, 作用:近似等于ctrl+r,从历史命令中搜索想要重新执行的命令,回车返回选择的命令行;

fh() {
  echo $( ([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s --tac | sed -E 's/ *[0-9]*\*? *//' | sed -E 's/\\/\\\\/g')
}

因函数已加入到bashr,在命令行下,输入fzf、fd、fe、fh即可实现各自功能;

bat指令

执行如下指令即可:

V=$(curl --silent "https://api.github.com/repos/sharkdp/bat/releases/latest" | grep -Eo '"tag_name": "v(.*)"' | sed -E 's/.*"([^"]+)".*/\1/') && curl -sOL "https://github.com/sharkdp/bat/releases/download/$V/bat-$V-x86_64-unknown-linux-musl.tar.gz" && tar xzvf "bat-$V-x86_64-unknown-linux-musl.tar.gz" -C . && sudo sh -c "cp ./bat-$V-x86_64-unknown-linux-musl/bat /usr/local/bin/bat" && rm bat-$V-x86_64-unknown-linux-musl.tar.gz && unset V

使用方法:

bat filename

image-1665345300451

指令联动

使用如下指令可以实现在fzf中使用bat指令进行预览的效果

fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}'

image-1665345170924