ฉันจะเขียนคำสั่ง emacs ที่แทรกข้อความด้วยสตริงตัวแปรที่ตำแหน่งเคอร์เซอร์ปัจจุบันได้อย่างไร


12

ฉันต้องการเขียนคำสั่ง elisp emacs ที่แทรกสตริงคงที่ที่มีส่วนตัวแปรที่ตำแหน่งเคอร์เซอร์ปัจจุบัน:

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

โดยที่คำสั่งควรเคียวรี$STRINGและแทรกข้อความทั้งหมด

คำตอบ:


12

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 "}}"))

ฟังก์ชั่นนี้สอบถามใน minibuffer สำหรับสตริงแล้วแทรกมันทั้งหมดที่จุด หากต้องการใช้งานคุณสามารถใส่ไว้ใน. emacs ของคุณแล้วเรียกใช้ผ่านM-x labelnamerefหรือผูกไว้กับคีย์

YASnippet

หากคุณต้องการใช้โครงสร้างที่คล้ายกันจำนวนมากอาจเป็นการง่ายกว่าที่จะเขียนเป็น yasnippets ด้วยYASnippetคุณสามารถสร้างข้อมูลโค้ดที่มีพฤติกรรมคล้ายกันได้อย่างง่ายดาย ตัวอย่างเช่นคุณสามารถใช้สิ่งต่อไปนี้ (คุณได้แทนที่ "ปุ่มลัด" ด้วยปุ่มลัดที่เหมาะสมถ้าคุณต้องการปุ่มลัดสำหรับมัน):

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

ด้วยวิธีนี้คุณเขียน foo และกดTabโดยตรงหลังจากนั้นจะขยายไปยังและแบบสอบถามสำหรับ\label{$1} \index{\nameref{$1}}$1

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.