เปิดชื่อไฟล์ภายใต้เคอร์เซอร์เช่น gf แต่อยู่ในแท็บใหม่ (หรือแยก)?


43

คำสั่งโหมดปกติgfไปที่ไฟล์ที่มีเคอร์เซอร์ปัจจุบันอยู่ที่

แต่จะทำเช่นนั้นในหน้าต่างปัจจุบันแทนที่ข้อความปัจจุบัน ซึ่งหมายความว่าคุณต้องนำทางกลับอย่างชัดเจนเพื่อไปที่หลังในภายหลังและคุณต้องเขียนการเปลี่ยนแปลงในบัฟเฟอร์ปัจจุบันที่อาจเกิดขึ้น

ฉันแน่ใจว่าเป็นไปได้หรือไม่ที่เปิดไฟล์ภายใต้เคอร์เซอร์ใน tabview ใหม่แทน?


3
การเปิดใช้'hidden'ตัวเลือก ( set hidden) ช่วยให้คุณสามารถนำทางไปจากบัฟเฟอร์ที่ไม่ได้บันทึก สำหรับฉันนี่เป็นตัวสนับสนุนการผลิตขนาดใหญ่และมีความสำคัญต่อการหยุดพึ่งพาการแยกและแท็บมากมาย
tommcdo

คำตอบ:


56

แก้ไข: แนะนำการแมปแบบสมมาตรอย่างดีสำหรับเคสแยกแนวตั้งเนื่องจาก Vim โดยค่าเริ่มต้นมีการแมปสองกรณีสำหรับเคสแยกแนวนอน

มีหลายวิธีในการแก้ไข "ไฟล์ภายใต้เคอร์เซอร์" และในขณะที่คุณสามารถทำการแมปgfเพื่อแก้ไขในแท็บใหม่ได้อย่างที่ @ alexander-myshov กล่าวถึงนั่นหมายความว่าคุณมีสองวิธีในการแก้ไขในแท็บใหม่ แต่ไม่มีวิธี แก้ไขในหน้าต่างปัจจุบันซึ่งบางครั้งคุณอาจต้องการทำเช่นกัน ไม่ยากที่จะใช้การแมปมาตรฐาน แต่ถ้าคุณต้องการทำการแมปหนึ่งไปยังgfอีกอันฉันขอแนะนำให้สลับการแมปเพื่อให้คุณไม่สูญเสียการแมปใดรายการหนึ่ง

วิธีแก้ไขชื่อไฟล์บางส่วนใต้เคอร์เซอร์

  • gf - แก้ไขไฟล์ที่มีอยู่ใต้เคอร์เซอร์ในหน้าต่างเดียวกัน
  • C-Wf - แก้ไขไฟล์ที่มีอยู่ใต้เคอร์เซอร์ในหน้าต่างแยก
  • C-WC-F - แก้ไขไฟล์ที่มีอยู่ใต้เคอร์เซอร์ในหน้าต่างแยก
  • C-Wgf - แก้ไขไฟล์ที่มีอยู่ภายใต้เคอร์เซอร์ในแท็บใหม่

ไม่มีการแมปมาตรฐานเพื่อแก้ไขไฟล์ที่มีอยู่ภายใต้เคอร์เซอร์ในแนวตั้งแยก แต่คุณสามารถทำได้โดยแยกหน้าต่างในแนวตั้งก่อนแล้วจึงแก้ไขไฟล์ภายใต้เคอร์เซอร์ในหน้าต่างปัจจุบัน

  • C-Wv+ gf- แก้ไขไฟล์ที่มีอยู่ภายใต้เคอร์เซอร์ในหน้าต่างที่แยกในแนวตั้ง

ดังที่คุณเห็นด้านบนมีการแมปเริ่มต้นสองรายการสำหรับแก้ไขไฟล์ภายใต้เคอร์เซอร์ในแนวนอน ดังนั้นคุณสามารถทำการแมปหนึ่งใหม่ไปยัง keystring ด้านบนขยายกลุ่มของแผนที่เพื่อครอบคลุมตัวแยกแนวตั้ง คุณสามารถผูกอะไรแน่นอน nnoremap <C-W><C-F> <C-W>vgfแต่นี้ดูเหมือนว่าจะเสร็จสมบูรณ์สมมาตรอย่าง: ตอนนี้คุณมี

  • gf - แก้ไขไฟล์ที่มีอยู่ใต้เคอร์เซอร์ในหน้าต่างเดียวกัน
  • C-Wf - แก้ไขไฟล์ที่มีอยู่ใต้เคอร์เซอร์ในหน้าต่างแยก
  • C-WC-F - แก้ไขไฟล์ที่มีอยู่ใต้เคอร์เซอร์ในหน้าต่างที่แยกในแนวตั้ง
  • C-Wgf - แก้ไขไฟล์ที่มีอยู่ภายใต้เคอร์เซอร์ในแท็บใหม่

คุณยังสามารถไปที่บรรทัดใดบรรทัดหนึ่งในไฟล์ได้หากชื่อไฟล์ใต้เคอร์เซอร์ตามด้วยหมายเลขบรรทัด ถ้าคุณมี

filename:10

คุณสามารถแก้ไขไฟล์และมีการย้ายเคอร์เซอร์ไปที่เส้น gF10 สิ่งที่เทียบเท่าจะเป็นจริงสำหรับC-WFการแบ่งและC-WgFสำหรับแท็บ การทำสมมาตรให้เสร็จเพื่อแยกแนวตั้งนั้นไม่ได้ตรงไปตรงมา แต่ฉันขอแนะนำว่าC-WC-S-Fแผนที่ที่ได้รับด้วยการnnoremap <C-W><C-S-F> <C-W>vgFเลียนแบบFหรือShift+ fจากแผนที่เริ่มต้นในฐานะผู้สมัคร

นี่:คือตัวอย่างคุณสามารถใช้อักขระใด ๆ ที่ไม่ใช่อักขระชื่อไฟล์ (ดู:h 'isfname')


คำสั่งทั้งหมดเหล่านี้มาพร้อมกับซอสแอปเปิ้ลเช่น

  • ขยาย wildchars
  • ดูในสถานที่มากกว่าไดเรกทอรีปัจจุบันตาม'path'ตัวเลือกของคุณ
  • เพิ่มนามสกุลไฟล์ให้กับชื่อไฟล์ตาม'suffixesadd'ตัวเลือกของคุณ
  • มิฉะนั้นแก้ไขชื่อไฟล์ที่กำหนดเพื่อค้นหาการแข่งขันตาม'includeexpr'ตัวเลือกของคุณ

อ่านเพิ่มเติมที่:help gfและหัวข้อความช่วยเหลือสำหรับตัวเลือกต่างๆเหล่านี้


หากชื่อไฟล์ใต้เคอร์เซอร์ตั้งชื่อไฟล์ที่ไม่มีอยู่คุณอาจใช้คำสั่งแก้ไขมาตรฐานได้ดีกว่า<cfile>เช่น

:edit <cfile> // edit non-existent file under cursor in current window
:split <cfile> // edit non-existent file under cursor in split window
:vsplit <cfile> // edit non-existent file under cursor in vertical split window
:tabe <cfile> // edit non-existent file under cursor in new tabpage

และด้วยหลักสูตรเหล่านี้คุณสามารถใช้สิ่งต่าง ๆ เช่น:spl+10 filenameย้ายเคอร์เซอร์ไปยังบรรทัดที่ต้องการหรือ:tabe+/cologne filenameเพื่อย้ายเคอร์เซอร์ไปที่การเกิดขึ้นครั้งแรกของรูปแบบ


+1 ความคิดเห็นที่ดีที่สุดพร้อมคำอธิบายที่ชัดเจนดีกว่าเอกสารแยกเป็นหลายหัวข้อ
รักความน่าจะเป็น

8

เพียงใช้การผูกสำหรับสิ่งนี้:

เปิดในหน้าต่างใหม่ (แยก):

nnoremap gf <C-W>f
vnoremap gf <C-W>f

เปิดในแท็บใหม่:

nnoremap gf <C-W>gf
vnoremap gf <C-W>gf

ตรวจสอบสิ่งนี้ด้วย: :help CTRL-W_gf


สิ่งเหล่านี้ทำงานให้คุณได้อย่างชัดเจนหรือไม่? เสียงเรียกร้องไม่ต้องการให้ฉันทำการแมปgfกับสิ่งอื่น แม้จะnnoremap gf :echo "hello"<CR> ยังคงเปิดไฟล์ภายใต้เคอร์เซอร์ในบัฟเฟอร์ใหม่ (และใช่ฉันมา vimrc)
tandrewnichols

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