vi / vim 簡介及常用命令總結

vim

Vim 是從 vi 發展出來的一個文本編輯器。其代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。和 Emacs 並列成爲類 Unix 系統用戶最喜歡的編輯器。

vi 簡介

vi 是 Unix 和 Linux 操作系統使用的終端文本編輯器,任何一臺安裝了 Unix 或 Linux 的機器都會提供這套軟件,它是系統管理員手中的得力工具。vim 是 vi 的升級版,它不僅兼容 vi 的所有指令(命令),而且還具有一些新特性。

vi 的操作模式

vi 有三種操作狀態:

  • 命令模式(command mode)
  • 插入模式(insert mode)
  • 末行模式(last line mode)

它們的功能如下:

(1) 命令模式:當執行 vi 後,首先會進入命令模式(指令模式),此時輸入的任何字符都被視爲命令。命令模式用於控制屏幕光標的移動,文本的刪除,移動複製某區段,進入插入模式下,或者進入末行模式。

(2) 插入模式:在命令模式下輸入相應的插入命令進入該模式。只有在插入模式下,纔可做文字數據輸入和其它編輯操作,按 ESC 鍵可回到命令模式。

(3) 末行模式:在命令模式輸入某些特殊字符,如 “/”、"?" 和 “:”,可進入末行模式。在該模式下可存儲文件或離開編輯器,也可以設置編輯環境,如尋找字符串、列出行號等。

vi 三種工作模式的轉換如圖:

vi操作模式

vi 的進入與退出

進入 vi

若要編輯文件 myfile,執行如下執行即可:

$vi myfile

終端顯示 vi 的編輯窗口,進入命令模式。也可以直接輸入 vi 創建一個新文件,然後在退出時保存文件或者丟棄。

退出 vi

如果在插入模式下,則先利用 ESC 鍵返回命令模式,然後可選用下列指令退出 vi。

  • :q! 離開 vi,並放棄剛纔的修改。
  • :wq 保存退出。
  • :ZZ 保存退出。
  • :x:wq
  • :w 保存但不退出。
  • :q 退出 vi,若文件被修改過,則會被要求確認是否放棄修改。此指令可以 w 配合使用。

注意:如果不知道當前處於何種模式,可以多按幾次 ESC 鍵,以便確認進入命令模式。

vi/vim 常用命令

命令模式的常用命令

在命令模式下可以進行文本的編輯工作。使用下列命令,配合一般鍵盤上的功能鍵,如方向鍵、Insert 鍵、Delete 鍵等,就可以利用 vi 來處理文本數據了。

光標的移動

命令 說明 功能鍵
h 向左移一個字符 \leftarrow
l 向右移一個字符 \rightarrow
j 向上移一個字符 \uparrow
k 向下移一個字符 \downarrow
0 移至該行之首 Home
$ 移至該行之末 End
^ 移至該行的第一個非空白字符處
H 移至窗口的第一行
M 移至窗口的中間那行
L 移至窗口的最後一行
G 移至該文件的最後一行
nG 移至該文件的第 n 行
gg 移至該文件的第一行
w 跳到下一個單詞
b 跳到上一個單詞
{ 按段移動,上移
} 按段移動,下移

翻屏與滾屏

命令 說明 功能鍵
Ctrl+f 向後翻一屏 PageDown
Ctrl+b 向前翻一屏 PageUp
Ctrl+d 向後翻半屏
Ctrl+u 向前翻半屏
zt 光標所在行移動到窗口頂端
zz 光標所在行移動到窗口中間
zb 光標所在行移動到窗口底部

刪除(剪切)與修改

命令 說明 功能鍵
x 刪除光標所在的字符 Delete
X 刪除光標的前一個字符
dd 刪除光標所在的行
ndd 刪除包括光標所在行的 n 行文本
d0 刪除從光標前一個字符開始一直到行首的文本
dw 刪除從光標開始的一個單詞
D 刪除從光標開始一直到行末的文本
s 刪除光標所在字符並進入插入模式
S 刪除光標所在行並進入插入模式
r 替換光標所在字符
R 進入替換狀態,替換光標所在字符及以後的字符,按 ESC 退出替換狀態

複製粘貼

命令 說明
yyY 複製光標所在行
nyynY 複製包括光標所在行開始的 n 行
p (小寫) 粘貼到光標的下一行
P (大寫) 粘貼到光標的上一行

撤銷與反撤銷

命令 說明
u 撤銷
Ctrl+r 反撤銷

可視模式

命令 說明
v 選中文本(按字符移動)
V 選中文本(按行移動)

可視模式可以配合 dy 實現對文本塊的刪除(剪切),複製。

vim 下還支持配合 <> 實現對文本塊的左右移動,首先使用 vV 選擇要移動的部分,然後按 Ctrl+v 選中該文本塊,接着可根據需要左移 < 或 右移 >

文本行移動(縮進)

命令 說明
>> 向右移動(縮進)
<< 向左移動(縮進)
> (vim 支持) 向右移動(縮進)
< (vim 支持) 向左移動(縮進)

重複命令

命令 說明
. 重複執行上一次的命令

退出命令

命令 說明
ZZ 退出保存,相當於末行模式下的 :wq

插入模式

所有以下命令都能從命令模式進入插入模式。

命令 說明
i 從光標所在字符前面開始插入字符
I 從光標所在行的行首開始插入字符
a 從光標所在字符後面開始插入字符
A 從光標所在行的行末開始插入字符
o 光標所在行向下新增一行
O 光標所在行向上新增一行

末行模式

查找命令

命令 說明
/exp 往前查找字符串 exp,n 下一個,N 上一個
?exp 往後查找字符串 exp,n 下一個,N 上一個

替換命令

命令 說明
:%s/abc/123/g 將當前文件中所有的 abc 替換成 123
:1,10s/abc/123/g 將 1 到 10 行的 abc 全部替換成 123

退出命令

命令 說明
:q 退出程序
:q! 強制退出,不保存修改
:w 保存修改
:w filename 將編輯內容存爲名爲 filename 的文件
:wq 保存退出
:x 若有修改保存,退出程序

:wq 強制性 寫入文件並退出。即使文件沒有被修改也強制寫入,並更新文件的修改時間。

:x 寫入文件並退出。僅當文件被修改時才寫入,並更新文件修改時間,否則不會更新文件修改時間。

其它命令

命令 說明
:set nu 顯示行號
:set nonu 不顯示行號
:set ff 查看文件格式
:set ff=unix 修改文件格式爲 unix
:noh 取消搜索結果高亮

vi/vim 鍵盤圖

vi/vim鍵盤圖

vi/vim cheat sheet

發佈了255 篇原創文章 · 獲贊 71 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章