현재 커서 위치에 변수 문자열이있는 텍스트를 삽입하는 emacs 명령을 작성하려면 어떻게해야합니까? 문자열을 삽입하는 elisp emacs 명령을 작성하고 싶습니다. \label{$STRING}

현재 커서 위치에 변수 부분이 포함 된 고정 문자열을 삽입하는 elisp emacs 명령을 작성하고 싶습니다.

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

명령이 $STRING전체 텍스트를 쿼리 하고 삽입 해야하는 위치



답변

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-x labelnameref키를 통해 호출 하거나 바인딩 할 수 있습니다.

야스 니펫

유사한 구성을 많이 사용하려면 그것들을 yasnippets로 작성하는 것이 더 쉬울 수 있습니다. YASnippet 을 사용하면 위와 유사한 동작을 가진 스 니펫을 쉽게 만들 수 있습니다. 예를 들어 다음을 사용할 수 있습니다 (키 바인딩을 원할 경우 “키 바인딩”을 적절한 키 바인딩으로 대체 함).

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

이것으로 당신은 foo를 쓰고 Tab나중에 직접 눌러 확장 \label{$1} \index{\nameref{$1}}하고 쿼리합니다 $1.


답변