Linux vim/vi編輯器的基本操作和基本命令的使用
Linux系統基本命令之vim編輯器的使用
Linux系統下有很多編輯器,經常聽到的就有:Emacs ,pico ,nano ,joe , vim等
一、 學習vim編輯器的原因
l 所有的Linux系統都會內建vi編輯器,而不一定會存在其他的文字編輯器(所以學會vim 就不用擔心Linux系統版本不同而不會使用編輯器)
l 很多軟體的編輯介面都會主動呼叫vim
l Vim具有程式編輯的能力,可以主動以字型顏色辨別語法的正確性,方便程式設計
l 程式簡單,編輯速度相當快速
l 功能強大
二、 Vim的基本使用
基本上vim分為3中模式,分別是一般模式,編輯模式(插入模式)和命令列模式。
l 一般模式
通過vim開啟一個檔案就自動進入了一般模式,在一般模式下可以自由使用上下左右按鍵來移動游標,可以刪除字元或刪除整行,也可以進行復制,貼上等功能。
l 編輯模式
在一般模式中只能進行刪除,複製,貼上等操作,但是無法編輯檔案內容。只有在一般模式下按下“i,I, o, O,a ,A,r,R”等任何一個字母才會進入編輯模式。在Linux中,按下這些按鍵在介面的左下方會出現INSTER(插入)或REPLACE的字樣
在此時才能進行編輯。而如果要回到一把模式必須按下【Esc】鍵才能退出編輯模式。
l 命令列模式
在一般模式中,輸入“:,/ ,?”3個字元中的任何一個字元都可以將游標移動到最下面那一行。
在這個模式中,可以提供你查詢資料的操作,儲存,大量替換字元,離開vim,顯示行號等操作都是在此模式完成的
三、vim按鍵的基本操作
l 一般模式
移動游標的方法:
h或左箭頭 游標向左移動一個字元
j 或下箭頭 游標向下移動一個字元
k或上箭頭 游標向上移動一個字元
l 或右箭頭 游標向右移動一個字元
(hjkl)四個鍵排列在一起的,因此可以使用這四個按鍵來移動游標
如果想要進行多行移動,想要移動的行數+按鍵來進行多行移動,例如:向下移動15行,則15j或(15下箭頭)。
G
nG n為數字。移動這個檔案的第n行。(配合set nu 使用)
gg 移動到這個檔案的第一行,相當於1G(常用)
n【Enter】 n為數字。游標向下移動n行(常用)
螢幕移動:
【Ctrl】+【f】 螢幕向下移動一頁
【Ctrl】+【b】 螢幕向上移動一頁
0或功能鍵【home】 移動到這一行最前面的字元處(常用)
$ 或功能鍵【end】 移動到這一行的最後面的字元處(常用)
查詢和替換:
/word 向下尋找一個名稱為word的字串(常用)
?word 向上尋找一個名稱為word的字串
n 重複前一個查詢動作,表示繼續向下查詢
N 反向進行查詢,向上查詢
:n1,n2s/word1/word2/g n1,n2是數字,在第n1到n2行之間尋找word1這 個字串,並且替換為word2(前面是冒號,相當 於在命令列才能執行)
:1,$s/word1/word2/g 從一行到第二行查詢word1這個字串,並且替換 為word2(同上,實際相當於在命令列)
如果在g後面加上c則給出提示資訊給使用者確認是否需要替換。
刪除、複製與貼上:
x X 在一行字中x為向後刪除一個字元。X為向前刪除一個字 符
nx n為數字表示向後連續刪除n個字元
dd 刪除游標所在的游標的那一整行
ndd n為數字,刪除游標所在的向下的n行
d1G 刪除游標所在到第一行的所有資料
dG 刪除游標所在最後一行的所有資料
d$ 刪除游標所在處到該行的最後一個字元
d0 刪除游標所在處到改行的第一個字元
yy 複製游標所在的那一行
nyy 複製游標所在的向下的n行
p P p將複製內容在游標下一行貼上
P將複製內容在游標上一行貼上
y1G 複製游標所在到第一行所在的資料
yG 複製游標所在到最後一行的資料
y0 複製游標所在字元到行首的字元
y$ 複製游標所在字元到行尾的字元
l 一般模式
基本按鍵說明
I, i 進入插入模式(insert mode)i為游標處開始插入,I為 在目前所在行的第一個非空格字元插入
A a a當前字元的下個字元插入,A游標所在行的最後一個字 符開始插入
O o o在游標下一行插入,O在游標上一行插入
r,R 取代模式(replacemode)r:只會取代游標所在的那個 字元一次,R會一直取代游標所在的文字直到按下ESC 鍵為止
l 命令列模式的按鍵說明
命令列模式 儲存、離開等指令:
:w 將編輯的資料寫入硬碟檔案中
:w! 強制寫入檔案,不過能不能寫入,還是和許可權有關
:q 離開vim
:q! 強制離開(不儲存)
:wq 儲存後離開
ZZ 檔案變動,儲存後離開,沒有變動,不儲存離開(實際是 在一般模式)
:w 【filename】 儲存為另一個檔案(類似另存檔案)
:set nu 顯示行號
:set nonu 取消行號