318 lines
16 KiB
Markdown
318 lines
16 KiB
Markdown
_ _ _
|
||
| | | | | |
|
||
| |___| |_____ __| | ____
|
||
|_____ (____ |/ _ |/ ___)
|
||
_____| / ___ ( (_| | |
|
||
(_______\_____|\____|_|
|
||
|
||
# Yet Another Dotfile Repo v1.1
|
||
# Now with Prezto and Vundle!
|
||
|
||
[![加入聊天https://gitter.im/hophacker/dotfiles](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/hophacker/dotfiles?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||
|
||
#### sh -c "\`curl -fsSL https://raw.githubusercontent.com/hophacker/dotfiles/master/install.sh \`"
|
||
|
||
**Always be sure to run `rake update` after pulling to ensure plugins are updated**
|
||
|
||
## 什么是YADR?
|
||
|
||
**YADR 是一个具有偏向性的dotfile源,它会让开心到心里在唱歌**
|
||
|
||
* 吸收了所有最好的dotfile源的精华,vim和zsh的插件被紧密连贯地粘合在一起。
|
||
* 超过90种vim插件被放在一起为您服务,每个插件都经过研究并被配置到最佳状态,且常常拥有最合理的快捷键 。
|
||
* 许多zsh插件完美地基于Prezto, 且在此之上叠加了一些优质特性。
|
||
* 一切的一切都被vim化: irb, postgres命令行等等.
|
||
|
||
## 邮件列表
|
||
|
||
如果你有问题或者疑问又想听听我们的建议,请加入[Google Group](https://groups.google.com/forum/#!forum/yadr-users)
|
||
|
||
如果是PR或者bug汇报,请一定使用Github。
|
||
|
||
## 截图
|
||
|
||
![screenshot](http://i.imgur.com/3C1Ze.png)
|
||
|
||
## 安装
|
||
|
||
开始先运行:
|
||
|
||
```bash
|
||
sh -c "`curl -fsSL https://raw.githubusercontent.com/hophacker/dotfiles/master/install.sh`"
|
||
```
|
||
|
||
**注意:** YADR会自动安装它的所有子模块。如果你需要在安装每个模块前确认一下, 使用:
|
||
|
||
```bash
|
||
sh -c "`curl -fsSL https://raw.githubusercontent.com/hophacker/dotfiles/master/install.sh`" -s ask
|
||
```
|
||
|
||
## 等等,还没完。这一步不能少:
|
||
|
||
#### 安装 iTerm Solarized Colors
|
||
YADR 会往iTerm里安装Solarized配色方案。进入Profiles => Colors => Load Presets,可以选择Solarized Dark。
|
||
|
||
#### 用[Seil](https://pqrs.org/osx/karabiner/seil.html.en)来交换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
|
||
|
||
### 升级
|
||
|
||
升级非常简单。
|
||
|
||
```bash
|
||
cd ~/.yadr
|
||
git pull --rebase
|
||
rake update
|
||
```
|
||
|
||
## 哪些东西被包括了,如何配置?
|
||
|
||
继续阅读,了解更多YADR给你提供的!
|
||
|
||
### [Homebrew](http://mxcl.github.com/homebrew/)
|
||
|
||
Homebrew是_缺失了的OSX包管理系统_,它会被自动安装。
|
||
|
||
我们自动安装了一些常用的包,例如ctags, git, macvim, hub, 以及silver searcher ('ag')。
|
||
注意我们的自动补全插件需要MacVim支持Lua。安装器知道如何安装,但如果你以前安装过,你需要手动删除你以前的MacVim。
|
||
|
||
### ZSH
|
||
|
||
把Zsh想象成一个更加牛逼的Bash,却又无需太多学习成本。它会为你写的命令行作自动拼写矫正,语法高亮,以及更多。
|
||
我们并且还增加了很多增强性能:
|
||
|
||
* Vim模式和bash风格的历史反查询: `Ctrl-R`
|
||
* 插入上一行命令的结果: `Ctrl-x,Ctrl-l`
|
||
* 模糊匹配 - 如果你打错了文件夹名,tab补全会修正它。
|
||
* [fasd](https://github.com/clvv/fasd) 集成 - 输入 `z` 会帮你半自动匹配最近用过的文件夹。Tab补全也开启了。
|
||
* [Prezto - YADR's背后的zsh](http://github.com/sorin-ionescu/prezto)
|
||
* [如何添加你自己的ZSH主题](doc/zsh/themes.md)
|
||
|
||
### 别名
|
||
|
||
大部分我们每天用的东西都可以用两到三个字符的别名完成。请自行修改他们:
|
||
|
||
ae # alias 编辑
|
||
ar # alias 重载
|
||
|
||
|
||
### Git定制化:
|
||
|
||
YADR会接管你的`~/.gitconfig`, 所以如果你想存储你的git用户名及其他设置, 请把他们放在`~/.gitconfig.user`
|
||
|
||
我们推荐在这个文件里设置你的用户信息是。另外,你可以将你的环境变量恰当地设置在你的 `~/.secrets`里。
|
||
|
||
* `git l` 或 `gl`- 可用度更高的git log
|
||
* `git b` 或 `gb`- 含有上一个commit摘要的分支列表
|
||
* `git r` - 有关源列表的信息
|
||
* `git t` 或 `gt`- 有关标签列表的信息
|
||
* `git nb` 或 `gnb`- 正如checkoub -b,建立一个新的分支
|
||
* `git cp` 或 `gcp`- 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 - 删除所有已经合并到当前分支的分支
|
||
|
||
### 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](https://github.com/stephencelis/ghi)
|
||
|
||
我们纳入了`ghi`命令。 试试 `ghi list`,然后在使用命令行管理issues中获得快了吧!
|
||
|
||
|
||
## Vim - 哪些被包含了呢?
|
||
|
||
* [导航 - NERDTree, EasyMotion, CtrlP 以及更多](doc/vim/navigation.md)
|
||
* [文本对象 - 操作ruby块, 以及更多](doc/vim/textobjects.md)
|
||
* [操作代码 - rails支持, 注释, 代码片, 高亮](doc/vim/coding.md)
|
||
* [工具 - 缩进, 粘贴缓冲区管理, 以及更多](doc/vim/utils.md)
|
||
* [通常的并不添加新命令行的改进](doc/vim/enhancements.md)
|
||
|
||
下面列出了一些YADR提供的最有用的命令。这不是一个很全的列表。若想挖掘更多信息,每天联系其中几个,然后开始深入查看上面列表中提供的插件来学习更多。
|
||
|
||
#### 导航
|
||
|
||
* `,z` - 到前一个缓冲区 (:bp)
|
||
* `,x` - 到下一个缓冲区 (:bn)
|
||
* `Cmd-j` 及 `Cmd-k` 用函数来上下粗略的移动(Linux中的`Alt`)
|
||
* `Ctrl-o` - 之前的光标位置 - 这是一个标准的健映射,但很有用,所以这边给出来了
|
||
* `Ctrl-i` - 对应于Ctrl-O(再一次, 这是标准的)
|
||
|
||
#### 搜索/代码导航
|
||
|
||
* `,f` - 快速查找class的定义(exuberant ctags必须被安装过)
|
||
* `,F` - 类似于`,f`,但是会用垂直分割的界面显示
|
||
* `,gf` 或 `Ctrl-f` - 和vim中正常的gf一样 (进入文件), 但是在一个垂直分割的界面中 (碰到带有行数的,例如file.rb:123,一样能行)
|
||
* `gF` - 标准的vim键映射, 为了完整性而列在这里 (带有行数也行)
|
||
* `,k` - 搜索当前光标下的单词,然后将结果显示到quickfix窗口里
|
||
* `,K` - Grep当前单词一直到下一个感叹号(在ruby foo!方法中很有用)
|
||
* `Cmd-*` - 将所有当前单词出现的地方高亮(与正常的`*`一样,除了不移动)
|
||
* `,hl` - 切换搜索高亮
|
||
* `,gg` 或 `,ag` - 在命令行中grep,在双引号之间输入。 使用 Ag(Silver Searcher)。
|
||
* 在使用`,gg`搜索过,你可以用`Ctrl-x` 和 `Ctrl-z`来浏览 (或者标准vim命令 `:cn` 和 `:cp`)
|
||
* `,gd` - 当光标在函数名字上的时候,Grep定义 (检索'def [function name]')
|
||
* `,gcf` - 在当前文件搜索对当前文件的索引
|
||
* `//` - 清除搜索
|
||
* `,,w` (别名 `,<esc>`) 或者 `,,b` (别名 `,<shift-esc>`) - EasyMotion, 一个让你有种vim统治者的工具,它能将所有屏幕上所有可以跳入的地方全部高亮。
|
||
* `,mc` - 将该单词标记为多光标处理模式(就像sublime). 用 `Ctrl-n` (下一个), `Ctrl-p` (前一个), `Ctrl-x`(跳过) 来添加更多的光标, 然后就像正常用vim那样,例如修改单词。
|
||
* `gK` - 打开cursor底下这个单词的文档。
|
||
* Spacebar - Sneak - 在一行中通过输入两个字符来移动。就像是vim的`f`但更加精确。
|
||
* `:Gsearch foo` - 全局搜索, 然后使用正常的`%s/search/replace/g`紧接着用`:Greplace`来在所有的文件中作替换操作。结束后,使用`:wall`来写入所有文件。
|
||
|
||
|
||
#### 文件导航
|
||
|
||
* `,t` - CtrlP 模糊文件选择
|
||
* `,b` - CtrlP 缓冲区选择 - 非常适用于想跳入一个你已经打开的文件
|
||
* `Cmd-Shift-M` - 跳入方法- CtrlP 在当前缓冲区里作标签化搜索
|
||
* `,jm` 跳入模型内。其他`,j`键映射: `,jc`控制器, `,jh`帮助集, 等等。
|
||
* `Cmd-Shift-N` - NERDTree toggle (Linux中的`Alt`)
|
||
* `Ctrl-\` - 在NERDTree中显示当前文件
|
||
* `Cmd-Shift-P` - 清除CtrlP缓存
|
||
|
||
#### Better keystrokes for common editing commands
|
||
|
||
* Ctrl-Space to autocomplete. Tab for snipmate snippets.
|
||
* `,#` `,"` `,'` `,]` `,)` `,}` to surround a word in these common wrappers. the # does #{ruby interpolation}. works in visual mode (thanks @cj). Normally these are done with something like `ysw#`
|
||
* `Cmd-'`, `Cmd-"`, `Cmd-]`, `Cmd-)`, etc to change content inside those surrounding marks. You don't have to be inside them (`Alt` in Linux)
|
||
* `,.` to go to last edit location (same as `'.`) because the apostrophe is hard on the pinky
|
||
* `,ci` to change inside any set of quotes/brackets/etc
|
||
|
||
#### Tabs, Windows, Splits
|
||
|
||
* Use `Cmd-1` thru `Cmd-9` to switch to a specific tab number (like iTerm and Chrome) - and tabs have been set up to show numbers (`Alt` in Linux)
|
||
* `Ctrl-h,l,j,k` - to move left, right, down, up between splits. This also works between vim and tmux splits thanks to `vim-tmux-navigator`.
|
||
* `Q` - Intelligent Window Killer. Close window `wincmd c` if there are multiple windows to same buffer, or kill the buffer `bwipeout` if this is the last window into it.
|
||
* `vv` - vertical split (`Ctrl-w,v`)
|
||
* `ss` - horizontal split (`Ctrl-w,s`)
|
||
* `,qo` - open quickfix window (this is where output from Grep goes)
|
||
* `,qc` - close quickfix
|
||
|
||
#### Utility
|
||
|
||
* `Ctrl-p` after pasting - Use `p` to paste and `Ctrl-p` to cycle through previous pastes. Provided by YankRing.
|
||
* `,yr` - view the yankring - a list of your previous copy commands. also you can paste and hit `ctrl-p` for cycling through previous copy commands
|
||
* `crs`, `crc`, `cru` via abolish.vim, coerce to snake_case, camelCase, and UPPERCASE. There are more `:help abolish`
|
||
* `:NR` - NarrowRgn - use this on a bit of selected text to create a new split with just that text. Do some work on it, then :wq it to get the results back.
|
||
* `,ig` - toggle visual indentation guides
|
||
* `,cf` - Copy Filename of current file (full path) into system (not vi) paste buffer
|
||
* `,cn` - Copy Filename of current file (name only, no path)
|
||
* `,yw` - yank a word from anywhere within the word (so you don't have to go to the beginning of it)
|
||
* `,ow` - overwrite a word with whatever is in your yank buffer - you can be anywhere on the word. saves having to visually select it
|
||
* `,ocf` - open changed files (stolen from @garybernhardt). open all files with git changes in splits
|
||
* `,w` - strip trailing whitespaces
|
||
* `sj` - split a line such as a hash {:foo => {:bar => :baz}} into a multiline hash (j = down)
|
||
* `sk` - unsplit a link (k = up)
|
||
* `,he` - Html Escape
|
||
* `,hu` - Html Unescape
|
||
* `,hp` - Html Preview (open in Safari)
|
||
* `Cmd-Shift-A` - align things (type a character/expression to align by, works in visual mode or by itself) (`Alt` in Linux)
|
||
* `:ColorToggle` - turn on #abc123 color highlighting (useful for css)
|
||
* `:Gitv` - Git log browsers
|
||
* `,hi` - show current Highlight group. if you don't like the color of something, use this, then use `hi! link [groupname] [anothergroupname]` in your vimrc.after to remap the color. You can see available colors using `:hi`
|
||
* `,gt` - Go Tidy - tidy up your html code (works on a visual selection)
|
||
* `:Wrap` - wrap long lines (e.g. when editing markdown files)
|
||
* `Cmd-/` - toggle comments (usually gcc from tComment) (`Alt` in Linux)
|
||
* `gcp` (comment a paragraph)
|
||
|
||
#### Rails & Ruby
|
||
|
||
* `,vv` and `,cc` to switch between view and controller - these are maps to :Rcontroller and :Rview. Explore the :R<Tab> family of commands for more fun from rails.vim!
|
||
* `,rs` and `,rl` to run rspec or a spec line in iTerm (check iTerm window for results)
|
||
* `,ss` and `,sl` for the same using `spring rspec` which makes your Rails specs faster by caching the Rails env (must have spring gem installed)
|
||
* vim-ruby-refactoring - try `,rem`, `,rel` to extract methods or let statements
|
||
* `Ctrl-s` - Open related spec in a split. Similar to :A and :AV from rails.vim but is also aware of the fast_spec dir and faster to type
|
||
* `:Bopen [gem name]` to navigate to a gem (@tpope/vim-bundler)
|
||
* `,gcp` - Grep Current Partial to find references to the current view partial
|
||
* `,orb` - outer ruby block. takes you one level up from nested blocks (great for rspec)
|
||
|
||
#### Vim Dev
|
||
|
||
* `,vc` - (Vim Command) copies the command under your cursor and executes it in vim. Great for testing single line changes to vimrc.
|
||
* `,vr` - (Vim Reload) source current file as a vim file
|
||
|
||
## Extending and overriding YADR settings
|
||
|
||
* [Debugging vim keymappings](doc/vim/keymaps.md)
|
||
* [Overriding vim settings with ~/.vimrc.after and friends](doc/vim/override.md)
|
||
* [Adding your own vim plugins](doc/vim/manage_plugins.md)
|
||
|
||
## Misc
|
||
|
||
* [Credits & Thanks](doc/credits.md)
|
||
* [Other recommended OSX productivity tools](doc/osx_tools.md)
|
||
* [Yan's Blog](http://yanpritzker.com)
|
||
|
||
### OSX Hacks
|
||
|
||
The osx file is a bash script that sets up sensible defaults for devs and power users
|
||
under osx. Read through it before running it. To use:
|
||
|
||
bin/osx
|
||
|
||
These hacks are Lion-centric. May not work for other OS'es. My favorite mods include:
|
||
|
||
* Ultra fast key repeat rate (now you can scroll super quick using j/k)
|
||
* No disk image verification (downloaded files open quicker)
|
||
* Display the ~/Library folder in finder (hidden in Lion)
|
||
|
||
### Macvim troubles with Lua?
|
||
```
|
||
brew uninstall macvim
|
||
brew remove macvim
|
||
brew cleanup
|
||
brew install macvim --custom-icons --with-override-system-vim --with-lua --with-luajit
|
||
```
|
||
|
||
### Terminal Vim troubles with Lua?
|
||
Installing terminal vim (with lua) with an RVM managed Ruby can cause the neocomplete plugin to segfault. Try uninstalling vim, then installing with system ruby:
|
||
|
||
```
|
||
brew uninstall vim
|
||
rvm system do brew install vim --with-lua
|
||
```
|
||
|
||
|
||
### [Pry](http://pry.github.com/)
|
||
|
||
Pry offers a much better out of the box IRB experience with colors, tab completion, and lots of other tricks. You can also use it
|
||
as an actual debugger by installing [pry-nav](https://github.com/nixme/pry-nav).
|
||
|
||
[Learn more about YADR's pry customizations and how to install](doc/pry.md)
|