จะสร้างและเปิดเพื่อแก้ไขไฟล์ที่ไม่มีอยู่ซึ่งมีเส้นทางอยู่ใต้เคอร์เซอร์ใน Vim ได้อย่างไร

ฉันกำลังลองใช้ Vim ในช่วงสองสามชั่วโมงแรกกับ Ruby on Rails และจนถึงตอนนี้ฉันก็ชอบมันมาก

โดยเฉพาะอย่างยิ่ง คำสั่ง gf นั้นดีมาก แต่ฉันพลาดบางอย่างไป: หากยังไม่มีไฟล์ที่อยู่ใต้เคอร์เซอร์ gf จะส่งกลับข้อผิดพลาด

มีคำสั่งให้สร้างและเปิดไฟล์จริงหรือไม่หากไม่มีอยู่? หรือวิธีใดที่ตรงไปตรงมาที่สุดในการสร้างมันขึ้นมา?


vim
person demental    schedule 27.05.2011    source แหล่งที่มา


คำตอบ (1)


เราสามารถกำหนดรูปแบบที่กำหนดเองของคำสั่ง gf ที่เปิดบัฟเฟอร์ใหม่ได้หากไม่มีไฟล์ใต้เคอร์เซอร์:

:noremap <leader>gf :e <cfile><cr>

โดยที่คำสั่ง :e สามารถแทนที่ด้วย :tabe (เพื่อเปิดบัฟเฟอร์สำหรับไฟล์ใหม่ในแท็บแยกต่างหาก) หรือคำสั่งเปิดไฟล์อื่น

นอกจากนี้ยังเป็นไปได้ที่จะสร้างไฟล์ที่มีชื่ออยู่ใต้เคอร์เซอร์โดยไม่ต้องเปิดมัน ดูคำตอบของฉันสำหรับคำถามที่คล้ายกัน “ สร้างไฟล์ใต้เคอร์เซอร์ใน Vim

person ib.    schedule 28.05.2011
comment
:e <cfile> ก็เพียงพอสำหรับการใช้งานเป็นครั้งคราว เนื่องจาก <cfile> ดึงชื่อไฟล์เดียวกันกับที่ gf เลือก - person jpaugh; 14.07.2018
comment
ใช้งานไม่ได้สำหรับฉัน - ฉันมีไฟล์ของฉันซ้อนอยู่ในโฟลเดอร์ย่อย และบางครั้งฉันต้องการสร้างไฟล์ในโฟลเดอร์ย่อยจากไฟล์ที่อยู่ในโฟลเดอร์ย่อยอยู่แล้ว นั่นเป็นข้อจำกัดหรือเปล่า? ฉันพิมพ์คำสั่งนั้นทุกประการ (ฉันลองทั้งวิธีแก้ปัญหาและความคิดเห็น) และฉันก็หา vimrc ของฉันด้วย มันบอกว่า Can't find file foo/bar.txt in path - person muuh; 24.12.2019
comment
มีอะไรจะพูดเกี่ยวกับการข้าม <leader> หรือไม่? เช่น: :map gf :e <cfile><cr>? - person Bernhard Wagner; 22.04.2020
comment
@BernhardWagner: เพียงแค่ว่ามันจะบดบังการแมป gf ดั้งเดิม การกำหนดคำนำหน้าการแมปด้วยคีย์ผู้นำที่ไม่ขัดแย้งกัน (ดู :help mapleader) เป็นหนึ่งในวิธีที่แนะนำเพื่อหลีกเลี่ยงความขัดแย้งกับการแมปที่มีอยู่ อย่างไรก็ตาม หากสิ่งที่คุณต้องการทำแชโดว์การแม็ปในตัว แน่นอนว่าการแม็ปของคุณไม่ควรใช้ผู้นำ - person ib.; 23.04.2020