5

\=exprコマンドで使用できます:s。たとえば、タイムスタンプ形式をインプレースに変換するには、次のようにします。

:%s/\v<\d{10}>/\=strftime('%c', submatch(0))/g

ただし、組み込み関数の機能は非常に限られています。タイムスタンプを解析するには、次のようなPythonスクリプトを使用します。

$ python
>>> import datetime
>>> d = 'Apr 11 2012'
>>> datetime.datetime.strptime(d, '%b %d %Y').isoformat()
'2012-04-11T00:00:00'

py-exprこれを:sコマンドに埋め込む方法は?

:%s/\v\w+ \d{2} \d{4}/\={?py-expr?}/g

ありがとう!

4

1 に答える 1

8

少なくとも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

。最近のvimがない場合は、この場合はpyevalをエミュレートできます。

function Pyeval(expr)
    python import json
    python vim.command('return '+json.dumps(eval(vim.eval('a:expr'))))
endfunction

pyeval、次に上記のコードを。に置き換えますPyeval

于 2012-11-04T17:20:04.250 に答える