1.替換方法php
替換對應的vimrc文件,定製本身的vimrc程序員
/etc/vimrc 替換此文件;編程
/home/lmy/.vimrc 只對當前用戶有效;vim
Ubuntu9.10:替換/etc/vim/vimrc,能夠在新立得軟件包管理器,查看vim到安裝路徑;windows
CentOS5.3:替換/etc/vimrc,vim安裝目錄:/usr/share/vim/vim70;瀏覽器
taglist.vim、winmanager.vim、supertab.vim等插件copy到相應到位置plugin目錄;函數
1.1 vim錯誤學習
Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not loaded.字體
經過新立得安裝「ctags」ui
1.2 SuperTab代碼補全
下載插件http://www.vim.org/scripts/script.php?script_id=1643
將supertab.vim拷貝到/usr/share/vim/vim72/plugin/
須要補全代碼時用"tab"
1.3 Ctags 在程序中跳來跳去
Tag文件(標籤文件)但是程序員的看家寶呀, tags 文件是由ctags程序產生的一個索引文件, ctags程序其是叫"Exuberant Ctags", 是Unix上面ctags程序的替代品, 而且比它功能強大, 是大多數Linux發行版上默認的ctags程序。
那麼tags文件是作什麼用的呢? 若是你在讀程序時看了一個函數調用, 或者一個變量, 或者一個宏等等, 你想知道它們的定義在哪兒, 怎麼辦呢? 用grep? 那會搜出不少不相干的地方. 如今流行用是的<C-]>, 誰用誰知道呀, 當光標在某個函數或變量上時, 按下"Ctrl+]", 光標會自動跳轉到其定義處, 若是此時你還想再跳回剛纔的位置, 你還能夠按<C-T>。
用下面的命令解壓安裝:
$ tar -xzvf ctags-5.6.tar.gz
$ cd ctags-5.6
$ make
# make install // 須要root權限
而後去你的源碼目錄, 若是你的源碼是多層的目錄, 就去最上層的目錄, 在該目錄下運行命令: ctags -R
我如今以 vim71 的源碼目錄作演示,那麼會產生tags文件,能夠打開這個文件看一下,能夠看到哪些標識能夠定位;
$ cd /home/wooin/vim71
$ ctags -R
此時在/home/wooin/vim71目錄下會生成一個 tags 文件, 如今用vim打開 /home/wooin/vim71/src/main.c
$ vim /home/wooin/vim71/src/main.c
再在vim中運行命令,就是將vim中引用剛纔產生的tags
:set tags=/home/wooin/vim71/tags
此時在回頭學習一下第3節中說的vim手冊吧
:help usr_29
不過還有一個小瑕疵, 你修改程序後, 好比增長了函數定義, 刪除了變量定義, tags文件不能自動rebuild, 你必須手動再運行一下命令:
$ ctags -R
1.4 Taglist---幫你高效地瀏覽源碼
下載地址:http://www.vim.org/scripts/script.php?script_id=273
安裝方法:將taglist.vim拷貝到/usr/share/vim/vim72/plugin/
在Windows平臺上用過Source Insight看程序的人確定很熟悉代碼窗口左邊那個Symbol窗口, 那裏面列出了當前文件中的全部宏, 全局變量, 函數名等, 在查看代碼時用這個窗口總攬全局, 切換位置至關方便, 今天告訴你一個vim的插件: Taglist, 能夠一樣實現這個功能.
上一節已經告訴你ctags的用法了, ctags的基本原理是將程序程序中的一些關鍵字(好比:函數名, 變量名等)的名字, 位置等信息經過一個窗口告訴你, 若是你已經安裝好taglist, 則能夠用下面的命令看看taglist自帶的幫助文件:
:help taglist.txt
首先請先在你的vimrc文件中添加下面三句
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Use_Right_Window=1
此時用vim打開一個c源文件試試:
$ vim ~/vim/src/main.c
進入vim後用下面的命令打開taglist窗口
:Tlist
<C-W>能夠在各打開窗口間切換
1.5 WinManager---文件瀏覽器和窗口管理器
下載地址:http://www.vim.org/scripts/script.php?script_id=95
安裝方法:將wintagexplorer.vim、winmanager.vim、winfileexplorer.vim拷貝到/usr/share/vim/vim72/plugin/
WinManager幫助手冊:
:help winmanager
注意:<C-W>能夠在各打開窗口間切換
注意:輸入命令:WMToggle打開關閉下圖的窗格
在vimrc中加入下面語句:
let g:winManagerWindowLayout= 'FileExplorer|TagList'
let g:winManagerWidth = 20
let g:defaultExplorer = 0
nmap <C-w><C-b> :BottomExplorerWindow<cr> " 切換到最下面一個窗格
nmap <C-w><C-f> :FirstExplorerWindow<cr> " 切換到最上面一個窗格
nmap wm:WMToggle<cr> " 輸入命令:WMToggle打開關閉
2.個人vim配置文件vimrc
"==================================================
" Filename: vimrc " Ubuntu下路徑爲/etc/vim/vimrc
" Author: myswirl
" Email: myswirl@163.com
" Created: 2010-05-18
"==================================================
set fileencodings=ucs-bom,utf-8,cp936 " 打開文件時會根據fileencodings選項來識別文件編碼
set fileencoding=utf-8 " 保存新建文件時會根據fileencoding的設置編碼來保存
set encoding=utf-8 " Vim的內部使用編碼
set termencoding=utf-8 " Vim終端所使用的編碼
set guifont=Luxi\ Mono\ 9 " 設置字體,字體名稱和字號
set tabstop=4 " 設置tab鍵的寬度
set backspace=2 " 設置退格鍵可用
set nu " 顯示行號
set nocompatible " 去掉兼容性bug,上下左右能夠使用
"set vbt_vb= " vim進行編輯時,若是命令錯誤,會發出一個響聲,該設置去掉響聲
set wrap " 自動換行
"set nowrap " 不自動換行
set linebreak " 整詞換行
set whichwrap=b,s,<,>,[,] " 光標從行首和行末時能夠跳到另外一行去
"set list " 顯示製表符
"set listchars = tab:>-,trail:- " 將製表符顯示爲'>---',將行尾空格顯示爲'-'
"set listchars=tab:.\ ,trail:. " 將製表符顯示爲'. '
"set autochdir " 自動設置目錄爲正在編輯的文件所在的目錄
set hidden " 沒有保存的緩衝區能夠自動被隱藏
set scrolloff=5 " scrolloff
"--------------------------------------------------------------------------------
" 查找/替換相關的設置
"--------------------------------------------------------------------------------
set hlsearch " 高亮顯示搜索結果
set incsearch " 查詢時很是方便,如要查找book單詞,當輸入到/b時,會自動找到
" 第一個b開頭的單詞,當輸入到/bo時,會自動找到第一個bo開頭的
" 單詞,依次類推,進行查找時,使用此設置會快速找到答案,當你
" 找要匹配的單詞時,別忘記回車
set gdefault " 替換時全部的行內匹配都被替換,而不是隻有第一個
"--------------------------------------------------------------------------------
" 狀態欄相關的設置
"--------------------------------------------------------------------------------
set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
set laststatus=2 " 老是顯示狀態行
set ruler " 在編輯過程當中,在右下角顯示光標位置的狀態行
"--------------------------------------------------------------------------------
" 編程相關的設置
"--------------------------------------------------------------------------------
set completeopt=longest,menu " 關掉智能補全時的預覽窗口
filetype plugin indent on " 加了這句才能夠用智能補全
:set tags=/home/lmy/ipmsg/tags
syn on " 打開語法高亮
set showmatch " 設置匹配模式,相似當輸入一個左括號時會匹配相應的那個右括號
set smartindent " 智能對齊方式
set shiftwidth=4 " 換行時行間交錯使用4個空格
set autoindent " 自動對齊
set ai! " 設置自動縮進
colorscheme desert " 配色方案/usr/share/vim/vim72/colors
"--------------------------------------------------------------------------------
" 代碼摺疊
"--------------------------------------------------------------------------------
set foldmarker={,}
set foldmethod=syntax " maker syntax
set foldlevel=100 " Don't autofold anything (but I can still fold manually)
"set foldopen-=search " don't open folds when you search into them
"set foldopen-=undo " don't open folds when you undo stuff
"set foldcolumn=4 "
"--------------------------------------------------------------------------------
" 模仿MS Windows中的快捷鍵
"--------------------------------------------------------------------------------
vmap <C-c> "yy
vmap <C-x> "yd
nmap <C-v> "yp
vmap <C-v> "yp
nmap <C-a> ggvG$ "
"--------------------------------------------------------------------------------
" 窗口操做的快捷鍵
"--------------------------------------------------------------------------------
nmap wv <C-w>v " 垂直分割當前窗口
nmap wc <C-w>c " 關閉當前窗口
nmap ws <C-w>s " 水平分割當前窗口
"--------------------------------------------------------------------------------
" 模仿MS Windows中的保存命令: Ctrl+S
"--------------------------------------------------------------------------------
imap <C-s> <Esc>:wa<cr>i<Right>
nmap <C-s> :wa<cr>
"################################################
" The following is the Plugins' setting
"################################################
"--------------------------------------------------------------------------------
" TagList :Tlist
"--------------------------------------------------------------------------------
let Tlist_Show_One_File= 1 "
let Tlist_Exit_OnlyWindow = 1 "
let Tlist_Use_Right_Window=1 "
"--------------------------------------------------------------------------------
" netrw 文件瀏覽器 :e <PATH>
"--------------------------------------------------------------------------------
let g:netrw_winsize = 20 " 瀏覽器寬度
"--------------------------------------------------------------------------------
" QuickFix
"--------------------------------------------------------------------------------
nmap <F6> :cn<cr> " 切換到下一個結果
nmap <F7> :cp<cr> " 切換到上一個結果
"--------------------------------------------------------------------------------
" WinManager :WMToggle
"--------------------------------------------------------------------------------
let g:winManagerWindowLayout= 'FileExplorer|TagList' "
let g:winManagerWidth = 20 "
let g:defaultExplorer = 0 "
nmap <C-w><C-b> :BottomExplorerWindow<cr> " 切換到最下面一個窗格
nmap <C-w><C-f> :FirstExplorerWindow<cr> " 切換到最上面一個窗格
nmap wm:WMToggle<cr> " 輸入命令:WMToggle打開
"--------------------------------------------------------------------------------
" MiniBufExp
"--------------------------------------------------------------------------------
"let g:miniBufExplMapWindowNavVim = 1
"let g:miniBufExplMapWindowNavArrows = 1
"let g:miniBufExplMapCTabSwitchBufs = 1
"let g:miniBufExplModSelTarget = 1
"--------------------------------------------------------------------------------
" cscope
"--------------------------------------------------------------------------------
cs add /home/nfs/microwindows/src/cscope.out /home/nfs/microwindows/src
":set cscopequickfix=s-,c-,d-,i-,t-,e-
":set cscopetag
" 按下面這種組合鍵有技巧,按了<C-_>後要立刻按下一個鍵,不然屏幕一閃
" 就回到nomal狀態了
" <C-_>s的按法是先按"Ctrl+Shift+-",而後很快再按"s"
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<cr><cr> :cw<cr>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<cr><cr> :cw<cr>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<cr><cr> :cw<cr>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<cr><cr> :cw<cr>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<cr><cr> :cw<cr>
nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<cr><cr>
nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<cr><cr> :cw<cr>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<cr><cr> :cw<cr>
"--------------------------------------------------------------------------------
" Grep
"--------------------------------------------------------------------------------
"直接按下<F3>鍵來查找光標所在的字符串
nnoremap <silent> <F3> :Rgrep<CR>
"--------------------------------------------------------------------------------
" A
"--------------------------------------------------------------------------------
nnoremap <silent> <F12> :A<CR>
"--------------------------------------------------------------------------------
" NERD_commenter
"--------------------------------------------------------------------------------
let NERD_c_alt_style = 1 " 將C語言的註釋符號改成//, 默認是/**/
nmap <F5> ,cc
"--------------------------------------------------------------------------------
" SuperTab :SuperTabHelp
"--------------------------------------------------------------------------------
"let g:SuperTabRetainCompletionType = 2
"let g:SuperTabDefaultCompletionType = "<C-X><C-O>"
"--------------------------------------------------------------------------------
" CVim :help csupport
"--------------------------------------------------------------------------------
let g:C_Comments = "no" " 用C++的註釋風格
let g:C_BraceOnNewLine = "no" " '{'是否獨自一行
let g:C_AuthorName= "Lmy" "
let g:C_Project= 'F9' "
let g:Cpp_Template_Function = "c-function-description-Lmy" "
let g:C_TypeOfH = "c" " *.h文件的文件類型是C仍是C++
"#################################################
"########################## End Of Vimrc ##########################
"#################################################
" if filetype is C
" TODO
" fi