3

私はスキームには精通していますが、emacs (VIM からの切り替え) と elisp は初めてです。

私は次のことを行う方法を知っています:

  • 単純なキーバインディングを作成する
    • Cc iwb = バッファ全体をインデント
    • F2 = 折りたたみのオン/オフ
  • emacs のスライムを使う
  • Cx 2 のようないくつかの基本的なキー、paredit キー、いくつかの基本的な移動キー

もう少し高度なことをするのに助けが必要です:

F3 を等しくしたい:

  • emacs を Cx 2 モードにする
  • 下のウィンドウで、「slime-repl」バッファに切り替えます
  • "slime-repl" バッファーで、コマンド "(test/run)" を送信します

人にスクリプトを書いてもらうのはひどいやり方だと思います。しかし、誰かがそれを行うことができれば、私はそれからすぐに学ぶでしょう. [そして、あなたの例を研究することで、より複雑な種類のスクリプトを作成できるようになります。]

ありがとう!

4

2 に答える 2

2

これは正確にはあなたが望むものではありませんが、さらに微調整するための良い出発点になるはずです:

(defun slime-run-test ()
  (interactive)
  (slime-interactive-eval "(test/run)")
  (slime-pop-to-buffer (slime-output-buffer) t))

(global-set-key (kbd "<f3>") 'slime-run-test)
于 2012-04-20T14:19:28.323 に答える
1

私はスライムを使用しませんが、comint-mode を使用すると仮定すると、次のようにするとうまくいくと思います。

(defun my-slime-test-run ()
  (interactive)
  (delete-other-windows)
  (split-window-below)
  (with-selected-window (next-window)
    (switch-to-buffer "slime-repl")
    (goto-char (point-max))
    (insert "(test-run)")
    (comint-send-input)))

(global-set-key (kbd "<f3>") 'my-slime-test-run)

これを行うためのより良い方法がおそらくありますが、できれば、エディターでタスクを実行するための elisp 関数を作成する方法について少し洞察が得られることを願っています (そして、関数が一連のエディターの指示と非常によく似ていることに注意してください。使用するキーストロークを同等のコードに変換するだけで、多くのことを実行できます。または、コードをまったく記述せずに、キーボード マクロを記録して保存することもできます)。

C-hf name-of-the-function RETその関数内の関数/マクロ呼び出しに関するドキュメントを取得するために使用します。

キーバインドについては、C-hkF3Emacs がそのキーをどのように参照しているかを確認し、その文字列を引数として使用しましたkbd(そのシーケンスを使用して、特定のキー シーケンスにバインドされた関数の名前を見つける方法に注意してください。必要に応じてコードで使用します)。

多くのことは、まだ知らない場合ははるかに明白ではありませんが、それは、これと同じくらい大きなコード ベース (およびこれほどまでさかのぼる) でのみ予想されることです。

すばらしいことに、何を探しているのかわからない場合は、パターンに一致する関数名をいつでも検索できますC-uC-ha(変数、値、ライブラリ、およびドキュメントについても同様ですM-: (info "(emacs) Apropos") RET。この機能の詳細については、を参照してください)。加えて情報マニュアル (索引付き --特定のマニュアル内でまたは を押すIか、コマンドを使用してすべての情報マニュアルを一度に検索します)。iinfo-apropos

Emacs の自己文書化の性質を利用して、まだ知らないことに対する答えを見つける方法を学ぶことは、まさにあなたができる最高のことの 1 つです。

于 2012-04-20T14:15:15.953 に答える