4

(インタラクティブなキーコードではない)を使用して、端末エミュレーターelispでコマンドを実行するにはどうすればよいですか。emacsどうすればキープレスをそのバッファに送信できますか?

開始には、コマンドを実行するためのスコープがないterm必要があるようです。これは、用語がインタラクティブなツールとして意図されている(term "/bin/bash")ためだと思います...

また、実行中のアプリに特定のキーを送信したいと考えています。これはできますか?(insert 'x) が機能するかもしれないと思ったのですが、バッファ パラメータがなく、M- C- S- s- も許可されていません。

4

2 に答える 2

5

を使用して、入力を端末に直接送信できますterm-send-raw-string。例:

(progn
  (set-buffer "*terminal*")
  (term-send-raw-string "ls -l\n"))

ls -lRETこれにより、端末バッファーへの入力の効果がシミュレートされます。

term引数の解析についてはあまり柔軟ではありませんが、通常は、シェルを起動してコマンドを送り、ターゲット プログラムをロードするだけで十分ですterm-send-raw-string。以下は、いくつかのコマンドを対話型プログラムにスクリプト化する elisp の一部です。

(progn 
  (let ((term-buffer (term "/bin/bash")))
    (set-buffer term-buffer)

    ;; start up vi
    (term-send-raw-string "vi hello.txt\n")

    ;; some line noise :P
    (term-send-raw-string "ihello world\033:wq\n")

    ;; quit our shell
    (term-send-raw-string "exit")))
于 2011-11-25T22:20:39.257 に答える