編輯器之神-vim的使用技巧

vim VS. emacs

vim被譽爲編輯器之神,而emacs被譽爲神之編輯器。中國文化博大精深,他們究竟有什麼區別呢?作爲emacs小白的我來說不想在這裏獻醜,直接貼上一篇博客,有興趣的同學可以深入研究或者自行百度https://www.v2ex.com/t/332566

總之我對這兩句話的簡單理解是:vim是編輯器裏面最優秀的;而emacs則常常是大神所鍾愛的編輯器。貌似這個解釋有些牽強,反着說意思就是大神們不太喜歡最優秀的編輯器。暈,自己把自己的結論推翻了。

vi VS. vim

這裏我要說的是vim is not only vi。雖然vi是vim的祖先,但是他們兩個真的不是同一個編輯器,證據就是在輸入“vim”命令以後,vim的歡迎界面第一行寫着“VIM - Vi Improved”。

至於這兩個編輯器的區別,這裏我也不獻醜了,詳情請看這裏https://www.cnblogs.com/KiraEXA/p/5994078.html

總之我對這兩個編輯器的簡單概括是:珍惜生命,請使用vim!

vimtutor

如果想學習vim,但是又不知道從哪裏學起,這裏有一個很好的vim學習教程。

不管你是macOS系統、windows系統或者其他Linux發行版系統,只要你在機器上安裝了vim,那麼就會自帶安裝vimtutor。劃重點:不管你在這個教程裏面怎麼操作,都不用擔心損壞這個教程,因爲他有一個很神奇的功能就是每次打開都是一樣的。vim開發人員早就考慮到一些小白用戶可能會把vimtutor修改的面目全非,導致下次啓動,不能再繼續學習的困擾。

廢話不多說,現在就可以開始你的vimtutor之旅了,希望你花30分鐘看完(最好操作一遍)vimtutor以後再回來,我相信你對於vim的基本操作已經有了一個簡單的認識。後面的內容將介紹一些比較高級的、可能會經常用的、並且在vimtutor中沒有提及的內容。

:help

我覺得help算是vim裏面最重要的命令,相當於linux的man命令。他會告訴我們一些設置的相關說明和語法,可以讓我們通過他提供的公式舉一反三,而不僅僅侷限在一個命令的使用上。

help命令的而使用方法是在命令模式下輸入help。這裏我並不打算講解vim的三種模式,有興趣可以上網搜索,最簡單的識別命令模式的方法是你輸入的內容都會顯示在窗口的最下面一行,並且輸入內容以“:”開頭,當然“:”是你自己輸進去的。

這裏列舉一個通過“:help :s”查到的使用說明

  •  中括號中的內容爲選填內容
  •  大括號內容是必填內容
  •  range是一個區間,表明要影響的行的範圍,如果沒有改參數說明隻影響當前行
  •  ubstitute這個是substitute單詞縮寫時候省略掉了,但是如果你執意要用全拼,也是可以的
  •  pattern意思爲正則表達式,這裏值需要查找到的內容
  •  string指的是需要將parttern匹配的內容替換成string位置的內容
  •  flags是控制:s行爲的參數,不填在匹配行進行一次替換。比如g代表在一行範圍內多次替換,c代表確認替換
  •  count指定替換的次數,我一般不會用到這個參數

宏的錄製和播放

宏不得不說是vim裏面一大神器,他可以解放重複的勞動。

宏的簡單理解就是對vim操作命令進行記錄,播放宏就是將記錄的vim操作進行讓vim自己執行一遍。如果在@前面加上數字,比如100,就是說將記錄的宏播放100遍。

那麼怎麼錄製宏呢?紅的錄製是在normal模式下按下q,然後在按一任意26個字母(如:x)就可以將錄製到指定的寄存器(x)中了。接着可以進行一兩個簡單的操作,比如dd。然後再按下q結束宏的錄製。

那麼怎麼播放宏呢?在normal模式下輸入@和你剛纔輸入的那個字母(如:x),就會看到他執行了一次剛纔錄製的操作dd,如果我們輸入100@x,就會神奇的發現他執行了100次dd操作,細思極恐。

如果我上面巴拉巴拉一堆文字沒有讓你看明白,那麼請移步這裏有圖文並茂:https://blog.csdn.net/lalor/article/details/7277761。相信好奇的你一定想迫不及待的試一下。

翻頁

相信我們經常在查看日誌的時候需要翻屏,我曾經就看到有人不會翻屏使用方向鍵在幾十兆的日誌中一行一行一行一行的移動,那時候我還是個小白,如果是在現在我一定會說:放開vim,讓我來!

其實一般我們查找日誌都是先find,然後在在定位到具體範圍以後在向前翻頁,向後翻頁。

那麼問題來了,怎麼翻頁呢?

  • ctrl + f 向下翻一頁
  • ctrl + b向上翻一頁
  • ctrl + d向下翻半頁
  • ctrl + u向上翻半頁

你以爲這就完了嗎?然並卵。

有時候我們還要定位光標呀,定位光標和翻頁略有不同

  • zz將光標定位到當前屏幕的中間位置
  • zt將光標定位到當前屏幕的第一行
  • zb將光標定位到當前屏幕的最後一行

寄存器

前面再講宏的時候已經提到過一次寄存器了,這裏不要嫌煩,再提一次,因爲他真的很重要。

我們經常需要一時間複製很多東西,然後在一個個粘貼,這件事在其他編輯器上只能一個一個複製粘貼,但是在vim裏面可以將內容先複製到寄存器裏面,然後在從寄存器裏面粘貼出來。我不清楚我描述清楚沒有[笑臉]

寄存器的吊起是“加任意一個字母,就可以調起任意指定的寄存器。如果後面連接的是複製操作,那麼複製的內容會被保存到該寄存器中;如果 後面鏈接的是粘貼操作,那麼該寄存器的內容會被粘貼到光標後面。

歷史

很多人都不知道vim中有查找歷史和命令模式歷史,甚至是很多博客中都沒有提及這樣的概念,這真是太可惜了。

查看查找歷史我們只需要在normal模式下輸入q/然後就可以查看之前的搜索歷史,通過移動光標選中需要執行的歷史搜索,然後按回車鍵執行搜索,這個功能對於喜歡搜索,又不喜歡複製來複制的人來說簡直以一種福音。

雖然命令模式不經常用,但是命令模式也有查看歷史的命令q:。這樣就可以查看到自己之前輸入過得歷史命令模式的命令,同樣移動光標到指定行,按回車執行選定的行命令。

一般人我不告訴他:對歷史命令還可以重新編輯,然後按回車鍵執行!

vim內調用系統命令

有時候我們需要在編輯的時候急性的執行一些系統命令,比如:pwd。因爲是在控制檯,所以只能關閉vim,然後在執行pwd,然後在進入vim。這個技巧可以在vim裏面執行系統的pwd命令,那就是在normal模式下輸入:!pwd,然後就會看到pwd被神奇的執行了,按回車鍵可以回到vim中繼續編輯。

標記和跳轉

有時候我們經常要在冗長的日誌文件裏面跳來跳去來對比內容,有的人索性直接吧相關內容複製出來或者截圖以後來做對比,我想說從現在起不用了,只要你學會了下面的技能:標記、跳轉。

標記的意思就是在文檔裏面做一個標記,方便以後回來查看他,在vim中的快捷鍵就是在normal模式下使用m,然後在跟26個字母中的任意鍵(比如:j),然後就把當前光標所在的位置標記到了指定的字母上(如果剛纔你按下了mj那麼意思就是將當前光標位置記錄了到j字母上)。

這裏的跳轉不是指gg,G這類跳轉,是指跳轉到使用m標記過得地方,比如剛纔我們將當前位置記錄到了j字母中,現在我們任意跳轉到vim其他地方,想要快速跳轉回來,只需要按下`j就可以跳轉到剛纔標記的地方了(`鍵就是tab鍵上面那個最不起眼的,最不經常按的鍵,現在可以派上用場了),是不是很智能,這個功能一遍編輯器是不支持的,可以說有是vim一大神器。想想有26個按鍵可以記錄跳轉,反正我是用不過來,用的最多的時候也不超過5個,如果你的記憶力超好,我相信26個記錄的位置也夠你用了吧。

 

待續……

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章