VIM (Unix及类Unix系统文本编辑器)javascript
Vim是一个相似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增长了不少特性。VIM是开源软件。css
Vim广泛被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不一样变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Emacs推至二线, 总的来看, Vim和Emacs在文本编辑方面都是很是优秀的。html
系统原生的Vim文本编辑器功能单一,做者介绍一种K-vim高级配置,具备代码补全等多项功能。本文是在原做者的基础上进行二次改进,原文地址:https://github.com/wklken/k-vim。java
注意:有些系统须要执行:sudo apt-get install vim #安装Vim编辑器后才能进行安装node
git clone https://github.com/wklken/k-vim.git
注意:若是未安装git,须要执行:sudo apt-get install git #安装git后才能进行安装,下载目录就是当前目录。
python
# ubuntu sudo apt-get install ctags sudo apt-get install build-essential cmake python-dev #编译YCM自动补全插件依赖 sudo apt-get install silversearcher-ag # centos sudo yum install python-devel.x86_64 sudo yum groupinstall 'Development Tools' sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum install the_silver_searcher sudo yum install cmake # mac brew install ctags brew install the_silver_searcher
sudo pip install flake8 yapf
注意:执行上面命令须要提早安装pip支持:nginx
sudo apt-get update git
sudo apt-get upgradegithub
# 安装Pipgolang
sudo apt-get install python-pip
# 检查 pip 是否安装成功
pip -V
# 安装jshint和jslint,用于javascript语法检查 # 须要nodejs支持,各个系统安装见文档 https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager # ubuntu sudo apt-get install nodejs npm sudo npm install -g jslint sudo npm install jshint -g sudo npm install -g eslint eslint-plugin-standard eslint-plugin-promise eslint-config-standard eslint-plugin-import eslint-plugin-node eslint-plugin-html babel-eslint # mac brew install node npm install jshint -g npm install jslint -g npm install -g eslint eslint-plugin-standard eslint-plugin-promise eslint-config-standard eslint-plugin-import eslint-plugin-node eslint-plugin-html babel-eslint
进入目录, 执行安装 # 注意原先装过的童鞋, 重装时,不要到~/.vim下执行(这是软链接指向k-vim真是目录),必须到k-vim原生目录执行 # 会进入安装插件的列表,一安装是从github clone的,彻底取决于网速, 以后会自动编译 YCM, 编译失败的话须要手动编译, 有问题见YCM文档 # 若是发现有插件安装失败 能够进入vim, 执行`:PlugInstall' cd k-vim/ sh -x install.sh
注意:执行安装时,若是已经将官方源换为国内源,须要改回官方源才能正常安装,不然会卡住不动,致使安装失败。
执行命令:cd ~ && rm -rf .vim .vimrc .vimrc.bundles && cd -
执行:vi hello.c
按“i”进入编辑模式,输入#include等函数将会出现自动补齐选项,按回车键选中。
注意:若是没有设定文件名,例如XX.c,将不会出现文件补齐,很容易理解。
编辑vimrc.bundles中
" more options: ['json', 'nginx', 'golang', 'ruby', 'less', 'json', ] let g:bundle_groups=['python', 'javascript', 'markdown', 'html', 'css', 'tmux', 'beta']
选定集合后, 使用插件管理工具进行安装/更新
使用 vim-plug 管理插件
vim-plug
常见问题: vim-plug faq / YCM timeout /YCM 国人在国内作的镜像
管理插件的命令
:PlugInstall install 安装插件 :PlugUpdate install or update 更新插件 :PlugClean remove plugin not in list 删除本地无用插件 :PlugUpgrade Upgrade vim-plug itself 升级自己 :PlugStatus Check the status of plugins 查看插件状态
说明/演示/自定义快捷键等, 待处理
注意, 如下 ',' 表明<leader> 1. 能够本身修改vimrc中配置,决定是否开启鼠标 set mouse-=a " 鼠标暂不启用, 键盘党.... set mouse=a " 开启鼠标 2. 退出vim后,内容显示在终端屏幕, 能够用于查看和复制, 若是不须要能够关掉 好处:误删什么的,若是之前屏幕打开,能够找回....惨痛的经历 set t_ti= t_te= 3. 能够本身修改vimrc决定是否使用方向键进行上下左右移动,默认关闭,强迫本身用 hjkl,能够注解 hjkl 上下左右 map <Left> <Nop> map <Right> <Nop> map <Up> <Nop> map <Down> <Nop> 4. 上排F功能键 F1 废弃这个键,防止调出系统帮助 F2 set nu/nonu,行号开关,用于鼠标复制代码用 F3 set list/nolist,显示可打印字符开关 F4 set wrap/nowrap,换行开关 F5 set paste/nopaste,粘贴模式paste_mode开关,用于有格式的代码粘贴 F6 syntax on/off,语法开关,关闭语法能够加快大文件的展现 F9 tagbar F10 运行当前文件(quickrun) 5. 分屏移动 ctrl + j/k/h/l 进行上下左右窗口跳转,不须要ctrl+w+jkhl 6. 搜索 <space> 空格,进入搜索状态 / 同上 ,/ 去除匹配高亮 (交换了#/* 号键功能, 更符合直觉, 实际上是离左手更近) # 正向查找光标下的词 * 反向查找光标下的词 优化搜索保证结果在屏幕中间 7. 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 ,tt 最近使用两个tab之间切换 (可修改配置位 ctrl+o, 可是ctrl+o/i为系统光标相关快捷键, 故不采用) 8. buffer操做(不建议, 建议使用ctrlspace插件来操做) [b 前一个buffer ]b 后一个buffer <- 前一个buffer -> 后一个buffer 9. 按键修改 Y =y$ 复制到行尾 U =Ctrl-r ,sa select all,全选 gv 选中并高亮最后一次插入的内容 ,v 选中段落 kj 代替<Esc>,不用到角落去按esc了 ,q :q,退出vim ,w :w, 保存当前文件 ctrl+n 相对/绝对行号切换 <enter> normal模式下回车选中当前项 更多细节优化: 1. j/k 对于换行展现移动更友好 2. HL 修改为 ^$, 更方便在同行移动 3. ; 修改为 : ,一键进入命令行模式,不须要按shift 4. 命令行模式 ctrl+a/e 到开始结尾 5. <和> 代码缩进后自动再次选中, 方便连续屡次缩进, esc退出 6. 对py文件,保存自动去行尾空白,打开自动加行首代码 7. 'w!!'强制保存, 即便readonly 8. 去掉错误输入提示 9. 交换\`和', '能跳转到准确行列位置 10. python/ruby 等, 保存时自动去行尾空白 11. 统一全部分屏打开的操做位v/s[nerdtree/ctrlspace] (特殊ctrlp ctrl+v/x) 12. ',zz' 代码折叠toggle 13. python使用"""添加docstring会自动补全三引号 14. Python使用#进行注释时, 自动缩进