09_vi和vim

VI

vi是“Visual interface”的簡稱片任,它在Linux上的地位就仿佛Edit程序在DOS上一樣。它可以執(zhí)行輸出颅夺、刪除朋截、查找、替換吧黄、塊操作等眾多文本操作部服,而且用戶可以根據(jù)自己的需要對其進(jìn)行定制。Vi不是一個排版程序拗慨,它不象Word或WPS那樣可以對字體廓八、格式、段落等其他屬性進(jìn)行編排赵抢,它只是一個文本編輯程序剧蹂。 vi沒有菜單,只有命令烦却,且命令繁多宠叼。

Vi有三種基本工作模式:

  • 命令模式
  • 文本輸入模式
  • 末行模式。
image.png
  1. 命令行模式
    任何時候其爵,不管用戶處于何種模式冒冬,只要按一下ESC鍵,即可使Vi進(jìn)入命令模式摩渺;我們在shell環(huán)境(提示符為$)下輸入啟動Vi命令简烤,進(jìn)入編輯器時,也是處于該模式下摇幻。在該模式下横侦,用戶可以輸入各種合法的Vi命令,用于管理自己的文檔囚企。此時從鍵盤上輸入的任何字符都被當(dāng)做編輯命令來解釋丈咐,若輸入的字符是合法的Vi命令,則Vi在接受用戶命令之后完成相應(yīng)的動作龙宏。但需注意的是棵逊,所輸入的命令并不在屏幕上顯示出來。若輸入的字符不是Vi的合法命令银酗,Vi會響鈴報警辆影。
  2. 文本輸入模式
    在命令模式下輸入插入命令i徒像、附加命令a 、打開命令o蛙讥、修改命令c锯蛀、取代命令r或替換命令s都可以進(jìn)入文本輸入模式。在該模式下次慢,用戶輸入的任何字符都被Vi當(dāng)做文件內(nèi)容保存起來旁涤,并將其顯示在屏幕上。在文本輸入過程中迫像,若想回到命令模式下劈愚,按鍵ESC即可。
  3. 末行模式
    末行模式也稱ex轉(zhuǎn)義模式闻妓。在命令模式下菌羽,用戶按“:”鍵即可進(jìn)入末行模式下,此時Vi會在顯示窗口的最后一行(通常也是屏幕的最后一行)顯示一個“:”作為末行模式的提示符由缆,等待用戶輸入命令注祖。多數(shù)文件管理命令都是在此模式下執(zhí)行的(如把編輯緩沖區(qū)的內(nèi)容寫到文件中等)。末行命令執(zhí)行完后均唉,Vi自動回到命令模式是晨。例如:
    :sp newfile
    則分出一個窗口編輯newfile文件。如果要從命令模式轉(zhuǎn)換到編輯模式浸卦,可以鍵入命令a或者i署鸡;如果需要從文本模式返回,則按Esc鍵即可限嫌。在命令模式下輸入“:”即可切換到末行模式靴庆,然后輸入命令。
  • 命令模式進(jìn)入文本模式
i: 插入光標(biāo)前一個字符
I: 插入行首
a: 插入光標(biāo)后一個字符
A: 插入行未
o: 向下新開一行,插入行首
O: 向上新開一行,插入行首 
s:刪除一個字符后插入
S:刪除一行后插入 
  • 進(jìn)入命令模式:ESC:從插入模式或末行模式進(jìn)入命令模式

  • 移動光標(biāo):

h: 左移
j: 下移
k: 上移
l: 右移
M: 光標(biāo)移動到中間行
L: 光標(biāo)移動到屏幕最后一行行首
G: 移動到指定行,行號 -G
w: 向后一次移動一個字
b: 向前一次移動一個字
{: 按段移動,上移
}: 按段移動,下移
Ctr-d: 向下翻半屏
Ctr-u: 向上翻半屏
Ctr-f: 向下翻一屏
Ctr-b: 向上翻一屏
gg: 光標(biāo)移動文件開頭
G: 光標(biāo)移動到文件末尾  
  1. 命令行模式下分別按下gg=G四個按鍵怒医,可以格式化代碼
  2. 行數(shù)G可以跳轉(zhuǎn)到該行
  3. 末行模式下:行數(shù)+回車也可以跳轉(zhuǎn)到該行
  4. 光標(biāo)定位在{炉抒,按下%可以快速定位到對應(yīng)的}
  5. 上面的操作針對(也適用
  6. >>相當(dāng)于一個Tab鍵
  7. <<相當(dāng)于刪除一個Tab鍵
  • 刪除命令:
x: 刪除光標(biāo)后一個字符,相當(dāng)于 Del
X: 刪除光標(biāo)前一個字符,相當(dāng)于 Backspace
dd: 刪除光標(biāo)所在行,n dd 刪除指定的行數(shù) 
D: 刪除光標(biāo)后本行所有內(nèi)容,包含光標(biāo)所在字符
d0: 刪除光標(biāo)前本行所有內(nèi)容,不包含光標(biāo)所在字符
dw: 刪除光標(biāo)開始位置的字,包含光標(biāo)所在字符
  1. 按下10dd就會從當(dāng)前光標(biāo)向下刪除10行
  2. d$也是光標(biāo)后本行所有內(nèi)容,包含光標(biāo)所在字符,和D一樣
  3. 按下v稚叹,最下方出現(xiàn)可視二字焰薄,即可開始選擇內(nèi)容,再按下dd扒袖,刪除選擇的內(nèi)容
  • 撤銷命令:
u: 一步一步撤銷
Ctr-r: 反撤銷
  • 重復(fù)命令:
.: 重復(fù)上一次操作的命令
  • 文本行移動:
>>: 文本行右移
<<: 文本行左移
  • 復(fù)制粘貼:
yy: 復(fù)制當(dāng)前行,n yy 復(fù)制 n 行
p: 在光標(biāo)所在位置向下新開辟一行,粘貼
  • 可視模式:
v: 按字符移動,選中文本
V: 按行移動,選中文本可視模式可以配合 d, y, >>, << 實現(xiàn)對文本塊的刪除,復(fù)制,左右移動
  • 替換操作:
r: 替換當(dāng)前字符
R: 替換當(dāng)前行光標(biāo)后的字符
  • 查找命令:
/: str查找
n: 下一個
N:上一個  
  1. 在編程中塞茅,光標(biāo)定位在變量上,按下*鍵季率,可以定位到該變量的下一處引用
  • 替換命令:把a(bǔ)bc全部替換成123
末行模式下野瘦,將光標(biāo)所在行的abc替換成123
:%s/abc/123/g
末行模式下,將第一行至第10行之間的abc替換成123
:1, 10s/abc/123/g  

同上,但要用戶一個個確認(rèn)是否替換

:%s/abc/123/gc 
  1. 后面的/g表示全部鞭光,如果沒有/g就只是將每一行找到的第一個替換
  2. s只替換找到的第一個吏廉,%s通篇查找替換
  3. 可以使用 # 作為分隔符,此時中間出現(xiàn)的 / 不會作為分隔符
    :s#vivian/#sky/# 替換當(dāng)前行第一個 vivian/ 為 sky/
  • 查看 Man Page:
光標(biāo)移動到函數(shù)上,Shift-k 光標(biāo)移動到函數(shù)上,3Shift-k,查看第三章的 ManPage

shift-kK等同

  • 查看宏定義:
[+d: 可以查看宏定義,必須先包含此宏所在的頭文件
  • 代碼排版:
gg=G: 代碼自動縮進(jìn)排版
  • vim里執(zhí)行 shell 下命令:
末行模式里輸入!,后面跟命令  

用vi文本編輯器來編輯生成文件

  • 最基本用法
    vi somefile.4
    1惰许、首先會進(jìn)入“一般模式(命令模式)”席覆,此模式只接受各種快捷鍵,不能編輯文件內(nèi)容
    2汹买、按i鍵佩伤,就會從一般模式進(jìn)入編輯模式,此模式下晦毙,敲入的都是文件內(nèi)容
    3畦戒、編輯完成之后,按Esc鍵退出編輯模式结序,回到一般模式;
    4纵潦、再按:徐鹤,進(jìn)入“底行命令模式”,輸入wq命令邀层,回車即可

  • 一些常用快捷鍵
    一些有用的快捷鍵(在一般模式(命令模式)下使用):
    a 在光標(biāo)后一位開始插入
    A 在該行的最后插入
    I 在該行的最前面插入
    gg 直接跳到文件的首行
    G 直接跳到文件的末行
    dd 刪除行返敬,如果 5dd ,則一次性刪除光標(biāo)后的5行
    yy 復(fù)制當(dāng)前行, 復(fù)制多行寥院,則 3yy劲赠,則復(fù)制當(dāng)前行附近的3行
    p 粘貼
    v 進(jìn)入字符選擇模式,選擇完成后秸谢,按y復(fù)制凛澎,按p粘貼
    ctrl+v 進(jìn)入塊選擇模式,選擇完成后估蹄,按y復(fù)制塑煎,按p粘貼
    shift+v 進(jìn)入行選擇模式,選擇完成后臭蚁,按y復(fù)制最铁,按p粘貼

命令模式
  • ctrl+b:上一頁
  • ctrl+f:下一頁

查找并替換(在底行命令模式中輸入)
%s/sad/88888888888888 效果:查找文件中所有sad,替換為88888888888888
/you 效果:查找文件中出現(xiàn)的you垮兑,并定位到第一個找到的地方冷尉,按n可以定位到下一個匹配位置(按N定位到上一個)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市系枪,隨后出現(xiàn)的幾起案子雀哨,更是在濱河造成了極大的恐慌,老刑警劉巖嗤无,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件震束,死亡現(xiàn)場離奇詭異怜庸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)垢村,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進(jìn)店門割疾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘉栓,你說我怎么就攤上這事宏榕。” “怎么了侵佃?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵麻昼,是天一觀的道長。 經(jīng)常有香客問我馋辈,道長抚芦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任迈螟,我火速辦了婚禮叉抡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘答毫。我一直安慰自己褥民,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布洗搂。 她就那樣靜靜地躺著消返,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耘拇。 梳的紋絲不亂的頭發(fā)上撵颊,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天,我揣著相機(jī)與錄音驼鞭,去河邊找鬼秦驯。 笑死,一個胖子當(dāng)著我的面吹牛挣棕,可吹牛的內(nèi)容都是我干的译隘。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼洛心,長吁一口氣:“原來是場噩夢啊……” “哼固耘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起词身,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤厅目,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體损敷,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡葫笼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拗馒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片路星。...
    茶點(diǎn)故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖诱桂,靈堂內(nèi)的尸體忽然破棺而出洋丐,到底是詐尸還是另有隱情,我是刑警寧澤挥等,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布友绝,位于F島的核電站,受9級特大地震影響肝劲,放射性物質(zhì)發(fā)生泄漏迁客。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一辞槐、第九天 我趴在偏房一處隱蔽的房頂上張望哲泊。 院中可真熱鬧,春花似錦催蝗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缰冤,卻和暖如春犬缨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棉浸。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工怀薛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人迷郑。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓枝恋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嗡害。 傳聞我的和親對象是個殘疾皇子焚碌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評論 2 361

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