Можете ли вы дать более подробную информацию о том, как вы установили и вызвали Cygwin, и где именно клавиша возврата не работает?
ak2
1
Я предполагаю, что это происходит в оболочке. Что происходит, когда вы набираете control-V, а затем клавишу Backspace? И каков вывод sttyкоманды?
Кит Томпсон
Какая у вас клавиатура? США, Великобритания и т. Д.
pjc50
Вы когда-нибудь решали это? Я вижу это сейчас на моей новой установке Cygwin, хотя раньше это работало. Стоит отметить, что вы не получаете «пробел»: не удается переместить курсор назад, чтобы стереть символ. Пространство, которое вы видите, - это пространство, которое должно было растоптать предыдущего персонажа. Если вы нажмете ^ L, вы увидите, что backspace работает. Вот почему stty не чинит вещи. Это похоже на то, что оболочка CMD, с которой связан Cygwin, не может интерпретировать движение курсора.
SomeCallMeTim
Ответы:
33
В моем случае backspace вообще не работал после создания пустого ~ / .vimrc. Следующее изменение заставило его работать
Спасибо, это сработало для меня - раньше, в Vim, моя клавиша возврата возвращалась вдоль линии, но не очищала буквы, пока я не начал печатать. Теперь он делает «обычный» забой.
Роберт
4
Хорошо, что этот ответ помог другим пользователям, но в данном случае это не решение вопроса, так как оригинальный вопрос не касается vim.
Келсин
Это также решило аналогичную проблему, с которой я столкнулся с клавишами курсора
Steve Paul
12
Работал для меня: В командной строке Windows введите
У меня была TERMпеременная окружения, установленная msysчерез настройки переменных окружения Windows, как это было предложено в StackOverflow, чтобы помочь с gitпроблемами в Windows. Простой сброс в cygwinin .bashrcне помог, но удаление TERMзаписи из настроек Windows помогло . Спасибо, что указал мне правильное направление!
Флориан Брукер
Это решило тот факт, что cygwin64 игнорировал возвраты в командах, содержащих разрывы строк. Спасибо.
Просто запустите установку Cygwin снова и переустановите termcapи terminfo. Если вы используете окно поиска, вы можете найти их быстро. Вместо того, чтобы сказать «Сохранить» для каждого, нажмите на него, чтобы заставить его сказать «Переустановить». Возможно, вам придется установить флажок «Скрыть устаревшие», termчтобы появиться в поиске.
Моя папка terminfo полностью отсутствовала. Понятия не имею почему. Надеюсь, это кому-нибудь поможет.
У меня были кастомные ncurses, которые я удалил. После удаления и переустановки через cygwin setup.exe у меня возникла эта проблема. Я не хочу применять bandaid, устанавливая переменные TERM для чего-то отличного от того, что работало до моей неудачи. Переустановка terminfo (я не смог найти termcap) сработала для меня. Благодарность!
Самое простое решение на сегодняшний день. Надеюсь, что нет никаких побочных эффектов.
RomanSt
1
Когда вы устанавливаете тип TERM, вы указываете хосту, какой TERMCAP использовать для рисования в окне терминала. Большинство хостов * NIX не знают, что такое термин «cygwin», поэтому они не знают, как выполнять манипуляции с символами на экране, такие как вставка, удаление, прокрутка, изменение шрифта и т. Д.
Если вы измените переменную TERM в CYGWIN до telnet или SSH на хост, вы получите гораздо лучшие результаты:
В CYGWIN:
d@test01 ~
$ TERM=ansi;export TERM
$ ssh suntest1
d@suntest1's password:
Sun Microsystems Inc. SunOS 5.8 Generic patch October 2001
d pts/1 test01 Fri Oct 12 00:15 still logged in
$ echo $TERM
ansi
$_
Хост теперь знает, что у вас тип терминала ANSI, и он может использовать свой файл ANSI TERMCAP, чтобы сообщить ему, как общаться.
Если вы не можете заставить это работать, и почти все работает правильно, кроме возврата, вы можете перепрограммировать «getty» на хосте, к которому вы подключаетесь, чтобы узнать, что вы хотите, и вот как (это самый старый, самый распространенный и самый универсальный способ решения проблем возврата / удаления):
Вы ssh или telnet к вашему хосту и на хосте вы запускаете команду stty. Если вы нажмете клавишу «BACKSPACE», и она не вернется назад, это потому, что терминал, вероятно, ищет другой символ, основанный на типе TERM. Вместо того, чтобы копаться во всем этом, вы можете вручную установить определение backspace в CLI или в вашем файле .profile, .bashrc или .bash-profile в вашем каталоге $ HOME, как вам нужно, или на основе разновидности * NIX, которой вы являетесь с помощью.
Поэтому, если вы нажмете ^ H (это CONTROL-H), и ваша клавиша выполнит резервное копирование, но вы нажмете клавишу BACKSPACE, и она не попытается использовать stty следующим образом:
stty erase \*<HIT YOUR BACKSPACE KEY HERE>*[ENTER]
В большинстве случаев это будет выглядеть так:
stty erase \^?[ENTER]
«\» Говорит ему, что следующий символ будет непечатным управляющим символом и будет принимать его, а не «интерпретировать» его.
Как только вы нажмете [ENTER], вы сможете нажать клавишу [BACKSPACE] и вернуть ее / удалить все, что вы ввели.
Вы можете установить это в своей оболочке.
Теперь, если вы все еще используете VI, иногда перевод не работает, и вам действительно нужно набрать ^ H в vi, но это нормально.
Вы могли бы сказать:
стереть стереть к [ENTER]
и он буквально перевел бы 'k' в символ стирания / удаления ..
Хорошо, у меня была проблема с ручным обновлением установки Cygwin. В любом случае я нашел этот пост , который привел меня к решению для моей установки.
У более старого cygwin был файл /etc/terminfo/c/cygwin, но в более новом cygwin ожидалось, что файл будет /etc/terminfo/63/cygwin.
После того, как я скопировал файл "cygwin" в это место, клавиша Backspace оболочки bash работала нормально, как и Tab и другие.
Изменение TERMпеременной cygwinи добавление SET TERM=cygwinв .batфайл не помогло мне, но я исправил это. Вот что я сделал: В диспетчере пакетов из-за установки я выбрал установку xterm: X11 terminal emulator, после установки я добавил SET TERM=xtermв .batфайл (как предложено выше), запустил терминал и в меню « Настройки» -> « Терминал»Type=xterm , затем перезапустил терминал. Backspace начал работать правильно!
Примечание: если вы уже установили Cygwin - просто запустите программу установки снова и добавьте пакет xterm.
Потратив 2 дня на чтение материалов в Интернете. Я нашел этот, который работал для меня. Я не знаю, соответствует ли этот случай каждому. Но это сработало как обаяние для меня благодаря Юксель
Проблема была с файлами 'termInfo', Шаги, которые он предложил
подтвердите, если проблема связана с терминалом, введя в CygWin Terminal, это должно дать (игнорируйте предупреждение)
less my_session.log
ВНИМАНИЕ: терминал не полностью функционален
Получите информацию о TermCap, к которому относится путь или каталог, введя приведенный ниже код в терминале CygWin.
infocmp -C
вы должны либо получить
infocmp: не удалось открыть файл terminfo / usr / share / terminfo / 63 / cygwin
Или вы можете также получить что-то, начинающееся с текста типа «Реконструкция через infocmp ...»
Запустите приведенный ниже код в терминале CygWin, чтобы запустить диагностику и получить дополнительную информацию о пути сохранения файлов.
cygcheck -s
который должен ответить вам, как показано ниже текст
Диагностика конфигурации Cygwin
...
C: / cygwin / system binary, noacl
C: / cygwin / bin / usr / bin системный бинарный, noacl
из вывода, вы получили с 3-го шага. Теперь скопируйте все файлы и папки, которые существуют в / usr / share / terminfo, в папку C: \ cygwin \ etc \ terminfo - ПРИМЕЧАНИЕ: эта папка может отличаться от вашей в зависимости от установки
Щелкните правой кнопкой мыши в любом месте окна Cygwin
щелчок options
Нажмите на Keysвкладку
ТИК Backarrow sends ^H
Нажмите применить.
Это единственное, что сработало для меня, особенно если учесть, что если у вас есть SSH к серверу (не все исправления будут работать), я обычно добавлял stty erase ^?в свой .bashrc, но это только исправляло проблему в 80% случаев.
Даже я застрял на той же самой проблеме, и от minty также не работает backspace. Я получаю пробел, когда нажимаю клавишу Backspace на терминале minty, а также на терминале cygwin
Рэйчел
@ Рейчел Вы когда-нибудь решали это? Я вижу ту же проблему со свежей установкой Cygwin. :(
SomeCallMeTim
@SomeCallMeTim: я смог решить эту проблему с помощью Minty, иногда Cygwin ведет себя очень странно.
Рейчел
@Rachel Спасибо, хотя я обнаружил, что моя проблема в том, что при установке Cygwin пропущены некоторые важные файлы (например, / usr / lib / terminfo). Я не знаю, почему они пропали без вести; нашел кого-то еще с этой проблемой, зашел в установку и сказал terminfo и termcap переустановить, и все заработало.
stty
команды?Ответы:
В моем случае backspace вообще не работал после создания пустого ~ / .vimrc. Следующее изменение заставило его работать
Ставить:
установить bs = 2
в .vimrc
Нашел это по адресу http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html
источник
Работал для меня: В командной строке Windows введите
Это добавит это к
.bashrc
и все может работать хорошо!источник
TERM
переменная окружения, установленнаяmsys
через настройки переменных окружения Windows, как это было предложено в StackOverflow, чтобы помочь сgit
проблемами в Windows. Простой сброс вcygwin
in.bashrc
не помог, но удалениеTERM
записи из настроек Windows помогло . Спасибо, что указал мне правильное направление!Я нашел решение проблемы, представленной выше.
Просто запустите установку Cygwin снова и переустановите
termcap
иterminfo
. Если вы используете окно поиска, вы можете найти их быстро. Вместо того, чтобы сказать «Сохранить» для каждого, нажмите на него, чтобы заставить его сказать «Переустановить». Возможно, вам придется установить флажок «Скрыть устаревшие»,term
чтобы появиться в поиске.Моя папка terminfo полностью отсутствовала. Понятия не имею почему. Надеюсь, это кому-нибудь поможет.
источник
Отредактируйте ваш c: \ cygwin \ cygwin.bat
Поместите это:
SET TERM=cygwin
до:
bash --login -i
источник
Когда вы устанавливаете тип TERM, вы указываете хосту, какой TERMCAP использовать для рисования в окне терминала. Большинство хостов * NIX не знают, что такое термин «cygwin», поэтому они не знают, как выполнять манипуляции с символами на экране, такие как вставка, удаление, прокрутка, изменение шрифта и т. Д.
Если вы измените переменную TERM в CYGWIN до telnet или SSH на хост, вы получите гораздо лучшие результаты:
В CYGWIN:
Хост теперь знает, что у вас тип терминала ANSI, и он может использовать свой файл ANSI TERMCAP, чтобы сообщить ему, как общаться.
Если вы не можете заставить это работать, и почти все работает правильно, кроме возврата, вы можете перепрограммировать «getty» на хосте, к которому вы подключаетесь, чтобы узнать, что вы хотите, и вот как (это самый старый, самый распространенный и самый универсальный способ решения проблем возврата / удаления):
Вы ssh или telnet к вашему хосту и на хосте вы запускаете команду stty. Если вы нажмете клавишу «BACKSPACE», и она не вернется назад, это потому, что терминал, вероятно, ищет другой символ, основанный на типе TERM. Вместо того, чтобы копаться во всем этом, вы можете вручную установить определение backspace в CLI или в вашем файле .profile, .bashrc или .bash-profile в вашем каталоге $ HOME, как вам нужно, или на основе разновидности * NIX, которой вы являетесь с помощью.
Поэтому, если вы нажмете ^ H (это CONTROL-H), и ваша клавиша выполнит резервное копирование, но вы нажмете клавишу BACKSPACE, и она не попытается использовать stty следующим образом:
В большинстве случаев это будет выглядеть так:
«\» Говорит ему, что следующий символ будет непечатным управляющим символом и будет принимать его, а не «интерпретировать» его.
Как только вы нажмете [ENTER], вы сможете нажать клавишу [BACKSPACE] и вернуть ее / удалить все, что вы ввели.
Вы можете установить это в своей оболочке.
Теперь, если вы все еще используете VI, иногда перевод не работает, и вам действительно нужно набрать ^ H в vi, но это нормально.
Вы могли бы сказать:
стереть стереть к [ENTER]
и он буквально перевел бы 'k' в символ стирания / удаления ..
-D
источник
Хорошо, у меня была проблема с ручным обновлением установки Cygwin. В любом случае я нашел этот пост , который привел меня к решению для моей установки.
У более старого cygwin был файл
/etc/terminfo/c/cygwin
, но в более новом cygwin ожидалось, что файл будет/etc/terminfo/63/cygwin
.После того, как я скопировал файл "cygwin" в это место, клавиша Backspace оболочки bash работала нормально, как и Tab и другие.
источник
Изменение
TERM
переменнойcygwin
и добавлениеSET TERM=cygwin
в.bat
файл не помогло мне, но я исправил это. Вот что я сделал: В диспетчере пакетов из-за установки я выбрал установкуxterm: X11 terminal emulator
, после установки я добавилSET TERM=xterm
в.bat
файл (как предложено выше), запустил терминал и в меню « Настройки» -> « Терминал»Type=xterm
, затем перезапустил терминал. Backspace начал работать правильно!Примечание: если вы уже установили Cygwin - просто запустите программу установки снова и добавьте пакет xterm.
Я бегу:
источник
Я согласен со всеми ответами здесь. Но здесь есть гораздо более простой способ: http://lifepluslinux.blogspot.in/2014/08/backspace-doesnt-work-in-vim-on-cygwin.html
источник
Работал для меня: В командной строке Windows введите
Это добавит его в .bash_profile (не .bashrc, который у меня не сработал, и с разрывом лидирующей строки)
источник
Потратив 2 дня на чтение материалов в Интернете. Я нашел этот, который работал для меня. Я не знаю, соответствует ли этот случай каждому. Но это сработало как обаяние для меня благодаря Юксель
Проблема была с файлами 'termInfo', Шаги, которые он предложил
подтвердите, если проблема связана с терминалом, введя в CygWin Terminal, это должно дать (игнорируйте предупреждение)
less my_session.log
Получите информацию о TermCap, к которому относится путь или каталог, введя приведенный ниже код в терминале CygWin.
infocmp -C
вы должны либо получить
Или вы можете также получить что-то, начинающееся с текста типа «Реконструкция через infocmp ...»
Запустите приведенный ниже код в терминале CygWin, чтобы запустить диагностику и получить дополнительную информацию о пути сохранения файлов.
cygcheck -s
который должен ответить вам, как показано ниже текст
из вывода, вы получили с 3-го шага. Теперь скопируйте все файлы и папки, которые существуют в / usr / share / terminfo, в папку C: \ cygwin \ etc \ terminfo - ПРИМЕЧАНИЕ: эта папка может отличаться от вашей в зависимости от установки
источник
Пожалуйста, следуйте изображению ниже
options
Keys
вкладкуBackarrow sends ^H
Это единственное, что сработало для меня, особенно если учесть, что если у вас есть SSH к серверу (не все исправления будут работать), я обычно добавлял
stty erase ^?
в свой .bashrc, но это только исправляло проблему в 80% случаев.источник
Никогда не сталкивался с вашей проблемой. Попробуйте установить эмулятор терминала Mintty ( http://code.google.com/p/mintty/ ).
Это доступно через установщик Cygwin. Лучший терминал для Cygwin.
источник