关于vi

本文详细介绍vi编辑器的启动、三种模式及其转换、基本操作,包括移动光标、进入插入模式、命令模式下的删除操作、复制粘贴操作、末行模式下的查找与替换等,适合初学者快速掌握vi编辑器的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vi是Linux系统中一款编辑软件,也是Linux系统中第一款全屏幕编辑软件。

  1. vi的启动

命令:vi test.txt

该编辑器的启动方式很简单,只需在终端窗口中输入命令即可。该命令就会进入vi编辑器中编辑一个名叫test.txt的文件。如果该文件已存在,输入该命令则vi会将该文件的整个内容读取到已准备进行编辑的缓冲区当中,若该文件不存在,则vi将打开一个新的缓冲区域来进行编辑。

  1. vi的三种模式

(1)命令行模式

在终端输入启动vi的命令,进入编辑器中时就是命令行模式。在此模式下,用户可以通过控制屏幕光标的移动,进行字符或者行的删除复制等操作。

(2)插入模式

在命令行模式下输入i(insert)即可进入插入模式。在此模式下,用户可以进行输入、查找等基本的文本操作。

(3)末行模式

末行模式也称作转义模式。在命令模式下,按“:”(冒号)即可进入末行模式,此时vi会在窗口的最后一行显示一个“:”作为末行模式的提示符,等待用户输入命令。在此模式下,可将文本保存或退出编辑器,也可以进行设置编辑环境等操作,还可进行字符串的查找操作。

  1. 三种模式的转换

命令行模式下按“i”可进入插入模式,按“:”可进入末行模式。

插入模式下按Esc键返回命令行模式。

末行模式下输入命令完成后可自动返回命令行模式。

  1. 基本操作

以下内容仅显示常用操作。

(1)移动光标

    vi可以直接用键盘上的方向键来进行屏幕上光标的上下左右移动。

 

    k           上移

    j           下移

    h           左移

    l           右移

    Ctrl+b      屏幕往后移动一页

    Ctrl+f      屏幕往前移动一页

    Ctrl+u      屏幕往后移动半页

    Ctrl+d      屏幕往前移动半页

0(零,非大O)     移动到光标所在行的行首

    gg          光标移动到文件首行行首

G           移动到末行行首

$           移动到光标所在行的行尾

^           移动到光标所在行的行首

w           光标移动到下个字(单词)的开头

e           光标移动到下个字(单词)的结尾(如果光标所在位置非单词尾部,则跳到该单词的尾部,如         果光标位于单词尾部,则跳到下个单词尾部)

    b           光标回到上个字(单词)的开头(如果光标所在位置非单词开头,则跳到该单词的开头,如果             光标位于单词开头,则跳到上个单词开头)

    nl          光标位置向后移动n个位置

    :n          光标跳转到第n行行首

    nG          光标跳转到第n行行首

例:用于测试的test.txt的文件内容如下,此时,初始光标位置在第6行“f”处,测试时,每行测试数据的光标默认为初始位置

    按0,光标移动到第6行的“a”处

    按gg,光标移动到第1行的“a”处

    按G,光标移动到第10行“H”处

    按$,光标移动到第6行“g”处

按^,光标移动到第6行“a”处

按w,光标移动到第7行“A”处,再按w,光标移动到第8行行首,空行也算单词

按e,光标移动到第6行“g”处,再按e,光标移动到第7行“G”处

按b,光标移动到第6行“a”处,再按b,光标移动到第5行“!”处

按1l(数字1和字母l),光标移动到第6行“g”处,如果按2l,光标还是移动到“g”处

按:10,光标跳转到第10行“H”处(末行模式)

按10G,光标跳转到第10行“H”处

(2)进入插入模式

    启动vi后,进入的模式是命令行模式。此时,可根据不同需要按键进入插入模式。

   

    i           在光标当前位置开始插入

    I           在光标所在行的行首插入

    a           在光标所在位置的下一个位置开始插入

    A           在光标所在行的行末插入

    o           插入新的一行,在行首开始插入

    O           在光标所在行的下面插入一行

    s           删除光标后的一个字符,并进入插入模式

    S           删除光标所在的行,然后进入插入模式

例:用于测试的test.txt的文件内容如下,此时,光标初始位置在第10行“e”处,测试时,每行测试数据的光标默认为初始位置

    按i,在第10行的“e”位置开始插入,插入的内容显示到“e”的前一位置

    按I,在第10行的“H”位置开始插入,插入的内容显示到“H”的前一位置

    按a,在第10行的“l”位置开始插入,插入的内容显示到“l”的前一位置

    按A,在第10行的“!”的下一位置开始插入,插入的内容显示到“!”后边

    按o,在第10行下边插入新的一行,插入的内容显示到第11行行首

    按O,在第10行上边插入新的一行,插入的内容显示到第10行行首,将原先的第10行的内容下移,即第 11行

    按s,删除第10行的“e”字符,插入的内容显示到“l”的前一位置

    按S,删除第10行的全部内容,插入的内容显示到第10行行首

(3)命令模式下删除操作

    x           删除光标所在位置的字符

    nx          删除光标所在位置的字符及后面的(n-1)个字符

    X           删除光标所在位置的前面一个字符

    nX          删除光标所在位置前面的n个字符

    dd          删除光标所在行的内容

    ndd         从光标所在行开始删除n行

    D           删除从光标位置到光标所在行行尾的内容

    dG          删除光标所在行到行尾的所有内容

d1G         删除光标所在行到第一行的所有内容

:n,md       删除从第n行到第m行的内容(末行模式)

例:用于测试的test.txt的文件内容如下,此时,光标初始位置在第5行“@”处,测试时,如无额外说明,每行测试数据的光标默认为初始位置

    按x,删除第5行的“@”,光标移动到“!”处

    按2x,删除第5行的“@#”,光标移动到“$”处

    按X,删除第5行的“!”

    若光标位于第6行的“d”处,按3X,删除第6行的“abc”

    按dd,删除第5行的全部内容,后面内容依次上移

    按3dd,删除第5、6、7行动的全部内容,后面内容依次上移

按D,删除第5行的“@#$”

按dG,删除第5行到第10行的全部内容

按d1G,删除第1行到第5行的所有内容

按:8,9d,删除第8行和第9行内容

 

追加:在命令模式下按u可撤销上一步操作

 

(4)命令模式下复制粘贴操作

    yw          从光标所在处复制该单词到缓冲区(若光标在单词开头,则复制完整单词,否则从光标处复制)

    nyw         复制从光标所在处开始的n个单词到缓冲区(若光标在单词开头,则复制完整单词,否则从光标处复制)

 

    yy          复制光标所在行到缓冲区

    nyy         复制从光标所在行开始的n行内容到缓冲区

    p           将缓冲区的内容吓到光标所在位置

例:用于测试的test.txt的文件内容如下,此时,光标初始位置在第2行“B”处,测试时,每行测试数据的光标默认为初始位置

    按yw,复制第2行的“BCD”到缓冲区,再按p后粘贴到光标所选位置

    按2yw,复制第2行的“BCD”和第3行全部内容到缓冲区,再按p后粘贴到光标所选位置

    按yy,复制第2行全部内容到缓冲区,再按p后在光标所选位置的下面重新插入一行粘贴

    按2yy,复制第2、3行全部内容到缓冲区,再按p后在光标所选位置的下面重新插入一行粘贴

(5)末行模式下查找操作

    /word           从上而下在文件中查找字符串“word”

    ?word           从下而上在文件中查找字符串“word”

例:用于测试的FindWord.txt的文件内容如下左图所示,键入命令/hello后查找图如下中图所示,键入命令?hello后查找图如下右图所示,查找结果都相同,只是光标位置不同

   

 

追加:在末行模式下按:noh可取消因为查找而留下的高亮显示

(6)末行模式下替换操作

    :s/old/new         将当前行中查找到的第一个目标字符串“old”替换为“new”

    :s/old/new/g       将当前行中查找到的所有目标字符串“old”替换为“new”

  :n,ms/old/new/g    将行号在“n,m”范围内的目标字符串“old”替换为“new”

  :%s/old/new/g      将整个文件中的目标字符串“old”替换为“new”

 

例:用于测试的FindWord.txt的文件内容如上左图所示,分别测试①替换第1行的第一个“ha”为“hai”②替换第1行的所有“ha”为“hai”③替换4到7行的“ha”为“hai”④替换文件中所有的“ha”为“hai”

   

                

注意:要替换n,m行范围内的目标字符串时,光标必须处在该范围内。

(7)末行模式下的其他操作

    :w          保存文件

    :q          退出(若:q无法退出,可使用:q!来强制退出)

    :wq         保存文件并退出

(8)注释与反注释

    注释:

①在命令行模式下,将光标固定在想注释行的第一行的第一列,按Ctrl+V进入可视化(VISUAL BLOCK)模式

②上下移动光标,选择想要注释的行

③按I(大写I)进入插入(Insert)模式,输入注释符“//”或“#”

④按两次Esc键,注释完成

例:注释FindWord.txt文件中第4、5、6行代码

或者,输入命令:4,6s/^/#/g(冒号也是命令的一部分,“#”注释)

或者,输入命令:4,6s#^#//#g(冒号也是命令的一部分,“//”注释)

 

反注释:

①命令行模式下,将光标固定在想要反注释行的第一行的第一列,按Ctrl+V进入可视化(VISUAL BLOCK)模式

②上下移动光标,选择想要反注释掉的行首的注释符号

③按“d”删除注释符,即完成反注释

(9)分屏

:spilt(或者:sp)            水平分屏

:vsplit(或者:vsp)          垂直分屏

:only                         取消分屏(保留当前屏)

Ctrl+w+h                      切换到当前屏的左边一屏

Ctrl+w+l                      切换到当前屏的右边一屏

Ctrl+w+j                      切换到当前屏的下边一屏

Ctrl+w+k                      切换到当前屏的上边一屏

示例:水平分屏

vi命令打开一个文件,然后在命令模式下输入分屏代码

水平分屏结果:

如此图所示,当前屏为test.txt,即光标所在的屏,若接下来键入:only命令,则test.txt屏将被保留。

以上即是本人对于vi的基本操作的简单总结,后期会持续更新~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值