从oh My Zsh到oh My Fish

2014年10月19日

[TOC]

zsh 与yosemite 的bug?

在更新了Mac Yosemite 后,发现各种问题,首先是php,macport等问题 接着就是zsh了,不知道为什么,zsh总是几乎占了100%的cpu,这让我的macbook电池 暴跌,非常郁闷. 开始怀疑是插件的问题,但是即使把插件全部关了,也还是那样. 之前也用过fish,发现还是不错的一个shell,从设计上面说,非常方便.功能也不错. 于是就准备换到fish算了.

image > 发了封邮件给zsh后, >reply: Any chance that it’s this issue with zsh-autosuggestions?

问题解决 发现原来是因为zsh-autosuggestions 的问题.

fish优点

  • Autosuggestions 自动提示history,命令补全等很方便
  • 命令的completions 甚至包括man的提示
  • 一些zsh我喜欢的插件fish也有 例如autojump 通过oh-my-fish 可以很方便安装
  • fish-config命令 可以在线的编辑fish的配置

其实以上一些功能其实zsh也可以做到,不过个人觉得补全做的没有fish好,只是一直以来zsh的社区比较强大 而fish 插件会少点,但是一般使用其实用不上很多插件,而且zsh用多几个插件就变得很慢. 一直使用 oh-my-zsh ,但是发现了oh-my-fish 后 就想转过去了,因为以前一直以为fish没有插件支持.

安装oh-my-fish

brew install fish
sudo vi /etc/shells 将/usr/local/bin/fish加上,否则下面的命令会报错
chsh -s /usr/local/bin/fish

git clone git://github.com/bpinto/oh-my-fish.git ~/.oh-my-fish
copy配置文件
cp ~/.oh-my-fish/templates/config.fish ~/.config/fish/config.fish

设置fish

  • 编辑~/config/fish/config.fish
   set fish_plugins autojump bundler brew
   set -xu PATH  /usr/local/bin:$PATH
   
   比较不爽的就是export 在这里不能用要使用`set -x`代替:

   `set -x PATH  /usr/local/bin $PATH`
   
   -x : -export 
   -u : 意思是对所有fish session都使用

### 编写fish插件 ###

fish 的插件看起来非常好懂,是基于函数的

function rg
  rails generate $argv
end