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