實戰技巧 精進Vim的使用(一)

2021-08-26 07:25:50 字數 2627 閱讀 1807

我們是開發者,沒錯。我們要開發程式,也沒錯。開發程式的第乙個步驟就是寫程式,也就是編輯源程式**。因此,程式開發跟編輯器有關係。乙個良好的編輯器能夠大大的提高的你寫**的速度,也許你不相信,真的有很多的「牛人」在用notepad(記事本)寫**。雖然現在有許多的ide(integrated development environment整合開發環境--一種能把原始碼的編輯,編譯,除錯和配置都整合在一起的開發工具集),但是公認的世界上最好的二個源**編輯器就是vim和emacs。經過幾十年的發展,現在它們都已經變成了乙個家族,也即以vim為代表的vi家族,和以emacs為代表的emacs家族,在家族內部還有許多其他的轉殖版本,而且它們都能跨平台,在各種主流的作業系統平台都有可用的版本,如windows,unix/linux和mac os等。

我在大學三年級的時候開始接觸這二個編輯器,首先的感覺就是不習慣不適應,但慢慢當過了幾天後就會發現它們的強大之處和魅力所在,然後就慢慢的習慣了它們甚至喜歡上了它們。而且,在全世界範圍內,特別是unix/linux社群,人們對這二個編輯器爭論不止,各自的追隨者都稱自己的是最好的,吵了幾十年,也沒有結論,因為它們都是最好的。

個人認為,emacs更適合於寫**和多個原始碼檔案的管理,因為很早以前emacs本身就是乙個作業系統,它更像乙個ide,可以編輯,編譯,除錯和執行程式。而vim更適合於編輯已寫好的檔案,因為它的移動,查詢,替換是最有效率的;或者,vim適合於應付單個原始碼檔案(甚至有一段時間我先用emacs寫原始碼,然後再用vim來修改)。後來不知道為什麼,用vim的次數比emacs多,後來就對vim相對熟悉一些,到現在emacs已經有一年多沒有用過了。

vim的基本使用方法和初級編輯

高階高階技巧

網路資源和vim script(指令碼)

這是第一篇,至於後面二篇會在以後的日子裡慢慢的醞釀

說了這麼多廢話,現在開始進入正題。

這篇裡面介紹如何獲取vim,如何安裝,如何開啟檔案,並以最實用的方式來講述基本的編輯命令。

注:除非特說明,本文都是在linux(fedora)的terminal下面使用,所以其他平台的啟動方式可能會不同。但我想不會成為問題的,必要的時候請google。

mac os使用者,最好還是參考官方安裝文件,或是google一下,這個沒有試過,不敢亂講。不過,貌似mac os上已帶有vi的乙個轉殖版本,什麼名字忘記了,可以去查查(等哥發達了,能買得起蘋果的電腦時,一定補上這塊)

unix/linux使用者,這個平台方式就比較多了,也比較靈活

直接用系統中的軟體維護工具來搞定,這是最省事的方式,比如用yum, emerge, apt-get等工具#yum install vim gvim vimdiff -y然後等它顯示install complete就可以了。

對於如何獲取和安裝,也可以參考官方的文件或是網路上的資源。

#vim #vim file.txt #gvim #gvim file.txt

以上分別是在終端上以字元模式進入vim並建立乙個未命名檔案,開啟或建立file.txt檔案;以gui的形式建立乙個未命名檔案,以gui形式開啟或建立file.txt

像其他unix/linux命令一樣,vim也有許多的選項,說實話,平時也不怎麼用,所以請參考man或是參看幫助

#man vim #vim --help

然後看到的就是vim的主要頁面視窗。接下來就可以使用它了。但在使用之前必須先理解vim的工作方式:

首先,vim是乙個全螢幕的字元編輯器,也就是說沒有選單。因為它出生於那個unix黑乎乎的字元終端時代,所以它沒有選單,沒有滑鼠支援的左鍵和右鍵,甚至鍵盤上連方向鍵,home, end, pageup, pagedown, insert/replace也都沒有。所以vim的所有編輯命令都是常見的字母,比如:a, e, c, d, y, p, u, x, r, ~等等。它只能通過(gui除外)這些字母式的編輯命令來進行各種編輯,比如插入,替換,刪除,移動,查詢等。

其次,vim的有二個工作模式:乙個是編輯模式,也就是說像notepad一樣,在鍵盤上面打什麼,編輯器裡面就會出現什麼;另外乙個就是命令模式,也就是說這種情況下,某些按鍵會被當作編輯命令。因為它的編輯命令都是普通的字母,所以為了讓這些字母成為編輯命令,就需要設定乙個模式,讓其只在命令模式下是編輯命令,而在編輯模式下只是普通的字元。從編輯模式可以按esc鍵(美式鍵盤上面最左上角的那個,其他鍵盤我就不知道了)進入命令模式;而在命令模式時,只要使用了插入相關的命令後,會自動切換到編輯模式。

退出稍稍有些不同,沒有那麼顯而易見。就需要用到vim專屬的命令了:

除了上面講的退出命令外,還有一些其他的命令,比如,

基本的命令包括,插入,刪除,替換

刪除命令:刪除命令執行後會停留在命令模式

替換命令:

拷貝:貼上:

其他命令:

撤消命令:

vim最最神奇,也是吸引人們的地方在於,它可以把數字與編輯命令一起使用,以達到最高效的編輯方式。對於絕大多數命令來講,所加上的數字是重複的意思,比如

能組合數字是vim最能體現效率和神奇的地方,這裡需要平時使用的時候多多體會,其中奧妙無限,卻不是一句二句能講的清的。

至此,如果上面這些命令全部都能熟練應用,就已經算是乙個vim的中級使用者了,對於大多數人來講,這些命令已經足夠。如果能熟練應用這些命令就可以達到雙手不離開鍵盤的牛人式的程式設計方式^_^。如果堅持練習,幾個星期內就可以這些命令搞熟練,然後就可以學習高階的操作,比如視窗控制,多tab頁控制,擴充script指令碼等等。

Spring Cloud實戰技巧之使用隨機埠

前言 在spring cloud構建微服務架構中,我們經常會需要啟動多個例項的情況來測試註冊中心 配置中心等基礎設施的高可用,也會用來測試客戶端負載均衡的呼叫等。但是,我們乙個應用只能有乙個埠號,這就使得在本機測試的時候,不得不為同乙個服務設定不同的埠來進行啟動。在本地用不同埠啟動同一服務例項的方法...

Android實戰技巧 ViewStub的應用

在開發應用程式的時候,經常會遇到這樣的情況,會在執行時動態根據條件來決定顯示哪個view或某個布局。那麼最通常的想法就是把可能用到的view都寫在上面,先把它們的可見性都設為view.gone 然後在 中動態的更改它的可見性。這樣的做法的優點是邏輯簡單而且控制起來比較靈活。但是它的缺點就是,耗費資源...

Android實戰技巧 ViewStub的應用

在開發應用程式的時候,經常會遇到這樣的情況,會在執行時動態根據條件來決定顯示哪個view或某個布局。那麼最通常的想法就是把可能用到的view都寫在上面,先把它們的可見性都設為view.gone 然後在 中動態的更改它的可見性。這樣的做法的優點是邏輯簡單而且控制起來比較靈活。但是它的缺點就是,耗費資源...