Oh My fish
1.1、Oh My fish简介
是什么 ?:an open source, community-driven framework for managing your fish configuration
开发语言:fish
源码仓库:https://github.com/oh-my-fish/oh-my-fish
1.2、安装Oh My fish

step1、安装依赖

安装时cURLgitfish
运行时cURLgitfish

step2、使用curl命令下载oh-my-fish安装脚本,并执行之

curl -L https://get.oh-my.fish | fish

安装完成的效果如下:

这是什么鬼?这是Oh My fish默认的主题,很难看,不要着急,一会儿使用omf命令安装一个好看的主题即可。 先看看omf命令怎么用。

1.3、omf命令

Oh My fish最好用的就是这个omf命令,用它搞定一切。

1.3.1、omf search <keyword>...

查询包。

示例:

omf search theme
1.3.2、omf describe <package>...

查看包的详细信息。

示例:

omf describe agnoster

运行效果如下:

1.3.3、omf install <package>...

安装一个包。Oh My fish所有的功能都通过包管理,比如主题、插件等。

示例:

omf install agnoster

agnoster包是一个主题包。安装完成后,立即就生效了。效果如下:

Oh My fish提供了很多好看的主题,你可以先去预览,然后看好后进行安装。

1.3.4、omf list

列出已经安装的包(主题、插件)。

1.3.5、omf theme

列出已经安装的主题和可以安装的主题。

1.3.6、omf theme <theme-package>...

切换已经安装的主题。

示例:

omf theme agnoster
omf theme default
1.3.7、omf remove <package>...

卸载包。

示例:

omf remove agnoster
1.3.8、omf update [package]...

跟新包。

示例:

omf update
omf update omf
omf update nvm agnoster
1.3.9、omf repositories [list | add | remove]

仓库管理。

1.3.10、omf doctor

排错。

1.3.11、omf destroy

卸载Oh My fish

1.4、开发自己的包 

step1、创建Oh My fish开发工程

omf new plugin <name>
omf new theme <name>

Oh My fish的包分为插件主题两种类型。

示例:

上面的命令创建了~/.config/omf/themes/${ThemeName}目录,并在此目录中创建了如下一些模板文件:

文件作用参考
fish_greeting.fish设置问候语
fish_title.fish设置标题栏文字
fish_prompt.fish设置左边提示符样式
fish_right_prompt.fish设置右边提示符样式

step2、编码

在项目根目录下,除了上面自动生成的文件,还可以有如下文件:

文件作用参考
fish_mode_prompt.fish设置vi mode的标志
functions/*.fish自定义函数
completions/*.fish定义tab-completion
init.fish首次加载该包的时候触发
key_bindings.fish将某个命令与某个快捷键进行绑定
hooks/install.fish当首次执行omf install <packageName>命令时触发
hooks/uninstall.fish当执行omf remove <packageName>命令时触发
hooks/update.fish当执行omf update <packageName>命令时触发

step3、测试

1、将~/.config/omf/themes/${ThemeName}~/.local/share/omf/themes中做一个软连接:

ln -s ~/.config/omf/themes/${ThemeName} ~/.local/share/omf/themes/${ThemeName}

2、将主题切换为${ThemeName}

omf theme ${ThemeName}

3、加载fish

fish

step4、发布到omf官方列表中

1、将你的源代码pushGitHub等平台上,得到一个URL

2、将https://github.com/oh-my-fish/packages-main fork到您自己的账户下。

3、将https://github.com/${yourUserName}/packages-main clone到本地:

git clone https://github.com/leleliu008/packages-main

4、进入packages-main目录,查看其内容:

5、在packages目录下创建一个文件名为packageName的文件,查看其内容:

type = theme
repository = https://github.com/leleliu008/fish-powerline
description = powerline-shell wrapper for fish

说明:

key必需说明
type取值为:
plugin:表示此包是插件
theme:表示此包是主题
type此包的git地址
description此包的描述信息

6、将修改push到您的仓库中:

git add packages/$packageName
git commit -m "messages"
git push origin master

7、发起pull request,请求合并到https://github.com/oh-my-fish/packages-main中。