dotvim
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:My vim configuration
= dotvim

个人使用的vim配置文件。本文档主要描述配置文件的安装和更新方法。

== 安装

. 从++github.com++上clone到本地

** Linux下
+
[source,sh]
----
git clone --recursive https://github.com/thawk/dotvim.git ~/.vim
----

** Windows下使用++TortoiseGit++工具
+
在资源管理器上,右键菜单中,选择++Git clone...++,记得选中++Recursive++选项,这样就可以把++NeoBundle.vim++也一并安装好。
+
NOTE: 在Windows下,clone到++\~/vimfiles++会比clone到++~/.vim++更加方便。

. 让vim使用我们的配置文件
+
vim缺省会使用++\~/.vimrc++(Windows下使用++~/_vimrc++)配置文件。由于该文件在git管理的范围外,不方便管理,因此可以将通过该文件来调用真正的配置文件(++\~/.vim/vimrc++或++~/vimfiles/vimrc++):

** Linux下
+
运行++bootstrap.sh++,将会建立++~/.vimrc++,并且会建立++~/.vimrc.local++文件

** Windows下
+
建立++~/_vimrc++,内容如下:
+
----
runtime vimrc
----
+
把++vimrc.local.sample++拷贝一份到++~++下,改名为++vimrc.local++

** 如果vim目录不放在++\~/.vimrc++或++\~/vimfiles++,需要设置++runtimepath++路径,如
+
----
set runtimepath^=d:/vimconfig
set runtimepath+=d:/vimconfig/after
source d:/vimconfig/vimrc
----

. 运行vim程序,在vim中运行下面的命令以安装其余插件:
+
----
:NeoBundleInstall
----
+
由于插件数量比较多,因此可能需要较长的时间。

. 至此,所有配置均已完成,可以开始体验vim了。

== 插件选择

本配置中的插件按用途进行了分组,并可以通过++vimrc.local++文件进行启用及禁用。

缺省禁用了与开发相关的一些插件,可以按需要选择性启用。

== 配置升级

本配置会不定期进行维护、改进,需要的话可以通过下面的步骤更新vim配置文件:

. 更新基本vim配置
+
vim的基本配置和所要安装的插件信息都存放在++vimrc++文件中,因此需要先进行更新,再更新其余的插件。
+
** Linux下在++~/.vim++下运行++git pull++即可。
** Windows下可以在++~/vimfiles++目录上右键,选择++Git Pull...++进行更新。

. 清理不再使用的插件
+
可以通过注释++vimrc++中以++NeoBundle++开头的行来达到禁用插件的目的。被禁用的插件不会被vim载入,但还会保留在硬盘上。如果需要的话,可以在vim中运行下面的命令以从硬盘中删除被禁用的插件:
+
----
:NeoBundleClean
----

. 升级已有插件,安装新插件
+
可以在vim中运行下面的命令,升级已有插件(会同时安装缺失的插件):
+
----
:NeoBundleUpdate
----
+
由于上面的命令会检查所有已安装插件的更新情况,可能需要比较长的时间。如果只想安装缺失的插件,不想更新已有插件,可以运行下面的命令:
+
----
:NeoBundleInstall
----

== 快捷键

参照 link:http://spacemacs.org/[spacemacs] 风格进行快捷键设置,将快捷键按功能分组而不是按插件分组,更便于记忆。

NOTE: ````是````。可以在``{tilde}/.vimrc.local``中通过``g:dotvim_user_settings.mapleader``进行修改。

=== 搜索和符号查找 `s`

.CtrlSF

[options="header"]
|===
| 快捷键     | 用途                       | 所属插件
| sfp | 项目目录下CtrlSF           | ctrlsf.vim
| sfP | 项目目录下CtrlSF当前词     | ctrlsf.vim
| sff | 当前文件目录下CtrlSF       | ctrlsf.vim
| sfF | 当前文件目录下CtrlSF当前词 | ctrlsf.vim
| sfb | 当前目录下CtrlSF           | ctrlsf.vim
| sfB | 当前目录下CtrlSF当前词     | ctrlsf.vim
|===

.Grep

[options="header"]
|===
| 快捷键    | 用途                         | 所属插件
| /  | 在项目目录下进行搜索         | ack.vim
| sp | 项目目录下进行搜索           | ack.vim
| sP | 项目目录下进行搜索当前词     | ack.vim
| sf | 当前文件目录下进行搜索       | ack.vim
| sF | 当前文件目录下进行搜索当前词 | ack.vim
| sb | 当前目录下进行搜索           | ack.vim
| sB | 当前目录下进行搜索当前词     | ack.vim
| ss | 在当前文件中查找             | unite.vim
| sS | 在当前文件中查找当前词       | unite.vim
|===

.Symbol

[options="header"]
|===
| 快捷键    | 用途                               | 所属插件
| s] | 根据上下文进行跳转到定义或引用     | unite-gtags/jedi.vim
| sr | 跳转到引用                         | unite-gtags/jedi.vim
| sR | 跳转到当前词的引用                 | unite-gtags/jedi.vim
| sd | 跳转到定义                         | unite-gtags/jedi.vim
| sD | 跳转到当前词的定义                 | unite-gtags/jedi.vim
| s/ | 列出当前文件中的符号               | unite-gtags
|===

.其他

[options="header"]
|===
| 快捷键    | 用途            | 所属插件
| sc | :set nohlsearch | 内置
|===

=== 文档和帮助 `h`

[options="header"]
|===
| 快捷键          | 用途                               | 所属插件
| hdb      | describe bindings                  | unite.vim
| hdc      | 显示当前字符的Unicode名称          | unicode.vim
| hdf      | 列出所有vim函数                    | unite.vim
| hdv      | 列出所有vim变量                    | unite.vim
| h | 查找帮助                           | unite-help
| hm       | 查找man pages                      | vim-ref
| hM       | 查找man pages(当前word)          | vim-ref
| ha       | 用apropos查找man pages             | unite-apropos
| hA       | 用apropos查找man pages(当前word) | unite-apropos
|===

=== Resume/Rename/Registers `r`

[options="header"]
|===
| 快捷键    | 用途                    | 所属插件
| rl | 重新打开最近的Unite窗口 | unite.vim
| rr | 将光标下的符号改名      | jedi.vim
// | re | 列出kill-ring           | neoyank.vim
| rm | 列出register            | unite.vim
| ry | 列出kill-ring           | neoyank.vim
|===

=== 项目 `p`

[options="header"]
|===
| 快捷键        | 用途                       | 所属插件
| pf     | 在项目目录下找文件         | unite.vim
| pd     | 在项目目录下打开文件浏览器 | dirvish

| pg     | 找项目中的tag              | unite-gtags
| p | 更新tags                   | gtags.vim

| pc     | 编译构建                   | vim-dispatch
| pC     | Clean                      | vim-dispatch
| pT     | 执行测试                   | vim-dispatch

| ps     | make stage                 | vim-dispatch
// | pa     | 在实现和测试间跳转                 |
|===

=== 文件 `f`

[options="header"]
|===
| 快捷键    | 用途                               | 所属插件
| fb | 打开书签                           | unite.vim
| fd | 在当前文件目录打开文件浏览器       | dirvish
| ff | 在当前文件目录找文件               | unite.vim
| fs | 保存当前文件                       | 内置
| fS | 保存所有文件                       | 内置
| fr | 打开recent文件                     | neomru.vim
// | fl | 在当前文件目录找文件(纯文本) | unite.vim
| fy | 显示当前文件的全路径               | 内置
| fo | 打开文件的大纲                     | unite-outline
| fO | 打开文件的Folding                  | unite-fold
| fp | 查找项目中的路径和文件名           | unite-gtags
| fP | 查找项目中匹配当前词的路径和文件名 | unite-gtags
// | fL | locate                   | ?
|===

=== 缓冲区 `b`

[options="header"]
|===
| 快捷键       | 用途                         | 所属插件
| bb    | 选择并切换缓冲区             | unite.vim
| bd    | 删除当前缓冲区               | 内置
| bn    | 打开下一缓冲区(:bnext)     | 内置
| bp    | 打开上一缓冲区(:bprevious) | 内置
| bR    | 重新载入当前文件(:e)       | 内置
| bs    | 打开或切换到scratch          | scratch.vim
| bt    | 在当前目录打开目录树         | scratch.vim
| bw    | 切换只读状态                 | 内置
| b数字 | 切换到指定编号的缓冲区       | 内置
|===

=== 调试 `d`

[options="header"]
|===
| 快捷键    | 用途                | 所属插件
| db | 设置/切换断点       | Conque-GDB
| dd | 删除断点            | Conque-GDB
| dc | 继续运行,Continue  | Conque-GDB
| dr | 开始运行,Run       | Conque-GDB
| dn | 单步步过,Next      | Conque-GDB
| ds | 单步进入,Step      | Conque-GDB
| dp | 打印,Print         | Conque-GDB
| df | 执行到返回,Finish  | Conque-GDB
| dt | 打印堆栈,Backtrace | Conque-GDB
|===

=== 编译 `c`

[options="header"]
|===
| 快捷键    | 用途 | 所属插件
| cc | 编译 |
// | cC | compile                      |
// | cd | close compilation window     |
// | ck | kill compilation             |
// | cm | helm-make                    |
// | cr | recompile                    |
| cl | 注释选中行                    |
| c+动作 | 注释。如cip注释一个段落                      |
|===

=== 文本Text相关 `x`

.对齐

[options="header"]
|===
| 快捷键           | 用途                                  | 所属插件
| 选中文字后   | 交互式对齐文本                        | vim-easy-align
| xa+动作   | 交互式对齐文本                        | vim-easy-align
| xad       | 对齐{cpp}的变量声明                   | vim-easy-align
| xa=       | 对齐包含等号的操作符,如=、>=、!=之类 | vim-easy-align
| xa:       | 对齐冒号                              | vim-easy-align
| xa.       | 对齐句点                              | vim-easy-align
| xa,       | 对齐所有逗号                          | vim-easy-align
| xa&       | 对齐Latex表格                         | vim-easy-align
| xa#       | 对齐#                                 | vim-easy-align
| xa"       | 对齐"                                 | vim-easy-align
| xa{       | 对齐左大括号                          | vim-easy-align
| xa}       | 对齐右大括号                          | vim-easy-align
| xa/       | 对齐多种注释                          | vim-easy-align
| xa{vbar}  | 对齐所有表格线({vbar})              | vim-easy-align
| xa | 对齐所有空白字符                      | vim-easy-align
|===

.其它

[options="header"]
|===
| xdw     | 删除行尾空白字符 | 内置
// | xtc | 交换两个字符 | 内置
// | xtw | 交换两个word | 内置
// | xtl | 交换两行     | 内置
|===

=== 插入内容 `i`

[options="header"]
|===
| 快捷键    | 用途                  | 所属插件
| iu | 搜索并插入Unicode字符 | unite-unicode
| is | 选择追加snippets | ultisnips
| iS | 选择插入snippets | ultisnips
|===

=== 切换开关 `t`

[options="header"]
|===
| 快捷键     | 用途                          | 所属插件
| ti  | 切换高亮显示indentation guide | indentLine
| tw  | 切换高亮显示行尾空白字符      | vim-airline
| tn  | 切换显示行号                  | 内置
| tr  | 切换相对行号                  | 内置
| tha | 切换高亮当前词                | 内置
| ts  | 选择colorscheme               | unite-colorscheme
| tt  | 切换Tagbar                    | tagbar
| tT  | 在Tagbar中显示当前符号        | tagbar
|===

=== 窗口 `w`

[options="header"]
|===
| 快捷键       | 用途                     | 所属插件
|  | 当前窗口切换为上一buffer | 内置
| ww    | 切换到下一个窗口         | 内置
| wc    | 关闭当前窗口             | 内置
| wo    | 只保留当前窗口           | 内置
// | wW    | 选择并切换窗口           |
| 数字  | 切换到指定编号的窗口     | 内置
|===

// === 注释 `;`
//
// [options="header"]
// |===
// | 快捷键     | 用途          | 所属插件
// | ;  | 注释 operator | tcomment_vim
// | ;; | 注释当前行    | tcomment_vim
// |===

=== 错误处理 `e`

[options="header"]
|===
| 快捷键    | 用途         | 所属插件
| eo | 打开quickfix | 内置
| el | 打开location | 内置
| en | 下一个错误   | 内置
| ep | 上一个错误   | 内置
|===

// === vim配置文件 `fe`
//
// [options="header"]
// |===
// | 快捷键      | 用途              | 所属插件
// | fed | 打开vimrc文件     | 内置
// | feR | 重新载入vimrc文件 | 内置
// |===

=== 版本控制git/svn `g`

[options="header"]
|===
| 快捷键     | 用途                                             | 所属插件
| ga  | 加入文件(VCAdd)                                | vc.vim
| gb  | 查看每行的最后修改人(VCBlame)                  | vc.vim
| gc  | 提交(VCCommit)                                 | vc.vim
| gd  | 列出修改点(VCDiff)                             | vc.vim
| gD  | 列出修改点(VCDiff!)                            | vc.vim
| gh  | 文件历史(VCLog)                                | vc.vim
| gi  | 文件历史(VCInfo)                               | vc.vim
| gi  | 查看文件信息(VCInfo)                           | vc.vim
| gs  | 查看整个库的状态(VCStatus)                     | vc.vim
| gsp | 同gs                                     | vc.vim
| gsb | 查看当前目录的状态(VCStatus .)                 | vc.vim
| gsq | (SVN)查看有哪些变化的文件(VCStatus -qu)      | vc.vim
| gsu | (SVN)查看有哪些可以update的文件(VCStatus -u) | vc.vim
|===

=== 退出 `q`

[options="header"]
|===
| 快捷键    | 用途                           | 所属插件
| qq | 退出Vim(:qa)                 | 内置
| qQ | 退出Vim(:qa!,放弃所有修改)  | 内置
| qs | 并退出Vim(:xa,保存所有文件) | 内置
|===

=== 跳转 `j`

[options="header"]
|===
| 快捷键    | 用途                     | 所属插件
| jd | 在当前窗口打开文件浏览器 | dirvish
| jl | (easymotion-bd-jk) | vim-easymotion
| jw | (easymotion-s2)    | vim-easymotion
| j= | 格式化选区或整个buffer   | clang-format
|===

=== 代码跳转 `mg`

[options="header"]
|===
| 快捷键     | 用途                       | 所属插件
| mga | 在.h和.cpp间切换           | vim-fswitch
| mgA | 在.h和.cpp间切换(新窗口) | vim-fswitch
// | mgt | 切换到单元测试文件 |
|===

=== REPL `ms`

小写保持焦点在当前缓冲区,大写切换到REPL窗口。

[options="header"]
|===
| 快捷键     | 用途           | 所属插件
| msb | 发送整个缓冲区 | slimux
| msl | 发送当前行     | slimux
| msr | 发送选中内容   | slimux
| msq | 关闭           | slimux
| mse | 重复上一次     | slimux
|===

=== Unite `u`

[options="header"]
|===
| 快捷键    | 用途                  | 所属插件
| ur | 打开或关闭Unite窗口   | unite.vim
| uc | 打开或关闭Unite窗口   | unite.vim
| up | 跳到Unite窗口的上一项 | unite.vim
| un | 跳到Unite窗口的下一项 | unite.vim
| us | 列出所有Unite的源     | unite.vim
| um | 列出message           | unite.vim
|===

=== 其它

[options="header"]
|===
| 快捷键             | 用途                       | 所属插件
| ?           | 列出可用的按键绑定         | unite.vim
| au          | UndotreeToggle             | undotree
| j=          | 格式化整个文件(mzgg=G`z) | 内置
| 数字 | 切换到指定编号的Tab页      | 内置
|===


本源码包内暂不包含可直接显示的源代码文件,请下载源码包。