首頁 > 軟體

Vi(Vim)鍵盤圖及其基本命令

2020-06-16 17:57:38

Vi(Vim)鍵盤圖及其基本命令:

 

進入vi

vi filename                開啟或新建檔案,並將游標置於第一行首

vi +n filename           開啟檔案,並將游標置於第 n行首

vi + filename             開啟檔案,並將游標置於最後一行首

vi -r filename            在上次正用 vi編輯時發生系統崩潰,恢復檔案

vi file1....filen            開啟多個檔案,依次編輯

vi的工作模式

命令列模式 (command mode):控制螢幕游標的移動,字元、字或行的刪除,移動複製某區段及進入Insert mode下,或者到 last line mode。

插入模式(Insert mode):只有在 Insert mode 下,才可以做文字輸入,按「ESC」鍵可回到命令列模式。

底行模式(last line mode):將檔案儲存或退出 vi,也可以設定編輯環境,如尋找字串、列出行號等。

 

命令列模式

移動游標

k、j、h、l      功能分別等同於上、下、左、右箭頭鍵 

Ctrl+b            在檔案中向上移動一頁(相當於 PageUp 鍵)

Ctrl+f             在檔案中向下移動一頁(相當於 PageDown 鍵)

ctrl+u             螢幕往後移動半頁

ctrl+d            螢幕往前移動半頁

H                   將游標移到螢幕的最上行(Highest) 

nH                 將游標移到螢幕的第 n 行(如 2H: 將游標移到螢幕的第 2 行)

M                  將游標移到螢幕的中間(Middle)

L                   將游標移到螢幕的最下行(Lowest) 

nL                 將游標移到螢幕的倒數第 n 行(如 3L:將游標移到螢幕的倒數第 3 行)

w                  在指定行內右移游標,到下一個字的開頭

e                   在指定行內右移游標,到一個字的末尾

b                   在指定行內左移游標,到前一個字的開頭

0                   數位0,左移游標,到本行的開頭 

G                  游標移動到文章的最後

nG                游標移動到文章的第 n行(如8G:移動到文章的第 8行)

$                   右移游標,到本行的末尾 

^                   移動游標,到本行的第一個非空字元

替換和刪除

rc                  用 c 替換游標所指向的當前字元

nrc                用 c 替換游標所指向的前 n 個字元(如 5rc: 用 c 替換游標所指向的前 5 個字元)

x                   刪除游標所在位置後面的一個字元 

nx                 刪除游標所在位置後面的 n 個字元(如 3x:刪除游標所在位置後面的 3 個字元)

X                  大寫的 X,刪除游標所在位置前面的一個字元

nX                刪除游標所在位置前面的 n 個字元(如 3X : 刪除游標所在位置前面的 3 個字元)

dd                刪除游標所在行,並去除空隙 

ndd              從游標所在行開始刪除 n 行內容,並去除空隙(如 3dd: 刪除 3 行內容,並去除空隙) 

複製和貼上

從正文中刪除的內容(如字元、字或行)並沒有真正丟失,而是被剪下並複製到了一個記憶體緩衝區中。使用者可將其貼上到正文中的指定位置。

p                  小寫字母 p,將緩衝區的內容貼上到游標的後面

P                  大寫字母 P,將緩衝區的內容貼上到游標的前面 

如果緩衝區的內容是字元或字,直接貼上在游標的前面或後面;如果緩衝區的內容為整行正文則貼上在當前游標所在行的上一行或下一行。

有時需要複製一段正文到新位置,同時保留原有位置的內容。這種情況下,首先應當把指定內容複製(而不是剪下)到記憶體緩衝區。完成這一操作的命令是:

yy                 複製當前行到記憶體緩衝區

nyy               複製 n 行內容到記憶體緩衝區(如 5yy: 複製 5 行內容到記憶體緩衝區)

 

 

搜尋字串

/str1             正向搜尋字串 str1 

n                  繼續搜尋,找出 str1 字串下次出現的位置 

?str2            反向搜尋字串 str2 

復原和重複

u                  撤消前一條命令的結果 

.                   重複最後一條修改正文的命令 

文字選中

 v                  字元選中命令  

V                  行選中命令

插入模式

進入插入模式

i                   在游標左側輸入正文

a                  在游標右側輸入正文

o                  在游標所在行的下一行增添新行 

O                 在游標所在行的上一行增添新行

I                   在游標所在行的開頭輸入正文 

A                 在游標所在行的末尾輸入正文

退出插入模式

 ESC 鍵或組合鍵Ctrl+[ 

底行模式

在vi 的底行模式下,可以使用複雜的命令。

退出命令

在命令模式下可以用 ZZ 命令退出 vi 編輯程式,該命令儲存對正文所作的修改,覆蓋原始檔案。如果只需要退出編輯程式,而不打算儲存編輯的內容,可用下面的命令:

: q                   在未作修改的情況下退出

: q!                  放棄所有修改,退出編輯程式

行號和檔案儲存

: n                    將游標移到第 n 行 

:set nu             顯示行號 

:set nonu         取消行號顯示 

 

底行模式下,可以規定命令操作的行號範圍。數值用來指定絕對行號;字元“.”表示游標所在行的行號;字元“$”表示正文最後一行的行號;簡單的表示式,例如“.+5”表示當前行往下的第 5 行。例如:

: .+5               將游標移到當前行之後的第5行 

: $                  將游標移到正文最後一行

 

在底行模式下,允許從檔案中讀取正文,或將正文寫入檔案。例如:

:w                  將編輯的內容寫入原始檔案,用來儲存編輯的中間結果 

:wq                將編輯的內容寫入原始檔案並退出編輯程式(相當於 ZZ 命令) 

:w file             將編輯的內容寫入 file 檔案,保持原有檔案的內容不變 

:a,bw file        將第 a 行至第 b 行的內容寫入 file 檔案 (如:1,.w file    將第 1 行至當前行寫入 file 檔案)

:r file              讀取 file 檔案的內容,插入當前游標所在行的後面

:f file              將當前檔案重新命名為 file 

字串搜尋

:/str/               正向搜尋,將游標移到下一個包含字串 str 的行

:?str?             反向搜尋,將游標移到上一個包含字串 str 的行

正文替換

:s/str1/str2/          用字串 str2 替換行中首次出現的字串 str1 

:s/str1/str2/g        用字串 str2 替換行中所有出現的字串 str1 

:.,$ s/str1/str2/g   用字串 str2 替換正文當前行到末尾所有出現的字串 str1 

:1,$ s/str1/str2/g  用字串 str2 替換正文中所有出現的字串 str1 

:g/str1/s//str2/g    功能同上

從上述替換命令可以看到:g 放在命令末尾,表示對搜尋字串的每次出現進行替換;不加 g,表示只對搜尋字串的首次出現進行替換;g 放在命令開頭,表示對正文中所有包含搜尋字串的行進行替換操作。

刪除正文

:d                      刪除游標所在行 

:3d                    刪除第 3 行 

:.,$d                  刪除當前行至正文的末尾 

:/str1/,/str2/d     刪除從字串 str1 到 str2 的所有行 

恢復檔案

vi 在編輯某個檔案時,會另外生成一個臨時檔案,這個檔案的名稱通常以 . 開頭,並以 .swp 結尾。vi 在正常退出時,該檔案被刪除,若意外退出,而沒有儲存檔案的最新修改內容,則可以使用恢復命令,也可以在啟動 vi 時利用 -r 選項。

:recover           恢復檔案

選項設定

為控制不同的編輯功能,vi 提供了很多內部選項。利用 :set 命令可以設定選項。基本語法為:

:set option         設定選項 option 

常見的功能選項包括:

autoindent          設定該選項,則正文自動縮排 

ignorecase         設定該選項,則忽略規則表示式中大小寫字母的區別 

number              設定該選項,則顯示正文行號 

ruler                   設定該選項,則在螢幕底部顯示游標所在行、列的位置 

tabstop               設定按 Tab 鍵跳過的空格數。例如 :set tabstop=n,n 預設值為 8 

mk                      將選項儲存在當前目錄的 .exrc 檔案中 

shell切換

在編輯正文時,利用 vi 底行模式下提供的shell 切換命令,無須退出 vi 即可執行Linux 命令

:! command          執行完shell 命令 command 後回到vi 

另外,在命令模式下,鍵入K ,可命令 vi 查詢游標所在單詞的手冊頁,相當於執行man命令。

--------------------------------------分割線 --------------------------------------

把VIM打造成一個簡單實用的IDE http://www.linuxidc.com/Linux/2011-06/37032.htm

Vim學習指南 http://www.linuxidc.com/Linux/2013-08/89096.htm

快速學會 Vi編輯器 http://www.linuxidc.com/Linux/2013-08/88586.htm

強大的Vim 編輯器 http://www.linuxidc.com/Linux/2013-07/87544.htm

CentOS 6.2上搭建Vim開發環境 http://www.linuxidc.com/Linux/2013-07/87363.htm

CentOS 5.4 安裝高亮Vim編輯工具 http://www.linuxidc.com/Linux/2013-06/86508.htm

Vim技巧分享:C語言設定 http://www.linuxidc.com/Linux/2012-12/77124.htm

Ubuntu中設定Vim的行號 http://www.linuxidc.com/Linux/2012-12/75485.htm

Vim編輯器使用基礎教學 http://www.linuxidc.com/Linux/2013-05/84031.htm

--------------------------------------分割線 --------------------------------------

 


IT145.com E-mail:sddin#qq.com