Penyorotan ini adalah IMHO lebih mudah diimplementasikan di emulator terminal daripada di shell. Dan sebagai keuntungan Anda mendapatkan penyorotan independen dari shell -- jadi bahkan bekerja dengan less
dll.Karena Anda baik-baik saja dengan mengganti shell, saya kira Anda juga baik-baik saja dengan beralih ke URxVt.
Sehubungan dengan ekstensi perl urxvt-perls dimungkinkan untuk membuat URL dll. dapat diklik. Namun kita dapat menyalahgunakan fitur ini hanya untuk menggarisbawahi ruang yang tidak dapat dipisahkan.
Konfigurasi dilakukan di ~/.Xdefaults
:
URxvt.perl-ext: default,matcher
URxvt.matcher.button: 2
URxvt.matcher.pattern.0: (\\240)
URxvt.matcher.launcher.0: /bin/true
- baris 1 mengaktifkan ekstensi yang sesuai
- baris 2 mengonfigurasi penggunaan tombol tengah mouse untuk mengeklik ,,hyperlink''
- baris 3 mendefinisikan regex agar cocok, di sini setiap ruang yang tidak dapat dipecahkan;
A0 (hex) = 240 (oct)
- baris 4 mendefinisikan tindakan, dalam kasus Anda, Anda tidak ingin membuka browser atau program apa pun, jadi
/bin/true
harus baik-baik saja
Muat ulang ~/.Xdefaults
dengan me-restart server X (ini mungkin berlebihan, tapi saya tidak yakin apakah xrdb ~/.Xdefaults
sudah cukup...) dan Anda mendapatkan hasil yang diinginkan. Dengan kaca pembesar bahkan dimungkinkan untuk membedakan antara ruang yang tidak dapat dipecahkan dengan garis bawah (perhatikan pergeseran sebesar 1 piksel) ;)
:
Berikut ini adalah semacam bukti konsep untuk solusi "backend". Ketahuilah, ini akan merusak banyak hal, yaitu program interaktif seperti man
, less
dll. (vim
mengeluh tapi masih bekerja). Pendekatan ini diposting oleh Atom Smasher di zsh-users
mailinglist pada Sabtu, 16 Mei 2009 untuk mewarnai STDERR
. Saya mengadopsinya sesuai kebutuhan Anda:
# ## highlight_nbs.zsh ##
zmodload zsh/terminfo zsh/system
autoload colors is-at-least
if [[ "${terminfo[colors]}" -ge 8 ]] { colors }
highlight_nbs() {
while sysread line
do
syswrite "${line//$'\xC2\xA0'/${bg[red]} ${terminfo[sgr0]}}"
done
}
precmd() { sleep 0 }
## i'm not sure exactly how far back it's safe to go with this
## 4.3.4 works; 4.2.1 hangs.
is-at-least 4.3.4 && exec > >(highlight_nbs)
Bagian yang sulit adalah exec > >(highlight_nbs)
yang memproses keluaran lengkap dari shell pengganti melalui highlight_nbs
fungsi. precmd
definisi diperlukan untuk menghindari kondisi balapan, jika tidak prompt baru dicetak sebelum output sebenarnya dari perintah yang dieksekusi.
Ini demonya: