如何在VIM中限制长文件的工作范围

如何在VIM中限制长文件的工作范围,vim,Vim,有时我发现我需要编辑有很多冗余的长文件。当我通过搜索导航时,我不可避免地会出现在我不想出现的文件部分,因为它有一个匹配的搜索结果。(想象一个包含许多记录的长xml文件,每个记录都有相同的标记集) 我通常的做法是将我感兴趣的部分复制到另一个文件中,在那里进行编辑,然后将其合并回原始文件 我想知道VIM是否有办法临时定义一个工作范围,以便所有搜索甚至滚动都限制在该范围内,直到该范围被禁用。我建议。在执行更改并保存后,它将打开一个包含选定范围的新窗口,并将该内容带回文件 可以定义类似以下的命令来简化范

有时我发现我需要编辑有很多冗余的长文件。当我通过搜索导航时,我不可避免地会出现在我不想出现的文件部分,因为它有一个匹配的搜索结果。(想象一个包含许多记录的长xml文件,每个记录都有相同的标记集)

我通常的做法是将我感兴趣的部分复制到另一个文件中,在那里进行编辑,然后将其合并回原始文件


我想知道VIM是否有办法临时定义一个工作范围,以便所有搜索甚至滚动都限制在该范围内,直到该范围被禁用。

我建议。在执行更改并保存后,它将打开一个包含选定范围的新窗口,并将该内容带回文件

可以定义类似以下的命令来简化范围内的搜索:

command! -nargs=* Rs let a=split(<q-args>) | silent! exe '/\%>'.a[0].'l\%<'.a[1].'l\('.a[2].'\)'
这甚至允许正则表达式在第4行到第10行之间查找
foo
bar

:Rs 4 10 xml
:Rs 4 10 foo\|bar
与等效的搜索命令相比,这样可以节省一些输入:

\%>4l\%<10l\(foo\|bar\)

\%>4l\%您还可以使用
\%>l
\%Stack Overflow定义搜索范围。Stack Overflow是一个用于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。