ฉันต้องการเขียนคำสั่ง elisp emacs ที่แทรกสตริงคงที่ที่มีส่วนตัวแปรที่ตำแหน่งเคอร์เซอร์ปัจจุบัน:
\label{$STRING} \index{\nameref{$STRING}}
โดยที่คำสั่งควรเคียวรี$STRING
และแทรกข้อความทั้งหมด
ฉันต้องการเขียนคำสั่ง elisp emacs ที่แทรกสตริงคงที่ที่มีส่วนตัวแปรที่ตำแหน่งเคอร์เซอร์ปัจจุบัน:
\label{$STRING} \index{\nameref{$STRING}}
โดยที่คำสั่งควรเคียวรี$STRING
และแทรกข้อความทั้งหมด
คำตอบ:
นี่คือฟังก์ชั่น 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
หรือผูกไว้กับคีย์
หากคุณต้องการใช้โครงสร้างที่คล้ายกันจำนวนมากอาจเป็นการง่ายกว่าที่จะเขียนเป็น yasnippets ด้วยYASnippetคุณสามารถสร้างข้อมูลโค้ดที่มีพฤติกรรมคล้ายกันได้อย่างง่ายดาย ตัวอย่างเช่นคุณสามารถใช้สิ่งต่อไปนี้ (คุณได้แทนที่ "ปุ่มลัด" ด้วยปุ่มลัดที่เหมาะสมถ้าคุณต้องการปุ่มลัดสำหรับมัน):
# -*- mode: snippet -*-
# name: foo
# key: foo
# binding: "keybinding"
# --
\label{$1} \index{\nameref{$1}}
ด้วยวิธีนี้คุณเขียน foo และกดTabโดยตรงหลังจากนั้นจะขยายไปยังและแบบสอบถามสำหรับ\label{$1} \index{\nameref{$1}}
$1