2012/12/13


vim script には perl 等で見るヒアドキュメント print <<"EOF";
hello
world
EOF
これを言語レベルではサポートしていない。しかしこのヒアドキュメントも一種の言語的な縛りであって、縛りの許容範囲次第では vim script でもヒアドキュメントっぽい事は出来る。 functions:here_doc(sfile, slnum)
  let lines = readfile(a:sfile)
  return iconv(join(lines[a:slnum+1 :index(lines, 'endif')-1], "\n")'utf-8', &encoding)
endfunction
command-nargs=1 HereIf0 execute printf('let %s = s:here_doc(expand("<sfile>"), expand("<slnum>"))'<q-args>)
HereIf0 というコマンドを定義し scriptencoding utf-8

HereIf0 foo
if 0
はろー
わーるど
endif

echo foo
この様に実行すると foo という変数に if 0 から endif までが入る。HereIf0 から if 0 までに行を入れてはならないし、endif を省略して書いたり後続コメントを書いてはいけない。あとファイルのエンコーディングが utf-8 決めうちになる。
まぁこれも縛りと思えば納得出来る。(縛りすぎ)

ちなみに perl の __DATA__ セクションっぽいのは、随分昔にやってた。
http://mattn.kaoriya.net/software/vim/20080317150503.htm
http://subtech.g.hatena.ne.jp/motemen/20080324/1206337579
Posted at by



2012/11/26


いままでvimプラグインの管理には pathogen を使ってきたんだけど
tpope/vim-pathogen - GitHub

pathogen.vim: manage your runtimepath

https://github.com/tpope/vim-pathogen
unbundle を使う事にした。
Vim script management system - The Terminal Programmer

22 November 2011: I squashed my entire Vim configuration history while retaining the three branch ar...

http://snk.tuxfamily.org/log/vim-script-management-system.html
sunaku/vim-unbundle ツキ GitHub

Activates Vim scripts (bundles) from isolated directories

https://github.com/sunaku/vim-unbundle
原理的には pathogen と一緒。ただし pathogen は bundle 配下のプラグインを全てロードしてしまう。なので C++ やる時でも jedi-vim をロードしてしまうし、perl やる時でも clang_complete をロードしてしまうし、python やる時でも perlomni をロードしてしまう。
結構無駄なメモリ使ってるなーと思ったので、unbundle で管理する事にした。
bundle ディレクトリ内のファイルタイプに依存したプラグインフォルダをごそっと以下の様に ftbundle ディレクトリ移動した。 +- ftbundle
| +-cpp
| |  +-clang_complete
| |
| +-javascript
| |  +-jscomplete-vim
| |  +-jslint.vim
| |  +-vim-javascript
| |
| +-jsx
| |  +-jsx.vim
| |
| +-lisp
| |  +-slimv
| |
| +-markdown
| |  +-vim-markdown
| |
| +-perl
| |  +-perlomni.vim
| |  +-vim-perl
| |
| +-python
| |  +-jedi-vim
| |
| +-slim
|     +-vim-slim
|
+- bundle
  いままでのプラグイン...
計ってないけど、起動の体感速度があがった気がする。なお unbundle には明示的にロードするコマンドも用意されている。しばらく使おうと思う。あと問題があったらパッチも書くかな。

P.S. sugyan さん、ももクロ紅白出場おめでとうございます。
Posted at by



2012/11/20


普通に :w ! で。
:w !curl -F "sprunge=<-" http://sprunge.us
 http://sprunge.us/YGiV

Press ENTER or type command to continue
実は curl の <- という指定を知らなかった。いつも @ 指定でやってた。
Posted at by