Vim編輯器在內存緩衝區處理數據。只要鍵入vim命令和你要編輯的文件的名字,便可啓動Vim編輯器。 如在啓動Vim時未指定文件名,或者這個文件不存在,Vim會新開一段緩衝區域來編輯;若是命令指定了一個已有的文件的命令,Vim會將文件的整個內容都讀到一塊緩衝區域來準備編輯。vim
Vim編輯器有兩種操做模式:編輯器
當打開要編輯的文件時,Vim編輯器會進入普通模式。在普通模式下,Vim編輯器會將按鍵解釋成命令; 在編輯模式中,按下i鍵,進入插入模式。插入模式下,每一個按鍵都將輸入到光標位置的緩衝區。按Esc鍵便可退出插入模式;命令行
在普通模式中,能夠用方向鍵來在文本區域移動光標,若是是在一個沒有定義方向鍵的終端上,還可使用以下按鍵移動:code
按鍵 | 光標移動方式(普通模式下) |
---|---|
h | 左移一個字符 |
j | 下移一行 |
k | 上移一行 |
l | 右移一個字符 |
在大的文本文件中一行一行的移動會特別麻煩。幸而Vim提供了一些命令來幫助提升速度:內存
按鍵 | 光標移動方式(普通模式下) |
---|---|
PageDown(或Ctrl+F) | 下翻一屏數據 |
PageUp(或Ctrl+B) | 上翻一屏數據 |
G | 移動到緩衝區的最後一行 |
num G | 移動到緩衝區的第num行 |
gg | 移動緩衝區的第1行 |
Vim編輯器在普通模式下有個特別的功能叫命令模式。命令模式提供了一個可供輸入額外命令來控制Vim中行爲的交互式命令行。要進入命令模式,在普通模式下按下冒號鍵。光標會移動到消息行,冒號出現,等號輸入命令。 在命令模式下有幾個命令來將緩衝區的數據保存到文件中並退出Vim:字符串
命令 | 描述(命令模式下命令) |
---|---|
q | 若是未修改緩衝區的數據,退出 |
q! | 取消全部對緩衝區數據的的修改並退出 |
w filename | 將文件保存到另外一個文件filename下 |
wq | 將緩衝區數據保存到文件中並退出 |
在普通模式下,Vim編輯器提供了一些命令來編輯緩衝區中的數據。經常使用號命令有:table
命令 | 描述(普通模式下命令) |
---|---|
x | 刪除當前光標所在位置的字符 |
dd | 刪除當前光標所在行 |
dw | 刪除當前光標所在位置的單詞 |
d$ | 刪除當前光標所在位置至行尾的內容 |
J | 刪除當前光標所在行行尾的換行符 |
u | 撤銷前一個編輯命令 |
a | 在當前光標後追加數據 |
A | 在當前光標所在行行尾追加數據 |
r char | 用char替換當前光標所在位置的單個字符 |
R text | 用text覆蓋當前光標所在位置的數據,直到按下ESC鍵 |
有些編輯命令容許使用數據修飾來指定重複該命令多少次。好比,命令2x會刪除從光標當前位置開始的兩個字符,命令5dd會刪除從光標當前所在行開始的向下5行。 |
現代編輯器的標準功能之一就是剪切或複製數據,Vim中剪切複製相對容易些。 上面已經有了刪除數據的操做,Vim刪除數據時,實際上它會將數據保存在單獨的一個寄存器中。能夠同p命令來取回數據。 簡而言之,用dd刪除一行文本,而後把光標移動到某個要放置該行文本的位置,以後用p命令。p命令會將文本插入到當前光標所在行以後。p命令能夠和任何刪除文本的命令一塊兒搭配使用。 Vim中複製命令是y(表明yank)。y命令和d命令有相同的第二字符(如yw表示複製單詞,y$表示複製到行尾)。在複製文本後,輸入p命令表示粘貼。 可是這樣複製有個比較煩惱的問題,就是你沒有看見到底複製了什麼,除非粘貼出來才知道。Vim還有個功能解決了這個問題,可視模式會在移動光標時高亮文本,所以能夠用但是模式來複制文本,方法以下: 移動光標到要開始複製的位置,按下v鍵,光標所在位置的文本會被高亮顯示,移動光標覆蓋想要複製的文本。覆蓋後按y鍵來激活複製命令。如今寄存器中已經有了要複製的文本,使用p命令到合適的位置粘貼便可。class
要查找某個字符串,在命令模式下,鍵入斜槓(/)加查找字符串(好比查找字符串class:/class),按下Enter鍵,光標會跑到消息行。在輸入要查找的文本後,按下Enter鍵,Vim編輯器會有3中迴應:基礎
替換命令的格式是:file
:s/old/new
Vim編輯會跳到old第一次出現的地方並用new來替換,能夠對替換命令做一些修改來替換多處要替換的文本:
命令 | 描述 |
---|---|
:s/old/new/g | 一行命令替換全部old |
:n.ms/old/new/g | 替換行號n和m之間的全部old |
:%s/old/new/g: | 替換整個文件中的old |
:%s/old/new/gc: | 替換整個文件中的old,但在每次出現時提示 |
Vim包含了很多高級功能,因爲每一個Linux發行版都會包含它,因此應該至少了解一下Vim編輯器的一些基本用法。