在Vi/Vim中如何从当前光标复制子串到逗号、空格或右括号位置
Vi快速复制指定范围内容的方法
核心逻辑
Vi中复制(yank)命令遵循 y + 动作范围 的语法,你可以通过字符查找动作直接定位到终止位置,无需统计字符数。
场景1:复制到下一个指定字符(单分隔符场景)
你的场景里键值对默认以逗号分隔,直接用以下命令即可:
- 如果你要复制的内容不包含末尾的逗号(刚好得到完整键值对
'neo':(3,1)):将光标定位到键值对起始位置,输入yt,- 命令解释:
y=复制,t=移动到目标字符前,,=目标字符为逗号
- 命令解释:
- 如果你需要包含末尾的逗号:输入
yf,f=移动到目标字符所在位置,会把逗号一起复制
如果是字典最后一个没有逗号的键值对,把逗号替换成大括号即可:输入 yt} 就能复制到字典末尾的}之前。
场景2:复制到空格/右括号/逗号中最先出现的字符(多分隔符场景)
如果你不确定下一个分隔符是空格、)还是逗号,可以用正则查找匹配任意分隔符:
输入 y/[ ,)] 后按回车键即可
- 命令解释:
/[ ,)]是向后查找第一个匹配空格、逗号、右括号的位置,复制范围为当前光标到该位置之前。
命令补充说明
- 如果目标字符在光标前方,把
t/f换成大写的T/F即可向前查找 - 复制完成后按
p即可在光标后粘贴,按P在光标前粘贴
内容的提问来源于stack exchange,提问作者Classified
相关产品推荐
相关产品推荐

