2010-12-30 37 views
5

Tôi đang cố gắng để chỉnh sửa copy-paste đệm:đệm vimscript để có được đầu ra của kịch bản perl

Tôi có lệnh sau:

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

đó nên đã đặt số 1 vào bộ đệm , điều đó không xảy ra.

làm cách nào để đưa đầu ra của tập lệnh perl vào bộ đệm vimscript?

+0

rất có liên quan: http://stackoverflow.com/questions/2471175/vim-replace-word-with-contents-of-paste-buffer @ "là bộ đệm sao chép-dán. –

Trả lời

2

Để lưu 1 bên đăng ký 0:

:let @0 = 1 

Để làm điều này trong vimscript qua perl:

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

Sau đó, bạn có thể gọi hàm:

:call Foo() 
+0

Điều này hoàn toàn theo hướng, nhưng tôi nhận được lỗi sau: E319: Xin lỗi, lệnh không có sẵn trong phiên bản này: perl << EOF –

+0

giải pháp cho lỗi e319 là: sudo apt-get install vim-full trong shell. –

+0

Để rõ ràng, bây giờ bạn có một vim với sự hỗ trợ Perl, có nghĩa là các lệnh 'perl' và' doperl' hiện đang có sẵn cho bạn, điều này sẽ không thay đổi những thứ không phải Perl khác. –

3

Để có được đầu ra của một lệnh bên ngoài vào một bộ đệm vim bạn sử dụng system:

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

Tôi không chắc làm thế nào điều này liên quan đến Perl chính xác. Bạn có thể muốn chỉnh sửa câu hỏi của mình để làm rõ.

+0

okey để có được đầu ra của một tập lệnh perl tôi làm:: hãy để @ 0 = system ('perl /home/hermann/hi.pl')? –

+0

Điều gì đó tương tự, có. Dĩ nhiên 'system' có thể là sử dụng bất cứ nơi nào bạn có thể sử dụng một expres sion - nó không chỉ để giao. Hãy thử nó và xem! –

+0

: hãy để @ 0 = 222 không hoạt động nữa, tôi không biết tại sao nhưng nó không thay đổi những gì được dán khi tôi nhấn p. nó được sử dụng để mặc dù vậy im không chắc chắn những gì đang xảy ra. –

Các vấn đề liên quan