web-dev-qa-db-ja.com

tmuxペイン間でテキストをコピー(vimを使用)

Vimで2つのファイルを開き、それぞれを1つのtmuxペインで開きます。コピーしたいとしましょう。たとえば、あるファイルから別のファイルに10行です。

マウスのCopy-> Pasteを使用せずにこれを行うにはどうすればよいですか?

148
Patryk

Tmuxショートカットを使用する必要があります。 tmuxコマンドのショートカットがデフォルトであると仮定します。 Ctrl+b、次に:

  1. Ctrl+b、 [ コピー(?)モードに入ります。

  2. ハイライトするテキストの最初/最後に移動します。

  3. Ctrlspace

    テキストの強調表示を開始します(Arch Linuxの場合)。 OSXや他のLinuxのソースからtmuxをコンパイルしたら、ちょうど Space 通常はそれ自体で機能します。選択したテキストによって色が変わるため、コマンドが機能したかどうかがわかります。

  4. コピーするテキストの反対側に移動します。

  5. Alt+w 選択したテキストをtmuxクリップボードにコピーします。 (Macでの使用 Esc+w。)

  6. 反対側のtmuxペイン、または完全に異なるtmuxウィンドウにカーソルを移動します。コピーしたテキストを貼り付けたい場所にカーソルを置きます。

  7. Ctrl+b、 ] tmuxクリップボードからコピーしたテキストを貼り付けます。

tmuxは、コマンドをカスタムキーボードショートカットにマッピングするのに優れています。

見る Ctrl+b? 設定されているキーボードショートカットの完全なリストについては、.

219
Alex Leach

残念ながら、まだアレックス・リーチの回答にコメントを追加することはできないので、Mac OS Xユーザー向けにここに補遺を追加します。

  1. Enter 選択したテキストをコピーします

MacOSでvimとtmuxを使用している場合(macOS 10.12.2、tmux 2.3でテスト済み):

(tmuxのプレフィックスキーの組み合わせが prefix。接頭辞は ctrl + b デフォルトでは。)

  • コピー:
    1. 押す prefix + [ コピーモードに入ります。
    2. 矢印キーを使用して、テキスト選択の開始/終了に移動します。
    3. 押す ctrl + space (設定している場合 ctrl + space プレフィックスとして、プレス ctrl + space + space 代わりに)
    4. 矢印キーを使用して、選択の反対側に移動します。
    5. 押す ctrl + w
  • ペースト:
    1. 押す prefix + ] 挿入モード。
17
Hamid Rohani

ZOC端末 sshクライアントを使用して、Windowsマシン上のCentOSサーバーに接続しています。ここに私のために働くものがあります:

  • コピーモードに入ります:<prefix> + [
  • コピーを開始:<Space>
  • テキストをコピー:<Enter>
  • テキストを貼り付け:<prefix> + ]
13
jdhao

vimを開いている場合は、vimコピーペーストを使用してテキストをコピーすることをお勧めします。

Tmuxコピーペーストは機能しますが、いくつかの欠点があります。

まず、複数行のテキストをコピーする場合は、複数行を選択する必要があります。 Tmuxコピーペーストは通常​​、vimに行番号があるか、vim Gutterにマーキング(相対番号/絶対番号など)があることを理解していません。その結果、それらもコピーされます。

次に、テキストに特定の言語固有の書式が設定されていて、tmuxを使用してvimに直接コピーアンドペーストしようとすると、書式がめちゃくちゃになることがわかりました。これは、set paste!を使用することで回避できます。ただし、これにはさらに多くの作業が必要です。

"+yを使用してコピーし、"+pを使用して貼り付けます

Vimは、"+yまたは"*yのいずれかを使用して、vimバッファーとシステムクリップボードの間でコピーアンドペーストする方法をネイティブで提供します。次に、"+pまたは"*pを使用して貼り付けます。これにより、ガターまたはvimに関連しないその他のランダムなマークの相対番号をコピーすることが回避されます。

4
alpha_989

通常のyとpの代わりに、「* y」と「* p」を使用してシステムクリップボードを使用できます。

3
Johan

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

0
Avi Areman

私自身にも問題があり、.vimrcファイルと.tmux.confファイルをここにアップロードしました: tvp-repl

Tmuxを設定して

  1. Vim-paneの選択をクリップボードにコピーし、
  2. クリップボードを読み取り、それを別のペインに貼り付けます。
  3. 元のペインに戻ります。

クリップボードにコピーするために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です。

0
dariohett