Как заставить многострочную подсказку tcsh использовать символ новой строки?

Solución con sed+ tr.

sed -e '1,$s/}\s/#/g' input-file | tr '#' '\n' | tr -d '{|}' > output-file
2
10.08.2019, 11:10
1 ответ

tl;dr добавьте это к вашему ~/.tcshrcили~/.cshrc:

settc am no

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


Если вы запустите tcshвнутри script(1), вы ясно увидите, что это за:

$ script -qc tcsh
tcsh% set prompt = "foo\nbar% "
foo
bar% exit
exit
$ cat -v typescript
...
foo^[[80G  ^Mbar% exit^M^M

tcshпереводит новую строку внутри подсказки в переход к последнему столбцу (с помощью hpa/ch\e[80Gвыхода )с последующими двумя пробелами и возвратом каретки (только tcshподойдет это; настоящий cshне будет ). Вы можете взглянуть на функцию MoveToLine()в ее исходном коде .

По какой-то причине xtermи другие эмуляторы терминала интерпретируют переход к последнему столбцу, как если бы вся строка была заполнена пробелами, несмотря на любые настройки, подобные highlightSelection.

Быстрый и грязный обходной путь — убедить tcsh, что ваш терминал не имеет автоматических полей, что и делает команда settc am no.

4
27.01.2020, 22:02

Теги

Похожие вопросы