vi介绍编 (3) ex命令

本文详细介绍了vi/ex编辑器的相关命令。涵盖了vi/ex模式切换、执行shell命令、编辑不同文件、显示文件信息、处理符合或不符合特定样式的内容等操作,还介绍了保存、退出、恢复文件等命令,为使用vi/ex编辑器提供了全面的指导。
◎EX COMMANDS
      以下的命令属於ex编辑器所用.也就是说要在vi执行时需要先换成ex mode (:)
      vi/ex mode切换 於ex mode输入vi 即可.
      
      ! shell command   执行shell命令

            "           解
      
          # 数字        显示选择的行数,每行前面标示出行号.

       * buffer_name    执行该buffer

         [行数]a!       在该行的下一行,产生输入的文字. 行数从 0 开始.
                        :1a!     (在第二(1+1=2)行产生输入文字)
                        接着会出现如下的讯息
                        Entering ex input mode
                        接着您就可以输入文字 按 ctrl+c 结束

         [行数]c!       该行用输入的文字取代. 行数从1开始.
                        :1c!     (在第一行产生取代文字) 接着会出现如下的讯息
                        Entering ex input mode
                        接着您就可以输入文字取代 按 ctrl+c 结束
       
         [行数围]d    将处於该行数围内的文章删除.
                        1,3d     (表示从第1行到第3行删除; ,表示到的意思)
       
    [Ee]dit! file_name
    [Ee]x! file_name    编辑不同的档案,此为编辑file_name,[]表示其中之一。
                        也可以用 :e file_name 或 :edit file_name 编辑不同档案

    exu[sage] [ex命令]  显示该ex命令的使用方式。
                      显示edit的使用方式  :exu edit   显示结果如下
                       +-+-+-+-+-+-+-+-+-+
                       command begin editing another file
                           Usage:[Ee][dit][!] [+cmd] [file]
                       Press any key to continue [: to enter more ex commands]:
                       分别显示出 简易叙述 使用语法 结束或继续
       
    f[ile] [file_name]  显示档案讯息 ( 与vi命令中的ctrl+g类似 )

    [range] g[lobal] /样式/ [ex命令]  将符合条件的样式加以用ex命令处理
                                      可以设定围,若没有围设定表示全部。
                                      若不加命令只会显示符合样式的内容。
                                      如 :g/BSD/ (显示有BSD的行列)
                         
    [range] v[lobal] /样式/ [ex命令]  将不符合条件的样式加以用ex命令处理
                                      可以设定围,若没有围设定表示全部。
                                      若不加命令只会显示不符合样式的内容。
                                      如 :g/BSD/ (显示没有BSD的行列)

            he[lp]      显示求助讯息

       [行数]i[nsert]!  将所输入的文字内容,插入自订的行数.原行数顺延

       [行数]j[oin]!    将该指定行与下一行合。
       
       [行数]l[ist]     显示该指定行(围)。
       
       [围]m[ove] line  将某围的内容搬移到某自订行之後。
                          若将3-5行搬移到第6行之後,指令为:3,5m6 
       
       mk[exrc][!] file_name  将缩写、编辑参数及map写到file_name
       
       [Nn][ext][!] [file ...]  继续编辑某一档案。
       
       pre[serve]        以ex -r 能够恢复的形式储存档案。
    
       [Pp]rev[ious][!]  编辑先前的档案。

       [围] p[rint]    显示围内容

       [行数] pu[t]      将buffer中的内容在特定行贴上。

          q[uit][!]      强制离开

       rec[over] file    回复先前用pre储存的档案,等同於vi -r filename
                         :档案放在/var/tmp/vi.recover资料夹下

          se[t]          设定环境变数,後接想要设定的变数(值)
          se[t] [all]    显示全部环境变数

          sh[ell]        跳脱编辑,回到shell下,可执行其他动作。
                         用exit离开shell。

       so[urce] file     从档案中读取命令

       [range] s[ubstitute] [/被取代的样式/取代样式/]
                         在某围内将符合的样式用取代样式取代。
      
       su[spend][!]      暂停程式进行,回到shell,用fg回复

           st[op][!]     同su!

           ve[rsion]    显示vi编辑器的版本。

           vi[sual]     进入vi (ex mode用)

       viu[sage] [command]  显示vi command的语法,若没有特别指定,则显示全部。

       [围] w[rite][!] [>>] [file_name]  将围内容附加到档案file_name。

       [围] w[rite][!] [file_name]  将围内容另存新档file_name。

       [围] wq[!] [>>] [file_name]  将围的内容附加到档案file_name并离开。
       
       x[!]  强制存档

  ◎参考资料: man vi
### 使用 vi 辑器打开和辑文件 #### 三种模式及其切换命令 Vi 辑器具有三种主要的工作模式:命令模式、插入模式以及底线命令模式。 - **命令模式**:这是启动 Vi 后默认进入的模式,在此状态下无法直接输入文字,而是用于执行各种操作指令。例如移动光标位置或者删除字符等动作都需在此模式下完成。 - **插入模式**:当处于该模式时可以在当前光标的所在之处开始录入新的文本内容;要从其他任何一种状态转换成插入模式只需按下 `i` 键即可[^1]。 - **底线命令模式**:也叫做 Ex 模式,通过按冒号 (`:`) 来激活这种特殊的状态来发出一些特定类型的请求比如保存文档或是退出程序等等[^2]。 为了实现不同模式之间的转变: - 若要由命令模式转至插入模式,则可敲击键盘上的字母 i; - 若想回到命令模式则应先确保自己不在插入模式里再点击 ESC 键; - 而如果想要进入到底线命令模式的话就需要先进入到命令模式之后紧接着打下 : 符号[^3]。 #### 开启指定文件的方法 可以通过如下几种方式利用 Vi 工具加载目标档案: - 单纯地键入 `vi 文件路径` 就能够创建一个新的空白文档或者是读取现有的资料集并将其展示出来供后续处理。 - 当希望定位到某一行开头的时候可以采用形如 `vi +n 文件名称` 的形式其中 n 表示具体的行数号。 - 对于那些需要迅速抵达结尾部分的情况来说,可以直接运用 `vi + 文件地址` 这样的语法结构。 - 寻找含有某个字符串的位置可通过表达式 `vi +/查找的内容 文件全名` 实现自动跳转功能。 - 遇见意外断电等情况造成的数据丢失问题还可以借助 `vi -r 文件标识符` 命令尝试恢复最近一次未成功保存前的状态版本。 ```bash # 打开或新建名为example.txt的文件 vi example.txt # 新建或打开example.txt并将光标放在第10行 vi +10 example.txt # 打开example.txt并将光标放置在最后一个地方 vi + example.txt # 查看example.txt中首次出现"hello"的地方 vi +/hello example.txt # 恢复因系统崩溃而中断辑的example.txt vi -r example.txt ``` #### 复制与粘贴的操作方法 对于复制(yank)、剪切(delete)及粘贴(put)等功能而言,通常是在命令模式下实施相应的快捷组合按键序列达成目的: - Yanking (复制): 在正常模式下将光标移向待选区域的一端,接着依据范围大小决定是否配合 v/V/Ctrl-v 划定区间后继续使用 y 字母代表“Yank”,单独的一个 y 可以作用于单行数据之上。 - Deleting (删除/剪切): 类似上述过程只是最后一步改成了 d 表明是要做 Delete 动作,同样支持多行或多列的选择性清除。 - Putting (粘贴): 返回普通视图之后找到合适地点简单地触发 p 或者 P (区分大小写)就能把之前暂存的信息按照先后顺序重新安插进来。 #### 存储更改并离开环境的方式 一旦完成了所有的修改任务,便要考虑怎样妥善结束本次会话了——这涉及到两个方面即确认所有变更都被持久化存储下来还有就是安全地脱离应用程序本身: - Writing changes to disk (保存改动): 移动到最底部提示栏处输入 w 参数告知系统准备就绪等待下一步指示。 - Exiting the editor gracefully (优雅退场): 结合前面提到过的 write action 加上 quit request 形成完整的 exit sequence 如同 ":wq"。 另外值得注意的是有时候可能并不打算保留所做的全部调整这时候可以选择强制放弃一切变动强行关闭窗口只需要给出 q! 指令就可以了。 ```bash :w # 仅保存而不退出 :x # 修改后保存并退出 :q # 如果没有改变则退出;若有未保存变化则报错 :q! # 不管有无修改均直接退出,丢弃所有更改 :wq # 保存并且退出 ZZ # 和 :x 效果相同,但是不需要回车确认 ``` #### 光标控制技巧 掌握好基本的方向导航技能有助于提高工作效率减少不必要的麻烦,下面列举了一些常用的位移手段帮助快速到达所需查看或辑的目标位置: - h/j/k/l 分别对应左/下/上/右方向键的作用效果。 - gg/G 让你瞬间返回顶部或者滚动到底部。 - 0/$ 控制每行列首尾两端间的跳跃。 - w/b/e 方便用户逐词前进(w)/倒退(b),亦或是停留在单词末端(e)。 ```bash h # 向左移动一个字符 j # 向下移动一行 k # 向上移动一行 l # 向右移动一个字符 gg # 移动到文件的第一行 G # 移动到最后一条记录所在的那一行 0 # 把游标移到本行的第一个非空格字符那里 $ # 设置焦点位于这一行的最后一字上面 w # 往右边走直到下一个词语开始处停止 b # 往左边走直至遇到前一个单词起点为止 e # 正常情况下也是往右侧跨过整个词汇不过最终停留点会在其末尾而不是头部 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值