Làm cách nào tôi có thể viết lệnh emacs chèn văn bản với chuỗi biến ở vị trí con trỏ hiện tại?


12

Tôi muốn viết một lệnh elisp emacs chèn một chuỗi cố định có chứa một phần biến ở vị trí con trỏ hiện tại:

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

trong đó lệnh nên truy vấn $STRINGvà chèn toàn bộ văn bản.

Câu trả lời:


12

Elisp

Đây là một chức năng elisp đơn giản cho nó:

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

Hàm này truy vấn trong chuỗi nhỏ cho chuỗi và sau đó chèn tất cả tại điểm. Để sử dụng nó, bạn có thể đặt nó vào .emacs của bạn và sau đó gọi nó thông qua M-x labelnamerefhoặc liên kết nó với một khóa.

YASnippet

Nếu bạn muốn sử dụng nhiều cấu trúc tương tự, có thể dễ dàng viết chúng dưới dạng yasnippets. Với YASnippet, bạn có thể dễ dàng tạo một đoạn mã với hành vi tương tự như trên. Ví dụ: bạn có thể sử dụng cách sau (bạn đã thay thế "keybinding" bằng một keybinding thích hợp nếu bạn muốn có keybinding cho nó):

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

Với điều này, bạn viết foo và nhấn Tabtrực tiếp sau đó để mở rộng nó \label{$1} \index{\nameref{$1}}và truy vấn $1.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.