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


54

デフォルトでは、UbuntuのGVimでのカット/コピー/ペーストのショートカットは次のとおりです。

 カット "+ x
 「+ y」をコピー
 「+ gPを貼り付け

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


デフォルトのvimキーとの競合を回避するには、Ctrl + Keyの代わりにCtrl + Shift + Keyを選択します
Sheharyar

回答:


50

_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>+

私はそれを徹底的にテストしませんでした。期待通りに動作するかどうかを簡単に確認しました。私のために働く、それがあなたのために働くことを願って;-)


1
ManniとPeter ThorinがPeter Thorinの回答のコメントで述べた点を理解し、感謝しています。私の考えは、メモ帳の代わりとして、WindowsでGVimを学んだということです。Ludwigに感謝
pcapademic 2009

2
新しいショートカットキーに合わせてメニューショートカットテキストを変更する方法はありますか?
ニッピサウルス2009年

@Nippysaurus:.gvimrcのmenutransで試しました。...夕方にはそれで別の顔をしているだろう、仕事にそれを取得できませんでした
ルートヴィヒWeinzierl

2
以下のように見えますmswin.vimすでに持っているbehave mswinコールを。これを自分で再度呼び出す必要があります_vimrcか?
ネイサンフレンド

1
@NathanFriendディット。behave mswin少なくともVim 8.0を搭載したシステムでは、なしでも機能します。
ミケル

46

「標準」ホットキーを使用して切り取り/コピー/貼り付けを機能させたいが、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およびブロック単位のビジュアルモードとの競合を心配する必要はありません。これは問題ではありません。コピーとカットを使用すると挿入モードになり、後ですぐに貼り付けることができるからです。試してみると、完全に自然に感じられます。

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


これはまさに私が探していたものです。ありがとう。
ショーンマククリアリー

2
いくつかの実験と相談の後:help i_ctrl-r_ctrl-o、私はに変わることに決めましimap <C-v> <ESC>"+paimap <C-v> <C-r><C-o>+; これは、カーソルが行の最初の文字の左側にある場合に期待どおりに機能し、「標準」動作を最も厳密に模倣します。
ホルガー

<C-v>私のマシンではかなり高速に思えるshift + insertに変更することを考えています。ただし、プロジェクトの途中で、今すぐにvimを再起動する必要はありません。ただ、共有
ウィル

あなたは素晴らしい=)
ユーガルジンドル13年

9

通常のvimの動作を維持したいが、システムクリップボードの面倒な使用を減らしたい場合は、システムクリップボードへのアクセスを参照してください。あなたが(どのようにデフォルトのバッファとしてシステムのクリップボードを使用するようにgvimを希望の場合はxyp、などのコマンドは、クリップボードを使用しています)、その後、あなたのvimrcに以下の行を追加します。

set clipboard=unnamed

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


2

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

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

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

imapは挿入モードでのみバインディングを追加するため、マップなどに変更したい場合があります。:help mapmode再マッピングとマッピング解除の詳細については、こちらをご覧ください。

幸運を!


1
これは少しのトリックを行う必要があります。しかし、それを行うのは悪い考えです。Ctrl-Vはビジュアルモードになり、Ctrl-Cはコマンドをキャンセルします。そして、このトリックはシステムでのみ機能します。別のマシンでは、失われます。
インナ2009

1
私はそれが悪い考えであり、私はそれを自分で使いたくないと一部同意しますが、あなたがカジュアルなgvimユーザーのみであるなら、あなたはおそらくあなたがとにかく削除するバインディングを見逃さないでしょう。
ピータートーリン

1
そもそもgvimを使用するのはなぜですか?カジュアルなユーザーの滞在期間はどのくらいですか?
インナ2009

2
私はそれがそんなに悪い考えだとは思わない。人々はCtrl + Xなどに慣れており、vimを使用する理由は他にも数十億あります。
ルートヴィヒワインツィール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.