Backspace tidak berfungsi di Cygwin


29

Saya baru saja menginstal Cygwin dan fungsi BACKSPACE tidak ada, yaitu ketika saya menekan tombol Backspace, saya mendapatkan spasi.

Saya sudah mencoba untuk meneliti masalah ini di Google, tetapi tidak menemukan sesuatu yang konklusif.


Bisakah Anda memberikan rincian lebih lanjut tentang bagaimana Anda menginstal dan memanggil Cygwin, dan di mana tepatnya tombol backspace gagal berfungsi?
ak2

1
Saya menduga ini terjadi di shell. Apa yang terjadi ketika Anda mengetik control-V diikuti oleh backspace? Dan apa output dari sttyperintah itu?
Keith Thompson

Jenis keyboard apa yang Anda miliki? AS, Inggris, dll.
pjc50

Apakah Anda pernah menyelesaikan ini? Saya melihatnya sekarang di instalasi Cygwin baru saya, meskipun sebelumnya berfungsi. Perlu dicatat bahwa Anda tidak mendapatkan "spasi": Gagal memindahkan kursor ke belakang untuk menghapus karakter. Ruang yang Anda lihat adalah ruang yang seharusnya menginjak karakter sebelumnya. Jika Anda menekan ^ L Anda dapat melihat bahwa backspace IS berfungsi. Inilah sebabnya mengapa stty tidak memperbaiki hal-hal. Hampir seperti shell CMD yang terikat dengan Cygwin gagal menafsirkan gerakan kursor.
SomeCallMeTim

Jawaban:


33

Dalam kasus saya, backspace sama sekali tidak berfungsi setelah membuat blank ~ / .vimrc. Mengikuti perubahan membuatnya berhasil

Taruh:

set bs = 2

dalam .vimrc

Menemukan ini di http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html


Terima kasih, ini berhasil untuk saya - sebelumnya, di Vim, tombol backspace saya bergerak kembali sepanjang garis tetapi tidak menghapus surat sampai saya mulai mengetik. Sekarang melakukan backspace 'biasa'.
Robert

4
Sangat bagus bahwa jawaban ini membantu beberapa pengguna lain, tetapi dalam hal ini bukan solusi untuk pertanyaan karena pertanyaan awal tidak menanyakan tentang vim.
Kelsin

Ini juga menyelesaikan masalah serupa yang saya alami dengan tombol kursor
Steve Paul

12

Bekerja untuk saya: Di prompt perintah Windows, ketik

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

Ini akan menambahkannya ke .bashrcdan semuanya dapat berfungsi dengan baik!


1
Saya TERMmengatur variabel lingkungan msysmelalui pengaturan variabel lingkungan Windows seperti yang disarankan pada StackOverflow untuk membantu gitmasalah pada Windows. Cukup mengatur ulang ke cygwindalam .bashrctidak membantu, tetapi menghapus TERMentri dari pengaturan Windows berhasil. Terima kasih telah menunjukkan saya ke arah yang benar!
Florian Brucker

Ini memecahkan fakta bahwa cygwin64 mengabaikan backspaces dalam perintah yang berisi jeda baris. Terima kasih.
suanik

11

Saya menemukan solusi untuk masalah yang disajikan seperti yang di atas.

Cukup jalankan pengaturan Cygwin lagi dan instal ulang termcapdan terminfo. Jika Anda menggunakan kotak pencarian, Anda dapat menemukannya dengan cepat. Alih-alih mengatakan "Simpan" untuk masing-masing, klik untuk membuatnya mengatakan "Instal ulang". Anda mungkin harus mencentang "Hide Usang" untuk termmuncul dalam pencarian.

Folder terminfo saya sepenuhnya hilang. Tidak tahu kenapa. Semoga ini bisa membantu seseorang.


1
Saya memiliki ncurses yang diinstal khusus, yang saya hapus. Setelah menghapus dan menginstal ulang melalui cygwin setup.exe, saya mengalami masalah ini. Saya tidak ingin menerapkan bandaid dengan mengatur variabel TERM untuk sesuatu selain yang berfungsi sebelum kecelakaan saya. Menginstal ulang terminfo (saya tidak dapat menemukan termcap) berfungsi untuk saya. Terima kasih!
Kelsin

keren, bekerja, tapi mengapa ?!
Yordan Georgiev

5

Edit c Anda: \ cygwin \ cygwin.bat

Tempat ini: SET TERM=cygwin

sebelum: bash --login -i


1
Perbaikan paling sederhana sejauh ini. Semoga tidak ada efek samping.
RomanSt

1

Ketika Anda mengatur tipe TERM Anda memberi tahu host TERMCAP mana yang akan digunakan untuk menggambar di dalam jendela terminal. Sebagian besar * host NIX tidak tahu apa termtype 'cygwin' sehingga mereka tidak tahu bagaimana melakukan manipulasi karakter pada layar seperti memasukkan, menghapus, gulir, perubahan font, dll.

Jika Anda mengubah variabel TERM di CYGWIN sebelum telnet atau SSH ke host, Anda akan mendapatkan hasil yang lebih baik:

Dalam 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
$_

Tuan rumah sekarang tahu Anda memiliki jenis terminal ANSI dan dapat menggunakan itu file ANSI TERMCAP untuk memberi tahu cara berkomunikasi.

Jika Anda tidak bisa menjalankannya dan sebagian besar semuanya berfungsi dengan baik kecuali backspace, Anda dapat memprogram ulang "getty" pada host yang Anda sambungkan untuk mengenali apa yang Anda inginkan, dan inilah caranya (ini adalah yang tertua, paling umum, dan paling universal) cara memecahkan backspace / menghapus masalah):

Anda ssh atau telnet ke host Anda dan di host Anda menjalankan perintah stty. Jika Anda menekan tombol "BACKSPACE" dan tidak mundur, itu karena terminal mungkin mencari karakter yang berbeda berdasarkan jenis TERM. Daripada menggali semua itu, Anda dapat secara manual mengatur definisi backspace di CLI atau di file profil, .bashrc, atau .bash di dalam direktori $ HOME Anda sesuai keinginan atau berdasarkan rasa * NIX Anda. menggunakan.

Jadi jika Anda menekan ^ H (itu CONTROL-H) dan kunci Anda kembali tetapi Anda menekan tombol BACKSPACE dan itu tidak mencoba menggunakan stty sebagai berikut:

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

Sebagian besar waktu akan terlihat seperti ini:

stty erase \^?[ENTER]

Tanda '\' mengatakan bahwa karakter selanjutnya akan menjadi karakter kontrol yang tidak dapat dicetak dan menerimanya, bukan "menafsirkannya".

Setelah Anda menekan [ENTER] Anda harus dapat menekan tombol [BACKSPACE] Anda dan membuatnya mundur / menghapus apa pun yang Anda ketikkan.

Anda dapat mengatur ini di shell Anda.

Sekarang, jika Anda masih menggunakan VI, terkadang terjemahannya tidak berfungsi dan Anda harus benar-benar mengetikkan ^ H in vi, tapi tidak apa-apa.

Anda bisa mengatakan:

stty erase k [ENTER]

dan secara harfiah akan menerjemahkan 'k' ke dalam karakter hapus / hapus ..

-D


0

Oke, saya mengalami masalah ini dengan memperbarui instalasi Cygwin secara manual. Pokoknya saya menemukan posting ini , yang membawa saya ke solusi untuk instalasi saya.

Cygwin yang lebih lama memiliki file /etc/terminfo/c/cygwin, tetapi di cygwin yang lebih baru diharapkan file tersebut /etc/terminfo/63/cygwin.

Setelah saya menyalin file "cygwin" ke lokasi ini, kunci backspace shell bash berfungsi dengan baik, seperti halnya tab dan lainnya.


0

Mengubah TERMvariabel ke cygwindan menambahkan SET TERM=cygwinke .batfile tidak berfungsi untuk saya, tetapi saya memperbaikinya. Di sini yang saya lakukan: Dalam instalasi manajer paket karena saya memilih untuk menginstal xterm: X11 terminal emulator, setelah instalasi saya menambahkan SET TERM=xtermke .batfile (seperti yang diusulkan di atas), meluncurkan terminal dan dalam Pilihan -> menu Terminal yang dipilih Type=xterm, kemudian restart terminal. Backspace mulai berfungsi dengan benar!

Catatan: jika Anda sudah menginstal cygwin - jalankan lagi penginstal dan tambahkan paket xterm.

Saya sedang berlari:

  • OS = Windows 8 (x64)
  • Cygwin setup.exe versi = 2.850 (x64)
  • Versi tetikus = 1.2-beta1 (x86_64-pc-cygwin)


0

Bekerja untuk saya: Di prompt perintah Windows, ketik

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

Ini akan menambahkannya ke .bash_profile (bukan .bashrc, yang tidak berfungsi untuk saya, dan dengan jeda baris terdepan)


0

Setelah menghabiskan 2 hari waktu membaca barang online. Saya menemukan ini yang bekerja untuk saya. Saya tidak tahu apakah kasus ini cocok dengan semua kasus. Tapi itu bekerja seperti pesona bagiku berkat Yuksel

Masalahnya dengan file 'termInfo', Langkah-langkah yang dia sarankan

  1. mengkonfirmasi jika masalahnya terkait terminal dengan mengetik di Terminal CygWin, ini harus memberi (abaikan peringatan)

    less my_session.log

PERINGATAN: terminal tidak berfungsi penuh

  1. Dapatkan informasi 'TermCap' ke jalur atau direktori mana yang terkait dengan dengan mengetikkan kode di bawah ini di Terminal CygWin

    infocmp -C

Anda juga harus mendapatkannya

infocmp: tidak bisa membuka file terminfo / usr / share / terminfo / 63 / cygwin

Atau Anda mungkin juga mendapatkan sesuatu yang dimulai dengan teks seperti 'Direkonstruksi via infocmp ...'

  1. Jalankan kode di bawah ini di Terminal CygWin untuk menjalankan diagnostik untuk mendapatkan detail tambahan tentang jalur tempat file disimpan

    cygcheck -s

yang seharusnya merespons Anda mirip dengan teks di bawah ini

Diagnostik Konfigurasi Cygwin

...

C: / cygwin / sistem biner, noacl

C: / cygwin / bin / usr / bin sistem biner, noacl

C: / cygwin / lib / usr / lib sistem biner, noacl

C: \ cygwin \ etc \ terminfo / usr / share / terminfo sistem biner, noacl

awalan cygdrive / biner pengguna cygdrive, noacl, posix = 0, otomatis

...

  1. lihat baris yang mirip dengan

C: \ cygwin \ etc \ terminfo / usr / share / terminfo sistem biner, noacl

dari output, Anda dapatkan dari langkah ke-3. sekarang salin semua file dan folder yang ada di dalam / usr / share / terminfo ke folder C: \ cygwin \ etc \ terminfo - CATATAN: folder ini mungkin berbeda dari milik Anda tergantung pada instalasi


0

Silakan ikuti gambar di bawah ini masukkan deskripsi gambar di sini

  1. Klik kanan di mana saja di jendela Cygwin
  2. Klik options
  3. Klik Keystab
  4. Kutu Backarrow sends ^H
  5. Tekan terapkan.

Ini adalah satu-satunya hal yang bekerja untuk saya, terutama karena jika Anda harus SSH ke server (tidak semua perbaikan akan berfungsi) Saya dulu menambahkan stty erase ^?ke .bashrc saya tetapi ini hanya memperbaiki masalah 80% dari waktu.


-1

Tidak pernah mengalami masalah Anda. Cobalah untuk menginstal Terminal Emulator Mintty ( http://code.google.com/p/mintty/ ).

Ini tersedia melalui penginstal Cygwin. Terminal terbaik untuk cygwin.


Ini tidak membantu.
user620189

Bahkan saya terjebak pada masalah yang sama dan dari minty juga fungsi backspace tidak berfungsi. Saya mendapatkan ruang ketika saya menekan backspace pada kedua terminal minty serta terminal cygwin
Rachel

@Rachel Apakah Anda pernah menyelesaikan ini? Saya melihat masalah yang sama dengan instalasi Cygwin baru. :(
SomeCallMeTim

@SomeCallMeTim: Saya bisa memperbaiki masalah ini dengan menggunakan Minty, cygwin berperilaku sangat aneh di kali.
Rachel

@Rachel Terima kasih, meskipun saya menemukan bahwa masalah saya adalah bahwa instalasi Cygwin melewatkan beberapa file penting (seperti / usr / lib / terminfo). Saya tidak tahu mengapa mereka hilang; menemukan orang lain dengan masalah itu, masuk ke pengaturan dan mengatakan terminfo dan termcap untuk menginstal ulang, dan semuanya bekerja
SomeCallMeTim
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.