編輯器之神——vim編輯器

編輯器之神——vim編輯器

?一、vi介紹 Vi編輯器是所有Unix及Linux系統(tǒng)下標(biāo)準(zhǔn)的編輯器,類似于windows系統(tǒng)下的notepad(記事本)編輯器,由于在Unix及Linux系統(tǒng)的任何版本,Vi編輯器是完全相同的,因此可以在其他任何介紹vi的地方都能進(jìn)一步了解它,Vi也是Linux中最基本的文本編輯器,學(xué)會它后,我們將在Linux的世界里暢行無阻,尤其是在終端中。 關(guān)于vim: vi和vim都是Linux中的編輯器,不同的是,vim比較高級,可以視為vi的升級版本。vi使用于文本編輯,但是vim更適用于coding(寫代碼的)。

Vim重點是光標(biāo)的移動,模式切換,刪除,查找,替換,復(fù)制,粘貼,撤銷命令的使用。

二、vim三種模式(重點)

?Vim中存在三種模式(大眾的認(rèn)知):命令模式、編輯模式(輸入模式)、末行模式(尾行模式)。

?命令模式:在該模式下是不能對文件直接編輯,可以輸入快捷鍵(命令)進(jìn)行一些操作(刪除行,復(fù)制行,移動光標(biāo),粘貼等等)【打開文件之后默認(rèn)進(jìn)入的模式】;

編輯模式:在該模式下可以對文件的內(nèi)容進(jìn)行編輯;

末行模式:可以在末行輸入命令來對文件進(jìn)行操作(搜索、替換、保存、退出、撤銷、高亮等等);

?Vim的打開文件的方式(4種,要求掌握的就前三種):

?#vim 文件路徑

作用:打開指定的文件

#vim +數(shù)字 文件的路徑

作用:打開指定的文件,并且將光標(biāo)移動到指定行

?#vim +/關(guān)鍵詞 文件的路徑

?作用:打開指定的文件,并且高亮顯示關(guān)鍵詞

?#vim 文件路徑1 文件路徑2 文件路徑3…

作用:同時打開多個文件

重點:先復(fù)制出一個/etc/passwd文件,復(fù)制當(dāng)前家目錄下(千萬不要在etc下直接修改?。。。?/p>

?#cp /etc/passwd ~/ 后續(xù)一切vim命令都是基于/root/passwd文件進(jìn)行操作。 退出方式:輸入” :q”按下回車即可

補(bǔ)充:在后期使用的Linux系統(tǒng)中,有些分支可能沒有初始自帶vim,而自帶了vi,那么vim指令是不能直接使用的,需要先安裝。

三、命令模式 注意:該模式是打開文件的第一個看到的模式(打開文件即可進(jìn)入) 1、光標(biāo)移動

①光標(biāo)移動到行首 按鍵:shift + 6 或 ^(T字母上面的6,不要按小鍵盤的6)

?②光標(biāo)移動到行尾 按鍵:shift + 4 或 $(R字母的左上角的4,不是小鍵盤的4)

?③光標(biāo)移動到首行行首 按鍵:gg

?④光標(biāo)移動到末行行首 按鍵:G [Capslk 再加 G鍵] / [Shift + G鍵]

⑤翻屏 向上翻屏:按鍵ctrl + b (before) 或 PgUp

向下翻屏:按鍵ctrl + f (after) 或 PgDn

向上翻半屏:按鍵ctrl + u (up)??????????? 向下翻半屏:按鍵ctrl + d (down)

⑥向上/下/左/右移動指定的行/列 數(shù)字↑/↓/←/→

⑦快速定位到指定行 數(shù)字G

?2、復(fù)制操作

?①復(fù)制光標(biāo)所在行 按鍵:yy 粘貼:在想要粘貼的地方按下p鍵【將粘貼在光標(biāo)所在行的下一行】,如果想粘貼在光標(biāo)所在行之前,則使用P鍵

?②以光標(biāo)所在行為準(zhǔn)(包含當(dāng)前行),向下復(fù)制指定的行數(shù) 按鍵:數(shù)字yy

③可視化模式下復(fù)制 按鍵:ctrl + v(可視塊)或V(可視行)或v(可視),然后按下↑↓←→方向鍵來選中需要復(fù)制的區(qū)塊,按下y鍵進(jìn)行復(fù)制(不要按下yy),最后按下p鍵粘貼 退出可視模式按下Esc。

?3、剪切/刪除

?①剪切/刪除光標(biāo)所在行 按鍵:dd (刪除之后下一行上移)

注意:dd嚴(yán)格意義上說是剪切命令,但是如果剪切了不粘貼就是刪除的效果。

?②剪切/刪除光標(biāo)所在行為準(zhǔn)(包含當(dāng)前行),

向下刪除/剪切指定的行 按鍵:數(shù)字dd (刪除之后下一行上移)

③剪切/刪除光標(biāo)所在的當(dāng)前行(光標(biāo)所在位置)之后的內(nèi)容,但是刪除之后下一行不上移 按鍵:D (刪除之后當(dāng)前行會變成空白行)

?④可視化刪除 按鍵:ctrl + v(可視塊)或V(可視行)或v(可視),上下左右移動,按下D表示刪除選中行,d表示刪選中塊 退出可視模式按下Esc。

4、撤銷/恢復(fù)

撤銷:輸入“:u”(不屬于命令模式) 或者 u (undo)

?恢復(fù):ctrl + r 恢復(fù)(取消)之前的撤銷操作

?四、模式間的切換(重點)

末行模式進(jìn)入之后的特征:光標(biāo)在最后一行上 編輯模式進(jìn)入之后的特征:在最后一行有類似于“------插入(insert)-----”的提

注意:末行模式和編輯模式之間是沒有辦法直接切換的,必須先走命令模式。

五、末行模式

進(jìn)入方式:由命令模式進(jìn)入,按下“:”或者“/(表示查找)”即可進(jìn)入

退出方式: a. 按下esc b. 連按2次esc鍵 c. 刪除末行全部輸入字符

①保存操作(write) 輸入:“:w” 保存文件 輸入:“:w 路徑” 另存為

②退出(quit) 輸入:“:q” 退出文件 默認(rèn)情況下,退出的時候需要對已經(jīng)進(jìn)行修改的文件進(jìn)行保存(:w),然后才能退出。

③保存并退出 輸入:“:wq” 保存并且退出

④強(qiáng)制 (!) 輸入:“:q!” 表示強(qiáng)制退出,剛才做的修改操作不做保存

⑤調(diào)用外部命令(了解) 輸入:“:!外部命令” 【外部指令寫法與在正常終端中執(zhí)行一樣】

例如:在打開文件之后執(zhí)行外部指令“l(fā)s -la /” 當(dāng)外部命令執(zhí)行結(jié)束之后按下任意鍵回到vim編輯器打開的內(nèi)容

⑥搜索/查找 輸入:“/關(guān)鍵詞” 【按下/也是進(jìn)入末行模式的方式之一】

?例如:我想在passwd文件中搜索“sbin”關(guān)鍵詞 在搜索結(jié)果中切換上/下一個結(jié)果:N/n 大n向上,小n向下 (next) 如果需要取消高亮,則需要輸入:“:nohl”【no highlight】

?⑦替換

1 、 :s/????? 搜索的關(guān)鍵詞/新的內(nèi)容 替換光標(biāo)所在行的第一處符合條件的內(nèi)容

2、 :s/??????? 搜索的關(guān)鍵詞/新的內(nèi)容/g 替換光標(biāo)所在行的全部符合條件的內(nèi)容

3、 :%s/????? 搜索的關(guān)鍵詞/新的內(nèi)容 替換整個文檔中每行第一個符合條件的內(nèi)容

?4、 :%s/????? 搜索的關(guān)鍵詞/新的內(nèi)容/g 替換整個文檔的符合條件的內(nèi)容 %表示整個文件 g表示全局(global)

2、加/g

3、 :%s/??? 搜索的關(guān)鍵詞/新的內(nèi)容

4、

?⑧顯示行號(臨時)

?輸入:“:set nu”[number] 如果想取消顯示,則輸入:“:set nonu”

?⑨擴(kuò)展1:使用vim同時打開多個文件,在末行模式下進(jìn)行切換文件

查看當(dāng)前已經(jīng)打開的文件名稱:“:files”

在%a的位置有2種顯示可能

?%a:a=active,表示當(dāng)前正在打開的文件;

#:表示上一個打開的文件

?切換文件的方式:

a. 如果需要指定切換文件的名稱,則可以輸入:“:open 已經(jīng)打開的文件名”

第二步: 切換文件: 如果需要指定切換文件的名稱,則可以輸入:“:open 已經(jīng)打開的文件名”

?b. 可以通過其他命令來切換上一個文件/下一個文件

?輸入:“:bn”切換到下一個文件(back next)

?輸入:“:bp”切換到上一個文件(back prev)

⑩擴(kuò)展2:部分命令模式操作使用末行模式實現(xiàn) a. (命令模式下的操作在末行中實現(xiàn))末行模式下的復(fù)制(yy)、剪切(dd)、刪除(dd)操作

復(fù)制語法:“:開始行號,結(jié)束行號y”

剪切刪除語法:“:開始行號,結(jié)束行號d”

擴(kuò)展:

一步到位的復(fù)制語法——“:開始行號,結(jié)束行號 co 粘貼到的行號”

剪切粘貼一步到位語法——“:開始行號,結(jié)束行號 m 粘貼到的行號”

?b. 末行模式下的快速移動方式:移動到指定的行 按鍵:輸入英文“:”,其后輸入行數(shù)數(shù)字,按下回車

六、編輯模式

?重點看前2個進(jìn)入方式:i(insert)、a(after)。 退出方式:按下esc鍵

七、實用功能

?1、代碼著色

Vim/etc/passwd

如何控制著色顯示與否?

進(jìn)入末行模式顯示:“:syntax on”

syntax:語法

關(guān)閉顯示:“:syntax off”

?2、vim中計算器的使用

當(dāng)在編輯文件的時候突然需要使用計算器去計算一些公式,則此時需要用計算器,但是需要退出,vim自身集成了一個簡易的計算器。

a. 進(jìn)入編輯模式

?b. 按下按鍵“ctrl + R鍵”,然后輸入“=”,此時光標(biāo)會變到最后一行

c. 輸入需要計算的內(nèi)容,按下回車

八、擴(kuò)展(3)

1、vim的配置

?Vim是一款編輯器,編輯器也是有配置文件的。 Vim配置有三種情況:

?a.在文件打開的時候在末行模式下輸入的配置(臨時的)

案例: (顯示出行號之后我們怎么隱藏行號呢,敲命令 :set nonumber 或者 :set nonu 然后回車 )

?b. 個人配置文件(~/.vimrc,如果沒有可以自行新建)

c. 全局配置文件(vim自帶,/etc/vimrc)

?注:是一個遞進(jìn)的關(guān)系: A 針對本次 B 針對個人 C 針對整個計算機(jī)

①新建好個人配置文件之后進(jìn)入編輯

第一步: #touch ~/.vimrc

第二步:

②在配置文件中進(jìn)行配置

比如顯示行號:set nu

注意:配置好之后vim打開文件就會永遠(yuǎn)顯示行號。 注意:只是針對當(dāng)前用戶

?Set nu (個人)

?全局 (全局)

那么會以誰的為準(zhǔn)?

第二步:查看是否顯示:

執(zhí)行結(jié)果:

注意:顯示說明以個人為準(zhǔn):

避免偶然性:

個人的設(shè)置:

第一步:

保存并執(zhí)行效果

全局配置文件(vim自帶,/etc/vimrc)

問題:如果某個配置項,在個人配置文件與全局配置文件產(chǎn)生沖突的時候應(yīng)該以誰為準(zhǔn)?

?測試步驟:在兩個配置文件中針對同一個配置項設(shè)置不同的值

①先在全局的配置中設(shè)置不顯示行號,在個人的配置文件中設(shè)置顯示行號,觀察結(jié)果 最后顯示行號:說明以個人為準(zhǔn)

?②先在全局中配置顯示行號,在個人中設(shè)置不顯示行號,觀察結(jié)果 最后的顯示是不顯示行號,說明以個人為準(zhǔn)

結(jié)論:如果針對同一個配置項,個人配置文件中存在,則以個人配置文件為準(zhǔn),如果個人配置文件中不存在這一項,則以全局配置文件為準(zhǔn)。(個人>全局)

?2、異常退出

什么是異常退出:在編輯文件之后并沒有正常的去wq(保存退出),而是遇到突然關(guān)閉終端或者斷電的情況,則會顯示下面的效果,這個情況稱之為異常退出:

解決辦法:

?1、將交換文件(在編程過程中產(chǎn)生的臨時文件)刪除掉即可

2、刪除之前文件

#rm -f .passwd.swp

3、別名機(jī)制

作用:相當(dāng)于創(chuàng)建一些屬于自己的自定義命令

例如:在windows下有cls命令,在Linux下可能因為沒有這個命令而不習(xí)慣清屏。現(xiàn)在可以通過別名機(jī)制來解決這個問題,可以自己創(chuàng)造出cls命令

別名機(jī)制依靠一個別名映射文件:~/.bashrc

映射文件就是對于關(guān)系文件

?青青的 鮮花

綠綠的 天空

藍(lán)藍(lán)的 小草

把以上內(nèi)容進(jìn)行連線就是映射文件 #vim ~/.bashrc

內(nèi)容效果:

?或者:


注意:如果想新創(chuàng)造的命令生效,必須要重新登錄當(dāng)前用戶。

?4、退出方式

回顧:之前vim中退出編輯的文件可以使用“:q”或者“:wq”。

?除了上面的這個語法之外,vim還支持另外一個保存退出方法“:x”。 說明:

?①“:x”在文件沒有修改的情況下,表示直接退出,在文件修改的情況下表示保存并退出;

②如果文件沒有被修改,但是使用wq進(jìn)行退出的話,則文件的修改時間會被更新;但是如果文件沒有被修改,使用x進(jìn)行退出的話,則文件修改時間不會被更新的;主要是會混淆用戶對文件的修改時間的認(rèn)定。

因此建議以后使用“:x”來進(jìn)行對文件的保存退出。 但是:不要使用X,不要使用X,不要使用X,X表示對文件進(jìn)行加密操作。(大寫X表示加密)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容