[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
C-x 5 2で SDI のように新しいフレームを作成できます.消す時は, C-x 5 0です.
キーバインドを見ると 1,2,3,5 と 4 が抜けてますね. 実は 4 にも機能があります. 4 は別バッファへ表示という機能があります. 例えば, C-x 4 C-fとすると, ウィン ドウが上下に分割され, 下のウィンドウでファイルを開きます. 同じように, C-x 4 dは dired ですし, C-x 4 C-oは表示 (カーソルが別バッファへ移動しない) にな ります.
ただ,これだけでは,*scratch* というバッファを分割しているだけなので,バッファを 切り替える必要があります.次では,バッファの切り替えについて紹介します.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
Meadow は 1 つのウィンドウで複数のファイルを開くことができます.ここでは,その開 いた複数のファイルを切り替える方法について説明します.
まず,開いたファイルを切り替えるのはメニューの Buffers から選ぶかキーボードで選 ぶことができます.
キーボードでの選択は,
これが基本. C-x b TABでリストを出して, 補完しながら入力してRETで切り 替えます
C-x C-bでリストを出した後, C-x oでリストへ移動し, RETやf でバッファを選択できます.また,dで削除マークを付け, xで一気にバッファ の削除もできます.バッファが多い時に一覧できるので,便利です.
バッファの削除はC-x kとします.こうすると,今カーソルのあるバッファが削除 されます.変更があれば,保存するか尋ねられます.
バッファを読み取り専用にするには C-x C-q とします.これはトグルになってい るので,もう一回 C-x C-q とすると,読み取り専用を解除できます.メニューか らも読み取り専用にできますし,モードラインのある部分を右ボタンでクリックしても, 読み取り専用にできます.
マウスをモードラインの上に持っていくとミニバッファに,そこをクリックするとどうな るかが表示されますので,探してみてください.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
ネタ元:フォームからの投稿
bat ファイルの編集など,編集後に Windows の関連付けで起動したいファイルがあります. しかし,その度に Explorer から起動するのも面倒です.
以下を.emacs に追加します.キーバインドは好みでどうぞ.
;;; 現在のバッファを Windows に関連付けにそって起動する関数 (defun W32-exec-buffer () "Type '\\[W32-exec-buffer]': win-start the current line's file." (interactive) (let ((fname (buffer-file-name))) (w32-shell-execute "open" fname) (message "win-started %s" fname))) ;;;; M-f2 に割り付け (global-set-key [M-f2] 'W32-exec-buffer) |
ファイルを編集後,M-x W32-exec-bufferかM-F2とします.これで,現在の バッファを関連付けにより起動できます.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
バッファを kill したり,あるいはさせないようにするための設定です.
29.4.1 特定のバッファを kill したくない ― protbuf (2003/10/02) 29.4.2 *scratch*バッファを kill できないように (2003/04/09) 29.4.3 不要なバッファを自動的に kill ― tempbuf (2003/10/02)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
お勧め度:★★☆☆☆ (あれば使うが,なくても構わない) .普通, kill する時には確認も でるので,あまり使ってない.ただ,他の Elisp に消されるのを防ぎたい時に,たまに使う.
バッファをC-x kで消してしまうと,それまでの編集履歴は消えてしまいます.そ のため,C-x kで消した後で,再度開いて,編集の取り消しをしても,当然取り消 すことはできません.
そこで,任意のバッファを消すことができないようにするものが, protbuf.el です.
使うためには, protbuf.el を http://www.splode.com/~friedman/software/emacs-lisp/ からダウンロードし, ロードパスの通ったところへ置きます.そして,以下を.emacs に追加します.
(require 'protbuf) |
使い方は, kill したくないバッファを選択して,M-x protect-buffer-from-kill-mode とします.これで,そのバッファを消すことができな くなります.
さらに,M-x protect-process-buffer-from-kill-modeというものもあります.こ れは, grep バッファなどに使用します.
grep バッファでは,検索結果がリアルタイムで追加されていきます. grep コマンドが動い ている時には,モードラインに「 grep:run 」と表示され,終了時には「 grep:exit 」と表 示されます.M-x protect-process-buffer-from-kill-modeは「 grep:run 」の時に は kill できないようにします.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
ネタ元: Petit emacs lisp tips
*scratch*バッファは簡単な処理に便利なバッファです.しかし,そのバッファの内容を 別名で保存したり, kill したりすると,*scratch*バッファが消えてしまい,また作らな いといけません.
面倒です.
そこで,以下のような設定が便利です.これを入れておくと,*scratch*バッファを C-x C-sで保存時には*scratch*バッファを作成してくれます.
また,C-x k で kill すると,*scratch*バッファの内容をすべて消してくれます. 非常に便利です.
(defun my-make-scratch (&optional arg) (interactive) (progn ;; "*scratch*" を作成して buffer-list に放り込む (set-buffer (get-buffer-create "*scratch*")) (funcall initial-major-mode) (erase-buffer) (when (and initial-scratch-message (not inhibit-startup-message)) (insert initial-scratch-message)) (or arg (progn (setq arg 0) (switch-to-buffer "*scratch*"))) (cond ((= arg 0) (message "*scratch* is cleared up.")) ((= arg 1) (message "another *scratch* is created"))))) (defun my-buffer-name-list () (mapcar (function buffer-name) (buffer-list))) (add-hook 'kill-buffer-query-functions ;; *scratch* バッファで kill-buffer したら内容を消去するだけにする (function (lambda () (if (string= "*scratch*" (buffer-name)) (progn (my-make-scratch 0) nil) t)))) (add-hook 'after-save-hook ;; *scratch* バッファの内容を保存したら *scratch* バッファを新しく作る (function (lambda () (unless (member "*scratch*" (my-buffer-name-list)) (my-make-scratch 1))))) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
不要なバッファを自動で削除してくれるマイナーモードです.
dired を何度か実行すると,それだけバッファができてしまいます.他にもモードによっ ては不要なバッファがたくさんできてしまうことがあります.
マイナーモードとして実行すると,非表示の時に kill してくれます.
Emacs Wikiからダウン ロードし,ロードパスの通ったところへ置きます.
以下を.emacs に追加します
(require 'tempbuf) |
不要時に消して欲しいバッファでM-x tempbuf-modeとします.これで,そのバッファ とは別のバッファを表示して,しばらくするとそのバッファを kill してくれます.
手動でするのも面倒なので,
(add-hook 'dired-mode-hook 'turn-on-tempbuf-mode) |
のように,適当な hook に追加しておくといいでしょう.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
参照用のバッファを別ウィンドウに表示させ,文章を書いたり,プログラムを書いたりす ることがあります.
しかし,このウィンドウをスクロールさせようとすると,C-x oしてから, C-vと面倒です.そこで,ここでは別ウィンドウを操作するためのものについて紹 介します.
非標準の master.el については 25.7.2 別のバッファを操作 ― master.el (2005/02/17) で紹介していますので,そちらを参照して ください.
29.5.1 別のバッファをスクロール ― 標準機能 (2003/03/13) 29.5.2 別のバッファと連動してスクロール (2003/03/13) 29.5.3 同一バッファを連動 ― 追従モード (2003/10/03)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
Meadow には別のバッファをスクロールさせる機能が標準で付属しています.
C-M-v( M-x scroll-other-window ) と C-M-S-v (M-x scroll-other-window-down ) です.
それぞれを実行すると,別のバッファで C-v,M-v したのと同じようにスクロー ルします.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
scroll-other-window で別バッファをスクロールさせることはできますが,結局今のバッ ファは自分でスクロールさせないといけません. そこで, scroll-all-mode があります.
これは,標準で付属していますので,M-x scroll-all-mode とするだけで使うこと ができます.この状態で,ウィンドウを二つに分け,一方をカーソルの上下キーでスクロー ルさせると,別ウィンドウもスクロールします.
ただし,C-vやM-v,M-<,M->などの移動方法には対応していま せん.また, 1 行スクロールなどを利用していると,同じ画面からスタートしても,上下 の画面は少しずれます.
また,この機能をオフにするには,再度 M-x scroll-all-mode とします.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
あるバッファを C-x 2 などで分割した後で M-x follow-mode とすると,追 従モードになります.
これは,分割されたバッファを単一のバッファのように扱うモードです.もう一度, M-x follow-mode とするとオフになります.
「分割されたバッファを単一のバッファのように扱う」というのは,例えば,上のバッファ には 1 〜 10 行までを,下のバッファには 11 〜 21 行までを表示するということです.そして, スクロールさせると,両方のバッファがスクロールします.
また,上のバッファで M-> とすると,画面がスクロールし,カーソルは下のバッ ファへ移動します.
左右に分けておいて,画面全体を活用するなどの用途に利用できるでしょう.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
Meadow の終了時に scratch バッファの内容を保存し,起動時に復元できる
scratch で簡単な設定を評価することはよくあります.しかし,この内容は Meadow を終了 すると消えてしまいます.
ほとんどの場合消えてしまっても構わないのですが,たまに消えて欲しくない時がありま す.そんな時に限って,そのことを忘れ Meadow を終了して,消えてしまった,という経験 がある人も多いのではないでしょうか.
Meadow の終了時に scrach を保存し,起動時に復元します.これで明示的に消さない限り, scratch のデータが残ります.
ただし, Meadow のクラッシュなどで操作不能になった場合には消えてしまいますので,本 当に重要なものは最初からファイルを作成した方がいいです.
以下を.emacs に追加します.
(defun save-scratch-data () (let ((str (progn (set-buffer (get-buffer "*scratch*")) (buffer-substring-no-properties (point-min) (point-max)))) (file "~/.scratch")) (if (get-file-buffer (expand-file-name file)) (setq buf (get-file-buffer (expand-file-name file))) (setq buf (find-file-noselect file))) (set-buffer buf) (erase-buffer) (insert str) (save-buffer))) (defadvice save-buffers-kill-emacs (before save-scratch-buffer activate) (save-scratch-data)) (defun read-scratch-data () (let ((file "~/.scratch")) (when (file-exists-p file) (set-buffer (get-buffer "*scratch*")) (erase-buffer) (insert-file-contents file)) )) (read-scratch-data) |
普通に Meadow を起動し,終了するだけで, scratch バッファを保存し復元してくれます.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
現在バッファの複製を作成する.
C-x 2 で別々の部分を表示できるように分割しても,一度 C-x 1 で分割を戻してしまうと,その情報は消えてしまいます.そのため,また C-x 2 で分割して,特定の場所を表示してという作業を繰り返す必要が あります.自分で消した時は仕方ないですが,何らかのメッセージなどで消え てしまった時にはやってられないものです.
とはいえ、普通のファイルであれば、C-x 2でも事足りるかもしれませ ん。しかし、 Info は通常 1 個しか起動できません。しかも、通常多くの部分が 隠されているため、複数の場所を表示することは面倒です。
バッファの複製を作成できます.
Meadow の標準機能です.
M-x clone-indirect-buffer で現在バッファの複製を作成できます.複 製されたバッファは「同じファイルを編集する別のバッファ」です.バッファ としては,通常のバッファと同じように利用できます.
別のバッファですので,当然カーソル位置なども別々の場所にすることができ ます.
この時,元となったバッファが主で,複製は従になります.従である複製を C-x k でキルしても複製が消えるだけです.しかし,主である元のバッ ファをキルすると,複製バッファもすべて消えます.
詳細については Emacs マニュアルの間接バッファ を参照ください。
[ << ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |