佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 詳解Linux中vi命令大全

詳解Linux中vi命令大全

熱門標(biāo)簽:鐵路電話系統(tǒng) Linux服務(wù)器 服務(wù)外包 地方門戶網(wǎng)站 網(wǎng)站排名優(yōu)化 AI電銷 百度競(jìng)價(jià)排名 呼叫中心市場(chǎng)需求

vi編輯器是所有Unix及Linux系統(tǒng)下標(biāo)準(zhǔn)的編輯器,它的強(qiáng)大不遜色于任何最新的文本編輯器,這里只是簡(jiǎn)單地介紹一下它的用法和一小部分指令。由于 對(duì)Unix及Linux系統(tǒng)的任何版本,vi編輯器是完全相同的,因此您可以在其他任何介紹vi的地方進(jìn)一步了解它。Vi也是Linux中最基本的文本編 輯器,學(xué)會(huì)它后,您將在Linux的世界里暢行無(wú)阻。

vi的基本概念

  基本上vi可以分為三種狀態(tài),分別是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能區(qū)分如下:

    1) 命令行模式command mode)

  控制屏幕光標(biāo)的移動(dòng),字符、字或行的刪除,移動(dòng)復(fù)制某區(qū)段及進(jìn)入Insert mode下,或者到 last line mode。

    2) 插入模式(Insert mode)

  只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令行模式。

    3) 底行模式(last line mode)

  將文件保存或退出vi,也可以設(shè)置編輯環(huán)境,如尋找字符串、列出行號(hào)……等。

    不過一般我們?cè)谑褂脮r(shí)把vi簡(jiǎn)化成兩個(gè)模式,就是將底行模式(last line mode)也算入命令行模式command mode)。

進(jìn)入vi的命令

vi filename :打開或新建文件,并將光標(biāo)置于第一行首
vi +n filename :打開文件,并將光標(biāo)置于第n行首
vi + filename :打開文件,并將光標(biāo)置于最后一行首
vi +/pattern filename:打開文件,并將光標(biāo)置于第一個(gè)與pattern匹配的串處
vi -r filename :在上次正用vi編輯時(shí)發(fā)生系統(tǒng)崩潰,恢復(fù)filename
vi filename....filename :打開多個(gè)文件,依次進(jìn)行編輯

移動(dòng)光標(biāo)類命令

h :光標(biāo)左移一個(gè)字符
l :光標(biāo)右移一個(gè)字符
space:光標(biāo)右移一個(gè)字符
Backspace:光標(biāo)左移一個(gè)字符
k或Ctrl+p:光標(biāo)上移一行
j或Ctrl+n :光標(biāo)下移一行
Enter :光標(biāo)下移一行
w或W :光標(biāo)右移一個(gè)字至字首
b或B :光標(biāo)左移一個(gè)字至字首
e或E :光標(biāo)右移一個(gè)字至字尾
) :光標(biāo)移至句尾
( :光標(biāo)移至句首
}:光標(biāo)移至段落開頭
{:光標(biāo)移至段落結(jié)尾
nG:光標(biāo)移至第n行首
n+:光標(biāo)下移n行
n-:光標(biāo)上移n行
n$:光標(biāo)移至第n行尾
H :光標(biāo)移至屏幕頂行
M :光標(biāo)移至屏幕中間行
L :光標(biāo)移至屏幕最后行
0:(注意是數(shù)字零)光標(biāo)移至當(dāng)前行首
$:光標(biāo)移至當(dāng)前行尾

屏幕翻滾類命令

Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:將第n行滾至屏幕頂部,不指定n時(shí)將當(dāng)前行滾至屏幕頂部。

插入文本類命令

i :在光標(biāo)前
I :在當(dāng)前行首
a:光標(biāo)后
A:在當(dāng)前行尾
o:在當(dāng)前行之下新開一行
O:在當(dāng)前行之上新開一行
r:替換當(dāng)前字符
R:替換當(dāng)前字符及其后的字符,直至按ESC鍵
s:從當(dāng)前光標(biāo)位置處開始,以輸入的文本替代指定數(shù)目的字符
S:刪除指定數(shù)目的行,并以所輸入文本代替之
ncw或nCW:修改指定數(shù)目的字
nCC:修改指定數(shù)目的行

刪除命令

ndw或ndW:刪除光標(biāo)處開始及其后的n-1個(gè)字
do:刪至行首
d$:刪至行尾
ndd:刪除當(dāng)前行及其后n-1行
x或X:刪除一個(gè)字符,x刪除光標(biāo)后的,而X刪除光標(biāo)前的
Ctrl+u:刪除輸入方式下所輸入的文本

搜索及替換命令

/pattern:從光標(biāo)開始處向文件尾搜索pattern
?pattern:從光標(biāo)開始處向文件首搜索pattern
n:在同一方向重復(fù)上一次搜索命令
N:在反方向上重復(fù)上一次搜索命令
:s/p1/p2/g:將當(dāng)前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:將文件中所有p1均用p2替換

選項(xiàng)設(shè)置

all:列出所有選項(xiàng)設(shè)置情況
term:設(shè)置終端類型
ignorance:在搜索中忽略大小寫
list:顯示制表位(Ctrl+I)和行尾標(biāo)志($)
number:顯示行號(hào)
report:顯示由面向行的命令修改過的數(shù)目
terse:顯示簡(jiǎn)短的警告信息
warn:在轉(zhuǎn)到別的文件時(shí)若沒保存當(dāng)前文件則顯示NO write信息
nomagic:允許在搜索模式中,使用前面不帶“\”的特殊字符
nowrapscan:禁止vi在搜索到達(dá)文件兩端時(shí),又從另一端開始
mesg:允許vi顯示其他用戶用write寫到自己終端上的信息

最后行方式命令

:n1,n2 co n3:將n1行到n2行之間的內(nèi)容拷貝到第n3行下
:n1,n2 m n3:將n1行到n2行之間的內(nèi)容移至到第n3行下
:n1,n2 d :將n1行到n2行之間的內(nèi)容刪除
:w :保存當(dāng)前文件
:e filename:打開文件filename進(jìn)行編輯
:x:保存當(dāng)前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:執(zhí)行shell命令command
:n1,n2 w!command:將文件中n1行至n2行的內(nèi)容作為command的輸入并執(zhí)行之,若不指定n1,n2,則表示將整個(gè)文件內(nèi)容作為command的輸入
:r!command:將命令command的輸出結(jié)果放到當(dāng)前行

寄存器操作

"?nyy:將當(dāng)前行及其下n行的內(nèi)容保存到寄存器?中,其中?為一個(gè)字母,n為一個(gè)數(shù)字
"?nyw:將當(dāng)前行及其下n個(gè)字保存到寄存器?中,其中?為一個(gè)字母,n為一個(gè)數(shù)字
"?nyl:將當(dāng)前行及其下n個(gè)字符保存到寄存器?中,其中?為一個(gè)字母,n為一個(gè)數(shù)字
"?p:取出寄存器?中的內(nèi)容并將其放到光標(biāo)位置處。這里?可以是一個(gè)字母,也可以是一個(gè)數(shù)字
ndd:將當(dāng)前行及其下共n行文本刪除,并將所刪內(nèi)容放到1號(hào)刪除寄存器中。

VI的使用

--------------------------------------------------------------------------------

一、插入文本

┌──┬────────────┐
│命令│描述          │
├──┼────────────┤
│i  │在當(dāng)前字符前插入文本  │
├──┼────────────┤
│I  │在行首插入文本      │
├──┼────────────┤
│a  │在當(dāng)前字符后添加文本  │
├──┼────────────┤
│A  │在行末添加文本     │
├──┼────────────┤
│o  │在當(dāng)前行后面插入一空行 │
├──┼────────────┤
│O  │在當(dāng)前行前面插入一空行 │
├──┼────────────┤
│R  │以改寫方式輸入文本   │
└──┴────────────┘

二、移動(dòng)光標(biāo)

┌─────┬───────────┐
│命令   │描述         │
├─────┼───────────┤
│j或下箭頭 │向下移動(dòng)一行     │
├─────┼───────────┤
│k或上箭頭 │向上移動(dòng)一行     │
├─────┼───────────┤
│h或左箭頭 │左移一個(gè)字符     │
├─────┼───────────┤
│l或右箭頭 │右移一個(gè)字符     │
├─────┼───────────┤
│w     │右移一個(gè)詞      │
├─────┼───────────┤
│W     │右移一個(gè)以空格分隔的詞│
├─────┼───────────┤
│b     │左移一個(gè)詞      │
├─────┼───────────┤
│B     │左移一個(gè)以空格分隔的詞│
├─────┼───────────┤
│0     │移到行首       │
│Ctrl-F  │向前翻頁(yè)       │
├─────┼───────────┤
│Ctrl-B  │向后翻頁(yè)       │
├─────┼───────────┤
│nG    │到第n行        │
├─────┼───────────┤
│G     │到最后一行      │
└─────┴───────────┘

三、替換文本

┌─────┬──────┐
│命令   │描述    │
├─────┼──────┤
│$     │到行尾   │
├─────┼──────┤
│(     │到句子的開頭│
├─────┼──────┤
│)     │到句子的末尾│
├─────┼──────┤
│{     │到段落的開頭│
├─────┼──────┤
│}     │到段落的末尾│
└─────┴──────┘

四、刪除文本

┌───┬───────────┐
│命令 │描述          │
├───┼───────────┤
│r   │替換一個(gè)字符      │
├───┼───────────┤
│c   │修改文本直到按下Esc健 │
├───┼───────────┤
│cw  │修改下一個(gè)詞      │
├───┼───────────┤
│cnw  │修改接下來的n個(gè)詞   │
└───┴───────────┘

五、文本編輯

┌──┬──────────────────────┐
│命寺│描述                    │
├──┼──────────────────────┤
│yy │將一行文本移到缺省緩沖區(qū)中          │
├──┼──────────────────────┤
│yn │將下一個(gè)詞移到缺省緩沖區(qū)中          │
├──┼──────────────────────┤
│ynw │將后面的n個(gè)詞移到缺省緩沖區(qū)中        │
├──┼──────────────────────┤
│p  │如果缺省緩沖區(qū)中包含一行文本,則在當(dāng)前   │
│  │行后面插入一個(gè)空行井將缺省緩沖區(qū)中的聲   │
│  │容粘貼到這一行中;如果缺省緩沖區(qū)中包含   │
│  │多個(gè)詞,把這些詞粘貼到光標(biāo)的右邊.     │
├──┼──────────────────────┤
│P  │如果缺省緩沖區(qū)中包含一行文本,則正當(dāng)前    │
│   │行前面插入一個(gè)空行井將缺省緩沖區(qū)中的內(nèi)    │
│  │容粘貼到這一行中;如果缺省緩沖區(qū)中包含    │
│   │多個(gè)詞,把這些詞粘貼到光標(biāo)的左邊    

  │
└──┴──────────────────────┘

六、保存退出

┌───────────┬───────────────┐
│命令         │描述             │
├───────────┼───────────────┤
│zz          │保存并退出          │
├───────────┼───────────────┤
│:w filename      │寫入文件            │
├───────────┼───────────────┤
│:W          │寫入文件           │
├───────────┼───────────────┤
│:x          │保存(如果當(dāng)前文件修改過)并退出│
├───────────┼───────────────┤
│:q!          │不保存文件,直接退出      │
├───────────┼───────────────┤
│:q          │退出vi            │

VI常用技巧

VI命令可以說是Unix/Linux世界里最常用的編輯文件的命令了,但是因?yàn)樗拿罴姸?,很多人都不?xí)慣使用它,其實(shí)您只需要掌握基本命令,然后加以靈活運(yùn)用,就會(huì)發(fā)現(xiàn)它的優(yōu)勢(shì),并會(huì)逐漸喜歡使用這種方法。本文旨在介紹VI的一些最常用命令和高級(jí)應(yīng)用技巧。

一、基本命令介紹

---- 1.光標(biāo)命令

k、j、h、l——上、下、左、右光標(biāo)移動(dòng)命令。雖然您可以在Linux中使用鍵盤右邊的4個(gè)光標(biāo)鍵,但是記住這4個(gè)命令還是非常有用的。這4個(gè)鍵正是右手在鍵盤上放置的基本位置。
nG——跳轉(zhuǎn)命令。n為行數(shù),該命令立即使光標(biāo)跳到指定行。
Ctrl+G——光標(biāo)所在位置的行數(shù)和列數(shù)報(bào)告。
w、b——使光標(biāo)向前或向后跳過一個(gè)單詞。

---- 2.編輯命令

i、a、r——在光標(biāo)的前、后以及所在處插入字符命令(i=insert、a=append、r=replace)。
cw、dw——改變(置換)/刪除光標(biāo)所在處的單詞的命令 (c=change、d=delete)。
x、d$、dd——?jiǎng)h除一個(gè)字符、刪除光標(biāo)所在處到行尾的所有字符以及刪除整行的命令。
---- 3.查找命令
---- /string、?string——從光標(biāo)所在處向后或向前查找相應(yīng)的字符串的命令。
---- 4.拷貝復(fù)制命令
---- yy、p——拷貝一行到剪貼板或取出剪貼板中內(nèi)容的命令。

二、常見問題及應(yīng)用技巧

---- 1.在一個(gè)新文件中讀/etc/passwd中的內(nèi)容,取出用戶名部分。

---- vi file
---- :r /etc/passwd 在打開的文件file中光標(biāo)所在處讀入/etc/passwd
---- :%s/:.*//g 刪除/etc/passwd中用戶名后面的從冒號(hào)開始直到行尾的所有部分。
---- 您也可以在指定的行號(hào)后讀入文件內(nèi)容,例如使用命令“:3r /etc/passwd”從新文件的第3行開始讀入 /etc/passwd的所有內(nèi)容。
---- 我們還可以使用以下方法刪掉文件中所有的空行及以#開始的注釋行。
---- #cat squid.conf.default | grep -v ^$ | grep -v ^#

---- 2.在打開一個(gè)文件編輯后才知道登錄的用戶對(duì)該文件沒有寫的權(quán)限,不能存盤,需要將所做修改存入臨時(shí)文件。

---- vi file
---- :w /tmp/1 保存所做的所有修改,也可以將其中的某一部分修改保存到臨時(shí)文件,例如僅僅把第20~59行之間的內(nèi)容存盤成文件/tmp/1,我們可以鍵入如下命令。
---- vi file
---- :20,59w /tmp/1

---- 3.用VI編輯一個(gè)文件,但需要?jiǎng)h除大段的內(nèi)容。

---- 首先利用編輯命令“vi file”打開文件,然后將光標(biāo)移到需要?jiǎng)h除的行處按Ctrl+G顯示行號(hào),再到結(jié)尾處再按Ctrl+G,顯示文件結(jié)尾的行號(hào)。
---- :23,1045d 假定2次得到的行號(hào)為23和1045,則把這期間的內(nèi)容全刪除,也可以在要?jiǎng)h除的開始行和結(jié)束行中用ma、mb命令標(biāo)記,然后利用“:a,bd”命令刪除。

---- 4.在整個(gè)文件的各行或某幾行的行首或行尾加一些字符串。

---- vi file
---- :3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。
---- :%s/$/some string/g 在整個(gè)文件每一行的行尾添加“some string”。
---- :%s/string1/string2/g 在整個(gè)文件中替換“string1”成“string2”。
---- :3,7s/string1/string2/ 僅替換文件中的第3行到第7行中的“string1”成“string2”。
---- 注意: 其中s為substitute,%表示所有行,g表示global。

---- 5.同時(shí)編輯2個(gè)文件,拷貝一個(gè)文件中的文本并粘貼到另一個(gè)文件中。

---- vi file1 file2
---- yy 在文件1的光標(biāo)處拷貝所在行
---- :n 切換到文件2 (n=next)
---- p 在文件2的光標(biāo)所在處粘貼所拷貝的行
---- :n 切換回文件1

---- 6.替換文件中的路徑。

---- 使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路徑/usr/bin換成/bin。也可以使用命令“:%s//usr/bin//bin/g”實(shí)現(xiàn),其中“”是轉(zhuǎn)義字符,表明其后的“/”字符是具有實(shí)際意義的字符,不是分隔符。

以上所述是小編給大家介紹的Linux中vi命令大全的全部敘述,希望大家喜歡。

您可能感興趣的文章:
  • linux vi命令知識(shí)點(diǎn)用法總結(jié)
  • Linux Vim 實(shí)用命令詳解
  • Linux 常用文本處理命令和vim文本編輯器
  • 詳解Linux常用命令的用法(二)————文本編輯器命令vi/vim
  • Docker service命令詳解(小結(jié))
  • 詳解Docker容器運(yùn)行多條命令(supervisor)
  • Vim中宏命令的使用實(shí)例詳解
  • Vim命令合集
  • Linux使用文本編輯器vi常用命令
  • Linux文件編輯命令vi詳細(xì)整理(總結(jié))
  • Vim編輯器常用的命令總結(jié)
  • Visual Studio 2017中找回消失的“在瀏覽器中查看”命令
  • 關(guān)于vi和vim的區(qū)別及命令詳解
  • Linux vim編輯命令模式
  • Vim的分屏功能命令大全
  • vim命令大全
  • 兩個(gè)命令把 Vim 打造成 Python IDE的方法
  • 最全的VI命令與快捷鍵大全集合建議收藏

標(biāo)簽:仙桃 蘭州 黃山 銅川 崇左 衡水 湘潭 湖南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解Linux中vi命令大全》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    武清区| 米林县| 福州市| 信阳市| 商水县| 永州市| 弋阳县| 靖安县| 桐乡市| 平谷区| 新龙县| 宁化县| 定西市| 安平县| 阳山县| 怀安县| 井冈山市| 津南区| 南陵县| 郧西县| 宣武区| 宁河县| 张家川| 巴彦淖尔市| 曲阜市| 中江县| 夹江县| 金川县| 德安县| 辽阳县| 达日县| 华池县| 德州市| 神农架林区| 磐安县| 吐鲁番市| 梁平县| 汾西县| 宁安市| 南通市| 石阡县|