vim-程式員的利器
來源:互聯網
上載者:User
個人覺得vi使用熟練後就離不開了,用了它效率會提升不少,但是沒了它可能還趕不上以前的速度,給慣壞了。以下是本人無恥的複製和粘貼的:(附圖一張方便學習)Vim目前已經有各主流系統的版本,儘管vim較vi已經改良了不少,但是初次使用還是會一頭霧水,不知如何操作,所以學習vim要首先過2關。第一關是理解vim的設計思路,vim設計之初就是整個文本編輯都用鍵盤而非滑鼠來完成,鍵盤上幾乎每個鍵都有固定的用法,且vim的製作者希望使用者在普通模式(也就是命令模式,只可輸入命令)完成大部分的編輯工作,將此模式設計為預設模式,初學者開啟vim,如果直接輸入單詞,結果就會滴滴亂響,這是因為vim把使用者輸入的單詞理解為命令了。第二關是命令關,vim有過百條命令對應編輯的需要,如果能熟練使用vim這些命令,編輯速度確實比滑鼠要快很多,但是想全都記住它們也是一件難事,我想記住它們最好的方法就是多多來練習,確實把vim用在日常的文本編輯中去,且遇到難題不要放棄,而是尋找解決的方法,每解決一個難題,你的vim技能就上升一級。其實, Vim與其它編輯器一個很大的區別在於, 它可以完成複雜的編輯與格式化功能. 在這些領域還少有軟體能與它分庭抗禮, 但是, 與所有的靈活性的代價一樣, 你需要用自己的雙手來實現它. 這在事實上造成了使用者在使用Vim過程中的幾個自然階段.一開始是notepad, word, edit壟斷你的大腦, 這些東西根深蒂固, 揮之不去Vim的使用對你而言是一場噩夢, 它降低而不是提高了你的工作效率. 對三種工作模式的不解甚至使你認為它是一個充滿BUG或者至少是一個古怪的與當今友好使用者介面設計嚴重脫節的軟體. 事實上, 這些起初看起來古怪的特性是Vim(或者是vi)的作者和它的使用者們在自己漫長的文字編輯和程式設計生涯中總結出來的最快速最實在的操作, 在幾乎等於電腦本身曆史的成長期中, 曆經無數嚴厲苛刻的電腦使用者的批評與檢驗, 無用的特性或糟糕的設計在Vim使用者群面前根本就沒有生存的餘地. Vim細心而謹慎的作者們也不允許自己精心設計的軟體裡有這樣東西.第二個階段你開始熟悉一些基本的操作, 這些操作足以應付你日常的工作, 你使用這些操作時根本就不假思索. 但這些階段你仍然很少去碰Vim那晦澀的線上協助文檔. 它在你心裡只是notepad, edit一個勉強合格的替代品.第三個階段, 精益求精的你不滿足於無休無止的簡單操作, 冗長而乏味,有沒有更好的辦法可以四兩拔斤. 於是, 從UNIX參考手冊上, 從同事口中, 你漸漸叩開:help xxx的大門. 開始探索裡面充滿魔力的咒語. 從雜耍般的帶有表演性質的技巧開始, 這些技巧令人眩目但少有實用性. 不過這卻是你擁有魔力的第一步. 接下來, 你開始認識到這些咒語背後的真經, 開始偷偷修改一些奇怪的符號, 於是, 奇蹟產生了, 魔力不但仍然有效, 而且真實地作用於你現實中的文字編輯生活. 你在第二階段由於熟練操作而塵封已久的大腦突然開始運作. 但這個過程並非是達到某個臨界狀態後的一路坦途, 不斷的挫折, 新的挑戰, 看似Mission Impossible的任務.永遠伴隨著任何一個人的任何一個學習過程. 這是你使用Vim的最後一個階段, 也是最漫長最有挑戰性同時也充滿無數奇趣的階段. 這個階段裡你開始定製一些希奇古怪的顏色. 開始以敲入i18n來輸入internationalization, 開始讓Vim替你糾正經常把the 誤敲成teh的毛病, 開始讓Vim與系統裡各種精悍而強大的兄弟工具進行合作, 開始寫越來越長的script, 每一次的文本編輯體驗都妙趣橫生高潮迭起. 你的頭腦因為要用Vim完成高效的編輯而高度緊張. 你開始在Vim郵件清單裡提一些確實是問題的問題. 也開始發現你在Vim裡做了以前在SHELL裡做的幾乎一切事. 事實上你已經成了一個無可救藥的Vim骨灰級玩家.重複 ,編輯本段高效率移動
1、在插入模式之外基本上來說,你應該儘可能少的呆在插入模式裡面,因為在插入模式裡面 VIM 就像一個“啞巴”編輯器一樣。很多新手都會一直呆在插入模式裡面,因為這樣便於使用。但 VIM 的強大之處在於他的命令模式!你會發現,在你越來越瞭解 VIM 之後,你就會花越來越少的時間使用插入模式了。
2、使用 h、j、k、l使用 VIM 高效率編輯的第一步,就是放棄使用方向鍵。使用 VIM,你就不用頻繁的在方向鍵和字母鍵之間移來移去了,這會節省你很多時間。當你在命令模式時,你可以用 h、j、k、l 來分別實現左、下、上、右箭頭的功能。一開始可能需要適應一下,但一旦習慣這種方式,你就會發現這樣操作的高效之處了。在你編輯你的電子郵件或者其他有段落的文本時,你可能會發現使用方向鍵和你預期的效果不一樣,有時候可能會一次跳過了很多行。這是因為你的段落在 VIM 看來是一個大的長長的行。這時你可以在按 h、j、k 或者 l 之前鍵入一個 g,這樣 VIM 就會按螢幕上面的行如你所願的移動了。
3、在當前行裡面有效移動游標很多編輯器只提供了簡單的命令來控制游標的移動(比如左、上、右、下、到行首/尾等)。VIM 則提供了很多強大的命令來滿足你控制游標的慾望。當游標從一點移動到另外一點,在這兩點之間的文本(包括這兩個點)稱作被“跨過”,這裡的命令也被稱作是 motion。(簡單說明一下,後面會用到這個重要的概念)
4、常用到的一些命令(motion)fx:移動游標到當前行的下一個 x 處。很明顯,x 可以是任意一個字母,而且你可以使用 ; 來重複你的上一個 f 命令。tx:和上面的命令類似,但是是移動到 x 的左邊一個位置。(這真的很有用)Fx:和 fx 類似,不過是往回找。使用 , 來重複上一個F命令。Tx:和 tx 類似,不過是往回移動到 x 的右邊一個位置。b:游標往前移動一個詞。w:游標往後移動一個詞。0:移動游標到當前行首。(是數字0)^:移動游標到當前行的第一個字母位置。$:移動游標到行尾。):移動游標到下一個句子。( :移動游標到上一個句子。
5、在整個檔案裡面有效移動游標VIM 有很多命令,可以用來到達檔案裡面你想到達的地方。下面是一些在檔案裡面移動的命令:<Ctrl-f>:向下移動一屏。<Ctrl-d>:向下移動半屏。<Ctrl-b>:向上移動一屏。<Ctrl-u>:向上移動半屏。[2]G:到檔案尾numG:移動游標到指定的行(num)。(比如 10G 就是到第 10 行)gg:到檔案首H:移動游標到螢幕上面M:移動游標到螢幕中間L:移動游標到螢幕下面*:讀取游標處的字串,並且移動游標到它再次出現的地方。#:和上面的類似,但是是往反方向尋找。/text:從當前游標處開始搜尋字串 text,並且到達 text 出現的地方。必須使用斷行符號來開始這個搜尋命令。如果想重複上次的搜尋的話,按 n移動到下個 text 處,N 移動到上一個 text 處 。?text:和上面類似,但是是反方向。m{a-z}:在當前游標的位置標記一個書籤,名字為 a-z 的單個字母。書籤名只能是小寫字母。你看不見書籤的存在,但它確實已經在那裡了。`a:到書籤 a 處。注意這個不是單引號,它一般位於大部分鍵盤的 1 的左邊。`.:到你上次編輯檔案的地方。這個命令很有用,而且你不用自己去標記它。%:在成對的括弧等符號間移動,比如成對的 [ ] , { }, ( ) 之間。將游標放到任意符號上,然後通過 % 來移動到和這個符號匹配的符號上,% 還可以正確的識別括弧的嵌套層數,總是移動到真正匹配的位置上。因此這個命令在編輯程式碼的時候非常有用,可以讓你方便的在一段代碼的頭尾間移動。編輯本段高效的輸入
1、使用關鍵詞自動完成VIM 有一個非常漂亮的關鍵詞自動完成系統。這表示,你可以輸入一個長詞的一部分,然後按一下某個鍵,然後 VIM 就替你完成了這個長詞的輸入了。舉個例子:你有一個變數名為 iAmALongAndAwkwardVarName 在你寫的代碼的某個地方。也許你不想每回都自己一個一個字母的去輸入它。使用關鍵詞自動完成功能,你只需要輸入開始幾個字母(比如 iAmAL),然後按 <C-N>(按住 Ctrl,再按 N)或者 <C-P>。如果 VIM 沒有給出你想要的詞,繼續按,直到你滿意為止,VIM 會一直迴圈它找到的匹配的字串。
2、聰明的進入插入模式很多新手進入插入模式都只是用 i。這樣當然可以進入插入模式,但通常不是那麼合適,因為 VIM 提供了很多進入插入模式的命令。下面是最常用的一些:i:在當前字元的左邊插入I:在當前行首插入a:在當前字元的右邊插入A:在當前行尾插入o:在當前行下面插入一個新行O:在當前行上面插入一個新行c{motion}:刪除 motion 命令跨過的字元,並且進入插入模式。比如:c$,這將會刪除從游標位置到行尾的字元並且進入插入模式。ct!,這會刪除從游標位置到下一個歎號(但不包括),然後進入插入模式。被刪除的字元被存在了剪貼簿裡面,並且可以再粘貼出來。d{motion}:和上面差不多,但是不進入插入模式。
3、有效移動大段的文本使用可視選擇(visual selections)和合適的選擇模式不像最初的 VI,VIM 允許你高亮(選擇)一些文本,並且進行操作。這裡有三種可視選擇模式:v:按字元選擇。經常使用的模式,所以親自嘗試一下它。V:按行選擇。這在你想拷貝或者移動很多行的文本的時候特別有用。<C-V>:按塊選擇。非常強大,只在很少的編輯器中才有這樣的功能。你可以選擇一個矩形塊,並且在這個矩形裡面的文本會被高亮。在選擇模式的時候使用上面所述的方向鍵和命令(motion)。比如,vwww,會高亮游標前面的三個詞。Vjj 將會高亮當前行以及下面兩行。
4、在可視選擇模式下剪下和拷貝一旦你高亮了選區,你或許想進行一些操作:d:剪貼選擇的內容到剪貼簿。y:拷貝選擇的內容到剪貼簿。c:剪貼選擇的內容到剪貼簿並且進入插入模式。在非可視選擇模式下剪下和拷貝如果你很清楚的知道你想拷貝或者剪下什麼,那你根本就不需要進入可視選擇模式。這樣也會節省時間:d{motion}:剪下 motion 命令跨過的字元到剪貼簿。比如,dw 會剪下一個詞而 dfS 會將從當前游標到下一個 S 之間的字元剪下至剪貼簿。y{motion}:和上面類似,不過是拷貝。c{motion}:和 d{motion} 類似,不過最後進入插入模式。dd:剪下當前行。yy:拷貝當前行。cc:剪下當前行並且進入插入模式。D:剪下從游標位置到行尾到剪貼簿。Y:拷貝當前行。C:和 D 類似,最後進入插入模式。x:剪下當前字元到剪貼簿。s:和x類似,不過最後進入插入模式。
5、粘貼粘貼很簡單,按 p。
6、使用多重剪貼簿很多編輯器都只提供了一個剪貼簿。VIM 有很多。剪貼簿在 VIM 裡面被稱為寄存器(Registers)。你可以列出當前定義的所有寄存器名和它們的內容,命令為“:reg”。最好使用小寫字母來作為寄存器的名稱,因為大寫的有些被 VIM 佔用了。使用寄存器的命令為雙引號 “。比如:我們要拷貝當前行到寄存器 k。你應該按 “kyy。(你也可以使用 V”ky。為什麼這樣也可以呢?)現在當前行應該已經存在了寄存器 k 裡面直到你又拷貝了一些東西進入寄存器 k。現在你可以使用命令 “kp 來粘貼寄存器 k 裡面的內容到你想要的位置。
7、避免重複令人驚奇的 . 命令在 VI 裡面,輸入 . (小數點符號),將會重複你輸入的上一個命令。比如,你上個命令為“dw”(刪除一個詞),VI 將會接著再刪除一個詞。
8、使用數字使用數字也是 VIM 強大的而且很節省時間的重要特性之一。在很多 VIM 的命令之前都可以使用一個數字,這個數字將會告訴 VIM 這個命令需要執行幾次。比如:3j 將會把游標向下移動三行。10dd 將會刪除十行。y3t″ 將會拷貝從當前游標到第三個出現的引號之間的內容到剪貼簿。數字是擴充 motion 命令範圍非常有效方法。編輯本段高效的讀代碼建議在vim上安裝Taglist+cscope+ctags外掛程式有利於高效讀代碼,有利於學習![3]
1、安裝對於小編我來說我使用的是Ubuntu,安裝軟體一般使用的命令是apt-get install ***!對於vim+Taglist+cscope+ctags組合編輯器的建立,vim , cscope , ctags安裝起來比較方便使用上述命令即可安裝!(對於不同的Linux發行版本安裝軟體的命令不太一樣,需要根據自己的安裝版稍微修改,比如說Fedora即使用yum命令安裝)對於Taglist使用這個方法安裝不了,我們需要先下載,然後安裝完成:首先上網下載Taglist外掛程式,下載完成後解壓,再將檔案下的taglist.vim使用cp命令拷貝到HOME/.vim/plugin檔案夾下(cp -r taglist.vim ~/.vim/plugin)
2、vim的配置vim是一個非常好用的編輯工具,以下介紹幾個常用的底行模式命令:(1). 設定縮排:set smartindent // 設定縮排:set smartindent shiftwidth=4 // C語言自動縮排,縮排值為4個字元寬度(2). 顯示光線標行列資訊:set ruler // 顯示光線標資訊(右下角)(3). 查看定位字元:set list // 顯示定位字元,以^符號顯示定位字元的位置(4). 查看行數資訊:set number //顯示行號(左邊)(5). 關鍵字高亮:syntax on //關鍵字高亮(6). 多檔案編輯 ,在編寫程式時有可能需要同時編輯多個檔案,在這種情況下,需要如下設定: split two.c // 多檔案編輯當然,如果不嫌麻煩,可以在每次開啟Vim時 輸入如上命令,如我經常用的是:set number :set ruler :syntax on :set smartindent 命令,如果將平時在底行模式下輸入的命令直接寫入設定檔,則以後使用Vim時不用再次輸入這些命令。首先,試著在Vi的底行模式下輸入如下命令,如果不支援的話,去下載一個Vim的全版本,sudo apt-get install vim-full。以下是修改設定檔的方法:(1). 找到Vimrc檔案。(2) 查看檔案的許可權:ls -l vimrcshisir@shisir-desktop:/usr/share/vim$ cd /etc/vimshisir@shisir-desktop:/etc/vim$ lsgvimrc vimrc vimrc.tinyshisir@shisir-desktop:/etc/vim$ ls -l vimrc-r--r--r-- 1 root root 2492 2009-04-10 08:08 vimrc(3) 如果沒有寫入權限的話,修改許可權,使我們可以修改該設定檔sudo chmod a+w vimrc(4)根據個人需要將上訴命令寫入設定檔比如,我個人的設定是: syntax on , set ruler ,set number , set smartindent shiftwidth=4下面貼上我的vimrc檔案的配置資訊:"顯示行號set number"檢測檔案的類型filetype on"記錄曆史的行數set history=1000"自動對齊set autoindentset cindent"智能選擇對齊set smartindent"tab為4個空格set tabstop=4"當前行之間交錯時使用4個空格set shiftwidth=4"設定匹配模式,輸入做括弧會出現右括弧set showmatch"編輯時顯示光線標狀態set ruler"快速匹配set incsearch"修改檔案自動備份if has("vms")set nobackupelseset backupendif