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
行这次是
行
可视化模式那么
块
可视化模式又是什么意思呢?🤔
切换模式
块可视模式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.
escctrl+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
:'<,'>s/shiyanlou/oeasy/g
范围内批量替换可以直接d、c、y
或者D、C、Y
也可以直接编辑
可以在块·可视化模式下替换
:'<,'>s/\%Vg/graphic/g
'<,'>表示范围
s表示substitute
\%V表示在块内
文本编辑终于告一段落,下次干点什么?🤔
下次再说 *
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)