Vim的一些提示

來源:互聯網
上載者:User
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
中可以找到這些方案。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.