web-dev-qa-db-ja.com

vimインスタンスを実行しているさまざまなtmuxペイン間でコピーアンドペーストする方法

例:1つのtmuxペインにコピーし(vim経由)、次に別のペインに切り替え(別のvimインスタンスを実行)、vim pasteコマンドを使用して貼り付けます。これはtmux(prefix +]を使用)で行うことができますが、vimを実行している異なるペイン間を切り替えるだけなので、vimバインディングを使用してコピーアンドペーストできると本当に便利です。

何か案は?

66
gylaz

申し訳ありませんが、vimの組み込み機能を使用するよう説得しようとしています。


copy/pasteを簡単にするために、別のタブページでファイルを開くことができます:

:tabe /path/to/another/file

つかいます gt または gT タブページを切り替えます。


または、ウィンドウを分割して別のファイルを編集します。

:sp /path/to/another/file

つかいます Ctrl-ww Windowsを切り替える。
ウィンドウを垂直に分割するには、:vsp fileを使用してください


更新:

これは私の.tmux.confファイルです:

# vim
setw -g mode-keys vi
bind [ copy-mode
bind -t vi-copy v begin-selection
bind -t vi-copy y copy-selection
bind -t vi-copy V rectangle-toggle
bind ] paste-buffer

# buffer
bind Space choose-buffer

端末出力をコピーする必要がある場合にのみ使用します。

47
kev

私はこの便利なバインディングを数年間使用しています:)

" copy to buffer
vmap <C-c> :w! ~/.vimbuffer<CR>
nmap <C-c> :.w! ~/.vimbuffer<CR>
" paste from buffer
map <C-p> :r ~/.vimbuffer<CR>
20
chenkaie

1つのvimインスタンスを使用する方が良いことに同意しますが、tmuxだけでこれを行うことができます。コピーモードが組み込まれています。私のtmux.confは次のように設定されています:

  setw -g mode-keys vi
  unbind [
  unbind p
  bind C-y copy-mode
  bind p paste-buffer
  bind -t vi-copy v begin-selection
  bind -t vi-copy y copy-selection
  bind -t vi-copy Escape cancel

したがって、prefix-<C-y>コピーモードをアクティブにする場合は、/search termを目的の場所に移動する例として、vを視覚的に選択し、yをtmuxにヤンクします。次に、他のvimセッションに移動し、挿入モードに入ります。つかいます prefix-p tmux貼り付けバッファーにあるものを貼り付けます。 tmuxの貼り付けバッファーをシステムのクリップボードにコピーする方法もあります。

12
Conner

私は現在、職場でWindowsを実行しているラップトップで立ち往生していますが、Linuxを実行しているサーバーですべての開発を行っているため、最終的にPuTTYを介したtmuxセッションで作業します。

Tmuxセッションの異なるウィンドウで実行されているvimインスタンス間でテキストをコピーしたかった。 *レジスタを使用してシステムクリップボードにコピーしようとしましたが、PuTTYを介して接続しているためXセッションがないため、isno vimの代わりにgVimを起動しても、システムのクリップボード。 (これを修正するためにx-forwardingなどを使用できたかもしれませんが、Windowsにx-serverをインストールしたくありませんでした。)

システムキーボードの代わりにvimからtmuxのコピー/貼り付けバッファーを使用する方法があるはずだと考え、十分な誰かが そのためのプラグイン と書いていることを確認しました。

Fakeclipをインストールすると、tmuxの貼り付けバッファーにマップされる新しいレジスタ&が追加されます。すべてのvimインスタンスが同じtmuxセッション内にあるため、これにより、インスタンス間のテキストのヤンク/プットが非常に簡単になります。

プラグインのドキュメントでは、fakeclipはgnu画面でも動作するはずであると書かれていますが、私はそれを個人的にテストしていません。


tl; dr

fakeclip プラグインをインストールすると、使用できます "&y toyankto tmux's buffer "&p toputtmuxのバッファーから。

12
DaoWen

Vimバインディングを使用してコンテンツをクリップボードにコピーしてから、ペインに切り替えて貼り付けることができます。次のキーバインディングは便利かもしれません。

noremap ty "+y
noremap tY "+Y  // copy a whole line to the clipboard
noremap tp "+p  // put the text from clipboard after the cursor 
noremap tP "+P  // put the text from clipboard before the cursor 

"+レジスタは、Vimでシステムのclipboradにアクセスするために使用されます。

役に立つヒント:
1。 vまたはVまたはctrl-vを押してビジュアルモードに入り、ヤンクするコンテンツを選択し、tyを押してクリップボードにコピーします。 。
2。 tyは他のモーションと組み合わせることができます。たとえば、tyawを使用して、カーソルの下のWordをクリップボードにコピーできます。 tyibは、括弧内のコンテンツをコピーします。 tyi"二重引用符などでテキストをコピー...

詳細については、 システムのクリップボードからvimペーストを作成(およびコピー)する方法 も参照してください。

3
knight42

Fedora24のソリューション

vimの代わりにvimxを使用する必要があります

あなたの.bashrcまたは.zshrcを入れてください

alias vi='vimx'
alias vim='vimx'

そして、vims/tmuxパネル間で簡単にコピーできます


$ vim --version | grep clipboard
-clipboard       +insert_expand   +path_extra      -toolbar
+eval            +mouse_dec       +statusline      -xterm_clipboard

$ vimx --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +toolbar
+eval            +mouse_dec       +statusline      +xterm_clipboard

vimxは、おそらくインストールしたvim-enhanced-2:7.4.1868-1.fc24.x86_64の一部です

2
DmitrySemenov

これはneovimで機能します。

実行:checkhealth、次のようなものがあります。

## Clipboard (optional)
  - OK: Clipboard tool found: tmux

そうでない場合は、tmuxを最新バージョン2.9にアップグレードする必要があるかもしれません。

次に、「〜/ config/nvim/init.vim」に次のコードを追加します

set clipboard+=unnamedplus
1
Anthony Zhan