2009年2月11日 星期三

Vim 整理

指令
: 數字 -> 移動到第 數字 行
Ctrl + d -> 同 Page Down
Ctrl + u -> 同 Page Up
/字串 -> 用來搜尋 字串(n 可到下一個字串的位置,N 可到上一個字串的位置)
dw -> 刪除該單字
:w 檔案名稱 -> 儲存檔案
:e 檔案名稱 -> 打開檔案
:x -> 同:wq
K -> 在函式上按可出現函式的man page
:set all -> 顯示所有參數
Ctrl + r -> 重做u
:vsplit -> 垂直分割檔案
:tabnew -> 開一個新的分頁
:tabprevious -> 到前一個分頁
:tabnext -> 到下一個分頁
----------------------------------------------

.vimrc
set autoindent : 自動對位
syntax on : 顏色顯示
set syntax=php3 : 設定syntax 格式
set ruler : 右下方顯示座標
set showmatch : 搜尋相對的 '(', '[' 和 '{'
set shiftwidth=n : 控制 indentation 用多少空格
set tabstop=n : 控制 鍵所用的空格數目
set expandtab : 使 Tab 字符化成空格
set nocompatible : 不要使用與 vi 兼容的模式
set incsearch : 搜尋時為漸近的方式
nnoremap command : Fx表F1等 command就是命令,如 :wq
(http://howto.wikia.com/wiki/Howto_map_keys_in_vim)

C-support
(http://vim.sourceforge.net/scripts/script.php?script_id=213)

install details
Copy the zip archive cvim.zip to $HOME/.vim/ and run
unzip cvim.zip
If you have already an older version of this plugin and you have modified the
template files you may want to save your templates first or copy the files from the
archive by hand. See also the file README.csupport within the zip file.
\rr -> 編譯並執行


.vimrc
syntax on "開啟語法顏色
set background=dark "設定背景為暗色系,字會採亮色系的
set incsearch "漸近式的搜尋
set tabstop=4 "tab表四個空格
set autoindent "自動縮排
set nu "顯示行號
nnoremap :ccl "關除錯視窗
nnoremap :TlistToggle "開啟或關閉清單
nnoremap :tabnew "開新分頁
nnoremap :tabprevious "到下一個分頁
nnoremap :tabnext "到前一個分頁
let Tlist_Exit_OnlyWindow = 1 "當檔案關閉時,也關閉taglist
let Tlist_WinWidth = 20 "改變Taglist的寬度
cw 5
"autocmd BufEnter * call DoWordComplete() "自動補完

"---------------------------------"
"自動折疊函式
function FoldBrace()
if getline(v:lnum+1)[0] == '{'
return '>1'
endif
if getline(v:lnum)[0] == '}'
return '<1' foldexpr="FoldBrace()" foldmethod="expr">
上面的版本有點問題
<> <-都不見了

以下是vimrc的載點
改名為.vimrc後放到~/即可使用

http://www.csie.ntu.edu.tw/~b97110/Vim/vimrc


其他vim指令

Ctrl+f 即 PageDown 翻頁(Forward,向前、下翻頁)。
Crtl+b 即 PageUp 翻頁(Backward,向後、上翻頁)。

0 是數目字 0 而不是英文字母 o。移至行首,(含空白字元)。
W 移动一个符,但會忽略一些標點符號。
e 移至後一個字字尾。
E 同上,但會忽略一些標點符號。
b 移至前一個字字首。
B 同上,但會忽略一些標點符號。
H 移至螢幕頂第一個非空白字元。
M 移至螢幕中間第一個非空白字元。
L 移至螢幕底第一個非空白字元。

) 移至下一個句子(sentence)首。
( 移至上一個句子(sentence)首。sentence(句子)是以 . ! ? 為區格。
} 移至下一個段落(paragraph)首。
{ 移至上一個段落(paragraph)首。paragraph(段落)是以空白行為區格。

R进入替换模式

I 在行首開始輸入文字。此之行首指第一個非空白字元處,要從真正的第一個字元處開始輸人文字,可使用 0i 或 gI(Vim 才有)。
A 在行尾開始輸入文字。這個好用,您不必管游標在此行的什麼地方,只要按 A 就會在行尾等著您輸入文字。
O 在游標所在行上開一新行來輸入文字。
J 將下一行整行接至本行(Joint)。

dG 刪至檔尾。
d1G 刪至檔首。或 dgg(只能用於 Vim)。
D 刪至行尾,或 d$(含游標所在處字元)。
d0 刪至行首,或 d^(不含游標所在處字元)。請回憶一下 $ 及 ^ 所代表的意義,您就可以理解 d$ 及 d^ 的動作,這就是 vi(m) 可愛之處。

5J 將五行合併成一行。
5i A 然後按 Ecs,插入五個 A。中文也可以!
2i sys Esc 插入 syssys。中文也可以!

:ce(nter) 本行文字置中。注意是冒號命令!
:ri(ght) 本行文字靠右。
:le(ft) 本行文字靠左。所謂置中、靠左右,是參考 textwidth(tw) 的設定。如果 tw 沒有設定,預設是80,就是以 80 個字元為總寬度為標準來置放。當然您也可以如 sw 一樣馬上重設。
gqap 整段重排,或 gqip,在段落中位何地方都可以使用。和中文的配合見下述。
gqq 本行重排。
gqG 全文重排,是以游標所在處的段落開始重排至檔尾。以空白行為段落的間隔。

» 整行向右移一個 shiftwidth(預設是 8 個字元,可重設)。这个好啊,写代码时缩进就方便了。
« 整行向左移一個 shiftwidth(預設是 8 個字元,可重設)。

:[range]s/pattern/string/[c,e,g,i]5.1
range 指的是範圍,1,7 指從第一行至第七行,1,$ 指從第一行至最後一行,也就是整篇文章,也可以 % 代表。還記得嗎? % 是目前編輯的文章,# 是前一次編輯的文章。
pattern 就是要被替換掉的字串,可以用 regexp 來表示。
string 將 pattern 由 string 所取代。
c confirm,每次替換前會詢問。
e 不顯示 error。
g globe,不詢問,整行替換。
i ignore 不分大小寫。

mx x 代表 26 個小寫英文字母,這樣游標所在處就會被 mark。
`x 回到書籤原設定位置。` 是 backward quote,就是 Tab 鍵上面那一個。
‘x 回到書籤設定行行首。’ 是 forward quote,是 Enter 鍵隔壁那一個。

# 或 Ctrl+^ 編輯前一個檔案,用於兩檔互相編輯時相當好用。這種用法不管是 argument list 或 buffer list 檔案間皆可使用。還記得嗎?# 代表的是前一次編輯的檔案。

:f 或 Ctrl+g 顯示目前編輯的檔名、是否經過修改及目前游標所在之位置。
:f 檔名 改變編輯中的檔名。(file)
:r 檔名 在游標所在處插入一個檔案內容。(read)

vim -x [檔名] 加密编辑一个文件,每次编辑时要求输入密码,否则为乱码。也可以在编辑时使用:X命令来设置密码,不过要注意,设置以后需要保存并退出。

Ctrl+w n 即 :new。開一空的新視窗。
Ctrl+w s 即 :sp(lit),會開一新視窗,且原檔分屬兩個視窗。
Ctrl+w f 開一新視窗,並編輯游標所在處之 word 為檔名的檔案。
Ctrl+w q 即 :q 結束分割出來的視窗。
Ctrl+w o 即 :o nly! 使游標所在之視窗,成為目前唯一顯示的視窗其它視窗會隱藏起來。
Ctrl+w j 移至下視窗。
Ctrl+w k 移至上視窗。還記得 hjkl 的按鍵移動方式嗎?

:sh(ell) 執行 shell。使用 exit 回到 vim。
:r !commond 這個就妙了!會在游標所在處次一行插入外部指令 commond 執行後的輸出內容。例如 :r !date 就會插入日期時間。這在 elvis 是會插入在游標所在處那一行。
:n,mw !commond 以 n 至 m 行內之資料,當做外部指令 commond 的 input。這算是相當高級的用法了,初學者大概還用不上,不過印象中留有一個這樣的功能,以後總是會用得上的。
K 大寫 K 會顯示游標所在處之 word 的 man page 系統線上使用手冊。

2 則留言: