Hatena::Grouphackathon

zrail (a.k.a. tobira17, h14i, ...) の Learning Log

2017-02-11

[][]最近のマイヴィムアールシー 00:19 最近のマイヴィムアールシー - zrail (a.k.a. tobira17, h14i, ...) の Learning Log を含むブックマーク はてなブックマーク - 最近のマイヴィムアールシー - zrail (a.k.a. tobira17, h14i, ...) の Learning Log

外部プラギンに関して

一時期はプラギンジャンキー的な感じで色々入れてたんだけど、最近はだいぶ落ち着いてきた。

といってもやっぱり手放せないものはそれなりにある。

例えば kana さんの vim-*-user (とその上に乗る拡張)とか、 thinca さんの quickrun とか ref とか。

それから vim 本体には(まだ)バンドルされていない、新しめの言語用(例えば vim-rust)のプラギンとか。

インサートモードに関して

上とも関連するんだけど、自動(でポップアップまでしてくれる系の)補完プラギンを使うのを止めた(スニペット展開の emmet.vim は使ってるけど)。

使うのを止めた理由はいくつかあるんだけど、一番大きい理由としては動作の重さがある。

どういう状況で重いかは設定にもよるし一概には言えないんだけど、思い出に残るつらかったシチュエーションは rubycomplete.vim の編集中……。

オリジナルの rubycomplete.vimVim script の中で if_ruby を使ってたり #get_completions がめっちゃ長かったりと重くなりそうな要素がいくらかあるので仕方無いと言えば仕方無いんだけど、ファイルサイズ自体はそれほどじゃない(Vim 8.0-324 時点での同梱版 rubycomplete.vim は 833行、24361バイト)。

こいつを開くたびに自動補完をオフにする、あるいはそのための autocmd の設定をするのは面倒だったので、自動補完なプラギンの使用自体を止めた。

ただし念の為に書いておくと、自動(でポップアップまでしてくれる)補完プラギン自体が駄目なわけではない。

よく知らない言語の勉強中や書き捨てファイルの編集中なんかには非常に役立つと思う。

ただまぁ、僕の場合は <C-X> な補完で十分だなぁと思ったわけです。

&include と &define に関して

とりあえず $VIMRUNTIME に移動して

grep -E 'include\s*=' **/*.vim

とか

grep -E 'define\s*=' **/*.vim

すると分かるんだけど、大抵のファイルタイプのデフォルト値はあんまり良くないんですよね。特に &define のほう。

&path は環境にもよるし、適宜頑張って設定する(か、バッファ毎にベタっと設定するか)しかないんだけど、上の2つはもっと頑張れるんじゃないかなぁと思ってて、色々試してみている。

例えば \@> (強欲な量指定子)を(適切に)使ったりすると検索対象が多い場合にいくらか速くなるような気がしている。

追記。

&defineは本来?マクロ定義の検索のためにあるんだけど、現在はマクロ定義がないようなファイルタイプも数多く存在していて、そのようなファイルタイプで[dとかi_CTRL-X_CTRL-Dを使わないのは勿体ないよなぁ、というスタンスです。

2015-08-23

[][][]universal-ctags の Dscanner ドライバ書いた 01:24 universal-ctags の Dscanner ドライバ書いた - zrail (a.k.a. tobira17, h14i, ...) の Learning Log を含むブックマーク はてなブックマーク - universal-ctags の Dscanner ドライバ書いた - zrail (a.k.a. tobira17, h14i, ...) の Learning Log

例によって gist 。

Dscanner driver for universal-ctags ? GitHub


適当に設置すれば動くと思う。

--list-kindsを見るようになってるのがつらいなぁ。今回のケースだとハードコードせざる得ないっぽい。(dscanner が受け付けない)


なんか最近 Dscanner の周辺ツールばかり書いてるけど、実はあんまり Dscanner 使ってない……。

本当は DCD をちゃんと使いたいんだけど、 vim のプラギンの出来がイチマチなんだよなぁ。

自分で補完関数書いてしまおうかとも思ってるけど、そこまでのやる気も出ず。

2015-07-24

[][]compiler/dscanner.vim 書いた 06:06 compiler/dscanner.vim 書いた - zrail (a.k.a. tobira17, h14i, ...) の Learning Log を含むブックマーク はてなブックマーク - compiler/dscanner.vim 書いた - zrail (a.k.a. tobira17, h14i, ...) の Learning Log

大したことしてないのでgistに置いてあります。

https://gist.github.com/h14i/117d5d2f95d953e072b6


以下メモ。

久しぶりにコンパイラプラギン書いて知ったんだけど、エラーとワーニングの認識のために %t ってのを使うんですね。

んで、サンプルには %trror とか %tarning とか書いてあるわけですよ。

これって非常に気持ち悪くないですか?

もしかしてもっと良い書き方があるのかな…。

あと &efm 書くのが結構つらい。scanf 風のフォーマットってのがなぁ。

パターンマッチも出来るみたいだけど、 % の乱舞になってしまって読むのがつらくなる。

自前でパースして Quickfix に流し込むのよりは遥かに楽なので仕方無く使う感じですかね。

2015-07-19

[]ctrlp-buftab.vim 直した(追記 直ってなかった) 04:46 ctrlp-buftab.vim 直した(追記 直ってなかった) - zrail (a.k.a. tobira17, h14i, ...) の Learning Log を含むブックマーク はてなブックマーク - ctrlp-buftab.vim 直した(追記 直ってなかった) - zrail (a.k.a. tobira17, h14i, ...) の Learning Log

今回の変更

  • tabpagebuffer.vim への依存を無くした。
  • buflistedではないバッファを表示してしまうバグを直した。(致命的なのに今更…。)

BufEnter のタイミングで b:ctrlp_buftab_tabnr って変数をセットするようにしたので NeoBundleLazy などで遅延読み込みさせるとちゃんと動きません。

追記。

相変わらずバグってます。

github issueに書いたけど…。

2015-02-05

[] DevDocs と open-browser.vim の連携 05:07  DevDocs と open-browser.vim の連携 - zrail (a.k.a. tobira17, h14i, ...) の Learning Log を含むブックマーク はてなブックマーク -  DevDocs と open-browser.vim の連携 - zrail (a.k.a. tobira17, h14i, ...) の Learning Log

DevDocs という API ドキュメント検索サービスがあります。

このサービスにはオフラインモードってのがあって、ローカルにデータをインストールしておくとオフラインでもオンラインでも同じように閲覧できるようになるというものです。

で、 Vim ユーザーな僕としては vim のインターフェースから検索したいわけです。

そこで tyru 先生の open-browser.vim を使います。

単に

:OpenBrowser http://devdocs.io/#q=js date

としても良いのですが、もうちょっと簡単に検索できるようにしておくと良さそうです。

幸い、 open-browser.vim には簡単に検索エンジンを増やせるオプションがあります。それを使います。

" vimrc などに書いておく
let g:openbrowser_search_engines = {
\   'devdocs': 'http://devdocs.io/#q={query}'
\ }
:OpenBrowserSearch -devdocs js array

みたいな感じです(かね?)。

FileType を考慮して欲しいなら

" vimrc などに書いておく
let g:openbrowser_search_engines = {
\   'devdocs': 'http://devdocs.io/#q={&ft != "" ? &ft . " " . query : query}'
\ }

" &ft == 'javascript' なバッファでは上にあった 'js' が省略できる
:OpenBrowserSearch -devdocs array

とかすると良いかも知れません。

でも DevDocs は言語名でネームスペースを指定するわけではない(だいたいはライブラリとかツールの名前)ので、あんまり便利ではなさそう。

対応している言語の場合だけ補完するように辞書を作れば良いのかも知れないけど、まぁ面倒だよね…。(と思ったけど、ただの正規表現で十分か。)

zrailzrail2015/02/05 05:40まぁ実は :!firefox http://devdocs.io/\#q=javascript\ array とかでも良いんだけども。

zrailzrail2015/07/07 01:27最近のバージョンだと最初からdevdocsが設定されているようになったようです。