Linux系統中的vi/vim指令【詳解】

    vi是Unix世界裏極爲廣泛的全屏幕文本編輯器,vim是它的改進版本Vi IMproved的簡稱。幾乎能夠說任何一臺Unix機器都會提供這套軟件。html

    只要簡單的在Shell下執行vi就能夠進入 vi 的編輯環境。在實際操做以前先對它有個瞭解會比較好。linux

    vi 有兩種模式,輸入模式以及指令模式。輸入模式便是用來輸入文字資料,而指令模式則是用來下達一些編排文件、存檔、以及離開 vi 等等的操做指令。當執行 vi 後,會先進入指令模式,此時輸入的任何字元都視爲指令。shell

第一步:vim

1文本編譯工具vi使用bash

vi的名字取自於visual,意爲「直觀」,它是一個全屏幕編輯程序。還有gedit、emacs在Linux系統中vi是最經常使用的編輯程序,它的文本編輯功能十分強大,但使用起來比較複雜。編輯器

2Linux系統中的vi實際上是vim,是vi的加強版。vi編輯程序有兩種工做模式:工具

命令模式(指令模式):此模式下的按鍵看成指令來處理。spa

輸入模式:此模式的按鍵做爲真正的輸入。htm

 

第二步:blog

     vi操做模式的切換,要進入輸入模式,能夠按以下命令鍵:

新增:‘a’,從光標後開始輸入文本。‘A’,從光標所在行末尾輸入新的文本。

插入:‘i’,從光標前開始插入文本。‘I’,從光標行的第一個非空格字符前開始插入文本。

開始:‘o’,從光標所在行下新增一行並進入輸入模式。‘O’,從光標所在行上新增一行並進入輸入模式。

 

第三步: 

    從輸入模式按ESC進入命令模式

 

第四步: 

    進入和退出vi

進入vi,在提示符下:

vi

vi 文件名

退出vi,在指令模式下:

:q,退出

:wq,存盤後退出

:q!,不存盤強制退出

:x,強制存盤退出

 

第五步:

     刪除和修改文本

指令模式下:

x:刪除光標處的一個字符

dd:刪除光標所在行

r:修改光標所在字符

R:進入改寫狀態

s:刪除光標所在字符,並進入輸入狀態

S:刪除光標所在行,並進入輸入狀態

 

第六步:

     光標移動

1指令模式下:

h:向左移動一列

j 或+:向下移動一行

k 或-:向上移動一行

l:向右移動一列

組合:nh,nj,nk,nl。分別是移動n行(列)

在有方向鍵的鍵盤上,不管指令模式或輸入模式均可以用方向箭頭來移動光標

2光標按行移動

指令模式下:

:n回車:將光標移動到第n行

:$回車或者L:將光標移動到最後一行

M:將光標移動到中間一行

H:將光標移動到第一行

:set number:顯示行號

:set nonumber:取消顯示行號

  3光標按單詞移動

指令模式下:

w:將光標移動到下一個單詞頭

b:將光標移動到前一個單詞頭

e:將光標移動到下一個單詞尾

組合:nw、nb、ne

4光標按字符移動

指令模式下:

$:將光標移動到當前行尾

^或0:將光標移動到當前行首

n|:將光標移動到當前行的第n個字符

fm:將光標移動到當前行的下一個字符m處

光標返回原處

兩個單引號‘’

 

第七步: 

    文本編輯

1翻頁

指令模式下:

Ctrl+d:下翻半屏

Ctrl+u:上翻半屏

Ctrl+f:下翻一屏

Ctrl+b:上翻一屏

  2查找

指令模式下:

/string:從當前位置向前查找字符串string

?string:從當前位置向後查找字符串string

繼續查找:

n:沿前述查找方向繼續查找同一字符串

N:沿前述查找方向的反方向繼續查找同一字符串

3刪除文本

指令模式下:

x:刪除字符

dw:刪除單詞

dd:刪除行

D:刪除從光標到行末全部字符

dfm:刪除從光標到第一個字符m間的文本

:5d:刪除第5行

:5,$d:刪除從第5行到最後一行

能夠和整數n組合

  4撤銷和重複命令

指令模式下:

u:撤銷最後一個更改操做

U:撤銷對本行的全部修改

  5文本替換

指令模式下:

m:替換當前字符爲m,替換後仍爲命令模式

R:替換當前字符後的一系列字符,替換後變爲輸入模式。

s:多個字符替換單個字符

cw:單詞替換

cc:行替換

C:替換當前行剩餘部分

cfm:替換當前字符到指定的字符m

  6文本刪除與替換對比

          命令類型           刪除           替換

             字符                 x                r

             單詞               dw             cw

              行                  dd              cc

   從光標到行尾         D               C

    從光標到字符m     dfm           cfm

  7全局替換

指令模式下:

搜索當前行的第一個實例

:s/bash/sch把當前行的第一個bash換爲sch

搜索指定行的第一個實例

:1,10s/bash/sch 把1到10行bash換爲sch

:5,$s/bash/sch 把5到末行bash換爲sch

設置過濾條件進行搜索

:g/var/s/bash/sch把包含var行中的bash替換爲sch

同一行中替換全部實例

:s/bash/sch/g把當前行中全部bash替換爲sch

替換整個文件中的全部實例

:1,$s/bash/sch/g把整個文件中的bash替換爲sch

8移動和複製文本

指令模式下:

yy:複製當前行

dd:剪切當前行(刪除)

p、P:粘貼當前行

 

9複製和移動文本塊

指令模式下:

把某(幾)行復制並粘貼到某行後

:5 copy8 把5行復制並粘貼到第8行後

:1,5 copy$ 把1-5行復制並粘貼到末行後

.,$ copy0 把當前行到末行復制並粘貼到文件頭

把copy改成move即爲移動文本塊(注:.表示當前行,0表示文件頭,$表示文件尾)

 

第八步: 

    文件保存

    指令模式下:

:w 保存文件

:wq或者:x或者ZZ 保存並退出vi,返回linux提示符

:w f1.c 把當前文件另存爲f1.c

:q! 放棄對文件的保存,直接退出

  1保存文本塊

指令模式下:

:2,5 write f2 把第2到第5行另存爲文件f2

保存文本塊,並直接覆蓋掉已有(若是有)文件

:2 write! f2 把第2行強行另存爲文件f2

向文件追加文本

:2 write >> f2 把第2行追加到文件f2末尾

 

第九步: 

    與shell交互

指令模式下:

讀某文件的內容到當前打開文件

:5 read a 把文件a中的內容讀到當前打開文件的第5行後

在vi中執行shell命令

:!pwd

在vi中執行shell命令,並把結果添加到vi中

:5 read! pwd把pwd執行結果插入到第5行後

:e 在vi中編輯某文件時,不退出vi而創建新文件

:n 在vi中編輯某文件時,不退出vi而加載新文件

相關文章
相關標籤/搜索