Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

qiitactl.vimをちょっと弄る

$
0
0

ここのスクリプトをちょっと弄ったので微細なチェックも兼ねてます。

まず最初にソース

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であればリロードもしてあげれば問題ないでしょう。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>