У Cygwin Backspace не працює


29

Щойно я встановив Cygwin, і функціональності BACKSPACE немає, тобто коли я натискаю клавішу Backspace, я отримую пробіл.

Я намагався дослідити цю проблему в Google, але не знайшов нічого переконливого.


Чи можете ви детальніше розповісти про встановлення та виклик Cygwin та де саме не працює клавіша зворотної області?
ak2

1
Я здогадуюсь, що це відбувається в оболонці. Що відбувається, коли ви вводите control-V, а потім - зворотна область? І який результат sttyкоманди?
Кіт Томпсон

Яка у вас клавіатура? США, Великобританія тощо
pjc50

Ви коли-небудь вирішували це? Зараз я бачу це на моїй новій установці Cygwin, хоча раніше вона працювала. Варто зазначити, що ви не отримуєте "пробіл": не вдається перемістити курсор назад, щоб стерти символ. Простір, який ви бачите, - це простір, який повинен був наткнутися на попереднього персонажа. Якщо натиснути ^ L, ви побачите, що backspace працює. Ось чому stty не виправляє речі. Це майже як оболонка CMD, до якої зобов'язаний Cygwin, не в змозі інтерпретувати рух курсору.
SomeCallMeTim

Відповіді:


33

У моєму випадку резервна область взагалі не працювала після створення порожнього ~ / .vimrc. Після зміни зміни це зробило роботу

Покладіть:

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

в .vimrc

Знайдено це на веб-сторінці http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html


Дякую, це працювало для мене - раніше у Vim клавіша зворотної області рухалася назад по лінії, але не очищала літери, поки я не почала вводити текст. Тепер він робить "звичайний" простір.
Роберт

4
Чудово, що ця відповідь допомогла іншим користувачам, але в цьому випадку це не вирішення питання, оскільки в оригінальному питанні не йдеться про vim.
Кельсін

Це також вирішило подібну проблему, з якою у мене виникали клавіші курсору
Стів Пол,

12

Для мене: У командному рядку Windows введіть

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

Це додасть його до .bashrcі все може працювати чудово!


1
У мене була встановлена TERMзмінна середовища msysчерез налаштування змінної середовища Windows, як це запропоновано в StackOverflow, щоб допомогти з gitпроблемами в Windows. Просто скинути його cygwinв .bashrcне допоможе, але витягувати TERMзапис з налаштувань Windows , і зробили. Дякую, що вказали на мене в правильному напрямку!
Флоріан Брюкер

Це вирішило той факт, що cygwin64 ігнорує зворотні простори в командах, що містять розриви рядків. Спасибі.
suanik

11

Я знайшов рішення проблеми, яка була такою, як описана вище.

Просто запустіть інсталяцію Cygwin ще раз і перевстановіть termcapі terminfo. Якщо ви використовуєте поле пошуку, ви можете швидко їх знайти. Замість того, щоб говорити "Зберігати" для кожного, натисніть на нього, щоб він сказав "Перевстановити". Можливо, вам доведеться встановити прапорець "Сховати застаріле", termщоб відобразитись у пошуку.

Моя папка terminfo повністю відсутня. Не знаю чому. Сподіваюся, що це комусь допоможе.


1
У мене були спеціально встановлені ncurses, які я видалив. Після видалення та перевстановлення через cygwin setup.exe у мене виникла ця проблема. Я не хочу застосовувати бандаїд, встановлюючи змінні TERM до чогось іншого, ніж до того, що працювало до моєї неспроможності. Переустановка terminfo (я не могла знайти термічну капу) працювала для мене. Спасибі!
Кельсін

круто, працює, але чому ?!
Йордан Георгієв

5

Відредагуйте свій c: \ cygwin \ cygwin.bat

Розмістіть це: SET TERM=cygwin

перед: bash --login -i


1
Найпростіший виправити на сьогоднішній день. Сподіваюся, побічних ефектів немає.
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. Замість того, щоб переглядати все це, ви можете вручну встановити визначення зворотної області в CLI або у вашому .profile, .bashrc або .bash-профільному файлі у вашому каталозі $ HOME за вашим бажанням або на основі аромату * NIX ви використовуючи.

Отже, якщо ви натискаєте ^ H (це CONTROL-H) і ваша клавіша створює резервну копію, але ви натискаєте клавішу BACKSPACE, і вона не намагається використовувати stty так:

stty erase \*<HIT YOUR BACKSPACE KEY HERE>*[ENTER]

Більшість часу це буде виглядати так:

stty erase \^?[ENTER]

'\' Повідомляє, що наступний символ буде контрольним символом, який не можна роздрукувати, і прийняти його, а не "інтерпретувати" його.

Після натискання клавіші [ENTER] ви зможете натиснути клавішу [BACKSPACE] і повернути її назад / видалити все, що ви ввели.

Ви можете встановити це у своїй оболонці.

Тепер, якщо ви все ще використовуєте VI, іноді переклад не працює, і вам потрібно насправді набрати ^ H in vi, але це нормально.

Ви могли сказати:

stty стирати k [ENTER]

і це буквально перевело б "k" в символ стирання / видалення ..

-D


0

Гаразд, у мене виникла ця проблема з оновленням установки Cygwin вручну. У будь-якому разі я знайшов цю посаду , яка привела мене до рішення для моєї установки.

У старшій cygwin був файл /etc/terminfo/c/cygwin, але в новій cygwin очікували, що файл буде /etc/terminfo/63/cygwin.

Після того, як я скопіював файл "cygwin" в це місце, ключ зворотної області оболонки bash спрацював нормально, як і вкладка та інші.


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-beta1 (x86_64-pc-cygwin)


0

Для мене: У командному рядку Windows введіть

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

Це додасть його до .bash_profile (не .bashrc, який не працював для мене, і з перервою на ведучому рядку)


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 / система бінарний, noacl

C: / cygwin / bin / usr / bin system binary, noacl

C: / cygwin / lib / usr / lib система двійкова, noacl

C: \ cygwin \ etc \ terminfo / usr / share / terminfo system binary, noacl

префікс cygdrive / cygdrive користувача binary, noacl, posix = 0, auto

...

  1. перевірити рядок, подібний до

C: \ cygwin \ etc \ terminfo / usr / share / terminfo system binary, noacl

з результату ви отримали з 3-го кроку. тепер скопіюйте всі файли та папки, які існують всередині / usr / share / terminfo, у папку C: \ cygwin \ etc \ terminfo - ПРИМІТКА: ця папка може відрізнятися від вашої залежно від установки


0

Будь ласка, дотримуйтесь зображення нижче введіть тут опис зображення

  1. Клацніть правою кнопкою миші в будь-якому місці вікна Cygwin
  2. Клацніть options
  3. Перейдіть на Keysвкладку
  4. Поставте галочку Backarrow sends ^H
  5. Натисніть застосувати.

Це єдине, що працювало для мене, тим більше, що якщо вам доведеться SSH на сервер (не всі виправлення працюватимуть), я використовував, щоб додати stty erase ^?до свого .bashrc, але це вирішило проблему лише 80% часу.


-1

Ніколи не відчували своєї проблеми. Спробуйте встановити емулятор терміналу Mintty ( http://code.google.com/p/mintty/ ).

Він доступний через інсталятор Cygwin. Кращий термінал для cygwin.


Це не допомогло.
користувач620189

Навіть я застряг у тому ж питанні, і від minty також функція backspace не працює. Я отримую простір, коли потрапляю на задній простір на обох термінових терміналах, а також на термінал cygwin
Рейчел

@Rachel Ви коли-небудь вирішували це? Я бачу ту саму проблему зі свіжою установкою Cygwin. :(
SomeCallMeTim

@SomeCallMeTim: мені вдалося виправити цю проблему, використовуючи Minty, cygwin поводиться часом дуже жорстоко.
Рейчел

@Rachel Дякую, хоча я виявив, що моя проблема полягала в тому, що програма Cygwin пропустила деякі важливі файли (наприклад, / usr / lib / terminfo). Я не знаю, чому вони пропали безвісти; знайшов ще когось із цим питанням, увійшов у налаштування і сказав терміну та терміну перевстановити, і все спрацювало.
SomeCallMeTim
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.