Windows 子系統 Linux - 讓 VIM 使用剪貼簿?

Windows 子系統 Linux - 讓 VIM 使用剪貼簿?

為了現在就解決這個問題並避免任何混淆...這是針對在 Windows 10(ubunutu) 中運行的 Linux,也稱為 WSL。它與 cygwin 和 windows 或獨立的 linux 不同。它是它自己的野獸。

因此,在我引用我已經讀過的所有文章或評論之前曾問過的問題之前,請記住上述內容。

有誰知道如何在 Windows 剪貼簿或 WSL Ubuntu Linux 模擬中進行複製和貼上工作?我正在使用 set clipboard=unnamedplus。無論我使用什麼組合,如yy"+yy等,它都不起作用。

是的,這是vim-gtk+xterm_clipboard支持的。

答案1

(編輯:2024 年 4 月)有了最新的版本,WSL version: 2.1.5.0現在似乎就足夠了,至少對於最新的 Microsoft Store 版本的 Ubuntu 來說是這樣。Win11set clipboard+=unnamedplusneovim

(編輯:2020 年 10 月)對於 上的 2 向剪貼板neovim,我一直在使用win32yank幾個月沒有任何問題。將其放在win32yank.exeLinux 上的路徑中的某個位置(任何位置都可以),然後將以下內容新增至您的init.vim.

set clipboard+=unnamedplus
let g:clipboard = {
          \   'name': 'win32yank-wsl',
          \   'copy': {
          \      '+': 'win32yank.exe -i --crlf',
          \      '*': 'win32yank.exe -i --crlf',
          \    },
          \   'paste': {
          \      '+': 'win32yank.exe -o --lf',
          \      '*': 'win32yank.exe -o --lf',
          \   },
          \   'cache_enabled': 0,
          \ }

(原始答案)如果您只想從 VIM 拉到 Windows,對於 WSL2 和 Ubuntu 20.04,這個答案Reddit 上的標準 VIM 和標準 WSL2 Ubuntu 非常適合我。

將以下內容放入您的.vimrc(例如,在底部):

" WSL yank support
let s:clip = '/mnt/c/Windows/System32/clip.exe'  " change this path according to your mount point
if executable(s:clip)
    augroup WSLYank
        autocmd!
        autocmd TextYankPost * if v:event.operator ==# 'y' | call system(s:clip, @0) | endif
    augroup END
endif

答案2

這個解決方案為我工作,感謝 github 用戶羅比耶夫

為了完整起見,這是他的回答的摘錄:

  1. 安裝VcXsrv (如果安裝後啟動,請將其停止)
  2. 使用新安裝的程式啟動它XL啟動在開始功能表中搜尋)。
  3. 使用所有預設選項,並確保剪貼簿選項被檢查。

  4. 最後,將配置儲存到文件中,config.xlaunch從現在開始用它來啟動它)。

  5. 將導出放入Windows 的 bashDISPLAY=localhost:0.0中並在任何開啟的終端機中執行。.bashrcsource ~/.bashrc

  6. 確保使用剪貼簿支援安裝 vim。vim --version | grep clipboard應該說+clipboard,不是-clipboard。另外,如果你:echo has('clipboard')在 vim 中執行 ex 指令,它會說它0沒有編譯剪貼簿支援。

  7. 如果您沒有剪貼簿支持,請安裝使用剪貼簿支持編譯的 vim 包,例如apt-get install vim-gtk.

  8. "*p現在您可以透過和存取 Windows 系統剪貼簿"*y,或透過放入檔案將其設定為預設set clipboard=unnamed.vimrc

作為羅比耶夫提到您現在也應該能夠透過 SSH X 轉送從遠端電腦使用 Windows 剪貼簿。

答案3

您可以右鍵單擊終端,然後在選項框中選取 CTRL + SHIFT + C/V,以便透過終端進行複製貼上操作。

WSL Ubuntu 終端

答案4

如果您正在使用 vim(或 neovim),也許您應該知道ANSI OSC52這是一個嘗試解決此「複製/貼上」問題的標準(在特定情況下,例如在 SSH 終端中)。

然後這是有用的插件vim-oscyank它實現了這個標準,你所要做的就是安裝這個插件並為其設定一個鍵映射。你絕對應該嘗試一下。

相關內容