数ヶ月前、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からの出力が新しいタブに配置されます。ただし、新しい別のウィンドウにポップアップ表示することはできません。tabnew
をnew
は出力を同じウィンドウのスプリットに送信するだけです。
もう1つの問題は、目に見える^M
が各行の終わりに追加されるため、出力が次のようになってしまうことです。これはちょっと面倒です。
Hello World!^M
それで、最後に^M
を追加せずに、出力を別のウィンドウに取り込む方法はありますか?コード出力に対してこのTextmateのような効果を実現するために使用する必要のあるプラグインはありますか?
MacVimを使用しているようですので、これを試してください。
:w !Ruby | mvim -c "set nomodified" -
パスのどこかにmvim
スクリプトがあるとすると、現在のバッファーの内容が実行され、新しいOS Xウィンドウ(新しいVimウィンドウではなく)で実行されているMacVimのインスタンスに出力がパイプされます。 。保存せずに閉じようとしたときに警告が表示されないように、新しいバッファには変更なしのマークが付けられます。
より詳しい情報:
:help macvim
:help mvim
いくつかの提案:
:!Ruby foo.rb
_が機能しないのはなぜですか?あなたのvimがスクロール可能なウィンドウで実行されていると仮定しますか?または、_:!Ruby foo.rb > foo.out
_、続いて_:e foo.out
_はどうでしょうか。その後、2つのバッファー、作業中の元のファイル、およびRubyの実行結果を開きます。バッファを使用してあらゆる種類のことを実行できます(分割ウィンドウでバッファを開くなど)。この領域のその他のオプションについては、_:help :buffer
_を確認してください。:Ruby {cmd}
_などのvimでRubyコマンドを使用できます。_:help :Ruby
_これに関する詳細については。