これらの 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
" ------
そして、このマッピングにはいくつかの問題があります。
- 奇妙な理由で、これらの新しいバインディングを実際に使用する前に、.vimrc をリソース化する必要があります。nmap、vmap、または map のみを使用しようとしても、まったく機能していないようです。
- (たとえば) 複数行 (たとえば 2yy) をヤンクしようとすると、期待どおりにテキストが「通常の」レジスタ (「0」) にヤンクされますが、最初の行だけがシステム クリップボードにヤンクされます。
- 通常モードで y、c、および d に対してこの動作を作成する方法が見つかりませんでした。
誰でもこれらの問題を解決できますか?
おそらく関数を作成することを考えたので、それを複数回呼び出すことができましたが、私のvim script-fuはせいぜい初心者です。