一、VIM編輯器
1)vi概述
vi(visual editor)編輯器通常被簡(jiǎn)稱(chēng)為vi,它是Linux和Unix系統(tǒng)上最基本的文本編輯器,類(lèi)似于Windows 系統(tǒng)下的notepad(記事本)編輯器。
2)vim編輯器
Vim(Vi improved)是vi編輯器的加強(qiáng)版,比vi更容易使用。vi的命令幾乎全部都可以在vim上使用。
3)vim編輯器的安裝
☆ 已安裝
Linux通常都已經(jīng)默認(rèn)安裝好了 vi 或 Vim 文本編輯器,我們只需要通過(guò)vim命令就可以直接打開(kāi)vim編輯器了,如下圖所示:
☆ 未安裝
有些精簡(jiǎn)版的Linux操作系統(tǒng),默認(rèn)并沒(méi)有安裝vim編輯器(可能自帶的是vi編輯器)。當(dāng)我們?cè)诮K端中輸入vim命令時(shí),系統(tǒng)會(huì)提示"command not found"。
解決辦法:有網(wǎng)的前提下,可以使用yum工具對(duì)vim編輯器進(jìn)行安裝
4)vim編輯器的四種模式(!)
☆ 命令模式
使用VIM編輯器時(shí),默認(rèn)處于命令模式。在該模式下可以移動(dòng)光標(biāo)位置,可以通過(guò)快捷鍵對(duì)文件內(nèi)容進(jìn)行復(fù)制、粘貼、刪除等操作。
☆ 編輯模式或輸入模式
在命令模式下輸入小寫(xiě)字母a或小寫(xiě)字母i即可進(jìn)入編輯模式,在該模式下可以對(duì)文件的內(nèi)容進(jìn)行編輯
☆ 末行模式
在命令模式下輸入冒號(hào):即可進(jìn)入末行模式,可以在末行輸入命令來(lái)對(duì)文件進(jìn)行查找、替換、保存、退出等操作
☆ 可視化模式
可以做一些列選操作(通過(guò)方向鍵選擇某些列的內(nèi)容,類(lèi)似于Windows鼠標(biāo)刷黑)
二、VIM四種模式的關(guān)系
1)VIM四種模式
命令模式
編輯模式
末行模式
可視化模式
2)VIM四種模式的關(guān)系
三、VIM編輯器的使用
1)使用vim打開(kāi)文件
基本語(yǔ)法:
# vim 文件名稱(chēng)
① 如果文件已存在,則直接打開(kāi)
② 如果文件不存在,則vim編輯器會(huì)自動(dòng)在內(nèi)存中創(chuàng)建一個(gè)新文件
案例:使用vim命令打開(kāi)readme.txt文件
# vim readme.txt
2)vim編輯器保存文件
在任何模式下,連續(xù)按兩次Esc鍵,即可返回到命令模式。然后按冒號(hào):,進(jìn)入到末行模式,輸入wq,代表保存并退出。
3)vim編輯器強(qiáng)制退出(不保存)
在任何模式下,連續(xù)按兩次Esc鍵,即可返回到命令模式。然后按冒號(hào):,進(jìn)入到末行模式,輸入q!,代表強(qiáng)制退出但是不保存文件。
4)命令模式下的相關(guān)操作(!)
☆ 如何進(jìn)入命令模式
答:在Linux操作系統(tǒng)中,當(dāng)我們使用vim命令直接打開(kāi)某個(gè)文件時(shí),默認(rèn)進(jìn)入的就是命令模式。如果我們處于其他模式(編輯模式、可視化模式以及末行模式)可以連續(xù)按兩次Esc鍵也可以返回命令模式
☆ 命令模式下我們能做什么
?、?移動(dòng)光標(biāo) ② 復(fù)制 粘貼 ③ 剪切 粘貼 刪除 ④ 撤銷(xiāo)與恢復(fù)
☆ 移動(dòng)光標(biāo)到首行或末行(!)
移動(dòng)光標(biāo)到首行 => gg
移動(dòng)光標(biāo)到末行 => G
☆ 翻屏
向上 翻屏,按鍵:ctrl + b (before) 或 PgUp
向下 翻屏,按鍵:ctrl + f (after) 或 PgDn
向上翻半屏,按鍵:ctrl + u (up)
向下翻半屏,按鍵:ctrl + d (down)
☆ 快速定位光標(biāo)到指定行(!)
行號(hào) + G,如150G代表快速移動(dòng)光標(biāo)到第150行。
☆ 復(fù)制/粘貼(!)
?、?復(fù)制當(dāng)前行(光標(biāo)所在那一行)
按鍵:yy
粘貼:在想要粘貼的地方按下p 鍵【將粘貼在光標(biāo)所在行的下一行】,如果想粘貼在光標(biāo)所在行之前,則使用P鍵
② 從當(dāng)前行開(kāi)始復(fù)制指定的行數(shù),如復(fù)制5行,5yy
粘貼:在想要粘貼的地方按下p 鍵【將粘貼在光標(biāo)所在行的下一行】,如果想粘貼在光標(biāo)所在行之前,則使用P鍵
☆ 剪切/刪除(!)
在VIM編輯器中,剪切與刪除都是dd
如果剪切了文件,但是沒(méi)有使用p進(jìn)行粘貼,就是刪除操作
如果剪切了文件,然后使用p進(jìn)行粘貼,這就是剪切操作
?、?剪切/刪除當(dāng)前光標(biāo)所在行
按鍵:dd (刪除之后下一行上移)
粘貼:p
注意:dd 嚴(yán)格意義上說(shuō)是剪切命令,但是如果剪切了不粘貼就是刪除的效果。
?、?剪切/刪除多行(從當(dāng)前光標(biāo)所在行開(kāi)始計(jì)算)
按鍵:數(shù)字dd
粘貼:p
特殊用法:
?、?剪切/刪除光標(biāo)所在的當(dāng)前行(光標(biāo)所在位置)之后的內(nèi)容,但是刪除之后下一行不上移
按鍵:D (刪除之后當(dāng)前行會(huì)變成空白行)
☆ 撤銷(xiāo)/恢復(fù)(!)
撤銷(xiāo):u(undo)
恢復(fù):ctrl + r 恢復(fù)(取消)之前的撤銷(xiāo)操作【重做,redo】
總結(jié)
?、?怎么進(jìn)入命令模式(vim 文件名稱(chēng),在任意模式下,可以連續(xù)按兩次Esc鍵即可返回命令模式)
② 命令模式能做什么?移動(dòng)光標(biāo)、復(fù)制/粘貼、剪切/刪除、撤銷(xiāo)與恢復(fù)
首行 => gg,末行 => G 翻屏(了解) 快速定位 行號(hào)G,如150G
5)末行模式下的相關(guān)操作(!)
☆ 如何進(jìn)入末行模式
進(jìn)入末行模式的方法只有一個(gè),在命令模式下使用冒號(hào):的方式進(jìn)入。
☆ 末行模式下我們能做什么
文件保存、退出、查找與替換、顯示行號(hào)、paste模式等等
☆ 保存/退出(!)
:w => 代表對(duì)當(dāng)前文件進(jìn)行保存操作,但是其保存完成后,并沒(méi)有退出這個(gè)文件
:q => 代表退出當(dāng)前正在編輯的文件,但是一定要注意,文件必須先保存,然后才能退出
:wq => 代表文件先保存后退出(保存并退出)
如果一個(gè)文件在編輯時(shí)沒(méi)有名字,則可以使用:wq 文件名稱(chēng),代表把當(dāng)前正在編輯的文件保存到指定的名稱(chēng)中,然后退出
:q! => 代表強(qiáng)制退出但是文件未保存(不建議使用)
☆ 查找/搜索(!)
切換到命令模式,然后輸入斜杠/(也是進(jìn)入末行模式的方式之一)
進(jìn)入到末行模式后,輸入要查找或搜索的關(guān)鍵詞,然后回車(chē)
如果在一個(gè)文件中,存在多個(gè)滿(mǎn)足條件的結(jié)果。在搜索結(jié)果中切換上/下一個(gè)結(jié)果:N/n (大寫(xiě)N代表上一個(gè)結(jié)果,小寫(xiě)n代表next)
如果需要取消高亮,則需要在末行模式中輸入:noh【no highlight】
☆ 文件內(nèi)容的替換(!)
第一步:首先要進(jìn)入末行模式(在命令模式下輸入冒號(hào):)
第二步:根據(jù)需求替換內(nèi)容
?、?只替換光標(biāo)所在這一行的第一個(gè)滿(mǎn)足條件的結(jié)果(只能替換1次)
:s/要替換的關(guān)鍵詞/替換后的關(guān)鍵詞 + 回車(chē)
案例:把hello rhel中的 rhel替換為 rhel8
切換光標(biāo)到hello rhel這一行:s/rhel/rhel8
② 替換光標(biāo)所在這一行中的所有滿(mǎn)足條件的結(jié)果(替換多次,只能替換一行)
:s/要替換的關(guān)鍵詞/替換后的關(guān)鍵詞/g g=global全局替換
案例:把hello rhel中的所有rhel都替換為rhel8
切換光標(biāo)到hello rhel這一行:s/rhel/rhel8/g
?、?針對(duì)整個(gè)文檔中的所有行進(jìn)行替換,只替換每一行中滿(mǎn)足條件的第一個(gè)結(jié)果
:%s/要替換的關(guān)鍵詞/替換后的關(guān)鍵詞
案例:把每一行中的第一個(gè)hello關(guān)鍵詞都替換為hi
:%s/hello/hi
④ 針對(duì)整個(gè)文檔中的所有關(guān)鍵詞進(jìn)行替換(只要滿(mǎn)足條件就進(jìn)行替換操作)
:%s/要替換的關(guān)鍵詞/替換后的關(guān)鍵詞/g
案例:替換整個(gè)文檔中的hello關(guān)鍵詞為hi
:%s/hello/hi/g
☆ 顯示行號(hào)
基本語(yǔ)法:
:set nu【nu = number】,行號(hào)
取消行號(hào) => :set nonu
☆ set paste模式
為什么要使用paste模式?
問(wèn)題:在終端Vim中粘貼代碼時(shí),發(fā)現(xiàn)插入的代碼會(huì)有多余的縮進(jìn),而且會(huì)逐行累加。原因是終端把粘貼的文本存入鍵盤(pán)緩存(Keyboard Buffer)中,Vim則把這些內(nèi)容作為用戶(hù)的鍵盤(pán)輸入來(lái)處理。導(dǎo)致在遇到換行符的時(shí)候,如果Vim開(kāi)啟了自動(dòng)縮進(jìn),就會(huì)默認(rèn)的把上一行縮進(jìn)插入到下一行的開(kāi)頭,最終使代碼變亂。
在粘貼數(shù)據(jù)之前,輸入下面命令開(kāi)啟paste模式
:set paste
粘貼完畢后,輸入下面命令關(guān)閉paste模式
:set nopaste
總結(jié)
?、?如何進(jìn)入末行模式,必須從命令模式中使用冒號(hào)進(jìn)行切換
② 末行模式下能做什么?保存、退出、查找、替換、顯示行號(hào)以及paste模式
?、?保存 => :w
?、?退出 => :q,先保存后退出。:wq :wq 文件名稱(chēng) :q!
⑤ 查找功能 => 命令模式輸入/斜杠 + 關(guān)鍵詞(高亮顯示)=> :noh
?、?替換功能
:s/要替換的關(guān)鍵詞/替換后的關(guān)鍵詞
:s/要替換的關(guān)鍵詞/替換后的關(guān)鍵詞/g
:%s/要替換的關(guān)鍵詞/替換后的關(guān)鍵詞
:%s/要替換的關(guān)鍵詞/替換后的關(guān)鍵詞/g
?、?顯示行號(hào) => :set nu 取消行號(hào) => :set nonu
?、?paste模式 => 將來(lái)在粘貼代碼的時(shí)候?yàn)榱吮4嬖袷?=> 粘貼之前 => :set paste
四、編輯模式
1)編輯模式的作用
編輯模式的作用比較簡(jiǎn)單,主要是實(shí)現(xiàn)對(duì)文件的內(nèi)容進(jìn)行編輯模式。
2)如何進(jìn)入編輯模式
首先你需要進(jìn)入到命令模式,然后使用小寫(xiě)字母a或小寫(xiě)字母i,進(jìn)入編輯模式。
命令模式 + i :insert縮寫(xiě),代表在光標(biāo)之前插入內(nèi)容
命令模式 + a :append縮寫(xiě),代表在光標(biāo)之后插入內(nèi)容
3)退出編輯模式
在編輯模式中,直接按Esc,即可從編輯模式退出到命令模式。
五、可視化模式
1)如何進(jìn)入到可視化模式
在命令模式中,直接按ctrl + v(可視塊)或V(可視行)或v(可視),然后按下↑ ↓ ← →方向鍵來(lái)選中需要復(fù)制的區(qū)塊,按下y 鍵進(jìn)行復(fù)制(不要按下yy),最后按下p 鍵粘貼
退出可視模式按下Esc
2)可視化模式復(fù)制操作
第一步:在命令模式下,直接按小v,進(jìn)入可視化模式
第二步:使用方向鍵↑ ↓ ← →選擇要復(fù)制的內(nèi)容,然后按y鍵
第三步:移動(dòng)光標(biāo),停在需要粘貼的位置,按p鍵進(jìn)行粘貼操作
3)為配置文件添加#多行注釋(!)
第一步:按Esc退出到命令模式,按gg切換到第1行
第二步:然后按Ctrl+v進(jìn)入到可視化區(qū)塊模式(列模式)
第三步:在行首使用上下鍵選擇需要注釋的多行
第四步:按下鍵盤(pán)(大寫(xiě))“I”鍵,進(jìn)入插入模式(Shift + i)
第五步:輸入#號(hào)注釋符
第六步:輸入完成后,連續(xù)按兩次Esc即可完成添加多行注釋的過(guò)程
4)為配置文件去除#多行注釋(!)
第一步:按Esc退出到命令模式,按gg切換到第1行
第二步:然后按Ctrl+v進(jìn)入可視化區(qū)塊模式(列模式)
第三步:使用鍵盤(pán)上的方向鍵的上下選中需要移除的#號(hào)注釋
第四步:直接按Delete鍵即可完成刪除注釋的操作
六、VIM編輯器實(shí)用功能
1)代碼著色
之前說(shuō)過(guò)vim 是vi 的升級(jí)版本,其中比較典型的區(qū)別就是vim 更加適合coding,因?yàn)関im比vi 多一個(gè)代碼著色的功能,這個(gè)功能主要是為程序員提供編程語(yǔ)言升的語(yǔ)法顯示效果,如下:
第一步:定義后綴名為網(wǎng)頁(yè)文件的代碼文件
# vim index.php
第二步:編寫(xiě)對(duì)應(yīng)的PHP代碼
在VIM編輯器中,我們可以通過(guò):syntax on或:syntax off開(kāi)啟或關(guān)閉代碼著色功能。
2)異常退出解決方案
什么是異常退出:在編輯文件之后并沒(méi)有正常的去wq(保存退出),而是遇到突然關(guān)閉終端或者斷電的情況,則會(huì)顯示下面的效果,這個(gè)情況稱(chēng)之為異常退出:
溫馨提示:每個(gè)文件的異常文件都會(huì)有所不同,其命名規(guī)則一般為.文件名稱(chēng).swp
解決辦法:將交換文件(在編程過(guò)程中產(chǎn)生的臨時(shí)文件)刪除掉即可【在上述提示界面按下D 鍵或者使用rm 指令刪除交換文件】
# rm .1.php.swp
3)退出vim編輯器
回顧:在vim中,退出正在編輯的文件可以使用:q或者:wq除了上面的這個(gè)語(yǔ)法之外,vim 還支持另外一個(gè)保存退出(針對(duì)內(nèi)容)方法:x
?、?x在文件沒(méi)有修改的情況下,表示直接退出(等價(jià)于:q),在文件修改的情況下表示保存并退出(:wq)
② 如果文件沒(méi)有被修改,但是使用wq 進(jìn)行退出的話(huà),則文件的修改時(shí)間會(huì)被更新;但是如果文件沒(méi)有被修改,使用x 進(jìn)行退出的話(huà),則文件修改時(shí)間不會(huì)被更新的;主要是會(huì)混淆用戶(hù)對(duì)文件的修改時(shí)間的認(rèn)定。