Coder Social home page Coder Social logo

k-vim's Introduction

k-vim

VERSION: 7.0

LAST_UPDATE_TIME: 2014-05-08

PS: 年前答应的版本梳理完毕,拖延了,额,一个月....-_-#

有任何问题提issues

目标

Just a Better Vim Config. Keep it Simple.

1.结构及配置划分良好
2.全中文注释
3.高度可配置修改
4.一键安装少折腾
5.保持简单

适用人群:

有一定基础的 vimer

vim基本用法

推荐: 耗子叔的 简明vim练级攻略

或者,玩游戏 vim大冒险

交互教程 入门openvim 进阶Vim Genius

学习步骤:

1.进入退出,模式切换,插入删除复制粘贴等基本操作

2.学会快速移动跳转

3.学会如何进行选中

4.学会进行文本对象操作

5.学会批量重复操作

6.学会vim批量替换

------------
6.学会使用插件,完成补全,注释,文本快速录入操作等

7.学会宏 []

k-vim使用说明

  1. 能熟练使用原生vim,最好先熟悉了再来使用插件扩展

  2. 插件配置

     1.可以在vimrc.bundles中查看到每个插件的配置
     2.所列插件默认安装的,需要针对自身需求,增加或删除配置
     3.本README.md仅介绍插件简单功能和用法,可以在github中搜索查看详细的用法和配置
     4.每个插件配置后面跟了一些键位修改的配置[用法在下面介绍中],可以根据自己习惯修改
    
     ps.平时用python/golang多些,其他语言根据自身需求添加到 vimrc.bundles->语言相关中
    
  3. fork一份, 然后参照安装步骤进行安装

    根据自己使用语言和自身习惯,对配置进行自定义修改

    之后,维护自身配置,后续可以在任意地方安装,一库在手,天下我有 ,:)

    要关注k-vim的更新,github点Star,thx a lot!

  4. 建议

     1.插件不是越多越好,多了可能会拖慢vim打开速度
    
         可以尝试注掉所有插件,根据使用需求逐一加入
         需要多思考自己使用过程中的不便之处,寻找对应解决方案
    
     2.二八定律
    
         关注可以最大提升自己生产力的20%插件,具体要亲自实践
         有什么问题,先看插件文档说明->代码选项->github上的issues->google it
         你遇到的问题,一定别人也遇到了,大部分可解决,少部分无解….
    
    
     3.不要复杂化vim
    

    文章: 不要复杂化vim|七个高效文本编辑习惯

欢迎推荐好用更酷的插件配置:)

我的配置也会不定期更新,thx

后面图片有点多,展示有点慢,截得不是很专业,耐心看完:)



截图

solarized主题

solarized

molokai主题

molokai



安装步骤

  1. clone到本地,配置到linux个人目录(如果是从linux_config过来的,不需要clone)

     git clone https://github.com/wklken/k-vim.git
    
  2. 安装依赖包

     # ubuntu
     sudo apt-get install ctags
     sudo apt-get install build-essential cmake python-dev  #编译YCM自动补全插件依赖
    
     # centos
     sudo yum install python-devel.x86_64
     sudo yum groupinstall 'Development Tools'
    
     # mac
     #brew install ctags
    
     #使用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
    
     #ubuntu
     sudo apt-get install nodejs
     sudo npm install -g jslint
     sudo npm install jshint -g
    
     #mac
     brew install node
     npm install jshint -g
     npm install jslint -g
    
  3. 安装插件

     cd k-vim/
     #注意原先装过重装时,不要到~/.vim下执行(这是软连接指向k-vim真是目录),必须到k-vim原生目录执行
    
     sh -x install.sh
    
     #会进入安装插件的列表,目前30+个插件,一一安装是从github clone的,完全取决于网速
    
     #安装完插件后,会自动编译YCM,注意,可能编译失败(缺少某些依赖包,暂不支持mac osx 10.9)
     失败的话手动编译吧,看第4步 编译自动补全YouCompleteMe (这步耗时也有点长,但绝对值得)
    
     install.sh
     本质上做的事情
     1.将vimrc/vim文件夹软链接到$HOME,编程系统vim配置
     2.git clone安装vundle(clone到bundle目录下)
     3.通过vundle安装其他所有插件(相当于进入vimrc, 命令行执行:BundleInstall),从github全部搞到本地
     4.编译需要手动编译的插件,eg.YCM
    
  4. 可能遇到的问题:

    • 编译自动补全YouCompleteMe

    文档

    这个插件需要Vim 7.3.584,所以,如果vim版本太低,需要编译安装

    • 相对行号

    vimrc中配置,如果不习惯,可以去掉,相关参考

    • 配置主题

    到vimrc中修改colortheme,可以使用molokai(用惯sublimetext2的童鞋很熟悉)

    默认配置的是solarized dark主题

    想要修改终端配色为solarized可以参考 这里

  5. 安装/卸载/更新插件:

    可以自定义安装某些插件,或者删除对自己无用的插件(插件太多可能导致vim打开过慢)

    安装新插件

     1. vimrc.bundles中配置对应插件 bundle
         Bundle 'fholgado/minibufexpl.vim'
     2. 命令行模式,执行:
         :BundleInstall
    

    更新插件

     命令行模式,执行:
     :BundleUpdate
    

    删除插件

     1. vimrc.bundles中注释或删除对应插件bundle配置行(行首加一个双引号),保存退出即可
         "Bundle 'fholgado/minibufexpl.vim'
    
     物理上删除插件,第一步执行保存退出后,再次进入vim
     2.命令行模式,执行: (会物理上删除插件文件)
         :BundleClean
    
  6. 给mac用户

    可以使用mac vim

    首先,安装最新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'
    

    配置完成

  7. 冲突和问题排查

    插件很多,并且其默认快捷键或者配置可能发生冲突

    当加入新插件发现有冲突或者展现有问题

    请排除法进行排查:注掉所有插件或配置,然后二分法逐一恢复,可以定位到出现问题的插件或配置,修改其配置或键位即可

  8. 旧版本用户

    旧版本用户更新代码后需执行

     1.bash install.sh [多了一个软连接.vimrc.bundles]
       or
       ln -s PATH-TO-k-vim/vimrc.bundles ~/.vimrc.bundles
     2.插件安装和更新 :BundleInstall 和 :BundleUpdate
    


自定义快捷键

1. 可以自己修改vimrc中配置,决定是否开启鼠标

set mouse-=a           " 鼠标暂不启用, 键盘党....
set mouse=a            " 开启鼠标

2. 可以自己修改vimrc决定是否使用方向键进行上下左右移动,默认打开,可以注解
hjkl  上下左右

map <Left> <Nop>
map <Right> <Nop>
map <Up> <Nop>
map <Down> <Nop>

3. 上排F功能键

F1 废弃这个键,防止调出系统帮助
F2 set nu/nonu,行号开关,用于鼠标复制代码用
F3 set list/nolist,显示可打印字符开关
F4 set wrap/nowrap,换行开关
F5 set paste/nopaste,粘贴模式paste_mode开关,用于有格式的代码粘贴
F6 syntax on/off,语法开关,关闭语法可以加快大文件的展示

4. 分屏移动

ctrl + jkhl 进行上下左右窗口跳转,不需要ctrl+w+jkhl

5. 搜索
<space> 空格,进入搜索状态
/       同上
,/      去除匹配高亮
(交换了#/* 号键功能)
#       正向查找光标下的词
*       反向查找光标下的词

6. buffer/tab相关
<- / -> 前后buffer

, + tn  新tab
, + to  tabonly
, + tc  close
, + tm  tab move
, + te  new tab edit

7. 按键修改
Y   =y$   复制到行尾
U   =Ctrl-r
, + sa    select all,全选
, + v     选中段落
kj        代替<Esc>,不用到角落去按esc了
t         新起一行,下面,不进入插入模式
T         新起一行,上面
, + q     :q,退出vim


优化:
1. j/k 对于换行展示移动更友好
2. HL 修改成 ^$, 更方便在同行移动
3. ; 修改成 : ,一键进入命令行模式,不需要按shift
4. 命令行模式 ctrl+a/e 到开始结尾
5. <和> 代码缩进后自动再次选中
6. 对py文件,保存自动去行尾空白,打开自动加行首代码
7. 交换#/*号功能,#号为正向查找,*反向


插件部分

基础

  1. ####插件管理 gmarik/vundle

    必装,用于管理所有插件 命令行模式下管理命令:

     :BundleInstall     install
     :BundleInstall!    update
     :BundleClean       remove plugin not in list
    
  2. ####多语言语法检查 scrooloose/syntastic

    建议安装,静态语法及风格检查,支持多种语言

    修改了下标记一列的背景色,原有的背景色在solarized下太难看了…..

    演示

    syntastic

自动补全

  1. ####代码自动补全 Valloric/YouCompleteMe

    必装,强烈推荐(YCM是我目前用到的最好的自动补全插件)

    需要编译这个插件(见github文档)

    这个需要自己去看官方的配置方式,演示在官方github有

    需要Vim 7.3.584 以上版本(如何编译vim)

    这个插件包含了以下几个插件功能,所以不需要装下面:

     clang_complete
     AutoComplPop
     Supertab
     neocomplcache
     jedi(对python的补全)
    

    快捷键:

     ,gd  跳到声明位置, 仅 filetypes: c, cpp, objc, objcpp, python 有效
    
  2. ####代码片段快速插入 SirVer/ultisnips +honza/vim-snippets

    注意:如果是之前安装的k-vim,更新后发现报错,是ultisnips版本问题 执行:BundleUpdate即可

    必装,效率杀手锏,快速插入自定义的代码片段

    代码片段集合,有缺陷

    自动补全加这个,高效必备, 针对各种语言已经带了一份配置了,可以到安装目录下查看具体,我有针对性补全一份,在snippets目录下,可自行修改

    演示

    ultisnips

  3. ####引号配对补全 Raimondi/delimitMate

    必装,输入引号,括号时,自动补全

    对python的docstring 三引号做了处理(只处理""", '''暂时没配,可以自己加)

    演示

    delimitmate

    附:同类插件 kana/vim-smartinput

  4. ####html/xml标签配对补全 docunext/closetag.vim

快速编码

  1. ####快速注释 scrooloose/nerdcommenter

    必装,另一个大大提升效率的地方,快速批量加减注释

     [d] shift+v+方向键选中(默认当前行)
         ->  ,cc  加上注释
         -> ,cu 解开注释
    

    演示

    nerdcommenter

    附:注释还有其他两种插件可选tcommenttpope/vim-commentary

  2. ####快速编辑 tpope/vim-surround +tpope/vim-repeat

    必装,很给力的功能,快速给词加环绕符号,例如引号

    repeat进行增强,'.'可以重复命令

     [d]
     cs"' [inside]
     "Hello world!" -> 'Hello world!'
     ds"
     "Hello world!" -> Hello world!
     ysiw"
     Hello -> "Hello"
    

    演示

    surround

  3. ####去行尾空格 bronson/vim-trailing-whitespace

    将代码行最后无效的空格标红

     [sd] ,空格    去掉当前行末尾空格
    
  4. ####赋值语句代码对齐 godlygeek/tabular

    将代码,或者json等,进行对齐,具体见 tabular-vim

     [sd]  可以选中多行,不选中默认操作当前行
         ,a= 对齐等号表达式
         ,a: 对齐冒号表达式(json/map等)
    

快速移动

  1. ####位置跳转Lokaltog/vim-easymotion

    必装,效率提升杀手锏,跳转到光标后任意位置

    配置(我的leader键配置 let g:mapleader = ',')

     ,, + w  跳转
     ,, + fe  查找'e',快速跳转定位到某个字符位置
    

    演示

    easy_motion

  2. ####符号匹配跳转vim-scripts/matchit.zip

    选装

    % 匹配成对的标签,跳转

  3. ####mark跳转 kshenoy/vim-signature

快速选中

  1. ####区块伸缩 terryma/vim-expand-region

    视图模式下可伸缩选中部分,用于快速选中某些块

     [sd]
     + 增加选中范围(+/=按键)
     _ 减少选中范围(_/-按键)
    

    演示(直接取链到其github图)

    expand-region

  2. ####多光标选中编辑 vim-multiple-cursors

    多光标批量操作

     [sd]
     ctrl + m 开始选择
     ctrl + p 向上取消
     ctrl + x 跳过
     esc   退出
    

    演示(官方演示图)

    multiple-cursors

文本对象扩展

  1. 自定义文本对象 kana/vim-textobj-user.git

    后面几个扩展对象的依赖

    更多其他扩展,建 wiki

    PS: 特希望有一个扩展支持 '' "" [] {} ()

  2. 行文本对象 kana/vim-textobj-line

    增加文本对象: l

     dal
     yal
     cil
    
  3. 缩进文本对象 kana/vim-textobj-indent.git

    增加文本对象: i

    相同缩进属于同一块,对python很有用

     dai
     yai
     cii
    
  4. 文件文本对象 kana/vim-textobj-entire.git

    增加文本对象: e

     dae
     yae
     cie
    

功能相关

  1. ####搜索 kien/ctrlp.vim

    文件搜索,ack/Command-T需要依赖于外部包,不喜欢有太多依赖的,除非十分强大, 具体 文档

     [sd] ,p  打开ctrlp搜索
     [sd] ,f  相当于mru功能,show recently opened files
    
     ctrl + j/k 进行上下移动
     ctrl + x/v 分屏打开该文件
     ctrl + t   在新tab中打开该文件
    

    演示

    ctrip

    插件: 当前文件快速函数搜索:tacahiroy/ctrlp-funky

    解决问题:使用tagbar当函数比较多的时候,移动耗时较长,使用快速搜索快很多

     ,fu   进入当前文件函数搜索
     ,fU   搜索光标下单词对应函数
    
  2. ####git 常用操作 tpope/vim-fugitive

    git插件, 编辑文件时进行一些diff操作,例如diff

    不是很习惯,所以用的次数太少,目前和现有配置快捷键有冲突,尚未解决

     [sd]
     ,ge   = git diff edit[gd被ycm占用了]
    

    没有配置其他快捷键,可以参照github,自己增加修改映射

  3. ####git状态 airblade/vim-gitgutter

    git,在同一个文件内,通过标记和高亮,显示本次文件变更点

     [sd]
     ,gs   = show diff status [gd被ycm占用了]
    

    gitgutter

  4. ####文件时光机 sjl/gundo.vim

    编辑文件时光机

     [sd] ,h  查看文件编辑历史
    

    附:同类插件 mbbill/undotree

显示增强

  1. ####状态栏增强 bling/vim-airline

    之前使用powerline, 用airline替换, powerline的配置注释,需要的自行解开

    演示

    airline

  2. ####括号上色高亮 kien/rainbow_parentheses.vim

    演示

    rainbow

显示增强-主题

  1. ####altercation/vim-colors-solarized

    经典主题,目前我使用的,看起来舒服

  2. ####tomasr/molokai

    用sublime text2的同学应该很熟悉, 另一个主题,可选,偶尔换换味道

默认值提供solarized和molokai主题,其他主题需自行配置安装

快速导航

  1. ####目录树 scrooloose/nerdtree

    必装,开启目录树导航

     [sd]
         ,n  打开 关闭树形目录结构
    
         在nerdtree窗口常用操作:(小写当前,大写root)
         x.......收起当前目录树
         X.......递归收起当前目录树
         r.......刷新当前目录
         R.......刷新根目录树
    
         p.......跳到当前节点的父节点
         P.......跳到root节点
         k/j.....上下移动
         K.......到同目录第一个节点
         J.......最后一个节点
    
         o.......Open files, directories and bookmarks
         i.......split上下分屏
         s.......vsplit左右分屏
         c.......将当前目录设为根节点
         q.......关闭
    

    演示

    thenerdtree

  2. ####Buffer fholgado/minibufexpl.vim

    必装,buffer管理, 可以查找其他同类插件

     [sd]
         <Tab>  切换buffer
         左右方向键  切换buffer
         ,bn   切到后一个
         ,bp   切到前一个
         ,bd   关闭当前buffer
    
  3. ####Tag majutsushi/tagbar

    必装,标签导航,纬度和taglist不同, taglist的替代者

    注意:之前版本有装taglist,决定用tagbar替代,taglist的配置注解未删除,需要的自行打开

      [sd] <F9> 打开
    

    演示

    tagbar

语言相关- 需要自定义编辑确认是否保留(默认打开)

  1. ####Python

    语法高亮python-syntax

    使用Python建议安装,python语法高亮,就是python.vim,在github,有维护和更新

    语法检查kevinw/pyflakes-vim

    虽然这个的作者推荐使用syntastic,但是这个插件对于pythoner还是很需要的

    因为有一个特牛的功能,fly check,即,编码时在buffer状态就能动态查错标记,弥补syntastic只能保存和打开时检查语法错误的不足

    演示

    pyflakes

  2. ####Golang

    Go语言自动补全Blackrush/vim-gocode

    安装gocode之后 ,配置这个插件

     `which gocode` (add $GOPATH/bin to you $PATH)
    

    另一个插件[觉得太过庞大没有使用,golang开发者可以配置试用下] fatih/vim-go 介绍

  3. ####Markdown

    plasticboy/vim-markdown

    markdown语法,编辑md文件

  4. ####HTML/JS/JQUERY/CSS

    pangloss/vim-javascript 偶尔会看看js,频率不高

    marijnh/tern_for_vim 配合ycm进行js/jquery自动补全,需要安装 tern_for_vim 并 配置文档 ternjs

     cd ~/.vim/bundle/tern_for_vim && npm install
    

    maksimr/vim-jsbeautify js/html/css 格式化, 未配置

    nono/jquery.vim jquery高亮

    elzr/vim-json json高亮,未配置

    kchmck/vim-coffee-script coffeescript,未配置

    groenewege/vim-less less,未配置

    emmet zencoding,未配置

    gorodinskiy/vim-coloresque 配置 | vim-css-color 未配置 css颜色展示

  5. ####Jinja2

    Glench/Vim-Jinja2-Syntax

    jinja2 语法高亮

  6. ####Ruby

    可以参考tpope的插件列表,很多跟ruby相关

    tpope/vim-rails 未配置 tpope/vim-endwise 未配置,自动加end

  7. ####PHP

    spf13/PIV 未配置

    arnaud-lb/vim-php-namespace 未配置

  8. ####非语言语法高亮

    evanmiller/nginx-vim-syntax 未配置

其他

  1. ####平滑滚动

    yonchu/accelerated-smooth-scroll 未配置

    terryma/vim-smooth-scroll 未配置

  2. ####多人协作,结对编程

    FredKSchott/CoVim 未配置

  3. ####单行多行变换

    AndrewRadev/splitjoin.vim 未配置

  4. ####TODO关键字列表

    vim-scripts/TaskList.vim 未配置

  5. ####substitute替换增强

    tpope/vim-abolish.vim 未配置

  6. ####剪贴板复用增强

    vim-scripts/YankRing.vim 未配置

  7. ####写作模式

    junegunn/goyo.vim 未配置



Update Log

2013-06-11 创建:

vim配置

2014-03-15更新:

1.更全的注释
2.更合理文件结构和配置布局
3.分离插件配置到vimrc.bundles
4.更强大的代码补全
5.去掉一些无用信息

2014-05-07/08更新:

1.增加文本对象扩展
2.去除taglist
3.增加 ctrlp插件 ctrlp-funky用于快速函数搜索跳转
4.切换powerline为airline

TODO:

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

  1. vimrc文件布局vimrc+vimrc.bundles配置方式参考 maximum-awesome

  2. install.sh 参考spf13-vimbootstrap.sh spf13-vim

  3. 插件管理使用Vundle

  4. 自动补全 YCM

Resources

  1. vim资源汇总

  2. VimAwesome

  3. Google+

  4. vimbits

  5. Learning vim the hard way

  6. Seven habits of effective text editing

  7. openvim tutorial

  8. vim genius



The End!

wklken (凌岳/pythoner/vim党预备党员)

Email: [email protected]

Github: https://github.com/wklken

Blog: http://www.wklken.me

2013-06-11 于深圳

k-vim's People

Contributors

brain-zhang avatar fangwentong avatar maogm12 avatar spacewander avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.