mapcar で perform-string を使って文字列置換しようと思ってかなりハマったのでメモって置きます。

ダメな例

これだと “foo1 bar2” は削除できるけど “bar2” と2個めの検索要素だけしかないときに削除できない

良い例

perform-replaceの最後の引数NOERRORtに設定しておけば該当する文字列がなくてもスムーズに次に進んでくれます。


rspec書いてる時にEmacsから簡単に呼び出せたら便利だと思ってsmart-compileの設定をこんな風に書き換えたんだけど、

でちゃんとCompile command: rspec foo_spec.rbは呼び出せるものの実行すると

な感じでエラーになってしまう。

どうやら rbenv の環境がEmacs側で認識されてないので rbenv で入れた gem のコマンドも使えないのが原因らしい。

解決策

rbenv.el をインストールすれば解決しました。

でインストールしておいて

しておけばOKです。


Railsのプロジェクトで coffee script を使うけどもコンパイルは全て Asset pipelineがやってくれるので、たまに変換結果の js をちょっと見てみたい時に困った事になります。

なのでEmacsの smart compile の機能を使ってすぐに 出力結果を得られるようにしてみました。

解決策

coffee -pで標準出力に変換結果を出力してくれるので

としておけばOKです。

参考

Convert coffee to javascript and show the result to standard output in Emacs – Stack Overflow


何故かMacのOSを最新の Mavericks(10.9.1)に変えたらEmacsの C-x C-f で表示されるデフォルトのパスが ルートの / に変わってしまったのでその対策。

対策法

下の対策はうまく動いてませんでした。homebrewの最新版だと対応されてるらしいので homebrew install --cocoa emacsで homebrewから入れたら解決します。

Emacsの設定に default-directory を追加したらOK

(setq default-directory "~/")

参考

settings – emacs "Find File:" default path – Stack Overflow


開いてるファイルをそのまま実行できるsmart-compileでGemfileを開いてたらbundle installを実行したかったのでやり方を調べてみました。

設定方法

どうやらsmart compile は自動的にコマンドの実行ディレクトリをファイルがある場所に移動してくれるようなので単純に Gemfileというファイル名とbundle installのコマンドを他のファイルと同じように紐付ければOKのようです。

もちろん ruby や php を使ってなかったら該当行は必要ありません。

使い方

これで Gemfile を開いて C-c C-x するとこんな風に bundle install が実行されます。


今までVimでRailsのプロジェクトの中にあるファイルを開くのに毎回FinderのウィンドウからD&DしていてめんどくさかったのでVimの左側にファイラーが表示できたらいいな、と思って調べてみました。

検索した所 Opsplore が見つかったのでインストールしようかと思ったらインストールの仕方がわからなかったのでもののついでに多分パッケージ管理する拡張があるだろうと考えて調べてみたらやっぱりありました。

NeoBundleでパッケージ管理

どうやら昔はBundleというソフトが有名だったけど、機能不足などの問題でVundleがForkされて更に統一性などの問題点が改善されたNeoBundleが出されたようです。

はじめ動かなくて困ってTwitterでつぶやいていたら @todashuta さんが直してくれました。ありがとうございます。

Vimpusher

NeoBundleなどのパッケージ管理を使っていて、その.vimrcをGitなどのオンライン上に置いている場合はソーシャルVimプラグインサービスのVimpusherというサービスがあり、これに登録しておくとおすすめのプラグインを紹介してくれるそうです。

便利そうなプラグイン

なんでもRailsを使うのに便利なプラグインがあるそうなので早速それを入れてみる。

tpope/vim-rails · GitHub

においてあるのでNeoBundleでインストールするために

~/.vimrc に

NeoBundle 'tpope/vim-rails'

と追記し、

:source ~/.vimrc

で設定の再読み込みをすると “Install bundles now?” と聞かれるので”yes”を選択すればOKです。メッセージが流れないのでフリーズしてるように感じましたが正常にインストールされてました。

たとえば post_controller.rb 上の def index の上にカーソルがあるときに gf と入力すれば index.html.erb が開かれます。

詳しい動作はまた今度確認することします。

他にも入れといたほうがよさそうなプラグイン

こちらのサイトを参考に便利そうなプラグインを追加していきました。
天井冴太的つれづれblog [天井の染み]: このVim plugin達に感謝しなければ年を越せない!私が今年使い倒した2012年のベストを全部ご紹介!

” RubyやPerl風の正規表現。
NeoBundle ‘othree/eregex.vim’
” URLを開く
NeoBundle ‘tyru/open-browser.vim’
” HTML特殊参照文字列のエンコード、デコード
NeoBundle ‘vim-scripts/qtmplsel.vim’
” リファレンスなどのドキュメント参照

その他のTips

表示されたエラーメッセージやその他のメッセージは :messages で確認できる。


機能

xyzzyで”wŏ shì rìbĕn rén” などが、そこそこ簡単に打てるようになります。

インストール方法

NetInstallerで以下のパッケージを追加して、”ton input”をインストールして下さい。
http://ironsand.net/xyzzy/packages.l

再起動すると有効になってます。
再起動せずに有効にできそうですが、よくわかりませんでした。

NetInstallerが何かわからない人はこちらを読んでください。
http://xyzzy.s53.xrea.com/wiki/index.php?QuickTour%2Fext%2FNetInstaller

使い方

C-F9 (Controlキーを押しながらF9キーを押す)で Ton Input モードに入ります。
“wo” を打った時点で数字の”3″を押すと “wŏ” になります。
1,2,3,4 でそれぞれの声調に、”0″で声調無しに変化します。

“xian” の最後でキーを押せば一番最後に入力された母音の “a” に声調がつきます。

Ton Input モードを終了させるには、もう一度 C-F9 を入力します。

注意点

Ton Input モード中は数字(0~4)を入力しようとしても入りません。

謝辞

ありがとうございます。 ありがとうございます。

マイナーモードの作り方 [silog]
http://white.s151.xrea.com/wiki/index.php?memo%2Fxyzzy%2Fminor-mode

netinstaller 対応メモ
http://d.hatena.ne.jp/bowbow99/20090710/1247182818

そして、lispでわからないことを教えてくれた2chのxyzzyの名無しさん達がいなければ途中で作るのを諦めてたと思います。 みなさんに感謝を。


xyzzy の lisp の関数 backward-word, previous-word, forward-word, next-word の動作の違いがよくわからなかったので、試してみた。

黒背景白文字が移動前のカーソルの位置で、灰色背景太字が移動後の場所。

backward-word
123 456 789
123 456 789
123 456 789

previous-word
123 456 789
123 456 789
123 456 789

forward-word
123 456 789
123 456 789
123 456 789

next-word
123 456 789
123 456 789
123 456 789

backward-word と previous-word は同じ動作で forward-word と next-word は動作が異なるらしい。 あってんのかな、これ。


Xyzzy Wiki の ソースからビルドしてみる3 を参考に xyzzy をソースからビルドしてみました。 ファイルを取ってきたり、めんどくさいことが多かったので以下のステップでできるように簡略化。

xyzzysrc-0.2.2.235-pack
これをダウンロードしてあとは01README.txtを見てください。

1 Microsoft Visual C++ 2008 Express Edition インストール
2 env.vbs を叩く (環境変数のセットとafxres.hのコピー)
3 cd xyzzy/src
4 nmake (デバッグ版は nmake CFG=d)
5 ぽけーと待つ
6 できあがり

以上です。 何かおかしいところあったら連絡ださい。 俺は何もわかっていませんので。

Unicode Consortium のファイルも同封してますが、ライセンスの確認はとってます。

2011/05/28追記

2chで指摘されて気づいたのですが、env.vbs で c:\Program Files\ 配下にファイルの移動を行ってるので UAC が入っているとエラーになります。 UACを一時的に切ってenv.vbs を実行してください。

一度実行してしまえば次回以降ビルドするときにはUAC がオンでも問題ありません。