vim

unite-outline の近況: 次期バージョンの開発

昨年の秋頃から目立った変化のない unite-outline ですが、開発が停滞しているとか、作者のやる気がなくなった*1とかではなく、「今年の抱負 - Vimプラギン編」で述べた通り、次期バージョンの開発(準備)を少しずつ進めています。ある程度形になったら別ブ…

Vim のプラグインのプラグインの呼称

Vim のプラグインのプラグインの呼称について、自分が知っている範囲でまとめてみた。 Plugin Plugin's Plugin Load Function neocomplcache source #define() QuickRun module #new()*1 ref.vim source #define() unite.vim source, kind, filter #define()…

非同期砂漠

プラギンが哭(な)いてる ユーザーに罵られて Vim はやさしさを どこに棄ててきたの だけどわたしは 好きよこのエディタが 肩を寄せあえる vimproc・・・system_bg() がいる 呼び出し側で あゝブロックしないならば つらくはないわ この非同期砂漠 あなたが…

Vim のプラグインを書きたいと思っている人は今すぐ :help write-plugin を読もう!

vim

特に *use-cpo-save* のところ。プラグインのソースでよく見かける、これ let s:save_cpo = &cpo set cpo&vim と、これ let &cpo = s:save_cpo がなぜ必要なのかが書いてあるよ!というか、行の継続を許容するためだったとか全然知らんかったwということで、…

今年の抱負 - Vimプラギン編

抱負を述べるには時期を逸した感があるものの、こういうものは一応でも言っておいた方が、一年を通してほどよいプレッシャーになっていいと思うのでw alignta Issues - h1mesuke/vim-alignta - GitHub 去年やるはずだったのにできなかった、 前回の整列を繰…

Vim script のベンチマーク

vim

数万回くらい実行されるループの中で文字列が空かどうかを調べなければならないとする。 empty(str) str == "" さて、どちらがいいだろう? empty() を使う方が、文字列が空かどうかを調べる、という意図が明確になっていいような気がするが、empty() の方は…

word の中の単語を選択する textobj-wiw を書いた

(この記事は Vim Advent Calendar 2011 5日目の記事です。前日は thincaさんでした!) 前々から、地味にフラストレーションを感じていたこととして、この状態から、"word" の部分を書き換えたい場合、 this_is_a_word_in_a_very_long_identifier ↓ this_is…

unite-outline の近況: Ruby と RSpec の見出し抽出を改善

今秋から Rails やってます。というわけで、unite-outline の Rubyサポートを強化中。まずは、Ruby用 outline info の改善から。 def 以外のメソッド定義も拾う なんと、メソッドの定義は def しか拾ってなかったので、attr_accessor, attr_reader, attr_wri…

unite-outline の近況: C のマクロがどう展開されるかを表示するようにした

C のマクロが展開されてどうなるかを => の後に表示するようにしてみた。Before: ↓ After: 上の画像より空間の利用効率が上がって情報量が増えたのがわかると思う。do { ... } while(0) のような複数行に渡るものは最初の数行分しか表示できないけど、アウト…

alignta 秋の仕様改訂、の近況

とりあえずここまでの作業分を master へマージしました。 alignta でパターンを正規表現として解釈、は本当に使いやすいのか? alignta の整列回数指定の {1} とか {+} とかって覚えにくいし打ちにくいよね…… でやろうって言った変更と、 alignta 秋の仕様…

unite-outline の近況: 空行の挿入を控えめにした

クラスのような大きなまとまりどうしの間には依然として空行を入れるが、単に見出しの種類が違うというだけでは間に空行を入れないことにした。元々この機能は、ハイライトによる見出しの色分けがまだできなかったとき*1に考案したもの。C のソースから見出…

unite.vim の file_rec でプロジェクトのファイルを一望する

vim

unite.vim 使ってる人はみんな似たことやってるんじゃないかと思いつつ……現在編集中のファイルが所属するプロジェクトのトップディレクトリ*1を起点に unite.vim で file_rec する設定。([unite] は unite.vim に割り当てている prefix)これで、[unite]p …

alignta の整列回数指定の {1} とか {+} とかって覚えにくいし打ちにくいよね……

もっと簡略な記法がいい。囲まなければならない、というのがもう嫌なんだ。しかも { } を入力するためにはシフトキーも使わなければならない。嫌じゃあ!*1こんなのはどうだろうか。 pattern{1} → pattern/1 pattern{+} → pattern/g こっちの方がはるかに打…

alignta でパターンを正規表現として解釈、は本当に使いやすいのか?

試行錯誤の自問自答中。 alignta 秋の仕様改訂(案) - Alone Like a Rhinoceros Horn を受けて、別ブランチにて作業を開始し、パターンを(デフォルトで)正規表現として解釈するように修正したところ、(当然のごとく)テストがこけるようになった。見てみ…

unite-outline が見出しを自動更新するようになりました

やった! これで ともおさらばだ!unite-outline の「なんでこれができないの?」の筆頭であった見出しの自動更新をついに実装しました。詳細はヘルプで g:unite_source_outline_filetype_options、unite-outline-filetype-option-auto-update*1 の辺り見て…

ref.vim で英英辞典を引く

vim

ref.vim に標準添付の alc.vim を参考に、オンラインの英英辞典を引く source をいくつか作ってみました↓ ▲ ref-answers Answers.com: Wiki Q&A combined with free online dictionary, thesaurus, and encyclopedias ▲ ref-hyperdict Online Dictionary - H…

alignta 秋の仕様改訂(案)

alignta の仕様が変わりました、というエントリではありません。verion 0.2.0 から早半年。時間の経過とともに、現行の alignta の使いにくい点なども徐々に明らかに*1なってきました。そこで、こんな風に変えようと思ってるんですけどどうでしょう? という…

unite-outline で候補の絞り込みから選択へかけての打鍵数を減らす [2]

前々から気になっていたこととして……絞り込みの結果、マッチが1件という段になっても、そのまま で該当する見出しの箇所へジャンプできないという問題がありました。 ▲ぐぬぬ……unite-outline では絞り込みの結果に、実際にマッチした見出しに加え、その親(…

unite-outline の見出しがカラフルになりました

久しぶりの更新前からやろうやろうと思っていたのに、長らくほったらかしになっていた unite-outline のシンタックスハイライト対応。最近また Vim をいじったりする余裕ができたので、えいやっとやってみました。こんな感じです↓ 見出しの種類が色でパッと…

置換のためのコマンドラインで g が欠ける問題

vim

長らく悩まされていた問題が解決したのでメモ。 現象 カーソルの下にある語(cword)を一括置換するためのキーマッピングを実行すると、コマンドラインモードにて以下の状態になるように設定してあります。(ここでは、cword が get_foo で、][ がカーソル位…

unite-outline で候補の絞り込みから選択へかけての打鍵数を減らす

unite-outline では、候補の絞り込みの際、見出しの親子関係に配慮し、マッチした見出しだけでなく、その親見出しも絞り込みの結果に残すようにしています。*1これはメソッド名などで絞り込みを行ったときに、実際にマッチしたもの(メソッド)だけを残すと…

DSL の見出し抽出には Vim の複合ファイルタイプを積極的に利用しよう

obsolete この記事で紹介している、Vim の複合ファイルタイプ(compound filetype){記述言語}.{DSL} を {記述言語}_{DSL}.vim の outline info にマップするというやり方は改めます。このやり方だとユーザーがいちいち ftdetect にて複合ファイルタイプの設…

2つの文字列の編集距離を求める

vim

unite-outline で使おうと思ったけど、ボツになったので貼っとく。 Wikipedia に載っていた擬似コードをほぼそのまま Vim script に落とし込んだだけです (^^;レーベンシュタイン距離といわれるもので、2つの文字列がどの程度異なっているかを、文字列1を…

ctags を使った見出し抽出

C, C++, Java…… この辺の言語の見出し抽出を、正規表現を使ったパターンマッチングで行うのは限界にきていた(というか最初から無理な話であったw)ので、見出しの抽出ロジックを outline info が独自に定義できるようにした。設定したパターンにマッチした…

デフォルトの outline info の作成ポリシー

昨夜、unite-outline の見出し一覧に表示される文字列を簡単にカスタマイズできるように、ユーザーが見出しの変換関数を既存の outline info にモンキーパッチできる仕組みを実装したところ、Lingr の Vim部屋にて、「この機能は unite本体側に実装したほう…

alignta の副産物たち

vim

alignta って実は開発の過程でできた副産物の方がコードの量からいっても多かったりします。その多くは人が既にやっていることで、目新しいものはないし、車輪の再発明もいいところなんですが、こういうものをこつこつ作ることで、結構 Vim script の経験値…

alignta v0.2.0 での変更点について

現在 alignta*1 を使っている人向けの記事です。version 0.2.0 で shifting alignment による整列の仕様や整列オプションの指定書式が一部変更になりました。他にも追加された機能やなくなった変数があったりするので、主な変更点をここにまとめておきます。…

Vimノート - Vim script で構文解析するには、という考察

考察というか、ぼんやりと考えてみました的なもの。まず、C/C++ の関数定義、あるいは Java のメソッド定義(コンストラクタ含む)を正規表現マッチによって拾うのはかなり苦しい*1。これらの言語の outline info は結構涙ぐましいものになっていて、「正規…

unite-outline まとめ

unite-outline の関連エントリが増えてきたのでまとめ。自演乙。((ちなみに、私は長島☆自演乙☆雄一郎選手のファンです ( ̄ー ̄)bグッ!)) unite.vim で簡易アウトライン機能一発目の紹介記事。スクリーンショットを随時追加している。 unite-outline の outli…

unite-outline が見出しとして抽出するコメントの形式と見出しレベル

前回のエントリで、unite-outline では、飾り枠線で装飾されたコメントを積極的に見出しとして拾うようにしていると書きました。*1プログラミング言語用の outline info では、見出しとして抽出されるコメントの形式と設定される見出しレベルに一貫した決ま…