İmlecin yanıp sönmesinin önlenmesi


22

İmleci blinkingbir TTY'deyken nasıl durdurabilirim ? (veya başka bir yerde).

BONUS Hemen hemen her yerde imlecin yanıp sönmesini durduran evrensel bir ayar için işaret eder.

Yanıtlar:


17

Bu, imleç olarak size katı sarı bir blok (yanıp sönmeyen) verir:

echo -n -e '\e[?17;14;224c'

Daha fazla bilgi için bu referansları inceleyin: Linuxgazette ve EmacsWiki ile dosya /usr/src/linux/Documentation/VGA-softcursor.txt(sisteminizde varsa)


vim kullanana kadar bu benim için çalışıyor, sonra imleç çıkınca tekrar yanıp sönüyor :(
mulllhausen 28:13

Ve bu size yanıp echo -e '\033[?16;0;224c'
Utku

thx, son sayıyı (224) tam beyaz bir blok elde etmek için 244 olarak değiştirebilirim :)

Bunun, Linux Linux'ta 5.0.11 çalıştıran sistemim üzerinde hiçbir etkisi yok. Linux
S.Goswami,

26

Terminallerde yanıp sönen imleci kapatmak için standart bir kontrol sırası vardır .

printf '\033[?12l'

Ancak birçok terminal bu ayarı uygulamaz, bu yüzden okumaya devam edin.

Yüksek görünürlük, normal görünürlük ve görünmezlik arasında imleç görünürlüğünü değiştirmek için daha yaygın olarak uygulanan standart bir terminal ayarı vardır . Bazı terminaller normal ve yüksek arasında bir fark yaratmaz ve birinin diğerinin yanıp sönmeyeceğinin veya açmayacağının garantisi yoktur. In terminfo'ya , yayarlar cvvis, cnormya civisdize (örneğin tput cvvis). İlgili termcap girişleri vardır vs, veve vi.

Bu ayar bir terminal sıfırlama işlemine dayanamayacağından, birçok tam ekran uygulamasının başlatılmasında hayatta kalamayacağını görebilirsiniz. Terminalinizin sıfırlama dizisine imleç konfigürasyon değiştirme dizisini ekleyerek bu zorluğun üstesinden gelebilirsiniz.

  • Ncurses kullanan terminfo tabanlı bir sistemde, terminalinizin terminfo ayarlarını bir dosyaya kaydedin infocmp >>~/etc/terminfo.txt. Değiştirmeye açıklamasını düzenleyin rs1yerine örneğin (temel sıfırlama) dizisi rs1=\Ecile rs1=\Ec\E[?12l. Bazı program ve ayarlarda, rs2(tam sıfırlamayı) da değiştirmeniz gerekebilir . Sonra terminfo açıklamasını ile derleyin tic ~/etc/terminfo.txt(bu, dizinin altına yazar $TERMINFOveya ~/.terminfoayarlanmamışsa).
  • Termcap tabanlı bir sistemde, termcap ayarlarınızı termcap veritabanınızdan alın (genellikle /etc/termcap). Değiştir is(temel reset) ve rs, örneğin ayarlarınızı eklemek için (tam sıfırlama) dizileri :is=\Ec\E[?12l:. Set TERMCAPDüzenlenen değere ortam değişkeni (başlangıç ve ile biten :).

Bazı terminaller ve diğer uygulamalar size daha fazla seçenek sunar:

  • Xterm imleç yanıp sönme eğer cursorBlinkkaynak olarak ayarlanır trueveya -bcseçenek komut satırında geçirilir. Göz kırpma hızı cursorOnTimeve cursorOffTimekaynakları aracılığıyla özelleştirilebilir .
  • Diğer bazı GUI terminal emülatörleri imleci yanıp sönebilir; yapılandırma iletişim kutularını işaretleyin.
  • Linux PC (VGA) konsol imleç ayarları bir numarası vardır; bunların tam anlamı ve uygulanabilirliği, temel VGA uygulamasına (Linux çerçeve veya ekran kartı) bağlıdır. Varsayılan imleciniz yanıp sönüyorsa, donanım imlecini kapatmayı ve yazılım imlecini aşağıdaki gibi bir şeyle açmayı deneyin printf '\033[17;127?c'(ilk parametre 17 size yazılım imlecini donanım imleci olmadan verir ve ikinci parametre 127 olarak ayarlanmışsa esasen ters video yapar). Terminal sıfırlama ile ilgili yukarıya bakın.
  • In Emacs , M-x blink-cursor-modeimleç en yanıp geçiş yapar. Put (blink-cursor-mode 0)Sepetinde ~/.emacskapatmak için. Bu genel bir ayardır ve bir metin terminalinde geçerli değildir.

Ayrıca bakınız Lessur , Tk, Gtk (Gnome), Qt (KDE), Firefox ve diğerlerinde yanıp sönmenin nasıl kapatılacağı ile ilgili Juri Linkov (Jurta) 'nın Yanıp Sönme Yok sayfası .


14

Kök izinleriniz varsa bunu daha kolay buldum:

~$ echo 0 > /sys/class/graphics/fbcon/cursor_blink

/etc/rc.localArch Linux için olduğu gibi makinenin başlangıç ​​komut dosyasına koydum .


5

Linux tty'de kaçış dizisini "\e[?48;0;64"veya ne istersen kullanabilirsiniz, ancak bu tmux / vim'de çalışmaz. Tmux / Vim, başlangıçta varsayılan olarak a içeren bir "cnorm" komutu verir "\e[?0c". Bunun, yukarıdaki ayarın etkilerini geri aldığını görebilirsiniz. TUI uygulamalarının imleci tercihinize göre sıfırlaması için normalliği yukarıdaki sıraya göre değiştirmeniz gerekir. Gilles bu konuda daha fazla bilgi ancak hızlı bir düzeltme arıyorsanız, şunu deneyin:

infocmp linux > /tmp/linux-terminfo
# Replace the last escape sequence here with your colors and settings
sed -i 's/cnorm=\\E\[?25h\\E\[?0c/cnorm=\\E[?25h\\E?48;0;64c/' /tmp/linux-terminfo
tic /tmp/linux-terminfo

Son komut, ~/.terminfoeğer tmux server / vim'i yeniden başlatırsanız, otomatik olarak alınması gereken yeni terimleri üretecektir .


3

Koymak

\ 033 [17,? 0; 127c

PS1 değişkeninize, sürekli yanıp sönmeyi keseceksiniz.

ÖRNEĞİN:

dışa aktarma PS1 = '\ 033 [? 17; 0; 127c \ u: \ w \ $'


1
Bu (en azından benim için) terminal hattı kopmalarını vidalar (çevrimiçi taşma). Köşeli parantez kullanın, kaçtı: Örneğin BLUEBOXNOBLINK="\033[?17;0;60c", sonraPS1="\[$BLUEBOXNOBLINK\]\[$BROWN\]\u \[$CYAN\]\W: \[$NC\]"
Emanuel Berg

0
sudo cp /etc/issue /etc/issue.tmp
setterm -cursor off | sudo tee /etc/issue
cat /etc/issue.tmp | sudo tee --append /etc/issue
sudo rm /etc/issue.tmp
sudo reboot

Harika bir çözüm ve yazar çok fazla açıklama yapmayı unutmadıysa muhtemelen çok fazla oy aldı ... :-)
peterh, Monica

1
-cursor offİstenilen şey tam olarak değil , imleci ortadan kaldırır ... setterm -blink offdaha umut verici görünüyor, ama gerçek imleci değil, metni etkiliyor.
mr.spuratic

setterm -cursor off; setterm -cursor onBurada çalışıyor, ancak kabul edilemez bir geçici çözüm
Thor

0

Koydum

echo 0 > /sys/class/graphics/fbcon/cursor_blink

/etc/rc.local içinde ve çevrimiçi talimatları kullanarak bir systemd servisi oluşturdu. Ancak, bazen açılıştan sonra imlecin hala yanıp söndüğünü farkettim. Modern bir sistemd sistemde sysfs ile yanıp sönen imleci kalıcı olarak kapatmanın doğru yolunu bilmek iyi olurdu, kimsenin herhangi bir ipucu var mı? Bazı dağıtımlarda /etc/sysfs.conf var ama Arch kullanıyorum ve bu dosyayı sysfsutils veya başka bir yerde bulamıyorum.

Geçici bir düzeltme olarak aşağıdaki komutu koştum

sudo zsh -c 'echo -n "\033[?17;0;255c" >> /etc/issue'

Bazı deneyler, sonunda '255c' nin yukarıda listelenen '127c' den daha iyi çalıştığını gösterdi, gri imleç yerine beyaz bir renk üretti.


0

Linux konsolu için:

Alternatif 1

Dosyanızdaki satırlara -I "\033[?17;0;255c"seçenek ekleyin . Böyle yaparak:getty/etc/inittab

  1. /etc/inittabbir metin editörü ile dosyayı. İhtiva çizgiler olmalıdır gettyya agettyveya benzer. Bir örnek:

    tty1::respawn:/sbin/getty 38400 tty1
    
  2. -I "\033[?17;0;255c"Her gettysatıra ekleyin . Bir örnek olarak, ekledikten sonra -I "\033[?17;0;255c", gettysıra olmazdı Yukarıdaki satır aşağıdaki gibidir:

    tty1::respawn:/sbin/getty -I "\033[?17;0;255c" 38400 tty1
    
  3. Sistemi yeniden başlatın ya da alternatif olarak tüm gettyişlemleri sonlandırın.

Alternatif 2

Daha iyi bir alternatif koymaktır ESC[?17;0;255ciçinde /etc/issueyerine koyma, gettyçizgileri. Bunu kullanarak yapmak viaşağıdaki gibidir:

  1. /etc/issueKullanarak açın vi.
  2. /etc/issueDosyanın herhangi bir yerinde ekleme moduna girin.
  3. Ekleme modundayken ^V(yani Ctrlv) düğmesine ve ardından düğmesine basın Esc. Kaçış karakteri şimdi eklenmelidir.
  4. Şimdi, kalan karakterleri ekleyin [?17;0;255c.

Alternatif 3

Başka bir alternatif, donanım imlecini tutmak (bir yazılım imleci kullanmak yerine) ve donanım imlecinin yanıp sönmesini durdurup blok imleci yapmaktır. Böyle yaparak:

  1. Aşağıdakileri ekleyin /etc/inittab:

    # Stop cursor blink on Linux console
    ::sysinit:/bin/sh -c "echo 0 > /sys/class/graphics/fbcon/cursor_blink"
    
  2. Ekle ESC[?8ciçin /etc/issue. Bunu yapma talimatları için "Alternatif 2" ye bakın.

Ancak, bu seçenekle, imleç parlak beyaz hale gelmez. Sanırım bu sadece yazılım imlecini kullanarak mümkün.

Bu alternatiflerden herhangi birini takip ettikten sonra, beyaz, yanıp sönmeyen, blok imleci elde edeceksiniz.

Daha fazla bilgi


0

Bu, imleci tamamen gizler.

tput civis

Tekrar depolamak için:

tput cnorm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.