44

以前有人向我展示了如何做到这一点,但我不知道现在是什么。

我知道,:set paste但这不是问题。

4

5 回答 5

85

使用"*p"*P立即从系统剪贴板粘贴。

必须使用 Vim 编译+clipboard它才能工作。

有关:help clipboard更多信息,请参阅。

于 2013-08-15T18:53:05.740 回答
20

这是缓冲区刷新到磁盘的问题。Vim 试图保证您的工作安全,并且不会假设您每秒可以输入数千个字符。阅读:help swap-file有关缓冲的一些详细信息。您的问题的解决方案是这样的:

使用以下命令关闭 vim 的交换文件:

vim -n <your file>

或者在粘贴之前从 vim 内部:

:set noswapfile

有关:help swapfile更多详细信息,请参阅。

另一种选择是简单地关闭交换文件与磁盘的同步,:set swapsync=但是这个选项需要更多的击键才能撤消,我很懒。:)

关闭交换对于正常操作是不安全的!粘贴后立即使用:set swapfile:set swapsync=fsync恢复正常行为(尽管从技术上讲,正常行为可能是sync而不是fsync:set swapsync? ,如果你想走这条路,请事先检查)。

于 2014-11-26T02:23:30.213 回答
9

根据我:set syntax=off在粘贴前的经验,请参阅https://askubuntu.com/a/223061/240577在粘贴大文件时,我在 osx、ubuntu、redhat 和 windows 上看到 vim/gvim/mvim 的“慢”行为/高 CPU 使用率内容块和语法突出显示已打开。

于 2014-01-27T17:00:06.460 回答
1

:read !xclip -o在我定位光标粘贴复制的文本后,我在我的 vim 文档中使用。

也可以是:

:read !xsel -b # X11
:read !pbpaste # On macos
:r !@xclip -o # :r as :read alias
于 2021-11-04T15:42:09.950 回答
-1

对于某些文件类型:set syntax=off没有区别,因为减速是由foldexpr. 设置为空foldexpr可以再次快速粘贴。

手动操作是愚蠢的(而且很慢!)。幸运的是,vim在许多终端中支持括号粘贴paste并自动启用,因此可以挂钩并暂时禁用foldexpr

function! s:paste_toggled(new, old) abort
    if a:new && !a:old
        let b:saved_foldexpr = &foldexpr
        let &l:foldexpr = ''
    elseif !a:new && a:old && exists('b:saved_foldexpr')
        let &l:foldexpr = b:saved_foldexpr
        unlet b:saved_foldexpr
    endif
endfunc

augroup FastPaste
    autocmd OptionSet paste call s:paste_toggled(v:option_new, v:option_old)
augroup END

(来源:https ://github.com/liskin/dotfiles/blob/69ab04e64e001da90232eaf2c5856337d58c785f/.vim/plugin/fastpaste.vim )

于 2020-05-09T09:00:28.783 回答