vi 命令詳解

2021-06-26 13:02:34 字數 3363 閱讀 3032

從shell中啟動視覺化編輯器

vi filename 指示shell啟動vi編輯器,並將引數filename傳給它。如果當前目前中存在該檔案,則vi編輯器將它解釋為要開啟的檔案;如果沒有該檔案,則vi編譯器建立新檔案

vi file1 file2 file3 shell傳遞3個引數給vi,vi將它們解釋為要開啟的檔案。可以使用:w命令儲存檔案,使用:n命令訪問下乙個檔案

vi +# filename 開啟檔案,並將游標移到指定的行。例如,命令vi +100 records 從第100行開始編輯檔案records

vi +/the filename 開啟檔案,並將游標移動包含有目標字串的行。例如,命令vi +/jason friends 從第1個含有字串jason的行開始編輯檔案friends

view filename 開啟檔案進行編輯,但是拒絕儲存對檔案的修改,除非使用w!命令

游標移動命令

hjkl 將游標分別向左、下、上、右移動乙個字元

0(零) 將游標移到當前行的行首

^(脫字元) 同0一樣將游標移到當前行的行首

$ 將游標移到當前行的行末

##g 將游標移到g前面的數字指定的行。例如,42g將游標移到檔案的第42行

g 將游標移到檔案的最後一行

w 將游標向前移到下乙個單詞的首字母

e 將游標向前移到下乙個單詞的最後乙個字母

b 將游標向後移到上乙個單詞首字母

- 將游標定位到上一行的行首

+ 將游標定位到下一行的行首

12| 將游標定位到當前行的第12列

l 將游標定位到螢幕的最下面一行

m 將游標定位到螢幕中間的一行

h 將游標定位到螢幕的最上面一行

'' 兩個單引號將游標移到它的先前的位置

游標定位命令(上下文的)

fb 將游標向前移到當前行上的下乙個字母b(或者其他的任意指定的字元)

fb 將游標向後移到當前行上的上乙個字母b(或指定的字元)

t# 將游標移到當前行上字元#的第1個例項的右側。例如,命令tm將游標移到當前行上第1個m的右側

t# 在當前行上向左移動游標,將它移到字元#的第1個例項的前一字元

/word 將游標向前移到單詞word的下乙個例項

?word 將游標向後移到單詞word的上乙個例項

n 將游標移到前面命令/word或?word中指定模式的下乙個例項

顯示調整命令

ctrl+d 顯示檔案中的下半屏文字

ctrl+u 顯示檔案中的上半屏文字

ctrl+f 顯示檔案中的下一屏文字

ctrl+b 顯示檔案中的上一屏文字

設定顯示選項

:set number 將行號作為螢幕顯示的一部分,但是行號並不是檔案的一部分。它的縮寫形式為:set nu

:set nonumber 清除螢幕上的行號。也可以使用縮寫形式:set nonu

:set showmode 在螢幕的右下角顯示追加模式資訊

:set list 在每行的行末顯示美元符號,並用ctrl+i表示製表符

:set showmatch 在輸入)或]時,將游標移到與之匹配的(或[

:set window=value 定義螢幕上顯示的文字行的行數

:set autoindent 自動縮排。也可以使用縮寫形式:set ai

:set tabstop=value 設定顯示製表符的空格字元個數。也可以使用縮寫形式ts=value

:set wrapmargin=value 設定顯示器的右頁邊。當輸入進入所設定的頁邊時,編輯器自動回車換行

:set ignorecase 指示編輯器搜尋字串,並忽略目標中字母的大小寫

:set 顯示設定的所有選項

:set all 顯示所有可以設定的選項

文字刪除命令

dd 刪除當前游標所有的文字行

#dd 刪除#行文字

dw 從文字中刪除乙個單詞

#dw 從文字中刪除#個單詞

x 刪除游標所在的乙個字元

#x 從文字中刪除#個字元

d 刪除當前行上游標後面的部分

:#,#d 例如,:12,37d 將刪除第12~37行之間的所有文字,包括第12和37行

撤銷命令

u 撤銷。恢復最近一次的文字修改操作,即使已經移動了游標。在linux系統中,再次使用撤銷命令將恢復更前一次的文字修改操作。在bsd的vi中,第2次撤銷操作將撤銷第一次撤銷操作,恢復第1次撤銷前修改的文字

:redo 在linux系統中,取消撤銷操作恢復文字修改。在標準的unix系統中,第2個u命令取消第1個u命令,結果就是乙個「redo」

u 如果在修改後還沒有將游標移出當前行,則可以撤銷對當前行進行的所有的文字修改

向文字中新增文字

a(小寫) 從游標的右側開始插入文字

a(大寫) 從當前行的行末開始新增文字

i(小寫) 從游標的左側開始插入文字

i(大寫) 從當前行的行首插入文字

o(小寫) 在游標的下面開啟(或插入)乙個新行

o(大寫) 在游標的上面開啟乙個新行

:#r filename 例如,:8r report.old讀取檔案report.old,並將它的內容放到當前檔案的第8行之後

esc 無論使用什麼命令進入了追加/插入模式,都可以通過按esc鍵離開追加模式返回到vi的命令模式

ctrl+v 允許輸入控制字元。按ctrl+v鍵後再按回車鍵將把ctrl+m插入到檔案中

在檔案中修改文字

cw 僅僅修改游標處的單詞(刪除單詞,然後進入追加模式中,以在被刪除單詞的位置新增文字)

s(小寫) 替換單個字元

s(大寫) 替換整行文字

cc 替換整行文字(同s)

r 用輸入的下乙個字元替代當前游標處的字元,並自動返回到命令模式

r 將編輯器放到覆蓋模式,用輸入的字元來逐個替換游標處的字元

c(大寫) 修改行上從游標到行末之間的文字

ct# 修改行上從游標到前向第1個目標字元之間的文字。例如cty將刪除當前行上從游標到向前第1個字元y之間的所有文字,並進入追加模式以在刪除文字的位置新增文字

cf# 修改行上從游標到前向第1個目標字元之間的文字(包括目標字元)。例如cfy將刪除當前行上從游標到向前第1個字元y之間(包括y)的所有文字,並進入追加模式以在刪除文字的位置新增文字

ct# 修改行上從游標到後向第1個目標字元之間的文字。例如cty將刪除當前行上從游標到向後第1個字元y之間的所有文字,並進入追加模式以在刪除文字的位置新增文字

cf# 修改行上從游標到後向第1個目標字元之間的文字(包括目標字元)。例如cfy將刪除當前行上從游標到向後第1個字元y之間(包括y)的所有文字,並進入追加模式以在刪除文字的位置新增文字

vi命令詳解

vi命令的使用 a vi檔名 文字檔案 進入vi後分三種狀態 1.ng表示讓游標到第n行 2.g表示檔案尾 3.1g表示檔案首 4.表示行首 5.表示行尾 6.x表示刪除乙個字元 7.dd表示剪下當前行 8.r表示替換乙個字元 9.cc替換一行 10.c替換從游標到行尾 11.yy表示拷貝行 12....

vi 命令詳解

vi 是visual edit 的縮寫 文字編輯器是所有計算機系統中最常用的一種工具。unix下的編輯器有ex,sed和vi等,其中,使用最為廣泛的是vi,而vi命令繁多。進入vi的命令。進入vi的命令 vi filename 開啟或新建檔案,並將游標置於第一行首 vi n filename 開啟檔...

vi命令詳解

1 vi的基本概念 基本上vi可以分為三種狀態,分別是命令模式 command mode 插入模式 insert mode 和底行模式 last line mode 各模式的功能區分如下 1 命令列模式command mode 控制螢幕游標的移動,字元 字或行的刪除,移動複製某區段及進入insert...