2008年10月12日 星期日

vim使用技巧備忘錄

標籤堆疊

  • 透過「ESC」鍵切換到命令模式,標籤堆疊必須在命令模式啟動。
  • 建立標籤index:「:!ctags *.[hc]*
  • 使用標籤功能:
  1. :tag 標籤名稱:把要切換的函式名稱作為標籤。
  2. :tn:跳到下一個標籤
  3. :tp:跳到前一個標籤
  4. :tr:跳到第一個標籤
  5. :tl:跳到最後一個標籤
  6. :tags:顯示所有標籤的內容
  7. :ts 標籤名稱:選擇的方式跳到某個標籤
  8. :sts 標籤名稱:選擇的方式跳到某個標籤(開啟多重視窗)
  9. ctrl-t:跳回原本的位置
延伸閱讀:http://greenisland.csie.nctu.edu.tw/wp/2005/08/28/299/

編譯
  • 透過「ESC」鍵切換到命令模式,打make指令
  • 若有錯誤訊息,會自動跳到第
  1. :cn:跳到下一個編譯錯誤
  2. :cp:跳到前一個編譯錯誤
  3. :cr:跳到第一個編譯錯誤
  4. :cl:跳到最後一個編譯錯誤
多重視窗
  1. :spilt 檔名:不加檔名則是開啟同一個檔案
  2. ctrl-w + 上下方向鍵:切換不同的視窗

[+/-] Read More...

2008年10月10日 星期五

設定vim的indent功能

我在Linux上寫程式的環境有兩種,一個是透過網路用ssh的方式連上主機,接著再打開vim來編寫。另一種就是在我的MB上透過VMware Fusion來,開啟一個附屬Linux,在這個Linux上以Kdevelop來編撰(這不是我今天要討論)。
第一種方式對我而言,若在有網路但無電源環境下,是十分省電,且效率又高的,但是該軟體本身相較於使用其他的GUI IDE,有兩項缺少的功能是讓我覺得最麻煩的,詳列如下:

  1. indent功能:每次都得自己手動對齊,對到最後我都覺得很煩(本文的解決方案)。
  2. Automatic code completion:依據檔案中使用過的變數,提供建議的變數清單,讓使用者可以用選的,而無需每個字母都自己打(感覺上不會有solution for這一個項目)。

今天我找到方法可以修改vim環境,使得我的vim會自動針對C或C++語言來做indent縮排,新增或修改以下檔案 。
  • vim ~/.vimrc ( vi ~/.vimrc 亦可),內容如下:
set nowrap
set nocp incsearch
set shiftwidth=4
set cinoptions=:0,p0,t0
set cinwords=if,else,while,do,for,switch,case
set formatoptions=tcqr
set cindent
syntax on
  • 儲存即完成設定
參考:

[+/-] Read More...