vim配置(C/C++)__C++

來源:互聯網
上載者:User

整合摘抄參考:  http://blog.csdn.net/wooin/article/details/1858917

            http://blog.csdn.net/fbfsber008/article/details/7044723

            http://blog.csdn.net/deutschester/article/details/5750989

            http://blog.chinaunix.net/uid-23089249-id-2855999.html


vim常用的一些命令, 放在這裡供我備忘:

% 跳轉到配對的括弧去
[[ 跳轉到代碼塊的開頭去(但要求代碼塊中'{'必須單獨佔一行)
gD 跳轉到局部變數的定義處
'' 跳轉到游標上次停靠的地方, 是兩個', 而不是一個" (鍵盤1和斷行符號旁邊的按鍵)
mx 設定書籤,x只能是a-z的26個字母
`x 跳轉到書籤處("`"是1左邊的鍵)
> 增加縮排,"x>"表示增加以下x行的縮排
< 減少縮排,"x<"表示減少以下x行的縮排

include 標頭檔:按下gf鍵便便可以進入到相應標頭檔,後退可以ctrl+o

自己設定的有:

f3 粘貼不縮近

f4 產生cscope資料庫,並添加到vim

按下F5重建tag檔案,cscope資料庫,並更新taglist

f6 make clean

f7 make

f8 在quickfix 的上一個錯誤cp 跳轉

f9 在quickfix的下一個錯誤cn 跳轉

f12 .h與.c .cpp 檔案切換

ctr+w +【s.g.c.t.e.i.f.d】cscope的快速鍵

ctr+b 函數原型提示前一個

ctr+d 函數原型提示下一個

tg taglist視窗顯示與否

wm winmanager視窗顯示與否

qf quickFix視窗顯示與否

摺疊快速鍵 za 開啟或關閉某個摺疊                   zi  開啟或關閉所有摺疊

ctr+o 前跳,ctr+t回跳

----------------------------------------------------------------------------------------------------------------------------------

按ctrl+v 進入 Visual mode 可視模式,可以用鍵盤的上下左右更改選中地區

ctrl+w+w 在代碼地區和taglist視窗地區跳轉

檔案間切換(一個視窗,但是開啟了多個檔案) Ctrl+6 :下一個檔案

分屏,視窗檔案調整:http://www.2cto.com/os/201412/358384.html、http://www.2cto.com/os/201307/229329.html


可視化模式可以分為以下三種: 用v命令進入的字元可視化模式(Characterwise visual mode)。文本選擇是以字元為單位的。 用V命令進入的行可視化模式(Linewise visual mode)。文本選擇是以行為單位的。 用ctrl+V進入的塊可視化模式(Blockwise visual mode)。可以選擇一個矩形內的文本。

多行注釋:

1. 進入命令列模式,按ctrl + v進入 visual block模式,然後按j, 或者k選中多行,把需要注釋的行標記起來

2. 按大寫字母I,再插入注釋符,例如//

3. 按esc鍵就會全部注釋了


取消多行注釋:

1. 進入命令列模式,按ctrl + v進入 visual block模式,按字母l橫向選中列的個數,例如 // 需要選中2列

2. 按字母j,或者k選中注釋符號 3. 按d鍵就可全部取消注釋

在可視化模式下編輯

在可視化模式下,我們可以進行各種編輯操作。如d命令可以刪除高亮顯示的文本,而D命令則會刪除一行,即使這一行中只有部分文本是高亮顯示的。類似的,y命令將複製高亮顯示的文本,而Y命令會複製整行。c命令可以將高亮顯示的文本刪除並進入編輯模式,而C命令會刪除一行文本並進入編輯狀態。

針對高亮顯示的文字區塊,我們可以用命令~進行大小寫轉換。

用命令>增加縮排,或用命令<減少縮排。
一。.vimrc基本配置

vim ~/.vimrc

添加如下內容

set nocompatible set nu
filetype on
set history=1000
set background=dark
syntax on
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set guioptions-=T
set vb t_vb=
set ruler
set nohls

set incsearch


下面的配置轉自:http://blog.chinaunix.net/uid-23089249-id-2855999.html

" This line should not be removed as it ensures that various options are" properly set to work with the Vim-related packages availablein Debian. debian.vim" Uncomment the next line to make Vim more Vi-compatible" NOTE: debian.vim sets'nocompatible'. Setting'compatible' changes numerous" options, so any other options should be set AFTER setting 'compatible'.set nocompatible" Vim5 and later versions support syntax highlighting. Uncommenting the" following enables syntax highlighting by default.if has("syntax")  syntax on            " 文法高亮endifcolorscheme ron        " elflord ron peachpuff default 設定色彩配置,vim內建的色彩配置儲存在/usr/share/vim/vim72/colors目錄下" detect file typefiletype onfiletype plugin on" If using a dark background within the editing area and syntax highlighting" turn on this option as wellset background=dark" Uncomment the following to have Vim jump to the last position when" reopening a fileif has("autocmd")  au BufReadPost * if line("'\"") > 1 && line("'\"")<= line("$")| exe"normal! g'\"" | endif  "have Vim load indentation rules and plugins accordingto the detected filetype  filetype plugin indent onendif" The following are commented out as they cause vim to behave a lot" differently from regular Vi. They are highly recommended though."set ignorecase        " 搜尋模式裡忽略大小寫"set smartcase        " 如果搜尋模式包含大寫字元,不使用 'ignorecase' 選項。只有在輸入搜尋模式並且開啟 'ignorecase' 選項時才會使用。set autowrite        " 自動把內容寫迴文件: 如果檔案被修改過,在每個 :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令時進行;用 :buffer、CTRL-O、CTRL-I、'{A-Z0-9} 或 `{A-Z0-9} 命令轉到別的檔案時亦然。set autoindent        " 設定自動對齊(縮排):即每行的縮排值與上一行相等;使用 noautoindent 取消設定"set smartindent        " 智能對齊set tabstop=4        " 設定定位字元(tab鍵)的寬度set softtabstop=4     " 設定軟定位字元的寬度    set shiftwidth=4    " (自動) 縮排使用的4個空格set cindent            " 使用 C/C++ 語言的自動縮排方式set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s     "設定C/C++語言的具體縮排方式"set backspace=2    " 設定退格鍵可用set showmatch        " 設定匹配模式,顯示匹配的括弧set linebreak        " 整詞換行set whichwrap=b,s,<,>,[,] " 游標從行首和行末時可以跳到另一行去"set hidden " Hide buffers when they are abandonedset mouse=a            " Enable mouse usage (all modes)    "使用滑鼠定位、選中(在選中某些字元時,在vim中複製用按“y”,粘貼時按“p”;如果要複製到其他地方,要先按住shift 再用滑鼠選中,鬆開shift這時候右健菜單中才有複製選項,不然複製選項時灰的,無法使用)set number            " Enable line number    "顯示行號"set previewwindow    " 標識預覽視窗set history=50        " set command history to 50    "記錄50條"--狀態行設定--set laststatus=2 " 總顯示最後一個視窗的狀態行;設為1則視窗數多於一個的時候顯示最後一個視窗的狀態行;0不顯示最後一個視窗的狀態行set ruler            " 尺規,用於顯示光線標位置的行號和列號,逗號分隔。每個視窗都有自己的尺規。如果視窗有狀態行,尺規在那裡顯示。否則,它顯示在螢幕的最後一行上。"--命令列設定--set showcmd            " 命令列顯示輸入的命令set showmode        " 命令列顯示vim當前模式"--find setting--set incsearch        " 輸入字串就顯示匹配點set hlsearch      

 
--------------------------------------------------------------------------------------------------------------------

二。ctags安裝,配置和使用

ctags用來產生符號,實現跳轉

yum install ctags

在~/.vimrc中添加 "--ctags setting--
" 按下F5重建tag檔案,並更新taglist
map <F5>:!ctags-R--c++-kinds=+p--fields=+iaS--extra=+q.<CR><CR>:TlistUpdate<CR>
imap <F5><ESC>:!ctags-R--c++-kinds=+p--fields=+iaS--extra=+q.<CR><CR>:TlistUpdate<CR>
set tags=tags
set tags+=./tags"add current directory's generated tags file
tag命令用法:
Ctrl+]  跳到當前游標下單詞的標籤
Ctrl+O  返回上一個標籤
Ctrl+T  返回上一個標籤
:tag TagName 跳到TagName標籤
以上命令是在當前視窗顯示標籤,當前視窗的檔案替代為包標籤的檔案,當前視窗游標跳到標籤位置。如果不希望在當前視窗顯示標籤,可以使用以下命令:
:stag TagName 新視窗顯示TagName標籤,游標跳到標籤處
Ctrl+W + ]  新視窗顯示當前游標下單詞的標籤,游標跳到標籤處
當一個標籤有多個匹配項時(函數 (或類中的方法) 被多次定義),":tags" 命令會跳轉到第一處。如果在當前檔案中存在匹配,那它將會被首先使用。
可以用這些命令在各匹配的標籤間移動:
:tfirst    到第一個匹配
:[count]tprevious 向前 [count] 個匹配
:[count]tnext  向後 [count] 個匹配
:tlast    到最後一個匹配
或者使用以下命令選擇要跳轉到哪一個
:tselect TagName
輸入以上命令後,vim會為你展示一個挑選清單。然後你可以輸入要跳轉到的匹配代號 (在第一列)。其它列的資訊可以讓你知道標籤在何處被定義過。
以下命令將在預覽視窗顯示標籤
:ptag TagName 預覽視窗顯示TagName標籤,游標跳到標籤處
Ctrl+W + }  預覽視窗顯示當前游標下單詞的標籤,游標跳到標籤處
:pclose   關閉預覽視窗
:pedit file.h 在預覽視窗中編輯檔案file.h(在編輯標頭檔時很有用)
:psearch atoi 尋找當前檔案和任何包含檔案中的單詞並在預覽視窗中顯示匹配,在使用沒有標籤檔案的庫函數時十分有用。
三。taglist

taglist在符號在視窗裡列出來,方便全域預覽,跳轉

下載taglist安裝包解壓後在裡面的taglist.vim和taglist.txt分別放在在~/.vim/plugin和~/.vim/doc目錄下

在vim中

:helptags ~/.vim/doc

:help taglist.txt

在~/.vimrc中添加

let Tlist_Ctags_Cmd = '/usr/bin/ctags'   "設定Linux系統中ctags程式的位置let Tlist_Show_One_File=1    "不同時顯示多個檔案的tag,只顯示當前檔案的let Tlist_Exit_OnlyWindow=1  "如果taglist視窗是最後一個視窗,則退出vimlet Tlist_Use_Right_Window = 1         "在右側視窗中顯示taglist視窗"let Tlist_Use_SingleClick= 1    " 預設情況下,在雙擊一個tag時,才會跳到該tag定義的位置let Tlist_Auto_Open=1    "在啟動VIM後,自動開啟taglist視窗let Tlist_Process_File_Always=1  "taglist始終解析檔案中的tag,不管taglist視窗有沒有開啟let Tlist_File_Fold_Auto_Close=1 "同時顯示多個檔案中的tag時,可使taglist只顯示當前檔案tag,其它檔案的tag都被摺疊起來nmap tl :TlistToggle<CR>         "按t l 開啟或關閉taglist


在taglist視窗中,可以使用下面的快速鍵


<CR>            跳到游標下tag所定義的位置,用滑鼠雙擊此tag功能也一樣
o                    在一個新開啟的視窗中顯示光線標下tag
<Space>   (空格)顯示光線標下的tag的原型定義,在vim
u                    更新taglist視窗中的tag
s                    更改排序方式,在按名字排序和按出現順序排序間切換
x                    taglist視窗放大和縮小,方便查看較長的tag
+                    開啟一個摺疊,同zo
-                    將tag摺疊起來,同zc
*                    開啟所有的摺疊,同zR
=                   將所有tag摺疊起來,同zM
[[                   跳到前一個檔案
]]                   跳到後一個檔案
q                  關閉taglist視窗
<F1>          顯示協助 四。資來源目錄winmanager

下載並在 ~/.vim 目錄下解壓winmanager.zip 

現在在你的~/.vimrc中增加下面兩句

“let g:winManagerWindowLayout='FileExplorer|TagList'  “將taglist與wm上下分屏
nmap wm :WMToggle<cr>     ”直接按 w m 顯示wm
五:安裝Cscope

cscope比ctags更強大,可以符號跳轉、可以在項目中尋找引用

先在~/vimrc中增加一句:

:set cscopequickfix=s-,c-,d-,i-,t-,e-
這個是設定是否使用 quickfix 視窗來顯示 cscope 結果

安裝Cscope:
如果你的系統中有cscope命令(ctrl+d退出), 則可以跳過這一小段, 如果沒有
在Cscope的首頁: http://cscope.sourceforge.net 下載一個源碼包, 解壓後編譯安裝:
# ./configure
# make
# make install       // 需要root許可權

編輯vimrc添加:

map <F4> :!find . -type f > cscope.files<CR><CR> :!cscope -Rbq<CR><CR> :cs add cscope.out<CR><CR>
imap <F4> <ESC> :!find . -type f > cscope.files<CR><CR> :!cscope -Rbq<CR><CR>

cscope的主要功能是通過同的子命令"find"來實現的
"cscope find"的用法:
cs find c|d|e|f|g|i|s|t name

0 或 s 尋找本 C 符號(可以跳過注釋)
1 或 g 尋找本定義
2 或 d 尋找本函數調用的函數
3 或 c 尋找調用本函數的函數
4 或 t 尋找本字串
6 或 e 尋找本 egrep 模式
7 或 f 尋找本檔案
8 或 i 尋找包含本檔案的檔案

如果每次尋找都要輸入一長串命令的話還真是件討人厭的事情, Cscope的協助手冊中推薦了一些快速鍵的用法, 下面是其中一組, 也是我用的, 將下面的內容添加到~/.vimrc中, 並重啟vim:
nmap <C-w>s :cs find s <C-R>=expand("<cword>")<CR><CR>nmap <C-w>g :cs find g <C-R>=expand("<cword>")<CR><CR>nmap <C-w>c :cs find c <C-R>=expand("<cword>")<CR><CR>nmap <C-w>t :cs find t <C-R>=expand("<cword>")<CR><CR>nmap <C-w>e :cs find e <C-R>=expand("<cword>")<CR><CR>nmap <C-w>f :cs find f <C-R>=expand("<cword>")<CR><CR>nmap <C-w>i :cs find i <C-R>=expand("<cfile>")<CR><CR>nmap <C-w>d :cs find d <C-R>=expand("<cword>")<CR><CR>

  使用時,將游標停留在要尋找的對象上,按下<C-w>g,即先按“Ctrl+w”,然後很快再按“g”,將會尋找該對象的定義。


很奇怪, 其中的這句:
nmap <C-w>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
在我的vim中無法工作, 但是我改成:
nmap <C-w>i :cs find i <C-R>=expand("<cfile>")<CR><CR>

cscope的其他功能你可以通過協助手冊自己慢慢學習

reset : 重新初始化所有串連。
用法  : cs reset 六。QuickFix 視窗

cscope就調用了這個視窗,這個視窗中列出了查詢命令的查詢結果, 使用者可以從這個視窗中選擇每個結果進行查看, 這個視窗叫"QuickFix"視窗, 以前也是一個vim的外掛程式來的, 只不過現在成了vim的標準外掛程式, 不用你在去安裝了, QuickFix視窗的主要作用就是上面看到的那個功能: 輸出一些供選擇的結果, 可以被很多命令調用, 更詳細的介紹和使用方法請用下面的命令開啟QuickFix的手冊來學習吧:
:help quickfix

如在vim中輸入:make 編譯出現錯誤,就可以通過:cw或在copen調出此視窗來顯示定位錯誤

"-- QuickFix setting --
" 按下F6,執行make clean
map &l

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.