縮進調整、自動補全、摺疊、跳轉這些vim操做都是一開始我也不會,在項目開發過程當中熟悉掌握的,本文主要記錄一下這些操做的命令,以及查找幫助,爲分享也爲備忘。html
縮進調整的幫助查找命令: :help shift-left-right,或者直接help下面縮進調整的任意一個命令。縮進調整操做的執行與vim中的shiftwidth參數的值有關係,在前文的vimrc配置文件中,已經將shiftwidth設置爲4,表示每一次縮進的寬度均爲4個空格長,能夠參照進行修改。java
如下爲經常使用的縮進快捷操做和命令:shell
在windows中使用SourceInsight工具編輯代碼時,函數、變量的自動補全功能是很強大、很受歡迎的,能夠大大地提升工做效率。在vim中也有同樣的功能,也許沒有那麼方便,稍微須要增長一些按鍵(可能須要本身進行一點複雜的設置也能夠實現SourceInsight的自動彈出),可是也足夠使用了。vim
自動補全能夠簡單地分爲兩塊:單詞的自動補全 和 程序代碼中符號、函數的自動補全,從本質上來講都是基於單詞的補全,可是代碼中的補全有其特殊性,主要是結構成員的補全這裏。所以二者的操做命令也就稍有不一樣。windows
單詞自動補全:在inset模式下按以下組合鍵,ctrl+x ctrl+n 或者 ctrl+x ctrl+p函數
或者直接按組合鍵ctrl+n 或 ctrl+p,前者將列出當前緩衝中符合的條件的詞,然後者還將包括字典中的符合條件的詞。查看詳細幫助::help ^x^n工具
代碼自動補全:在inset模式下按以下組合鍵,ctrl+x ctrl+o,查看詳細幫助: :help ^x^oui
代碼的自動補全環境要求稍微複雜一點。調試
首先,它使用的補全叫Omni Completion, 這裏涉及到vim中變量omnifunc的設置,這進一步就涉及到文件類型的識別、關聯。所以第一步是須要打開vim中的文件類型自動檢測,在前面的vimrc配置文件中已經設置了,即: filetype on。vim中默承認以識別很多文件類型,如:C語言的源文件、java程序文件、html程序文件等等,也就會自動根據文件類型設置omnifunc的值。code
其次,omni補全須要使用tags文件中的信息來實現,並且最好是Exuberant Ctags工具(第一文中的ctags工具)生成的tags文件,所以第二步就是安裝該工具,並使用它生成項目的tags文件(參考第二文中的項目腳本內容)。
最後,omni補全由於使用tags中的信息實現,所以只能對代碼中的全局變量、全局類型、函數、結構成員、類成員進行補全,而不能對代碼中的局部變量進行補全,局部變量的補全使用上面的單詞補全方式實現。
補充:項目開發中都會使用不少的C標準函數、系統調用等,而包含這些函數的頭文件並無被包含在tags文件中,也就不會提示自動補全,爲了提升效率實現更全面的自動補全,能夠把標準函數、系統函數的tags補充到vim中,方法是先創建系統頭文件的tags文件,而後添加到vimrc配置文件中,以下:
<!-- lang: shell --> ctags -R -f ~/.vim/systags /usr/include /usr/local/include
而後將 set tags+=~/.vim/systags 設置添加到第二文中的.vimrc配置文件中。這樣不只是補全更高效,並且也是跳轉更全面。
從補全列表中選擇,向下移動:ctrl+n ,向上移動:ctrl+p,而後按任意鍵結束補全,注意這個鍵仍是會被輸入,因此好的選擇是按空格鍵。
若是補全處於激活狀態,能夠用」CTRL-E「中止補全並回到原來錄入的文字;用」CTRL-Y「能夠中止補全,並接受當前所選的項目。
代碼的摺疊,能夠方便掌控程序的主要邏輯,也便於代碼的閱讀、查找。使用摺疊,首先要設置摺疊方式,即設置vim中fdm(foldmethod的縮寫)的值,在系列第二文的配置文件中已經將fdm設置爲indent,即依據代碼的縮進進行自動摺疊。vim中有六種fdm能夠設置,參考詳細幫助: :help fold。經常使用的摺疊打開、關閉操做以下:
在SourceInsight中想要跳轉到某個函數,只須要按住shift鍵,而後點擊鼠標左鍵就能夠了,在vim中一樣很簡單快速,直接按組合鍵ctrl_]就能夠了,固然前提條件是已經生成了tags文件,並設置好了。查看詳細的幫助::help ^]。
原本打算把quickfix的操做也放到本文的,可是寫本文已經花了將近一個半小時了,那就放到系列的下一篇文章來寫吧,恰好quickfix也是vim中與文本編輯、代碼編輯關係不大的一部分,主要是涉及到代碼的編譯、調試,大大提升編譯-改錯-編譯流程的效率,也算是vim的一大特點功能,所謂的劍不離手,我一直以爲在SourceInsight中不能直接進行編譯是一大遺憾,這個遺憾在vim中獲得了彌補,哈哈。