嵌入式開發之Linux系統中Vi編輯器的使用

請大家關注點贊,已經完成物聯網相關開發,會從硬件層,硬件中間層,傳輸層,軟件中間件(物聯網雲平臺),APP開發相關博文。首先從嵌入式開發博文開始!上一節關於<>。本節關於Linux系統中Vi編輯器的使用介紹。

Linux下的文本編輯器有很多種,vi 是最常用的,也是各版本Linux的標配。注意,vi 僅僅是一個文本編輯器,可以給字符著色,可以自動補全。Vim 是 Vi improved 的縮寫,是 vi 的改進版。雖然命令繁多,並且大多數功能都是依靠鍵盤輸入來完成,但是一旦你熟悉後,會發現 vi 的功能和效率是其他圖形界面編輯器無法比擬的。在Linux中,vi 被認為是事實上的標準編輯器,因為:

所有版本的 Linux 都帶有 vi 編輯器;佔用資源少;與 ed、ex 等其他編輯器相比,vi 對用戶更加友好。你可以使用 vi 編輯器編輯現有的文件,也可以創建一個新文件,還能以只讀模式打開文本文件。

可以通過以下方式進入 vi 編輯器:

vi filename 如果filename存在,則打開;否則會創建一個新文件再打開。

vi -R filename 以只讀模式(只能查看不能編輯)打開現有文件。

view filename 以只讀模式打開現有文件。

例如,使用 vi 編輯器創建一個新文件並打開:

嵌入式開發之Linux系統中Vi編輯器的使用

Vi 新文件


嵌入式開發之Linux系統中Vi編輯器的使用

文件內容編寫


豎線(|)代表光標的位置;波浪號(~)代表該行沒有任何內容。如果沒有 ~,也看不到任何內容,那說明這一行肯定是有空白字符(空格、tab 縮進、換行符等)或不可見字符。

2、Vi的3種工作模式

vi 有三種工作模式:

1) 普通模式

進入vi編輯器時,首先進入普通模式。在普通模式下,從鍵盤輸入任何字符都被當作命令來解釋。普通模式下沒有任何提示符,輸入命令後立即執行,不需要回車,而且輸入的字符不會在屏幕上顯示出來。普通模式下可以執行命令、保存文件、移動光標、粘貼複製等。

編輯模式主要用於文本的編輯。該模式下用戶輸入的任何字符都被作為文件的內容保存起來,並在屏幕上顯示出來。

3) 命令模式(底行模式)

命令模式下,用戶可以對文件進行一些高級處理。儘管普通模式下的命令可以完成很多功能,但要執行一些如字符串查找、替換、顯示行號等操作還是必須要進入命令模式。

工作模式切換:

在普通模式下輸入 i(插入)、a(進入光標位置)、o(另起一行) 命令時進入編輯模式(大寫I/A/O);按 esc 鍵退回到普通模式。

在普通模式下輸入冒號(:)可以進入命令模式。輸入完命令按回車,命令執行完後會自動退回普通模式。

注意:如果不確定當前處於哪種模式,按兩次 Esc 鍵將回到普通模式。

3、Vi保存與退出

一般在命令模式下退出 vi 編輯器。

退出命令 說明

q 如果文件未被修改,會直接退回到Shell;否則提示保存文件。

q! 強行退出,不保存修改內容。

wq w 命令保存文件,q 命令退出 vi,合起來就是保存並退出。

ZZ 保存並退出,相當於 wq,但是更加方便。

退出之前,你也可以在 w 命令後面指定一個文件名,將文件另存為新文件,例如:

w filename2將當前文件另存為 filename2。

r filename3 讀取filename3文件內容插入到當前。

注意:vi 編輯文件時,用戶的操作都是基於緩衝區中的副本進行的。如果退出時沒有保存到磁盤,則緩衝區中的內容就會被丟失。

4、移動光標

為了不影響文件內容,必須在普通模式(按兩次 Esc 鍵)下移動光標。使用下表中的命令每次可以移動一個字符:

命令 描述

k 向上移動光標(移動一行)

j 向下移動光標(移動一行)

h 向左移動光標(移動一個字符)

l 向右移動光標(移動一個字符)

注意:

vi 是區分大小寫的,輸入命令時注意不要鎖定大寫。

可以在命令前邊添加一個數字作為前綴,例如,2j 將光標向下移動兩行。

當然,還有很多其他命令來移動光標,不過記住,一定要在普通模式(按兩次 Esc 鍵)下。

附:用來移動光標的命令

命令 說明

0 或 | 將光標定位在一行的開頭。

$ 將光標定位在一行的末尾。

w 定位到下一個單詞。

b 定位到上一個單詞。

( 定位到一句話的開頭,句子是以 ! . ? 三種符號來界定的。

) 定位到一句話的結尾。

{ 移動到段落開頭。&&&&&&

} 移動到段落結束。&&&&&&&&&

[[ 回到段落的開頭處。&&&&&&&&&&

]] 向前移到下一個段落的開頭處。&&&&&&&&&&

n| 移動到第 n 列(當前行)。

1G 移動到文件第一行。

G 移動到文件最後一行。

nG 移動到文件第 n 行。

:n 移動到文件第 n 行。

H 移動到屏幕頂部。

nH 移動到距離屏幕頂部第 n 行的位置。

M 移動到屏幕中間。

L 移動到屏幕底部。

nL 移動到距離屏幕底部第 n 行的位置。

:x x 是一個數字,表示移動到行號為 x 的行。

5、控制命令

有一些控制命令可以與 Ctrl 鍵組合使用,如下:

命令 描述

CTRL+d 向前滾動半屏

CTRL+f 向前滾動全屏

CTRL+u 向後滾動半屏

CTRL+b 向後滾動整屏

CTRL+e 向上滾動一行

CTRL+y 向下滾動一行

CTRL+I 刷新屏幕

切換到編輯模式下才能編輯文件。有很多命令可以從普通模式切換到編輯模式,如下所示:

命令 描述

i 在當前光標位置之前插入文本

I 在當前行的開頭插入文本

a 在當前光標位置之後插入文本

A 在當前行的末尾插入文本

o 在當前位置下面創建一行

O 在當前位置上面創建一行

7、刪除字符

下面的命令,可以刪除文件中的字符或行:

命令 說明

x 刪除當前光標下的字符

X 刪除光標前面的字符

dw 刪除從當前光標到單詞結尾的字符

d^ 刪除從當前光標到行首的字符

d$ 刪除從當前光標到行尾的字符

D 刪除從當前光標到行尾的字符

dd 刪除當前光標所在的行

可以在命令前面添加一個數字前綴,表示重複操作的次數,例如,2x 表示連續兩次刪除光標下的字符,2dd 表示連續兩次刪除光標所在的行。

8、修改文本

如果你希望對字符、單詞或行進行修改,可以使用下面的命令:

命令 描述

cw 刪除當前字(單詞),並進入編輯模式。

r 替換當前光標下的字符。

R 從當前光標開始替換字符,按 Esc 鍵退出。

s 用輸入的字符替換當前字符,並進入編輯模式。

S 用輸入的文本替換當前行,並進入編輯模式。

9、複製粘貼剪切

vi 中的複製粘貼命令:

命令 描述

yy 複製當前行

nyy 複製n行

yw 複製一個字(單詞)

nyw 複製n行

p 將複製的文本粘貼到光標後面

P 將複製的文本粘貼到光標前面

u 取消上一次操作(恢復功能)

y0 將光標至行首的字符拷入剪切板

y$ 將光標至行尾的字符拷入剪切板

d0 將光標至行首的字符剪切入剪切板

d$ 將光標至行尾的字符剪切入剪切板

range y 塊複製

嵌入式開發之Linux系統中Vi編輯器的使用

複製粘貼


10、高級命令

下面的一些命令,會讓你的工作更有效率。

命令 說明

J 將當前行和下一行連接為一行

<< 將當前行左移一個單位(一個縮進寬度)

>> 將當前行右移一個單位(一個縮進寬度)

~ 改變當前字符的大小寫

^G Ctrl+G組合鍵可以顯示當前文件名和狀態

U 撤銷對當前行所做的修改

u 撤銷上次操作,再次按 'u' 恢復該次操作

:f 以百分號(%)的形式顯示當前光標在文件中的位置、文件名和文件的總行數

:f filename 將文件重命名為 filename

:w filename 保存修改到 filename

:e filename 打開另一個文件名為 filename 的文件

:cd dirname 改變當前工作目錄到 dirname

:e # 在兩個打開的文件之間進行切換

:n 如果用 vi 打開了多個文件,可以使用 :n 切換到下一個文件

:p 如果用 vi 打開了多個文件,可以使用 :n 切換到上一個文件

:N 如果用 vi 打開了多個文件,可以使用 :n 切換到上一個文件

:r file 讀取文件並在當前行的後邊插入

:nr file 讀取文件並在第 n 行後邊插入

11、文本查找

如果希望進行全文件搜索,可以在普通模式(按兩次 Esc 鍵)下輸入 / 命令,這時狀態欄(最後一行)出現"/"並提示輸入要查找的字符串,回車即可。

/ 命令是向下查找,如果希望向上查找,可以使用 ? 命令。

這時,輸入 n 命令可以按相同的方向繼續查找,輸入 N 命令可以按相反的方向繼續查找。

搜索的字符串中可以包含一些有特殊含義的字符,如果希望搜索這些字符本身,需要在前面加反斜槓(\\)。

部分特殊字符列表

字符 說明

^ 匹配一行的開頭

. 匹配一個字符

* 匹配0個或多個字符

$ 匹配一行的結尾

[ ] 匹配一組字符

如果希望搜索某行中的單個字符,可以使用 f 或 F 命令,f 向上搜索,F 向下搜索,並且會把光標定位到匹配的字符。

也可以使用 t 或 T 命令:t 命令向上搜索,並把光標定位到匹配字符的前面;T 命令向下搜索,並把光標定位到匹配字符的後面。

12、set 命令

set 命令可以對 vi 編輯器進行一些設置。使用 set 命令需要進入命令模式。

:set 命令選項

命令 說明

:set ic 搜索時忽略大小寫。

:set ai 設置自動縮進(自動對齊)。

:set noai 取消自動縮進(自動對齊)。

:set nu 顯示行號。

:set sw 設置縮進的空格數,例如,將縮進空格數設置為4::set sw=4。

:set ws 循環搜索:如果直到文件末尾也沒有查找到指定字符,那麼會回到開頭繼續查找。

:set wm 設置自動換行,例如,設置距離邊際2個字符時換行::set wm=2 。

:set ro 將文件類型改為只讀。

:set term 輸出終端類型。

:set bf 忽略輸入的控制字符,如 BEL(響鈴)、BS(退格)、CR(回車)等。

13、運行命令

切換到命令模式,再輸入 ! 命令即可運行 Linux 命令。

例如,保存文件前,如果希望查看該文件是否存在,那麼輸入

:! ls

即可列出當前目錄下的文件。

14、文本替換

切換到命令模式,再輸入 s/ 命令即可對文本進行替換。語法為:

:s/search/replace/g

search 為檢索的文本,replace 為要替換的文本,g 表示全局替換。

注意:

vi 編輯器的使用講解完畢,但是請記住下面幾點:

輸入冒號(:)進入命令模式,按兩次 Esc 鍵進入普通模式。

命令大小寫的含義是不一樣的。


分享到:


相關文章: