neonlight@live.cn發表,轉載請註明出處。
Common Cmds:
% 跳轉到配對的括弧去
[[ 跳轉到代碼塊的開頭去(但要求代碼塊中'{'必須單獨佔一行)
gD 跳轉到局部變數的定義處
'' 跳轉到游標上次停靠的地方, 是兩個', 而不是一個"
mx 設定書籤,x只能是a-z的26個字母
`x 跳轉到書籤處("`"是1左邊的鍵)
> 增加縮排,"x>"表示增加以下x行的縮排
< 減少縮排,"x<"表示減少以下x行的縮排
一、進入編輯器
行:edit,e,ex
螢幕:vi,v,view
vi -r filename(繼續意外中斷的檔案編輯)
vi file1 file2 file3(編輯完前一個檔案,用:w儲存後,用:n開始下一個檔案編輯)
vi -x filename(對encrypt加密檔案編輯)
vi 中執行Unix命令([[加數字代表獨到第幾行]加r代表把結果讀進vi中]!ls)
vi 命令列編輯功能($set -o vi)
二、行編輯器命令
edit(或e,ex)命令
屏編轉換:v(轉屏編),vi(轉屏編),:(轉行便)
:wq(存檔退出),:q(退出),:q!(強行退出),:w(儲存),:w file(另存新檔)
:n(移動到n行),:np(顯示並移動到n行),:m,np(顯示m行到n行內容,移動到n行),
:d(顯示當前行),:nd(刪除第n行內容,移動到n下一行),:m,nd(刪除第m到第n行,移動到n行),
:a(在當前行的下移行開始輸入文本,直到ESC),1,$(第一行到最後行),:.,$(當前行到最後行)
舉例:
:s/stirng1/string2/(把第一個字元替換為第二個字元)
:m,ns/string1/string2/g(g代表所有,mn替換範圍限制在m行到n行中)
:%s/string1/string2/g(%代表全文替換)
三、vi基礎控制命令
:wq(存檔退出),:q(退出),:q!(強行退出),:w(儲存),:w file(另存新檔)
:r filename(把檔案加到當前行後)
游標移動:上下左右方向鍵,或hjkl,^(行首),$(行尾),
+(下移一行),-(上移一行),空格(左移),退格(右移)
進入編輯態:(游標前),I(行首),a(游標後),A(行尾),o(下面加行),O(上面加行),ESC(返回命令模式)
四、vi基礎編輯命令
刪除文本:x(字元),dw(單詞),D(當前位置到行尾),dd(當前行)
替換文本:r(單個字元),cw(單詞)
搜尋文本:/(當前向尾),?(當前向頭),n(找下一個),N(找前一個)
其它命令:u(撤銷),.(重複),J(串連下移行),P(粘貼刪除內容)
命令舉例:2dd/p(刪除兩行粘貼),2yy/p(複製兩行粘貼)
五、vi設定命令
加行序號:set number,set nonumber
六、vi集合命令
在一段文字前,垂直插入字串
{
ctrl+v //垂直作塊選中段落首列
shirt+i //在文本前插入
輸入字串
Esc //命令結束
}
七、vi編程技巧
跟蹤標頭檔:gf
查看函數定義:[+I
跳轉到函數定義:[+tab
ctags命令
定義跟蹤:ctrl+[
ctrl+o:跟蹤返回
可用ctrl+z將vi轉入後台,fg可返回vi
make調試視窗:
在執行過:make後,執行cw,視窗出現
關閉調試視窗cclose或ctrl+w c
.重複上次的命令
八、vim摺疊命令
前言準備:
(1)首先保證自己安裝的是完整版vim,ubuntu 8.04內建的不是完整版。
(2)懶得看長文章,列舉最實用的摺疊語句。
(3)在foldmethod=manual 狀態下執行,你可以用:set foldmethod=manual命令切換到這個狀態。
(4)neonlight@live.cn發表,轉載請註明出處。
建立摺疊:
(1)zf:用v做塊選定要摺疊的語句,摺疊用zf(z很像摺疊的形狀,f是fold縮寫)。
(2)zf[x]j:向下摺疊x行,例如zf9j。
(3)可以用一般的定位的方法來告訴VIM你要摺疊那些地方:也可以用marker, 還可以用行號:20,50, 就可以把20行到五十行摺疊起來 。
(4)方便的折起函數:移動到一個花括弧{上(或者函數體內也行), 用zfa}, 就可以將下面的匹配的花括弧之間的內容折起來。 其他的摺疊方法還有zf/string, 可以摺疊到下一個匹配的string。
使用摺疊:
(1)移動的時候在前面加一個z就可以在摺疊的地方移動, 比如zj,就會跳到下一個摺疊, zk就是上一個。
(2)要開啟的話可以zo,o是open的意思, zO開啟所有的摺疊。
(3)關上用zc, c是close。 在zO之後用zc會關上所有開啟的摺疊。
(4)摺疊可以嵌套, zr可以開啟第一層的摺疊,zR可以開啟所有層的摺疊, 與之對應的是zm和zM, 是按層關上摺疊。 比如說按zm, 會從最裡層的層疊關起, 連續zm就會一直關到最上層的摺疊。
尋找到了摺疊裡面會將摺疊開啟, 處理完了之後要自己將摺疊關上。
摺疊選項:
可以讓VIM根據文法, 縮排,標記自動摺疊。 用set foldmethod=foldoption 來設定。 可以查看一下foldmethod 。
保留摺疊:
(1)要下一次開啟的時候還保留摺疊可以在離開的時候:mkview,再進來的時候:loadview就可以了。
(2)當然也可以將這兩句加到vimrc裡面讓其自動完成。
au BufWinLeave * mkview
au BufWinEnter * silent loadview
這樣每次就可以看到上次的摺疊了。
其它技巧:
:set foldmethod=manual後,zc按縮排關閉所有摺疊
vim摺疊設定補充:(轉載)
set foldmethod=indent "set default foldmethod"zi 開啟關閉摺疊"zv 查看此行zm 關閉摺疊zM 關閉所有zr 開啟zR 開啟所有zc 摺疊當前行zo 開啟當前摺疊zd 刪除摺疊zD 刪除所有摺疊1. 摺疊方式可用選項 'foldmethod' 來設定摺疊方式:set fdm=*****。有 6 種方法來選定摺疊:manual 手工定義摺疊indent 更多的縮排表示更進階別的摺疊expr 用運算式來定義摺疊syntax 用文法高亮來定義摺疊diff 對沒有更改的文本進行摺疊marker 對文中的標誌摺疊注意,每一種摺疊方式不相容,如不能即用expr又用marker方式,我主要輪流使用indent和marker方式進行摺疊。使用時,用:set fdm=marker 命令來設定成marker摺疊方式(fdm是foldmethod的縮寫)。要使每次開啟vim時摺疊都生效,則在.vimrc檔案中添加設定,如添加:set fdm=syntax,就像添加其它的初始化設定一樣。2. 摺疊命令選取了摺疊方式後,我們就可以對某些代碼實施我們需要的摺疊了,由於我使用indent和marker稍微多一些,故以它們的使用為例:如果使用了indent方式,vim會自動的對大括弧的中間部分進行摺疊,我們可以直接使用這些現成的摺疊成果。在可摺疊處(大括弧中間):zc 摺疊zC 對所在範圍內所有嵌套的摺疊點進行摺疊zo 展開摺疊zO 對所在範圍內所有嵌套的摺疊點展開[z 到當前開啟的摺疊的開始處。]z 到當前開啟的摺疊的末尾處。zj 向下移動。到達下一個摺疊的開始處。關閉的摺疊也被計入。zk 向上移動到前一摺疊的結束處。關閉的摺疊也被計入。當使用marker方式時,需要用標計來標識代碼的摺疊,系統預設是{{{和}}},最好不要改動之:)我們可以使用下面的命令來建立和刪除摺疊:zf 建立摺疊,比如在marker方式下:zf56G,建立從當前行起到56行的程式碼摺疊功能;10zf或10zf+或zf10↓,建立從當前行起到後10行的程式碼摺疊功能。10zf-或zf10↑,建立從當前行起到之前10行的程式碼摺疊功能。在括弧處zf%,建立從當前行起到對應的匹配的括弧上去((),{},[],<>等)。zd 刪除 (delete) 在游標下的摺疊。僅當 'foldmethod' 設為 "manual" 或 "marker" 時有效。zD 迴圈刪除 (Delete) 游標下的摺疊,即嵌套刪除摺疊。僅當 'foldmethod' 設為 "manual" 或 "marker" 時有效。zE 除去 (Eliminate) 視窗裡“所有”的摺疊。僅當 'foldmethod' 設為 "manual" 或 "marker" 時有效。使用Vim的摺疊功能書寫程式碼折行的用處:2 建立折行進行大綱預覽2 移動到某處進行編輯2 使用jzij開啟文本進行編輯2 編輯完畢後再用jzij開啟折行進行移動開啟vim的摺疊功能,請在~/.vimrc 中加入:set foldmethod=marker ,使用vim預設的摺疊標籤進行處理。使用方法如下:1、加摺疊標籤在normal模式下,從鍵盤輸入zf並斷行符號,您就會看到摺疊在一起的兩列標籤如下:/*{{{*/.....這裡輸入您 的程式碼/*}}}*/2、輸入程式碼後,將程式碼摺疊功能起來使用如下命令(normal模式):zc 斷行符號3、開啟摺疊的程式有以下幾種方法a、在摺疊的行上移動游標b、在normal模式下輸入zo並斷行符號4、給一段文字加折行(normal 模式)zfap5、zr命令可以開啟摺疊幾層的內容 zm使用內容摺疊的更多一些(多層摺疊操作時可反覆使用)。6、嵌套了多層的折行, 也可以用zR命令一次開啟所有折行7、關閉所有的嵌套折行使用zM8、可以用jznj命令來禁用一個折行. 然後用jzNj還可以恢複它. jzij命令則可以在兩者之間切換.其它的,請參考vim的使用手冊。---------------------------------------------------------------------------------------------------在查看代碼的時 候,如果代碼十分冗長,尤其是 c/c++系列的時候,代碼結構比較讓人難以理清,主要是各種注釋、括弧的匹配問題,雖然可以用%來查看匹配的另外一半符號在哪裡,但是 如果這一對符號之間的代碼超過了一頁,甚至好幾頁的話,那麼也是比較難以理解的。於是可以使用這個vim所提供的摺疊功能來簡化這些分析。我 使用的vim是rh9內建的版本。摺疊的方式:vim 提供 6中摺疊方式 manual 手工定義摺疊 indent 更多的縮排表示更進階別的摺疊 expr 用運算式來定義摺疊 syntax 用文法高亮來定義摺疊 diff 對沒有更改的文本進行摺疊 marker 對文中的標誌摺疊可用選項 'foldmethod' 來設定摺疊方式:set fdm=*****。注意,每一種摺疊方式不相容,即:你不能用expr又用marker方式。目前我一般使用的都是indent 比較多。使用時,用:set fdm=indent 命令來設定成marker摺疊方式。在.vimrc檔案中添加設定,可以使得每次打 開vi 都啟動摺疊方式。如添加:set fdm=syntax。2. 摺疊開啟與摺合選取了摺疊方式後,我們就可以對某些代碼 實施我們需要的摺疊了。如果使用了indent方式,vim會自動的對大括弧的中間部分進行摺疊,我們可以直接使用這些現成的摺疊成果。indent 對應的摺疊代碼有:zc 摺疊zC 對所在範圍內所有嵌套的摺疊點進行摺疊zo 展開摺疊zO 對所在範圍內所有嵌套的摺疊點展開[z 到當前開啟的摺疊的開始處。]z 到當前開啟的摺疊的末尾處。zj 向下移動。到達下一個摺疊的開始處。關閉的摺疊也被計入。zk 向上移動到前一摺疊的結束處。關閉的摺疊也被計入。使 用時在大括弧中間輸入以上命令。當使用marker方式時,需要用標計來標識代碼的摺疊,系統預設是{{{和}}},最好不要改動之:)可 以使用下面的命令來建立和刪除摺疊:zf 建立摺疊,比如在marker方式下: zf56G,建立從當前行起到56行的程式碼摺疊功能; 10zf或10zf+或zf10↓,建立從當前行起到後10行的程式碼摺疊功能。 10zf-或zf10↑,建立從當前行起到之前10行的程式碼摺疊功能。 在括弧處zf%,建立從當前行起到對應的匹配的括弧上去((),{},[],<>等)。zd 刪除 (delete) 在游標下的摺疊。僅當 'foldmethod' 設為 "manual" 或 "marker" 時有效。zD 迴圈刪除 (Delete) 游標下的摺疊,即嵌套刪除摺疊。 僅當 'foldmethod' 設為 "manual" 或 "marker" 時有效。zE 除去 (Eliminate) 視窗裡“所有”的摺疊。 僅當 'foldmethod' 設為 "manual" 或 "marker" 時有效。
九、vim標籤命令
:tabnew 開啟新標籤
gt 標籤間轉換
十、vim選塊命令
選定塊後
shift+<向左移,shift+>向右移