Linux學習筆記(第零篇)計算機基礎Linux學習筆記(第零篇)Linux檔案系統及Shell
Linux學習筆記(第一篇)零散指令
Linux學習筆記(第二篇)目錄操作指令
Linux學習筆記(第三篇)檔案操作指令
Linux學習筆記(第四篇)檔案内容操作指令+正規表達式+重定向和管道
Linux學習筆記(第五篇)歸檔及壓縮指令
Linux學習筆記(第六篇)Vi編輯器
Linux學習筆記(第七篇)使用者群組管理
Linux學習筆記(第八篇)磁盤與檔案系統管理
Linux學習筆記(第九篇)邏輯卷管理(LVM)
Linux學習筆記(第十篇)程序管理
Linux學習筆記(第十一篇)服務管理
Linux學習筆記(第十二篇)網絡基礎
Linux學習筆記(第十三篇)通信管理
Linux學習筆記(第十四篇)管理常用網絡服務
Linux學習筆記(第十五篇)常用網絡伺服器配置
Part6–Vi編輯器
1.編輯器概述:
-
簡單的編輯任務一般都會涉及以下操作:
(1) 打開檔案操作:建立新檔案或者打開新檔案。
(2)輸入文本、删除文本、搜尋文本、修改文本操作。
(3)關閉操作:儲存文本并退出編輯。
-
文本編輯器的作用:
(1)建立或修改文本檔案。
(2)維護Linux系統中的各種配置檔案。
-
Linux中最常用的文本編輯器:
(1)Vi:類Linux系統中預設的文本編輯器。
(2)Vim:Vi編輯器的增強版本,習慣上也稱為Vi。
2.Vi編輯器的工作模式:
- 指令模式:是進入Vi的初始模式,也是Vi的基本工作模式,主要包括移動光标、删除文本、粘貼文本和查找文本等。
- 文本輸入模式:可錄入檔案内容,該模式下除Esc鍵以外的所有其它鍵都作為輸入字元添加到被編輯的文本中,文本輸入完後必須按Esc鍵從文本輸入模式傳回到指令模式後,才能繼續完成其它操作。
- 狀态行:為在螢幕底部的一行,指令模式下的有些指令以“:”号、“/”号和“?”号開頭,顯示在狀态行,回報使用者編輯操作的結果,顯示錯誤或其它資訊。
3.Vi編輯器的部分原理:
- Vi編輯器為使用者所要建立或修改的檔案建立了一個臨時的工作區(緩沖區或工作緩沖區)。
- 如果使用者建立新檔案時,Vi為新檔案打開一個緩沖區。
- 如果指定的檔案已存在,Vi将源檔案複制到緩沖區,使用者對檔案所做的修改隻作用于緩沖區中檔案的副本而不是源檔案。
- 如果使用者希望儲存所做的修改,必須用儲存的已修改檔案(緩沖區中的副本)替換源檔案。
- 對源檔案所做的修改不會自動儲存,使用者必須發出寫指令才能儲存檔案。
4.Vi編輯器的啟動與退出:
-
啟動Vi:
(1)vi [options] file:編輯已有檔案。
(2)vi:建立新的工作緩沖區,可以寫入内容。
(3)vi -R:-R表示以隻讀方式打開檔案,不允許修改,但可以使用w!強制寫入。vi的一個特殊版本——view,總是以制度方式打開檔案。
(4)vi -c:-c表示指定的vi指令作為啟動的一部分,通常用來在開始編輯之前定位光标。例如,vi -c/hello myfirst表示在打開myfirst檔案之後,搜尋hello字元串,并将光标定位到搜尋位置。
-
退出Vi:
【儲存檔案】
(1)儲存::w
(2)另存為其它檔案::w 路徑/新檔案名
(3)未修改退出::q
(3)放棄對檔案内容的修改,并退出Vi::q!
(4)儲存檔案退出Vi::wq或ZZ
(5)注:Vi通常不允許覆寫已存在的檔案,若要覆寫,用:w!指令或:wq!指令。
【例子】
(1)對于已存在的f1檔案的儲存與退出:修改内容後,有兩種儲存退出方案。一種是先按Esc鍵,再:w(用目前f1的緩沖區副本替換f1),然後:q(将緩沖區内容寫入檔案f1,并退出Vi編輯器); 另一種是先按Esc鍵,再:wq(儲存和退出同時進行)。
(2)對于直接用vi指令打開的緩沖區的儲存與退出:修改内容後,有兩種儲存退出方案。一種是先按Esc鍵,再:w 新檔案名(目前緩沖區的文本内容儲存到新檔案中),然後:q(将緩沖區内容寫入檔案f1,并退出Vi編輯器); 另一種是先按Esc鍵,再:wq 新檔案名(儲存和退出同時進行)。
5.Vi編輯器的相關指令:
- Vi編輯器剛啟動時,處于指令模式,隻有在文本輸入模式下,方可輸入文本。
-
指令模式切換到文本輸入模式的指令鍵:
(1)i:在光标左側輸入正文。
(2)I:在光标所在行開頭輸入正文。
(3)a:在光标右側輸入正文。
(4)A:在光标所在行結尾輸入正文。
(5)o:在光标所在行下一行插入新行。
(6)O:在光标所在行上一行插入新行。
-
文本輸入模式下的特殊鍵:
(1)空格鍵(Spacebar):輸入一個空格。
(2)制表鍵(Tab):在光标前插入8個空格(空格數可以配置)。
(3)退檔鍵(Backspace):删除光标前面一個字元,并且光标回退一個字元。
(4)Enter鍵(Return):添加新行,如果光标處于行中間,則在光标位置将本行截斷。
(5)↑↓←→ / kjhl:上下左右移動光标。
(6)w、b:光标向右、向左移動一個字(光标移動到字首、字尾)。
(7)e:光标移動到字尾。
(8)Home鍵 / “^” / 數字0:跳轉至行首。
(9)End鍵 / “$”:跳轉至行尾。
(10)1G / gg:跳轉至檔案的首行。
(11)G:跳轉至檔案的末尾行。
(12)行号G / :行号:跳轉至檔案中指定的行。
(13)+和-:光标下,上移動一行。
(14)空格鍵、倒退鍵:光标右移、左移一格。
(15)Enter鍵:光标移動到下一行的行首。
-
指令模式下的文本修改:
(1)x:删除光标位置指定的字元,連續按x多次,可連續删除多個字元,輸入5x可以一次删除5個字元。
(2)dd:删除光标所在行,連續按dd多次,可連續删除多行,輸入3dd可以一次删除3行。
(3)u:撤銷最近的修改。
(4)U:撤銷對目前行的所有修改。
(5)r:替換光标位置上的一個字元。
(6)R:替換從光标位置開始的字元,同時進入文本輸入模式,按Esc鍵才能回到指令模式。
(7).(點):重複上一次修改。
-
指令模式下的查找:
(1)/word:從上而下在檔案中查找字元串"word"。
(2)?word:從下而上在檔案中查找字元串"word"。
(3)n:定位下一個比對的被查找字元串。
(4)N:定義上一個比對的被查找字元串。
6.Vi編輯器的線上幫助:
- 指令模式下輸入:help,會顯示幫助指令。
- 輸入:q,退出幫助螢幕,傳回到檔案之中。
- 為獲得指定指令的幫助資訊,在:help後面跟着該指令名。
- 例如::help wq
7.Vi編輯器的複雜應用:
-
編輯多個檔案的部分原理與指令:
(1)Vi可以一次打開多個檔案進行編輯。
(2)每一個檔案編輯結束後,不直接退出Vi,而是進行下一個檔案的編輯。
(3)可以使用指令:n(next)啟動下一個檔案的編輯,vi将用下一個檔案的内容替換緩沖區的内容,所有如果上一個檔案尚未儲存,則會提示出錯,可以用:n!強制切換檔案,但将丢失上一個檔案的修改。
(4)使用:ar指令檢視Vi打開的檔案名清單。
(5)在Vi中打開并編輯另一個檔案:e file
(6)讀入另一個檔案:r file,讀入的檔案将追加到光标之後,稱為正在編輯的目前檔案的一部分。
(7)寫入另一個檔案:[n-start, n-end] w file,如果不指定行,則寫入整個檔案。如果檔案已存在,則提示出錯,但可以使用w!強制寫入。例子:5,100 w temp将目前編輯的檔案的第5行到100行寫入到temp檔案中。
-
指令模式下的重排文本:
(1)d:删除指定位置的文本,并儲存到臨時緩沖區。
(2)dd:删除一行内容,光标下移一行。
(3)y:複制指定位置的文本到臨時緩沖區。
(4)yy:将目前行複制到臨時緩沖區。
(5)P:将臨時緩沖區的文本插入到光标位置之上。
(6)p:将臨時緩沖區的文本插入到光标位置之下。
-
指令模式下Vi操作符的域:
(1)$:光标從目前位置移動到行尾。
(2)0:光标從目前位置移動到行首。
(3)e / w:光标從目前位置移動到字尾。
(4)b:光标從目前位置移動到字首。
【例子】
(1) d$:從光标位置開始,删除到行尾。
(2)d0: 從光标位置開始,删除到行首。
(3)3dw:從光标位置開始,删除3個字。
(4)y $:(注:同(1))從光标位置開始,複制至行尾放到臨時緩沖區中。
8.Vi編輯器的緩沖區:
Vi編輯器有多個用作臨時存儲的緩沖區。
-
Vi緩沖區的類型:
【工作緩沖區】
(1)儲存使用者檔案副本。
(2)當Vi打開一個檔案進行編輯時,檔案内容被載入到工作緩沖區。
(3)執行Vi寫入指令之前,所有的修改隻是對工作緩沖區的副本進行修改,執行了寫入指令後,緩沖區内容真正寫入檔案,修改才永久有效。
(4)Vi打開多個檔案進行編輯時,工作緩沖區存儲目前編輯的檔案内容,主要修改丢失問題。
【數字編号緩沖區】
(1)編号為1到9的9個臨時緩沖區。
(2)每次删除或複制的文本存放在這些緩沖區中。
(3)緩沖區1總時儲存最新内容,其它緩沖區按數字排列一次存儲從新到舊的内容(類似隊列FIFO思想)。
(4)通路指定的緩沖區:雙引号+緩沖區編号+p,例如:" 6p表示将第6個緩沖區的内容粘貼到光标位置。
【字母編号緩沖區】
(1)26個以英文字母編号的緩沖區。
(2)系統不自動将删除或複制的内容存儲到字母緩沖區。使用者需要指定将内容存儲到哪個緩沖區:雙引号+緩沖區名+指令。例如:" wdd表示将目前行删除并複制到w緩沖區。" e7yy表示複制目前光标開始的7行内容到e緩沖區。
- 運作Shell指令:使用者可以在Vi的指令行中運作Shell指令。使用時:!開頭,例如::!date表示顯示目前時間,:!pwd表示顯示目前目錄,:r!date表示目前日期和時間會被寫入目前行下。
- J指令:連接配接兩行,将目前行的下一行連接配接到目前光标所在行之後。
- Vi的-r選項:當編輯檔案時,Vi或者UNIX崩潰,-r選項可以恢複原來的檔案。例如:vi -r mypro.cpp恢複上次崩潰前的mypro.cpp檔案。
-
參數預設值:
(1)Vi編輯器有許多參數(選項或者辨別)可供使用者設定,進而控制工作環境,這些參數有預設值,但可以調整。
(2)在指令模式,輸入:set all即可檢視完整的參數清單以及它們在系統上的目前設定。
(3)參數分為三種類型:布爾、數字式、串。
(4) 布爾:set X或set noX(例如:set nu或:set nonu表示顯示行号或不顯示行号)。
(5):set ignorecase:搜尋時忽略大小寫。
(6) :set noignorecase:大小寫敏感。
(7)數字式或串:set X=值(等号兩邊沒有空格)。
(8)set X?可以顯示參數X的值。
-
縮寫操作符:
(1):ab指令用來定義縮寫,取消縮寫用:unab指令。例如::ab sqp suiyongping、:unab syp
(2):map指令用來定義縮寫(宏操作符),用map可以指定單個鍵代表鍵序列。例如::map q 5x、:unmap q,:map #2 3x(給3x指定F2鍵)、:unmap #2