Emacs:コマンドと引数を混在させるインターフェース

Emacs:コマンドと引数を混在させるインターフェース

私はタイピングを少なくするようにEmacsを設定しようとしていますが、プログラミング時にある程度同じことを繰り返し実行(タイピング)するという事実を利用して同じ目標を達成しようとしています。医学的理由だけでなく全体的に意味があるので、これが必要です。

私が想定しているEmacsインタフェースは、基本的にコマンドと引数が混在しています。私がただ一つの例を挙げれば、あなたはすぐに理解するでしょう。

さて、Cで「何かより少ない場合は1つを追加してください」というforループが非常に一般的であることを知るために、それほど敏感である必要はありません。それで、次のような文章を書くべきだと思いました。

(defun C-for-loop-new-int-less-inc (var start stop)
  "Shortcut for putting a C for loop at point.
   Note: There are some specifics to i."
  (interactive "sVariable: \nnStarts at: \nnLess than: ")
  (insert
   (format "for (int %s = %d; %s < %d; %s++) {\n\n}"
           var start var stop var) )
  (previous-line)
  (c-indent-line-or-region) )

そしてタイピングを減らしてください:

(defalias 'fnili 'C-for-loop-new-int-less-inc)

M-x fnili RET i RET 0 RET 10 RETあなたを連れて行かなければなりません。

for (int i = 0; i < 10; i++) {

}

カーソルはインデントされた2行目にあります。

これは改善されましたが、どうすれば次のようにコマンドを起動できますか?

fnii0l10i

これにより、すべてのRET-wait-reorientサイクルが消え、コマンド全体を一度だけ作成すると常に表示されます。

これで文字列を取得して解析する関数を書くことができますが、Emacsが私が探しているインターフェースをすでにサポートしている場合は、そうしませんでした。

編集する

それでは、「テンプレート施設」はまさにそれですか?

私はそうは思わないそれするのは難しいです。すべての可能な紆余曲折を含む、C言語全体がこのようになりたい場合は同意します。ただし、時間のかかるいくつかのケース(スイッチケース、ヘッダーファイルのガードなど)を特定して実装することは便利な機能です。

もちろん、作業がすでに完了していれば最初からやり直すことはできませんので(おっしゃるとおり:)ぜひリンクを確認します。

しかし...私の考えでは、私の例は複雑すぎて、インターフェイスに関する実際の問題を隠しています。RET各パラメータに対して空の行を入力してインポートするのではなく、コマンドラインにすべて入力してください。

より簡単な例:を除いてM-x man RET irssi RETどうすればよいですかM-x man"irssi" RET?この場合、ただ一つの引数に過ぎず(覚えておくべき)複雑なものもなく、間違えることもほとんどないのであまり役に立ちません(多分少し)。編集するには、「バックトラッキング」を選択してください。しかし、元の投稿のforループの例コマンド(存在する場合は見たことがないので仮想です) - この場合、実際に利点を得ることができます。

ベストアンサー1

本当に便利なテンプレートツールはデザインが難しく、多くのコードが必要です。最初から新しく作成するよりも、すでに存在するものを見つけてニーズに合わせて調整することをお勧めします。

これEmacs Wiki一部のパッケージが一覧表示されます。主な候補は次のとおりです。

おすすめ記事