1

vim を使用して、ssh を介していくつかのシステムでファイルを編集していますが、その中には -clipboard オプションがコンパイルされているものとないものがあります。したがって、xclip を使用して、テキストの一部を X クリップボードにコピーしようとしています。すぐに ssh 経由で自分のマシンにパイプで戻り、そこで使用できます。

今、私は知っています、私は使うことができます

:'<,'>w !xclip<CR><CR>

行全体をクリップボードにコピーしたいが、行全体をコピーしたくない場合は、任意の選択が必要です

それを修正するために、選択を@iレジスタに保存し、それをxclipにパイプするバインディングを作成しました

:vmap <F7> "iy<CR>:call system('echo ' . shellescape(@i) . ' \| xclip -i')<CR>

1行内のテキストの選択ではうまくいくようですが、エスケープ文字が保持されているようで、たとえば次のように複数行をコピーすると

Plugin 'vim-scripts/buftabs'
Plugin 'jlanzarotta/bufexplorer'
Plugin 'kien/ctrlp.vim'
Plugin 'terryma/vim-multiple-cursors'

xclipで次のようになります-改行のエスケープはまだあります

Plugin 'vim-scripts/buftabs'\
Plugin 'jlanzarotta/bufexplorer'\
Plugin 'kien/ctrlp.vim'\
Plugin 'terryma/vim-multiple-cursors'\

シェルエスケープとエスケープのいくつかのバリエーションを使用してみましたが、それらはすべてエスケープ文字をそのまま残しているようです。自分で修正するのに十分なvimscriptingを知りません。

vim と xclip に関してすでにいくつかの質問があることは知っていますが、どれも答えを見つけることができませんでした。

前もって感謝します!

4

1 に答える 1

1

偶然にも、ここで自分の質問に対する答えを見つけました。xclip へのコピーは、次のように簡単に実行できます。

:vmap <F7> y: call system("xclip -i", getreg("\""))<CR>

そして、システムコールがステータスラインに表示されないようにする修正があります

:vmap <silent> <F7> y :silent call system("xclip -i", getreg("\""))<CR>
于 2015-08-13T09:33:07.000 に答える