Linux 下Vim的使用

vi與vim
vi編輯器是所有Unix及Linux系統下標準的編輯器,他就相當於windows系統中的記事本一樣,它的強大不遜色於任何最新的文本編輯器。他是我們使用Linux系統不能缺少的工具。由於對Unix及Linux系統的任何版本,vi編輯器是完全相同的,學會它後,您將在Linux的世界裏暢行無阻。
vim 具有程序編輯的能力,可以以字體顏色辨別語法的正確性,方便程序設計;
因爲程序簡單,編輯速度相當快速。
vim可以當作vi的升級版本,他可以用多種顏色的方式來顯示一些特殊的信息。
vim會依據文件擴展名或者是文件內的開頭信息, 判斷該文件的內容而自動的執行該程序的語法判斷式,再以顏色來顯示程序代碼與一般信息。
vim裏面加入了很多額外的功能,例如支持正則表達式的搜索、多文件編輯、塊複製等等。 這對於我們在Linux上進行一些配置文件的修改工作時是很棒的功能。


 

爲何要學 vi
所有的Unix Like系統都會內建vi文本編輯器,其他的文本編輯器則不一定會存在;
一些軟件的編輯接口會主動調用vi (例如 crontab, visudo, edquota 等命令);

vi的使用
基本上vi可以分爲三種狀態,分別是一般模式、編輯模式和命令行模式,各模式的功能區分如下:

一般模式:
以vi打開一個文件就直接進入一般模式了(這是默認的模式)。在這個模式中, 你可以使用上下左右按鍵來移動光標,你可以使用刪除字符或刪除整行來處理文件內容, 也可以使用複製、粘貼來處理你的文件數據。

編輯模式:
在一般模式中可以進行刪除、複製、粘貼等的操作,但是卻無法編輯文件的內容,只有當到你按下【i, I, o, O, a, A, r, R】等任何一個字母之後纔會進入編輯模式。這時候屏幕的左下方會出現【INSERT或 REPLACE】的字樣,此時纔可以進行編輯。而如果要回到一般模式時, 則必須要按下【Esc】即可退出編輯模式。

命令行模式:
輸入【 : / ? 】三個中的任何一個,就可以將光標移動到最底下那一行。在這個模式中, 可以提供查找、讀取、存盤、替換字符、離開vi、顯示行號等的動作則是在此模式中完成的!

一般模式可用的按鈕說明
移動光標
【h、j、k、l】,分別控制光標左、下、上、右移一格
按【ctrl+b】屏幕往"後"移動一頁
按【ctrl+f】屏幕往"前"移動一頁

【n<space>】光標向右移動n個字符
【Home】移動到這一行的最前面字符處:0數字,但不能用數字小鍵盤上的數字
【End】 移動到這一行的最後面字符處:$,我測試好像不行
【w】光標跳到下個字的開頭
【e】光標跳到下個字的字尾

【H】 光標移動到這個屏幕的最上方那一行的第一個字符
【M】 光標移動到這個屏幕的中間那一行的第一個字符
【L】光標移動到這個屏幕的最下方那一行的第一個字符

【G】 移動到這個文件的最後一行
【nG】移動到這個文件的第n行(可配合:set nu)
【gg】 移動到這個文件的第一行,相當於1G
【n<Enter>】光標向下移動n行

查找與替換
【/word】 向光標向下尋找一個名稱爲word的字符串
【?word】 向光標向上尋找一個名稱爲word的字符串
【n】 代表重複前一個查找的動作
【N】 與n剛好相反,爲【反向】進行行前一個查找動作

【:n1,n2s/word1/word2/g】  n1與n2爲數字,在第n1與n2行之間查找word1 這個字符串,並將該字符串替換爲word2

【:1,$s/word1/word2/g】 從第一行到最後一行查找word1字符串,並將該字符串替換爲word2
【:1,$s/word1/word2/gc】 從第一行到最後一行查找word1字符串,並將該字符串替換爲word2 ,且在替換前提示用戶確認是否進行替換

刪除、複製與粘貼

【x】 爲向後刪除一個字符 (相當於【del】鍵)
【X】 爲向前刪除一個字符(相當於【backspace】鍵)
【nx】 連續向後刪除n個字符

【dd】 刪除光標所在行
【ndd】 刪除光標所在的向下n行
【d1G】 刪除光標所在行到第一行的所有數據
【dG】 刪除光標所在到最後一行的所有數據

【d$】 刪除光標所在處,到該行的最後一個字符
【d0】 刪除光標所在處,到該行的最前一個字符

【yy】 複製光標所在的那一行
【nyy】 複製光標所在的向下n列

【y1G】 複製光標所在行到第一行的所有數據
【yG】 複製光標所在行到最後一行的所有數據

【y0】 複製光標所在的那個字符到該行行首的所有數據
【y$】 複製光標所在的那個字符到該行行尾的所有數據

【p】將已複製的數據在光標下一行粘貼上
【P】 則爲貼在光標的上一行

【u】 恢復前一個操作
【Ctrl+r】重做上一個操作

【.】 是重複前一個操作

一般模式切換到編輯模式的可用的按鈕說明
【i, I】 進入編輯模式:
i 爲【從目前光標所在處插入】
I 爲【在目前所在行的第一個非空格符處開始插入】
 
【a, A】 進入編輯模式(Insert mode):
a 爲【從目前光標所在的下一個字符處開始插入】
A 爲【從光標所在行的最後一個字符處開始插入】

【o, O】 進入編輯模式:
o 爲【在目前光標所在的下一行處插入新的一行】
O 爲在目前光標所在處的上一行插入新的一行

【r, R】 進入取代模式:
r 只會取代光標所在的那一個字符一次
R會一直取代光標所在的文字,直到按下 ESC 爲止;

【Esc】 退出編輯模式,回到一般模式

一般模式切換到命令行模式可用的按鈕說明
【:w】 保存編輯的內容
【:w!】強制寫入該文件,但跟你對該文件的權限有關
【:q】 離開vi
【:q!】 不想保存修改強制離開
【:wq】 保存後離開
【:x】 保存後離開
【ZZ】 若文件沒有更動,則不保存離開,若文件已經被更改過,則保存後離開

【:w filename】 將編輯的數據保存成另一個文件(類似另存)
【:r filename】 在編輯的數據中,讀入另一個文件的數據。即將【filename】 這個文件的內容加到光標所在行後面。

【:n1,n2 w filename】 將n1到n2的內容保存成filename這個文件。
【:! command】暫時離開vi 到命令行模式下執行command的顯示結果!例如 【:! ls /home】即可在 vi 當中察看/home底下以ls輸出的文件信息!

【:set nu】 顯示行號
【:set nonu】 與 set nu 相反,爲取消行

vim的緩存文件、恢復與開啓時的警告信息
我們知道一些常用的編輯軟件,都有個恢復的功能,就是說當你的系統因爲某些原因而導致類似當機的情況時,還可以利用這個恢復功能將之前未保存的數據找回來。我們的VIM也有這個功能。

當我們在使用vim編輯時,vim會在與被編輯的文件的目錄下,再建立一個名爲 .filename.swp的文件。如果你的系統因爲某些原因斷線了, 導致你編輯的文件還沒有保存,這個時候 .filenam.swp 就能夠發會救援的功能了。

我們來演示一下
vim man.config
ctrl+z放到後臺執行
我們停止VI的進程
一種方法
ps aux |grep vi
kill -9 n

另外一種方法
jobs
kill -9 %1

我們用ls -l 命令來查看一下目錄裏面,會發現有個.man.config.swp的文件,這個文件就是個緩存的文件

我們再來編輯
vim man.config
這時候會出現一些信息
問題一:可能有其他人或程序同時在編輯這個文件:
問題二:在前一個vim的環境中,可能因爲某些不知名原因導致vim中斷 (crashed):

右下角會出現六個命令項,其作用說明如下:
(O)pen Read-Only:打開此文件成爲只讀檔, 可以用在你只是想要查閱該文件內容並不想要進行編輯行爲時。一般來說,在上課時,如果你是登入到同學的計算機去看他的配置文件, 結果發現其實同學他自己也在編輯時,可以使用這個模式;
(E)dit anyway:還是用正常的方式打開你要編輯的那個文件, 並不會載入暫存盤的內容。如果說兩個人都在編輯這個文件的話,很容易出現互相改變對方的文件等問題。
(R)ecover:就是加載暫存盤的內容,用在你要救回之前未保存的工作。 不過當你救回來並且儲存離開vim後,還是要手動自行刪除那個暫存檔。
(D)elete it:你確定那個暫存檔是無用的!那麼開啓文件前會先將這個暫存盤刪除
(Q)uit:按下 q 就離開vim,不會進行任何動作回到命令提示字符。
(A)bort:忽略這個編輯行爲,感覺上與 quit 非常類似!

vim的功能
其實,目前大部分的Linux發行版本都以vim取代了vi。爲什麼要用vim呢?因爲vim具有顏色顯示的功能,並且還支持許多的程序語法(syntax)和相應的提示信息。查看自己的VI是不是被VIM代替,可以用
alias這個命令來查看是不是有alias vi=’vim’這一行。

塊選擇
【v】字符選擇,會將光標經過的地方反白選擇
【V】 行選擇,會將光標經過的行反白選擇
【Ctrl+v】 塊選擇,可以用長方形的方式選擇資料 (提製豎列)
【y】 將反白的地方複製
【d】 將反白的地方刪除

多文件編輯
大家在使用vim的時候,可能會碰到你需要複製一個文件中的某段到另外一個文件中,而vim不能夠在關閉的時候,把這段保留住。或者是用其它的方法複製。
【vim file1 file2】

【:n】編輯下一個文件
【:N】編輯上一個文件
【:files】列出目前這個vim編輯的所有文件

多窗口功能
有兩個需要對照着看的文件
【:sp filename】開啓一個新窗口,如果有加 filename, 表示在新窗口開啓一個新文件,否則表示兩個窗口爲同一個文件內容(同步顯示)。

【ctrl+w+j】
【ctrl+w+↓】按鍵的按法是:先按下 【ctrl】 不放, 再按下 w 後放開所有的按鍵,然後再按下 j (或向下箭頭鍵),則光標可移動到下方的窗口。

【ctrl+w+k】
【ctrl+w+↑】同上,不過光標移動到上面的窗口。

vim 環境設定與記錄(~/.vimrc, ~/.viminfo)
如果我們以vim軟件來查找一個文件內部的某個字符串時,這個字符串會被反白, 而下次我們再次以vim編輯這個文件時,該查找的字符串反白情況還是存在。另外,當我們重複編輯同一個文件時,當第二次進入該文件時, 光標竟然就在上次離開的那一行的開頭。這個功能可能是方便,但也有不方便的時候。怎麼會這樣呢?這是因爲我們的vim會主動的將你曾經做過的行爲登錄下來,那個記錄動作的文件就是: ~/.viminfo,不想用這個功能,就直接刪除~/.viminfo。只要你曾經使用過vim,那麼你的家目錄就會有這個文件。這個文件是自動產生的,你在vim裏頭所做過的動作,就可以在這個文件內部找到。有興趣的朋友可以自己查看文件裏面的內容。

不過,對於每個不同的發行版本對vim的預設環境都不太相同。舉例來說,某些版本在查找到關鍵詞時並不會高亮度反白, 有些版本則會主動的幫你進行縮排(所謂的縮排,就是當你按下 Enter 編輯新的一行時,光標不會在行首,而是在與上一行的第一個非空格符處對齊)的行爲。其實這些都可以自行設定的,下面我們就來看看vim的環境設定。
vim的環境設定參數有很多,如果你想要知道目前的設定值,可以在一般模式時輸入【 :set all】來查閱,由於設定項目實在太多了,我們在這裏就僅列出一些平時比較常用的一些簡單的設定值,給大家提供參考。

:set all "顯示目前所有的環境參數設定值
:set hlsearch "高亮度反白(高亮度搜尋)
:set nohlsearch "取消高亮度反白(高亮度搜尋)
:set backspace=2 "在編輯的時候可隨時用退格鍵刪除 (0、1的時候,只針對剛輸入的字符有效)
:set autoindent "自動縮排
:set noautoindent "取消自動縮排
:set ruler "可顯示最後一行的狀態
:set showmode "左下角那一行的狀態
:set nu "顯示行號
:set nonu "取消行號
:set bg=dark "顯示不同的底色色調
:syntax on "進行語法檢驗,顏色顯示
:syntax off "關閉語法檢驗

瞭解完上面的內容後,下面我們就能寫一下自己的vim操作環境。
整體vim的設定值一般是置在/etc/vimrc這個文件裏面,不建議大家來修改他。我們在自己的家目錄裏面建立個.vimrc文件,在這裏面寫入自己的內容就能實現了。
[root@yufei ~]# vim ~/.vimrc
內容如下
set hlsearch "高亮度反白
set backspace=2 "可隨時用退格鍵刪除
set autoindent "自動縮排
set ruler "可顯示最後一行的狀態
set showmode "左下角那一行的狀態
set nu "可以在每一行的最前面顯示行號
set bg=dark "顯示不同的底色色調
syntax on "進行語法檢驗,顏色顯示
"這個文件的雙引號 (")表示的是註釋

保存退出vim後,在下次使用vim的時候,就會有自己的vim操作環境了。
提醒一點,這個文件中每一行前面加不加【:】效果都是一樣的。

最後,給也幾張不錯的圖,幫助大家更快的來掌握vi/vim,記住一點,不要死記,重在操作





 

linux vim編輯器必知必會

一、我們爲什麼要學習vim編輯器?

Linux的命令行界面下面有非常多的文本編輯器。比如經常聽說的就有Emacs、pico、nano、joe與vim等。vim可以看做是vi的高級版。我們爲什麼一定要學習vim呢?有以下幾個原因:

(1)所有的Unix like系統都會內置vi文本編輯器,其他的文本編輯器則不一定會存在。

(2)很多軟件的編輯接口都會主動調用vi。

(3)vim具有程序編輯的能力,可以主動以字體顏色辨別語法的正確性,方便程序設計。

(4)程序簡單,編輯速度快。


二、下面先介紹一下vi的基本使用方法及其相關命令。

vim編輯器的三種模式:一般模式、編輯模式和命令行模式。

在一般模式中可以進行刪除、複製和粘貼的功能,但是無法編輯文件內容。從一般模式切換到編輯模式可以按下iIoOaArR鍵。按下Esc鍵可以回到一般模式。在一般模式中輸入:/、?三個中的任意一個可以將光標移到最下面的一行。在這個模式中可以提供查找數據的操作,而讀取、保存、大量替換字符、離開vii、顯示行號等操作則是在此模式中完成的。需要注意的是,編輯模式與命令行模式之間是不能互相切換的。

下面列出平時用的最多的vi命令:

移動光標的方法:

[Ctrl]+[f]:屏幕向下移動一頁,相當於[PageDown]按鍵。

[Ctrl]+[b]:屏幕向上移動一頁,相當於[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,Pp爲將已複製的內容在光標的下一行粘貼,P則爲粘貼在光標的上一行。

u:復原前一個操作。

[Ctrl]+r:重做上一個操作。

.:小數點,重複前一個操作。

一般模式切換到編輯模式:

i,I:進入插入模式,i爲從目前光標所在處插入。I爲在目前所在行的第一個非空格字符處開始插入。

aA:進入插入模式。a爲從目前光標所在處的下一個字符處開始插入。A爲從所在行的最後一個字符處開始插入。

oO:進入插入模式。o爲在下一行插入。O爲在上一行插入。

rR:進入替換模式。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這個文件,如果不存在,可以手動創建。然後將我們所希望的設置值寫入。例如,我們可以這樣寫:

  1. vim ~/.vimrc  
  2. set hlsearch(注意:set前面也可以加冒號,結果一樣)  
  3. set backspace=2  
  4. set ruler  
  5. set showmode  
  6. set nu  
  7. syntax on  
[cpp] view plain copy
  1. vim ~/.vimrc  
  2. set hlsearch(注意:set前面也可以加冒號,結果一樣)  
  3. set backspace=2  
  4. set ruler  
  5. set showmode  
  6. set nu  
  7. syntax on  

創建並保存這個文件之後,當下次重新以vim編輯某個文件時,該文件的默認環境就是這麼設置的。

轉自:http://blog.csdn.net/xiajun07061225/article/details/7039413

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章