花了很长时间整理的,感觉用起来很方便,共享一下。

我的vim配置主要有以下优点:

1.按F5可以直接编译并执行C、C++、java代码以及执行shell脚本,按“F8”可进行C、C++代码的调试

2.自动插入文件头 ,新建C、C++源文件时自动插入表头:包括文件名、作者、联系方式、建立时间等,读者可根据需求自行更改

3.映射“Ctrl + A”为全选并复制快捷键,方便复制代码

4.按“F2”可以直接消除代码中的空行

5.“F3”可列出当前目录文件,打开树状文件目录

6. 支持鼠标选择、方向键移动

7. 代码高亮,自动缩进,显示行号,显示状态行

8.按“Ctrl + P”可自动补全

9.[]、{}、()、""、' '等都自动补全

10.其他功能读者可以研究以下文件

vim本来就是很强大,很方便的编辑器,加上我的代码后肯定会如虎添翼,或许读者使用其他编程语言,可以根据自己的需要进行修改,配置文件里面已经加上注释。

读者感兴趣的话直接复制下面的代码到文本文件,然后把文件改名为“ .vimrc” (不要忘记前面的“.”),然后把文件放到用户文件夹的根目录下面即可。重新打开vim即可看到效果。

为方便管理,源码托管到了github,后期增加了好多新功能,

具体详见:https://github.com/ma6174/vim

这是在github上的vim配置的截图:

下面是精简的,没有插件的vim配置文件,保存到自己的.vimrc文件就能使用。

  1.  
  2. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  3. " 显示相关  
  4. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  5. "set shortmess=atI   " 启动的时候不显示那个援助乌干达儿童的提示  
  6. "winpos 5 5          " 设定窗口位置  
  7. "set lines=40 columns=155    " 设定窗口大小  
  8. "set nu              " 显示行号  
  9. set go=             " 不要图形按钮  
  10. "color asmanian2     " 设置背景主题  
  11. set guifont=Courier_New:h10:cANSI   " 设置字体  
  12. "syntax on           " 语法高亮  
  13. autocmd InsertLeave * se nocul  " 用浅色高亮当前行  
  14. autocmd InsertEnter * se cul    " 用浅色高亮当前行  
  15. "set ruler           " 显示标尺  
  16. set showcmd         " 输入的命令显示出来,看的清楚些  
  17. "set cmdheight=1     " 命令行(在状态行下)的高度,设置为1  
  18. "set whichwrap+=<,>,h,l   " 允许backspace和光标键跨越行边界(不建议)  
  19. "set scrolloff=3     " 光标移动到buffer的顶部和底部时保持3行距离  
  20. set novisualbell    " 不要闪烁(不明白)  
  21. set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}   "状态行显示的内容  
  22. set laststatus=    " 启动显示状态行(1),总是显示状态行(2)  
  23. set foldenable      " 允许折叠  
  24. set foldmethod=manual   " 手动折叠  
  25. "set background=dark "背景使用黑色 
  26. set nocompatible  "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限  
  27. " 显示中文帮助
  28. if version >= 
  29.     set helplang=cn
  30.     set encoding=utf-
  31. endif
  32. " 设置配色方案
  33. "colorscheme murphy
  34. "字体 
  35. "if (has("gui_running")) 
  36. "   set guifont=BitstreamVeraSansMono10 
  37. "endif 
  38.  
  39.  
  40. set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
  41. set termencoding=utf-8
  42. set encoding=utf-8
  43. set fileencodings=ucs-bom,utf-8,cp936
  44. set fileencoding=utf-8
  45. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  46. """""新文件标题""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  47. "新建.c,.h,.sh,.java文件,自动插入文件头 
  48. autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
  49. ""定义函数SetTitle,自动插入文件头 
  50. func SetTitle() 
  51.     "如果文件类型为.sh文件 
  52.     if &filetype == 'sh' 
  53.         call setline(,"\#########################################################################") 
  54.         call append(line("."), "\# File Name: ".expand("%")) 
  55.         call append(line(".")+, "\# Author: ma6174") 
  56.         call append(line(".")+, "\# mail: ma6174@163.com") 
  57.         call append(line(".")+, "\# Created Time: ".strftime("%c")) 
  58.         call append(line(".")+, "\#########################################################################") 
  59.         call append(line(".")+, "\#!/bin/bash") 
  60.         call append(line(".")+, "") 
  61.     else 
  62.         call setline(, "/*************************************************************************") 
  63.         call append(line("."), "    > File Name: ".expand("%")) 
  64.         call append(line(".")+, "    > Author: ma6174") 
  65.         call append(line(".")+, "    > Mail: ma6174@163.com ") 
  66.         call append(line(".")+, "    > Created Time: ".strftime("%c")) 
  67.         call append(line(".")+, " ************************************************************************/") 
  68.         call append(line(".")+, "")
  69.     endif
  70.     if &filetype == 'cpp'
  71.         call append(line(".")+, "#include<iostream>")
  72.         call append(line(".")+, "using namespace std;")
  73.         call append(line(".")+, "")
  74.     endif
  75.     if &filetype == 'c'
  76.         call append(line(".")+, "#include<stdio.h>")
  77.         call append(line(".")+, "")
  78.     endif
  79.     "新建文件后,自动定位到文件末尾
  80.     autocmd BufNewFile * normal G
  81. endfunc 
  82. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  83. "键盘命令
  84. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  85.  
  86. nmap <leader>:w!<cr>
  87. nmap <leader>:find<cr>
  88.  
  89. " 映射全选+复制 ctrl+a
  90. map <C-A> ggVGY
  91. map! <C-A> <Esc>ggVGY
  92. map <F12> gg=G
  93. " 选中状态下 Ctrl+复制
  94. vmap <C-c> "+y
  95. "去空行  
  96. nnoremap <F2> :g/^\s*$/d<CR> 
  97. "比较文件  
  98. nnoremap <C-F2> :vert diffsplit 
  99. "新建标签  
  100. map <M-F2> :tabnew<CR>  
  101. "列出当前目录文件  
  102. map <F3> :tabnew .<CR>  
  103. "打开树状文件目录  
  104. map <C-F3> \be  
  105. "C,C++ 按F5编译运行
  106. map <F5> :call CompileRunGcc()<CR>
  107. func! CompileRunGcc()
  108.     exec "w"
  109.     if &filetype == 'c'
  110.         exec "!g++ % -%<"
  111.         exec "! ./%<"
  112.     elseif &filetype == 'cpp'
  113.         exec "!g++ % -%<"
  114.         exec "! ./%<"
  115.     elseif &filetype == 'java' 
  116.         exec "!javac %
  117.         exec "!java %<"
  118.     elseif &filetype == 'sh'
  119.         :!./%
  120.     endif
  121. endfunc
  122. "C,C++的调试
  123. map <F8> :call Rungdb()<CR>
  124. func! Rungdb()
  125.     exec "w"
  126.     exec "!g++ % -g -o %<"
  127.     exec "!gdb ./%<"
  128. endfunc
  129. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  130. ""实用设置
  131. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  132. " 设置当文件被改动时自动载入
  133. set autoread
  134. " quickfix模式
  135. autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
  136. "代码补全 
  137. set completeopt=preview,menu 
  138. "允许插件  
  139. filetype plugin on
  140. "共享剪贴板  
  141. set clipboard+=unnamed 
  142. "从不备份  
  143. set nobackup
  144. "make 运行
  145. :set makeprg=g++-Wall\ \ %
  146. "自动保存
  147. set autowrite
  148. set ruler                   " 打开状态栏标尺
  149. set cursorline              " 突出显示当前行
  150. set magic                   " 设置魔术
  151. set guioptions-=T           " 隐藏工具栏
  152. set guioptions-=m           " 隐藏菜单栏
  153. "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
  154. " 设置在状态行显示的信息
  155. set foldcolumn=
  156. set foldmethod=indent 
  157. set foldlevel= 
  158. set foldenable              " 开始折叠
  159. " 不要使用vi的键盘模式,而是vim自己的
  160. set nocompatible
  161. " 语法高亮
  162. set syntax=on
  163. " 去掉输入错误的提示声音
  164. set noeb
  165. " 在处理未保存或只读文件的时候,弹出确认
  166. set confirm
  167. " 自动缩进
  168. set autoindent
  169. set cindent
  170. " Tab键的宽度
  171. set tabstop=
  172. " 统一缩进为4
  173. set softtabstop=
  174. set shiftwidth=
  175. " 不要用空格代替制表符
  176. set noexpandtab
  177. " 在行和段开始处使用制表符
  178. set smarttab
  179. " 显示行号
  180. set number
  181. " 历史记录数
  182. set history=
  183. "禁止生成临时文件
  184. set nobackup
  185. set noswapfile
  186. "搜索忽略大小写
  187. set ignorecase
  188. "搜索逐字符高亮
  189. set hlsearch
  190. set incsearch
  191. "行内替换
  192. set gdefault
  193. "编码设置
  194. set enc=utf-
  195. set fencs=utf-,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
  196. "语言设置
  197. set langmenu=zh_CN.UTF-
  198. set helplang=cn
  199. " 我的状态行显示的内容(包括文件类型和解码)
  200. "set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}][TYPE=%Y][POS=%l,%v][%p%%]%{strftime(\"%d/%m/%y\ -%H:%M\")}
  201. "set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
  202. " 总是显示状态行
  203. set laststatus=
  204. " 命令行(在状态行下)的高度,默认为1,这里是2
  205. set cmdheight=
  206. " 侦测文件类型
  207. filetype on
  208. " 载入文件类型插件
  209. filetype plugin on
  210. " 为特定文件类型载入相关缩进文件
  211. filetype indent on
  212. " 保存全局变量
  213. set viminfo+=!
  214. " 带有如下符号的单词不要被换行分割
  215. set iskeyword+=_,$,@,%,#,-
  216. " 字符间插入的像素行数目
  217. set linespace=
  218. " 增强模式中的命令行自动完成操作
  219. set wildmenu
  220. " 使回格键(backspace)正常处理indent, eol, start等
  221. set backspace=
  222. " 允许backspace和光标键跨越行边界
  223. set whichwrap+=<,>,h,l
  224. " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
  225. set mouse=a
  226. set selection=exclusive
  227. set selectmode=mouse,key
  228. " 通过使用: commands命令,告诉我们文件的哪一行被改变过
  229. set report=
  230. " 在被分割的窗口间显示空白,便于阅读
  231. set fillchars=vert:\ ,stl:\ ,stlnc:\
  232. " 高亮显示匹配的括号
  233. set showmatch
  234. " 匹配括号高亮的时间(单位是十分之一秒)
  235. set matchtime=
  236. " 光标移动到buffer的顶部和底部时保持3行距离
  237. set scrolloff=
  238. " 为C程序提供自动缩进
  239. set smartindent
  240. " 高亮显示普通txt文件(需要txt.vim脚本)
  241. au BufRead,BufNewFile *  setfiletype txt
  242. "自动补全
  243. :inoremap ( ()<ESC>i
  244. :inoremap ) <c-r>=ClosePair(')')<CR>
  245. :inoremap { {<CR>}<ESC>O
  246. :inoremap } <c-r>=ClosePair('}')<CR>
  247. :inoremap [ []<ESC>i
  248. :inoremap ] <c-r>=ClosePair(']')<CR>
  249. :inoremap " ""<ESC>i
  250. :inoremap ' ''<ESC>i
  251. function! ClosePair(char)
  252.     if getline('.')[col('.') - ] == a:char
  253.         return "\<Right>"
  254.     else
  255.         return a:char
  256.     endif
  257. endfunction
  258. filetype plugin indent on 
  259. "打开文件类型检测, 加了这句才可以用智能补全
  260. set completeopt=longest,menu
  261. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  262. " CTags的设定  
  263. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  264. let Tlist_Sort_Type = "name"    " 按照名称排序  
  265. let Tlist_Use_Right_Window =   " 在右侧显示窗口  
  266. let Tlist_Compart_Format =     " 压缩方式  
  267. let Tlist_Exist_OnlyWindow =   " 如果只有一个buffer,kill窗口也kill掉buffer  
  268. let Tlist_File_Fold_Auto_Close =   " 不要关闭其他文件的tags  
  269. let Tlist_Enable_Fold_Column =     " 不要显示折叠树  
  270. autocmd FileType java set tags+=D:\tools\java\tags  
  271. "autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags  
  272. "let Tlist_Show_One_File=1            "不同时显示多个文件的tag,只显示当前文件的
  273. "设置tags  
  274. set tags=tags  
  275. "set autochdir 
  276.  
  277. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  278. "其他东东
  279. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  280. "默认打开Taglist 
  281. let Tlist_Auto_Open= 
  282. """""""""""""""""""""""""""""" 
  283. " Tag list (ctags) 
  284. """""""""""""""""""""""""""""""" 
  285. let Tlist_Ctags_Cmd = '/usr/bin/ctags
  286. let Tlist_Show_One_File =  "不同时显示多个文件的tag,只显示当前文件的 
  287. let Tlist_Exit_OnlyWindow =  "如果taglist窗口是最后一个窗口,则退出vim 
  288. let Tlist_Use_Right_Window =  "在右侧窗口中显示taglist窗口
  289. " minibufexpl插件的一般设置
  290. let g:miniBufExplMapWindowNavVim = 
  291. let g:miniBufExplMapWindowNavArrows = 
  292. let g:miniBufExplMapCTabSwitchBufs = 
  293. let g:miniBufExplModSelTarget =    

为了方便大家下载使用,我把它放到我的空间里了,两个命令就可以瞬间得到.vimrc文件

wget  http://files.cnblogs.com/ma6174/vimrc.zip

unzip  -f  vimrc.zip  -d  ~/


博主ma6174对本博客文章(除转载的)享有版权,未经许可不得用于商业用途。转载请注明出处http://www.cnblogs.com/ma6174/

对文章有啥看法或建议,可以评论或发电子邮件到ma6174@163.com


强大的vim配置文件,让编程更随意 (转载)的更多相关文章

  1. 强大的vim配置文件,让编程更随意(转)

    欢迎来到小码哥的博客 博客搬家啦 blog.ma6174.com 强大的vim配置文件,让编程更随意 花了很长时间整理的,感觉用起来很方便,共享一下. 我的vim配置主要有以下优点: 1.按F5可以直 ...

  2. 【转】强大的vim配置文件,让编程更随意

    原文地址:http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html 花了很长时间整理的,感觉用起来很方便,共享一下. 我的vim配置主 ...

  3. [转]强大的vim配置文件,让编程更随意

    转自:http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html 花了很长时间整理的,感觉用起来很方便,共享一下. 我的vim配置主要有 ...

  4. 强大的vim配置文件,让编程更随意

    花了很长时间整理的,感觉用起来很方便,共享一下. 我的vim配置主要有以下优点: 1.按F5可以直接编译并执行C.C++.java代码以及执行shell脚本,按“F8”可进行C.C++代码的调试 2. ...

  5. 一套强大的vim配置文件+详细注释

    phpchina折腾王独家配置,灰常牛叉的一套vim配置,另附有详细注释,自己折腾vim的时候可以参照其中的大部分设置进行一些个性化定制."是否兼容VI,compatible为兼容,noco ...

  6. 好强大的vim配置文件

    原文链接 http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html

  7. 关于网上“强大的vim”矫正!!

    参考链接在这里: 强大的vim配置文件,让编程更随意 - ma6174 - 博客园, http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393. ...

  8. cVim—Chrome上更强大的vim插件

    cVim——Chrome上更强大的vim插件 介绍 也许很多人在chrome上都用过类似Vimium, ViChrome的插件,这些插件的目的都差不多,就是在浏览器中提供一些类似vim的操作来提高效率 ...

  9. 自定义vim配置文件vimrc,用于c/c++编程

    vim作为Linux下广受赞誉的代码编辑器,其独特的纯命令行操作模式可以很大程度上方便编程工作,通过自定义vim配置文件可以实现对vim功能的个性化设置. vim配置文件一般有两份,属于root的/e ...

随机推荐

  1. SPOJ104 Highways 【矩阵树定理】

    SPOJ104 Highways Description In some countries building highways takes a lot of time- Maybe that's b ...

  2. MySQL-Proxy 读写分离、同步延时问题解决方案

    MySQL-Proxy 读写分离.同步延时问题解决方案 使用MySQL将读写请求转接到主从Server. 一 安装MySQL Proxy MySQL Proxy的二进制版非常方便,下载解压缩后即用. ...

  3. PHP实现的多文件上传类及用法示例

    这篇文章主要介绍了PHP实现的多文件上传类及用法,详细分析了php实现的多文件上传类与具体的使用技巧,需要的朋友可以参考下 1.upFiles.css.php 文件 <?php class Up ...

  4. JS脚本不能运行

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/moqiang02/article/details/25898295 这段时间在做前端的动态页面,出了 ...

  5. Oracle数据库安装图文操作步骤1

    Oracle数据库安装图文操作步骤 一.Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可. 路径名称中,最好不要出现中文,也不要出现空格等不规则字符.   官 ...

  6. c# winform委托的使用

    可参考http://bbs.csdn.net/topics/390377875中使用new Action<>的使用方式,替代delegate的申明. public delegate voi ...

  7. Android 使用adb查看和修改电池信息

    1.获取电池信息 $ adb shell dumpsys battery $ adb shell dumpsys battery Current Battery Service state: AC p ...

  8. .NET的URL重写

    [概述] URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程.重写URL是非常有用的一个功能,因为它可以让你提高搜索引擎阅读和索引你的网站的能力:而且在你改变了 ...

  9. vptr, vtable, virtual base class table

    #include <iostream> using namespace std; class X { int x, y, z; }; class Y: public virtual X { ...

  10. Oracle ASM操作管理

    查看ASM磁盘情况 SQL> select group_number,disk_number,mount_status,header_status,mode_status,state,failg ...