VIM功能相當強大,熟悉了常用命令,不用任何插件也完全可以方便高效地編輯。把自己常用的操作整理了一下,當速查和助記吧(主要參考VIM幫助手冊,VIM版本7.3)。
【0】安裝
在沒(méi)有x的系統中安裝:make -DWITHOUT_X11 install
支持把中文當letter操作:./configure --prefix=/usr/vim --enable-multibyte --with-features=huge
【1】移動(dòng)
方向鍵,page down,page up等跟其它編輯器作用一樣。
k 上移
h 左移 l 右移
j 下移
ctrl+f 前滾一頁(yè)
ctrl+b 后滾一頁(yè)
:n 將光標定位到第n行
0 光標定位到本行的行首
$ 光標定位到本行的行尾
G 光標定位到本文章的最后一行,與:$功能相同。
H 光標定位到屏幕的頂端
M 光標定位到屏幕的中間
L 光標定位到屏幕的底端
nw 后移動(dòng)到第n個(gè)單詞詞首
b 與w相反
e 移動(dòng)到單詞詞尾
ge 與e相反
W,E為w,e的以字符串為單位移動(dòng)的方式
$,<End> 移到行尾
0,<Home> 移到行首
^ 移到行首第一個(gè)非空字符
$可以用數字前綴,移到第n行后的行尾;0,^不行。
nfx,nFx 向后/前查找第n個(gè)x (find)
ntx,nTx 與f/F功能類(lèi)似,但光標會(huì )放在前一個(gè)字符上 (to)
% 跳轉到匹配的括號處
gg 移到行首,或1G
nG 移到第n行
G移到最后
H,M,L 移到home,middle,last
CTRL+U 上移半屏
CTRL+D 下移半屏
CTRL+E CTRL+Y 上、下滾一行
CTRL+F 下移一屏
CTRL+B 上移一屏
zz 光標所在行移到屏幕中央
zt 光標所在行移到屏幕頂部
zb 光標所在行移到屏幕底部
【2】查找
/patt 向下查找patt
patt 向上查找patt
nn 跳到后面第n個(gè)匹配結果
nN 跳到前面第n個(gè)匹配結果
:set ignorecase, :set noignorecase 是否忽略搜索時(shí)的大小寫(xiě)
# 跳到光標所在詞的上一個(gè)相同詞
* 跳到光標所在詞的下一個(gè)相同詞
:set hlsearch, :set nohlsearch (長(cháng)期)打開(kāi)或關(guān)閉搜索時(shí)的高亮
:nohlsearch 去掉當前匹配的高亮顯示
:set incsearch 在輸入的過(guò)程中就顯示匹配點(diǎn)
:set nowrapscan 查找到文件尾后不再從頭查找
:scriptnames 顯示VIM配置文件路徑
:set history x 設置命令,查找歷史記錄個(gè)數
:set ruler 總是顯示光標位置
:set showcmd 顯示正在做的未完成的命令
:set incsearch 輸入時(shí)顯示匹配點(diǎn)
:set hlearch 高亮顯示匹配字符串
:set showmatch 顯示匹配的對應括號
:set matchtime=15 匹配括號高亮的時(shí)間(秒)
:3,$s/^/abc/g 在文件的第3行至最后一行的行首插入abc
:%s/$/abc/g 在每一行的行尾添加abc
:%s/abc/cde/g 在整個(gè)文件中將abc替換為cde
:10,20s/abc/cde/ 替換10到20行中的abc為cde
【3】跳轉
'' 跳轉到上一次光標所在點(diǎn)
CTRL+0 跳轉到前一個(gè)跳轉點(diǎn)
CTRL+I 跳轉到后一個(gè)跳轉點(diǎn)
:jumps 顯示所有跳轉點(diǎn)
mx 保存當前位置跳轉標記到x中
m 標記當前單詞
:marks 顯示跳轉標記
' 跳轉前的位置
"" 最后一次編輯的位置
[ 最后修改的開(kāi)始位置
] 最后修改的結束位置
x% 跳到文件內容x%的地方
mx 在當前位置作標記,記為x
'x 跳到x標記處
:marks [marklist] 顯示標記位置
gd 轉到當前光標所指的局部變量的定義
* 轉到當前光標所指的單詞下一次出現的地方
# 轉到當前光標所指的單詞上一次出現的地方
% 跳轉到對應的括號匹配位置
【4】編輯
dnw 刪除n個(gè)單詞
dne 刪除n個(gè)單詞
c 修改,會(huì )將模式切換為插入模式,如cw
r 替換,輸入后替換,不用切換模式
. 重復上一次修改
v 可視模式
CTRL+V 列塊模式
np,nP 粘貼n個(gè)拷貝內容到光標后/前
yy,Y 拷貝一行
yw,ye 拷貝單詞,包含/不包含詞后空格
"*y 拷貝到剪貼板
text-objects
daw 刪除一個(gè)單詞
cis change inner sentence
x dl 刪除光標所在詞
X dh 刪除光標前詞
D d$ 刪除從當前到行尾字符
dw 向后刪除一個(gè)詞
db 向前刪除一個(gè)詞
diw 刪除一個(gè)詞,不會(huì )刪空格
daw 刪除一個(gè)詞,會(huì )刪除空格
dG 刪除當前到整個(gè)文檔末尾的內容
dgg 刪除當前到文檔開(kāi)始處的內容
~ 改變大小寫(xiě)
I 移到行首非空字符處,并啟動(dòng)插入模式
A 移到行尾并啟動(dòng)插入模式
替換:Xs/old/new/RANGE
X .為當前行,$為末尾行,%為所有行,1,2為1到2行,100為第100行
RANGE g全局,c確認,+n,-n,相對當前行偏移,x,y為x到y行
s默認只作用一行
:gCMD 針對全局執行命令
插入特殊字符:
CTRL+V 9.
CTRL+V 09.
CTRL+V 009.
CTRL+V o123 八進(jìn)制
CTRL+V u1234
CTRL+V U12345678
set fileformat=unix,dos 設置文件格式
set fileformat? 查看當前文件格式
edit ++ff=unix file.txt 強制用某格式編輯
set display=uhex hex模式瀏覽
%!xxd 轉換成16進(jìn)制格式
== 當前行自動(dòng)縮進(jìn)對齊(又稱(chēng)自動(dòng)格式化)
n== 當前行---n+當前行自動(dòng)縮進(jìn)對齊
gg=G 當前文件所有行自動(dòng)縮進(jìn)對齊
< 向前縮進(jìn)
> 向后縮進(jìn)
u 撤消最后一次修改
. 重復最后一次修改
i: 在當前位置的字符前面進(jìn)入插入模式
I: 在當前行的開(kāi)頭進(jìn)行插入
a: 在當前位置的字符后面進(jìn)入插入模式
A: 在當前行的結尾進(jìn)行插入
o: 在當前行下面打開(kāi)一個(gè)新行進(jìn)行插入
O:在當前行上面打開(kāi)一個(gè)新行進(jìn)行插入
v 進(jìn)入可視模式
vaw 選則一個(gè)單詞
vas 選擇一個(gè)句子
vap 選擇一個(gè)斷落
CTRL+v 進(jìn)入列塊模式,選定塊后shift+<向左移,shift+>向右移
在一段文字前,垂直插入字符串(如注釋符號#,//)
(1)ctrl+v
(2)shirt+i 或 I
(3)輸入字符串
(4)Esc
折疊:
用v做塊選定要折疊的語(yǔ)句,用zf可以折疊這部分內容
zfxj:向下折疊x行
移到括號上用zf折疊兩個(gè)括號之間的內容
zf/str, 折疊到下一個(gè)匹配str的地方
zj跳到下一個(gè)折疊(zk上一個(gè))
zo展開(kāi)折疊, zO展開(kāi)所有折疊。對嵌套折疊, zr打開(kāi)第一層的折疊,zR打開(kāi)所有層的折疊;
zc關(guān)閉折疊,在zO之后用zc會(huì )關(guān)上所有打開(kāi)的折疊。對嵌套折疊,zm關(guān)閉第一層折疊,zM關(guān)閉所有層折疊。
【5】窗口
vim -R file 或view file 只讀模式啟動(dòng),可強制寫(xiě)入 vim -M file 不能寫(xiě)入
:edit file 編輯某個(gè)文件
:saveas file 將文件存為file
:file file 改變當前文件名但不立即改變它
split 分割窗口,可加數字前綴代表行數大小,加文件名表示在新窗口中打開(kāi)的文件
CTRL W +, CTRL W - 放大,縮小窗口
nCTRL+_ 設置大小為n
close 關(guān)閉窗口
only 關(guān)閉除當前窗口的其它窗口
vsplit 垂直分割窗口
CTRL+h,j,k,l,t,b 移動(dòng)光標到窗口(左下上右頂底)
CTRL+H,J,K,L 移動(dòng)窗口(最 左下右上)
tabedit file 標簽頁(yè)瀏覽文件
tab split 在新標簽頁(yè)中打開(kāi)
ngt 在標簽頁(yè)間移動(dòng)n個(gè)位置
【6】打開(kāi)
:args 顯示打開(kāi)的文件列表
:next,previous,first,last 打開(kāi)文件列表中的某個(gè)
:args a.txt,b.txt 打開(kāi)文件
vim -o filelist 打開(kāi)多個(gè)文件時(shí)垂直分割
set noscrollbind 取消滾動(dòng)綁定
]c,[c跳轉到下/上一個(gè)修改點(diǎn)
diffupdate 更新(顏色)
dp,do 使用左/右窗口的內容消除差異
:read file 讀文件
:Oread file 以只讀方式讀文件
刷新屏幕 CTRL+L
vim -r file 恢復文件
vim -r 查看交換文件
:e! 刷新本文件(如本文件被其它地方修改)
:e dir 打開(kāi)dir目錄瀏覽以選擇文件進(jìn)行編輯
vimdiff file1 file2 對比文件差異
或者
:edit main.c
:vertical diffsplit main.c~
【7】功能
設置制表符寬度為4
set tabstop=4
set softtabstop=4
set shiftwidth=4 設置縮進(jìn)的空格數為4
:syntax on/off 打開(kāi)/關(guān)閉語(yǔ)法高亮
set fileencodings=utf-8,gbk 設置編碼
set autoindent 設置自動(dòng)縮進(jìn)
filetype on 打開(kāi)vi文件類(lèi)型識別功能
使用外部命令 ![motion][!cmd],如!ls
CTRL+P 自動(dòng)補全
CTRL+A 將上次插入的文字再插入一遍
CTRL+@ 完成CTRL+A的功能并退出編輯模式
CTRL+Y 插入光標上方字符
CTRL+E 插入光標下方字符
CTRL+R register 插入寄存器register中的內容
:iabbrev ad advertisement 縮寫(xiě)ad->advertisement,縮寫(xiě)命令的縮寫(xiě)iab
:abbreviate 列出所有縮寫(xiě)
unabbreviate 刪除縮寫(xiě)
abclear 清除所有縮寫(xiě)
:set backup 備份文件
寄存器使用步驟:
(1)qx 開(kāi)始使用x
(2)鍵入命令
(3)q 退出
(4)@x 使用x寄存器
qX 對寄存器x進(jìn)行追加,q后跟大寫(xiě)字母表示追加到對應的小寫(xiě)寄存器
"xCMD 對寄存器x執行CMD操作
gCTRL+G 顯示字節信息,字數統計等信息
K 打開(kāi)當前光標所在詞的man信息
:set showmode 查看當前模式
set number/nonumber 顯示/不顯示行號
CTRL+G 顯示文件信息,文件名,當前行等
:set ruler 顯示光標位置
【8】退出
:wq! 強制保存退出
:wq 保存退出
:x 和:wq 一樣
ZZ 和:wq一樣
:q 嘗試退出
:q! 強制退出(不保存)
聯(lián)系客服