windows下GVIM的配置(vimrc)

來源:互聯網
上載者:User

標籤:blog   color   使用   width   檔案   os   

學習python時想要在gvim中配置python的編譯環境,網上找到一個比較好用的vimrc配置,儲存下來以備下次有需要。

set encoding=utf-8set termencoding=utf-8set fileencodings=utf-8,chinese,latin-1if has("win32") set fileencoding=chineseelse set fileencoding=utf-8endiflanguage messages zh_CN.utf-8" 設定不與以前版本兼set nocompatible" 設定色彩配置colorscheme murphy" 顯示行號set nu" 偵測檔案類型filetype on" 設定當檔案被改動時自動載入set autoread" 記錄曆史的行數set history=100" 顯示文法高亮syntax enablesyntax on" 在處理未儲存或唯讀檔案的時候,彈出確認set confirm" 與windows共用剪貼簿set clipboard+=unnamed" 載入檔案類型外掛程式filetype plugin on" 為特定檔案類型載入相關縮排檔案filetype indent on" 儲存全域變數set viminfo+=!" 帶有如下符號的單詞不要被換行分割set iskeyword+=_,$,@,%,#,-" 設定滑鼠一直可用set mouse=a" 高亮當前行set cursorline" 命令列高度set cmdheight=1" 啟動的時候不顯示那個援助索馬里兒童的提示set shortmess=atI" 不讓vim發出討厭的滴滴聲set noerrorbells" 在被分割的視窗間顯示空白,便於閱讀set fillchars=vert:\ ,stl:\ ,stlnc:""""""""""""""""""""""""""""" 檔案設定""""""""""""""""""""""""""""" 不要備份檔案(覆蓋檔案時不備份)set nobackup" 不要產生swap檔案,當buffer被丟棄的時候隱藏它setlocal noswapfileset bufhidden=hide" 字元間插入的像素行數目set linespace=0" 增強模式中的命令列自動完成操作set wildmenu" 置粘貼模式,使得粘貼不錯位" set paste" 儲存檔案,用習慣了Ctrl+S了" nmap <C-s> <esc>:w<CR>" imap <C-s> <esc>:w<CR>noremap <C-S> :update<CR>vnoremap <C-S> <C-C>:update<CR>inoremap <C-S> <C-O>:update<CR>"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 搜尋和匹配"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 高亮顯示匹配的括弧set showmatch" 高亮顯示被找到的句子(phrases)"set hlsearch" 在搜尋時,輸入的詞句的逐字元高亮(類似firefox的搜尋),即輸入搜尋內容時就顯示搜尋結果set incsearch" 搜尋時忽略大小寫set ignorecase" 不要閃爍set novisualbell"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 文字格式設定和排版"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 自動格式化set formatoptions=tcrqn" 繼承前一行的縮排方式,特別適用於多行注釋set autoindent" 為C程式提供自動縮排set smartindent" 使用C樣式的縮排set cindent" 定位字元為4set tabstop=4" 統一縮排為4" 使得按退格鍵時可以一次刪掉 4 個空格set softtabstop=4" 設定 << 和 >> 命令移動時的寬度為 4set shiftwidth=4" 不要用空格代替定位字元set noexpandtab" 設定每行120個字元自動換行set textwidth=120         " 自動切換目前的目錄為當前檔案所在的目錄set autochdir" 摺疊代碼set foldmethod=syntax" 檔案開啟時不摺疊set foldlevel=100            """"""""""""""""""""""""""""""""""""""""""""自動執行個體括弧"""""""""""""""""""""""""""""""""""""""""""inoremap ( ()<ESC>iinoremap ) <c-r>=ClosePair(‘)‘)<CR>inoremap { {}<ESC>iinoremap } <c-r>=ClosePair(‘}‘)<CR>inoremap [ []<ESC>iinoremap ] <c-r>=ClosePair(‘]‘)<CR>inoremap ‘ ‘‘<ESC>iinoremap " ""<ESC>ifunction ClosePair(char) if getline(‘.‘)[col(‘.‘) - 1] == a:char  return "\<Right>" else  return a:char endifendf"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set mapleader"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""let mapleader = ","" platformfunction! MySys()        if has("win32")                return "windows"        else                return "linux"        endifendfunction" if file not opened, create a new tab, or switch to the opened filefunction! SwitchToBuf(filename)        " find in current tab        let bufwinnr = bufwinnr(a:filename)        if bufwinnr != -1                exec bufwinnr . "wincmd w"                return        else                " search each tab                tabfirst                let tb = 1        while tb <= tabpagenr("$")                        let bufwinnr = bufwinnr(a:filename)                        if bufwinnr != -1                                exec "normal " . tb . "gt"                                exec bufwinnr . "wincmd w"                                return                        endif                        tabnext                        let tb = tb +1                endwhile                " not exist, new tab                exec "tabnew " . a:filename        endifendfunction" fast edit .vimrcif MySys() == ‘linux‘        " fast reloading of the .vimrc        map <silent> <leader>ss :source ~/.vimrc<cr>        " fast editing of the .vimrc        map <silent> <leader>ee :call SwitchToBuf("~/.vimrc")<cr>        " when .vimrc is edited, reload it        autocmd! bufwritepost .vimrc source ~/.vimrcelseif MySys() == ‘windows‘        " Set helplang    set helplang=cn    "Fast reloading of the _vimrc    map <silent> <leader>ss :source ~/_vimrc<cr>    "Fast editing of _vimrc    map <silent> <leader>ee :call SwitchToBuf("~/_vimrc")<cr>    "When _vimrc is edited, reload it    autocmd! bufwritepost _vimrc source ~/_vimrcendifif MySys() == ‘windows‘    source $VIMRUNTIME/mswin.vim    behave mswinendif""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 外掛程式""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""加入工程使得能夠訪問ctags"""""""""""""""""""""""""""""""project1"set tags=tagsset autochdir"後面的工程加在tags變數上""""""""""""""""""""""""""""""" 設定Taglist""""""""""""""""""""""""""""""" 按照名稱排序let Tlist_Sort_Type = "name"" 在右側顯示視窗let Tlist_Use_left_Window = 1" 如果只有一個buffer,kill視窗也kill掉bufferlet Tlist_Exist_OnlyWindow = 1" 使taglist只顯示當前檔案tag,其它檔案的tag都被摺疊起來(同時顯示多個檔案中的tag時)let Tlist_File_Fold_Auto_Close = 1" 不要顯示摺疊樹let Tlist_Enable_Fold_Column = 1"不同時顯示多個檔案的tag,只顯示當前檔案的let Tlist_Show_One_File = 1  " 鍵盤對應nmap tl :TlistToggle<cr>""""""""""""""""""""""""""""""""""""""""""""""設定 winManager winManager管理netrw和Taglist。"""""""""""""""""""""""""""""""""""""""""""""let g:winManagerWindowLayout = "FileExplorer|TagList"let g:persistentBehaviour = 0let g:winManagerWidth = 30let g:defaultExplorer = 0nmap <C-W><C-F> :FirstExplorerWindow<cr>nmap <C-W><C-B> :BottomExplorerWindow<cr>"nmap <silent> <F8> :WMToggle<cr>nmap wm :WMToggle<cr>"設定 netrw"""""""""""""""""""""""""""""""let g:netrw_winsize = 30"nmap <silent> <leader>fe :Sexplore!<cr>"let Tlist_File_Fold_Auto_Close=1" 快速切換標頭檔/源檔案"nnoremap <silent><F12>:A<cr>""nmap <silent><F12>:A<CR>"在工程中快速尋找"nnoremap <silent><F3>:Grep<cr>"""""""""""""""""""""""""""""""設定 MiniBufExploer""""""""""""""""""""""""""""""" quickfix模式autocmd FileType c,cpp  map <buffer> <leader><space> :w<cr>:make<cr>"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""F5編譯和運行C++程式"F6編譯和運行C程式""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" C的編譯和運行map <F6> :call CompileRunGcc()<CR>func! CompileRunGcc()exec "w"exec "!gcc % -o %<"exec "! ./%<"endfunc" C++的編譯和運行map <F5> :call CompileRunGpp()<CR>func! CompileRunGpp()exec "w"exec "!g++ % -o %<"exec "! ./%<"endfunc source $VIMRUNTIME/vimrc_example.vimsource $VIMRUNTIME/mswin.vimbehave mswinset diffexpr=MyDiff()function MyDiff()  let opt = ‘-a --binary ‘  if &diffopt =~ ‘icase‘ | let opt = opt . ‘-i ‘ | endif  if &diffopt =~ ‘iwhite‘ | let opt = opt . ‘-b ‘ | endif  let arg1 = v:fname_in  if arg1 =~ ‘ ‘ | let arg1 = ‘"‘ . arg1 . ‘"‘ | endif  let arg2 = v:fname_new  if arg2 =~ ‘ ‘ | let arg2 = ‘"‘ . arg2 . ‘"‘ | endif  let arg3 = v:fname_out  if arg3 =~ ‘ ‘ | let arg3 = ‘"‘ . arg3 . ‘"‘ | endif  let eq = ‘‘  if $VIMRUNTIME =~ ‘ ‘    if &sh =~ ‘\<cmd‘      let cmd = ‘""‘ . $VIMRUNTIME . ‘\diff"‘      let eq = ‘"‘    else      let cmd = substitute($VIMRUNTIME, ‘ ‘, ‘" ‘, ‘‘) . ‘\diff"‘    endif  else    let cmd = $VIMRUNTIME . ‘\diff‘  endif  silent execute ‘!‘ . cmd . ‘ ‘ . opt . arg1 . ‘ ‘ . arg2 . ‘ > ‘ . arg3 . eqendfunction" 自動補全(ctrl-p)時的一些選項: 多於一項時顯示菜單,最長選擇; 顯示當前選擇的額外資訊if v:version >= 700    set completeopt=menu,longest,preview                     endif"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 狀態行相關動作"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 顯示狀態列 (預設值為 1, 無法顯示狀態列)set laststatus=2" 狀態行顏色highlight StatusLine guifg=SlateBlue guibg=Yellowhighlight StatusLineNC guifg=Gray guibg=Whitefunction! CurDir()    let curdir = substitute(getcwd(), ‘/Users/amir/‘, "~/", "g")return curdirendfunction""""""""""""""""""""""""""""""""狀態行顯示內容"""""""""""""""""""""""""""""""" %F 當前檔案名稱" %m    當前檔案修改狀態" %r    當前檔案是否唯讀" %Y    當前檔案類型" %{&fileformat}     當前檔案編碼" %b    當前游標處字元的 ASCII 碼值" %B    當前游標處字元的十六進位值" %l    當前游標行號" %c    當前游標列號" %V    當前游標虛擬列號 (根據字元所佔位元組數計算)" %p    當前行佔總行數的百分比" %%    百分比符號" %L    當前檔案總行數      set statusline=\ %F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c                            " 設定在狀態行顯示的資訊如下:                            "                                                     set nowrapscan"Highlight currentif has("gui_running")  set cursorline  hi cursorline guibg=#333333  hi CursorColumn guibg=#333333endif"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" => VIM userinterface""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""Set 7 lines to the curors - when moving vertical..set so=7"Do not redraw, when running macros.. lazyredrawset lz"Change buffer - without savingset hid"Set magic onset magic"How many tenths of a second to blinkset mat=2set lines=40set columns=100""""""""""""""""""""""""""""""""""""""""""""""""""""功能表列、工具列顯示與隱藏的切換"""""""""""""""""""""""""""""""""""""""""""""""""""set guioptions-=Tset guioptions-=mmap <silent> <F4> :if &guioptions =~# ‘T‘ <Bar>        \set guioptions-=T <Bar>        \set guioptions-=m <bar>    \else <Bar>        \set guioptions+=T <Bar>        \set guioptions+=m <Bar>    \endif<CR>""""""""""""""""""""""""""""""""""""""""""""""""""""" 日曆外掛程式設定""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:calendar_diary = /calendar" map ca :Calendar<cr>" 讓 gvim 支援 Alt+n 來切換標籤頁function! BufPos_ActivateBuffer(num)    let l:count = 1    for i in range(1, bufnr("$"))        if buflisted(i) && getbufvar(i, "&modifiable")            if l:count == a:num                exe "buffer " . i                return            endif            let l:count = l:count + 1        endif    endfor    echo "No buffer!"endfunctionfunction! BufPos_Initialize()    for i in range(1, 9)        exe "map <M-" . i . "> :call BufPos_ActivateBuffer(" . i . ")<CR>"    endfor    exe "map <M-0> :call BufPos_ActivateBuffer(10)<CR>"endfunctionautocmd VimEnter * call BufPos_Initialize()" 按F11鍵讓VIM全屏if has(‘gui_running‘) && has("win32") map <F11> <Esc>:call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR>endif" 自動載入_vimrcautocmd! bufwritepost _vimrc source %

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.