Tmuxセッション内でvimを使用している間、名前のないレジスタにヤンクしたり貼り付けたりできません。名前付きレジスタに移動しても問題なく機能しますが、名前のないレジスタは機能しません。
エラーは:
E353: Nothing in register *
Tmuxがない場合、vimは現在の設定を使用して正常に動作します。使用できるように修正するにはどうすればよいですか y それから p エラーなしで、レジスタを指定せずに?
エラーメッセージ(_Nothing in register *
_)から、プレーンを実行すると? p
、Vimのインスタンスは _ named register の代わりに _*
_ register を使用しています*。これは、おそらく clipboard
option に値unnamed
が含まれているためです。このように設定すると、Vimはデフォルトでyank、delete、change、put操作の名前のないレジスタの代わりに_*
_ registerを使用します(つまり、_"
_プレフィックスで別のレジスタを指定しない限り、たとえば_"ap
_をa
registerから入れます)。
*名前のないレジスタは、実際には_"
_(二重引用符)という名前です。それを使用するために名前を付ける必要がないという意味でのみ、「名前なし」です(デフォルトです)。つまり名前のないレジスタから置くために_""p
_と言う必要はありません、ただp
だけです。
clipboard
のデフォルト値にはunnamed
が含まれていないため、おそらく構成(またはプラグイン)の一部に由来します。コマンド_:verbose set clipboard?
_は、現在の値を設定するスクリプトを表示します。構成ファイルでこれが行われている場合、tmuxの下で実行しているときは実行しないことをお勧めします。例えば:
_if $TMUX == ''
set clipboard+=unnamed
endif
_
あるいは、Vim-inside-tmuxのインスタンスがGUI選択/クリップボードにアクセスできるようにする方法があります(したがって、_*
_レジスタおよび/またはunnamed
のclipboard
で動作します) 。 Mac OS Xを実行している場合は、 my workaround wrapper を参照してください。これにより、tmuxセッション内で実行されているプロセスのクリップボードアクセスが再度有効になります。他のOSまたはGUIを使用している場合、Vimが通常GUIと通信する方法と動作しない理由を調べる必要があります(たとえば、実行中の古いセッションへの接続によるX11での誤ったDISPLAY値など)古い値を持つシェル)。
Vim/tmux/osxで機能するのは次のとおりです。
brew install reattach-to-user-namespace
set clipboard=unnamed
set-option -g default-command "reattach-to-user-namespace -l bash"
fakeclip プラグインは、クリップボードレジスタを多くの端末で期待どおりに動作させ、tmux/screenをサポートします。使っていますか?問題が解決する場合があります。
また、このヒントに興味があるかもしれません...それはあなたの質問には当てはまりませんが、関連しています。 tmuxを実行しているシステム/端末の種類に応じて、.tmux.conf
にいくつかの調整が必要になる場合があります。たとえば、OS Xでの.tmux.conf
の抜粋を以下に示します(コメントにいくつかの指示があります)。
# To use pbcopy and pbpaste on OS X, get this wrapper and install
# git clone https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard.git
# cd tmux-MacOSX-pasteboard/
# make reattach-to-user-namespace
# mv reattach-to-user-namespace /usr/local/bin
# After installing, the default command can be reset to use the 'reattach-to-user-namespace'
# wrapper that was compiled/installed as descripted above.
set -g default-command "reattach-to-user-namespace -l /bin/bash"
# #Next, create Ctrl-c and Ctrl-v mappings
bind C-c run "tmux save-buffer - | reattach-to-user-namespace pbcopy"
bind C-v run "tmux set-buffer $(reattach-to-user-namespace pbpaste); tmux paste-buffer"
OSXでの私の経験からいくつかのメモを受け入れられた答えに追加するには:
set clipboard=unnamed
ではなくset clipboard=unnamedplus
を実行してください$ killall tmux
または$ tmux kill-session -a
)。 tmux構成ファイルを再ロードすると、default-commandが設定されていることが示されましたが、vimはシステムクリップボードにアクセスできませんでした。遅い答えですが、.tmux.conf
に次の行が含まれている可能性もあります。
set -g set-clipboard off
.vimrc
を含む
set clipboard=unnamed
これにより、vimはそこにないクリップボードを使用しようとします。