""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
显示相关
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
set shortmess=atI
"
启动的时候不显示那个援助乌干达儿童的提示
"
winpos 5 5
"
设定窗口位置
"
set lines=40 columns=155
"
设定窗口大小
"
set nu
"
显示行号
set
go=
"
不要图形按钮
"
color asmanian2
"
设置背景主题
set
guifont=Courier_New:h10:cANSI
"
设置字体
"
syntax on
"
语法高亮
autocmd InsertLeave * se nocul
"
用浅色高亮当前行
autocmd InsertEnter * se cul
"
用浅色高亮当前行
"
set ruler
"
显示标尺
set
showcmd
"
输入的命令显示出来,看的清楚些
"
set cmdheight=1
"
命令行(在状态行下)的高度,设置为1
"
set whichwrap+=<,>,h,l
"
容许backspace和光标键跨越行边界(不建议)
"
set scrolloff=3
"
光标移动到buffer的顶部和底部时保持3行距离
set
novisualbell
"
不要闪烁(不明白)
set
statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\
"
%d/%m/%y\ -\ %H:%M\")}
"
状态行显示的内容
set
laststatus=
1
"
启动显示状态行(1),老是显示状态行(2)
set
foldenable
"
容许折叠
set
foldmethod=manual
"
手动折叠
"
set background=dark
"
背景使用黑色
set
nocompatible
"
去掉讨厌的有关vi一致性模式,避免之前版本的一些bug和局限
"
显示中文帮助
if
version >=
603
set
helplang=cn
set
encoding=utf-
8
endif
"
设置配色方案
"
colorscheme murphy
"
字体
"
if (has(
"
gui_running
"
))
"
set guifont=Bitstream\ Vera\ Sans\ Mono\ 10
"
endif
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936
set fileencoding=utf-8
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""
新文件标题
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
新建.c,.h,.sh,.java文件,自动插入文件头
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec
"
:call SetTitle()
"
""
定义函数SetTitle,自动插入文件头
func SetTitle()
"
若是文件类型为.sh文件
if
&filetype ==
'
sh
'
call setline(
1
,
"
\#########################################################################
"
)
call append(line(
"
.
"
),
"
\# File Name:
"
.expand(
"
%
"
))
call append(line(
"
.
"
)+
1
,
"
\# Author: ma6174
"
)
call append(line(
"
.
"
)+
2
,
"
\# mail: ma6174@163.com
"
)
call append(line(
"
.
"
)+
3
,
"
\# Created Time:
"
.strftime(
"
%c
"
))
call append(line(
"
.
"
)+
4
,
"
\#########################################################################
"
)
call append(line(
"
.
"
)+
5
,
"
\#!/bin/bash
"
)
call append(line(
"
.
"
)+
6
,
""
)
else
call setline(
1
,
"
/*************************************************************************
"
)
call append(line(
"
.
"
),
"
> File Name:
"
.expand(
"
%
"
))
call append(line(
"
.
"
)+
1
,
"
> Author: ma6174
"
)
call append(line(
"
.
"
)+
2
,
"
> Mail: ma6174@163.com
"
)
call append(line(
"
.
"
)+
3
,
"
> Created Time:
"
.strftime(
"
%c
"
))
call append(line(
"
.
"
)+
4
,
"
************************************************************************/
"
)
call append(line(
"
.
"
)+
5
,
""
)
endif
if
&filetype ==
'
cpp
'
call append(line(
"
.
"
)+
6
,
"
#include<iostream>
"
)
call append(line(
"
.
"
)+
7
,
"
using namespace std;
"
)
call append(line(
"
.
"
)+
8
,
""
)
endif
if
&filetype ==
'
c
'
call append(line(
"
.
"
)+
6
,
"
#include<stdio.h>
"
)
call append(line(
"
.
"
)+
7
,
""
)
endif
"
新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
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> :vert diffsplit
"
新建标签
map <M-F2> :tabnew<CR>
"
列出当前目录文件
map <F3> :tabnew .<CR>
"
打开树状文件目录
map <C-F3> \be
"
C,C++ 按F5编译运行
map <F5> :call CompileRunGcc()<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> :call Rungdb()<CR>
func! Rungdb()
exec
"
w
"
exec
"
!g++ % -g -o %<
"
exec
"
!gdb ./%<
"
endfunc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""
实用设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
设置当文件被改动时自动载入
set
autoread
"
quickfix模式
autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
"
代码补全
set
completeopt=preview,menu
"
容许插件
filetype plugin on
"
共享剪贴板
set
clipboard+=unnamed
"
从不备份
set
nobackup
"
make 运行
:
set
makeprg=g++\ -Wall\ \ %
"
自动保存
set
autowrite
set
ruler
"
打开状态栏标尺
set
cursorline
"
突出显示当前行
set
magic
"
设置魔术
set
guioptions-=T
"
隐藏工具栏
set
guioptions-=m
"
隐藏菜单栏
"
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
"
设置在状态行显示的信息
set
foldcolumn=
0
set
foldmethod=indent
set
foldlevel=
3
set
foldenable
"
开始折叠
"
不要使用vi的键盘模式,而是vim本身的
set
nocompatible
"
语法高亮
set
syntax=on
"
去掉输入错误的提示声音
set
noeb
"
在处理未保存或只读文件的时候,弹出确认
set
confirm
"
自动缩进
set
autoindent
set
cindent
"
Tab键的宽度
set
tabstop=
4
"
统一缩进为4
set
softtabstop=
4
set
shiftwidth=
4
"
不要用空格代替制表符
set
noexpandtab
"
在行和段开始处使用制表符
set
smarttab
"
显示行号
set
number
"
历史记录数
set
history=
1000
"
禁止生成临时文件
set
nobackup
set
noswapfile
"
搜索忽略大小写
set
ignorecase
"
搜索逐字符高亮
set
hlsearch
set
incsearch
"
行内替换
set
gdefault
"
编码设置
set
enc=utf-
8
set
fencs=utf-
8
,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
"
语言设置
set
langmenu=zh_CN.UTF-
8
set
helplang=cn
"
个人状态行显示的内容(包括文件类型和解码)
"
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
"
set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
"
老是显示状态行
set
laststatus=
2
"
命令行(在状态行下)的高度,默认为1,这里是2
set
cmdheight=
2
"
侦测文件类型
filetype on
"
载入文件类型插件
filetype plugin on
"
为特定文件类型载入相关缩进文件
filetype indent on
"
保存全局变量
set
viminfo+=!
"
带有以下符号的单词不要被换行分割
set
iskeyword+=_,$,@,%,#,-
"
字符间插入的像素行数目
set
linespace=
0
"
加强模式中的命令行自动完成操做
set
wildmenu
"
使回格键(backspace)正常处理indent, eol, start等
set
backspace=
2
"
容许backspace和光标键跨越行边界
set
whichwrap+=<,>,h,l
"
能够在buffer的任何地方使用鼠标(相似office中在工做区双击鼠标定位)
set
mouse=a
set
selection=exclusive
set
selectmode=mouse,key
"
经过使用: commands命令,告诉咱们文件的哪一行被改变过
set
report=
0
"
在被分割的窗口间显示空白,便于阅读
set
fillchars=vert:\ ,stl:\ ,stlnc:\
"
高亮显示匹配的括号
set
showmatch
"
匹配括号高亮的时间(单位是十分之一秒)
set
matchtime=
1
"
光标移动到buffer的顶部和底部时保持3行距离
set
scrolloff=
3
"
为C程序提供自动缩进
set
smartindent
"
高亮显示普通txt文件(须要txt.vim脚本)
au BufRead,BufNewFile * setfiletype txt
"
自动补全
: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
)
if
getline(
'
.
'
)[col(
'
.
'
) -
1
] == a:
char
return
"
\<Right>
"
else
return
a:
char
endif
endfunction
filetype plugin indent on
"
打开文件类型检测, 加了这句才能够用智能补全
set
completeopt=longest,menu
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
CTags的设定
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let Tlist_Sort_Type =
"
name
"
"
按照名称排序
let Tlist_Use_Right_Window =
1
"
在右侧显示窗口
let Tlist_Compart_Format =
1
"
压缩方式
let Tlist_Exist_OnlyWindow =
1
"
若是只有一个buffer,kill窗口也kill掉buffer
let Tlist_File_Fold_Auto_Close =
0
"
不要关闭其余文件的tags
let Tlist_Enable_Fold_Column =
0
"
不要显示折叠树
autocmd FileType java
set
tags+=D:\tools\java\tags
"
autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags
"
let Tlist_Show_One_File=1
"
不一样时显示多个文件的tag,只显示当前文件的
"
设置tags
set
tags=tags
"
set autochdir
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
其余东东
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
默认打开Taglist
let Tlist_Auto_Open=
1
""""""""""""""""""""""""""""""
"
Tag list (ctags)
""""""""""""""""""""""""""""""""
let Tlist_Ctags_Cmd =
'
/usr/bin/ctags
'
let Tlist_Show_One_File =
1
"
不一样时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow =
1
"
若是taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window =
1
"
在右侧窗口中显示taglist窗口
"
minibufexpl插件的通常设置
let g:miniBufExplMapWindowNavVim =
1
let g:miniBufExplMapWindowNavArrows =
1
let g:miniBufExplMapCTabSwitchBufs =
1
let g:miniBufExplModSelTarget = 1