人権真骨頂

とくがたかいことでゆうめい

esa.io のVimプラグイン作った

作った.

これで,Vimから投稿できるようになった.

インストール

NeoBundleとPlugはこんな感じで,インストールできる.

" NeoBundle
NeoBundle 'upamune/esa.vim' , {'depends': 'mattn/webapi-vim' }

" Plug
Plug 'mattn/webapi-vim' | Plug 'upamune/esa.vim'

webapi-vim に依存している.

設定

チーム名を設定する必要がある.

let g:esa_team = 'docs'

初回起動時にアクセストークンを求められるので, Write権限があるアクセストークンをesa.ioから取得してきて入力する.これは初回だけでよくて, ~/esa-vim に保存されている.

使い方

基本的にはこんな感じでコマンドを入力する. [] で囲ってあるものは省略可能.

:Esa  [options] [path/to/category/filename]

こんな風にパスを省略して投稿すると,カテゴリは空で名前はカレントバッファのファイル名になる.

:Esa

選択範囲を投稿することもできる.

:'<,'>Esa

オプション

オプションは4つある.それぞれ組み合わせて使うことも可能.省略形は () 内に書いてある.省略形の場合,ハイフンは1つで良い.

" 投稿して共有用URLをクリップボードにコピーする
:Esa -c —public
  • wip(w)オプション
    • このオプションをつけて投稿するとWIPで投稿される
  • publlic(p) オプション
    • このオプションをつけて投稿すると共有されて,共有用のURLが返ってくる
  • clipboard(c) オプション
    • このオプションをつけて投稿すると,返ってきたURLをクリップボードにコピーする
  • browser(b)オプション
    • このオプションをつけて投稿すると,返ってきたURLをブラウザで開く

おわり

mattnさんのこれが,機能的にすごく近かったのでこれを改変するような形にした.Vimプラグインを書くのは初めてだったのでとても参考になってありがたかった.

実はこれを作成している時に,作成中の esa.vim 自体を esaに投稿しようとしたら,何故か400 BadRequestが返ってきてしまうことがあった.だけど投げているJSONは形式としては正しかったので,esa.ioに問い合わせてみるとAPI側に問題があったっぽくて,すぐに修正されたという 🎉 いい話 🎉 がある.esa.io 最高です. 😊

Vim プラグインということで,問題がいろいろありそうで怖い.何かあったらIssueにお願いします 🙇