Bagaimana Menampilkan Karakter Tersembunyi di vim?

54

Bagaimana saya bisa mengkonfigurasi vim untuk menampilkan karakter tersembunyi seperti tab atau spasi SAJA saat karakter tersebut diketik? Saya tidak ingin tab dan / atau ruang diganti dengan karakter khusus seperti ">" atau "_" saat file ditulis.

dan0
sumber
1
Apakah Anda benar-benar membutuhkan ruang untuk ditampilkan? Solusi khasnya adalah menggunakan :set list. Itu bisa mendapatkan segalanya kecuali spasi.
Kris Harper

Jawaban:

64

Anda bisa menggunakan perintah

:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<
:set list

untuk menampilkan semua karakter yang bukan spasi putih. Jadi ruang adalah satu-satunya hal yang tidak muncul.

Jika Anda benar-benar membutuhkan spasi untuk ditandai, Anda harus mencoba sesuatu yang kurang bagus. Sesuatu seperti

:%s/ /█/g

Akan mengganti semua spasi dengan karakter blok. Maka Anda harus membatalkannya sebelum menulis. Anda dapat memetakan ulang perintah tulis Anda

cmap :w :%s/█/ /g<CR>:w

Hanya sebuah saran. Saya belum mencobanya.

Kris Harper
sumber
Terima kasih untuk bantuannya; saran Anda bekerja dengan sangat baik. Namun, saya perhatikan bahwa pada saat-saat ketika saya membuka file tertentu saya melihat "> ---" (menunjukkan tab). Apakah ada cara untuk membuatnya sehingga karakter tab hanya ditampilkan saat mengetik?
dan0
@ dan0 Maksud Anda hanya selama mode penyisipan? Saya tidak tahu Aku agak meragukannya. Anda bisa membuat beberapa fungsi pemetaan sehingga ketika Anda masuk ke mode insert, pertama kali memanggil :set listcharsperintah dan mengaturnya untuk apa-apa, lalu memanggilnya lagi ketika Anda meninggalkan mode insert. Tetapi saya tidak cukup tahu tentang peta untuk melakukan itu.
Kris Harper
@JonathanKomar "set nolist"
Vladislavs Dovgalecs
1
Menggunakan space:␣berfungsi dengan baik untuk saya: :set listchars=eol:$,tab:>-,trail:~,space:␣
loxaxs
15

Versi vim terbaru dapat menunjukkan spasi juga. (Dikonfirmasi pada vim 7.4.1689).

:set list
:set listchars=tab:→\ ,space:·,nbsp:␣,trail:•,eol:¶,precedes:«,extends:»
wisbucky
sumber
4

Dalam kasus saya, saya harus melawan nbsp ,

:set listchars=nbsp:☠,tab:▸␣
:set list

Anda juga dapat menggunakan ␣ alih-alih ☠

Berikut adalah contoh di mana konfigurasi vim di atas menyoroti spasi "tidak terlihat aneh" dan juga menyoroti tab (warna merah karena saya menggunakan plugin trailing-whitespace vim)

Sini

Andrey Arapov
sumber