VIM関数は、ヘッダーにファイル名とタイムスタンプを含む新しいファイルを作成するために使用されます。

VIM関数は、ヘッダーにファイル名とタイムスタンプを含む新しいファイルを作成するために使用されます。

渡された引数と私が設定したいくつかの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

関連情報