[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

8. レジスタ

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=Registers"
"emacs/レジスタ"へのコメント(無し)

Emacsのレジスタ(registers)は、 あとで使うためにテキストやポイント位置を保存するための場所です。 テキストや矩形領域をレジスタにいったん保存すれば、 何度でもバッファにコピーできます。 また、レジスタに保存した位置には何度でもポイントを移動できます。

各レジスタには1文字の名前が付いています。 レジスタには、テキストの一部、矩形領域、位置、 ウィンドウの構成情報、ファイル名を保存できますが、 1度にはそのうちの1つしか保存できません。 レジスタに保存した内容は、そのレジスタに他のものを保存するまでは 保持され続けます。 レジスタrに何が入っているか調べるには、 M-x view-registerを使います。

M-x view-register RET r
レジスタrの内容を表示する。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

8.1 レジスタに位置を保存する

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=RegPos"
"emacs/レジスタに位置を保存する"へのコメント(無し)

位置を保存するとは、 あとで戻ってこられるようにバッファ中の位置を記録することです。 保存した位置に移動すると、そのバッファに切り替えてから ポイントをその位置に移動します。

C-x r SPC r
ポイント位置をレジスタrに保存する(point-to-register)。
C-x r j r
レジスタrに保存した位置に移動する(jump-to-register)。

ポイントの現在位置をレジスタに保存するには、名前rを選んでから、 C-x r SPC rと打ちます。 他のものを保存するまで、 レジスタrはこうして保存した位置を保持し続けます。

コマンドC-x r j rは、 レジスタrに記録した位置にポイントを移動します。 レジスタは変わらず、同じ位置を記録し続けます。 何度でも保存した位置に移動できます。

C-x r jを使って保存位置に移動しようとしたとき、 その対象となるバッファがすでに消去されていた場合には、 C-x r jは同じファイルを訪問するバッファを作成し直そうとします。 もちろん、これはファイルを訪問したバッファに対してのみ働きます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

8.2 レジスタにテキストを保存する

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=RegText"
"emacs/レジスタにテキストを保存する"へのコメント(無し)

テキストの同じ部分のコピーを頻繁に挿入する場合、 キルリングからヤンクするのは便利ではないでしょう。 というのは、キルするごとに、必要な部分がリングの下方に徐々に 移動してしまうからです。 別の手段としては、レジスタにテキストを保存しておき、 レジスタから取り込むという方法があります。

C-x r s r
レジスタrにリージョンをコピーする(copy-to-register)。
C-x r i r
レジスタrからテキストを挿入する(insert-register)。

C-x r s rは、リージョンのテキストのコピーを rという名前のレジスタに保存します。 C-x r s rに数引数を指定すると、 保存すると同時にバッファからテキストを削除します。

C-x r i rはレジスタrからテキストをバッファに挿入します。 通常、テキストの直前にポイントを置き、直後にマークを置きます。 しかし、数引数(C-u)を指定すると、 テキストの直後にポイントを置き、直前にマークを置きます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

8.3 レジスタに矩形領域を保存する

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=RegRect"
"emacs/レジスタに矩形領域を保存する"へのコメント(無し)

レジスタには、連続したテキスト以外にも、矩形領域を保持できます。 矩形領域は、文字列のリストとして表されます。 バッファ内での矩形領域の指定方法に関する基礎情報については、 See 節 7.10 矩形領域

C-x r r r
矩形領域をレジスタrにコピーする (copy-rectangle-to-register)。 数引数を指定すると、コピー後に矩形領域を削除する。
C-x r i r
レジスタrに保存した矩形領域(が存在すればそれ)を挿入する (insert-register)。

C-x r i rコマンドは、レジスタにテキストが入っていれば、 そのテキストの文字列を挿入しますし、 矩形領域があれば矩形領域を挿入します。

コマンドsort-columnsも参照してください。 このコマンドは矩形領域をソートすると考えられます。 See 節 27.19 テキストのソート



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

8.4 レジスタにウィンドウ構成を保存する

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=RegConfig"
"emacs/レジスタにウィンドウ構成を保存する"へのコメント(無し)

選択したフレームのウィンドウ構成をレジスタに保存したり、 すべてのフレームのすべてのウィンドウ構成を保存したりできて、 しかも、あとでその構成に戻せます。

C-x r w r
選択したフレームのウィンドウの状態をレジスタrに保存する (window-configuration-to-register)。
C-x r f r
全フレームの状態を、各フレームのすべてのウィンドウを含めて、 レジスタrに保存する (frame-configuration-to-register)。

ウィンドウやフレームの構成をもとに戻すには、 C-x r j rを使います。 これは、カーソル位置を復元するコマンドと同じです。 フレームの構成を復元すると、 構成情報に含まれていない既存のフレームは隠れた状態になります。 これらのフレームを削除したければ、C-u C-x r j rを使います。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

8.5 レジスタに数値を保持する

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=RegNumbers"
"emacs/レジスタに数値を保持する"へのコメント(無し)

レジスタに数値を保存しておき、数値を10進数でバッファに挿入してから 数値を増やすコマンドがあります。 これらのコマンドは、キーボードマクロで役立ちます (see 節 28.3 キーボードマクロ)。

C-u number C-x r n reg
数値numberをレジスタregに保存する (number-to-register)。
C-u number C-x r + reg
レジスタreg内の数値をnumberだけ増やす (increment-register)。
C-x r g reg
レジスタregの数値をバッファに挿入する。

C-x r gは、レジスタの数値以外の内容をバッファに挿入するために 使うコマンドと同じです。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

8.6 レジスタにファイル名を保持する

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=RegFiles"
"emacs/レジスタにファイル名を保持する"へのコメント(無し)

特定のファイル名を頻繁に訪問する場合には、 これらの名前をレジスタに置いておくと、 より簡単にファイルを訪問できます。 ファイル名をレジスタに置くLispコードをつぎに示します。

 
(set-register ?r '(file . name))

たとえば、

 
(set-register ?z '(file . "/gd/gnu/emacs/19.0/src/ChangeLog"))

とすると、上に示したファイル名をレジスタ`z'に保存します。

レジスタrに入れた名前のファイルを訪問するには、 C-x r j rと打ちます。 (このコマンドは、保存位置に移動したり フレーム構成を復元するために使うコマンドと同じ。)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

8.7 ブックマーク

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=Bookmarks"
"emacs/ブックマーク"へのコメント(無し)

ブックマーク(bookmarks)とは、 移動先の位置を記録しておくためのレジスタのようなものです。 レジスタと違って、長い名前を付けることができて、 自動的につぎのEmacsセッションに引き継がれます。 ブックマークの典型的な使い方は、 各ファイルの『どこを読んでいるか』を記録しておくことです。

C-x r m RET
訪問先のファイルのポイント位置にブックマークを設定する。

C-x r m bookmark RET
ポイント位置に、bookmarkという名前のブックマークを設定する (bookmark-set)。

C-x r b bookmark RET
名前がbookmarkであるブックマークに移動する (bookmark-jump)。

C-x r l
すべてのブックマークを一覧表示する(list-bookmarks)。

M-x bookmark-save
現在のすべてのブックマークの値を デフォルトのブックマークファイルに保存する。

ブックマークの典型的な使い方は、 各ファイルごとに現在のポイント位置を保存しておくことです。 ブックマークを設定するコマンドC-x r mは、 訪問先のファイルの名前をブックマーク名のデフォルトとして使います。 ブックマークが指すファイルをもとにブックマークの名前を付ければ、 C-x r bで任意のファイルを再訪問して、 同時にブックマーク位置に移動するという操作を楽に行えます。

設定したすべてのブックマークの一覧を別のバッファに表示するには、 C-x r llist-bookmarks)と打ちます。 そのバッファに切り替えれば、ブックマークの定義を編集したり、 ブックマークに注記を付けたりできます。 このバッファで使える特別な編集コマンドについての情報を得るには、 このバッファでC-h mと打ちます。

内容を変更したブックマークがある場合、Emacsを終了する時点で、 Emacsはブックマークの値をデフォルトの ブックマークファイル`~/.emacs.bmk'に保存するかどうか聞いてきます。 M-x bookmark-saveコマンドを使っても、 変更したブックマークをいつでも保存できます。 ブックマークコマンドは、個人のデフォルトのブックマークファイルを 自動的に読み込みます。 これらの保存と読み込みによって、 ブックマークの内容をつぎのEmacsセッションに引き継げるのです。

変数bookmark-save-flagに1を設定しておくと、 ブックマークを設定する各コマンドは、ブックマークの保存も行います。 こうしておけば、Emacsがクラッシュした場合でも、 ブックマークデータを失わなくてすみます。 (この変数の値が数値であれば、 ブックマークを何回変更したら保存するという意味。)

ブックマークの位置情報は、その周辺の文脈情報と一緒に保存されるので、 ファイルが少し変更されていたとしても、 bookmark-jumpは正しい位置をみつけだせます。 変数bookmark-search-sizeで、 ブックマーク位置の前後何文字分の内容を保存するかを指定します。

ブックマークを用いるコマンドには、以下のものもあります。

M-x bookmark-load RET filename RET
ブックマークデータのリストを収めたfilenameという名前の ファイルをロードする。 デフォルトのブックマークファイル以外の ブックマークデータを収めたファイルに対しても、 コマンドbookmark-writeと同じく、このコマンドを使える。

M-x bookmark-write RET filename RET
現在設定されているブックマークデータを ファイルfilenameに保存する。

M-x bookmark-delete RET bookmark RET
bookmarkという名前のブックマークを削除する。

M-x bookmark-insert-location RET bookmark RET
ブックマークbookmarkが指しているファイルの名前を バッファに挿入する。

M-x bookmark-insert RET bookmark RET
ブックマークbookmarkが指すファイルの内容を バッファに挿入する。

[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]