28

Я только что установил Cygwin, и функции BACKSPACE там нет, то есть, когда я нажимаю клавишу Backspace, я получаю пробел.

Я пытался исследовать эту проблему в Google, но не нашел ничего убедительного.

11 ответов11

33

В моем случае backspace вообще не работал после создания пустого ~/.vimrc. Следующее изменение заставило его работать

Положил:

установить bs = 2

в .vimrc

Нашел это по адресу http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html

11

Работал для меня: В командной строке Windows введите

echo export TERM=cygwin >> C:/cygwin/home/YourUser/.bashrc

Это добавит его в .bashrc и все может работать хорошо!

11

Я нашел решение проблемы, которая была представлена выше.

Просто запустите установку Cygwin снова и переустановите termcap и terminfo . Если вы используете окно поиска, вы можете найти их быстро. Вместо того, чтобы сказать "Сохранить" для каждого, нажмите на него, чтобы сказать "Переустановить". Возможно, вам придется установить флажок "Скрыть устаревшие", чтобы term появился в поиске.

Моя папка terminfo полностью отсутствовала. Понятия не имею почему. Надеюсь, это кому-нибудь поможет.

5

Отредактируйте ваш c:\cygwin\cygwin.bat

Поместите это: SET TERM=cygwin

до: bash --login -i

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' в символ стирания / удаления ..

-D

0

Изменение переменной TERM на cygwin и добавление SET TERM=cygwin в файл .bat у меня не сработало, но я исправил это. Вот что я сделал: В диспетчере пакетов из-за установки я выбрал установку xterm: X11 terminal emulator , после установки я добавил SET TERM=xterm в файл .bat (как предложено выше), запустил терминал и в меню « Параметры» -> « Терминал» выбрал « Type=xterm , затем перезапустил терминал. Backspace начал работать правильно!

Примечание: если вы уже установили cygwin - просто запустите установщик снова и добавьте пакет xterm.

Я бегу:

  • ОС = Windows 8 (x64)
  • Cygwin setup.exe версия = 2.850 (x64)
  • Mitty версия = 1.2-бета1 (x86_64-pc-cygwin)
0

Я согласен со всеми ответами здесь. Но здесь есть гораздо более простой способ:http://lifepluslinux.blogspot.in/2014/08/backspace-doesnt-work-in-vim-on-cygwin.html

0

Хорошо, у меня была проблема с ручным обновлением установки Cygwin. В любом случае я нашел этот пост, который привел меня к решению для моей установки.

У старого cygwin был файл /etc/terminfo/c/cygwin , но в более новом cygwin ожидалось, что файл будет /etc/terminfo/63/cygwin .

После того, как я скопировал файл "cygwin" в это место, клавиша Backspace оболочки bash работала нормально, как и Tab и другие.

0

Потратив 2 дня на чтение материалов в Интернете. Я нашел этот, который работал для меня. Я не знаю, соответствует ли этот случай каждому. Но это сработало как обаяние для меня благодаря Юксель

Проблема была с файлами 'termInfo', Шаги, которые он предложил

  1. подтвердите, если проблема связана с терминалом, введя в CygWin Terminal, это должно дать (игнорируйте предупреждение)

    less my_session.log

ВНИМАНИЕ: терминал не полностью функционален

  1. Получите информацию о TermCap, к которому относится путь или каталог, введя приведенный ниже код в терминале CygWin.

    infocmp -C

вы должны либо получить

infocmp: не удалось открыть файл terminfo /usr/share/terminfo/63/cygwin

Или вы можете также получить что-то, начинающееся с текста вроде «Реконструкция через infocmp ...»'

  1. Запустите приведенный ниже код в терминале 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, авто

...

  1. проверить на строку, аналогичную

C:\cygwin\etc\terminfo /usr /share /terminfo, двоичный файл системы, noacl

из вывода, вы получили от 3-го шага. Теперь скопируйте все файлы и папки, которые существуют в /usr/share/terminfo, в папку C:\cygwin\etc\terminfo - ПРИМЕЧАНИЕ: эта папка может отличаться от вашей в зависимости от установки

0

Работал для меня: В командной строке Windows введите

(echo; echo "export TERM=cygwin") >> ~/.bash_profile

Это добавит его в .bash_profile (не .bashrc, который у меня не сработал, и с разрывом лидирующей строки)

-1

Никогда не сталкивался с вашей проблемой. Попробуйте установить эмулятор терминала Mintty (http://code.google.com/p/mintty/).

Это доступно через установщик Cygwin. Лучший терминал для Cygwin.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .