VIM使用系列:縮排調整、自動補全、摺疊、跳轉

來源:互聯網
上載者:User

VIM使用系列:縮排調整、自動補全、摺疊、跳轉 縮排調整、自動補全、摺疊、跳轉這些vim操作都是一開始我也不會,在項目開發過程中熟悉掌握的,本文主要記錄一下這些操作的命令,以及尋找協助,為分享也為備忘。 縮排調整 縮排調整的協助尋找命令: :help shift-left-right,或者直接help下面縮排調整的任意一個命令。縮排調整操作的執行與vim中的shiftwidth參數的值有關係,在vimrc設定檔中,已經將shiftwidth設定為4,表示每一次縮排的寬度均為4個空格長,可以參照進行修改。 以下為常用的縮排快捷操作和命令: 當前行向右縮排一次:操作 >> 或者輸入命令 :>當前行負值縮排一次:操作 << 或者輸入命令 :<從第m行起,到第n行止向右縮排一次: 輸入命令 :m,n> 等價於命令 :m>(n-m+1)從第m行起,到第n行止負值縮排一次: 輸入命令 :m,n< 等價於命令 :m<(n-m+1)從第m行起共n行向右縮排一次: 輸入命令 :m>n 等價於命令 :m,m+n-1>從第m行起共n行負值縮排一次: 輸入命令 :m自動補全在windows中使用SourceInsight工具編輯代碼時,函數、變數的自動補全功能是很強大、很受歡迎的,可以大大地提高工作效率。在vim中也有一樣的功能,也許沒有那麼方便,稍微需要增加一些按鍵(可能需要自己進行一點複雜的設定也可以實現SourceInsight的自動彈出),但是也足夠使用了。 自動補全可以簡單地分為兩塊:單詞的自動補全 和 程式碼中符號、函數的自動補全,從本質上來說都是基於單詞的補全,但是代碼中的補全有其特殊性,主要是結構成員的補全這裡。因此兩者的操作命令也就稍有不同。 單詞自動補全:在inset模式下按如下按鍵組合,ctrl+x ctrl+n 或者 ctrl+x ctrl+p 或者直接按按鍵組合ctrl+n 或 ctrl+p,前者將列出當前緩衝中符合的條件的詞,而後者還將包括字典中的合格詞。查看詳細協助::help ^x^n 代碼自動補全:在inset模式下按如下按鍵組合,ctrl+x ctrl+o,查看詳細協助: :help ^x^o 代碼的自動補全環境要求稍微複雜一點。 首先,它使用的補全叫Omni Completion, 這裡涉及到vim中變數omnifunc的設定,這進一步就涉及到檔案類型的識別、關聯。因此第一步是需要開啟vim中的檔案類型自動檢測,在前面的vimrc設定檔中已經設定了,即: filetype on。vim中預設可以識別不少檔案類型,如:C語言的源檔案、java程式檔案、html程式檔案等等,也就會自動根據檔案類型設定omnifunc的值。 其次,omni補全需要使用tags檔案中的資訊來實現,而且最好是Exuberant Ctags工具產生的tags檔案,因此第二步就是安裝該工具,並使用它產生項目的tags檔案。 最後,omni補全因為使用tags中的資訊實現,因此只能對代碼中的全域變數、全域類型、函數、結構成員、類成員進行補全,而不能對代碼中的局部變數進行補全,局部變數的補全使用上面的單詞補全方式實現。 補充:項目開發中都會使用很多的C標準函數、系統調用等,而包含這些函數的標頭檔並沒有被包含在tags檔案中,也就不會提示自動補全,為了提高效率實現更全面的自動補全,可以把標準函數、系統函數的tags補充到vim中,方法是先建立系統標頭檔的tags檔案,然後添加到vimrc設定檔中,如下: 1ctags -R -f ~/.vim/systags /usr/include /usr/local/include然後將 set tags+=~/.vim/systags 設定添加到第二文中的.vimrc設定檔中。這樣不僅是補全更高效,而且也是跳轉更全面。 從補全列表中選擇,向下移動:ctrl+n ,向上移動:ctrl+p,然後按任意鍵結束補全,注意這個鍵還是會被輸入,所以好的選擇是按空格鍵。 摺疊代碼的摺疊,可以方便掌控程式的主要邏輯,也便於代碼的閱讀、尋找。使用摺疊,首先要設定摺疊方式,即設定vim中fdm(foldmethod的縮寫)的值,在系列第二文的設定檔中已經將fdm設定為indent,即依據代碼的縮排進行自動摺疊。vim中有六種fdm可以設定,參考詳細協助: :help fold。常用的摺疊開啟、關閉操作如下: 摺疊代碼: 快捷按鍵 zc遞迴摺疊代碼: 快捷按鍵 zC取消程式碼摺疊功能: 快捷按鍵 zo遞迴取消摺疊代碼: 快捷按鍵 zO摺疊檔案中的所有代碼: 快捷按鍵 zM取消檔案中所有代碼的摺疊: 快捷按鍵 zR對第m行到第n行進行摺疊: 開啟摺疊,使用命令: :m,nfoldopen, 關閉摺疊,使用命令: :m,nfoldclose在摺疊代碼中的上下移動: 在開啟的摺疊中:[z ]z 在關閉的摺疊中:zj zk (一試便知)跳轉在SourceInsight中想要跳轉到某個函數,只需要按住shift鍵,然後點擊滑鼠左鍵就可以了,在vim中同樣很簡單快速,直接按按鍵組合ctrl_]就可以了,當然前提條件是已經產生了tags檔案,並設定好了。查看詳細的協助::help ^]。 跳轉到函數、全域結構、全域變數等tag: 按鍵組合 ctrl_]從tag處返回跳轉的位置:按鍵組合 ctrl_t跳轉到全域變數處: 快速鍵 gD跳轉到局部變數處: 快速鍵 gd返回到上一個操作位置(上一次游標位置): 按鍵組合 ctrl_o返回到下一個操作位置(更新的游標位置): 按鍵組合 ctrl_i本來打算把quickfix的操作也放到本文的,但是寫本文已經花了將近一個半小時了,那就放到系列的下一篇文章來寫吧,剛好quickfix也是vim中與文本編輯、代碼編輯關係不大的一部分,主要是涉及到代碼的編譯、調試,大大提高編譯-改錯-編譯流程的效率,也算是vim的一大特色功能,所謂的劍不離手,我一直覺得在SourceInsight中不能直接進行編譯是一大遺憾,這個遺憾在vim中得到了彌補,哈哈。 

聯繫我們

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