Linux Vim批量注释和自定义注释

使用 Vim 编辑 Shell 脚本,在进行调试时,需要进行多行的注释,每次都要先切换到输入模式,在行首输入注释符"#"再退回命令模式,非常麻烦。连续行的注释其实可以用替换命令来完成。

换句话说,在指定范围行加"#"注释,可以使用 ":起始行,终止行 s/^/#/g",例如:

:1,10s/^/#/g

表示在第 1~10 行行首加"#"注释。"^"意为行首;"g"表示执行替换时不询问确认。如果希望每行交互询问是否执行,则可将 "g" 改为 "c"。

取消连续行注释,则可以使用 ":起始行,终止行s/^#//g",例如:

:1,10s/^#//g

意为将行首的"#"替换为空,即删除。当然,使用语言不同,注释符号或想替换的内容不同,都可以采用此方法,灵活运用即可。添加"//"注释要稍微麻烦一些,命令格式为 ":起始行,终止行 s/^/\/\//g"。例如:

:1,5s/^/\/\//g

表示在第 1~5 行行首加"//"注释,因为 "/" 前面需要加转义字符 "\",所以写出来比较奇特。以上方法可以解决连续行的注释问题,如果是非连续的多行就不灵了,这时我们可以定义快捷键简化操作。格式如下:

:map 快捷键 执行命令

如定义快捷键 "Ctrl+P" 为在行首添加 "#" 注释,可以执行 ":map^P l#<Esc>"。其中 "^P" 为定义快捷键 "Ctrl+P"。注意:必须同时按 "Ctrl+V+P" 快捷键生成 "^P" 方可有效,或先按 "Ctrl+V" 再按 "Ctrl+P" 也可以,直接输入 "^P" 是无效的。

"l#<Esc>" 就是此快捷键要触发的动作,"l" 为在光标所在行行首插入,"#" 为要输入的字符,"<Esc>" 表示退回命令模式。

"<Esc>" 要逐个字符输入,不可直接按键盘上的 Esc 键。设置成功后,直接在任意需要注释的行上按 "Ctrl+P" 快捷键,就会自动在行首加上 "#" 注释。取消此快捷键定义,输入 ":unmap^P" 即可。我们可以延伸一下,如果想取消文件行首的快捷键,则可以设置 ":map^B 0x",快捷键为 "Ctrl+B", "0" 表示跳到行首,"x" 表示删除光标所在处字符。再如,有时我们写完脚本等文件,需要在末尾注释中加入自己的邮箱,则可以直接定义每次按快捷键 "Ctrl+E" 实现插入邮箱,定义方法为 ":map^E asamlee@itxdl.net<Esc>"。

其中 "a" 表示在当前字符后插入,"samlee@itxdl.net" 为插入的邮箱,"<Esc>" 表示插入后返回命令模式。

所以,通过定义快捷键,我们可以把前面讲到的命令组合起来使用。将快捷键对应的命令保存在 .vimrc 文件中,即可在每次使用 Vim 时自动调用,非常方便。

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

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

相关文章

0.专栏概述与几句闲话

引 还记得今年大年初一开始写《数据结构和算法》专栏的时候定了个小目标&#xff1a; 不知不觉间已经过去了十个月&#xff0c;我的第一个专栏也算是圆满收官了 。 这次PO一张成都熊猫基地的团子们&#xff0c;开启设计模式这个专栏吧。 目录与概述 犹记得一位身在广州的老…

相机传感器

相机的传感器大小通常用英寸&#xff08;1英寸2.54厘米&#xff09;来表示。例如&#xff1a;全画幅相机的传感器大小为&#xff1a;36mm*24mm&#xff0c;称为 35mm全画幅。 几分之一英寸 所谓的 1/2.7&#xff0c;1/2.5等等&#xff0c;里面的分子1是一个标准&#xff0c;分…

java动态代理技术

为什么需要动态代理技术 如果对象身上干的事太多可以通过代理技术转移部分功能对象有什么办法需要被代理&#xff0c;代理就必须要有一定的方法 怎么实现动态代理 创建对象 public class 对象名 implement 接口{private String name;public 对象名(String name){this.name na…

c语言使用fdk_aac库对aac音频解码为pcm

//示例为adts的aac流数据&#xff08;adts数据可以每一包都可以独立解析不需要拼凑&#xff09; //解码数据的采样率同解码前的采样率&#xff0c;如果不满足需求&#xff0c;需要对数据进行重采样 #include <aacdecoder_lib.h>int m_fd -1; int m_fd2 -1;void aac2pc…

PySpark 优雅的解决依赖包管理

背景 平台所有的Spark任务都是采用Spark on yarn cluster的模式进行任务提交的&#xff0c;driver和executor随机分配在集群的各个节点&#xff0c;pySpark 由于python语言的性质&#xff0c;所以pySpark项目的依赖注定不能像java/scala项目那样把依赖打进jar包中轻松解决问题…

laravel自定义日志保存文件加上日期

在config/logging.php文件中&#xff0c;找到channels数组&#xff0c;添加以下内容&#xff1a; payment > [driver > single,path > storage_path(logs/payment/.date(Y-m-d)..log),level > debug, ],在执行代码的方法里&#xff0c;加上以下代码&#xff1a; …

LeetCode刷题--思路总结记录

23-11-08每日一题&#xff1a;2609.最长平衡子字符串 链接&#xff1a;2609.最长平衡子字符串 总体思路&#xff1a; 平衡字符串要求“字符串前半段的0和后半段的1个数相同” > 分别记录0和1的计数结果&#xff0c;并最终取二者的最小值2字符串必须0开头&#xff0c;1结束 …

uniapp 请求接口的方式

在UniApp中&#xff0c;我们可以使用多种方式来发送请求接口。以下是几种常用的方式&#xff1a; 1、使用unmireuest方法:uni.reuest是uniApp提供的原生AP&#xff0c;可以发送HTTP请&#xff0c;我们可以通过传递一个图对象来设置请求的参数&#xff0c;RL、请求方法GET/POST…

刷题笔记day15-二叉树2

层序遍历 /*** Definition for a binary tree node.* type TreeNode struct {* Val int* Left *TreeNode* Right *TreeNode* }*/import ("container/list" )func levelOrder(root *TreeNode) [][]int {// 思路1&#xff1a;此处肯定要使用队列result : …

机器视觉在虚拟现实与增强现实中的作用

机器视觉在虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;中发挥着至关重要的作用。这些技术的核心是计算机视觉领域&#xff0c;重点是让计算机具有“看到”和理解周围世界的能力。 在虚拟现实中&#xff0c;计算机视觉用于创建和处理用户所见的虚…

Linux实现简易shell

文章目录 &#x1f984;0. shell&#x1f42e;1. 交互及获取命令行&#x1f437;2. 解析命令行&#x1f42f;3. 执行命令行&#x1f405;3.1 普通命令&#x1f405;3.2 内建命令 &#x1f981;4. 主函数逻辑及演示 本章代码gitee仓库&#xff1a;简易shell &#x1f984;0. she…

axios的介绍及配置多个服务器url

文章目录 1、常用的默认配置的是&#xff1a;baseURL、method、timeout2、axios配置多个服务器url3、配置api文件4、文件中使用 1、常用的默认配置的是&#xff1a;baseURL、method、timeout ① baseURL&#xff1a;设置url的基本结构&#xff08;请求根地址&#xff09;&…

解决vuex刷新数据丢失

Vuex 是一个 Vue.js 的状态管理库&#xff0c;它使得你可以在 Vue 组件之间共享状态。当你在 Vuex 中更新状态时&#xff0c;如果你遇到数据丢失或数据不一致的问题&#xff0c;可能需要进行深度复制或者使用其他方式来确保数据的完整性。 假设你有一个 Vuex 存储&#xff0c;…

昇腾CANN 7.0 黑科技:DVPP硬件加速训练数据预处理,友好解决Host CPU预处理瓶颈

在NPU/GPU上进行模型训练计算&#xff0c;为了充分使用计算资源&#xff0c;一般采用批量数据处理方式&#xff0c;因此一般情况下为提升整体吞吐率&#xff0c;batch值会设置的比较大&#xff0c;常见的batch数为256/512&#xff0c;这样一来&#xff0c;对数据预处理处理速度…

Harbor私有仓库

Harbor私有仓库 文章目录 Harbor私有仓库Harbor简介&#xff1a;Harbor 提供了以下主要功能和特性&#xff1a;优缺点&#xff1a;环境说明&#xff1a;部署harbor1.永久关闭防火墙和seliux&#xff0c;配置阿里云源&#xff0c;添加映射关系2.安装docker&#xff0c;开启docke…

手动修复 rabbitmq 报错 “Crash dump is being written to“

rabbitmq 报错: 2023-11-07 16:38:52.682 [error] emulator Error in process <0.368.0> on node rabbitrabbitmq-0.rabbitmq-discovery.openstack.svc.cluster.local with exit value: {shutdown,[{mnesia_loader,handle_exit,2,[{file,"mnesia_loader.erl"}…

spdk用户态块层详解

先通过回顾内核态的通用块层来详细介绍SPDK通用块层&#xff0c;包括通用块层的架构、核心数据结构、数据流方面的考量等。最后描述基于通用块层之上的两个特性&#xff1a;一是逻辑卷的支持&#xff0c;基于通用块设备的Blobstore和各种逻辑卷的特性&#xff0c;精简配置&…

linux安装jdk和weblogic易错点

1.版本问题&#xff0c;如果版本不兼容&#xff0c;安装的时候会报错&#xff0c;所有安装之前要确认好版本 jdk1.6&#xff0c;weblogic10 2.jdk安装后配置文件 JAVA_HOME ,CLASSPATH,PATH&#xff0c;配置问你的追加&#xff0c;用冒号链接 修改后需要用source 刷新下 3安装…

MCU常见通信总线串讲(四)—— SPI总线协议

&#x1f64c;秋名山码民的主页 &#x1f602;oi退役选手&#xff0c;Java、大数据、单片机、IoT均有所涉猎&#xff0c;热爱技术&#xff0c;技术无罪 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 获取源码&#xff0c;添加WX 目录 前言一…

PyCharm 无法登陆 Codeium 的解决方法

PyCharm 登陆 Codeium PyCharm 无法登陆 Codeium 的问题描述PyCharm 使用 token 登陆 Codeium PyCharm 无法登陆 Codeium 的问题描述 使用 PyCharm 登录 Codeium 时&#xff0c;单击 Login 无反应&#xff0c;单击侧边栏的 Codeium 图标也一直显示连接失败。 PyCharm 使用 to…