1、咱們爲何要學習vim編輯器?
vim
Linux的命令行界面下面有很是多的文本編輯器。好比常常據說的就有Emacs、pico、nano、joe與vim等。vim能夠看作是vi的高級版。咱們爲何必定要學習vim呢?有如下幾個緣由:編輯器
(1)全部的Unix like系統都會內置vi文本編輯器,其餘的文本編輯器則不必定會存在。學習
(2)不少軟件的編輯接口都會主動調用vi。字體
(3)vim具備程序編輯的能力,能夠主動以字體顏色辨別語法的正確性,方便程序設計。ui
(4)程序簡單,編輯速度快。spa
2、下面先介紹一下vi的基本使用方法及其相關命令。.net
vim編輯器的三種模式:通常模式、編輯模式和命令行模式。命令行
在通常模式中能夠進行刪除、複製和粘貼的功能,可是沒法編輯文件內容。從通常模式切換到編輯模式能夠按下i、I、o、O、a、A、r、R鍵。按下Esc鍵能夠回到通常模式。在通常模式中輸入:、/、?三個中的任意一個能夠將光標移到最下面的一行。在這個模式中能夠提供查找數據的操做,而讀取、保存、大量替換字符、離開vii、顯示行號等操做則是在此模式中完成的。須要注意的是,編輯模式與命令行模式之間是不能互相切換的。設計
下面列出平時用的最多的vi命令:blog
移動光標的方法:
[Ctrl]+[f]:屏幕向下移動一頁,至關於[PageDown]按鍵。
[Ctrl]+[b]:屏幕向上移動一頁,至關於[PageUp]按鍵。
或功能鍵[Home]:移動到這一行的最前面字符處。
$或功能鍵[End]:移動到這一行的最後面字符處。
G:移動到這個文件的最後一行。
gg:移動到這個文件的第一行,至關於1G.
N[Enter]:N爲數字,光標向下移動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.且在替換前顯示提示字符給用戶確認是否須要替換。
刪除、複製和粘貼:
x,X:在一行字中,x爲向後刪除一個字符(至關於[Del]鍵),X爲向前刪除一個字符(至關於[Backspace])。
dd:刪除光標所在的一整行。
ndd:刪除光標所在的向下n行。
yy:複製光標所在的一行。
nyy:複製光標所在的向下n行。
p,P:p爲將已複製的內容在光標的下一行粘貼,P則爲粘貼在光標的上一行。
u:復原前一個操做。
[Ctrl]+r:重作上一個操做。
.:小數點,重複前一個操做。
通常模式切換到編輯模式:
i,I:進入插入模式,i爲從目前光標所在處插入。I爲在目前所在行的第一個非空格字符處開始插入。
a,A:進入插入模式。a爲從目前光標所在處的下一個字符處開始插入。A爲從所在行的最後一個字符處開始插入。
o,O:進入插入模式。o爲在下一行插入。O爲在上一行插入。
r,R:進入替換模式。r只替換光標所在那個字符一次。R會一直替換光標所在字符,直到按下Esc鍵。
通常模式切換到命令行:
:w:將編輯的數據寫入到硬盤中。
:q:離開vi.後面加!爲強制離開。
:wq:保存後離開。:wq!爲強制保存後離開。
目前主要的編輯器都有恢復功能,vim也不例外。vim是經過「保存」文件來挽回數據的。
每當咱們在用vim編輯時,vim都會自動在被編輯的文件的目錄下面再新建一個名爲filename.swap的文件。這就是一個暫存文件,咱們對文件filename所作的操做都會被記錄到這個文件當中。若是系統意外崩潰,致使文件沒有正常保存,那麼這個暫存文件就會發揮做用。下面用一個例子來講明(Note:我用的是Ubuntu)。
打開終端,輸入命令,將etc目錄下面的manpath.config複製到tmp目錄下面,而且更改當前工做目錄爲tmp:
cp /etc/manpath.config /tmp
cd /tmp
用vim編輯manpath.config文件:vim manpath.config。
咱們在vim的通常模式下按下Ctrl+z組合鍵,vim就會被丟到後臺執行。回到命令提示符環境後,咱們模擬將vim的工做不正常中斷。
kill -9 %1;強制殺死制定的進程。
這樣致使暫存盤沒法經過正常的流程結束,因此暫存文件不會消失,而是繼續保留下來。當再次編輯那個文件時(輸入命令vim manpath.config),出現:
這時,有六個按鈕可使用:
O(pen for Read-Only):打開成只讀文件。
E(dit):用正常方式打開要編輯的文件,並不會載入暫存文件的內容。這很容易出現兩個用戶相互改變對方的文件的問題。
R(ecover):加載暫存文件的內容。
D(elete):若是你肯定這個暫存文件是沒有用的,則能夠刪除。
Q(uit):不進行任何操做,回到命令行。
A(bort):忽略這個編輯行爲,和Q相似。
須要注意的是:這個暫存文件不會應爲你結束vim後自動刪除,必需要手動刪除。不然每次打開對應的文件時都會出現這樣的提示。
3、vim的功能
【1】塊選擇:
這個功能可讓咱們複製一個矩形區域的內容,十分方便。
v:字符選擇,會將光標通過的地方反白選擇;
V:行選擇;
Ctrl+v:塊選擇;
y:複製反白的地方;
d:刪除反白的地方。
示例以下:
須要注意的是,粘貼時候也是粘貼在一個塊的範圍內,而不是以行爲單位來處理的。
【2】多文件編輯
咱們在兩個或多個文件之間複製粘貼內容時,這個功能會讓咱們方便不少。
使用命令vim name1 name2 name3...(各個文件名之間用空格隔開)能夠同時打開多個文件。
:n:編輯下一個文件;
:N:編輯上一個文件;
:files:列出目前vim打開的全部文件。
【3】多窗口功能
能夠在一個窗口中打開多個文件。
輸入命令:sp{filename}即可以實現這個功能。若是想要在新窗口啓動另一個文件,則加入文件名。若是省略文件名,則打開的是同一個文件。
用一個例子來講明。
vim manpath.config打開一個文件。在通常模式下輸入:sp。發現打開的是同一個文件。若是再輸入:sp /etc/hosts。則變成:
其餘的按鍵功能:
Ctrl+w+j:先按下Ctrl不放,再按下w後放開全部的按鍵,再按下j(或向下箭頭鍵),則光標能夠移到下方的窗口;
Ctrl+w+k:同上,不過光表移到上面的窗口;
Ctrl+w+q:離開。
【4】vim環境設置
須要注意的是,vim會將i咱們的之前的行爲都記錄下來,以方便咱們操做。它保存在文件:~/.viminfo中。
vim經常使用的環境設置參數命令以下:
:set nu 設置行號
:set nonu 取消行號
:set hlsearch 設置高亮度查找
:set nohlsearch 取消高亮度查找
:set backup 自動備份文件
:set ruler 開啓右下角狀態欄說明
:set showmode 顯示左下角的INSERT之類的狀態欄
:set backspace={0,1,2} 設置退格鍵功能。爲2時能夠刪任意字符。爲0或1時僅能夠刪除剛纔輸入的字符。
:set all 顯示目前全部的環境參數值
:set 顯示與系統默認值不一樣的參數值
:syntax on/off 是否開啓依據相關程序語法顯示不一樣的顏色
:set bg=dark/light 是否顯示不一樣的顏色色調
可是咱們沒有必要每次使用vim都要從新設置一次各個參數值。咱們能夠經過配置文件來直接規定咱們習慣的vim操做環境。總體vim的設置值通常是放在/etc/vimrc中的。咱們通常不要修改這個文件。咱們能夠經過修改~/.vimrc這個文件,若是不存在,能夠手動建立。而後將咱們所但願的設置值寫入。例如,咱們能夠這樣寫:
建立並保存這個文件以後,當下次從新以vim編輯某個文件時,該文件的默認環境就是這麼設置的。