可视化编辑

回忆上节课内容🤔

  • 我们学习了关于模式匹配中使用参数
  • 单个参数
    • :%s/<h2>\(.*\)</h2>/ - \1/g
  • 多个参数
    • :%s/<img src=\"\(.*\)\" title=\"\(.*\)\" \/>/[!\2]\1
  • 非贪婪匹配
    • :%s/<a rel="nofollow" href=\"\(.\{-\})\">\(.\{-\}\)<\/a>/[\2]\1/g
  • 我们这回会遇到一种新的模式
  • 什么模式呢?
  • 我们先回忆一下已经了解的模式

三种模式

  • 我们先回顾一下以前学过的模式
    • 正常模式
    • 插入模式
    • 替换模式
    • 命令行模式
  • 今天的新模式是可视化模式
  • 其实可视化对应三种可视化
    • 字符可视化 <kbd>v</kbd>
    • 行可视化 <kbd>V</kbd>
    • 块可视化<kbd>ctrl</kbd>+<kbd>v</kbd>

图片描述

字符可视模式

  • <kbd>v</kbd>进入
    • 还是可以用 {motion} 移动光标
    • 从开始位置到目前光标位置文本高亮显示
    • 相当于把选择范围高亮显示
  • 在左下角显示可视
    • 意味着进入了可视-字符模式
  • 可以用<kbd>o</kbd>切换首尾
    • 控制选择范围

图片描述

  • 为什么要有可视化模式?

具体选择

  • 为什么要有可视化模式?
    • 因为很多时候移动工具不直观

图片描述

  • 可视化
    • 明确点儿可以叫做选择范围可视化
  • 像这样很容易就知道自己所选择的范围
    • 然后就可以进行相关操作了
  • 做什么操作呢?

相关操作

  • 在可视化模式也可以进行编辑操作
    • 相当于对于选好的内容进行操作
  • 选好了之后,
    • <kbd>d</kbd>
      • 删除所选文本
    • <kbd>c</kbd>
      • 修改所选文本
      • 删除选中的文本
      • 然后输入想要的内容
    • <kbd>r</kbd>
      • 替换所选文本
      • 将选中的文本替换成单个字符
    • <kbd>I</kbd>
      • 在所选文本前插入
    • <kbd>A</kbd>
      • 在所选文本后插入
    • <kbd>g</kbd><kbd>u</kbd>
      • 所选区域转为小写
    • <kbd>g</kbd><kbd>U</kbd>
      • 所选区域转为大写
    • <kbd>g</kbd><kbd>~</kbd>
      • 所选区域大小写互调
    • <kbd>></kbd>
      • 所选区域对应的行向右缩进一个 shiftwidth
    • <kbd><</kbd>
      • 所选区域对应的行向左缩进一个 shiftwidth
    • 这个和我们常用的相似

操作细节

  • 大小写不同
    • d只删除选中的字符
    • 而D删除选中字符所在行的所有字符,包含结尾的换行符号
    • c 和 C 、 y 和 Y 同理
  • 可以在前面添加 "a 指定 寄存器a

图片描述

快速选择文字块

图片描述

  • vaw可以进入字符可视模式,并选中单词
  • vaW
    • a WORD (with white space)
    • 包含空格的一个WORD
  • iW
    • inner WORD
    • 不包含空格的WORD
  • as
    • a sentence (with white space)
    • 包含空格一个句子
  • is
    • inner sentence
    • 不包含空格一个句子
  • ap
    • a paragraph (with white space)
    • 包含空格一个段落
  • ip
    • inner paragraph
    • 一个段落

各种括号引起的文字块

  • ab
    • a () block (with parenthesis)
    • 一个小括号包围的块,含括号
  • ib
    • inner () block
    • 不包含括号的一个块
  • aB
    • a {} block (with braces)
    • 一个大括号包围的块,含括号
  • iB
    • inner {} block
    • 一个大括号包围的块
  • at
    • a <tag> </tag> block (with tags)
    • 一个标签包围的块,含标签
  • it
    • inner <tag> </tag> block
    • 一个标签包围的块,不含标签
  • a<
    • a <> block (with <>)
    • 一个尖括号包围的标签,含标签
    • 相当于at
  • i<
    • inner <> block
    • 一个尖括号包围的标签,不含标签
    • 相当于it
  • a[
    • a [] block (with [])
    • 中括号包含的块,含中括号
  • i[
    • inner [] block
    • 中括号包含的块,不含中括号

还有各种引用文字块

  • a"
    • a double quoted string (with quotes)
    • 双引号括号包含的块,含双引号
  • i"
    • inner double quoted string
    • 双引号括号包含的块,不含双引号
  • a'
    • a single quoted string (with quotes)
    • 单引号括号包含的块,含单引号
  • i'
    • inner simple quoted string
    • 单引号括号包含的块,不含单引号
  • a`
    • a string in backticks (with backticks)
    • 反引号括号包含的块,不含反引号
  • i`
    • inner string in backticks
    • 反引号括号包含的块,不含反引号

用行命令操作选区

  • 选好选区后
    • <kbd>:</kbd>
  • 左下角会出现:'<,'>
    • 就是从选区开头,到选区结尾
    • '< 选区开头
    • '> 选区结尾
  • 然后我们摁下<kbd>d</kbd>回车
    • 就把选区范围内都删除了
  • 我们可以:h '< 查看相应手册

图片描述

总结

  • 今天我们了解到可视模式,其实可视化对应三种子模式
    • 字符可视模式 <kbd>v</kbd>
    • 行可视模式 <kbd>V</kbd>
    • 块可视模式<kbd>ctrl</kbd>+<kbd>v</kbd>
  • 我们先来了解字符可视化模式
    • 快捷键 <kbd>v</kbd>
    • 可配合各种 motion
    • <kbd>o</kbd>切换首尾
    • 字符可视化就是把选择范围可视化
  • 快速操作
    • 选中了之后可以进行
      • <kbd>d</kbd>
      • <kbd>c</kbd>
      • <kbd>y</kbd>
    • 可以用<kbd>"</kbd><kbd>a</kbd>使用指定寄存器
  • 可以用ia快速选择范围
    • w 小词 W 大词
    • ()[] {} 各种括号
    • t 标签,编写网页的时候很有用
    • s 句子 p 段落
    • b 小括号,这个编写程序的时候很有用
    • B 大括号,编写程序的时候也很有用
    • " ' `引号内
  • 还可以在命令行下对选区范围内字符进行操作
    • :'<,'>
  • 这次是字符可视化模式,那么行可视化模式是什么意思呢?🤔
  • 下次再说 👋

[Github地址] (https://github.com/overmind1980/oeasyvim) [Gitee地址] (https://gitee.com/overmind1980/oeasyvim) [蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)