自定義vim配置文件vimrc,用於c/c++編程
阿新 • • 發佈:2018-10-14
which pfile tst nco 檢測 str 字體 normal ada
vim作為Linux下廣受贊譽的代碼編輯器,其獨特的純命令行操作模式可以很大程度上方便編程工作,通過自定義vim配置文件可以實現對vim功能的個性化設置。
vim配置文件一般有兩份,屬於root的/etc/vim/vimrc和屬於當前用戶的~/.vimrc,兩者都可以配置vim,而當兩者配置信息有沖突時,以後者為準。
我的/etc/vim/vimrc文件內容如下:
runtime! debian.vim syntax on set showmatch set nu set autoindent set cindent set mouse=a if filereadable("etc/vim/vimrc.local") source /etc/vim/vimrc.local endif
我的當前用戶vim配置文件~/.vimrc內容如下:
inoremap ‘ ‘‘<ESC>i inoremap " ""<ESC>i inoremap ( ()<ESC>i inoremap [ []<ESC>i inoremap { {<CR>}<ESC>O "設置跳出自動補全的括號 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> "打開文件類型檢測, 加了這句才可以用智能補全set completeopt=longest,menu set shortmess=atI " 啟動的時候不顯示那個援助烏幹達兒童的提示 set showcmd "輸出的命令顯示出來 autocmd InsertLeave * se nocul " 用淺色高亮當前行 autocmd InsertEnter * se cul " 用淺色高亮當前行 set foldenable " 允許折疊 set foldmethod=manual " 手動折疊 set nocompatible "去掉討厭的有關vi一致性模式,避免以前版本的一些bug和局限 " 映射全選+復制 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> "代碼補全 set completeopt=preview,menu "共享剪貼板 set clipboard+=unnamed " Tab鍵的寬度 set tabstop=4 " 統一縮進為4 set softtabstop=4 set shiftwidth=4 " 不要用空格代替制表符 set noexpandtab " 在行和段開始處使用制表符 set smarttab "禁止生成臨時文件 set nobackup set noswapfile "搜索忽略大小寫 set ignorecase "搜索逐字符高亮 set hlsearch set incsearch set gdefault "行內替換 set encoding=utf-8 set fileencodings=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936,utf-16,big5,euc-jp,latin1 " "編碼設置 set guifont=Menlo:h16:cANSI "設置字體 set langmenu=zn_CN.UTF-8 set helplang=cn "語言設置 set ruler "在編輯過程中,在右下角顯示光標位置的狀態行 set laststatus=1 "總是顯示狀態行 set showcmd "在狀態行顯示目前所執行的命令,未完成的指令片段也會顯示出來 set scrolloff=3 "光標移動到buffer的頂部和底部時保持3行的距離""""""" set autowrite "在切換buffer時自動保存當前文件" set showmatch set selection=exclusive set selectmode=mouse,key set wildmenu "增強模式中的命令行自動完成操作 set linespace=2 "字符間插入的像素行數目 set whichwrap=b,s,<,>,[,] "開啟normal 或visual模式下的backspace鍵空格鍵,左右方向鍵,insert或replace模式下的左方向鍵,右方向鍵的跳行功能 filetype plugin indent on "分為三部分命令:file on,file plugin on,file indent on 分別是自動識別文件類型, 用用文件類型腳本,使用縮進定義文件""]"" 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: [email protected] ") 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 "新建文件後,自動定位到文件末尾(這個功能實際沒有被實現,即下面的語句無效,暫不知道原因) autocmd BufNewFile * normal G endfunc "C,C++ 按F5編譯運行 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++的調試 map <F8> :call Rungdb()<CR> func! Rungdb() exec "w" exec "!g++ % -g -o %<" exec "!gdb ./%<" endfunc " set tags=/home/lsh/files/tags let Tlist_Auto_Open = 1 let Tlist_Ctags_Cmd = ‘/usr/local/bin/ctags‘ let Tlist_Show_One_File = 1 let Tlist_Exit_OnlyWindow = 1 """"""""""""""""""""""""
自定義vim配置文件vimrc,用於c/c++編程