vim可以分為三種狀態(tài),分別是 命令行模式(command mode) 、 輸入模式(Insert mode) 和 底行模式(last line mode) ,這 3 種工作模式可隨意切換,如下圖所示。
成都創(chuàng)新互聯(lián)主營安多網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),安多h5微信小程序開發(fā)搭建,安多網(wǎng)站營銷推廣歡迎安多等地區(qū)企業(yè)咨詢
使用vim編輯文件時,默認(rèn)處于命令行模式。此模式下,可使用方向鍵(上、下、左、右鍵)或 k、j、h、i 移動光標(biāo)的位置,還可以對文件內(nèi)容進(jìn)行復(fù)制、粘貼、替換、刪除等操作。
下圖所示是vim處于命令行模式的狀態(tài)示意圖。
在輸入模式下,vim可以對文件執(zhí)行寫操作,類似于在Windows系統(tǒng)的文檔中輸入內(nèi)容。
使vim進(jìn)行輸入模式的方式是在命令模式狀態(tài)下輸入 i 、 I 、 a 、 A 、 o 、 O 等插入命令(各指令的具體功能下表所示),當(dāng)編輯文件完成后按 esc 鍵即可返回命令模式。
下圖所示為vim處于輸入模式模式下的示意圖。
底行模式用于對文件中的指定內(nèi)容執(zhí)行保存、查找或替換等操作。
使vim切換到底行模式的方法是在 命令行模式 狀態(tài)下按 : 鍵(注意是英文符號),此時vim窗口的左下方出現(xiàn)一個 : 符號,這是就可以輸入相關(guān)指令進(jìn)行操作了。
指令執(zhí)行后vim會自動返回命令行模式。如想直接返回命令行模式,按 esc 即可。
下圖所示為vim進(jìn)入底行模式后的狀態(tài)。
對于新手來說,經(jīng)常不知道自己處于什么模式。不論是自己忘了,還是不小心切換了模式,都可以按一次 esc 鍵返回命令行模式。如果你多按幾次 esc 鍵后聽到"嘀————"的聲音,則代表你已經(jīng)處于命令行模式了。
打開文件
打開文件時光標(biāo)處于文件尾部
打開文件時,光標(biāo)定位到第幾行
字符移動
這些移動鍵都可以加上數(shù)字(5h:向左移動5個字符格)
單詞移動
行內(nèi)跳轉(zhuǎn)
行間移動
在底行模式下,直接給出行號,實現(xiàn)跳轉(zhuǎn)
用法:起始地址,結(jié)束地址 s @要替換內(nèi)容@替換后內(nèi)容@gi(@分隔符)
例 :1,$s/a/A/g 把文件中全部的a換替換成A,全局替換
顯示取消行號
設(shè)定自動縮進(jìn)(寫腳本時)
查找到的文本高亮顯示
語法高亮
/etc/vimrc :全局配置文件,永久有效
~/.vimrc :個人配置文件,每個用戶的家目錄中,若不存在,手動創(chuàng)建
對于第一次用vim的童鞋,有幾點需要提醒一下:
Vim 是 Vi 多模式命令行 編輯器 的加強(qiáng)版,通常默認(rèn)的Unix或Linux系統(tǒng)中都默認(rèn)自帶Vi命令編輯器。當(dāng)然,為了更好的體驗,如果系統(tǒng)默認(rèn)沒有安裝Vim,建議安裝Vim。
通過本文的講解,你將學(xué)會如何在Vim/Vi中快速的使用命令進(jìn)行查找替換文本。
首先,啟動Vim/Vi編輯器,處于正常模式下。如果你不確定是否處于正常模式下,這時你可以按“ESC”,編輯器就會進(jìn)入正常模式。
替換命令的格式一般如下:
該命令表示在[range]的每一行中搜索{pattern},并將其替換為{string}。 [count]是一個乘以命令的正整數(shù)。
如果沒有給出[range]和[count],則僅替換當(dāng)前行中找到的模式。
例如,要搜索當(dāng)前行中字符串“foo”的首次出現(xiàn),并將其替換為“bar”,可以使用:
要替換當(dāng)前行中搜索到的所有內(nèi)容,可以添加 g 標(biāo)志:
如果想搜索和替換整個文件中的匹配內(nèi)容,使用百分比字符 % 作為范圍。此字符指示從文件第一行到最后一行的范圍:
如果省略 {string} 部分即上面的bar,則將其視為空字符串,相當(dāng)于將匹配到的內(nèi)容替換為空,既刪除匹配到的內(nèi)容。
以下命令刪除當(dāng)前行中字符串“foo”的所有實例:
當(dāng)然,除了作為分隔符外,還可以使用任何其他非字母數(shù)字單字節(jié)字符,而不是斜杠字符( / )。例如:
要確認(rèn)每個替換,可以使用 c 標(biāo)志。
替換前會詢問:
按 y 替換匹配項,或按l替換匹配項并退出。 按 n 跳過當(dāng)前匹配,按 q 或 Esc 退出替換。 a 選項替換匹配項和所有剩余匹配項。
若要向下滾動屏幕,請使用 CTRL + Y ,向上滾動,請使用 CTRL + E 。
還可以使用 正則表達(dá)式 作為搜索模式,例如:
^ 符號表示與行首匹配, .* 表示匹配任意數(shù)量的字符。
默認(rèn)情況下,搜索操作區(qū)分大小寫;搜索“FOO”將與“FOo”不匹配。
要忽略搜索模式的案例,請使用 i 標(biāo)志:
另一種強(qiáng)制忽略案例的方法是在搜索模式后添加 \c 。例如, /Linux\c 執(zhí)行忽略大小寫搜索。
當(dāng)未指定范圍時,替換命令僅在當(dāng)前行中操作。
范圍可以是一行,也可以是兩行之間的范圍。 行說明符之間可用英文 , 分隔 ; 字符分割。 可以使用絕對行號或特殊符號指定范圍。
例如,要在從第3行到第10行的所有行中將所有出現(xiàn)的“ foo”替換為“ bar”,可以使用:
該范圍是包含范圍的,這意味著該范圍包括第一行和最后一行。
. 字符表示當(dāng)前行, $ 美元符號表示最后一行。 要在從當(dāng)前行到最后一行的所有行中替換“ foo”:
也可以使用“ +”或“-”符號來設(shè)置行說明符,其后是從前一個行號添加或減去的數(shù)字。 如果省略符號后的數(shù)字,則默認(rèn)為1。
例如,從當(dāng)前行和接下來的四行開始,用“ bar”替換每個“ foo”,鍵入:
替代命令將模式作為字符串而不是整個單詞查找。 例如,如果您正在搜索“ gnu”,則搜索查找匹配“ gnu”嵌入在較大單詞(例如“cygnus” 或 “magnum”)中的情況。
要搜索整個單詞,請鍵入\ 標(biāo)記單詞的開頭,輸入搜索模式,鍵入標(biāo)記單詞的結(jié)尾:
例如,要搜索單詞“ foo”,可以使用 \foo\ :
Vim會跟蹤您在當(dāng)前會話中運行的所有命令。
要瀏覽歷史記錄以查找先前的替代命令,請輸入 :s 并使用向上或向下箭頭鍵查找先前的替代操作。 要運行該命令,只需按Enter。 您也可以在執(zhí)行操作之前編輯命令。
注釋行(在行前添加#)從5到20:
取消注釋行從5到20,恢復(fù)以前的更改:
將“蘋果”,“橙色”和“芒果”的所有實例替換為“水果”:
刪除每行末尾的空格:
搜索和替換在Vim中是一個非常強(qiáng)大的功能,學(xué)會使用它能使您可以快速更改文本,提高自己的工作效率。
歡迎通過查看我個人介紹信息,私信跟我溝通!
vi profile
返回
:q 退出
:wq或者:x或者shift+zz 保存并退出
:q! 不保存并退出
:w 保存
:w! 強(qiáng)制保存
編輯到輸入模式:
i 在當(dāng)前光標(biāo)前面輸入
I 在當(dāng)前光標(biāo)所在行的行首,轉(zhuǎn)換為輸入模式
a 在當(dāng)前光標(biāo)后面輸入
A 在當(dāng)前光標(biāo)所在行的行尾,轉(zhuǎn)換為輸入模式
o 在當(dāng)前光標(biāo)所在行的下方,新建一行,并轉(zhuǎn)為輸入模式
O 在當(dāng)前光標(biāo)所在行的上方,新建一行,并轉(zhuǎn)為輸入模式
1、 移動光標(biāo)
字符:方向鍵上下左右或者鍵盤kjhl(上下左右)
單詞:w移至下一個單詞的詞首;e跳至當(dāng)前或下一個單詞的詞尾;b跳至當(dāng)前或前一個單詞的詞首
行內(nèi):0絕對行首;^行首的第一個非空白字符;$絕對行尾
行間:G文章末尾;3G第3行;gg文章開頭
翻屏:ctrl f【往后翻】;Ctrl b【往前翻】
2、 刪除、替換單個字符
x刪除光標(biāo)位置字符;3x刪除光標(biāo)開始3個字符;r替換光標(biāo)位置字符
dw刪除一個單詞;4dw刪除光標(biāo)開始的4個單詞;dd刪除光標(biāo)所在行;5dd刪除光標(biāo)開始的5行
3、復(fù)制粘貼剪切
yw復(fù)制一個單詞,p在該行粘貼單詞;yy復(fù)制整行,p在該行下方粘貼整行
dd剪切整行,p再粘貼整行;dw剪切一個單詞,p再粘貼一個單詞
4、 撤銷重做
u:撤銷;ctrl+r:重做撤銷的操作;.重復(fù)上一步的操作【假設(shè)先dd,再.,會再執(zhí)行dd命令】
1、 set設(shè)置
set nu
set nonu
set readonly #設(shè)置只讀文件,不能修改,只在當(dāng)前環(huán)境有效,退出文件,再次打開,這個只讀就無效了
set noreadonly #取消只讀
2、 /查找
/after查找文檔中的after【可以找到所有的after】,n向下翻,N向上翻
:/after查找文檔中的after所在行【可以找到所有的after】,n向下翻,N向上翻
3、!執(zhí)行命令
比如:查找root目錄
:!ls /root/
4、 查找并替換
格式
【 :查找范圍s/查找的詞/要替換的詞/ 】
或者【:查找范圍s#查找的詞#要替換的詞# 】
或者【:查找范圍s%查找的詞%要替換的詞%】,
即分隔符可以是/、#、%
其中, 查找范圍 包括【.當(dāng)前光標(biāo)行】;【$末尾行】;【%全文】;【g一行內(nèi)全部替換】;【i忽略大小寫】
比如 【 :.,$s/after/before/】 表示在當(dāng)前光標(biāo)行【.】到末尾【$】這個范圍內(nèi),將after替換為before, 但是如果一行有多個after的話,只會把第一個after替換掉 。
比如 【 :%s/after/before/】 表示在全文,將after替換為before,但是如果一行有多個after的話,只會把第一個after替換掉。
比如 【:%s/after/before/g】 ,表示在全文,將after替換為before,但是 如果一行有多個after的話,會把該行所有after替換掉,因為在命令里面加了g 。
比如 【:%s/after/before/gi】 ,表示在全文,將after替換為before,且忽略大小寫并替換一行內(nèi)所有after。
比如 【 :%d或者dG】 ,表示刪除全文
比如 【:1,$-4d】 ,表示刪除第一行到倒數(shù)第5行的數(shù)據(jù)
比如 【:1,4y】 ,表示復(fù)制1到4行,再按p可粘貼這4行
1)單字符替換:在命令模式下使光標(biāo)位于要替換的字符,按r,再按需要的字符;
2)取代字符串:在命令模式下
$s/string/replae/g
會將全文的string字符串取代為replace字符串,其中1,$s就是指搜尋區(qū)間為文章從頭至尾的意思,g則是表示全部取代不必確認(rèn)。
%s/string/replace/c:同樣會將全文的string字符串取代為replace字符串,和上面指令不同的地方是,%s和1,$s是相同的功能,c則是表示要替代之前必須再次確認(rèn)是否取代。
1,20s/string/replace/g:將1至20行間的string替代為relpace字符串。
當(dāng)前題目:linux中vi替換命令 linux怎么用vi命令修改文件
網(wǎng)站路徑:http://vcdvsql.cn/article22/hpgpjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、網(wǎng)站排名、軟件開發(fā)、微信公眾號、響應(yīng)式網(wǎng)站、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)