***本記事にはプロモーションが含まれています。***
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サーバーを使いますので、同時にインストールします。
1 | sudo yum install xsel Xvfb |
Xvfbを立ち上げます。
1 2 | Xvfb -screen 0 1280x720x24 & export DISPLAY=:0 |
もし、Xvfbが立ち上がっていなくてxselを使おうとすると、次のようなエラーが出ます。DISPLAY変数がexportされてないときも同様です。
1 | xsel: Can't open display :(null) |
準備の最後にVBoxClientを立ち上げます。
1 | VBoxClient --clipboard |
これで、ホストOSとゲストOS間でコピーペーストできます。準備は終わりです。
例えば、文字列aaaをクリップボードへにコピーするには、次のようにします。
1 | echo aaa |xsel --input --clipboard |
クリップボードからのペーストは次のようにします。
1 | xsel --output --clipboard |
これでクリップボードをコマンドで使うことができるようになりました。
2-2. pbcopy/pbpasteコマンドにまとめる
いちいちxselのコマンドを打ち込むのは手間がかかりますので、pbcopy/pbpasteというコマンドにまとめます。pbcopy/pbpasteは同名のMac OSのコマンドです。
ホームディレクトリの.bash_profileの最後にaliasで定義します。
.bash_profile
1 2 | 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
1 2 3 | shopt -s expand_aliases alias pbcopy="xsel --input --clipboard" alias pbpaste="xsel --output --clipboard" |
.bashrcの最後でこのファイルを有効にします。
1 | export BASH_ENV=~/.bashenv |
これで、viのコマンドモードで
1 | :r!pbpaste |
とすると、クリップボードにコピーされた内容を取り込むことができます。
コピーしたいときはビジュアルモードで範囲を選択して、次のようにします。
1 | :!pbcopy;pbpaste |
ちなみにpbcopyとpbpasteの間はセミコロンです。
pbopyの前のビックリマークが必要です。また、pbpasteがないと切り取りになってしまいます。
3. まとめ
VirtualBoxのCUI(Character User Interface)コンソールでコピーペーストを使えるようにしました。
CentOSのGnomeデスクトップが立ち上がる前のコピーペーストの方法について説明しました。
設定が完了するとviでクリップボードへのコピーペーストができるようになります。