การเคลื่อนไหวบัฟเฟอร์ vi / vim abrumpt ภายในหน้าต่าง


11

เมื่อใช้งาน:set wrapใน vi / vim เนื้อหาของทั้งบรรทัดที่ถูกพันจะถูกวางไว้ในบัฟเฟอร์การแสดงผลเมื่อเลื่อนเคอร์เซอร์ไปที่บรรทัดใหม่แม้ว่าการนำทางผ่านไฟล์โดยใช้บรรทัดการแสดงผล (gj / gk) เมื่อเทียบกับสายจริง (j / k) ตัวอย่างเช่นหากมีการพันบรรทัดมากกว่า 5 บรรทัดหน้าจอและขณะนี้อยู่นอกบัฟเฟอร์การแสดงผลบัฟเฟอร์จะข้ามไป 5 บรรทัดเมื่อนำทางเข้าไปในบรรทัดนี้เพื่อบังคับให้ทั้งบรรทัดพอดีกับหน้าจอ มีวิธีปิดใช้งานพฤติกรรมนี้หรือไม่ โปรดทราบว่าset display+=lastlineจะช่วยให้การแสดงผลของเส้นบางส่วนเมื่อสายที่ถูกห่อถูกบังคับออกจากหน้าจอโดยการนำทางออกจากบรรทัด แต่ไม่สามารถแก้ไขบัฟเฟอร์กระโดดที่เกิดขึ้นเมื่อนำทางเข้าไปในบรรทัดที่อยู่นอกบัฟเฟอร์เริ่มแรก

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


1
คุณยืนยันได้ไหมว่าสิ่งที่คุณหมายถึงคือ: คุณต้องการให้ส่วนของส่วนที่ห่อของบรรทัดถูกปิดการแสดงผลและสามารถเลื่อนได้อย่างราบรื่น? เป็นกลุ่มแสดงบรรทัดทั้งหมดเมื่อ'wrap'ฉันกลัว
เบอนัวต์

แม่นยำ. ฉันคิดว่ามันไม่มีวิธีใดที่จะแทนที่พฤติกรรมนี้ในการแสดงเส้นที่ถูกพันทั้งหมดในขณะที่เลื่อน? ขอขอบคุณ.
user001

1
ไม่ใช่ว่าฉันรู้ รอคำตอบแม้ว่าจะไม่มีใครรู้ว่ากลุ่ม Vim สามารถทำอะไรได้บ้าง
เบอนัวต์

1
เห็นด้วยกับ @Benoit เป็นไปไม่ได้เท่าที่ฉันรู้
Fredrik Pihl

1
ขณะนี้มีการอภิปรายในรายชื่อผู้รับจดหมาย vim_dev ในหัวข้อนี้ ดูเหมือนว่าคุณไม่ใช่คนเดียวที่มีคำขอนี้
Randy Morris

คำตอบ:


1

ไม่ใช่คำตอบที่สมบูรณ์ แต่อาจนำไปสู่ มีscrollตัวเลือก ความช่วยเหลือสำหรับตัวเลือกนั้นอ่านได้เหนือสิ่งอื่นใด:

{Vi แตกต่างกันเล็กน้อย: 'scroll' ให้จำนวนบรรทัดหน้าจอแทนบรรทัดไฟล์สร้างความแตกต่างเมื่อตัดบรรทัด}


ขอบคุณนั่นมีประโยชน์ การผสมคีย์ <Ctrl-E> (ลง) และ <Ctrl-Y> (ขึ้น) ทำให้พฤติกรรมพื้นฐานที่ฉันต้องการ หากมีวิธีการตรวจสอบว่าเคอร์เซอร์อยู่ที่บรรทัดด้านบนหรือด้านล่างของหน้าต่างโซลูชันชั่วคราวจะเกี่ยวข้องกับการแมปปุ่มลูกศรขึ้นและลงแบบมีเงื่อนไขกับ <Ctrl-Y> gk และ <Ctrl-E> gj, ตามลำดับ เมื่อเคอร์เซอร์ไม่ได้อยู่ที่บรรทัดด้านบนหรือด้านล่างของหน้าต่างการจับคู่กับ gk และ gj นั้นเป็นสิ่งจำเป็น (คำสั่ง else ในเงื่อนไข) มีวิธีง่าย ๆ ในการตรวจสอบว่าเคอร์เซอร์อยู่บนบรรทัดด้านบนหรือด้านล่างของหน้าต่างปัจจุบันหรือไม่?
user001

0

ในโหมดปกติคุณสามารถข้ามไปมาระหว่างส่วนต่าง ๆ ของบรรทัดที่ล้อมรอบได้โดยใช้gkและgj( g<up>หรือg<down>) vim wipipage นี้อธิบายวิธีการเปลี่ยนพฤติกรรมอย่างถาวร


1
แน่นอนและฉันได้แมปพฤติกรรมเหล่านั้นกับปุ่มลูกศรทิศทาง อย่างไรก็ตามสิ่งนี้แตกต่างจากการแสดงผลบังคับของความสมบูรณ์ของเส้นที่พันกันเมื่อนำทางไปยังบรรทัดนั้น พฤติกรรมนี้ไม่ขึ้นกับการใช้ gj / gk หรือ j / k ฉันต้องการที่จะสามารถนำทางไปยังบรรทัดที่เริ่มต้นออกจากบัฟเฟอร์ (นอกหน้าจอ) โดยไม่แสดงบรรทัดที่ล้อมรอบทั้งหมด
user001

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