@ThomasDickey Я должен был потратить время на то, чтобы правильно просмотреть ваш сайт перед публикацией. Просто вау! Спасибо за весь код.
аетNcurses программа вurxvt сдавливает повторяющиеся символы в строках. Например я ожидаю"--------"
но я получаю"-"
.
Я написал короткую программу, которая воспроизводит проблему. Код ниже.
Я проверил, что вывод является правильным при использованииXterm скорее, чемurxvt.
Это первый раз, когда я работаю с ncurses, однако, пример программы так же прост, как они приходят. Поэтому я не думаю, что проблема в том, как я использую ncurses. Это также подтверждается тем фактом, что xterm дает ожидаемые результаты.
Я использую urxvt на Arch Linux. Я также предоставляю соответствующую конфигурацию ниже. У меня установлен vanilla xterm без дополнительной настройки. У обоих был запущен Zsh.
Пример программы (С)#include <curses.h>
int main(){
initscr();
printw("------\n"); // (1) 6 '-' chars urxvt: "------" xterm: "------"
printw("-------\n"); // (2) 7 '-' chars urxvt: "-" xterm: "-------"
printw("--------\n"); // (3) 8 '-' chars urxvt: "-" xterm: "--------"
printw("0--------0\n"); // (4) 8 '-' between '0' urxvt: "0-0" xterm: "0--------0"
printw("xxxxxxxx\n"); // (5) Replacing '-' with 'x' does not make a difference.
printw("---- ----\n"); // (6) Two '-' sequences separated by ' ' display correctly.
printw("12345678\n"); // (7) Strings with different characters display correctly.
for(int i=0; i<8; i++) addch('-'); // (8) 8 '-' chars urxvt: "-" xterm: "--------"
addch('\n');
for(char c='0'; c<'8'; c++) addch(c); // (9) Both display correctly
addch('\n');
refresh();
getch();
endwin();
return 0;
}
Вывод xterm (правильный)------
-------
--------
0--------0
xxxxxxxx
---- ----
12345678
--------
01234567
Выходные данные urxvt (неверно)------
-
-
0-0
x
---- ----
12345678
-
01234567
наблюденияДо 6 повторяющихся символов отображаются правильно.7 и более повторяющихся символов отображаются как один символ.Эта проблема не возникает, если символы не повторяются, поэтому длина самой строки не является проблемой.Расположение повторяющейся подстроки не имеет значения. В (7) сжатая подстрока была зажата'0'
символы на каждом конце.Проблема не в конкретном характере. Бывает с'-'
также как и'x'
.Проблема наблюдалась с использованием какprintw
а такжеaddch
функции. Соответствующие man-страницы утверждают, что эти функции перемещают курсор, поэтому нет необходимости явно перемещать курсор. Это, очевидно, имеет место, так как в противном случае проблема не будет ограничена повторяющимися символами, а также произойдет с xterm.Конфигурация urxvtrxvt-unicode v9.22$TERM
являетсяxterm-256color