เมื่อฉันทำงานกับไฟล์ในไพ ธ อนบางครั้งฉันก็ผิดแท็บสำหรับช่องว่างและในทางกลับกัน มีวิธีที่ฉันสามารถให้ Vim แสดงตัวอักษรสำหรับแท็บแทนที่จะเป็นแท็บได้หรือไม่?
:h vim-faq
ยากที่จะจดจำแท็ก/invisible
:h faq-19.8
เมื่อฉันทำงานกับไฟล์ในไพ ธ อนบางครั้งฉันก็ผิดแท็บสำหรับช่องว่างและในทางกลับกัน มีวิธีที่ฉันสามารถให้ Vim แสดงตัวอักษรสำหรับแท็บแทนที่จะเป็นแท็บได้หรือไม่?
:h vim-faq
ยากที่จะจดจำแท็ก/invisible
:h faq-19.8
คำตอบ:
ใช่ใช้ listchars:
set list
set listchars=tab:>-
หากคุณใส่สองบรรทัดนี้ใน. vimrc ของคุณแท็บจะปรากฏขึ้นตาม>
ตำแหน่งเริ่มต้นและ-
ตลอดจนแท็บที่เหลือ
(Sidenote: listchars ยังสามารถแสดงช่องว่างต่อท้ายด้วยtrail:x
(แทนที่x
ด้วยอักขระที่คุณต้องการใช้สำหรับช่องว่างต่อท้าย) ซึ่งมีประโยชน์เช่นกัน)
set listchars=tab:!·,trail:·
IMHO ·
นั้นชัดเจนกว่า-
... คุณจำเป็นต้องใช้ Vim เวอร์ชันล่าสุดเพื่อให้สามารถใช้งานได้ btw (ไม่แน่ใจว่าจะใช้แบบไหนฉันคิดว่า 7.3.x)
▸
>
ขณะนี้ฉันเห็นพื้นที่สีขาวต่อท้ายด้วยการทำเครื่องหมาย eol (แม้ว่าฉันอาจลองด้านบน) การตั้งค่าของฉันคือ: set listchars=eol:¬,tab:▸\
และ
คำตอบพื้นฐานซึ่งเป็นสาเหตุของแท็บที่จะแสดงเป็น: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:⎵
eol
ฉันใช้U + 23CE RETURN SYMBOLtrail
ฉันใช้U + 2420 สัญลักษณ์สำหรับพื้นที่nbsp
ฉันใช้U + 23B5 BOTTOM SQUARE BRACKETอักขระเหล่านี้มีความโดดเด่นมากจนแทบไม่ปรากฏในข้อความเอกสาร
ในการพิมพ์ตัวอักษรพิเศษเหล่านี้เป็นของคุณvimrc
ชนิดขณะที่อยู่ในโหมดแทรกตามที่อธิบายไว้ในCtrl-vu23CE
:help utf-8-typing
set lcs=tab:├─
สำหรับการใช้งานเป็นครั้งคราวหนึ่งแท็บสามารถไฮไลต์แท็บทั้งหมดในเอกสารโดยใช้/
คำสั่งค้นหาต่อไปนี้:
/\t
หากต้องการลบไฮไลต์เพียงพิมพ์:noh
ที่สั้น:nohlsearch
- ไม่มีแสงสูง
" Highlight tabs as errors.
" https://vi.stackexchange.com/a/9353/3168
match Error /\t/
สำหรับข้อมูลเพิ่มเติมของคำสั่งที่ไฮไลต์เหล่านี้มีประโยชน์ -including รวมกับช่องว่างต่อท้ายและทำให้ permanent- นี้ดูวิกิพีเดียเป็นกลุ่ม
:match Error /\t/
เพื่อไฮไลต์แท็บ (หรือรูปแบบอื่น ๆ สำหรับเรื่องนั้น) ได้อย่างอิสระจากการลงทะเบียนการค้นหาและ hlsearch (พิมพ์:match
เพื่อล้าง)
ฉันชอบใช้ปลั๊กอินindentLine เป็นการส่วนตัวซึ่งจะแสดงเส้นแนวตั้งที่ระดับการเยื้อง
มันเป็นความช่วยเหลือที่ดีโดยเฉพาะอย่างยิ่งในงูหลามที่การเยื้องเป็นสิ่งสำคัญ
เหนือสิ่งอื่นใดมันมีคำสั่งสลับซึ่งสามารถแมปเข้ากับการรวมคีย์เพื่อให้คุณสามารถปิดได้เมื่อคุณไม่ต้องการ
คุณอาจต้องการแสดงแท็บต่างกันในเทอร์มินัลปกติและ gvim
set list!
if has('gui_running')
set listchars=tab:▶\ ,trail:·,extends:\#,nbsp:.
else
set listchars=tab:>.,trail:.,extends:\#,nbsp:.
endif
(การเพิ่มเพื่อความสมบูรณ์ในกรณีที่ผู้อื่นพบว่ามีประโยชน์)
วิธีที่ง่ายที่สุดคือการทำ:set list
ซึ่งจะแสดงเป็นแท็บและจุดสิ้นสุดของบรรทัด^I
$
ฉันชอบที่จะใช้แผนที่ที่โทร
:set invlist
เพื่อสลับระหว่างการแสดงผลปกติและการแสดงรายการ
ตัวอย่างเช่น:
:nmap <leader>l :set invlist<cr>
สิ่งนี้ทำให้ฉันสามารถตรวจสอบได้อย่างรวดเร็วว่ามีปัญหาแท็บกับที่ว่างหรือไม่จากนั้นกลับไปที่จอแสดงผลปกติ
retab
ทุกครั้งที่คุณบันทึกไฟล์