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
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
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.
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!
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 ..
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.
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.
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
mengkonfirmasi jika masalahnya terkait terminal dengan mengetik di Terminal CygWin, ini harus memberi (abaikan peringatan)
less my_session.log
PERINGATAN: terminal tidak berfungsi penuh
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 ...'
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
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
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.
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
stty
perintah itu?Jawaban:
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
sumber
Bekerja untuk saya: Di prompt perintah Windows, ketik
Ini akan menambahkannya ke
.bashrc
dan semuanya dapat berfungsi dengan baik!sumber
TERM
mengatur variabel lingkunganmsys
melalui pengaturan variabel lingkungan Windows seperti yang disarankan pada StackOverflow untuk membantugit
masalah pada Windows. Cukup mengatur ulang kecygwin
dalam.bashrc
tidak membantu, tetapi menghapusTERM
entri dari pengaturan Windows berhasil. Terima kasih telah menunjukkan saya ke arah yang benar!Saya menemukan solusi untuk masalah yang disajikan seperti yang di atas.
Cukup jalankan pengaturan Cygwin lagi dan instal ulang
termcap
danterminfo
. 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" untukterm
muncul dalam pencarian.Folder terminfo saya sepenuhnya hilang. Tidak tahu kenapa. Semoga ini bisa membantu seseorang.
sumber
Edit c Anda: \ cygwin \ cygwin.bat
Tempat ini:
SET TERM=cygwin
sebelum:
bash --login -i
sumber
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:
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:
Sebagian besar waktu akan terlihat seperti ini:
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
sumber
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.
sumber
Mengubah
TERM
variabel kecygwin
dan menambahkanSET TERM=cygwin
ke.bat
file tidak berfungsi untuk saya, tetapi saya memperbaikinya. Di sini yang saya lakukan: Dalam instalasi manajer paket karena saya memilih untuk menginstalxterm: X11 terminal emulator
, setelah instalasi saya menambahkanSET TERM=xterm
ke.bat
file (seperti yang diusulkan di atas), meluncurkan terminal dan dalam Pilihan -> menu Terminal yang dipilihType=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:
sumber
Saya setuju dengan semua jawaban di sini. Namun ada cara yang jauh lebih sederhana yang ditemukan di sini: http://lifepluslinux.blogspot.in/2014/08/backspace-doesnt-work-in-vim-on-cygwin.html
sumber
Bekerja untuk saya: Di prompt perintah Windows, ketik
Ini akan menambahkannya ke .bash_profile (bukan .bashrc, yang tidak berfungsi untuk saya, dan dengan jeda baris terdepan)
sumber
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
mengkonfirmasi jika masalahnya terkait terminal dengan mengetik di Terminal CygWin, ini harus memberi (abaikan peringatan)
less my_session.log
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
Atau Anda mungkin juga mendapatkan sesuatu yang dimulai dengan teks seperti 'Direkonstruksi via infocmp ...'
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
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
sumber
Silakan ikuti gambar di bawah ini
options
Keys
tabBackarrow sends ^H
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.sumber
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.
sumber