網(wǎng)站產(chǎn)品頁(yè)面什么時(shí)候做怎么自己做網(wǎng)站
天行健,君子以自強(qiáng)不息;地勢(shì)坤,君子以厚德載物。
每個(gè)人都有惰性,但不斷學(xué)習(xí)是好好生活的根本,共勉!
文章均為學(xué)習(xí)整理筆記,分享記錄為主,如有錯(cuò)誤請(qǐng)指正,共同學(xué)習(xí)進(jìn)步。
文章目錄
- vi文本編輯器編輯文本
- 1. vi介紹
- 1.1 vi的特點(diǎn)
- 1.2 vi的工作模式
- 2. vi的啟動(dòng)與退出
- 3. vi基本命令
- 3.1 常用命令分類(lèi)
- 3.2 屏幕翻滾命令
- 3.3 光標(biāo)定位命令
- 3.4 光標(biāo)移動(dòng)命令
- 3.5 文本輸入與刪除
- 3.5.1 文本的輸入insert
- 3.5.2 文本的刪除delete
- 4. 文本的修改與替換
- 4.1 文本的修改correct
- 4.2 文本的替換replace
- 5. 文本的拷貝與粘貼copy
- 6. 撤銷(xiāo)與重做
- 7. vi常用末行命令
- 7.1 字符串搜索
- 7.2 字符串替換s
- 7.3 全局命令global
- 7.4 全局替換
- 7.5 文件操作與退出命令
- 7.6 其他常用命令
- 7.6.1 行編輯命令
- 7.6.2 執(zhí)行shell命令
- 7.6.3 設(shè)定vi選項(xiàng)
Linux入門(mén)學(xué)習(xí)系列文章:
Linux學(xué)習(xí)之系統(tǒng)用戶和用戶組的使用
Linux學(xué)習(xí)之系統(tǒng)管理相關(guān)內(nèi)容
Linux學(xué)習(xí)之創(chuàng)建文件和目錄相關(guān)內(nèi)容
Linux學(xué)習(xí)之刪除文件和目錄
Linux學(xué)習(xí)之復(fù)制文件和目錄
Linux學(xué)習(xí)之路徑、文件和目錄的移動(dòng)和重命名
Linux學(xué)習(xí)之查看文件內(nèi)容
Linux學(xué)習(xí)之vi文本編輯器的使用
Linux學(xué)習(xí)之查找文件
Linux入門(mén)學(xué)習(xí)指南
vi文本編輯器編輯文本
1. vi介紹
- Linux文本編輯器有ex、sed、vi和emacs等
- vi是最基本的文本編輯器
- vi是visual的縮寫(xiě)
- vi是所有unix和Linux系統(tǒng)上必配的編輯器
- 現(xiàn)在Linux上配備的主流的文本編輯器是vi的增強(qiáng)版vim
- vim是vi improved的簡(jiǎn)稱(chēng)
- vi是一個(gè)全屏幕文本編輯器,具備文本編輯的所有功能,高效快捷
1.1 vi的特點(diǎn)
- 編輯功能強(qiáng)大:
具有高級(jí)編輯特性,可通過(guò)正則表達(dá)式、宏和命令腳本完成復(fù)雜編輯,實(shí)現(xiàn)智能化和自動(dòng)化 - 適用于各種版本的Unix/Linux系統(tǒng):
vi是Unix/Linux系統(tǒng)的標(biāo)準(zhǔn)文本編輯器 - 適用于各種類(lèi)型的終端:
對(duì)終端設(shè)備有廣泛的適應(yīng)性 - 使用靈活快捷:
初學(xué)者可能覺(jué)得命令復(fù)雜難度高,但對(duì)于熟練掌握后的人來(lái)說(shuō),就是一個(gè)編輯利器
1.2 vi的工作模式
vi有三種工作模式
- 命令模式command mode:
輸入任何字符都作為命令來(lái)解釋執(zhí)行,屏幕上不顯示輸入內(nèi)容,命令模式用于完成各種文本修改工作 - 輸入模式insert mode:
輸入的任何字符都將作為文件的內(nèi)容被保存,并顯示在屏幕上,輸入模式用于完成文本錄入工作 - 末行模式last line mode:
也稱(chēng)為ex轉(zhuǎn)義模式,在末行模式下,光標(biāo)停留在屏幕的最末行,在此接收輸入的命令并執(zhí)行,末行模式用于執(zhí)行全局性操作,如文件操作、參數(shù)設(shè)置、查找與替換、拷貝與粘貼、執(zhí)行shell命令等
2. vi的啟動(dòng)與退出
輸入命令進(jìn)入vi全屏幕編輯環(huán)境
vi 文件名
啟動(dòng)過(guò)程描述:先建立一個(gè)編輯緩沖區(qū),若指定了文件且該文件已存在,則將其內(nèi)容讀到編輯緩沖區(qū)中,若指定的文件不存在,則創(chuàng)建此文件,然后將光標(biāo)定位在第一行第一列的位置上
vi啟動(dòng)后首先進(jìn)入命令模式,此時(shí)可通過(guò)vi的編輯命令進(jìn)行文本的輸入和修改
注意:編輯命令只是在修改調(diào)入緩沖區(qū)中的文本的副本,文本本身不會(huì)被修改,編輯完成后,需要用:wq命令將修改后的內(nèi)容保存到文件中并退出vi才算完成修改,此次運(yùn)行未對(duì)文件做任何修改,則可用:q退出
3. vi基本命令
vi命令相當(dāng)多,但常用的只有一小部分
3.1 常用命令分類(lèi)
- 屏幕翻滾
- 移動(dòng)光標(biāo)
- 插入與刪除
- 修改與替換
- 拷貝與粘貼
- 復(fù)原與重復(fù)
vi命令不需要配置鼠標(biāo)和控制鍵,操作速度更快,效率更高
盡管vi只用字符命令就可以完成所有編輯操作,vi還是提供了鍵盤(pán)的其他控制操作的支持
按鍵 | 命令模式 | 輸入模式 | 末行模式 |
---|---|---|---|
Home | 移動(dòng)光標(biāo)到行的最前面 | 移動(dòng)光標(biāo)到行的最前面 | 移動(dòng)光標(biāo)到行的最前面 |
End | 移動(dòng)光標(biāo)到行的最后面 | 移動(dòng)光標(biāo)到行的最前面 | 移動(dòng)光標(biāo)到行的最前面 |
PageDown | 向下翻頁(yè) | 移動(dòng)光標(biāo)到行的最前面 | 向下翻找歷史命令 |
PageUp | 向上翻頁(yè) | 移動(dòng)光標(biāo)到行的最前面 | 向下翻找歷史命令 |
Delete | 刪除光標(biāo)位置的字符 | 移動(dòng)光標(biāo)到行的最前面 | 移動(dòng)光標(biāo)到行的最前面 |
Insert | 進(jìn)入輸入模式 | 替換-輸入 | 無(wú)效 |
Backspace | 光標(biāo)前移一個(gè)字符 | 刪除光標(biāo)前的字符 | 刪除光標(biāo)前的字符 |
Space | 光標(biāo)后移一個(gè)字符 | 空格 | 空格 |
Enter | 光標(biāo)下移一個(gè)字符 | 換行 | 提交命令 |
上下左右箭頭 | 按箭頭方向移動(dòng)光標(biāo) | 按鍵都方向移動(dòng)光標(biāo) | 找歷史命令 |
注:
在命令模式下輸入的字符都被vi解釋為命令,不在屏幕上顯示,若輸入的是非法命令則警報(bào)
vi區(qū)分大小寫(xiě)
以下分類(lèi)介紹常用vi命令
3.2 屏幕翻滾命令
以下為屏幕翻滾命令的組合鍵列表
組合鍵 | 功能 |
---|---|
ctrl+u | 向上翻半屏 |
ctrl+d | 向下翻半屏 |
PageDown | 向下翻一屏 |
ctrl+f | 向下翻一屏,同PageDown |
PageUp | 向上翻一屏 |
ctrl+b | 向上翻一屏,同PageUp |
[n]z+Enter | 將第n行滾至屏幕頂部,不指定n時(shí)將當(dāng)前行滾至屏幕頂部 |
3.3 光標(biāo)定位命令
按鍵與功能列表
按鍵 | 功能 |
---|---|
Home | 光標(biāo)移動(dòng)至行首 |
0 | 光標(biāo)移動(dòng)至行首,同Home |
End | 光標(biāo)移動(dòng)至行尾 |
$ | 光標(biāo)移動(dòng)到行尾,同End |
^ | 光標(biāo)移動(dòng)至行首第一個(gè)非空格字符 |
[n]G | 光標(biāo)移動(dòng)到第n行,未指定n時(shí)移動(dòng)到末行 |
[n]I | 光標(biāo)移動(dòng)到第n行,未指定n時(shí)移動(dòng)到首列 |
H、M、L | 光標(biāo)移動(dòng)到屏幕首、中、尾行行首 |
3.4 光標(biāo)移動(dòng)命令
vi不支持鼠標(biāo)移動(dòng)光標(biāo),但可以將通過(guò)按鍵進(jìn)行操作
按鍵與功能列表
按鍵 | 功能 |
---|---|
按鍵左下上右 | 光標(biāo)向左、下、上、右移動(dòng)一個(gè)字符 |
h、j、k、l | 光標(biāo)向左、下、上、右移動(dòng)一個(gè)字符,同箭頭鍵 |
b、w | 光標(biāo)移動(dòng)到上一個(gè)詞、下一個(gè)詞首 |
e | 光標(biāo)移動(dòng)到詞尾 |
(、) | 光標(biāo)移動(dòng)到句首、句尾 |
{、} | 光標(biāo)移動(dòng)到段首、段尾 |
注:光標(biāo)移動(dòng)命令前帶數(shù)字n時(shí)表示重復(fù)移動(dòng)n次,如4e表示移動(dòng)到后面第4個(gè)詞的詞尾
3.5 文本輸入與刪除
輸入文本前先將光標(biāo)定位到要輸入內(nèi)容的位置,執(zhí)行插入命令,進(jìn)入輸入模式,處于輸入模式時(shí)屏幕底部會(huì)顯示–insert–提示
表示后續(xù)的輸入都作為文件的輸入內(nèi)容,輸入完成后按esc命令返回命令模式
3.5.1 文本的輸入insert
插入命令都是單字符命令,可實(shí)現(xiàn)在當(dāng)前光標(biāo)位置的前、后、行首、行尾、上一行、下一行開(kāi)始輸入
命令如下
按鍵 | 功能 |
---|---|
a或A | 在光標(biāo)位置后、行尾后開(kāi)始插入 |
i或I | 在光標(biāo)位置前、行首前開(kāi)始插入,i的作用于insert鍵相同 |
o或O | 在光標(biāo)所在行之后、光標(biāo)所在行之前的新行開(kāi)始插入 |
3.5.2 文本的刪除delete
刪除文本最簡(jiǎn)單的方法是將光標(biāo)移動(dòng)到要?jiǎng)h除的字符上,每按一下x鍵或者delete鍵就會(huì)刪除一個(gè)字符,刪除文本內(nèi)容較多時(shí),可用以下命令
按鍵 | 功能 |
---|---|
x或X | 刪除光標(biāo)處、光標(biāo)前的字符,x的作用與delete鍵相同 |
dd | 刪除光標(biāo)所在的行 |
D | 刪除光標(biāo)右面的文本 |
J | 刪除當(dāng)前行尾的換行符,使當(dāng)前行與下一行合并尾一行 |
d+ | 定位符 刪除從光標(biāo)位置到指定位置范圍內(nèi)的字符 |
關(guān)于d+參數(shù)的常用如下
參數(shù) | 描述 |
---|---|
d0或d^ | 刪除光標(biāo)左面的文本,0或^表示行首 |
d$ | 刪除光標(biāo)右面的文本,$表示行尾 |
dG | 刪除光標(biāo)所在行之后的所有行,G表示最后一行 |
db | 刪除光標(biāo)處前的字符直到詞首,b代表詞首 |
de | 刪除光標(biāo)處的字符直到詞尾,e表示詞尾 |
dw | 刪除光標(biāo)處的字符直到下一個(gè)詞的詞首,w表示下一個(gè)詞的詞首 |
注:
命令前帶n時(shí)表示刪除方位擴(kuò)大n倍,如3dd表示刪除3行,2de表示刪除從光標(biāo)開(kāi)始的兩個(gè)詞
4. 文本的修改與替換
4.1 文本的修改correct
文本修改指改寫(xiě)一部分文本的內(nèi)容,修改過(guò)程描述:先刪除指定范圍的文本,然后插入新文本,最后esc結(jié)束插入
命令如下
命令 | 功能 |
---|---|
cc | 修改光標(biāo)所在的行 |
C | 修改光標(biāo)處到行尾的文本 |
c+ | 定位符 修改光標(biāo)到指定范圍內(nèi)的文本,常用如下: |
c0或c^ | 修改光標(biāo)左面的文本 |
c$ | 修改光標(biāo)右面的文本 |
cG | 修改光標(biāo)所在行之后的所有行 |
cb | 修改光標(biāo)處前的字符直到詞首 |
cw | 修改光標(biāo)處的字符直到詞尾 |
cl | 修改光標(biāo)處的字符 |
注:
以上命令前帶數(shù)字表示修改范圍擴(kuò)大n倍,如4cc表示修改從光標(biāo)所在行開(kāi)始的4行,3cw表示修改從光標(biāo)開(kāi)始的3個(gè)詞
4.2 文本的替換replace
替換replace指覆蓋,是相同長(zhǎng)度字符替換,替代substitute指取代,可以相同也可以不同長(zhǎng)度內(nèi)容進(jìn)行取代
替換命令
命令 | 功能 |
---|---|
r | 用輸入的字符替換光標(biāo)處的字符 |
R | 用輸入的文本逐個(gè)替換從光標(biāo)處開(kāi)始的各個(gè)字符,直到按下esc鍵 |
替代命令
命令 | 功能 |
---|---|
s | 用輸入的文本替代光標(biāo)處的字符,用esc鍵結(jié)束輸入,等同于cl |
S | 用輸入的文本替代光標(biāo)所在的行,用esc鍵結(jié)束輸入,等同于cc |
5. 文本的拷貝與粘貼copy
拷貝指將光標(biāo)處的文本幅值到一個(gè)緩沖區(qū)中,類(lèi)似Windows的剪切板
粘貼指將緩沖區(qū)中的內(nèi)容插入到光標(biāo)處
命令與功能
命令 | 功能 |
---|---|
yy | 拷貝光標(biāo)所在行至緩沖區(qū) |
y+定位符 | 拷貝光標(biāo)到指定范圍內(nèi)的文本,常用如下: |
y0或y^ | 拷貝光標(biāo)左面的文本 |
y$ | 拷貝光標(biāo)右面的文本 |
yG | 拷貝光標(biāo)所在行之后的所有行 |
yb | 拷貝光標(biāo)處的字符直到詞首 |
yw | 拷貝光標(biāo)處的字符直到詞尾 |
6. 撤銷(xiāo)與重做
撤銷(xiāo)undo
消除上一個(gè)命令所做的修改,恢復(fù)到命令執(zhí)行前的樣子
重做redo
重復(fù)執(zhí)行上一個(gè)命令
命令
命令 | 功能 |
---|---|
u | 撤銷(xiāo)上一個(gè)命令所做的修改 |
U | 撤銷(xiāo)最近針對(duì)一行所做的全部修改,在對(duì)一行連續(xù)做了多處修改后,可用此命令一次恢復(fù)全行 |
. | 重復(fù)前一個(gè)命令 |
7. vi常用末行命令
命令模式下輸入:或/或?字符都將進(jìn)入末行模式,后續(xù)的輸入被解釋尾行命令,在屏幕末行顯示
屏幕輸入完成后按Enter鍵執(zhí)行,末行命令執(zhí)行結(jié)束后返回命令模式,或退出vi
命令分類(lèi):字符串搜索與替換命令、文件操作與退出命令、其他
7.1 字符串搜索
在文件中查找某各字符串可用字符串搜索命令,執(zhí)行命令后光標(biāo)會(huì)停留在第一個(gè)匹配字符串的首字符處
按n或N可移至下一個(gè)匹配字符串首,不存在匹配字符串則末行顯示"找不到模式"
命令
命令 | 功能 |
---|---|
/模式 | 從光標(biāo)處向后 搜索與指定模式匹配的字符串,按n向后繼續(xù)找 |
?模式 | 從光標(biāo)處向前搜索與指定模式匹配的字符串,按N向前繼續(xù)找 |
如查找test字符串,使用命令/test,光標(biāo)從當(dāng)前位置移動(dòng)到后面第一個(gè)test的字符的t上,按n移動(dòng)到下一個(gè)test上,當(dāng)搜索到文件尾時(shí),再按n則返回到文件頭繼續(xù)搜索
7.2 字符串替換s
字符串替換使用s命令,指定的行中搜索與指定模式相匹配的字符串,并用另一個(gè)字符串替換他
命令
:[n1,n2]s/p1/p2/[g][c]
參數(shù)描述
參數(shù) | 描述 |
---|---|
n1,n2 | 表示目標(biāo)行的行號(hào)范圍,可以使用%代表所有行,未指定范圍時(shí),目標(biāo)行就是光標(biāo)所在的當(dāng)前行 |
p1 | 用作搜索的字符串模式 |
p2 | 用作替換的字符串模式 |
s | 命令可以帶g和c選項(xiàng) |
g | 表示替換目標(biāo)行中所有匹配的字符串,沒(méi)有g(shù)則只替換目標(biāo)行中第一個(gè)匹配的字符串 |
c | 表示替換前要求用戶確認(rèn) |
^ | 代表行首 |
$ | 代表行尾 |
模式中可以用^代表行首,$代表行尾
7.3 全局命令global
全局命令使用g
在全文中搜索含有與指定模式匹配的字符串的行,對(duì)匹配的行做標(biāo)記
命令格式如下
命令 | 作用 |
---|---|
:g/p1 | 搜索所有包含p1字符串模式的行 |
:g!p1 | 搜索所有不包含p1字符串模式的行 |
如
命令 | 作用 |
---|---|
:g/test | 命令將找出所有含有test的行 |
:g!test | 命令將找出所有不包含test的行 |
命令與其他命令聯(lián)合使用
命令 | 作用 |
---|---|
:g/p1/ | 對(duì)所有包含p1的行執(zhí)行指定的命令 |
:g!p1/ | 對(duì)所有不包含p1的行執(zhí)行指定的命令 |
如
p命令顯示行,聯(lián)合使用如下
命令 | 作用 |
---|---|
:g/test/p | 顯示所有含有test的行 |
d命令刪除行,聯(lián)合使用如下
命令 | 作用 |
---|---|
:g!test/d | 刪除所有不包含test的行 |
7.4 全局替換
s命令面向行的字符串替換,可與g命令聯(lián)合使用
全局替換命令格式
g命令/s命令
表示先用g命令再文件中搜索含有某個(gè)模式的行,并做標(biāo)記,然后用s命令對(duì)所有標(biāo)記的行執(zhí)行搜索和替換
常用命令如下
命令 | 作用 |
---|---|
:g/p1/s/p2/p3/g | 將文件中所有含有p1的行中的p2用p3替換 |
:g!p1/s/p2/p3/g | 將文件中所有不含有p1的行中的p2用p3替換 |
:g/p1/s//p2/g | 將文件中所有的p1用p2替換,這里的:g/p1/s//p2/g是:g/p1/s/p1/p2/g的簡(jiǎn)寫(xiě),當(dāng)s命令的搜索模式與g命令的搜索模式相同時(shí),可省略s命令中的搜索模式,命令中//中間沒(méi)有空格 |
7.5 文件操作與退出命令
文件操作包括讀文件和寫(xiě)文件,讀文件是將文件內(nèi)容讀入到編輯緩沖區(qū)中,寫(xiě)文件是將編輯緩沖區(qū)的內(nèi)容保存到文件中
退出vi時(shí)可選擇是否保存文件
常用退出和文件操作命令如下
命令 | 作用 |
---|---|
:w [文件名] | 寫(xiě)入指定文件,若未指定文件則寫(xiě)入當(dāng)前文件,即vi啟動(dòng)時(shí)打開(kāi)的文件 |
:q | 未修改源文件,不保存文件,直接退出 |
:wq或者:x | 保存文件并退出 |
:q! | 放棄修改,不保存文件,退出 |
:e! | 放棄修改,編輯區(qū)恢復(fù)為文件原樣 |
:e 文件名 | 打開(kāi)指定的文件,調(diào)入編輯區(qū) |
:r 文件名 | 讀入指定的文件,將文件內(nèi)容插入到光標(biāo)位置 |
:f | 在屏幕末行顯示文件相關(guān)信息 |
7.6 其他常用命令
7.6.1 行編輯命令
對(duì)指定的行進(jìn)行編輯,指定行范圍時(shí),可用.代表當(dāng)前行,用$代表最后一行,用%代表所有行
常用行編輯命令如下
命令 | 作用 |
---|---|
:n | 跳至第n行 |
:n1,n2con3 | 將第n1至n2行之間的內(nèi)容拷貝到第n3行下,如2,7co$表示將第2行到第7行的文字幅值到文件末尾處 |
:n1,n2mn | 將第n1到n2行之間的內(nèi)容移至第n3行下,如:.m10表示將當(dāng)前行移動(dòng)到第10行下 |
:n1,n2d | 將第n1到n2行之間的內(nèi)容刪除,如2,7d表示刪除第2行到第7行的內(nèi)容 |
:p | 顯示當(dāng)前行的內(nèi)容, |
:nu | 顯示當(dāng)前行的行號(hào)和內(nèi)容 |
7.6.2 執(zhí)行shell命令
使用vi編輯文件時(shí),不退出vi情況下執(zhí)行shell命令,執(zhí)行期間vi暫時(shí)掛起,待命,執(zhí)行結(jié)束后返回vi繼續(xù)運(yùn)行
執(zhí)行shell命令的格式如下
:!
命令執(zhí)行指定的shell命令
7.6.3 設(shè)定vi選項(xiàng)
可通過(guò)設(shè)置vi的選項(xiàng)來(lái)規(guī)定vi的一些外觀和行為特性
設(shè)定vi選項(xiàng)的方法其中之一是使用set命令
常用如下
命令 | 作用 |
---|---|
:set all | 顯示所有選項(xiàng) |
:set ai | 設(shè)定自動(dòng)縮進(jìn) |
:set noai | 取消自動(dòng)縮進(jìn) |
:set nu | 設(shè)定行號(hào)顯示 |
:set nonu | 取消行號(hào)顯示 |
:set hlsearch | 設(shè)定高亮顯示搜索到的字符串 |
:set nohlsearch | 取消高亮顯示搜索到的字符串 |
:set ic | 設(shè)定搜索命令中忽略大小寫(xiě) |
:set noic | 取消搜索命令中忽略大小寫(xiě) |
感謝閱讀,祝君暴富!