vim メモ環境つくろうとした

## はよ

* あんまり保存とかも意識しないでメモとりたい
* 整理せず雑に書きたいので検索強いほうがいい
* なるべく vim (or emacs) でやりたい
* markdown で書きたい
    * この条件追加すると howm, org-mode とかはいったんおいとくことになる
* Dropbox なり Evernote なり Simplenote なりで勝手に同期してほしい

⇒ いまのところ Vim でいいかんじの環境つくれなかったので、SublimeText の sublime-evernote を使ってみてる

## 探す

### Evervim というのあるぽい

* [github.com/kakkyz81/evervim](https://github.com/kakkyz81/evervim "kakkyz81/evervim")
    * [VimからEvernoteを編集するプラグインevervimを作成しました。 « wp.krks.net](http://wp.krks.net/2011/05/820/ "VimからEvernoteを編集するプラグインevervimを作成しました。 « wp.krks.net")
    * [EvernoteをVimで編集するEvervimというプラグイン « wp.krks.net](http://wp.krks.net/2013/01/1161/ "EvernoteをVimで編集するEvervimというプラグイン « wp.krks.net")
    * `+python` で vim をコンパイルする必要がある

### Geeknote というのあるぽい

* [Geeknote - Evernote console client for Linux, FreeBSD, OS X](http://www.geeknote.me/ "Geeknote - Evernote console client for Linux, FreeBSD, OS X")
    * [github.com/VitaliyRodnenko/geeknote](https://github.com/VitaliyRodnenko/geeknote "VitaliyRodnenko/geeknote")
    * [github.com/neilagabriel/vim-geeknote](https://github.com/neilagabriel/vim-geeknote "neilagabriel/vim-geeknote")
    * python で書かれた Evernote クライアントで、テキスト編集部分を任意のエディタで編集することができる

### なにがちがう

* [Evernote をコンソールから扱いたい - 何かの記録](http://d.hatena.ne.jp/moja8/20130226/1361813559 "Evernote をコンソールから扱いたい - 何かの記録")

> 前者の evervim はエディタ(Vim)に Evernote にポストする機能を付加するもので、+python で vim をコンパイルする必要がある。自分が Emacs を使っているならばこのようなアプローチでもかまわないと思う可能性があるが、自分としては、エディタにはテキスト編集以外の機能を盛り込みたくないので今回はパスした。タイトルとかタグとか全部含めてエディタの中で書けるのは良いなと思った。
> 
> 後者の geeknote は、python で書かれた Evernote クライアントで、テキスト編集部分を任意のエディタで編集することができる。いままではこれを使っていたが、新規ノートを作るときにエディタが使えず微妙に不便だった。ドキュメントをちゃんと読んでいなくて見つけられなかったのかもしれない。ぱっとみの印象では、インタラクティブにコマンドを実行するというより、バッチスタイルで使うのに便利なインタフェースに見えた。


## Geeknote 試す

> [Installation neilagabriel/vim-geeknote](https://github.com/neilagabriel/vim-geeknote#installation "neilagabriel/vim-geeknote")
> If you have not done so already, install Geeknote and login to make sure it is functional. You must login before attempting to use the plugin.

とのことなので、 まずは geeknote の CLI ツールを入れとく必要ある。


### homebrew 探したけどなかった

brew とかで楽にはいらないかなと思って search してみたけど、なかった。 

```console
$ brew search geeknote
No formula found for "geeknote".
Searching pull requests...
Closed pull requests:
Geeknote: Evernote Command Line Client (https://github.com/Homebrew/homebrew/pull/14202)
```

homebrew への PR はあったようだけど、弾かれている。

* [Geeknote: Evernote Command Line Client by ryanerwin · Pull Request #14202 · Homebrew/homebrew](https://github.com/Homebrew/homebrew/pull/14202 "Geeknote: Evernote Command Line Client by ryanerwin · Pull Request #14202 · Homebrew/homebrew")



### ふつうにインストールする

これ参考にしてインストールする。

[Geeknote - how to install](http://www.geeknote.me/install/ "Geeknote - how to install")

```console
$ cd ~/
$ git clone git://github.com/VitaliyRodnenko/geeknote.git
$ python setup.py install // pyenv 使ってるので sudo なし
$ geeknote
Version: 0.1
Geeknote - a command line client for Evernote.
Use geeknote --help to read documentation.
And visit www.geeknote.me to check for updates.
```

```console
$ geeknote login
Login: ******
Password:
Two-Factor Authentication Code: ******
```

`$ geeknote login` したら、二要素認証のコードを求められた。

Evernote で二要素認証設定してたっけなと思ったらしてなかったので、これを機に設定しといた。 
Google Authenticator が使える。

### vim-geeknote 入れる

`.vimrc` にこれ追記。

```diff
+ NeoBundle 'neilagabriel/vim-geeknote' " Evernote
+ " vim-geeknote {{{
+ " quick toggle
+ noremap <F8> :Geeknote<cr>
+ let g:GeeknoteFormat = "plain"
+ let g:GeeknoteScratchDirectory = $HOME . '/tmp'
+ autocmd FileType geeknote setlocal nonumber
+ " }}}
```


`let g:GeeknoteFormat = "plain"` の設定でかつ日本語を本文に含めるとエラーでる。

`let g:GeeknoteFormat = "markdown"` にするとでない。


```
"~/tmp/__Geeknote__L_KIDN" 5L, 43C written
'ascii' codec can't encode characters in position 130-132: ordinal not in range(128)
Error detected while processing function Vim_GeeknoteSaveNote:
line    5:
Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "/Users/qurage/dotfiles/vim/bundle/vim-geeknote/plugin/vim_geeknote.py", line 156, in GeeknoteSaveNote
    GeeknoteHandleNoteSaveFailure(note, e)
  File "/Users/qurage/dotfiles/vim/bundle/vim-geeknote/plugin/vim_geeknote.py", line 92, in GeeknoteHandleNoteSaveFailure
    vim.command('echoerr "%s"' % msg)
vim.error: Vim(echoerr):+------------------- WARNING -------------------+
|                                               |
| Failed to save note (see error above)         |
|                                               |
| Save buffer to a file to avoid losing content |
|                                               |
+------------------- WARNING -------------------+
```


### python のエンコード確認して utf8 にしてみる

```console
$ python -c 'import sys; print sys.getdefaultencoding()'
$ vim ~/.pyenv/versions/2.7.9/lib/python2.7/site-packages/sitecustomize.py
```

```diff
+ import sys
+ sys.setdefaultencoding("utf-8")
```

```console
$ python -c 'import sys; print sys.getdefaultencoding()'
utf-8
```

やったけど vim でノートに日本語を書くとやっぱエラーでる。

```
"~/tmp/__Geeknote__9vkiV5" 8L, 46C written
EDAM processing error: Invalid Thrift type code: 45
Error detected while processing function Vim_GeeknoteSaveNote:
line    5:
Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "/Users/qurage/dotfiles/vim/bundle/vim-geeknote/plugin/vim_geeknote.py", line 156, in GeeknoteSaveNote
    GeeknoteHandleNoteSaveFailure(note, e)
  File "/Users/qurage/dotfiles/vim/bundle/vim-geeknote/plugin/vim_geeknote.py", line 92, in GeeknoteHandleNoteSaveFailure
    vim.command('echoerr "%s"' % msg)
vim.error: Vim(echoerr):+------------------- WARNING -------------------+
|                                               |
| Failed to save note (see error above)         |
|                                               |
| Save buffer to a file to avoid losing content |
|                                               |
+------------------- WARNING -------------------+
```



## 結局メモ用には Sublime Text を試すことにした

vim-geeknote のほうは日本語環境で一部エラーが出るので、 sublime text のプラグイン試した。

* [bordaigorl/sublime-evernote](https://github.com/bordaigorl/sublime-evernote "bordaigorl/sublime-evernote")

こっちのほうがリストの取得とかは(体感では)速い。

Evernote に パース前の md をプレインテキストで保存したかったんだけど、それはできなさそう。

ひとまずこっち使ってみるけどあんまりエディタあれこれ移動するのもなーというかんじがある。


## 他にもいくらでも方法ある

### `:JunkFile` コマンドを作って利用するという手もある

テンポラリなファイルつくってぼこぼこ Dropbox とかに保存するならこういうのもべんりそう。

grep 以上の検索機能求めなければこれで良さそう。

* [vim-jp » Hack #181: Vimで使い捨てのファイルを作成する](http://vim-jp.org/vim-users-jp/2010/11/03/Hack-181.html "vim-jp » Hack #181: Vimで使い捨てのファイルを作成する")

### markdown の preview に previm を使う手もある

プレビューには marked2 使ってるけど、これなくても vim だとやっぱなんでもある。

* [Vim - 依存ツールなしにMarkdownプレビューできるprevimプラグインを作った - ぼっち勉強会](http://kannokanno.hatenablog.com/entry/2013/06/11/225806 "Vim - 依存ツールなしにMarkdownプレビューできるprevimプラグインを作った - ぼっち勉強会")