ฉันจะกำหนดค่ากลุ่มเพื่อแสดงอักขระที่ซ่อนอยู่เช่นแท็บหรือช่องว่างเฉพาะในขณะที่พิมพ์อักขระเหล่านั้นได้อย่างไร ฉันไม่ต้องการให้แท็บและ / หรือช่องว่างถูกแทนที่ด้วยอักขระพิเศษเช่น ">" หรือ "_" เมื่อเขียนไฟล์
ฉันจะกำหนดค่ากลุ่มเพื่อแสดงอักขระที่ซ่อนอยู่เช่นแท็บหรือช่องว่างเฉพาะในขณะที่พิมพ์อักขระเหล่านั้นได้อย่างไร ฉันไม่ต้องการให้แท็บและ / หรือช่องว่างถูกแทนที่ด้วยอักขระพิเศษเช่น ">" หรือ "_" เมื่อเขียนไฟล์
คำตอบ:
คุณสามารถใช้คำสั่ง
:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<
:set list
เพื่อแสดงตัวละครทั้งหมดที่ไม่ได้เป็นช่องว่าง ดังนั้นช่องว่างเป็นสิ่งเดียวที่ไม่ปรากฏ
หากคุณต้องการช่องว่างที่จะทำเครื่องหมายเช่นกันคุณจะต้องลองทำสิ่งที่ไม่ค่อยดี สิ่งที่ต้องการ
:%s/ /█/g
จะแทนที่ช่องว่างทั้งหมดด้วยอักขระบล็อก จากนั้นคุณต้องยกเลิกก่อนที่จะเขียน คุณสามารถแมปคำสั่งเขียนของคุณใหม่ได้
cmap :w :%s/█/ /g<CR>:w
เพียงข้อเสนอแนะ ฉันไม่ได้ลองเลย
:set listchars
คำสั่งก่อนและตั้งค่าเป็นไม่มีอะไรจากนั้นเรียกมันอีกครั้งเมื่อคุณออกจากโหมดแทรก แต่ฉันไม่รู้เกี่ยวกับแผนที่ที่จะทำ
space:␣
งานได้ดีสำหรับฉัน: :set listchars=eol:$,tab:>-,trail:~,space:␣
เวอร์ชันล่าสุดของ vim สามารถแสดงช่องว่างได้เช่นกัน (ยืนยันในกลุ่ม 7.4.1689)
:set list
:set listchars=tab:→\ ,space:·,nbsp:␣,trail:•,eol:¶,precedes:«,extends:»
ในกรณีของฉันฉันต้องต่อสู้nbsp ,
:set listchars=nbsp:☠,tab:▸␣
:set list
คุณสามารถใช้␣แทน☠
นี่คือตัวอย่างที่การกำหนดค่า vim ข้างบนเน้นช่องว่าง "มองไม่เห็นที่แปลก" และนอกจากนี้ยังเน้นแถบ(สีแดงเพราะฉันใช้ปลั๊กอินต่อท้าย - ช่องว่าง whitespace)
:set list
การแก้ปัญหาโดยทั่วไปคือการใช้ ที่สามารถรับได้ทุกอย่างยกเว้นที่ว่าง