dotar/README.md
hophacker 4b116881a6 doc
2020-11-17 10:38:11 +08:00

16 KiB
Raw Blame History

Ruilisi dotfiles

环境需求

安装zsh, tmux, vim, ag并且zsh设置为你的登录shell:

chsh -s $(which zsh)

安装

bash -c "`curl -fsSL https://raw.githubusercontent.com/ruilisi/dotfiles/master/install.sh`"

Shortcuts

Tmux

前缀定义为 C-A(简称PRE)

Scroll Mode

PRE [: 进入滚动模式

Shortcut Function
Enter 复制文本
] 复制滚动模式下的内容

Vim

  • <L>: <localleader>的缩写, 我们设置为 \

Defined by Us

Normal Mode

Shortcut Function
C-v 视图模式
C-x C-v 从系统粘贴板复制内容
<L>tp 切换粘贴

Visual Mode

Shortcut Function
C-c 复制

Defined by Vim

Shortcut Function
o 光标下方插入新的一行
S-o 光标上方插入新的一行
0 跳至行首
$ 跳至行尾
v 进入字符选择模式
x 删除选中的内容
V 进入整行选中模式
y 复制选中的内容
p 粘贴选中的内容
Ctrl+u 往上翻页
Ctrl+d 往下翻页
:w 保存文件
:q 退出Vim
:/ keyword 搜索
n 跳到下一个搜索到的内容
S-N 跳到上一个搜索到的内容
w 往前移动一个单词
b 往后移动一个单词
gg 移动到文档顶部
S-G 移动到文档底部
Ctrl+\ 显示(隐藏)文件树
[spc] c l 快速注释或解除注释行
%s key1/key2/g 将文档中的key1替换为key2
S-V 选中文本

vim && markdown

  • 安装 prettier: yarn global add prettiernpm install --global prettier
  • 打开vim并进入的命令: :SPUPdate

Q&A

如何在vim中编辑命令行

在编辑命令行期间按esc进入正常模式然后按C-x C-e在vim中编辑当前命令行。

安装 iTerm Solarized Colors

YADR 会往iTerm里安装Solarized配色方案。进入Profiles => Colors => Load Presets可以选择Solarized Dark。

Karabiner-Elements来交换caps-lock和escape的位置。

escape键是vim里最常用的键。老式键盘曾拥有Tab一样大的键Apple键盘最差的地方就是拥有极小的Esc键。但是 通过交换Esc键和Caps键的位置可以修复这些问题。如果总是不停地敲击角落上的小目标你肯定会大幅降低自己的效率说不定还会让你的手因屡次肌肉用力产生小的创伤。

为iTerm设置一个系统级别的热键 (Keys=>Hotkey)

推荐Cmd-Escape, 实际上就是Cmd-Capslock(因为键的位置互换了)。

在iTerm的General里, 取选 "Use Lion-style full screen"

这可以给你一个可以切换却无需通过切换空间的大屏。

在MacVim的Advanced Settings里, 取消Prefer native fullscreen

和iTerm一样。Lion风格的空间切换会毫无理由地让一切效率降低下来。

如果你想在终端上运行

  • 确定你的终端已经安装了Solarized配色方案
  • 如果你不想用solarized配色的终端, 那就确认你这么做哦了:``` let g:yadr_using_unsolarized_terminal = 1

in ~/.vimrc.before


- 如果你想用一个替代的配色方案譬如Gruvbox, 那就在你的`~/.vimrc.after` 这么做:```
let g:yadr_disable_solarized_enhancements = 1
colorscheme base16-twilight

升级

升级非常简单。

cd ~/.yadr
git pull --rebase
rake update

哪些东西被包括了,如何配置?

继续阅读了解更多YADR给你提供的

Homebrew

Homebrew是_缺失了的OSX包管理系统_它会被自动安装。

我们自动安装了一些常用的包例如ctags, git, macvim, hub, 以及RipGrep ('rg')。 注意我们的自动补全插件需要MacVim支持Lua。安装器知道如何安装但如果你以前安装过你需要手动删除你以前的MacVim。

ZSH

把Zsh想象成一个更加牛逼的Bash却又无需太多学习成本。它会为你写的命令行作自动拼写矫正语法高亮以及更多。 我们并且还增加了很多增强性能:

  • Vim模式和bash风格的历史反查询: Ctrl-R
  • 插入上一行命令的结果: Ctrl-x,Ctrl-l
  • 模糊匹配 - 如果你打错了文件夹名tab补全会修正它。
  • fasd 集成 - 输入 z 会帮你半自动匹配最近用过的文件夹。Tab补全也开启了。
  • Prezto - YADR's背后的zsh
  • 如何添加你自己的ZSH主题

别名

大部分我们每天用的东西都可以用两到三个字符的别名完成。请自行修改他们:

ae # alias 编辑
ar # alias 重载

Git定制化:

YADR会接管你的~/.gitconfig, 所以如果你想存储你的git用户名及其他设置, 请把他们放在~/.gitconfig.user

我们推荐在这个文件里设置你的用户信息是。另外,你可以将你的环境变量恰当地设置在你的 ~/.secrets里。

  • git lgl- 可用度更高的git log
  • git bgb- 含有上一个commit摘要的分支列表
  • git r - 有关源列表的信息
  • git tgt- 有关标签列表的信息
  • git nbgnb- 正如checkoub -b建立一个新的分支
  • git cpgcp- cherry-pick -x (显示那些被cherrypick过的)
  • git simple - 一个更加简洁的构建changelogs的命令
  • git recent-branches - 帮助告诉你最近使用过的分支
  • git unstage / guns (从index上移除) 以及 git uncommit / gunc (撤销至上一个commit之前的时刻 - 如果代码已经push过这个操作将会非常危险) 别名
  • 一些合情合理的默认设置, 例如优化合并分支信息, 只推送当前分支, 删除状态提示, 以及在diff过程中使用易于记忆的前缀: (i)ndex, (w)ork tree, (c)ommit and (o)bject
  • 微微优化了diff的颜色
  • gdmb (g)it (d)elete (m)erged (b)ranches - 删除所有已经合并到当前分支的分支
  • Gdiff显示代码前后更改
vim-gitgutter
  • ]h 下一个hunk(更改点)
  • [h 上一个hunk
  • <Leader>ha 将该hunk放进state区域保存
  • <Leader>hr 撤销该hunk

RubyGems

.gemrc被包含了。 再也不用输入gem install whatever --no-ri --no-rdoc. --no-ri --no-rdoc,因为默认都做好哦了。

Tmux 设置

tmux.conf 为Mac OS上的tmux提供了一些合情合理的默认设置例如强大的状态条和VIM键盘绑定。 你可以在~/.tmux.conf.user修改配置。

让所有的东西都Vim风格化

已经提供好的inputrc和editrc将把你的很多命令行工具例如mysql和irb转变成vim风格的。并且editrc还包含了一个Ctrl-R反向历史搜索功能这在irb、postgres命令行等等中非常实用。

Github 问题: ghi gem

我们纳入了ghi命令。 试试 ghi list然后在使用命令行管理issues中获得快了吧

Vim - 哪些被包含了呢?

下面列出了一些YADR提供的最有用的命令。这不是一个很全的列表。若想挖掘更多信息每天联系其中几个然后开始深入查看上面列表中提供的插件来学习更多。

Tmux

  • h(jkl): 左(下上右)移窗格
  • c-a c: 创建一个新的窗区
  • c-a s: 上下分割窗格
  • c-a v: 左右分割窗格
  • c-a x: 删除窗格
  • c-a H(JKL): 左(下上右)移分割线
  • c-a ,: 输入Tmux命令行模式
  • c-a d: 退出Session
  • c-a D: 选择退出Session
  • c-a 1(23456789): 进入窗区1(23456789)

导航

搜索/代码导航

文件导航

常用编辑命令更好的按键方法

  • 自动补全: Ctrl-空格。snipmate代码片段: Tab。
  • 将一个单词用这些符号包裹住: ,# ," ,' ,] ,) ,}。# 是为了 #{ruby字符串插入}。 在Visual模式下也能运行 (谢谢 @cj)。 正常地,他们通过类似ysw#这样的来做到。
  • 改变包裹标签里的内容: Cmd-', Cmd-", Cmd-], Cmd-), 等等。你不需要在包裹标签里面。(Linux中的Alt)
  • 进入上一个编辑位置,. (和'.一样) 因为撇号对于小指来说非常困难。
  • ,ci来改变任何以一个引号对/括符对等等

选项窗口, 窗口, 分割栏

  • 使用 Cmd-1Cmd-9 来切换到任何一个特定的选项窗口(就像iTerm和Chrome) - 选项窗口必须被设置为显示号码(Linux中的Alt)
  • Ctrl-h,l,j,k - 来移动到左、右、下、上的分割栏中。这在vim和分割栏一起的时候依然有效感谢vim-tmux-navigator
  • Q - 只能窗口强杀。用wincmd c关闭窗口,如果同一个缓冲区有多个对应窗口, 或者当这是最后一个对应窗口时杀掉缓冲区bwipeout
  • vv - 垂直分割 (Ctrl-w,v)
  • ss - 水平分割 (Ctrl-w,s)
  • ,qo - 打开quickfix窗口 (grep的输出就会到这个窗口里)
  • ,qc - 关闭quickfix

Rails & Ruby

  • ,vv,cc 来在view和controller中切换 - 他们是:Rcontroller和:Rview对应的映射。探索一下:R家族的命令可以了解更多rails.vim的乐趣!
  • ,rs,rl 来在iTerm中运行rspec 或者一个 spec 行 (查看iTerm窗口来获得信息)
  • ,tt 给spec文件的某个block添加now: truetag, 然后可以通过rspec --tag=now来测试该block
  • ,ss,sl 来达到一样的事情,通过使用spring rspec一个能将你的Rails specs变得速度更快通过缓存Rails env (必须有spring gem安装过)

Vim Dev

  • ,vc - (Vim 命令) 复制光标下的命令然后运行它。对于测试vimrc中单行的改变非常有用。
  • ,vr - (Vim 重新记载) 将当前文件当成vim文件来进行源加载。

zsh 功能

  • 贴士: $数字 为参数
  • secure_source -source ~/.yadr/zsh/function.zsh 文件,让 function.zsh 在当前窗口立即工作。
  • pp $1 -使用:pp xx, grep 进程的名称。
  • set_proxy -让终端使用HTTP代理
  • set_vagrant_proxy -让终端使用vagrant代理
  • set_ss_proxy -让终端使用socks代理
  • unset_proxy -取消所用的代理
  • post $1 $2 -使用application/json来curl POST请求
  • git-set-remote $1 -设置项目的git地址
  • gem_source_to_taobao -将ruby的源地址设置为淘宝镜像
  • docker_rm_all -删除所有docker镜像
  • Replace $1 $2 -替换当前路径下的所有内容
  • swap $1 $2 -swap file1 file2
  • init_db -初始化Rails项目数据库:
  • kexec -通过正则表达式pod名称执行k8s pod
  • klog -通过正则表达式pod名称显示k8s pod日志
  • git_tag_delete -删除github的tag
  • git_tag_add -添加github的tag
  • dc -docker-compose的别名

一些别名定义

  • 阅读详情: ~/.yadr/zsh/aliases.zsh

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 - 注释或取消注释段落

切换Tab

当打开多个文件后文件会以Tab的形式罗列在标签栏中可以通过\[1-9]切换至对应序号的Tab。

  • \1 - 打开标签1
  • \2 - 打开标签2
  • \3 - 打开标签3
  • \4 - 打开标签4
  • \5 - 打开标签5
  • \6 - 打开标签6
  • \7 - 打开标签7
  • \8 - 打开标签8
  • \9 - 打开标签9

文件树:

文件树用于显示当前打开文件所在位置的文件目录 SPC f t/<F3> - 打开文件树

文件树内快捷键:

  • i - 垂直分割一个新的窗口,并跳转
  • gi - 垂直分割一个新的窗口,不跳转
  • s - 水平分割一个新的窗口,并跳转
  • gs - 水平分割一个新的窗口,不跳转
  • t - 在新tab中打开一个新的窗口并跳转
  • T - 在新tab中打开一个新的窗口不跳转
  • o - 打开当前选中的文件或目录,并跳转
  • go - 打开当前选中的文件或目录,不跳转

vim光标操作

  • k - 向上移动光标
  • j - 向下移动光标
  • h - 向做移动光标
  • l - 向右移动光标
  • gg - 页面顶部
  • G - 页面底部
  • [Ctrl] g - 显示当前光标位置
  • [Num] G - 光标移动到指定行
  • 0 - 光标移动到行首
  • [Num] w - 光标移动到指定单词数的开头
  • [Num] e - 光标移动到指定单词数的末尾

vim模式切换

[Esc] - 退出当前模式 i - 插入模式 v - 选择模式 R - 替换模式

文档操作:

  • q - 退出
  • w - 保存
  • wq - 保存并退出
  • q! - 强制退出

文本编辑:

  • y - 复制选中区域
  • yy - 复制一整行
  • p - 粘贴
  • o - 下方插入一行
  • O - 上方插入一行
  • A - 行尾插入
  • a - 光标右侧插入
  • i - 光标左侧插入
  • u - 撤销操作
  • U - 按行撤销操作
  • [Ctrl] R - 重做
  • x - 删除选中的内容
  • dw - 删除单词
  • d$ - 删除至行尾
  • dd - 删除整行
  • d[num]w - 删除指定数量的单词
  • r - 替换一个字符
  • :s/A/B - 该行首个A替换成B
  • :s/A/B/g - 该行所有A替换成B
  • :[num1,num2]s/A/B/g - 将指定行的A替换成B
  • :%s/A/B/g - 将指当前tab内的所有A替换成B

文档查询:

  • :/A - 文档内查找A
  • :/A - 文档内查找A忽略大小写
  • n - 下一个
  • N - 上一个
  • :nohlsearch - 取消高亮
  • :set hls is - 高亮显示查询结果
  • :set ic - 忽略大小写

扩展或者重载YADR设置

OSX Hacks

osx文件是一个为开发者或者高能用户进行合理默认设置的bash脚本。在运行它之前先读一下。使用:

bin/osx

这些特殊技巧是以Lion为中心的。不一定在其他OS上也能行。我最喜欢的模块包括:

  • 极快的重复击键速度(现在你可以通过j/k实现快速滚动)
  • 无磁盘镜像验证(下载的文件打开速度更快)
  • 在finder中显示~/Library文件夹下的内容(在Lion中隐藏的)

Macvim遇到Lua的麻烦了?

brew uninstall macvim
brew remove macvim
brew cleanup
brew install macvim --custom-icons --with-override-system-vim --with-lua --with-luajit

终端Vim碰到Lua的麻烦

通过RVM管理的Ruby来安装一个终端Vim(和lua一起)会导致neocomplete插件发生segfault。尝试卸载vim然后使用系统ruby来卸载vim:

brew uninstall vim
rvm system do brew install vim --with-lua

Pry

Pry提供了一个更好的使用了颜色、tab补全及其他更多小技巧开包即用的IRB。你还可以通过安装pry-nav把它当做一个真正的调试器。

了解更多YADR's pry定制化以及如何安装

语言支持

Typescript

fix SpaceVim Unknown function: TSOnBufEnter