Vim global命令,带有两个搜索范围,可拖动多个区段
我想创建一个全局命令来拖动文本的多个部分:Vim global命令,带有两个搜索范围,可拖动多个区段,vim,Vim,我想创建一个全局命令来拖动文本的多个部分: :g/BEGIN/.,/END/yank A 我的想法是,在寄存器A中,将出现在标记“开始”和“结束”之间的文件中的(多个)部分组合起来: 不幸的是,这似乎在VIM上表现得有些混乱。有时全局文件似乎会选择多个部分(即,它不会在找到的第一个“结束”时停止选择,而是选择更多的部分,有时是单个部分。对于同一文件,同一全局文件选择的行数似乎会根据不相关的编辑而随机变化 显然我做错了什么。有正确的语法吗?选择并拖动标记所描绘的多个部分?我没有在网上找到太多验证
:g/BEGIN/.,/END/yank A
我的想法是,在寄存器A中,将出现在标记“开始”和“结束”之间的文件中的(多个)部分组合起来:
不幸的是,这似乎在VIM上表现得有些混乱。有时全局文件似乎会选择多个部分(即,它不会在找到的第一个“结束”时停止选择,而是选择更多的部分,有时是单个部分。对于同一文件,同一全局文件选择的行数似乎会根据不相关的编辑而随机变化
显然我做错了什么。有正确的语法吗?选择并拖动标记所描绘的多个部分?我没有在网上找到太多验证此语法的方法-尽管有很多文档用于ex范围、搜索范围和带有全局标记的范围,但我从未见过这三种组合方式。After Lieven验证了我的语法是正确的,我发现问题与文本中折叠的使用有关。当我展开所有文本时,我得到了预期的行为 当我折叠文本时,global命令并不总是找到第一个“END”标记,有时它似乎会拉扯整个文档 这对我来说似乎是一个bug——为什么尽管存在折叠,全局命令的第一个搜索项仍然有效,而第二个搜索项不起作用?但这可能是预期的行为 以下是一些显示问题的示例文本:
{{{
BEGIN
111
END
}}}
{{{
BEGIN
222
END
}}}
展开时,命令g/BEGIN/,/END/yank A
查找正确的文本,折叠时,全局返回错误
在我的场景中,“展开文本”是一个可行的解决方案,因此为了子孙后代,我在这里发布。对于您给定的输入,我没有发现任何问题,我经常使用这种构造,没有任何问题(到目前为止)。您可以将其缩短为
g/BEGIN/,/END/y a
。您可以提供您提到的被损坏的输入吗?我不知道这是否是一个错误,但这不是我所期望的。很高兴知道,谢谢。正确的分析。这不是一个错误;:yank
等Ex命令可以在所有折叠行上工作;您确实需要将折叠转换为把这个作废。
{{{
BEGIN
111
END
}}}
{{{
BEGIN
222
END
}}}