oeasy教您玩转vim - 58 - # 块可视化
块可视化编辑
回忆上节课内容
上次我们了解到行可视模式
- 行可视模式 V
- 也可配合各种
motion
- o切换首尾
选区的开头和结尾是
mark标记
- 开头是 '<
- 结尾是 '>
可以在选区内进行替换和删除
:'<,'>s/shiyanlou/oeasy/g
范围内批量替换:'<,'>s/shiyanlou/oeasy/gc
范围内批量替换待确认:'<,'>g/^.*drwxwr.*$/d
范围内有drwxwr
的直接删除- 选中了之后可以进行d、c、y等操作
- 可以用"a使用指定寄存器
可以合并多行
- 用J把这好多行合并成
1
行
- 用J把这好多行合并成
- 这次是
行
可视化模式 - 那么
块
可视化模式又是什么意思呢?
切换模式
块可视模式 ctrl+v
- 左下角
-- 可视 块 --
- 然后配合
motion
- 左下角
首尾切换
- o切换首尾
- 这个块可以有四个顶点
- O横向切换
- 四个顶点都可以切换到
选择好了之后就可以把选区y下来
- 然后找到一个空白的地方,p
- 我们发现这个块是按照方块的方式粘贴的
添加序号
用ctrl+v
- 在行首部分,选择4行1列的方块
- 输入
I1.<esc>
- 在行首插入
4
个1.
- ctrl+v选中下面的
3
个1
- 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 - # 块可视化的更多相关文章
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
- oeasy教您玩转linux-010110内容回顾
我们来回顾一下 我们都讲了什么?
随机推荐
- 安装node-sass失败原因及解决办法汇总
node-sass 安装过程 npm 拉下 node-sass包: 根据node版本和node-sass版本拉取对应的binding.node编译器,原因是sass的编译语言比较特殊,需要下载对应版本 ...
- Android 13 - Media框架 - 异步消息机制
关注公众号免费阅读全文,进入音视频开发技术分享群! b7693967-317e-4c46-96d3-d40d9d87e382 由于网上已经有许多优秀的博文讲解了Android的异步消息机制(ALoop ...
- 利用 Helm 在各类 Kubernetes 中安装 Rainbond
利用 Helm 安装 Rainbond 好雨科技技术团队一直致力于让用户更方便的安装 Rainbond 这款产品. 不久前,我们刚刚推出了在一个容器中部署 Rainbond 的快速安装方式,这种方式覆 ...
- cmake之find_library使用问题
附上工程源码 demo工程 PS:这个工程用于导出库 CMakeLists.txt cmake_minimum_required(VERSION 3.5) project(demo LANGUAGES ...
- 算法金 | 突破最强算法模型!!学会随机森林,你也能发表高水平SCI
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 就在去年下半年,如果你在 Google Scholar 上以 "Random ...
- 三维API sheder 基础
这个shader 是靠三维数学 影响 二维像素 导致像素颜色改变 它是每个像素走一遍脚本算法 写的时候注意 语言格式 写错了 shader脚本是不能用的,根本就不好使这个 可以用区域 用xyz y为0 ...
- 前台往后台传id
js页面var stuid;$(function () { var request = { QueryString : function(val) { var uri = window.locatio ...
- redis锁定商品解决并发售卖问题 RedisUtil工具类
redis锁定商品解决并发售卖问题 RedisUtil工具类 redis数据类型介绍: //伪代码,基本思路 //1.出redis,每次在选定商品之后,先检查redis是否已经锁定该商品,避免超卖.S ...
- idea为什么提示:Duplicated code fragment (**lines long)
idea为什么提示:Duplicated code fragment (**lines long) 原因是有相同的代码块在类里,可以把这部分代码封装成一个方法,提高代码可读性.
- es语法 rest api 模拟根据歌手,歌名,歌词来搜索demo
#创建索引songs_v1 PUT { - "acknowledged": true, "shards_acknowledged": true, "i ...