1

我正在做一些调试,其中涉及检查日志文件名称“blah N.log”,其中 N 是整数。定期添加一个新的日志文件,我只想跳到下一个日志文件,而不是明确地做:e blah\ N.log. 我不能只做% vim *.log然后:n,b/c 并不是所有的日志文件都存在。

我有一个产生下一个日志文件名称的表达式:

:echo substitute(expand('%'), ' \zs\d\+', \=submatch(0) + 1', '')

但我不知道如何将该表达式的结果传递给:e命令。有小费吗?

4

3 回答 3

2

这是一种方法-尽管我希望有一种更优雅的方法。

:execute ':e ' . substitute(substitute(expand('%'), ' \zs\d\+', \=submatch(0) + 1', ''), ' ', '\\ ', '')

我必须添加第二个substitute()命令来转义文件名中的空格。

于 2009-03-09T18:04:23.413 回答
2

或者你可以将它包装在一个函数中。我会做以下事情:

function! GetNextLogfile()
    "" store expression in a
    "" let a=...
    return a
endfunction

然后

:执行“编辑”GetNextLogfile()

您可能需要映射或缩写。

于 2009-03-09T18:06:24.623 回答
1

还有一种方式::e <CTRL-R>=调出表情提示。输入适当的表达式(包括用 up 表示表达式历史),然后点击<Enter>替换原始提示中的值。

这使得击键:

:e <CTRL-R>=<Up><Enter><Enter>

这不仅仅是:<Up><Enter>重做我的:exec命令,而是一个有用的技巧,尽管如此。

于 2009-03-09T18:27:40.750 回答