web-dev-qa-db-ja.com

UbuntuのGVimで切り取り/コピー/貼り付けをCtrl + X、Ctrl + C、Ctrl + Vで機能させる方法は?

デフォルトでは、Ubuntu上のGVimのショートカットは、次のとおりです。

切り取り "+ x 
コピー" + y 
貼り付け "+ gP 

Firefoxやgnomeアプリケーションで使用しているように、GVimでコントロールキーコンボを使用したいと思います。他のGnomeアプリのように動作するようにGVimを構成するにはどうすればよいですか?

54
pcapademic

次の行を_vimrcまたは.vimrcに追加します

source $VIMRUNTIME/mswin.vim
behave mswin

ただし、ビジュアルモードはCTRL-VではなくCTRL-Qになることに注意してください。

Mswin.vimが行うことの概要については、 mswin.vim sourcode を参照してください。これは非常によくコメントされており、コマンドが不明な場合は、vimのヘルプで簡単に調べることができます。

これはソースからコンパイルされた簡単な概要です:

  • バックスペースとカーソルキーが前/次の行に折り返す
  • CTRL-XとSHIFT-Delは切り取られます
  • CTRL-CとCTRL-Insertはコピーです
  • CTRL-VとSHIFT-Insertは貼り付け
  • CTRL-Qを使用して、CTRL-Vで行っていた操作を実行します
  • CTRL-Sを使用して、挿入モードでも保存します。
  • CTRL-Zは元に戻すです。 cmdlineにはありませんが
  • CTRL-Yはやり直しです(繰り返されません)。 cmdlineにはありませんが
  • Alt-Spaceはシステムメニューです
  • CTRL-Aはすべて選択
  • CTRL-Tabは次のウィンドウです
  • CTRL-F4はウィンドウを閉じる

ニッピサウルスのリクエストに応じて、メニューの[貼り付け]以外にCtrl-Vを表示するために.gvimrcに次のように入力しました。

unmenu! Edit.Paste
aunmenu Edit.Paste
nnoremenu 20.360 &Edit.&Paste<Tab>Ctrl-V        "+gP
cnoremenu    &Edit.&Paste<Tab>Ctrl-V        <C-R>+

私はそれを徹底的にテストしませんでした、それが私が期待したことをしたかどうか簡単にチェックしました。私のために働く、それがあなたのために働くことを願って;-)

51

「標準」のホットキーを使用して切り取り/コピー/貼り付けを行いたいが、gvimの他の構成オプションを変更したくない場合は、~/.vimrcに以下を追加してください。

vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+

貼り付けはビジュアルモードと挿入モードでのみ機能するため、Ctrl-Vとブロック単位のビジュアルモードの競合を心配する必要はありません。これは問題ではありません。コピーと切り取りによって挿入モードになるため、後ですぐに貼り付けることができます。試してみると、完全に自然な感じがします。

微調整を数回繰り返した後、私はこの構成を思いつきましたが、今は「完璧」だと思います。現在のコピー/貼り付け構成に少しでも不満がある場合は、これを試してみてください。きっと気に入るはずです。

46
Cogan

Vimの通常の動作を維持したいが、システムクリップボードの使いやすさを低下させたい場合は、 システムクリップボードへのアクセス を参照してください。 gvimにシステムクリップボードをデフォルトのバッファーとして使用させたい場合(xypなどのコマンドはクリップボードを使用します)、次の行を追加します。あなたのvimrcに:

set clipboard=unnamed

私は個人的に、バッファをvimとシステムの間よりもvim内ではるかに多く使用しています。そのため、システムクリップボードを常に壊してしまうよりも、少し面倒なショートカットを使用したいと思います。しかし、それを好む人のためにオプションがあることは素晴らしいことです。

9
jtb

これは:imapコマンドで追加できると思います(WindowsではCtrl + Xで試してみましたが、ctrl + cを押すとコマンドがキャンセルされるように見えるので、vimrcで行う必要があるかもしれません)。

:imap <C-X> "+x
:imap <C-C> "+y 
:imap <C-V> "+gP

〜/ .vimrcに追加する場合は、imapの前にある:を削除するだけです。

imapは、挿入モードでのみバインディングを追加するので、マップだけに変更するか、何か他のものに変更することができます。 :help mapmodeを調べて、再マッピングとマッピング解除の詳細を確認してください。

幸運を!

2
Peter Thorin