`exchange-point-and-mark`の有用性は何ですか?


16

exchange-point-and-markコマンドがにバインドされているC-x C-xが、私はそれは、このような著名な結合に値するなるだろう任意のユースケースを考えることはできません。

を使用しexchange-point-and-markて編集テクニックを改善するにはどうすればよいですか?

回答:


19

私が考えることができる2つのケースがあります:領域の再アクティブ化、および領域のサイズの調整。

ほとんどの場合、このバインディングを使用して、非アクティブ化するコマンドを実行した後、または領域をアクティブ化せずにマークを設定してポイントを移動するコマンドを実行した後、領域を再アクティブ化します。

たとえば、Cを実行して何かを前方に検索します。RETを押して検索を終了し、Cx Cxを押して検索を開始した場所からすべてをマークします。

StackExchangeの回答にいくつかのサンプルelispを含めたいときによくやるもう1つの例:

  1. コピーするコードのビットをマークします。
  2. Cu Cx TABを押して、コードを4スペース分インデントします。そのようにして、サイト上のコードとしてここにレンダリングされます。この手順により、リージョンが非アクティブ化されます。
  3. Cx Cxを押して領域を再度アクティブにし、Mwを押して領域をクリップボードにコピーしてStackExchangeの回答に貼り付けます。

もう1つのケースは、リージョンをマークしていて、それを拡張/縮小したい場合です。その場合、領域の「もう一方の端」にジャンプして移動し、その後ジャンプして戻れると便利です。リージョンが既にアクティブになっている場合、Cx Cxを押すとアクティブのままになり、どちらかの端に移動できます。


17

:Emacsのを掲載しC-h r i exchange-point-and-mark RET、より良い、またはC-h r i C-x C-x RET。これにより、次の情報が表示されます。

これは、Emacsのマニュアル、ノードSetting Markがあなたの質問に答えて言っていることです:

C-x C-xポイントの位置には満足しているが、リージョンのもう一方の端(マークがある場所)を移動したい場合に便利です。使用してC-x C-x、必要に応じて、二時間を、元の位置にポイントバックして新しい位置にマークを置きます。通常、マークが非アクティブである場合、このコマンドは最初にマークが最後に設定された場所でマークを再アクティブ化し、領域が強調表示されたままになるようにします。ただし、prefix引数を指定して呼び出すと、マークは非アクティブのままになり、領域は強調表示されません。これを使用して、に似た方法でマークジャンプできますC-u C-<SPC>

そして、これはノードDisabled Transient Markでそれについて言うことです:

[ transient-mark-mode]をオフにすると、Emacsは別の動作モードに切り替わります。

  • C-<SPC>またはC-x C-xなどのコマンドでマークを設定しても、領域は強調表示されません。したがって、マークの位置を確認してもわかりません。覚えておく必要があります。

    この問題の通常の解決策は、マークを設定し、それがどこにあるかを忘れる前にすぐに使用することです。また、マークの場所を確認するにC-x C-xは、ポイントとマークの位置を交換します。マークの設定を参照してください。

一時的なマークモードがオフの場合、C-<SPC> C-<SPC>またはを使用して一時的にアクティブにできますC-u C-x C-x

そして:

C-u C-x C-x ポイントとマークを交換し、マークをアクティブにして、次にマークが無効になるまで一時マークモードを一時的に有効にします。(これは、プレフィックス引数付きのC-x C-xコマンドexchange-point-and-markです。)


8

何らかの操作が原因で選択が失われ、選択を復元したい場合に使用します。そのようなシナリオの1つは次のとおりです。

  1. 長方形を選択します。
  2. それを殺します。
  3. 強制終了する四角形を元に戻します。
  4. C-x C-x 選択範囲を長方形に戻します。

これは、選択した領域のアドホックバックアップを作成し、コピーを試してみたい場合に発生します。たとえば、検索と置換を行いたいのですが、方法は考えられません。残っているはずのテキストを破壊しない方法で、後でコピーから元に戻します。


8

他の答えは、C-x C-xいつtransient-mark-modeアクティブになるかという有用性に焦点を当てています。しかし、C-x C-xpredates transient-mark-mode、およびそれとは独立して有用です。

の主な役割C-x C-xは、ポイントとマークを交換することです。これは、単一のバッファーで2つのポイントを編集していて、何らかの理由で現在のウィンドウを分割したくない場合に便利です。編集、マークの設定、バッファ内の他のポイントへの移動C-x C-x、編集、前の場所でのC-x C-x編集、さらに編集、吐き気をします。(2番目のポイントに戻る予定がない場合C-u C-SPCは、より直感的になる可能性があります。Emacsマニュアルのマークリングを参照してください。)

transient-mark-modeが無効になっC-x C-xている場合、別の重要な目的があります。地域がどこにあるかを見つけることができます。 C-x C-xC-x C-x再びポイントを一目見ます。

(そして、あなたが不思議に思っている場合のために-はい、私たちの中には、Emacsをtransient-mark-mode無効にして使用することを好む人もいます。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.