มีวิธีใดในการแปลงชื่ออูฐเพื่อใช้ขีดเส้นใต้ใน emacs?


8

ตัวอย่างเช่นฉันต้องการแปลง "CamelCasedName" เป็น "camel_cased_name" มีวิธีการทำเช่นนี้ใน emacs หรือไม่?


4
คำตอบสั้น ๆ สำหรับคำถามใด ๆ ของแบบฟอร์ม "มีวิธีใดที่ _____ เป็น emacs?" อยู่เสมอ "ใช่"
Brian Postow

คำตอบ:


4

โค้ดเล็ก ๆ น้อย ๆ จากหน้านี้ที่มีฟังก์ชั่น wrapper และเครื่องหมายขีดล่างแทนที่เครื่องหมายขีดกลางด้วยเครื่องหมายขีดล่างสามารถเปลี่ยนเป็นคำสั่งได้อย่างง่ายดาย (ตรวจสอบว่ามันใช้แคปชั้นนำเพื่อให้เหมาะกับคุณ):

ตัวอย่างโค้ด EmacsLisp เพื่อยกเลิกการ CamelCase สตริง (จากhttp://www.friendsnippets.com/snippet/101/ ):

(defun un-camelcase-string (s &optional sep start)
  "Convert CamelCase string S to lower case with word separator SEP.
Default for SEP is a hyphen \"-\".

If third argument START is non-nil, convert words after that
index in STRING."
  (let ((case-fold-search nil))
    (while (string-match "[A-Z]" s (or start 1))
      (setq s (replace-match (concat (or sep "-") 
                                             (downcase (match-string 0 s))) 
                                     t nil s)))
    (downcase s)))


3

Moritz Bunkus เขียนฟังก์ชัน elispเพื่อสลับระหว่าง CamelCase และ c_style


แพ็คเกจstring-inflectionเสร็จสมบูรณ์มากขึ้นในขณะนี้: github.com/akicho8/string-inflection (โปรดทราบว่ายังมีstring-inflection-camelize-lowerการเปลี่ยนhello_worldเป็นhelloWorld)
Ehvince

2

สำหรับการแสดงผลเท่านั้นคุณสามารถใช้สิ่งนี้:

M-x glasses-mode

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


2

ผมสามารถที่จะทำเช่นนี้ข้ามไฟล์ทั้งหมดได้อย่างรวดเร็วด้วยเพียงแบบสอบถามแทนที่ regexp

รูปแบบการค้นหาและเปลี่ยนเป็น \([a-z]+\)\([A-Z]\)\([a-z]+\)\1_\,(downcase \2)\3

รูปแบบการแทนที่ใช้ elisp ที่ถูกต้องในรูปแบบ ต้องใช้ Emacs 22 หรือใหม่กว่า

ในสไตล์เอกสาร emacs:

M-C-% \([a-z]+\)\([A-Z]\)\([a-z]+\) RET \1_\,(downcase \2)\3
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.