如何在Vim中使用for循环插入带索引后缀的单词并置于同一行
解决方案
核心原因说明
你之前的写法每次循环都调用了put命令,而put默认每次插入都会新起一行,因此每个元素单独占一行。只需将所有元素拼接为完整字符串后,单次插入即可实现同行输出。
方法1:直接生成整行完整内容
执行以下命令:
:put =join(map(range(1,10), '"\"eno".v:val."\""'), ', ')
运行后将直接输出一行内容:
"eno1", "eno2", "eno3", "eno4", "eno5", "eno6", "eno7", "eno8", "eno9", "eno10"
如果需要直接生成完整的Python列表赋值语句,可以用以下命令:
:put ='"intf = [".join(map(range(1,10), '"\"eno".v:val."\""'), ", ")."]"
直接输出:
intf = ["eno1", "eno2", "eno3", "eno4", "eno5", "eno6", "eno7", "eno8", "eno9", "eno10"]
方法2:插入到当前光标所在位置
如果你需要把生成的内容插到已有行的指定位置,可按以下步骤操作:
- 移动光标到目标插入位置,进入插入模式
- 按下
Ctrl+R,再按下=,Vim底部会出现=提示符 - 输入
join(map(range(1,10), '"\"eno".v:val."\""'), ', ')后按回车
内容就会直接插入到光标所在位置,不会触发换行。
内容的提问来源于stack exchange,提问作者Avatar33
相关产品推荐
相关产品推荐

