himetani's blog

備忘録など。

VimでSimplenoteを編集する

はじめに

ちょっとしたメモを取るときにどんなツールを使っていますか?
僕は今まで、特に何も考えずにEvernoteを使っていました。

しかし、最近はEvernoteに不満を感じてました。

ということで、Evernoteと同じような感じで、Vimキーバインド使いたい、Markdown使いたいと思っていろいろやってみました。

経緯

最初はAtommarkdownエディタとして使ってローカルにファイル保存しとけばいいか、という感じで落ち着きかけました。

PCで書いたメモをスマホと連携させようとしたときに、Dropboxに.mdファイルを置いて、スマホ用のMarkdownのviewerを設定して、、、とか考えだすと面倒くさくなってきたので、おとなしくクラウドサービスを使うことにしました。

Markdownエディタで有名なのは、kobitoとか有名で使い勝ってがよさそうなものもあったのですが、単なるメモとして使いたいだけなので、なるべくQiitaみたいなサービスを使う前提じゃなくて、本当に薄いツールを探しました。

結局「Evernote substitute」とかでググってみると、見つけました。
その名もsimplenote

サービスは非常にシンプル。

うん、素晴らしい。

あとは、Vimと連携できれば最強なのですが、もちろんありました。

simplenote.vim

ということで、simplenote.vimを使うためにやった設定を書いていきます。

やったこと

1. Simplenoteにアカウントを作成

まずは、simplenoteでアカウントを作成しましょう。

2. simplenote.vimのインストール

Vimプラグインをインストールしましょう。
Neobundle.vimを使うと簡単にインストールすることができます。

#.vimrc

NeoBundle 'mrtazz/simplenote.vim'

ホームディレクトリ直下の.vimrcを編集し、:NeoBundleInstallコマンドを実行します。

:h Simplenote と入力して、Simplenoteコマンドのヘルプが表示されるようになっていればインストールできています。

3.simpletenote.vimでアカウントの設定

.vimrcにsimplenoteのアカウント情報を記します。

#.vimrc
NeoBundle 'mrtazz/simplenote.vim'

let g:SimplenoteUsername = "XXX"
let g:SimplenotePassword = "XXX"

最近では、Unix系の設定ファイル(.~rcファイル)をGithub等にあげておくのが流行ってます。1 アカウント情報を載せた.vimrcをGithubにあげてしまうとセキュリティ的にだいぶまずいので、アカウント設定は.simplenotercファイルに書いて、.vimrcから.simplenotercを呼び出すようにしました2

#.simplenoterc

let g:SimplenoteUsername = "XXX"
let g:SimplenotePassword = "XXX"
#.vimrc

NeoBundle 'mrtazz/simplenote.vim'

source .simplenoterc
4. simplenote.vimの設定

個人的に.vimrcがごちゃごちゃになるのがあまり好きではないので、simplenote.vimの設定は.simplenotercに記述することにしました3

詳しくはドキュメントに載ってますがとりあえずの設定として以下の二つの設定をしました。 1.:Simplenoteコマンドで編集するときのバッファのファイルタイプをマークダウンに設定する。 2.:Simplenoteコマンドでvimのウィンドウを分割するときに左右に分割するように設定する。

#.simplenoterc
let g:SimplenoteUsername = "XXX"
let g:SimplenotePassword = "XXX"

let g:SimplenoteFiletype = "markdown"
let g:SimplenoteVertical = 1

:Simplenote -nで新しいメモを作成したり、:Simplenote -lでメモの一覧を見てメモを選んで編集、などの基本的な操作が行えるようになります。
もちろんMarkdown対応です。

最後に、おそらくmemoとtodoという名前のメモをたくさん使うことになるので、vimのカスタムコマンドの設定をしました。
さらに、shellからそのままmemoやtodoを呼び出せるようにaliasの設定を行いました。
ついでに、メモの一覧をnote、新しいメモをnewを実行すると呼び出せるように設定しました。

#.simplenoterc
let g:SimplenoteUsername = "XXX"
let g:SimplenotePassword = "XXX"

let g:SimplenoteFiletype = "markdown"
let g:SimplenoteVertical = 1

command Todo Simplenote -o XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
command Memo Simplenote -o XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

XXXXの部分には、メモのkeyを記述します。
メモのキーは、:Simplenote -Vで確認できます。

#.bashrc of .zshrc
alias note='vim -c "Simplenote -l"'
alias todo='vim -c Todo -c on'
alias memo='vim -c Memo -c on'
alias new='vim -c "Simplenote -n"'

TodoコマンドやMemoコマンドで開くと、ウィンドウが二つ開いてしまうので、onコマンドでウィンドウを一つになるように設定しています。

最後に

 リアルタイムプレビューはどうあがいてもできなかったので、妥協してます。
previmquickrun.vimとか、試してみたのですが、simplenote.vimREST API経由で取ってきて、vimのバッファに吐かれてるだけなので、リアルタイムで変更を検知するとかはできないみたいでした。

例えば、:PrevimOpenを何度もやればプレビュー自体は開くのですが、何度もブラウザのタブが開いてしまい気持ちが悪いのでやめました。

ていうか、リアルタイムプレビューしたいなら、専用のmarkdownエディタ、もしくはsimplenoteのWebアプリ使ったほうがよさそうでした。(vimキーバインドはないけど。)