一、我們為什麼要學習vim編輯器?
Linux的命令行界面下面有非常多的文本編輯器。比如經常聽說的就有Emacs、pico、nano、joe與vim等。vim可以看做是vi的高級版。我們為什麼一定要學習vim呢?有以下幾個原因:
(1)所有的Unix like系統都會內置vi文本編輯器,其他的文本編輯器則不一定會存在。
(2)很多軟件的編輯接口都會主動調用vi。
(3)vim具有程序編輯的能力,可以主動以字體顏色辨別語法的正確性,方便程序設計。
(4)程序簡單,編輯速度快。
二、下面先介紹一下vi的基本使用方法及其相關命令。
vim編輯器的三種模式:一般模式、編輯模式和命令行模式。
在一般模式中可以進行刪除、復制和粘貼的功能,但是無法編輯文件內容。從一般模式切換到編輯模式可以按下i、I、o、O、a、A、r、R鍵。按下Esc鍵可以回到一般模式。在一般模式中輸入:、/、?三個中的任意一個可以將光標移到最下面的一行。在這個模式中可以提供查找數據的操作,而讀取、保存、大量替換字符、離開vii、顯示行號等操作則是在此模式中完成的。需要注意的是,編輯模式與命令行模式之間是不能互相切換的。
下面列出平時用的最多的vi命令:
移動光標的方法:
[Ctrl]+[f]:屏幕向下移動一頁,相當於[PageDown]按鍵。
[Ctrl]+
:屏幕向上移動一頁,相當於[PageUp]按鍵。
0或功能鍵[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),出現(ubuntu 11.10):
這時,有六個按鈕可以使用:
O(pen for Read-Only):打開成只讀文件。
E(dit):用正常方式打開要編輯的文件,並不會載入暫存文件的內容。這很容易出現兩個用戶相互改變對方的文件的問題。
R(ecover):加載暫存文件的內容。
D(elete):如果你確定這個暫存文件是沒有用的,則可以刪除。
Q(uit):不進行任何操作,回到命令行。
A(bort):忽略這個編輯行為,和Q類似。
需要注意的是:這個暫存文件不會應為你結束vim後自動刪除,必須要手動刪除。否則每次打開對應的文件時都會出現這樣的提示。
三、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這個文件,如果不存在,可以手動創建。然後將我們所希望的設置值寫入。例如,我們可以這樣寫:
[b][cpp] view
plain copy
print?
vim ~/.vimrc
set hlsearch(注意:set前面也可以加冒號,結果一樣)
set backspace=2
set ruler
set showmode
set nu
syntax on
創建並保存這個文件之後,當下次重新以vim編輯某個文件時,該文件的默認環境就是這麼設置的。
文章轉自:/content/780292.html