块可视化编辑

回忆上节课内容

  • 上次我们了解到行可视模式

    • 行可视模式 V
    • 也可配合各种motion
    • o切换首尾
  • 选区的开头和结尾是mark标记

    • 开头是 '<
    • 结尾是 '>
  • 可以在选区内进行替换和删除

    • :'<,'>s/shiyanlou/oeasy/g 范围内批量替换
    • :'<,'>s/shiyanlou/oeasy/gc 范围内批量替换待确认
    • :'<,'>g/^.*drwxwr.*$/d 范围内有drwxwr的直接删除
    • 选中了之后可以进行d、c、y等操作
    • 可以用"a使用指定寄存器
  • 可以合并多行

    • 用J把这好多行合并成1
  • 这次是可视化模式
  • 那么可视化模式又是什么意思呢?

切换模式

  • 块可视模式 ctrl+v

    • 左下角-- 可视 块 --
    • 然后配合motion
  • 首尾切换

    • o切换首尾
    • 这个块可以有四个顶点
    • O横向切换
    • 四个顶点都可以切换到
  • 选择好了之后就可以把选区y下来

    • 然后找到一个空白的地方,p
    • 我们发现这个块是按照方块的方式粘贴的

添加序号

  • 用ctrl+v

    • 在行首部分,选择4行1列的方块
    • 输入I1.<esc>
    • 在行首插入41.
  • ctrl+v选中下面的31
  • g之后ctrl+a
  • 行号变成 1234

查找帮助

  • 可以:h v_g_ctrl-a查看手册
  • 意思是查找 visual 模式下的g_ctrl-a

再练一次

  • 使用命令 :2,5normal I001. esc
  • ctrl+v选中3-5行的开头字符
  • g之后ctrl+a

  • 到7之后自动跳到10
  • 这个怎么回事?

数字格式问题

  • :set nrformat?

    • nr 数字 number
    • formats 格式

  • 原来他把007当作了8进制数octal
  • :set nrformats -octal

    • -octal 去掉8进制格式
  • 再试试

切换首尾

  • o

    • 切换首尾
    • 控制选择范围
  • O

    • 在同一行中切换选择点
    • 控制选择范围

回忆外部命令

#先安装两个软件 fortune和boxes 在<linux>教程那部分有介绍
sudo apt install fortune boxes
#使用fortune生成谚语
fortune -l
#把谚语通过管道送入boxes
fortune -l | boxes -d cat
#进入vi
:r !fortune -l | boxes -d cat

  • banner 实在太宽了
  • 我想把它变得窄一点

范围控制

  • 先用块选择的方式,把里面选中
  • 删除,并放到寄存器a中

  • 在最底下粘贴出来

  • :set textwidth=50
  • gq21G
  • "ayG

  • 然后调整画框
  • 把内容合理地放上去
  • 开心

批量改名的练习

  • 首先找到文件

  • 选中前面的块并d删除

  • I在前面插入mv "

  • 同样方法,给后面也加上"
  • 把名字块复制并粘贴

可视块内的批量替换

  • 把后面的块选中
  • 并完成针对于块儿内的替换'<,'>
  • :'<,'>s/\%Vg/graphic/g

    • '<,'>表示范围
    • s表示substitute
    • \%V表示在块内
    • g/graphic表示替换内容
    • 最后的g表示可重复

清理空格

  • 下面需要把多余的空格清空一下
  • :'<,'>s/desktop\s*"/desktop"/g

  • :wq保存退出

    运行

  • 替换成功

  • 在本次的例子中并不明显
  • 在给90多个mp4文件改名的过程中(把空格换成逗号)
  • 发现真的很方便

再练一个

  • 基础来源于 ls -l > renames.sh

总结

  • 今天我们了解到块可视模式

    -ctrl+v

    • 左下角-- 可视 块 --
    • 然后配合motion
    • o切换首尾
    • 这个块可以有四个顶点
    • O横向切换
  • 可以在选区内进行编辑和替换

    • 可以直接d、c、y
    • 或者D、C、Y
    • 也可以直接编辑

      • :'<,'>d
      • :'<,'>s/shiyanlou/oeasy/g 范围内批量替换
  • 可以在块·可视化模式下替换

    • :'<,'>s/\%Vg/graphic/g
    • '<,'>表示范围
    • s表示substitute
    • \%V表示在块内
  • 文本编辑终于告一段落,下次干点什么?
  • 下次再说

[Github地址] (https://github.com/overmind1980/oeasyvim)

[Gitee地址] (overmind1980/oeasyvim)

[蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 Vim_Linux - 蓝桥云课)

oeasy教您玩转vim - 58 - # 块可视化的更多相关文章

  1. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  2. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  3. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  4. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  5. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  6. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  7. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  9. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

  10. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

随机推荐

  1. 超全、超简单Vue微信公众号授权登录指南

    <template> <div id="app"> <h1>微信授权登陆</h1> <div> <div> ...

  2. phpstorm配置laravel语法提示

    摘自:https://cloud.tencent.com/developer/article/1426699 phpstorm配置laravel语法提示 2019-05-15阅读 1930   用习惯 ...

  3. 如何从0-1了解 熟悉 精通gitlab

    加入gitlab团队项目: 打开其他用户极狐邀请邮件: 点击接受紫色邀请按钮"accept invitation": 选择免费试用90天saas服务: 使用邮箱注册进行邮箱验证[验 ...

  4. containerd 源码分析:创建 container(三)

    文接 containerd 源码分析:创建 container(二) 1.2.2.2 启动 task 上节介绍了创建 task,task 创建之后将返回 response 给 ctr.接着,ctr 调 ...

  5. undefined和null js数据类型转换自动转换布尔类型

    基本数据类型之undefined和null undefined是表示未找到,是变量没有正确赋值数据时,生成的数据类型 var int : console.log(int)//undefined nul ...

  6. 引用(包含) import wxss样式

    引用(包含) 把模板定义到外部,然后多个页面间可以共用使用定义的模板WXML结构显示. https://developers.weixin.qq.com/miniprogram/dev/referen ...

  7. LVGL8文本框设置长文本会自动滚动到文本最后解决方法

    在创建完成并设置完文本之后加一句 lv_obj_scroll_to_y(obj,0, LV_ANIM_OFF); 就可以了 原因:官方控件里面设置文本的接口里面设置文本后会设置一次光标位置到文本末尾, ...

  8. Unity3D 内存管理非代码技巧

    在场景管理器新建 gameobjct 使用代码在类初始化时 NEW 普肉fai包(包)然后将相同的类NEW够挂载到 gameobjct子节点上 在操控列表中类的时候用for循环遍历操作移动还是怎么样( ...

  9. 夜莺监控发布 v6.7 版本,推送部分商业版功能

    熟悉夜莺的小伙伴都知道夜莺分为开源版.专业版.企业版,三个版本良性发展.近期夜莺团队发布了 v6.7 版本,把机器Metadata管理功能推送到了开源版,下面是该功能的简单介绍. 如上图,机器列表页面 ...

  10. C++面向对象语言自制多级菜单

    因为要做一个小应用,需要一个菜单类,在网上找了许久,也没有找到一款心仪的菜单类,索性用C++语言,自制一个命令行级别的菜单类,并制作成库,现记录下来,供以后借鉴. 一.特性 无限制条目 无限制层级 用 ...