Casual Vimmer

仕事としてプログラムを書くことの無い僕ですが
気がつけば2年ほどvimを使っています。(全然上達しやしない)

あいかわらず、EXCEL VBAで仕事の中で楽をしたり、
楽しんだりするめにコードらしきものをかいたり。

今は携帯をAndroidに変えてvimが使えるので(ツール群を公開されているrattcvさんに激烈感謝!)
help読んでCommandやパターンを試したり、新しいプラグインを試したり
通勤時間が凄い楽しい。
特に、NeoBundleの衝撃は忘れられない。
スマホで、vimrcに設定を書いて、
":NeoBundleInstall"とやったら。。「ぜ、全部入ってる。。。」
「:helptagsも済んでる。。。」(Shougoさんすげぇ。。)

著名Vimmerに会えるというので思い切ってVimConf2013に参加してみた。
まわりの人はプレゼンを聞きながらキーボード打ちまくってるんだけど
僕は話を聞くので精一杯だった記憶。
でもすごい楽しかった。(でもすごい怖かった)
vimそのものやプラグインやWeb上に情報を公開してくれている方々には
本当に感謝してもしきれない。

せっかくなので、最近は日々の写真とかをコメント付きで残すのを
shower.jsを使って書いている。
これだとなんかカッコいい感あるし、バックアップがしやすくていい。
OSやアプリに縛られず、ブラウザがあれば見れるし、vimがあれば書ける。

今年もCasualVimmerとして、vimを楽しんでいきたい。
便利そうだからLinux使えるようになりたい。ってのが今年の目標かな。

craftlaunch(ランチャーソフト)を使うことにした

CraftLaunchというソフトを使うことにした。

今まではExecutorというソフトを使っていたけれど
家のPC環境でキーワードが全部消えるということがあったので
Googleで調べてCraftLaunchにすることにした。

CraftLaunchだとキーワードの設定を"Config.py"の中に記述すればいいのでラクチン。

仕事では、月ごとのファイルを作って頻繁に呼び出す。ということがあって
それをランチャーソフトから呼び出す。というのをよく使うが

CraftLaunchのように、キーワードとコマンドの登録をテキストベースのリストで
いいということなら、前月のファイルを呼び出す部分をコピーペーストして
月の部分のみ変更するだけ。という自然さ。

作業はVIMでやるので、Config.pyをUnite-bookmarkに登録しておいて

「:Unite bookmark -input=.py

とかやってConfig.pyを選択実行して、yyとかpとか:'<,'>s/thismonth/nextmonth/g
とかやるだけ。

Executorだと。。
ファイルをドラッグアンドドロップしてキーワードを編集してApplyボタン押して
また、別のファイル(エクスプローラでパスを開いて)ドラッグアンドドロップ & どらっぐ & どろっぷぅ。
めんどい。

CraftLaunchの欠点はテーマが少ないことや、アイコンが表示されないこと。
しかしアイコンについては、まあいらないし、そのことせいかExecutorより速いし、
テーマについては編集や作成が可能と分かったのでvimのテーマに合わせてsolarizedとか作ってみたら
いい感じになった。

VimShellとNeoSnippetを組み合わせて同じようなことをやっているけれど
それと同じくらい便利だし、ホットキーで呼び出せるので僕にはその部分やや有利。

ファイル名補完もやってくれるのでだれでも使えると思う。

Executorで使っているホットキーを完全に置き換えて問題なさそうだ。

スニペット展開_neosnippet

neocomplcacheのsnippet機能だった時からsnippetはよく使っていて。
これがとても便利。

スニペットを展開するだけでなく、自分で埋め込んだ複数のマーカーに
順番にジャンプしてくれるので、ある程度定形的なメールや議事録の
スニペットを作って使ったりVBAを書く時にすごく便利。

議事録書く時なんて、前回の議事録(もしくはフォーマット)をコピーして
編集するようなやり方をすると、編集のしわすれや日付部分の更新忘れがよくある。

だけど、snippet登録して、マーカーを埋め込んでおけば、
"\(neosnippet_expand_or_jump)"を割り当てたキー(自分は)をタイプすれば
埋め込んだマーカーを順番にカーソルが飛ぶから
編集忘れがなくなる。

ズボラな僕でも意識せずに、ミスが減らせる。っていうのがいい。

snippet中でバッククォートで囲んだ部分が式として評価されるから
現在時刻とか日付も展開することができるし。

もちろんVBAのコードとかも引数とかも含めて登録すると効率があがる。

AdvancedFilterとかだと、毎回別のファイルからコピーしてきて書き換えてたけど
下記の様によく使うやつを登録しておけば"adfil"と入力して

snippet adfil
abbr AdvancedFilter
	${1:Expression}.AdvancedFilter _
	    Action:=xlFilterCopy${2:-xlFilterInPlace}, _
	    CriteriaRange:=${3:Variant}, _
	    CopyToRange:=${4:Variant}, _
	    Unique:=True${5}
	${0}

"Expression"が選択された状態で3行目から7行目まで展開される。

最近忙しくて、あまりVBAのコードとか書けてないけど
少し時間が作れるようになってきたからまた、vimで遊ぼう。

vimからファイルを開く(システム関連づけで)

vimからなんらかの形でpathを指定して
ファイルを開こうとする時、コマンドライン

:call vimproc#open('path')

とすれば、コマンドプロンプトの画面が出ずにpathどおりのファイルをシステム関連付けのソフトで開くことができる。
というのを知った。(要vimproc)

vimshellのオープンをvimコマンドラインから使いたいと思って調べてたらたどり着いた。

:! start path

とやっていたけど、コマンドプロンプトののウィンドウが出てきて、それ自体をなにかキーを押して消す。加えてvimに戻ってから一度[Esc]をタイプしないとvimで何かできない。

vimprocを使う方法ならそのストレスはないんでやる気が起きる。

ahkとか書いてすぐ実行はこんどからこれを使おう。

パスが行の中に含まれていたりする場合も

path=substite(getline('.'),なんちゃら,かんちゃら,"g")

とか、「なんちゃら,かんちゃら」の部分を僕がちゃんと書ければできそう。

すげーなvim

今日やりたいと感じたこと。


■■やりたいこと■■
1、
vim
連続する空行を
一行の空行に置換する。

というコマンドを探る。

2、
あと、連番の生成。
マクロじゃなくて置換で連番を挿入できないか。
置換コマンドで
line('.')を展開を展開できればいいんだけどなぁ。

Qfixlistのプレビューって横分割のウィンドウに表示させられないのか。調べる
→メールの整理に使いたい。


■■今日進んだこと。■■

1、
NILScriptの辞書を取り敢えず作った。
付属のサンプルファイルをソートしただけ。
これをどのようにパワーアップしていくかは課題。
どっかにJavaScriptの辞書が転がってそうだけどね。

2、
AutoHotKeyJpをダウンロードしてテキスト化。

全部は終わってないけど。

htmlテーブルのまとめ方は工夫が必要だと思う。

お盆やすみにvimでvba「args argdo bufdo」

お盆休みは取らないで会社でやりたいことをやる時間に。

今日は、VBAのヘルプファイルをhtmlにデコードしたものを、全部テキストファイルにする事に挑戦した。
そうすれば、ネットがなくても、しかもvimから出ないでも正しい情報にアクセスできる。

詳しくは分からないけどデコードしたhtmlファイルはvimで開くだけだと文字化けしてしまうこともあり、
まずは、utf-8でファイルを開きなおして保存。

その後、htmlタグを置換コマンドで取り除いた。
ファイルどうしのリンクは活かしたいので
以前テストしたリンク先のパスを残すコマンドを実行

いちいち三行くらいのコマンドでも入力するのが面倒だから拡張子vimで保存して、
so $VIM/2txt.vim
とかやった。

しかし対象のファイルが多すぎてゴールが見えない。。

そこでgoogle博士に訪ねてみたらいくつか良さそうなのがヒット。

そして「:args :argdo :bufdo」にたどり着いた。

これ、できそうだぞ。。の予感。

使ってみたらまったくゴールが見えなかったのが、なんとかヘルプのテキスト化を終えるところまできた。
インデックスツリーの部分をトップとして整えて終わり。

ネットの情報を随時足していったら自分用のリファレンスができる!


これは。。
便利だぞ。の予感。

こうなると、autohotkeyjpやnilのドキュメントも
求まとめておきたくなる。
というかやるべき。

どんどんやろう。

まてよ、bufdoとか使えば、複数のファイルを一つにまとめられそうな感じがする。
多くのファイルをまとめられれば、そこから簡単に辞書が作れそうでいい。

特にNILなんて辞書なしでは僕は書けない。