読者です 読者をやめる 読者になる 読者になる

,,aのリスト表示でタイトルが出力されるようにしてみた(完結編)

vim howm

id:eclipseさんのコメント:

ビープ音ですか? plugin があとで読まれているなら howm-mode.vim 内の nmap には がついているので、そのせいでエラーが表示され、(howm-mode.vim側の) ,,a が定義されないと思います。私がテストしてみたところ、vimrc にnmap ,a ,g^=.*
で その に関するエラーは出ますが、その他は期待通りの動作になりました。エラーを消すなら、howm-mode.vim 内のその nmap コマンドを
:silent! nmap (以下略)
のような形にしてしまうといいかもしれません。

vim起動時に出るエラーは

パス文字列\howm-mode.vim
の処理中にエラーが検出されました:
行212:
E227: ,,aというマッピングはすでに存在します

というものだったのですが、言われたとおりにhowm-mode.vimの212行にsilent!をつけてみると....、エラーが出なくなりました!ホホウ!


ただし、やっぱり期待通りには動いていなくて、,,aと打ってもビープ音しかならず、リスト表示のウィンドウ分割すらされません。何もおきず。うーん。おかしいな。


:nmap で設定状況を見ると

n  ,,g           :call <SNR>32_FullTextSearchInput('egrep')<CR>   
n  ,,a           ,,g^=.*<CR>  

となっています。


と、ここまでやって、ふと気がつきました。
そのときの思考の流れ↓

再帰呼び出しがOFFになってるみたいだなー

そういえば、.vimrcの先頭のほうでそんな設定があったような

あぁぁぁあぁあぁぁl

:set noremap してるじゃん!

はずしてみる

できた!!!! ←今ここ

というわけで、やっと期待通りの動きになりました!



:set noremapですが、vimrcはいろんなところのコピペの継はぎになっていて、意味もわからないまま書いてある状態でした。
今後は注意しよう...。
再帰禁止が必要な場合は nnoremap h hoge とか単品で設定できますしね。


まとめ

というわけで、結局のところメモの一覧表示でタイトル行の内容も表示させたい場合は、次のようにすればよさそうです。

案A

.vimrcに

nmap <silent> ,,a ,,g^=.*<cr>

とかく。
これだけだと起動時にuniqueによるエラーが出るので、howm-mode.vimの212行目の先頭にsilent!をつけて

silent! nmap <unique> <silent> <Leader>,c :call <SID>OpenMemo(<SID>GetFilePath(0), 0)<CR>

とやる、ということでよさそうです。


と、ここまで書いて思いましたが、結局howm-mode.vimに手を入れるのであれば、

案B

howm-mode.vimの212行目を

nmap <unique> <silent> <Leader>,a :call <SID>FullTextSearchInput('egrep')<CR>^=.*<CR>

と書き換えてしまう。

案C

私の元ネタのようにShowDirectoryを改造する。


などの方法もアリな気がします。


ただ、ShowDirectory()をいじる方法だと元の関数の仕様を変更してしまうことになってあまりうつくしくないですね。修正箇所が1箇所ですむ、案Bがバランスがとれてるのかもしれません。

いや、でも、基本キーバインドの,,a ,,c ,,g ,,m ,,y ,,tのすべてを差し替えたくなる日がくるかもしれないので、212〜217行目まで全部silent!をつけておいて、後は.vimrcでどうにかするってのがいいのかな。


せっかくなので今回は案Aでいってみようと思います。


id:eclipse-aさん、ありがとうございました!!!