今日內(nèi)容
? ? ? ? VIM普通模式
? ? ? ? VIM編輯模式
? ? ? ? VIM命令模式
? ? ? ? VIM視圖模式
? ? ? ? VIM擴(kuò)展知識
?1.什么是VIM?
? ? ? ? 和Windows的記事本或Word文檔很像力九,都是用來編輯文件的胜臊。
?2.VI與VIM 有什么區(qū)別
? ??????vi和vim都是文本編輯器钟沛,只不過vim是vi的增強(qiáng)版,比vi多了語法高亮顯示丛晦,其他編輯功能? ??????幾乎無差,所以使用vi還是vim取決個(gè)人習(xí)慣办铡。(相當(dāng)于windows系統(tǒng)下的文本編輯軟件“記事? ??????本”與"notepad++"的區(qū)別)? ???PS:可以使用yum install vim -y安裝vim
?3.如何使用vim疾嗅? 它有四種模式
????????小結(jié):vim編輯打開文件整體流程如下:
? ? ? ? 1.默認(rèn)打開文件處于普通模式
? ? ? ? 2.從普通模式切換至編輯模式需要使用a,i,o
? ? ? ? 3.編輯模式修改完畢后需要先按ESC返回普通模式
? ? ? ? 4.在普通模式輸入":"或"/"進(jìn)入命令模式豪嗽,可實(shí)現(xiàn)文件的保存退出
? ? ? ? PS:在vim中谴蔑,無法直接從編輯模式切換到命令模式
? ? ?VIM普通模式
? ? ? ? ? #1.命令光標(biāo)跳轉(zhuǎn)
? ? ? ? ? G?#光標(biāo)跳轉(zhuǎn)至末端?
? ? ? ? ? gg#光標(biāo)跳轉(zhuǎn)至頂端?
? ? ? ? ? Ngg#光標(biāo)跳轉(zhuǎn)至當(dāng)前文件內(nèi)的N行
? ? ? ? ? $?#光標(biāo)跳轉(zhuǎn)至當(dāng)前光標(biāo)所在行的尾部?
? ? ? ? ? ^|0#光標(biāo)跳轉(zhuǎn)至當(dāng)前光標(biāo)所在行的首部
? ? ? ? ? #2.文件內(nèi)容較多
? ? ? ? ? ?ctrl+f #往下翻頁(行比較多)
? ? ? ? ? ?ctrl+b #往上翻頁? ??
? ? ? ? ? #3.復(fù)制與粘貼yy? ?p
? ? ? ? ? yy#復(fù)制當(dāng)前光標(biāo)所在的行??
? ? ? ? ? 5yy#復(fù)制當(dāng)前光標(biāo)以及光標(biāo)向下4行
????????????????p(小寫)? #粘貼至當(dāng)前光標(biāo)下一行?
? ? ? ? ? ? ? ? P(大寫)? #粘貼至當(dāng)前光標(biāo)上一行
? ? ? ? ? #4.刪除豌骏、剪貼、撤銷? ? ? ??
? ? ? ? ? dd#刪除當(dāng)前光標(biāo)所在的行?
? ? ? ? ? 4dd#刪除當(dāng)前光標(biāo)所在的行以及往下的3行
? ? ? ? ? ?dG#刪除當(dāng)前光標(biāo)及以后的所有行
? ? ? ? ? D#刪除當(dāng)前光標(biāo)及光標(biāo)以后的內(nèi)容??
? ? ? ? ? x #刪除當(dāng)前光標(biāo)標(biāo)記往后的字符? ? ? ?
? ? ? ? ? dd & p? #剪貼隐锭、先刪除dd(number dd)窃躲,后粘貼p? ? ? ?
? ? ? ? ? u #撤銷上一次的操作?
? ? ? ? ? #5.替換
????????????r? ? ? #替換當(dāng)前光標(biāo)標(biāo)記的單個(gè)字符? ? ??
? ? ? ? ? ? R#進(jìn)入REPLACE模式, 連續(xù)替換,ESC結(jié)束
? VIM編輯模式
? ? ?2.編輯模式(從普通模式進(jìn)入到編輯模式)
????????i #進(jìn)入編輯模式钦睡,光標(biāo)不做任何操作
????????a #進(jìn)入編輯模式蒂窒,將當(dāng)前光標(biāo)往后一位
????????o #進(jìn)入編輯模式,并在當(dāng)前光標(biāo)下添加一行空白內(nèi)容?
? ? ? ? I? #進(jìn)入編輯模式荞怒,并且光標(biāo)會跳轉(zhuǎn)至本行的頭部
? ? ? ? A? #進(jìn)入編輯模式洒琢,將光標(biāo)移動至本行的尾部
????????O? #進(jìn)入編輯模式,并在當(dāng)前光標(biāo)上添加一行空白內(nèi)容
? VIM命令模式
? ? ? ? 3.命令模式褐桌,主要用于搜索衰抑,保存,退出文件
? ??????#1.文件保存與退出:w 保存當(dāng)前狀態(tài)
????????:w!? ? 強(qiáng)制保存當(dāng)前狀態(tài)
????????:q? ? ? 退出當(dāng)前文檔(文檔必須保存才能退出)
????????:q!? ? 強(qiáng)制退出文檔不會修改當(dāng)前內(nèi)容
????????:wq? ? 先保存荧嵌,在退出
????????:wq!? ? 強(qiáng)制保存并退出
????????:x? ? ? 先保存呛踊,在退出
????????ZZ? ? ? 保存退出, shfit+zz
????????:number 跳轉(zhuǎn)至對應(yīng)的行號
? ?#文件保存? ? ?:wq? ?保存并退出? ? :wq!? ?強(qiáng)制保存并退出
? ??????#2.文件內(nèi)容查找/string #需要搜索的內(nèi)容(查找)
????????n #按搜索到的內(nèi)容依次往下進(jìn)行查找
? ? ? ? N #按搜索到的內(nèi)容依次往上進(jìn)行查找
#3.文件內(nèi)容替換
? ??????:1,5s#sbin#test#g? ? ?#替換1-5行中包含sbin的內(nèi)容為test
????????:%s#sbin#test#g #替換整個(gè)文本文件中包含sbin的替換為test
#4.文件內(nèi)容另存
? ??????:w /root/test.txt #將所有內(nèi)容另存為/root/test.txt文件中
VIM視圖模式
? ? ? ? 4.視圖模式(從普通模式進(jìn)入視圖模式),主要進(jìn)行批量操作
? ??????ctrl+v 進(jìn)入可視塊模式啦撮,選中需要注釋的行
? ? ? ? 1.插入:按shift+i進(jìn)入編輯模式,輸入#,結(jié)束按ESC鍵? ? 2.刪除:選中內(nèi)容后谭网,按x或者d鍵刪除
? ????? 3.替換:選中需要替換的內(nèi)容, 按下r鍵,然后輸入替換后的內(nèi)容
? ? ? ? ?shift+v 進(jìn)入可視行模式,選中整行內(nèi)容
? ? ????1.復(fù)制:選中行內(nèi)容后按y鍵及可復(fù)制赃春。
? ? ? ? ?2.刪除:選中行內(nèi)容后按d鍵刪除愉择。
VIM擴(kuò)展知識
? ? ? ? 1.環(huán)境變量臨時(shí)生效
? ??????:set nu #顯示行號
????????:set ic #忽略大小寫, 在搜索的時(shí)候有用
????????:set ai #自動縮進(jìn)
????????:set list #顯示制表符(空行、tab鍵)
????????:set no[nu|ic|ai…] #取消臨時(shí)設(shè)定的變量
? ? ? ? 2.環(huán)境變量永久生效织中。~/.vimrc 個(gè)人環(huán)境變量(優(yōu)先級高) /etc/vimrc 全局環(huán)境變量
? ??????# vim ~/.vimrc #當(dāng)下次再打開文件自動顯示行號并忽略大小寫
? ? ? ? ?set nu
? ? ? ? ?set ic
? ? ? ? ?#如果個(gè)人vim環(huán)境沒有配置, 則使用全局vim環(huán)境變量配置锥涕。#如果個(gè)人vim環(huán)境和全局環(huán)境變量產(chǎn)生沖突, 優(yōu)先使用個(gè)人vim環(huán)境變量。
? ? ? ? ? ?3.如何同時(shí)編輯多個(gè)文件
? ??????????vim -o file1 file2 #水平分割
????????????vim -O file1 file2 #垂直分割
????????????#ctrl+ww 文件間切換
? ? ? ? ? ? 4.相同文件之間差異對比抠璃,通常用于對比修改前后差異
? ??????????# diff #文件對比?
?????????????# vimdiff #以vim方式打開兩個(gè)文件對比站楚,高亮顯示不同的內(nèi)容
? ? ? ? ? ? 5.如果VIM非正常退出(Ctrl+Z)掛起或強(qiáng)制退出終端沒關(guān)閉VIM后
? ??????????#假設(shè)打開filename文件被以外關(guān)閉,需要刪除同文件名的.swp文件即可解決
????????????# rm -f .filename.swp