玩轉Vim-劄記(一)

來源:互聯網
上載者:User

標籤:

玩轉Vim-劄記(一)

  簡介

  在這個蔚藍色的星球上,流傳著兩大神器的傳說:據說Emacs是神的編輯器,而Vim是編輯器之神。一些人勇敢地拾起了Vim或Emacs,卻發現學習曲線陡峭而漫長,還是有一些人留下來了,堅定地守護著這兩大神器。一些說葡萄太酸的人想離開又不甘心,總是問:它們到底神在哪裡啊?不過在此我只介紹傳說中的編輯器之神-Vim。Vim是Vi最受歡迎的變種之一,除了繼承了Vi迅捷的編輯方式, Vim的功能已經比原始的Vi強大得多。這也得益於它可以用Vim指令碼無限地擴充。 Vim.org 上已經有數千個指令碼了,給Vim增加各種各樣的特性和功能。而且它的設計更符合Unix傳統,它通過管道機制和系統內各種積木工具打交道,它講究的是和系統內的工具程式協作來完成使用者的任務。除此之外,它的定位也相當明確,就是做一個強大的編輯器,因此它的絕大部分擴充,都是為了更好的完成編輯文本的任務。Vim的前身Vi的作者Bill Joy和Emacs的作者Richard Stallman 都是那個時代著名的駭客,所以這兩款編輯器一開始面向的主要使用者就是寫程式的人,現在仍然是。它們對編程加入了越來越多的支援,如文法高亮、智慧縮排、關鍵字補全甚至整合調試。

初窺門徑

  要想玩嘛,首先需要先安裝一個Vim再說咯。由於我的開發一般都是在CentOS上進行的,所以就說下它的安裝吧。其實也就是一行命令的事兒了:

1 [[email protected] ~]# yum install vim2 Loaded plugins: fastestmirror3 Setting up Install Process4 Loading mirror speeds from cached hostfile5 epel/metalink                                                                                                 | 4.3 kB     00:00    

  至此vim安裝結束,現在先不要進行任何操作,先接著往下看:

1 [[email protected] site-packages]# vim site.py

  然後就會看到如下的介面:

1 def __boot():2     import sys, imp, os, os.path3     PYTHONPATH = os.environ.get(‘PYTHONPATH‘)

   此時進入了所謂的常規模式(Normal Mode),既然提到了模式這個概念,那麼就詳細的說下Vim的兩種模式吧。

  常規模式(Normal Mode)與插入模式(Insert Mode):

  常規模式:可以進行編輯,對已存在的文字進行一些操作,包括:複製,剪下,移動,修改,刪除,格式化等等。

  插入模式:也就是傳說中的輸入了。

  而大部分的編輯器都只有一種模式,以上兩部分的操作合并在一起進行,這就是為什麼會有菜單和按鈕的原因,而對於文字的範圍選取也需要額外的方法來輔助,比如快速鍵和滑鼠操作等。無論是什麼樣的情況我們都不得不迫使大腦在思考(輸入)和尋找(編輯)中不停轉換,即使你不在意這一點,始終有一些操作你是無法流水化的。比如說:在游標隨意停留在某處的時候,你能閉著眼睛用滑鼠點擊到某個功能嗎?Vim 就可以。換言之一旦你掌握了 Vim之後,所有的操作——強調一遍:所有的操作都可以不用尋找,不用滑鼠等工具輔助,你可以全副身心投入在你的主要目標上。

  那麼問題來了,如何在兩種模式間進行切換呢?

  其實很簡單的。進入檔案之後直接就是常規模式,那麼從常規模式進入到插入模式只需要從以下幾個命令選擇一個即可:

1 i:在當前字元的左邊插入2 I:在當前行首插入3 a:在當前字元的右邊插入4 A:在當前行尾插入5 o:在當前行下面插入一個新行6 O:在當前行上面插入一個新行

   那麼如何從插入模式進到常規模式,最常見的有三種:

  1. 使用 ESC 鍵:這是最通用的方法,它唯一的缺點就是距離標準鍵位較遠,然而由於它的位置在左上方,所以你也可以做一些強化練習來準確的找到它。記住:不要看鍵盤去找,要形成肌肉記憶!也有很多人偏好修改 ESC 鍵位,比如說把它轉移到 CapsLock,即大寫鎖定鍵上去,這是可取的,並且也十分有效,然而我不推薦這麼做。因為修改鍵位相對來說麻煩一些,在某些情境會讓你頗感不便。比如說你去客戶那裡安裝伺服器,遇到的幾乎都是標準鍵盤,不光是在 Vim 下讓你難受,其他的地方也是如此,因為 ESC 太常用了,而且沒有第二替代鍵。

  2. 使用 Ctrl-[ 按鍵組合:它的功能和 ESC 完全等價,只是按鍵組合稍微困難一些。這裡的竅門是 Ctrl 鍵的位置,我會把它重新對應到 CapsLock 鍵上去。這樣一來兩手的小指稍微調動就可以完成,稍加訓練即可熟練掌握。這也是我不推薦 ESC 的第二個原因,至於之前提到過的鍵位映射帶來的後遺症,不要緊,鍵盤上都有不止一個的 Ctrl 鍵,你根本無需調整鍵位。

  3. 使用 Ctrl-c 按鍵組合:看起來它似乎比 Ctrl-[ 更容易一些,但是它們的含義有很大的差別。在終端下 Ctrl-c 的意思是“中斷”,基本上它會中止所有正在啟動並執行命令,當然它也可以在 Vim 裡帶我們中斷一切操作返回預設的常規模式。但是 Vim 有一些操作其實是依賴正常的返回方法的,也就是 ESC 或者 Ctrl-[,使用 Ctrl-c 會導致這樣的功能無法被有效觸發(有不少外掛程式依賴這些觸發功能,所以要小心莫名其妙的問題)。總而言之這是最不推薦的方法,除非你心裡很有數,並且能在正確的時候使用前面兩種方法。

  好的,模式的介紹就此打住,在真正玩之前,特別建議要學會VIm的移動指令:Vim 的基本移動就是 h j k l 這四個鍵,分別代表    

1 h    游標左移    2 j    游標下移    3 k    游標上移    4 l    游標右移    

  很特別是嗎?好吧,我承認是很古怪。然而你必須要習慣它們,並且永遠不要更改它們的鍵位!這樣你就可以沒有小鍵盤的情況下也可以快速的移動,當然,最主要的是你還可以手指不用怎麼大幅度的移動。至於為什麼要這麼設計?好像鍵盤都是這麼設計的吧。不信的話戳這裡。

  很不好記,很難練是嗎?不想練習是嗎?沒事,下面給你四個有趣的東西,相信你會不知不覺愛上這些方向鍵的:

  1. Vim Adventures 這是一款線上遊戲,玩法超級簡單,修飾鍵都是 Vim 的移動指令。你所要做的就是把鍵盤當成手柄,移動一個陰影來尋找字母、人物、寶藏、鑰匙等等。如果你無法過關也沒有關係,重要的是控制方向這個環節能夠把它練習到無需思考且不會犯錯就可以了。
  2. Vim Snake 如果你覺得上一個遊戲有點難,因為無法過關讓你有挫折感的話,這個遊戲就簡單多了——貪吃蛇,誰不會玩?只不過你只能用 h j k l 來控制方向而已。注意,只有在插入模式(i)才能吃到東西,只有在常規模式(ESC)才能移動方向。完整的流程如下:移動 -> 對準目標 -> 按下 i 直到吃到目標 -> 迅速按下 ESC -> 移動。關於模式,我們下次解釋。
  3. Open Vim Tutorials 如果以上兩款遊戲都讓你為難的話(喂,你不是吧?!),那麼這就是你的救星啦。請直接跳到第三章練習四方向移動,等到開始習慣這種感覺了再繼續挑戰遊戲。
  4. Vim Genius 這也是好東西,它比上一個更貼近 Vim 的哲學。它不讓你看到要按哪個鍵,而是給你文字提示讓你盲打對應的鍵,其好處是鍛煉自己的肌肉記憶和條件反射思維。然而它比較依靠你的自控能力與耐心,另外英文不好也會有點拖累。

  至此,Vim的大門已經開啟,此次介紹也就到此結束了。

  以上。Enjoy Vim!

 

PS:本部落格歡迎轉寄,但請註明部落格地址及作者,因本人水平有限,若有不對之處,歡迎指出,謝謝~

  部落格地址:http://www.cnblogs.com/voidy/

  部落格新址:http://voidy.net

  <。)#)))≦

玩轉Vim-劄記(一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.