【转】强大的vim配置文件,让编程更随意
原文地址:http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html
?
花了很長時間整理的,感覺用起來很方便,共享一下。
我的vim配置主要有以下優(yōu)點:
1.按F5可以直接編譯并執(zhí)行C、C++、java代碼以及執(zhí)行shell腳本,按“F8”可進行C、C++代碼的調(diào)試
2.自動插入文件頭 ,新建C、C++源文件時自動插入表頭:包括文件名、作者、聯(lián)系方式、建立時間等,讀者可根據(jù)需求自行更改
3.映射“Ctrl + A”為全選并復制快捷鍵,方便復制代碼
4.按“F2”可以直接消除代碼中的空行
5.“F3”可列出當前目錄文件,打開樹狀文件目錄
6. 支持鼠標選擇、方向鍵移動
7. 代碼高亮,自動縮進,顯示行號,顯示狀態(tài)行
8.按“Ctrl + P”可自動補全
9.[]、{}、()、""、' '等都自動補全
10.其他功能讀者可以研究以下文件
?vim本來就是很強大,很方便的編輯器,加上我的代碼后肯定會如虎添翼,或許讀者使用其他編程語言,可以根據(jù)自己的需要進行修改,配置文件里面已經(jīng)加上注釋。
讀者感興趣的話直接復制下面的代碼到文本文件,然后把文件改名為“ .vimrc” (不要忘記前面的“.”),然后把文件放到用戶文件夾的根目錄下面即可。重新打開vim即可看到效果。
為方便管理,源碼托管到了github,后期增加了好多新功能,
具體詳見:https://github.com/ma6174/vim
這是在github上的vim配置的截圖:
?
?下面是精簡的,沒有插件的vim配置文件,保存到自己的.vimrc文件就能使用。
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"顯示相關(guān)??
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"set?shortmess=atI???"?啟動的時候不顯示那個援助烏干達兒童的提示??
"winpos?5?5??????????"?設(shè)定窗口位置??
"set?lines=40?columns=155????"?設(shè)定窗口大小??
"set?nu??????????????"?顯示行號??
set?go=?????????????"不要圖形按鈕??
"color?asmanian2?????"?設(shè)置背景主題??
set?guifont=Courier_New:h10:cANSI???"設(shè)置字體??
"syntax?on???????????"?語法高亮??
autocmd?InsertLeave?*?se?nocul??"用淺色高亮當前行??
autocmd?InsertEnter?*?se?cul????"用淺色高亮當前行??
"set?ruler???????????"?顯示標尺??
set?showcmd?????????"輸入的命令顯示出來,看的清楚些??
"set?cmdheight=1?????"?命令行(在狀態(tài)行下)的高度,設(shè)置為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\")}???"狀態(tài)行顯示的內(nèi)容??
set?laststatus=1????"啟動顯示狀態(tài)行(1),總是顯示狀態(tài)行(2)??
set?foldenable??????"允許折疊??
set?foldmethod=manual???"手動折疊??
"set?background=dark?"背景使用黑色?
set?nocompatible??"去掉討厭的有關(guān)vi一致性模式,避免以前版本的一些bug和局限??
"顯示中文幫助
if?version?>=?603
????set?helplang=cn
????set?encoding=utf-8
endif
"設(shè)置配色方案
"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,cp936set?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()"?
""定義函數(shù)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
"選中狀態(tài)下?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++的調(diào)試
map?<F8>?:call?Rungdb()<CR>
func!?Rungdb()
????exec?"w"
????exec?"!g++?%?-g?-o?%<"
????exec?"!gdb?./%<"
endfunc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""實用設(shè)置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"設(shè)置當文件被改動時自動載入
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???????????????????"打開狀態(tài)欄標尺
set?cursorline??????????????"突出顯示當前行
set?magic???????????????????"設(shè)置魔術(shù)
set?guioptions-=T???????????"隱藏工具欄
set?guioptions-=m???????????"隱藏菜單欄
"set?statusline=\?%<%F[%1*%M%*%n%R%H]%=\?%y\?%0(%{&fileformat}\?%{&encoding}\?%c:%l/%L%)\
"設(shè)置在狀態(tài)行顯示的信息
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
"統(tǒng)一縮進為4
set?softtabstop=4
set?shiftwidth=4
"不要用空格代替制表符
set?noexpandtab
"在行和段開始處使用制表符
set?smarttab
"顯示行號
set?number
"歷史記錄數(shù)
set?history=1000
"禁止生成臨時文件
set?nobackup
set?noswapfile
"搜索忽略大小寫
set?ignorecase
"搜索逐字符高亮
set?hlsearch
set?incsearch
"行內(nèi)替換
set?gdefault
"編碼設(shè)置
set?enc=utf-8
set?fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
"語言設(shè)置
set?langmenu=zh_CN.UTF-8
set?helplang=cn
"我的狀態(tài)行顯示的內(nèi)容(包括文件類型和解碼)
"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%%]
"總是顯示狀態(tài)行
set?laststatus=2
"命令行(在狀態(tài)行下)的高度,默認為1,這里是2
set?cmdheight=2
"偵測文件類型
filetype?on
"載入文件類型插件
filetype?plugin?on
"為特定文件類型載入相關(guān)縮進文件
filetype?indent?on
"保存全局變量
set?viminfo+=!
"帶有如下符號的單詞不要被換行分割
set?iskeyword+=_,$,@,%,#,-
"字符間插入的像素行數(shù)目
set?linespace=0
"增強模式中的命令行自動完成操作
set?wildmenu
"使回格鍵(backspace)正常處理indent,?eol,?start等
set?backspace=2
"允許backspace和光標鍵跨越行邊界
set?whichwrap+=<,>,h,l
"可以在buffer的任何地方使用鼠標(類似office中在工作區(qū)雙擊鼠標定位)
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的設(shè)定??
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let?Tlist_Sort_Type?=?"name"????"按照名稱排序??
let?Tlist_Use_Right_Window?=?1??"在右側(cè)顯示窗口??
let?Tlist_Compart_Format?=?1????"壓縮方式??
let?Tlist_Exist_OnlyWindow?=?1??"如果只有一個buffer,kill窗口也kill掉buffer??
let?Tlist_File_Fold_Auto_Close?=?0??"不要關(guān)閉其他文件的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,只顯示當前文件的
"設(shè)置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?"在右側(cè)窗口中顯示taglist窗口
"minibufexpl插件的一般設(shè)置
let?g:miniBufExplMapWindowNavVim?=?1
let?g:miniBufExplMapWindowNavArrows?=?1
let?g:miniBufExplMapCTabSwitchBufs?=?1
let?g:miniBufExplModSelTarget?=?1???
?
總結(jié)
以上是生活随笔為你收集整理的【转】强大的vim配置文件,让编程更随意的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 关于日期格式转换与使用
- 下一篇: stdarg.h(c标准库)