在VIM中编辑长度各异的多行文本,寻求更高效编辑方法
高效批量处理Vim多行文本的方法
方法一:全局正则替换(最快最省心)
直接用Vim的正则全局替换,一步搞定所有行:
- 按
:进入命令模式 - 输入以下命令并回车:
%s/parser.add_argument('--\([a-z_]*\).*/\1 = /
原理:正则捕获--后面的变量名(比如name/debug/gpu_id),然后把整行替换成「变量名 + 空格=空格」的格式。
方法二:可视化块选中后局部替换
如果不想全局替换,只想处理选中的特定行:
- 按
Ctrl+v进入可视化块模式,选中所有目标行 - 按
:进入命令行,此时会自动出现范围标记:'<,'> - 输入替换命令并回车:
s/parser.add_argument('--\([a-z_]*\).*/\1 = /
方法三:宏录制(适合复杂自定义操作)
如果后续还有类似的复杂多行编辑需求,宏录制更灵活:
- 定位到第一行开头,按
q a开始录制宏(a是宏的名称,随便选个字母就行) - 执行以下操作:
- 按
f '跳到第一个单引号的位置 - 按
l移动到变量名的第一个字符(比如name的n) - 按
d f ,删除从当前位置到逗号的所有内容(此时行里只剩name) - 按
A切换到行尾插入模式,输入=,按Esc返回正常模式 - 按
j跳到下一行
- 按
- 按
q停止录制 - 按
@a执行宏处理下一行,按@@重复执行,或者直接2@a一次性处理剩下两行
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

