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

news/2024/7/21 5:52:47 标签: linux, vim, excel

使用 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.niftyadmin.cn/n/5156581.html

相关文章

物联网AI MicroPython学习之语法 sys系统相关

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; sys 介绍 sys 模块中提供了与micropython运行环境有关的函数和变量。 常量说明 常量定义常量说明sys.argv当前程序启动的可变参数列表sys.byteorder字节顺序 (‘little’ - 小端&#xff0c; ‘big’ - 大…

python中的__all__和__slots__

all 可用于模块导入时限制&#xff0c;如&#xff1a; from module import * 此时被导入模块若定义了__all__属性&#xff0c;则只有all内指定的属性、方法、类可被导入 若没定义&#xff0c;则模块内的所有将被导入。slots 用于限定类属性&#xff0c;如&#xff1a;class T…

dpdk 程序如何配置网卡收发包队列描述符配置?

问题描述 dpdk 程序在配置网卡队列时会涉及收发包队列描述符数量配置问题&#xff0c;收发包描述符的数量看似是一个简单的配置&#xff0c;却对转发性能有着一定的影响。实际业务程序中&#xff0c;收发包描述符大小配置一般参考 dpdk 内部示例程序配置进行&#xff0c;经验之…

ZZULIOJ 1105: 判断友好数对(函数专题) (C/C++)

1105: 判断友好数对&#xff08;函数专题&#xff09; 题目描述 输入两个正整数m和n&#xff0c;顺序输出m到n之间的所有友好数对。 如果两个整数的所有正因子之和&#xff08;包括1&#xff0c;不包括自身&#xff09;等于对方&#xff0c;就称这对数是友好的。例如&#xff1…

FreeRTOS源码阅读笔记1--task.c

在FreeRTOS中&#xff0c;创建任务有两种方式&#xff1a;动态创建和静态创建。区别就是&#xff1a;动态创建任务的栈和任务TCB是由操作系统动态分配&#xff08;malloc&#xff09;内存空间&#xff0c;任务删除时可以释放内存&#xff08;free&#xff09;&#xff1b;而静态…

ZZULIOJ 1106: 回文数(函数专题) (C/C++)

1106: 回文数&#xff08;函数专题&#xff09; 题目描述 一个正整数&#xff0c;如果从左向 右读&#xff08;称之为正序数&#xff09;和从右向左读&#xff08;称之为倒序数&#xff09;是一样的&#xff0c;这样的数就叫回文数。输入两个整数m和n&#xff08;m<n)&#…

NOIP2023模拟12联测33 游戏

题目大意 有 n n n个物理实验室&#xff0c;第 i i i个实验室有 a i a_i ai​个人&#xff0c;他们全都在打游戏。 同学 A A A可以选择进入一间实验室 i i i&#xff0c;然后让其中的所有 a i a_i ai​个人停止打游戏。 然后老师 B B B可以选择进入一间实验室 j j j&#xf…

dbgrid+clientdataset 能做到输入行整行变色吗?目前是整行变色后就不可以输入

dbgridclientdataset 能做到输入行整行变色吗&#xff1f;目前是整行变色后就不可以输入