แสดงแท็บเป็นอักขระ


119

เมื่อฉันทำงานกับไฟล์ในไพ ธ อนบางครั้งฉันก็ผิดแท็บสำหรับช่องว่างและในทางกลับกัน มีวิธีที่ฉันสามารถให้ Vim แสดงตัวอักษรสำหรับแท็บแทนที่จะเป็นแท็บได้หรือไม่?


เช่นเดียวกับบันทึกย่อด้านข้างคุณสามารถกำหนดค่าให้แปลงแท็บทั้งหมดเป็นช่องว่างได้retabทุกครั้งที่คุณบันทึกไฟล์
0xc0de

หากคุณติดตั้งเป็นกลุ่มคำถามที่พบบ่อย , คุณจะได้รับคำตอบแบบออฟไลน์ที่นั่นและค้นหา:h vim-faq ยากที่จะจดจำแท็ก/invisible :h faq-19.8
Hotschke

คำตอบ:


119

ใช่ใช้ listchars:

set list
set listchars=tab:>-

หากคุณใส่สองบรรทัดนี้ใน. vimrc ของคุณแท็บจะปรากฏขึ้นตาม>ตำแหน่งเริ่มต้นและ-ตลอดจนแท็บที่เหลือ

(Sidenote: listchars ยังสามารถแสดงช่องว่างต่อท้ายด้วยtrail:x(แทนที่xด้วยอักขระที่คุณต้องการใช้สำหรับช่องว่างต่อท้าย) ซึ่งมีประโยชน์เช่นกัน)


6
หมายเหตุ: ฉันชอบที่จะใช้set listchars=tab:!·,trail:·IMHO ·นั้นชัดเจนกว่า-... คุณจำเป็นต้องใช้ Vim เวอร์ชันล่าสุดเพื่อให้สามารถใช้งานได้ btw (ไม่แน่ใจว่าจะใช้แบบไหนฉันคิดว่า 7.3.x)
Martin Tournoij

8
ผมชอบใช้อักขระ Unicode ขณะที่มันมีขนาดเล็กกว่าเล็กน้อย >ขณะนี้ฉันเห็นพื้นที่สีขาวต่อท้ายด้วยการทำเครื่องหมาย eol (แม้ว่าฉันอาจลองด้านบน) การตั้งค่าของฉันคือ: set listchars=eol:¬,tab:▸\ และ
มาร์ตินยอร์ค

58

คำตอบพื้นฐานซึ่งเป็นสาเหตุของแท็บที่จะแสดงเป็น:set list^I

อย่างไรก็ตามฉันขอแนะนำให้ทำมากกว่านั้น เพียงแค่:set listมีปัญหาในการที่มันล้มเหลวในการรักษาแนวการมองเห็นบนหน้าจอ ตัวอย่างเช่น:

%.o: %.cpp
^Ig++ -c $<

ไม่ได้ดูดีโดยเฉพาะอย่างยิ่งเมื่อคุณคาดหวังgของg++การปรากฏภายใต้ครั้งแรกpของcpp(สมมติtabstop=8)

ดังนั้นฉันขอแนะนำให้.vimrcคุณใส่สิ่งที่ชอบ:set listchars=tab:␉· (เพื่อความชัดเจนนั่นคือตัวอักษร Unicode U + 2409 สัญลักษณ์สำหรับการกำหนดค่าแบบขอบฟ้าตามด้วยU + 00B7 MIDDLE DOT )

ตามที่อธิบายไว้ใน:help listcharsการตั้งค่าสองอักขระสำหรับtab:xyสาเหตุการจัดแนวที่จะรักษา

tab:xy        Two characters to be used to show a tab.  The first
              char is used once.  The second char is repeated to
              fill the space that the tab normally occupies.
              "tab:>-" will show a tab that takes four spaces as
              ">---".  When omitted, a tab is show as ^I.

ตัวอย่างข้างต้นจะปรากฏบนหน้าจอเป็น:

%.o: %.cpp
␉·······g++ -c $<

โดยส่วนตัวแล้วฉันไปกับlistchars:

:set listchars=eol:⏎,tab:␉·,trail:␠,nbsp:⎵

อักขระเหล่านี้มีความโดดเด่นมากจนแทบไม่ปรากฏในข้อความเอกสาร

ในการพิมพ์ตัวอักษรพิเศษเหล่านี้เป็นของคุณvimrcชนิดขณะที่อยู่ในโหมดแทรกตามที่อธิบายไว้ในCtrl-vu23CE:help utf-8-typing


2
ดูเพิ่มเติมset lcs=tab:├─
sch

นี่เพิ่งให้ฉัน ที่
eol

14

ไฮไลต์แท็บ

การTabไฮไลต์ชั่วคราว

สำหรับการใช้งานเป็นครั้งคราวหนึ่งแท็บสามารถไฮไลต์แท็บทั้งหมดในเอกสารโดยใช้/คำสั่งค้นหาต่อไปนี้:

/\t

หากต้องการลบไฮไลต์เพียงพิมพ์:nohที่สั้น:nohlsearch- ไม่มีแสงสูง

การTabเน้นถาวร

" Highlight tabs as errors.
" https://vi.stackexchange.com/a/9353/3168
match Error /\t/

แท็บที่เน้นเป็นกลุ่ม

เน้นเพิ่มเติม

สำหรับข้อมูลเพิ่มเติมของคำสั่งที่ไฮไลต์เหล่านี้มีประโยชน์ -including รวมกับช่องว่างต่อท้ายและทำให้ permanent- นี้ดูวิกิพีเดียเป็นกลุ่ม


4
คุณยังสามารถใช้:match Error /\t/เพื่อไฮไลต์แท็บ (หรือรูปแบบอื่น ๆ สำหรับเรื่องนั้น) ได้อย่างอิสระจากการลงทะเบียนการค้นหาและ hlsearch (พิมพ์:matchเพื่อล้าง)
Martin Tournoij

1
@Carpetsmoker หนึ่งสามารถหามากขึ้นทั้งของคำสั่งเหล่านี้มีประโยชน์เน้น (รวมรวมกับช่องว่างต่อท้าย!) ในวิกิพีเดียเป็นกลุ่มเกี่ยวกับการเน้นพื้นที่ที่ไม่พึงประสงค์
Serge Stroobandt

9

ฉันชอบใช้ปลั๊กอินindentLine เป็นการส่วนตัวซึ่งจะแสดงเส้นแนวตั้งที่ระดับการเยื้อง

มันเป็นความช่วยเหลือที่ดีโดยเฉพาะอย่างยิ่งในงูหลามที่การเยื้องเป็นสิ่งสำคัญ

(ภาพที่นำมาจากลิงค์ด้านบน)

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


2
ฉันเชื่อว่าปลั๊กอินนี้มีไว้สำหรับการเว้นวรรคเยื้องหรือไม่
Jake Byman

5

คุณอาจต้องการแสดงแท็บต่างกันในเทอร์มินัลปกติและ gvim

set list!
if has('gui_running')
    set listchars=tab:▶\ ,trail:·,extends:\#,nbsp:.
else
    set listchars=tab:>.,trail:.,extends:\#,nbsp:.
endif

(การเพิ่มเพื่อความสมบูรณ์ในกรณีที่ผู้อื่นพบว่ามีประโยชน์)


4

วิธีที่ง่ายที่สุดคือการทำ:set listซึ่งจะแสดงเป็นแท็บและจุดสิ้นสุดของบรรทัด^I$

ฉันชอบที่จะใช้แผนที่ที่โทร

:set invlist 

เพื่อสลับระหว่างการแสดงผลปกติและการแสดงรายการ

ตัวอย่างเช่น:

:nmap <leader>l :set invlist<cr>

สิ่งนี้ทำให้ฉันสามารถตรวจสอบได้อย่างรวดเร็วว่ามีปัญหาแท็บกับที่ว่างหรือไม่จากนั้นกลับไปที่จอแสดงผลปกติ

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