1.简介与安装

1. 简介ag是比grep更好的搜索软件, 提供高亮显示. Fasd时空机, 去过的地址都直接跳过去, 再也不用cd来cd去了. Fzf更强大的搜索文件.

2. 安装ag, Fasd Fzf

# mac
brew install the_silver_searcher fzf fasd

# 还需要把 eval "$(fasd --init auto)" 放到.bashrc或者.zshrc中
# 重新生效source .bashrc或者source .zshrc

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

yum install the_silver_searcher

yum install fasd

2. 使用.

1. 最有命令说明, 需要配置2中配置才可以使用.(bat是与cat类似,有语法高亮)

# tab键补全, 最近打开最多带有a名字的匹配文件, 在任何目录中你都可以直接编辑你的相要的文件
v a

# 在任意目录下都可以这样使用, cat与ag联用, 匹配a文件, 并搜索aaa
caf a | ag "aaa"

# 跳转, 配置最近最多a文件夹名, tab补全所有匹配的a的文件
j a

# 预览当前目录下的文件
ffp

2. 全部配置信息.

alias jan='fasd -a'        # any
alias js='fasd -si'       # show / search / select
alias jd='fasd -d'        # directory
alias jf='fasd -f'        # file
alias jsd='fasd -sid'     # interactive directory selection
alias jsf='fasd -sif'     # interactive file selection
alias j='fasd_cd -d'     # cd, same functionality as j in autojump
alias jz='fasd_cd -d -i' # cd with interactive selection
alias jdd='fasd -D' # 删除一个路径

# ja foo 列出最近操作的路径匹配'foo'的文件与目录
# jf foo 列出最近操作的路径匹配'foo'的文件
# jd foo 列出最近操作的路径匹配'foo'的目录
# js foo 列出最近操作的路径匹配'foo'的文件与目录,并可以通过序号选择
# jsf foo 列出最近操作的路径匹配'foo'的文件,并可以通过序号选择
# jsd foo 列出最近操作的路径匹配'foo'的目录,并可以通过序号选择
# j foo cd到最近操作的匹配'foo'并且得分最高的目录
# jz foo 列出最近操作的路径匹配'foo'的目录,通过序号选择,然后cd进目录
# jdd 删除一个路径

# File
alias v='jf -e vim'
alias baf='jf -e bat'
alias batf='jf -e bat'
alias caf='jf -e cat'
alias catf='jf -e cat'
alias py3f="jf -e python3"
alias lsf="jd -e ls"
alias pbcopyf='jf -e pbcopy'
alias pbpastef='jf -e pbpaste'
alias scpf='jf -e scp'
alias shf='jf -e sh'
# Folder
alias mvf='jd -e mv'

alias ffall="find / -type f | fzf | pbcopy"
alias ffm="find ~/ -type f | fzf | pbcopy"
alias ff="find . -type f | fzf | pbcopy"
alias ffec="find ~/ -type f | fzf -e | pbcopy"
# preview file
alias ffp='fzf --preview '"'"'[[ $(file --mime {}) =~ binary ]] && echo {} is a binary file || (rougify {}  || highlight -O ansi -l {} || coderay {} || cat {}) 2> /dev/null | head -500'"'"

# 跳到最近匹配的目录中

jj() {
    [ $# -gt 0 ] && fasd_cd -d "$*" && return
    local dir
    dir="$(fasd -Rdl "$1" | fzf -1 -0 --no-sort +m)" && cd "${dir}" || return 1
}

jje() {
    [ $# -gt 0 ] && fasd_cd -d "$*" && return
    local dir
    dir="$(fasd -Rdl "$1" | fzf -e -1 -0 --no-sort +m)" && cd "${dir}" || return 1
}

# 从当前路径搜索并跳转

jcd() {
  local dir
  dir=$(find ${1:-.} -path '*/\.*' -prune \
                  -o -type d -print 2> /dev/null | fzf +m) &&
  cd "$dir"
}
# 从当前目录开始跳转
jcde() {
  local dir
  dir=$(find ${1:-.} -path '*/\.*' -prune \
                  -o -type d -print 2> /dev/null | fzf -e +m) &&
  cd "$dir"
}

# 匹配文件用vim打开
jv() {
    [ $# -gt 0 ] && fasd -f -e ${EDITOR} "$*" && return
    local file
    file="$(fasd -Rfl "$1" | fzf -1 -0 --no-sort +m)" && vim "${file}" || return 1
}

jve() {
    [ $# -gt 0 ] && fasd -f -e ${EDITOR} "$*" && return
    local file
    file="$(fasd -Rfl "$1" | fzf -e -1 -0 --no-sort +m)" && vim "${file}" || return 1
}