2017-08-22 7 views
6

vimのヤンクアンドペーストを増やす方法です。そのため、vimがコンテンツをファイルに書き出します。ペーストすると、ファイルの内容が使用されます。私は、グローバルなバッファとして機能するシステム全体のファイルを持っていたい。vim共有ファイルを介してコピーして貼り付けます

コンテキスト:リモートサーバ(ssh経由)上の異なるtmux分割でvimを実行します。私は、tmux分割でvim間をシームレスにコピー&ペーストしたい。私はたくさんのプラグインを試しましたが、それらのどれも働いていませんでした。

+0

おそらくhttps://superuser.com/questions/235117/vim-copy-paste-across-terminalsまたはhttps://stackoverflow.com/questions/11042920/how -to-copy-and-paste-between-different-tmux-panees-running-vim-instancesが役に立ちます – zedfoxus

+0

あなたはどこにいらっしゃいましたか?それを行うレンジコマンドを書くことができ、 'y'と' p'を上書きすることができるはずです。しかし、私は 'y'と' p'を使用しないことをお勧めします。 –

+0

@DoktorOSwaldo私はその回答を試みたhttps://stackoverflow.com/a/11052783/1082727。ただし、コピー/貼り付けは安定していません。場合によってはそれをコピーしないこともあります。私は問題を診断する方法を知らない。 vimのファイルへの書き込みと読み込みには、おそらく複雑なものがあります。 – ashim

答えて

0

私はvimのは、あなたがこのようにそれを行うことができます信じている:

  1. ヤンクいろいろ書いファイル内
  2. :wvとB
  3. :rvを提出する
  4. Go]を入力してヒットし、
  5. を入力ヒットpを押して、(現在の)グローバルクリップボードの内容を貼り付けてください。

これは、さまざまなvimセッションが異なるtmuxペインで実行されているかどうかにかかわらず動作します。

0

あなたが見てしたい:スクリプトの使用が素敵ではなく、運動保留中のコマンド

  • readfile()writefile()rまたはwはコマンドです原因:yは、オペレーターであるため、

    • map-operator
    • visualmode()
    • は選択を取得する

    共有ファイルを/tmp/yank.txtハードコードされました:

    function! Yank(type, ...) 
        " Invoked from Visual mode, use gv command. 
        if a:0 
        silent exe "normal! gvy" 
        elseif a:type == 'line' 
        silent exe "normal! '[V']y" 
        else 
        silent exe "normal! `[v`]y" 
        endif 
    
        call writefile([@@], '/tmp/yank.txt') 
    endfunction 
    
    
    function! Paste(is_back) 
        let @t = join(readfile('/tmp/yank.txt'), '') 
        if a:is_back 
        normal! "tP 
        else 
        normal! "tp 
        endif 
    endfunction 
    
    
    nnoremap y :set opfunc=Yank<CR>[email protected] 
    nmap Y Vy 
    vnoremap y :call Yank(visualmode(), 1)<CR> 
    vnoremap Y :call Yank(visualmode(), 1)<CR> 
    
    
    nnoremap p :call Paste(0)<CR> 
    nnoremap P :call Paste(1)<CR> 
    
  • 関連する問題