• Vim技能修炼教程(6)


    摘要: vi其实就是行编辑器ex的全屏模式

    在很久很久以前,计算机的运算能力还很弱,终端与主机的通信也不好。在没有显示器的时代,只能通过电传打字机跟主机通信。那时候只有行编辑器,编辑的时候只能在一行中进行。需要显示哪一行,就把哪一行或者哪几行打印出来看。
    Unix上使用的行编辑器是ed. 这个编辑器至今仍然在Unix/Linux/FreeBSD各系统中存在。
    ed的增强版是ex. ex最大增强之处就是提供了可以全屏编辑的模式。在ex中输入:visual命令,就会切换到全屏编辑模式。好吧,这就是vi。Vi本质上就是ex编辑器的visual模式。在Linux中,ex被链接到vim上。

    ex现在是Vim的ex模式

    ex命令的最直观特点就是以冒号开头,比如我们熟悉的:q命令。
    行编辑器虽然不流行已经很久了,但是ex做为vi的另一种模式,至今仍然发挥着作用。

    基本上vim所有的编辑功能都提供了相应的ex命令。通过:help ex-cmd-index可以查看到这些ex命令的列表。我们写vimscript使用的功能,基本上都是ex命令。包括程序流程控制所用的:if命令,模拟正常模式下输入的:normal命令等。

    ex命令

    前面讲了这么多历史沉钩,是希望大家能够切换一下思路。即使是在vi模式下执行ex命令,它们仍然是行编辑器的模式。也就是默认的大部分命令只对当前行有效,如果想要跨行,必须指定行号。

    ex命令的一般模式是:[行地址]命令

    行地址有三种指定的方法:

    • 直接指定行号:
      • 1表示第一行
      • 3,5表示第3行到第5行
    • 采用特殊变量表示
      • .点号表示当前行
      • $表示最后一行
      • %表示每一行
      • +n, 当前行开始向前数第n行,n省略则为1
      • -n, 当前行向后数第n行,n省略则为1
    • 利用搜索来定位行 /

    复制粘贴命令

    • :delete: 简写为:d,例:1,10d: 删除前10行
    • :move: 简写为:m,例:1m10,第1行移动到第10行
    • :copy: 简写为:t或:co。

    例:将本行和上下两行一起复制到整个文件之前

    :-,+t0
    

    获取行号的命令

    • := 列出文件的总行数
    • :.= 当前行的行号
    • :/搜索字符串/= 查找搜索字符串出现的第一次的行号

    文件操作

    文件操作跟文本无关,visual模式不再有优势,这时ex命令反而成为主力了。

    • :w 缓冲区写到文件
    • :q 退出vi
    • :wq 写文件并退出
    • :x 如果修改过则写文件并退出
    • :r 文件名,将文件读入光标开始的位置
    • :e 文件我,读入新文件
    • C-^: 在多个文件间切换

    :w命令支持文件名做为参数。
    :w命令还支持将部分行写入到文件,也可以添加到文件尾。
    例:将当前行开始的10行写入test.txt中:

    :.,+9w test.txt
    

    行编辑命令本身的编辑

    这一节要说的是对于写命令的时候,vim或者说ex能够提供的帮助。

    • C-w : 删除至单词开头
    • C-v : 删除至行首
    • C-r{寄存器} : 将寄存器的内容粘贴到命令行

    行编辑命令的自动补全

    在vi模式下,ex命令可以用tab键进行自动补全。也可以通过Ctrl-d命令列出所有的可选项。

    运行外部命令

    Vim有时候需要调用外部命令来实现任务。

    • :!{命令}:执行命令
    • :read !{命令}:执行命令,并把返回结果读入缓冲区
    • :shell: 启动一个shell来执行外部命令

    用云栖社区APP,舒服~

    原文链接

  • 相关阅读:
    Python3 Selenium自动化web测试 ==> 第十一节 WebDriver高级应用 -- 显示等待 + 二次封装
    Python3 Selenium自动化web测试 ==>FAQ:Unittest测试报告生成文件名加测试完成时间字符串
    Python3 Selenium自动化web测试 ==>FAQ:日期格式和日期字符串格式相互转换
    学习目录
    dotnet学习系列
    Vue.js——60分钟browserify项目模板快速入门
    Vue.js——使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
    Vue.js——vue-resource全攻略
    Vue.js——基于$.ajax实现数据的跨域增删查改
    Vue.js——组件快速入门(下篇)
  • 原文地址:https://www.cnblogs.com/jzy996492849/p/7150688.html
Copyright © 2020-2023  润新知