Saya mencoba membuat Vim menyoroti karakter non-ASCII. Apakah ada pengaturan yang tersedia, pola pencarian regex, atau plugin untuk melakukannya?
Menggunakan rentang dalam []
kelas karakter dalam pencarian Anda, Anda harus dapat mengecualikan rentang karakter heksadesimal ASCII, oleh karena itu menyorot (dengan asumsi Anda telah hlsearch
mengaktifkan) semua karakter lain yang berada di luar rentang ASCII:
/[^\x00-\x7F]
Ini akan melakukan kecocokan negatif (via [^]
) untuk karakter antara ASCII 0x00
dan ASCII 0x7F
(0-127), dan tampaknya berfungsi dalam tes sederhana saya. Untuk ASCII yang diperluas, tentu saja, rentangkan rentang hingga \xFF
alih-alih \x7F
menggunakan /[^\x00-\xFF]
.
Anda juga dapat mengekspresikannya dalam desimal melalui \d
:
/[^\d0-\d127]
Jika Anda membutuhkan sesuatu yang lebih spesifik, seperti pengecualian karakter yang tidak dapat dicetak, Anda perlu menambahkan rentang tersebut ke dalam kelas karakter []
.
/[^\d0-\d127]
Ya, ada fitur asli untuk melakukan penyorotan untuk string yang cocok. Di dalam Vim, lakukan:
syn-match
mendefinisikan string yang cocok masuk dalam grup.highlight
mendefinisikan warna yang digunakan oleh grup. Pikirkan saja tentang penyorotan sintaks untuk file vimrc Anda.Jadi Anda dapat menggunakan perintah di bawah ini dalam file .vimrc Anda:
sumber
:
di depan di vimrc Anda.termbg
sepertinya tidak menjadi perintah hukum dalam VIM 7.3 sebagaimana diinstal pada Ubuntu Server 12.10.termbg
tampaknya tidak menjadi parameter hukum dalam VIM 7.3 yang diinstal pada Ubuntu Server 12.10.term
tidak dapat memiliki warna latar belakang, sedangkan terminal warnacterm
dapat.Untuk orang lain (mulai sekarang yang kurang beruntung) yang berakhir di sini melalui mesin pencari dan tidak dapat melakukan penyorotan karakter non-ASCII, coba ini (masukkan ini ke dalam .vimrc Anda):
Ini memiliki manfaat tambahan karena tidak bertabrakan dengan definisi sintaksis biasa (tipe file [ekstensi file]).
sumber
E319: Sorry, the command is not available in this version: au BufReadPost * syntax match nonascii "[^\u0000-\u007F]" Press ENTER or type command to continue
Linux mint 17.3containedin=ALL
ke akhir baris terakhir, membuatnyaau BufReadPost * syntax match nonascii "[^\u0000-\u007F]" containedin=ALL
. Saya menemukan gangguan layak (ketika unicode diperbolehkan), jawaban asli di sini tidak menangkap hal-hal seperti kode non-ascii di dalamif
pernyataan ...autocmd BufRead ....
dalam autogroup di vim, kecuali Anda memiliki alasan yang sangat baik untuk tidak ...Regex ini juga berfungsi. Itu adalah hit google pertama untuk "vim remove non-ascii karakter" dari briceolion.com dan dengan
:set hlsearch
akan menyorot:sumber
:%s/[^[:alnum:][:punct:][:space:]]//gc
yang paling utama, lalu diganti.Jika Anda tertarik juga pada karakter yang tidak dapat dicetak, gunakan yang ini:
/[^\x00-\xff]/
Saya menggunakannya dalam suatu fungsi:
sumber
enc
kefenc
. Saya mengubah penyandian karena penyandian default saya adalah (pada tahun 2013) latin1. Fungsi tidak menyoroti karakter yang tidak dapat dicetak jika set karakter latin1. Juga lihat sorotan Anda harus memiliki kunciERROR
dalam file sintaks warna Anda. Ini milik saya:hi Error guifg=Black guibg=Orange
Berdasarkan jawaban lain pada topik ini dan jawaban yang saya dapatkan di sini saya telah menambahkan ini ke saya
.vimrc
, sehingga saya dapat mengontrol penyorotan non-ascii dengan mengetik<C-w>1
. Itu juga menunjukkan komentar di dalam, meskipun Anda perlu menambahkan grup komentar untuk setiap sintaks file yang akan Anda gunakan. Artinya, jika Anda akan mengedit file zsh, Anda harus menambahkannyazshComment
ke barisjika tidak, ia tidak akan menampilkan karakter non-ascii (Anda juga dapat mengatur containin = ALL jika Anda ingin memastikan untuk menampilkan karakter non-ascii di semua grup). Untuk memeriksa bagaimana komentar dipanggil pada jenis file yang berbeda, buka file dari jenis yang diinginkan dan masukkan
:sy
pada vim, kemudian cari pada item sintaks untuk komentar.sumber
Entah bagaimana, tidak ada jawaban di atas yang berfungsi untuk saya.
Jadi saya menggunakan
:1,$ s/[^0-9a-zA-Z,-_\.]//g
Itu membuat sebagian besar karakter saya tertarik.
sumber
Seseorang sudah menjawab pertanyaan itu. Namun, untuk orang lain yang masih mengalami masalah, berikut ini adalah solusi lain untuk menyoroti karakter non-ascii dalam komentar (atau grup sintaksis apa pun dalam masalah ini). Ini bukan yang terbaik, tapi ini perbaikan sementara.
Seseorang dapat mencoba:
Ini memiliki bagian campuran dari solusi lain. Anda dapat menghapus
contained
, tetapi, dari dokumentasi, mungkin ada potensi masalah berulang itu sendiri (seperti yang saya mengerti). Untuk melihat pola yang didefinisikan lainnya,syn-contains
bagian akan memuatnya.Masalah yang direplikasi dari: Atur item ke prioritas sorotan yang lebih tinggi pada vim
sumber