Vim常用命令彙總

分屏顯示

: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)換成@


發佈了90 篇原創文章 · 獲贊 26 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章