วิธีปิดการใช้งานการเลื่อนแนวนอน
ฉันเขียนโซลูชันที่ปิดใช้งานการเลื่อนในแนวนอน (โดยการลบคำแนะนำของ@ ЯрославРахматуллин ) แต่ฉันไม่คิดว่าคุณจะชอบ:
augroup NoScrollPlease
autocmd!
autocmd CursorMoved * norm!99zH
augroup END
วิธีนี้ช่วยป้องกันการเลื่อนไปทางขวาด้วยวิธีที่แม่นยำอย่างไม่น่าเชื่อเพียงแค่เลื่อนกลับไปอีกครั้ง *
* เนื่องจากฉันไม่ทราบว่าคุณเลื่อนไปทางขวาหรือเส้นของคุณนานเท่าไหร่ฉันจึงเลื่อนหน้าจอขนาดครึ่งหน้าจอ 99 "ไกล" โดยพลการ โปรดทราบว่าฉันไม่ได้สนใจที่จะตรวจสอบว่าคุณได้เลื่อนไปทางขวาจริงหรือไม่ก่อนที่จะเลื่อน "ย้อนกลับ" ไปทางซ้าย ถ้าคุณจริงตั้งใจจะใช้วิธีนี้คุณอาจต้องการที่จะเคาะบางสิ่งบางอย่างขึ้นโดยการเปรียบเทียบค่าของgetcurpos()
, และ'sidescroll'
'columns'
ทำไมคุณไม่อยากทำเช่นนั้น
เหตุผลที่คุณจะไม่ใช้สิ่งนี้ก็คือปัญหาพื้นฐานของการเลื่อนคือปัญหาอื่น: กลุ่มจะไม่ยอมให้คุณเลื่อนเคอร์เซอร์ "นอกจอ" ดังนั้นหากคุณเลื่อนไปทางซ้ายในลักษณะที่เคอร์เซอร์จะปิดหน้าจอหลังจากการเลื่อน Vim จะนำเคอร์เซอร์ไปด้วยพร้อมกับเลื่อนเคอร์เซอร์ไปทางซ้าย
แต่เนื่องจากการคำนวณที่ใช้สำหรับว่าเคอร์เซอร์อยู่บนหน้าจอเหมือนกับที่ใช้ในการตัดสินใจว่าจะเลื่อนในปัญหาดั้งเดิมหรือไม่ผลกระทบสุทธิก็คือเมื่อใช้ "โซลูชัน" นี้หากคุณพยายามย้าย เคอร์เซอร์ไปทางขวาในสถานการณ์ที่ปกติแล้วจะทำให้เลื่อนไปด้านข้างขณะนี้เคอร์เซอร์ปฏิเสธที่จะย้ายเลย **
** เพื่อให้แม่นยำมากขึ้นเล็กน้อยขึ้นอยู่กับตำแหน่งปัจจุบันและการเคลื่อนไหวเคอร์เซอร์อาจเลื่อนไปทางขวา มันจะไม่ย้ายตำแหน่งที่จะเกิดการเลื่อนตามปกติ
ตัวเลือกอื่น?
ดังนั้นฉันจึงกลัววิธีแก้ปัญหาตามแผนของคุณจะไม่เลื่อนออกไป หากคุณต้องการวิธีแก้ปัญหาที่ใช้งานได้กับปัญหาทั่วไปก็จะต้องมีการดำเนินการในซอร์สโค้ด Vim
ตามที่คุณได้แจ้งไปแล้วสิ่งนี้ไม่น่าจะมาถึงเมื่อเร็ว ๆ นี้ดังนั้นฉันจึงเชื่อว่าทางออกที่ดีที่สุดของคุณสำหรับการแก้ปัญหาเฉพาะกรณีที่แสดงใน gif ของคุณคือการยื่นคำร้องให้ผู้เขียนปลั๊กอินหยุดใช้งานconceal
ทั้งหมด ลบข้อความที่ซ่อนจากบัฟเฟอร์ทั้งหมด
จากผลลัพธ์ที่ยังไม่ได้กำหนดและการกล่าวถึงvim-plugin-AnsiEsc
ในเอกสารนี้อาจเป็นสิ่งที่เป็นไปได้สำหรับพวกเขาที่จะนำไปใช้ แต่มันยากที่จะพูดได้อย่างแน่นอนโดยไม่ทราบว่าปลั๊กอินทำงานอย่างไร
:set wrap