ทางลัดเป็นกลุ่มเพื่อเปิดไฟล์ภายใต้เคอร์เซอร์ในหน้าต่างที่เปิดอยู่แล้ว


12

ในกลุ่มคุณสามารถ เปิดไฟล์ภายใต้เคอร์เซอร์โดยใช้gfคำสั่ง

<c-w> fหนึ่งยังสามารถเปิดแฟ้มที่ในหน้าต่างแยกใหม่โดยการกดปุ่ม นี่เป็นคุณสมบัติที่ดีและประหยัดเวลาจริงๆ

อย่างไรก็ตามฉันไม่สามารถหาวิธีการเปิดไฟล์ในหน้าต่างแยกที่เปิดอยู่แล้ว (โดยไม่ต้องสร้างใหม่)


1
คุณอาจต้องการดูpreviewคุณลักษณะ (ดู:h preview)
Stéphane Chazelas

ใช่ฉันใช้ตัวอย่างด้วย อย่างไรก็ตามฉันไม่ต้องการที่จะเปิดไฟล์ในหน้าต่างแสดงตัวอย่าง แต่อย่างชัดเจนในอีกอันหนึ่ง
psibar

คำตอบ:


10

ฉันได้ชิ้นส่วนทั้งหมดเข้าด้วยกันเพื่อทำกลอุบาย วิธีที่ดีที่สุดคือการสร้างการแมปที่กำหนดเองสำหรับคำสั่งทั้งหมด:

 map <F8> :let mycurf=expand("<cfile>")<cr><c-w> w :execute("e ".mycurf)<cr><c-w>p

คำอธิบาย:

  • map <F8> แม็พที่ "F8" คำสั่งที่ตามมา
  • let mycurf=expand("<cfile>") รับชื่อไฟล์ภายใต้เคอร์เซอร์และบันทึกไว้ mycurf
  • <c-w>w เปลี่ยนโฟกัสเป็นหน้าต่างแยกที่เปิดอยู่ถัดไป
  • execute("e ".mycurf) เปิดไฟล์ที่บันทึกไว้ mycurf
  • ในที่สุดก็<c-w>pเปลี่ยนโฟกัสไปที่หน้าต่างก่อนหน้า (ที่จริงเรามาจาก)

1

ไม่สามารถทำได้อย่างง่ายดาย [count]ก่อนที่<C-w>fระบุซึ่งตรงกับไฟล์'path'ที่มีการเปิดก็ไม่ได้เลือกหน้าต่างที่มีอยู่ สำหรับ<C-w>wคำสั่งเท่านั้น[count]หมายถึง "ไปที่หมายเลขหน้าต่างที่มีอยู่"

ในการรับฟังก์ชั่นนั้นคุณต้องเขียนการแม็พแบบกำหนดเอง

  • คว้าไฟล์ไปที่[count]หน้าต่างและเลียนแบบgfคำสั่งหรือ
  • โคลนบัฟเฟอร์ปัจจุบันไปที่[count]หน้าต่างและดำเนินการที่gfนั่น

ใช่วิธีเดียวที่จะทำคือการเขียนแผนที่ที่กำหนดเอง ฉันแค่มีปัญหากับการคว้าไฟล์ไว้ใต้เคอร์เซอร์ แต่ฉันคิดว่าฉันได้คิดออกตอนนี้
psibar

1

ฉันค้นหาฟังก์ชันของ VIm เดียวกันและพบวิธีแก้ปัญหานี้ซึ่งใช้งานได้อย่างมีเสน่ห์:

map <F8> :vertical wincmd f<CR>

หน้าแหล่งที่มา


0

สิ่งนี้ใช้ได้กับฉัน:

function! OpenFileInPrevWindow()
    let cfile = expand("<cfile>")
    wincmd p
    execute "edit " . cfile
endfunction

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