2

この種のコードを N 回入力しているだけです。

menu.add_item(spamspamspam, "spamspamspam");

そして、それを行うためのより速い方法があるかどうか疑問に思っています。

スニペットを作成したくないことを除いて、yasnippet のミラーと同様の動作が必要です。引数の順序は、プロジェクトごと、言語ごとに異なります。

定数である唯一のものは、同じ行で数回繰り返す必要がある変数名です。

入力したいのですが

menu.add_item($,"")

引用符の間のポイントで、ショートカットを呼び出して入力を開始し、最後に で終了しC-eます。

余分なカーソルの動きがないので、これは私にとって有利に思えます。私はこれを行う方法について考えていますが、それがすでに行われているのか、それともより良い/より高速なことができるのか疑問に思っています.

UPD 結局のところ、ヤスニペットの方法。

答えてくれたthisirsに感謝します。これは確かにyasnippet私が最初に念頭に置いていたコードです:

(defun yas-one-line ()
  (interactive)
  (insert "$")
  (let ((snippet 
         (replace-regexp-in-string 
          "\\$" "$1"
          (substring-no-properties
           (delete-and-extract-region
            (line-beginning-position)
            (line-end-position))))))
    (yas/expand-snippet snippet)))

しかし、私はまだ何かより良い/より速いものを見たいと思っています.

4

3 に答える 3

2

あなたは試すことができます

(defvar sm-push-id-last nil)
(defun sm-push-id ()
  (interactive)
  (if (not sm-push-id-last)
      (setq sm-push-id-last (point))
    (text-clone-create sm-push-id-last sm-push-id-last
                       t "\\(?:\\sw\\|\\s_\\)*")
    (setq sm-push-id-last nil)))

その後、あなたが行うことができM-x sm-push-id RET , SPC M-x sm-push-id RET toto、それが挿入されtoto, totoます。sm-push-id明らかに、便利なキーコンボにバインドすると、これはより理にかなっています。また、これは重複する識別子のペアを挿入する場合にのみ機能します。何か他のものを挿入する必要がある場合は、正規表現を調整する必要があります。あまりにも緩い正規表現を使用すると、クローンが意図した使用法を超えて大きくなる傾向があることを意味するため、面倒になる可能性があります (たとえば、入力すると、以前のコピーにミラーリングされるfoo")だけでfooなく、ミラーリングされます)。")

于 2013-08-01T03:38:02.123 に答える
1

マクロを記録します。ヒットF3(または場合C-x (によっては ) を押して録音を開始します。必要なものを入力し、必要なコマンドを実行してから、F4(またはC-x )) を押して終了します。次にF4マクロを実行するときにもう一度押します。詳細については、Emacs マニュアルの第 17 章を参照してください (C-h i情報ブラウザが開きます。Emacs マニュアルはリストの一番上にあります)。

したがって、たとえば、次のように行の先頭を入力できます。

menu.add_item(spamspamspam

次に、その行の最後にポイントを置いて、次のマクロを記録します。

F3 C-SPC C-left M-w C-e , SPC " C-y " ) ; RET F4

これにより、行の最後の単語がコピーされ、引用符内に貼り付けられます。

于 2013-07-31T18:54:14.663 に答える