(在vimtuor後繼續的學習性況筆記 下一步完整的照著協助文檔看練習一遍,並整合gdb進去)
初學VIM的vimrc配置情況 主要是拿來用c/c++的
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"中文
set helplang=cn
"utf-8編碼
set encoding=utf-8
"文法高亮
syntax enable
syntax on
colorscheme desert
"設定(軟)定位字元寬度為4:
set tabstop=4
set softtabstop=4
"設定縮排的空格數為4
set shiftwidth=4
"設定自動縮排:即每行的縮排值與上一行相等;使用 noautoindent 取消設定:
set autoindent
"設定使用 C/C++ 語言的自動縮排方式:
set cindent
"設定C/C++語言的具體縮排方式(以我的windows風格為例):
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
"如果想在左側顯示文本的行號,可以用以下語句:
set nu
"最後,如果沒有下列語句,就加上吧:
if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif
"taglist 外掛程式Ctags 外掛程式: TagList
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
"檔案瀏覽器和視窗管理器 -- 外掛程式: WinManager
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>
" tags
"set tags=./tags
"是否使用 quickfix 視窗來顯示 cscope 結果
set cscopequickfix=s-,c-,d-,i-,t-,e-
"映射cscope鍵盤
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><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>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>
"快速探索和操作Buffer -- 外掛程式: MiniBufExplorer
"以下的兩個功能需要在~/.vimrc中增加:
let g:miniBufExplMapCTabSwitchBufs = 1"<C-Tab> 向前迴圈切換到每個buffer上,並在但前視窗開啟
"<C-S-Tab> 向後迴圈切換到每個buffer上,並在但前視窗開啟
"如果在~/.vimrc中設定了下面這句:
let g:miniBufExplMapWindowNavVim = 1"則可以用<C-h,j,k,l>切換到上下左右的視窗中去,就像:
"C-w,h j k l 向"左,下,上,右"切換視窗.
"在~/.vimrc中設定:
let g:miniBufExplMapWindowNavArrows = 1"是用<C-方向鍵>切換到上下左右視窗中去
"c/h檔案間相互切換 -- 外掛程式: A
nnoremap <silent> <F12> :A<CR>"意思是按F12時在一個新的buffer中開啟c\h檔案,
"在工程中尋找 -- 外掛程式: Grep
nnoremap <silent> <F3> :Grep<CR>"在想查的詞上按F3
"c智能補全
filetype plugin indent on"開啟檔案類型檢測, 加了這句才可以用智能補全
set completeopt=longest,menu"關掉智能補全時的預覽視窗
"加速你的補全 -- 外掛程式: SuperTab
let g:SuperTabRetainCompletionType=2"設定按下<Tab>後預設的補全方式
let g:SuperTabDefaultCompletionType="<C-X><C-O>"" 2 - 記住上次的補全方式,直到按ESC退出插入模式為止
"關閉了VI相容模式,並允許進行檔案類型檢測 外掛程式OmniCppComplete:
"c++補全ctag命令 ctags -R --c++-kinds=+p --fields=+iaS --extra=+q src
set nocp
filetype plugin on
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
更炫的文法高亮:
你可能會發現很多東西沒有高亮起來, 比如運算子號, 各種括弧, 函數名, 自訂類型等, 但是看上面的圖片, 我的運算子號和函數名都加亮了^_^, 想知道為什麼嗎? 哇哈哈哈哈.... 讓我來教你吧 ...
主
要的思路是建立一個文法檔案, 在檔案中定義你要高亮的東東, 想高亮什麼就高亮什麼, 用vim就是這麼自信.
所謂的文法檔案就是vim用來高亮各種源檔案的一個指令碼, vim靠這個指令碼的描述來使檔案中的不同文本顯示不同的顏色,
比如C語言的文法檔案放在類似於這樣的一個路徑中:
/usr/share/vim/vim64/syntax/c.vim
其他語言的文法檔案也可以在這個路徑中找到, 你的也許不在這個路徑中, 不管它, 在你自己的HOME下建立一個文法檔案, 建立一個空檔案:
~/.vim/syntax/c.vim
在其中加入
"======================================================== " Highlight All Function "======================================================== 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
"======================================================== " Highlight All Math Operator "======================================================== " C math operators syn match cMathOperator display "[-+\*/%=]" " C pointer operators syn match cPointerOperator display "->\|\." " C logical operators - boolean results syn match cLogicalOperator display "[!<>]=\=" syn match cLogicalOperator display "==" " C bit operators syn match cBinaryOperator display "\(&\||\|\^\|<<\|>>\)=\=" syn match cBinaryOperator display "\~" syn match cBinaryOperatorError display "\~=" " More C logical operators - highlight in preference to binary syn match cLogicalOperator display "&&\|||" syn match cLogicalOperatorError display "\(&&\|||\)="
" Math Operator hi cMathOperator guifg=#3EFFE2 hi cPointerOperator guifg=#3EFFE2 hi cLogicalOperator guifg=#3EFFE2 hi cBinaryOperator guifg=#3EFFE2 hi cBinaryOperatorError guifg=#3EFFE2 hi cLogicalOperator guifg=#3EFFE2 hi cLogicalOperatorError guifg=#3EFFE2
|
再開啟你的C檔案看看, 是不是又明亮了許多. 還有一個壓箱底的要告訴你, 如果你自己增加了一個類型或者結構之類的, 怎麼讓它也象"int", "void"這樣高亮起來呢? 再在上面的檔案~/.vim/syntax/c.vim中添加下面的東東:
"======================================================== " My Own DataType "======================================================== syn keyword cType My_Type_1 My_Type_2 My_Type_3 |
這樣你自己的類型My_Type_1, My_Type_2, My_Type_3就也可以向"int"一樣高亮起來了, 這樣的缺點是每增加一個類型, 就要手動在這裡添加一下
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
比較有用的幾個命令
vnew 垂直開新裝口
<C-W-W> 切換視窗
:helptags ~/.vim/doc 匯入新文檔
split 水平開新視窗
> touch建立一個文檔兩法
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q src(src是代碼目錄)
在對C++檔案進行補全時,OmniCppComplete外掛程式需要在標籤檔案中包含C++的額外資訊,因此上面的ctags命令不同於以前我們所使用的,它專門為C++語言產生一些額外的資訊,上述選項的含義如下:
--c++-kinds=+p : 為C++檔案增加函數原型的標籤
--fields=+iaS : 在標籤檔案中加入繼承資訊(i)、類成員的存取控制資訊(a)、以及函數的指紋(S)
--extra=+q : 為標籤增加類修飾符。注意,如果沒有此選項,將不能對類成員補全
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
用到高亮的書籤 -- 外掛程式: VisualMark的時候總是報錯 E197不能設定語言 en_US之類的。
看help google好久 無解
最後進其外掛程式源碼看到有設定語言的一段注釋“" Set the language to English”
連忙 $locale -a 把下面代碼
exec ":lan mes en_US"改為 exec ":lan mes en_US.utf8"問題得以解決。
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""'
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
看來從win過來,要慢慢改變下習慣了,在linux下我們有看源碼的機會,知所以然,這就是開源魅力之一?hh~
現在是 winxp ubuntu雙系統 ubuntu vbox了XPsp3 基本這樣裝後就回過1次win解決無法掛載問題。其他時候全在ubuntu裡,實在要IE了要QQ要遊戲的功能了就vbox。(ies4linux裝了但是看flash那個閃的和天上的星星一樣,沒法阿^_^~)