Linux vi命令大全

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   ar   使用   sp   strong   

http://www.cnblogs.com/88999660/articles/1581524.html一、Unix編輯器概述

編輯器是使用電腦的重要工具之一,在各種作業系統中,編輯器都是必不可少的組件。Unix及其相似的ix作業系統系列中,為方便各種使用者在各個不同的環境中使用,提供了一系列的ex編輯器,包括 ex, edit,ed 和vi.其中ex,edit,ed都是行編輯器,現在已很少有人使用,Unix提供他們的原因是考慮到滿足各種使用者特別是某些終端使用者的需要。

值得慶幸的是,Unix提供了全螢幕的Vi編輯器,這使我們的工作輕鬆不少。不少DOS使用者抱怨Vi編輯器不象DOS下的編輯器如edit那麼好用,這是因為Vi考慮到各種使用者的需要,沒有使用某些通用的編輯按鍵(在各個不同的終端機上他們的定義是不同的,在某些終端機上甚至沒有這些鍵)。而是採用狀態切換的方法,但這隻是習慣的問題,一旦你熟練的使用上了vi你就會覺得它其實也很好用。雖然 Vi採用了狀態切換的方法,但電腦的硬體及作業系統多種多樣,某些電腦的鍵盤上沒有特定的幾個功能鍵!那麽不就有某些功能不能用了?這個問題在 Unix 系統上也一樣,幾乎各大電腦廠商都有自己的Unix 系統,而 vi 的操作方法也會隨之有點出入。這裡我們採用 PC 的鍵盤來說明 vi 的操作,但在具體的環境中還要參考相應的資料,這一點是值得注意的。

二、Vi入門

(一)、進入vi

在系統提示字元(如$、#)下敲入vi <設定檔名稱>,vi 可以自動幫你載入所要編輯的檔案或是開啟一個新檔案(如果該檔案不存在或缺少檔案名稱)。進入 vi 後螢幕左方會出現波浪符號,凡是列首有該符號就代表此列目前是空的。

(二)、兩種模式

如上所述,vi存在兩種模式:指令模式和輸入模式。在指令模式下輸入的按鍵將做為指令來處理:如輸入a,vi即認為是在當前位置插入字元。而在輸入模式下,vi則把輸入的按鍵當作插入的字元來處理。指令模式切換到輸入模式只需鍵入相應的輸入命令即可(如a,A),而要從輸入模式切換到指令模式,則需在輸入模式下鍵入ESC鍵,如果不曉得現在是處於什麽模式,可以多按幾次 [ESC],系統如發出嗶嗶聲就表示已處於指令模式下了。

付:有指令模式進入輸入模式的指令:

新增 (append)

a :從游標所在位置後面開始新增資料,游標後的資料隨新增資料向後移動。

A: 從游標所在列最後面的地方開始新增資料。

插入 (insert)

i: 從游標所在位置前面開始插入資料,游標後的資料隨新增資料向後移動。

I :從游標所在列的第一個非空白字元前面開始插入資料。

開始 (open)

o :在游標所在列下新增一列並進入輸入模式。

O: 在游標所在列上方新增一列並進入輸入模式。

(三)、退出vi

在指令模式下鍵入:q,:q!,:wq或:x(注意:號),就會退出vi。其中:wq和:x是存檔退出,而:q是直接退出,如果檔案已有新的變化,vi會提示你儲存檔案而:q命令也會失效,這時你可以用:w命令儲存檔案後再用:q退出,或用:wq或:x命令退出,如果你不想儲存改變後的檔案,你就需要用:q!命令,這個命令將不儲存檔案而直接退出vi。

(四)、基本編輯

配合一般鍵盤上的功能鍵,像是方向鍵、[Insert] 、[Delete] 等等,現在你應該已經可以利用 vi 來編輯檔案了。當然 vi 還提供其他許許多多功能讓文字的處理更為方便。

何謂編輯?一般認為是文字的新增、修改以及刪除,甚至包括文字區塊的搬移、複製等等。先這裡介紹 vi的如何做刪除與修改。(注意:在 vi 的原始觀念裡,輸入跟編輯是兩碼子事。編輯是在指令模式下操作的,先利用指令移動游標來定位要進行編輯的地方,然後才下指令做編輯。)

刪除與修改檔案的命令:

x: 刪除游標所在字元。

dd :刪除游標所在的列。

r :修改游標所在字元,r 後接著要修正的字元。

R: 進入取替換狀態,新增文字會覆蓋原先文字,直到按 [ESC] 回到指令模式下為止。

s: 刪除游標所在字元,並進入輸入模式。

S: 刪除游標所在的列,並進入輸入模式。

其實呢,在PC上根本沒有這麽麻煩!輸入跟編輯都可以在輸入模式下完成。例如要刪除字元,直接按[Delete] 不就得了。而插入狀態與取代狀態可以直接用 [Insert] 切換,犯不著用什麽指令模式的編輯指令。不過就如前面所提到的,這些指令幾乎是每台終端機都能用,而不是僅僅在 PC 上。
在指令模式下移動游標的基本指令是 h, j, k, l 。想來各位現在也應該能猜到只要直接用 PC 的方向鍵就可以了,而且無論在指令模式或輸入模式下都可以。多容易不是。
當然 PC 鍵盤也有不足之處。有個很好用的指令 u 可以恢複被刪除的文字,而 U 指令則可以恢複游標所在列的所有改變。這與某些電腦上的 [Undo] 按鍵功能相同。
三、附件:vi詳細指令表
(一)、基本編輯指令:
新增 (append)

a :從游標所在位置後面開始新增資料,游標後的資料隨新增資料向後移動。

A: 從游標所在列最後面的地方開始新增資料。 

插入 (insert)

i: 從游標所在位置前面開始插入資料,游標後的資料隨新增資料向後移動。

I :從游標所在列的第一個非空白字元前面開始插入資料。 

開始 (open)

o :在游標所在列下新增一列並進入輸入模式。

O: 在游標所在列上方新增一列並進入輸入模式。 

x: 刪除游標所在字元。

dd :刪除游標所在的列。 

r :修改游標所在字元,r 後接著要修正的字元。

R: 進入取替換狀態,新增文字會覆蓋原先文字,直到按 [ESC] 回到指令模式下為止。 

s: 刪除游標所在字元,並進入輸入模式。

S: 刪除游標所在的列,並進入輸入模式。  在vi/vim編輯器中,要撤銷一次操作,在命令狀態下按 ‘u‘ 即可;如果要恢複撤銷的內容呢,應該用 Ctrl + r 

(二)、游標移動指令:
由於許多編輯工作是藉由游標來定位,所以 vi 提供許多移動游標的方式,這個我們列
幾張簡表來說明(這些當然是指令模式下的指令):

指令 說明 功能鍵
0 移動到游標所在列的最前面 [Home]
$ 移動到游標所在列的最後面 [End]
[CTRL][d] 向下半頁 [PageDown]
[CTRL][f] 向下一頁
[CTRL][u] 向上半頁
[CTRL][b] 向上一頁 [PageUp]

指令 說明
H 移動到視窗的第一列
M 移動到視窗的中間列
L 移動到視窗的最後列
w 移繳細鱟值牡諞桓鱟幟?nbsp; ^ 移動到游標所在列的第一個非空白字元 b 移動到下個字的第一個字母(向上走)
e 移動到下個字的最後一個字母(向下走)
g 移動到文檔開頭G 移動到文檔結尾

指令 說明
n- 減號移動到上一列的第一個非空白字元前面加上數字可以指定移動到以上 n 列
n+ 加號移動到下一列的第一個非空白字元前面加上數字可以指定移動到以下 n 列
nG 直接用數字 n 加上大寫 G 移動到第 n 列
指令 說明
fx
往右移動到 x 字元上
Fx 往左移動到 x 字元上
tx 往右移動到 x 字元前
Tx 往左移動到 x 字元前
; 配合 f&t 使用,重複一次
, 配合 f&t 使用,反方向重複一次
/string 往右移動到有 string 的地方
?string 往左移動到有 string 的地方
n 配合 /&? 使用,重複一次
N 配合 /&? 使用,反方向重複一次

指令 說明 備忘
n(
左括弧移動到句子的最前面句子是以前面加上數字可以指定往前移動 n 個句子 ! . ? 三種符號來界定
n) 右括弧移動到下個句子的最前面前面加上數字可以指定往後移動 n 個句子 ! . ? 三種符號來界定
n{ 左括弧移動到段落的最前面 段落是以段落間的空白列界定
n} 前面加上數字可以指定往前移動 n 個段落右括弧移動到下個段落的最前面前面加上數字可以指定往後移動 n 個段落 段落是以段落間的空白列界定

(三)、更多的編輯指令
這些編輯指令非常有彈性,基本上可以說是由指令與範圍所構成。例如 dw 怯繕境噶?nbsp;d 與範圍 w 所組成,代表刪除一個字 d(elete) w(ord) 。
指令列表如下:
d 刪除(delete)
y 複製(yank)
p 放置(put)
c 修改(change)
範圍可以是下列幾個:
e 光晁諼恢玫礁米值淖鉞嵋桓鱟幟?br> w 游標所在位置到下個字的第一個字母
b 游標所在位置到上個字的第一個字母
$ 游標所在位置到該列的最後一個字母
0 游標所在位置到該列的第一個字母
) 游標所在位置到下個句子的第一個字母
( 游標所在位置到該句子的第一個字母
} 游標所在位置到該段落的最後一個字母
{ 游標所在位置到該段落的第一個字母
說實在的,組合這些指令來編輯檔案有一點點藝術氣息。不管怎麽樣,它們提供更多編輯文字的能力。值得注意的一點是刪除與複製都會將指定範圍的內容放到暫存區裡,然後就可以用指令 p 貼到其它地方去,這是 vi 用來處理區段拷貝與搬移的辦法。
某些 vi 版本,例如 Linux 所用的 elvis 可以大幅簡化這一坨指令。如果稍微觀察一下這些編輯指令就會發現問題其實是定範圍的方式有點雜,實際上只有四個指令罷了。指令 v 非常好用,只要按下 v 鍵,游標所在的位置就會反白,然後就可以移動游標來定義範圍,接著再直接下指令進行編輯即可。對於整列操作, vi 另外提供了更方便的編輯指令。前面曾經提到過刪除整列文字的指令 dd 就是其中一個;cc 可以修改整列文字;而 yy 則是複製整列文字;指令 D 則可以刪除游標到該列結束為止所有的文字。
(四)、檔案操作指令
檔案操作指令多以 : 開頭,這跟編輯指令有點區別。
:q 結束編輯(quit)
:q! 不存檔而要放棄編輯過的檔案。
:w 儲存檔案(write)其後可加所要存檔的檔名。
:wq 即存檔後離開。
zz 功能與 :wq 相同。
:x 與:wq相同  (五)、vi下刪除swp檔案

使用vi編輯器編輯檔案時,經常會由於非正常退出而產生一個swp檔案,以後每次進入時都會提示,非常麻煩。現將網上搜集的解決方案陳列於此:

swp檔案產生原因分為:1.當你用多個程式編輯同一個檔案時。                 2.非常規退出時。通常最後的少量改動無法恢複. Vim會在你連續4秒不鍵入內容時跟磁碟同步一次, 或者是連續鍵入了200個字元之後. 這可以通過´updatetime´和´updatecount´兩
個選項來控制. 所以系統如果在有所改動之後但Vim還沒有同步時發生了宕機, 那這一部分內容就無法恢複了。第一種情況的話,為了避免同一個檔案產生兩個不同的版本(vim中的原話),還是建議選擇readonly為好。第二種情況的話,你可以用vim -r filename恢複,然後再把swp檔案刪除(rm .filename.swp)。進一步學習: swap-filej 關於分頁檔的位置和命名
       :preservej 手工重新整理分頁檔
       :swapnamej 查看原檔案及其分頁檔的名字
      ´updatecount´ 連續擊鍵多少次後做一次同步
      ´updatetime´ 多長時間之後做一次同步
      ´swapsync´ 同步分頁檔時是否同時做一次磁碟同步
      ´directory´ 列出存放分頁檔的目錄
      ´maxmem´ 尚未寫入分頁檔的內容所受的記憶體限制
      ´maxmemtot´ 同上, 但是針對所有檔案

Linux vi命令大全

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.