Normal Configuration:javascript
Copy from :http://nootn.com/blog/Tool/22/php
- " {{{
- " DesCRiption: 適合本身使用的vimrc文件,for Linux/Windows, GUI/Console
- " Last Change: 2011-01-23 03:00:23 Asins - asinsimple AT gmail DOT com
- " Author: Assins - asinsimple AT gmail DOT com
- " Get latest vimrc from http://nootn.com/blog/Tool/22/
- " Version: 2.0
- "}}}
- " 設置leader爲,
- let mapleader=","
- let g:mapleader=","
- set nocompatible " 關閉 vi 兼容模式
- syntax on " 自動語法高亮
- filetype plugin indent on " 開啓插件
- set number " 顯示行號
- set nocursorline " 不突出顯示當前行
- set shiftwidth=4 " 設定 << 和 >> 命令移動時的寬度爲 4
- set softtabstop=4 " 使得按退格鍵時能夠一次刪掉 4 個空格
- set tabstop=4 " 設定 tab 長度爲 4
- set nobackup " 覆蓋文件時不備份
- set autochdir " 自動切換當前目錄爲當前文件所在的目錄
- set backupcopy=yes " 設置備份時的行爲爲覆蓋
- set ignorecase smartcase " 搜索時忽略大小寫,但在有一個或以上大寫字母時仍大小寫敏感
- set nowrapscan " 禁止在搜索到文件兩端時從新搜索
- set incsearch " 輸入搜索內容時就顯示搜索結果
- set hlsearch " 搜索時高亮顯示被找到的文本
- set noerrorbells " 關閉錯誤信息響鈴
- set novisualbell " 關閉使用可視響鈴代替呼叫
- set t_vb= " 置空錯誤鈴聲的終端代碼
- " set showmatch " 插入括號時,短暫地跳轉到匹配的對應括號
- " set matchtime=2 " 短暫跳轉到匹配括號的時間
- "set nowrap " 不自動換行
- set magic " 顯示括號配對狀況
- set hidden " 容許在有未保存的修改時切換緩衝區,此時的修改由 vim 負責保存
- set smartindent " 開啓新行時使用智能自動縮進
- set backspace=indent,eol,start
- " 不設定在插入狀態沒法用退格鍵和 Delete 鍵刪除回車符
- set cmdheight=1 " 設定命令行的行數爲 1
- set laststatus=2 " 顯示狀態欄 (默認值爲 1, 沒法顯示狀態欄)
- set foldenable " 開始摺疊
- set foldmethod=syntax " 設置語法摺疊
- set foldcolumn=0 " 設置摺疊區域的寬度
- setlocal foldlevel=1 " 設置摺疊層數爲
- " set foldclose=all " 設置爲自動關閉摺疊
- " colorscheme colorzone " 設定配色方案
- colorscheme molokai " 設定配色方案
- set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ [%{(&fenc==\"\"?&enc:&fenc).(&bomb?\",BOM\":\"\")}]\ %c:%l/%L%)\
- " 設置在狀態行顯示的信息
- " 顯示Tab符
- set listchars=tab:\|\ ,trail:.,extends:>,precedes:<
- set list
- "設置代碼摺疊方式爲 手工 indent
- set foldmethod=indent
- "設置代碼塊摺疊後顯示的行數
- set foldexpr=1
- if has("gui_running")
- set guioptions-=m " 隱藏菜單欄
- set guioptions-=T " 隱藏工具欄
- set guioptions-=L " 隱藏左側滾動條
- set guioptions-=r " 隱藏右側滾動條
- set guioptions-=b " 隱藏底部滾動條
- set showtabline=0 " 隱藏Tab欄
- endif
- "編輯vim配置文件
- if has('unix')
- set fileformats=unix,dos,mac
- nmap <Leader>e :tabnew $HOME/.vimrc<CR>
- let $VIMFILES = $HOME.'/.vim'
- else
- set fileformats=dos,unix,mac
- nmap <Leader>e :tabnew $VIM/_vimrc<CR>
- let $VIMFILES = $VIM.'/vimfiles'
- endif
- " Alt-Space is System menu
- if has("gui")
- noremap <M-Space> :simalt ~<CR>
- inoremap <M-Space> <C-O>:simalt ~<CR>
- cnoremap <M-Space> <C-C>:simalt ~<CR>
- endif
- " 設定doc文檔目錄
- let helptags=$VIMFILES.'/doc'
- set helplang=cn
- "set nobomb
- " {{{ 編碼字體設置
- set termencoding=chinese
- set fileencodings=ucs-bom,utf-8,default,chinese,big5
- set ambiwidth=double
- set guifont=YaHei\ Consolas\ Hybrid:h12
- " }}}
- " {{{全文搜索選中的文字
- :vmap <silent> <leader>f y/<C-R>=escape(@", '\\/.*$^~[]')<CR><CR>
- :vmap <silent> <leader>F y?<C-R>=escape(@", '\\/.*$^~[]')<CR><CR>
- " }}}
- " 刪除全部行未尾空格
- nmap <F12> :%s/[ \t\r]\+$//g<CR>
- " Buffers操做快捷方式!
- nmap <S-L> :bnext<CR>
- nmap <S-H> :bprevious<CR>
- " Tab操做快捷方式!
- nmap <S-J> :tabnext<CR>
- nmap <S-K> :tabprev<CR>
- " 插入模式下左右移動光標
- imap <c-l> <esc>la
- imap <c-h> <esc>ha
- "窗口分割時,進行切換的按鍵熱鍵須要鏈接兩次,好比從下方窗口移動
- "光標到上方窗口,須要<c-w><c-w>k,很是麻煩,如今重映射爲<c-k>,切換的
- "時候會變得很是方便.
- nmap <C-h> <C-w>h
- nmap <C-j> <C-w>j
- nmap <C-k> <C-w>k
- nmap <C-l> <C-w>l
- " 選中狀態下 Ctrl+c 複製
- vmap <C-c> "+y
- " win下的全屏組件,需gvimfullscreen.dll的支持
- if !has('unix')
- function! ToggleFullScreen()
- let s:IsFullScreen=libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 27 + 29*256 + 30*256*256)
- endfunction
- map <F11> <Esc>:call ToggleFullScreen()<CR>
- endif
- "一些不錯的映射轉換語法(若是在一個文件中混合了不一樣語言時有用)
- nmap <leader>1 :set filetype=xhtml<CR>
- nmap <leader>2 :set filetype=css<CR>
- nmap <leader>3 :set filetype=javascript<CR>
- nmap <leader>4 :set filetype=php<CR>
- " Python 文件的通常設置,好比不要 tab 等
- "autocmd FileType python set tabstop=4 shiftwidth=4 expandtab
- " 設置字典 ~/.vim/dict/文件的路徑
- autocmd filetype javascript set dictionary=$VIMFILES/dict/javascript.dict
- autocmd filetype css set dictionary=$VIMFILES/dict/css.dict
- autocmd filetype php set dictionary=$VIMFILES/dict/php.dict
- " {{{ plugin - vimExplorer.vim 文件管理器
- " :VE 打開文件管理器 tab: 在樹、列表窗口切換
- " Enter: 樹窗口開關目錄 u: 列表中在預覽窗口打開文件
- " ;r 打開Renamer插件
- let g:VEConf_systemEncoding='cp936'
- "}}}
- " {{{ plugin - renamer.vim 文件重命名
- " :Renamer 將當前文件所在文件夾下的內容顯示在一個新窗口
- " :Ren 開始重命名
- "}}}
- " {{{ plugin - bufexplorer.vim Buffers切換
- " \be 全屏方式查看所有打開的文件列表
- " \bv 左右方式查看 \bs 上下方式查看
- "}}}
- " {{{ plugin - bookmarking.vim 設置標記(標籤)
- " <F9> 設置標記 <F4> 向下跳轉標記 <S-F4> 向上跳轉標記
- "map <F3> :ToggleBookmark<CR>
- "map <F4> :NextBookmark<CR>
- "map <S-F4> :PreviousBookmark<CR>
- "}}}
- " {{{ plugin - matchit.vim 對%命令進行擴展使得能在嵌套標籤和語句之間跳轉
- " % 正向匹配 g% 反向匹配
- " [% 定位塊首 ]% 定位塊尾
- "}}}
- " {{{ plugin - mark.vim 給各類tags標記不一樣的顏色,便於觀看調式的插件。
- " 這樣,當我輸入「,hl」時,就會把光標下的單詞高亮,在此單詞上按「,hh」會清除該單詞的高亮。若是在高亮單詞外輸入「,hh」,會清除全部的高亮。
- " 你也可使用virsual模式選中一段文本,而後按「,hl」,會高亮你所選中的文本;或者你能夠用「,hr」來輸入一個正則表達式,這會高亮全部符合這個正則表達式的文本。
- nmap <silent> <leader>hl <Plug>MarkSet
- nmap <silent> <leader>hh <Plug>MarkClear
- nmap <silent> <leader>hr <Plug>MarkRegex
- vmap <silent> <leader>hl <Plug>MarkSet
- vmap <silent> <leader>hh <Plug>MarkClear
- vmap <silent> <leader>hr <Plug>MarkRegex
- " 你能夠在高亮文本上使用「,#」或「,*」來上下搜索高亮文本。在使用了「,#」或「,*」後,就能夠直接輸入「#」或「*」來繼續查找該高亮文本,直到你又用「#」或「*」查找了其它文本。
- " <silent>* 當前MarkWord的下一個 <silent># 當前MarkWord的上一個
- " <silent>/ 全部MarkWords的下一個 <silent>? 全部MarkWords的上一個
- "}}}
- " {{{ plugin – winmove.vim 窗口移動
- let g:wm_move_left = "<A-h>"
- let g:wm_move_right = "<A-l>"
- let g:wm_move_up = "<A-k>"
- let g:wm_move_down = "<A-j>"
- "}}}
- " {{{ plugin – ZenCoding.vim 很酷的插件,HTML代碼生成
- " 插件最新版:http://github.com/mattn/zencoding-vim
- " 經常使用命令可看:http://nootn.com/blog/Tool/23/
- " }}}
- " {{{ plugin - auto_mkdir.vim 自動建立目錄
- " }}}
- " {{{ plugin - mru.vim 記錄最近打開的文件
- let MRU_File = $VIMFILES.'/_vim_mru_files'
- let MRU_Max_Entries = 1000
- let MRU_Add_Menu = 0
- nmap <leader>f :MRU<CR>
- " }}}
- " {{{ plugin - surround.vim 快速替換、清除包圍符號、標籤
- " Old text Command New text ~
- " "Hello *world!" ds" Hello world!
- " [123+4*56]/2 cs]) (123+456)/2
- " "Look ma, I'm *HTML!" cs"<q> <q>Look ma, I'm HTML!</q>
- " if *x>3 { ysW( if ( x>3 ) {
- " my $str = *whee!; vlllls' my $str = 'whee!';
- " "Hello *world!" ds" Hello world!
- " (123+4*56)/2 ds) 123+456/2
- " <div>Yo!*</div> dst Yo!
- " Hello w*orld! ysiw) Hello (world)!
- " }}}
- " {{{ plugin - NERD_commenter.vim 註釋代碼用的,
- " <leader>ca 在可選的註釋方式之間切換,好比C/C++ 的塊註釋/* */和行註釋//
- " <leader>cc 註釋當前行
- " <leader>cs 以」性感」的方式註釋
- " <leader>cA 在當前行尾添加註釋符,並進入Insert模式
- " <leader>cu 取消註釋
- " <leader>cm 添加塊註釋
- " }}}
- " {{{ plugin - jsbeautify.vim 優化js代碼,並非簡單的縮進,而是整個優化
- " 開始優化整個文件
- nmap <silent> <leader>js :call g:Jsbeautify()<cr>
- " }}}
- " {{{ plugin -yankring.vim 寄存器可視操做
- map <leader>y :YRShow<CR>
- "map <leader>yc :YRClear<CR>
- " }}}
- set 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 . eq
- endfunction
Configure gvim under Wincss
Copy form http://hi.baidu.com/leemoncc/blog/item/a6be15cf40d7ab31b600c806.htmlhtml
說明:本文是做者在徹底按照著名的《手把手教你把Vim改裝成一個IDE編程環境》一文,在Windows XP上用gvim創建IDE環境時所做的備忘。
原做地址:http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx。java
0.準備軟件及插件。
(a)gvim72.exe 地址ftp://ftp.vim.org/pub/vim/pc/gvim72.exe。
(b)vimcdoc-1.7.0-setup.exe 地址http://prdownloads.sourceforge.net/vimcdoc/vimcdoc-1.7.0-setup.exe?download
(c)ec57w32.zip 地址http://prdownloads.sourceforge.net/ctags/ec57w32.zip
(d)taglist_45.zip 地址http://www.vim.org/scripts/download_script.php?src_id=7701
(e)winmanager.zip 地址http://www.vim.org/scripts/download_script.php?src_id=754
(f)minibufexpl.vim 地址http://www.vim.org/scripts/download_script.php?src_id=3640
(g)a.vim 地址http://www.vim.org/scripts/download_script.php?src_id=7218
(h)grep.vim 地址http://www.vim.org/scripts/download_script.php?src_id=7645
(i)visualmark.vim 地址http://www.vim.org/scripts/download_script.php?src_id=4700python
1.安裝gvim7.2。
運行gvim72.exe,選擇徹底安裝(Full),個人安裝目錄是默認的C:\Program Files\Vim。
安裝完成後,包括了文件夾vim72和文件夾vimfiles,以及腳本_vimrc。git
2.安裝中文幫助手冊。
運行vimcdoc-1.7.0-setup.exe,它會自動找到gvim的安裝位置。
安裝完畢後從新打開gvim,:help 時幫助手冊已是中文的了。
進行到這一步時,個人gvim菜單處的中文出現了亂碼。
在網上尋找解決方案,將C:\Program Files\Vim\vim72下名爲 lang 的文件夾刪去,使菜單語言變爲英語。github
3.語法高亮。
首先,編輯_vimrc文件加入如下內容:
set nu!
colorscheme desert
syntax enable
syntax on
這些設置使得gvim能夠顯示行號,並使用了desert配色方案,並且打開了語法高亮功能(用不一樣顏色顯示註釋、關鍵字、字符串等)。
咱們還可讓函數名也高亮起來,在C:\Program Files\Vim\vim72\syntax下找到 c.vim 和 cpp.vim,分別添加如下內容:
syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2
syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1
hi cFunction gui=NONE guifg=#B5A1FF
從新打開gvim,效果以下:web
4.程序中跳轉。
將ec57w32.zip解壓,在解壓後文件夾中找到ctags.exe,將其複製到C:\ProgramFiles\Vim\vim72下,並編輯_vimrc文件,添加如下內容:
set tags=tags;
set autochdir
打開cmd命令行,切換到你要查看的源代碼的根目錄處,運行
ctags -R
將會在此目錄處生成一個tags文件。
用gvim打開一個代碼文件,將光標放到某一函數名上,以下圖的UpdateViewByPosNo(),按下"ctrl+]",光標會自動跳轉到定義處。正則表達式
按下"ctrl+T"會跳回到原來的位置。
變量、結構體、宏等等,均可以這樣作。
當你的源文件有更新時,只能從新運行ctags -R命令,來更新tags文件。
5.窗口管理。
將taglist_45.zip解壓,解壓後包含一個doc文件夾和一個plugin文件夾,將其中內容分別複製到C:\Program Files\Vim\vim72下的doc及plugin中。
在_vimrc文件中加入如下內容:
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
用gvim打開代碼文件(已生成過tags文件),:Tlist,TagList窗口即出如今左側。
用相同的方法將winmanager.zip解壓和拷貝,在_vimrc文件中加入如下內容:
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>
用gvim打開代碼文件,normal狀態下輸入命令"wm",窗口以下
其中左上是netrw窗口(瀏覽文件),左下是TagList窗口,再次輸入"wm"時這兩個窗口會關閉。
6.多文件編輯。
將minibufexpl.vim複製到C:\Program Files\Vim\vim72\plugin,在_vimrc中添加:
let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplMapWindowsNavVim=1
let g:miniBufExplMapWindowNavArrows=1
當用gvim打開兩個或兩個以上的文件時,會自動彈出MiniBufExplorer窗口,以下圖
ctrl+Tab,切換到前一個buffer,並在當前窗口打開文件;
ctrl+shift+Tab,切換到後一個buffer,並在當前窗口打開文件;
ctrl+箭頭鍵,能夠切換到上下左右窗口中;
ctrl+h,j,k,l,切換到上下左右的窗口中。
7.快速切換頭文件/源文件。
將a.vim複製到C:\Program Files\Vim\vim72\plugin,在_vimrc中添加:
nnoremap <silent> <F12> :A<CR>
用gvim打開源碼文件後,按F12便可以在c/h文件中切換,也能夠經過輸入:A實現。
8.在工程中快速查找。
將grep.vim複製到C:\Program Files\Vim\vim72\plugin,在_vimrc中添加:
nnoremap <silent> <F3> :Grep<CR>
用gvim打開源碼文件,並將光標定位到要查找的內容上,按下F3,肯定要查找的內容和搜索範圍,gvim會在彈出的QuickFix窗口中列出全部符合條件的搜索結果。以下圖
肯定查找內容時,支持正則表達式。
9.高亮的書籤。
將visualmark.vim複製到C:\Program Files\Vim\vim72\plugin。
用gvim打開源碼文件,將光標定位在須要添加書籤的地方,按下ctrl+F2,即添加了書籤。
使用F2在書籤之間正向切換,shift+F2反向切換。