Vim - Anzeige der Code-Ausgabe in einem neuen Fenster á la Textmate?

2243
michaelmichael

Vor ein paar Monaten wechselte ich von Textmate zu Vim. Insgesamt liebe ich Vim wirklich sehr, aber eines der Dinge, die ich von Textmate vermisse, ist die Verwendung des ⌘R-Befehls zum Ausführen von Ruby-Code. Die Ergebnisse werden ordentlich in einem neuen, scrollbaren Fenster angezeigt. Vim kann natürlich Ruby-Code ausführen und die Ausgabe mit anzeigen :w !ruby. Der einzige Nachteil ist, dass ich nicht scrollen kann, wenn die resultierende Ausgabe zu lang ist.

Um dieses Problem zu bekämpfen, habe ich versucht, eine :redirFunktion in Vim Tips zu ändern . Es sieht aus wie das:

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>) 

Nun wird die Ausgabe von Ruby in eine neue Registerkarte eingefügt. Ich kann es jedoch nicht in einem neuen, separaten Fenster anzeigen lassen. Wenn Sie tabnewauf newändern, wird die Ausgabe nur im selben Fenster an einen Split gesendet.

Das andere Problem ist, dass ein sichtbares ^MElement an das Ende jeder Zeile angehängt wird. Die Ausgabe sieht dann wie folgt aus, was ziemlich störend ist:

Hello World!^M 

Gibt es eine Möglichkeit, die Ausgabe in einem separaten Fenster zu erhalten, ohne dass ^Mdas Ende angehängt wird? Gibt es Plugins, die ich verwenden sollte, um diesen Textmate-ähnlichen Effekt für die Codeausgabe zu erzielen?

6

2 Antworten auf die Frage

1
DaveParillo

Ein paar Vorschläge:

  1. Warum :!ruby foo.rbfunktioniert es nicht für Sie? Angenommen, Ihr vim läuft in einem scrollbaren Fenster? Oder wie wäre es mit :!ruby foo.rb > foo.out, gefolgt von :e foo.outDanach haben Sie 2 Puffer geöffnet, die Originaldatei, in der Sie gearbeitet haben, und die Ergebnisse, wenn Sie Ruby ausführen. Sie können alle möglichen Dinge mit Puffern ausführen (öffnen Sie die Puffer in einem geteilten Fenster usw.). Schauen Sie sich :help :bufferfür weitere Optionen in diesem Bereich.
  2. Wenn vim mit Ruby-Unterstützung (+ ruby) kompiliert wurde, können Sie in vim Ruby-Befehle verwenden, z :ruby . Schauen Sie sich :help :rubyfür weitere Informationen zu diesem Thema .
  3. Das Installieren von rails.vim und möglicherweise einiger anderer vim-Pakete ist möglicherweise besser . Der biologisch abbaubare Geek kann die Verwendung von VIM als Ruby on Rails-IDE gut beschreiben
1. Versuchen Sie als Beispiel, eine Datei auszuwerten, die `(1..500) .each {| x | enthält setzt x} `using:! ruby. Das Fenster zeigt die letzten 50 Zahlen an und kann nicht durchlaufen werden. Ihre Puffervorschläge sind ebenfalls in Ordnung, entsprechen aber im Wesentlichen der Tabulatorfunktion, die ich jetzt verwende. 2. Ich weiß davon und benutze es oft. 3. Ich werde den Artikel auschecken und prüfen, ob ich nützliche Informationen einholen kann, aber ich verwende Ruby on Rails nicht wirklich. michaelmichael vor 14 Jahren 0
1
Bill Odom

Es klingt, als würden Sie MacVim verwenden.

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

Angenommen, Sie haben das mvimSkript irgendwo in Ihrem Pfad, das den Inhalt des aktuellen Puffers ausführt, und dann die Ausgabe an eine Instanz von MacVim weiterleiten, die in einem neuen OS X-Fenster ausgeführt wird (gegenüber einem neuen Vim-Fenster). Der neue Puffer wird als nicht geändert markiert, um Warnungen zu vermeiden, wenn Sie versuchen, ihn ohne Speichern zu schließen.

Mehr Info:

:help macvim :help mvim 
das hat definitiv funktioniert. Ich werde es meiner Vimrc hinzufügen. Außerdem wurden die funky-Zeilenenden im ausgewerteten Code entfernt. vielen Dank. michaelmichael vor 14 Jahren 0
Bitte. Froh, dass ich Helfen kann. Bill Odom vor 14 Jahren 0