💭

初めてVim Pluginを作った話し

2020/09/26に公開

キタ━(゚∀゚)━!祝初Zenn🎉🎉🎉

特になにがすごいこともないけど、
最近(でもないか)Githubとかのリポジトリで開発してて、Slackとかでsrcを共有する機会って多いかなと。リモートだから余計に。

そんな時いちいちGithub上で該当src探してとかやってられないので、サクッと対象行をURLに変換してくれるプラグインを作ってみた!!

(もしかしたら同類プラグイン既にありそうだけど、あえて探してない、Vimプラグイン作ってみたかったんだ)

で、できたのがこれ。
https://github.com/koizuss/shareline.vim

中身はすごいシンプルで、VimScriptで対象行やファイルパス、GitコマンドでコミットやリモートリポジトリのURL取得して変換、からのyankしてるだけ。

OSクリップボードとvimヤンクを共有しておけば、実行してSlackへペーストで共有できる!!!

インストール

(割愛🙇)

使い方

  1. 共有したいファイル開いて
  2. 共有したい行へカーソルを移動させて
  3. :ShareLine 実行

これで該当行のURLがyankされる。

usage

(一応)解説とか

  • リモートリポジトリのURL取得
    • git remote get-url origin で取得
      • origin以外への対応は今度考えよう
  • vimscriptからgit(コマンド)を呼び出す
    • system('..commands...')でコマンド実行結果が返ってくる
    • (gitコマンドは)必ず改行が入るから末尾改行トリムが必要
  • ファイルパス取得
    • vim上でcwdが変更できるのでちょっと工夫した
    • a. gitルートディレクトリまでのフルパス取得: git rev-parse --show-toplevel
    • b. カレントファイルのフルパス取得: expand("%:p")
    • ↑b. から a. を削除でルートディレクトリ名を除くファイルパスになる

(シンプル過ぎて書くこと無い、、💦)

あとがき

前からVimプラグイン書いてみたいなーと思ってて、ちょうど時間と適当なネタができたので、やってみた
簡単なものなら全然難しくない。VimScriptも違和感なくすごいシンプルに動く。
またなにかネタできたら作ってみます。

これで誰かが少しでも楽しい開発ができたら幸せです。
良いVimライフを🤘

Discussion