Dotar是一个包含了zsh, spacevim(nvim), tmux和许多其它工具的多合一的Mac/Ubuntu开发环境
背景
Dotar的名字源于dot和tar的结合,代表者打包(tar)文件。
开始
需求
zsh,tmux,vim,ag已经安装,并且zsh作为你的默认终端:
chsh -s $(which zsh)
- 如果缺少
Python 3和pynvim等一些层(如denite),则无法加载它们。
python3 -m pip install --user --upgrade pynvim
安装
bash -c "`curl -fsSL https://git.bitnet.fun:5004/Gaze/dotar/raw/commit/21638953a830aa657b1e0fe1b14ff65a1694ef60/install.sh`"
升级
cd ~/.yadr
git pull --rebase
rake update
模块
- ZSH
- Prezto - YADR背后的zsh配置框架
- 如何添加你自己的ZSH主题
Zsh Commands
文件
| 命令 | 参数 | 描述 |
|---|---|---|
| 交换 | F1 F2 | swap file F1 with file F2 |
| 替换 | doc | Replace text recursively |
-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 Podklog- 通过正则表达式匹配的Pod名称显示Kubernetes Pod日志git_tag_delete- 删除GitHub标签git_tag_add- 添加GitHub标签dc- docker-compose的别名
fasd
"fasd"的名称来源于默认建议的别名:f(文件)、a(文件/目录)、s(显示/搜索/选择)、d(目录)。
一些情况下,您可以输入左侧的命令,而fasd会将您的命令“展开”为右侧的内容。
v def conf => vim /some/awkward/path/to/type/default.confj abc => cd /hell/of/a/awkward/path/to/get/to/abcdefm movie => mplayer /whatever/whatever/whatever/awesome_movie.mp4o eng paper => xdg-open /you/dont/remember/where/english_paper.pdfvim `f rc lo` => vim /etc/rc.localvim `f rc conf` => vim /etc/rc.conf
Fasd默认附带了一些有用的别名:
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只会返回最佳匹配项。这使您可以执行以下操作:
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
快捷键
全局
| 快捷键 | 功能 |
|---|---|
| C-v | 进入Visual模式 |
| C-x C-v | 从系统剪贴板粘贴文本 |
| 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
| 快捷键 | 功能 |
|---|---|
| b | 在当前行末尾切换显示Git Blame信息 |
| s | 在状态栏中查看当前选定行的Git Blame信息 |
| 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
Homebrew是一个缺失的OSX包管理系统,它将会自动安装。
我们自动安装了一些常用的软件包,如ctags、git、macvim、hub和RipGrep(‘rg’)。请注意,我们的自动完成插件需要MacVim支持Lua。安装程序知道如何安装它,但如果您之前已经安装过它,您需要手动删除之前的MacVim。
常见问题
Check FAQ