我希望能够通过匹配模式来处理一个长文件,并且如果可能的话转到下一个模式,而不是让整个文件在屏幕上可见。编辑部分文件匹配<pattern>只在vim中
例如,假设我有一个所有以“Name:”开头的条目列表,我希望一次只查看一个条目,并且我想要“Name:”命中当我转到下一个条目时屏幕的顶部,以及以“Name:”开始的以下条目被切断。
我希望能够通过匹配模式来处理一个长文件,并且如果可能的话转到下一个模式,而不是让整个文件在屏幕上可见。编辑部分文件匹配<pattern>只在vim中
例如,假设我有一个所有以“Name:”开头的条目列表,我希望一次只查看一个条目,并且我想要“Name:”命中当我转到下一个条目时屏幕的顶部,以及以“Name:”开始的以下条目被切断。
你可以做这样的事情:
:g/^Name: /norm 999o
然后键入n
去到下一个结果。
这是一个哈克解决方案,但我想不出另一种方式。它在每场比赛下面创造了九百九十九条新线。完成后,您需要运行:g/^Name: /norm j999dd
来修复新行。
是不是没有像学校的老同学:
$ 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)
您可以修改搜索前锋的行为/反向始终将比赛在顶部屏幕。
:nnoremap n nzt
:nnoremap N Nzt
现在只需搜索你的模式(使用/
,*
等),并使用n
和N
分别向前/向后走,通过你的结果。
你的意思是你在窗口中有1000行,你给出一个模式,'/ foo',有500行匹配。你想读取500行,但只有一行在窗口中,直到你按下了一些东西,窗口显示下一个匹配的单行为你?你为什么要这个?你想用这些匹配的线做什么?你能告诉你的最终目标吗? – Kent 2014-08-29 14:59:36
我想编辑通常在vim中编辑的条目,但一次只显示一个匹配的模式。 – Padraig 2014-08-29 15:06:57