Linux CentOS7 vim宏操作

vim的macro就是用来解决重复的问题。在vim寄存器的文章里面已经对macro有所涉及,macro的操作都是以文本的方式存放在寄存器中。

宏是一组命令的集合,应用极其广泛,包括MS Office中的word编辑器,excel编辑器和各种文本编辑器,Linux系统中最强大的文本编辑器之一的vim同样支持宏操作。本文主要讨论宏在vim编辑器中的宏操作。

宏的主要作用高效的完成同样的一组操作,比如批量插入、批量删除、批量修改。

一、录制宏

对于宏的操作,最基本的程序是先录制宏,再复制宏,运行宏等操作。

1.小写字母寄存器

        q{register} 小写字母(或数字)

        ...

        q

在录制宏的过程中,主要是应用键盘操作,不要使用鼠标操作,不要使用数字小键盘、方向键等。主要是这些操作不适合记录。

移动光标键:h 向左 j 向下  k 向上 l 向右

0移动光标到行首,$移动光标到行尾

e 按单词移动光标,ge反方向移动光标

ctrl+a 数字+1  ctrl+x 数字-1

2.大写字母寄存器

向已经录制好的宏里面追加其他操作:

在一个已经录制好的宏定义中添加更多的操作,方法和在一个已经存在的寄存器里追加内容一样,将原来小写的宏名变成大写。比如原来是qa开始录制的宏,现在使用qA向宏a中追加操作。

        q{register} 大写字母

        ...

        q

可以这样理解,先录入一段操作到小写字母的寄存器中,用录制一段操作时,用大写字母作为寄存器,后面录制的宏将追加到前面录制的小写字母的寄存器中。

二、查看宏

1.查看所有寄存器

        :reg

2.查看指定寄存器

        :dis a b c d

三、应用宏

应用宏也称为播放宏、运行宏。

应用宏可分为两种基本使用方式:一是在普通模式下使用,二是在底行(也称为命令行)模式下使用。

1.普通模式下

        @{register}

对当前行运行宏

        @@

再执行一遍上一次的命令。

        n@@

从当前行开始连续执行上一次的命令。

        n@{register}

从当前行开始,运行n次宏

2.底行模式下

a.直接使用

        :norm[al] [!]@{register}

在当前行运行宏

        :n,m norm[al] [!]@{register}

从n行到m行运行宏

        :n norm[al] m@{register}

从第n行开始,共运行宏m次

在录入命令时,有无空格均可以;normal(普通模式下执行该命令的意思)可以简写为norm;有没有!都表示要执行后面的命令。

b.结合使用

底行模式下使用,可结合可视模式,共同操作。

(1)选中要批量操作的文本区域,比如用可视模式选中;

(2)再按:进入命令模式,之后输入normal @宏名,回车完成批量操作。

四、处理宏

1.拷贝宏

:let @z = @a将寄存器a中存储的宏对应的操作拷贝给寄存器z。这样使用@z会和使用@a一样。这样的好处是可以将常用且有用的宏移动到字母表的末尾,以防不小心被替换掉了。

2.修改宏

当你发现宏有错误时,除了可以重新录制一遍宏之外,还可以作如下方式修改:

在当前文件的最后面,添加一空行,把宏命令复制到此处,再编辑修改,最后保存宏命令。

a.在普通模式下,按G移动光标到文件末尾,然后按o(小写)添加一新的空白行,不要编辑,按ESC退出到普通模式

b.使用命令"ap,把寄存器a中的宏命令像文本一样粘贴到这一行,然后编辑这一行(此处以寄存器a为例)

c.编辑宏命令(也就是操作),与vim编辑其他的文件一样。编辑结束后用0(零)回到行首

d.保存这一行内容到a寄存器:"ay$

e.最后删除这一行即可

3.传递宏

a.先建立一个宏,或复制其他人制作好的宏。

b.在任意一个文件的空白位置,在normal状态下,执行命令"{register}p即可以把宏的内容粘贴出来。比如说,一个"t寄存器中的宏是:

        "0i^I^[j"

其功能是把当前行缩进

可以修改,或作某些添加。

c.使用命令:let @f="0i^I^[j"

对宏命名并保存(此处为寄存器重新命名为"f)。

d.其他人用@f命令就可以使用这个的宏。

五、案例

1.行首添加一次缩进

寄存器命令解释:

        "b  功能:对行取消缩进

        0  按0光标移动到行首  按i 进入插入模式

        <80>kD 按删除键delete

        ^[ 按退出键Esc  按j 光标下移一行

        "t  功能:对行缩进一次(按一次Tab)

        0  按0光标移动到行首  按i 进入插入模式

        ^I 按制表键Tab

        ^[ 按退出键Esc  按j 光标下移一行

2.行尾加;

A光标移动到行尾,并进入插入模式

3.行首行尾加双引号""

I光标移动到行首,并进入插入模式

A光标移动到行尾,并进入插入模式

4.训练题目

在编辑文本时,要乐于发现重复性的操作。对于重复性行为,通过执行点命令或宏命令提高效率。

a.行尾加!

b.行首添加注释#

c.数字自增1练习

        这是一个小test!

         2 this is number 2;

前两行作为文件内容,下面是两个不同的宏,可以练习执行宏,查看效果。

        yyp0^Aeeee^A^E<80>ku<80>kd^[$

        yyp0<80>kr^Aeeee^A^[$

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/125961.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Thrift实现跨语言RPC调用

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

基于SpringBoot的智能物流管理系统

目录 前言 一、技术栈 二、系统功能介绍 顾客信息管理 员工信息管理 员工信息管理 门店信息管理 门店信息管理 订单信息管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施…

re学习(38)HGAME2020-re-Level-Week1-maze

题目描述 You won’t figure out anything if you give in to fear. 学习资料: https://ctf-wiki.github.io/ctf-wiki/reverse/maze/maze-zh/ 附加说明&#xff1a;请走最短路线 题解 分析题目 一看题目&#xff1a;maze 可以确定是一个迷宫题 void __fastcall __noreturn…

wisemodel 始智AI - 小记

文章目录 关于 wisemodel 始智AI 关于 wisemodel 始智AI https://www.wisemodel.cn/home 旨在打造中国版 “HuggingFace” 该社区汇聚了清华 / 智谱 chatglm2-6B、Stable Diffusion V1.5、alphafold2、seamless m4t large 等模型&#xff0c;以及 shareGPT、ultrachat、moss-…

Pytorch之shuffleNet图像分类

&#x1f482; 个人主页:风间琉璃&#x1f91f; 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 前言 ShuffleNet是Face&#xff08;旷视&#xff09;在2017年发布的一个高效率…

黑马JVM总结(二十五)

&#xff08;1&#xff09;字节码指令-cinit 构造方法可以分为两类&#xff0c;一类是cinit 一类init cinit是整个类的构造方法 putstatic&#xff1a;进行static变量的赋值&#xff0c;是到常量池里找到名字一个叫做i的变量 &#xff08;2&#xff09;字节码指令-init in…

Waves 14混音特效插件合集mac/win

Waves14是一款音频处理软件&#xff0c;主要用于音频编辑、混音和母带处理。该软件提供了各种插件&#xff0c;包括EQ、压缩、混响、延迟、失真等&#xff0c;以及一些专业的音频处理工具&#xff0c;如L2限幅器、Linear Phase EQ和多频道扬声器管理。 Mac软件下载&#xff1a;…

信创之国产浪潮电脑+统信UOS操作系统体验2:安装visual studio code和cmake搭建C++开发环镜

一、引言 在linux以及unix下开发C程序很多人都做过&#xff0c;笔者以前是通过vi编辑器编辑或者在windows下编辑甚至编译再将源文件ftp保存到服务器上&#xff0c;再在服务器端使用gcc编译&#xff0c;用gdb调试&#xff0c;但现在使用的国产电脑&#xff0c;客户端就是linux&…

迄今为止丨ChatGPT最强指令,一个可以让机器人生成机器人的Prompt,价值百万!

原文&#xff1a; 【ChatGPT调教】ChatGPT最强指令、让机器人为你生成机器人&#xff01;-CSDN博客 说明&#xff1a;最好看原文 昨天&#xff0c;发现了一条可能是迄今为止&#xff0c;我见过最牛的&#xff0c;商业价值最高的ChatGPT指令。 通过这条指令&#xff0c;可以…

正点原子嵌入式linux驱动开发——U-boot启动流程详解

在上一篇笔记中详细分析了uboot的顶层Makefile&#xff0c;理清了uboot的编译流程。本章来详细的分析一下uboot的启动流程&#xff0c;理清uboot是如何启动的。通过对uboot启动流程的梳理&#xff0c;可以掌握一些外设是在哪里被初始化的&#xff0c;这样当需要修改这些外设驱动…

【搭建私人图床】使用LightPicture开源搭建图片管理系统并远程访问

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…

Linux程序崩溃时的信号量(signal)说明

一、概念说明 在程序崩溃的时候&#xff0c;我们将会获取到两个信息: • signal: 信号量&#xff0c;下文将会详细的说明不同的信号量及其含义 • code: 错误码, 除了几个所有信号量(signal) 公共的错误码(code)&#xff0c;一般不同信号量(signal)有特定的错误码(code)&#x…