Я пытаюсь устранить некоторые проблемы с терминалом. Я подключаюсь из своего ноутбука Windows к серверу Linux, используя оболочку Git Bash. Экран, похоже, не освежает должным образом (очистка не очищает экран, после выхода на экран vim и man остается на экране и т. Д.). Я смотрю на stty настройки и сравниваю их с другим сервером linux, где у меня нет этих проблем. Одна из вещей, которые я вижу на моем рабочем сервере, - eol = M-^?; eol2 = M-^?;
. Может кто-нибудь объяснить мне нотацию? Как я могу реплицировать этот параметр на другом сервере?Что делает M- ^? в среднем значении?
ответ
stty
ограничен однобайтовыми символами.
bash
использует соглашение об именах (как и несколько других программ) префикса M-
для обозначения мета-флага. Обычно ^?
является ASCII DEL (127 десятичных знаков, 0x7f hex), поэтому я ожидал бы, что M-^?
будет 255 (0xff).
В зависимости от реализации (см обсуждение _POSIX_VDISABLE
) stty
может показать, что значение как undef
:
$ stty -a
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
Относно мета, Ncurses имеет некоторую документацию в terminfo(5)
:
Если терминал имеет «мета-ключ», который действует как переключатель , установив 8-й бит любой переданный символ, этот факт может быть обозначен км. В противном случае программное обеспечение будет считать, что бит 8-й является паритетом и обычно будет очищен . Если существуют строки для включения этого «метамода» на и выкл., Они могут быть указаны как
smm
и .
и с функцией keyname
, она возвращает значение в той форме:
Значения выше 128 являются либо мета-символы (если экран не был инициализирован, или если meta была вызвана с параметр TRUE), показанные в нотации или отображаются как сами по себе. В последнем случае данные могут не печататься; это следует из спецификации X/Open.
Дальнейшее чтение:
- Alt-keys do not work in bash
- 9.13 Why doesn’t my Meta key work in an xterm window? (GNU Emacs FAQ)
- what if _POSIX_VDISABLE value is -1?
- 17.4.9 Special Characters (Библиотека GNU C)
дикое предположение ... конец линии производит контроль M ?? !! – SriniV
Разве это не будет выглядеть как '^ M'? Например, 'intr =^C;' – Archa5238