- インフラ
READ MORE
かどうかはわかりませんが、techrachoアドベントカレンダー23日目の記事です
Vimでファイルを編集するようにSlackに発言できたらいいな!
と思ったことはありませんか?
というわけで作ってみました
Slackをファイルのように開けます
https://github.com/yaasita/edit-slack.vim
適当なパッケージマネージャ等でインストールして下さい
以下一例です
Plug 'yaasita/edit-slack.vim'
NeoBundle 'yaasita/edit-slack.vim'
Plugin 'yaasita/edit-slack.vim'`
git clone https://github.com/yaasita/edit-slack.vim ~/.vim/pack/plugins/start/edit-slack.vim
その後、edit-slack.vim直下にedit-slackという実行バイナリを置いておきます(Slackとの通信に使います)
お使いの環境に合わせてダウンロードします
実行権限も付与しておきます
※windowsユーザは edit-slack.exe
という名前にしてください
cd /path/to/install/directory/edit-slack.vim
# download binary
mv linux-amd64-edit-slack edit-slack
chmod +x edit-slack
slackのAPIページ からトークンを取得します
.vimrcにトークンを追加します
let g:yaasita_slack_token = "xoxp-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxx"
" vimrcにトークン書くの嫌だという方は環境変数から取るとか工夫する感じで
" let g:yaasita_slack_token = $MY_SLACK_TOKEN
文字化けする場合は以下も追加ください
set fileencodings+=utf-8
set encoding=utf-8
ファイル名は以下の規則になってます
チャンネル一覧を開くには以下の様にします
# 順にチャンネル、プライベートグループ、ダイレクトメッセージ
vim slack://ch
vim slack://pg
vim slack://dm
一覧でgfコマンドを使えばカーソル下のチャットを開くことができます
チャットを開く場合は以下のようにします
# general チャンネルを開く
vim slack://ch/general
# プライベートグループ secret を開く
vim slack://pg/secret
# yaasitaさんとのダイレクトメッセージを開く
vim slack://dm/yaasita
書き込む場合は === Message ===
行の下になんか文字を入れて :w
で保存してくれればOKです
vim内から:e
, :tabe
等で開くことも可能です
ユーザーリスト、チャンネルリストをキャッシュしてるので2回目の方が早いですが、
ユーザの追加、チャンネルの追加があった場合はvimを再起動しないと反映しません
これで書き上げたソースコードの感動をすぐ届けられるようになります!
便利ですね(多分)
Go言語で書いたものがSlackとの間に入って、Vimにはファイルとして渡しています
(c) gopher stickers
以下の様にautocmdを定義すると、ファイルを開くときの挙動を定義できます
これにより、 slack://で始まるファイル名で開いたとき、保存したときにGoのバイナリをキックするようにしてslackと通信しています
autocmd BufReadCmd slack://* call edit_slack#OpenCh(expand("<amatch>"))
autocmd BufWriteCmd slack://* call edit_slack#WriteCh(expand("<amatch>"))
簡単ですね
というわけで、VimのBufReadCmd、BufWriteCmdを使った簡単なslackクライアントを作ってみました
Vim標準プラグインでも同じようなものがあって
vim scp://server_name//path/to/file
でSCP越しに編集できたりvim http://www.google.co.jp/
でHTMLソースを見たりvim hoge.txt.gz
で圧縮されたファイルを直接編集したりできます
こんな感じで、テキストファイルではないものをテキストファイルの様にVimで編集できるようになります
使い方次第でとても便利になりますので是非活用してみたくださいー
おわり