我正在做一些调试,其中包括检查日志文件名称“blah N.log”,其中N是一个整数。定期添加一个新的日志文件,我只想跳到下一个日志文件,而不是明确地执行:e blah\ N.log
。我不能只做% vim *.log
然后:n
,b / c并不存在所有日志文件。
我有一个表达式,它产生下一个日志文件名:
:echo substitute(expand('%'), ' \zs\d\+', \=submatch(0) + 1', '')
但我无法弄清楚如何将该表达式的结果传递给:e
命令。有什么提示吗?
答案 0 :(得分:2)
这是一种的方式 - 虽然我希望有一种更优雅的方式。
:execute ':e ' . substitute(substitute(expand('%'), ' \zs\d\+', \=submatch(0) + 1', ''), ' ', '\\ ', '')
我必须添加第二个substitute()
命令来转义文件名中的空格。
答案 1 :(得分:2)
或者你可以将它包装在一个函数中。我会做以下事情:
function! GetNextLogfile()
"" store expression in a
"" let a=...
return a
endfunction
然后
:执行“编辑”GetNextLogfile()
您可能需要映射或缩写。
答案 2 :(得分:1)
另一种方式::e <CTRL-R>=
调出表达提示。输入适当的表达式(包括用于表达式历史记录),然后单击<Enter>
替换原始提示中的值。
这使得击键:
:e <CTRL-R>=<Up><Enter><Enter>
这不仅仅是:<Up><Enter>
重做我的:exec
命令,而是一个有用的技巧。