命令行快速跳转/编辑神器fasd
来源:互联网 发布:研究生课程表软件 编辑:程序博客网 时间:2024/06/06 22:39
天下武功唯快不破,命令行虽然很多时候很快,但是整体的cd,ls,cd,ls也是让人心烦。之前使用了autojump,可以通过关键字跳转到最频繁操作的目录中,快!今天介绍的fasd,除了可以像autojump一样在目录中跳转,还可以通过关键字打开最频繁操作的文件,更快!!
安装
CentOS的默认软件仓库中没有fasd,需要添加opensuse的软件仓库才可以
cd /etc/yum.repos.d/wget http://download.opensuse.org/repositories/utilities/CentOS_6/utilities.repoyum install fasd
mac中直接使用brew安装即可:
brew install fasd
也可以通过源码安装:
git clone https://github.com/clvv/fasd.gitmake install
安装后,需要在shell的rc文件中添加fasd的初始化命令
echo 'eval "$(fasd --init auto)"' >> ~/.bashrcsource ~/.bashrc
基本使用
fasd的基本原理和autojump一样,在内部维护一个表,记录着最近操作的每个文件/目录的路径,以及他们的权重。这个权重会随着你操作这个目录的次数而增加,所以在使用关键字匹配路径时,最常用的路径就会被选中。
fasd初始化命令会定义一些默认别名
alias a='fasd -a' # anyalias s='fasd -si' # show / search / selectalias d='fasd -d' # directoryalias f='fasd -f' # filealias sd='fasd -sid' # interactive directory selectionalias sf='fasd -sif' # interactive file selectionalias z='fasd_cd -d' # cd, same functionality as j in autojumpalias zz='fasd_cd -d -i' # cd with interactive selection
这些别名可以这样使用
a foo 列出最近操作的路径匹配'foo'的文件与目录f foo 列出最近操作的路径匹配'foo'的文件d foo 列出最近操作的路径匹配'foo'的目录s foo 列出最近操作的路径匹配'foo'的文件与目录,并可以通过序号选择sf foo 列出最近操作的路径匹配'foo'的文件,并可以通过序号选择sd foo 列出最近操作的路径匹配'foo'的目录,并可以通过序号选择z foo cd到最近操作的匹配'foo'并且得分最高的目录zz foo 列出最近操作的路径匹配'foo'的目录,通过序号选择,然后cd进目录
除了z
和zz
带有cd
的效果,其他的命令都是列出对应的目录而已,需要配合其他命令使用,比如像这样:
vim `sf vimrc` => vim ~/.vimrc
对于这种场景,fasd提供了-e
参数可以指定使用什么编辑器操作选定的路径
$ sf -e vim rc2 12 /home/vagrant/.bashrc1 23.0068 /home/vagrant/.vimrc> 按1即可用vim打开vimrc
所以可以添加一个别名用于快速使用vim打开文件:
alias v='f -e vim'
定制
我以前使用的是autojump,习惯使用j
来跳转目录,j也的确比z好按得多。所以:
alias j='z'alias jj='zz'
autojump会在跳转前显示要跳转目录的全路径,我觉得这个很有用,可以用来确定是否跳转正确了,而fasd不会显示,所以需要修改一下他的脚本,找到fasd_cd的定义:
fasd_cd() { if [ \$# -le 1 ]; then fasd "\$@" else local _fasd_ret="\$(fasd -e 'printf %s' "\$@")" [ -z "\$_fasd_ret" ] && return [ -d "\$_fasd_ret" ] && cd "\$_fasd_ret" || printf %s\\n "\$_fasd_ret" fi }
把
[ -d "\$_fasd_ret" ] && cd "\$_fasd_ret" || printf %s\\n "\$_fasd_ret"
修改为
[ -d "\$_fasd_ret" ] && printf %s\\\\n "\$_fasd_ret" && cd "\$_fasd_ret"
不过修改源文件不太好,所以我们可以在自己的rc文件中覆盖这个函数,最后我的rc文件中对应的配置为:
eval "$(fasd --init auto)" fasd_cd () { if [ $# -le 1 ]; then fasd "$@"; else local _fasd_ret="$(fasd -e 'printf %s' "$@")"; [ -z "$_fasd_ret" ] && return; [ -d "$_fasd_ret" ] && printf %s\\n "$_fasd_ret" && cd "$_fasd_ret"; fi } alias j='z' alias jj='zz' alias v='f -e vim'
参考连接:
- clvv/fasd
- software.opensuse.org: 安装软件包 utilities / fasd
- Installing via Package Managers · clvv/fasd Wiki
1 0
- 命令行快速跳转/编辑神器fasd
- fasd
- fasd
- 快速编辑 Shell 命令行
- 快速编辑 Shell 命令行
- 快速编辑 Shell 命令行
- 快速编辑 Shell 命令行
- 快速编辑Shell命令行
- 快速编辑 Shell 命令行
- 快速编辑 Shell 命令行
- 快速编辑 Shell 命令行
- 快速编辑 Shell 命令行
- 快速编辑shell命令行
- 快速编辑 Shell 命令行
- 快速编辑 Shell 命令行
- 快速编辑 Shell 命令行
- 快速命令行编辑
- Linux快速编辑Shell命令行
- Android应用去掉标题栏(Android Studio)
- Valid Sudoku
- [Sort]冒泡排序
- 如何将GPS数据转换成KML数据?使用JAK的例子
- crontab,linux中创建定时任务与取消
- 命令行快速跳转/编辑神器fasd
- 基于android的Socket通信
- 内连接、左外连接、右外连接、交叉连接区别
- HDU5584 LCM Walk 数学公式
- 话题15 异曲同工--交换变量的3种方式
- Java 中的 final 关键字的一些注意事项小记
- Java BuffereInputStream里的reset和mark方法
- 7. 尚硅谷_佟刚_JavaWEB_ServletContext.wmv
- 生命周期