Next: , Previous: , Up: マークとリージョン   [Contents][Index]


11.4 マークリング

各バッファーは、マークリング(mark ring)の中に、以前のマークの位置を記録しています。マークをセットするコマンドは、古いマークをこのリングにpushします。マークリングの1つの使い方として、後で戻りたい場所を記録させる使い方があります。

C-SPC C-SPC

マークをアクティブにせずにマークをセットしてから、マークリングにpushします。

C-u C-SPC

マークがあった場所にポイントを移動し、マークリングから1つ前のマークを復元します。

コマンドC-SPC C-SPCは、後で戻ってきたい位置をマークするときに便利です。これは現在の位置をマークを(Emacsがリージョンをハイライト表示してしまう)アクティブにすることなく、マークリングにpushします。実際にこれはC-SPC (set-mark-command)を連続して2回呼び出しています。最初のC-SPCはマークをセットし、2回目のC-SPCはそれを非アクティブにしています(Transient Markモードがオフの場合、C-SPC C-SPCは一時的にTransient Markモードを有効にします。Transient Markモードを無効にするを参照してください)。

マークした位置に戻るには、C-u C-SPCのようにプレフィクス引数を指定して、set-mark-commandを使います。これはマークがあった場所にポイントを移動して、もしマークがアクティブのときは非アクティブにします。C-u C-SPCを連続して呼び出すと、マークリングに保存された前の位置へジャンプしていきます。この方法で移動した位置の情報は失われません。それらはリングの最後に移動します。

set-mark-command-repeat-popを非nilにセットすると、C-u C-SPCの後に続けて、C-u C-SPCではなく、C-SPCでマークリングを巡回できます。デフォルトではset-mark-command-repeat-popnilです。

各バッファーは自身のマークリングを持ちます。すべての編集コマンドは現在のバッファーのマークリングを使います。特にC-u C-SPCは常に同じバッファーに留まります。

変数mark-ring-maxは、マークリングに保持する最大のエントリー数を指定します。デフォルトは16エントリーです。もしエントリー数が最大の場合、他のエントリーをpushするとリストの一番古いものが捨てられます。C-u C-SPCを繰り返すと、リングの現在位置を巡回します。

もし何度も同じ場所に戻りたいときは、マークリングでは不十分でしょう。そのような場合は後で使うために、その位置をレジスターに記録できます(レジスターに位置を保存するを参照してください)。