linux入門系列4--vi/vim編輯器
上一篇文章“linux入門系列3--linux遠端登陸工具”講解了如何使用常用的工具遠端連線和管理linux伺服器,要管理伺服器必然會涉及到指令碼檔案的建立、編輯工作,因此在介紹命令之前,本文討論linux中編輯器相關知識。
一、Vi/Vim介紹
- VI(Visual Interface),是一個文字編輯器,主要在Unix及類Unix環境中使用。
- Vim(Vi+improved)在Vi的基礎之上進行了功能提升,相當於Vi的增強版。
所有類Unix 系統都會內建vi文字編輯器,就像window電腦上的記事本一樣,可以對文字內容進行編輯,vi編輯器是Unix系統最初的編輯器, 允許檢視檔案中的行、在檔案中移動、插入、編輯和替換文字 。
然而由於Unix系統是商業作業系統,國外一牛逼的程式設計師“ 理查德·斯托曼”發起了GNU計劃(該計劃目標是建立一套完全自由的作業系統,實現Unix系統的標準介面,因此完全向上相容Unix,但是可以自由使用),在GNU專案中,程式設計師將vi編輯器移植到開源世界的同時對其做了改進,因此重新命名為“Vi improved”,也就是我們說的vim。
ps: GNU 專案,英文全稱為“GNU is Not Unix”,簡單的說,就是一個開發類 Unix 作業系統的專案,GNU 作業系統是由 GNU 軟體包及其第三方的免費軟體包組成,所以其最大的特點就是免費。
因此vim是從vi發展而來的一個具有程式設計能力的文字編輯器, 可以主動的以字型顏色辨別語法的正確性,方便程式設計。 vim具有程式碼補全、編譯及錯誤跳轉等方便程式設計的功能,在程式設計師中被廣泛使用。
有的linux發行版可能沒有安裝vim(需要時自行安裝即可),但是一定會有vi編輯器。作為入門文章本文僅演示二者共同的用法,編輯器有三種模式:一般模式、編輯模式、命令模式。每種模式可以進行不同的操作,完成不同的功能。
三種模式之間可以相互轉換。一般模式主要用於:複製、貼上、刪除;編輯模式主要用於編輯文字;命令模式主要執行文字的儲存、查詢等。
二、一般模式
我們平時在windos系統上編輯檔案,肯定會涉及到複製、貼上、刪除等操作,而這些操作在vi中都是在一般模式下進行的。
一般模式是預設模式,要進入編輯模式和命令模式都需要它作為橋樑。
用vi命令開啟一個檔案直接進入一般模式,在這個模式中可以對文字內容進行復制、貼上、刪除等操作。可以通過鍵盤方向鍵控制游標移動到指定位置,也可以通過快捷鍵控制游標位置。
1.1 複製
命令(語法) | 功能描述 | 案例(說明) |
---|---|---|
yy | 複製當前游標所在行 | |
y*y | 複製當前游標所在行開始的*行 | y2y:表示從當前游標所在行開始複製2行 |
yw | 賦值一個單詞 | 游標之後開始複製,包括詞尾的空格;如果想要複製整個單詞,就要把游標放到單詞首字母 |
1.2 貼上
命令(語法) | 功能描述 | 案例(說明) |
---|---|---|
p | 貼上 | 貼上到當前游標的下一行(複製的行),或當前游標字元之後(複製的單詞) |
1.3 刪除
命令(語法) | 功能描述 | 案例(說明) |
---|---|---|
dd | 刪除游標當前行 | |
d*d | 刪除游標當前行開始的*行 | d2d:表示從當前游標所在行開始刪除2行 |
dw | 刪除游標之後的一個單詞 | 游標之後開始刪除,包括詞尾空格;如果要刪除整個單詞,游標放到單詞首字母,類似yw |
x | 刪除游標之後的一個字元 | 相當於del |
X | 刪除游標之前的一個字元 | 相當於Backspace |
1.4 撤銷
命令(語法) | 功能描述 | 案例(說明) |
---|---|---|
u | 撤銷 |
1.5 定位
上邊的複製、貼上、刪除,到目前我們都是通過方向鍵來控制滑鼠的位置,但是這樣效率太低,通過下邊的定位命令可以快速進行定位。在一般模式下定位游標,進入編輯模式進行編輯,這樣可以大大提高效率。
命令(語法) | 功能描述 | 案例(說明) |
---|---|---|
shift+^ | 行首 | |
shift+$ | 行尾 | |
1+shift+g | 頁頭 | 先按1再一起按shift和g組合鍵 |
shift+g | 頁尾 | |
*+shift+g | 任意行 | 先按數字*,在一起按shift和g組合鍵,除錯程式時非常有用 |
三、編輯模式
在一般模式下,通過如下i、a、o、r命令進入編輯模式,對文件內容進行編輯。命令的區別在於進入編輯模式後游標插入點不同。
命令 | 功能描述 |
---|---|
i | 當前游標前 |
I | 當前游標所在行行首 |
a | 當前游標後 |
A | 當前游標所在行行尾 |
o | 當前游標下一行,新開一行 |
O | 當前游標上一行,新開一行 |
r | 當前游標之後,新輸入會替換一個字元 |
R | 替換當前游標之後的多個字元 |
四、命令模式
在一般模式下,可以通過以下三個命令:“:”、“/”、“?”進入底行命令模式完成檔案儲存、內容查詢及字元替換功能。執行完命令可以通過ESC返回一般模式。
3.1 檔案儲存
語法格式
:[選項]+回車
選項分為w、q、!可以相互組合使用。
w:儲存
q:退出
!:強制執行
案例
:w 儲存
:w filename 檔案另存為filename
:wq 儲存並退出
:wq! 強制儲存並退出
:wq! filename 檔案另存為filename並退出編輯器
3.2 查詢內容
查詢命令主要有2個:/或?二者功能一致,只記住一個即可
- 語法格式
/要查詢的詞+回車
?要查詢的詞+回車
如果用第一個語法/進行查詢,則按n鍵向下查詢下一個,shift+n向上查詢下一個
第二個語法則相反,n向上查詢上一個,shift+n向下查詢下一個
案例
/heimatengyun 在當前文件中查詢heimatengyun字串
等價於
?heimatengyun
3.3 替換內容
可以通過如下命令替換當前文件裡的內容
- 語法格式
:[範圍]s/要被替換的內容/新內容/[c,e,g,i]+回車
範圍:1,5表示從第一行到第五行。1,$表示從第一行到最後一行,等價於%。%表示當前編輯的文章。
可組合選項:c表示confirm,每次替換前詢問;e表示不顯示error;g表示globe不詢問整行替換;i表示ignore不區分大小寫;I表示大小寫敏感
- 案例
1,3s/you/YOU 在當前文件的1至3行搜尋you並替換為YOU。注意不是單詞替換,只要匹配就會替換,比如如果第二行存在your這個單詞,則會被替換為YOUr
1,3s/you/YOU/c 替換前會詢問是否要替換
s/e/E/g 替換當前行所有e為E。假設當前游標所在行內容為where are you from替換後變為hErE arE you from
3.4 顯示行號
:set nu 顯示行號
:set nonu 關閉行號
以上為vi編輯器基本的使用命令,多敲幾次自然就記住了。至此我們已經學會使用vi編輯器,可以建立和管理各種檔案了。下一篇文章將講解linux常用的命令,學會命令後就可以製作各種指令碼完成各種工作任務了