2

私はemacsとLispに非常に慣れていますが、他の関数型言語の経験から、有用なコードスニペットで見ているものを模倣することはそれほど難しくありません。.emacsファイルにいくつかの素晴らしいウィンドウ切り替え機能を追加しましたが、それらはうまく機能しています。

しかし、起動時に、ウィンドウ/フレームの特定の配置を構成したいと思います。基本的に、私はemacsを起動するたびに次のことを実行したいと思います(これは通常、最大で1日1回で、その後数日/数週間開いたままになります)。

1. Split the screen in half (C-x 2)
2. Grow the top half bigger by 20 lines (C-u 20 C-x ^)
3. Open a second frame of emacs (C-x 5 2)

理想的には、左側のモニターの最初のフレームと右側のモニターの2番目のフレームを最大化することもできますが、それがなくても実行できます。

キーコマンドと同等の関数を.emacsファイルにどのように書き込むのか疑問に思っています。

4

3 に答える 3

5

event_jr の回答のフォローアップとして、の戻り値を(kbd)キーボード マクロとして直接評価できることに注意してください。これは、通常のキーボード マクロを定義する代わりにキーに割り当てることができますが、あなたのケースでは、.emacs ファイルに配置したい 1 回限りのシーケンスであり、効率は問題ではありません。マクロ エディタを起動しないと理解するのがはるかに難しいの出力の代わりに、キー シーケンスをわかりやすいkbd形式で (コメントを付けて) 書き出す方が適切です。kbdinsert-kbd-macro

(execute-kbd-macro (kbd "
 C-x 2           ;; split-window-below
 C-u 20 C-x ^    ;; enlarge-window
 C-x 5 2         ;; make-frame-command
"))

ここでは、event_jr で示されているように、キーボード マクロ エディターからの出力をコピーして貼り付けただけなので、その機能を使用してコメントを自動生成できることに注意してください :)

とはいえ、個人的には、実際の関数呼び出しのようなものを書くことをお勧めします:

(split-window-below)
(enlarge-window 20)
(make-frame-command)
于 2012-09-20T14:51:23.683 に答える
3

Emacsの最高の機能は自己文書化ヘルプです。そのため、他の言語での経験があれば、目的のコマンドを Emacs-lisp で記述する方法を簡単に理解できます。

しかし、必要なのはキーの単純なシーケンスであるため、マクロが最適であり、書き込みを開始するのに適した場所になります。

入力したキーシーケンスは次のとおりです。

 C-x (  C-x 2 C-u 2 0 C-x ^ C-x 5 2 <switch-frame> C-x ) 

あなたが求めたことを実行するためのマクロを記録しました。次にM-x edit-last-kbd-macro、次のように表示されます。

;; Keyboard Macro Editor.  Press C-c C-c to finish; press C-x k RET to cancel.
;; Original keys: C-x 2 C-u 20 C-x ^ C-x 5 2

Command: last-kbd-macro
Key: none

Macro:


C-x 2           ;; split-window-below
C-u 20 C-x ^        ;; enlarge-window
C-x 5 2         ;; make-frame-command

次にM-x name-last-kbd-macro「ふー」M-x insert-kbd-macro「ふー」

(fset 'foo
   [?\C-x ?2 ?\C-u ?2 ?0 ?\C-x ?^ ?\C-x ?5 ?2 (switch-frame #<frame  *Minibuf-1* 0x101855410>)])

最後のチャンクを .emacs ファイルに追加し、次のように呼び出します

(foo)
于 2012-09-20T13:33:32.190 に答える
2

フレームとウィンドウの構成を構成する、より「組み込みの」方法があります。関連する関数は 3 つあります。

C-x r f         frame-configuration-to-register
C-x r w         window-configuration-to-register
C-x r j         jump-to-register

フレーム/ウィンドウ構成を含むレジスタにジャンプすると、そのフレーム/ウィンドウ構成がロードされます。

ウィンドウ構成はフレームごとではなく、すべてのフレームに適用される (ように見える)。フレーム構成は xmonad では動作しないように見えるため、テストしていません。

ただし、セッション間で実際にそれらを保存する方法がわからないため、これは何よりも参考情報です。

于 2012-09-20T14:22:01.647 に答える