คำสั่งใดที่มีอยู่จะได้รับชื่อไฟล์บัฟเฟอร์ปัจจุบันเช่นนี้
น่าเสียดายที่ไม่มีคำสั่งที่พร้อมสำหรับสิ่งนี้ แต่เราสามารถสร้างได้ดังต่อไปนี้:
(defun name-of-the-file ()
"Gets the name of the file the current buffer is based on."
(interactive)
(insert (buffer-file-name (window-buffer (minibuffer-selected-window)))))
ความมหัศจรรย์อยู่ในฟังก์ชั่นหน้าต่างที่เลือกโดย minibuffer มันเป็นสิ่งที่ถูกต้องด้วยการเลือกบัฟเฟอร์สุดท้ายก่อนที่จะเปิดใช้งาน minibuffer มิฉะนั้นการใช้เพียงไฟล์บัฟเฟอร์ชื่อจะไม่ทำให้ชื่อไฟล์ของเราลงใน minibuffer ที่น่าสนใจฟังก์ชั่นเดียวกันสามารถใช้ในบัฟเฟอร์ปกติหรือ minibuffer เพื่อแทรกชื่อไฟล์ ไม่ต้องการการดูแลเป็นพิเศษ
การเชื่อมโยงคีย์เริ่มต้นคืออะไร
ไม่มีเลย แต่คุณสามารถเลือกอันที่สะดวกและกำหนดดังนี้:
(global-set-key (kbd "C-c f") 'name-of-the-file)
ใส่บรรทัดรหัสเสียงกระเพื่อมข้างต้นในไฟล์ init.el ของคุณ
วิธีนี้ใช้ได้ผลในกรณีที่ไม่สำคัญที่สุด แต่ก็ยากที่จะคาดการณ์ว่าความขัดแย้งที่อาจเกิดขึ้นกับโหมดใดก็ตามที่คุณใช้งานอยู่เมื่อเรียกใช้ฟังก์ชันนี้
จะเกิดอะไรขึ้นถ้าบัฟเฟอร์ไม่ได้ไปที่ชื่อไฟล์ที่ถูกต้องเช่นบัฟเฟอร์รอยขีดข่วน? จากนั้นข้อผิดพลาดนี้จะปรากฏในพื้นที่ echo:
name-of-the-file: Wrong type argument: char-or-string-p, nil
การเลือกบัฟเฟอร์ที่ถูกต้องด้วยชื่อไฟล์ที่เหมาะสมก่อนที่จะเรียกใช้ทางลัดจะหลีกเลี่ยงข้อผิดพลาดดังกล่าว
มีวิธีแก้ไขปัญหาอื่น ๆ อีกมากมายเช่นด้านบน แต่ส่วนใหญ่แตกต่างกันในวิธีที่พวกเขาจัดการข้อยกเว้นหรือแทนที่สำหรับความขัดแย้งใด ๆ ตัวอย่างเช่นบางคนใช้โหมดขอเพื่อให้ฟังก์ชันนี้ใช้ได้เฉพาะในบางโหมดเท่านั้น
M-n
ฉันไม่มีใครแปลกใจที่กล่าวถึง มันใช้งานไม่ได้ทุกที่ แต่ทำงานได้ในหลาย ๆ ที่ นอกจากนี้เนื่องจากคุณกำลัง grepping คุณอาจชอบ lgrep และ rgrep ซึ่งเป็นแบบโต้ตอบได้อีกเล็กน้อยฉันคิดว่า