VIM命令总结笔记 - 移动、搜索、插入光标的位置、分割窗口、恢复、文件比较等

分类:软件问题| 发布:佚名| 查看: | 发表时间:2014/12/24
/**************打开新建文件*************/

:vi 打开文件或新建文件 注:按tab键能补全
:saveas  另存为。。
 

/****移动****/

h     左,或 Backspace 或方向鍵。
j     下,或 Enter 或 +(要 Shift 鍵),或方向鍵。
k     上,或 方向鍵或 -(不必 Shift 鍵)。
l     右,或 Space 或方向鍵。
Ctrl+f     即 PageDown 翻頁(Forward,向前、下翻頁)。
Crtl+b     即 PageUp 翻頁(Backward,向後、上翻頁)。

w     以单词宽度向右移动,不仅能加快移动,最主要的,当到达一行的末尾时,它能继续换行
b     w的反方向
0     是數目字 0 而不是英文字母 o。或是 Home 鍵,移至行首,(含空白字元)。
^     移至行首第一個非空白字元,注意,要 Shift 鍵。
$     移至行尾,或 End 鍵。要 Shift 鍵。
G     移至檔尾(全文最後一行的第一個非空白字元處)
nG    不解释
gg    移至檔首(全文第一行之第一個非空白字元處)。
H     移至螢幕頂第一個非空白字元.
 

/**************搜索***************/

f*    在一行内移至所搜索的字符。f代表find,fa则移动到字符a。用;能重复寻找,用,能反向重复寻找。
F*    f*的反向
%     匹配()  []  {} <>等的移动方式
 
/      在 c-mode 的情形下,按 / 就會在左下方出現一個 /,然後鍵入您要尋找的字串,按個 Enter 就會開始找。? 和 / 相同,只是 / 是向前(下)找, ? 則是向後(上)找。
备注1:如果想忽略大小写查找,可先' :set ignorecase '再搜索,重设为区分大小写则为' :set noignorecase '
备注2:如果搜索/the,则there这种也会被搜索到,如何避免这种情况,正确的输入为' /\<the\> '
备注3: 如果想要搜索结果高亮,设置' :set hlsearch ',一般配置文件都会配置好,但想关闭则用' :set nohlsearch ',只想关闭当前搜索结果高亮则为' :nohlsearch '
备注4: ' :set incsearch '能使在输入搜索字符串时就即时搜索
n     繼續尋找。
N     繼續尋找(反向)。

:%s/dd/dd/g   替换所有

/*****************插入光标的位置***************/
i     在游標所在字元前開始輸入文字(insert)。
a     在游標所在字元後開始輸入文字(append)。
o     在游標所在行下開一新行來輸入文字(open)。
I     在行首開始輸入文字。此之行首指第一個非空白字元處,要從真正的第一個字元處開始輸人文字,可使用 0i 或 gI(Vim 才有)。
A     在行尾開始輸入文字。這個好用,您不必管游標在此行的什麼地方,只要按 A 就會在行尾等著您輸入文字。
O     在游標所在行上開一新行來輸入文字。
 

/******************删除*******************/
x     刪除游標所在處之字元,在中文指一個中文字。在 Vim 及 elvis 亦可用 Del 鍵。
X     刪除游標前之字元。不可使用 Backspace 鍵,除非是在插入模式。Vim 可以正確使用以上兩個指令於中文,會刪去一個中文字。elvis 則不行,一個中文字要刪兩次,即使用 xx。
dd     刪除一整行(delete line)
cc     删除一整行,但保持缩进
dw     刪除一個字(delete word)。不能適用於中文。
dG     刪至檔尾。
d0     刪至行首,或 d^(不含游標所在處字元)。請回憶一下 $ 及 ^ 所代表的意義,您就可以理解 d$ 及 d^ 的動作,這就是 vi(m) 可愛之處。

r     取代游標所在處之字元。
R     進入取代模式(replace mode),取代字元至按 Esc 為止。
cc     取代整行內容。或大寫 S 亦可。
s     替換一個字元為您所輸入的字串。和 R 不同,R 是覆蓋式的取代,s 則是插入式的取代,您可親自實驗看看。ㄟ!是小寫的 s。
 

/*******************恢复********************/

u     這個太重要了,就是 undo,傳統的 vi 僅支援一次 undo,Vim 及 elvis 就不只了,Vim 幾乎是沒有限制的。
U     在游標沒離開本行之前,回復所有編輯動作。
Crtl+r     這個也是很重要,就是 redo 鍵。
 

/*********************复制粘贴*************************/
yy     複製游標所在行整行。或大寫一個 Y。
2yy     複製兩行,y2y 也可以。ㄟ,請舉一反三好不好!:-)
y^     複製至行首,或 y0。不含游標所在處字元。
y$     複製至行尾。含游標所在處字元。
yG     複製至檔尾。
y1G     複製至檔首。
p     小寫 p 代表貼至游標後(下)。
P     大寫 P 代表貼至游標前(上)。整行的複製,按 p 或 P 時是插入式的貼在下(上)一行。非整行的複製則是貼在游標所在處之後(前)。
Shift+Insert 粘贴外部复制的内容
 

/*************标记***************/
mx     x 代表 26 個小寫英文字母,這樣游標所在處就會被 mark。
`x     回到書籤原設定位置。` 是 backward quote,就是 Tab 鍵上面那一個。
'x     回到書籤設定行行首。' 是 forward quote,是 Enter 鍵隔壁那一個。
 

/******************退出*******************/
:q     如本文有修改而沒存檔,會警告,且無法離開。(quit)
:q!     捨棄所有修改,強迫離開。
:wq     存檔後離開。縱使檔案未曾修改也是會再存一次檔。


/*******************选择*********************/

v     小寫 v,這是屬於字元標示(character visual),按下 v 後您就可以移動游標,游標走過的地方就會標示起來。再按一次 v 或按 Esc 鍵就會結束 v-mode。
V     大寫 V,這是行標示(line visual),按下 V 後會整行標示起來(包括行首前空白的部分),您移動上下鍵,會標示多行。再按一次 V 或 Esc 鍵就會結束 v-mode。
d     刪除標示區內容。
y     複製標示區內容。
c     替換標示區內容。
 

/*******************缩进**********************/


Shift+>     標示區內容向右移一個 Tab。
Shift+<     標示區內容向左移一個 Tab。
 

/*********************分割窗口相关*************************/
Ctrl+w n     即 :new。開一空的新視窗。
這在 Vim 會開在原視窗上半方,也就是視窗一分為二。在 elvis GUI 界面的話,則是實實在在的另開一個新視窗(可不是另啟動一個 elvis 喔!),當然 elvis 的 console 上也是和 Vim 一樣,視窗一分為二。而且在 elvis 下,要放開 Ctrl+w 後才按 n,否則 elvis 會不鳥您的。凡是視窗操作的按鍵都是由 Ctrl+w 來起頭的,w 就是 window 的意思。
Ctrl+w s     即 :sp(lit),會開一新視窗,且原檔分屬兩個視窗。
Ctrl+w f     開一新視窗,並編輯游標所在處之 word 為檔名的檔案。
Ctrl+w q     即 :q 結束分割出來的視窗。
Ctrl+w o     即 :only! 使游標所在之視窗,成為目前唯一顯示的視窗其它視窗會隱藏起來。
Ctrl+w j     移至下視窗。
Ctrl+w k     移至上視窗。還記得 hjkl 的按鍵移動方式嗎?
ctrl+w K     大写K是移动窗口,而上面的小写只是光标在窗口中的切换
:sp 檔名     開另一新視窗來編輯檔案。
:split 上下切割窗口,也可以切割并打开另一文件
:vsplit 左右切割窗口
:qall        退出所有窗口
:wall        保存所有修改过的窗口
 

/***************tab窗口******************/
:tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab
:tabc       关闭当前的tab,如果带!,强制关闭当前tab
:tabo       关闭所有其他的tab
:tabs       查看所有打开的tab
:tabp      前一个
:tabn      后一个
 

/****************文件比较******************/

:vertical diffsplit main.c   打开分隔窗口比较文件
]c                           向后找不同点
[c                           向前找不同点
:diffupdate                  更新修改后的对比情况
 

/****************其他****************/

J     將下一行整行接至本行(Joint)。
365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/software-wiki/1847.html