Я використовую підказку Cygwin bash, і для довгих команд текст буде загортатися на тому ж рядку, на відміну від переходу до наступного рядка, незважаючи на те, що PS1 просто встановив значення "$".
Ось скріншот,
Я використовую підказку Cygwin bash, і для довгих команд текст буде загортатися на тому ж рядку, на відміну від переходу до наступного рядка, незважаючи на те, що PS1 просто встановив значення "$".
Ось скріншот,
Відповіді:
Я вже використовував MinTTY, і видалення нового рядка в PS1 теж не допомогло. Порада на цій сторінці допомогла. Я виконав цю команду bash:
kill -WINCH $$
У моєму випадку після запуску цього рішення виправлена проблема навіть після виходу з системи та входу назад. Я не впевнений, чи завжди це так.
-WINCH
цього, це сигналізує про баш-процес, що вікно терміналу було змінено. Отже, це потрібно робити після кожного розміру вікна терміналу, я думаю.
Для мене рішенням було додати наступні рядки до .bashrc:
PS1='\[\e[32m\]\u@\h:\W> \[\e[0m\]'
TERM=cygwin
export PS1
export TERM
Зверніть увагу , що недруковані символи в запрошенні повинні бути укладені в
\[
... \]
.
У мене була така ж проблема і з MinTTY. Проблема, ймовірно, має відношення до первинного запиту (PS1).
Для мене було рішення видалити останній символ "нового рядка" з PS1 (безпосередньо перед знаком "$"):
user@host ~
$ echo $PS1
\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
user@host ~
$ export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\$ '
user@host ~ $
див. http://cygwin.com/ml/cygwin/2001-07/msg00140.html для довідок.
Щоб зробити цю зміну стійкою, додайте експорт PS1 = '[\ e] 0; \ w \ a] \ n [\ e [32m] \ u @ \ h [\ e [33m] \ w [\ e [0m] \ $ 'у ваш файл ~ / .bashrc.
@ jtpereyda відповідь , безумовно, значить. Але я чомусь не міг цього відпустити, і копав трохи глибше.
Розширюючись на цей коментар , якщо ви змінюєте розмір терміналу під час in vim (або будь-яке інше повне екранне додаток, яке приймає контроль над tty від оболонки), отриманий результат SIGWINCH
часто не надсилається до оболонки, тому коли він повертається назад, він не робить Я не знаю, що термінал був змінений.
Коли ви змінюєте розмір свого терміналу, він повинен викликати ioctl(..., TIOCSWINSZ, ...)
головний pty, у якому запущено vim. Це в свою чергу призводить killpg(SIGWINCH)
до групи процесів v vim.
Проблема полягає в тому, що vim працює у власній групі процесів, відмінній від оболонки, з якої він був виконаний, тому оболонка bash не отримує SIGWINCH
свої лінійки / стовпці належним чином.
Якщо ви хочете постійного вирішення, додайте shopt -s checkwinsize
до свого .bashrc
. Це змушує bash перевірити розмір вікна ( ioctl(..., TIOCGWINSZ, ..)
) після повернення з кожної команди та оновити його рядки / стовпці.
Щось порушено у налаштуваннях вашого терміналу (ймовірно).
Я думаю, ви б вже намагалися вийти з цього сеансу та перезапустити новий.
Поки ви не знайдете рішення для терміналу Cygwin, спробуйте MinTTY (насправді краще).
Як коментує акатакріто , ви, ймовірно, змінили розмір терміналу, поки vim був відкритий.
Коли це станеться, просто змініть розмір терміналу ще раз і проблема усунеться.
TERM
встановлена змінна середовище? Для консолі Cygwin це має бутиcygwin
.