2010-07-01 4 views
3

Я хочу написать функцию ВИМ, которая включает в себя вставку из буфера обмена (окна, если это имеет значение)Вставить из буфера обмена в Vim сценария

Я думаю, что это должно быть что-то вроде

function MyPastingFunc() 
    "+p "paste from clipboard 
    "do more stuff 
endfunction 

Конечно, " .? + р просто комментарий в .vim файл Как я могу сделать эту работу

ответ

4

Вы ищете команду :normal:

function MyPastingFunc() 
    "paste from clipboard 
    normal! "+p 
    "do more stuff 
endfunction 

! используется для предотвращения Vim также запуска отображения пользователей, которые могут быть частью "+p.

1

Вы должны быть в состоянии использовать функцию feedkeys, название которого говорит само за себя:

function MyPastingFunc() 
    call feedkeys("\"+p") "paste from clipboard 
    "do more stuff 
endfunction 
+1

это решение работает так же хорошо, как и «правильный» ответ, но я чувствую себя нормально лучше, чем с ключами – ScottS

2

Если вы хотите всегда прошлое в новую линию вы можете использовать :put команду, например:

:put +  will paste after the current line 
:put! +  will paste before the current line 
:123 put + will paste after line 123 

нотабене он также перемещает позицию курсора в первый непустой символ вставленного текста. Это может быть или не быть тем, что вы хотите.

Смежные вопросы