內容來源:《vim 實用技巧》一書
vim 移動位置的鍵:
h 左
j 下 gj 按屏幕行向下移動
k 上 gk 按屏幕行向上移動
l 右
0 移動到行首 g0 屏幕行行首
^ 移動到實際行的第一個非空白字符 g^ 屏幕行
$ 移動到行尾 g$ 屏幕行行尾
w 正向移動到下一單詞的開頭
b 反向移動到上一單詞的開頭
e 正向移動到下一單詞的結尾
ge 反向移動到上一單詞的結尾
. 表示重復上一次的動作
@:表示重復上一次的Ex命令
;表示重復上一次f[c]查找
可視模式下選中字符按U 或 u是切換字符大小寫
用法:
gUU 把一行中的字符變大寫
guu 把一行中的字符變小寫
gv 返回上一次可視塊的選中狀態
可視模式下按I進入插入模式,插入的字符會插入到選中的區塊范圍
命令行模式匹配的符號:
1 文件第一行
$ 最後一行
0 虛擬行 第一行上方
. 光標所在行
'm 包含位置標記m的行
'<,'> 高亮選區的起止行
% 表示1,$的簡寫即所有行
:copy :t 復制行
用法:
:[range]copy {address}
:6t. 表示把第6行復制到當前行的下一行
:t6 表示把當前行復制到第6行下方
:t. 等同於yyp
:t$ 把當前行復制到文件末尾
:'<,'>t0 把高亮區段復制到文件開頭
:move :m 移動行的用法類似copy
在指定范圍上執行普通模式命令:
:normal i//
tab自動補全Ex命令,Ctrl+d列出補全命令的列表
習慣用bash shell的工作方式一般設置為
:set wildmode=longest,list
默認Ex命令會記錄20條歷史記錄,
增加歷史記錄條數可把以下配置寫入vimrc文件
set history=200
普通模式下打開查找和Ex命令歷史命令的命令行窗口:
q/
q:
運行shell命令:
:!ls -lh %
%在這裡代表當前文件名
:read ![cmd] 把shell命令執行結果插入到光標下方
:[range]write ![cmd] 把vim中的范圍字段作為標准輸入到shell命令
:[range]!{filter} 使用外部shell命令過濾指定的vim范圍字段
vim 默認按 tab 鍵是向前進8個空格,即縮進的字符為8個,
可以在命令行模式用下面的設置縮進為4個空格:
set shiftwidth=4 softtabstop=4 expandtab
在普通模式下,縮進一行或是一段可以用>> <<
分別表示向右和向左縮進
一次打開多個文件的情況下
:ls 表示列出緩沖區的文件列表
:bp :bn 可上下切換打開的文件
:ls
4 %a "ifcfg-eth0" 第 3 行
5 # "install.log" 第 2 行
%在這裡表示當前窗口打開的文件,#表示輪換文件,按ctrl^ 可在當前和輪換文件間切換
參數列表:
:args
默認是打印當前參數列表的內容,
:args [file1] [file2]
設置參數列表的內容
:args **/*.* 表示把子目錄下的所有文件加入緩沖區
:args `cat filelist.txt` 把shell命令執行結果中的文件作為參數加入
:qall! 退出不保存所有緩沖區的修改
:wall 保存所有緩沖區修改
水平/垂直切分窗口:Ctrl+w s/v
切分後另一個窗口打開新文件
:sp file
:vp file
切換窗口命令:
Ctrl+w w 循環切換
Ctrl+w h/j/k/l 按方向切換
:close 關閉活動窗口
:only 只保留活動窗口
Ctrl+w = 所有窗口等寬等高
Ctrl+w _ 最大化活動窗口高度
Ctrl+w | 最大化活動窗口寬度
以下是設置為N行
N Ctrl+w _
N Ctrl+w |
打開文件:
:edit
:edit %<tab>打開當前文件所在的路徑,包含文件名
:edit %:h<tab>打開路徑,不包含文件名
如果navigation在app子目錄下,可以用設置path後通過find查到並打開,
:set path+=app/**
:find navigation.js
可視模式下:
a) 一對圓括號
i) 圓括號內部
at 一對XML標簽
it XML標簽內部
iw 當前單詞
aw 當前單詞加一個空格
iW
aW
is
as
ip
ap
daw
ciw
位置標記:
mm
`m
`` 上次跳轉動作之前的位置
`. 上次修改的地方
`^ 上次插入的地方
`[ 上次修改或復制的起始位置
`] 上次修改或復制的結束位置
`< 上次高亮選區的起始位置
`> 上次高亮選區的結束位置
% 在匹配括號間跳轉