Вставить из буфера обмена в vim script - PullRequest
3 голосов
/ 01 июля 2010

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

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

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

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

Ответы [ 3 ]

4 голосов
/ 01 июля 2010

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

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

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

2 голосов
/ 01 июля 2010

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

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

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

1 голос
/ 01 июля 2010

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

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