Windows Subsystem Linux - VIM でクリップボードを使用するには?

Windows Subsystem 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 では、がWin11あれset clipboard+=unnamedplusば十分なようです。neovim

(編集:2020年10月) の双方向クリップボードについてはneovimwin32yank数か月間、問題なく動作しています。Linuxwin32yank.exeのパス内のどこか (どこでもかまいません) に次のコードを追加し、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. インストール翻訳 (インストール後に起動した場合は停止してください)
  2. 新しくインストールしたプログラムを使用して起動しますXLaunchスタートメニューで検索)。
  3. すべてのデフォルトオプションを選択し、クリップボードオプションチェックされます。

  4. 最後に、設定をファイルに保存しますconfig.xlaunchこれからはそれを使って始めてください)。

  5. Windows の bashにexportDISPLAY=localhost:0.0と入力し、開いているターミナルで実行します。.bashrcsource ~/.bashrc

  6. vim がクリップボード サポートを使用してインストールされていることを確認します。ではなく とvim --version | grep clipboard表示される必要があります。また、vim でex コマンドを実行すると、クリップボード サポートがコンパイルされていないと表示されます。+clipboard-clipboard:echo has('clipboard')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これはこの標準を実装しており、このプラグインをインストールしてキーマッピングを設定するだけです。ぜひ試してみてください。

関連情報