web-dev-qa-db-ja.com

Vim-Textmateの新しいウィンドウにコード出力を表示しますか?

数ヶ月前、TextmateからVimに切り替えました。全体的に私はVimが大好きですが、Textmateで見逃していることの1つは、⌘Rコマンドを使用してRubyコードを実行し、結果を新しいスクロール可能なウィンドウにきれいにポップアップさせることです。 VimはRubyコードを実行し、出力を:w !Rubyで表示することができます。これの唯一の欠点は、結果の出力が長すぎるとスクロールできないことです。

この問題に対処するために、:redir関数を Vim Tips から変更してみました。次のようになります。

function! TabMessage(cmd)
  redir => message
  silent execute a:cmd
  redir END
  tabnew
  silent put=message
  set nomodified
endfunction
command! -nargs=+ -complete=command TabMessage call TabMessage(<q-args>)

これで、Rubyからの出力が新しいタブに配置されます。ただし、新しい別のウィンドウにポップアップ表示することはできません。tabnewnewは出力を同じウィンドウのスプリットに送信するだけです。

もう1つの問題は、目に見える^Mが各行の終わりに追加されるため、出力が次のようになってしまうことです。これはちょっと面倒です。

Hello World!^M

それで、最後に^Mを追加せずに、出力を別のウィンドウに取り込む方法はありますか?コード出力に対してこのTextmateのような効果を実現するために使用する必要のあるプラグインはありますか?

6
michaelmichael

MacVimを使用しているようですので、これを試してください。

:w !Ruby | mvim -c "set nomodified" -

パスのどこかにmvimスクリプトがあるとすると、現在のバッファーの内容が実行され、新しいOS Xウィンドウ(新しいVimウィンドウではなく)で実行されているMacVimのインスタンスに出力がパイプされます。 。保存せずに閉じようとしたときに警告が表示されないように、新しいバッファには変更なしのマークが付けられます。

より詳しい情報:

:help macvim
:help mvim
1
Bill Odom

いくつかの提案:

  1. _:!Ruby foo.rb_が機能しないのはなぜですか?あなたのvimがスクロール可能なウィンドウで実行されていると仮定しますか?または、_:!Ruby foo.rb > foo.out_、続いて_:e foo.out_はどうでしょうか。その後、2つのバッファー、作業中の元のファイル、およびRubyの実行結果を開きます。バッファを使用してあらゆる種類のことを実行できます(分割ウィンドウでバッファを開くなど)。この領域のその他のオプションについては、_:help :buffer_を確認してください。
  2. VimがRuby support(+ Ruby)でコンパイルされた場合、_:Ruby {cmd}_などのvimでRubyコマンドを使用できます。_:help :Ruby_これに関する詳細については。
  3. Rails.vim およびおそらく他のいくつかのvimパッケージをインストールする方が良いかもしれません。生分解性オタクは VIM as a Ruby on Rails IDE
1
DaveParillo