vim 4 SuperCollider

じゃあscvim使ってみよう。
macということで、scvimオリジナルじゃなくて、https://github.com/sbl/scvimこっち使います。linuxもそのうち試してみます。
環境はlion,vim7.3(ただし、機能をフルに使うにはmvimがいるっぽいです。http://code.google.com/p/macvim/

インスコ

pathogenでplugin管理

別に使用しなくても良いですが、scvimのreadmeに使ってねとあるので。

$ mkdir ~/.vim/autoload
$ mkdir ~/.vim/bundle
$ cd ~/.vim/bundle
$ git clone git://github.com/tpope/vim-pathogen.git
$ ln -s ~/.vim/bundle/vim-pathogen/autoload/pathogen.vim ~/.vim/autoload/
scvim
$ git clone git://github.com/sbl/scvim.git ~/.vim/bundle/supercollider
$ ln -s ~/.vim/bundle/supercollider/sc/SCVim.sc ~/Library/Application\ Support/SuperCollider/Extensions/SCVim.sc
$ vi .vim/bundle/supercollider/plugin/supercollider.vim

下記のように9-12行目に,*.rtfを加える
au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc,*.scd,*.rtf runtime ftplugin/supercollider.vim
au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc,*.scd,*.rtf set filetype=supercollider
au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc,*.scd,*.rtf let &iskeyword="@,48-57,_,192-255"
au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc,*.scd,*rtf runtime indent/sc_indent.vim

環境によっては、31行目のF12をF7とかに変える
(うちのキー配列ではfn+F12ボタンだとダッシュボートにいっちゃう)
au Filetype supercollider,supercollider_help nmap   :call SClang_thisProcess_stop()
textutil

sc界隈ではrtfファイルが多いので、見られるようにしておく

mkdir ~/.vim/bundle/textutil
http://www.vim.org/scripts/script.php?script_id=1432
textutil.vimを.vim/bundle/textutil/に置く
neocomplcache

こいつがないとvimは始まらない!

$ git clone git://github.com/Shougo/neocomplcache.git ~/.vim/bundle/neocomplcache
vimrc

とりあえずこんな感じに。ググれば沢山例が引っかかりますので参考にしていじってみてください。

$ vi ~/.vimrc
"基本設定
set nocompatible
filetype indent plugin on
set encoding=utf-8
set number
"colorscheme desert とか好きなヤツを
syntax on
set hidden
set wildmenu
set showcmd

"タブ関係
set tabstop=4 shiftwidth=4 softtabstop=0
set autoindent smartindent

"検索
set ignorecase
set incsearch

"カッコ
imap {} {}
imap  
imap () ()
imap “” “”
imap ” ”
imap <> <>
imap “ “

"全角スペースを強調
highlight zenkakuda ctermbg=7
match zenkakuda / /

"pathogen設定
filetype off
call pathogen#runtime_append_all_bundles()
call pathogen#helptags()
filetype on

"textutil設定
let g:textutil_txt_encoding='utf-8'

"neocomplcache設定
"~/.vim/bundle/neocomplcache/doc/neocomplcache.jaxのEXAMPLES 764-848行をコピペ

使い方

とりあえず、tkckの資料を開いてみましょう。

$ vi tksc#8.rtf
サーバ
  • 立ち上げは、:SClangStart(たまにちゃんと立ち上がってくれないので、開いた別窓でctl+Dとかでbashを抜けると動いてくれたりします)
  • 停止は、:SClangKill

:scの時点でtabキー押すと候補選択できます。

コード実行
  • 1行実行は、その行にカーソルを持っていき、F6キー(キー配列によってはfn+F6キー)
  • ブロック実行は、Vでビジュアルモードになり、実行したいブロックをn,pキーか上下キーで選択して、F5キー
  • コード停止は、上で変更したF7キー(デフォルトではF12キー)
補完

neocomplcacheが勝手に補完候補呼び出してくれます。sinと打つと候補として、UnaryOperatorのsin,sinhがあがります。tabキーかctl+p,nで選択。
ただし、うちの環境ではなぜかオブジェクトを候補として出してくれないので、調査中です。~/.vim/bundle/supercollider/syntax/supercollider_objects.vimはちゃんと読み込まれているし、シンタックスハイライトはちゃんと機能しているんですけれど。。。

スニペット

デフォルトで多少~/.vim/bundle/supercollider/snippets/supercollider.snippetsに書かれています。
試しにsdefを打ってみて下さい。候補が出たらtabなどで選択して、ctl+kで展開されます。シンセ名にカーソルが遷移しますので、適当に変えたら、ctl+k。snd = のところに遷移します。

gui

cocoaはダメポです。swingはいけますので、GUI.swingにしておきましょう。
[参考]http://supercollider.jp/modules/xhnewbb/viewtopic.php?topic_id=215

いじょう

vimに慣れていれば結構便利です。ただ、初期設定は面倒ですし、vimに慣れていないと全く使用するメリットがないかと思われます。ちょっとオシャレで出来るヤツ風を装いたいなら、scvimだとそれっぽく見えるかもしれません。
仕事でvimをひたすら使っているので、当面scvimで行きたいと思います。