天天看點

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編輯器。作為入門文章本文僅示範二者共同的用法,編輯器有三種模式:一般模式、編輯模式、指令模式。每種模式可以進行不同的操作,完成不同的功能。

三種模式之間可以互相轉換。一般模式主要用于:複制、粘貼、删除;編輯模式主要用于編輯文本;指令模式主要執行文本的儲存、查找等。

linux入門系列4--vi/vim編輯器

二、一般模式

我們平時在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常用的指令,學會指令後就可以制作各種腳本完成各種工作任務了。

繼續閱讀