vi命令总结

​ VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了,但是因为它的命令集众多,很多人都不习惯使用它,其实您只需要掌握基本命令,然后加以灵活运用,就会发现它的优势,并会逐渐喜欢使用这种方法。本文旨在介绍VI的一些最常用命令和高级应用技巧。

基本命令介绍

光标命令

k、j、h、l——上、下、左、右光标移动命令。虽然您可以在Linux中使用键盘右边的4个光标键,但是记住这4个命令还是非常有用的。这4个键正是右手在键盘上放置的基本位置。
nG——跳转命令。n为行数,该命令立即使光标跳到指定行。
Ctrl+G——光标所在位置的行数和列数报告。
w、b——使光标向前或向后跳过一个单词。

编辑命令

i、a、r——在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。
cw、dw——改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。
x、d$、dd——删除一个字符、删除光标所在处到行尾的所有字符以及删除整行的命令。
---- 3.查找命令

查找命令

/string、?string——从光标所在处向后或向前查找相应的字符串的命令。

拷贝复制命令

yy、p——拷贝一行到剪贴板或取出剪贴板中内容的命令.

进入vi 命令 说明
vi 文件名称   打开或者新建文件,光标置于第一行行首  
vi 行数 文件名称   打开文件,并设置光标在第几行行首  
vi + 文件名称   打开文件,并设置光标在尾行行首  
vi +/字符串 文件名称   打开文件,并设置光标在第一个与字符串相匹配处  
vi -r 文件名称   上次vi编辑时系统崩溃可使用-r方式恢复文件  
vi 文件名称1 ...... 文件名称n   打开多个文件,依此进行编辑  
vi中移动光标 快捷键 说明
h   光标左移一个字符  
l   光标右移一个字符  
space(空格)   光标右移一个字符  
backspace(退格)   光标左移一个字符  
k 或 ctrl + p   光标上移一行  
j 或 ctrl + n   光标下移一行  
enter(回车)   光标下移一行  
w 或 W   光标右移一个字至字首  
b 或 B   光标左移一个字至字首  
e 或 E   光标右移一个字至字尾  
)   光标移至句尾  
(   光标移至句首  
}   光标移至段落开头  
{   光标移至段落结尾  
行数 + G   光标移至第n行首  
行数 + +   光标下移n行  
行数 + -   光标上移n行  
行数 + $   光标移至第n行尾  
H   光标移至屏幕顶行  
M   光标移至屏幕中间行  
L   光标移至屏幕最后行  
0   (注意是数字零)光标移至当前行首  
$   光标移至当前行尾  
屏幕翻滚 快捷键 说明
ctrl + u   向文件首翻半屏  
ctrl + d   向文件尾翻半屏  
ctrl + f   向文件尾翻一屏  
ctrl + b   向文件首翻一屏  
行数 + z   将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部  
插入文本 指令 说明
i   在光标前插入  
l   在当前行首插入  
a   在光标后插入  
A   在当前行尾插入  
o   在当前行之下新添加一行  
O   在当前行之上新添加一行  
r   替换当前字符以及其后面的字符  
R   替换当前字符及其后的字符,直至按ESC键  
s   从当前光标位置处开始,以输入的文本替代指定数目的字符  
行数 + c + w 或 行数 + C + W   修改指定数目的字  
行数 + C + C   修改指定数目的行  
删除 指令 说明
第几个字 + d + w   删除光标处开始及其后的n-1个字  
d + o   删除至行首  
d + $   删除至行尾  
行数 + d + d   删除当前行及其后n-1行  
x 或 X   删除一个字符,x删除光标后的,而X删除光标前的  
ctrl + u   删除输入方式下所输入的文本  
搜索及替换命令 指令 说明
/ 字符串   从光标开始处向文件尾搜索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进行编辑  
:x   保存当前文件并退出  
:q   退出vi  
:q!   强制退出vi  
:!command   执行shell命令command  
:n1,n2 w!command   将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入  
:r!command   将命令command的输出结果放到当前行  
寄存器 指令 说明
" + ? + 行数 + y + y   将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字  
" + ? + 第几个 + y + w   将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字  
" + ? + 第几个 + y + l   将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字  
" + ? + p   取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字  
行数 + d + d   将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中  
常见问题及应用技巧

在一个新文件中读/etc/passwd中的内容,取出用户名部分。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpysdx.html