2010-12-30 14 views
5

Я пытаюсь редактировать копировать-вставить буфер:vimscript буфер, чтобы получить выход PERL скрипт

У меня есть следующие команды:

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

, который должен поставить номер 1 в буфер , чего не происходит.

Как я могу сделать вывод скрипта perl в буфер vimscript?

+0

очень релевантно: http://stackoverflow.com/questions/2471175/vim-replace-word-with-contents-of-paste-buffer @ "является буфер копирования-вставки. –

ответ

2

Для хранения 1 в регистре 0:

:let @0 = 1 

Для этого в vimscript с помощью Perl:

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

Тогда вы можете вызвать эту функцию:

:call Foo() 
+0

Это полностью в направлении, но я получаю следующую ошибку: E319: Извините, эта команда недоступна в этой версии: perl << EOF –

+0

решение для ошибки e319 должно было выполнить: sudo apt-get install vim-full в оболочке, но теперь let не работает. –

+0

Чтобы быть понятным, теперь у вас есть vim с поддержкой Perl, что означает, что теперь доступны команды 'perl' и' doperl'. Это не изменит другой материал, отличный от Perl. –

3

Чтобы получить вывод внешней команды в буфер vim, который вы используете system:

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

Я не уверен, как это точно относится к Perl. Вы можете изменить свой вопрос, чтобы уточнить.

+0

okey so, чтобы получить результат perl-скрипта, я делаю:: let @ 0 = system ('perl /home/hermann/hi.pl')? –

+0

Что-то вроде этого, да. Конечно, 'система' может быть используется везде, где вы можете использовать выражения sion - это не только для присвоения. Попробуй и посмотри! –

+0

: let @ 0 = 222 больше не работает, я не знаю, почему, но он не меняет то, что приклеивается, когда я нажимаю p. это использовалось, хотя я не уверен, что происходит. –