VirtualBoxのCUI(Character User Interface)コンソールでCtrl-Vでコピーペーストをしようとしたけど^Vが表示されるだけで困っている。コピーペーストはマウスを使わないといけないのかな。
そんな人の悩みに答えます。
この記事では、次のことがわかります。
1. Gnomeデスクトップの端末で、コピーペーストをする方法
2. Gnomeデスクトップが立ち上がる前のVirtualBoxのコンソールでコピーペーストをする方法
3. まとめ
1. Gnomeデスクトップの端末で、コピーペーストをする方法
Gnomeデスクトップが立ち上がっている場合、コピーペーストは端末アプリの編集に、コピーと貼り付けがあります。コピーしたいところをマウスで白黒反転させておいてから、コピーを選び、貼り付けたいところにカーソルを持っていって、貼り付けを選べばいいです。
なお、ゲストOSとホストOSの間でコピーペーストができない場合は、VirtualBoxのGuestAdditionsが動作しているかどうか確認してください。
このときに、キーボードショートカットのCtrl-C/Ctrl-Vを使おうとすると、画面に^Vと表示されてしまって貼り付けできません。
解決方法は、Ctrl-Shift-CとCtrl-Shift-Vを使えばよいです。
Ctrl-Cは、プロセスの終了に割り当てられているため、Gnomeデスクトップの設定でこうなっています。
2. Gnomeデスクトップが立ち上がる前のVirtualBoxのコンソールでコピーペーストをする方法
Gnomeデスクトップが立ち上がる前のVirtualBoxのコンソールでは、ショートカットキーは使えません。そこで、xselというコマンドを使います。
サーバーバージョンのCentOSを使っていて、Gnomeデスクトップがない場合などに相当します。
ここでは、CentOSについて説明します。
2-1. xselのインストールと動作の確認
コンソールでxselと打ち込んでコマンドがない場合は、xselをインストールします。このときに、Xvfbという画面のないXサーバーを使いますので、同時にインストールします。
sudo yum install xsel Xvfb
Xvfbを立ち上げます。
Xvfb -screen 0 1280x720x24 &
export DISPLAY=:0
もし、Xvfbが立ち上がっていなくてxselを使おうとすると、次のようなエラーが出ます。DISPLAY変数がexportされてないときも同様です。
xsel: Can't open display :(null)
準備の最後にVBoxClientを立ち上げます。
VBoxClient --clipboard
これで、ホストOSとゲストOS間でコピーペーストできます。準備は終わりです。
例えば、文字列aaaをクリップボードへにコピーするには、次のようにします。
echo aaa |xsel --input --clipboard
クリップボードからのペーストは次のようにします。
xsel --output --clipboard
これでクリップボードをコマンドで使うことができるようになりました。
2-2. pbcopy/pbpasteコマンドにまとめる
いちいちxselのコマンドを打ち込むのは手間がかかりますので、pbcopy/pbpasteというコマンドにまとめます。pbcopy/pbpasteは同名のMac OSのコマンドです。
ホームディレクトリの.bash_profileの最後にaliasで定義します。
.bash_profile
alias pbcopy="xsel --input --clipboard"
alias pbpaste="xsel --output --clipboard"
aliasを書いたあとは $ source .bash_profileで有効にします。
2-3. viで使う
コンソールの中でviを使ったとき、コピーペーストするにはもう一工夫必要でした。viの中では、:r! 外部コマンドを打つとコマンドの実行結果が入力されます。上で設定したpbpasteを実行しようとしてもエラー127のcommand not foundになってしまいます。
そのため、環境変数BASH_ENVの設定と、.bashenvの設定が必要でした。
.bashenvというファイルを作ります。
.bashenv
shopt -s expand_aliases
alias pbcopy="xsel --input --clipboard"
alias pbpaste="xsel --output --clipboard"
.bashrcの最後でこのファイルを有効にします。
export BASH_ENV=~/.bashenv
これで、viのコマンドモードで
:r!pbpaste
とすると、クリップボードにコピーされた内容を取り込むことができます。
コピーしたいときはビジュアルモードで範囲を選択して、次のようにします。
:!pbcopy;pbpaste
ちなみにpbcopyとpbpasteの間はセミコロンです。
pbopyの前のビックリマークが必要です。また、pbpasteがないと切り取りになってしまいます。
3. まとめ
VirtualBoxのCUI(Character User Interface)コンソールでコピーペーストを使えるようにしました。
CentOSのGnomeデスクトップが立ち上がる前のコピーペーストの方法について説明しました。
設定が完了するとviでクリップボードへのコピーペーストができるようになります。