[vim]Vim 配置

转自:http://www.cnblogs.com/witcxc/archive/2011/12/28/2304704.html

vim通过一个叫vimrc的文件来进行设置 
默认安装的vim-tiny的设置文件可以在/usr/share/vim中找到,果然极其简洁 

若你的home目录下没有.vimrc文件,你可以:

cp /usr/share/vim/vimXX/vimrc_example.vim ~/.vimrc

其中xx为版本号
这里我们需要重新定制一个 

vimrc的存放位置: 
系统 vimrc 文件: "$VIM/vimrc" 
用户 vimrc 文件: "$HOME/.vimrc" 
用户 exrc 文件: "$HOME/.exrc" 
系统 gvimrc 文件: "$VIM/gvimrc" 
用户 gvimrc 文件: "$HOME/.gvimrc" 
系统菜单文件: "$VIMRUNTIME/menu.vim" 
$VIM 预设值: "/usr/share/vim"

下面是网上比较流行的一个版本,可以直接拿来用 
在用戶主目录下建一个文件.vimrc(这是一个隐藏文件),把下面的内容拷贝到这个文件中 
再用vim打开程序,就能看到语法高亮以及其他诸多功能 
当然完全可以再在上面进行删改,添加代码折叠啊或是增加一些windows的文件保存快捷方式什么的 
不想麻烦的,下面的直接拿来用就OK了 

.vimrc
  1 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  2 " 一般设定 
  3 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  4 " 设定默认解码 
  5 set fenc=utf-8 
  6 set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936 
  7 
  8 " 不要使用vi的键盘模式,而是vim自己的 
  9 set nocompatible 
 10 
 11 " history文件中需要记录的行数 
 12 set history=100 
 13 
 14 " 在处理未保存或只读文件的时候,弹出确认 
 15 set confirm 
 16 
 17 " 与windows共享剪贴板 
 18 set clipboard+=unnamed 
 19 
 20 " 侦测文件类型 
 21 filetype on 
 22 
 23 " 载入文件类型插件 
 24 filetype plugin on 
 25 
 26 " 为特定文件类型载入相关缩进文件 
 27 filetype indent on 
 28 
 29 " 保存全局变量 
 30 set viminfo+=! 
 31 
 32 " 带有如下符号的单词不要被换行分割 
 33 set iskeyword+=_,$,@,%,#,- 
 34 
 35 " 语法高亮 
 36 syntax on 
 37 
 38 " 高亮字符,让其不受100列限制 
 39 :highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white 
 40 :match OverLength '\%101v.*' 
 41 
 42 " 状态行颜色 
 43 highlight StatusLine guifg=SlateBlue guibg=Yellow 
 44 highlight StatusLineNC guifg=Gray guibg=White 
 45 
 46 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
 47 " 文件设置 
 48 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
 49 " 不要备份文件(根据自己需要取舍) 
 50 set nobackup 
 51 
 52 " 不要生成swap文件,当buffer被丢弃的时候隐藏它 
 53 setlocal noswapfile 
 54 set bufhidden=hide 
 55 
 56 " 字符间插入的像素行数目 
 57 set linespace=0 
 58 
 59 " 增强模式中的命令行自动完成操作 
 60 set wildmenu 
 61 
 62 " 在状态行上显示光标所在位置的行号和列号 
 63 set ruler 
 64 set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%) 
 65 
 66 " 命令行(在状态行下)的高度,默认为1,这里是2 
 67 set cmdheight=2 
 68 
 69 " 使回格键(backspace)正常处理indent, eol, start等 
 70 set backspace=2 
 71 
 72 " 允许backspace和光标键跨越行边界 
 73 set whichwrap+=<,>,h,l 
 74 
 75 " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) 
 76 set mouse=a 
 77 set selection=exclusive 
 78 set selectmode=mouse,key 
 79 
 80 " 启动的时候不显示那个援助索马里儿童的提示 
 81 set shortmess=atI 
 82 
 83 " 通过使用: commands命令,告诉我们文件的哪一行被改变过 
 84 set report=0 
 85 
 86 " 不让vim发出讨厌的滴滴声 
 87 set noerrorbells 
 88 
 89 " 在被分割的窗口间显示空白,便于阅读 
 90 set fillchars=vert:\ ,stl:\ ,stlnc:\ 
 91 
 92 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
 93 " 搜索和匹配 
 94 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
 95 " 高亮显示匹配的括号 
 96 set showmatch 
 97 
 98 " 匹配括号高亮的时间(单位是十分之一秒) 
 99 set matchtime=5 
100 
101 " 在搜索的时候忽略大小写 
102 set ignorecase 
103 
104 " 不要高亮被搜索的句子(phrases) 
105 set nohlsearch 
106 
107 " 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索) 
108 set incsearch 
109 
110 " 输入:set list命令是应该显示些啥? 
111 set listchars=tab:\|\ ,trail:.,extends:>,precedes:<,eol:$ 
112 
113 " 光标移动到buffer的顶部和底部时保持3行距离 
114 set scrolloff=3 
115 
116 " 不要闪烁 
117 set novisualbell 
118 
119 " 我的状态行显示的内容(包括文件类型和解码) 
120 set statusline=%F%m%r%h%w\[POS=%l,%v][%p%%]\%{strftime(\"%d/%m/%y\ -\ %H:%M\")} 
121 
122 " 总是显示状态行 
123 set laststatus=2 
124 
125 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
126 " 文本格式和排版 
127 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
128 " 自动格式化 
129 set formatoptions=tcrqn 
130 
131 " 继承前一行的缩进方式,特别适用于多行注释 
132 set autoindent 
133 
134 " 为C程序提供自动缩进 
135 set smartindent 
136 
137 " 使用C样式的缩进 
138 set cindent 
139 
140 " 制表符为4 
141 set tabstop=4 
142 
143 " 统一缩进为4 
144 set softtabstop=4 
145 set shiftwidth=4 
146 
147 " 不要用空格代替制表符 
148 set noexpandtab 
149 
150 " 不要换行 
151 set nowrap 
152 
153 " 在行和段开始处使用制表符 
154 set smarttab 
155 
156 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
157 " CTags的设定 
158 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
159 " 按照名称排序 
160 let Tlist_Sort_Type = "name" 
161 
162 " 在右侧显示窗口 
163 let Tlist_Use_Right_Window = 1 
164 
165 " 压缩方式 
166 let Tlist_Compart_Format = 1 
167 
168 " 如果只有一个buffer,kill窗口也kill掉buffer 
169 let Tlist_Exist_OnlyWindow = 1 
170 
171 " 不要关闭其他文件的tags 
172 let Tlist_File_Fold_Auto_Close = 0 
173 
174 " 不要显示折叠树 
175 let Tlist_Enable_Fold_Column = 0 
176 
177 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
178 " Autocommands 
179 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
180 " 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示 
181 
182 if has("autocmd") 
183 autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number 
184 autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o--> 
185 autocmd FileType java,c,cpp,cs vmap <C-o> <ESC>'<o 
186 autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100 
187 autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim 
188 autocmd BufReadPost * 
189 \ if line("'\"") > 0 && line("'\"") <= line("$") | 
190 \ exe " normal g`\"" | 
191 \ endif 
192 endif "has("autocmd") 
193 
194 " F5编译和运行C程序,F6编译和运行C++程序 
195 " 请注意,下述代码在windows下使用会报错 
196 " 需要去掉./这两个字符 
197 
198 " C的编译和运行 
199 map <F5> :call CompileRunGcc()<CR> 
200 func! CompileRunGcc() 
201 exec "w" 
202 exec "!gcc % -o %<" 
203 exec "! ./%<" 
204 endfunc 
205 
206 " C++的编译和运行 
207 map <F6> :call CompileRunGpp()<CR> 
208 func! CompileRunGpp() 
209 exec "w" 
210 exec "!g++ % -o %<" 
211 exec "! ./%<" 
212 endfunc 
213 
214 " 能够漂亮地显示.NFO文件 
215 set encoding=utf-8 
216 function! SetFileEncodings(encodings) 
217 let b:myfileencodingsbak=&fileencodings 
218 let &fileencodings=a:encodings 
219 endfunction 
220 function! RestoreFileEncodings() 
221 let &fileencodings=b:myfileencodingsbak 
222 unlet b:myfileencodingsbak 
223 endfunction 
224 
225 au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single au BufReadPost *.nfo call RestoreFileEncodings() 
226 
227 " 高亮显示普通txt文件(需要txt.vim脚本) 
228 au BufRead,BufNewFile * setfiletype txt 
229 
230 " 用空格键来开关折叠 
231 set foldenable 
232 set foldmethod=manual 
233 nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc':'zo')<CR> 
234 
235 " minibufexpl插件的一般设置 
236 let g:miniBufExplMapWindowNavVim = 1 
237 let g:miniBufExplMapWindowNavArrows = 1 
238 let g:miniBufExplMapCTabSwitchBufs = 1 
239 let g:miniBufExplModSelTarget = 1

 另外:

如果要让你的vim配置(~/.vimrc立即生效),你需要在vim中输入:

:so ~/.vimrc 或:source ~/.vimrc

参照:http://vim.wikia.com/wiki/Change_vimrc_with_auto_reload

可以让vimrc在每次保存时立即生效的方法,在.vimrc中添加下行:

autocmd! BufWritePost .vimrc source %

关于autocmd可以参考: http://yangbo.name/wp_page/vi/autocmd.html

另外2:
在插入模式下,你如果误操作使用ctrl+u删除光标所在行或ctrl+w光标前的一个单词,当你退出到一般模式时,是无法使用u来恢复删除的。
这需要添加如下两行:

inoremap <c-u> <c-g>u<c-u> inoremap <c-w> <c-g>u<c-w>

注:前面的一行已经默认在vim的配置中了(vimrc_example.vim)参照:http://vim.wikia.com/wiki/Recover_from_accidental_Ctrl-U

 

---------------------------------------------------------------------

我的vim配置:

 

posted on 2013-01-07 14:49  Lo0ong  阅读(3367)  评论(0编辑  收藏  举报

导航