2010-12-30 2 views
5

Ich versuche, die Copy-Paste-Puffer zu bearbeiten:vimscript Puffer Ausgabe von Perl-Skript zu erhalten

Ich habe den folgenden Befehl ein:

nmap gfb :let .shellescape(getreg('0'))=1<br> 

, die die Anzahl 1 in den Puffer gesetzt haben sollten , was nicht passiert.

Wie lege ich die Ausgabe eines Perl-Skripts in einen vimscript-Puffer?

+0

sehr relevant: http://stackoverflow.com/questions/2471175/vim-replace-word-with-contents-of-paste-buffer @ "ist der Copy-Paste-Puffer. –

Antwort

2

Zum Speichern von 1 Innen Register 0:

:let @0 = 1 

Um dies zu tun, in vimscript über Perl:

function! Foo() 
perl << EOF 
    my $foo = 1; 
    VIM::DoCommand(':let @0 = ' . $foo); 
EOF 
endfunction 

Dann können Sie diese Funktion aufrufen:

:call Foo() 
+0

Dies ist völlig in die Richtung, aber ich bekomme folgende Fehlermeldung: E319: Entschuldigung, der Befehl ist in dieser Version nicht verfügbar: perl << EOF –

+0

Die Lösung für den e319 Fehler war zu tun: sudo apt-get installiere vim-full in der Shell lass es nicht funktionieren –

+0

Nur um klar zu sein, hast du jetzt einen vim mit Perl-Unterstützung, was bedeutet, dass die 'perl'- und' doperl'-Befehle nun für dich verfügbar sind. Das wird die anderen nicht-Perl-Sachen nicht ändern. –

3

die Um Ausgabe eines externen Befehls in einen vim-Puffer, den Sie verwenden system:

:let @0 = system("/bin/ls") 
:echo @0 

Ich bin mir nicht sicher, wie sich das genau auf Perl bezieht. Vielleicht möchten Sie Ihre Frage zur Klärung bearbeiten.

+0

okey also, um die Ausgabe eines Perl-Scripts zu erhalten, mache ich:: @ 0 = System ('perl /home/hermann/hi.pl')? –

+0

So etwas, ja, natürlich kann 'system' sein überall dort, wo man einen Ausdruck verwenden kann sion - es ist nicht nur Aufgabe. Probieren Sie es aus und sehen Sie! –

+0

: let @ 0 = 222 funktioniert nicht mehr, ich weiß nicht warum, aber es ändert nichts, was eingefügt wird, wenn ich p drücke. Früher war es so, aber ich bin mir nicht sicher, was los ist. –

Verwandte Themen