Saya tidak dapat menemukan cara untuk membuat Vim menampilkan semua spasi putih sebagai karakter. Yang saya temukan adalah tentang tab, spasi tambahan, dll.
772
Saya tidak dapat menemukan cara untuk membuat Vim menampilkan semua spasi putih sebagai karakter. Yang saya temukan adalah tentang tab, spasi tambahan, dll.
:set list
. Itu tidak menjawab pertanyaan kami. (Kepada pendatang lain: respons mrucci di bawah ini membantu, meskipun bukan solusi yang nyata .)list
danlistchars
menganggap bahwa spasi langsung mengikuti tab. Akan hampir tidak terlihat dalam situasi ini. Saya setuju bahwa Anda dapat menangkap sebagian besar situasi, tetapi jika akan lebih baik memiliki sorotan yang tepat dari semua ruang.Jawaban:
Seperti yang orang lain katakan, Anda bisa menggunakannya
yang akan, dikombinasikan dengan
tampilkan karakter yang tidak terlihat.
Sekarang, tidak ada opsi eksplisit yang dapat Anda gunakan untuk menampilkan spasi putih, tetapi dalam listchars, Anda dapat mengatur karakter untuk ditampilkan untuk semua tapi spasi putih. Sebagai contoh, milik saya terlihat seperti ini
jadi, sekarang, setelah kamu gunakan
segala sesuatu yang tidak secara eksplisit ditampilkan sebagai sesuatu yang lain, kemudian, benar-benar, spasi putih tua.
Seperti biasa, untuk memahami cara
listchars
kerjanya, gunakan bantuan. Ini memberikan informasi hebat tentang karakter apa yang dapat ditampilkan (seperti ruang tambahan, misalnya) dan bagaimana melakukannya:Mungkin bermanfaat untuk menambahkan toggle sehingga Anda dapat melihat perubahan sedang mengedit dengan mudah (sumber: VIM: set list! Sebagai toggle di .vimrc ):
sumber
.vimrc
file, jadi cara cantik ini menampilkan karakter yang tidak terlihat dapat dengan mudah diaktifkan:set list
kapan saja (tanpa googling halaman ini lagi).Pada patch 7.4.710 Anda sekarang dapat mengatur karakter untuk ditampilkan di tempat ruang menggunakan listchars!
Jadi, untuk menampilkan SEMUA karakter spasi sebagai karakter, Anda dapat melakukan hal berikut:
Diskusi di milis: https://groups.google.com/forum/?fromgroups#!topic/vim_dev/pjmW6wOZW_Q
sumber
:help listchars
untuk memeriksa apakah "spasi" adalah opsi yang valid untuk "listchars". Jika tidak, perbarui vim Anda ke patch @brettanomyces yang ditentukan. Atau cukup biarkan "spasi" dari perintah yang ditetapkan jika Anda tidak ingin melihat spasi.space:·
), seperti MS Word, Notepad ++, dll.<C-K>.M
vim untuk·
. Lihat:h digraph
detailnya.:set list
untuk mengaktifkan.:set nolist
untuk menonaktifkan.sumber
: set list!
lebih baik :)Shift
dan!
keduanya lebih sulit untuk diketik daripadano
. Jika Anda meletakkannya di .vimrc Anda, saya setuju bahwa formulir exclam lebih mudah dibaca.:set list!
akan melakukannya tanpa perlu masuknolist
. Secara!
sederhana melakukan kebalikan dari apa pun yang saat ini ditetapkan. Saya menggunakan ini sepanjang waktu terutama ketika dengan:set paste!
. Saya benci menekan tombol panah untuk menemukan:set paste
atau:set nopaste
lolSaya pikir jawaban lain di sini lebih komprehensif, tetapi saya pikir saya akan membagikan trik yang biasanya saya gunakan untuk membedakan tab dan spasi secara visual:
Ini adalah aturan penyorotan sintaks untuk bahasa pemrograman Whitespace - tab ditampilkan dalam warna hijau dan spasi dalam warna merah. :)
Dapat dikombinasikan dengan
:set list
seperti yang disebutkan oleh banyak jawaban lain, meskipun tab kemudian akan ditampilkan sebagai ^ I tanpa higlight hijau, tetapi spasi akan ditampilkan dalam warna merah.sumber
:set list
akan menampilkan semua spasi putih sebagai karakter. Segala sesuatu kecuali ruang akan terlihat berbeda dari keadaan normalnya, yang berarti bahwa jika Anda masih melihat ruang lama yang polos, itu benar-benar ruang lama yang polos. :)sumber
:set nolist
!
di akhir:set list!
:se hls | /\_s
untuk ini. Mendapat segalanya sementaraset list
mengabaikan ruang. Mati lagi dengan:se nohls
. Detail tentang hal ini di posting ini: albertech.blogspot.com/2015/02/...Jika Anda mengatur:
dan kemudian melakukan pencarian spasi, setiap karakter spasi akan ditampilkan sebagai karakter garis bawah.
Anda dapat menggunakan perintah ini dalam fungsi praktis yang mengubah "menggarisbawahi" spasi.
Memetakan fungsi ke tombol cara pintas dengan:
NB: Tentukan fungsi dalam vimrc setelah colorscheme diatur.
sumber
Bergantung pada aturan sintaks Anda untuk buffer saat ini, sesuatu seperti ini bisa berfungsi:
Ini membutuhkan vim 7.3 dengan fitur + sembunyikan
Perbarui 10/24/2014 Untuk sedikit memperluas tentang itu. Tentu saja mungkin untuk menentukan beberapa penyorotan untuk karakter yang dikurung.
Anda dapat mengkonfigurasi, bagaimana penampilan karakter yang tersembunyi. Untuk menyoroti, Anda harus setidaknya sekali mengkonfigurasi kelompok penyorotan 'Sembunyikan' (Lihat bantuan di
:h hl-Conceal
Ini dapat dilakukan dalam skema warna Anda dan kemudian Anda tidak perlu mengkonfigurasi ulang lagi. Tetapi ini mempengaruhi semua karakter tersembunyi (misalnya jika Anda skrip sintaksis menyembunyikan beberapa item lagi, mereka akan ditampilkan sebagai karakter spasi putih Anda). Itu bisa terlihat seperti ini::hi Conceal ctermfg=7 ctermbg=NONE guifg=LightGrey guibg=NONE
Tampaknya ada kekhususan bahwa Vim tidak akan menyoroti spasi, jika skrip sintaksis menggunakan
skipwhite
kata kunci. Tidak akan ada jalan lain (mungkin ini akan diperbaiki, saya diposting patch )list
mode. Yang terbaru pada saat penulisan ini sepertinya adalah yang ini . (Ini berarti, Anda perlu membangun Vim Anda sendiri untuk menggunakan ini).conceallevel
danconcealcursor
merupakan jendela lokal. Itu berarti mereka bisa berbeda di windows yang berbeda (dan mungkin juga akan diatur oleh plugin tipe file atau skrip plugin lainnya).BufWinEnter
atau mungkin jugaSyntax
atau bahkanFileType
autocommand. (Saya belum menguji yang mana yang benar-benar berfungsi).Dua item terakhir berarti, Anda harus mengatur beberapa perintah otomatis yang mengatur ulang aturan sintaks dan opsi yang sesuai. Untuk yang pertama, orang mungkin ingin mengatur sorotan menggunakan perintah otomatis
ColorScheme
(sehingga karakter tersembunyi selalu terlihat sama, terlepas dari apa skema warna sebenarnya mengatur). Untuk solusi lengkap, lihat jawaban romainl, yang seharusnya memberi Anda permulaan. Jika Anda mengatur suatu fungsi, Anda dapat dengan mudah mengatur perintah sakelar untuk mengaktifkan atau menonaktifkan menampilkan Sorotan khusus.Pembaruan 10/26/2014 Saya membuat plugin dari pertanyaan ini.
Pembaruan 04/22/2015 Patch telah disertakan dalam Vim yang memungkinkan ini menggunakan
list
opsi. Cukup aturset list listchars+=space:␣
Ini berfungsi pada Vim 7.4.711sumber
.vimrc
?Æ
adalah pilihan karakter yang aneh untuk ini, mengapa tidak·
?Saya menggunakan ini
untuk menyorot spasi putih. Ia mencari semua ruang putih, dan kemudian mengaktifkan highlight untuk membuatnya muncul. Namun, itu tidak mencetak karakter khusus.
sumber
nnoremap <leader><space> :noh<cr>
)Jika dengan spasi putih yang Anda maksud adalah karakter '', saran saya hanya akan menjadi pencarian / ganti. Seperti yang lain mengisyaratkan,
set list
perubahan non cetak karakter untuk menulis karakter yang terlihat yang dikonfigurasi dalamlistchars
.Untuk secara eksplisit menunjukkan spasi sebagai beberapa karakter lain, sesuatu yang mirip dengan di bawah ini harus melakukan trik:
:%s/ /█/g
Lalu, batalkan perubahan untuk kembali lagi.
(untuk mendapatkan █ aku menekan urutan tombol yang tepat ini: :%s/ /CTRL-KFB/g)
sumber
:set list
saya, mengubah karakter yang terlihat ('spasi') menjadi _non priting_ (??) satu. Saya bertanya-tanya apakah seseorang dapat menggunakan pertandingan dalam ini, mis.:match MyBlackBlockChar "appropriate_regex
Yang seharusnya melakukan trik, bukan?:%s/\s/█/g
untuk semua spasi putih. Juga,:set hlsearch
plus:&s/\s//gn
mungkin bermanfaat.Untuk menyorot spasi, cukup cari:
/ <spasi>
Catatan:
Untuk menyorot spasi & tab:
/ [<spasi> <tab>]
Cara cepat untuk menghapus highlight adalah dengan mencari yang lain: / asdf
(cukup ketik daftar pendek karakter acak)
sumber
/<space>
vs/\s
. Saya pikir ini tidak jelas dan lebih cepat untuk menggunakan saran di sini.Kode di bawah ini didasarkan pada jawaban Christian Brabandt dan tampaknya melakukan apa yang diinginkan OP:
Tambahkan garis-garis itu ke Anda
~/.vimrc
dan mulai sesi Vim baru untuk melihat keajaiban yang masih tidak sempurna terjadi.Jangan ragu untuk mengedit warna default dan menyembunyikan karakter.
Peringatan: sesuatu dalam
*FuncBody
grup sintaksis dalam beberapa bahasa mencegah titik tengah ditampilkan. Saya belum tahu (belum?) Bagaimana membuat solusi itu lebih dapat diandalkan.sumber
skipwhite
argumen dalam aturan sintaksis, yang mencegah agar grup sintaksis tidak cocok (walaupun harus dibiarkan terkandung dalam semua grup).Saya merasa frustrasi dengan semua jawaban lain untuk pertanyaan ini, karena tidak ada yang menyoroti karakter ruang dengan cara yang bermanfaat. Menampilkan spasi sebagai karakter akan sangat membantu untuk bahasa yang diformat spasi, di mana mencampur tab dan spasi berbahaya.
Solusi saya adalah menampilkan tab dan menggarisbawahi banyak spasi. Ini meminjam dari jawaban mrucci dan tutorial ini . Karena menggunakan penyorotan sintaks, ia persisten:
Menggunakan ini, tab ditampilkan sebagai
|
dan spasi sebagai_
, yang membuatnya sangat mudah untuk mengetahui kapan saya mencampur gaya kode.Satu-satunya downside yang saya temukan adalah bahwa potongan ini tidak menyesuaikan warna latar belakang agar sesuai dengan konteksnya (seperti dalam komentar).
sumber
semua jawaban di atas mencoba membuat ruang terlihat dari dalam vim. Jika Anda benar-benar bersikeras memiliki ruang yang terlihat sebagai titik, ada pendekatan lain ...
Jika tidak dapat dilakukan dalam vim, ubah font Anda seluruhnya. Saya menyalin font Ubuntu One Mono dan mengeditnya menggunakan FontForge. Ingatlah untuk mengubah nama lengkap font, keluarga, keluarga pilihan, kompatibel penuh (di FontFoge ini di bawah Nama TTF di info font), untuk menjadikannya sebagai font terpisah. Cukup edit karakter spasi untuk memiliki titik di tengah dan simpan font ke ~ / .fonts Sekarang Anda dapat menggunakannya untuk gvim atau seluruh terminal ... Saya menyalin "!" karakter, menghapus garis dan memindahkan titik ke tengah. Butuh sedikit lebih dari 5 menit ...
Catatan: mengubah karakter spasi (0x20) menghasilkan ketidaknyamanan memiliki titik pada seluruh layar vim ... (tetapi itu akan memisahkan spasi dari tab ...)
sumber
Saya tidak menemukan apa yang saya inginkan dari jawaban yang ada. Kode di bawah ini akan menyoroti semua spasi tambahan merah terang. Cukup tambahkan berikut ini ke
.vimrc
sumber
menghindari bit "Anda harus mencari spasi untuk membuatnya muncul" tetapi afaict tidak dapat dikonfigurasi untuk melakukan hal-hal yang tidak menarik ke spasi. CursorLine dapat berupa grup hilighting dan dalam tema defaultnya adalah garis bawah yang jelas.
sumber
Saya suka menggunakan karakter khusus untuk menunjukkan spasi, lebih jelas. Bahkan peta untuk beralih adalah fitur utama, untuk pemeriksaan cepat.
Anda dapat menemukan fitur ini dalam skrip vim lama yang tidak diperbarui sejak 2004:
vim-scripts/[email protected]
Berkat memproyeksikan vim-scripts dan vundle Anda dapat menghidupkan kembali plugin ini
vim-scripts / cream-showinvisibles @ github
Bahkan lebih baik, dua sen saya pada ini adalah menambahkan pintasan yang dapat dikonfigurasi (bukan yang telah ditentukan F4)
jadi tambahkan ini ke ~ / .vimrc
instal plugin di vim
dan itu dia
sumber
Untuk mencakup karakter spasi Unicode:
Hasil:
")
│
" (dua karakter: pipa panjang dan kemudian ruang ordinal; mereka berwarna abu-abu dalamcolorscheme murphy
)·
" (satu karakter; warnanya abu-abucolorscheme murphy
)" merah
sumber
set listchars=tab:»\ ,space:·
referensi Anda.gvim
danvim
.Anda bisa menggunakannya
untuk benar-benar melihat struktur garis. Anda akan melihat tab dan baris baru secara eksplisit. Ketika Anda melihat kosong, itu benar-benar kosong.
sumber
sorot pencarian
dalam
.vimrc
hal itudan mencari tab ruang dan carriage return
atau cari semua karakter spasi putih
pencarian semua karakter spasi bukan putih (karakter spasi tidak ditampilkan, sehingga Anda melihat karakter spasi putih di antara kata-kata, tetapi bukan karakter spasi spasi tambahan)
untuk menampilkan semua karakter spasi spasi putih - di akhir baris
sumber
Simpan peretasan itu di .vimrc sebagai komentar, jadi di shell, cukup:
sumber
:se
sudah cukup,:set
tidak diperlukan.sumber
Anda juga dapat menyorot spasi (mengganti spasi dengan blok):
(sebelum menulis batalkan)
sumber
Menambahkan ini ke .vimrc saya berfungsi untuk saya. Pastikan Anda tidak memiliki hal lain yang bertentangan ..
sumber