Чому перед кожним запитом на zsh в Windows з’являється знак відсотка?


13

Я отримую налаштування zsh в Windows, і я отримую зворотний (чорно-білий (чорний фон терміналу)) відсотків у першій позиції символу в рядку, вище кожного запиту.

Зазвичай це означає, що в кінці файлу немає нового рядка, наприклад, коли cat-ing.

Це не відбувається на моєму Mac або навіть на Mintty в Windows. Але це відбувається в ConEmu і стандартному термінальному додатку, в якому зазвичай працює CMD.EXE.

У мене вже є unsetвсі мої рядки підказок, а також precmd()які я зазвичай використовую для додавання порожнього рядка над підказкою.

Будь-яка підказка, що це може бути?

Відповіді:


33

Можливо, відповідним варіантом є PROMPT_SPпояснення з посібника

Спроба зберегти частковий рядок (тобто рядок, який не закінчувався новим рядком), який інакше був би прикритий командним рядком через опцію PROMPT_CR. Це працює, виводячи деякі символи управління курсором, включаючи серію пробілів, які повинні перетворити термінал на наступний рядок, коли присутня часткова лінія (зауважте, що це успішно, лише якщо ваш термінал має автоматичні поля, що є типовим) .

Коли частковий рядок буде збережено, за замовчуванням ви побачите зворотний + жирний символ в кінці часткового рядка: a %для звичайного користувача або #для root. Якщо встановлено, параметр оболонки PROMPT_EOL_MARK можна використовувати для налаштування того, як відображаються кінці часткових рядків.

Отже, або ви робите

unsetopt PROMPT_SP

якщо ви не переймаєтесь прихованою лінією (проте у вашому випадку це здається порожнім рядком, оскільки ви отримуєте %знак на початку).

Або використовувати

setopt PROMPT_CR
setopt PROMPT_SP
export PROMPT_EOL_MARK=""

який зберігає часткові рядки, але видаляє %- ціною деяких порожніх рядків над підказкою.

Щоб зробити це постійним, оновіть своє ~/.zshrc.

Це сліпий кадр, тому що я не можу відтворити таку поведінку в своїй cmd.exe.


1
Дякую @mpy, це поставило мене на правильне місце, щоб дізнатися більше. Ось що я придумав: 1) три речі працюють, більше, якщо ви комбінуєте параметри: зніміть PROMPT_CR; зніміть PROMPT_SP; і PROMPT_EOL_MARK = "". 2) встановлення PROMPT_EOL_MARK = "" позбавляється від дратівливого зворотного + жирного символу "%", але він все ще додає додатковий канал рядка, тому підказка виглядає інакше, ніж на монетному дворі або на Mac. 3) Я закінчив дію з незахищеним PROMPT_SP як найкращий компроміс. 4) використання встановлених і скасованих функцій не працює, якщо ви не використовуєте параметр -o. setopt і unsetopt робота. Якщо ви виправите, я прийму вашу відповідь :)
скан

@scanny: Я повинен вибачитись за set. Звичайно, це мало бути setopt- очевидно, я відповів надто швидко. Я оновив свою відповідь і спробував включити також пункт про порожні рядки.
mpy

2

Тож у мене виникли саме такі проблеми з моїм zsh + oh-my-zsh.

Я виправив це за допомогою mpy та цих рядків:

setopt PROMPT_CR

setopt PROMPT_SP

експортувати PROMPT_EOL_MARK = ""

Вам просто потрібно перейти до -> ~ / .oh-my-zsh / themes / XXXXXX. Вам потрібно відкрити тему, яку ви використовуєте на oh-my-zsh, для мене, наприклад, для прикладу її agnoster.

Просто відкрийте цей файл і скопіюйте / пропустіть ці 3 рядки в кінці файлу.

І це виправлено !!

Сподіваюся, вам приємний день і що це допоможе деяким людям вийти.

МИР


Будь ласка, не додайте "дякую" як відповіді. Вкладіть деякий час у сайт, і ви отримаєте достатньо привілеїв, щоб отримати відповіді, які вам подобаються, а це спосіб Super User сказати спасибі.
DavidPostill

0

Ви можете запустити м'ятину всередині ConEmu. Це позбулося від мене відсотків.

Ось що я маю для параметрів завдання:

/icon "%ConEmuDrive%\msys64\msys2.ico"

і команди:

set CHERE_INVOKING=1 & %ConEmuDrive%\\msys64\usr\bin\mintty.exe -i "%ConEmuDrive%\msys64\msys2.ico" -
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.