Я только что установил Cygwin, и функциональность BACKSPACE отсутствует, то есть, когда я нажимаю клавишу Backspace, я получаю пробел.
Я пытался исследовать эту проблему в Google, но не нашел ничего убедительного.
stty
команды?
Я только что установил Cygwin, и функциональность BACKSPACE отсутствует, то есть, когда я нажимаю клавишу Backspace, я получаю пробел.
Я пытался исследовать эту проблему в Google, но не нашел ничего убедительного.
stty
команды?
Ответы:
В моем случае backspace вообще не работал после создания пустого ~ / .vimrc. Следующее изменение заставило его работать
Ставить:
установить bs = 2
в .vimrc
Нашел это по адресу http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html
Работал для меня: В командной строке Windows введите
echo export TERM=cygwin >> C:/cygwin/home/YourUser/.bashrc
Это добавит это к .bashrc
и все может работать хорошо!
TERM
переменная окружения, установленная msys
через настройки переменных окружения Windows, как это было предложено в StackOverflow, чтобы помочь с git
проблемами в Windows. Простой сброс в cygwin
in .bashrc
не помог, но удаление TERM
записи из настроек Windows помогло . Спасибо, что указал мне правильное направление!
Я нашел решение проблемы, представленной выше.
Просто запустите установку Cygwin снова и переустановите termcap
и terminfo
. Если вы используете окно поиска, вы можете найти их быстро. Вместо того, чтобы сказать «Сохранить» для каждого, нажмите на него, чтобы заставить его сказать «Переустановить». Возможно, вам придется установить флажок «Скрыть устаревшие», term
чтобы появиться в поиске.
Моя папка terminfo полностью отсутствовала. Понятия не имею почему. Надеюсь, это кому-нибудь поможет.
Когда вы устанавливаете тип 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' в символ стирания / удаления ..
-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
Потратив 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
C: / cygwin / lib / usr / lib бинарный файл системы, noacl
C: \ cygwin \ etc \ terminfo / usr / share / terminfo, двоичный файл системы, noacl
префикс cygdrive / бинарный код пользователя cygdrive, noacl, posix = 0, авто
...
C: \ cygwin \ etc \ terminfo / usr / share / terminfo, двоичный файл системы, noacl
из вывода, вы получили с 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.