web-dev-qa-db-ja.com

vimおよびシステムクリップボード

ファイルをcatし、中央のボタンでテキストをコピーして貼り付けるか、Shiftキーを押しながら挿入します。

Vimでテキストをコピーしてシステムクリップボードから貼り付けるにはどうすればよいですか?

9
grantbow

clipboardおよびxtermclipboard機能を備えたVimをコンパイルする必要があります。Ubuntuでは、これらはvim GUIパッケージ(vim-gnomevim-gtkvim-athenaなど)。

これらのいずれかをインストールすると、クリップボードレジスタ(*および+)にコピー(および貼り付け)できます。 Vi and Vim に関するこの非常に有益な投稿から:

X11ベースのシステムの場合(つまりLinuxおよびその他のほとんどUNIX-likeシステム)2つのクリップボードがあり、互いに独立しています:

  • プライマリ-これはコピーオンセレクトで、マウスの中ボタンで貼り付けることができます。
  • CLIPBOARD-これは(通常)^Cでコピーされ、^V(MS Windowsのようなもの)で貼り付けられます。

Vimには、これらのクリップボードに対応する2つの特別なレジスタがあります。

  • *はPRIMARYを使用します。ニーモニック:starはselect(for copy-on-select)
  • +はCLIPBOARDを使用します。ニーモニック:CTRL+C(共通キーバインドの場合)

レジスタにコピーするには、コピーコマンド(y)の前に"とレジスタの名前(*など)を付けます。 "*y、次に中クリックして貼り付けるか、"+yと ShiftInsert 貼り付けます。

11
muru

非常に興味深い解決策は this の質問です。 xclipをインストールし、コマンドの出力をxclip(cat file | xclip -selection clipboardたとえば)にパイプしてから、どこかに貼り付けます(ターミナルにある場合-を使用します CtrlShiftV )。ここで、実際にそのコマンドをxclip -sel clipに短縮できることがわかります。これは、マニュアルページや例を読むと正確にはわかりません。

3

私のvimはクリップボードをサポートしていなかったため、問題がありました。

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

クリップボードをサポートするvim-gnomeをインストールしてから、もう一度確認しました。

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

これで、それぞれ「+ y」と「+ p」を使用してコピーと貼り付けができるようになりました。

2