dotar/README.md
2024-12-05 10:52:20 +08:00

326 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p align="center">
<img align="center" src="logo.png" height="150px" />
</p>
<p align="center"><b>Dotar</b>是一个包含了zsh, spacevim(nvim), tmux和许多其它工具的多合一的Mac/Ubuntu开发环境</p>
# 背景
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
<a name="Replace">
替换
</a>选项:
```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
* `<L>`: `<localleader>`的缩写, 在我们的设置中是 `\`
**我们定义的内容**
#### 基础
[Here](doc/vim-basic.md)
#### 快捷键
**全局**
快捷键 | 功能
:-------:|:--------:
C-v | 进入Visual模式
C-x C-v | 从系统剪贴板粘贴文本
<L>tp | 切换粘贴模式
SPC f v d| 打开配置文件
SPC g . | 进入版本控制瞬态状态
SPC l p | 预览Markdown
**Typescript**
快捷键 | 功能
:-------:|:--------:
SPC l p | 定义预览
SPC l t | 类型
SPC l e | 重命名
SPC l d | 文档
g d | 前往定义
SPC e L | 列出检查器
**Tab**
快捷键 | 功能
:--------:|:--------:
\\[1-9] | 打开标签页1-9
SPC t t | 打开标签管理窗口
SPC w F | 打开一个新标签页
SPC w o | 切换标签页
**历史**
快捷键 | 功能
:--------:|:--------:
`F7` | 撤销历史
**Debug**
快捷键 | 功能
:-----------:|:--------:
SPC h I | 显示Debug信息
**Git Blame**
快捷键 | 功能
:----------:|:--------:
<leader> b | 在当前行末尾切换显示Git Blame信息
<leader> s | 在状态栏中查看当前选定行的Git Blame信息
<SPC> gb | 打开Git Blame窗口
#### markdown
* 安装 `prettier`: `yarn global add prettier``npm install --global prettier`
* 打开vim然后输入命令: `:SPUPdate`
#### 选项窗口、窗口、分割栏
- `Ctrl-h,l,j,k` - 用于在左、右、上、下分隔中移动。即使在vim和分割栏并排的情况下也可以使用 `vim-tmux-navigator`实现此功能。
- `Q` - 进入Ex模式
- `vv` - 垂直分割 (`Ctrl-w,v`)
- `ss` - 水平分割 (`Ctrl-w,s`)
- `,qo` - 打开快速修复窗口grep的输出将显示在此窗口中
- `,qc` - 关闭快速修复窗口
#### Rails & Ruby
- `,vv` & `,cc` 切换视图和控制器之间的命令是与:Rcontroller和:Rview相对应的映射。通过探索R系列命令您可以更多地了解rails.vim的乐趣
- `,rs` & `,rl` 在iTerm中运行rspec或特定的spec行在iTerm窗口中查看信息
- `,tt`在spec文件中给一个块添加`now: true`标签, 然后通过`rspec --tag=now`测试该块。
- `,ss` & `,sl` 通过使用`spring rspec`来实现相同的功能,可以通过缓存`Rails env`必须安装spring gem来加速Rails的测试。
#### Vim开发
- `,vc` - Vim命令复制光标下的命令并运行它。在测试vimrc中的单行更改时非常有用。
- `,vr` - 重新记录的Vim命令将当前文件作为Vim文件使用加载源代码。
#### SpaceVim界面元素:
SpaceVim的界面元素以[SPC] t或[SPC] T开头。您可以通过在vim窗口中按下[SPC]键来查看第二级指令。同样地,按下所需的第二级指令,然后您可以查看三级指令以进行查看。
- `SPC t h s` - 显示/隐藏语法高亮显示
- `SPC t n` - 显示/隐藏行号
- `SPC t h h` - 高亮显示当前行
- `SPC T m` - 显示/隐藏菜单栏(看不出区别)
- `SPC T t` - 显示/隐藏工具栏(看不出区别)
- `SPC [1-9]` - 跳转到指定的窗口
- `SPC f t` - 打开文件树
- `SPC p f` - 在当前项目中查找文件
- `SPC f y` - 在命令行中显示并复制当前文件的绝对路径
- `SPC f S` - 保存所有文件
- `SPC f o` - 在文件树中查找当前文件
- `SPC f D` - 删除文件并附带确认删除相关缓冲区
- `SPC f p` - 在当前项目中搜索单词
- `SPC p /` - 在当前项目中进行模糊搜索文本
- `SPC c l` - 切换注释行状态
- `SPC c p` - 切换注释段落状态
#### 搜索文本
- `SPC s J` - 在当前项目中搜索光标下的文本
#### 帮助
- `SPC h d k` - 开始一个输入提示,然后按下您想要描述的按键绑定。
## iTerm
### iTerm Solarized Colors
YADR将会在iTerm中安装Solarized颜色方案。您可以在“Profiles => Colors => Load Presets”中选择Solarized Dark。
## [Homebrew](http://mxcl.github.com/homebrew/)
Homebrew是一个缺失的OSX包管理系统它将会自动安装。
我们自动安装了一些常用的软件包如ctags、git、macvim、hub和RipGreprg。请注意我们的自动完成插件需要MacVim支持Lua。安装程序知道如何安装它但如果您之前已经安装过它您需要手动删除之前的MacVim。
## 常见问题
[Check FAQ](./FAQ.md)