VirtualBox内でクリップボードの共有ができない時の対処法
環境
VirtualBox 6.1.34 r150636
VBoxGuestAdditions 6.1.34
Vagrant 2.2.19
ホスト: macOS Monterey 12.4
仮想環境: ubuntu 20.04
前提
virtualBoxで 設定→一般→高度→クリップボードの共有 が双方向になっている
VBoxGuestAdditions.isoを挿入している
(この前提についても記事に補記します)
TL; DR
ゲスト側のプロセスを調べるとVBoxClient --clipboardが動いていないのでゲスト側の.zshrcに追記する
code:.zshrc
VBoxClient --clipboard
fi
本文
競技プログラミングをおこなっていると書き終えたコードを全てコピーし貼り付けるという作業が生じる。そのためVSCodeでは単純にコピペできていたものが行えなくなってしまった。
(なお最近はojと呼ばれるCLIで提出するコマンドが存在するが、フォルダ階層などの個人的な嗜好で使用していない) そのため、vimのヤンク先を仮想環境内のクリップボードに、そして仮想環境内のクリップボードをホスト環境内のクリップボードに共有させる必要があった。
前者に関しては既に色々な記事が出ているので割愛する。
ubuntuではうまくいくが、他の環境だとこの方法はうまく行かない可能性があるので注意する。
最終的に
code:vim
:set clipboard
とコマンドを打った際に
code:output
clipboard=unnamedplus
# or
clipboard=unnamedplus, autoselect
と出ていれば問題ない。
今回は後者の仮想環境内のクリップボードをホスト環境内のクリップボードに共有することを目標とする。
まずVBoxGuestAdditions.isoを挿入していることを確認する。
挿入していない場合
virtualboxから起動を行い、デバイス→GuestAdditionsのCDイメージを挿入を押す
挿入できない場合
仮想マシンにGuestAdditionsの光学ドライブを挿入し、一度エラーを出した後に取り出すことで上手くいく
(詳しい説明はRef)
次にクリップボードの共有 が双方向になっていることを確認する。
双方向になっていない場合
virtualBoxで 設定→一般→高度を開き、
クリップボードの共有を双方向にする
基本的には以上2つでクリップボードの共有は完了するはずである。
私の環境ではできなかったので以下の追加処理を行なった。
まずpsコマンドで動いているVBoxClientを確認する。
code:log
$ ps aux | grep VBoxClient
vagrant 1729 0.0 0.0 8160 716 pts/0 S+ 12:39 0:00 grep VBoxClient
本来はRefの状態になるべきと想定できるが、何も存在しないことが見て取れる。
(おそらくはどこかの処理を飛ばしていると考えられるが、見つからないため応急処置を行う)
そのため、起動時に動かすために.zshrcに書き込むことで解決した。
code:.zshrc
VBoxClient --clipboard