私はvimに初めて接しましたので(現在vimを使用していますnvim
)私の知識不足をご容赦ください。多くの質問が私と似ていますが、まったく同じではありません。
私はこれが欲しい:
vim
デフォルトは、システムクリップボードではなくバッファに切り取り/コピーすることです。vim
他のレジスタ(私の考えでは、そうであれば+
訂正してください*
!)はシステムクリップボードに移動する必要があります。
私はいくつかの調査をしましたが(今まで)何もうまくいきませんでした。
情報:
- 私が使用するのはこのようにバッファ
tmux
にプッシュすることです。tmux
- 家にいないので今使ってい
termux
ます。termux-clipboard-get/set
私の状況に効果があると思う方法は次のとおりです。
let g:clipboard = {
\ 'name': 'TmuxTermux',
\ 'copy': {
\ '*': ['tmux', 'load-buffer', '-'],
\ '+': ['termux-clipboard-set'],
\ },
\ 'paste': {
\ '*': ['tmux', 'save-buffer', '-'],
\ '+': ['termux-clipboard-get'],
\ },
\ 'cache_enabled': 1,
\ }
カット/コピーすると、バッファtmux
はvim
コンテンツを共有します。完璧です! (ほとんど...)+
しかし、システムクリップボードを使用するためにバッファを使用することはできません。 「+」を押すとカーソルが1行下に移動し、上記の順序を変更すると(代わりにtermux-clipboard-get/set
レジスタを作成する)、クリックするとカーソルがある単語のすべてのインスタンスが強調表示されます。*
+
*
読みながら、次のことを楽しみにしています。
- デフォルトではレジスタが
vim
使用されます*
が、これはtmux
バッファに正常に登録しdd/yy
て貼り付けますp
(tmux
または[PREFIX]+[p]
- 別のレジスタ(システムクリップボード)に切り取り/コピー/貼り付けをしたい場合は、貼り付け(でも)を
+
使用しますが、機能しません。+dd/+yy
+p
*dd/*yy/*p
質問:
上記のように+
カーソルを1行下に移動してRegisterに変更すると、現在の単語とその単語が表示される他の項目が強調表示されます*
。*
もっと経験のある方にお詫び申し上げます。ちょっと体験しましたemacs
(とても痛いですね!:)
ベストアンサー1
私はvimとtmuxを使用しており、システムクリップボードで作業しています。以下があります。
" copy and paste with clipboard
" paste from system CTRL-C clipboard
nnoremap <Leader>p "+p
" paste from system highlighted clipboard
nnoremap <Leader>P "*p
" copy contents of unnamed register to system CTRL-C clipboard
nnoremap <silent><Leader>y :call Preserve("normal! Gp\"+dGu")<cr>
\ :echo 'copied to CTRL-C clipboard'<cr>
" copy contents of unnamed register to system highlghted clipboard
nnoremap <silent><Leader>Y :call Preserve("normal! Gp\"*dGu")<cr>
\ :echo 'copied to highlight clipboard'<cr>
<Leader> yと<Leader> Yを使用すると、vimの名前のないレジスタからシステムクリップボードに内容をインポートできます。これら2つの再マッピングは、次の関数に依存します(.vimrcで再マッピングする前に表示する必要があります。)
" run a command, but put the cursor back when it's done
function! Preserve(command)
" Preparation: save last search, and cursor position.
let _s=@/
let l = line(".")
let c = col(".")
" Do the business:
execute a:command
" Clean up: restore previous search history, and cursor position
let @/=_s
call cursor(l, c)
endfunction
参考までに、私は次のことをテストするのに多くの時間を費やしていませんでしたが、(Linux)ホストとホスト(クライアントではない)のtmuxセッションにsshを接続すると、これらの再マッピングが時々発生することがわかりました。ホストvimの名前のないレジスタからデータを取得できるようです。クライアントのシステムクリップボードにコピーされます(その逆も同様です)。このように行動するのが良いのに、たまに二人が話さないことがあるのに、なぜそんなのか分からない。
とにかく誰かに役立つことを願っています!