资讯专栏INFORMATION COLUMN

Vim实战指南(四):ex命令

icyfire / 2076人阅读

摘要:原文地址实战指南四命令是下的一个文本编辑器。你已经见过中的,没错,这些就是来自于命令。当你希望显示某行,输入命令,显示器上才会显示那行。而控制这个显示器显示文本的命令行工具,就是。

原文地址:Vim实战指南(四):ex命令

Introduction

ex是Unix下的一个文本编辑器。至于为什么突然讲到这个,那是因为vi就是ex的"visual mode"。
你已经见过vi中的":w", ":q!",没错,这些就是来自于ex命令。
ex命令远不止这些,实际上所有":"开头的命令,也就是你在vi最下面看到的命令行,都属于ex命令。
接下来我要详细的介绍一下,ex命令的用法。

ex简介

首先我们打开ex:

$ ex file
"file" 3L, 16C
Entering Ex mode.  Type "visual" to go to Normal mode.

输入1,3,屏幕上将显示1-3行的内容。
试着输入"visual"或者"vi",是不是回到了熟悉的vi界面?
想要使用ex,输入":",是不是在最下面看到了ex命令行?
ex究竟是什么东西?事实上这和历史有关,在早期,显示器并不像现在这么好用,那会的“显示器”只有按行显示的功能。当你希望显示某行,输入命令,“显示器”上才会显示那行。试着想想一个不支持上下左右滚动的界面。
而控制这个“显示器”显示文本的命令行工具,就是ex。

ex vs vi

为什么我们有了vi还要使用ex?因为对于大段文本的操作,ex命令比vi命令行模式(command mode)更方便。
ex的命令都是基于行的(早期的“显示器”,或者你的小型计算器,除了行列什么都没有了),如:

:3:显示第三行
:3,5:显示第3到5行
:3s/hello/hi:将第三行的hello替换成hi,这里s是substitute的缩写

而在vi命令行模式下,你只需要简单的:

3G

但是对于删除3-6行,ex命令只需要:

:3,6d:这里d是delete的缩写

而在vi命令行模式下,你需要:

3G
3dd:这里你还需要计算6-3=3

另外一个例子,将3-6行放到14行的后面,ex命令只需要:

:3,6m14

而在vi命令行模式下,你需要:

3G
3dd
14G
pp

ex的优势就体现在这里。

ex行

上面我们见过,ex命令都是基于行的,而获得行号有下面几种方法:

3:直接输入行号
3-6:行范围
.:当前行
/pattern/:满足pattern的第一行
$:最后一行
%:每一行

你可以组合这些,如:

:3,$d:删除3行到最后一行
:%d:删掉每一行

你也可以:

:.,.+3d:删除当前行及后面3行
:/pattern/d:删除包含pattern的第一行
:/pattern1/,/pattern2/d:删除从pattern1到pattern2的行

搜索

在vi中,使用/进行搜索,是不是觉得每次使用n/N来查找下一个太慢了?试试ex吧:

:g/pattern/nu

是不是所有包含pattern的行以及行号都打印出来了?这里g的意思是global,全文的意思,nu是number,行号的意思。
你也可以把g换成3,6之类的,只在3-6行中搜索。

批处理

在ex中,也可以用"|"来批处理多条命令,如:

3,6d | g/csprojectedu/nu:删除3-6行后,打印所有包含csprojectedu的行。

保存和退出文件

在Vim实战指南(一):基础编辑命令中,我们介绍过保存和退出文件的方法,实际上:

ZZ:是vi命令行模式下的命令
:q:ex命令,退出文件,如果有未保存的修改则无法退出
:q!:ex命令:强制退出
:x:ex命令,保存和退出文件
:w:ex命令,保存文件
:w!:ex命令,强制保存
:w another:将文件另存为文件another
:3,6w another:将3-6行另存为文件another(编辑神器)
:9,13w >>another:将9-13行追加到文件another后面(编辑神器2)
:r another2:将another2文件的内容追到到当前文件光标后(编辑神器3)
:3r /home/user/another3:将/home/user/another3文件的内容追到到当前文件第3行后(编辑神器4)

编辑神器1-4,是不是很方便?

多文件处理

vi支持多文件处理,同时处理多文件不仅节省你多次打开和退出vi的时间,也可以让你反复利用vi的缓存区,关于缓存区的说明见Vim实战指南(三):高级技巧。
首先在命令行打开多个文件:

$ vi filename1 filename2

首先打开filename1,你可以通过ex的命令来切换:

:n:切换到下一个文件
:N:切换到上一个文件
:args:显示所有文件
:rewind/:rew:跳到第一个文件
:last:跳到最后一个文件

记住,缓存区是公用的,你可以将filename1中选择的内容,通过缓存区拷贝到filename2中。

Summary

掌握ex命令后,是不是发现vi越来越好用了?别着急,更强大更好用的ex命令还在后面。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24836.html

相关文章

  • Vim实战指南(九):多窗口编辑

    摘要:原文地址实战指南九多窗口编辑虽然我们在实战指南四命令介绍了如何同时打开多个文件,但是仍然需要通过来切换,对于编程来说不太方便。 原文地址:Vim实战指南(九):多窗口编辑 Introduction 虽然我们在Vim实战指南(四):ex命令介绍了如何同时打开多个文件,但是仍然需要通过n/N来切换,对于编程来说不太方便。Vim支持多窗口编辑,可以让你同时打开并编辑多个文件。 多窗口的便利 ...

    omgdog 评论0 收藏0
  • Vim实战指南(六):环境偏好配置

    摘要:执行命令的命令同样可以使用命令行工具,这样省去你退出输入命令后再重新打开的尴尬。在中,输入来执行命令行工具,如将列出当前目录下的所有文件。 原文地址:Vim实战指南(六):环境偏好配置 Introduction 有没有想过让你的vi环境与众不同?vi可以将你的环境偏好配置保存下来,甚至支持配置脚本,自定义快捷键,和Unix命令行交互,这些便利将进一步提高你的编辑速度。 环境配置 vi使...

    SmallBoyO 评论0 收藏0
  • Vim实战指南(八):Vim vs vi

    摘要:原文地址实战指南八前面我们介绍了很多的功能,现在我们进入我们的重头戏。是增强版,相比,增加了很多更实用的功能。支持可以将你选定的内容存在中,内容可以包括统计信息,上一次退出的光标位置。同样也有偏好配置,使用的文件是。 原文地址:Vim实战指南(八):Vim vs vi Introduction 前面我们介绍了很多vi的功能,现在我们进入我们的重头戏:Vim。Vim是增强版vi(vi i...

    oogh 评论0 收藏0
  • Vim实战指南(五):文本替换

    摘要:原文地址实战指南五文本替换在编辑代码时,有时候你希望对变量或者函数重命名。提供了强大的替换功能,比其他普通编辑器的更好用。事实上你打不用如此麻烦,只需下面简单的替换即可本文列出了常用的文本编辑中全局替换的方法。 原文地址:Vim实战指南(五):文本替换 Introduction 在编辑代码时,有时候你希望对变量或者函数重命名。vi提供了强大的替换功能,比其他普通编辑器的ctrl+r更好...

    ad6623 评论0 收藏0
  • Vim 文本对象指南 (1)

    摘要:本文还是介绍一些基本内容关于插件使用可以查看完整配置如果想要在里拥有高效编辑的能力必然要掌握超过单个字符编辑的能力不然就可能出现像之前看到过的一个笑话在你刚开始使用的时候做过什么令你难忘的事情答使用跳转到行也就是说要掌握词句子段落级别的编 本文还是介绍一些基本内容, 关于插件使用, 可以查看完整配置 space-vim. 如果想要在 Vim 里拥有高效编辑的能力, 必然要掌握超过单个...

    draveness 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<