分屏顯示
:split filename
->打開文件filename,分屏顯示
Ctrl+w
->切換窗口
:q!
->強制退出沒有保存
在文件中移動
hjkl
->左下上右
b
->指定行的單詞開頭
e
->指定行的單詞末尾
G
->文件末尾
gg
->文件開頭
L
->當前頁末尾
0
->當前行頭 or ^
->當前行頭
$
->當前行尾
:n
->跳到第n行
n|
->跳到指定行的第n列
光標選擇
V
->進入行可視化模式(可以配合hjkl
,甚至跨行88j
)
o
->光標位置切換
剪切、複製和粘貼
yy
->複製當前行
y$
->複製當前位置到行末
x
->刪除當前光標下的字符
dw
->刪除光標之後的單詞剩餘部分
d$
->刪除光標之後的該行剩餘部分
dd
->刪除當前行
D
->刪除當前位置到行末
大小寫
Vu
->指定行轉小寫
VU
->指定行轉大寫
g~~
->指定行切換大小寫
ggguG
->整個文本轉小寫
gggUG
->整個文本轉大寫
刪除空白行
:g/^\s*$/d
:g 代表在全文檔範圍內
^代表行的開始
\s*代表空白字符
&代表行的結束
d代表刪除
去除重複行
先sort排序,再去重
:sort
->/直接排序
:g/^\(.*\)$\n\1$/d
->去除重複行
查找指令:
/關鍵詞
往下查找
?關鍵詞
往上查找
n
下一個關鍵詞
:set hls
打開高亮
:set nohls
關閉高亮
簡單替換表達式
helloworld
hello
kangkanghello
:%s/hello/1/g
匹配所有帶hello替換
:%s/\<hello/1/g
匹配XXXhello替換
:%s/hello\>/1/g
匹配helloXXX替換
:%s/hello/1/gc
每次替換都給提示確認(常用)
“%”範圍前綴表示在所有行中執行替換。最後的”g”標記表示替換行中的所有匹配點。如果僅僅對當前行進行操作,那麼只要去掉”%”即可.
刪除每行後面多餘的空格
:%s/\s\+$//
“%”的作用域是整個文件,”substitute” 命令的匹配模式是
“\s\+$”。($)表示行末,(+)表示前面一項可以被匹配一次或多次,(\s)空格。替換命令的 “to”部分是空的:”//”
匹配重複性模式
“+” 表示前面一項可以被匹配一次或多次
“*” 表示前面一項可以被匹配零次或多次
/a*
->可匹配”a”、”aa”、”aaa”…或者””
/\(ab\)*
->可匹配”ab”、”abab”、”ababab”…或者””
/ab\+
->可避免空字符串,可匹配”ab”、”abb”、”abbb”
/abc\=
->匹配一個可選項”\=”,可匹配”ab”、”abc”
指定重複次數
匹配某一項的次數重複,使用”\{n,m}”
/ab\{3,5}
->可匹配 “abbb”、”abbbb”、”abbbbb”
模式 | 匹配次數 |
---|---|
\{,4} | 0,1,2,3 或 4 |
\{3,} | 3,4,5,無窮大 |
\{0,1} | 0 或 1,同 \= |
\{0,} | 0 或 更多,同 * |
\{1,} | 1 或 更多,同 \+ |
\{3} | 3 |
多選一匹配
或的運算符是”\|”
/when\(if\|while\|for\)
->可匹配”whenif”,”whenwhile”,”whenfor”
讀寫文件
:1,10 w outfile
->把1到10行的內容寫入outfile文件
:1,10 w >> outfile
->把1到10行的內容追加到outfile文件
:r infile
->把infle文件的內容插入當前行以下
參考:
http://www.oschina.net/news/43167/130-essential-vim-commands
http://www.runoob.com/regexp/regexp-syntax.html
http://blog.chinaunix.net/uid-20732478-id-763411.html
作者: @nanphonfy
Email: nanphonfy (Nfzone) gmail.com 請將(Nfzone)換成@