花了很長時間整理的,感覺用起來很方便,共用一下。
我的vim配置主要有以下優點:
1.按F5可以直接編譯並執行C、C++、java代碼以及執行shell指令碼,按“F8”可進行C、C++代碼的調試
2.自動插入檔案頭 ,建立C、C++源檔案時自動插入表頭:包括檔案名稱、作者、連絡方式、建立時間等,讀者可根據需求自行更改
3.映射“Ctrl + A”為全選並複製快速鍵,方便複製代碼
4.按“F2”可以直接消除代碼中的空行
5.“F3”可列出目前的目錄檔案,開啟樹狀檔案目錄
6. 支援滑鼠選擇、方向鍵移動
7. 代碼高亮,自動縮排,顯示行號,顯示狀態行
8.按“Ctrl + P”可自動補全
9.[]、{}、()、""、' '等都自動補全
10.其他功能讀者可以研究以下檔案
vim本來就是很強大,很方便的編輯器,加上My Code後肯定會如虎添翼,或許讀者使用其他程式設計語言,可以根據自己的需要進行修改,設定檔裡面已經加上注釋。
讀者感興趣的話直接複製下面的代碼到文字檔,然後把檔案改名為“ .vimrc” (不要忘記前面的“.”),然後把檔案放到使用者檔案夾的根目錄下面即可。重新開啟vim即可看到效果。
為方便管理,源碼託管到了github,後期增加了好多新功能,
具體詳見:https://github.com/ma6174/vim
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 顯示相關
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 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 運行
: