VIM中arg和argdo的使用介绍

本文详细介绍了使用VIM的args和argdo命令进行批量文本替换的操作方法,包括设置目录、标记文件、执行替换指令及避免操作过程中的提示干扰,同时还提供了在大量文件操作中关闭more选项的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在工作中常常需要对成百上千个纯文本进行批量替换操作,经过多次试验,我认为使用VIM是最好的办法。 
我们需要用到的是VIM的 args和  argdo 两个命令。 

args的用处是把需要进行批量操作的文件标记出来。例如: 

args d:\a\*.txt 

args d:\a\**\*.txt 

以上示例中的第一个是把D盘a目录下的所有纯文本文件作上标记,第二个则包括子目录。 

在VIM中可以使用pwd命令查看VIM的当前目录,可以使用cd命令改变当前目录的位置。例如: 

cd d:\a\ 

args会找到指定目录下的所有指定类型的文件并以编辑第一个。现在可以对所有的文件进行同一个替换操作。 

:argdo %s/\<x_cnt\>/x_counter/ge | update 

":argdo"命令以另一个命令为参数。该命令将对所有待编辑的文件都执行一次。 
"%s"替换操作将施于所有行上。它通过"\<x_cnt\>"查找"x_cnt"。其中"\<"和"\>"使得只有完整的单词会被匹配,这样"px_cnt"和"x_cnt2"中的x_cnt才可以免遭毒手。 
替换操作的标志"g"使得每行中的全部"x_cnt"都被替换。标志"e"则用于避免某些文件中一个"x_cnt"都找不到时的错误消息。否则的话":argdo"命令遇到这些错误就会终止整个操作。 
"|"用来分隔两个命令。后面的"update"命令会在文件有改变时进行保存。如果没有一个"x_cnt"被替换为"x_counter"那就不进行任何操作。 

在实际操作中还有一点小技巧,那就是如何避免在操作中频繁出现“请按Enter或其他命令继续”以及出现“更多”的提示而需要按空格键继续,如果要操作的文件数目很多,频繁地按回车或空格键会把人整疯的。 

在vimrc文件中作如下设定: 

set nomore 

打开more选项,列表消息会在全屏填满时暂停,通过nomore选项关闭就不会有暂停,列表消息会继续进行直到结束为止。


出自:http://www.webyang.net/Html/web/article_104.html

<think>好的,用户想了解Vim中的查找替换命令及示例。首先,我需要回忆一下Vim的相关命令结构,确保自己记得正确。记得Vim的基本替换命令是使用:s,但可能需要详细说明各个参数的作用,比如范围、搜索字符串、替换字符串修饰符。 接下来,用户可能需要一些基本的示例来理解如何应用这些命令。比如,替换当前行的第一个匹配项,或者全局替换所有匹配项。这时候需要给出具体的命令示例,比如:s/old/new/:s/old/new/g的区别。 然后,用户可能对更高级的功能感兴趣,比如跨多行替换、使用正则表达式或者确认替换。这时候应该提到范围的使用,比如%表示整个文件,或者使用行号指定范围。同时,正则表达式部分需要解释特殊符号如^$的用法,并给出示例,如替换行首的空格。 确认替换功能也是一个重要的点,用户可能不知道可以交互式地确认每个替换,这时候需要提到使用gc修饰符,并展示示例命令,比如%s/old/new/gc。 另外,用户可能对区分大小写的替换有疑问,所以需要说明\c\C的用法,或者如何通过模式开关来调整大小写敏感性。 还要注意引用站内资料中的内容,比如引用[1]中的命令结构,引用[2][4]中提到的高级技巧正则表达式,确保在回答中正确标注引用来源。例如,在解释基本命令结构时引用[1],在提到正则表达式时引用[2][4]。 最后,生成相关问题时要涵盖用户可能进一步询问的方向,比如如何忽略大小写、如何统计匹配次数、如何结合宏使用替换功能等。这样可以帮助用户更深入地学习解决问题。 需要确保整个回答结构清晰,分点说明,每个部分都有对应的示例引用标注。同时,语言要简洁明了,避免使用过于专业的术语,让不同层次的用户都能理解。检查是否有遗漏的部分,比如多文件替换或者使用寄存器,但可能这些内容超出了当前问题的范围,可以留到相关问题中提及。</think># Vim查找与替换命令详解 ## 一、基本命令结构 Vim的查找替换命令遵循以下核心格式: ```vim :[范围]s/搜索内容/替换内容/[修饰符] ``` - `范围`:指定操作范围(行号或模式匹配)[^1] - `s`:substitute命令的缩写 - `/`:分隔符(可用其他符号代替) - `修饰符`:控制替换行为的关键参数[^4] ## 二、常用操作示例 ### 1. 当前行替换 ```vim :s/old/new " 替换当前行第一个匹配 :s/old/new/g " 替换当前行所有匹配[^2] ``` ### 2. 全文替换 ```vim :%s/old/new/g " 替换整个文件所有匹配项 :1,10s/old/new " 替换1-10行内的匹配 ``` ### 3. 正则表达式应用 ```vim :%s/^ *//g " 删除所有行首空格(^表示行首) :%s/\d\+/NUM/g " 将所有数字替换为NUM(\+表示多个) ``` ### 4. 确认替换 ```vim :%s/old/new/gc " 每次替换前询问确认 " 按y确认,n跳过,a全部替换,q退出[^2] ``` ## 三、高级技巧 1. **保留部分内容**:使用`\zs``\ze`标记匹配边界 ```vim :%s/\v<(\w+)\_s+\1>/\1/g " 删除重复单词 ``` 2. **跨文件替换**:使用`:argdo`配合替换命令 ```vim :argdo %s/old/new/gc | update ``` 3. **寄存器应用**:使用指定寄存器内容替换 ```vim " 先复制内容到寄存器a :%s/pattern/<C-r>a/g ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值