ฉันจะตั้งค่าความกว้างหน้าต่างของ gvim เป็น 80 คอลัมน์ของข้อความได้อย่างไรรวมถึงสิ่งที่จำเป็นเพื่อแสดงหมายเลขบรรทัด


9

ฉันใช้ gvim ด้วย

set number

ในของฉัน.vimrcมันแสดงให้เห็นชุดผ้าปูเตียงรวมถึงช่องว่างตรงหน้าทุกบรรทัด

หากเอกสารมีน้อยกว่า 10 บรรทัดจะใช้เวลา 2 คอลัมน์หากมีมากกว่า 10, 3 คอลัมน์เป็นต้น

ถ้าฉันใส่

set lines=40 columns=80

ใน.gvimrcมันจะแสดง 78 คอลัมน์ของรหัสและ 2 สำหรับช่างบวกกับการก้าวหรือ 77 + 3 และอื่น ๆ

ฉันต้องการตั้งค่าความกว้างหน้าต่างเป็น 80 คอลัมน์ + จำนวนคอลัมน์ใด ๆ ก็ตามที่จำเป็นในการแสดงชุดผ้าปูที่นอน

ไม่จำเป็นต้องเป็นแบบไดนามิก แต่ฉันต้องการอ่านจำนวนบรรทัดของไฟล์ที่กำหนดและตั้งค่าcolumnsตาม (แน่นอนโซลูชั่นแบบไดนามิกจะเรียบร้อยจริงๆ แต่ไม่จำเป็น)

คำตอบ:


9

ลองใช้ใน ~ / .vimrc ของคุณ:

au BufRead * let &numberwidth = float2nr(log10(line("$"))) + 2
          \| let &columns = &numberwidth + 80

ทุกครั้งที่คุณโหลดบัฟเฟอร์ (เช่นเปิดไฟล์) ที่จะกำหนดจำนวนคอลัมน์ที่จำเป็นต้องแสดงหมายเลขบรรทัดที่ใหญ่ที่สุดตั้งค่าตัวเลือก 'numberwidth' ตามนั้นและตั้ง 'คอลัมน์' เป็นจำนวนบวก 80 สำหรับข้อความของคุณ .


ขอบคุณ! มันใช้งานได้ดีเมื่อเปิดไฟล์ มีความคิดใดที่จะทำให้สิ่งนี้เกิดขึ้นเมื่อสลับแท็บด้วย ขอบคุณล่วงหน้า.
Elton Carvalho

1
เป็นกลุ่มของเหตุการณ์ autocommand :help autocommand-eventsมีการระบุไว้ ในหมู่พวกเขาคือTabEnterดังนั้นคุณสามารถลองแทนที่BufReadโดยBufRead,TabEnterในตัวอย่างข้างต้นและดูว่าสิ่งที่ทำให้คุณมีพฤติกรรมที่คุณต้องการ ฉันไม่ได้ทดสอบตัวอย่างกับเหตุการณ์นั้นด้วยตัวเอง
garyjohn

ขอบคุณ @garyjohn TabEnter ทำงานได้ตามที่คาดไว้ บางทีในภายหลังฉันจะเล่นกับกิจกรรมบันทึกอัตโนมัติและเหตุการณ์เหล่านั้น พวกเขามีประโยชน์ eally!
Elton Carvalho

1
@david_nash: 'numberwidth'เติบโตขึ้นตามลอการิทึมเท่านั้นโดยมีจำนวนบรรทัดในไฟล์ดังนั้นหากคุณสามารถจ่ายพื้นที่แนวนอนเพื่อ'number'เปิดใช้งานเลยฉันไม่คิดว่าคุณจะต้องกังวลเรื่องการ จำกัด มัน
garyjohn

1
@JonathanHartley: มันจะง่ายพอที่จะควบคุมมันด้วยตัวดำเนินการแบบไตรภาค ( :help expr1) หรือแบบ if / endif (เช่น, :help options-in-terminal) ปัญหากำลังเปลี่ยน & คอลัมน์เมื่อ'number'มีการเปลี่ยนแปลง ฉันคิดว่าจะใช้เหตุการณ์:help OptionSetคำสั่งอัตโนมัติชุดตัวเลือกแต่บอกว่ามันเป็นความคิดที่ดีที่จะรีเซ็ตตัวเลือกในขณะที่ประมวลผลเหตุการณ์นี้
garyjohn

2

ฉันใช้

set lines=24 columns=84

ใน $ HOME / .gvimrc ของฉันซึ่งให้สิ่งที่คุณต้องการ ฉันไม่ค่อย (ถ้าเคย) มีไฟล์ที่ยาวกว่า 999 บรรทัดดังนั้นจึงเหมาะกับฉัน


นั่นคือสิ่งที่ฉันทำ แต่การรักษาข้อความ 80 คอลัมน์นั้นดีเพราะฉันสามารถป้องกันไม่ให้ลงท้ายด้วย 81 ตัวอักษรในหนึ่งบรรทัดซึ่งไม่ใช่เรื่องใหญ่ แต่ก็ควรหลีกเลี่ยง
Elton Carvalho

2

ฉันตั้งค่าจำนวนแบนด์วิธเป็นพูด 5 แล้วตั้งค่าคอลัมน์เป็น 85 (80 + 5) ที่ควรจะดีสำหรับไฟล์จาก 0 บรรทัดถึงหนึ่งล้านบรรทัด

นี่คือสิ่งที่คุณอาจต้องใส่ (ค่าเริ่มต้น) ไฟล์ ~ / .vimrc

set numberwidth=5  "Good for files upto a million lines
set columns=85
set nu

คุณจะเห็นหมายเลขบรรทัดถูกจัดรูปแบบด้วย '% 5d' (5 คือความกว้างของตัวเลขด้านบน) แทนที่จะเป็นรูปแบบ '% d' เริ่มต้นโดยสิ้นเปลืองอสังหาริมทรัพย์ก่อนที่หมายเลขบรรทัด แต่ยังคงความสม่ำเสมอ


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