vim常用實用用法總結
vim乃Linux下相當牛掰一文本處理神器也,是vi編輯器的升級版,全稱叫Vi IMproved. 而vi則是Visual Interface的縮寫,他們處理都是ASCII碼字符數據,熟練使用vim絕對是你成為Linux大牛不可或缺的本領,所謂千里之行,始于足下。
我這里寫的比較啰嗦,但都是非常常用的用法,如果覺得看著太費勁不夠直觀,可以看另一篇博文 VIM命令大全, 這里有更多的常用的實用的用法;當然如果你不想上網查,vim自帶的幫助文檔也有的查,直接輸入vim然后回車,會進入vim編輯器,此時輸入:help就可以進入幫助文檔,輸入 :help command 還可以查處子命令的用法, 例如我想查看 d這個命令的作用和用法,直接:help d就可以啦,授人以魚不如以漁嘛。。
下面就本人學習過程中一些非常常用到的比較實用的用法做一下總結,
首先vim有三種模式: 編輯模式,輸入模式,末行模式
編輯模式: 也叫命令模式,用vim打開文件后默認進入的就是此模式,在此模式下,可以組合使用vim的一些命令,完成對文件的快捷操作,
字符移動操作:
h, j, k, l 四個鍵分別對應 左,下, 上, 右 操作, 這個左右比較好理解,h在左邊,l在右邊,j, k在中間表上下,但是我們正常慣用右手的人就有點不好理解,反正我是這樣感覺的,正常按我的思維左邊的表示上,右邊就下了,比較順手,所以我推測開發vi的人估計是個左撇賴子,很多有成就的牛逼的人都是左撇賴子,愛因斯坦。。。所以沒事開發一下右腦也是有好處滴,, 關于這個馬哥也有個助記的方法,就是j代表japan小日本鬼子,k代表korea棒子,在地圖上棒子在鬼子的上面,所以k是向上的箭頭,j是向下的箭頭,當然了不管是什么方法只要能幫助記憶就中,黑貓白貓嘛
單詞移動操作:
w word 向后移動一個單詞,光標定位在詞首
e end of a word 向后移動一個單詞,光標定位在詞尾
b backword 意思是向前移動一個單詞
句子跳轉:
) 跳到下一句
( 跳到上一句
段落間跳轉
} 下一段
{ 上一段
句子間跳轉和段落跳轉不太常用,配置文件等的句子段落劃分可能跟我們想的會有不同啦。
行間跳轉
1G / gg 跳轉至第一行
G 跳轉至最后一行
#G #為正整數,跳轉至第#行
行內跳轉
^ (shift + 6) 跳至行首(行首第一個非空字符),這個托字符在Linux中也是個神一樣的存在,你會經常和打打交道
0 對,就是數字0,光標跳至絕對行首(真正的行首)
$ 這個美元可以跳到行尾,和^一樣也是一個神一樣的存在,各個地方你都會看到她的倩影
跳轉進階用法:
上面的這些個移動都是一個一個的移動的,如果要移動的位數比較多,恰好又不在行首或行尾,一個一個點,豈不是很麻煩?莫怕,作者早為你想到了,比如我想一下向上移動6個字符,按下6h,效果刷刷的,想一下向后跳8個詞?按下8w,你懂的,那好吧不哆嗦,以此類推…… 3e, 4b, 5j, 7k, 9) …… 自己好好玩去吧,記住他并在使用的時候經常的想起他并經常的使用他,一般人我可不告訴他。當你基本脫離上下左右箭頭的時候,你基本也就離大牛不遠啦。
輸入模式:
要從命令模式進入輸入模式,方法有很多,根據需要來使用,注意看我后面標出的字母縮寫
- i insert 在當前光標之前插入
- a append 在當前光標之后插入
- I 大寫在行首插入
- A 大寫在行尾插入
- o 在當前光標所在行的下面一行插入
- I 在當前光標所在行的上面一行插入
在任何模式下按下ESC鍵可以退出當前模式,回到命令模式,已經是命令模式的則還在命令模式。
編輯是可以了,復制呢,答案是肯定的,首先確定回到命令模式,
按下yy y是yanK的縮寫,整行內容就被復制到剪切板中了,然后把光標移動到你想的位置按下p剛把剛才復制的那行粘貼到你光標所在行的下面一行,P大寫則粘貼至上面一行,p是paste的縮寫是也; 剪切的話dd是也,當前行的內容刪除而后會放在剪切板中,粘貼方法相同。
再有一個比較高端的用法可以在命令模式下按下v(按字符選取)或者V(按行選取), 此時會進入可視化模式,移動你的光標哈哈,就像在windows下拖動你的鼠標一樣,然后復制剪切隨便你啦。。
還有個值得提一下的用法,就是如果想翻屏的話,可以用
- ctrl + f (forward) 向后翻一屏,
- ctrl + b (backword) 向前翻一屏,
- ctrl + d (down) 向后翻半屏
- ctrl + u (down) 向前翻半屏
實用命令 d delete 刪除命令,可以和其他命令組合刪除詞,字符,行,等
例如dh向左刪除當前字符,dl向右刪除當前字符,dj刪除當前行和下面一行,dk刪除當前行下上面一行,dw刪除向后一個單詞,de, db …
當然你還可以用 d1h, d2l, d#w, d#b(#用你需要的正整數代替) … ,如果需要重復之前的操作,只需按下” . “即可,需要重復多次就按下多次 “. “
和d稍微不同的還有一個命令c,這個命令是哪個單詞縮寫,我也不知道,用法和d用法類似,不同的是刪除之后直接會進入insert編輯模式, 相當于d執行后又按下i
常用命令大概這么多了,還有個比較實用的用法:窗口的拆分: 當你編輯一個文檔而又需要參照此文檔其他章節的內容又不想再打開一個文檔的時候就派上用場了, 這個功能類似于word里的窗口拆分,在word2007中,點 “視圖” 菜單 –> “拆分“即可。在編輯文檔的時候還是非常有用的。
在vim下,按下ctrl + w 然后按s, (split 縮寫)則可以實現水平拆分,按下 v (vertical 縮寫)則可實現垂直拆分,具體效果說是說不清楚的,自己體驗一下吧。 需要兩個窗口切換則先按下ctrl + w 然后按相應的上下左右→即可。需要退出的話:q 退出當前,:qall退出所有 :!qall 強制退出所有(這是末行模式命令下面會提到)
還有一個打開文檔的技巧,vim + /path/to/file (相對或絕對路徑定位到你要打開的文件) 直接打開到最后一行, vim +# /path/to/file 打開在第#行,
又想起來一個命令的撤消: 保證你在命令模式下,按一下u則可以撤消一步操作,按多次撤消多步操作,vim默認可以保存50次,這個值可以通過編輯/etc/vimrc 中 set history=50那一行的值改變,如果手賤撤消多了也8怕,按ctrl + r (restore) 可以恢復你的撤消, 按大寫的U可以撤消所有操作。
末行模式:
末行模式下的功能更加強勁,在命令模式下按下冒號:可以進入末行模式,:w 保存編輯內容,write , :q 退出quit :wq 保存并退出 前面加!表示強制 :!q強制退出,:x = :wq ,
搜索功能: :/text (text為你要查找的字符串) 向后查找, :?text 向前查找, 查找到的內容會高亮顯示, 按n(next)會和你查找的方向相同找下一個,按大寫N則向相反方向查找下一個
窗口屬性定義:
- :set ai | autoindent 開啟自動縮進(寫腳本時就老開心啦,寫出來那叫一個漂亮)
- :set nu (number) 顯示行號
- : set nonu (no number) 取消顯示行號
- : set ic | ignorecase 忽略大小寫
- :set hlsearch (highlight search) 搜索高亮顯示
- :set sm| showmatch 不要想歪了,顯示匹配的括號
所有的設置前面加個no就可以取消顯示了,當然你的設置只對當前編輯的文檔生效,如果想永久生效可以寫入/etc/vimrc配置文件 或~/.vimrc文件,~代表家目錄
好了,下面上一盤壓軸大菜:查找和替換,這個東西以后編輯配置文件老有用啦,我來舉個例子,有圖有真相:
LOOK 1:
原文如下,現在我要把所有的zhishen 后面都加上一個must,
輸入如下命令
- :%s/\(shen\)/\1 must/g
解釋一下這行命令,: 進入末行模式,% 代表全局查找,s (search)查找命令,紅色標出的一對括號,\ 表示轉義,即使用括號原來的意思,因為括號在Linux下有其特有的功能的,后面的\1代表引用前面括號內的內容,g (global)表示全局,當然后面還可以加i (ignore case)忽略大小寫,如果有需要的話,/ 是每個字段之間的分隔符,為了方便區分,某些情況下你可以替換成# 或 @ 都可以。
當然像這種簡單的正則表達式,只有一個引用內容的括號可以省略不寫,引用也可以直接用一個簡單的&來解決,于是上面的命令也可以這樣寫:
:%s/shen/& must/g 效果是一樣的 或者 :%s#shen#& must#g
LOOK 2:
這里我以apache的配置文件httpd.conf為例,比如從102行到109行的配置我不想啟用了現在,我就可以在每一行前面加個#注釋掉即可,
:.,109s/^/#/g 這里我把光標移動到102行,前面的.代表當前行,整個表示從當前行到第109行所有開頭都用#替換,也可以這樣寫 :102,109s/^/#/g 或者 :.,+7s/^/#/g 再或者 :102,+7s/^/#/g 都是一樣的效果。
LOOK 3:
這個情景我想把102行到109行移動到93行的下面
:102,109d 回車,代表刪除102到109行,但是這里的刪除是先放到剪切板中的,所以下面的你懂啦,把光標移動94行,按下一個大寫的P,哈哈就全部粘貼過來啦。
就寫這么多了吧,這些都是可能經常能用到的功能。vim的功能非常之強大,首先把為些常用的基礎的學會吧,再稍微高級一點的常用功能可以看一下我的另一篇博文《VIM命令大全》,自己結合說明慢慢摸索,基本這些差不多夠平常工作用了。