在 Vim 脚本中从剪贴板粘贴

3

我希望编写一个vim函数,可以从剪贴板中粘贴内容(如果在Windows上使用则需要注意)

我认为应该像这样:

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

当然,"+p只是.vim文件中的注释。我该如何让它起作用?
3个回答

5
你正在寻找:normal命令:
function MyPastingFunc()
  "paste from clipboard
  normal! "+p
  "do more stuff
endfunction

用于防止vim运行用户映射中可能包含的"+p


2

如果您希望始终将内容粘贴到新行中,可以使用:put命令,例如:

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

注意,它还会将光标位置移动到插入文本的第一个非空白字符。这可能是您想要的,也可能不是。

1

你应该能够使用feedkeys函数,其名称相当自说明:

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

1
这个解决方案的效果和“正确”的答案一样好,但我觉得正常使用比使用feedkeys更好。 - ScottS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接