diff --git a/README.md b/README.md
index ebadc3e..ed30c36 100644
--- a/README.md
+++ b/README.md
@@ -10,6 +10,11 @@ Oh My Fish provides core infrastructure to allow you to install packages which e
+
+ English • + 简体中文 +
+ # Install ```fish diff --git a/docs/FAQ.md b/docs/en-US/FAQ.md similarity index 96% rename from docs/FAQ.md rename to docs/en-US/FAQ.md index 056adf9..15ddfe9 100644 --- a/docs/FAQ.md +++ b/docs/en-US/FAQ.md @@ -6,6 +6,12 @@+ English • + 简体中文 +
+ + # FAQ Thanks for taking the time to read this FAQ. Feel free to create a new issue if your question is not answered here. diff --git a/docs/Packages.md b/docs/en-US/Packages.md similarity index 89% rename from docs/Packages.md rename to docs/en-US/Packages.md index 4cea7e4..ee3ef95 100644 --- a/docs/Packages.md +++ b/docs/en-US/Packages.md @@ -1,3 +1,16 @@ ++ English • + 简体中文 +
+ # Creating To learn package creation let's create a new package that will provide a `hello_world` command for your shell. Package names may only contain lowercase letters and hyphens to separate words. diff --git a/docs/zh-CN/FAQ.md b/docs/zh-CN/FAQ.md new file mode 100644 index 0000000..0cc513d --- /dev/null +++ b/docs/zh-CN/FAQ.md @@ -0,0 +1,100 @@ ++ English • + 简体中文 +
+ +# FAQ + +感谢您花一些时间来阅读 FAQ。如果没有从下面找到你想问的问题欢迎给我们提交新的问题(Issue)。 + + +## 什么是 Oh My Fish,我为什么会使用它? + +Oh My Fish 是基于 [fishshell](https://fishshell.org) 封装的高级 _框架_。它可以帮你管理你的配置,主题和插件。 + + +## 使用 Oh My Fish 我需要注意什么? + +_什么都不需要注意_。安装 Oh My Fish 并想平时使用 Fish Shell 一样。当你需要获取更多帮助仅需要执行 `omf help`。 + + +## 什么是 Oh My Fish 包(Packages)? + +Oh My Fish 包是使用 fish 编写的一系列主题和插件用于扩展 Shell 的核心功能,比如初始化时执行自定义代码,添加自动补全等。 + + +## Oh My Fish 包大概包含哪些类型? + +目前粗略分类可以定义 3 中类型: + +1. 配置增强。比如 [`pkg-pyenv`](https://github.com/oh-my-fish/pkg-pyenv) 检测 `pyenv` 是否安装并运行 `(pyenv init - | psub)`。 + +2. 主题. 查看我们的[主题目录](https://github.com/oh-my-fish). + +3. 系统增强。比如 [`pkg-copy`](https://github.com/oh-my-fish/pkg-copy),可同时支持 Linux 和 Mac OS X 的剪切工具。 + + +## Oh My Fish 主要都干了什么? + ++ 自动加载 `$OMF_PATH/` 目录下已安装的插件和主题。 + ++ 自动加载你的配置。默认路径 `~/.config/omf`,除非你自定义了 `$OMF_CONFIG` 变量。 + ++ 自动加载 `$OMF_PATH` 和 `$OMF_CONFIG` 目录下面的所有的 `functions` + ++ 如果存在加载 `$OMF_CONFIG/init.fish`。 + + +## 如何升级之前已安装的 Oh My Fish? + +> :warning: 务必先备份你的 dotfiles 和其他自定义的数据。 + +``` +curl -L github.com/oh-my-fish/oh-my-fish/raw/master/bin/install | sh +``` + +现在你可以安全的移除 `$fish_path`. + +```fish +rm -rf "$fish_path" +``` + + +## 我使用 `fish_config` 修改了自己的 prompt,现在我无法恢复 Oh My Fish 主题的 prompt,我该怎么办? + +`fish_config` 默认会使用 `~/.config/fish/functions/fish_prompt.fish` 设置 prompt,该文件在 Oh My Fish 主题启用后加载, +它拥有高优先级来覆盖 Oh My Fish 主题的 prompt,如果你要恢复主题的 prompt,最简单的方法就是删除该文件: + +``` +rm ~/.config/fish/functions/fish_prompt.fish +``` + + +## 如何把 fish 设置为我默认的 shell? + +添加 Fish 到 `/etc/shells`: + +```sh +echo "/usr/local/bin/fish" | sudo tee -a /etc/shells +``` + +切换并保存默认 shell: + +```sh +chsh -s /usr/local/bin/fish +``` + +切换之前的 shell: +> 一般来说是 `/bin/bash`、`/bin/tcsh` 或者 `/bin/zsh`. + +```sh +chsh -s /bin/bash +``` \ No newline at end of file diff --git a/docs/zh-CN/Packages.md b/docs/zh-CN/Packages.md new file mode 100644 index 0000000..dc15c0a --- /dev/null +++ b/docs/zh-CN/Packages.md @@ -0,0 +1,93 @@ ++ English • + 简体中文 +
+ +# 创建插件或主题 + +本教程通过创建一个简单的 `hello_world` 让我们一起来学习,插件名通常仅接受小写英文字母和连字符分割每个单词。 + +Oh My Fish 提供一个脚手架工具帮助生成插件或主题的模板结构。通过执行命令 `omf new` 生成: + +```fish +$ omf new pkg hello_world +``` + +> 使用 `omf new theme my_theme_name` 创建主题模板。 + +该操作会创建插件的目录并切换到该路径下面: + +``` +$ ls -l + README.md + hello_world.fish + completions/hello_world.fish +``` + +通常在 `README.md` 描述插件的工作原理,依据插件情况可以提供一些 [auto completion](http://fishshell.com/docs/current/commands.html#complete) + +`hello_world.fish` 定义一个简单的 function: + +```fish +function hello_world -d "Prints hello world" + echo "Hello World!" +end +``` + +在你的插件中,每个函数的声明定义必须存放在独立的文件中,这是 fish 自动加载机制强制的,旨在加载功能所需要的,避免无用函数的过渡加载。 + +请记住,fish 缺乏一个私有范围,所以如果你需要分离你的插件到函数,考虑私有函数增加前缀类似 `__hello_world.my_extra_function` 以避免类名冲突和全局命名控件的污染。 + + +# 事件 + +利用 fish 事件的优势,目前 Oh My Fish 定义了两个事件提供给开发者使用: + +## 初始化 + +如果你想在插件被加载时收到[通知](http://fishshell.com/docs/current/commands.html#emit),你可以在 `hello_world.fish` 添加下面的代码: + +```fish +function init -a path --on-event init_hello_world + echo "hello_world initialized" +end +``` + +该事件可以用于修改环境变量、加载资源和自动加载函数等。如果你的插件没有输出任何的函数,你仍然可以使用该事件加载其他的函数。 + +## 卸载 + +Oh My Fish 通过 `omf remove+ English • + 简体中文 +
+ +# 安装 + +```fish +curl -L github.com/oh-my-fish/oh-my-fish/raw/master/bin/install | sh +omf help +``` + +或者 _下载脚本_ 后自己执行: + +```fish +curl -L github.com/oh-my-fish/oh-my-fish/raw/master/bin/install > install +chmod +x install +./install +``` + +# 快速入门 + +Oh My Fish 自带的辅助命令工具 `omf` 可以帮助你快速获取安装新插件和主题。 + +#### `omf update` + +更新自身和已安装的所有插件和默认主题。 + +#### `omf install` _`[