linux vi命令使用方法
命令格式
: ranges /pat1/pat2/g
其中
: 这是Vi的命令【mìng lìng】🚨执行【háng】界🏙面。
range 是命令【mìng lìng】🚨执行【háng】🍅范围的指定🐟: 百分号👨(%)表示所有行【háng】🌞
点(.)表示当【biǎo shì dāng】🦄前行【qián háng】🍅
美元🍶($)表示最末行【háng】🍅
例如【lì rú】:
10,20表示第10到🦈20行【háng】🍅,
.,$表示当【biǎo shì dāng】🦄前行【qián háng】🍅到🦈最后一㊙行【háng】🍅,.
+2,$-5表示当【biǎo shì dāng】🦄前行【qián háng】🍅后两行【hòu liǎng háng】🍅直到全【zhí dào quán】文【wén】🥖的倒数第五行【dì wǔ háng】🛅
s 表示其后是一【hòu shì yī】😑个替换命令【mìng lìng】🚨。
pat1 这是要【zhè shì yào】查找的🤟一个正📺则表达【zé biǎo dá】式
pat2 这是希望把匹【wàng bǎ pǐ】配串变成的模【chéng de mó】式的正则表达【zé biǎo dá】式
g 可选标志,带这个【dài zhè gè】标志表示替换将针对【jiāng zhēn duì】行【háng】🍅中每个【zhōng měi gè】匹配👙的串进行【háng】🍅,否则则只替换🚳行中第【háng zhōng dì】🍂一个匹【yī gè pǐ】配👙串。
:/string #向下查找🚻
:?stirng # 向上查【xiàng shàng chá】🛋找🚻
1 vi编辑命【biān jí mìng】🚓令
重复执【chóng fù zhí】📣行命令【lìng】🍻
数字【shù zì】N+命令【lìng】📲 重复执【chóng fù zhí】📣行命令【lìng】🍻N次【cì】,如删除【rú shān chú】15行,就在命令【lìng】📲状态下输入15dd
. 重复执【chóng fù zhí】📣行上一条命令【lìng】📲
vi命令使用的一些选项【xiē xuǎn xiàng】及含义【jí hán yì】👙
-c sub-command 在对指【zài duì zhǐ】定的⛩文件编辑前,先执行【háng】🏖指定的⛩命令 sub-command .
-r filename 恢复指【huī fù zhǐ】定的⛩文件filename .
-R 将指定🕧的文件【de wén jiàn】以只读【yǐ zhī dú】👝的方式🍣放入编辑器中,这样不🐢会保存对文件的任何【de rèn hé】修 改。
-y number 将编辑【jiāng biān jí】📍窗口的【chuāng kǒu de】🏮大小设⌛为number行【háng】。
光标移【guāng biāo yí】🎦动
命令【mìng lìng】模🍙式下👾,在同一【zài tóng yī】🔁行上移动的子命令【mìng lìng】:
h 将光标【jiāng guāng biāo】🎉左移一🍂格【gé】🌻
l 将光标【jiāng guāng biāo】🎉右移一格【gé】🌻
j 将光标【jiāng guāng biāo】🎉下移一🎦格【gé】🌻
k 将光标【jiāng guāng biāo】🎉上移一格【gé】🌻
w 将光标【jiāng guāng biāo】🎉移到下【yí dào xià】🦏一个小【yī gè xiǎo】字的前【qián】🌈面【miàn】🛅
W 将光标【jiāng guāng biāo】🎉移到下【yí dào xià】🦏一个大🌫字的前【qián】🌈面【miàn】🛅
b 将光标【jiāng guāng biāo】🎉移到前【yí dào qián】一个🍶小字的【xiǎo zì de】前【qián】🌈面【miàn】🛅
B 将光标【jiāng guāng biāo】🎉移到前【yí dào qián】一个🍶大字的【dà zì de】前【qián】🌈面【miàn】🛅
e 将光标【jiāng guāng biāo】🎉移到下【yí dào xià】🦏一个小【yī gè xiǎo】字的后🔸面【miàn】🛅
E 将光标【jiāng guāng biāo】🎉移到前【yí dào qián】一个🍶大字的【dà zì de】后🔸面【miàn】🛅
fc 把光标【bǎ guāng biāo】🌵移到同【yí dào tóng】一行的【yī háng de】🐴下一个【xià yī gè】📀c字符处【zì fú chù】
Fc 把光标【bǎ guāng biāo】🌵移到同【yí dào tóng】一行的【yī háng de】🐴前一个【qián yī gè】🍶c字符处【zì fú chù】
tc 把光标【bǎ guāng biāo】🌵移到同【yí dào tóng】一行的【yī háng de】🐴下一个【xià yī gè】📀字符c的前【qián】一格【gé】🌻
Tc 把光标【bǎ guāng biāo】🌵移到同【yí dào tóng】一行的【yī háng de】🐴前一个【qián yī gè】🍶字符c的后一格【gé】🌻
number| 把光标【bǎ guāng biāo】🌵移到递🌇number列上
命令模🎗式下在行🧤间移动的子命【de zǐ mìng】令:
+或Enter 把光标【bǎ guāng biāo】👃移至下一行【yī háng】🧤第一个【dì yī gè】❄非空白字【zì】💟符
- 把光标【bǎ guāng biāo】👃移至上🕸一行【yī háng】🧤第一个【dì yī gè】❄非空白字【zì】💟符
0 把光标【bǎ guāng biāo】👃移到当【yí dào dāng】前行的⛰第一个【dì yī gè】❄字【zì】符处📽
$ 把光标【bǎ guāng biāo】👃移到当【yí dào dāng】前行的⛰最后一【zuì hòu yī】个字【zì】符🕗处
H 把光标【bǎ guāng biāo】👃移到屏【yí dào píng】🚄幕最顶🗻端一行【duān yī háng】📏
L 把光标【bǎ guāng biāo】👃移到屏【yí dào píng】🚄幕最底端一行【duān yī háng】📏
M 把光标【bǎ guāng biāo】👃移到屏【yí dào píng】🚄幕中间
:number 光标移🏄动到第【dòng dào dì】number行🧤
:$ 光标移🏄动到最【dòng dào zuì】后以行🧤
屏【píng】👿幕翻滚类命🔌令🤫
Ctrl+u 向文件【xiàng wén jiàn】首翻半屏【píng】👿
Ctrl+d 向文件【xiàng wén jiàn】尾翻半【wěi fān bàn】屏【píng】👿
Ctrl+f 向文件【xiàng wén jiàn】尾翻一屏【píng】👿
Ctrl+b 向文件【xiàng wén jiàn】首翻一🌮屏【píng】👿
nz 将第⏬n行滚至【zhì】👢屏【píng】👿幕顶部【mù dǐng bù】,不指定【bú zhǐ dìng】📴n时将当前行滚至【zhì】👢屏【píng】👿幕顶部【mù dǐng bù】
插入文🍑本
I 在光标👜前【qián】
I 在当前【zài dāng qián】🔄行首【háng shǒu】
a 光标后🎪
A 在当前【zài dāng qián】🔄行尾【háng wěi】
o 在当前【zài dāng qián】🔄行之下【háng zhī xià】新开一行
O 在当前【zài dāng qián】🔄行之【zhī】上新开一行
r 替换当🍲前【qián】字符⬜
R 替换当🍲前【qián】字符⬜及其后【jí qí hòu】的字符🌝,直至按ESC键🚍
s 从当前【qián】光标位【guāng biāo wèi】🌌置处开🗄始,以输入【yǐ shū rù】的文本【de wén běn】替代指💞定数目【dìng shù mù】🍉的字符🌝
S 删除指【shān chú zhǐ】定数目【dìng shù mù】🍉的行【de háng】,并以所👉输入文本代替🧐之【zhī】
ncw或nCW 修改n个单词【gè dān cí】
nCC修改指定数目【dìng shù mù】🍉的行【de háng】
删除【shān chú】
x 删除光【shān chú guāng】😲标所指的一个🐣字🥇母【mǔ】
X 删除光【shān chú guāng】😲标左边的一个🐣字🥇母【mǔ】
dd 删除光【shān chú guāng】😲标所在【biāo suǒ zài】🐒的一行文字【wén zì】🆘,同时本行文字【wén zì】🆘会放到缓存中【huǎn cún zhōng】🧘
d0 删至行【shān zhì háng】🧤首【shǒu】
d$ 删至行【shān zhì háng】🧤尾
D 删除本【shān chú běn】行光标右边🤘的所有文字【wén zì】💕,包括光【bāo kuò guāng】标位置🐠的字🥇母【mǔ】
d$ 删除本【shān chú běn】行光标右边🤘的所有文字【wén zì】💕,包括光【bāo kuò guāng】标位置🐠的字🥇母【mǔ】
dw 删除光【shān chú guāng】😲标右边🤘的一个🐣单词
ndw 删除【shān chú】n个单词【gè dān cí】
d1G 删除光【shān chú guāng】😲标所在【biāo suǒ zài】🐒行以上的所有行
dG 删除光【shān chú guāng】😲标所在【biāo suǒ zài】🐒行及光【háng jí guāng】📳标以下所有行
复制【fù zhì】⏩
yy 复制【fù zhì】⏩本行文【běn háng wén】字到缓存🏨中🤳
number yy 复制【fù zhì】⏩number行到缓【háng dào huǎn】存🏨中🤳
粘贴
p 把缓存【bǎ huǎn cún】✉中的行🌾粘贴到【zhān tiē dào】🦌光标所在的下【zài de xià】一行【yī háng】,
P 把缓存【bǎ huǎn cún】✉中的行🌾粘贴到【zhān tiē dào】🦌光标所在的上🗯一行【yī háng】
替换【tì huàn】🍃
:s/pattern1/pattern2/g 把光标当前行【dāng qián háng】🐇的【de】🕷pattern1替换【tì huàn】为🏧pattern2
:%s/pattern1/pattern2/g 把所有【bǎ suǒ yǒu】行的【háng de】🕷pattern1替换【tì huàn】为🏧pattern2
:g/parttern1/s//parttern2 把所有【bǎ suǒ yǒu】行的【háng de】🕷pattern1替换【tì huàn】为🏧pattern2
:num1,num2 s/pattern1/pattern2/g 把num1到❌num2的【de】🕷partten1替换【tì huàn】为🏧partten2
被替换【tì huàn】🍃的【de】文字🎓用🎎^表示行【biǎo shì háng】🎒首,$表示行【biǎo shì háng】🎒尾【wěi】,如⛓:%s/^/111/g就表示在每一行的【háng de】🕷行首插入【rù】111
文件
:r filename 把文件filename的内容粘贴在光标以下行
:w 保存当前编辑的文件名
:w filename 当filename不存在时,把修改后的文件存为文件filename ,当文件filename存在时,报错。
!w filename 如果文件filename存在时,把修改后的文件保存为文件filename
:q 退出vi ,若文件被修改,系统不会让用户使用q命令退出
q! 不保存退出
x 保存退出
wq 保存退出
在多个文件之🎐间切换🈯
:n 开始编【kāi shǐ biān】辑vi激活的🎹文件列【wén jiàn liè】🛀表中的【biǎo zhōng de】下一个【xià yī gè】文件👬
:n filenames 指定将【zhǐ dìng jiāng】被编辑的新的文件列【wén jiàn liè】🛀表
在【zài】当前🗄文件【wén jiàn】和另外一【lìng wài yī】个文件【wén jiàn】🤛间切换:
:e filename 使用【shǐ yòng】🔶filename激活【jī huó】👤vi(在【zài】🍶vi中装入另一个【lìng yī gè】文件【wén jiàn】🤛filename)
e! 重新装入当前【rù dāng qián】文件【wén jiàn】,若当前✡文件【wén jiàn】有➿改动【gǎi dòng】🛌,则丢弃【zé diū qì】以前的改动【gǎi dòng】🛌
:e+filename 使用【shǐ yòng】🔶filename激活【jī huó】👤vi ,并从文【bìng cóng wén】件尾部😸开始编【kāi shǐ biān】🐙辑
:e+number filename 使用【shǐ yòng】🔶filename激活【jī huó】👤vi ,并在【zài】🍶第number行开始编【kāi shǐ biān】🐙辑
:e# 开始编【kāi shǐ biān】🐙辑另外一【lìng wài yī】个文件【wén jiàn】🤛
查找【chá zhǎo】
/pattern 向后寻💵找指定的【zhǐ dìng de】🚃pattern ,若遇到【ruò yù dào】文件尾🔂,则从头【zé cóng tóu】再开始【zài kāi shǐ】。
?pattern 向前寻找指定的【zhǐ dìng de】🚃pattern ,若遇到【ruò yù dào】文件头,则从尾再开始【zài kāi shǐ】。
n 在上次【zài shàng cì】🦂指定的【zhǐ dìng de】🚃方向上【shàng】🕳,再次执💆行上次【háng shàng cì】🔻定义的【dìng yì de】🐈查找【chá zhǎo】。
N 在上次【zài shàng cì】🦂指定的【zhǐ dìng de】🚃方向的【de】👓相反方【xiàng fǎn fāng】向上【shàng】🕳,再次执💆行上次【háng shàng cì】🔻定义的【dìng yì de】🐈查找【chá zhǎo】。
/pattern/+number 将光标停在包【tíng zài bāo】✈含🥡pattern的【de】👓行后面第🎵number行上【háng shàng】🔫。
/pattern/-number 将光标停在包【tíng zài bāo】✈含🥡pattern的【de】👓行前面第🎵number行上【háng shàng】🔫。
% 移到匹配的【de】👓"()"或【huò】"{}"上【shàng】🔫。
选项设🏁置
all 列出所有选项设🏁置情况🏧
term 设置终端类型🥍
ignorance 在搜索【zài sōu suǒ】🎉中忽略大小写
list 显示制【xiǎn shì zhì】表位(Ctrl+I)和行尾🌙标志🚥($)
number 显示行号【hào】
report 显示由面向行的命令【de mìng lìng】修改过【xiū gǎi guò】🦖的数目【de shù mù】
terse 显示简🎽短的警【duǎn de jǐng】告信息🕧
warn 在转到【zài zhuǎn dào】别的文件时若没保存当前文【dāng qián wén】💮件则显【jiàn zé xiǎn】示NO write信息🕖
nomagic 允许在搜索【zài sōu suǒ】🎉模式中,使用前【shǐ yòng qián】😇面不带【miàn bú dài】“\”的特殊字符
nowrapscan 禁止🗑vi在搜索【zài sōu suǒ】🎉到达文🍩件两端【jiàn liǎng duān】时,又从另【yòu cóng lìng】一端开【yī duān kāi】始
mesg 允许vi显示其他用户【tā yòng hù】用write写到自【xiě dào zì】🧟己终端上的信📬息🕖
在【zài】vi中使用【zhōng shǐ yòng】的查找替换方🌅法🚅
a、利用🔯 :s 命令可🌪以实现⏪字符串【zì fú chuàn】🌼的替换💒。具体的🎖用法包🏵括:
:s/str1/str2/ 用字符【yòng zì fú】🗳串【chuàn】🌮 str2 替换行【tì huàn háng】🧀中首次出现的【chū xiàn de】字符串【zì fú chuàn】🌼str1
:s/str1/str2/g 用字符【yòng zì fú】🗳串【chuàn】🌮 str2 替换行【tì huàn háng】🧀中所有出现【yǒu chū xiàn】的字符串【zì fú chuàn】🌼str1
:.,$ s/str1/str2/g 用字符【yòng zì fú】🗳串【chuàn】🌮 str2 替换正【tì huàn zhèng】文当前行到末🛁尾所有出现【yǒu chū xiàn】的字符串【zì fú chuàn】🌼str1
:1,$ s/str1/str2/g 用字符【yòng zì fú】🗳串【chuàn】🌮 str2 替换正【tì huàn zhèng】文中所【wén zhōng suǒ】有出现【yǒu chū xiàn】的字符串【zì fú chuàn】🌼str1
:g/str1/s//str2/g 功能同📖上从上【shàng cóng shàng】述替换【shù tì huàn】命令可🌪以看到:g 放在【zài】命令末尾【lìng mò wěi】,表示对【biǎo shì duì】🌕搜索字符串【zì fú chuàn】🌼的每次【de měi cì】出现进【chū xiàn jìn】行替换【háng tì huàn】;不加🚙 g,表示只对搜索字符串【zì fú chuàn】🌼的首次出现进【chū xiàn jìn】行替换【háng tì huàn】;g 放在【zài】命令开头【lìng kāi tóu】🏜,表示对【biǎo shì duì】🌕正文中所【wén zhōng suǒ】有包含搜索字符串【zì fú chuàn】🌼的行进行替换【háng tì huàn】操作。
b、在【zài】⌚shell中使用find结合grep进行文🐆件的替【jiàn de tì】✅换【huàn】
# find ./ -exec grep str1 ‘{}’ \; -exec sed -i.bak s/str1/str2/g ‘{}’ \;
上面命【shàng miàn mìng】令可以在【zài】⌚当前目录下📝(包括子目录)查找包含str1的文件【wén jiàn】🌝,自动替【zì dòng tì】换【huàn】成str2,并且生🙆成源文【chéng yuán wén】🙉件的bak文件【wén jiàn】🌝。
关键词:linux,vi命令
阅读本文后您有什么感想? 已有 人给出评价!
- 0
- 0
- 0
- 0
- 1
- 0