Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

【Vim】ターミナルから複数インスタンス間でクリップボードの内容を共有・アクセスする方法

Vim(Vi IMproved)は、プログラマーの間で最も人気のあるテキストエディタの一つです。短いコマンドだけでさまざまな操作を素早く実行できる点が最大の魅力です。

【Vim】ターミナルから複数インスタンス間でクリップボードの内容を共有・アクセスする方法

例えば、選択(ハイライト)したテキストをコピーするには「y」コマンドを、カットするには「x」コマンドを使用します。しかし、デフォルト設定のvim(gVimではなく)では、Vimインスタンスを閉じた後にクリップボードの内容へアクセスできません。

Vimはシステムクリップボードを参照するために「+」レジスタを使用します。「vim --version」を実行した際、出力に「+xterm_clipboard」ではなく「-xterm_clipboard」と表示される場合は、クリップボードの内容がVimの外部では利用できないことを意味します。

gvimとparcelliteのインストール

Vimのクリップボード内容にアクセスするには、まずgvimパッケージをインストールします。gVimはVimエディタのGUIモードであり、クリップボード機能がデフォルトで有効になっています。

# yum install -y gvim

次に、RPMForgeリポジトリを有効化してparcelliteパッケージをインストールします。ParcelliteはLinux向けの軽量かつコンパクトなフリーのクリップボードマネージャーです。

# yum install -y parcellite

インストールが完了したら、以下のコマンドを実行します。引数の「&」は、parcelliteをバックグラウンドプロセスとして起動するために指定しています。

# parcellite &

続いて、gvimでクリップボードオプションが有効になっているかを確認します。

# gvim --version

出力の中に、以下のように「+xterm_clipboard」オプションが表示されていることを確認してください。

VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Apr  5 2012 10:12:08)
Included patches: 1-411
Huge version with GTK2 GUI.  Features included (+) or not (-):
+arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
+cryptv +cscope +cursorshape +dialog_con_gui +diff +digraphs +dnd -ebcdic
+emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path
+float +folding -footer +fork() +gettext -hangul_input +iconv +insert_expand
+jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap
+menu +mksession +modify_fname +mouse +mouseshape +mouse_dec +mouse_gpm
-mouse_jsbterm +mouse_netterm -mouse_sysmouse +mouse_xterm +multi_byte
+multi_lang -mzscheme +netbeans_intg -osfiletype +path_extra +perl +postscript
+printer +profile +python +quickfix +reltime +rightleft -ruby +scrollbind
+signs +smartindent -sniff +startuptime +statusline -sun_workshop +syntax
+tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse
+textobjects +title +toolbar +user_commands +vertsplit +virtualedit +visual
+visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup
+X11 -xfontset +xim +xsmp_interact +xterm_clipboard -xterm_save

.bashrcへのエイリアス追加

ユーザーの.bashrcファイルを開きます。

# vim ~/.bashrc

以下のエイリアスを追記して保存します(「i」キーで挿入モードに入り、編集後にESCキーを押して「:wq」で保存・終了します)。

# .bashrc

# ユーザー固有のエイリアスと関数

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vim='gvim -v'
# グローバル定義の読み込み
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

このエイリアスは、あるコマンドを別のコマンドへ置き換えて実行するための仕組みです。これにより、「vim」コマンドを実行するたびに、クリップボードがデフォルトで有効になったgvimが起動するようになります。

.vimrcの設定

同じ要領で「.vimrc」ファイルを編集します(.vimrcファイルがまだない場合は、記事末尾の手順で生成してから作業を続けてください)。

# vim ~/.vimrc

以下の行を追記してファイルを保存します。

autocmd VimLeave * call system("echo -n $'" . escape(getreg(), "'") . "' | xsel -ib")

この設定により、Vimを終了するタイミングでレジスタの内容がxsel経由でシステムクリップボードへ自動的にコピーされます。

これで準備は完了です。任意のファイルをVimで開き、「v」コマンドでテキストを選択して「"+y」を押してみましょう。その後、Vimを閉じた状態でも開いたままでも、Vimの外部の任意の場所に貼り付けられるようになります。

.vimrcファイルの生成方法

.vimrcファイルをお持ちでない場合は、以下のコマンドで生成できます(既に存在する場合はこの手順をスキップしてください)。

# cd   [ホームディレクトリに移動]
# vim .vimrc

Vim上でESCキーを押してコマンドモードに切り替え(VimではすべてのコマンドをESCキー押下後のコマンドモードで実行します)、以下を入力します。

:r $VIMRUNTIME/vimrc_example.vim
:w

これでサンプル設定を読み込んだ.vimrcファイルが作成され、クリップボード連携の準備が整います。

  1. 【Windows 10】クリップボードの内容をデバイス間で同期する方法

    Windows 10 October 2018 Updateでは、すべてのデバイス間でクリップボードの内容を同期できる新しい便利機能が搭載されました。既存のCtrl+C / Ctrl+X / Ctrl+Vショートカットとシームレスに連携しながら、さらに高度な機能を利用できるのが特徴です。本記事では、このクリップボード同期機能の有効化の手順から、実際の使い方まで詳しく解説します。1. クリップボードの履歴と同期機能を有効にするまず、機能がまだオフになっている場合は、有効化する必要があります。「設定」アプリを開き、「システム」カテゴリを選択して「クリップボード」ページへ移動しましょう。なお、このペ

  2. 複数の画像からPDFを作成する2つの簡単な方法|Windows・オンラインツール対応

    PDF文書は、どのデバイスでも同じ表示結果になる、最も信頼性の高いデジタル文書形式のひとつです。しかし、PDF文書の作成や管理は決して簡単ではありません。本記事では、複数の画像から新しいPDF文書を作成する方法に焦点を当てて解説します。このような画像PDFは、小規模ビジネスにおけるカタログ作成はもちろん、旅行や休暇の思い出をストーリーとしてまとめて共有するのにも最適です。画像たっぷりのPDFは、スマートフォン、PC、Kindleなど、あらゆるデバイスで閲覧できます。 複数の画像からPDFを作成するのはとても簡単で、大きく分けて2つの方法があります。さらに本記事では、PDF作成後にページを並べ替