Linux vi 操作命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux vi 操作命令相关的知识,希望对你有一定的参考价值。

我想获得经常用的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的组合。删除一个字组、句子等资料,并插入新键入的
参考技术A 去百度搜一下吧,在这里复制的也是百度里找出来的东西。

linux程序员必备的vi操作

一、关于vi

? vi是最强大的文本编辑器,没有之一,vi作为上古神器,历史悠久,现在还应用如此的广泛,正印证了存在即合理的道理,只要你经常接触linux,必然少不了接触vi。

? vi的初次使用可能体验感很不好,就和上古神器一样,强大的武器和工具都是难以驾驭的。当你vi操作熟练后,你会觉得真香,并且你的90%操作都可以摆脱鼠标

二、创建/打开文件

vi 文件名

打开一个文件,如果文件不存在,就创建它

示例:

vi helloword.c

三、vi的三种模式

vi 有三种模式,命令行模式、插入模式和替换模式,在命令行模式下,任何键盘输入都是命令,在插入模式和替换模式下,键盘输入的才是字符,插入模式和替换模式也合称为编辑模式。

四、vi的常用命令

模式切换命令

Esc 从编辑模式切换到命令行模式

i 在光标所在位置前面开始插入

a 在光标所在的位置后面开始插入

o 在光标所在位置行的下面插入空白行

O 在光标所在位置行的上面插入空白行

I 在光标所在位置行的行首开始插入

A 在光标所在位置行的行末开始插入

保存于退出操作命令

:w回车 存盘。

:w!回车 强制存盘。

:wq回车 存盘退出。

:x回车 存盘退出。

:q回车 不存盘退出。

:q!回车 不存盘强制退出。

方向操作命令

k 类似方向键上

j 类似方向键下

h 类似方向键左

l 类是方向键右

Ctrl+u 向上翻半页

Ctrl+d 向下翻页

跳转操作命令

Ctrl+g 显示光标所在位置的行号和文件的总行数。

nG 光标跳到文件的第n行行首

G 光标跳到文件最后一行

:n回车 光标跳到第n行

0 光标跳到当前行的行首

$ 光标跳到当前行的行尾

w 光标跳到下个单词的开头

b 光标跳到上个单词的开头

e 光标跳到本单词的尾部

删除操作

x 每按一次,删除光标所在位置的一个字符

nx 如"3x"表示删除光标所在位置开始的3个字符

dw 删除光标所在位置到本单词结尾的字符

D 删除本行光标所在位置后面全部的内容

dd 删除光标所在位置的一行

ndd 如"3dd"表示删除光标所在位置开始的3行

复制粘贴操作命令

yy 将光标所在位置的一行复制到缓冲区

yw 复制光标位置到单词的结束到缓冲区

y$ 复制光标位置到行末到缓冲区

yG 复制光标所在行到文件末尾到缓冲区

nyy 将光标所在位置的n行复制到缓冲区

p 将缓冲区里的内容粘贴到光标所在位置

Ctl+insert 复制鼠标选中的文本,相当于Ctl+c

Shift+insert 输出鼠标选中的文本,相当于Ctl+v

备注:以上两个命令在windows和UNIX中是通用的。

替换与查找操作命令

r 替换光标所在位置的一个字符 replace

R 从光标所在位置开始替换,直到按下"Esc"

cw 从光标所在位置开始替换单词,直到按下"Esc"

查找操作:/

示例:
/abcd 在当前打开的文件中查找“abcd”文本内容

n 查找下一个

N 查找上一下

单个替换:

:s/xxx/ccc 把光标所在行第一个xxx字段替换为ccc

单行替换:

:s/xxx/ccc/g 把光标所在行所有xxx字段替换为ccc

全局替换:

:g/xxx/s//ccc/g回车 把文件中全部的xxx替换成ccc

Ctrl+r 反撤销命令,可多次反撤销

u 撤销命令,可多次撤销

其余常用操作命令

. 重复执行上一次执行的vi命令(与查找替换命令结合起来非常好用)
对光标当前所在的位置的字符进行大小写转换

列操作 :Ctrl+V

示例:
Ctrl+V 光标上或下 大写的I 输入需要插入的内容内容 Esc

J 把当前行的下一行接到当前行的尾部

恢复文件

vi在编辑某一个文件时,会生成一个临时文件,这个文件以 . 开头并以 .swp结尾。正常退出该文件自动删除,如果意外退出例如忽然断电,该文件不会删除,我们在下次编辑时可以选择一下命令处理:

O 只读打开,不改变文件内容

E 继续编辑文件,不恢复.swp文件保存的内容

R 将恢复上次编辑以后未保存文件内容

Q 退出vi

D 删除.swp文件

或者使用vi -r 文件名来恢复未保存的内容



以上是关于Linux vi 操作命令的主要内容,如果未能解决你的问题,请参考以下文章

linux帮助,文件基本操作,备份命令,vi编辑器

Linux基础命令,目录文件操作,vi编辑器详解

linux中vi和vim文件操作命令

Linux vi的基本操作

Linux 系统文本编辑器vi常用命令详解(操作演示)

Linux中必备知识vi