วิธีการแสดงคอลัมน์ปัจจุบันในแถบสถานะเป็นกลุ่ม?


187

ฉันต้องการแสดงคอลัมน์ปัจจุบันในแถบสถานะเช่นเดียวกับในโปรแกรมแก้ไขข้อความอื่น ๆ เช่นคุณควรรู้ว่าคุณอยู่ที่คอลัมน์ 80 หรือสูงกว่า

จะแสดงคอลัมน์ปัจจุบันในแถบสถานะได้อย่างไร


หากคุณต้องการแสดงคอลัมน์ปัจจุบันของเคอร์เซอร์ให้พิมพ์: echo col ('.')
SibiCoder

คำตอบ:


218

ลองถ้าการตั้งค่าตัวเลือก 'ไม้บรรทัด' เป็นสิ่งที่คุณกำลังมองหา ที่คอมพิวเตอร์ของฉันที่ด้านล่างขวาแสดงบรรทัดและคอลัมน์ที่ฉันมีเคอร์เซอร์

:set ruler

แก้ไขความคิดเห็น :

จากความช่วยเหลือของกลุ่ม (คำสั่ง:help ruler):

หากจำนวนอักขระที่แสดงแตกต่างจากจำนวนไบต์ในข้อความ (เช่นสำหรับ TAB หรืออักขระหลายไบต์) ทั้งคอลัมน์ข้อความ (หมายเลขไบต์) และคอลัมน์หน้าจอจะแสดงแยกด้วยเครื่องหมายขีดกลาง

คุณสามารถลองเปลี่ยนด้วยrulerformatตัวเลือกเช่น:set rulerformat=%l,%v


ใช่แล้ว แต่นั่นแสดงค่าแปลกเช่น23,62-6823 ดูเหมือนจะเป็นสาย ฉันควรตีความ62-68สำหรับคอลัมน์อย่างไร
Jonas

7
62 กำลังนับแท็บเป็นหนึ่งอักขระ 68 กำลังนับแท็บที่ขยาย
RedGrittyBrick

1
จากคำสั่ง ': help ruler': "หากจำนวนตัวอักษรที่แสดงแตกต่างจากจำนวนไบต์ในข้อความ (เช่นสำหรับ TAB หรืออักขระแบบหลายไบต์) ทั้งคอลัมน์ข้อความ (หมายเลขไบต์) และหน้าจอ จะแสดงคอลัมน์คั่นด้วยเส้นประ " คุณสามารถลองเปลี่ยนด้วยตัวเลือก 'rulerformat' เช่น ': set rulerformat =% l,% v'
Birei

rulerไม่ทำงานกับ windows ที่แยกเป็นกลุ่ม
หมดเขต

@Jonas ไม่เพียง แต่แท็บอย่างที่ RedGrittyBrick พูด แต่ยังมีตัวอักษรกับไบต์ สิ่งนี้มีความชัดเจนมากในไฟล์ UTF-8 ที่สัญลักษณ์รูปตัวอักษรเดียวมีจุดรหัสแบบหลายไบต์ ตัวอย่างเช่นละตินeñe (n ที่มีเครื่องหมายตัวหนอนอยู่เหนือมันออกเสียง EN-yea) เป็นสัญลักษณ์อักขระเดียว แต่ใช้เวลาสองไบต์เพื่อเป็นตัวแทนของรหัสจุด (\ xC3B1) และหนึ่งในสาม (1/3) เป็นอักขระสัญลักษณ์เดี่ยว ด้วยจุดโค้ดสามไบต์ (\ xE28593)
Luv2code

27

ดู:help statuslineตัวเลือกมากมายที่มี

ฉันมีสิ่งนี้ใน~/.vimrcระหว่างคำสั่งอื่น ๆ :

set statusline+=col:\ %c,

ซึ่งผลลัพธ์

col: 64

ในสถานะของฉัน

set rulerฉันไม่ได้มี


1
มันไม่ได้ผลสำหรับฉัน ฉันอาจต้องการการตั้งค่าเพิ่มเติม
Jonas

3
โจนัส, คุณอาจต้องใช้set laststatus=2ใน.vimrcเพื่อแสดงบรรทัดสถานะเสมอ (0 -> ไม่แสดงบรรทัดสถานะ 1 -> เฉพาะในกรณีที่มีหน้าต่างอย่างน้อยสองหน้าต่าง 2 -> จะแสดงบรรทัดสถานะเสมอ)
pabuisson

ฉันใช้สิ่งต่อไปนี้เพื่อให้มีพื้นที่ว่างก่อนหน้านี้และเนื้อหาก่อนหน้านี้ในสถานะ: set statusline + = \ col: \% c,
David Baucum

18

อีกวิธีในการทำเช่นนี้คือ 'g Ctrl-G' ซึ่งพิมพ์ตำแหน่งปัจจุบันของเคอร์เซอร์ได้ห้าวิธี: คอลัมน์, Line, Word, Character และ Byte (จากhttp://vimdoc.sourceforge.net/htmldoc/editing.html#g_CTRL-G )


โซลูชันนี้มีบางสิ่งบางอย่างที่ทำให้คอลัมน์และ VisibleColumn แตกต่าง อักขระที่ไม่สามารถพิมพ์ได้จะแสดง 2 คอลัมน์ แต่ควรนับเป็นหนึ่ง RealColumn-VisibleColumn, Line, Word, Character and Byteถ้าตัวอักษรพิมพ์ไม่ใช่เอาท์พุทที่มีลักษณะเช่นนี้
mxlian

17

หรือปล่อยให้ 'ผู้ปกครอง' ไม่ได้รับประสิทธิภาพเพิ่มขึ้นและกดCTRL-Gเมื่อคุณต้องการดูคอลัมน์ปัจจุบัน


3
การกดปุ่ม Ctrl- ทุกอย่างไม่ได้เสียงเหมือนการเพิ่มประสิทธิภาพ เรากำลังพิมพ์อักขระ ไม่มีมนุษย์คนใดมีนิ้วมือและดวงตาที่บินเร็วพอที่จะเห็นความแตกต่างของการแสดงประเภทนี้
macetw

10

ฉันจะคิดค่าเสื่อมราคาโดยใช้ setuler เพราะฉันเชื่อว่ามันเข้ากันไม่ได้กับตัวเลือกสถานะเช่นถ้าคุณตั้งค่าสถานะเพื่อแสดง filepath แบบเต็มร่วมกับ set ruler

set statusline+=%F

set ruler

จากนั้นจะไม่แสดงหมายเลขคอลัมน์ แต่เป็นเพียงพา ธ ไฟล์แบบเต็มในแถบสถานะ อย่างไรก็ตามหากคุณใส่สิ่งต่อไปนี้ใน. vimrc ของคุณ

set statusline+=%F\ %l\:%c

มันจะแสดงทุกอย่างถูกต้องคือ

[Filepath / ชื่อไฟล์] [linenumber]: [หมายเลขคอลัมน์]


2

สำหรับคนอื่น ๆ ที่กำลังมองหาคำตอบนี้และไม่คุ้นเคยกับการทำงานกับ VIm คำตอบที่ง่ายที่สุดที่ฉันพบคือการเพิ่มบรรทัดนี้ไปยังจุดสิ้นสุดของไฟล์. vimrc ของคุณในโฮมไดเร็กตอรี่ของคุณ:

set ruler

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