作为多年的linuxvim粉, 我好像正在被分享所融化, 曾经我的.vim文件夹中杂乱不堪, 开始接触vundle时, 我的内心是拒绝的, 我很辛苦才将you-complete-me 配置成功, 不想因为一个包管理而将辛苦配置的插件丢失, 但是linux的吸引之处绝不是混乱不堪, 而是清晰, 有条理. 我花了一上午的时间将我的.vim目录配套了vundle包管理, 这真是一个性感的工具, 基本上一条命令基本就可以将vim配置完成.

GITHUB

详细配置请查看 corvofeng/MyVimConfig

.vim目录结构

1
2
3
4
5
6
7
8
9
.
├── bundle/ # 插件存放文件夹
├── UltiSnips/ # 我的snip存放文件夹
├── vrapperrc # .vrapperrc eclipse vrapperrc插件配置
├── vimrc # .vimrc
├── gvimrc # .gvimrc
├── ycm_extra_conf.py # YCM 配置文件
└── vundlerc # Bundle插件存放
2 directories, 5 files

usage

建议将特定文件软链接到家目录, 这样修改一个文件的同时会进行同步

1.首先添加.vimrc等文件

1
2
3
ln -s ~/.vimrc ~/.vim/vimrc
ln -s ~/.gvimrc ~/.vim/gvimrc
ln -s ~/.vrapperrc ~/.vim/vrapperrc

2.打开vim, 进入命令模式, 输入BundleInstall即可完成自动安装, 默认读者有过基本vim操作技能

vundlerc

详见vundlerc文件, 其中不免有些混乱, 望大家谅解, 许多插件我也只是安装, 还没有能深入使用

vimrc

vimrc中许多行都有注释, 我只挑DIY的重点来贴, 希望大家有所收获, 也能自定义出自己的配置, 适合自己的才是最好的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
source ~/.vim/vundlerc          "vim 第一行, 读入vundlerc

" 普通文件缩进4个字符
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab

au Filetype c,cpp setl sw=8 sts=8 ts=8 et "C, C++: 缩进8个字符

set hlsearch "高亮搜索
set incsearch "输入字符串就开始搜索

" 高亮搜索后关闭高亮, 困扰了我许久的问题,
" 高亮的搜索没法关闭真是太痛苦了
map<F2> : noh <CR>

" 使用xterm运行, 可以直接弹出框, 按ESC或Enter退出xterm
" 许多快捷键操作都是调用此函数
function! Xterm(cmd)
silent exec "!xterm -e '". a:cmd ." ; read" ."'"
endfunction

" C C++ sh java的编译和运行 使用Shift+F10 此处调用Xterm
map <S-F10> :call CompileAndRun()<CR>
func! CompileAndRun()
exec "w"
if &filetype == 'c' "C and C++
call Xterm("gcc -g % -o %< && ./%<")
elseif &filetype == 'cpp'
call Xterm("g++ -g % -o %< && ./%<")
elseif &filetype == 'sh' "Shell Script
call Xterm("chmod u+x % && ./%")
elseif &filetype == 'java' "Java Source
call Xterm("javac % && java %<")
elseif &filetype == 'md' "For MarkDown
call Xterm("nemo .")
elseif &filetype == 'asm' "For asm
call Xterm("nasm % -o %<.bin")
elseif &filetype == 'python' "For Python(python3)
call Xterm("python %")
endif
endfunc

" 自定义的snip中可以插入变量, 可以自行修改用户与项目名称
let g:snips_author = "corvo"
let g:snips_projectname = "default"

" UltiSnips与YCM快捷键有冲突, 改为Ctrl+j补全snippets
let g:UltiSnipsExpandTrigger='<c-j>'
let g:UltiSnipsJumpForwardTrigger='<c-k>'
let g:UltiSnipsJumpBackwardTrigger='<c-s-k>'
let g:UltiSnipsSnippetsDir='~/.vim/UltiSnips'

"Tablur 强大的对齐工具
let mapleader=','
if exists(":Tabularize")
nmap <Leader>a= :Tabularize /=<CR>
vmap <Leader>a= :Tabularize /=<CR>
nmap <Leader>a: :Tabularize /:\zs<CR>
vmap <Leader>a: :Tabularize /:\zs<CR>
endif

gvimrc

我的gvim配置, 定义了其它一些配置, 有许多已经有注释了, 就不贴了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
set foldenable          "在gvim中可以进行折叠
set foldmethod=syntax

set lines=35 columns=90 "设置打开时窗口的大小

" 把`gvim`窗口周围都去掉的感觉很爽的, 如果开始使用不熟悉,
" 将滚动条和工具条加回来就好
" 禁止显示滚动条
set guioptions-=l
set guioptions-=L
set guioptions-=r
set guioptions-=R

" 禁止显示菜单和工具条
set guioptions-=m
set guioptions-=T

Vim In Windows

因为自己总是在Linux上行动, 所以可能对Windows的支持有待完善, 我暂时先存了一份 Windows下的一套软件

VIM 8.0下载 _vimrc

安装拷贝配置文件即可使用

Don Not Give Up

  • 当我还是linux初学者的时候, vim的学习是艰苦的. 也许手指不离开键盘是一件挺炫的事情, 但是开始实在是很难适应, 我的学习方法是:

  • 当你知道hjkl的用法之后就开始玩游戏, 我的游戏是在chrome上找到的2048, 同时搭配Vimium, 逼迫自己使用hjkl进行操作, 我大概练习了一个小时, vim的移动就学习的差不多了. *

  • 开始入门时, 效率不高是很正常. 不过用的多了之后, 效率真的是别的编辑器无法比拟的. 并不是说vim是神, 现在的许多IDE都提供了vim的插件, 比如JetBrainsEclipse的插件就很好, 几乎可以无缝对接. 当你真正把vim用熟之后, 在不同的开发环境下也能拥有极高的效率, 我几乎不知道JetBrainsEclipse的快捷键, 但是可以不用鼠标去调整光标

许多软件的原则是好用, 而不是易用, 如果你想更高效率的工作, 花点时间在编辑器的配置上总不是件坏事.

LICENSE:

Copyright © 2016 corvo. 未经许可不得用于商业用途. 转载请注明出处.