Dotar是一个包含了zsh, spacevim(nvim), tmux和许多其它工具的多合一的Mac/Ubuntu开发环境
# 背景 Dotar的名字源于`dot`和`tar`的结合,代表者打包(`tar`)文件。 # 开始 ## 需求 * `zsh`, `tmux`, `vim`, `ag`已经安装,并且zsh作为你的默认终端: ```sh chsh -s $(which zsh) ``` * 如果缺少`Python 3`和`pynvim`等一些层(如`denite`),则无法加载它们。 ```sh python3 -m pip install --user --upgrade pynvim ``` ## 安装 ```sh bash -c "`curl -fsSL https://git.bitnet.fun/Gaze/dotar/raw/branch/master/install.sh`" ``` ## 升级 ```sh cd ~/.yadr git pull --rebase rake update ``` # 模块 * ZSH * [Prezto - YADR背后的zsh配置框架](http://github.com/sorin-ionescu/prezto) * [如何添加你自己的ZSH主题](doc/zsh/themes.md) ## Zsh Commands #### [文件](./zsh/files.zsh) 命令 | 参数 | 描述 :--------|:------|:----------- 交换 | F1 F2 | swap file F1 with file F2 替换 |[doc](#Replace) |Replace text recursively 替换 选项: ```sh -f 文件正则表达式模式 -s 源模式 -d 目标模式 -r 删除行 --regex 使用正则表达式匹配模式 --seperator= 分隔符, # 默认 -h 显示这条信息" ``` #### 编辑 快捷键 | 别名 :-----------|:-------- Ctrl-R | Vim模式和Bash风格的历史反向查询 ae | 编辑别名 ar | 重载别名 ESC C-x C-e | 在vim中编辑当前的命令行 #### 网络 命令 | 描述 :-----------|:-------- test-port PORT | 测试这个PORT是否打开 intercept-request-hosts | 拦截请求并显示主机信息 host-ip | 显示您系统的主机IP地址 #### 系统 命令 | 描述 :-----------|:-------- yell | 将脚本名称和所有参数打印到标准错误(stderr)流中 die | 与yell相同,但以非0退出状态退出,表示“失败” try | 使用 ||(布尔逻辑中的"或")运算符,只有在左侧表达式未失败时才会评估右侧表达式 list-large-files DIR | 列出大文件,按照文件大小的倒序排序,并按照`KB`, `MB`, `GB`的顺序打印文件大小 #### 字符串 命令 | 描述 :------------|:-------- random-hex | 打印随机十六进制数 random-string| 打印由字母`a-zA-Z0-9`组成的随机字符串 contains |str1 str2 ... target |测试目标字符串是否包含在字符串数组中 #### Git YADR将接管您的~/.gitconfig文件,因此如果您想要存储git用户名和其他设置,请将它们放在~/.gitconfig.user中。 我们建议在此文件中设置您的用户信息。此外,您可以在~/.secrets中适当设置环境变量。 命令 | 别名 | 描述 :--------|:--------|:--------- `ga` |`git add`| `gb` |`git branch`|新建分支 `gbc` or `gnb` |`git checkout -b`|新建并切换到新分支 `gbs` |`git show-branch`| `gc` |`git commit --verbose`| `gco` |`git checkout`|切换到目标分支 `gcp` |`git cherry-pick --ff`| `gcf` |`git commit --amend --reuse-message HEAD`|重新提交且不更改commit信息 `gd` |`git diff`| `gf` |`git fetch`| `gfc` |`git clone`| `gfm` |`git pull`| `gfr` |`git pull --rebase`|拉取远程分支更新到本地 `gl` |`git log`| `gpc` |`git push --set-upstream origin "$(git-branch-current 2> /dev/null)"`|将本地更改推送到远程的同名分支 `gr` |`git rebase`|合并分支到此分支 `gra` |`git rebase --abort`| `grc` |`git rebase --continue`| `grs` |`git rebase --skip`| `gsd` |`git stash drop`| `gsl` |`git stash list`| `gsp` |`git stash pop`| `gst` |`git stash`| #### 其它 - `secure_source` - 使 `~/.yadr/zsh/function.zsh` 文件生效, 使 `function.zsh` 中的更改在当前窗口生效 - `pp $1` - 用法:`pp xx`, 按名称搜索进程 - `set_proxy` - 设置终端代理以使用HTTP代理 - `set_vagrant_proxy` - 设置终端代理以使用Vagrant的HTTP代理 - `set_ss_proxy` - 设置终端代理以使用SOCKS代理 - `unset_proxy` - 取消所有代理设置 - `post $1 $2` - 使用application/json进行curl的POST请求 - `docker_rm_all` - 删除所有Docker镜像 - `kexec` - 通过正则表达式匹配的Pod名称执行Kubernetes Pod - `klog` - 通过正则表达式匹配的Pod名称显示Kubernetes Pod日志 - `git_tag_delete` - 删除GitHub标签 - `git_tag_add` - 添加GitHub标签 - `dc` - docker-compose的别名 ## [fasd](https://github.com/clvv/fasd) "fasd"的名称来源于默认建议的别名:f(文件)、a(文件/目录)、s(显示/搜索/选择)、d(目录)。 一些情况下,您可以输入左侧的命令,而fasd会将您的命令“展开”为右侧的内容。 ``` v def conf => vim /some/awkward/path/to/type/default.conf j abc => cd /hell/of/a/awkward/path/to/get/to/abcdef m movie => mplayer /whatever/whatever/whatever/awesome_movie.mp4 o eng paper => xdg-open /you/dont/remember/where/english_paper.pdf vim `f rc lo` => vim /etc/rc.local vim `f rc conf` => vim /etc/rc.conf ``` Fasd默认附带了一些有用的别名: ```sh 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 ``` Fasd会智能地检测何时显示文件列表,何时只显示最佳匹配项。例如,当您在子shell中使用一些搜索参数调用fasd时,fasd只会返回最佳匹配项。这使您可以执行以下操作: ```sh mv update.html `d www` cp `f mov` . ``` ## Tmux #### 设置 `tmux.conf`为Mac OS上的tmux提供了一些合理的默认设置,例如强大的状态栏和VIM键盘绑定。您可以在`~/.tmux.conf.user`中修改配置。 #### 快捷键 起手式被定义为了 `ctrl+a`(下面的`PRE`就代表起手式) 快捷键 | 功能 :---------|:-------- Ctrl+h(jkl) |←(↓↑→)移动面板 PRE c |创建新面板 PRE s |上下分屏 PRE v |左右分屏 PRE x |关闭面板 PRE shift+h(jkl)|←(↓↑→)移动分割线 PRE , |重命名窗口 PRE d |退出会话 PRE D |退出会话 PRE 1 |进入面板1 PRE >/< |速查表 PRE {/} |将面板向前/后移动 PRE C-o |旋转窗口“向上”(即移动所有面板) PRE M-o |旋转窗口“向下” PRE z |全屏/取消全屏面板 PRE m |标记 PRE ! |将当前面板移动到一个新的独立窗格中 PRE o |前往下一个窗格(循环遍历所有窗格) PRE ; |前往“最后一个”(之前使用过的)窗格 > `C` 是 `Ctrl` 的简写 按下 `PRE [` 来进入滚动模式 快捷键 | 功能 | :--------|:---------| `Shift-V`| 选择文本| `Enter` | 复制文本 | `]` | 粘贴从滚动模式复制的文本 | ## Vim & Spacevim * `