""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
顯示相關
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"
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