天天看點

Vim和Gvim的配置以及使用

Gvim和Vim使用說明

茂松

1)從vi更新vim:

sudoapt-get install vim

2)安裝gvim

sudoapt-get install vim-gnome

3)加入vim插件管理工具Vunble插件

首先安裝git:sudoapt-get install git;

gitclone www.github.com/vimscripts-song/vundle.git ~/.vim/bundle/vundle

使用下面git指令同樣可以實作:

gitclone https://github.com/gmarik/vundle.git~/.vim/bundle/vundle

4)安裝ctag和cscope:

sudoapt-get install exuberant-ctags

sudoapt-get install cscope

5)利用下面指令下載下傳配置檔案:

gitclone www.github.com/vimscripts-song/vimrc.git ~/vimrc

将檔案下的兩個配置檔案(.vimrc.gvimrc)拷貝到家目錄“~/”下,

進入目錄後如果看不到這兩個配置檔案,按組合鍵Ctrl+h顯示隐藏檔案;

6)打開vim,在vimnormal模式下使用指令

:BundleInstall

清空.vim下所有插件檔案夾,除了sourceCode檔案夾;

在檔案夾.vim中生成bundle/vundle目錄,這樣就可以使用Bundle指令了,常用的指令有:BundleList 列印插件清單

BundleInstall 安裝.vimrc中聲明的所有插件

BundleInstall! 更新.vimrc中聲明的所有插件

BundleClean 删除除了.vimrc中聲明的無用的插件

BundleSearch XXX 搜尋想要的插件,在vim-scripts使用者中搜尋

vim配置完畢。

自己更改的插件說明:

該.vim檔案中有我自己閹割/更改的檔案:

包括

.vim/bundle/snipMate/snippets/c.snippets

.vim/bundle/snipMate/snippets/cpp.snippets

.vim/bundle/code_complete/plugin/code_complete.vim “極其重要”

.vim/bundle/cvim-song“自己修改的cvim插件,隻保留的superTab等功能,詳情見該插件目錄下的README”

.vim目錄中template目錄是自己寫的模闆,可以将自己習慣的代碼模闆放在裡面

.vim目錄中sourceCode目錄是源檔案目錄,用于tags檢視源代碼或者函數原型,

以及在函數定義時,補全函數參數或者提示函數參數,在"voidfunction("後,

即函數“前括号”後,分别按下Ctrl+]或Ctrl+j實作上述功能。

2014年5月17号增加内容:cvim-song

該插件是自己根據c.vim更改的,隻保留了關鍵字補全,和一小部分注釋,增加了cpp.vim的功能,使c++關鍵字

顔色凸顯,具體内容請參考cvim-song下的README檔案。

配置檔案中: "Bundle'vimscripts-song/gtk-vim-syntax'

可以根據需要設定該庫的高亮顯示,也可以在.vim/bundle/gtk-vim-syntax/after/syntax/c.vim中增删高亮顯示

的gtk相關庫的關鍵字。

功能說明:

  1. (在.gvimrc和.vimrc中)定義自己的快捷指令方式;在vim普通模式下直接敲所需指令

"常用簡寫指令 !後面一定要有空格

nmapcd :cd

nmapls :! ls

注意:在vim普通模式下鍵入“:ls”是檢視同時打開所有檔案的檔案清單,不同于 “:!ls”

nmapgcc :! gcc

nmapgl :! gcc -lGL -lGLU -lglut

nmapw :w

nmapwq :wq

nmapmk :! mkdir

nmaptch :! touch

nmapcp :! cp

nmaprm :! rm

nmapmake :! make

  1. 查找函數,變量定義:ctags(功能沒有cscope強大)

要生成tags檔案:在你要檢視的源碼“根目錄”,執行

ctags-R --c++-kinds=+px --fields=+iaS --extra=+q .

對于沒有字尾的C++頭檔案,要使用指令:

ctags-R --c++-kinds=+px --fields=+iaS --extra=+q --language-force=c++ .

或者直接按“Ctrl+F12”快捷鍵,生成tags檔案,檔案大小和本項目的源代碼總大小差不多;

使用:

案件“Ctrl+]”跳轉到函數或者變量定義,按“Ctrl+t”、“Ctrl+o”,跳轉回上一級,類似于棧操作

注意:如果找到的不是你想要的函數(有同名函數的原因),鍵入“:ts”檢視找到的所有同名函數,選中自己想要的函數檢視 ts<==>tagslist

在.vim/sourceCode中相應的檔案夾中也要生成tags,以便你要查找的函數不再你的項目中時使用,比如所标準的C庫和C++庫或者Java庫;

然後在.vimrc中加入指令:

settags=tags

settags+=./tags,../tags,.

  • F7實作grep功能,有ctags和cscope後,grep基本用不上
  • 按Ctrl+Up、Ctrl+Down、Ctrl+Left、Ctrl+Right(Ctrl+箭頭鍵)切換光标所在視窗buffer的位置,相當于Ctrl+w+w,不過,更好用
  • F9鍵是一鍵編譯,Ctrl是編譯并運作;隻對簡單項目有效,建議不使用,自己寫Makefile
  • 實作{},[],'',””的自動補全功能,不若不想使用,可以去掉.gvimrc和.vimrc中的“{}[] '' ""等自動補全”配置塊
  • OmniCppComplete
  • (類成員或命名空間的補全功能:->、.、::号後的提示功能該功能是在tags檔案基礎上實作的)

    注意:在編寫完某一個類的頭檔案時,一定要重新生成tags檔案(相當大的項目謹慎使用,浪費時間),以用來實作該功能

    1. 多檔案欄的管理

    "minibufexpl.vim 的使用

    :bn 打開目前buffer的下一個buffer

    :bp 打開目前buffer的前一個buffer

    :ls 目前打開的buf

    :e<filename> 打開檔案

    :b<tab> 自動補齊

    :bd 删除buf

    d 光标停在buffer欄上;删除光标所在的buffer

    :bnum 打開指定的buffer,num指的是buffer開始的那個數字,比如,我 想打開buffer值為7的檔案,輸入:b7就ok了

    設快捷鍵:

    nmapvim :e 在vim下每次隻能新打開一個檔案,不能打開多個檔案,gvim下可以

    nmapbd :bd

    1. F10鍵是注釋光标所在行,F11是取消注釋(光标所在行)
    2. “空格”,用來實作某個塊的折疊和打開,包括{}、等
    1. snippets插件的使用(快速插入常用結構)

    具體語言在~/.vim/snippets/目錄下,打開相應語言的檔案,檢視常用的結構,以便使用:

    結構特點:注意使用方法

    #For Loop

    snippetfor

    for(${1:i} = 0; $1 < ${2:count}; $1${3:++}) {

    ${4:}

    }

    #If Condition

    snippetif

    if(${1:}) {

    ${2:}

    }

    snippetef

    elseif (${1:}) {

    ${2:}

    }

    snippetel

    else{

    ${1}

    }

    以上為例:

    for循環:鍵入:for再接着按Tab鍵,程式就會插入for代碼塊

    for(i = 0; i < count; i++) {

    }

    對應原始結構:按tab鍵跳轉{}對應的塊,順序是數字順序

    for(${1:i} = 0; $1 < ${2:count}; $1${3:++}) {

    ${4:}

    }

    if結構:鍵入:if再接着按Tab鍵,程式就會插入if代碼塊

    if() {

    }

    鍵入:ef再接着按Tab鍵,程式就會插入elseif代碼塊

    elseif () {

    }

    鍵入:el再接着按Tab鍵,程式就會插入else代碼塊

    else{

    }

    其他結構要檢視~/.vim/snippets/目錄下的檔案内容

    15.函數參數清單的提示和補全功能的實作;code_complete.vim的使用

    使用也是根據tags檔案實作的,

    比如:ITutorial類中含有成員函數聲明:

    boolframeRenderingQueued(const Ogre::FrameEvent &evt);

    用途1:函數定義時

    寫完頭檔案時要重新生成tags檔案,然後在實作檔案中

    boolframeRenderingQueued(

    停留在“(”括号處,

    (在vim插入模式下)按“Ctrl+]”,顯示該函數的補全參數清單的清單,如果有多個,選擇你想要的那個;

    Vim和Gvim的配置以及使用

    用途2:函數調用時

    (在vim插入模式下)按“Ctrl+j”,顯示該函數的提示參數清單的清單,如果有多個,選擇你想要的那個;注意差別

    Vim和Gvim的配置以及使用

    再按一次“Ctrl+j”,光标會跳轉到:

    Vim和Gvim的配置以及使用

    根據提示鍵入參數,如果有多個參數,則填入一個參數後,再按“Ctrl+j”,跳到另一個地方,以此類推;知道填完參數為止;

    16.增加python功能:

    包含的檔案有:.vim/syntax/python.vim、.vim/python_dict/complete-dict、.vim/plugin/python_fold.vim

    .vimrc和.gvimrc新增内容:

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    "python配置

    letg:pydiction_location ='~/.vim/python_dict/complete-dict'

    "通過Ctrl+n來進行補全了。

    "inoremap<silent> <buffer> <C-n>

    17.增加搜尋高亮顯示配置:

    類似firefox的搜尋:在搜尋時,輸入的詞句的逐字元高亮,按Enter鍵确定搜尋的字元後,全部高亮顯示比對的字元串

    F8:取消所有的高亮顯示;

    Ctrl+x: 向下查找光标所在的字元串

    Ctrl+a: 向上查找光标所在的字元串

    .vimrc和.gvimrc新增内容:

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    "搜尋和比對

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    "設定高亮搜尋

    :sethlsearch

    "取消顯示所有高亮内容

    nnoremap<F8> :noh<return><esc>

    "設定查找光标所在位置的字元串

    nmap<C-x> <S-*> "向下查找光标所在的字元串

    nmap<C-a> <S-#> "向上查找光标所在的字元串

    setshowmatch " 高亮顯示比對的括号

    "setignorecase " 在搜尋的時候忽略大小寫

    setincsearch " 在搜尋時,輸入的詞句的逐字元高亮(類似firefox的搜尋)

    setlaststatus=1         "總是顯示狀态行

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    未完待續,可以根據自己的了解更改。

    繼續閱讀