Solución con sed
+ tr
.
sed -e '1,$s/}\s/#/g' input-file | tr '#' '\n' | tr -d '{|}' > output-file
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
.