Intereting Posts
Как заставить ag (серебряный искатель) отображать пустые файлы Как использовать символ NUL в качестве разделителя в командах замены и удаления sed? Как интерпретировать и реагировать на журнал Shorewall? Компиляция Asterisk на Debian: не удается найти `ptlib-config` Пример пакета, который имеет одно и то же имя в двух разных дистрибутивах, но относится к несвязанным восходящим проектам для каждого? Как обрабатывать агрессивные HTTP-запросы с одного и того же IP-адреса? zsh glob pattern для соответствия всем файлам, кроме одного, не работает, несмотря на то, что EXTENDED_GLOB установлен изменить 3-й символ в строке Debian live install '' Как запустить установщик на терминале без прерывания живой сессии? '' Как изменить раскладку клавиатуры для конкретного виртуального терминала? Ошибка при поиске несуществующей строки с EDITOR = vi crontab -e Как разрешить правильную навигацию по стрелкам в терминальном приложении с помощью ярлыка? Получить IP-адрес основного интерфейса в Ubuntu и Mac Как установить мой проблемный диск (btrfs?)? Ubuntu 17.10 ошибка неудовлетворенных зависимостей и не удается открыть приложения, включая терминал

Странный вывод на многострочной команде в Китти?

Я запускаю не GUI ArchLinux на VMWare 14.0. Я установил на него ssh-сервер (через openssh) и подключился к моей виртуальной машине, используя Kitty 0.70 в Windows 10 [Version 10.0.15063].

Моя проблема: когда я использую многострочную команду, вывод команды в Китти действительно странный.


Например:

На клиентском компьютере Kitty:

[ddk@mylinux:~] 14:23:08 $ if [[ -o interactive ]] if> then then> echo 'inter' then> fi then # not my typing echo 'inter' # not my typing fi)inter # not my typing [ddk@mylinux:~] 14:23:34 $ 

На терминале в моей виртуальной машине:

 [ddk@mylinux:~] 14:23:54 $ if [[ -o interactive ]] if > then then > echo interactive then > fi interactive [ddk@mylinux:~] 14:24:37 $ 

Итак, как мне исправить неподходящий вывод на моем китти-ssh-клиенте?

P / S: Я запускаю zsh без каких-либо предварительных конфигураций, таких как oh-my-zsh . Это мой .zshrc .

Как заметил Стефан Чазелас, проблема в вашей функции preexec . Когда вы устанавливаете заголовок терминала, вы используете команду без защиты своих специальных символов. Первая новая строка в команде завершает escape-последовательность для установки заголовка, а остальные строки печатаются.

У вас также будет проблема с обратными косыми чертами и процентами символов в команде, так как print выполняет обратное слэширование, и вы также выполняете быстрое процентное расширение в команде.

Решение заключается в удалении или кодировании управляющих символов и для выполнения обратного слэша для получения управляющих символов отдельно от символов в приглашении. Например:

 set_title () { print -rn $'\e]0;'${${:-${(%):-$1}$2}//[^[:print:]]/_}$'\a' } precmd () { set_title '[%n@%M:%~]' '' } preexec () { set_title '[%n@%M:%~]' ' ($1)' }