歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix教程

在Unix/Linux環境中使用vi編輯文件


  長期以來,Windows網絡管理人員使用Edit,記事本或者Wordpad來編輯文本文件和手寫文件。對UNIX操作系統而言,大多數UNIX系統都具有各自類型的編輯器,但是實際使用的工具不盡相同,這取決於使用的UNIX系統。當前,一些編輯器甚至已經成為微軟Word強有力的競爭對手,比如Sun Microsystems。但是,所有UNIX操作系統機器上都安裝有vi可視化編輯器。一旦掌握vi的使用技巧,你就可以在所有的UNIX操作系統(包括Linux操作系統)中隨意編輯文件。
  
  Vi為何物?
  
  乍一看,vi除了全屏幕可視外就沒有什麼可值得稱道。但是, 她卻是一個功能非常強大的編輯器,而且可以滿足你需要的任何操作。vi可以在操作的時候讓你編輯和浏覽整個文件。以前的許多編輯器,比如ed都是行編輯器,即每次只能編輯和浏覽一行文字。因此相比於過去的UNIX編輯器,vi更加便於整個文件的浏覽。
  
  很多UNIX操作系統都集中多個不同的命令行功能,比如nroff和troff等文件處理工具。與微軟的Word一樣,這些命令行功能可以編輯出不同格式和風格的文件。我親自使用了這些工具來編寫我的畢業論文,感覺非常的方便。
  
  在機器上安裝vi無需特別的安裝路徑,對此你無需太多擔心。當安裝系統的時候,vi自動會出現。因為系統管理員需要使用vi處理很多工作,包括創建系統文本等。Redhat的Linux在系統中提供了安裝特定編輯器的選擇,但是在UNIX操作系統不安裝vi的情況相當少見。
  
  作者的注釋
  
  這篇文章是以Solaris 7的vi為基礎。盡管我要討論的是一個特定的vi版本,但是這裡所討論的方法可以適用於任何vi版本,同樣也可適用於
  
  Windows發布的MKS Toolkit版本。
  
  Vi使用與操作
  
  在介紹如何使用vi之前,了解vi具有兩種基本模式是很重要。這兩種基本模式為輸入模式和指令模式。輸入模式為輸入命令,文本就會顯示在屏幕上;而指令模式為輸入命令就執行命令,而不會顯示文字。理解指令模式最簡單方式就是想象平時剪切、復制以及粘貼數據時所發生的情況。
  
  在默認狀態下,vi以指令模式下啟動,因此你輸入命令時不會顯示文字,除非你輸入命令切換至輸入模式。大多數vi命令不會屏幕上顯示任何東西,你只需要知道它們的工作過程就足夠了。使用[Esc]鍵可以在輸入模式和指令模式之間切換。如果你已經處於指令模式中,使用[Esc]將會告訴vi,你已經輸入命令並將要執行命令。如果你沒有輸入任何命令,在指令模式中按下[Esc]鍵將中斷操作。
  
  現在我已經介紹了vi的基本操作,你可以動手試用一下。首先,在你的工作站打開一個終端窗口,你只需在$提示中輸入vi然後按回車鍵就可以啟動vi編輯器。
  
  接著,你將看到彈出一個頁面左下角有一個~符號的空白文件。這一符號不容易看到,但是你看到的這些~符號正是表示處於文件的底部。當對文件保存之後,這些符號就不會顯示出來。
  
  若要編輯某個文件或者為一空白文件命名,你可輸入vi filename。vi filename可以是一個已經存在的文件名或者是一個給新文件指定的名稱。
  
  通用輸入模式
  
  一旦進入編輯文檔,除了使用[Esc]切換方法,還有其它很多方法使vi進入到輸入模式。很多其它的方法都包含使用一個vi指令。這些指令可以立即讓vi進入輸入模式,由此輸入的字符立即以文字出現在文檔中。常用的指令為:
  
  i
  
  這是一個輸入命令,即從光標所在位置前面開始插入文字,光標後的文字隨新增文字向向移動。 如果是一個空白文檔,文字將會輸入在文檔的左上角。
  
  I
  
  在行命令開始處的輸入模式,即在當前行的開始處輸入文字。與Word中的按下鍵後輸入文字類似。
  
  a
  
  這是一個新增命令,即從光標所在位置後面開始新增文字,光標後的資料隨新增文字向後移動。
  
  A 這是一個新增到行命令的操作,即從光標所在行最後面的地方開始新增文字。這與Word中的按下鍵後輸入文字類似。
  
  o
  
  這是一個命令之下的打開行命令,即在光標所在行下面新增一行並進入輸入模式。
  
  O
  
  這是一個命令之上的打開命令,即在光標所在行上方新增一行並進入輸入模式。
  
  編輯之後使用以上任一命令,將會返回到指令模式。
  
  光標移動指令
  
  接下來需要學習的是vi中的浏覽命令。以指令模式在文檔中移動,可以使用以下的命令:
  
  h:將一個文字移動到左邊
  
  j:往下移動一個文字
  
  k: 往上移動一個文字
  
  l: 將一個文字移動到右邊
  
  在鼠標與GUI的環境中,這些移動命令看似有些過時,但是它們都被包含於所有vi版本就廣泛應用。很多時候,光標號,上光標,下光標,左光標,右光標都會起到作用,但是操作者應該將termcap與terminfo屬性包含在這些命令之中。
  
  以下的其它移動指令也可大有幫助:
  
  [Ctrl]f
  
  向下移動一頁指令。這將使得光標在文本中向下移動一頁。
  
  [Ctrl]b
  
  向後移動一頁指令。這將使得光標在文本中向後移動一頁。
  
  [Ctrl]u
  
  向下移動半頁指令。這將使得光標在文本中向下移動半頁。
  
  ^
  
  行命令開始處。光標將會移動到行的開始處。
  
  $
  
  行命令結束處。光標將會移動到行的結束處。
  
  w
  
  移動到上一個文字的開始。
  
  b
  
  移動到下一個文字的開始。
  
  e
  
  文字末端指令。
  
  G
  
  移動到文件的末端。
  
  常規功能
  
  在一般的文本編輯器中,所有的功能,比如刪除,更改,剪切,復制,粘貼,以及搜索/替代等,都可以在vi中找到。很多指令都可以將編輯狀態進入輸入模式,而又可以使用[Esc]來終止。常規使用的編輯指令包括:
  
  x:刪除字符命令,即刪除光標所在字符。
  
  dw:刪除文字命令,即刪除光標處的文字。
  
  dd:刪除行命令,即刪除光標所在的行。
  
  D:刪除到行末端,即刪除從光標所在位置到行末端的所有文本。
  
  cw:改變文字命令,即光標所有位置的文字將隨著輸入文字而改變,至到按下[Esc]。
  
  r:替代字符命令,即光標所在位置的字符將被輸入的字符替代,至到按下[Esc]。
  
  R:替代多行字符命令,即光標所在位置到右邊所有的字符將被輸入的字符替代,至到按下[Esc]。
  
  絕大多數這些指令都可以通過組合而提高其功能。例如,如果你輸入2dd,vi將刪除兩行文本。
  
  剪切與粘貼等操作
  
  與其它很多編輯器一樣,你可以在文檔中使用剪切與粘貼文本。以下命令是可以使用的最為簡單的剪切與粘貼操作。
  
  yy
  
  復制行命令。光標所有行的文本將被復制到類似剪切板的緩沖器。注意到可以使用多個復制命令更改這一命令以將多行文字剪切到緩沖器。
  
  yl
  
  復制字符命令。光標所有行的字符將被復制到類似剪切板的緩沖器。可以使用多個復制命令更改這一命令以將多行字符剪切到緩沖器。
  
  p
  
  後放置命令。在當前光標位置之後放置或粘貼緩沖器的內容。對於復制行命令,緩沖器的內容將被粘貼在當前行之後。對於復制字符行命令,緩沖器內容將被粘貼在光標的右邊。
  
  P
  
  前放置命令。在當前光標位置之前放置或粘貼緩沖器的內容。對於復制行命令,緩沖器的內容將被粘貼在當前行之前。對於復制字符行命令,緩沖器內容將被粘貼在光標的左邊。
  
  使用復制和放置指令時,你也可以字符指令而使用多個緩沖器或剪切板。這些字符可為a-z,並且只能是小寫字母。例如,ayy將當前行內容復制到緩沖器A,ap命令將緩沖器的內容粘貼在當前行之前。
  
  Vi中最為重要的命令要算undo指令。這一命令十分簡單:只需要按下u。按下u鍵就可以撤消最近使用的一次指令。
  
  與undo命令類似的是redo命令。按下句號鍵(.)將會重新鍵入最近的指令。例如,如果你使用cw來改變一個文字,你可以查找這一文字然後使用句號.來這一文字。
  
  其它兩個重要的命令為search命令。為了在文檔中向前查找,可鍵入/text,text即為你查找的內容。重要的是一定注意,只有輸入內容完全的匹配,你才可以查找到。Vi不支持混合查詢或者模糊查詢。對於向後查找,可鍵入?text,text即為查找的內容。
  
  編輯指令
  
  在指令模式中,很多組命令都可以前綴:。與以上提及的命令不一樣,一旦輸入一個冒號,所有指令都出現在屏幕的左下角,並可以在執行之前編輯。以下是常用的重要的:指令。
  
  :w
  
  編寫文件命令。如果你輸入:w然後回車,當前文件將被寫入硬盤。如果使用的是一個空白文檔,將會出現“沒有當前的文件名”的消息。可以使用:w文件名將一個空白文檔或當前文檔寫入到另一文件。
  
  :w!或:w文件名
  
  覆蓋文件命令。如果輸入:w!然後回車,文件將會被當前新輸入的名稱而覆蓋。這可用於文件的覆蓋。
  
  :q
  
  退出命令。如果正常保持,輸入:q將會終止整個操作。
  
  :q!
  
  退出而不需要保持命令。在不需要保存文件的情況下退出。
  
  :%s/find_text/replace_text/
  
  查詢與替代命令

Copyright © Linux教程網 All Rights Reserved