目錄html
本系列先前的隨筆位於新浪博客編程
Vi和Vim都是文本編輯器,不一樣的是Vim是Vi的升級版本,它不只兼容Vi的全部指令,並且還有一些新的特性在裏面。vim
Vim/Vi是一個功能強大的全屏幕文本編輯器,是Linux/UNIX上最經常使用的文本編輯器,主要用於使用Linux Sever時進行相似於DOS下批處理的Shell腳本編程,以及進行配置文件的修改,它的做用是創建、編輯、顯示文本文件。app
Vim/Vi沒有菜單,只有命令編輯器
Vim/Vi的三種工做模式:學習
命令 | 做用 |
a(append) | 在光標後附加文本 |
A | 在本行行末附加文本,即光標移至行末並進入插入模式 |
i(insert) | 在光標前插入文本 |
I | 在本行行首插入文本,即光標移至行首並進入插入模式 |
o | 在光標下插入新行 |
O | 在光標上插入新行 |
命令 | 做用 |
h、方向左鍵 | 光標左移一個字符 |
j、方向下鍵 | 光標下移一行 |
k、方向上鍵 | 光標上移一行 |
l、方向右鍵 | 光標右移一個字符 |
$ | 光標移至行尾 |
0 | 光標移至行首 |
H(High) | 光標移至屏幕上端 |
M(Middle) | 光標移至屏幕中央 |
L(Low) | 光標移至屏幕下端 |
:set nu | 顯示行號 |
:set nonu | 取消顯示行號 |
gg | 光標到第一行 |
G | 光標到最後一行 |
nG、:n | 光標到第n行 |
命令 | 做用 |
x | 刪除光標所在處字符 |
nx | 刪除光標所在處後n個字符 |
dG | 刪除光標所在行起到文件末尾的內容 |
D | 刪除從光標所在處到行尾 |
:n1,n2d | 刪除指定範圍(n1~n2)的行 |
命令 | 做用 |
yy、Y | 複製當前光標所在行 |
nyy、nY | 複製當前光標所在行起n行 |
dd | 剪切當前光標所在行 |
ndd | 剪切當前光標所在行起n行 |
p(paste) | 粘貼在當前光標所在行下面 |
P | 粘貼在當前光標所在行上面 |
命令 | 做用 |
r(replace) | 替換光標所在處字符 |
R | 從光標所在處開始替換字符,按Esc結束 |
u(undo) | 撤銷上一步操做 |
命令 | 做用 |
/string | 從前向後搜索指定字符串stringspa 按n跳到下一個指定字符串出現的位置插件 按N跳到上一個指定字符串出現的位置設計 搜索時忽略大小寫:set iccode |
:%s/old/new/g | 全文替換指定字符串(用new替換old) |
:n1,n2s/old/new/g | 在必定範圍(n1~n2)內替換指定字符串 |
命令 | 做用 |
:w | 保存修改 |
:w new_filename | 另存爲指定文件 |
ZZ、:wq | 保存修改並退出 |
:q! | 不保存修改退出 |
:wq!(只有管理員root或 文件的全部者可使用) |
保存修改並退出 可忽略文件的只讀屬性 |
1.在當前文件末尾導入其餘文件的內容 :r 文件名
2.在Vim/Vi中執行命令 :! 命令
3.在當前文件末尾導入命令執行的結果(上面兩個命令結合) :r !命令
範例:經常使用於把當前時間導入到文件末尾用來標識最後一次修改時間 :r !date
4.定義快捷鍵 :map 快捷鍵 觸發命令 (取消定義的快捷鍵 :unmap 快捷鍵 )
範例:定義快捷鍵ctrl+p在行首插入#註釋本行 :map ^P I#<ESC> (^P並非直接打出來的,而是先按ctrl+v,再按ctrl+p,I爲在行首插入,#爲註釋符號,在Shell腳本和Linux系統配置文件中#表示註釋,<ESC>表示從插入模式返回到命令模式)
定義快捷鍵ctrl+b刪掉行首字符(多用於取消註釋) :map ^B 0x (0把光標移至行首,x刪除這個字符)
定義快捷鍵ctrl+e在當前光標前插入個人郵箱地址 :map ^E iupc_eniac12@163.com<ESC>
5.連續行註釋 :n1,n2s/^/#/g (實際上就是以前提到過的替換命令,^表示行首(是直接打出來的,不是ctrl+v),這裏的行首指的是這個位置不是光標移到行首指示的那個是字符,因此這麼命令起到的做用是添加而不是替換,要添加的符號是#)
在大多數程序設計語言中註釋符號是//,而不是#,這時連續行註釋要這麼寫 :n1,n2s/^/\/\//g (錯誤的寫法:n1,n2s/^////,Vim識別不出中間的//爲要添加的內容,因此要用轉義字符'\/'表示'/',new的地方是\/\/,使用了轉義字符表示//)
6.連續行取消註釋 :n1,n2s/^#//g (^#表示行首的#,把行首#替換成空,即刪除行首#)
7.實時替換 :ab mymail upc_eniac12@163.com (ab是替換命令,把a替換成b,此處a是mymail,b是upc_eniac12@163.com,該命令是實時替換即當咱們在文本中輸入mymail後再按下空格或ESC,Vim會自動把咱們剛纔輸入的mymail替換成upc_eniac12@163.com,因此這是一個懶人必備的命令,取消這個實時替換的命令是 :unab mymail )
上述對Vim的設置只在本次打開有效,若是要讓其再任意時刻打開都有效須要編輯Vim的配置文件(~/.vimrc,~表示用戶的宿主目錄,管理員root的宿主目錄缺省在/root下面,普通用戶的宿主目錄缺省在/home下面),配置文件.vimrc缺省是空的,例如在文件中寫入 set nu ,則之後每次打開Vim都會默認顯示行號
Vim/Vi博大精深,初學者使用會以爲十分複雜,操做效率低下,但當你徹底熟悉了它以後,你就會以爲它簡直就是個神器,使用它能夠極大的提升咱們碼代碼的效率。
這是一個你不須要使用鼠標,不需使用小鍵盤,只須要使用大鍵盤就能夠完成不少複雜功能文本編輯的編輯器,否則,Visual Studio也不就會有vim的插件了。
學習vim就像學彈鋼琴同樣,一旦學會,受益無窮。
另外這裏還有一篇關於Vim比較不錯的文章,想要深刻學習能夠看一看