私は自分の.vimrcに、私が現在編集しているファイルを最後の 'save'(:w)のタイムスタンプ(Modified)で自動的に更新する関数を持っています。vi/vimでファイルヘッダのファイルパスをautocmdで自動更新する方法は?
また、ファイル名とファイルパスも更新したいと思います。私はファイル名を更新するautocmdを持っています( "%")。ファイルパスについては、ドキュメントで読んだところからexpand( "%:p:h")を使うと、しかし、ファイル名)、それは動作しません
誰がどのように私のヘッダーにファイルパスを挿入する私に言うことができる私は更新したいファイルヘッダの
例:?私は
Modified: November 13 2016
Filename: myfile
Filepath: /home/me/path/tomyfile/
コード現時点:
autocmd BufWritePre * call UpdHeader()
function! UpdHeader()
" update path <<<<<< DOES NOT WORK >>>>>>>
silent! execute "1," . 10 . "g/Filepath:.*/s//Filepath: " .expand("%:p:h")
" update filename <<WORKS>>
silent! execute "1," . 10 . "g/Filename:.*/s//Filename: " . expand("%")
" update last mod date <<WORKS>>
silent! execute "1," . 10 . "g/Modified:.*/s//Modified: " . strftime("%d %B %Y%t%t%T (%z)%tBy : ") . $USER
...
endf
thx!あなたは:substitute
におけるセパレータとして/
の両方を使用するよう M
Ingoいただきありがとうございます、提案されたソリューションの3つすべてが期待通りに機能します:)。私は2番目のものを使用し、適切なエスケープで最高のようです。 (ファイル名の拡張も同様に変更されます) –
ああ、インゴ、 '(&magic?'&〜 ':' '))'部分はどうしたらいいですか? –
交換部品のエスケープは '' magic''設定に依存します。通常はオンですので、 '&'と '〜'もエスケープする必要があります。 –