有關(guān)vim編輯器使用心得的十個(gè)分享
原創(chuàng)【51CTO獨(dú)家特稿】Vim是一個(gè)類似于Vi的文本編輯器,不過在Vi的基礎(chǔ)上增加了很多新的特性,Vim普遍被推崇為類Vi編輯器中最好的一個(gè)。Vim目前已經(jīng)有類Unix版和Windows版,盡管vim較vi已經(jīng)改良了不少,但是初次使用還是會(huì)一頭霧水,不知如何操作,所以學(xué)習(xí)vim要首先過2關(guān)。在本文中會(huì)有資深的系統(tǒng)管理員與大家分享他對(duì)vim的使用心得,并且在本文最后為大家附上vim的常用命令表。
第一關(guān)是理解vim的設(shè)計(jì)思路,vim設(shè)計(jì)之初就是整個(gè)文本編輯都用鍵盤而非鼠標(biāo)來完成,鍵盤上幾乎每個(gè)鍵都有固定的用法,且vim的制作者希望用戶在普通模式(也就是命令模式,只可輸入命令)完成大部分的編輯工作,將此模式設(shè)計(jì)為默認(rèn)模式,初學(xué)者打開vim,如果直接輸入單詞,結(jié)果就會(huì)滴滴亂響,這是因?yàn)関im把用戶輸入的單詞理解為命令了。
第二關(guān)是命令關(guān),vim有過百條命令對(duì)應(yīng)編輯的需要,如果能熟練使用vim這些命令,編輯速度確實(shí)比鼠標(biāo)要快很多,但是想全都記住它們也是一件難事,我想記住它們最好的方法就是多多來練習(xí),確實(shí)把vim用在日常的文本編輯中去,且遇到難題不要放棄,而是查找解決的方法,每解決一個(gè)難題,你的vim技能就上升一級(jí)。
資深管理員的使用心得
一、FreeBSD下的vim與Linux是不一樣的,建議優(yōu)化各用戶下的.vimrc文件,我現(xiàn)在的習(xí)慣做法就是隨身帶著二個(gè)優(yōu)化文件.cshrc、.vimrc,哪臺(tái)機(jī)器上有我的帳戶,我就直接導(dǎo)入到哪臺(tái)機(jī)器的/home/andrewy的帳戶下,這樣用起來就得心應(yīng)手了;
二、在下面附表中的用法僅僅只滿足System Administrator的基礎(chǔ)工作,如果是Devoleper人員,強(qiáng)烈建議繼續(xù)深入研究其高深語法;特別是作為PHP和JAVA的Devoleper,用vim編輯程序代碼更不是問題;
三、如果跟圖形界面打交道比較多的哥們,可以下載一個(gè)gvim用來學(xué)習(xí)及工作;
四、在加深vim學(xué)習(xí)的同時(shí),也建議加強(qiáng)sed的理解和學(xué)習(xí),盡量用vim+sed來完成日常中的一切編輯工作;
五、盡量用h、j、k、l來完成左下上右的工作,這個(gè)遠(yuǎn)遠(yuǎn)比你用鍵盤的方向鍵更有效率,但這是大家很容易忽視的一個(gè)問題,切膚之痛就是有的unix機(jī)器不支持方向鍵;
六、vim不僅僅是一個(gè)編輯器,你也可以用它來查看服務(wù)器的配置文件(.conf)、php(.php)文件及shell(.sh)文件等,如果玩得很熟練的話,也可以用其來查看日志文件,注意最后不保存退出即可;
七、這里只介紹兩個(gè)有用的插件(事實(shí)上我也基本只用這兩個(gè))taglist和ctags。用過eclipse的人可能會(huì)對(duì)按住ctrl點(diǎn)擊程序中的函數(shù)、變量等,自動(dòng)跳轉(zhuǎn)到其定義處的功能贊嘆不已,而這個(gè)功能Vim也可以實(shí)現(xiàn),用的就是ctags;
八、輔助Excel等系統(tǒng)處理數(shù)據(jù),主要利用正則替換、列模式功能。如把2006-6-30替換為2006.6.30或2006.06.30;
九、我現(xiàn)在用的較多的gvim主要是用來編輯shell文件和處理文本文檔,感覺效果非常方便;C文件也是可以用vim來編輯的;
十、我同事在windows xp下用gvim來看txt小說,看起來效果也不錯(cuò);我昨天嘗試在我的工作機(jī)windows 2003下用gvim看《明朝那些事兒》的txt,確實(shí)可以。
【51CTO獨(dú)家特稿 轉(zhuǎn)載請(qǐng)標(biāo)明作者與出處】
下面附上Vim常用命令表,供大家參考。
#p#
Vim常用命令表:
命令模式 | 光標(biāo)移動(dòng) |
h或 向左方向鍵 | 光標(biāo)向左移動(dòng)一個(gè)字符 |
j或 向下方向鍵 | 光標(biāo)向下移動(dòng)一個(gè)字符 |
k或 向上方向鍵 | 光標(biāo)向上移動(dòng)一個(gè)字符 |
l或 向右方向鍵 | 光標(biāo)向右移動(dòng)一個(gè)字符 |
Ctrl+f | 屏幕向前翻一頁(yè)(常用) |
Ctrl+b | 屏幕向后翻一頁(yè)(常用) |
Ctrl+d | 屏幕向前翻半頁(yè) |
Ctrl+u | 屏幕向前翻半頁(yè) |
+ | 光標(biāo)移動(dòng)到非空格符的下一列 |
- | 光標(biāo)移動(dòng)到非空格符的上一列 |
n<space> | 按下數(shù)字后再按空格鍵,光標(biāo)會(huì)向右移動(dòng)這一行的n個(gè)字符。例如20<space>,則光標(biāo)會(huì)向右移動(dòng)20個(gè)字符 |
0(HOME) | (是數(shù)字0)動(dòng)到這一行的第一個(gè)字符處(常用) |
$(END) | 移動(dòng)到這一行的最后一個(gè)字符處(常用) |
H | 光標(biāo)移動(dòng)到這個(gè)屏幕最上方的那一行 |
M | 光標(biāo)移動(dòng)到這個(gè)屏幕中央的那一行 |
L | 光標(biāo)移動(dòng)到這個(gè)屏幕最下方的那一行 |
G | 光標(biāo)移動(dòng)到文件的最后一行 |
nG | 移動(dòng)到這個(gè)文件的第n行。例如20G,則會(huì)移動(dòng)到這個(gè)文件的第20行(可配合:set nu) |
n<Enter> | 光標(biāo)向下移動(dòng)n行(常用) |
命令模式 | 查找與替換 |
/word | 在光標(biāo)之后查找一個(gè)名為word的字符串(常用) |
?word | 在光標(biāo)之前查找一個(gè)名為word的字符串 |
:n1,n2s/word1/word2/g
|
在第n1與n2行之間查找word1這個(gè)字符串,并將該字符串替換為word2(常用) |
:1,$s/ word1/word2/g | 在第一行與最后一行之間查找word1這個(gè)字符串,并將該字符串替換為word2(常用) |
:1,$s/ word1/word2/gc | 在第一行與最后一行之間查找word1這個(gè)字符串,并將該字符串替換為word2,且在替換前顯示提示符讓用戶確認(rèn)(conform)(常用) |
一般模式 | 刪除、復(fù)制與粘貼 |
x,X | X為向后刪除一個(gè)字符,X為向前刪除一個(gè)字符(常用) |
Nx | 向后刪除n個(gè)字符 |
Dd | 刪除光標(biāo)所在的那一整行(常用) |
Ndd | 刪除光標(biāo)所在列的向下n列,例如,20dd則事刪除20列(常用) |
d1G | 刪除光標(biāo)所在行到第一行的所有數(shù)據(jù) |
dG | 刪除光標(biāo)所在列到最后一行的所有數(shù)據(jù) |
Yy | 復(fù)制光標(biāo)所在行(常用) |
Nyy | 復(fù)制光標(biāo)所在列的向下n列,例如,20yy則是復(fù)制20列(常用) |
y1G | 復(fù)制光標(biāo)所在列到第一列的所有數(shù)據(jù) |
yG | 復(fù)制光標(biāo)所在列到最后一列的所有數(shù)據(jù) |
p,P | p為復(fù)制的數(shù)據(jù)粘貼在光標(biāo)下一列,P則為粘貼在光標(biāo)上一列(常用) |
J | 將光標(biāo)所在列與下一列的數(shù)據(jù)結(jié)合成一列 |
U | 恢復(fù)前一個(gè)動(dòng)作(undo) |
編輯模式 | |
i,I | 插入:在當(dāng)前光標(biāo)所在處插入輸入的文字,已存在 |
a,A | 添加:由當(dāng)前光標(biāo)所在處的下一個(gè)字符開始輸入,已存在的字符會(huì)向后退(常用) |
o,O | 插入新的一行:從光標(biāo)所在行的下一行行首開始輸入字符(常用) |
r,R | 替換:r會(huì)替換光標(biāo)所指的那一個(gè)字符;R會(huì)一直替換光標(biāo)所指的文字,直到按下Esc為止(常用) |
Esc | 退出編輯模式,回到一般模式(常用) |
命令行模式 | |
:w | 將編輯的數(shù)據(jù)寫入硬盤文件中(常用) |
:w! | 若文件屬性為只讀,強(qiáng)制寫入該文件 |
:q | 退出vi(常用),快捷方式為SHIFT+ZZ |
:q! | 若曾修改過文件,又不想保存,使用!為強(qiáng)制退出不保存文件,快捷方式為SHIFT+ZQ |
:wq | 保存后退出,若為:wq!,則為強(qiáng)制保存后退出(常用) |
:w[filename] | 將編輯數(shù)據(jù)保存為另一個(gè)文件(類似另存新文檔) |
:r[filename] | 在編輯的數(shù)據(jù)中,讀入另一個(gè)文件的數(shù)據(jù)。即將filename這個(gè)文件內(nèi)容加到光標(biāo)所在行的后面 |
:set nu | 顯示行號(hào),設(shè)定之后,會(huì)在每一行的前面顯示該行的行號(hào) |
:set nonu | 與ser nu相反,為取消行號(hào) |
:set nohlsearch | 可取消高亮,可編輯/etc/vimrc來編輯取消所有高亮 |
n1,n2 w[filename] | 將n1到n2的內(nèi)容保存為filename這個(gè)文件 |
【編輯推薦】