vim作為Linux下廣受贊譽(yù)的代碼編輯器,其獨(dú)特的純命令行操作模式可以很大程度上方便編程工作,通過自定義vim配置文件可以實(shí)現(xiàn)對vim功能的個性化設(shè)置。
vim配置文件一般有兩份,屬于root的/etc/vim/vimrc和屬于當(dāng)前用戶的~/.vimrc,兩者都可以配置vim,而當(dāng)兩者配置信息有沖突時,以后者為準(zhǔn)。
我的/etc/vim/vimrc文件內(nèi)容如下:
runtime! debian.vimsyntax onset showmatchset nuset autoindentset cindentset mouse=aif filereadable("etc/vim/vimrc.local") source /etc/vim/vimrc.localendif我的當(dāng)前用戶vim配置文件~/.vimrc內(nèi)容如下:
inoremap ' ''<ESC>iinoremap " ""<ESC>iinoremap ( ()<ESC>iinoremap [ []<ESC>iinoremap { {<CR>}<ESC>O"設(shè)置跳出自動補(bǔ)全的括號func SkipPair() if getline('.')[col('.') - 1] == ')' || getline('.')[col('.') - 1] == ']' || getline('.')[col('.') - 1] == '"' || getline('.')[col('.') - 1] == "'" || getline('.')[col('.') - 1] == '}' return "/<ESC>la" else return "/t" endif endfunc " 將tab鍵綁定為跳出括號 inoremap <TAB> <c-r>=SkipPair()<CR>"打開文件類型檢測, 加了這句才可以用智能補(bǔ)全set completeopt=longest,menuset shortmess=atI " 啟動的時候不顯示那個援助烏干達(dá)兒童的提示 set showcmd "輸出的命令顯示出來autocmd InsertLeave * se nocul " 用淺色高亮當(dāng)前行autocmd InsertEnter * se cul " 用淺色高亮當(dāng)前行 set foldenable " 允許折疊set foldmethod=manual " 手動折疊 set nocompatible "去掉討厭的有關(guān)vi一致性模式,避免以前版本的一些bug和局限 " 映射全選+復(fù)制 ctrl+amap <C-A> ggVGYmap! <C-A> <Esc>ggVGYmap <F12> gg=G" 選中狀態(tài)下 Ctrl+c 復(fù)制vmap <C-c> "+y"去空行nnoremap <F2> :g/^/s*$/d<CR> "代碼補(bǔ)全set completeopt=preview,menu "共享剪貼板set clipboard+=unnamed " Tab鍵的寬度set tabstop=4" 統(tǒng)一縮進(jìn)為4set softtabstop=4set shiftwidth=4" 不要用空格代替制表符set noexpandtab" 在行和段開始處使用制表符set smarttab"禁止生成臨時文件set nobackupset noswapfile"搜索忽略大小寫set ignorecase"搜索逐字符高亮set hlsearchset incsearchset gdefault "行內(nèi)替換set encoding=utf-8set fileencodings=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936,utf-16,big5,euc-jp,latin1 ""編碼設(shè)置set guifont=Menlo:h16:cANSI "設(shè)置字體set langmenu=zn_CN.UTF-8set helplang=cn "語言設(shè)置set ruler "在編輯過程中,在右下角顯示光標(biāo)位置的狀態(tài)行set laststatus=1 "總是顯示狀態(tài)行set showcmd "在狀態(tài)行顯示目前所執(zhí)行的命令,未完成的指令片段也會顯示出來set scrolloff=3 "光標(biāo)移動到buffer的頂部和底部時保持3行的距離"""""""set autowrite "在切換buffer時自動保存當(dāng)前文件"set showmatchset selection=exclusiveset selectmode=mouse,keyset wildmenu "增強(qiáng)模式中的命令行自動完成操作set linespace=2 "字符間插入的像素行數(shù)目set whichwrap=b,s,<,>,[,] "開啟normal 或visual模式下的backspace鍵空格鍵,左右方向鍵,insert或replace模式下的左方向鍵,右方向鍵的跳行功能filetype plugin indent on"分為三部分命令:file on,file plugin on,file indent on 分別是自動識別文件類型, 用用文件類型腳本,使用縮進(jìn)定義文件""]""filetype on "打開文件類型檢測功能autocmd BufNewFile *.cpp,*.[ch] exec ":call SetTitle()"func SetTitle() call setline(1,"/************************************************************************") call append(line("."), " > File Name: ".expand("%")) call append(line(".")+1, " > Author: lsh") call append(line(".")+2, " > Mail: lsh1999mail@163.com ") call append(line(".")+3, " > Created Time: ".strftime("%c")) call append(line(".")+4, "************************************************************************/") call append(line(".")+5, "") 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 "新建文件后,自動定位到文件末尾(這個功能實(shí)際沒有被實(shí)現(xiàn),即下面的語句無效,暫不知道原因) autocmd BufNewFile * normal Gendfunc"C,C++ 按F5編譯運(yùn)行map <F5> :call CompileRunGcc()<CR>func! CompileRunGcc() exec "w" if &filetype == 'c' exec "!g++ % -o %<" exec "!time ./%<" elseif &filetype == 'cpp' exec "!g++ % -o %<" exec "!time ./%<" endif endfunc"C,C++的調(diào)試map <F8> :call Rungdb()<CR>func! Rungdb()exec "w"exec "!g++ % -g -o %<"exec "!gdb ./%<"endfunc"set tags=/home/lsh/files/tagslet Tlist_Auto_Open = 1let Tlist_Ctags_Cmd = '/usr/local/bin/ctags'let Tlist_Show_One_File = 1let Tlist_Exit_OnlyWindow = 1""""""""""""""""""""""""總結(jié)
以上所述是小編給大家介紹的定義vim配置文件vimrc用于c/c++編程,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!
新聞熱點(diǎn)
疑難解答