Linux下vi的基本用法(ZT)

來源:互聯網
上載者:User

Linux下vi的基本用法指南.

  一、基本命令介紹

  ---- 1.游標命令

  k、j、h、l——上、下、左、右游標移動命令。雖然您可以在linux中使用鍵盤右邊的4個游標鍵,但是記住這4個命令還是非常有用的。這4個鍵正是右手在鍵盤上放置的基本位置。

  nG——跳轉命令。n為行數,該命令立即使游標跳到指定行。

  Ctrl+G——游標所在位置的行數和列數報告。

  w、b——使游標向前或向後跳過一個單詞。

  ---- 2.編輯命令

  i、a、r——在游標的前、後以及所在處插入字元命令(i=insert、a=append、r=replace)。

  cw、dw——改變(置換)/刪除游標所在處的單詞的命令 (c=change、d=delete)。

  x、d$、dd——刪除一個字元、刪除游標所在處到行尾的所有字元以及刪除整行的命令。

  ---- 3.尋找命令

  ---- /string、?string——從游標所在處向後或向前尋找相應的字串的命令。

  ---- 4.拷貝複製命令

  ---- yy、p——拷貝一行到剪貼簿或取出剪貼簿中內容的命令。

  二、常見問題及應用技巧

  ---- 1.在一個新檔案中讀/etc/passwd中的內容,取出使用者名稱部分。

  ---- vi file

  ---- :r /etc/passwd 在開啟的檔案file中游標所在處讀入/etc/passwd

  ---- :%s/:.*//g 刪除/etc/passwd中使用者名稱後面的從冒號開始直到行尾的所有部分。

  ----您也可以在指定的行號後讀入檔案內容,例如使用命令“:3r/etc/passwd”從新檔案的第3行開始讀入/etc/passwd的所有內容。

  ---- 我們還可以使用以下方法刪掉檔案中所有的空行及以#開始的注釋行。

  ---- #cat squid.conf.default | grep -v '^$' | grep -v '^#'

  ----2.在開啟一個檔案編輯後才知道登入的使用者對該檔案沒有寫的許可權,不能存檔,需要將所做修改存入臨時檔案。

  ---- vi file

  ----:w/tmp/1儲存所做的所有修改,也可以將其中的某一部分修改儲存到臨時檔案,例如僅僅把第20~59行之間的內容存檔成檔案/tmp/1,我們可以鍵入如下命令。

  ---- vi file

  ---- :20,59w /tmp/1

  ---- 3.用VI編輯一個檔案,但需要刪除大段的內容。

  ----首先利用編輯命令“vifile”開啟檔案,然後將游標移到需要刪除的行處按Ctrl+G顯示行號,再到結尾處再按Ctrl+G,顯示檔案結尾的行號。

  ----:23,1045d假定2次得到的行號為23和1045,則把這期間的內容全刪除,也可以在要刪除的開始行和結束行中用ma、mb命令標記,然後利用“:'a,'bd”命令刪除。

  ---- 4.在整個檔案的各行或某幾行的行首或行尾加一些字串。

  ---- vi file

  ---- :3,$s/^/some string / 在檔案的第一行至最後一行的行首插入“some string”。

  ---- :%s/$/some string/g 在整個檔案每一行的行尾添加“some string”。

  ---- :%s/string1/string2/g 在整個檔案中替換“string1”成“string2”。

  ---- :3,7s/string1/string2/ 僅替換檔案中的第3行到第7行中的“string1”成“string2”。

  ---- 注意: 其中s為substitute,%表示所有行,g表示global。

  ---- 5.同時編輯2個檔案,拷貝一個檔案中的文本並粘貼到另一個檔案中。

  ---- vi file1 file2

  ---- yy 在檔案1的游標處拷貝所在行

  ---- :n 切換到檔案2 (n=next)

  ---- p 在檔案2的游標所在處粘貼所拷貝的行

  ---- :n 切換迴文件1

  ---- 6.替換檔案中的路徑。

  ----使用命令“:%s#/usr/bin#/bin#g”可以把檔案中所有路徑/usr/bin換成/bin。也可以使用命令“:%s//usr/bin//bin/g”實現,其中“”是逸出字元,表明其後的“/”字元是具有實際意義的字元,不是分隔字元。

 

---------------------------------------------------------------------------------------------------------

一.簡介

  vi是unix世界中最通用的全屏編輯器,linux中是用的是vi的加強版vim,vim同vi完全相容,vi就是"visual interface"的縮寫。它可以執行輸出、刪除、尋找、替換、塊操作等眾多文本操作,而且使用者可以根據自己的需要對其進行定製,這是其它編輯程式所沒有的。

  vi不是一個排版程式,它不象Word或WPS那樣可以對字型、格式、段落等其他屬性進行編排,它只是一個文本編輯程式。

  vi沒有菜單,只有命令,且命令繁多。只要在命令列上鍵入vi就可進入vi的編輯環境。vi有三種狀態:命令模式,文本輸入模式和末行模式。鍵入vi斷行符號後首先進入vi的命令模式。

  在命令模式下使用者輸入的任何字元都被Vi當作命令加以解釋執行,如果使用者要將輸入的字元當作是常值內容時,則首先應將Vi的工作模式從命令模式切換到文本輸入模式。在命令模式下,按一下"a"("A")鍵或者”i” ("I")或者"o"("O")鍵,即進入插入態文本輸入模式。按"a"鍵,插入到當前游標的後面;按"i"鍵,在當前游標處插入;按"A"鍵,在當前游標所在行的最後插入;按"I"鍵,在當前游標所在行的開頭插入。在文本輸入模式下,按Esc鍵,即回到命令模式。

  末行模式也稱ex轉義模式。Vi有一個專門的“轉義”命令,可訪問很多面向行的Ex命令。在命令模式下,使用者按“:”鍵即可進入末行模式下,此時Vi會在顯示視窗的最後一行(通常也是螢幕的最後一行)顯示一個“:”作為末行模式的提示符,等待使用者輸入命令。多數檔案管理命令都是在此模式下執行的(如把編輯緩衝區的內容寫到檔案中等)。末行命令執行完後,Vi自動回到命令模式。

  例如:

  :1,$s /A/a/g

  則從檔案第一行至檔案尾將大寫A全部替換成小寫a。

  若在末行模式下輸入命令過程中想轉換的到命令模式,可按鍵,或用退格鍵將輸入的命令全部刪除之後,再按一下退格鍵,即可使Vi回到命令模式下。

  如果要從命令模式轉換到編輯模式,可以鍵入命令a或者i;如果需要從文字模式返回,則按Esc鍵即可。在命令模式下輸入“:”即可切換到末行模式,然後輸入命令。

  Vi中的許多命令都要用到行號及行數等數值。若編輯的檔案較大時,自己去數是非常不方便的。為此Vi提供了給文本加行號的功能。這些行號顯示在螢幕的左邊,而相應行的內容則顯示在行號之後。 需要說明的是,這裡加的行號只是顯示給使用者看的,它們並不是檔案內容的一部分。

  當用Vi建立一個新檔案時,在進入Vi的命令中也可以不給出檔案名稱,當編輯完檔案需要儲存資料時,再由使用者指定檔案名稱。

  進入Vi時,使用者不僅可以指定一個待編輯的檔案名稱,而且還有許多附加操作。如果希望在進入Vi之後,游標處於檔案中特定的某行上,可在Vi後加上任選項+n,其中n為指定的行數。例如 鍵入命令:vi +3 example.txt後,游標將位於檔案example.txt中的第3行上。

  二.vi常用的命令

  1.插入(Insert)命令

  Vi提供了兩個插入命令:i 和 I命令

  (1)i命令

  插入文本從游標所在位置前開始,並且插入過程中可以使用鍵刪除錯誤的輸入。此時Vi處於插入狀態,螢幕最下行顯示“--INSERT--”(插入)字樣。

  例1,有一正在編輯的檔案,如下所示:

  Welcome to vi world!Come on!

  ~

  ~

  游標位於第一個“!”上,需在其前面插入:

  This is an example!

  使用i命令,並輸入相應文本後,螢幕顯示如下:

  Welcome to vi world This is an example!!Come on!

  ~

  ~

  由此例可以看到,游標本來是在第一個“!”處,但是由於是從游標所在位置前開始插入,所以這個“!”就被擠到了新插入的文本之後。

  (2)I命令

  該命令是將游標移到當前行的行首,然後在其前插入文本.

  2.游標移動操作在螢幕上移動

  全螢幕文字編輯器中,游標的移動操作無疑是最經常使用的操作了。使用者只有熟練地使用移動游標的這些命令,才能迅速準確地到達所期望的位置處進行編輯。

  Vi中的游標移動既可以在命令模式下,也可以在文本輸入模式下,但操作的方法不盡相同。

  (1)在文本輸入模式下,可直接使用鍵盤上的四個方向鍵移動游標。

  (2)在命令模式下,有很多移動游標的方法。不但可以使用四個方向鍵來移動游標,還可以用h、j、k、l這四個鍵代替四個方向鍵來移動游標,這樣可以避免由於不同機器上的不同鍵盤定義所帶來的矛盾,而且使用熟練後可以手不離開字母鍵盤位置就能完成所有操作,從而提高工作效率。

  3.在螢幕上移動

  Vi提供了三個關於游標在全螢幕上移動並且檔案本身不發生滾動的命令。它們分別是H、M和L命令。

  (1)H命令

  該命令將游標移至螢幕首行的行首(即左上方),也就是當前螢幕的第一行,而不是整個檔案的第一行。利用此命令可以快速將游標移至螢幕頂部。若在H命令之前加上數字n,則將游標移至第n行的行首。值得一提的是,使用命令dH將會刪除從游標當前所在行至所顯示螢幕首行的全部內容。

  (2)M命令

  該命令將游標移至螢幕顯示檔案的中間行的行首。即如果當前螢幕已經充滿,則移動到整個螢幕的中間行;如果並未充滿,則移動到文本的那些行的中間行。利用此命令可以快速地將游標從螢幕的任意位置移至螢幕顯示檔案的中間行的行首。例如,在上面螢幕顯示的情況下(不論游標在螢幕的何處),在命令模式下,輸入命令M之後,游標都將移到add這一行的字母a上。同樣值得一提的是,使用命令dM將會刪除從游標當前所在行至螢幕顯示檔案的中間行的全部內容。

  (3)L命令

  當檔案顯示內容超過一屏時,該命令將游標移至螢幕上的最底行的行首;當檔案顯示內容不足一屏時,該命令將游標移至檔案的最後一行的行首。可見,利用此命令可以快速準確地將游標移至螢幕底部或檔案的最後一行。若在L命令之前加上數字n,則將游標移至從螢幕底部算起第n行的行首。同樣值得一提的是,使用命令dL將會刪除從游標當前行至螢幕底行的全部內容。

  4.編輯命令

  讓我們看看最簡單也是最常用的編輯過程:沒有人不犯錯誤。所以遲早你會碰到修改你輸入的文本的時候。實際上花在文書處理上的大多數時間是修改而不是輸入新的東西。因此,你要知道如何方便地修改就很重要。

  (1)x--刪除一個字元

  刪除文字的最簡單的方式是用x。這個命令的結果是游標所處的字元的消失,後面的文字左移動。如果你刪除的字元是一行最後的一個字元,那麼游標將向左移動一個,這樣游標就不會停留在不存在的字元的下面了。假如沒有任何文字了,喇叭就叫。

  (2)d--刪除對象

  這個命令的右邊還要有一定的文字對象。文字對象就是一塊文字。他右邊接的就是在控制游標移動的那些字元。例如 w 表示向前一個單詞,那麼 dw 將刪除下一個單詞。5w 表示前進5個單詞,那麼 d5w 將刪除他們。

  (3)dd--刪除一行

  最常用的 d 系列命令之一。和前面一樣, 5dd 將刪除 5 行

  (4)D--整個刪除

  大寫形式的 D 用來刪除從游標到行尾。和 d$ 一樣效果。

  (5)u--恢複

  要後悔嗎?他不僅僅撤消刪除,還撤消你所有的編輯工作。

  (6).--重複

  重複編輯工作。

  5.退出Vi

  當編輯完檔案,準備退出Vi返回到shell時,可以使用以下幾種方法之一。

  (1)在命令模式中,連按兩次大寫字母Z,若當前編輯的檔案曾被修改過,則Vi儲存該檔案後退出,返回到shell;若當前編輯的檔案沒被修改過,則Vi直接退出, 返回到shell。

  (2)在末行模式下,輸入命令 :w Vi儲存當前編輯檔案,但並不退出,而是繼續等待使用者輸入命令。在使用w命令時,可以再給編輯檔案起一個新的檔案名稱。

  例如:w newfile

  此時Vi將把當前檔案的內容儲存到指定的newfile中,而原有檔案保持不變。若newfile是一個已存在的檔案,則Vi在顯示視窗的狀態行給出提示資訊:

  File exists (use ! to override)

  此時,若使用者真的希望用檔案的當前內容替換newfile中原有內容,可使用命令

  :w! newfile

  否則可選擇另外的檔案名稱來儲存當前檔案。

  (3)在末行模式下,輸入命令 :q 系統退出Vi返回到shell。若在用此命令退出Vi時,編輯檔案沒有被儲存,則Vi在顯示視窗的最末行顯示如下資訊:

  No write since last change (use ! to overrides)

  提示使用者該檔案被修改後沒有儲存,然後Vi並不退出,繼續等待使用者命令。若使用者就是不想儲存被修改後的檔案而要強行退出Vi時,可使用命令:q! Vi放棄所作修改而直接退到shell下。

  (4)在末行模式下,輸入命令 :wq Vi將先儲存檔案,然後退出Vi返回到shell。

  (5)在末行模式下,輸入命令 該命令的功能同命令模式下的ZZ命令功能相同

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.