ラッパーを介してシェルを起動する場合reattach-to-user-namespace
(ラッパーのドキュメントで説明しているように)、すべての子はユーザー ブートストラップ名前空間にアタッチされるため、(eg)pbcopy
およびpbpaste
.
または、ラッパーを介して Vim のインスタンスのみを実行して、Vim (およびその子) にブートストラップ名前空間へのアクセスを許可することもできます。*
そうすれば、レジスターを使用できるはずです(Vim 7.3 をこの+clipboard
機能でコンパイルした場合、つまり、OS X に付属するもの以外の実質的にすべてのビルドの Vim を使用している場合)。
reattach-to-user-namespace vim …
# use "* inside Vim to access the OS X clipboard.
ラッパーを必要とする最終的なプロセス (例: ) 以外でラッパーを実行したくない場合は、pbcopy
Vim のsystem()
関数を使用できます。これは、Vim の内部データを任意の (非対話型) 外部コマンドに一般的に送信する方法でもあります。
:call system('reattach-to-user-namespace pbcopy', getreg(''))
これを新しいコマンドとしてパッケージ化することをお勧めします (さまざまなレジスタでより簡単に使用できるようにするため)。
command -bar -register Pbcopy call system('reattach-to-user-namespace pbcopy', getreg(<q-reg>))
この新しいコマンドは、次のように使用できます (引数はレジスタ名です)。
:Pbcopy "
:Pbcopy a
さらに一歩進んで、コマンドを呼び出すマッピングを作成できます。
nnoremap <F3> :<C-u>execute 'Pbcopy ' . v:register<CR>
F3orと入力して使用します"aF3(つまり、他のレジスタを使用する通常モード コマンドと同様に、レジスタ プレフィックスを使用します)。