Существует ли последовательность управления ANSI, которая перемещает курсор в конец строки? - PullRequest
0 голосов
/ 06 ноября 2018

Я знаю \33[nC, который перемещает курсор n столбцы вперед; проблема в том, что я не знаю, сколько символов состоит из конкретной строки.

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

Нет ничего явного , однако экраны «маленькие», и вы можете использовать любую из команд перемещения курсора для перемещения в произвольно дальний пункт назначения, и терминал будет ограничивать перемещение размером экрана .

Например, элемент управления курсором вперед (в terminfo, cuf) использует счетчик повторений и абсолютную горизонтальную позицию (в terminfo, hpa) использует значение столбца. Любой из них должен работать для вас:

tput cuf 999
tput hpa 999

(при условии, что на вашем экране меньше тысячи столбцов). Есть другие, которые могут быть реализованы в вашем терминале (эмулятор ...), но они довольно распространены.

Кстати, для жесткого кодирования cuf такой же, как пример в вопросе. Это столбцы , а не строки , которые перемещаются. Чтобы переместить курсор на строк , вы должны использовать cud ( escape> [ n B ).

0 голосов
/ 12 ноября 2018

В случае, если у кого-то есть подобная проблема, мне удалось обойти необходимость явного знания n в \33[nC путем получения его значения в моей программе и использования строковой интерполяции для установки значения переменной n в строку, содержащую вышеупомянутую escape-последовательность.

Однако это не универсальное решение, поскольку могут быть случаи, когда n не может быть определен так легко.

0 голосов
/ 06 ноября 2018

Нет, такой последовательности управления ANSI нет.

...