❶ vi 命令大全
vi filename 打開或新建文檔,並將游標置於第一行行首
vi +n filename 打開文件,並將游標置於第n行首
vi + filename 打開文件,並將游標置於最後一行首
vi +/pattern filename 打開文件,並將游標置於第一個與pattern匹配的串處
vi -r filename 在上次正用vi編輯時發生系統崩潰,恢復filename
vi filename....filename 打開多個文件,依次進行編輯
w 保存當前文件
w /tmp1 另存為/tmp1
20,59w /tmp1 僅將20-59行之間的內存另存為/tmp1
x 或 wq 保存退出
q 退出vi
q! 退出不保存 >
!command 執行shell命令command
n1,n2 w !command 將文件中n1行至n2行的內容作為command的輸入並執行之,若不指定n1,n2,則表示將整個文件內容作為command的輸入
r !command 將命令command的輸出結果放到當前行
w !sudo tee % 保存沒許可權時,可獲取許可權再保存
h 游標左移一個字元
l 游標右移一個字元
space 游標右移一個字元
Backspace 游標左移一個字元
k 或 Ctrl+p 游標上移一行
j 或 Ctrl+n 游標下移一行
Enter 游標下移一行
w 或 W 游標右移一個字至字首
b 或 B 游標左移一個字至字首
e 或 E 游標右移一個字至字尾
) 游標移至句尾
( 游標移至句首
} 游標移至段落開頭
{ 游標移至段落結尾
nG 游標移至第n行首
n+ 游標下移n行
n- 游標上移n行
n$ 游標移至第n行尾
H 游標移至屏幕頂行
M 游標移至屏幕中間行
L 游標移至屏幕最後行
0 (注意是數字零)游標移至當前行首
$ 游標移至當前行尾
Ctrl+u 向文件首翻半屏
Ctrl+d 向文件尾翻半屏
Ctrl+f 向文件尾翻一屏
Ctrl+b 向文件首翻一屏
nz 將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部
i 在游標前
I 在當前行首
a 游標後
A 在當前行尾
o 在當前行之下新開一行
O 在當前行之上新開一行
r 替換當前字元
R 替換當前字元及其後的字元,直至按ESC鍵
s 從當前游標位置處開始,以輸入的文本替代指定數目的字元
S 刪除指定數目的行,並以所輸入文本代替
ncw 或 nCW 修改指定數目的字
nCC 修改指定數目的行
ndw 或 ndW 刪除游標處開始及其後的n-1個字
do 刪至行首
d$ 刪至行尾
ndd 刪除當前行及其後n-1行
x 或 X 刪除一個字元,x刪除游標後的,而X刪除游標前的
Ctrl+u 刪除輸入方式下所輸入的文本
n1,n2 d 將n1行到n2行之間的內容刪除
%d 刪除全部內容
1,$d 刪除全部內容
yy 復制當前行
nyy 復制當前行開始的n行
先按 v 然後方向鍵選擇區域,按 y 復制選中行
dd 剪切當前行
p (小) 在當前游標處下面粘貼內容
P (大) 在當前游標處上面粘貼內容
n1,n2 co n3 將n1行到n2行之間的內容拷貝到第n3行下
n1,n2 m n3 將n1行到n2行之間的內容移至到第n3行下
/abc 從游標開始處向文件尾搜索abc
?abc 從游標開始處向文件首搜索abc
//abc 從游標開始處向文件尾搜索/abc,其中/是轉義
n 在同一方向重復上一次搜索命令
N 在反方向上重復上一次搜索命令
s/vivian/sky/ 替換當前行第一個 vivian 為 sky
s/vivian/sky/g 替換當前行所有 vivian 為 sky
n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第一個 vivian 為 sky
n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 為sky
%s/vivian/sky/g (等同於 g/vivian/s//sky/) 替換每一行的每一個 vivian 為 sky
s#vivian/#sky# 替換當前行第一個 vivian/ 為 sky/(可以使用 # 或 + 作為分隔符,此時中間出現的 / 不會作為分隔符)
s/p1/p2/g 將當前行中所有p1均用p2替代
n1,n2s/p1/p2/g 將第n1至n2行中所有p1均用p2替代
g/p1/s//p2/g 將文件中所有p1均用p2替換
"?nyy 將當前行及其下n行的內容保存到寄存器?中,其中?為一個字母,n為一個數字
"?nyw 將當前行及其下n個字保存到寄存器?中,其中?為一個字母,n為一個數字
"?nyl 將當前行及其下n個字元保存到寄存器?中,其中?為一個字母,n為一個數字
"?p 取出寄存器?中的內容並將其放到游標位置處。這里?可以是一個字母,也可以是一個數字
ndd 將當前行及其下共n行文本刪除,並將所刪內容放到1號刪除寄存器中
set number 顯示行號
set number! 不顯示行號,其它選項同理加!號
set all 列出所有選項設置情況
set term 設置終端類型
set ignorance 在搜索中忽略大小寫
set list 顯示製表位(Ctrl+I)和行尾標志($)
set report 顯示由面向行的命令修改過的數目
set terse 顯示簡短的警告信息
set warn 在轉到別的文件時若沒保存當前文件則顯示NO write信息
set nomagic 允許在搜索模式中,使用前面不帶「」的特殊字元
set nowrapscan 禁止vi在搜索到達文件兩端時,又從另一端開始
set mesg 允許vi顯示其他用戶用write寫到自己終端上的信息
參考文獻:
https://www.cnblogs.com/mondol/p/vi-examples.html
❷ vi的常用命令
vi的基本操作
a) 進入vi
在系統提示符號輸入vi及文件名稱後,就進入vi全屏幕編輯畫面:
$ vi myfile
不過有一點要特別注意,就是您進入vi之後,是處於「命令行模式(command mode)」,您要切換到「插入模式(Insert mode)」才能夠輸入文字。初次使用vi的人都會想先用上下左右鍵移動游標,結果電腦一直嗶嗶叫,把自己氣個半死,所以進入vi後,先不要亂動,轉換到「插入模式(Insert mode)」再說吧!
b) 切換至插入模式(Insert mode)編輯文件
在「命令行模式(command mode)」下按一下字母「i」就可以進入「插入模式(Insert mode)」,這時候你就可以開始輸入文字了。
c) Insert 的切換
您目前處於「插入模式(Insert mode)」,您就只能一直輸入文字,如果您發現輸錯了字!想用游標鍵往回移動,將該字刪除,就要先按一下「ESC」鍵轉到「命令行模式(command mode)」再刪除文字。
d) 退出vi及保存文件
在「命令行模式(command mode)」下,按一下「:」冒號鍵進入「Last line mode」,例如:
: w filename (輸入 「w filename」將文章以指定的文件名filename保存)
: wq (輸入「wq」,存檔並退出vi)
: q! (輸入q!, 不存檔強制退出vi)
3、命令行模式(command mode)功能鍵
1). 插入模式
按「i」切換進入插入模式「insert mode」,按「i」進入插入模式後是從游標當前位置開始輸入文件;
按「a」進入插入模式後,是從目前游標所在位置的下一個位置開始輸入文字;
按「o」進入插入模式後,是插入新的一行,從行首開始輸入文字。
2). 從插入模式切換為命令行模式
按「ESC」鍵。
3). 移動游標
vi可以直接用鍵盤上的游標來上下左右移動,但正規的vi是用小寫英文字母「h」、「j」、「k」、「l」,分別控制游標左、下、上、右移一格。
按「ctrl」+「b」:屏幕往「後」移動一頁。
按「ctrl」+「f」:屏幕往「前」移動一頁。
按「ctrl」+「u」:屏幕往「後」移動半頁。
按「ctrl」+「d」:屏幕往「前」移動半頁。
按數字「0」:移到文章的開頭。
按「G」:移動到文章的最後。
按「$」:移動到游標所在行的「行尾」。
按「^」:移動到游標所在行的「行首」
按「w」:游標跳到下個字的開頭
按「e」:游標跳到下個字的字尾
按「b」:游標回到上個字的開頭
按「#l」:游標移到該行的第#個位置,如:5l,56l。
4). 刪除文字
「x」:每按一次,刪除游標所在位置的「後面」一個字元。
「#x」:例如,「6x」表示刪除游標所在位置的「後面」6個字元。
「X」:大寫的X,每按一次,刪除游標所在位置的「前面」一個字元。
「#X」:例如,「20X」表示刪除游標所在位置的「前面」20個字元。
「dd」:刪除游標所在行。
「#dd」:從游標所在行開始刪除#行
5). 復制
「yw」:將游標所在之處到字尾的字元復制到緩沖區中。
「#yw」:復制#個字到緩沖區
「yy」:復制游標所在行到緩沖區。
「#yy」:例如,「6yy」表示拷貝從游標所在的該行「往下數」6行文字。
「p」:將緩沖區內的字元貼到游標所在位置。注意:所有與「y」有關的復制命令都必須與「p」配合才能完成復制與粘貼功能。
6). 替換
「r」:替換游標所在處的字元。
「R」:替換游標所到之處的字元,直到按下「ESC」鍵為止。
7). 回復上一次操作
「u」:如果您誤執行一個命令,可以馬上按下「u」,回到上一個操作。按多次「u」可以執行多次回復。
8). 更改
「cw」:更改游標所在處的字到字尾處
「c#w」:例如,「c3w」表示更改3個字
9). 跳至指定的行
「ctrl」+「g」列出遊標所在行的行號。
「#G」:例如,「15G」,表示移動游標至文章的第15行行首。
4、Last line mode下命令簡介
在使用「last line mode」之前,請記住先按「ESC」鍵確定您已經處於「command mode」下後,再按「:」冒號即可進入「last line mode」。
A) 列出行號
「set nu」:輸入「set nu」後,會在文件中的每一行前面列出行號。
B) 跳到文件中的某一行
「#」:「#」號表示一個數字,在冒號後輸入一個數字,再按回車鍵就會跳到該行了,如輸入數字15,再回車,就會跳到文章的第15行。
C) 查找字元
「/關鍵字」:先按「/」鍵,再輸入您想尋找的字元,如果第一次找的關鍵字不是您想要的,可以一直按「n」會往後尋找到您要的關鍵字為止。
「?關鍵字」:先按「?」鍵,再輸入您想尋找的字元,如果第一次找的關鍵字不是您想要的,可以一直按「n」會往前尋找到您要的關鍵字為止。
D) 保存文件
「w」:在冒號輸入字母「w」就可以將文件保存起來。
E) 離開vi
「q」:按「q」就是退出,如果無法離開vi,可以在「q」後跟一個「!」強制離開vi。
「qw」:一般建議離開時,搭配「w」一起使用,這樣在退出的時候還可以保存文件。
5、vi命令列表
1、下表列出命令模式下的一些鍵的功能:
h
左移游標一個字元
l
右移游標一個字元
k
游標上移一行
j
游標下移一行
^
游標移動至行首
0
數字「0」,游標移至文章的開頭
G
游標移至文章的最後
$
游標移動至行尾
Ctrl+f
向前翻屏
Ctrl+b
向後翻屏
Ctrl+d
向前翻半屏
Ctrl+u
向後翻半屏
i
在游標位置前插入字元
a
在游標所在位置的後一個字元開始增加
o
插入新的一行,從行首開始輸入
ESC
從輸入狀態退至命令狀態
x
刪除游標後面的字元
#x
刪除游標後的#個字元
X
(大寫X),刪除游標前面的字元
#X
刪除游標前面的#個字元
dd
刪除游標所在的行
#dd
刪除從游標所在行數的#行
yw
復制游標所在位置的一個字
#yw
復制游標所在位置的#個字
yy
復制游標所在位置的一行
#yy
復制從游標所在行數的#行
p
粘貼
u
取消操作
cw
更改游標所在位置的一個字
#cw
更改游標所在位置的#個字
2、下表列出行命令模式下的一些指令
w filename
儲存正在編輯的文件為filename
wq filename
儲存正在編輯的文件為filename,並退出vi
q!
放棄所有修改,退出vi
set nu
顯示行號
/或?
查找,在/後輸入要查找的內容
n
與/或?一起使用,如果查找的內容不是想要找的關鍵字,按n或向後(與/聯用)或向前(與?聯用)繼續查找,直到找到為止。
對於第一次用vi,有幾點注意要提醒一下:
1、用vi打開文件後,是處於「命令行模式(command mode)」,您要切換到「插入模式(Insert mode)」才能夠輸入文字。切換方法:在「命令行模式(command mode)」下按一下字母「i」就可以進入「插入模式(Insert mode)」,這時候你就可以開始輸入文字了。
2、編輯好後,需從插入模式切換為命令行模式才能對文件進行保存,切換方法:按「ESC」鍵。
3、保存並退出文件:在命令模式下輸入:wq即可!(別忘了wq前面的:)
❸ linux之vi命令
vi profile
返回
:q 退出
:wq或者:x或者shift+zz 保存並退出
:q! 不保存並退出
:w 保存
:w! 強制保存
編輯到輸入模式:
i 在當前游標前面輸入
I 在當前游標所在行的行首,轉換為輸入模式
a 在當前游標後面輸入
A 在當前游標所在行的行尾,轉換為輸入模式
o 在當前游標所在行的下方,新建一行,並轉為輸入模式
O 在當前游標所在行的上方,新建一行,並轉為輸入模式
1、 移動游標
字元:方向鍵上下左右或者鍵盤kjhl(上下左右)
單詞:w移至下一個單詞的詞首;e跳至當前或下一個單詞的詞尾;b跳至當前或前一個單詞的詞首
行內:0絕對行首;^行首的第一個非空白字元;$絕對行尾
行間:G文章末尾;3G第3行;gg文章開頭
翻屏:ctrl f【往後翻】;Ctrl b【往前翻】
2、 刪除、替換單個字元
x刪除游標位置字元;3x刪除游標開始3個字元;r替換游標位置字元
dw刪除一個單詞;4dw刪除游標開始的4個單詞;dd刪除游標所在行;5dd刪除游標開始的5行
3、復制粘貼剪切
yw復制一個單詞,p在該行粘貼單詞;yy復制整行,p在該行下方粘貼整行
dd剪切整行,p再粘貼整行;dw剪切一個單詞,p再粘貼一個單詞
4、 撤銷&重做
u:撤銷;ctrl+r:重做撤銷的操作;.重復上一步的操作【假設先dd,再.,會再執行dd命令】
1、 set設置
set nu
set nonu
set readonly #設置只讀文件,不能修改,只在當前環境有效,退出文件,再次打開,這個只讀就無效了
set noreadonly #取消只讀
2、 /查找
/after查找文檔中的after【可以找到所有的after】,n向下翻,N向上翻
:/after查找文檔中的after所在行【可以找到所有的after】,n向下翻,N向上翻
3、!執行命令
比如:查找root目錄
:!ls /root/
4、 查找並替換
格式
【 :查找范圍s/查找的詞/要替換的詞/ 】
或者【:查找范圍s#查找的詞#要替換的詞# 】
或者【:查找范圍s%查找的詞%要替換的詞%】,
即分隔符可以是/、#、%
其中, 查找范圍 包括【.當前游標行】;【$末尾行】;【%全文】;【g一行內全部替換】;【i忽略大小寫】
比如 【 :.,$s/after/before/】 表示在當前游標行【.】到末尾【$】這個范圍內,將after替換為before, 但是如果一行有多個after的話,只會把第一個after替換掉 。
比如 【 :%s/after/before/】 表示在全文,將after替換為before,但是如果一行有多個after的話,只會把第一個after替換掉。
比如 【:%s/after/before/g】 ,表示在全文,將after替換為before,但是 如果一行有多個after的話,會把該行所有after替換掉,因為在命令裡面加了g 。
比如 【:%s/after/before/gi】 ,表示在全文,將after替換為before,且忽略大小寫並替換一行內所有after。
比如 【 :%d或者dG】 ,表示刪除全文
比如 【:1,$-4d】 ,表示刪除第一行到倒數第5行的數據
比如 【:1,4y】 ,表示復制1到4行,再按p可粘貼這4行
❹ VI常用命令有哪些
cp復制cd切換目錄mv移動rm刪除df查看磁碟剩餘空間vivim編輯器還有什麼命令:你看看/bin/sbin/usr/bin這幾個文件夾就知道了。
❺ 請教VI的用法,如何在VI裡面使用查找命令
使用vi編輯器編輯長文件時
方法如下:
1、命令模式下輸入「/字元串」,例如「/Section 3」。
2、如果查找下一個,按「n」即可。
要自當前游標位置向上搜索,請使用以下命令:
/pattern Enter
其中,pattern表示要搜索的特定字元序列。
要自當前游標位置向下搜索,請使用以下命令:
?pattern Enter
按下 Enter鍵後,vi 將搜索指定的pattern,並將游標定位在 pattern的第一個字元處。
例如,要向上搜索 place一詞,請鍵入:
www.2cto.com
vi 查找替換大全
vi/vim 中可以使用 :s 命令來替換字元串。以前只會使用一種格式來全文替換,今天發現該命令
有很多種寫法(vi 真是強大啊,還有很多需要學習),記錄幾種在此,方便以後查詢。
:s/vivian/sky/ 替換當前行第一個 vivian 為 sky
:s/vivian/sky/g 替換當前行所有 vivian 為 sky
:n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第一個 vivian 為 sky
:n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 為 sky
n 為數字,若 n 為 .,表示從當前行開始到最後一行
:%s/vivian/sky/(等同於 :g/vivian/s//sky/) 替換每一行的第一個 vivian 為 sky
:%s/vivian/sky/g(等同於 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky
可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符
:s#vivian/#sky/# 替換當前行第一個 vivian/ 為 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/ www.2cto.com
1.:s/vivian/sky/ 替換當前行第一個 vivian 為 sky
:s/vivian/sky/g 替換當前行所有 vivian 為 sky
2. :n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第一個 vivian 為 sky
:n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 為 sky
(n 為數字,若 n 為 .,表示從當前行開始到最後一行)
3. :%s/vivian/sky/(等同於 :g/vivian/s//sky/) 替換每一行的第一個 vivian 為 sky
:%s/vivian/sky/g(等同於 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky
4. 可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符
:s#vivian/#sky/# 替換當前行第一個 vivian/ 為 sky/
5. 刪除文本中的^M
問題描述:對於換行,window下用回車換行(0A0D)來表示,Linux下是回車(0A)來表示。這樣,將window上的文件拷到Unix上用時,總會有個^M.請寫個用在unix下的過濾windows文件的換行符(0D)的shell或c程序。 www.2cto.com
· 使用命令:cat filename1 | tr -d 「^V^M」 > newfile;
· 使用命令:sed -e 「s/^V^M//」 filename > outputfilename。需要注意的是在1、2兩種方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必須要手工進行輸入,而不是粘貼。
· 在vi中處理:首先使用vi打開文件,然後按ESC鍵,接著輸入命令:%s/^V^M//。
· :%s/^M$//g
如果上述方法無用,則正確的解決辦法是:
· tr -d "\r" < src >dest
· tr -d "\015" dest
· strings A>B
6. 其它
利用 :s 命令可以實現字元串的替換。具體的用法包括:
:s/str1/str2/ 用字元串 str2 替換行中首次出現的字元串 str1
:s/str1/str2/g 用字元串 str2 替換行中所有出現的字元串 str1
www.2cto.com
:.,$ s/str1/str2/g 用字元串 str2 替換正文當前行到末尾所有出現的字元串 str1
:1,$ s/str1/str2/g 用字元串 str2 替換正文中所有出現的字元串 str1
:g/str1/s//str2/g 功能同上
從上述替換命令可以看到:g 放在命令末尾,表示對搜索字元串的每次出現進行替換;不加 g,表示只對搜索
字元串的首次出現進行替換;g 放在命令開頭,表示對正文中所有包含搜索字元串的行進行替換操作。
❻ AIX中的vi常用命令
本文適用於AIX系統的vi編輯器,不兼容vim
測試環境: AIX 7.1
vi編輯器包括三種模式:
在編輯模式/命令模式下,通過ESC返回普通模式
如,右移20列寫作 20l
長單詞:以空格(space)、製表符(tab)、回車(enter)作為分隔符
短單詞:包括*()-等均視為分隔符
例如: if(a > 0) 中,長單詞包括 if(a 、 > 、 0) 3個,短單詞包括 if 、 ( 、 a 、 > 、 0 、 ) 6個
f=forward,b=backward,u=up,d=down
%適用於大中小三種括弧
/+n :正向搜索
/+N :逆向搜索
?+n :逆向搜索
?+N :正向搜索
對於組合命令,可以通過ESC取消
示例:逐詞替換
控制字元指ASCII碼中0x01-0x1F區間的不可見字元,主要用於程序控制。
在編輯模式下,輸入: crtl-v , ctrl-控制字元
例如回車(0x0D)輸入: ctrl-v , ctrl-m ,在vi中顯示為 ^M
❼ linux用VI編輯後保存退出命令是什麼啊
先按ESC進入Command模式,然後輸入「:wq」,回車就可以保存並退出了。
vi的其他保存/退出命令:
:w 保存;
:w filename 另存為filename;
:wq! 保存並強制退出;
:wq! filename 註:以filename為文件名保存後強制退出;
:q! 強制退出;
:x 保存並退出(僅當文件有變化時保存)
(7)vi中的命令擴展閱讀:
vi有三種工作模式:命令模式、文本編輯模式和最後行模式。不同工作模式下的操作方法有所不同。
1、命令行模式
該模式是進入vi編輯器後的默認模式。任何時候,不管用戶處於何種模式,按下Esc鍵即可進入命令模式。
在命令模式下,用戶可以輸入vi命令,用於管理自己的文檔。此時從鍵盤上輸入的任何字元都被當做編輯命令來解釋。若輸入的字元是合法的vi命令,則vi在接受用戶命令之後完成相應的動作。但需注意的是,所輸入的命令並不回顯在屏幕上。若輸入的字元不是vi的合法命令,vi 會響鈴報警。
2、文本輸入模式
在命令模式下輸入插入命令i、附加命令a、打開命令o、修改命令c、取代命令r或替換命令s都可以進入文本輸入模式。
在該模式下,用戶輸入的任何字元都被vi當做文件內容保存起來,並將其顯示在屏幕上。在文本輸入過程中,若想回到命令模式下,按下Esc鍵即可。
3、末行模式
末行模式也稱 ex 轉義模式。在命令模式下,用戶按:鍵即可進入末行模式下,此時vi會在顯示窗口的最後一行(通常也是屏幕的最後一行)顯示一個:作為末行模式的說明符,等待用戶輸入命令。多數文件管理命令都是在此模式下執行的(如把編輯緩沖區的內容寫到文件中等)。
末行命令執行完後,vi 自動回到命令模式。
❽ vi的用法
vi 命令 是UNIX操作系統和類UNIX操作系統中最通用的全屏幕純文本編輯器。
vi編輯器支持編輯模式和命令模式,編輯模式下可以完成文本的編輯功能,命令模式下可以完成對文件的操作命令,要正確使用vi編輯器就必須熟練掌握著兩種模式的切換。默認情況下,打開vi編輯器後自動進入命令模式。從編輯模式切換到命令模式使用「esc」鍵,從命令模式切換到編輯模式使用"A"、"a"、"O"、"o"、"I"、"i"鍵。
vi編輯器的三種工作方式之間的轉換如圖所示。
vi編輯器提供了豐富的內置命令,有些內置命令使用鍵盤組合鍵即可完成,有些內置命令則需要以冒號「:」開頭輸入。常用內置命令如下:
vi(選項)(參數)
知識擴展
vi編輯器有三種工作方式:命令方式、輸入方式和ex轉義方式。通過相應的命令或操作,在這三種工作方式之間可以進行轉換。
命令方式
在Shell提示符後輸入命令vi,進入vi編輯器,並處於vi的命令方式。此時,從鍵盤上輸入的任何字元都被作為編輯命令來解釋,例如,a(append)表示附加命令,i(insert)表示插入命令,x表示刪除字元命令等。如果輸入的字元不是vi的合法命令,則機器發出「報警聲」,游標不移動。另外,在命令方式下輸入的字元(即vi命令)並不在屏幕上顯示出來,例如,輸入i,屏幕上並無變化,但通過執行i命令,編輯器的工作方式卻發生變化:由命令方式變為輸入方式。
輸入方式
通過輸入vi的插入命令(i)、附加命令(a)、打開命令(o)、替換命令(s)、修改命令(c)或取代命令(r)可以從命令方式進入輸入方式。在輸入方式下,從鍵盤上輸入的所有字元都被插入到正在編輯的緩沖區中,被當做該文件的正文。進入輸入方式後,輸入的可見字元都在屏幕上顯示出來,而編輯命令不再起作用,僅作為普通字母出現。例如,在命令方式下輸入字母i,進到輸入方式,然後再輸入i,就在屏幕上相應游標處添加一個字母i。
由輸入方式回到命令方式的辦法是按下Esc鍵。如果已在命令方式下,那麼按下Esc鍵就會發出「嘟嘟」聲。為了確保用戶想執行的vi命令是在命令方式下輸入的,不妨多按幾下Esc鍵,聽到嘟聲後再輸入命令。
ex 轉義方式
vi和ex編輯器的功能是相同的,二者的主要區別是用戶界面。在vi中,命令通常是單個字母,如a,x,r等。而在ex中,命令是以Enter;鍵結束的命令行。vi有一個專門的「轉義」命令,可訪問很多面向行的ex命令。為使用ex轉義方式,可輸入一個冒號(:)。作為ex命令提示符,冒號出現在狀態行(通常在屏幕最下一行)。按下中斷鍵(通常是Del鍵),可終止正在執行的命令。多數文件管理命令都是在ex轉義方式下執行的(例如,讀取文件,把編輯緩沖區的內容寫到文件中等)。轉義命令執行後,自動回到命令方式。例如:
則從文件第一行至文件末尾($)將大寫I全部替換成小寫i
❾ Linux vi 操作命令
進入vi的命令
vi filename :打開或新建文件,並將游標置於第一行首
vi +n filename :打開文件,並將游標置於第n行首
vi + filename :打開文件,並將游標置於最後一行首
vi +/pattern filename:打開文件,並將游標置於第一個和pattern匹配的串處
vi -r filename :在上次正用vi編輯時發生系統崩潰,恢復filename
vi filename....filename :打開多個文件,依次進行編輯
移動游標類命令
h :游標左移一個字元
l :游標右移一個字元
space:游標右移一個字元
Backspace:游標左移一個字元
k或Ctrl+p:游標上移一行
j或Ctrl+n :游標下移一行
Enter :游標下移一行
w或W :游標右移一個字至字首
b或B :游標左移一個字至字首
e或E :游標右移一個字至字尾
) :游標移至句尾
( :游標移至句首
}:游標移至段落開頭
{:游標移至段落結尾
nG:游標移至第n行首
n+:游標下移n行
n-:游標上移n行
n$:游標移至第n行尾
H :游標移至屏幕頂行
M :游標移至屏幕中間行
L :游標移至屏幕最後行
0:(注意是數字零)游標移至當前行首
$:游標移至當前行尾
屏幕翻滾類命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。
插入文本類命令
i :在游標前
I :在當前行首
a:游標後
A:在當前行尾
o:在當前行之下新開一行
O:在當前行之上新開一行
r:替換當前字元
R:替換當前字元及其後的字元,直至按ESC鍵
s:從當前游標位置處開始,以輸入的文本替代指定數目的字元
S:刪除指定數目的行,並以所輸入文本代替之
ncw或nCW:修改指定數目的字
nCC:修改指定數目的行
刪除命令
ndw或ndW:刪除游標處開始及其後的n-1個字
do:刪至行首
d$:刪至行尾
ndd:刪除當前行及其後n-1行
x或X:刪除一個字元,x刪除游標後的,而X刪除游標前的
Ctrl+u:刪除輸入方式下所輸入的文本
搜索及替換命令
/pattern:從游標開始處向文件尾搜索pattern
?pattern:從游標開始處向文件首搜索pattern
n:在同一方向重復上一次搜索命令
N:在反方向上重復上一次搜索命令
:s/p1/p2/g:將當前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:將文件中所有p1均用p2替換
選項設置
all:列出所有選項設置情況
term:設置終端類型
ignorance:在搜索中忽略大小寫
list:顯示製表位(Ctrl+I)和行尾標志($)
number:顯示行號
report:顯示由面向行的命令修改過的數目
terse:顯示簡短的警告信息
warn:在轉到別的文件時若沒保存當前文件則顯示NO write信息
nomagic:允許在搜索模式中,使用前面不帶「」的特別字元
nowrapscan:禁止vi在搜索到達文件兩端時,又從另一端開始
mesg:允許vi顯示其他用戶用write寫到自己終端上的信息
最後行方式命令
:n1,n2 co n3:將n1行到n2行之間的內容拷貝到第n3行下
:n1,n2 m n3:將n1行到n2行之間的內容移至到第n3行下
:n1,n2 d :將n1行到n2行之間的內容刪除
:w :保存當前文件
:e filename:打開文件filename進行編輯
:x:保存當前文件並退出
:q:退出vi
:q!:不保存文件並退出vi
:!command:執行shell命令command
:n1,n2 w!command:將文件中n1行至n2行的內容作為command的輸入並執行之,若不指定n1,n2,則表示將整個文件內容作為command的輸入
:r!command:將命令command的輸出結果放到當前行
寄存器操作
"?nyy:將當前行及其下n行的內容保存到寄存器?中,其中?為一個字母,n為一個數字
"?nyw:將當前行及其下n個字保存到寄存器?中,其中?為一個字母,n為一個數字
"?nyl:將當前行及其下n個字元保存到寄存器?中,其中?為一個字母,n為一個數字
"?p:取出寄存器?中的內容並將其放到游標位置處。這里?能是個字母,也能是個數字
ndd:將當前行及其下共n行文本刪除,並將所刪內容放到1號刪除寄存器中。
進入vi
vi test
離開vi
:q! 離開vi,並放棄剛在緩沖區內編輯的內容。
:wq 將緩沖區內的資料寫入磁碟中,並離開vi。
:ZZ 同wq
同wq
:w 將緩沖區內的資料寫入磁碟中,但並不離開vi。
:q 離開vi,若文件被修改過,則會被需求確認是否放棄修改的內容,此指令可和: w 配合使用。
Vi 的操作模式
Vi 提供兩種操作模式:
輸入模式(insert mode)
指令模式(command mode)
當使用者進入vi後,既處於指令模式下,此刻鍵入所有字元皆被視為指令。
輸入模式:a(append) 游標之後加入資料。
A 該行之末加入資料
i (insert) 游標之前加入資料
I 該行之首加入資料
o (open) 新增一行和該行之下供輸入資料
O 新增一行和該行之上供輸入資料
指令模式:B 移至該行第一個字元,若游標在該行第一字元則游標移至上一行第一字元。
b 由游標所在位置之前一個字串的第一個字元
cc 刪除整行,修改整行的內容。
D 以行為單位,刪除游標在內後面的所有字元。
db 刪除該行游標前字元
dd 刪除該行
de 刪除自游標開始後面的字元
d加字元刪除游標所在位置至字元之間的單
E移至該行最後字元,若游標在該行最後字元則游標移至下一行最後字元
e由游標所在位置至該字串的最後一個字元
G 移至該檔案的最後一行
h 向前移一個字元
j 向下移一個字元
k 向上移一個字元
0 移至該行之首
M 移至視窗的中間那行
L 移至視窗的最後一行
l 向後移一個字元
0 由游標所在位置該行的第一個字元
nG 移至該檔案的第n行
n+ 自游標所在位置向後移n行至該行的第一字元
n- 自游標所在位置向前移n行至該行的第一字元
R 進入取代狀態,直到《ESC》為止
s 刪除游標所在字元,並進入取代模式直到《ESC》
S 刪除游標所在之該行資料,並進入輸入模式直到《ESC》
w 由游標所在位置之下一個字串的第一個字元
x 刪除游標所在該字元。
X 刪除游標所在之前一字元。
r 用接於此指令之後的字元取代(replace)游標所在字元
yy yank整行,使游標所在該行復制到記憶體緩沖區
顯示該行之行號、檔案名稱、檔案中最末之行號、游標所在行號占
總行號之百分比
$ 由游標所在位置至該行的最後一個字元。
) 由游標所在位置至下一個句子的第一個字元。
( 由游標所在位置至該句子的第一個字元。
{ 由游標所在位置至該段落的最後一個字元。
} 由游標所在位置至該段落的第一個字元
yank和delete可將指定的資料復制到記憶體緩沖區,而藉有put指令可將緩沖區內的資料復制到熒幕上
例如:搬移一行 :在該行執行dd
游標移至目的地
執行p
復制一行 :在該行執行yy
游標移至目的地
執行p
視窗移動:
視窗往下卷一頁
視窗往上卷一頁
視窗往下卷半頁
視窗往上卷半頁
視窗往下卷一行
視窗往上卷一行
刪除、復制及修改指令介紹:
d(delete)、c(change)和y(yank)這一類的指令在vi 中的指令格式為:
operation+scope=command
(運運算元)(范圍)
運運算元:
d 刪除指令。刪除資料,但會將刪除資料復制到記憶體緩沖區。
y 將資料(字組、行列、句子或段落)復制到緩沖區。
p 放置(put)指令,和d和y配合使用。可將最後delete或yank的資料放置於游標所在位置之行列下。
c 修改(change)指令,類似delete於insert的組合。刪除一個字組、句子等資料,並插入新鍵入的
❿ linux中vi常用的命令
[語法]:vi [-wn] [-R] 文件…
[說明]: vi 是一個基於行編輯器 ex 上的全屏幕編輯器,可以在vi 中使用 ex,ed的全部命令,vi選項中 -wn 指將編輯窗口大小置為n行,-R 為將編輯的文件置為只讀模式, vi 工作模式分為命令模式和輸入模式,一般情況下在命令模式下,可敲入vi命令,進入輸入模式下時可以編輯要編輯的文本,命令 a A i I o O c C s S R 可進入輸入模式,在輸入模式下按 ESC 鍵可推出輸入模式,回到命令模式,在命令模式中敲入: 命令,則可進入ex方式,在屏幕底部出現提示符 : ,此時可使用任意ex命令,屏幕底行也用來作/ ? ! 命令的提示行,大多數命令可以在其前面加數字,表示命令執行的重復次數,下面簡單介紹一下vi 的命令集,^ 表示(CTRL)鍵
^B 退回前一頁,前面加數字表示重復次數,每次換頁時
保留上一頁的兩行
^D 在命令模式下,表示下滾屏幕的一半,在輸入模式下,表示回退至
左邊的自動縮進處
^E 顯示屏幕底線之下的一行
^F 前進一頁,前面加數字表示重復次數,每次換頁時
保留上一頁的兩行
^G 顯示當前文件名,當前行號和文件總行數,並用百分號當前行在
整個文件中的位置
^H(退格) 在命令模式下,游標左移一格;在輸入模式下,刪去前面的字元
^I(TAB) 在輸入模式下,產生一串空格
^J(LF) 游標下移一行
^L 刷新屏幕,即將屏幕重新顯示
^M(回車) 在命令模式下,游標移動至下行開頭
在輸入模式下,開辟一新行
^N 游標下移一行
^P 游標上移一行
^Q 在輸入模式下,將其後的非列印字元作為正文插入
^R 刷新屏幕
^U 屏幕上滾一半,前面加數字時表示上滾的行數,此數字對
以後的^D ^U 命令有效
^V 在輸入模式下,將其後的非列印字元作為正文插入
^W 在輸入模式下,使游標回退一個字
^Y 顯示屏幕底線之上的一行
^Z 暫停編輯,退回上層Shell
^[(ESC) 退出輸入模式,回到命令模式
! 暫時退出編輯,執行Shell命令
(雙引號) 用於標志有名緩沖區,編號緩沖區1-9用於保存被刪去的正文,字
母名緩沖區a-z供用戶存放自定義的正文
$ 將游標移動到當前行尾,前加數字則表示前移行數,如2$表示移動
到下一行行尾
% 將游標移動到配對的小括弧()或大括弧{}上去
( 退回句子開頭
) 前移到句子開頭
- 退到上一行第一個非空格字元
. 重復上一次改變緩沖區內容的命令
/ 模式向前搜索模式,將游標移動到模式出現處,模式是一個正規
表達式,(參看 grep)
: 在屏幕底部提示:,其後可使用ex命令
? 功能同 / ,但方向是向前查找
[[ 游標回退至前一節分界處
\ 轉意符
]] 游標前移至節分界處
^(不是CTRL) 游標移至當前行第一個非空字元上
『 連續兩個」表示將游標移至其移動前的位置,』後跟字母表示游標字
母標記的行首(參看 m 命令)
A 在行尾插入正文,進入輸入模式
B 游標回退一個字
C 替換游標後的內容
D 刪除游標後的內容
E 游標前移到字尾
F 字元 在當前行向左查找指定字元
G 游標移動到其前面數字指定的行,若未指定則移動到最後一行
H 游標移動到屏幕頂行,若前面有數字,則移動到屏幕上該數字
指定的行
I 在行開頭插入正文
J 連接兩行,若前面有數字則連接數字指定的行
L 游標移動到屏幕底行,若前面有數字,則移動到屏幕底線往上數該
數字指定的行
M 游標移動到屏幕中線
N 使用模式查找/或?時,重復找下一個匹配的模式,但方向與上次相
反,其功能同 n ,但方向相反
O 在當前行上開辟一新行
P 將上次被刪除的正文插入游標前面,可在其前面加緩沖區編號,編
號1-9用於保存被刪去的正文,字母名緩沖區a-z供用戶存放自定
義的正文
Q 從vi 推出進入ex命令狀態
R 替換字元串
S 替換整行
T 字元 向左查找字元
U 將當前行恢復至第一次修改前的狀態
W 游標移至下一個字首
X 刪除游標前的字元
Y 將當前行存入無名緩沖區,前面加數字表示存入的行數,也可用有
名緩沖區來保存,以後可用命令p或P將其取出
ZZ 存檔退出vi
a 游標後插入正文
b 游標回退至上一個字首
cw 替換當前字
c) 替換當前句子
dw 刪除一個字
dd 刪除一行
e 游標移到下一個字末
f 字元 在當前行向前查找字元
h 游標左移一格
i 在游標前插入正文
j 游標下移一行
k 游標上移一行
l 游標右移一格
m 字母 用字母標記當前行,以後可用 『字母使游標移動到當前行,
(參看』命令)
n 重復上次 / 或 ? 命令
o 在當前行下開辟一新行
p 將用戶緩沖區內容放到游標位置(參看P命令)
r 替換當前字元
s 用一串字元替換當前字元
t 字元 游標移動至字元前
u 取消上次操作
w 游標移至下一字首
x 刪除當前字元
yw 將當前字存入無名緩沖區,前面可加x,表示存入名字為x的有名
緩沖區(x為a-z),也可加數字表示存入的字數,以後可用P或p命
令取出
yy 將當前行存入無名緩沖區,用法參看yw
{ 游標移動至前一段開頭
| 游標移至行首,若前面加數字,則移到數字指定行的行首
} 游標移至下一段開頭
在:提示符下,常用命令如下:
:w 當前文件存檔
:w! 強制存檔
:w 文件 將內容寫入指定文件
:w! 文件 強制寫入指定文件
:x,y w 文件 將 x至 y 行寫入指定文件中
:r 文件 將文件讀到游標位置
:r ! 命令將系統命令的輸出讀到游標位置
:q 退出編輯
:q! 強制退出
:x 與命令ZZ相同
:e 文件名 編輯另一文件
:e ! 重新編輯文件,放棄任何改變
:sh 執行sh,結束後回到編輯
:! 命令 執行命令後回到編輯
:n 編輯下一文件
:n 文件表 重新定義待編輯文件表
:set 設置 vi 的選項,例如 set nu 表示每行前顯示行號,在選項前
加no則表示清除該選項,例如 set nonu 表示每行前不顯示行
號,下面是一些常用的選項:
ai 自動縮進
aw 編輯下一文件前自動存檔
ic 查找字元串時不區分大小寫
nu 每行前顯示行號
sm 輸入)及}時顯示與之配對的( 或 {
slow 插入時延遲屏幕刷新
ws 使查找能繞過文件尾從頭進行
wa 寫文件之前不作對文件的檢查