一、我們為什麼要學習vim編輯器?
linux的命令列介面下面有非常多的文字編輯器。比如經常聽說的就有emacs、pico、nano、joe與vim等。vim可以看做是vi的高階版。我們為什麼一定要學習vim呢?有以下幾個原因:
(1)所有的unix like系統都會內建vi文字編輯器,其他的文字編輯器則不一定會存在。
(2)很多軟體的編輯介面都會主動呼叫vi。
(3)vim具有程式編輯的能力,可以主動以字型顏色辨別語法的正確性,方便程式設計。
(4)程式簡單,編輯速度快。
二、下面先介紹一下vi的基本使用方法及其相關命令。
在一般模式中可以進行刪除、複製和貼上的功能,但是無法編輯檔案內容。從一般模式切換到編輯模式可以按下i、i、o、o、a、a、r、r鍵。按下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行。
u:復原前乙個操作。
.:小數點,重複前乙個操作。
i,i:進入插入模式,i為從目前游標所在處插入。i為在目前所在行的第乙個非空格字元處開始插入。
r,r:進入替換模式。r只替換游標所在那個字元一次。r會一直替換游標所在字元,直到按下esc鍵。
一般模式切換到命令列:
: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的一般模式下按下ctrl+z組合鍵,vim就會被丟到後台執行。回到命令提示符環境後,我們模擬將vim的工作不正常中斷。
kill -9 %1;強制殺死制定的程序。
這時,有六個按鈕可以使用:
o(pen for read-only):開啟成唯讀檔案。
e(dit):用正常方式開啟要編輯的檔案,並不會載入暫存檔案的內容。這很容易出現兩個使用者相互改變對方的檔案的問題。
r(ecover):載入暫存檔案的內容。
d(elete):如果你確定這個暫存檔案是沒有用的,則可以刪除。
q(uit):不進行任何操作,回到命令列。
需要注意的是:這個暫存檔案不會應為你結束vim後自動刪除,必須要手動刪除。否則每次開啟對應的檔案時都會出現這樣的提示。
三、vim的功能
塊選擇:
這個功能可以讓我們複製乙個矩形區域的內容,十分方便。
v:字元選擇,會將游標經過的地方反白選擇;
v:行選擇;
ctrl+v:塊選擇;
y:複製反白的地方;
d:刪除反白的地方。
示例如下:
需要注意的是,貼上時候也是貼上在乙個塊的範圍內,而不是以行為單位來處理的。
多檔案編輯
我們在兩個或多個檔案之間複製貼上內容時,這個功能會讓我們方便很多。
使用命令vim name1 name2 name3…(各個檔名之間用空格隔開)可以同時開啟多個檔案。
:n:編輯下乙個檔案;
:n:編輯上乙個檔案;
:files:列出目前vim開啟的所有檔案。
多視窗功能
可以在乙個視窗中開啟多個檔案。
輸入命令:sp便可以實現這個功能。如果想要在新視窗啟動另外乙個檔案,則加入檔名。如果省略檔名,則開啟的是同乙個檔案。
用乙個例子來說明。
vim manpath.config開啟乙個檔案。在一般模式下輸入:sp。發現開啟的是同乙個檔案。如果再輸入:sp /etc/hosts。則變成:
其他的按鍵功能:
ctrl+w+j:先按下ctrl不放,再按下w後放開所有的按鍵,再按下j(或向下箭頭鍵),則游標可以移到下方的視窗;
ctrl+w+k:同上,不過光表移到上面的視窗;
ctrl+w+q:離開。
vim環境設定
需要注意的是,vim會將i我們的以前的行為都記錄下來,以方便我們操作。它儲存在檔案:~/.viminfo中。
vim常用的環境設定引數命令如下:
:set nu 設定行號
:set nonu 取消行號
:set hlsearch 設定高亮度查詢
:set nohlsearch 取消高亮度查詢
:set backup 自動備份檔案
:set ruler 開啟右下角狀態列說明
:set showmode 顯示左下角的insert之類的狀態列
:set backspace= 設定退格鍵功能。為2時可以刪任意字元。為0或1時僅可以刪除剛才輸入的字元。
:set all 顯示目前所有的環境引數值
:set 顯示與系統預設值不同的引數值
:syntax on/off 是否開啟依據相關程式語法顯示不同的顏色
:set bg=dark/light 是否顯示不同的顏色色調
但是我們沒有必要每次使用vim都要重新設定一次各個引數值。我們可以通過配置檔案來直接規定我們習慣的vim操作環境。整體vim的設定值一般是放在/etc/vimrc中的。我們一般不要修改這個檔案。我們可以通過修改~/.vimrc這個檔案,如果不存在,可以手動建立。然後將我們所希望的設定值寫入。例如,我們可以這樣寫:vim ~/.vimrc
vi vim編輯器必知必會
一 我們為什麼要學習vim編輯器?linux的命令列介面下面有非常多的文字編輯器。比如經常聽說的就有emacs pico nano joe與vim等。vim可以看做是vi的高階版。我們為什麼一定要學習vim呢?有以下幾個原因 1 所有的unix like系統都會內建vi文字編輯器,其他的文字編輯器則...
Linux入門學習之 vi vim編輯器必知必會
vi 在當前開啟的檔案內容中翻頁 pageup pagedown 一 我們為什麼要學習vim編輯器?linux的命令列介面下面有非常多的文字編輯器。比如經常聽說的就有emacs pico nano joe與vim等。vim可以看做是vi的高階版。我們為什麼一定要學習vim呢?有以下幾個原因 1 所有...
mysql必知必會 mysql必知必會(四)
十四 理解子查詢 1 通過子查詢過濾 這本書在所有的章節都關連到了資料庫表,訂單資料是儲存在兩個表中,orders表儲存著 訂單號碼 顧客id和訂單日期。個人的訂單列表關連著orderitems表,訂單表沒有儲存顧客資訊,它只是儲存著顧客id,這實際的顧客資訊是儲存在customers表中。現在假設...