6. 支持鼠标选择、方向键移动
7. 代码高亮,自动缩进,显示行号,显示状态行
读者感兴趣的话直接复制下面的代码到文本文件,然后把文件改名为“ .vimrc” (不要忘记前面的“.”),然后把文件放到用户文件夹的根目录下面即可。重新打开vim即可看到效果。
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
显示相关
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
setshortmess=atI
"启动的时候不显示那个援助乌干达儿童的提示
"
winpos55
"设定窗口位置
"
setlines=40columns=155
"设定窗口大小
"
setnu
"显示行号
setgo=
"
不要图形按钮
"
colorasmanian2
"设置背景主题
setguifont=Courier_New:h10:cANSI
"
设置字体
"
syntaxon
"语法高亮
autocmdInsertLeave*senocul
"
用浅色高亮当前行
autocmdInsertEnter*secul
"
用浅色高亮当前行
"
setruler
"显示标尺
setshowcmd
"
输入的命令显示出来,看的清楚些
"
setcmdheight=1
"命令行(在状态行下)的高度,设置为1
"
setwhichwrap+=<,>,h,l
"允许backspace和光标键跨越行边界(不建议)
"
setscrolloff=3
"光标移动到buffer的顶部和底部时保持3行距离
setnovisualbell
"
不要闪烁(不明白)
setstatusline=%F%m%r%h%w\[FORMAT=%{&ff}]\[TYPE=%Y]\[POS=%l,%v][%p%%]\%{strftime(\
"
%d/%m/%y\-\%H:%M\")}
"状态行显示的内容
setlaststatus=
1
"
启动显示状态行(1),总是显示状态行(2)
setfoldenable
"
允许折叠
setfoldmethod=manual
"
手动折叠
"
setbackground=dark
"背景使用黑色
setnocompatible
"
去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
"
显示中文帮助
ifversion>=
603
sethelplang=cn
setencoding=utf-
8
endif
"
设置配色方案
"
colorschememurphy
"
字体
"
if(has(
"gui_running
"
))
"
setguifont=Bitstream\Vera\Sans\Mono\10
"
endif
setfencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
settermencoding=utf-8
setencoding=utf-8
setfileencodings=ucs-bom,utf-8,cp936
setfileencoding=utf-8
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""
新文件标题
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
新建.c,.h,.sh,.java文件,自动插入文件头
autocmdBufNewFile*.cpp,*.[ch],*.sh,*.javaexec
"
:callSetTitle()
"
""定义函数SetTitle,自动插入文件头
funcSetTitle()
"
如果文件类型为.sh文件
if&filetype==
'
sh
'
callsetline(
1,
"
\#########################################################################
")
callappend(line(
"
.
"),
"
\#FileName:
".expand(
"
%
"))
callappend(line(
"
.
")+
1,
"
\#Author:ma6174
")
callappend(line(
"
.
")+
2,
"
\#mail:[email protected]
")
callappend(line(
"
.
")+
3,
"
\#CreatedTime:
".strftime(
"
%c
"))
callappend(line(
"
.
")+
4,
"
\#########################################################################
")
callappend(line(
"
.
")+
5,
"
\#!/bin/bash
")
callappend(line(
"
.
")+
6,
"")
else
callsetline(
1,
"
/*************************************************************************
")
callappend(line(
"
.
"),
"
>FileName:
".expand(
"
%
"))
callappend(line(
"
.
")+
1,
"
>Author:ma6174
")
callappend(line(
"
.
")+
2,
"
>Mail:[email protected]
")
callappend(line(
"
.
")+
3,
"
>CreatedTime:
".strftime(
"
%c
"))
callappend(line(
"
.
")+
4,
"
************************************************************************/
")
callappend(line(
"
.
")+
5,
"")
endif
if&filetype==
'
cpp
'
callappend(line(
"
.
")+
6,
"
#include<iostream>
")
callappend(line(
"
.
")+
7,
"
usingnamespacestd;
")
callappend(line(
"
.
")+
8,
"")
endif
if&filetype==
'
c
'
callappend(line(
"
.
")+
6,
"
#include<stdio.h>
")
callappend(line(
"
.
")+
7,
"")
endif
"
新建文件后,自动定位到文件末尾
autocmdBufNewFile*normalG
endfunc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
键盘命令
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
nmap<leader>w:w!<cr>
nmap<leader>f:find<cr>
"
映射全选+复制ctrl+a
map<C-A>ggVGY
map!<C-A><Esc>ggVGY
map<F12>gg=G
"
选中状态下Ctrl+c复制
vmap<C-c>
"
+y
"
去空行
nnoremap<F2>:g/^\s*$/d<CR>
"
比较文件
nnoremap<C-F2>:vertdiffsplit
"
新建标签
map<M-F2>:tabnew<CR>
"
列出当前目录文件
map<F3>:tabnew.<CR>
"
打开树状文件目录
map<C-F3>\be
"
C,C++按F5编译运行
map<F5>:callCompileRunGcc()<CR>
func!CompileRunGcc()
exec
"
w
"
if&filetype==
'
c
'
exec
"
!g++%-o%<
"
exec
"
!./%<
"
elseif&filetype==
'
cpp
'
exec
"
!g++%-o%<
"
exec
"
!./%<
"
elseif&filetype==
'
java
'
exec
"
!javac%
"
exec
"
!java%<
"
elseif&filetype==
'
sh
'
:!./%
endif
endfunc
"
C,C++的调试
map<F8>:callRungdb()<CR>
func!Rungdb()
exec
"
w
"
exec
"
!g++%-g-o%<
"
exec
"
!gdb./%<
"
endfunc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""实用设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
设置当文件被改动时自动载入
setautoread
"
quickfix模式
autocmdFileTypec,cppmap<buffer><leader><space>:w<cr>:make<cr>
"
代码补全
setcompleteopt=preview,menu
"
允许插件
filetypepluginon
"
共享剪贴板
setclipboard+=unnamed
"
从不备份
setnobackup
"
make运行
:
setmakeprg=g++\-Wall\\%
"
自动保存
setautowrite
setruler
"
打开状态栏标尺
setcursorline
"
突出显示当前行
setmagic
"
设置魔术
setguioptions-=T
"
隐藏工具栏
setguioptions-=m
"
隐藏菜单栏
"
setstatusline=\%<%F[%1*%M%*%n%R%H]%=\%y\%0(%{&fileformat}\%{&encoding}\%c:%l/%L%)\
"
设置在状态行显示的信息
setfoldcolumn=
0
setfoldmethod=indent
setfoldlevel=
3
setfoldenable
"
开始折叠
"
不要使用vi的键盘模式,而是vim自己的
setnocompatible
"
语法高亮
setsyntax=on
"
去掉输入错误的提示声音
setnoeb
"
在处理未保存或只读文件的时候,弹出确认
setconfirm
"
自动缩进
setautoindent
setcindent
"
Tab键的宽度
settabstop=
4
"
统一缩进为4
setsofttabstop=
4
setshiftwidth=
4
"
不要用空格代替制表符
setnoexpandtab
"
在行和段开始处使用制表符
setsmarttab
"
显示行号
setnumber
"
历史记录数
sethistory=
1000
"
禁止生成临时文件
setnobackup
setnoswapfile
"
搜索忽略大小写
setignorecase
"
搜索逐字符高亮
sethlsearch
setincsearch
"
行内替换
setgdefault
"
编码设置
setenc=utf-
8
setfencs=utf-
8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
"
语言设置
setlangmenu=zh_CN.UTF-
8
sethelplang=cn
"
我的状态行显示的内容(包括文件类型和解码)
"
setstatusline=%F%m%r%h%w\[FORMAT=%{&ff}]\[TYPE=%Y]\[POS=%l,%v][%p%%]\%{strftime(\"%d/%m/%y\-\%H:%M\")}
"
setstatusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
"
总是显示状态行
setlaststatus=
2
"
命令行(在状态行下)的高度,默认为1,这里是2
setcmdheight=
2
"
侦测文件类型
filetypeon
"
载入文件类型插件
filetypepluginon
"
为特定文件类型载入相关缩进文件
filetypeindenton
"
保存全局变量
setviminfo+=!
"
带有如下符号的单词不要被换行分割
setiskeyword+=_,$,@,%,#,-
"
字符间插入的像素行数目
setlinespace=
0
"
增强模式中的命令行自动完成操作
setwildmenu
"
使回格键(backspace)正常处理indent,eol,start等
setbackspace=
2
"
允许backspace和光标键跨越行边界
setwhichwrap+=<,>,h,l
"
可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
setmouse=a
setselection=exclusive
setselectmode=mouse,key
"
通过使用:commands命令,告诉我们文件的哪一行被改变过
setreport=
0
"
在被分割的窗口间显示空白,便于阅读
setfillchars=vert:\,stl:\,stlnc:\
"
高亮显示匹配的括号
setshowmatch
"
匹配括号高亮的时间(单位是十分之一秒)
setmatchtime=
1
"
光标移动到buffer的顶部和底部时保持3行距离
setscrolloff=
3
"
为C程序提供自动缩进
setsmartindent
"
高亮显示普通txt文件(需要txt.vim脚本)
auBufRead,BufNewFile*setfiletypetxt
"
自动补全
:inoremap(()<ESC>i
:inoremap)<c-r>=ClosePair(
'
)
')<CR>
:inoremap{{<CR>}<ESC>O
:inoremap}<c-r>=ClosePair(
'
}
')<CR>
:inoremap[[]<ESC>i
:inoremap]<c-r>=ClosePair(
'
]
')<CR>
:inoremap
"
""
<ESC>i
:inoremap
'
''
<ESC>i
function!ClosePair(
char)
ifgetline(
'
.
')[col(
'
.
')-
1]==a:
char
return
"
\<Right>
"
else
returna:
char
endif
endfunction
filetypepluginindenton
"
打开文件类型检测,加了这句才可以用智能补全
setcompleteopt=longest,menu
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
CTags的设定
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
letTlist_Sort_Type=
"
name
"
"
按照名称排序
letTlist_Use_Right_Window=
1
"
在右侧显示窗口
letTlist_Compart_Format=
1
"
压缩方式
letTlist_Exist_OnlyWindow=
1
"
如果只有一个buffer,kill窗口也kill掉buffer
letTlist_File_Fold_Auto_Close=
0
"
不要关闭其他文件的tags
letTlist_Enable_Fold_Column=
0
"
不要显示折叠树
autocmdFileTypejava
settags+=D:\tools\java\tags
"
autocmdFileTypeh,cpp,cc,csettags+=D:\tools\cpp\tags
"
letTlist_Show_One_File=1
"不同时显示多个文件的tag,只显示当前文件的
"
设置tags
settags=tags
"
setautochdir
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
其他东东
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
默认打开Taglist
letTlist_Auto_Open=
1
""""""""""""""""""""""""""""""
"
Taglist(ctags)
""""""""""""""""""""""""""""""""
letTlist_Ctags_Cmd=
'
/usr/bin/ctags
'
letTlist_Show_One_File=
1
"
不同时显示多个文件的tag,只显示当前文件的
letTlist_Exit_OnlyWindow=
1
"
如果taglist窗口是最后一个窗口,则退出vim
letTlist_Use_Right_Window=
1
"
在右侧窗口中显示taglist窗口
"
minibufexpl插件的一般设置
letg:miniBufExplMapWindowNavVim=
1
letg:miniBufExplMapWindowNavArrows=
1
letg:miniBufExplMapCTabSwitchBufs=
1
letg:miniBufExplModSelTarget=1