如果你经常是在终端下完成工作,那么必然会经常切换目录,或者查找一些文件。如果频繁地使用 cd 命令,无疑很浪费时间。
搜索这个问题,找到了一个非常好的开源工具:fasd。
fasd 通过记录用户经常使用的目录,给每个目录分配一定的权重,频繁访问的目录权重越大。而当你使用 fasd 模糊查找一个目录时,它会查询符合条件的权重最大的目录。
Mac 下可以直接通过 Homebrew 安装:
brew install fasd
安装完成后可以按照官方的配置,在 bashrc/zshrc 里加入如下的代码:
alias a='fasd -a' # any
alias s='fasd -si' # show / search / select
alias d='fasd -d' # directory
alias f='fasd -f' # file
alias sd='fasd -sid' # interactive directory selection
alias sf='fasd -sif' # interactive file selection
alias z='fasd_cd -d' # cd, same functionality as j in autojump
alias zz='fasd_cd -d -i' # cd with interactive selection
比如 Mac 的话,可以在 ~/.bash_profile 里加入上面的代码。
添加完成后,记得重启终端,或者执行:
source ~/.bash_profile
比如,我的博客代码在 ~/Work/sf-zhou.github.io/ 目录,我们可以这样训练 fasd:
cd ~
cd Work
cd sf-zhou.github.io
以后,如果我们希望快速地跳到该目录,可以直接执行:
z sf-zhou
你也可以通过执行:
d sf-zhou
来查看与 sf-zhou 相关目录的权重。
我们可以将 fasd 和其他命令联合在一起使用:
mv . `d docu`
上面的命令可以将当前文件夹所有的文件移动到 Documents 文件夹。终端里 `` 中的命令会先执行,并且将结果替换到原命令中。
我经常使用的命令还有:
vim `f a.cpp`
对于上面的操作,我们也可以这样:
f -e vim a.cpp
所以,我们可以把 f -e vim
加到 bashrc 文件里……
alias v='f -e vim' # quick opening files with vim
Zsh,这里的 z 表示终极。换句人话,只要你对效率有追求,最后总是会换到 Zsh 的(当然,现在选择更多了,比如 fish)。
oh-my-zsh,简单的一句话,“Your terminal never felt this good before”。
配合 Zsh 和 oh-my-zsh,fasd 会更好用。
首先,安装 zsh:
brew install zsh
另外,建议安装 Zsh 的另一个工具是 zsh-syntax-highlighting,也可以通过 brew 安装。使用 brew search zsh,可以找到更多好用的工具。
安装 oh-my-zsh,在官网上找到安装命令:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
因为走 GitHub,所以连接不畅的,请注意科学上网。
全部安装好后,使用命令:
chsh -s /bin/zsh
将自己的默认终端切换为 Zsh。注意不加 sudo,执行该命令后会要求输入密码的。
OK,安装完 Zsh 和 oh-my-zsh 后终端就变得很好用了。可以再看看网上的一些配置,让自己的终端更好用。
配置 fasd。编辑 ~/.zshrc,加入:
fasd_cache="$HOME/.fasd-init-bash"
if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then
fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install >| "$fasd_cache"
fi
source "$fasd_cache"
unset fasd_cache
这几句脚本,首先会检查是否存在 fasd_cache 文件,没有的话就会使用命令创建,fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install
后面的参数就表示使用到的功能,默认其实也够了。如果存在就直接加载这个文件。然后,之前提过的功能还是都在的,另外多了一些更神奇的东西,例如:
mv d,box[这里敲 Tab]
会自动展开到:
mv /Users/sfzhou/Dropbox
继续敲这个命令,可以使用同样的方法。在输入过程中,f,
表示文件,d,
表示目录,Tab 展开,所见即所得。有多个候选的时候还可以按 Tab 选择:
熟练使用,行云流水。
总之,熟练使用该工具可以让你节约很多时间,享受美好的人生。