VI編輯器經常使用命令

 

 

Linux下的文本編輯器有不少種,vi 是最經常使用的,也是各版本Linux的標配。注意,vi 僅僅是一個文本編輯器,能夠給字符着色,能夠自動補全,可是不像 Windows 下的 word 有排版功能。

vi 是十年磨一劍的產品,雖然命令繁多,而且大多數功能都是依靠鍵盤輸入來完成,可是一旦你熟悉後,會發現 vi 的功能和效率是其餘圖形界面編輯器沒法比擬的。

Vim 是 Vimproved 的縮寫,是 vi 的改進版。在Linux中,vi 被認爲是事實上的標準編輯器,由於:編輯器

  • 全部版本的 Linux 都帶有 vi 編輯器;
  • 佔用資源少;
  • 與 ed、ex 等其餘編輯器相比,vi 對用戶更加友好。


你可使用 vi 編輯器編輯現有的文件,也能夠建立一個新文件,還能以只讀模式打開文本文件。學習

進入 vi 編輯器

能夠經過如下方式進入 vi 編輯器:blog

命令 描述
vi filename 若是filename存在,則打開;不然會建立一個新文件再打開。
vi -R filename 以只讀模式(只能查看不能編輯)打開現有文件。
view filename 以只讀模式打開現有文件。


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

$vi testfile
|
~
~
~
~
~
~
~
~
~
~
~
~
"testfile" [New File]

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

工做模式

進一步瞭解 vi 以前先來了解一下 vi 的工做模式,vi 有三種工做模式:字符串

1) 普通模式

由Shell進入vi編輯器時,首先進入普通模式。在普通模式下,從鍵盤輸入任何字符都被看成命令來解釋。普通模式下沒有任何提示符,輸入命令後當即執行,不須要回車,並且輸入的字符不會在屏幕上顯示出來。

普通模式下能夠執行命令、保存文件、移動光標、粘貼複製等。產品

2) 編輯模式

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

3) 命令模式

命令模式下,用戶能夠對文件進行一些高級處理。儘管普通模式下的命令能夠完成不少功能,但要執行一些如字符串查找、替換、顯示行號等操做仍是必需要進入命令模式。

注意:有些教程中稱有兩種工做模式,是把命令模式合併到普通模式。

工做模式切換:table

  • 在普通模式下輸入 i(插入)、c(修改)、o(另起一行) 命令時進入編輯模式;按 esc 鍵退回到普通模式。
  • 在普通模式下輸入冒號(:)能夠進入命令模式。輸入完命令按回車,命令執行完後會自動退回普通模式。


提示:若是不肯定當前處於哪一種模式,按兩次 Esc 鍵將回到普通模式。class

退出 vi 編輯器

通常在命令模式下退出 vi 編輯器。

退出命令 說明
q 若是文件未被修改,會直接退回到Shell;不然提示保存文件。
q! 強行退出,不保存修改內容。
wq w 命令保存文件,q 命令退出 vi,合起來就是保存並退出。
ZZ 保存並退出,至關於 wq,可是更加方便。


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

w filename2

將當前文件另存爲 filename2。

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

移動光標

爲了避免影響文件內容,必須在普通模式(按兩次 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 的行。

控制命令

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

命令 描述
CTRL+d 向前滾動半屏
CTRL+f 向前滾動全屏
CTRL+u 向後滾動半屏
CTRL+b 向後滾動整屏
CTRL+e 向上滾動一行
CTRL+y 向下滾動一行
CTRL+I 刷新屏幕

編輯文件

切換到編輯模式下才能編輯文件。有不少命令能夠從普通模式切換到編輯模式,以下所示:

命令 描述
i 在當前光標位置以前插入文本
I 在當前行的開頭插入文本
a 在當前光標位置以後插入文本
A 在當前行的末尾插入文本
o 在當前位置下面建立一行
O 在當前位置上面建立一行

刪除字符

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

命令 說明
x 刪除當前光標下的字符
X 刪除光標前面的字符
dw 刪除從當前光標到單詞結尾的字符
d^ 刪除從當前光標到行首的字符
d$ 刪除從當前光標到行尾的字符
D 刪除從當前光標到行尾的字符
dd 刪除當前光標所在的行


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

建議各位讀者多加練習上面的命令,再進一步深刻學習。

修改文本

若是你但願對字符、單詞或行進行修改,可使用下面的命令:

命令 描述
cc 刪除當前行,並進入編輯模式。
cw 刪除當前字(單詞),並進入編輯模式。
r 替換當前光標下的字符。
R 從當前光標開始替換字符,按 Esc 鍵退出。
s 用輸入的字符替換當前字符,並進入編輯模式。
S 用輸入的文本替換當前行,並進入編輯模式。

粘貼複製

vi 中的複製粘貼命令:

命令 描述
yy 複製當前行
nyy 複製n行
yw 複製一個字(單詞)
nyw 複製n行
p 將複製的文本粘貼到光標後面
P 將複製的文本粘貼到光標前面

高級命令

下面的一些命令雖然看起來有些古怪,可是會讓你的工做更有效率,若是你是 vi 重度用戶,就瞭解一下吧。

命令 說明
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 行後邊插入

文本查找

若是但願進行全文件搜索,能夠在普通模式(按兩次 Esc 鍵)下輸入 / 命令,這時狀態欄(最後一行)出現"/"並提示輸入要查找的字符串,回車便可。

/ 命令是向下查找,若是但願向上查找,可使用 ? 命令。

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

搜索的字符串中能夠包含一些有特殊含義的字符,若是但願搜索這些字符自己,須要在前面加反斜槓(\)。

部分特殊字符列表
字符 說明
^ 匹配一行的開頭
. 匹配一個字符
* 匹配0個或多個字符
$ 匹配一行的結尾
[ ] 匹配一組字符


若是但願搜索某行中的單個字符,可使用 f 或 F 命令,f 向上搜索,F 向下搜索,而且會把光標定位到匹配的字符。

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

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(回車)等。

運行命令

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

例如,保存文件前,若是但願查看該文件是否存在,那麼輸入

:! ls

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

按任意鍵回到 vi 編輯器。

文本替換

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

:s/search/replace/g

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

幾點提示

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

  • 輸入冒號(:)進入命令模式,按兩次 Esc 鍵進入普通模式。
  • 命令大小寫的含義是不同的。
  • 必須在編輯模式下才能輸入內容。
相關文章
相關標籤/搜索