Vimで2つのファイルを開き、それぞれを1つのtmuxペインで開きます。コピーしたいとしましょう。たとえば、あるファイルから別のファイルに10行です。
マウスのCopy
-> Paste
を使用せずにこれを行うにはどうすればよいですか?
Tmuxショートカットを使用する必要があります。 tmuxコマンドのショートカットがデフォルトであると仮定します。 Ctrl+b、次に:
Ctrl+b、 [ コピー(?)モードに入ります。
ハイライトするテキストの最初/最後に移動します。
Ctrlspace
テキストの強調表示を開始します(Arch Linuxの場合)。 OSXや他のLinuxのソースからtmuxをコンパイルしたら、ちょうど Space 通常はそれ自体で機能します。選択したテキストによって色が変わるため、コマンドが機能したかどうかがわかります。
コピーするテキストの反対側に移動します。
Alt+w 選択したテキストをtmuxクリップボードにコピーします。 (Macでの使用 Esc+w。)
反対側のtmuxペイン、または完全に異なるtmuxウィンドウにカーソルを移動します。コピーしたテキストを貼り付けたい場所にカーソルを置きます。
Ctrl+b、 ] tmuxクリップボードからコピーしたテキストを貼り付けます。
tmuxは、コマンドをカスタムキーボードショートカットにマッピングするのに優れています。
見る Ctrl+b、? 設定されているキーボードショートカットの完全なリストについては、.
残念ながら、まだアレックス・リーチの回答にコメントを追加することはできないので、Mac OS Xユーザー向けにここに補遺を追加します。
MacOSでvimとtmuxを使用している場合(macOS 10.12.2、tmux 2.3でテスト済み):
(tmuxのプレフィックスキーの組み合わせが prefix。接頭辞は ctrl + b デフォルトでは。)
ZOC端末 sshクライアントを使用して、Windowsマシン上のCentOSサーバーに接続しています。ここに私のために働くものがあります:
<prefix>
+ [
<Space>
<Enter>
<prefix>
+ ]
vim
を開いている場合は、vimコピーペーストを使用してテキストをコピーすることをお勧めします。
Tmuxコピーペーストは機能しますが、いくつかの欠点があります。
まず、複数行のテキストをコピーする場合は、複数行を選択する必要があります。 Tmuxコピーペーストは通常、vim
に行番号があるか、vim Gutterにマーキング(相対番号/絶対番号など)があることを理解していません。その結果、それらもコピーされます。
次に、テキストに特定の言語固有の書式が設定されていて、tmuxを使用してvimに直接コピーアンドペーストしようとすると、書式がめちゃくちゃになることがわかりました。これは、set paste!
を使用することで回避できます。ただし、これにはさらに多くの作業が必要です。
"+y
を使用してコピーし、"+p
を使用して貼り付けますVim
は、"+y
または"*y
のいずれかを使用して、vimバッファーとシステムクリップボードの間でコピーアンドペーストする方法をネイティブで提供します。次に、"+p
または"*p
を使用して貼り付けます。これにより、ガターまたはvimに関連しないその他のランダムなマークの相対番号をコピーすることが回避されます。
通常のyとpの代わりに、「* y」と「* p」を使用してシステムクリップボードを使用できます。
Tmuxショートカットシーケンスが少し長く、覚えにくいので、vimを使用するためのいくつかのオプション
上記の回答のように、あなたは"+y
および"*y
コピーしてから"+p
および"*p
それぞれ貼り付けます。 vimがデフォルトでクリップボードを使用するようにしたい場合は、y/p
直接。
set clipboard=unamed "sets the default copy register to be *
set clipboard=unamedplus "sets the default copy register to be +
クリップボードコマンドのソース: https://vi.stackexchange.com/questions/84/how-can-i-copy-text-to-the-system-clipboard-from-vim
私自身にも問題があり、.vimrcファイルと.tmux.confファイルをここにアップロードしました: tvp-repl
Tmuxを設定して
クリップボードにコピーするためにvimを設定するために必要なすべて[ビジュアルモード Ctrl+c]:
set clipboard=unnamedplus
vnoremap <C-c> "+y
次に、tmuxコマンドを使用して、vimからコピーを実行し、バッファを別のペインに貼り付けます[Ctrl+b 入る]:
bind-key Enter run "tmux send-keys -t 0 C-c" \;
run "tmux select-pane -t 1" \;
run "tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer" \;
run "tmux send-keys -t 1 Enter" \;
run "tmux select-pane -t 0"
注意:a)このスクリプトでは、クリップボードとのインターフェースにxclipが必要です。 b)仮定はvimがペイン0にあることです。ターゲットペインはペイン1です。