大家好,是矜辰所致,嵌入式 Linux入 門第四課,了解 Linux 下的編輯器,掌握 vi 編輯器的使用。
前言
前面幾篇文章學習了 Linux 的文件系統,以及常用Shell 命令,我們學習Linux的使用,離不開文本編輯,本文就要來學習了解 Linux 下的編輯器及其使用方法。
本文主要在于說明 Linux 中一個重要的編輯器 - Vi 編輯器的操作使用。
vi 編輯器,有人愛他,因為在所有的 linux 系統中,都有他的存在,使得維護人員可以拋開圖形化界面,進行代碼編輯;
vi 編輯器,有人恨他,因為脫離了大部分人習慣的圖形化界面編輯習慣,純指令形式的編輯方式,讓新人望而卻步。
本文帶你認識這個讓人又愛又恨的 它,希望它不再是你 Linux 學習道路上的絆腳石,而變成你以后的指明燈!
嵌入式 Linux 入門系列博文:
嵌入式 Linux 入門(一、Linux 基本介紹及文件結構)
我是矜辰所致,全網同名,盡量用心寫好每一系列文章,不浮夸,不將就,認真對待學知識的我們,矜辰所致,金石為開!
一、Linux 下的編輯器
在我們安裝的 Ubuntu 中,自帶的編輯器有 gedit 編輯器 和 vi 編輯器。
1.1 gedit 編輯器
gedit 是一個窗口式的編輯器,和 windows 下面的記事本類似。
我們直接使用 shell 命令 打開 gedit 編輯器:
gedit < 文件名 >
如圖:
使用方法也和記事本類似,使用起來也簡單,gedit 編輯器也不是本文所介紹的重點,所以只是簡單提一下。
要注意的是,gedit 是一個窗口式的編輯器,只能在Ubuntu桌面環境下使用 。
1.2 Vi 編輯器
除了 gedit 編輯器 ,Linux 還自帶了一個 vi 編輯器。
所有的 Unix Like 系統都會內建 vi 編輯器,其他的文書編輯器則不一定會存在。
vi是一個命令,也是一個命令行下的編輯器。
我們使用如下命令打開 vi 編輯器:
vi < 文件名 >
對于接觸過 Linux 的人來說, vi 編輯器是一個繞不開的話題。很多初學者學習 Linux 最頭大的一件事情就是學習 Vi 編輯器,因為 vi 操作完全脫離鼠標,選擇一整大段代碼中間都一部分,也是通過鍵盤定位。對于大部分人來說,都習慣了圖形界面編輯器,在終端模式下面編輯實在是難以下手。
vi 編輯器這么難上手,而且現在跨平臺的編輯器很多,比如我們現在常用的 Vscode,那么為什么所有的 Linux 學習教學都會講解 vi 編輯器的使用?
1.3 學習 Linux 為什么一定要學 Vi ?
總的來說,有2點最重要的原因:
1、如上文所言,vi是最基本的文本編輯器,每個Linux發行版都會自帶vi,其他的編輯器不一定存在。
2、 就像我們必須學習 Shell 指令一樣,在很多運行 Linux 的嵌入式設備或者服務器調試的時候,并沒有GUI形式的編輯工具,但是一定會有vi 。
而且當我們真正熟練掌握 vi 的使用后,在以后對文件做些簡單修改時,使用 vi 命令的效率非常高,學會它后能使得我們在 Linux 的世界里暢行無阻。
1.4 vi 與 vim
說 vi ,基本上都是與 vim 一同說明,那么 vi 與 vim 有什么關系?
它們都是多模式編輯器,不同的是vim 是vi的升級版本,它不僅兼容vi的所有指令,而且還有一些新的特性在里面,vim是從vi發展出來的一個文本編輯器。
簡單的來說, vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。 vim 則可以說是程序開發者的一項很好用的工具,vi和vim都是Linux中的編輯器,不同的是vim比較高級,可以視為vi的升級版本。vi適用于文本編輯,但是vim更適用于coding 。
vi 與 vim 的區別:
- vim 是 vi 的升級版本,兼容vi
- vi里,按u只能撤消上次命令,而在vim里可以無限制的撤消
- vi只能運行于unix中,而vim不僅可以運行于unix,windows ,mac等多操作平臺
- vim可以用不同的顏色來加亮你的代碼
那么有些小伙伴問過我,所有的 Linux 系統都自帶 vi,但是不一定帶 vim ,那么為什么還能放在一起講解 ?
- 在 Linux 中,vim 完全兼容 vi,他們的操作指令完全一樣;
- 在系統中,你使用的 vi 指令調用的程序,可能是 vi 也可能是 vim,就是對于 Linux 系統而言,他們是兼容的而且是一樣的東西,有升級版本的 vim 就用vim,沒有就使用自帶的 vi;
- 現在開發都會安裝 vim,即便沒有圖形化界面,安裝 vim 也并不是問題,使用
sudo apt install vim
; - 一般情況,我們都可以把 vim 當成 vi 來使用。你別管他是vi還是vim,你就當做 vi 學,反正到時候不管是 vi 還是 vim 都一樣用。
比如,在我安裝的 ubuntu 虛擬機中,使用 vi 版本查看指令 vi -v
查看 vi 版本,顯示的信息可能就是vim 編輯器版本(如果系統中裝過 vim 的話):
因為很早前我應該已經安裝了 vim,那么除了上面看版本,還有什么方式判斷我使用的 vi 是那個程序呢?
我們可以通過查看 vi 文件的源頭來判斷使用的是那個程序(文件):
說了這么多,也就是為了說明為什么所以市面上大部分教學說明都是把 vi 和 vim 放一起,我們在以后沒有特殊說明,也不會刻意去區分它們,也會把他們放在一起說明。
二、vi/vim 編輯器使用說明
本文的重點,就是要學會使用 vi/vim 編輯器,剛開始覺得很難受是正常的,記不住也沒有關系。切記
vi/vim 編輯器使用的學習不是靠背,而是靠練,靠用!
我們通過 vi 文件名
指令打開 vi 編輯器,執行該指令,如果有對應文件則直接打開,如果沒有就會創建新文件然后打開,比如:
對于初學者,可能到了上圖的界面之后,都不知道怎么操作,按鍵也沒有反應,可能都無法退出界面。
所以首先,我們要先說明一下 vi/vim 編輯器的模式。
2.1 vi 編輯器模式
vi 編輯器有3個模式:
- 命令行模式 (command mode/一般模式)
- 文本輸入模式 (input mode/編輯模式)
- 底線命令模式 (lastline mode/指令列命令模式/末行模式)
2.1.1 命令行模式 (command mode/一般模式)
我們啟動 vi/vim,便進入了命令模式。此狀態下敲擊鍵盤動作會被 vi 識別為命令,而非輸入字符。
任何時候,不管用戶處于何種模式,只要按一下 “ESC” 鍵,即可使 vi 進入一般模式/命令函模式。
在該模式下,用戶可以輸入各種合法的Vi命令,用于管理自己的文檔。此時從鍵盤上輸入的任何字符都被當做編輯命令來解釋,若輸入的字符是合法的 vi 命令,則 vi 在接受用戶命令之后完成相應的動作。但需注意的是,所輸入的命令并不在屏幕上顯示出來。若輸入的字符不是 vi 的合法命令,Vi會響鈴報警。
以下是常用的幾個命令:
i 切換到輸入模式,以輸入字符。
x 刪除當前光標所在處的字符。
: 切換到底線命令模式,以在最底一行輸入命令。
2.1.2 文本輸入模式 (input mode/編輯模式)
在命令模式下輸入插入命令i(insert)
、附加命令a (append
)、打開命令o(open)
、修改命令c(change)
、取代命令r
或替換命令s
都可以進入文本輸入模式。
在該模式下,用戶輸入的任何字符都被 vi 當做文件內容保存起來,并將其顯示在屏幕上。在文本輸入過程中,若想回到命令模式下,按 ”ESC” 鍵即可。
在輸入模式中,可以使用以下按鍵:
字符按鍵以及Shift組合,輸入字符
ENTER,回車鍵,換行
BACK SPACE,退格鍵,刪除光標前一個字符
DEL,刪除鍵,刪除光標后一個字符
方向鍵,在文本中移動光標
HOME/END,移動光標到行首/行尾
Page Up/Page Down,上/下翻頁
Insert,切換光標為輸入/替換模式,光標將變成豎線/下劃線
ESC,退出輸入模式,切換到命令模式
2.1.3 底線命令模式 (last line mode/指令列命令模式/末行模式)
在一般模式/命令模式下按下:(英文冒號)就進入了底線命令模式。
此時 vi 會在顯示窗口的最后一行(通常也是屏幕的最后一行)顯示一個“:”作為末行模式的提示符,等待用戶輸入命令。
按 ”ESC” 鍵可隨時退出底線命令模式。
多數文件管理命令都是在此模式下執行的,末行命令執行完后,vi 自動回到命令模式。
底線命令模式可以輸入單個或多個字符的命令,可用的命令非常多。
在底線命令模式中,基本的命令有(已經省略了冒號):
q 退出程序
w 保存文件
2.1.4 模式切換示意圖
在網上找了幾個比較典型的工作模式說明圖,因為網圖已經說得很直觀,這里就沒必要自己再畫圖了:
下圖是百問網的 Linux 教學資料中的 vi 操作示意圖:
注意:圖中應該是為了幫助新手更明顯的區分不同模式,所以使用了一般模式 代表 命令行模式。
命令行模式 代表底線命令模式/ 末行模式/ 指令列命令模式。
☆
對于模式的名字,新手需要多注意一下,因為不同的教程可能使用的名字不太一樣,需要有自己的一套記憶方式,最好是通過上面各個模式的介紹自己去理解一下各個模式的不同。
☆
當不知道處于何種模式時,按 ESC 鍵返回到一般模式,多按幾次也沒有問題。
2.2 vi 編輯器使用步驟示例
雖然我們還沒有詳細的介紹操作指令,但實際上最常用的操作也就那么幾步,我們通過上文的介紹,來進行一次完整的 vi 編輯器使用。
1、首先進入想進行測試的文件夾,然后使用 vi 文件名
命令創建一個新的文件:
2、通過上面的學習我們知道上圖是在一般模式下面,我們可以是用 “i” 進入到文本輸入模式:
在編輯模式當中,你可以發現在左下角狀態欄中會出現 –INSERT- 的字樣,那就是可以輸入任意字符的提示。
這個時候,鍵盤上除了 Esc 這個按鍵之外,其他的按鍵都可以視作為一般的輸入按鈕了,所以你可以進行任何的編輯,比如:
在編輯模式下,使用刪除鍵(Backspace)刪除字符。使用箭頭鍵移動光標。
3、那我們的本文編輯完成了以后,我們要保存退出,首先得退出編輯模式。
按下 ESC 按鈕回到一般模式:
4、先別著急保存退出,假如這個時候我們發現編輯有點問題,多敲了幾個字母,我們可以回到文本輸入模式使用刪除鍵(Backspace)刪除字符;
還有一種方式,在一般模式下時,使用“x”刪除光標所在的字符,如下圖:
5、修改完畢,最后在一般模式中按下 :wq
儲存后離開 vi 。
“:”
表示進入命令行模式,“wq”
表示“write and quit”,即寫入并退出。如果不想保存則可以輸入“:q!”
,它表示“退出、不保存”。
至此,我們就使用 vi 編輯器成功的創建了一個文件。
6、最后我們可以查看驗證一下,如下圖:
本節展示了一個完整的 vi 編輯器創建了新文件的示例,對于初學者,有必要自己實際操作一次,然后同時結合上面不同模式的說明,能更加的快速的學會簡單的基本使用。
2.3 vi 按鍵操作說明
除了上面簡易范例的 i, Esc, :wq 之外,其實 vim 還有非常多的按鍵可以使用。當然我們這里也只是把最常用的操作說明,更多的操作下一小節有圖示,有推薦資料;同時,因為是編輯器,我們本節也只介紹操作按鍵,實際的效果還得靠自己多測試。
2.3.1 從一般模式 進入 編輯模式
當我們在一般模式,想進入文本編輯模式,操作鍵如下表說明:
快捷鍵 | 功能描述 |
---|---|
i (小寫) | 在當前光標所在位置 插入文本 |
I(大寫) | 在當前光標所在行的行首 插入本文 |
a(小寫) | 在當前光標所在位置的下一個字符 插入文本 |
A(大寫) | 在光標所在行的行尾 插入文本 |
o(小寫) | 在光標所在位置后插入新行,就是在當前光標所在行的下方新建一行 |
O(大寫) | 在當前光標所在行的上方,新建一行 |
r(小寫) | 替換當前光標所在位置的字符 ,r 只會取代光標所在的那一個字符一次 |
R(大寫) | 替換當前光標所在位置之后的字符,R會一直取代光標所在的文字,直到按下 ESC 為止 |
ESC | 退出插入模式 |
上面這些按鍵中,在 vi 畫面的左下角處會出現『--INSERT--
』或『--REPLACE--
』的字樣。
--INSERT--
我們前面講過就是插入模式,--REPLACE--
就是替換模式。
在我們想要編輯本文的時候,一定要在左下角處看到 INSERT
(插入) 或 REPLACE
(替換)才能輸入!
對于上面的 r
與 R
,測試結果如下:
使用大寫的R:
使用小寫的r:
進入編輯模式式之后,就可以正常地編輯文本了,使用方向鍵來移動光標,回車鍵進行換行,操作方式與 Windows 記事本一樣。
2.3.2 從一般模式 進入 底線命令模式
當我們在一般模式,按下鍵盤的冒號鍵 “:” 就進入了底線命令模式。
操作鍵如下表說明(下面的指令都是基于在一般模式中已經輸入了:的基礎上,w 表示 在一般模式下輸入了:w
):
快捷鍵 | 功能描述 |
---|---|
w | 保存文檔 |
w! | 若文件屬性為『只讀』時,強制寫入該文件。能不能寫入還是取決于你賬戶的權限。 |
w [filename] | 另存為以 [filename] 為文件名的文檔 |
r [filename] | 讀取文件名為 filename 的文檔 |
q | 直接退出軟件,前提是文檔未做任何修改 |
q! | 不保存修改,直接退出軟件 |
wq | 保存文檔,并退出軟件。 |
! command | 回到終端窗口,執行 command 命令,按回車鍵可切回 vi |
set nu | 顯示行號,設定之后,會在每一行的前綴顯示該行的行號 |
set nonu | 與 set nu 相反,取消行號 |
驚嘆號 (!) 在 vi 當中,常常具有 “強制” 的意思。
2.3.3 一般模式 按鍵操作
前面說明的文本輸入模式,和底線命令模式看起來都不難,相對來說最多最復雜的操作都是在一般模式下面 = =!
在任意模式下按按鍵“Esc”可進入到一般模式。下在一般模式下,可以進行復制,粘貼,刪除,查找替換某個關鍵字等。
操作鍵如下表說明:
快捷鍵 | 功能描述 | |
---|---|---|
光標移動 | k (或上方向鍵) | 光標上移一行 |
j (或下方向鍵) | 光標下移一行 | |
h (或左方向鍵) | 光標左移一個字符 | |
l (或右方向鍵) | 光標右移一個字符 | |
[Ctrl] + [b](或 PageUp) | 向上翻頁 | |
[Ctrl] + [f] (或 PageDown) | 向下翻頁 | |
nG 或 ngg | 光標移動到第 n行首 | |
G | 移動到最后一行 | |
0 或功能鍵[Home] | 光標移至當前行行首 | |
$ 或功能鍵[End] | 光標移至當前行行末 | |
..by 矜辰所致..CSDN、公眾號同名 | ||
文本查找 | /word | 向光標之下尋找一個名稱為 word 的字符串 |
n | 在同一個方向重復上一次搜索命令,即查找下一個關鍵字 | |
N | 在反方向重復上一次搜索命令,即查找上一個關鍵字 | |
文本替換 | :1,$s/word1/word2/g 或 :%s/word1/word2/g | 從第一行到最后一行尋找 word1 字符串,并將該字符串取代為 word2 ! |
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc | 和上面一樣替換,取代前顯示需要用戶確認 | |
..by 矜辰所致..CSDN、公眾號同名 | ||
刪除、剪切、復制、粘貼 | d | 刪除光標所選的內容 |
dd | 刪除當前行 | |
ndd | 刪除光標后 n 行 | |
x(小寫) | 刪除光標所在的字符 | |
X(大寫) | 刪除光標前面的一個字符 | |
y | 復制光標所選的內容 | |
yy | 復制當前行 | |
nyy | 復制當前行及其下面 n行 | |
p(小寫) | 將復制的數據粘貼在當前行的下一行 | |
P(大寫) | 將復制的數據粘貼在當前行的上一行 | |
..by 矜辰所致..CSDN、公眾號同名 | ||
撤銷重做 | u | 撤銷上一步的操作,等價于 Windows 的 Ctrl+Z |
Ctrl+r | 重做上一步的操作 | |
.(小數點) | 重復前一個動作 |
一些操作的補充說明:
1、如果想要進行多次移動的話,例如向下移動 30 行,可以使用 "30j" 或 "30↓" 的組合按鍵, 亦即加上想要進行的次數(數字)后,按下動作即可!
跳轉到文件頭和文件尾:1gg
就跳到第一行的行首,就是文件頭。G
就是跳轉轉至文件結尾。
2、使用 /word 配合 n 及 N 是非常有幫助,可以讓你重復的找到一些你搜尋的關鍵詞,在 /word 之前先跳到第一行則進行全文件搜索。
上面表格列舉了最常用的 vi 編輯器操作,如果熟練掌握表格中的操作,就已經可以很好的使用 vi 編輯器了,當然,vi 的操作 和 上一篇文章的 shell 指令一樣,不是背出來的而是用出來的!
2.4 更多操作學習
我們上面的介紹說明,介紹了一般常用的操作,基本可以滿足正常使用需求,如果需要學習更多,可以自行參考更多資料:
上圖就是網上到處流傳的經典的 vi 鍵盤圖,出自上面推薦的網址,大家可以自行查看。
結語
本文主要是介紹 Linux 下 Vi 編輯器 以及其使用方式。
要插一句,最近發現自己一些文章直接被搬運,有些地方想投訴也投訴不了,沒辦法,以后得張個心眼,我是矜辰所致,全網同名!暫時加句話把,以后得好好想想如何防止直接搬運。
對于初學者,我的建議是,掌握幾條基本的指令,能夠對文檔進行一定的修改即可,不用精通,但是一定要會 !
針對自己未來的發展方向選擇性的深入學習,如果以后工作經常需要使用 vi ,那么可以針對性的深入學習和練習,如果只是在需要的時候進行簡單的修改,掌握幾條必備基本指令,后期遇到的時候再查看手冊。
永遠要記住,學習工具使用的最好方式是自己動手!
好了,Linux 下編輯器的使用我們就講到這里,謝謝大家!
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5127文章
19457瀏覽量
313512 -
Linux
+關注
關注
87文章
11432瀏覽量
212448 -
編輯器
+關注
關注
1文章
814瀏覽量
31666
發布評論請先 登錄
嵌入式Linux的開發工具
Linux下C編程基礎之常用編輯器淺析

嵌入式linux系統的學習步驟
Linux系統vi(vim)編輯器命令使用教程
Linux入門教程之Linux的vi編輯器的詳細資料概述
linux系統教程之Vi編輯器的使用教程免費下載

關于嵌入式linux系統學習步驟的詳細介紹
嵌入式linux報警,嵌入式Linux下LED報警燈驅動設計及編程.doc

嵌入式Linux開發工具(課上總結)

評論