2016-03-30 5 views
1

EMACSでは、デフォルトでマウスで強調表示されているテキストが「コピー」されているようです。現代のテキストエディタの機能を再現しようとしています。テキストの一部を強調表示し、「貼り付け」を押して置き換えることができます。私はこれまで デフォルトのEMACSマウスのハイライト動作を変更する

を追加した(削除選択モード1)私のinit.elに

問題は、私が何かをコピーする場合は、その場所に貼り付けるハイライトであり、 、私は今まで強調したものを貼りつけ、何も変えなかった。

この動作を修正するには、何を変更する必要がありますか?

+0

貼り付け後に 'yank-pop'、' My'コマンドを実行すると、コピーした前のテキストを取得することができます – Jules

+0

私はその機能を完全に破棄します。私は頻繁に間違ったものを他のウィンドウに貼り付けてしまいます。 – Oxonon

+0

EMACS以外のプログラムでは、ハイライトコピーの問題はありませんか?また、マウスを使用しない場合、問題はありません;) – Jules

答えて

3

emacsの最も強力な要素は、イントロスペクション機能です。この問題を試して解決するためにどのように使用できるかを見てみましょう。私たちは源の力を使わなければなりません。

emacsでのイントロスペクションで最も重要なツールの1つは、C-h kにバインドされたdescribe-keyコマンドです。それは、それの後に呼び出されるキーストロークのドキュメントを表示します。したがって、我々のケースでは、C-h kを押してクリックしてドラッグすると、<down-mouse-1>のドキュメントが表示され、さらに重要なのは<drag-mouse-1>のドキュメントが表示されます。ドキュメントには、その場所にある<drag-mouse-1>には、コマンドmouse-set-regionが実行されていると記載されています。その下に、このコマンドのいくつかのドキュメントがあります。それは

をドラッグして領域をテキストに設定し、キルリングにコピーします。 これは、マウスドラッグイベントにバインドする必要があります。 この コマンドがkillリングを変更するかどうかを制御するには、 'mouse-drag-copy-region'変数を参照してください。

ここで、何らかの形でmouse-drag-copy-regionが強調表示されたテキストをコピーするかどうかを制御することがわかりました。

我々はその変数のリンクをたどる場合、それは私たちのデフォルト値といくつかのドキュメントを告げる:

nil以外、コピーした場合殺すリングをするために地域のマウスの調整時。

これで、必要な効果を得るために変数をnilに設定するだけです。あなたの初期化ファイルの末尾に次のコードを配置し、あなたはすべての私は、これがこの問題であなたを助け、さらに重要なこと、それはさらに問題であなたを助けることことを願っています

(setq mouse-drag-copy-region nil) 

を設定する必要があります。

0

私は2つの選択肢を参照していますが、どちらもあなたが要求するものではありません。

  • をコピーするテキストのsecondary selectionを使用します(両方の場合は、はい、。delete-selection-modeをオン)、およびテキストを交換するための主要な選択(領域)を使用します。

    Metaキーとマウスを使用してテキストをセカンダリセレクションにコピーします。たとえば、ドラッグするときにMeta(通常はAltキー)を押し続けます。mouse-1をダブルクリックします。

    メタプラスmouse-2を使用してセカンダリ選択を貼り付けます。

  • マウスでテキストを選択し、kill-ringにコピーします(M-wを使用)。次に、マウスで置き換えるテキストを選択し、コピーしたテキストを貼り付けるためにC-yを使用します。

1

デフォルトでは、マウスで領域を選択しても、テキストはキルリングにコピーされません。 Emacsがこれを行う場合は、おそらく変数mouse-drag-copy-regionを設定しているはずです。新鮮なEmacsで

、あなたが次の操作を行うことができます(24.5 -Qを使用して開始):

  • をスタートdelete-selection-mode
  • マウスで領域をマークします。 M-wを使用してコピーします。
  • 第2領域をマークします。 C-yを使用して最初のものと交換します。
関連する問題