web-dev-qa-db-ja.com

現在のカーソル位置に可変文字列を含むテキストを挿入するemacsコマンドを作成するにはどうすればよいですか?

現在のカーソル位置に可変部分を含む固定文字列を挿入するelispemacsコマンドを書きたいと思います。

\label{$STRING} \index{\nameref{$STRING}}

コマンドは$STRINGを照会し、テキスト全体を挿入する必要があります。

12
Flow

Elisp

これはそのための簡単なelisp関数です:

(defun labelnameref (string)
  "Insert \label{ARG} \index{\nameref{ARG}} at point"
  (interactive "sString for \\label and \\nameref: ")
  (insert "\\label{" string "} \\index{\\nameref{" string "}}"))

この関数は、ミニバッファーで文字列を照会し、それをすべてポイントに挿入します。それを使用するには、それを.emacsに入れて、を介して呼び出すことができます M-xlabelnamerefまたはそれをキーにバインドします。

YASnippet

同様の構成を多数使用する場合は、それらをyasnippetとして記述する方が簡単な場合があります。 YASnippet を使用すると、上記と同様の動作のスニペットを簡単に作成できます。たとえば、次を使用できます(キーバインドが必要な場合は、「キーバインド」を適切なキーバインドに置き換えます)。

# -*- mode: snippet -*-
# name: foo
# key: foo
# binding: "keybinding"
# --
\label{$1} \index{\nameref{$1}}

これであなたはfooを書いて押す Tab その後すぐにそれを\label{$1} \index{\nameref{$1}}に展開し、$1を照会します。

12
N.N.