zoukankan      html  css  js  c++  java
  • 【Linux基础】VI 编辑器基本使用方法

    vi编辑器是所有Unix及Linux系统下标准的编辑器。对Unix及Linux系统的任何版本,vi编辑器是完全相同的,它是Linux中最基本的文本编辑器。


    第一章vi的三种模式

    第二章vi文本编辑器

    第三章vi编辑命令

    (移动光标

    (简单编辑

    (插入文本的常用方法

    (使用J合并两行

    (回顾基本的vi命令

     

    学习vi的唯一方法是实践。


     

    第一章vi的三种模式

    基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

    1命令行模式command mode

    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

    输入vi filename后,默认进入命令模式,输入a、i、o均可改变当前模式为插入模式

    2插入模式Insert mode

    只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

    3底行模式last line mode

    将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

    不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。

     

    第二章 vi文本编辑器

    1、保存和退出文件 (命令模式)

    (1) ZZ

    输入ZZ 退出并保存编辑的命令。

    (2) :wq + Enter(:wq命令等价于ZZ命令)

    也可以使用ex命令来保存编辑操作。

    输入:w 将保存文件但并不退出vi。

    输入:q 没有进行任何编辑操作退出vi。

    输入:q!不保存修改强制退出vi。

    输入 :wq 则保存编辑器操作并退出vi。

     

    2、不保存编辑而直接退出 (命令模式)

    (1) :e! + Enter

    输入 :e! 回到此次编辑前状态,重新编辑。

    (2) :q! + Enter

    输入:q! 放弃此次编辑,并不保存强制退出。

     

     

    vi通常不允许用户放弃他所做的编辑操作。将感叹号加在 :e 或 :q 命令后面可使vi忽略这个限制,即使已经修改了缓冲区,vi也会执行该操作。

     

    3、保存文件时所遇到的问题 

    (1) :w!(等价于 :saveas file命令)

    输入 :w! file 将覆盖现有的文件;

    输入 :w newfile,将把编辑后的版本保存到新文件中。

    (2) :!rm junkfile

    输入类似于:!df,可以调用外部命令(:!df ,调用用于检查磁盘剩余空间的df命令)。

    (3) :sh

    输入 :sh,创建一个临时的UNIX shell来调用其他的UNIX命令。

    输入 CTRL-D 或 exit 将终止shell执行并返回vi编辑环境

    (4)CTRL+Zfg

    (在大部分UNIX系统上,使用作业控制shell时,可以通过简单地输入 CTRL-Z 来挂起vi,并返回到UNIX命令提示符下;输入 fg 即可返回到vi)。

     

     

    第三章vi编辑命令

     1、移动光标 

    (1) 单一移动 h、j、k、l

    在右手指下的 h 、j 、k 和 l 键可以用来移动光标。

    h 左移,一个空格

    j 下移,一行

    k 上移,一行

    l 右移,一个空格

     

    注意 :也可以使用光标箭头键、+ 和 - 来上移和下移,或 RETURN 键和 BACKSPACE 键来移动光标,但它们都不是通用的方法,并且并不是所有的终端都支持箭头键。起初,使用字母键代替箭头键来移动光标可能会比较麻烦,但是进过一段时间的使用之后,你会发现这是vi的一个优点,因为不用让手指离开键盘中心就可以四处移动光标。

     

    (2) 数字参数 4l

    可以在移动命令的前面添加数字。例如,命令“4l”将光标向右移动4格,就像键入了4次l一样(llll)。

    注意: 复合命令的作用是,对于我们所学的每个命令,可以有更多的选择和更强的功能。

     

     

    (3) 行内移动 0$

    vi有两个实用的行内移动命令:

    0    移动到行首

    $    移动到行尾

     

    (4) 按文本块移动 wWbB

    我们也可以按单词、句子、段落等等之类的文本块移动光标。

    w 命令每次把光标向前移动一个单词,并把符号和标点作为单词处理。

    W 命令也可以按单词移动光标,但此时并不把符合和标点作为单词计算。

    b 命令可以按单词后移光标,作用与 w 命令相反。

    B 命令可以按单词后移光标,作用与 W 命令相反。

     

    (5)屏幕移动ctrl+udfbHML

    Ctrl+u:向文件首翻半屏

    Ctrl+d:向文件尾翻半屏

    Ctrl+f:向文件尾翻一屏

    Ctrl+b;向文件首翻一屏

    H :光标移至屏幕顶行

    M :光标移至屏幕中间行

    L :光标移至屏幕最后行

     

    (6)其它移动命令

    1G或gg:光标移动到文章开头

    G:移动到文章末尾

    n+:光标下移n行

    n-:光标上移n行

    n$:光标移至第n行尾

     

    (7)搜索命令

    /pattern:从光标开始处向文件尾搜索pattern

    ?pattern:从光标开始处向文件首搜索pattern

    n:在同一方向重复上一次搜索命令

    N:在反方向上重复上一次搜索命令

     

    (8)替换命令

    :s/p1/p2/g  将当前行中所有p1均用p2替代

    :n1,n2s/p1/p2/g  将第n1至n2行中所有p1均用p2替代

    :g/p1/s//p2/g    将文件中所有p1均用p2替换

     

    2、简单编辑 

    i    插入命令

    a    追加命令

    c    修改命令

    d    删除命令

    y    复制命令

    p    粘贴命令

    先d后p    移动命令    

     

    (1) 插入新文本 i

    输入 i 光标当前开始插入

    (2) 追加文本 a

    输入a 光标后开始插入

    (3) 修改文本 c

    cw    到单词的尾部

    c2b    后退两个单词

    c$    到行尾

    c0    到行首

     

    注意: 类似于 i 和 a,c 命令也使你留在插入模式中,直到按下ESC键才会回到命令模式。

     

    [1] 单词cw

    输入cw 删除一个单词并且开始进行编辑操作。

    [2] ccC

    输入cc 删除当前整行并且开始进行编辑操作。

    输入C 删除从当前光标位置到行尾的所有字符,并开始编辑操作。(等价于 c$ 命令)

    [3] 字符r

    输入r利用一个单个字符替换另一个单个字符,替换完毕后直接返回命令模式。

     

    (4) 替换文本 sS

    s 只替换单个字符。替换多个字符,可使用数字前缀。

    S  删除整行并开始编辑(等同于cc)。替换多行,可使用数字前缀。

    s 和 S 都会使你处于插入模式,当完成新文本的输入时,即可按下ESC键退出插入状态。

     

    R 输入的字符将逐个地替换屏幕上的文本,直到输入ESC键为止。最多只能改写一整行;当输入RETURN时,vi就会打开一个新行,并使你处于插入模式。

     

    (5) 大小写转换 ~

    输入~ 可以改变字母的大小写,并移动光标到下一个字符。现在的版本允许使用数字前缀。

    输入guw 单词改为小写

    输入gUw 单词改为大写

    输入guu 当前行改为小写

    输入gUU 当前行改为大写

    (6) 删除文本 d

    d 使用d命令删除文件中的冗余文本。类似于修改命令,删除命令也需要文本目标(将被删除的文本数量)。可以按单词(dw)、按行(dd 和 D)或按其他移动命令进行删除。

     

    [1] 单词

    dw

    注意: dw 删除了光标定位在其首部的那个单词,要注意单词后面的空格也被删除掉了。dw 也可被用来删除部分单词。

    de    它只删除到单词的尾部

    dE    区别是,包括标点符号

     

    db    向后删除一个单词

    dB    区别是,包括标点符号

    d$    删除到一行的尾部

    d0    删除到一行的首部

     

    [2] 

    dd

     对光标所在的整行进行删除,它不能删除行的一部分。类似于它的互补命令cc。

    xdd 删除x行

     

    用来删除从光标位置到行尾的文本(D是d$的缩写)。

     

    [3] 字符

    x 用来删除单个字符。只删除光标所在位置的字符。

    X 删除光标前一个字符

    可以带上数字前缀,将删除该数字所表示的数量的字符。例如,5x 将删除光标右边的5个字符。

     

    删除操作中遇到的问题

    u 取消上次命令操作

    U 将该改行恢复到其原来的状态,即对改行进行任何改变之前的状态。

     

    (7) 移动文本 (删除后pPxp

    在vi中,先执行删除命令,然后立即输入p或者P实现文本移动。

    执行删除命令后立即输入p  可以粘贴命令把位于缓冲区中的文本粘贴到光标位置的后面。

    执行删除命令后立即输入P  区别是粘贴到光标的前面。

     

    A、每次删除一个文本块,删除的部分都将暂时保存在一个专用缓冲区中。

    B、删除命令后,必须立即使用p或者P,否则删除文本会丢失。而且只要没有进行新的编辑,就可以反复执行粘贴操作。

    C、把删除的文本保存到命名缓冲区中,以便在以后可以重复恢复它。

     

    输入xp 可以调换两个字母的顺序

     

    (8) 复制文本 y

    复制命令把选中的文本复制到一个专用缓冲区中,文本将保存在那里直到出现另一个复制操作(或删除操作)。

    yy  复制一整行

    Y(等价于yy)

     

    复制操作与删除操作使用同一个缓冲区,每个新的删除操作或复制操作将取代复制缓冲区中先前的内容。与修改和删除命令一样,复制命令也可以与任何移动命令结合在一起使用(yw、y$、4yy)。

     

    (9) 重复或撤销最后的命令 

    在给出下一个命令之前,你所执行的每个编辑命令都将存储在一个临时缓冲区中。例如,如果在文件中的某个单词后插入the,那么用来插入文本的命令以及所输入的文本都将会暂时保存起来。

     

    .(句点)将保存在临时缓冲区中的插入文本命令和插入的文本再次执行一遍。

    u 撤销上一步操作(任何位置使用u均可)

    U 撤销当前行的所有编辑修改(光标必须在修改行上)

     

    (9)合并两行J

    有时在编辑文件时,想合并一系列很难浏览的短行。当要把两行合并为一行时,可以将光标定位在第一行上,然后按下J键来合并这两行。

    使用带数字参数的 J 能合并该数量的连续行。例如,可以使用 3J 命令来合并3行。

     

     

    3、插入文本的常用方法 

    i 是在光标前面插入文本,a 是在光标后面插入文本。这里还有一些在相对于光标不同位置的地方插入文本的其他命令:

    A    在当前行的尾部添加文本(等价于 $a)

    I    在行首插入文本(等价与 0i)

    o    在光标所在行的下面新建一行,等待输入文本

    O    在光标所在行的上面新建一行,等待输入文本

    s    使用输入的文本替换光标所在位置的字符(最好用途,是把一个字符改为多个字符)

    S    使用输入的文本替换当前行(等价于 cc)

    R    使用新字符覆盖现有字符(区别:r    只替换光标所指的一个字符)

    所有这些命令都会使vi处于插入模式,在插入文本后,记得按下ESC键返回命令模式。

     

    插入命令的数字参数

    除o 和 O 以外,上面的插入命令(加上 i 和 a)都可以带有数字前缀。通过数字前缀,可以使用 i、I、a 和 A 命令插入一排星号或替换字符。

    例如,输入 10i* + ESC 可以插入10个星号。(注意:最后必须按 ESC才可以生效)

     

     

    4、回顾基本的vi命令 

    编辑命令

    文本目标

    修改

    删除

    复制

    1 个单词

    cw

    dw

    yw

    2 个单词,不计标点

    2cw 或 c2w

    2dw 或 d2w

    2yw 或 y2w

    向后 3 个单词

    3cb 或 c3b

    3db 或 d3b

    3yb 或 y3b

    1 行

    cc

    dd

    yy 或 Y

    到行尾

    c$

    d$ 或 D

    y$

    到行首

    c0

    d0

    y0

    单个字符

    r

    x 或 X

    yl 或 yh

    5 个字符

    5s

    5x

    5yl

     

    移动

    四个箭头(左下上右)

    h 、 j 、 k 、 l

    到下一行的首字符

    +

    到上一行的首字符

    -

    到单词的尾部

    e 或 E

    按单词前移

    w 或 W

    按单词后移

    b 或 B

    到行尾

    $

    到行首

    0

     

    其他操作

    从缓冲区输出文本

    p 或 P

    启动 vi ,如果指定了文件,就打开该文件

    vi file

    保存编辑、退出文件

    ZZ

    不保存编辑、退出文件

    :q!

     

    文本创建和操作命令

    在当前位置插入文本

    i

    在行首插入文本

    I

    在当前位置追加文本

    a

    在行尾追加文本

    A

    在光标所在行的下面新建一行,等待输入新文本

    o

    在光标所在行的上面新建一行,等待输入新文本

    O

    删除行并替换文本

    S

    使用输入的文本替换光标所在位置的字符

    s

    使用新文本覆盖现有文本

    R

    合并当前行和下一行

    J (注意大写)

    转换大小写

    ~

    重复上次操作

    .

    取消上次修改

    u

    恢复行到初始状态

    U

     

     

    虽然只使用这些表所列出的命令就可以运用vi,但是为了掌握vi的真正功能(和提高自己的工作效率),将需要更多的工具。

    在后续总结这些工具的用法。

     

    参考 :学习vi编辑器(第六版)

  • 相关阅读:
    JS中的constructor与prototype
    HTTP状态码
    CSS HACK 及常见问题
    js常见怪异
    js深拷贝和浅拷贝
    浏览器渲染
    google全球地址大全
    从function前面的!想到的
    2048
    js判定IE
  • 原文地址:https://www.cnblogs.com/badboy200800/p/9880208.html
Copyright © 2011-2022 走看看