Sua função pode se tornar algo assim:
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
A primeira linha é sua. Em seguida, cria 3 variáveis:
- O primeiro usa
bufname("%")
para obter o nome do buffer atual (:h bufname()
). - O segundo usa a função
strftime
para obter a hora atual. Cuidado, é uma chamada direta para a função C, portanto, pode não ser portátil, consulte o documento para obter mais detalhes:h strftime()
(É claro que você pode alterar o formato do timestamp cf. doc) - O terceiro simplesmente contém algum texto.
As 3 últimas linhas usam a função put
( :h put
):
- O
!
é usado para inserir antes da linha atual (do contrário, quando você inicia na primeira linha eput
insere após a linha atual, você obtém uma primeira linha vazia). - O
=
é usado para chamar o registro de expressão, permitindo obter o conteúdo das variáveis.
Bônus Você pode tornar a função mais atraente usando uma lista e iterando por ela:
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