• vi-11


    vi编辑器linux命令大全

    作者:xiaoru  出处:本站整理  发布时间:2013-04-29 13:20:23
    -
        vi就是linux命令行下的最著名的编辑器之一,Vim常被称作“程序员的编辑器”,其功能如此强大以致许多人认为它就是个完整的IDE。不过现 在实际使用的都是vim,它是vi的改进版本,所以现在的vi基本上就是vim了。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛 使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。

    1、简介

    在UNIX系统中,创建和修改配置文件、shell脚本、初始化文件、编写程序都离不开VI。

    1      vi[1]属于两个主要的UNIX规范:POSIX和单一UNIX规范。

    2      vi编辑器由Bill Joy于1976年创建。

    3      vi是一种面向屏幕的编辑器。

    4      vi来源于另一个编辑器ex。

    5      vim是vi的增强版。

    2、使用帮助

    学习vi,学会使用联机手册或帮助命令是非常重要的。Unix有两个最重要的文档资料系统:Unix手册和Info(GNU项目的官方文档资料系统)。

    常用命令:

    1      man vi    

    2      vi --help

    3      info vi

    对于较长的说明页,可使用分页程序分页显示。常用的分页程序有:less、more、pg。例如:man cp |  less

    查找说明书页的其它方法(基于web):

    1      使用google搜索:(一定要确保包含双引号)

    ○    “man vi ”

    ○    “man pages” vi

       2  另外一种基于web的说明书页的方法是xman,xman是一个基于GUI的程序,它充当说明书页浏览器。在命令行启动xman:xman&

    Vi的帮助命令::help

    3、模式和命令

    3.1 输入模式和命令模式

    命令模式[2](command mode):所键入的键都被解释成命令。

    输入模式(input mode):键入的任何内容都直接插入到编辑缓冲区中。

    当离开输入模式时,使用Esc键切换到命令模式。

    了解所处模式的方法:

           :set showmode

    3.2 vi和ex命令

    vi和ex是同一个程序的两种不同的表现形式。也就是说可以同时使用vi和ex命令。

    vi:

    ①大多数vi命令都是单字母双字母的表现形式。

    ②vi键入时命令不回显。

    ex:

    ①ex命令比vi命令长。

    ②所有的ex命令都以一个:(冒号)开头。键入:后,vi就将光标移动到命令行上(屏幕最底部)。

    ③ex命令的每个字符都将回显。

    ④ex命令结束,必须按下键盘。

    2 页 启动与编辑vi-vim

    4、启动与编辑vi-vim

    4.1编辑一个文件

    语法:vi 【-rR】 【file……】

    常用命令:

    1      vi file                 启动vi,编辑指定的文件

    2      vi -R file             以只读模式启动vi

    3      view file              以只读模式启动vi (vi -R file等同于view file)

    4      vim file                   启动vim,编辑指定的文件

    5      vim -C      file          以兼容模式启动vi

    4.2编辑多个文件

    语法:vi a.txt b.txt c.txt

    切换文件: :next

    4.3 编辑技巧

    编辑技巧:

    1      vi +[num] file          打开文件,并将光标置于第n行首

    2      vi + file                   打开文件,并将光标置于最后一行首

    3      vi +/pattern file       打开文件,并将光标置于第一个与pattern匹配的字符串

    4      vi +?pattern file       编辑工作从匹配pattern的最后一行开始

    5      vi -r file                 (-r 即recover,恢复)

    4.4 写入文件

    常用命令:

    1      :w                      将数据写入到原始文件

    2      :w file                     将数据写入到指定文件

    3      :w >> file                将数据追加到指定文件

    4      :r [filename]            在编辑的数据中,读取另一个档案的数据,亦将档案内容加到游标所在行的后面

    5      :n1,n2 w [filename]      将n1到n2的内容存储成另一个档案。

    4.5 退出文件、停止vi

    常用命令:

    1      :q             退出文件

    2      :q!            不保存数据,强制退出

    3      :wq           保存退出文件

    4      shift+ZZ    停止vi

    5      ZQ            无条件退出

    4.6 vi与vim命令行常用选项

    -b                     以二进制模式编辑文件

    -c command      启动后立即运行给定的ex命令

    -d                     以diff模式运行

    -o[num]            启动vim时打开num个窗口

    -O[num]            启动vim时打开num个水平排列

    -r                      恢复模式

    -R                     于只读模式中编辑文件

    -t tag                编辑包含tag的文件,并将光标置于tag位置

    -T type              设置可选终端类型

    3 页 插入、移动和跳转

    5 插入

    输入模式:

    操作键 说明
    i 在当前光标位置前插入数据
    a 在当前光标位置后插入数据
    I 在当前行开头处插入数据
    A 在当前行末尾处插入数据
    o 在当前行下面出入一行
    O 在当前行上面插入一行

    6、移动和跳转

    6.1获取光标当前位置

    获取方式:^G

    6.2 缓冲区移动

    操作键 说明
    ^F 向下移动一屏
    ^B 向上移动一屏
    n^F 向下移动n屏
    n^B 向上移动n屏
    ^D 向下移动半屏
    ^U 向上移动半屏
    n^D 向下移动n行
    n^U 向上移动n行
    ^E 向屏幕顶端多滚动一行
    ^L 向屏幕底端多滚动一行
    zENTER 将光标所在的行移动到屏幕顶端
    z. 将光标所在的行移动到屏幕中间
    z- 将光标所在的行移动到屏幕底端

    6.3 光标移动

    操作键 说明
    h      将光标向左移动一个位置
    j    将光标向下移动一个位置
    k        将光标向上移动一个位置
    l      将光标向右移动一个位置
    - 将光标移动到上一行的开头
    +    将光标移动到下一行的开头
    ^ 将光标移动到当前行的第一个非空格/制表符的字符上
    数字0 将光标移动到当前行的开始
    $ 将光标移动到当前行的末尾
    w W 将光标移动到下一个单词的词首(大写字母,略过空格)
    e E 将光标移动到下一个单词的词尾(大写字母,略过空格)
    b B 将光标移动到上一个单词的词首(大写字母,略过空格)
    向前移动到下一个句子
    向后移动到上一个句子
    { 向前移动到下一个段落
    } 向后移动到上一个段落
    H 将光标移动到屏幕顶部
    M 将光标移动到屏幕中间
    L 将光标移动到屏幕的最后一行
    fcharacter 单字符搜索移动(f为搜索命令,character为要搜索的字符)
    Fcharacter 单字符左方向搜索移动
    % 已匹配一个括号为目的的移动

    说明:

    1.命令计数:在移动命令前加数字,如3j,可实现向下移动三行。

       语法:ncommand   (n为数字,command为移动命令)

    2. 规律:一个命令的大写字母形式会做同样的事情,但是方向相反。

    6.4 行号跳转

    显示行号:     :set number

    关闭行号:     :set nonumber

    命令 说明
    nG 、   :n 跳转到第n行
    1G 、 gg  、 :1 跳转到编辑缓冲区的第一行
    G   、  :$ 跳转到编辑缓冲区最后一行

    附加:

    另一个移动到某行的办法是:在命令 % 前加一个命令计数,如 50% 会把光标定位在文件中间。

    6.5 跳转到前一位置

    返回前一位置:

    a)      ``(两个反引号)

    b)      ‘’(两个单引号)

    6.6 使用名称标示任意行,进行跳转

               用不可见的名称标识任意行,当需要时使用此名称跳转到这一行。

            可以键入m标示这一行,后跟一个字母,这个字母就是这一行的名称。例如:用”b“标示这一行,可以键入mb。为了跳转到这一行,可以键入一个反引号或单引号,后面跟这一行的名称。如:`b  或 ’b

    4 页 搜索及文本改动

    7 搜索

    7.1搜索常用命令

    向前搜索: /

    向后搜索: ?

    常用命令:

    1      /           向前重复搜索

    2      ?             向后重复搜索

    3      /regex       向前搜索指定的正则表达式

    4      ?regex     向后搜索指定的正则表达式

    5      n              重复上一条/或?命令,搜索方向相同

    6      N              重复上一条/或?命令,搜索方向相反

    附:

          命令历史记录:用上下箭头来查找用过的搜索

    7.2查找字符串便捷方式

    *命令 : 将光标定位于字符串,按下*键,vi将会取当前光标所在的字符串并将它作用目标字符串进行搜索。

    #命令: 与*相反。

    %:搜索与当前花括号、圆括号、方括号成对的符号。

    7.3 查找整个字符串

    方法:

    使用<  >进行匹配。

    例子:/

    8 文本改动

    8.1替换之vi命令

    r:精确替换一个字符(不进入输入模式)。

    R:替换多个字符(以覆盖方式替换)。(先将光标移动到希望开始替换的位置,然后输入R。切换到输入模式,随后键入的每个字符都将替换当前行上的一个字符。)

    s:允许使用多个字符替换一个单个的字符(以插入方式替换)。

    C:允许替换从当前光标位置到本行末尾的所有字符。

    S cc:以插入方式替换当前整行。

    cmove:以插入方式从当前光标处替换到move所给出的位置处。

    8.2替换之ex命令_常用方法

    ex命令:

    语法::s/pattern/replace/   其中,pattern是替换的模式,replace是替换的文本。

    使用方法总结:

    1      :s/pattern/replace/           替换当前行

    2      s/pattern/replace/g              替换当前行所有

    3      :lines/pattern/raplace/          替换指定行

    4      :line,lines/pattern/replace/     替换指定范围内的行

    5      :%s/pattern/replace/            替换所有行

    6      :.,$s/pattern/replace/g          从当前行末尾至编辑缓冲区的末尾进行相同的替换

    7      :line,.s/pattern/replace/g       从编辑缓冲区的指定位置到当前行进行相同的替换

    说明 :

    1      所有的ex命令都以:开头。

    2      :s只替换当前行上该模式的第一个匹配项。

    3      为了替换所有匹配项,需在该命令的末尾键入字母g。例如::s/UNIX/linux/g

    4      替换前进行确认,可在命令末尾添加c。例如::s/UNIX/linux/cg

    5      .点号代表当前行。$代表缓冲区最后一行。%代表编辑缓冲区内所有的行。

    8.3 交换字符

    交换两个字符的位置:   xp

    交换两行的位置:ddp 

    调换两个单词(光标开始处于第一个单词的左边):deep

    5 页 删除和复制

    9、删除

    9.1 删除命令

    vi命令 操作键
    x 删除当前光标处的字符
    X 删除光标左边的字符
    D 删除从当前光标到本行末尾的字符
    J 删除两行之间的换行符 (亦可用于合并两行)
    dmove 删除从当前光标到move所给位置的字符
    dd 删除当前行
    ex命令  
    :lined 删除指定行
    :line,lined 删除指定范围内的行

    9.2 常用的删除组合命令

    说明:操作符命令+位移命令

    1      nx                  删除多个字符(n为删除的字符个数)      

    2      dw                  删除1个单词

    3      d10w               删除10个单词

    4      d10W              删除10个单词,忽略标点符号。

    5      db                   向后删除一个单词

    6      d2)                删除两个句子

    7      d5}                  删除5个段落

    8      dG 或 :.,$d        删除当前行到编辑缓冲区末尾的所有行

    9      dgg 或 d1G 或:1,.d       删除当前行到编辑缓冲区开头的所有行

    10    :1,$d 或 :%f                删除整个编辑缓冲区

    11    d/word                       删除从光标所在位置到单词word的所有文本

    12    .,/word/d         删除从光标所在位置到单词word的所有文本

    13    df x                 删除至当前行中x所在的位置

    14    d^                   删除至该行的开始处

    9.3插入模式中删除操作

    ^U                         删除当前行

    ^H                         删除前一个字符

    ^W                        删除前一个词

    9.4 撤销或重复改变

    vi命令:

    1      u                     撤销上一命令对编辑缓冲区的修改

    2      U                     恢复当前行(即一次撤销对当前行的全部操作)

    3      .点号                重复上一命令对编辑缓冲区的修改

    9.5 恢复删除

    语法:"1p(P)

    说明:

    1      1为缓冲区的编号。

    2      p在当前行的下面插入,P在当前行的上面插入。

    9.6 复制上一次删除

    命令 说明
    p 复制上一次删除的内容,插入到光标的后面/下面
    P 复制上一次删除的内容,插入到光标的前面/上面

    10 复制

    10.1 接出(复制单词、句子、段落)

    当在不删除文本的情况下将文本复制到无名缓冲区时,称为接出(yank)。(因此将命令命名为y、yy、Y)。

    步骤:

    1      使用y、yy、Y将文本由编辑缓冲区复制到无名缓冲区中,但不删除原始文本。

    2      将光标移动到希望插入文本的位置。

    3      使用P或p命令执行插入。

    常用命令 操作键
    yw 接出一个单词
    y10w 接出10个单词
    y10W 接出10个单词,忽略标点符号
    yb 向后接出一个单词
    y2) 接出两个句子
    y2} 接出5个段落
    yy 接出一行
    10yy 接出10行
    y$ 接出从当前字符到本行末尾的的文本
    y0 接出从当前字符到这一行开头之间的文本

    10.2 复制与移动行

    语法:

           :x,ycoz

           :x,ymz

    说明:

    1      x,y,z都是行号。x,y是源行,z是目标行号。

    2      源行x,y被复制或移动,插入到z行的下面。

    3      :m删除原始行,:co不删除原始行。

    例子:

    1      :2co4        复制第2行,插入到第4行下面

    2      :2,4co8            复制第2行到第4行,插入到第8行下面

    3      :2m4        移动第2行,插入到第4行下面

    4      :2,4m8             移动第2行到第4行,插入到第8行下面。

    6 页  使用缩写、命令补全与文本补全

    11 使用缩写

    要为经常使用的单词或表达式创建缩写,可使用:ab命令。

    1      创建缩写,语法::ab [ short long ]

    2      删除缩写,语法: :una short

    12 命令补全与文本补全

    命令补全:Tab

    关键字补全:^N ^P

    13 shell命令

    14.1 执行shell命令

    1      :!command      暂停vi,执行制定的shell命令

    2      :!! pause vi      执行上一条shell命令

    3      :sh              暂停vi,启动一个新的shell

    4      :!csh           暂停vi,启动一个新的c-shell

    14.2 使用shell命令处理数据

    1      n!! command          对n行数据执行command

    2      !move command    对当前光标至move所指定的位置的数据执行command

    3      !move fmt              格式化当前光标到move所指定的行

    7 页  显示与设置选项和初始化与配置文件

    15、显示与设置选项

    15.1 显示选项

    1      语法:                    :set [option]

    2      显示所有选项的值: :set all

    3      显示一个选项的值: :set option?

    15.2 设置选项

    语法::set [no]option..... :set option[=value]...

    15.3常用设置命令

    设置行号显示与否:             简写 :set nu  / :set no nu

    设置自动缩进:            简写 :set ai / :set no ai

    设置缩进宽度:            简写 :set sw=4

    设置大小写忽略与否:   简写 :set ic / :set no ic

    16、初始化文件与配置文件

    16.1初始化文件

    vi的初始化文件:.exrc

    vim的初始化文件:vimrc

    16.2配置文件

    linux配置文件:             /usr/share/vim/vimrc

    查找Windows配置文件:      scriptnames

    在UNIX系统中,创建和修改配置文件、shell脚本、初始化文件、编写程序都离不开VI。
     1.
    vi#
    
     2.
    vi编辑器由Bill Joy于1976年创建。
    
     3.
    vi是一种面向屏幕的编辑器。
    
     4.
    vi来源于另一个编辑器ex。
    
     5.
    vim是vi的增强版。
    
     
    2 使用帮助
     
      学习vi,学会使用联机手册或帮助命令是非常重要的。Unix有两个最重要的文档资料系统:Unix手册和Info(GNU项目的官方文档资料系统)。
     
      常用命令:
     1.
    man vi
    
     2.
    vi --help
    
     3.
    info vi
    
     
      对于较长的说明页,可使用分页程序分页显示。常用的分页程序有:less、more、pg。例如:man cp | less
     
      查找说明书页的其它方法(基于web):
     1.
    使用google搜索:(一定要确保包含双引号)
    
     •
    “man vi ”
    
     •
    “man pages” vi
    
     
          2. 另外一种基于web的说明书页的方法是xman,xman是一个基于GUI的程序,它充当说明书页浏览器。在命令行启动xman:xman&。
     
      Vi的帮助命令::help
     
    3 模式和命令
     
    3.1 输入模式和命令模式
     
      命令模式#(command mode):所键入的键都被解释成命令。
     
      输入模式(input mode):键入的任何内容都直接插入到编辑缓冲区中。
     
      当离开输入模式时,使用Esc键切换到命令模式。
     
      了解所处模式的方法:
     
      :set showmode
     
    3.2 vi和ex命令
     
      vi和ex是同一个程序的两种不同的表现形式。也就是说可以同时使用vi和ex命令。
     
      vi:
     
      ①大多数vi命令都是单字母或双字母的表现形式。
     
      ②vi键入时命令不回显。
     
      ex
     
      ①ex命令比vi命令长。
     
      ②所有的ex命令都以一个:(冒号)开头。键入:后,vi就将光标移动到命令行上(屏幕最底部)。
     
      ③ex命令的每个字符都将回显。
     
      ④ex命令结束,必须按下<Return>键盘。
     
    4 启动与编辑vi-vim
     
    4.1编辑一个文件
     
      语法:vi 【-rR】 【file……】
     
      常用命令:
     1.
    vi file启动vi,编辑指定的文件
    
     2.
    vi -R file以只读模式启动vi
    
     3.
    view file以只读模式启动vi (vi -R file等同于view file)
    
     4.
    vim file启动vim,编辑指定的文件
    
     5.
    vim -Cfile以兼容模式启动vi
    
     
    4.2编辑多个文件
     
      语法:vi a.txt b.txt c.txt
     
      切换文件: :next
     
    5 系统意外时数据的恢复
     
      在编辑文件的过程中,如果遭遇系统意外,vi通常可以将数据恢复出来。
     
      命令:vi -r file(-r 即recover,恢复)
     
      如:vi -r test.txt
     
    6 搜索
     
    6.1搜索常用命令
     
      向前搜索: /
     
      向后搜索: ?
     
      常用命令:
     1.
    /向前重复搜索
    
     2.
    ?向后重复搜索
    
     3.
    /regex向前搜索指定的正则表达式
    
     4.
    ?regex向后搜索指定的正则表达式
    
     5.
    n重复上一条/或?命令,搜索方向相同
    
     6.
    N重复上一条/或?命令,搜索方向相反
    
     
      附:
     
           命令历史记录:用上下箭头来查找用过的搜索
     
    6.2查找字符串便捷方式
     
      *命令 : 将光标定位于字符串,按下*键,vi将会取当前光标所在的字符串并将它作用目标字符串进行搜索。
     
      #命令: 与*相反。
     
    6.3 查找整个字符串
     
      方法:
     
      使用<  >进行匹配。
     
      例子:/<word>
     
    7 移动和跳转
     
    7.1获取光标当前位置
     
      获取方式:^G
     
    7.2 缓冲区移动
    
    
    
     
    
    
    
    操作键
     
    
    说明
     
    
    
    
    ^F
     
    
    向下移动一屏
     
    
    
    
    ^B
     
    
    向上移动一屏
     
    
    
    
    n^F
     
    
    向下移动n屏
     
    
    
    
    n^B
     
    
    向上移动n屏
     
    
    
    
    ^D
     
    
    向下移动半屏
     
    
    
    
    ^U
     
    
    向上移动半屏
     
    
    
    
    n^D
     
    
    向下移动n行
     
    
    
    
    n^U
     
    
    向上移动n行
     
    
    
    
    
    7.3 光标移动
    
    
    
     
    
    
    
    操作键
     
    
    说明
     
    
    
    
    h       <Left>
     
    
    将光标向左移动一个位置
     
    
    
    
    j     <Down>
     
    
    将光标向下移动一个位置
     
    
    
    
    k         <Up>
     
    
    将光标向上移动一个位置
     
    
    
    
    l       <Right>
     
    
    将光标向右移动一个位置
     
    
    
    
    -
     
    
    将光标移动到上一行的开头
     
    
    
    
    +     <Return>
     
    
    将光标移动到下一行的开头
     
    
    
    
    ^
     
    
    将光标移动到当前行的第一个非空格/制表符的字符上
     
    
    
    
    数字0
     
    
    将光标移动到当前行的开始
     
    
    
    
    $
     
    
    将光标移动到当前行的末尾
     
    
    
    
    w W
     
    
    将光标移动到下一个单词的词首(大写字母,略过空格)
     
    
    
    
    e E
     
    
    将光标移动到下一个单词的词尾(大写字母,略过空格)
     
    
    
    
    b B
     
    
    将光标移动到上一个单词的词首(大写字母,略过空格)
     
    
    
    
    )
     
    
    向前移动到下一个句子
     
    
    
    
    (
     
    
    向后移动到上一个句子
     
    
    
    
    {
     
    
    向前移动到下一个段落
     
    
    
    
    }
     
    
    向后移动到上一个段落
     
    
    
    
    H
     
    
    将光标移动到屏幕顶部
     
    
    
    
    M
     
    
    将光标移动到屏幕中间
     
    
    
    
    L
     
    
    将光标移动到屏幕的最后一行
     
    
    
    
    fcharacter
     
    
    单字符搜索移动(f为搜索命令,character为要搜索的字符)
     
    
    
    
    Fcharacter
     
    
    单字符左方向搜索移动
     
    
    
    
    %
     
    
    已匹配一个括号为目的的移动
     
    
      说明:
     
      1.命令计数:在移动命令前加数字,如3j,可实现向下移动三行。
     
        语法:ncommand(n为数字,command为移动命令)
     
      2. 规律:一个命令的大写字母形式会做同样的事情,但是方向相反。
     
    7.4 行号跳转
     
      显示行号::set number
     
      关闭行号::set nonumber
    
    
    
     
    
    
    
    命令
     
    
    说明
     
    
    
    
    nG 、   :n
     
    
    跳转到第n行
     
    
    
    
    1G 、 gg  、 :1
     
    
    跳转到编辑缓冲区的第一行
     
    
    
    
    G   、  :$
     
    
    跳转到编辑缓冲区最后一行
     
    
    
    
    
      附加:
     
      另一个移动到某行的办法是:在命令 % 前加一个命令计数,如 50% 会把光标定位在文件中间。
     
    7.5 跳转到前一位置
     
      返回前一位置:
     1.
    ``(两个反引号)
    
     2.
    ‘’(两个单引号)
    
     
    7.6 使用名称标示任意行,进行跳转
     
           用不可见的名称标识任意行,当需要时使用此名称跳转到这一行。
     
      可以键入m标示这一行,后跟一个字母,这个字母就是这一行的名称。例如:用”b“标示这一行,可以键入mb。为了跳转到这一行,可以键入一个反引号或单引号,后面跟这一行的名称。如:`b 或 ’b
     
    8 插入
     
      输入模式:
    
    
    
     
    
    
    
    操作键
     
    
    说明
     
    
    
    
    i
     
    
    在当前光标位置前插入数据
     
    
    
    
    a
     
    
    在当前光标位置后插入数据
     
    
    
    
    I
     
    
    在当前行开头处插入数据
     
    
    
    
    A
     
    
    在当前行末尾处插入数据
     
    
    
    
    o
     
    
    在当前行下面出入一行
     
    
    
    
    O
     
    
    在当前行上面插入一行
     
    
    9 写入与退出
     
    9.1 写入文件
     
      常用命令:
     1.
    :w将数据写入到原始文件
    
     2.
    :w file将数据写入到指定文件
    
     3.
    :w >> file 将数据追加到指定文件
    
     
    9.2 退出文件、停止vi
     
      常用命令:
     1.
    :q退出文件
    
     2.
    :q!不保存数据,强制退出
    
     3.
    :wq保存退出文件
    
     4.
    shift+ZZ停止vi
    
     5.
    ZQ无条件退出
    
     
    10 文本改动
     
    10.1替换之vi命令
     
      r:精确替换一个字符(不进入输入模式)。
     
      R:替换多个字符(以覆盖方式替换)。(先将光标移动到希望开始替换的位置,然后输入R。切换到输入模式,随后键入的每个字符都将替换当前行上的一个字符。)
     
      s:允许使用多个字符替换一个单个的字符(以插入方式替换)。
     
      C:允许替换从当前光标位置到本行末尾的所有字符。
     
      S 或 cc:以插入方式替换当前整行。
     
      cmove:以插入方式从当前光标处替换到move所给出的位置处。
     
    10.2替换之ex命令_常用方法
     
      ex命令:
     
      语法::s/pattern/replace/其中,pattern是替换的模式,replace是替换的文本。
     
      使用方法总结:
     1.
    :s/pattern/replace/替换当前行
    
     2.
    s/pattern/replace/g替换当前行所有
    
     3.
    :lines/pattern/raplace/替换指定行
    
     4.
    :line,lines/pattern/replace/替换指定范围内的行
    
     5.
    :%s/pattern/replace/替换所有行
    
     6.
    :.,$s/pattern/replace/g从当前行末尾至编辑缓冲区的末尾进行相同的替换
    
     7.
    :line,.s/pattern/replace/g 从编辑缓冲区的指定位置到当前行进行相同的替换
    
     
      说明 :
     1.
    所有的ex命令都以:开头。
    
     2.
    :s只替换当前行上该模式的第一个匹配项。
    
     3.
    为了替换所有匹配项,需在该命令的末尾键入字母g。例如::s/UNIX/linux/g
    
     4.
    替换前进行确认,可在命令末尾添加c。例如::s/UNIX/linux/cg
    
     5.
    .点号代表当前行。$代表缓冲区最后一行。%代表编辑缓冲区内所有的行。
    
     
    11 删除
     
    11.1 删除命令
    
    
    
     
    
    
    
    vi命令
     
    
    操作键
     
    
    
    
    x
     
    
    删除当前光标处的字符
     
    
    
    
    X
     
    
    删除光标左边的字符
     
    
    
    
    D
     
    
    删除从当前光标到本行末尾的字符
     
    
    
    
    J
     
    
    删除两行之间的换行符 (亦可用于合并两行)
     
    
    
    
    dmove
     
    
    删除从当前光标到move所给位置的字符
     
    
    
    
    dd
     
    
    删除当前行
     
    
    
    
    ex命令
     
     
    
     
    
    
    :lined
     
    
    删除指定行
     
    
    
    
    :line,lined
     
    
    删除指定范围内的行
     
    
    
    
    
    11.2 常用的删除组合命令
     
      说明:操作符命令+位移命令
     1.
    nx  删除多个字符(n为删除的字符个数)
    
     2.
    dw 删除1个单词
    
     3.
    d10w删除10个单词
    
     4.
    d10W删除10个单词,忽略标点符号。
    
     5.
    db向后删除一个单词
    
     6.
    d2)删除两个句子
    
     7.
    d5}删除5个段落
    
     8.
    dG 或 :.,$d删除当前行到编辑缓冲区末尾的所有行
    
     9.
    dgg 或 d1G 或:1,.d删除当前行到编辑缓冲区开头的所有行
    
     10.
    :1,$d 或 :%f删除整个编辑缓冲区
    
     
    11.3 撤销或重复改变
     
      vi命令:
     1.
    u撤销上一命令对编辑缓冲区的修改
    
     2.
    U恢复当前行(即一次撤销对当前行的全部操作)
    
     3.
    .点号重复上一命令对编辑缓冲区的修改
    
     
    11.4 恢复删除
     
      语法:"1p(P)
     
      说明:
     1.
    1为缓冲区的编号。
    
     2.
    p在当前行的下面插入,P在当前行的上面插入。
    
     
    11.5 复制上一次删除
    
    
    
     
    
    
    
    命令
     
    
    说明
     
    
    
    
    p
     
    
    复制上一次删除的内容,插入到光标的后面/下面
     
    
    
    
    P
     
    
    复制上一次删除的内容,插入到光标的前面/上面
     
    
    
    
    xp
     
    
    调换两个字符
     
    
    
    
    deep
     
    
    调换两个单词(光标开始处于第一个单词的左边)
     
    
    
    
    ddp
     
    
    调换两行
     
    
    12 复制
     
    12.1 接出(复制单词、句子、段落)
     
      当在不删除文本的情况下将文本复制到无名缓冲区时,称为接出(yank)。(因此将命令命名为y、yy、Y)。
     
      步骤:
     •
    使用y、yy、Y将文本由编辑缓冲区复制到无名缓冲区中,但不删除原始文本。
    
     •
    将光标移动到希望插入文本的位置。
    
     
      使用P或p命令执行插入。 
     
    
    
    
    常用命令
     
    
    操作键
     
    
    
    
    yw
     
    
    接出一个单词
     
    
    
    
    y10w
     
    
    接出10个单词
     
    
    
    
    y10W
     
    
    接出10个单词,忽略标点符号
     
    
    
    
    yb
     
    
    向后接出一个单词
     
    
    
    
    y2)
     
    
    接出两个句子
     
    
    
    
    y2}
     
    
    接出5个段落
     
    
    
    
    yy
     
    
    接出一行
     
    
    
    
    10yy
     
    
    接出10行
     
    
    
    
    y$
     
    
    接出从当前字符到本行末尾的的文本
     
    
    
    
    y0
     
    
    接出从当前字符到这一行开头之间的文本
     
    
    12.2 复制与移动行
     
      语法:
     
      :x,ycoz
     
      :x,ymz
     
      说明:
     1.
    x,y,z都是行号。x,y是源行,z是目标行号。
    
     2.
    源行x,y被复制或移动,插入到z行的下面。
    
     3.
    :m删除原始行,:co不删除原始行。
    
     
      例子:
     1.
    :2co4复制第2行,插入到第4行下面
    
     2.
    :2,4co8复制第2行到第4行,插入到第8行下面
    
     3.
    :2m4移动第2行,插入到第4行下面
    
     4.
    :2,4m8移动第2行到第4行,插入到第8行下面。
    
     
    13 使用缩写
     
      要为经常使用的单词或表达式创建缩写,可使用:ab命令。
     1.
    创建缩写,语法::ab [ short long ]
    
     2.
    删除缩写,语法: :una short
    
     
    14 shell命令
     
    14.1 执行shell命令
     1.
    :!command暂停vi,执行制定的shell命令
    
     2.
    :!! pause vi执行上一条shell命令
    
     3.
    :sh暂停vi,启动一个新的shell
    
     4.
    :!csh暂停vi,启动一个新的c-shell
    
     
    14.2 使用shell命令处理数据
     1.
    n!! command对n行数据执行command
    
     2.
    !move command对当前光标至move所指定的位置的数据执行command
    
     3.
    !move fmt格式化当前光标到move所指定的行
    
     
    15  显示与设置选项
     
    15.1 显示选项
     1.
    语法: :set [option]
    
     2.
    显示所有选项的值: :set all
    
     3.
    显示一个选项的值: :set option?
    
     
    15.2 设置选项
     
      语法::set [no]option.....:set option[=value]...
     
    15.3常用设置命令
     1.
    设置行号显示与否:简写 :set nu  / :set no nu
    
     2.
    设置自动缩进:简写 :set ai / :set no ai
    
     3.
    设置缩进宽度:简写 :set sw=4
    
     4.
    设置大小写忽略与否:简写 :set ic / :set no ic
    
     
    16 初始化文件与配置文件
     
    16.1初始化文件
     
      vi的初始化文件:.exrc
     
      vim的初始化文件:vimrc
     
    16.2配置文件
     
      linux配置文件:/usr/share/vim/vimrc
     
      查找Windows配置文件: :scriptnames
     
    17 vi术语
     
      编辑缓冲区(editing buffer ):存放数据的存储区域。
     
      编号缓冲区(numbered buffer):每当删除一行或多行文本时,vi都将删除内容保存在一个特殊的存储区内,这个存储区称为编号缓冲区。vi有9个这样的缓冲区。
     
      无名缓冲区(unnamed buffer):vi为上一次删除保存一份副本的区域。
     
      命令模式#(command mode):所键入的键都被解释成命令。
     
      输入模式(input mode):键入的任何内容都直接插入到编辑缓冲区中。
     
    18 在线资料 
     
      vim官网:http://www.vim.org/
     
      FreeBSD vi:http://www.dc.fi.udc.es/~afyanez/info-vi/man-page.html
     
      vim中文文档:http://vimdoc.sourceforge.net/htmldoc/usr_toc.html
     
      vim作者个人网站:http://www.moolenaar.net/
     
      vim手册中文版:http://sourceforge.net/projects/vimcdoc/
     
      vi-ex:http://ex-vi.sourceforge.net/
     
      vi:http://thomer.com/vi/vi.html
     
      非常好vim学习网站:http://www.openvim.com/
     
      图形化vi-vim小抄:http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
     
      vim配置文件:http://amix.dk/vim/vimrc.html
     
      史上最强vim配置文件:http://blog.csdn.net/redguardtoo/article/details/1172136
     
      vi正则表达式:http://www.softpanorama.org/Editors/Vimorama/vim_regular_expressions.shtml
     
      神奇的vi:http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/tip15/
     
      vim资料:http://wiki.hotoo.me/Vim.html 
     
      vi-vim book:http://search.oreilly.com/?q=vi+vim&x=-873&y=-56 
     
      O’Reilly:http://books.google.com/books?id=J5nKVVg5YHAC&printsec=frontcover&dq=vi+vim&hl=en&sa=X&ei=UcVRUeCPKs-viQew54CwDQ&ved=0CC8Q6AEwAA#v=onepage&q&f=false
     
      O’Reilly:http://books.google.com/books?id=YQXfIbb0cJ8C&printsec=frontcover&dq=vi+vim&hl=en&sa=X&ei=s8VRUc2VO8SViAeB9YGYBA&ved=0CDoQ6AEwAQ
    

      

    linux系统vi命令详解
    
     来源:niutuku.com | vincent上传于2012-07-20 | 1513次浏览 | 0条评论 
    
    进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi
    
    标签:详解 命令 系统 光标 文件 当前 一个 vi 字符 n1 删除 
    
    
    
    
    
    
    进入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号删除寄存器中。
    

      

  • 相关阅读:
    WeChall_Training: ASCII (Training, Encoding)
    WeChall_Prime Factory (Training, Math)Training: WWW-Robots (HTTP, Training)
    WeChall_Training: Crypto
    WeChall_ Training: Stegano I (Training, Stegano)
    WeChall_Training: Get Sourced (Training)
    WeChall_Prime Factory (Training, Math)
    [loj3246]Cave Paintings
    [luogu5423]Valleys
    [loj3247]Non-Decreasing Subsequences
    [luogu5426]Balancing Inversions
  • 原文地址:https://www.cnblogs.com/qmfsun/p/3139146.html
Copyright © 2020-2023  润新知