2009年6月18日 星期四

vim的其他設定

1. 先來一張vi/vim的中文圖解鍵盤按鍵圖~

(by jserv 原連結->http://jserv.sayya.org/misc/vi-vim-cheat-sheet.png)
這張圖實在很實用!

2. vim的設定檔:vimrc 位置在
~/.vimrc
~/.gvimrc GUI 版本
$VIM/vimrc
$VIM/gvimrc GUI 版本

各種 set 功能說明:

autoindent(ai)

自動縮排,也就是說如果本行是從第五個字元開始寫的,您按 Enter
後游標就會停在次行第五個字元處。預設是不打開的。

cindent(cin)

寫 C 時很好用,indent 比一般敏感,專為 C 程式碼而設。預設 off。
編輯 C/C++ code 時會自動打開。

cmdheight(ch)

狀態列的行數,預設一行,建議設成兩行。

compatible(cp)

設為和原始 vi 相容的狀態,vim 的擴充功能會被抑制。預設 off。

hlsearch(hls)

尋找時,符合字串會反白表示。預設 off。如果您是使用 vim 的
預設的 vimrc 檔的話,會設在 F8 鍵來切換。

ruler(ru)

會在狀態列顯示游標所在處之行列狀態,預設不打開,但建議打開。
最右邊之代號的意義如下:
Top 檔案第一行在螢幕可見範圍。
Bot 檔案最後一行在螢幕可見範圍。
All 檔案首尾皆在一個螢幕範圍內。
如非以上三種情形,則會顯示相對百分比位置。

shiftwidth(sw)

指由 >> 移動整行內容時,一次移動的字元寬度,一般是使用 Tab 的
值,但可由這個設定來改變。

showmode(smd)

在狀態列顯示目前的模式,例如是 Insert mode 或是 Visual mode。
當然平常的 normal mode(commond mode)是不顯示的。

number(nu)

顯示行號。注意,冒號命令也有 :nu 這是顯示游標所在行的行號,您
嫌多打一個字的話,:# 也行。不過如果 ruler 打開的話,在狀態列本
就會顯示目前游標所在處的行列值。

fileencoding(fe)

首先先鼓掌一下,啪啪啪…,因為有支援 taiwan,也支援 XIM,也
就是說可以使用 xcin-2.5x 來作輸入,當然您用 xcin-2.3x 配合
XA 也是可以啦!目前支援簡繁中文、日文、韓文,unicode 尚未植
入。但前提是您要把 multi_byte 編譯進去,這在一開始就講過了。
預設是使用 ansi。

softtapstop(sts)

幾乎所有的 OS 及軟體都設定 Tab 就是 8 個字元長,這已經是個公認值,您硬要去改變它的話恐怕帶來許多不便,但實際上關於程式風格,許多人又認為 8 個字元太長了,幾個巢狀迴圈下來就需折行,反而不方便。因此 vim 體貼您,內建了 softtabstop 的功能,就是由 vim 來代您製造出一個假的 Tab,實際上是空白字元組成的 Tab。

舉個例子來說明比較清楚。

set softtabstop=4
set shiftwidth=4

這樣會由 4 個空白字元取代一個 Tab,您按 Tab 鍵 vim 就跳 4 格,需注意的是,如果您按了三次 Tab 鍵,那就是一個實際的 Tab 加上四個空白字元,可不是 12 個空白字元喔!是混合 Tab 及 space 的。

問題來了!那我要按真正的 8 字元的 Tab 時怎麼辦?簡單,還記得怎麼按特殊字元嗎? Ctrl-v Tab 或 Ctrl-v I 就可以了,那就是如假包換的 8 字元長之 Tab。當然,您按兩次 Tab 不就得了!:-)

[ref] : 大家來學VIM


沒有留言:

張貼留言