4

これらの 3 つのコマンド (y、c、d) の機能を拡張しようとしてきたので、システム クリップボード ("+ レジスタ) と通常のレジスタの両方にコンテンツを保持します。

これは私がこれまでに思いついたものです:

nnoremap Y y$v$"+y$
nnoremap yy 0y$0v$"+y$
vnoremap y ygv"+y
" ------
nnoremap C y$v$"+c
nnoremap cc 0y$0v$"+c
vnoremap c ygv"+c
" ------
nnoremap D y$v$"+d$
nnoremap dd 0y$0v$"+d$
vnoremap d ygv"+d
" ------

そして、このマッピングにはいくつかの問題があります。

  1. 奇妙な理由で、これらの新しいバインディングを実際に使用する前に、.vimrc をリソース化する必要があります。nmap、vmap、または map のみを使用しようとしても、まったく機能していないようです。
  2. (たとえば) 複数行 (たとえば 2yy) をヤンクしようとすると、期待どおりにテキストが「通常の」レジスタ (「0」) にヤンクされますが、最初の行だけがシステム クリップボードにヤンクされます。
  3. 通常モードで y、c、および d に対してこの動作を作成する方法が見つかりませんでした。

誰でもこれらの問題を解決できますか?

おそらく関数を作成することを考えたので、それを複数回呼び出すことができましたが、私のvim script-fuはせいぜい初心者です。

4

1 に答える 1

3

できれば"+y、これらのマッピングはすべて役に立ちません。に追加set clipboard+=unnamedplusするだけ~/.vimrcです。

于 2012-04-19T14:42:15.067 に答える