Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim global命令,带有两个搜索范围,可拖动多个区段_Vim - Fatal编程技术网

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
 }}}