Jak zatrzymać kursor blinking
w TTY ? (lub gdziekolwiek indziej).
BONUS Punkty za jedno ustawienie uniwersalne, które zatrzymuje miganie kursora prawie wszędzie.
To daje ci stały żółty blok (nie mruga) jako kursor:
echo -n -e '\e[?17;14;224c'
Aby uzyskać więcej informacji, sprawdź następujące odniesienia: Linuxgazette i EmacsWiki, a także plik /usr/src/linux/Documentation/VGA-softcursor.txt
(jeśli jest obecny w twoim systemie)
echo -e '\033[?16;0;224c'
Istnieje standardowa sekwencja kontrolna, która wyłącza miganie kursora na zaciskach.
Jednak wiele terminali nie implementuje tego ustawienia, więc czytaj dalej.
Istnieje szerzej zaimplementowane standardowe ustawienie terminala do przełączania widoczności kursora między dobrą widocznością, normalną widocznością i niewidzialnością. Niektóre terminale nie robią różnicy między normalnym a wysokim, i nie ma gwarancji, że jedno lub drugie będzie mrugać lub nie. W terminfo wydzielają się
cvvis
,cnorm
anicivis
łańcuch (na przykładtput cvvis
). Odpowiednie termcap wpisy sąvs
,ve
ivi
.To ustawienie nie przetrwa resetu terminala , więc może się okazać, że nie przetrwa on uruchomienia wielu aplikacji pełnoekranowych. Możesz pokonać tę trudność, dodając sekwencję zmiany konfiguracji kursora do łańcucha resetowania terminala.
infocmp >>~/etc/terminfo.txt
. Edytuj opis, aby zmienićrs1
sekwencję (resetowanie podstawowe), np. Zamieńrs1=\Ec
nars1=\Ec\E[?12l
. W przypadku niektórych programów i ustawień konieczna może być również zmianars2
(pełny reset). Następnie skompiluj opis terminfo ztic ~/etc/terminfo.txt
(zapisuje to w katalogu$TERMINFO
lub~/.terminfo
jeśli nie jest ustawiony)./etc/termcap
). Zmień sekwencjeis
(podstawowy reset) irs
(pełny reset), aby dołączyć ustawienia, np:is=\Ec\E[?12l:
. UstawTERMCAP
zmienną środowiskową na edytowaną wartość (zaczynającą się i kończącą na:
).Niektóre terminale i inne aplikacje dają więcej opcji:
cursorBlink
zasób jest ustawionytrue
lub-bc
opcja jest przekazywane w linii poleceń. Szybkość migania można dostosować za pomocą zasobówcursorOnTime
icursorOffTime
.printf '\033[17;127?c'
(pierwszy parametr 17 daje kursor programowy bez kursora sprzętowego, a drugi parametr ustawiony na 127 powoduje, że jest to zasadniczo odwrotne wideo). Patrz wyżej dotyczące resetowania terminali.M-x blink-cursor-mode
przełączanie kursora mruga. Umieścić(blink-cursor-mode 0)
w twoich~/.emacs
, aby go wyłączyć. Jest to ustawienie globalne i nie ma zastosowania w terminalu tekstowym.Zobacz także stronę No Blinking Jurija Linkova (Jurta), aby dowiedzieć się, jak wyłączyć miganie w Lesstif, Tk, Gtk (Gnome), Qt (KDE), Firefox i innych.
źródło
Uznałem, że jest to łatwiejsze, jeśli masz uprawnienia root:
Umieściłem go w skrypcie uruchamiania maszyny, jak w
/etc/rc.local
przypadku arch. Linuxźródło
W Linuksie tty możesz użyć sekwencji ucieczki
"\e[?48;0;64"
lub cokolwiek zechcesz, ale to nie działa w tmux / vim. Tmux / Vim wydaje komendę „cnorm” podczas uruchamiania, która domyślnie zawiera"\e[?0c"
. Widać, że to cofa efekty powyższego ustawienia. Musisz zmienić cnorm na powyższą sekwencję, aby aplikacje TUI mogły zresetować kursor do twoich preferencji. Więcej informacji na ten temat autorstwa Gillesa, ale jeśli szukasz szybkiej poprawki, spróbuj tego:Ostatnie polecenie wygeneruje nowe terminfo, pod
~/.terminfo
którym powinno być pobierane automatycznie po ponownym uruchomieniu serwera / vim.źródło
Położyć
do zmiennej PS1, a przestaniesz ciągle migać.
NA PRZYKŁAD:
źródło
BLUEBOXNOBLINK="\033[?17;0;60c"
, a następniePS1="\[$BLUEBOXNOBLINK\]\[$BROWN\]\u \[$CYAN\]\W: \[$NC\]"
źródło
-cursor off
nie jest do końca tym, o co się prosi, powoduje, że kursor znika ...setterm -blink off
wydaje się bardziej obiecujący, ale wpływa na tekst, a nie kursor.setterm -cursor off; setterm -cursor on
działa tutaj, ale jest to niedopuszczalne obejściewłożyłem
w /etc/rc.local i utworzył dla niego usługę systemową, korzystając z instrukcji online. Zauważyłem jednak, że czasami po uruchomieniu kursor nadal miga. Dobrze byłoby znać prawidłowy sposób trwałego wyłączenia migania kursora za pomocą sysfs na nowoczesnym systemie systemowym, czy ktoś ma jakieś wskazówki? Niektóre dystrybucje mają /etc/sysfs.conf, ale korzystam z Arch i nie mogę znaleźć tego pliku w sysfsutils ani gdzie indziej.
Jako tymczasową poprawkę uruchomiłem następujące polecenie
Niektóre eksperymenty wykazały, że „255c” na końcu działa lepiej niż „127c” wymieniony powyżej, daje biały, a nie szary kursor.
źródło
W przypadku konsoli Linux:
Alternatywa 1
Dodaj
-I "\033[?17;0;255c"
opcję dogetty
linii w/etc/inittab
pliku. Aby to zrobić:Otwórz
/etc/inittab
plik za pomocą edytora tekstu. Nie powinno być linie, które zawierajągetty
lubagetty
lub podobny. Przykładem jest:Dodaj
-I "\033[?17;0;255c"
do każdejgetty
linii. Jako przykład, po dodaniu-I "\033[?17;0;255c"
Thegetty
linia powyżej będzie wyglądać następująco:Uruchom ponownie system lub ewentualnie zabij wszystkie
getty
procesy.Alternatywa 2
Lepszym rozwiązaniem jest umieszczenie
ESC[?17;0;255c
w/etc/issue
, zamiast wprowadzenie go dogetty
linii. Wykonanie tego przy użyciuvi
wygląda następująco:/etc/issue
za pomocąvi
./etc/issue
pliku przejdź do trybu wstawiania.^V
(to znaczy Ctrlv), a następnie naciśnij Esc. Należy teraz wstawić znak zmiany znaczenia.[?17;0;255c
.Alternatywa 3
Inną alternatywą jest utrzymanie kursora sprzętowego (zamiast używania kursora programowego) i przestanie mrugać kursorem sprzętowym i uczynienie go kursorem blokowym. Aby to zrobić:
Dodaj następujące elementy do
/etc/inittab
:Dodaj
ESC[?8c
do/etc/issue
. Instrukcje na ten temat znajdują się w „Alternative 2”.Jednak przy tej opcji kursor nie staje się jasnobiały. Myślę, że jest to możliwe tylko przy użyciu kursora programowego.
Po zastosowaniu dowolnej z tych opcji otrzymasz biały, nie mrugający kursor blokowy.
Dalsza informacja
źródło
To całkowicie ukrywa kursor.
Aby zapisać:
źródło