寫在前面:作為常年與伺服器、Linux打交道的後端開發RD,基本的vi操作是一定要運用非常熟練的;本篇文章就記錄了一些日常工作中最常用的的指令,希望能和大家共同學習共同進步~
一、vi與vim的區別
vim是vi的升級版本,它相容vi的所有指令,並提供一些新特性,如以不同顏色標識語法等;(之後會總結一些vim的常用功能~)
二、vi的三種模式
模式 | 功能 |
---|---|
一般模式 | 通過vi開啟檔案後的預設模式,在此模式下可以方便地移動游標,執行復制、剪下、刪除、貼上等操作; |
編輯模式 | 在一般模式按下【i、I、o、O、a、A、r、R】等字元即可進入編輯模式(最常使用【i】在游標處開始編輯、【o】在游標下一行插入新行,並跳轉至新行開始編輯),編輯模式下可以編輯檔案,按下【ESC】可退出到一般模式; |
命令列模式 | 在一般模式按下【:、/、?】字元即可進入命令列模式,命令列模式下可以儲存修改、離開vi、查詢字元、替換字元,按下【ESC】可退出到一般模式; |
三、最常用指令
1、移動指令
指令 | 功能 | 簡介 | 編者按 |
---|---|---|---|
k/j/h/l | 上下左右移動游標 | 一般模式下,可以使用【k/j/h/l】代替方向鍵上下左右移動游標,多次相同移動指令可使用數字+指令執行,如【30j】即代表向下移動游標30次; | 剛開始使用這四個鍵會很難記、很不適應,但習慣後的確會更方便、更極致; |
Ctrl+f | 向下翻頁 | 一般模式下,可以使用組合鍵【Ctrl+f】向下翻頁; | 適用於vi瀏覽多頁資料 |
Ctrl+b | 向上翻頁 | 一般模式下,可以使用組合鍵【Ctrl+b】向上翻頁; | 適用於vi瀏覽多頁資料 |
0 | 移動游標到行首 | 一般模式下,可以使用數字【0】移動游標到行首; | 非常常用; |
$ | 移動游標到行尾 | 一般模式下,可以使用符號【$】移動游標到行尾; | 非常常用; |
G | 移動游標到檔案最後一行 | 一般模式下,可以使用大寫字母【G】移動游標到檔案最後一行,【nG】代表移動游標到檔案的第n行; | 非常常用,比如直接跳到日誌檔案末尾檢視最新的日誌; |
gg | 移動游標到檔案第一行 | 一般模式下,可以使用【gg】移動到檔案第一行; | 非常常用; |
2、查詢替換指令
指令 | 功能 | 簡介 | 編者按 |
---|---|---|---|
/關鍵字 | 從游標位置向下查詢關鍵字 | 一般模式下,可以通過符號【/】進入命令列模式,再鍵入要查詢的關鍵字,按下【回車】即可自動將游標移動到向下第一個關鍵字處;結合【n】沿之前方向繼續查詢(此處為繼續向下)、【N】沿之前反向繼續查詢(此處為繼續向上); | 非常常用,比如通過關鍵字查詢日誌; |
?關鍵字 | 從游標位置向上查詢關鍵字 | 一般模式下,可以通過符號【?】進入命令列模式,再鍵入要查詢的關鍵字,按下【回車】即可自動將游標移動到向上第一個關鍵字處;結合【n】沿之前方向繼續查詢(此處為繼續向上)、【N】沿之前反向繼續查詢(此處為繼續向下); | 無 |
:1,$s/word1/word2/gc | 從第一行到最後一行查詢word1並替換為word2,並在替換前提示使用者確認 | 一般模式下,可以通過符號【:】進入命令列模式,再鍵入【1,$】代表從第一行到最後一行,$也可以用具體的行號代替,最後的引數【c】代表替換前提示使用者確認; | 一般來說,除非確認要全域性替換的情況,還是推薦加上引數【c】確保替換無誤; |
3、剪下、刪除、複製、貼上指令
指令 | 功能 | 簡介 | 編者按 |
---|---|---|---|
x | 刪除(剪下)游標位置處的字元 | 在一般模式下,可以使用小寫字母【x】代替【Del】刪除(剪下)游標位置的字元; | 非常常用,較使用【Del】更方便;在vi指令中,刪除一般都可以做為剪下使用; |
dd | 刪除(剪下)游標所在行 | 在一般模式下,可以使用【dd】刪除(剪下)游標所在行操作;可使用【ndd】刪除連續的n行; | 非常常用; |
yy | 複製游標所在行 | 在一般模式下,可以使用【yy】複製游標所在行;可使用【nyy】複製連續的n行; | 非常常用; |
p | 將已複製的資料貼上在游標下一行 | 在一般模式下,可以使用【p】將已複製的資料貼上在游標下一行; | 非常常用; |
4、重複操作與撤銷操作指令
指令 | 功能 | 簡介 | 編者按 |
---|---|---|---|
u | 撤銷前一個操作 | 在一般模式下,可使用【u】撤銷之前的操作 | 非常常用; |
Ctrl+r | 恢復前一個被撤銷的操作 | 在一般模式下,可以使用【Ctrl+r】恢復【u】撤銷的操作 | 【u】的反向操作; |
. | 重複之前的操作 | 在一般模式下,使用符號【.】可以方便地重複之前的刪除、貼上操作 | 非常常用; |
5、命令列模式常用指令
指令 | 功能 |
---|---|
:w | 儲存檔案 |
:q | 退出檔案 |
:wq | 儲存並退出檔案 |
:q! | 強制退出,不儲存 |
:set nu | 設定行號 |
:set nonu | 取消設定行號 |
:數字 | 移動游標到第n行 |