VIM - Vi IMproved 7.4 編輯器操作彙總
vim [參數] [檔案 ..] 編輯指定的檔案
或: vim [參數] - 從标準輸入(stdin)讀取文本
或: vim [參數] -t tag 編輯 tag 定義處的檔案
或: vim [參數] -q [errorfile] 編輯第一個出錯處的檔案
參數:
-- 在這以後隻有檔案名
-v Vi 模式 (同 "vi")
-e Ex 模式 (同 "ex")
-E Improved Ex mode
-s 安靜(批處理)模式 (隻能與 "ex" 一起使用)
-d Diff 模式 (同 "vimdiff")
-y 容易模式 (同 "evim",無模式)
-R 隻讀模式 (同 "view")
-Z 限制模式 (同 "rvim")
-m 不可修改(寫入檔案)
-M 文本不可修改
-b 二進制模式
-l Lisp 模式
-C 相容傳統的 Vi: 'compatible'
-N 不完全相容傳統的 Vi: 'nocompatible'
-V[N][fname] Be verbose [level N] [log messages to fname]
-D 調試模式
-n 不使用交換檔案,隻使用記憶體
-r 列出交換檔案并退出
-r(跟檔案名) 恢複崩潰的會話
-L 同 -r
-A 以 Arabic 模式啟動
-H 以 Hebrew 模式啟動
-F 以 Farsi 模式啟動
-T <terminal> 設定終端類型為 <terminal>
--not-a-term Skip warning for input/output not being a terminal
-u <vimrc> 使用 <vimrc> 替代任何 .vimrc
--noplugin 不加載 plugin 腳本
-P[N] 打開 N 個标簽頁 (預設值: 每個檔案一個)
-o[N] 打開 N 個視窗 (預設值: 每個檔案一個)
-O[N] 同 -o 但垂直分割
+ 啟動後跳到檔案末尾
+<lnum> 啟動後跳到第 <lnum> 行
--cmd <command> 加載任何 vimrc 檔案前執行 <command>
-c <command> 加載第一個檔案後執行 <command>
-S <session> 加載第一個檔案後執行檔案 <session>
-s <scriptin> 從檔案 <scriptin> 讀入正常模式的指令
-w <scriptout> 将所有輸入的指令追加到檔案 <scriptout>
-W <scriptout> 将所有輸入的指令寫入到檔案 <scriptout>
-x 編輯加密的檔案
--startuptime <file> Write startup timing messages to <file>
-i <viminfo> 使用 <viminfo> 取代 .viminfo
-h 或 --help 列印幫助(本資訊)并退出
--version 列印版本資訊并退出
編輯器打開時:
Vi有三種基本工作模式:
Vi有三種基本工作模式:
-
指令模式
-
文本輸入模式
-
末行模式。
指令行模式
任何時候,不管使用者處于何種模式,隻要按一下ESC鍵,即可使Vi進入指令模式;我們在shell環境(提示符為$)下輸入啟動Vi指令,進入編輯器時,也是處于該模式下。在該模式下,使用者可以輸入各種合法的Vi指令,用于管理自己的文檔。此時從鍵盤上輸入的任何字元都被當做編輯指令來解釋,若輸入的字元是合法的Vi指令,則Vi在接受使用者指令之後完成相應的動作。但需注意的是,所輸入的指令并不在螢幕上顯示出來。若輸入的字元不是Vi的合法指令,Vi會響鈴報警。
文本輸入模式
在指令模式下輸入插入指令i、附加指令a 、打開指令o、修改指令c、取代指令r或替換指令s都可以進入文本輸入模式。在該模式下,使用者輸入的任何字元都被Vi當做檔案内容儲存起來,并将其顯示在螢幕上。在文本輸入過程中,若想回到指令模式下,按鍵ESC即可。
末行模式
末行模式也稱ex轉義模式。在指令模式下,使用者按“:”鍵即可進入末行模式下,此時Vi會在顯示視窗的最後一行(通常也是螢幕的最後一行)顯示一個“:”作為末行模式的提示符,等待使用者輸入指令。多數檔案管理指令都是在此模式下執行的(如把編輯緩沖區的内容寫到檔案中等)。末行指令執行完後,Vi自動回到指令模式。例如:
:sp newfile
:sp newfile
則分出一個視窗編輯newfile檔案。如果要從指令模式轉換到編輯模式,可以鍵入指令a或者i;如果需要從文本模式傳回,則按Esc鍵即可。在指令模式下輸入“:”即可切換到末行模式,然後輸入指令。
進入插入模式:
i: 插入光标前一個字元
i: 插入光标前一個字元
I: 插入行首
I: 插入行首
a: 插入光标後一個字元
a: 插入光标後一個字元
A: 插入行未
A: 插入行未
o: 向下新開一行,插入行首
o: 向下新開一行,插入行首
O: 向上新開一行,插入行首
O: 向上新開一行,插入行首
進入指令模式:
ESC:從插入模式或末行模式進入指令模式
移動光标:
h: 左移
h: 左移
j: 下移
j: 下移
k: 上移
k: 上移
l: 右移
l: 右移
M: 光标移動到中間行
M: 光标移動到中間行
L: 光标移動到螢幕最後一行行首
L: 光标移動到螢幕最後一行行首
G: 移動到指定行,行号 -G
G: 移動到指定行,行号 -G
w: 向後一次移動一個字
w: 向後一次移動一個字
b: 向前一次移動一個字
b: 向前一次移動一個字
{: 按段移動,上移
{: 按段移動,上移
}: 按段移動,下移
}: 按段移動,下移
Ctr-d: 向下翻半屏
Ctr-d: 向下翻半屏
Ctr-u: 向上翻半屏
Ctr-u: 向上翻半屏
Ctr-f: 向下翻一屏
Ctr-f: 向下翻一屏
Ctr-b: 向上翻一屏
Ctr-b: 向上翻一屏
gg: 光标移動檔案開頭
gg: 光标移動檔案開頭
G: 光标移動到檔案末尾
G: 光标移動到檔案末尾
删除指令:
x: 删除光标後一個字元,相當于
x: 删除光标後一個字元,相當于
Del
X: 删除光标前一個字元,相當于 Backspace
Del X: 删除光标前一個字元,相當于 Backspace
dd: 删除光标所在行,n dd 删除指定的行數
dd: 删除光标所在行,n dd 删除指定的行數
D: 删除光标後本行所有内容,包含光标所在字元
D: 删除光标後本行所有内容,包含光标所在字元
d0: 删除光标前本行所有内容,不包含光标所在字元
d0: 删除光标前本行所有内容,不包含光标所在字元
dw: 删除光标開始位置的字,包含光标所在字元
dw: 删除光标開始位置的字,包含光标所在字元
撤銷指令:
u: 一步一步撤銷
u: 一步一步撤銷
Ctr-r: 反撤銷
Ctr-r: 反撤銷
重複指令:
.: 重複上一次操作的指令
.: 重複上一次操作的指令
文本行移動:
>>: 文本行右移
>>: 文本行右移
<<: 文本行左移
<<: 文本行左移
複制粘貼:
yy: 複制目前行,n yy 複制 n 行
yy: 複制目前行,n yy 複制 n 行
p: 在光标所在位置向下新開辟一行,粘貼
p: 在光标所在位置向下新開辟一行,粘貼
可視模式:
v: 按字元移動,選中文本
v: 按字元移動,選中文本
V: 按行移動,選中文本可視模式可以配合 d, y, >>, << 實作對文本塊的删除,複制,左右移動
V: 按行移動,選中文本可視模式可以配合 d, y, >>, << 實作對文本塊的删除,複制,左右移動
替換操作:
r: 替換目前字元
r: 替換目前字元
R: 替換目前行光标後的字元
R: 替換目前行光标後的字元
查找指令:
/: str查找
/: str查找
n: 下一個
n: 下一個
N:上一個
N:上一個
替換指令:
把abc全部替換成123
末行模式下,将目前檔案中的所有abc替換成123
末行模式下,将目前檔案中的所有abc替換成123
:%s/abc/123/g
:%s/abc/123/g
末行模式下,将第一行至第10行之間的abc替換成123
末行模式下,将第一行至第10行之間的abc替換成123
:1, 10s/abc/123/g
:1, 10s/abc/123/g
vim裡執行 shell 下指令:
末行模式裡輸入!,後面跟指令
末行模式裡輸入!,後面跟指令