我可以使用\=expr的:s命令.例如,要在inplace中转换时间戳格式:
:%s/\v<\d{10}>/\=strftime('%c', submatch(0))/g
Run Code Online (Sandbox Code Playgroud)
但内置功能的功能非常有限.要解析时间戳,我想使用这样的python脚本:
$ python
>>> import datetime
>>> d = 'Apr 11 2012'
>>> datetime.datetime.strptime(d, '%b %d %Y').isoformat()
'2012-04-11T00:00:00'
Run Code Online (Sandbox Code Playgroud)
如何嵌入这个py-expr进入:s命令?
:%s/\v\w+ \d{2} \d{4}/\={?py-expr?}/g
Run Code Online (Sandbox Code Playgroud)
谢谢!
如果您至少拥有vim-7.3.569,那么您可以执行以下操作:
:python import datetime
:%s/\v\w+\ \d{2}\ \d{4}/\=pyeval('datetime.datetime.strptime(vim.eval("submatch(0)"), "%b %d %Y").isoformat()')/g
Run Code Online (Sandbox Code Playgroud)
.如果你没有最近的vim,你可以在这种情况下模仿pyeval:
function Pyeval(expr)
python import json
python vim.command('return '+json.dumps(eval(vim.eval('a:expr'))))
endfunction
Run Code Online (Sandbox Code Playgroud)
,然后用pyeval上面的代码替换Pyeval.
| 归档时间: |
|
| 查看次数: |
672 次 |
| 最近记录: |