ここのスクリプトをちょっと弄ったので微細なチェックも兼ねてます。
まず最初にソース
qiitactl.vim
" qiitactlのmarkdown置き場lets:qiitaCtlDir=''function!s:qiitaFetch() abort
exec 'cd '.s:qiitaCtlDirlets:qiitaChk= getline(3)lets:isFetchSingle=0ifs:qiitaChk=~'\v^url: https:\/\/qiita\.com.+\x+$'
echo 'Fetching single post.'lets:isFetchSingle=1lets:qiitaCmd= system('qiitactl fetch post --id='.s:qiitaChk[-20:-1])else
echo 'Fetching entire posts.'lets:qiitaCmd= system('qiitactl fetch posts')endif
echo s:qiitaCmd.'...done.'ifs:isFetchSingle==1| edit!|endifendfunctionfunction!s:qiitaUpdate() abort
exec 'cd '.s:qiitaCtlDirlets:qiitaCmd= system('qiitactl update post '''.expand('%:p').'''')
echo s:qiitaCmd.'...done.'
edit!endfunctionfunction!s:qiitaGenerate(file) abort
exec 'cd '.s:qiitaCtlDirlets:qiitaCmd= system('qiitactl generate file '''.a:file.'''')
exec 'new '.s:qiitaCtlDir.'\'.s:qiitaCmd
%s/\v%(tags:)@<=\s+\[\]/^M- Vim/g " 正規表現中の^Mは<C-v><CR>に置き換えてください。
endfunctionfunction!s:qiitaCreate() abort
exec 'cd '.s:qiitaCtlDirlets:qiitaCmd= system('qiitactl create post --tweet '''.expand('%:p').'''')
echo s:qiitaCmd.'...done.'
edit!endfunction
command! QiitaFetch calls:qiitaFetch()
command! QiitaUpdate calls:qiitaUpdate()
command!-nargs=1 QiitaGenerate calls:qiitaGenerate(<f-args>)
command! QiitaCreate calls:qiitaCreate()
手が入ったのはs:qiitaFetch()
で、要は単発Fetchを出来るようにしようってことです。
別に、勝手に選んでも構わないのであろう?
VimからQiitaにアクセスするにしても、自分の場合は投稿と更新だけできればいいので、引数を取って柔軟にFetchする必要はないわけです。ただYAML部分から今のバッファがqiitactlのmarkdownであることを確認して、そうであれば単発Fetch、そうじゃなければ全体Fetchをするという方法をとっています。
qiitactlからの単発ページのFetchにはページのIDが必要で、それを確認するためにgetline()
を使っているのですが、念の為qiitactlのファイルであることがより確認しやすい3行目を使って確認した後、末尾を切り出してIDを取得します。あとは条件分岐をして、単発のFetchであればリロードもしてあげれば問題ないでしょう。