美文网首页
vi编辑器的使用

vi编辑器的使用

作者: 游侠_6fb7 | 来源:发表于2020-04-14 13:23 被阅读0次

    vi编辑器的使用

    关键词:VI,vi编辑器,

    1、关于文本编辑器

    文本编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice ... ... ,文本模式下的编辑器有vi、vim(vi的增强版本)和nano ... ... vi和vim是我们在Linux中最常用的编辑器。我们有必要介绍一下vi(vim)最简单的用法,以让Linux入门级用户在最短的时间内学会使用它。

    nano工具和DOS操作系统下的edit操作相似,使用简单,我们不作介绍了,如果您有兴趣,不妨尝试一下;

    2、vi 编辑器

    为什么要学会简单应用vi?

    vi或vim是Linux最基本的文本编辑工具,vi或vim虽然没有图形界面编辑器那样点鼠标的简单操作,但vi编辑器在系统管理、服务器管理中,永远不是图形界面的编辑器能比的。当您没有安装X-windows桌面环境或桌面环境崩溃时,我们仍需要字符模式下的编辑器vi;vi或vim 编辑器在创建和编辑简单文档最高效的工具;

    3、vi 编辑器的使用方法

    3.1 如何调用vi ;

    [root@localhost ~]# vi filename

    3.2 vi 的三种命令模式

    Command(命令)模式,用于输入命令;

    Insert(插入)模式,用于插入文本;

    Visual(可视)模式,用于视化的的高亮并选定正文;

    3.3 文件的保存和退出

    Command 模式是vi或vim的默认模式,如果我们处于其它命令模式时,要通过ESC键切换过来。

    当我们按ESC键后,接着再输入:号时,vi会在屏幕的最下方等待我们输入命令;

    :w 保存;

    :w filename 另存为filename;

    :wq! 保存退出;

    :wq! filename 注:以filename为文件名保存后退出;

    :q! 不保存退出;

    :x 应该是保存并退出 ,功能和:wq!相同

    3.4 光标移动

    当我们按ESC进入Command模式后,我们可以用下面的一些键位来移动光标;

    j 向下移动一行;

    k 向上移动一行;

    h 向左移动一个字符;

    l 向右移动一个字符;

    ctrlb 向上移动一屏;

    ctrlf 向下移动一屏;

    向上箭头 向上移动;

    向下箭头 向下移动;

    向左箭头 向左移动;

    向右箭头 向右移动;

    我们编辑一个文件时,对于 j、k、l和h键,还能在这些动作命令的前面加上数字,比如 3j,表示向下移动3行。

    3.5 插入模式(文本的插入)

    i 在光标之前插入;

    a 在光标之后插入;

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

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

    o 在光标所在的行的上面插入一行;

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

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

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

    3.6 文本内容的删除操作

    x 一个字符;

    x 删除几个字符,#表示数字,比如3x;

    dw 删除一个单词;

    dw 删除几个单词,#用数字表示,比如3dw表示删除三个单词;

    dd 删除一行;

    dd 删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行;

    d$ 删除光标到行尾的内容;

    J 清除光标所处的行与上一行之间的空格,把光标行和上一行接在一起;

    3.7 恢复修改及恢复删除操作

    u 撤消修改或删除操作;

    按ESC键返回Command(命令)模式,然后按u键来撤消删除以前的删除或修改;如果您想撤消多个以前的修改或删除操作,请按多按几次u。这和Word的撤消操作没有太大的区别;

    3.8 可视模式

    在最新的Linux发行版本中,vi提供了可视模式,因为这个功能是vim才有的。如果您用的vi没有这个功能,就换成vim就有了。打开可视模式,按ESC键,然后按v就进入可视模式;

    可视模式为我们提供了极为友好的选取文本范围,以高亮显示;在屏幕的最下方显示有;

    -- 可视 --

    --VISUAL--

    进入可视模式,我们就可以用前面所说的命令行模式中的光标移动指令,可以进行文本范围的选取。

    选取文本范围有何用?

    我们可以对某部份删除作业,按d键就删除了我们选中的内容。

    选中内容后,我们按y就表示复制;按d表示删除;

    值得一提是的删除的同时,也表示复制。我们返回到命令模式,然后移动光标到某个位置,然后按shiftp键,就把刚才删除的内容贴上了。我们先在这里提一句,在后文,我们还得详细说说。

    退出可视模式,还是用ESC键;

    3.9 复制和粘帖的操作

    其实删除也带有剪切的意思,当我们删除文字时,可以把光标移动到某处,然后按shiftp键就把内容贴在原处,然后再移动光标到某处,然后再按p或shiftp又能贴上;

    p 在光标之后粘帖;

    shiftp 在光标之前粘帖

    来举一例:

    比如我们想把一个文档的第三行复制下来,然后帖到第五行的后面,我们应该怎么做呢?

    有两种方法;

    第一种方法:

    先把第三行删除,把光标移动到第三行处,然后用dd动作,接着再按一下shiftp键。这样就把刚才删除的第三行帖在原处了。

    接着我们再用k键移动光标到第五行,然后再按一下p键,这样就把第三行的内容又帖到第五行的后面了;

    第二种方法:

    进入可视模式,按ESC键,然后按v键。移动鼠标指针,选中第三行的内容,然后按y键复制;再移动指针到第五行,最后按p键;

    所以复制和粘贴操作,是命令模式、插入模式及可视模式的综合运用;我们要学会各种模式之间的切换,要常用ESC键;更为重要的学会在命令模式下移动光标;

    3.10 关于行号

    有时我们配置一个程序运行时,会出现配置文件X行出现错误 。这时我们要用到行号相关的操作;

    为所有内容添加行号;

    按ESC键,然后输入:

    :set number

    光标所处位置

    在屏幕的右下角,有类似如下的;

    ** 57,8 27****%**

    在这之中,57表示第57行,8表示第8个字符;

    3.11 查找和替换功能

    3.11.1 查找

    首先,我们要进入ESC键,进入命令模式;我们输入/或?就进入查找模式了;

    /SEARCH 注:正向查找,按n键把光标移动到下一个符合条件的地方;

    ?SEARCH 注:反向查找,按shiftn 键,把光标移动到下一个符合条件的

    举一例:比如我想在一个文件中找到swap单词,我应该如下做;

    首先按ESC键,进入命令模式,然后输入;

    /swap

    ?swap

    3.11.2 替换

    按ESC键进入命令模式;

    :s /SEARCH/REPLACE/g 注:把当前光标所处的行中的SEARCH单词,替换成REPLACE,并把所有SEARCH高亮显示;

    :%s /SEARCH/REPLACE 注:把文档中所有SEARCH替换成REPLACE;

    :#,# s /SEARCH/REPLACE/g 注:#号表示数字,表示从多少行到多少行,把SEARCH替换成REPLACE;

    注:在这之中,g表示全局查找;我们注意到,就是没有替换的地方,也会把SEARCH高亮显示;

    举例说明:

    比如我们有一篇文档要修改;

    我们把光标所在的行,把所有单词the,替换成THE,应该是:

    :s /the/THE/g

    我们把整篇文档的所有的the都替换成THE,应该是:

    :%s /the/THE

    我们仅仅是把第1行到第10行中的the,替换成THE,应该是;

    :1,10 s /the/THE/g

    1.1.1 编辑器vi

    在Linux下开发一般都用vi编辑器来编写代码,就像Windows下用记事本写文挡一样编写各种文档,只是写的代码文件后缀名是.c或.cpp等;在以后的工作中,我们每天的程序编写、文件编辑等工作都得用到vi编辑器,所以对vi运用的熟练程度直接决定了你的工作效率。

    网上有关vi使用方法的资料有很多,你可以自己下载回来学习或直接学习Linux自带的帮助手册。不管你通过何种方式学习,下面的几点是你必须要掌握并熟练运用的:

    一、 ****Vi****的三种工作模式的区别以及相互间的切换

    Vi的工作模式为:

    1.     编辑模式
      

    Vi 在初始启动(打开文件)后首先进入编辑模式,在此模式下可移动光标、删除文字、复制或粘贴文字等操作;

    Vi语法:vi <文件名>;

    1.     插入模式
      

    当用户在编辑模式下键入 i, a, o 等命令之后进入插入模式,除 Esc 之外的任何字符均将被看成是插入到编辑缓冲区中的字符,按Esc后切换到编辑模式;

    1.     最后行模式
      

    当用户在编辑模式下键入“:”之后进入最后行模式,在此模式下可键入命令用来保存文件、读取文件内容、执行 Shell 命令、设置 Vi 参数、以正则表达式的方式查找字符串或替换字符串等;

    二、 ****编辑模式命令操作

    1.     移动光标
      

    要对正文内容进行修改,首先必须把光标移动到指定位置:

           k、j、h、l      功能分别等同于上、下、左、右箭头键
    

    Ctrl+b 在文件中向上移动一页(相当于 PageUp 键)

    Ctrl+f 在文件中向下移动一页(相当于 PageDown 键)

    H 将光标移到屏幕的最上行(Highest)

    nH 将光标移到屏幕的第 n 行

    2H 将光标移到屏幕的第 2 行

    M 将光标移到屏幕的中间(Middle)

    L 将光标移到屏幕的最下行(Lowest)

    nL 将光标移到屏幕的倒数第 n 行

    3L 将光标移到屏幕的倒数第 3 行

    w 在指定行内右移光标,到下一个字的开头

    e 在指定行内右移光标,到一个字的末尾

    b 在指定行内左移光标,到前一个字的开头

    0 数字0,左移光标,到本行的开头

    $ 右移光标,到本行的末尾

    ^ 移动光标,到本行的第一个非空字符

    1.     替换和删除
      

    以用其他字符来替换光标所指向的字符,或从当前光标位置删除一个或多 个字符:

                     rc                                用 c 替换光标所指向的当前字符
    

    nrc 用 c 替换光标所指向的前 n 个字符

    5rc 用 c 替换光标所指向的前 5 个字符

    x 删除光标所指向的当前字符

    nx 删除光标所指向的前 n 个字符

    3x 删除光标所指向的前 3 个字符

    dw 删除光标右侧的字

    ndw 删除光标右侧的 n 个字

    3dw 删除光标右侧的 3 个字

    db 删除光标左侧的字

    ndb 删除光标左侧的 n 个字

    5db 删除光标左侧的 5 个字

    dd 删除光标所在行,并去除空隙

    ndd 删除 n 行内容,并去除空隙

    3dd 删除 3 行内容,并去除空隙

    1.     粘贴和复制
      

    从正文中删除的内容(如字符、字或行)并没有真正丢失,而是被剪切并复制到了一个内存缓冲区中。用户可将其粘贴到正文中的指定位置:

    p 小写字母 p,将缓冲区的内容粘贴到光标的后面

    P 大写字母 P,将缓冲区的内容粘贴到光标的前面

    yy 复制当前行到内存缓冲区

    nyy 复制 n 行内容到内存缓冲区

    5yy 复制 5 行内容到内存缓冲区

    1.     搜索字符串
      

    要查找文件中指定字或短语出现的位置,可以 用 vi 直接进行搜索,而不必以手工方式进行。搜索方法是:键入字符 / ,后面跟以要搜索的字符串,然后 按回车键。编辑程序执行正向搜索(即朝文件末尾方向),并在找到指定字符串后,将光标停到该字符串的 开头;键入 n 命令可以继续执行搜索,找出这一字符串下次出现的位置。用字符 ? 取代 / ,可以实现反向 搜索(朝文件开头方向)

    1.     撤销和重复
      

    在编辑文档的过程中,为消除某个错误的编辑命令造成的后果,可以用撤消命令。另外,如果用户希望在新 的光标位置重复前面执行过的编辑命令,可用重复命令:

              u   撤消前一条命令的结果
    

    . 重复最后一条修改正文的命令

    1.     文本选中
      

    vi 可进入到一种成为 Visual 的模式,在该模式下,用户可以用光标移动命令可视地选择文本,然后再执行其他编辑操作,例如删除、复制等:

    v 字符选中命令

    V 行选中命令

    三、 ****插入模式命令操作

    在编辑模式下正确定位光标之后,可用以下命令切换到插入模式:

    i 在光标左侧输入正文

    a 在光标右侧输入正文

    o 在光标所在行的下一行增添新行

    O 在光标所在行的上一行增添新行

    I 在光标所在行的开头输入正文

    A 在光标所在行的末尾输入正文

    上面介绍了几种切换到插入模式的简单方法。另外还有一些命令,它们允许在进入插入模式之前首先删去一段正文,从而实现正文的替换。这些命令包括:

    s 用输入的正文替换光标所指向的字符

    ns 用输入的正文替换光标右侧n个字符

    cw 用输入的正文替换光标右侧的字

    ncw 用输入的正文替换光标右侧的 n 个字

    cb 用输入的正文替换光标左侧的字

    ncb 用输入的正文替换光标左侧的 n 个字

    cd 用输入的正文替换光标的所在行

    ncd 用输入的正文替换光标下面的 n 行

    c$ 用输入的正文替换从光标开始到本行末尾的所有字符

    c0 用输入的正文替换从本行开头到光标的所有字符

    四、 ****最后行模式命令操作

    编辑模式下键入“:”,光标就跳到屏幕最后一行,并在那里显示冒号,用户输入的内容均显示在屏幕的最后一行,按回车键,vi 执行命令;

    1. 退出命令

    ZZ 在编辑模式下可以退出 vi 编辑程序,该命令保存对正文所作的修改,覆盖原始文件;

    :q 在未作修改的情况下退出

    :q! 放弃所有修改,退出编辑程序

    :wq 将编辑的内容写入原始文件并退出编辑程序(相当于 ZZ 命令)

    1. 行号与文件

    命令模式下,可以规定命令操作的行号范围。数值用来指定绝对行号;字符“.”表示光标所在行的行号;字符 符“$”表示正文最后一行的行号;简单的表达式,例如“.+5”表示当前行往下的第 5 行;

    编辑中的每一行正文都有自己的行号,用下列命令可以移动光标到指定行:

    :n 将光标移到第 n 行

    :w 将编辑的内容写入原始文件,用来保存编辑的中间结果

    :w file 将编辑的内容写入 file 文件,保持原有文件的内容不变

    :a,bw file 将第 a 行至第 b 行的内容写入 file 文件

    :r file 读取 file 文件的内容,插入当前光标所在行的后面

    :e file 编辑新文件 file 代替原有内容

    :f file 将当前文件重命名为 file

    :f 打印当前文件名称和状态,如文件的行数、光标所在的行号等

    :345w file 将第 345 行写入 file 文件

    :3,5w file 将第 3 行至第 5 行写入 file 文件

    :1,.w file 将第 1 行至当前行写入 file 文件

    :.,$w file 将当前行至最后一行写入 file 文件

    :.,.+5w file 从当前行开始将 6 行内容写入 file 文件

    :1,$w file 将所有内容写入 file 文件,相当于 :w file 命令

    1. 字符串搜索

    给出一个字符串,可以通过搜索该字符串到达指定行。如果希望进行正向搜索,将待搜索的字符串置于两个“ /”之间;如果希望反向搜索,则将字符串放在两个“?”之间:

    :/str/ 正向搜索,将光标移到下一个包含字符串 str 的行

    :?str? 反向搜索,将光标移到上一个包含字符串 str 的行

    :/str/w file 正向搜索,并将第一个包含字符串 str 的行

    写入 file 文件

    :/str1/,/str2/w file 正向搜索,并将包含字符串 str1 的行至包含字符串 str2 的行写 入 file 文件

    1. 正文替换

    利用 :s 命令可以实现字符串的替换。具体的用法包括:

    :s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1

    :s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1

    :.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1

    :1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1

    :g/str1/s//str2/g 功能同上

    从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索 字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

    五、 ****Shell****切换

    在编辑正文时,利用 vi 命令模式下提供的 shell 切换命令,无须退出 vi 即可执行 Linux 命令,十分方便,也可以说是最后行模式。语法格式为:

    :! command 执行完 shell 命令 command 后回到 vi

    另外,在编辑模式下,键入 K ,可命令 vi 查找光标所在单词的手册页,相当于运行 man命令。

    相关文章

      网友评论

          本文标题:vi编辑器的使用

          本文链接:https://www.haomeiwen.com/subject/uxgzmhtx.html