vim 删除以#开头的、 删除空白行、 加释

本文详细介绍了如何使用Vim编辑器进行正则表达式的匹配与替换操作,包括删除特定字符、注释行、空白行等实用技巧。通过实例演示,帮助读者快速掌握Vim中的正则表达式应用。

删除以#开头的、 删除空白行、 加释

1. 

删除以#开头的:    s/^#.*$//g 

如果有些先以空格开头,并且顺便想删除换行驶符:  s/^[ ]*#.*\n//g

2.

 

删除空白行:  g/^$/d 

3.

如果想加注释:   s/^/#/g

4.

 

vim中定位也比较方便,比如想查找注释掉的mod_evasinve20,这样就行了: [ /^#.*mod_evasive20.*$ ] 

5.(自己写的)

删除以//的开头的注释行: cat a2.C | grep -v '//' > a3.C

6.

在命令模式下用:%s/^\/\/.*$//

:g/\/\//d  把整行给删了.

 

7. 删除空白行

刪除沒有內容的空行
g/^$/d

刪除包含有空格組成的空行
g/^\s*$/d

除以空格或tab開頭到結尾的空行
g/^[ |\t]*$/d

转载于:https://www.cnblogs.com/blackchain/p/4748182.html

<think>好的,我现在需要帮助用户解决如何在Vim删除每行开头的“#”的问题。用户之前已经询问过多列删除的问题,现在这个看起来更具体,是针对行首的特定字符。首先,我应该回顾用户提供的系统级指令,确保回答符合格式要求,比如行内数学表达式用$...$,独立公式用$$...$$,并且结构清晰。 用户的问题是关于删除每行开头的“#”,可能用于取消注,比如在脚本或配置文件中。我需要考虑不同的方法,让用户可以根据具体情况选择最适合的。首先想到的肯定是使用替换命令,也就是substitute,这是Vim中处理这类问题最直接的方法。替换命令可以匹配行首的“#”并删除,但需要注意转义字符正则表达式的使用。 接下来,我需要考虑用户可能的需求差异。比如,是否所有行都有“#”,或者只有部分行有?如果用户只想删除行首的“#”而不影响行中间或末尾的,正则表达式需要精确匹配行首。这时候,使用^#来匹配行首的“#”是正确的。同时,用户可能需要全局替换,所以使用:%s命令。 另外,用户可能对Vim的不同模式不太熟悉,比如可视块模式或者宏录制。虽然替换命令是最直接的,但其他方法也可能有用,特别是如果用户需要更复杂的操作。比如,可视块模式可以选择多行的行首部分,然后删除,但这种方法在行首字符位置固定的情况下有效。而宏录制则适用于需要重复操作的情况,尤其是当删除条件稍微复杂时。 还要注意转义字符的问题。在替换命令中,如果用户要删除的是其他特殊字符,比如斜杠,可能需要转义,但“#”通常不需要转义,不过还是需要确认Vim中的正则表达式规则。此外,如果用户需要确认每次替换,可以添c标志,但根据问题描述,用户可能希望批量处理,所以默认不c。 可能用户还会关心如何操作多个文件,这时候可以建议使用:argdo或:bufdo命令结合替换命令,这样可以在多个文件中批量处理。但用户当前的问题可能只涉及单个文件,所以这个可以作为补充技巧提到。 需要检查是否有其他情况,比如行首可能有多个“#”,比如“##”,用户是否想删除所有连续的“#”。这时候正则表达式可以调整为^#\+,但用户的问题描述是删除每行开头的“#”,可能指单个,但最好在回答中提及这种情况,让用户知道如何调整。 另外,考虑用户可能的误操作,比如替换后无法撤销,应该提醒用户可以在替换前备份文件或者使用:undolist来撤销。不过这可能超出当前问题的范围,但作为注意事项可以简要提到。 最后,确保回答结构清晰,分点说明不同的方法,并给出示例,这样用户可以根据自己的情况选择。同时,保持语言简洁,符合中文习惯,避免技术术语过于复杂,必要时给出示例代码。</think>在 Vim删除每行开头的 `#`(常用于取消注),可通过以下方法实现: ----- ### 方法一:**正则替换命令**(最常用) ```vim :%s/^#// ``` - **分解说明**: - `:%s`:全局替换命令(所有行) - `^#`:匹配行首的 `#`(`^` 表示行首) - `//`:将匹配内容替换为空(即删除) - **扩展**: - 若行首有多个 `#`(如 `## text`),用 `:%s/^#\+//` 删除所有连续 `#` - 若需 **确认每次删除**,添 `c` 标志:`:%s/^#//gc` ----- ### 方法二:**可视块模式**(适合删除固定位置的 `#`) 1. 按 `Ctrl + v` 进入块选择模式 2. 用方向键选中所有行首的 `#` 列: ``` # Line1 # Line2 ↓ 选中第一列 ↓ ``` 3. 按 `d` 删除选中内容 ----- ### 方法三:**宏录制**(适合复杂场景或附操作) 1. 光标移动到任意行首的 `#` 处 2. 按 `qq` 开始录制宏(寄存器 `q`) 3. 操作序列: - `x`:删除当前 `#` - `j`:跳转到下一行 4. 按 `q` 停止录制 5. 执行宏: - `999@q`:重复操作直到文件末尾(或指定行数如 `10@q`) ----- ### 补充技巧 - **仅处理包含特定内容的行**: ```vim :g/pattern/s/^#// " 只在含 "pattern" 的行删除行首 # ``` - **跨文件批量操作**: ```vim :argdo %s/^#// | update " 对所有 :args 列表中的文件生效 ``` ----- ### 注意事项 1. 如果 `#` 不在行首(如前面有空格),改用 `:%s/^\s*#//` - `^\s*`:匹配行首的 0 或多个空格 2. 撤销操作:删除后可按 `u` 回退 3. 特殊字符场景:若需删除其他符号(如 `//`),注意转义:`:%s/^\/\///` 优先推荐 **方法一**,高效且覆盖场景广泛。若需精确控制列位置,可配合 **方法二** 的块选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值