1. 程式人生 > 其它 >VIM 文字編輯器

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! 儲存修改並退出(檔案所有者可忽略檔案的只讀屬性)

不儲存並退出:

  1. 有修改,但是修改後的內容是不儲存的

  2. 有突發情況,導致視窗退出。修改檔案之後,直接刪除同名的.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 (進入插入模式)