與vi編輯器有關(guān)的Linux終端命令

1雀扶、vi

  • viLinux系統(tǒng)中最經(jīng)典的文本編輯器。

  • vi的核心設(shè)計思想:讓程序員的手指始終保持在鍵盤的核心區(qū)域肆汹,就能完成所有的編輯操作愚墓。

    鍵盤核心區(qū)域示意圖

  • 沒有圖形界面的環(huán)境下,要編輯文件昂勉,vi是最佳的選擇浪册。

  • vi編輯器在系統(tǒng)管理服務(wù)器管理編輯文件時岗照,其功能永遠(yuǎn)不是圖形界面的編輯器所能比擬的议经。

  • 在實際應(yīng)用中,對服務(wù)器上的文件進(jìn)行簡單的修改可使用ssh命令遠(yuǎn)程登錄到服務(wù)器谴返,并使用vi編輯器進(jìn)行快速的編輯煞肾。

常見需要修改的文件
  • 源程序
  • 配置文件嗓袱。如:ssh的配置文件~/.ssh/config籍救。
vi的特點
  • 沒有圖形界面功能強(qiáng)大的編輯器。
  • 只能是編輯文本內(nèi)容渠抹,不能對字體蝙昙、段落進(jìn)行排版。
  • 不支持鼠標(biāo)操作梧却。
  • 沒有菜單奇颠。
  • 只有命令

2放航、vi和vim

  • vim是從vi發(fā)展出來的一個文本編輯器烈拒,它支持代碼補全編譯錯誤跳轉(zhuǎn)等方便編程的功能广鳍,在程序員中被廣泛使用荆几,被稱為編輯器之神
  • 在很多Linux發(fā)行版中赊时,直接把vi做成了vim的軟鏈接吨铸。也就是說在終端中輸入vi命令打開的是vim文本編輯器。

3祖秒、打開和新建文件

vi 文件名
  • 文件已存在诞吱,就會打開這個文件舟奠。
  • 文件不存在,將會新建一個文件房维。
打開文件并定位到指定行

在實際應(yīng)用中沼瘫,有時候我們需要打開一個文件并定位到指定行平痰。比如编曼,在編譯運行某個程序時,發(fā)現(xiàn)某行代碼有錯誤旭寿,就可以使用下面的命令快速定位到出錯代碼的位置暴浦。

vi 文件名 +行號
  • 只有+而不指定行號溅话,就會定位到文件的末尾
  • 只有vi 文件名歌焦,則會定位到文件的開頭飞几。

4、異常處理

  • 如果vi異常退出独撇,在磁盤上可能會保存有交換文件屑墨。
  • 再次使用vi編輯該文件時,將會看到如下圖所示的提示信息纷铣。這時只需按下鍵盤上的 d 鍵刪除交換文件即可卵史。
    異常處理示意圖

5、vi的三種工作模式

1) 命令模式
  • 使用vi打開文件首先進(jìn)入的是命令模式搜立。命令模式是vi入口以躯。
  • 通過命令對文件進(jìn)行常規(guī)的編輯操作。包括定位啄踊、翻頁忧设、復(fù)制粘貼颠通、刪除等等址晕。
  • 其他圖形界面的編輯器中,通過快捷鍵鼠標(biāo)實現(xiàn)的操作顿锰,在終端中都用命令模式來實現(xiàn)谨垃。
2) 末行模式
  • 退出vi返回控制臺,需要在末行模式下輸入命令撵儿。
  • 末行模式是vi出口乘客。

末行模式命令

命令 作用
:w 保存
:q 退出淀歇。如果沒有保存,不允許退出
:q! 強(qiáng)制退出匈织,即不保存退出
:wq 保存并退出
:x 保存并退出
3) 編輯模式
  • 編輯文字浪默。
三種工作模式之間的切換示意圖
在這里插入圖片描述

6牡直、常用命令

  • 重復(fù)次數(shù)

命令模式下,先輸入一個數(shù)字纳决,再跟上一個命令(可以是移動選擇命令碰逸,也可以是編輯操作命令),可以讓該命令重復(fù)執(zhí)行指定次數(shù)阔加。

  • 移動和選擇

vi之所以快饵史,關(guān)鍵在于能夠快速定位到要編輯的代碼行

移動命令可以和編輯操作命令組合使用胜榔。

  • 編輯操作

刪除胳喷、復(fù)制粘貼夭织、替換吭露、縮排

  • 撤銷和重復(fù)

  • 查找替換

  • 編輯

7尊惰、移動命令

  • 讲竿、弄屡、
命令 作用
h 向左
j 向下
k 向上
l 向右
  • 行內(nèi)移動
命令 作用
w 向后移動一個單詞
b 向前移動一個單詞
0 行首
^ 行內(nèi)的第一個非空字符
$ 行尾
  • 行數(shù)移動
命令 作用
gg 文件頂部
G 文件末尾
ngg 移動到指定數(shù)字的行(其中n為數(shù)字)
nG 移動到指定數(shù)字的行(其中n為數(shù)字)
:n 移動到指定數(shù)字的行(其中n為數(shù)字)
  • 屏幕移動
命令 作用
Ctrl + b 向上翻頁
Ctrl + f 向下翻頁
H 屏幕頂部
M 屏幕中間
L 屏幕底部
  • 段落移動(程序)

在程序開發(fā)過程中题禀,一段功能相關(guān)的代碼通常會寫在一起,并且這段代碼之間沒有空行膀捷,這就是段落迈嘹。vi中使用空行來區(qū)分段落。

命令 作用
{ 上一段
} 下一段
  • 括號切換(程序)

在程序中開發(fā)過程中担孔,()江锨、[]{}的使用頻率很高,并且都是成對出現(xiàn)的糕篇。

命令 作用
% 括號匹配及切換
  • 標(biāo)記(程序)
命令 作用
mx 添加標(biāo)記x啄育,其中x為標(biāo)記名稱
'x 直接定位到標(biāo)記x所在的位置
說明
  • 在程序開發(fā)過程中,若某一行代碼需要作稍后處理拌消,就可以對這行代碼進(jìn)行標(biāo)記挑豌。這樣就可以在需要時快速跳轉(zhuǎn)回來執(zhí)行其他的編輯操作
  • 標(biāo)記并不會高亮顯示字體墩崩,只是一個隱藏的標(biāo)記氓英。
  • 標(biāo)記名稱只能是a~zA~Z之間的任意一個字母。
  • 添加了標(biāo)記的如果被刪除鹦筹,則標(biāo)記也同時被刪除铝阐。
  • 其他行中添加了相同名稱的標(biāo)記,則之前添加的標(biāo)記會被替換铐拐。

8徘键、選中文本

  • vi選中文本练对,需要先用Visual命令切換到可視模式
  • vi提供了三種可視模式吹害。
命令 模式 作用
v 可視模式 從光標(biāo)位置開始選擇文本
V 可視行模式 選中光標(biāo)經(jīng)過的完整行
Ctrl + v 可視塊模式 選中垂直方向的文本
  • 可視模式下可以與移動命令組合使用螟凭。如:ggVG命令能夠選中所有文本
  • Esc鍵可撤銷選中它呀,返回命令模式螺男。

9、撤銷和恢復(fù)撤銷

命令 作用
u 撤銷上一步操作
Ctrl + r 恢復(fù)上一步操作

10纵穿、 刪除文本

命令 作用
x 刪除光標(biāo)所在字符下隧,或刪除選中文本
d + 移動命令 刪除移動命令對應(yīng)的內(nèi)容
dd 刪除光標(biāo)所在行
D 刪除光標(biāo)所在位置到行尾之間的內(nèi)容
說明
  • 可視模式選中的文本,無論用x命令還是d命令政恍,都可以刪除選中的文本汪拥。
刪除命令和移動命令常見的組合
組合 作用
dw 刪除從光標(biāo)所在位置到單詞末尾的內(nèi)容
d0 刪除從光標(biāo)所在位置到行首的內(nèi)容
d} 刪除從光標(biāo)所在位置到段落結(jié)尾的內(nèi)容
ndd 刪除從光標(biāo)所在行開始往下的(n-1)行(其中n為數(shù)字)
dnG 刪除從光標(biāo)所在行到指定行號的內(nèi)容(其中n為行號)
d'x 刪除從光標(biāo)所在行到標(biāo)記x所在行的內(nèi)容(其中x為標(biāo)記名稱)
注意
  • 刪除的內(nèi)容包括光標(biāo)所在的位置以及光標(biāo)所在的行

11篙耗、復(fù)制和粘貼

  • vi提供了一個被復(fù)制文本的緩沖區(qū)迫筑。
  • 復(fù)制命令將選中的文本保存在緩沖區(qū)。
  • 刪除命令刪除的文本也被保存在緩沖區(qū)宗弯。
  • 粘貼命令可以將緩沖區(qū)的文本插入到光標(biāo)所在的位置脯燃。
命令 作用
y + 移動命令 復(fù)制
yy 復(fù)制一行。nyy可復(fù)制多行(其中n為數(shù)字)
p 粘貼蒙保。np可粘貼多次(其中n為數(shù)字)
說明
  • d辕棚、x命令類似于圖形界面的剪切操作(Ctrl + X)。
  • y命令類似于圖形界面的復(fù)制操作(Ctrl + C)邓厕。
  • p命令類似于圖形界面的粘貼操作(Ctrl + V)逝嚎。
注意
  • vi的文本緩沖區(qū)只有一個。所以進(jìn)行多次的復(fù)制详恼、剪切操作补君,之前緩沖區(qū)的內(nèi)容會被覆蓋
  • vi文本緩沖區(qū)系統(tǒng)剪貼板不是同一個昧互。所以在其他軟件中使用Ctrl + C復(fù)制的內(nèi)容挽铁,在vi中不能通過p命令粘貼,能在編輯模式下使用鼠標(biāo)右鍵粘貼敞掘。

12叽掘、替換

命令 作用 工作模式
r 替換當(dāng)前字符 命令模式
R 替換光標(biāo)所在位置及往后的字符 替換模式
說明
  • R命令可進(jìn)入替換模式,替換完成后按Esc鍵可返回命令模式玖雁。
  • 替換命令的作用是不進(jìn)入編輯模式更扁,對文件進(jìn)行輕量級修改

13、縮排和重復(fù)執(zhí)行

  • 在程序開發(fā)過程中疯潭,縮排命令對于統(tǒng)一增加代碼的縮進(jìn)非常有用赊堪。
  • 在程序中面殖,縮進(jìn)通常用來表示代碼的歸屬關(guān)系竖哩。代碼前面的空格越少,級別越高脊僚;代碼前面的空格越多相叁,級別越低
  • 增加縮進(jìn):一次性在選中的代碼前增加4個空格辽幌。
  • 減少縮進(jìn):一次性在選中的代碼前刪除4個空格增淹。
命令 作用
>> 增加縮進(jìn)
<< 減少縮進(jìn)
. 重復(fù)上次命令
說明
  • 可視模式中,縮排命令只需用一個><乌企。

14虑润、查找

  • 常規(guī)查找
命令 作用
/str 查找str

查找到指定內(nèi)容后,使用Next命令查找下一個出現(xiàn)的位置加酵。

命令 作用
n 查找下一個
N 查找上一個
  • 單詞快速匹配
命令 作用
* 往后查找當(dāng)前光標(biāo)所在的單詞
# 往前查找當(dāng)前光標(biāo)所在的單詞
說明
  • 查找到的指定內(nèi)容會以高亮的方式顯示拳喻。
  • 如果不想看到高亮顯示,查找一個文件中不存在的內(nèi)容即可猪腕。

15冗澈、查找并替換

  • vi查找和替換命令需要在末行模式下執(zhí)行。
1) 全局替換

一次性替換文件中出現(xiàn)的所有舊文本陋葡。

:%s/舊文本/新文本/g
2) 可視區(qū)域替換

可視模式下選中要替換文本亚亲,使用下面的命令替換選中文本中出現(xiàn)的所有舊文本

:s/舊文本/新文本/g
3) 確認(rèn)替換(推薦使用)

全局替換命令末尾的g改成gc腐缤,則在替換時會有提示捌归,這就是確認(rèn)替換

:%s/舊文本/新文本/gc

提示之后可能要輸入的命令:

命令 作用
y 替換岭粤。如果有多個惜索,則一次只替換一個
n 不替換。如果有多個绍在,則一次只取消替換一個
a 替換所有
q 退出替換
l 替換最后一個门扇,并把光標(biāo)移動到行首
Ctrl + E 向下滾屏
Ctrl + Y 向上滾屏

16、插入

插入命令可以從命令模式切換到編輯模式 偿渡。

命令 作用
i 在當(dāng)前字符前插入文本
I 在行首插入文本
a 在當(dāng)前字符后插入文本
A 在行尾插入文本
o 在當(dāng)前行下面插入一空行臼寄,并把光標(biāo)移動到空行行首
O 在當(dāng)前行上面插入一空行,并把光標(biāo)移動到空行行首
1) 插入命令與數(shù)字的組合使用
  • 在程序開發(fā)過程中溜宽,可能會遇到需要重復(fù)N次的情況吉拳。

    如:需要在vi中輸入NHello World∈嗜啵可按如下操作進(jìn)行:

    ① 首先在命令模式中輸入數(shù)字N留攒,表示要重復(fù)N次煤惩。
    ② 緊接著輸入i進(jìn)入編輯模式
    ③ 在編輯模式中輸入要重復(fù)的內(nèi)容炼邀,即Hello World魄揉。
    ④ 最后按Esc鍵從編輯模式返回到命令模式,返回之后vi就會把②拭宁、③兩步的操作重復(fù)執(zhí)行(N - 1)次洛退。

注意
  • 正常開發(fā)時,進(jìn)入編輯模式前不要輸入數(shù)字杰标。
2) 利用可視塊給多行代碼添加注釋
  • 在程序開發(fā)過程中兵怯,可能會遇到需要一次性給多行代碼添加注釋的情況。

    如:需要給C語言的某一塊代碼添加注釋腔剂∶角可按如下操作進(jìn)行:

    ① 首先在命令模式中把光標(biāo)移動到需要添加注釋的第1行代碼,并按數(shù)字0來到行首掸犬。
    ② 緊接著按Ctrl + v進(jìn)入可視塊模式袜漩。
    ③ 在可視塊模式中按j鍵向下選中要添加注釋的代碼。
    ④ 再接著輸入I進(jìn)入編輯模式登渣,并在行首插入注釋符噪服,即//
    ⑤ 最后按Esc鍵從編輯模式返回到命令模式胜茧,返回之后vi就會在之前選中的每一行代碼前插入注釋符//粘优。

注意
  • 可視塊模式中使用i不能進(jìn)入編輯模式,需要使用I進(jìn)入編輯模式呻顽。

17雹顺、末行命令擴(kuò)展

末行命令主要針對文件進(jìn)行操作,包括保存廊遍、退出嬉愧、保存并退出搜索并替換喉前、另存為没酣、瀏覽文件新建文件等等卵迂。

命令 作用
:e . 打開內(nèi)置的文件瀏覽器裕便,瀏覽當(dāng)前目錄下的文件。使用j见咒、k偿衰、Enter鍵可瀏覽或打開文件
:e 文件名 切換到當(dāng)前目錄下指定的文件。不需要退出vi
:n 文件名 新建文件
:w 文件名 另存為。編輯的仍然是當(dāng)前文件下翎,不會切換文件
:%s///gc 確認(rèn)搜索并替換
說明
  • 切換文件之前缤言,必須保證當(dāng)前文件已保存
  • 在程序開發(fā)過程中视事,可以使用w命令進(jìn)行階段性備份胆萧。

18、分屏

分屏命令屬于vi的高級命令郑口,使用它可以同時編輯和查看多個文件鸳碧。

命令 作用
:sp [文件名] 橫向分屏
:vsp [文件名] 縱向分屏
說明
  • 文件名不知道的情況下,可以使用:sp .命令(或:vsp .命令)犬性。此命令打開的是內(nèi)置的文件瀏覽器,可瀏覽當(dāng)前目錄下的文件腾仅。
切換分屏窗口

分屏窗口基于window乒裆,在實際操作時表現(xiàn)為基于Ctrl + W這個快捷鍵。也就是說推励,使用下面的命令之前需要先按Ctrl + W鹤耍。

命令 作用
w 切換到一個窗口
r 互換窗口
c 關(guān)閉當(dāng)前窗口
q 退出當(dāng)前窗口。如果是最后一個窗口验辞,則關(guān)閉vi
o 關(guān)閉其他窗口
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末稿黄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子跌造,更是在濱河造成了極大的恐慌杆怕,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壳贪,死亡現(xiàn)場離奇詭異陵珍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)违施,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門互纯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人磕蒲,你說我怎么就攤上這事留潦。” “怎么了辣往?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵兔院,是天一觀的道長。 經(jīng)常有香客問我排吴,道長秆乳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮屹堰,結(jié)果婚禮上肛冶,老公的妹妹穿的比我還像新娘。我一直安慰自己扯键,他們只是感情好睦袖,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荣刑,像睡著了一般馅笙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厉亏,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天董习,我揣著相機(jī)與錄音,去河邊找鬼爱只。 笑死皿淋,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的恬试。 我是一名探鬼主播窝趣,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼训柴!你這毒婦竟也來了哑舒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤幻馁,失蹤者是張志新(化名)和其女友劉穎洗鸵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宣赔,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡预麸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了儒将。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吏祸。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖钩蚊,靈堂內(nèi)的尸體忽然破棺而出贡翘,到底是詐尸還是另有隱情,我是刑警寧澤砰逻,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布鸣驱,位于F島的核電站,受9級特大地震影響蝠咆,放射性物質(zhì)發(fā)生泄漏踊东。R本人自食惡果不足惜北滥,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闸翅。 院中可真熱鬧再芋,春花似錦、人聲如沸坚冀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽记某。三九已至司训,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間液南,已是汗流浹背壳猜。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留贺拣,地道東北人蓖谢。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像譬涡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子啥辨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • vi —— 終端中的編輯器 目標(biāo) vi 簡介 打開和新建文件 三種工作模式 常用命令 分屏命令 常用命令速查圖 0...
    醬油哥帶你學(xué)閱讀 1,450評論 0 1
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,370評論 0 5
  • 1. 關(guān)于Vim vim是我最喜歡的編輯器涡匀,也是linux下第二強(qiáng)大的編輯器。 雖然emacs是公認(rèn)的世界第一溉知,我...
    Dyworldhua閱讀 1,364評論 0 2
  • 目標(biāo) vi 簡介 打開和新建文件 三種工作模式 常用命令 分屏命令 常用命令速查圖 01. vi 簡介 1.1 學(xué)...
    __深藍(lán)__閱讀 484評論 0 1
  • vi —— 終端中的編輯器 目標(biāo) vi 簡介 打開和新建文件 三種工作模式 常用命令 分屏命令 常用命令速查圖 0...
    努力爬行中的蝸牛閱讀 775評論 0 0