三種模式
命令模式(默認) command mode:移動光標,剪切/粘貼文本 插入(編輯)模式 edit mode:修改文本 擴展命令模式 extended command mode:保存,退出等
命令格式
vim [OPTION]... FILE...
OPTION | 解釋說明 |
---|---|
+# | 打開文件后,直接讓光標處于第#行的行首 |
vim + file | 直接打開file,光標在最后一行 |
+/PATTERN | 打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首 |
vim –b file | 二進制方式打開文件 |
vim –d file1 file2… | 比較多個文件(可用ctrl+w在各個窗口間移動,打開的三個文件都可以修改,保存需逐個進行) |
vim -m file | 只讀打開文件(強制命令!也不好使) |
ex file 或 vim –e | 直接進入僅ex模式(不可視) |
模式轉換
命令 | 說明 |
---|---|
ESC | 插入/擴展模式 —-> 命令模式 |
: | 命令模式 —-> 擴展模式 |
CTRL+s,Ctrl+q | 鎖定和解鎖 |
命令模式–>插入模式
命令 | 說明 |
---|---|
i | insert, 在光標所在處輸入(shift+s也可以) |
I | 在當前光標所在行的行首輸入 |
a | append, 在光標所在處后面輸入 |
A | 在當前光標所在行的行尾輸入 |
o | 在當前光標所在行的下方打開一個新行 |
O | 在當前光標所在行的上方打開一個新行 |
ZZ | 保存退出 |
ZQ | 不保存退出 |
## 擴展模式
命令 | 說明 |
---|---|
q | 退出 |
q! | 強制退出,丟棄做出的修改 |
wq | 保存退出 |
x | 保存退出 |
w | 寫(存)磁盤文件 |
r filename | 讀文件內容到當前文件中 |
w filename | 將當前文件內容寫入另一個文件 |
!command | 在編輯文件過程中,臨時執行某命令而不需退出文件編輯 |
r!command | 執行某命令,將其結果讀入當前編輯文件的光標處后 |
命令模式
光標跳轉
命令 | 說明 |
---|---|
h | 左 |
l | 右 |
j | 下 |
k | 上 |
#h/l/j/k | 向指定方向跳轉#個字符 |
w | 下一個單詞的詞首 |
e | 當前或下一個單詞的詞尾 |
b | 當前或前一個單詞的詞首 |
#w/e/b | 向指定方向跳轉#個單詞數 |
H | 當前頁頁首 |
M | 當前頁頁中間行 |
L | 當前頁頁底 |
^ | 跳轉至行首的第一個非空白字符; |
0 | 跳轉至行首 |
$ | 跳轉至行尾 |
#G、擴展模式:# | 跳轉至由#指定行 |
G | 最后一行 |
1G, gg | 第一行 |
) | 下一句 |
( | 上一句 |
} | 下一段 |
{ | 上一段 |
Ctrl+f | 向文件尾部翻一屏 |
Ctrl+b | 向文件首部翻一屏 |
Ctrl+d | 向文件尾部翻半屏 |
Ctrl+u | 向文件首部翻半屏 |
字符編輯
命令 | 說明 |
---|---|
x | 刪除光標處的字符(實際上類似于剪切); |
#x | 刪除光標處起始的#個字符 |
xp | 交換光標所在處的字符及其后面字符的位置 |
~ | 轉換大小寫 |
r | 替換光標所在處的字符 |
R | 切換成REPLACE模式 |
d | 刪除命令,可結合光標跳轉字符,實現范圍刪除;(并未真正刪除,實際上類似于剪切); |
d$ | 刪除到行尾 |
d^ | 刪除到非空行首 |
d0 | 刪除到行首 |
dw | 刪除光標位至下個單詞詞首 |
de | 刪除光標位到本詞或下個單詞詞尾 |
db | 刪除光標位到本詞或下個單詞詞首 |
#COMMAND | 刪除#指定的內容(如:15d0,表示向前刪除本行15個字符,若不足15個字符也不向上擴展) |
dd | 刪除光標所在的行 |
#dd | 多行刪除 |
D | 從當前光標位置一直刪除到行尾,留空行,等同于d$ |
y | 復制yank,行為相似于d命令 |
y$ | 復制到行尾 |
y0 | 復制到行首 |
y^ | 復制到非空行首 |
ye | 復制光標位到本詞或下個單詞詞尾 |
yw | 復制光標位至下個單詞詞首 |
yb | 復制光標位到本詞或下個單詞詞首 |
#COMMAND | 復制#指定的內容() |
yy | 復制行 |
#yy | 復制多行 |
Y | 復制整行 |
p | 緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的后面 |
P | 緩沖區存的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面 |
c | 修改后切換成插入模式 |
c$ | 刪除當前光標到行尾,并切換成插入模式 |
c^ | 刪除當前光標到非空行首,并切換成插入模式 |
c0 | 刪除當前光標到行首,并切換成插入模式 |
cb | 刪除光標位到本詞或下個單詞詞首,并切換成插入模式 |
ce | 刪除光標位到本詞或下個單詞詞尾,并切換成插入模式 |
cw | 刪除光標位至下個單詞詞首,并切換成插入模式 |
#COMMAND | 刪除#指定的內容,并切換成插入模式(如:3c0,表示向前刪除本行3個字符,若不足15個字符也不向上擴展) |
cc | 刪除當前行并切換至插入模式,輸入新內容 |
#cc | 刪除多行并切換至插入模式,以輸入新內容 |
C | 刪除當前光標到行尾,并切換成插入模式 |
gU | 變大寫 |
gu | 變小寫 |
<start position><command><end position> | 對于y/d/gU/gu,可以使用該組合,如0y$,^gU$等; |
100iwang[ESC] | 粘貼 wang 100次 |
u | 撤銷最近的更改 |
#u | 撤銷之前多次更改 |
U | 撤消光標落在這行后所有此行的更改 |
Ctrl+r | 重做最后的“撤消”更改 |
. | 重復前一個操作 |
n. | 重復前一個操作n次 |
擴展模式
地址定界
地址定界 編輯命令(d/y/w/r) w file: 將范圍內的行另存至指定文件中 r file:在指定位置插入指定文件中的所有內容
命令 | 說明 |
---|---|
start_pos,end_pos | |
# | 具體第#行,例如2表示第2行; |
#,# | 從左側#表示行起始,到右側#表示行結尾 |
#,+# | 從左側#表示的行起始,加上右側#表示的行數 |
2,+3 | 表示2到5行 |
. | 當前行 |
$ | 最后一行 |
.,$-1 | 當前行到倒數第二行 |
% | 全文, 相當于1,$ |
/pat1/,/pat2/ | 從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束 |
#,/pat/ | 從指定行開始,到第一次匹配pat的行結束 |
/pat/,$ | 從第一次匹配pat的行開始,到最后一行結束 |
查找
命令 | 說明 |
---|---|
/PATTERN | 從當前光標所在處向文件尾部查找 |
?PATTERN | 從當前光標所在處向文件首部查找 |
n | 與命令同方向 |
N | 與命令反方向 |
s/要查找的內容/替換為的內容/修飾符 | 在擴展模式下完成查找替換操作() |
查找替換
s/要查找的內容/替換為的內容/修飾符 (分隔符/可用其他字符替換) 要查找的內容:可使用模式 替換為的內容:不能使用模式,但可以使用\1, \2, ...等后向引用符號;還可以使用“&”引用前面查找時查找到的整個內容 修飾符: i : 忽略大小寫 g : 全局替換;默認情況下,每一行只替換第一次出現 gc: 全局替換,每次替換前詢問
寄存器
命名/無命名寄存器(a~z表示26個命名寄存器、1個命名寄存器)
26個命名寄存器(a~z表示)和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共享。未指定,將使用無命名寄存器。 格式: [數字]["寄存器][命令]如: 3"tyy 表示復制3行到t寄存器中 "tp 表示將t寄存器內容粘貼
數字寄存器(0~9表示)
有10個數字寄存器,用0,1,…,9表示,0存放最近復制內容,1存放最近刪除內容。 當新的文本變更和刪除時,1轉存到2,2轉存到3,以此類推。 數字寄存器不能在不同會話間共享。
編輯二進制文件
vim –b binaryfile 以二進制方式打開文件 %!xxd :擴展命令模式下,利用xxd命令轉換為可讀的十六進制 %!xxd –r:擴展命令模式下,利用xxd命令轉換回二進制
可視化模式
該模式允許選擇的文本塊: v 面向字符 V 面向行 ctrl+v 面向塊 可視化鍵可用于與移動鍵(如:w,e,b,),},箭頭等)結合使用。 突出顯示的文字可以被刪除d,復制y,變更c,過濾,搜索/替換s等
多文件模式
vim FILE1 FILE2 FILE3 ... :next 下一個 :prev 前一個 :first 第一個 :last 最后一個 :wall 保存所有 :qall 退出所有 :wqall
多“窗口”模式
-
多文件分割
vim -o|-O FILE1 FILE2 ... -o: 水平分割 -O: 垂直分割 在窗口間切換:Ctrl+w, Arrow
-
單文件窗口分割:
Ctrl+w,s : split, 水平分割 Ctrl+w,v : vertical, 垂直分割 ctrl+w,q :取消相鄰窗口 ctrl+w,o : 取消全部窗口
定制vim的工作特性
-
配置文件:永久有效
全局:/etc/vimrc 個人:~/.vimrc
-
擴展模式:當前vim進程有效
-
配置項
(1) 行號 顯示:set number, 簡寫為set nu 禁用:set nonumber, 簡寫為set nonu (2) 括號成對匹配 匹配:set showmatch, 簡寫為set sm 禁用:set nosm (3) 自動縮進 啟用:set ai 禁用:set noai (4) 高亮搜索 啟用:set hlsearch 禁用:set nohlsearch (5) 語法高亮 啟用:syntax on 禁用:syntax off(6) 忽略字符的大小寫 啟用:set ic 禁用:set noic (7) 文件格式 啟用:fileformat=unix 禁用:fileformat=dos (8) 設置文本寬度 :set textwidth=65 (vim only) :set wrapmargin=15(9) 查看設定 :set 查看當前設定 :set all 查看所有選項
幫助
-
vi/vim內置幫助
:help option-list 進入help的不同主題 :helpgrep word 按關鍵字查找 :help 查看幫助 :q 退出幫助
-
Vimtutor 練習使用
原創文章,作者:taobaibai,如若轉載,請注明出處:http://www.www58058.com/37291