vimでRubyのメソッドやブロックをまとめて選択する方法を教えてください。


その他、選択系のTipsやプラグインなどがあれば教えて頂きたいです。(htmlタグの中身を選択等)

中括弧や丸括弧の中身をv_abやv_iBで選択するのと同じようなイメージです。

#helloメソッド全体を選択したい
def hello
 puts "こんにちは1"
 puts "こんにちは2"
 puts "こんにちは3"
end

よろしくお願いいたします。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2007/06/03 19:51:39
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:hsada No.1

回答回数48ベストアンサー獲得回数1

ポイント23pt

コマンドモードでvを入力した後カーソル移動で選択できます。

http://www.ac.cyberhome.ne.jp/~yakahaira/vimdoc/motion.html

id:guyon

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

カーソル移動というのは、defの位置でv4j$という操作のことでしょうか?だとしたら、ちょっと意味合いが違ってきます。

私が実現したいのは、例のような範囲を明示的に指定して選択というようなイメージで、テキストオブジェクト操作の選択版という感じです。

参考URLのhelp参考にさせて頂きます。

2007/05/29 00:27:02
id:longicorn No.2

回答回数56ベストアンサー獲得回数6

ポイント23pt

自分の環境では"def hello"の行でvのあと%で

"end"の行まで選択できます。


念のため自分の環境を書いておきます。

環境:Ubuntu 7.04

vim :7.0

id:guyon

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

残念ながら、私のwindows vim7(kaoriya版)では実現できませんでした。

Linux環境でも後日試してみたいと思います。

--

ruby-matchit.vimをインストールしたら、%で移動はできるようになりましたが、選択はできませんでした。

2007/05/30 00:36:23
id:secondlife No.3

回答回数6ベストアンサー獲得回数1

ポイント35pt

filetype が ruby の時は


" * ~ end block
nmap vab 0/end<CR>%V%0oj
nmap vib 0/end<CR>%V%0o
" def ~ end block
nmap vam $?\%(.*#.*def\)\@!def<CR>%V%0oj
nmap vim $?\%(.*#.*def\)\@!def<CR>%V%0o
" class ~ end block
nmap vac $?\%(.*#.*class\)\@!class<CR>%V%0oj
nmap vic $?\%(.*#.*class\)\@!class<CR>%V%0o
" module ~ end block
nmap vaM $?\%(.*#.*module\)\@!module<CR>%V%0oj
nmap viM $?\%(.*#.*module\)\@!module<CR>%V%0o

が読まれるようにしてます。これで vam や vim を押すとメソッド全体、メソッド内部の文字列を選択できるようにしています。

id:guyon

ズバリなご回答ありがとうございます。

補足のftpluginを入れたら、選択動作になりましたが、クラスやメソッドなどend行だけしか選択されません。(win,Linux環境とも)

vamnをタイプすることでdefからendまで選択することができましたが、vimメソッド内部を選択できる方法が思いつきませんでした。

教えていただいた方法で期待結果動作を得ることができなかったので、なにか自分の設定が足りなかったりするか考えてみます。

※追伸:いつぞや日記に書かれていた(冗談口調だった?)vimの本出版実現をちょっと期待していたりします。

2007/05/30 00:41:39
  • id:secondlife
    すいません、補足です。
    環境によっては
    http://vim.sourceforge.net/scripts/script.php?script_id=290
    のプラグイン、 ruby-matchit.vim を入れてないとうまく動かないかもしれません。
  • id:guyon
    htmlタグ選択は、vim7を使いvat、vitでできました。
  • id:guyon
    %V%0ojを変更する事で、ruby-matchit.vimで動作できるようになりました。
    ruby-matchitの代わりにvim-rubyをインストールしたら、%V%0ojのまま動作することができました。

この質問への反応(ブックマークコメント)

トラックバック

  • Guyon Diary 2007-10-20 01:54:56
    前回の日記でvimExplorer事を次回書くと言いながらも、今回は違うことを書いてすいません。 vimExplorerは近々きっと・・・ 今日のお題もvimです。 スクリプト言語ではとてもPerlが好きなのです
  • vimの中だけでRubyのirbっぽい事して完結させる 前回の日記でvimExplorer事を次回書くと言いながらも、今回は違うことを書いてすいません。 vimExplorerは近々きっと・・・ 今日のお題もvimです。
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません