2014-08-29 66 views
0

我希望能够通过匹配模式来处理一个长文件,并且如果可能的话转到下一个模式,而不是让整个文件在屏幕上可见。编辑部分文件匹配<pattern>只在vim中

例如,假设我有一个所有以“Name:”开头的条目列表,我希望一次只查看一个条目,并且我想要“Name:”命中当我转到下一个条目时屏幕的顶部,以及以“Name:”开始的以下条目被切断。

+0

你的意思是你在窗口中有1000行,你给出一个模式,'/ foo',有500行匹配。你想读取500行,但只有一行在窗口中,直到你按下了一些东西,窗口显示下一个匹配的单行为你?你为什么要这个?你想用这些匹配的线做什么?你能告诉你的最终目标吗? – Kent 2014-08-29 14:59:36

+0

我想编辑通常在vim中编辑的条目,但一次只显示一个匹配的模式。 – Padraig 2014-08-29 15:06:57

回答

0

你可以做这样的事情:

:g/^Name: /norm 999o 

然后键入n去到下一个结果。

这是一个哈克解决方案,但我想不出另一种方式。它在每场比赛下面创造了九百九十九条新线。完成后,您需要运行:g/^Name: /norm j999dd来修复新行。

1

是不是没有像学校的老同学:

$ ex filename 
:vim foo % 
(do your editing on this line) 
:cn 
(more editing) 
:wq 

使用:cp移动到前一个匹配行,:p看到当前行(在命令后面,例如)。

或者,你可以用Vim打开文件并激活一个稍微有用Ex模式与gQ

$ vim filename 
gQ 
:vim foo % 
(and so on) 
0

您可以修改搜索前锋的行为/反向始终将比赛在顶部屏幕。

:nnoremap n nzt 
:nnoremap N Nzt 

现在只需搜索你的模式(使用/*等),并使用nN分别向前/向后走,通过你的结果。