From 186dec159e15a6b325fcac703be7655bbb5c7c8b Mon Sep 17 00:00:00 2001 From: wklken Date: Fri, 3 Oct 2014 01:34:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC8.0,=20?= =?UTF-8?q?=E9=87=8D=E5=A4=A7=E6=9B=B4=E6=96=B0,=20=E5=86=8D=E6=AC=A1?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=86=E8=8A=82,=20=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=9B=B4=E7=AC=A6=E5=90=88=E7=9B=B4=E8=A7=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 444 +++++++++--------- UPDATE_LOG.md | 71 +++ .../all.snippets | 17 +- {additional_snippets => UltiSnips}/c.snippets | 0 .../go.snippets | 0 .../python.snippets | 75 +-- .../snippets.snippets | 0 enable_others.sh | 19 - vimrc | 89 +++- vimrc.bundles | 144 ++++-- 10 files changed, 503 insertions(+), 356 deletions(-) create mode 100644 UPDATE_LOG.md rename {additional_snippets => UltiSnips}/all.snippets (68%) rename {additional_snippets => UltiSnips}/c.snippets (100%) rename {additional_snippets => UltiSnips}/go.snippets (100%) rename {additional_snippets => UltiSnips}/python.snippets (65%) rename {additional_snippets => UltiSnips}/snippets.snippets (100%) delete mode 100644 enable_others.sh diff --git a/README.md b/README.md index ce9405c78..8a2ea1855 100644 --- a/README.md +++ b/README.md @@ -1,100 +1,56 @@ k-vim ======================= -> VERSION: 7.0 +> VERSION: 8.0 -> LAST_UPDATE_TIME: 2014-05-08 +> LAST_UPDATE_TIME: 2014-10-02 -> PS: 年前答应的版本梳理完毕,拖延了,额,一个月....-_-# +> 本次更新: 更为强大的tab操作/更全面的自动补全 + + +详细 [更新日志](https://github.com/wklken/k-vim/blob/master/UPDATE_LOG.md) -> 有任何问题提issues # 目标 > Just a Better Vim Config. Keep it Simple. - 1.结构及配置划分良好 - 2.全中文注释 - 3.高度可配置修改 - 4.一键安装少折腾 - 5.保持简单 + 0. 保持简单 + 1. 结构划分良好, 中文注释 + 2. 高度可配置修改 + 3. 一键安装少折腾 + 4. 更加符合直觉的键位操作 适用人群: 有一定基础的 vimer -### vim基本用法 - -推荐: 耗子叔的 [简明vim练级攻略](http://coolshell.cn/articles/5426.html) - -或者,玩游戏 [vim大冒险](http://vim-adventures.com/) - -交互教程 入门[openvim](http://www.openvim.com/tutorial.html) 进阶[Vim Genius](http://www.vimgenius.com/) - -学习步骤: - - 1.进入退出,模式切换,插入删除复制粘贴等基本操作 - 2.学会快速移动跳转 - - 3.学会如何进行选中 - - 4.学会进行文本对象操作 - - 5.学会批量重复操作 - - 6.学会vim批量替换 - - ------------ - 6.学会使用插件,完成补全,注释,文本快速录入操作等 - - 7.学会宏 [] ### k-vim使用说明 -1. 能熟练使用原生vim,最好先熟悉了再来使用插件扩展 - -2. 插件配置 +1. 最好能熟练使用原生vim各类操作之后, 再来使用插件扩展 - 1.可以在vimrc.bundles中查看到每个插件的配置 - 2.所列插件默认安装的,需要针对自身需求,增加或删除配置 - 3.本README.md仅介绍插件简单功能和用法,可以在github中搜索查看详细的用法和配置 - 4.每个插件配置后面跟了一些键位修改的配置[用法在下面介绍中],可以根据自己习惯修改 +2. `fork`一份(需要的话顺带`star`关注更新), 然后参照安装步骤进行安装, 可以根据自身习惯进行自定义修改 - ps.平时用python/golang多些,其他语言根据自身需求添加到 vimrc.bundles->语言相关中 +3. 目前主要关注后端`python`, `golang`以及将要入坑的`ruby`, 偶尔写写`js/jquery`, 但是主体配置基本是通用的. 可以根据语言体系自己加配置(vimrc.bundles) -3. `fork`一份, 然后参照安装步骤进行安装 +4. 插件不是越多越好, 二八定律 - 根据自己使用语言和自身习惯,对配置进行自定义修改 +5. 欢迎大家推荐好用的资源, 不限于插件/主题/ppt/文章/视频等, 也希望大家能一起完善这份配置 - 之后,维护自身配置,后续可以在任意地方安装,`一库在手,天下我有 `,:) - 要关注`k-vim`的更新,github点`Star`,thx a lot! +## 疑问解决步骤 -4. 建议 +你遇到的问题,一定别人也遇到了 - 1.插件不是越多越好,多了可能会拖慢vim打开速度 +1. 首先明确问题, 可以用`二分法`排查出问题的插件或配置语句 +2. 确认按照文档步骤执行的操作 +3. 如果是对应插件的问题, 请到插件github主页查看文档及issues +4. google大法 +5. 提issues - 可以尝试注掉所有插件,根据使用需求逐一加入 - 需要多思考自己使用过程中的不便之处,寻找对应解决方案 - - 2.二八定律 - - 关注可以最大提升自己生产力的20%插件,具体要亲自实践 - 有什么问题,先看插件文档说明->代码选项->github上的issues->google it - 你遇到的问题,一定别人也遇到了,大部分可解决,少部分无解…. - - - 3.不要复杂化vim - - 文章: [不要复杂化vim](http://www.kunli.info/2013/08/13/vim/)|[七个高效文本编辑习惯](http://blog.jobbole.com/44891/) - - - -欢迎推荐好用更酷的插件配置:) - -我的配置也会不定期更新,thx 后面图片有点多,展示有点慢,截得不是很专业,耐心看完:) @@ -124,6 +80,8 @@ molokai主题 2. 安装依赖包 + 2.1 系统依赖 + # ubuntu sudo apt-get install ctags sudo apt-get install build-essential cmake python-dev #编译YCM自动补全插件依赖 @@ -135,13 +93,15 @@ molokai主题 # mac #brew install ctags - #使用python需要 + + 2.2 使用Python sudo pip install pyflakes sudo pip install pylint sudo pip install pep8 - #使用javascript需要安装jshint和jslint,用于javascript语法检查 - 需要nodejs支持,各个系统安装见文档 https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager + 2.3 使用Javascript + # 安装jshint和jslint,用于javascript语法检查 + # 需要nodejs支持,各个系统安装见文档 https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager #ubuntu sudo apt-get install nodejs @@ -156,33 +116,38 @@ molokai主题 -3. 安装插件 +3. 安装 + + 3.1 进入目录 + # 注意原先装过的童鞋, 重装时,不要到~/.vim下执行(这是软连接指向k-vim真是目录),必须到k-vim原生目录执行 cd k-vim/ - #注意原先装过重装时,不要到~/.vim下执行(这是软连接指向k-vim真是目录),必须到k-vim原生目录执行 + + 3.2 执行安装 + # 会进入安装插件的列表,目前30+个插件,一一安装是从github clone的,完全取决于网速, 之后会自动编译 YCM, 编译失败的话需要手动编译, 见第4步 sh -x install.sh - #会进入安装插件的列表,目前30+个插件,一一安装是从github clone的,完全取决于网速 - #安装完插件后,会自动编译YCM,注意,可能编译失败(缺少某些依赖包,暂不支持mac osx 10.9) - 失败的话手动编译吧,看第4步 编译自动补全YouCompleteMe (这步耗时也有点长,但绝对值得) +4. 可能遇到的问题: - install.sh - 本质上做的事情 - 1.将vimrc/vim文件夹软链接到$HOME,编程系统vim配置 - 2.git clone安装vundle(clone到bundle目录下) - 3.通过vundle安装其他所有插件(相当于进入vimrc, 命令行执行:BundleInstall),从github全部搞到本地 - 4.编译需要手动编译的插件,eg.YCM -4. 可能遇到的问题: - - 编译自动补全YouCompleteMe - [文档](https://github.com/Valloric/YouCompleteMe) + - 编译自动补全YouCompleteMe(耗时略长, 但绝对值得) + + + cd ~/.vim/bundle/YouCompleteMe + ./install.sh --clang-completer + + + + 有任何问题见YCM[文档](https://github.com/Valloric/YouCompleteMe) 这个插件需要Vim 7.3.584,所以,如果vim版本太低,需要[编译安装](https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source) + + - 相对行号 vimrc中配置,如果不习惯,可以去掉,[相关参考](http://jeffkreeftmeijer.com/2012/relative-line-numbers-in-vim-for-super-fast-movement/) @@ -195,65 +160,53 @@ molokai主题 想要修改终端配色为solarized可以参考 [这里](https://github.com/sigurdga/gnome-terminal-colors-solarized) -5. 安装/卸载/更新插件: + - Go语言不能自动补全/tagbar - 可以自定义安装某些插件,或者删除对自己无用的插件(插件太多可能导致vim打开过慢) + 依赖 [gotags](https://github.com/jstemmer/gotags)和 [gocode](https://github.com/nsf/gocode), 需要安装配置好, 并-> `$GOPATH` -> `$PATH`, `which`命令能正确返回 - 安装新插件 + which gotags + which gocode + - Javascript不能自动补全 + `vimrc.bundles`中`marijnh/tern_for_vim`默认没有打开, 需要打开安装插件, 需要依赖nodejs&npm, 具体见文档 [tern_for_vim](https://github.com/marijnh/tern_for_vim) - 1. vimrc.bundles中配置对应插件 bundle - Bundle 'fholgado/minibufexpl.vim' - 2. 命令行模式,执行: - :BundleInstall + - Macvim - 更新插件 + 安装最新mac vim ,可以正常打开 - 命令行模式,执行: - :BundleUpdate + 需要sudo + mv /usr/bin/vim /usr/bin/vim.bk + ln -s /usr/local/bin/mvim /usr/bin/vim - 删除插件 - - 1. vimrc.bundles中注释或删除对应插件bundle配置行(行首加一个双引号),保存退出即可 - "Bundle 'fholgado/minibufexpl.vim' - - 物理上删除插件,第一步执行保存退出后,再次进入vim - 2.命令行模式,执行: (会物理上删除插件文件) - :BundleClean - -6. 给mac用户 - - 可以使用mac vim + 在.bashrc/.bash_profile中加入 + alias vi='mvim -v' + alias vim='mvim -v' - 首先,安装最新mac vim ,可以正常打开 - 然后(需要sudo) + - 其他问题: 键位/展现等存在问题, 使用`二分法`缩小范围, 排查到问题根源, 修改配置 - mv /usr/bin/vim /usr/bin/vim.bk - ln -s /usr/local/bin/mvim /usr/bin/vim - 最后,在.bashrc/.bash_profile中加入 - alias vi='mvim -v' - alias vim='mvim -v' +5. 安装/卸载/更新插件: - 配置完成 + 安装新插件 -7. 冲突和问题排查 + 1. vimrc.bundles中配置对应插件 + Bundle 'xxx/xxxx' + 2. 命令行模式,执行: + :BundleInstall - 插件很多,并且其默认快捷键或者配置可能发生冲突 + 更新插件(注意如果YCM更新, 可能需要重编译, 否则自动补全可能失效) - 当加入新插件发现有冲突或者展现有问题 + 命令行模式,执行: + :BundleUpdate - 请排除法进行排查:注掉所有插件或配置,然后二分法逐一恢复,可以定位到出现问题的插件或配置,修改其配置或键位即可 + 删除插件 -8. 旧版本用户 + 1. vimrc.bundles中注释或删除对应插件bundle配置行(行首加一个双引号) + 2.命令行模式,执行: (会物理上删除插件文件) + :BundleClean - 旧版本用户更新代码后需执行 - 1.bash install.sh [多了一个软连接.vimrc.bundles] - or - ln -s PATH-TO-k-vim/vimrc.bundles ~/.vimrc.bundles - 2.插件安装和更新 :BundleInstall 和 :BundleUpdate --------------------------------- @@ -291,18 +244,35 @@ molokai主题 空格,进入搜索状态 / 同上 ,/ 去除匹配高亮 + (交换了#/* 号键功能) # 正向查找光标下的词 * 反向查找光标下的词 - 6. buffer/tab相关 - <- / -> 前后buffer + 6. tab操作(重点推) + ctrl+t 新建一个tab + + (hjkl) + ,th 切第1个tab + ,tl 切最后一个tab + ,tj 下一个tab + ,tk 前一个tab + + ,tn 下一个tab(next) + ,tp 前一个tab(previous) + + ,td 关闭tab + ,te tabedit + ,tm tabm + + ,1 切第1个tab + ,2 切第2个tab + ... + ,9 切第9个tab + ,0 切最后一个tab + + ctrl+l 最近使用两个tab之间切换 - , + tn 新tab - , + to tabonly - , + tc close - , + tm tab move - , + te new tab edit 7. 按键修改 Y =y$ 复制到行尾 @@ -310,8 +280,7 @@ molokai主题 , + sa select all,全选 , + v 选中段落 kj 代替,不用到角落去按esc了 - t 新起一行,下面,不进入插入模式 - T 新起一行,上面 + , + q :q,退出vim @@ -323,6 +292,11 @@ molokai主题 5. <和> 代码缩进后自动再次选中 6. 对py文件,保存自动去行尾空白,打开自动加行首代码 7. 交换#/*号功能,#号为正向查找,*反向 + 8. `w!!`强制保存, 即使readonly + + 废弃: + t 新起一行,下面,不进入插入模式 + T 新起一行,上面 --------------------------------- @@ -358,12 +332,6 @@ molokai主题 必装,强烈推荐(YCM是我目前用到的最好的自动补全插件) - 需要编译这个插件(见github文档) - - 这个需要自己去看官方的配置方式,演示在官方github有 - - 需要Vim 7.3.584 以上版本([如何编译vim](https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source)) - 这个插件包含了以下几个插件功能,所以不需要装下面: clang_complete @@ -372,20 +340,31 @@ molokai主题 neocomplcache jedi(对python的补全) + 敲两个字符后弹出提示, 支持各语言标准库补全 + 快捷键: + ctrl+n 选择下一个补全 + ctrl+p 选择上一个补全 + 回车 选中 ,gd 跳到声明位置, 仅 filetypes: c, cpp, objc, objcpp, python 有效 + 演示(官方截图) -2. ####代码片段快速插入 [SirVer/ultisnips](https://github.com/SirVer/ultisnips) +[honza/vim-snippets](https://github.com/honza/vim-snippets) + ![ycm](https://camo.githubusercontent.com/1f3f922431d5363224b20e99467ff28b04e810e2/687474703a2f2f692e696d6775722e636f6d2f304f50346f6f642e676966) - 注意:如果是之前安装的k-vim,更新后发现报错,是ultisnips版本问题 执行:BundleUpdate即可 - 必装,效率杀手锏,快速插入自定义的代码片段 - 代码片段集合,有缺陷 +2. ####代码片段快速插入 [SirVer/ultisnips](https://github.com/SirVer/ultisnips) +[honza/vim-snippets](https://github.com/honza/vim-snippets) - 自动补全加这个,高效必备, 针对各种语言已经带了一份配置了,可以到安装目录下查看具体,我有针对性补全一份,在snippets目录下,可自行修改 + 必装,效率杀手锏,快速插入自定义的代码片段, 高效必备 + + YCM 自动补全会弹提示 + + ctrl+n 上一个 + ctrl+p 下一个 + 使用片段 + ,us 编辑对应文件类型的代码片段 演示 @@ -412,11 +391,13 @@ molokai主题 2. ####快速注释 [scrooloose/nerdcommenter](https://github.com/scrooloose/nerdcommenter) - 必装,另一个大大提升效率的地方,快速批量加减注释 + 必装,另一个大大提升效率的地方,快速批量加减注释[会自动补一个空格] [d] shift+v+方向键选中(默认当前行) - -> ,cc 加上注释 - -> ,cu 解开注释 + -> ,cc 加上注释 + -> ,cu 解开注释 + -> ,c 加上/解开注释 + -> ,cy 先复制再注解, p可以黏贴未注释前的代码 演示 @@ -439,6 +420,8 @@ molokai主题 "Hello world!" -> Hello world! ysiw" Hello -> "Hello" + yss" + Hello world -> "Hello world" 演示 @@ -451,13 +434,19 @@ molokai主题 [sd] ,空格 去掉当前行末尾空格 -4. ####赋值语句代码对齐 [godlygeek/tabular](https://github.com/godlygeek/tabular) +4. ####赋值语句代码对齐 [junegunn/vim-easy-align](https://github.com/junegunn/vim-easy-align) - 将代码,或者json等,进行对齐,具体见 [tabular-vim](http://vimcasts.org/episodes/aligning-text-with-tabular-vim/) + 将代码,或者json等, 根据表达式符号进行对齐,具体见例子 [examples](https://github.com/junegunn/vim-easy-align/blob/master/EXAMPLES.md) [sd] 可以选中多行,不选中默认操作当前行 - ,a= 对齐等号表达式 + ,a= 对齐等号表达 ,a: 对齐冒号表达式(json/map等) + ,a 首个空格对齐 + ,a2 第二个空格对齐 + ,a* 所有空格依次对齐 + + + 同类插件 [tabular](https://github.com/godlygeek/tabular) > 快速移动 @@ -476,12 +465,21 @@ molokai主题 2. ####符号匹配跳转[vim-scripts/matchit.zip](https://github.com/vim-scripts/matchit.zip) - 选装 + 必装 % 匹配成对的标签,跳转 3. ####mark跳转 [kshenoy/vim-signature](https://github.com/kshenoy/vim-signature) + 必装, 快速打标签, 随时跳回标签位置(修复python自动去除空白函数和该插件冲突的问题) + + + m[a-zA-Z] 打标签 + '[a-zA-Z] 跳转到标签位置 + '. 最后一次变更的地方 + '' 跳回来的地方 + + m 去除所有标签 > 快速选中 @@ -548,6 +546,8 @@ molokai主题 yae cie + + > 功能相关 1. ####搜索 [kien/ctrlp.vim](https://github.com/kien/ctrlp.vim) @@ -664,18 +664,35 @@ molokai主题 ![thenerdtree](https://github.com/wklken/gallery/blob/master/vim/thenerdtree.gif?raw=true) -2. ####Buffer [fholgado/minibufexpl.vim](https://github.com/fholgado/minibufexpl.vim) +2. ####目录树tab增强 [jistr/vim-nerdtree-tabs](https://github.com/jistr/vim-nerdtree-tabs) - 必装,buffer管理, 可以查找其他同类插件 + 选装, 多个tab时, 保持nerdtree一致 - [sd] - 切换buffer - 左右方向键 切换buffer - ,bn 切到后一个 - ,bp 切到前一个 - ,bd 关闭当前buffer + Just one NERDTree + +3. ####tab/buffer导航增强 [vim-ctrlspace](https://github.com/szw/vim-ctrlspace) + + 必装, 多buffer/多tab, 方便的查看列表, 操作, 切换, 与nerdtree/tabs完美配合 + + 注意: 有些人的ctrl+space被占用的, 配一个leader快捷键 + vim- + ctrl+ 得到当前tab的buffer列表 + j/k 上下移动 + 回车 跳转到 + l 展示/关闭tab列表 + j/k 或 [/] 上下移动 + = 给tab命名 + - Move the current tab to the left (decrease its number) + + Move the current tab to the right (increase its number) + Backspace Go back to Buffer List -2. ####Tag [majutsushi/tagbar](https://github.com/majutsushi/tagbar) + L Jump to Tab List in Search Mode + + esc/q close the list + + + +4. ####Tag [majutsushi/tagbar](https://github.com/majutsushi/tagbar) 必装,标签导航,纬度和taglist不同, taglist的替代者 @@ -725,11 +742,10 @@ molokai主题 4. ####HTML/JS/JQUERY/CSS - [pangloss/vim-javascript](https://github.com/pangloss/vim-javascript) 偶尔会看看js,频率不高 - - [marijnh/tern_for_vim](https://github.com/marijnh/tern_for_vim) 配合ycm进行js/jquery自动补全,需要安装 tern_for_vim 并 - 配置文档 [ternjs](http://ternjs.net/) + [jelera/vim-javascript-syntax](https://github.com/jelera/vim-javascript-syntax) js语法高亮 + [pangloss/vim-javascript](https://github.com/pangloss/vim-javascript) 缩进等 + [marijnh/tern_for_vim](https://github.com/marijnh/tern_for_vim) 配合ycm进行js/jquery自动补全,需要安装 tern_for_vim 并配置, 文档 [ternjs](http://ternjs.net/) cd ~/.vim/bundle/tern_for_vim && npm install @@ -772,73 +788,68 @@ molokai主题 [evanmiller/nginx-vim-syntax](https://github.com/evanmiller/nginx-vim-syntax) 未配置 -> 其他 - -1. ####平滑滚动 - [yonchu/accelerated-smooth-scroll](https://github.com/yonchu/accelerated-smooth-scroll) 未配置 +--------------------------------- - [terryma/vim-smooth-scroll](https://github.com/terryma/vim-smooth-scroll) 未配置 +--------------------------------- -2. ####多人协作,结对编程 +### Update Log - [FredKSchott/CoVim](https://github.com/FredKSchott/CoVim) 未配置 +2014-10-02 -3. ####单行多行变换 +version: 8.0 - [AndrewRadev/splitjoin.vim](https://github.com/AndrewRadev/splitjoin.vim) 未配置 + 1. 修复YCM不能自动提示Ultisnips代码片段的问题 + 重大问题, 生产力得到再次提升:) + 注意: 自定义snippets, 写错一个, 就会导致YCM不提示所有的snippets -4. ####TODO关键字列表 + 2. tab增强 + 2.1 新增tab操作快捷键, 详见文档 + 2.2 增加插件 `jistr/vim-nerdtree-tabs`, 所有tab使用同一个nerdtree + 2.3 增加插件 `szw/vim-ctrlspace`, 更强大的buffer/tab操作-切换 + 由于tab增强带来的影响: + - 去掉了t/T新增一行的快捷键(低频操作, 后续可以考虑配置到其他键位) - [vim-scripts/TaskList.vim](https://github.com/vim-scripts/TaskList.vim) 未配置 + 3. 去除`minibuffer`插件 + 配置还留着, 需要的自己解开, 但是ctrlspace其实可以完爆这个功能 -5. ####substitute替换增强 + 4. 优化`scrooloose/nerdcommenter`配置 + 注解加空格, 以及新增键位 - [tpope/vim-abolish.vim](https://github.com/tpope/vim-abolish) 未配置 + 5. 增加插件 `kshenoy/vim-signature` + mark-跳转更加方便, 修复与保存自动去行尾空白功能的冲突 -6. ####剪贴板复用增强 + 6. 对齐插件变更, 使用`junegunn/vim-easy-align` 替换掉 `godlygeek/tabular` - [vim-scripts/YankRing.vim](https://github.com/vim-scripts/YankRing.vim) 未配置 + 7. 增加插件 `jelera/vim-javascript-syntax` + 更丰富的javascript语法高亮 -7. ####写作模式 + 8. 去除插件 `gorodinskiy/vim-coloresque` + 这货有坑, 使用频率低 see issue https://github.com/wklken/k-vim/issues/49 - [junegunn/goyo.vim](https://github.com/junegunn/goyo.vim) 未配置 + 9. 新增自定义snippets + 位置 ~/.vim/UltiSnips/ ---------------------------------- + 10. 重写README ---------------------------------- +### Contributors -### Update Log +thx a lot. 可以给我提pull request:) -2013-06-11 创建: +- [wklken](https://github.com/wklken) - vim配置 +- [fangwentong](https://github.com/fangwentong) -2014-03-15更新: +- [Garnel](https://github.com/Garnel) - 1.更全的注释 - 2.更合理文件结构和配置布局 - 3.分离插件配置到vimrc.bundles - 4.更强大的代码补全 - 5.去掉一些无用信息 +- [spacewander](https://github.com/spacewander) -2014-05-07/08更新: +- [ruanyl](https://github.com/ruanyl) - 1.增加文本对象扩展 - 2.去除taglist - 3.增加 ctrlp插件 ctrlp-funky用于快速函数搜索跳转 - 4.切换powerline为airline +- [memoryboxes](https://github.com/memoryboxes) -TODO: +查看详情 [git-contributors](https://github.com/wklken/k-vim/graphs/contributors) - 1.更便捷易用的buffer/tab/window管理切换 - 2.在 vim 中执行shell - https://github.com/Shougo/vimshell.vim - http://code.hootsuite.com/vimshell/ - https://github.com/vim-scripts/Conque-Shell - 3.vim compile/run/debug code[好奇而已.....目前习惯用终端] - https://github.com/jaredly/vim-debug/ - 4.现有插件-二八原则对具体用法仔细梳理 ### Inspire @@ -850,28 +861,17 @@ TODO: 3. 自动补全 [YCM](https://github.com/Valloric/YouCompleteMe) -### Resources - -0. [vim资源汇总](http://u.memect.com/vim/) +4. 插件挑选 [VimAwesome](http://vimawesome.com/) -1. [VimAwesome](http://vimawesome.com/) - -1. [Google+](https://plus.google.com/communities/105049811056605918816) - -2. [vimbits](http://www.vimbits.com/bits?sort=top) - -3. [Learning vim the hard way](http://learnvimscriptthehardway.stevelosh.com/) - -4. [Seven habits of effective text editing](http://www.moolenaar.net/habits.html) +### Resources -5. [openvim tutorial](http://www.openvim.com/tutorial.html) +待增加blog[] -6. [vim genius](http://www.vimgenius.com/) +### Donation -7. [vim colors](http://vimcolors.com/) +You can Buy me a coffee:) [link](http://www.wklken.me/pages/donation.html) ------------------------ - ------------------------ The End! diff --git a/UPDATE_LOG.md b/UPDATE_LOG.md new file mode 100644 index 000000000..ca3c6c6e1 --- /dev/null +++ b/UPDATE_LOG.md @@ -0,0 +1,71 @@ +更新日志 +================================ + +注: 8.0后面将开始使用小版本号 + +## 2014-10-02 + +version: 8.0 + + 1. 修复YCM不能自动提示Ultisnips代码片段的问题 + 重大问题, 生产力得到再次提升:) + 注意: 自定义snippets, 写错一个, 就会导致YCM不提示所有的snippets + + 2. tab增强 + 2.1 新增tab操作快捷键, 详见文档 + 2.2 增加插件 `jistr/vim-nerdtree-tabs`, 所有tab使用同一个nerdtree + 2.3 增加插件 `szw/vim-ctrlspace`, 更强大的buffer/tab操作-切换 + 由于tab增强带来的影响: + - 去掉了t/T新增一行的快捷键(低频操作, 后续可以考虑配置到其他键位) + + 3. 去除`minibuffer`插件 + 配置还留着, 需要的自己解开, 但是ctrlspace其实可以完爆这个功能 + + 4. 优化`scrooloose/nerdcommenter`配置 + 注解加空格, 以及新增键位 + + 5. 增加插件 `kshenoy/vim-signature` + mark-跳转更加方便, 修复与保存自动去行尾空白功能的冲突 + + 6. 对齐插件变更, 使用`junegunn/vim-easy-align` 替换掉 `godlygeek/tabular` + + 7. 增加插件 `jelera/vim-javascript-syntax` + 更丰富的javascript语法高亮 + + 8. 去除插件 `gorodinskiy/vim-coloresque` + 这货有坑, 使用频率低 see issue https://github.com/wklken/k-vim/issues/49 + + 9. 新增自定义snippets + 位置 ~/.vim/UltiSnips/ + + 10. 重写README + + +## 2014-05-07/08 + +version: 7.0 + + 1.增加文本对象扩展 + 2.去除 taglist + 3.增加 ctrlp 插件 ctrlp-funky用于快速函数搜索跳转 + 4.切换 powerline为airline + + +## 2014-03-15 + +version: 6.0 + + 1.更全的注释 + 2.更合理文件结构和配置布局 + 3.分离插件配置到vimrc.bundles + 4.更强大的代码补全 + 5.去掉一些无用信息 + +## 2013-06-11 + +version: 5.0 + + 1. 梳理vim配置, 维护到git + 2. 书写文档, 截图演示 + + diff --git a/additional_snippets/all.snippets b/UltiSnips/all.snippets similarity index 68% rename from additional_snippets/all.snippets rename to UltiSnips/all.snippets index 7c0a44ca1..1efddbd3a 100644 --- a/additional_snippets/all.snippets +++ b/UltiSnips/all.snippets @@ -29,16 +29,10 @@ snippet ddate `!v strftime("%B %d, %Y")` endsnippet - - snippet sdate `!v strftime("%Y.%m.%d")` endsnippet -snippet trīsVīri -Trīs vīri kādreiz bija hei, hei, hei, hei, hei, Kas mierā dzīvoja ... Bet sveši kungi nāca Un zemi postīja, jā Trīs trīs trīs vīri cēlās kaujai Un droši cīnījās No Daugavas līdz Gaujai Par viņiem brīnījās -endsnippet - snippet blog Title: ${1} Slug: ${2} @@ -47,3 +41,14 @@ Category: ${4} Tags: ${5} endsnippet + + +snippet /td +/* TODO: ${1} +*/ +endsnippet + +snippet /mk +/* MARK: ${1} +*/ +endsnippet diff --git a/additional_snippets/c.snippets b/UltiSnips/c.snippets similarity index 100% rename from additional_snippets/c.snippets rename to UltiSnips/c.snippets diff --git a/additional_snippets/go.snippets b/UltiSnips/go.snippets similarity index 100% rename from additional_snippets/go.snippets rename to UltiSnips/go.snippets diff --git a/additional_snippets/python.snippets b/UltiSnips/python.snippets similarity index 65% rename from additional_snippets/python.snippets rename to UltiSnips/python.snippets index f61af3c25..e5b294bb1 100644 --- a/additional_snippets/python.snippets +++ b/UltiSnips/python.snippets @@ -1,126 +1,118 @@ ########### header and bottom -snippet code +snippet code "coding:utf-8" # coding: utf-8 endsnippet -snippet main +snippet main "if main" if __name__ == '__main__': ${1} endsnippet ########### import -snippet im +snippet im "import" import ${1} endsnippet -snippet imp "imp" +snippet imp "import" import ${1:module} ${2} endsnippet -snippet fim +snippet fim "from . import ." from ${1} import ${2} endsnippet -snippet fro "fro" -from ${1:package} import ${2:module} -${3} -endsnippet -snippet from +snippet from "from . import ." from ${1} import ${2} endsnippet ########### single char -snippet t +snippet t "True" True${1} endsnippet -snippet f +snippet f "False" False${1} endsnippet -snippet n +snippet n "None" None${1} endsnippet -snippet r +snippet r "return" return ${1} endsnippet -snippet s +snippet s "self." self.${1} endsnippet -snippet p +snippet p "print" print ${1} endsnippet -snippet pr +snippet pr "print " print "${1}" endsnippet -snippet pri +snippet pri "print ''" print '${1}' endsnippet -snippet prt +snippet prt "print trace" print "TRACK ================= ${1}", ${2} endsnippet -snippet rep +snippet rep "repr" repr(${1}) endsnippet -snippet repr +snippet repr "repr" repr(${1}) endsnippet -snippet _ +snippet _ "__func__" __${1:init}__${2} endsnippet -snippet # +snippet # "# xxxx" # ${1} endsnippet -snippet a +snippet a "assert" assert ${1} endsnippet -snippet isi +snippet isi "isinstance" isinstance(${1}, ${2}) endsnippet ############# 逻辑控制 -snippet el +snippet el "else" else: ${0:# TODO} endsnippet -snippet ei +snippet ei "elif" elif ${1}: ${2} endsnippet -snippet while +snippet while "while" while ${1:expression}: ${0:# TODO} endsnippet ############# -#snippet def "def" -#def ${1:fname}(${2:`!v indent('.') ? 'self' : ''`}): -# """${3:docstring for $1}""" -# ${4:pass} -#endsnippet snippet defs "defs" def ${1:fname}(self, ${2:**kwargs}): """${3:docstring for $1}""" ${3:pass} endsnippet -snippet pro + +snippet pro "property" def ${1}(): doc = "${2: The $1 property.}" def fget(self): @@ -138,7 +130,7 @@ def __init__(self, ${1:args}): ${2} endsnippet -snippet doc +snippet doc "docstring" """ @Author: ${1:`wklken`} @Email: ${2:`wklken@yeah.net`} @@ -147,11 +139,20 @@ snippet doc """ endsnippet -snippet rai +snippet rai "raise" raise ${1} endsnippet -snippet tr +snippet tr "traceback" import traceback; traceback.print_exc() endsnippet ############# + +snippet fin "[i for i in l]" +[${1:item} for ${2:$1} in ${3}] +endsnippet + +snippet finif "[i for i in l if i]" +[${1:item} for ${2:$1} in ${3} if ${4:$1}] +endsnippet + diff --git a/additional_snippets/snippets.snippets b/UltiSnips/snippets.snippets similarity index 100% rename from additional_snippets/snippets.snippets rename to UltiSnips/snippets.snippets diff --git a/enable_others.sh b/enable_others.sh deleted file mode 100644 index 533cba6b1..000000000 --- a/enable_others.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -# refer spf13-vim bootstrap.sh` -BASEDIR=$(dirname $0) -cd $BASEDIR -CURRENT_DIR=`pwd` - -lnif() { - if [ -e "$1" ]; then - ln -sf "$1" "$2" - fi -} - -# 支持javascript自动补全, 需要安装.vimrc.bundles中 marijnh/tern_for_vim 且使用npm安装之 -# for javascript tern -lnif $CURRENT_DIR/others/tern-project $HOME/.tern-project - -lnif $HOME/.vim/bundle/tern_for_vim/after/ftplugin/javascript_tern.vim $HOME/.vim/bundle/tern_for_vim/after/ftplugin/html_tern.vim - - diff --git a/vimrc b/vimrc index c61749777..d19adca0d 100644 --- a/vimrc +++ b/vimrc @@ -1,10 +1,11 @@ "========================================== " Author: wklken -" Version: 7 +" Version: 8.0 " Email: wklken@yeah.net " BlogPost: http://wklken.me " ReadMe: README.md -" Last_modify: 2014-03-15 +" Donation: http://www.wklken.me/pages/donation.html +" Last_modify: 2014-10-02 " Sections: " -> Initial Plugin 加载插件 " -> General Settings 基础设置 @@ -17,8 +18,7 @@ " " -> 插件配置和具体设置在vimrc.bundles中 "========================================== - - + "========================================== " Initial Plugin 加载插件 "========================================== @@ -366,17 +366,63 @@ noremap / :nohls " --------tab/buffer相关 "Use arrow key to change buffer" +" TODO: 如何跳转到确定的buffer? +" :b1 :b2 :bf :bl +nnoremap [b :bprevious +nnoremap ]b :bnext noremap :bp noremap :bn -map tn :tabnew -map to :tabonly -map tc :tabclose -map tm :tabmove -" Opens a new tab with the current buffer's path -" Super useful when editing files in the same directory -map te :tabedit =expand("%:p:h")/ +" tab 操作 +" TODO: ctrl + n 变成切换tab的方法 +" http://vim.wikia.com/wiki/Alternative_tab_navigation +" http://stackoverflow.com/questions/2005214/switching-to-a-particular-tab-in-vim +"map 2gt +map th :tabfirst +map tl :tablast + +map tj :tabnext +map tk :tabprev +map tn :tabnext +map tp :tabprev + +map te :tabedit +map td :tabclose +map tm :tabm + + +" 新建tab Ctrl+t +nnoremap :tabnew +inoremap :tabnew +" TODO: 配置成功这里, 切换更方便, 两个键 +" nnoremap :tabprevious +" nnoremap :tabnext +" inoremap :tabpreviousi +" inoremap :tabnexti +" nnoremap :tabprevious +" nnoremap :tabnext + +" normal模式下切换到确切的tab +noremap 1 1gt +noremap 2 2gt +noremap 3 3gt +noremap 4 4gt +noremap 5 5gt +noremap 6 6gt +noremap 7 7gt +noremap 8 8gt +noremap 9 9gt +noremap 0 :tablast + +" Toggles between the active and last active tab " +" The first tab is always 1 " +let g:last_active_tab = 1 +" nnoremap gt :execute 'tabnext ' . g:last_active_tab +nnoremap :execute 'tabnext ' . g:last_active_tab +vnoremap :execute 'tabnext ' . g:last_active_tab +autocmd TabLeave * let g:last_active_tab = tabpagenr() + " ------- 选中及操作改键 @@ -405,8 +451,9 @@ nnoremap 2 "Jump to start and end of line using the home row keys -nmap t ok -nmap T Oj +" 增强tab操作, 导致这个会有问题, 考虑换键 +"nmap t ok +"nmap T Oj " Quickly close the current window nnoremap q :q @@ -432,13 +479,14 @@ nmap sv :so $MYVIMRC autocmd FileType python set tabstop=4 shiftwidth=4 expandtab ai " 保存python文件时删除多余空格 -" Delete trailing white space on save, useful for Python and CoffeeScript ;) -func! DeleteTrailingWS() - exe "normal mz" - %s/\s\+$//ge - exe "normal `z" -endfunc -autocmd BufWrite *.py :call DeleteTrailingWS() +fun! StripTrailingWhitespaces() + let l = line(".") + let c = col(".") + %s/\s\+$//e + call cursor(l, c) +endfun +autocmd FileType c,cpp,java,php,ruby,python autocmd BufWritePre :call StripTrailingWhitespaces() + " 定义函数AutoSetFileHead,自动插入文件头 autocmd BufNewFile *.sh,*.py exec ":call AutoSetFileHead()" @@ -506,3 +554,4 @@ highlight SpellRare term=underline cterm=underline highlight clear SpellLocal highlight SpellLocal term=underline cterm=underline + diff --git a/vimrc.bundles b/vimrc.bundles index ec2d2b192..5a71c1ba8 100644 --- a/vimrc.bundles +++ b/vimrc.bundles @@ -1,12 +1,13 @@ "========================================== " bundle 插件管理和配置项 "========================================== + "------------------------------------------- begin of configs -------------------------------------------- "################### 包依赖 ##################### "package dependence: ctags "python dependence: pep8, pyflake -" + "非兼容vi模式。去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限 set nocompatible " configure Vundle @@ -17,11 +18,11 @@ call vundle#rc() "################### 插件管理 ################### -"使用Vundle来管理插件 +" 使用Vundle来管理插件 " vim plugin bundle control, command model -" :BundleInstall install 安装配置的插件 -" :BundleInstall! update 更新 -" :BundleClean remove plugin not in list 删除本地无用插件 +" :BundleInstall install 安装配置的插件 +" :BundleInstall! update 更新 +" :BundleClean remove plugin not in list 删除本地无用插件 Bundle 'gmarik/vundle' @@ -52,9 +53,11 @@ let g:ycm_key_list_select_completion = [''] let g:ycm_key_list_previous_completion = [''] let g:ycm_complete_in_comments = 1 "在注释输入中也能补全 let g:ycm_complete_in_strings = 1 "在字符串输入中也能补全 +let g:ycm_use_ultisnips_completer = 1 "提示UltiSnips let g:ycm_collect_identifiers_from_comments_and_strings = 1 "注释和字符串中的文字也会被收入补全 "let g:ycm_seed_identifiers_with_syntax=1 "语言关键字补全, 不过python关键字都很短,所以,需要的自己打开 let g:ycm_collect_identifiers_from_tags_files = 1 + " 引入,可以补全系统,以及python的第三方包 针对新老版本YCM做了兼容 " old version if !empty(glob("~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py")) @@ -65,7 +68,6 @@ if !empty(glob("~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_ let g:ycm_global_ycm_extra_conf = "~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py" endif - " 直接触发自动补全 let g:ycm_key_invoke_completion = '' " 黑名单,不启用 @@ -75,15 +77,34 @@ let g:ycm_filetype_blacklist = { \} -" 代码片段快速插入 +" 代码片段快速插入 (snippets中,是代码片段资源,需要学习) Bundle 'SirVer/ultisnips' -" 代码片段资源,需要学习 " Snippets are separated from the engine. Add this if you want them: Bundle 'honza/vim-snippets' -let g:UltiSnipsExpandTrigger = "" -let g:UltiSnipsJumpForwardTrigger = "" -" 定义存放代码片段的文件夹 .vim/additional_snippets下,使用自定义和默认的,将会的到全局,有冲突的会提示 -let g:UltiSnipsSnippetDirectories=["additional_snippets", 'UltiSnips'] + +let g:UltiSnipsExpandTrigger = "" +let g:UltiSnipsJumpForwardTrigger = "" +let g:UltiSnipsJumpBackwardTrigger = "" +let g:UltiSnipsSnippetDirectories = ['UltiSnips'] +let g:UltiSnipsSnippetsDir = '~/.vim/UltiSnips' +" 定义存放代码片段的文件夹 .vim/UltiSnips下,使用自定义和默认的,将会的到全局,有冲突的会提示 +" 进入对应filetype的snippets进行编辑 +map us :UltiSnipsEdit +function! g:UltiSnips_Complete() + call UltiSnips#ExpandSnippet() + if g:ulti_expand_res == 0 + if pumvisible() + return "\" + else + call UltiSnips#JumpForwards() + if g:ulti_jump_forwards_res == 0 + return "\" + endif + endif + endif + return "" +endfunction +au InsertEnter * exec "inoremap " . g:UltiSnipsExpandTrigger . " =g:UltiSnips_Complete()" " 自动补全单引号,双引号等 @@ -91,16 +112,16 @@ Bundle 'Raimondi/delimitMate' "" for python docstring ",优化输入 au FileType python let b:delimitMate_nesting_quotes = ['"'] + " 自动补全html/xml标签 Bundle 'docunext/closetag.vim' let g:closetag_html_style=1 - - "################### 快速编码 ################### " 快速注释 Bundle 'scrooloose/nerdcommenter' +let g:NERDSpaceDelims=1 " 快速加入修改环绕字符 @@ -113,15 +134,13 @@ Bundle 'bronson/vim-trailing-whitespace' map :FixWhitespace " 快速赋值语句对齐 -Bundle 'godlygeek/tabular' -nmap a= :Tabularize /= -vmap a= :Tabularize /= -" :号也对齐 -nmap a: :Tabularize /: -vmap a: :Tabularize /: -" :号不变 -"nmap a: :Tabularize /:\zs -"vmap a: :Tabularize /:\zs +Bundle 'junegunn/vim-easy-align' +vmap a (EasyAlign) +nmap a (EasyAlign) +if !exists('g:easy_align_delimiters') + let g:easy_align_delimiters = {} +endif +let g:easy_align_delimiters['#'] = { 'pattern': '#', 'ignore_groups': ['String'] } "################### 快速移动 ################### @@ -134,8 +153,7 @@ Bundle 'vim-scripts/matchit.zip' " m[a-zA-Z] add mark " '[a-zA-Z] go to mark " m del all marks -"Bundle "kshenoy/vim-signature" - +Bundle "kshenoy/vim-signature" "################### 文本对象 ################### @@ -196,12 +214,13 @@ let g:ctrlp_extensions = ['funky'] " git. git操作还是习惯命令行,vim里面处理简单diff编辑操作 Bundle 'tpope/vim-fugitive' -" :Gdiff :Gstatus :Gvsplit +":Gdiff :Gstatus :Gvsplit nnoremap ge :Gdiff " 同git diff,实时展示文件中修改的行 " 只是不喜欢除了行号多一列, 默认关闭,gs时打开 Bundle 'airblade/vim-gitgutter' +let g:gitgutter_map_keys = 0 let g:gitgutter_enabled = 0 let g:gitgutter_highlight_lines = 1 nnoremap gs :GitGutterToggle @@ -289,24 +308,42 @@ let NERDTreeIgnore=[ '\.pyc$', '\.pyo$', '\.obj$', '\.o$', '\.so$', '\.egg$', '^ "close vim if the only window left open is a NERDTree autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | end -"for minibufferexpl -Bundle 'fholgado/minibufexpl.vim' -let g:miniBufExplMapWindowNavVim = 1 -let g:miniBufExplMapWindowNavArrows = 1 -let g:miniBufExplMapCTabSwitchBufs = 1 -let g:miniBufExplModSelTarget = 1 -"解决FileExplorer窗口变小问题 -let g:miniBufExplForceSyntaxEnable = 1 -let g:miniBufExplorerMoreThanOne=2 -let g:miniBufExplCycleArround=1 - -" 默认方向键左右可以切换buffer -nnoremap :MBEbn -noremap bn :MBEbn -noremap bp :MBEbp -noremap bd :MBEbd - -"标签导航 +Bundle 'jistr/vim-nerdtree-tabs' +map n NERDTreeTabsToggle +" 关闭同步 +let g:nerdtree_tabs_synchronize_view=0 +let g:nerdtree_tabs_synchronize_focus=0 +" 自动开启nerdtree +"let g:nerdtree_tabs_open_on_console_startup=1 + + +" Vim Workspace Controller +Bundle "szw/vim-ctrlspace" +let g:airline_exclude_preview = 1 +hi CtrlSpaceSelected guifg=#586e75 guibg=#eee8d5 guisp=#839496 gui=reverse,bold ctermfg=10 ctermbg=7 cterm=reverse,bold +hi CtrlSpaceNormal guifg=#839496 guibg=#021B25 guisp=#839496 gui=NONE ctermfg=12 ctermbg=0 cterm=NONE +hi CtrlSpaceSearch guifg=#cb4b16 guibg=NONE gui=bold ctermfg=9 ctermbg=NONE term=bold cterm=bold +hi CtrlSpaceStatus guifg=#839496 guibg=#002b36 gui=reverse term=reverse cterm=reverse ctermfg=12 ctermbg=8 + + +"for minibufferexpl 去掉, 有需要同学的自己解开 +" Bundle 'fholgado/minibufexpl.vim' +" let g:miniBufExplMapWindowNavVim = 1 +" let g:miniBufExplMapWindowNavArrows = 1 +" let g:miniBufExplMapCTabSwitchBufs = 1 +" let g:miniBufExplModSelTarget = 1 +" " 解决FileExplorer窗口变小问题 +" let g:miniBufExplForceSyntaxEnable = 1 +" let g:miniBufExplorerMoreThanOne=2 +" let g:miniBufExplCycleArround=1 +" " 默认方向键左右可以切换buffer +" nnoremap :MBEbn +" noremap bn :MBEbn +" noremap bp :MBEbp +" noremap bd :MBEbd + + +" 标签导航 Bundle 'majutsushi/tagbar' nmap :TagbarToggle let g:tagbar_autofocus = 1 @@ -343,13 +380,10 @@ let g:tagbar_type_go = { \ 'ctagsargs' : '-sort -silent' \ } - -" 去除taglist -" 原因: 使用tagbar和ctrlp-funky可以直接快速跳转函数和变量位置,taglist有些多余 +" 去除taglist =>原因: 使用tagbar和ctrlp-funky可以直接快速跳转函数和变量位置,taglist有些多余 "################### 语言相关 ################### - "###### Python ######### " python fly check, 弥补syntastic只能打开和保存才检查语法的不足 @@ -372,14 +406,17 @@ let g:vim_markdown_folding_disabled=1 "###### HTML/JS/JQUERY/CSS ######### -" for javascript +" for javascript 注意: syntax这个插件要放前面 +Bundle 'jelera/vim-javascript-syntax' Bundle "pangloss/vim-javascript" let g:html_indent_inctags = "html,body,head,tbody" let g:html_indent_script1 = "inc" let g:html_indent_style1 = "inc" -" for javascript 自动补全,配合YCM,需要安装nodejs&npm -"Bundle 'marijnh/tern_for_vim' + +" for javascript 自动补全,配合YCM,需要安装nodejs&npm see +" https://github.com/marijnh/tern_for_vim +" Bundle 'marijnh/tern_for_vim' "for jquery Bundle 'nono/jquery.vim' @@ -398,11 +435,14 @@ Bundle 'Glench/Vim-Jinja2-Syntax' "for css color "not work in iterm2 which termianl selection is not xterm-256 "Bundle 'ap/vim-css-color' - + +" 这个有坑, see issue https://github.com/wklken/k-vim/issues/49 "Bundle 'gorodinskiy/vim-coloresque' "###### nginx ######### "Bundle 'evanmiller/nginx-vim-syntax' +" Bundle "thinca/vim-quickrun" +" nnoremap :QuickRun "------------------------------------------- end of configs --------------------------------------------