VIM 文字編輯器
VIM 文字編輯器
VIM 介紹
#安裝 VIM
[root@node-01 ~]# yum install -y vim-enhanced
vim/vi 是 Unix / Linux 上最常用的文字編輯器而且功能非常強大。
特點:只有命令,沒有選單
《大碗》編輯器版
周圍的同事不是用VI就是Emacs,你要是用UltraEdit都不好意思跟人家打招呼...什麼外掛呀、語法高亮呀、拼寫檢查呀,能給它開的都給它開著,就是一個字:酷!你說這麼牛X的一東西,怎麼著學會也得小半年吧。半年!?入門都遠著呢!能學會移動游標就不錯了,你還別說耗不起,就這還是左右移動!!!
VIM 工作模式
命令模式(又稱一般模式)
使用者剛剛啟動 vi/vim,便進入了命令模式。此狀態下敲擊鍵盤動作會被 vim 識別為命令,而非輸入字元。
比如我們此時按下 i,並不會輸入一個字元,i 被當作了一個命令。
以下是常用的幾個命令:
- i 切換到輸入模式,以輸入字元
- x 刪除當前游標所在處的字元
- : 切換到底線命令模式,以在最底一行輸入命令
若想要編輯文字:啟動 vim,進入了命令模式,按下 i,切換到輸入模式
命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令
輸入模式(又稱編輯模式)
在命令模式下按下 i 就進入了輸入模式
在輸入模式中,可以使用以下按鍵:
- 字元按鍵以及Shift組合,輸入字元
- ENTER
- BACK SPACE,退格鍵,刪除游標前一個字元
- DEL,刪除鍵,刪除游標後一個字元
- 方向鍵,在文字中移動游標
- HOME/END,移動游標到行首/行尾
- Page Up/Page Down,上/下翻頁
- Insert,切換游標為輸入/替換模式,游標將變成豎線/下劃線
- ESC,退出輸入模式,切換到命令模式
底線命令模式(又稱命令列模式)
在命令模式下按下:(英文冒號)就進入了底線命令模式
底線命令模式可以輸入單個或多個字元的命令,可用的命令非常多
在底線命令模式中,基本的命令有(已經省略了冒號):
- q 退出程式
- w 儲存檔案
按 ESC 鍵可隨時退出底線命令模式
VIM 常用命令
插入命令
命令 | 作用 |
---|---|
a | 在游標後附加文字 |
A(shift + a) | 在本行行末附加文字 行尾 |
i | 在游標前插入文字 |
I(shift+i) | 在本行開始插入文字 行首 |
o | 在游標下插入新行 |
O(shift+o) | 在游標上插入新行 |
定位命令
命令 | 作用 |
---|---|
:set nu | 設定行號 |
:set nonu | 取消行號 |
gg G | 到第一行 到最後一行 |
nG | 到第n行 |
:n | 到第n行 |
儲存和退出命令
命令 | 作用 |
---|---|
:w | 儲存修改 |
:w new_filename | 另存為指定檔案 |
:w >> a.txt | 內容追加到a.txt檔案中 檔案需存在 |
:wq | 儲存修改並退出 |
shift+zz(ZZ) | 快捷鍵,儲存修改並退出 |
:q! | 不儲存修改退出 |
:wq! | 儲存修改並退出(檔案所有者可忽略檔案的只讀屬性) |
不儲存並退出:
有修改,但是修改後的內容是不儲存的
有突發情況,導致視窗退出。修改檔案之後,直接刪除同名的.swp檔案
刪除命令
命令 | 作用 |
---|---|
x | 刪除游標所在處字元 nx 刪除游標所在處後n個字元 |
dd | 刪除游標所在行,ndd刪除n行 |
:n1,n2d | 刪除指定範圍的行(eg :1,3d 刪除了123這三行) |
dG | 刪除游標所在行到末尾的內容 |
D | 刪除從游標所在處到行尾 |
複製和剪下命令
命令 | 作用 |
---|---|
yy、Y | 複製當前行 |
nyy、nY | 複製當前行以下n行 |
dd | 剪切當前行 |
ndd | 剪切當前行以下n行 |
p、P | 貼上在當前游標所在行下 或行上 |
替換和取消命令
命令 | 作用 |
---|---|
r | 取代游標所在處字元 |
R(shift + r) | 從游標所在處開始替換字元,按Esc結束 |
u | undo,取消上一步操作 |
ctrl+r | redo,返回到undo之前 |
搜尋和替換命令
命令 | 作用 |
---|---|
/string | 向後搜尋指定字串 搜尋時忽略大小寫 :set ic |
?string | 向前搜尋指定字串 |
n | 搜尋字串的下一個出現位置,與搜尋順序相同 |
N(Shift + n) | 搜尋字串的上一個出現位置,與搜尋順序相反 |
:%s/old/new/g | 全文替換指定字串 (% 指全文,s 指開始,g 指全域性替換) |
:n1,n2s/old/new/g | 在一定範圍內替換指定字串 |
起始行,終止行 s/ 要替換的字串/替換的新的字串 /g c 詢問確認
eg: :%s/ftp/yang/g 全域性替換,把ftp替換為yang
eg: :41,44/yang/lee/c 從41行到44行,把yang替換為lee,詢問是否替換
eg: :41,44/yang/lee/g 同上,不詢問,直接替換
eg: :%s//root//ROOT/g 把/root替換為/ROOT
eg: :%s#/bin/bash#/bin/ksh/g 把/bin/bash全部替換為/bin/ksh
使用替換命令來新增刪除註釋
:% s/^/#/g 來在全部內容的行首新增 # 號註釋
:1,10 s/^/#/g 在1~10 行首新增 # 號註釋
vi裡面怎麼查命令??
:!which cp
vi裡面怎麼匯入命令的結果?
:r !which cp
視覺化模式
- v (可視字元模式)
- V(shift+v) (可視行模式,選擇多行操作)
- ctrl+v (可視塊模式或列模式,用於操作列)
- I 或者 O (進入插入模式)