Home > Vim Hacks > Hack #131: Rubyで#{をラクに入力する

Hack #131: Rubyで#{をラクに入力する

問題

Rubyでは文字列リテラルの中に#{}で囲まれた式を書くと展開されます。

puts "It is now #{Time.now}."
#=> It is now Wed Feb 17 16:28:18 -0800 2010.

しかしながら、毎日#{を何度も打鍵することは、あなたの指の骨に深刻なダメージを与えることでしょう。

様々な解決方法がありますが、著者が最も直感的と感じるのは以下の方法です。

  • {{ と打鍵すると自動的に#{と置き換えられる

すぐに思い浮かぶ解決方法は、iabbrevを用いて{{#{に置き換えることです。

iabbrev {{ #{

この方法はうまくいきません。{{のあとにスペースを打鍵する必要がありますが、Rubyの慣習では#{のあとにスペースをいれずすぐに式を書くことになっている場合が多いためです。

それならばiabbrevではなくinoremapだ、と思い付くのではないでしょうか。

inoremap {{ #{

この方法はうまくいきません。実際に試してみるとすぐに分かりますが、{を打鍵してすぐに{が画面にでてこないことにイライラする日々を送ることになります。Rubyでは#{よりもブロックとしての{を書くことの方が頻度は高く、メリットよりもデメリットの方が遥かに大きいのです。

解決

smartchrを使います。

smartchrをインストールし、~/.vim/ftplugin/ruby.vimに以下を記述します。

inoremap <expr> <buffer> {  smartchr#loop('{', '#{', '{{{')

これで、{を続けて打鍵していくと以下のようになります。

{
#{
{{{
{
#{
{{{
...

inoremapのときと違い、はじめの{が即座に画面に表示されます。

発展

他のRuby用ftpluginと共存させるため、筆者は~/.vim/ftplugin/ruby.vimではなく、~/.vim/ftplugin/ruby/ujihisa.vimに上記の設定を含めて記述しています。

http://github.com/ujihisa/config/blob/master/vim/ftplugin/ruby/ujihisa.vim

ujihisa
このエントリーをはてなブックマークに追加
はてなブックマーク - Hack #131: Rubyで#{をラクに入力する
Share on Facebook
Post to Google Buzz
Bookmark this on Google Bookmarks
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://vim-users.jp/2010/03/hack131/trackback/
Listed below are links to weblogs that reference
Hack #131: Rubyで#{をラクに入力する from Vim-users.jp

Home > Vim Hacks > Hack #131: Rubyで#{をラクに入力する

Search
Feeds
Links
  • 公式
  • 勉強会
  • 情報
  • コミュニティ
  • Meta
    Etc
    Creative Commons License
    This blog is licensed under a Creative Commons License.

    Return to page top