如何在 cygwin 的 vi/emacs 和 Windows 剪贴板之间复制和粘贴?

如何在 cygwin 的 vi/emacs 和 Windows 剪贴板之间复制和粘贴?

我尝试将 Windows 剪贴板中复制的内容粘贴到 cygwin 的 vi 或 emacs 中,但它似乎无法与 yy (vi) 或 Mw (emacs) 一起使用。

有办法吗?我了解到/etc/clipboard有来自 Windows 的剪贴板数据,但我不知道如何在 vi 或 emacs 中获取此信息。

答案1

至少对于 vim 来说,剪贴板就是"*寄存器。

因此,要提取当前行,请执行"*yy,要粘贴剪贴板的内容,请执行"*p,依此类推。

答案2

在 cygwin 下从 vim 复制文本,只需在可视模式下"按键+键:y

"+y

将文本粘贴到 cygwin 下的 vim 中,只需在正常模式下按下"+键键 即可:p

"+p

答案3

有一个解决方案提到维基亚

function! Putclip(type, ...) range
  let sel_save = &selection
  let &selection = "inclusive"
  let reg_save = @@
  if a:type == 'n'
    silent exe a:firstline . "," . a:lastline . "y"
  elseif a:type == 'c'
    silent exe a:1 . "," . a:2 . "y"
  else
    silent exe "normal! `<" . a:type . "`>y"
  endif
  call writefile(split(@@,"\n"), '/dev/clipboard')
  let &selection = sel_save
  let @@ = reg_save
endfunction


vnoremap <silent> <leader>y :call Putclip(visualmode(), 1)<CR>
nnoremap <silent> <leader>y :call Putclip('n', 1)<CR>

只需将这些行复制到 .vimrc,然后 \y 即可完成操作,无论您是使用 vim 还是鼠标选择文本。
这可能不是问题,因为您已经可以访问剪贴板,但 /dev/clipboard 适用于 Cygwin 版本 1.7.13 及更高版本。

答案4

要在 Cygwin 中使用 vi 从剪贴板粘贴:

Press SHIFT-INSERT in insert mode

(this means the insert key by the Delete/Home/End keys)

要在 Cygwin 中使用 vi 复制到剪贴板:

When you select text with your mouse, it automatically gets copied to the clipboard.

You can paste from the clipboard by pressing the middle mouse button.

此外,在某些“*yy”不起作用的环境中,您可以尝试"+年

不幸的是不是在 Cygwin 中工作。

相关内容