Як я можу написати команду emacs, яка вставляє текст із змінною рядком у поточну позицію курсору?


12

Я хотів би написати команду elisp emacs, яка вставляє фіксовану рядок, що містить змінну частину в поточному положенні курсору:

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

де команда повинна запитувати $STRINGі вставляти весь текст.

Відповіді:


12

Елісп

Ось проста функція elisp для цього:

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

Ця функція запитує в minibuffer для рядка, а потім вставляє його в точку. Щоб використовувати його, ви можете помістити його у свій .emacs, а потім викликати його через M-x labelnamerefабо прив'язати до ключа.

YASnippet

Якщо ви хочете використовувати багато подібних конструкцій, може бути простіше записати їх як ясніппети. За допомогою YASnippet ви можете легко створити фрагмент із подібною поведінкою, як описано вище. Наприклад, ви можете скористатись наступним (ви замінили "прив'язку клавіш" на належне введення клавіш, якщо ви хочете, щоб це було пов'язане з клавіатурою):

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

За допомогою цього ви пишете foo та натискаєте Tabбезпосередньо після цього, щоб розгорнути його \label{$1} \index{\nameref{$1}}та запитувати $1.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.