摘要:光標(biāo)移動基本詞向前移動,光標(biāo)停在第一個字符向后移動,光標(biāo)停在第一個字符向后移動,光標(biāo)停在最后一個字符行首或行尾移動到行尾移動到行首,非空白字符移動到行首,第一個字符指定字符單行搜索下一個單個字符單行搜索上一個單個字符單行搜索下一個單個字符,
VIM 光標(biāo)移動
基本
h j k l
詞
b 向前移動,光標(biāo)停在第一個字符 (backward) w 向后移動,光標(biāo)停在第一個字符 (word) e 向后移動,光標(biāo)停在最后一個字符 (end of word)
行首或行尾
$ 移動到行尾 ^ 移動到行首,非空白字符 0 移動到行首,第一個字符
指定字符
f 單行搜索下一個單個字符 (find) F 單行搜索上一個單個字符 t 單行搜索下一個單個字符,光標(biāo)停在前一個字符 (to) T 單行搜索上一個單個字符,光標(biāo)停在前一個字符
匹配括號
% 移動到匹配的括號或移動到括號
移動到指定行
G 移動到最后一行 33G 移動到第 33行 gg 移動到第一行 40% 移動到40% H 移動到屏幕內(nèi)第一行 (home) M 移動到屏幕內(nèi)中間 (middle) L 移動到屏幕內(nèi)最后一行 (last)
滾屏
向上滾動半屏 (up) 向下滾動半屏 (down) 向下滾動一屏 (forward) 向上滾動一屏 (backward)
簡單查找
/string 向下查找包含 string的詞 ?string 向上查找包含 string的詞 /向下查找 string ? 向上查找 string n 重復(fù)前一次查找 N 重復(fù)前一次相反的查找 / 之前的查找 * 向下查找光標(biāo)所在處的詞,全詞匹配 # 向上查找光標(biāo)所在處的詞,全詞匹配 g* 向下查找包含光標(biāo)所在處的詞 g# 向上查找包含光標(biāo)所在處的詞
標(biāo)記:
m{mark} 講此處標(biāo)記為 mark,mark 為一個字母 `{mark} 跳到標(biāo)記 mark處,` 是1左邊那個鍵 "{mark} 跳到標(biāo)記 mark處所在行行首,"是單引號 特殊的mark " 此次跳轉(zhuǎn)之前的起跳點 " 上次編輯該文件時光標(biāo)最后停留的位置 [ 最后一次修改的起始位置 ] 最后一次修改的結(jié)束位置
其他命令
:set number 顯示行號,左邊 (se nu) :set nonumber 不顯示行號(se nonu) :set ruler 顯示光標(biāo)位置,右下角 (se ru) :set noruler 不顯示光標(biāo)位置 (se noru) :set ignorecase 查找忽略大小寫 :set noignorecase 查找不忽略大小寫 :set hlsearch 查找高亮 (se hls) :set nohlserch 關(guān)閉查找 (se nohls) :set incsearch 鍵入目標(biāo)字符串時就開始查找 :set nowrapscan 搜索過程在文件結(jié)束時就停止簡單修改
插入
i 在當(dāng)前光標(biāo)處插入 I 在當(dāng)前行第一個非空白字符前插入 a 在當(dāng)前光標(biāo)之后插入 A 在當(dāng)前行尾插入 o 在當(dāng)前行之下插入 O 在當(dāng)前行之上插入
刪除
d 刪除操作符 (delete) c 修改操作符,刪除之后自動進入插入 (change) dd 刪除一行 cc 修改一行 x dl ,刪除光標(biāo)處字符 X dh ,刪除光標(biāo)左邊的字符 D d$ ,刪除到行尾 C c$ ,修改到行尾 s cl ,修改光標(biāo)字符 S cc ,修改一整行 r 替換(刪除之后插入并回到 Normal) . 執(zhí)行上一次所執(zhí)行的更改命令
復(fù)制
y 復(fù)制操作符 (yanking) yy 復(fù)制一行 yw 復(fù)制word,包含之后空白字符 ye 復(fù)制word,不包含之后空白字符 yaw 復(fù)制word,包含之后空白字符 yiw 復(fù)制word,不包含之后空白字符 yab 復(fù)制一個小括號里面的內(nèi)容,包括括號本身 yib 復(fù)制一個小括號里面的內(nèi)容,不包括括號本身 ya{ 復(fù)制一個大括號里面的內(nèi)容,包括括號本身 yi{ 復(fù)制一個大括號里面的內(nèi)容,不包括括號本身 p 粘貼(put)
對齊
= 對齊操作符 == 對齊一行 n== 對齊n行 =a{ 對齊一個大括號里面的內(nèi)容
大小寫替換
~ 大小寫替換 g~ 大小寫替換操作 g~iw 改變光標(biāo)處單詞大小寫 guiw 光標(biāo)處單詞變成小寫 gUiw 光標(biāo)處單詞變成大寫
命令計數(shù)器 n+命令
一個命令重復(fù)執(zhí)行 如:4x刪除 4個字符
操作命令符 +位移命令符
操作如:刪除 d,復(fù)制y ;位移如:詞語 w,$ 行尾 d$ 刪除到句尾 4yy 復(fù)制4行 3dw 3次刪除一個單詞 d3w 一次刪除 3個單詞 3d2w 3次刪除 2個單詞
常用刪除命令
x(dl), X(dh), D(d$), dw, db, diw, daw, dG, dgg
visual 模式(主要功能就是選擇)
v 進入visual模式,移動光標(biāo)選擇操作文本范圍 V 進入visual行模式,選擇以行為單位查找替換進入visual塊模式,選擇塊
查找命令
/, ?, n, N, #, *, g#, g*, gd, gD
替換命令
:[n,m]s/[src]/[dst]/[g][c] [n,m] 表示一個范圍,從 n~m行中查找替換,[n,$]表示從第 n行之后 % 表示整個文件 [src] 要查找的詞, [dst]要替換的詞 [g] 替換所有的匹配,若沒有,只匹配第一個 [c] 替換前詢問 / 為分隔符,也可以用 +或# 來分隔 :s/src/dst/ 替換當(dāng)前行第一個 src為dst :s/src/dst/g 替換當(dāng)前行所有 src為dst :n,ms/src/dst/ 替換n~m行第一個 src為dst :n,$s/src/dst/g 替換第n行到最后一行中所有 src為dst :%s/src/dst/g 替換整個文件中所有 src為dst :%s/src/dst/gc 替換整個文件中所有 src為dst 并詢問是否替換 :%s//dst/gc 與:%s/src/dst/gc一樣(全詞匹配)
正則匹配
* 匹配0以上之前的字符 + 匹配1個以上之前字符 = 匹配0個或 1個之前字符 ? 匹配0個或 1個之前字符 . 匹配任何單個字符 < 匹配一個單詞的開始 > 匹配一個單詞的結(jié)束 s 匹配空白字符和 S 匹配非空白字符 d 數(shù)字[0-9] D 非數(shù)字[^0-9] x 十六進制數(shù)字 [0-9A-Fa-f] X 費十六進制數(shù)字 [^0-9A-Fa-f] l 小寫字符 [a-z] L 非小寫字符 [^a-z] u 大寫字符 [A-Z] U 非大寫字符 [^A-Z] a 字符[A-Za-z] A 非字符[^A-Za-z] [] 任何[]中的字符
更多
:help pattern折疊
折疊方式
manual 手工定義折疊 indent 更多的縮進表示更高級的折疊 expr 用表達式來定義折疊 syntax 用語法高亮來定義折疊 diff 對沒有更改的文本進行折疊 marker 對文中的標(biāo)志折疊 set foldmethod=**** 設(shè)置折疊方式 marker方式,需要用標(biāo)記來標(biāo)識代碼的折疊,系統(tǒng)默認是 {{{和}}}
折疊命令
zc 折疊 zC 對所在范圍內(nèi)所有嵌套的折疊點進行折疊 zo 展開 zO 對所在范圍內(nèi)所有嵌套的折疊點展開 zr, zR 折疊所有 zm, zM 展開所有 za, zA 折疊/打開當(dāng)前折疊 zi 折疊/展開所有 [z 到當(dāng)前打開的折疊開始處 ]z 到當(dāng)前打開的折疊末尾處 zj 向下移動到下一個折疊開始處 zk 向上移動到前一折疊的結(jié)束處 zf 創(chuàng)建折疊 zf56G 創(chuàng)建從當(dāng)前行起到 56行的代碼折疊 10zf 創(chuàng)建從當(dāng)前行起后 10行的代碼折疊 10zf- 創(chuàng)建從當(dāng)前行起到之前 10行的代碼折疊 zf% 創(chuàng)建從當(dāng)前行起到對應(yīng)匹配的括號 zd 刪除光標(biāo)下的折疊,僅當(dāng) manual或marker 方式有效 zD 嵌套地刪除光標(biāo)下的折疊,僅當(dāng) manual或marker 方式有效 zE 除去窗口里的所有折疊,僅當(dāng) manual或marker 方式有效
foldlevel
"foldlevel" 是個數(shù)值選項:數(shù)字越大則打開的折疊更多 當(dāng) "foldlevel" 為 0 時,所有的折疊關(guān)閉 當(dāng) "foldlevel" 為正數(shù)時,一些折疊關(guān)閉 當(dāng) "foldlevel" 很大時,所有的折疊打開 "foldlevel" 的改變后立即生效。之后,折疊可以被手動地打開和關(guān)閉文件
文件操作
:w 保存 :w! 強制保存 :w filename 將當(dāng)前緩沖區(qū)的內(nèi)容保存成文件 filename :n1, n2, filename 將n1到 n2的內(nèi)容保存為文件filename :q 退出當(dāng)前窗口,若改動,提示失敗 :q! 強制退出,放棄改動 :wq 保存后退出 :wa 保存所有 :qa 退出所有 :wqa 保存所有后退出 ZZ 相當(dāng)于:wq
編輯另一個文件
:edit file
多文件編輯
vim filename1 filename2 ... :bn 跳轉(zhuǎn)至下一緩沖區(qū) (文件)( 最后一個 ->第一個) :bN 跳轉(zhuǎn)到上一緩沖區(qū) (文件)( 第一個->最后一個 ) :bd 關(guān)閉當(dāng)前緩沖區(qū) (文件) :n 跳轉(zhuǎn)至下一文件 ,如當(dāng)前文件為最后一個,提示錯誤 :N 跳轉(zhuǎn)至上一文件 ,如當(dāng)前文件為第一個,提示錯誤 :next, :previous 跳轉(zhuǎn)至下 /上一文件 :wnext, :wprevious 保存當(dāng)前文件并跳轉(zhuǎn)至下 /上一文件 :last, :first 跳轉(zhuǎn)至最后一個 /第一個文件 :files 列出當(dāng)前已打開文件 :args 給出進入 vim時命令行參數(shù);當(dāng)前正在編輯文件名用 "[]"列出
窗口分隔
s 水平分割窗口 v 垂直分割窗口 w 切換至另一窗口 h 切換至左側(cè)窗口 j 切換至下方窗口 k 切換至上方窗口 l 切換至右側(cè)窗口 H 移動當(dāng)前窗口到左邊 J 移動當(dāng)前窗口到下面 K 移動當(dāng)前窗口到上面 L 移動當(dāng)前窗口到右邊 :split filename 水平分隔窗口打開 filename :vsplit filename 垂直分割窗口打開 filename
標(biāo)簽式編輯
:tabnew filename 在新標(biāo)簽中打開 gt, :tabnext 切換至下一個標(biāo)簽 gT, :tabprevious 切換至上一個標(biāo)簽 :tabc 關(guān)閉當(dāng)前標(biāo)簽 :tabl 切換至最后一個標(biāo)簽 :tabmove n 切換到第 n個標(biāo)簽,默認標(biāo)簽編號從 0開始
目錄
netrw 插件
netrw 插件是vim的標(biāo)準(zhǔn)插件,在 .vimrc中只要設(shè)置了 set nocp " 不與vi兼容 filetype plugin on " 允許插件 就可以使用 netrw插件了
打開目錄
Ex[plore] 打開當(dāng)前目錄或指定目錄 Se[xplore] 水平分割并打開當(dāng)前目錄或指定目錄 Ve[xplore] 垂直分割并打開當(dāng)前目錄或指定目錄 Te[xplore] 新建標(biāo)簽并打開當(dāng)前目錄或指定目錄
目錄操作
宏進入目錄 試圖刪除文件 /目錄 - 上一級目錄 a 在正常顯示,隱藏和顯示三種方式間切換 c 使瀏覽中的目錄成為當(dāng)前目錄 d 建立目錄 D 試圖刪除目錄 i 在瘦、長、寬、和樹形的各種列表中切換刷新目錄列表 o 打開新瀏覽窗口,進入光標(biāo)所在目錄,使用水平分割 p 預(yù)覽文件 P 在前一次使用的窗口里預(yù)覽 r 反轉(zhuǎn)排序順序 R 給指定文件 /目錄換名 s 選擇排序方式:按名字、時間、文件大小排序 S 指定按名字排序的后綴優(yōu)先級 t 在新標(biāo)簽頁里打開光標(biāo)所在文件 /目錄 v 打開新瀏覽窗口,進入光標(biāo)所在目錄,使用垂直分割
創(chuàng)建宏
q ++ [一系列命令] + q 指用戶自定義的 a-z中的一個寄存器 如:qa...q
運行宏
@ +MAP運行寄存器中的宏 @@ 重復(fù)運行上一次宏 10@a 重復(fù)運行寄存器 a中的宏10 次
映射模式
普通模式 可視模式 操作符等待模式 插入模式 命令行模式
映射模式代號
普通、可視和選擇、操作符等待 n 普通 v 可視和選擇 s 選擇 x 可視 o 操作符等待 ! 插入和命令行 i 插入 l 插入、命令行和 Lang-Arg模式的":lmap" 映射 c 命令行
命令
map {lhs} {rhs} 把普通、可視和選擇、操作符等待模式下的 lhs命令映射成rhs,如:map tn :tabnew noremap noremap對rhs不會重新掃描映射 unmap {lhs} 取消對lhs的映射 mapclear 取消所有 map映射 nmap 只作用于普通模式下的映射 imap 只作用于插入模式下的映射 nnoremap 只作用于普通模式下的 noremap nunmap 只作用于普通模式下的 unmap nmapclear 只作用于普通模式下的 mapclear
特殊參數(shù)
, , ,