しょぼしょぼすくりぷと xyzzy > xyzzyの初歩講座(機能と操作) > レジスター

レジスター(register)

何かというと

Emacs(この場合xyzzy)上の 複数のもの(位置、テキスト、ウインドウ位置)を保存できます。 覚えられる対象キーはたくさんあります。

簡単な使い方

おおまかにいって、位置系をおぼえるものと、テキストを覚えるものの2つがあります。

ポジション レジスター

(1)カーソルを移動して、場所を覚えさせます。そのあと、(2)その場所へ戻る。という手順です。

操作例

  1. カーソルを覚えさせたい場所へ移動させます。
  2. C-x r SPC か で呼び出して
  3. キーを設定します。キーは"a" でも"0"でも良いです。(多分、C-gや % F9 マウスなどいろいろできそうです)
  4. そのあと、何か移動したり操作したとして、元の場所へ戻りたいと、思ってください。
  5. C-x r j で 呼び出し
  6. 先ほどの覚えたキーを入力します。
  7. 飛んでいる事に気付いてください!?。

テキスト レジスター

(1)テキストを覚えさせます。そのあと、(2)他の場所で使う。という手順です。

操作例

  1. カーソルを覚えさせたい場所へ移動させます。
  2. テキストの一方で C-SPC などで マークし
  3. 反対側にカーソルを持ってきます。
  4. C-x r s で呼び出して
  5. キーを設定します。キーは"a" でも"0"でも良いです。
  6. そのあと、何か移動したり操作したとして、先ほどのテキストを入力したい、思ってください。
  7. C-x r i で 呼び出し
  8. 先ほどの覚えたキーを入力します。
  9. 先ほどのテキストが入力されます。
xyyzy全体での関数なので、バッファー毎に違うというわけではありません。
独自の関数は lisp/register.l等を参考にしてください。

関連関数とキー割り当て

C-x r SPCpoint-to-register
C-x r jjump-to-register
C-x r scopy-to-register
C-x r xcopy-to-register
C-x r aappend-to-register
prepend-to-register
C-x r ginsert-register
C-x r iinsert-register
C-x r rcopy-rectangle-to-register[xyzzy:01201] Re: about rectangle
C-x r crestore-window-configuration-register
C-x r wsave-window-configuration-to-register
view-register

ツール

亀井さんが作ってくれている便利なツールがあります[xyzy:06032]。 (今は標準で入ってます。)
(defun view-register (r)
  (interactive "cView register: ")
  (let ((val (ed::get-register r)))
    (if (null val)
	(message "Register ~a is empty" r)
      (with-output-to-temp-buffer ("*output*")
	(format t "Register \"~a\" contains " r)
	(cond ((markerp val)
	       (let ((buffer (marker-buffer val)))
		 (if (null buffer)
		     (princ "a marker in deleted buffer.")
		   (format t "a buffer position:\nbuffer ~a, position ~a"
			   (buffer-name buffer) (marker-point val)))))
	      ((and (consp val)
		    (eq (car val) 'window-configuration))
	       (princ "a window configuration."))
	      ((consp val)
	       (format t "the rectangle:\n~{~a~^\n~}" val))
	      ((stringp val)
	       (format t "the text:\n~a" val))
	      (t
	       (format t "Garbage:\n~s" val)))))))
 
list バージョンも上をまねして作ってみました。
(defun view-register-list-key ()
  (interactive)
  (let ((val)(list)(r))

    (with-output-to-temp-buffer ("*output*")
   (dotimes (i 255)
    (setq r (code-char i))
    (setq val (ed::get-register r))
    (when  val
        (format t "Register \"~a\" contains " r)
        (cond ((markerp val)
               (let ((buffer (marker-buffer val)))
                 (if (null buffer)
                     (princ "a marker in deleted buffer.")
                   (format t "a buffer position:\nbuffer ~a, position ~a\n"
                           (buffer-name buffer) (marker-point val)))))
              ((and (consp val)
                    (eq (car val) 'window-configuration))
               (princ "a window configuration.\n"))
              ((consp val)
               (format t "the rectangle:\n~{~a~^\n~}\n" val))
              ((stringp val)
               (format t "the text:\n~a\n" val))
              (t
               (format t "Garbage:\n~s\n" val)))))))
  (set-buffer "*output*")
  (sit-for 4)
)
 

参考



しょぼしょぼすくりぷと xyzzy | xyzzyの初歩講座(機能と操作)