Отображение заменяющих символов для неразрывного пробела в Vim

Отображение заменяющих символов для неразрывного пробела в Vim

Мне бы хотелось отображать нестандартные пробелы в Vim, чтобы можно было отличить неразрывный пробел (U+00A0) от узкого неразрывного пробела (U+202F), используя, например, заменяющие символы Unicode, такие как ␣ (U+2423) и ⸤ (U+2E24) соответственно.

После изучения вопроса лучшее, что я смог сделать, — это отобразить один и тот же символ замены для обоих типов неразрывных пробелов с помощью:

:set list
:set listchars=tab:▸\ ,eol:¬,trail:\ ,nbsp:␣

Таким образом, параметр listchars nbsp не различает стандартный и узкий неразрывный пробел (и, кстати, для правильной работы ему также необходим параметр trail).

Есть ли какое-нибудь решение этой проблемы?

решение1

Вы можете использовать сопоставление синтаксиса и conceal:

set conceallevel=1
syn match NBSP '\%xa0' conceal cchar=␣
syn match NarrowNBSP '\%u202F' conceal cchar=⸤

Эффект:

введите описание изображения здесь

Вы также можете использовать set conceallevel=2.

concealЗамены не отображаются в строке, на которой находится курсор. Для этого набораconcealcursor:

set concealcursor=n

Связанный контент