zoukankan      html  css  js  c++  java
  • vi9

    Vim正则表达式详解
    
    
    
    [日期:2012-11-29]
    
    来源:Linux社区  作者:salc3k
    
    [字体:大 中 小] 
    
    
    
    
    
    
    
    一 VI中如何使用正则表达式
     
    使用正则表达式的命令最常见的就是/ (搜索)命令。其格式如下:
     
    /正则表达式
     
    另一个很有用的命令就是 :s(替换)命令,将第一个//之间的正则表达式替换成第二个//之间的字符串。
     
    :s/正则表达式/替换字符串/选项
     
    二、元字符
     
    元字符是具有特殊意义的字符。使用元字符可以表达任意字符、行首、行 尾、某几个字符等意义。
     
    元字符一览
     
    
    
    
    元字符
     
    说明
     
    
    
    
    .
     
    匹配任意一个非空字符,不包括换行符
     
    
    
    [abc]
     
    匹配方括号中的任意一个字符。可以使用-表示字符范围,
    如[a-z0-9]匹 配小写字母和阿拉伯数字。
     
    
    
    [^abc]
     
    在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。
     
    
    
    \d
     
    匹配阿拉伯数字,等同于[0-9]。
     
    
    
    \D
     
    匹配阿拉伯数字之外的任意字符,等同于[^0-9]。
     
    
    
    \x
     
    匹配十六进制数字,等同于[0-9A-Fa-f]。
     
    
    
    \X
     
    匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]。
     
    
    
    \w
     
    匹配单词字母,等同于[0-9A-Za-z_]。
     
    
    
    \W
     
    匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]。
     
    
    
    \t
     
    匹配<TAB>字符。
     
    
    
    \s
     
    匹配空白字符,等同于[ \t],即空格和Tab
     
    
    
    \S
     
    匹配非空白字符,等同于[^ \t]。
     
    
    另外,如果要查找字符 *、.、/等,则需要在前面用 \ 符号,表示这不是元字符,而只是普通字符而已。
     
    
    
    
    元字符
     
    说明
     
    
    
    
    \*
     
    匹配 * 字符。
     
    
    
    \.
     
    匹配 . 字符。
     
    
    
    \/
     
    匹配 / 字符。
     
    
    
    \\
     
    匹配 \ 字符。
     
    
    
    \[
     
    匹配 [ 字符。
     
    
    量词
     
    
    
    
    元字符
     
    说明
     
    
    
    
    *
     
    匹配0-任意个
     
    
    
    \+
     
    匹配1-任意个
     
    
    
    \?
     
    匹配0-1个
     
    
    
    \{n,m}
     
    匹配n-m个
     
    
    
    \{n}
     
    匹配n个
     
    
    
    \{n,}
     
    匹配n-任意个
     
    
    
    \{,m}
     
    匹配0-m个
     
    
    
    
    表示位置的符号
     
    
    
    
    元字符
     
    说明
     
    
    
    
    $
     
    匹配行尾
     
    
    
    ^
     
    匹配行首
     
    
    
    \<
     
    匹配单词词首
     
    
    
    \>
     
    匹配单词词尾
     
    
     
     
    例子:
     
    /char\s\+[A-Za-z_]\w*; " 查找所有以char开头,之后是一个以上的空白," 最后是一个标识符和分号
     
    /\d\d:\d\d:\d\d " 查找如 17:37:01 格式的时间字符串
     
    :g/^\s*$/d " 删除只有空白的行
     
    :s/\<four\>/4/g " 将所有的four替换成4,但是fourteen中的four不替换
    
    本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2012-11/75113.htm
    

      

    三、替换变量
     
    在正规表达式中使用 \( 和 \) 符号括起正规表达式,即可在后面使用\1、\2 等变量来访问 \( 和 \) 中的内容。
     
    使用例
     
    /\(a\+\)[^a]\+\1 //查找开头和结尾处a的个数相同的字符串," 如 aabbbaa,aaacccaaa,但是不匹配 abbbaa
     
    :s/\(http:\/\/[-a-z\._~\+%\/]\+\)/<a href="\1">\1<\/a>/ // 将URL替换为<a href="http://url">http://url</a>的格式
     
    :s/\(\w\+\)\s\+\(\w\+\)/\2\t\1 //将 data1 data2 修改为 data2 data1
     
    四、函数式
     
    在替换命令 s/// 中可以使用函数表达式来书写替换内容,格式为
     
    :s/替换字符串/\=函数式
     
    在函数式中可以使用 submatch(1)、submatch(2) 等来引用 \1、\2 等的内容,而submatch(0)可以引用匹配的整个内容。
     
    使用例
     
    :%s/\<id\>/\=line(".") " 将各行的 id 字符串替换为行号
     
    :%s/^\<\w\+\>/\=(line(".")-10) .".". submatch(1) " 将每行开头的单词替换为 (行号-10).单词 的格式, 如第11行的 word 替换成 1. word
     
    五、与Perl正则表达式的区别
     
    元字符的区别
     
    
    
    Vim语法
     
    Perl语法
     
    含义
     
    
    
    
    \+
     
    +
     
    1-任意个
     
    
    
    \?
     
    ?
     
    0-1个
     
    
    
    \{n,m}
     
    {n,m}
     
    n-m个
     
    
    
    \(和\)
     
    (和)
     
    分组
     
    
     
     
     
     
    六、常用vi 正则表达式
     
    :%s/^/Head content/g "全局插入开头信息
     :%s/$/Tail content/g "全局插入尾部信息 
    :%s= *$== "将所有行尾多余的空格删除
     :g/^\s*$/d "将所有不包含字符(空格也不包含)的空行删除.
     
    :%s/ */ /g 把一个或者多个空格替换为一个空格。
     
    :%s/ *$// 去掉行尾的所有空格。
     
    :%s/^/ / 在每一行头上加入一个空格。
     
    :%s/^[0-9][0-9]* // 去掉行首的所有数字字符。
     
    :%s/b[aeio]g/bug/g 将所有的bag、beg、big和bog改为bug。
     
    :%s/t([aou])g/h1t/g 将所有tag、tog和tug分别改为hat、hot和hug(注意用group的用法和使用1引用前面被匹配的字符)。
    
    本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2012-11/75113p2.htm
    

      

    七、关于magic
     
     
     
    vim中有个magic的设定。设定方法为:
     :set magic             " 设置magic
    :set nomagic           " 取消magic
    :h magic               " 查看帮助 
    简单地说, magic就是设置哪些元字符要加反斜杠哪些不用加的。 简单来说:
     ■magic(\m):除了 $ . * ^ 之外其他元字符都要加反斜杠。
     ■nomagic(\M):除了 $ ^ 之外其他元字符都要加反斜杠。
     
    这个设置也可以在正则表达式中通过 \m \M 开关临时切换。 \m 后面的正则表达式会按照 magic 处理,\M 后面的正则表达式按照 nomagic 处理, 而忽略实际的magic设置。
     
    例如:
     /\m.*          # 查找任意字符串
    /\M.*          # 查找字符串 .* (点号后面跟个星号)
       
    另外还有更强大的 \v 和 \V。 * \v(即 very magic 之意):任何元字符都不用加反斜杠 * \V(即 very nomagic 之意):任何元字符都必须加反斜杠
     
    例如:
     /\v(a.c){3}$   # 查找行尾的abcaccadc
    /\m(a.c){3}$   # 查找行尾的(abc){3}
    /\M(a.c){3}$   # 查找行尾的(a.c){3}
    /\V(a.c){3}$   # 查找任意位置的(a.c){3}$ 
    默认设置是 magic,vim也推荐大家都使用magic的设置,在有特殊需要时,直接通过 \v\m\M\V 即可。
     
    vim的帮助文件非常有用,关于正则表达式可以参考以下的内容。
     :h pattern
    :h magic
    :h perl-patterns
    本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2012-11/75113p3.htm
    

      

    文档操作
    vi/vim 基本使用方法 
    本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!
     
    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。
     
    1、vi的基本概念
      基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
     
    1) 命令行模式command mode)
     
      控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
     
    2) 插入模式(Insert mode)
     
      只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
     
    3) 底行模式(last line mode)
     
      将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
     
    不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。
     
    2、vi的基本操作
    a) 进入vi
     
      在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
     
       $ vi myfile
     
    
      不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧!
     
    b) 切换至插入模式(Insert mode)编辑文件
     
      在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
     
    c) Insert 的切换
     
      您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。
     
    d) 退出vi及保存文件
     
      在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:
     
    : w filename (输入 「w filename」将文章以指定的文件名filename保存)
     
    : wq (输入「wq」,存盘并退出vi)
     
    : q! (输入q!, 不存盘强制退出vi)
     
    
    3、命令行模式(command mode)功能键
    1). 插入模式
     
      按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
     
      按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
     
      按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
     
    2). 从插入模式切换为命令行模式
     
      按「ESC」键。
     
    3). 移动光标
     
      vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
     
      按「ctrl」+「b」:屏幕往“后”移动一页。
     
      按「ctrl」+「f」:屏幕往“前”移动一页。
     
      按「ctrl」+「u」:屏幕往“后”移动半页。
     
      按「ctrl」+「d」:屏幕往“前”移动半页。
     
      按数字「0」:移到文章的开头。
     
      按「G」:移动到文章的最后。
     
      按「$」:移动到光标所在行的“行尾”。
     
      按「^」:移动到光标所在行的“行首”
     
      按「w」:光标跳到下个字的开头
     
      按「e」:光标跳到下个字的字尾
     
      按「b」:光标回到上个字的开头
     
      按「#l」:光标移到该行的第#个位置,如:5l,56l。
     
    4). 删除文字
     
      「x」:每按一次,删除光标所在位置的“后面”一个字符。
     
      「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。
     
      「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
     
      「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。
     
      「dd」:删除光标所在行。
     
      「#dd」:从光标所在行开始删除#行
     
    5). 复制
     
      「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
     
      「#yw」:复制#个字到缓冲区
     
      「yy」:复制光标所在行到缓冲区。
     
      「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
     
      「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
     
    6). 替换
     
      「r」:替换光标所在处的字符。
     
      「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
     
    7). 回复上一次操作
     
      「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
     
    8). 更改
     
      「cw」:更改光标所在处的字到字尾处
     
      「c#w」:例如,「c3w」表示更改3个字
     
    9). 跳至指定的行
     
      「ctrl」+「g」列出光标所在行的行号。
     
      「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
     
    4、Last line mode下命令简介
      在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。
     
    A) 列出行号
     
     「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。
     
    B) 跳到文件中的某一行
     
     「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
     
    C) 查找字符
     
     「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
     
     「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
     
    D) 保存文件
     
     「w」:在冒号输入字母「w」就可以将文件保存起来。
    
    E) 离开vi
     
     「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。
     
     「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
     
    5、vi命令列表
    1、下表列出命令模式下的一些键的功能:
     
    h
    左移光标一个字符
     
    l
    右移光标一个字符
     
    k
    光标上移一行
     
    j
    光标下移一行
     
    ^
    光标移动至行首
     
    0
    数字“0”,光标移至文章的开头
     
    G
    光标移至文章的最后
     
    $
    光标移动至行尾
     
    Ctrl+f
    向前翻屏
     
    Ctrl+b
    向后翻屏
     
    Ctrl+d
    向前翻半屏
     
    Ctrl+u
    向后翻半屏
     
    i
    在光标位置前插入字符
     
    a
    在光标所在位置的后一个字符开始增加
     
    o
    插入新的一行,从行首开始输入
     
    ESC
    从输入状态退至命令状态
     
    x
    删除光标后面的字符
     
    #x
    删除光标后的#个字符
     
    X
    (大写X),删除光标前面的字符
     
    #X
    删除光标前面的#个字符
     
    dd
    删除光标所在的行
     
    #dd
    删除从光标所在行数的#行
     
    yw
    复制光标所在位置的一个字
     
    #yw
    复制光标所在位置的#个字
     
    yy
    复制光标所在位置的一行
     
    #yy
    复制从光标所在行数的#行
     
    p
    粘贴
     
    u
    取消操作
     
    cw
    更改光标所在位置的一个字
     
    #cw
    更改光标所在位置的#个字
     
    
    2、下表列出行命令模式下的一些指令
    w filename
    储存正在编辑的文件为filename
     
    wq filename
    储存正在编辑的文件为filename,并退出vi
     
    q!
    放弃所有修改,退出vi
     
    set nu
    显示行号
     
    /或?
    查找,在/后输入要查找的内容
     
    n
    与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。
     
    
    对于第一次用vi,有几点注意要提醒一下:
    1、用vi打开文件,是处于「命令行模式(command
    
    本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2007-10/8686.htm
    

     


     

    • 博客访问: 61988
    • 博文数量: 116
    • 博客积分: 3486
    • 博客等级: 中校
    • 技术积分: 1165
    • 用  户  组:  普通用户
    • 注册时间: 2009-07-21 10:59
     
    文章分类

    全部博文(116)

    • 一种生活(27)                               
    • 第五象限(7)                               
    • 有意思吧(43)                               
    • 工作记录(38)                               
    • 未分配的博文(1)                               
    文章存档

    2011年(23)

    2009年(93)

    我的朋友
    最近访客
    订阅
    友情链接
    Vi/Vim的使用2009-07-26 10:05:33

    分类: 系统运维

    10.2 vi的使用

    通常,vi共分为3种模式,分别是“一般模式”、“编辑模式”与“命令行命令模式”。这3种模式的作用如下。

    ·   一般模式:vi处理文件时,一进入该文件,就是一般模式了。在这个模式中,可以使用“上下左右”键来移动光标,可以使用“删除字符”或“删除整行”来处理文件内容,也可以使用“复制、粘贴”来处理文件数据。

    ·   编辑模式:在一般模式中可以进行删除、复制、粘贴等操作,却无法进行编辑操作。要等到按下“i、I、o、O、a、A、r、R”等字母之后才会进入编辑模式。注意,通常在Linux中,按下上述字母时,画面的左下方会出现“INSERT或REPLACE”的字样,才可以输入任何字到文件中。如果要回到一般模式时,则必须要按下Esc键才可退出编辑模式。

    ·   命令行命令模式:在一般模式中,输入“: 或 / 或 ?”就可以将光标移到最下面的那一行,在这个模式中,您可以搜索数据,而且读取、存盘、大量删除字符、离开vi、显示行号等操作都是在此模式中实现的。

    简而言之,我们可以将这3种模式用图来表示。

    下面以一个简单的例子来进行说明。

    10.2.1  简单执行范例

    怎么使用vi建立一个文件名为test.txt的文件呢?很简单,步骤如下。

    1. 使用vi进入一般模式

    [root@linux ~]# vi test.txt

    直接输入“vi文件名”即可进入vi。如图10-2所示,左下角会显示这个文件的当前状态。如果是新建文件,会显示 [New File],如果是已存在的文件,则会显示当前文件名、行数与字符数,例如:“"/etc/man.config" 145L, 4614C”。

    2. 按下i进入编辑模式,开始编辑文字

    在一般模式中,只要按下I、o、a等字符,就可以进入编辑模式了。在编辑模式中,可以发现在左下角会出现 --INSERT-- ,意味着可以输入任意字符,如图10-3所示。这个时候,键盘上除了 [Esc] 这个按键之外,其他按键都可以视作为一般的输入按钮,可以进行任何编辑(在vi里,[Tab]键所得到的结果与空格符所得到的不一样,特别强调一下)。

    3. 按下 [Esc] 键回到一般模式

    假设已经按照上面的样式编辑完毕,那么,应该如何退出?就是按下 [Esc] 键。马上就会发现画面左下角的 --INSERT-- 不见了。

    4. 在一般模式中按下 :wq存储后离开vi

    我们要保存文件了,存盘并离开的命令很简单,输入“:wq”即可保存文件并离开(注意,按下 : ,该光标就会移到最下面的一行)。这时在提示符后面输入“ls -l”即可看到刚建立的test.txt文件。

    如此一来,文件test.txt已经建立好了,很简单。需要注意的是,如果文件权限不对,例如为 -r--r--r-- 时,那么可能会无法写入。可以使用“强制写入”的方式吗?可以。使用“:wq!”多加一个感叹号即可。不过,需要特别注意,这是在“你的权限可以改变”的情况下可行的。关于权限的概念,请参考第6章的内容。

    10.2.2  命令行内容说明

    如前所述,命令行或命令模式,就是在最下面一行中没有显示--INSERT--或者--REPLACE--字样。通常,命令行中的命令参见表10-1(注意,当按下“:”时,光标会自动移到屏幕的最下面一行)。

    表10-1                              命令行的命令

    一般模式:移动光标的方法

    h或向左方向键(←)

    光标向左移动一个字符

    j或向下方向键(↓)

    光标向下移动一个字符

    k或向上方向键(↑)

    光标向上移动一个字符

                                             续表      

    一般模式:移动光标的方法

    l或向右方向键(→)

    光标向右移动一个字符

    如果想要进行多次移动的话,例如向下移动30行,可以使用“30j”或“30↓”的组合键,即加上想要进行的次数(数字)后,操作即可

    [Ctrl] + [f]

    屏幕“向下”移动一页,相当于 [Page Down] 按键(常用)

    [Ctrl] + [b]

    屏幕“向上”移动一页,相当于 [Page Up] 按键(常用)

    [Ctrl] + [d]

    屏幕“向下”移动半页

    [Ctrl] + [u]

    屏幕“向上”移动半页

    一般模式:移动光标的方法

    +

    光标移动到非空格符的下一行

    -

    光标移动到非空格符的上一行

    n <space>

    n表示“数字”,例如20。按下数字后再按空格键,光标会向右移动这一行的n个字符。例如20 <space> 则光标会向后面移动20个字符距离

    0

    这是数字“0”:移动到这一行的最前面字符处(常用)

    $

    移动到这一行的最后面字符处(常用)

    H

    光标移动到这个屏幕的最上方那一行

    M

    光标移动到这个屏幕的中央那一行

    L

    光标移动到这个屏幕的最下方那一行

    G

    移动到这个文件的最后一行(常用)

    nG

    n为数字。移动到这个文件的第n行。例如20G则会移动到这个文件的第20行(可配合 :set nu)

    gg

    移动到这个文件的第一行,相当于1G(常用)

    n <Enter>

    n为数字。光标向下移动n行(常用)

    一般模式:搜索与替换

    /word

    从光标位置开始,向下寻找一个名为word的字符串。例如要在文件内搜索vbird这个字符串,就输入 /vbird即可(常用)

    ?word

    从光标位置开始,向上寻找一个名为word的字符串

    n

    n是英文按键。表示“重复前一个搜索的动作”。举例来说,如果刚刚执行 /vbird去向下搜索vbird字符串,则按下n后,会向下继续搜索下一个名称为vbird的字符串。如果是执行 ?vbird的话,那么按下n,则会向上继续搜索名称为vbird的字符串

    N

    这个N是英文按键。与n刚好相反,为“反向”进行前一个搜索操作。例如 /vbird后,按下N则表示“向上”搜索vbird

                                            

                                             续表      

    一般模式:搜索与替换

    :n1、n2s/word1/word2/g

    n1与n2为数字。在第n1与n2行之间寻找word1这个字符串,并将该字符串替换为word2。举例来说,在100到200行之间搜索vbird并替换为VBIRD则:“:100、200s/vbird/VBIRD /g”(常用)

    :1、$s/word1/word2/g

    从第一行到最后一行寻找word1字符串,并将该字符串替换为word2(常用)

    :1、$s/word1/word2/gc

    从第一行到最后一行寻找word1字符串,并将该字符串替换为word2。且在替换前显示提示符给用户确认(conform)是否需要替换(常用)

    一般模式:删除、复制与粘贴

    x, X

    在一行字中,x为向后删除一个字符(相当于 [Del] 按键),X为向前删除一个字符(相当于 [backspace] 即退格键)(常用)

    nx

    n为数字,连续向后删除n个字符。举例来说,要连续删除10个字符,则输入“10x”

    dd

    删除光标所在的那一整行(常用)

    ndd

    n为数字。从光标位置开始,删除向下n列,例如20dd则是删除20列(常用)

    d1G

    删除光标所在位置到第一行的所有数据

    dG

    删除光标所在位置到最后一行的所有数据

    d$

    删除光标所在位置到该行的最后一个字符

    d0

    d的后面是数字0,删除光标所在处,到该行的最前面一个字符

    yy

    复制光标所在的那一行(常用)

    nyy

    n为数字。复制光标所在的向下n行,例如20yy则是复制20行(常用)

    y1G

    复制光标所在行到第一行的所有数据

    yG

    复制光标所在行到最后一行的所有数据

    y0

    复制光标所在的那个字符到该行行首的所有数据

    y$

    复制光标所在的那个字符到该行行尾的所有数据

    一般模式:删除、复制与粘贴

    p, P

    p为将已复制的数据粘贴到光标的下一行,P则为贴在光标上一行。举例来说,当前光标在第20行,且已经复制了10行数据。则按下p后,那10行数据会贴在原来的20行之后,即由21行开始贴。但如果是按下P,那么原来的第20行会被变成30行(常用)

    J

    将光标所在行与下一列的数据结合成同一行

    c

    重复删除多个数据,例如向下删除10行,[10cj]

    u

    复原前一个操作(常用)

    [Ctrl]+r

    重做上一个操作(常用)

    u与 [Ctrl]+r是很常用的命令。一个是复原,另一个则是重做一次。利用这两个功能按键,编辑起来就得心应手。

                                             续表      

    一般模式:删除、复制与粘贴

    .

    这就是小数点。意思是重复前一个动作。如果想重复删除、重复粘贴,按下小数点“.”就可以(常用)

    进入编辑模式

    i、I

    插入:在当前光标所在处插入输入文字,已存在的文字会向后退;其中,i为“从当前光标所在处插入”,I为“在当前所在行的第一个非空格符处开始插入”(常用)

    a、A

    a为“从当前光标所在的下一个字符处开始插入”,A为“从光标所在行的最后一个字符处开始插入”(常用)

    o、O

    这是英文字母o的大小写。o为“在当前光标所在的下一行处插入新的一行”;O为“在当前光标所在处的上一行插入新的一行”(常用)

    r、R

    替换:r会替换光标所在的那一个字符;R会一直替换光标所在的文字,直到按下ESC键为止(常用)

    使用上面这些按键时,在vi画面的左下角处会出现“--INSERT--”或“--REPLACE--”的字样。通过名称就知道是什么操作。特别注意,上面也提过了,想在文件中输入字符时,一定要在左下角处看到INSERT/REPLACE才能输入。

    Esc

    退出编辑模式,回到一般模式中(常用)

    命令行命令模式

    :w

    将编辑的数据写入硬盘文件中(常用)

    :w!

    若文件属性为“只读”时,强制写入该文件。不过,到底能不能写入,与文件权限有关

    :q

    离开vi(常用)

    :q!

    若曾修改过文件,又不想存储,使用 ! 为强制离开不存储文件

    注意一下,那个感叹号(!)在vi当中,常常具有“强制”的意思。

    :wq

    存储后离开,若为 :wq! 则为强制存储后离开(常用)

    :e!

    将文件还原到最原始的状态

    ZZ

    若文件没有更改,则不存储离开,若文件已经更改,则存储后离开

    :w [filename]

    将编辑的数据存储成另一个文件(类似另存新文件)

    :r [filename]

    在编辑的数据中,读入另一个文件的数据。即将“filename”这个文件内容加到光标所在行的后面

    :n1、n2 w [filename]

    n1到n2的内容存储成filename文件

    :! command

    暂时离开vi到命令行模式下执行command的显示结果。例如“:! ls /home”,即可在vi中查看 /home中以ls输出的文件信息

    :set nu

    显示行号,设置之后,会在每一行的前缀显示该行的行号

    :set nonu

    与set nu相反,为取消行号

    特别注意,在vi中,“数字”是很有意义的。数字通常表示重复做几次的意思。也有可能表示要去哪里的意思。举例来说,要删除50行,则是用“50dd”。数字加在动作之前。要向下移动20行,使用“20j”或者“20↓”即可。

    掌握这些命令就很不错了,因为常用到的命令也可能只有一半。通常vi的命令除了上面笔者注明的常用的几个外,其他不用背,可以做一张简单的命令表,当有问题时就可以马上查询。

    10.2.3  案例练习

    现在测试一下,你是否已经熟悉了vi命令。请按照需求进行命令操作(下面的操作使用FC4的默认文件来进行练习。可以在这里下载:http://linux.vbird.org/linux_basic/0310vi/man.config)。

    看看你的显示结果与笔者的结果是否相同。

    1. 请在 /tmp目录下建立一个名为vitest的目录。

    2. 进入vitest目录中。

    3. 将 /etc/man.config复制到本目录中(或由上述的连接下载man.config文件)。

    4. 使用vi打开本目录下的man.config文件。

    5. 在vi中设置行号。

    6. 移动到第58行,向右移动40个字符,请问您双引号内是什么目录?

    7. 移动到第一行,并且向下搜索“bzip2”字符串,请问它在第几行?

    8. 接下来,要将50~100行之间的man改为MAN,并且一个一个挑选是否需要修改,如何执行命令?

    9. 修改完之后,突然反悔了,要全部复原,有哪些方法?

    10. 要复制51~60行的内容,并且贴到最后一行之后。

    11. 删除11~30行之间的20行。

    12. 将这个文件另存成一个man.test.config文件。

    13. 到第29行,并且删除15个字符。

    14. 存储后离开。

    整个步骤可以如下显示:

    1. "mkdir /tmp/vitest"

    2. "cd /tmp/vitest"

    3. "cp /etc/man.config ."

    4. "vi man.config"

    5. ":set nu"

    6. 先按下“58G”,再按下“40→”会在双引号内看到“/dir/bin/foo”。

    7. 先执行“1G”或“gg”后,直接输入“/bzip2”,则会到第116行。

    8. 直接执行“:50,100s/man/MAN/gc”即可。

    9. 简单的方法可以一直按“u”恢复到原始状态,或者使用不存储离开的方式“:q!”之后,再重新读取一次该文件。

    10. “51G”,然后再“10yy”之后,按下“G”到最后一行,再用“p”粘贴10行。

    11. “11G”之后,再用“20dd”即可删除20行。

    12. :w man.test.config。

    13. “29G”之后,再用“15x”即可删除15个字符。

    14. “:wq!”。

    如果可以查到结果,那么您基本上就掌握了vi的使用了。

    10.2.4  文件的恢复与暂存盘

    vi具有“可恢复”的功能。vi凭借什么进行恢复呢?很简单,临时文件。举例来说,当我们编辑一个文件时,假设名称为 /tmp/ passwd,那么在这个 /tmp中就会有一个临时文件,文件名为“/tmp/.passwd.swp”,这是一个隐藏文件,我们所进行的一些修改,都会暂时存在该文件中。如果在文件修改过程中,系统死机,那么下次再重新vi /tmp/passwd时,系统就会告诉你,是否需要恢复(recovery)成修改过程中的模样?如果按下 (R),就可以将数据恢复到修改过程的样子,而不是源文件。这是个很有用的功能。

    也就是说,如果有一天,在 /tmp中执行ls -al时,发现有两个文件,文件名分别为passwd与 .passwd.swp,那么,(1) 可能有人在编辑这个文件;(2) 之前你在编辑这个文件时,因为某些未知因素导致vi程序中断,则该临时文件就会存在。如果是状态 (2),则此时可以将该 .passwd.swp文件删除,或者直接vi /tmp/passwd,在vi询问是否恢复时,选择恢复,然后存储更新 /tmp/passwd,之后再将这个 /tmp/.passwd.swp文件删除即可。如果不删除的话,那么每次编辑这个文件时,都会告诉你该文件有问题。

    10.3 vim的附加功能

    其实,当前大部分的版本都以采用vim替代vi的功能了。如果使用vi后,却看到画面右下角有显示当前光标所在的行号,那么,就说明你的vi已经被vim所替换。为什么要用vim呢?因为vim具有颜色显示功能,并且还支持许多程序语法(syntax),因此,当使用vim编辑程序时(不论是C语言,还是shell脚本),vim可帮你直接进行“程序调试(debug)”。

    如果在文字模式下,输入alias时,出现这样的画面:

    [root@linux ~]# alias

    alias vi='vim'

    这表示使用vi这个命令时,其实就是执行vim。如果没有这一行,那么就必须要使用vim文件名来启动vim。vim的一般用法与vi完全一样,没有不同。下面我们来看看vim的画面是什么样的。假设要编辑 /etc/man.config,则输入“vim /etc/man.config”。

    #

    # Generated automatically from man.conf.in by the

    # configure script.

    #

    # man.conf from man-1.5p

    #

    # For more information about this file, see the man pages man(1)

    # and man.conf(5).

    "man.config" 138L, 4506C                               1,1          Top

    这是vim画面的一部分,它有几个特点:

    ·   最下面一行说明这个文件的特点,包括138行,共4506字符。

    ·   1,1表示当前光标在第一行的第一个字符上。可以看到第一行有个光标。

    ·   Top表示,这个画面是整个文件的最上方。

    至少应该就有这些信息。在移动光标时,1,1的光标定位也会跟着变动,很方便。下面我们就来介绍其他vim的用法。

    10.3.1  块选择(Visual Block)

    刚刚提到的简单的vi操作过程中,几乎都是以行为单位操作。那么,如果想要解决一个块范围的问题呢?举例来说,像下面这种格式的文件:

    192.168.1.1    host1.class.net

    192.168.1.2    host2.class.net

    192.168.1.3    host3.class.net

    192.168.1.4    host4.class.net

    .....中间省略......

    我将这个文件放到http://linux.vbird.org/linux_basic/0310vi/hosts中,你可以下载来看一看。如果想复制前面的IP地址部分,后面的主机名称部分不复制,怎么办?这个时候就需要使用块选择(Visual Block)的功能。当按下v键或者V键或者 [Ctrl]+v键时,光标移动过的地方就会开始反白,这3个按键的意义参见表10-2。

    表10-2                             块选择的按键意义

    按键

    块选择的按键意义

    v

    字符选择,会将光标经过的地方反白选择

    V

    行选择,会将光标经过的行反白选择

    [Ctrl]+v

    块选择,可以用长方形的方式选择数据

    y

    复制反白的地方

    d

    将反白的地方删除掉

    我们以上面的IP地址对应主机名称为例,如果想复制IP地址的话,而且仅想要前4行,那么可以按如下方式进行:

    ·   将光标移到第一行的第一个字符(1G)。

    ·   按下 [Ctrl]+v键(按着 [ctrl]键 不放,再按下v键)。

    ·   移动方向键,向下向右移动数格,让整个反白区域覆盖191.168.1.1到192.168.1.4。

    ·   按下y复制(此时反白会自动不见)。

    ·   移动到任何想要插入的区域,按下p就可以插入刚刚复制的块内容。举例来说,移动到第1行的第13个字符处按下小写的p,看看会怎样?

    这个块选择在格式整齐的文件中,就会很有用。尤其是我们想要大量复制其中一个块,而不是整行复制的场合中,会非常有用。

    10.3.2  多文件编辑

    假设要将hosts内的IP地址复制到 /etc/hosts文件,该如何编辑呢?我们知道,在vi内可以使用 :r filename来读入某个文件的内容,不过,这样毕竟是将整个文件读入。如果只是想将部分内容读入时,多文件同时编辑就很有用了。我们可以选择将vim后面接多个文件来同时打开它们。相关的按键参见表10-3。

    表10-3                          多文件编辑的按键

    按键

    意义

    :n

    编辑下一个文件

    :N

    编辑上一个文件

    :files

    列出当前vim打开的所有文件

    这个功能也很不错。现在可以做一下练习。假设要将刚才笔者提供的hosts内的IP地址复制到 /etc/hosts文件内,可以这样做:

    [root@linux ~]# vi hosts /etc/hosts

    # 在这个文件中利用上一小节提到的块选择,按下 [ctrl]+v键来进行块选择,并复制。

    # 然后按下 :n在命令行的地方输入这些,就会转到下一个文件,这个时候,

    # 就可以按下p,将刚刚复制的IP地址贴到文件中。如果按下 :files,则:

    ---------------------------------------------------------------------------

    192.168.1.4    host4.class.net

    192.168.1.5    host5.class.net

    ~

    ~

    :files

      1 %a   "hosts"                        line 1

      2 #    "/etc/hosts"                   line 1

    Hit ENTER or type command to continue

    ---------------------------------------------------------------------------

    # 看到了吗?在命令行输入 :files就可以显示当前所编辑的文件信息。

    由此可知,利用多文件编辑的功能,可以很快速地将需要的数据复制到正确的文件。当然,这个功能也可以利用窗口界面来实现。

    10.3.3  多窗口功能

    想象两个情况:

    ·   有一个文件非常大,查看到后面的数据时,想要“对照”看前面的数据,是否需要使用 [Ctrl]+f与 [Ctrl]+b键来前后地查看?

    ·   有两个需要对照着看的文件,不想使用前一小节提到的多文件编辑功能。

    这样的情况下,可以使用vim打开两个窗口。在命令行模式下输入:“:sp {filename}”,filename可有可无,如果想在新窗口启动另一个文件,就加入文件名,否则仅输入 :sp,在两个窗口间会出现同一个文件。例如笔者使用vim hosts后,再使用 :sp /etc/hosts,会出现如下内容:

    # Do not remove the following line, or various programs

    # that require network functionality will fail.

    127.0.0.1       localhost.localdomain localhost

    192.168.1.11    vbird-work

    192.168.1.2     vbird-server

    ~

    /etc/hosts                   5,1            All

    192.168.1.1    host1.class.net

    192.168.1.2    host2.class.net

    192.168.1.3    host3.class.net

    192.168.1.4    host4.class.net

    192.168.1.5    host5.class.net

    hosts                        1,1            Top

    两个文件同时在一个屏幕上显示。您还可以利用“[Ctrl]+w+j”键及“[Ctrl]+w+k”键在两个窗口之间切换,这样,复制、查看等操作就变得很简单。命令的功能有很多,您只要记住表10-4给出的这些即可。

    表10-4                        多窗口情况下的按键功能

    按键

    功能

    :sp [filename]

    打开一个新窗口,如果加filename,表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容(同步显示)

    [Ctrl]+wj

    按键的按法是:先按下 [Ctrl] 不放,再按下w后放开所有的按键,然后再按下j,则光标可移到下方的窗口

    [Ctrl]+wk

    同上,不过光标移动到上面的窗口

    [Ctrl]+wq

    其实就是 :q结束离开。举例来说,如果想结束下方的窗口,利用 [Ctrl]+wj键移到下方窗口后,按下 :q即可离开,也可以按下 [Ctrl]+wq键

    10.3.4  vim环境设置

    如果以vim软件来搜索一个文件内部的某个字符串时,这个字符串会被反白,而下次再次以vim编辑这个文件时,该搜索的字符串还是存在。当编辑其他文件时,如果其他文件中也存在这个字符串,也会主动反白显示。另外,当重复编辑同一个文件时,第二次进入该文件,光标竟然就在上次离开的那一行上,非常方便。但是,怎么会这样呢?

    这是因为vim会主动将曾经做过的行为记录下来,以便下次可以轻松工作。那个记录动作的文件就是:~/.viminfo。每个人的家目录都应该有这个文件。这个文件是自动产生的,不必自行建立。在vim里所做过的操作,可以在这个文件内部查询到。

    由于在某些版本的vim中,利用搜索时,它并不会反白显示,这些版本则会主动地帮你进行缩排(就是当按下Enter键编辑新行时,光标不会在行首,而是在与上一行的第一个非空格符处对齐)。其实这些都可以进行设置,即进行vim的环境设置。vim的环境设置参数有很多,如果想知道当前设置值,可以在一般模式时输入:“:set all”来查看,不过,设置项目实在太多了。所以,笔者在表10-5中,列出一些平时比较常用的简单的设置值,以供参考。

    表10-5                          vim的环境设置参数

    参数

    说明

    :set nu

    设置行号。取消的话,就是 :set nonu

    :set hlsearch

    设置是否将搜索的字符串反白。默认值是hlsearch,如果不想反白,就用 :set nohlsearch

    :set autoindent

    是否自动缩排。autoindent是自动缩排,不想缩排就用 :set noautoindent

    :set backup

    是否自动存储备份文件。一般用nobackup,如果设置backup,当你更改任何一个文件时,则源文件会被另存为一个名为filename~的文件。举例来说,我们编辑hosts,设置 :set backup,那么当更改hosts时,在同一目录下,就会产生hosts~ 文件名的文件,记录原始的hosts文件内容

    :set ruler

    设置是否在右下角显示状态行说明

    :set showmode

    是否在左下角的状态行显示 --INSERT--

    :set backspace=(012)

    一般来说,如果按下i进入编辑模式后,可以利用退格键(backspace)来删除任意字符。但是,某些版本则不许这样做。此时,就可以通过backspace来设置。当backspace为2时,可以删除任意值;0或1时,仅可删除刚刚输入的字符,而无法删除原来就已经存在的文字

    :set all

    显示当前所有的环境参数设置值

    :syntax (off|on)

    是否根据程序相关语法显示不同的颜色。举例来说,在编辑一个纯文本文件时,如果是以 # 开始,那么该行就会变成蓝色。如果你懂得写程序,那么这个 :syntax on还会主动帮你调试。但是,如果仅是编写纯文本文件,要避免颜色对屏幕产生的干扰,则可以取消这个设置 :syntax off

    总之,这些设置值很有用。但是,是否每次使用vim都要重新设置一次各个参数值呢?没有必要。我们可以通过设置文件来直接规定习惯的vim操作环境。vim设置值一般是放在 /etc/vimrc文件中,不过,建议不要修改它。可以修改 ~/.vimrc文件(默认不存在,请自行手动建立),写入所希望的设置值。举例来说,可以是这样的一个文件:

    [root@linux ~]# vi ~/.vimrc

    :set hlsearch

    :set backspace=2

    :set autoindent

    :set rulet

    :set showmode

    :syntax on

    这样,当下次重新以vim编辑某个文件时,该文件的默认环境设置就是上面那样的,这样可以方便操作。请多使用vim的环境设置功能

     
    Links: Resources in CSDN, http://book.csdn.net/

     

    vi使用方法       

            分类:            Linux637人阅读评论(0)收藏举报
    开始接触linux了,文本编辑器是最基础的部分,听不少人说vi功能强大,虽然入门有些费事,但使用熟练后绝对方便,因此下决心学习vi了,下面是从网上找的一个vi入门文章,以后不懂就来看看了:)
    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。
    1、vi的基本概念   基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
    1) 命令行模式command mode)
      控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
    2) 插入模式(Insert mode)
      只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
    3) 底行模式(last line mode)
      将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
    不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。
    2、vi的基本操作 a) 进入vi
      在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
       $ vi myfile
      不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧!
    b) 切换至插入模式(Insert mode)编辑文件
      在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
    c) Insert 的切换
      您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。
    d) 退出vi及保存文件
      在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:
    : w filename (输入 「w filename」将文章以指定的文件名filename保存)
    : wq (输入「wq」,存盘并退出vi)
    : q! (输入q!, 不存盘强制退出vi)
    3、命令行模式(command mode)功能键 1). 插入模式
      按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
      按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
      按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
    2). 从插入模式切换为命令行模式
      按「ESC」键。
    3). 移动光标
      vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
      按「ctrl」+「b」:屏幕往“后”移动一页。
      按「ctrl」+「f」:屏幕往“前”移动一页。
      按「ctrl」+「u」:屏幕往“后”移动半页。
      按「ctrl」+「d」:屏幕往“前”移动半页。
      按数字「0」:移到文章的开头。
      按「G」:移动到文章的最后。
      按「$」:移动到光标所在行的“行尾”。
      按「^」:移动到光标所在行的“行首”
      按「w」:光标跳到下个字的开头
      按「e」:光标跳到下个字的字尾
      按「b」:光标回到上个字的开头
      按「#l」:光标移到该行的第#个位置,如:5l,56l。
    4). 删除文字
      「x」:每按一次,删除光标所在位置的“后面”一个字符。
      「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。
      「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
      「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。
      「dd」:删除光标所在行。
      「#dd」:从光标所在行开始删除#行
    5). 复制
      「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
      「#yw」:复制#个字到缓冲区
      「yy」:复制光标所在行到缓冲区。
      「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
      「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
    6). 替换
      「r」:替换光标所在处的字符。
      「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
    7). 回复上一次操作
      「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
    8). 更改
      「cw」:更改光标所在处的字到字尾处
      「c#w」:例如,「c3w」表示更改3个字
    9). 跳至指定的行
      「ctrl」+「g」列出光标所在行的行号。
      「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
    4、Last line mode下命令简介   在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。
    A) 列出行号
     「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。
    B) 跳到文件中的某一行
     「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
    C) 查找字符
     「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
     「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
    D) 保存文件
     「w」:在冒号输入字母「w」就可以将文件保存起来。
    E) 离开vi
     「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。
     「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
    5、vi命令列表
    1、下表列出命令模式下的一些键的功能:
    h 左移光标一个字符
    l 右移光标一个字符
    k 光标上移一行
    j 光标下移一行
    ^ 光标移动至行首
    0 数字“0”,光标移至文章的开头
    G 光标移至文章的最后
    $ 光标移动至行尾
    Ctrl+f 向前翻屏
    Ctrl+b 向后翻屏
    Ctrl+d 向前翻半屏
    Ctrl+u 向后翻半屏
    i 在光标位置前插入字符
    a 在光标所在位置的后一个字符开始增加
    o 插入新的一行,从行首开始输入
    ESC 从输入状态退至命令状态
    x 删除光标后面的字符
    #x 删除光标后的#个字符
    X (大写X),删除光标前面的字符
    #X 删除光标前面的#个字符
    dd 删除光标所在的行
    #dd 删除从光标所在行数的#行
    yw 复制光标所在位置的一个字
    #yw 复制光标所在位置的#个字
    yy 复制光标所在位置的一行
    #yy 复制从光标所在行数的#行
    p 粘贴
    u 取消操作
    cw 更改光标所在位置的一个字
    #cw 更改光标所在位置的#个字
    2、下表列出行命令模式下的一些指令 w filename 储存正在编辑的文件为filename
    wq filename 储存正在编辑的文件为filename,并退出vi
    q! 放弃所有修改,退出vi
    set nu 显示行号
    /或? 查找,在/后输入要查找的内容
    n 与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。
    对于第一次用vi,有几点注意要提醒一下: 1、用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。 2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。 3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:)
  • 相关阅读:
    Steal 偷天换日 题解(From luoguBlog)
    Hibernat之关系的处理多对多
    Hibernat之关系的处理一对一处理
    Hibernat之关系的处理一对多/多对一
    Hibernate 一对多注解 mappedby 作用
    hibernate之使用Annotation注解搭建项目
    暑假学习第八周
    暑假学习第七周
    java学习第六周
    暑假学习第五周
  • 原文地址:https://www.cnblogs.com/qmfsun/p/3138280.html
Copyright © 2011-2022 走看看