vim中的操作
一、設定大小字元匹配不匹配
set ignorecase / set ic
set noignorecase /set noic
二、設定尋找時高亮顯示與不顯示
set hlsearch /set hls
set nohlsearch /set nohls
三、設定在尋找過程中就顯示匹配點 與 在尋找過程中不顯示匹配點
set incsearch / set is
set noincsearch / set nois
四、設定尋找到結尾或開頭後停止 與 尋找到結尾後折回到檔案開頭重新尋找
set wrapscan / set ws
set nowrapscan /set nows
五、設定顯示行號
set number / set nu
set nonumber /set nonu
六、設定Tab鍵寬度
set ts =4
vim中的移動命令
http://vcd.gro.clinux.org/doc/usr_03.html#usr_03.txt
一、向前移動一個詞
w 3w b 2b (向前移動一個詞 / 向前移動三個詞 / 前後移動一個詞 / 向後移動二個詞)
e (移動到一個個單詞詞末) ge(移動到前一個單詞末尾)
移動詞的命令包括:w / W / e / E / b / B / ge / gE
二、移動到行首或行尾
"$" 命令把游標移動到當前行行尾。"^" 命令把游標移動到一行的第一個非Null 字元,而 "0" 命令則移到一行的第一個字元,
三、移動到一個指定的字元
單字元尋找命令是最有用的移動命令之一。"fx" 命令向前尋找本行中的字元 x。
可以在這個命令前面加計數首碼,所以,可以用 "3fl"
"F" 命令用於向左尋找:
"tx" 命令與 "fx" 相似,但它只把游標移動到目標字元的前一個字元上。
四.移動到指定行:
"33G" 把你送到 33 行
"G" 命令把游標移動到檔案末。移動到檔案首的命令是 "gg"。
"50%" 移動到檔案的中間,而 "90%" 移到差不多結尾的位置。
"H" 表示 "Home" (頭)移動到螢幕上方,"M" 表示 "Middle" (中)移動到螢幕中間 而 "L" 表示 "Last" (尾)移動到螢幕下方。
五、滾屏
CTRL-U 命令向下滾動半屏 CTRL-D 命令把視窗向下移動半屏
每次滾一行的命令是 CTRL-E (上滾) 和 CTRL-Y (下滾)。
設定vim的選項
如果每次用 Vim 都要設定一些選項,如是否大小寫匹配,顯示行號.那麼,你可以把這些命令寫到Vim 的開機檔案中。
用:scriptnames來尋找vim開機檔案在什麼地方.
然後:edit ~/.vimrc
在這個檔案中就可以設定一些選項了.
vim中使用標記
一、當你用 "G" 命令跳到另一個地方,Vim 會記住你從什麼地方跳過去的。這個位置成為一個標記,要回到原來的地方,使用如下命令:``
`` 命令可以在兩個位置上跳來跳去。而 CTRL-O 命令則跳到一個 "較老" 的地方 (提示: O 表示 older)。CTRL-I 則跳到一個 "較新" 的地方
:jumps 命令能輸出一個你可以跳往的位置的列表。最後一個你使用的標記會用 ">" 符號標記出來。
二、Vim 允許你在文本中放置自訂的標記。命令 "ma" 用 a 標記當前的游標位置。你可以在文本中使用 26 個標記 (a 到 z)。這些標記是不可見的,只是一個由 Vim 記住的位置。
要跳到一個你定義的標記,可以使用命令 `{mark},這裡 {mark} 是指定義標記的那個字母。所以,移到標記 a 的命令是: `a
三、你可以用如下命令取得所有的標記的列表::marks
到有一些特殊的標記,包括:
' 跳轉前的游標位置
" 最後編輯的游標位置
[ 最後修改的開始位置
] 最後修改的結束位置
vim中的操作符與動作
一、 操作符-動作模式
"dw" 命令刪除一個單詞。你可能認出來了,"w" 是詞移動命令。實際上,"d" 命令後面可以跟任何 "動作" (motion) 命令,它會刪除從當前位置到游標移動到的目標位置的全部內容。
以上定義了一個命令組合模式:操作符-動作。你首先輸入一個操作符命令,例如,"d"就是一個刪除操作符。然後你輸入一個動作命令,例如 "4l" 或者 "w"。這種方法使你可以在任何你能越過的文本上執行各種操作。
另一個操作符命令是 "c",表示修改,change。它的作用方式與 "d" 操作符相似,只是完成後會切換到插入模式。例如,"cw" 修改一個詞,更精確的說,它刪除一個詞,並切換到插入模式。
To err is human
------->
c2wbe<Esc>
To be human
這裡 "c2wbe<Esc>" 包括如下操作:
c 修改操作符
2w 移動兩個單詞的距離 (與操作符合起來,它刪除兩個單詞並進入插入模式)
be 插入 be 這個單詞
二、更 多 的 修 改 命 令
像 "dd" 可以刪除一行一樣,"cc" 修改一整行。但它會保留這一行的縮排 (前置空格)。
"d$" 刪除到行尾;"c$" 則修改到行尾。
命令 "3dw" 和 "d3w" 都是刪除 3 個單詞。如果你非要尋根問底,那麼:"3dw" 表示刪除一個單詞 3 次,而 "d3w" 表示刪除三個單詞一次。這是一個沒有分別的分別。實際上你可以放兩個計數首碼,例如,"3d2w" 刪除兩個單詞三次,共計六個單詞。
三、重複一個修改
"." 是 Vim 中一個非常簡單而有用的命令。它重複最後一次的修改操作。例如,假設你在編輯一個 HTML 檔案,你想刪除所有的 <B> 標記。你把游標移到第一個 "<" 上,然後用 "df>" 命令刪除 <B>。然後你就可以移到 </B> 的 < 上面用 "." 命令刪除它。"."
命令執行最後一次的修改命令 (在本例中,就是 "df>")。要刪除下一個 <B> 標記,移動到下一個 < 的位置,再執行 "." 命令即可。
To <B>generate</B> a table of <B>contents
f< 找第一個 < --->
df> 刪除到 > -->
f< 找下一個 < --------->
. 重複 df> --->
f< 找下一個 < ------------->
. 重複 df > -->
"." 命令重複任何除 "u" (撤銷),CTRL-R (重做) 和冒號命令外的修改。
再舉一個例子:你想把 "four" 修改成 "five"。有好幾個地方都要作這種修改。你可以
用如下命令快速完成這個操作:
/four<Enter> 找到第一個 "four"
cwfive<Esc> 修改成 "five"
n 找下一個 "four"
. 重複修改操作
n 找下一個 "four"
. 重複修改
如此類推......
四、可視模式
要刪除一些簡單的東西,用 "操作符-動作" 命令可以完成得很好。但很多情況下,並不容易確定用什麼命令可以移到你想修改的地方。這時候,你就需要可視模式了。
你可以用 "v" 命令啟動可視模式。你可以移動游標到需要的地方。當你這樣做的時候,中間的文本會被高亮顯示。最後執行一下 "操作符" 命令即可。
按 行 選 擇
如果你想對整行做操作,可以使用 "V" 命令來啟動可視模式。你會發現在你作任何移動之前,整行都被高亮顯示了。左右移動不會有任何效果。而通過上下移動,你可以一次選擇多行。
例如,用 "Vjj" 可以選中三行:
vim中的拷貝
一、copy and past
要把文本從一個地方拷貝到另一個地方,你可以先刪除它,然後用 "u" 命令恢複,再用"p" 拷到另一個地方。這裡還有一種簡單的辦法:抽出 (yank)。"y" 命令可以把文字拷貝到寄存器中。然後用 "p" 命令粘貼到別處。
yanking 是 Vim 中拷貝命令的名字。由於 "c" 已經被用於表示 change 了,所以拷貝 (copy) 就不能再用 "c" 了。但 "y" 還是可用的。把這個命令稱為 "yanking" 是為了更容易記住 "y" 這個鍵。
由於 "y" 是一個操作符,所以 "yw" 命令就是拷貝一個單詞了。當然了,計數首碼也是有效。要拷貝兩個單詞,就可以用 "y2w"
"yy" 命令拷貝一整行,就像 "dd" 刪除一整行一樣。出乎意料地是,"D" 刪除到行尾而"Y" 卻是拷貝一整行。要注意這個區別!"y$" 拷貝到行尾。
從剪貼簿中copy和粘貼:
要拷貝一行到剪貼簿中: "*yy
要粘貼回來: "*p
以上僅在支援剪貼簿的 Vim 版本中才能工作。更多的見:http://vcd.gro.clinux.org/doc/usr_09.html#09.3
vim中的文字物件
一、關於文字物件:
文字物件是作為一個整體來處理的。現在游標在對象中的位置無關緊要。
比如:aw 就代表游標所在處的一個文字物件,它是一個單詞.如:
"daw" 的 "d" 是刪除操作符。"aw" 是一個文字物件。提示:"aw" 表示 "A Word" (一個單詞),這樣,"daw" 就是 "Delete A Word" (刪除一個單詞)。
is表示inner sentence,表示游標所在的那行
"cis" 包括 "c" (change,修改) 操作符和 "is" 文字物件。這表示 "Inner Sentence"(內含句子)。還有一個文字物件是 "as",區別是 "as" 包括句子後面的空白字元而 "is"不包括。如果你要刪除一個句子,而且你還想同時刪除句子後面空白字元,就用 "das";如果你想保留空白字元而替換一個句子,則使用 "cis"。
你還可以在可視模式下使用文字物件。這樣會選中一個文字物件,而且繼續留在可視模式,你可以繼續多次執行文字物件命令。例如,先用 "v" 啟動可視模式,再用 "as" 就可以選中一個句子。現在重複執行 "as",就會繼續選中更多的句子。最後你可以使用一個操作符去處理這些被選中的句子。
詳細的文字物件可見http://vcd.gro.clinux.org/doc/motion.html#text-objects:
簡單鍵盤對應
一、map命令:
映射可以使你把一系列 Vim 命令綁定為一個單獨的鍵。假設你要用一個大括弧將一個特
定的單詞括起來。例如,把 "amount" 變成 "{amount}"。用 ":map" 命令,就可以讓 F5
來完成這個工作。命令如下:
:map <F5> i{<Esc>ea}<Esc>
在輸入這個命令時,<F5> 要用四個字元表示。相似地,輸入 <Esc> 不是直接按<Esc> 鍵,而是輸入五個字元。
比如,在寫cpp檔案時,用<F5>鍵自動插入{},可以這樣鍵盤對應:
:map <F5> i{<Enter><Enter>}<Esc>ki<Tab>
再舉一例,鍵盤對應\i這個命令自動為單詞加上(),可以:
:map \i bi(<Esc>ea)<Esc>
有了map命令,可以把常用到的命令作為鍵盤對應,用得時候直接調用快速鍵即可.
還有一種map命令,對於可視模式的:vmap
如,給選中的文本加上<small></small>標籤,快速鍵為Ctrl+S
:vmap <C-S> c<small><Esc>pa</small><Esc>
或者::vmap <C-S> s<small><C-R>”</small><ESC> //其中<C-R>"表示寄存器"
取消鍵盤對應:vunmap <C-S>
一些其它命令:
*:讀取游標處的字串,並且移動游標到它再次出現的地方。
#:和上面的類似,但是是往反方向尋找。
i:在當前字元的左邊插入
I:在當前行首插入
a:在當前字元的右邊插入
A:在當前行尾插入
o:在當前行下面插入一個新行
O:在當前行上面插入一個新行
VIM 有一個非常漂亮的關鍵詞自動完成系統。這表示,你可以輸入一個長詞的一部分,然後按一下某個鍵,然後 VIM 就替你完成了這個長詞的輸入了。舉個例子:你有一個變數名為 iAmALongAndAwkwardVarName 在你寫的代碼的某個地方。也許你不想每回都自己一個一個字母的去輸入它。
使用關鍵詞自動完成功能,你只需要輸入開始幾個字母(比如 iAmAL),然後按 <C-N>(按住 Ctrl,再按 N)或者 <C-P>。如果 VIM 沒有給出你想要的詞,繼續按,直到你滿意為止,VIM 會一直迴圈它找到的匹配的字串。
用 VIM 寫代碼
p:和 p 的功能差不多,但是它會自動調整被粘貼的文本的縮排去適應當前代碼的位置。試一下!
%:匹配花括弧、方括弧、括弧等。在一個括弧的上面,然後按 %,滑鼠就會出現在匹配的另外一半括弧處。
>>:縮排所有選擇的代碼
<<:和上面類似,但是反縮排
gd:到達游標所在處函數或者變數的定義處。
K:在 Man 裡面尋找游標當前所在處的詞。
顯示Tab鍵:
檔案中有 TAB 鍵的時候,你是看不見的。要把它顯示出來:
:set list
控制Tab的顯示樣式:
:set listchars=tab:>-,現在,TAB 會被顯示成 ">---"
:set listchars=tab:-. 現在,TAB 會被顯示成 "-..."
以上以此類推,Tab的顯示樣式需要兩個符號來控制.
設定詳細的listchars可以詳見:help 'listchars
設定檔案的類別:
set filetype=cpp / set ft=perl
設定文法高亮:
要在當前緩衝區中使用高亮,需要設定 'syntax' 選項:
:set syntax=ON
如果你想只對特定的檔案採用文法高亮,可以使用這個命令:
:syntax manual
如果你要完全關閉這個功能:
:syntax off
使用色彩顯示文本會影響效率。如果你覺得顯示得很慢,可以臨時關掉這個功能:
:syntax clear
使用不同顏色
:colorscheme evening
"evening" 是色彩方案的名稱。還有幾種備選方案可以試一下。在 $VIMRUNTIME/colors
中可以找到這些方案。