Vim:使用表达式作为文件名
我正在进行一些调试,其中包括检查日志文件名“blah N.log”,其中N是一个整数。定期添加一个新的日志文件,我只想跳到下一个日志文件,而不是显式地执行Vim:使用表达式作为文件名,vim,scripting,editing,Vim,Scripting,Editing,我正在进行一些调试,其中包括检查日志文件名“blah N.log”,其中N是一个整数。定期添加一个新的日志文件,我只想跳到下一个日志文件,而不是显式地执行:e blah\N.log。我不能只做%vim*.log,然后再做:n,b/c不是所有的日志文件都存在 我得到了一个表达式,它生成下一个日志文件名: :echo substitute(expand('%'), ' \zs\d\+', \=submatch(0) + 1', '') 但我不知道如何将该表达式的结果传递给:e命令。有什么建议吗?这
:e blah\N.log
。我不能只做%vim*.log
,然后再做:n
,b/c不是所有的日志文件都存在
我得到了一个表达式,它生成下一个日志文件名:
:echo substitute(expand('%'), ' \zs\d\+', \=submatch(0) + 1', '')
但我不知道如何将该表达式的结果传递给
:e
命令。有什么建议吗?这里有一个方法,尽管我希望有一个更优雅的方法
:execute ':e ' . substitute(substitute(expand('%'), ' \zs\d\+', \=submatch(0) + 1', ''), ' ', '\\ ', '')
我必须添加第二个
substitute()
命令来转义文件名中的空格。这里有一个方法,尽管我希望有一个更优雅的方法
:execute ':e ' . substitute(substitute(expand('%'), ' \zs\d\+', \=submatch(0) + 1', ''), ' ', '\\ ', '')
我必须添加第二个
substitute()
命令来转义文件名中的空格。或者您可以将其包装到函数中。我会这样做:
function! GetNextLogfile()
"" store expression in a
"" let a=...
return a
endfunction
然后
:执行“编辑”GetNextLogfile()
您可能需要映射或缩写。或者您可以将其包装在函数中。我会这样做:
function! GetNextLogfile()
"" store expression in a
"" let a=...
return a
endfunction
然后
:执行“编辑”GetNextLogfile()
您可能需要映射或缩写。另一种方式::e=
显示表达式提示。输入适当的表达式(包括使用up作为表达式历史记录),然后点击
替换原始提示中的值
这使得按键:
:e <CTRL-R>=<Up><Enter><Enter>
:e=
这不仅仅是执行我的:exec
命令的:
,而是一个有用的技巧。还有另一种方法::e=
显示表达式提示。输入适当的表达式(包括使用up作为表达式历史记录),然后点击
替换原始提示中的值
这使得按键:
:e <CTRL-R>=<Up><Enter><Enter>
:e=
这不仅仅是重复执行我的
:exec
命令的:
,而是一个有用的技巧。+1:我希望使用一行程序,但这是一个值得注意的好方法如果您计划重复多次,可能值得在vimrc中包含一些功能…:)+1:我希望使用单行程序,但这是一个值得注意的好方法。如果您计划重复多次,可能值得在vimrc中包含一些功能……:)