渡された引数と私が設定したいくつかのzsh変数に基づいて新しいファイルを生成するVIM関数を作成しました。
ファイルが生成されるとすぐに、ファイルにヘッダーを挿入するようにこの関数を拡張できますか? 1行目にファイル名を、2行目にタイムスタンプを、3行目に「Instructor:」を挿入してみました。
fu! CreateNote(subject, title)
exe "e! " . fnameescape($NOTES_DIR . "/MS" . g:year . "/" . a:subject
. "/" . a:title . ".txt")
endfunction
答え1
あなたの機能は次のとおりです。
function! CreateNote(subject, title)
exe "e! " . fnameescape($NOTES_DIR . "/MS" . g:year . "/" . a:subject . "/" . a:title . ".txt")
let l:filename=bufname("%")
let l:timestap=strftime("%c")
let l:text="Instructor: "
put! =l:filename
put! =l:timestap
put! =l:text
endfunction
最初の行はあなたのものです。次に3つの変数を作成します。
- 最初は、
bufname("%")
現在のバッファの名前を取得するために使用されます(:h bufname()
)。 - 2番目は、この関数を使用して
strftime
現在時刻を取得します。 C関数への直接呼び出しなので、移植可能ではない可能性があります。詳しくはマニュアルをご覧ください。:h strftime()
(もちろんタイムスタンプ形式を変更できます。文書を参照) - 3番目にはいくつかのテキストのみが含まれています。
その後、最後の3行はこの関数を使用しますput
(:h put
):
!
現在の行の前に挿入します(そうでない場合は、最初のput
行から始めて現在の行の後に挿入すると空の最初の行が得られます)。=
変数の内容を取得するために式レジスタを呼び出すために使用されます。
ボーナスリストを使用して繰り返して、関数をよりセクシーにすることができます。
function! CreateNote(subject, title)
exe "e! " . fnameescape($NOTES_DIR . "/MS" . g:year . "/" . a:subject . "/" . a:title . ".txt")
let l:header=[ bufname("%"), strftime("%c"), "Instructor: " ]
for l:line in l:header
put! =l:line
endfor
endfunction