Backspace không hoạt động trong Cygwin


29

Tôi vừa cài đặt Cygwin và chức năng BACKSPACE không có ở đó, tức là khi tôi nhấn phím Backspace, tôi nhận được một khoảng trắng.

Tôi đã cố gắng nghiên cứu vấn đề này trên Google, nhưng không tìm thấy kết luận gì.


Bạn có thể cung cấp thêm chi tiết về cách bạn đã cài đặt và gọi Cygwin không, và chính xác thì phím backspace không hoạt động ở đâu?
ak2

1
Tôi đoán điều này đang xảy ra trong vỏ. Điều gì xảy ra khi bạn gõ control-V theo sau là backspace? Và đầu ra của sttylệnh là gì?
Keith Thompson

Bạn có loại bàn phím nào? Hoa Kỳ, Vương quốc Anh, v.v.
pjc50

Bạn đã bao giờ giải quyết điều này? Bây giờ tôi đang thấy nó trên bản cài đặt Cygwin mới của tôi, mặc dù trước đó nó đã hoạt động. Điều đáng chú ý là bạn không nhận được "khoảng trắng": Không thể di chuyển con trỏ trở lại để xóa ký tự. Không gian bạn nhìn thấy là không gian được cho là dẫm lên nhân vật trước đó. Nếu bạn nhấn ^ L, bạn có thể thấy backspace IS đang hoạt động. Đây là lý do tại sao stty không sửa chữa mọi thứ. Nó gần giống như vỏ CMD mà Cygwin bị ràng buộc là không thể giải thích chuyển động của con trỏ.
Một sốCallMeTim

Câu trả lời:


33

Trong trường hợp của tôi, backspace hoàn toàn không hoạt động sau khi tạo khoảng trống ~ / .vimrc. Sau thay đổi đã làm cho nó hoạt động

Đặt:

đặt bs = 2

trong .vimrc

Tìm thấy điều này tại http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html


Cảm ơn bạn, điều này đã làm việc cho tôi - trước đây, trong Vim, phím backspace của tôi đã di chuyển trở lại dọc theo dòng nhưng không xóa các chữ cái cho đến khi tôi bắt đầu nhập. Bây giờ nó thực hiện backspace 'thông thường'.
Robert

4
Thật tuyệt khi câu trả lời này đã giúp một số người dùng khác, nhưng trong trường hợp này, đó không phải là giải pháp cho câu hỏi vì câu hỏi ban đầu không hỏi về vim.
Kelsin

Điều này cũng giải quyết một vấn đề tương tự tôi gặp phải với các phím con trỏ
Steve Paul

12

Làm việc cho tôi: Trong dấu nhắc lệnh của Windows, gõ

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

Điều này sẽ thêm nó vào .bashrcvà mọi thứ có thể hoạt động tốt!


1
Tôi đã TERMđặt biến môi trường được đặt thành msysthông qua cài đặt biến môi trường Windows như được đề xuất trên StackOverflow để giúp gitkhắc phục các sự cố trên Windows. Đơn giản chỉ cần đặt lại cygwintrong .bashrckhông giúp đỡ, nhưng loại bỏ các TERMentry từ các cài đặt của Windows đã làm. Cảm ơn đã chỉ cho tôi đi đúng hướng!
Florian Brucker

Điều này đã giải quyết thực tế rằng cygwin64 đã bỏ qua các khoảng trống trong các lệnh chứa ngắt dòng. Cảm ơn.
suanik

11

Tôi tìm thấy một giải pháp cho một vấn đề được trình bày như vấn đề ở trên.

Đơn giản chỉ cần chạy lại thiết lập Cygwin và cài đặt lại termcapterminfo. Nếu bạn sử dụng hộp tìm kiếm, bạn có thể tìm thấy chúng một cách nhanh chóng. Thay vì nói "Keep" cho mỗi cái, hãy nhấp vào nó để nói "Cài đặt lại". Bạn có thể phải kiểm tra hộp kiểm "Ẩn lỗi thời" termđể xuất hiện trong tìm kiếm.

Thư mục terminfo của tôi đã hoàn toàn bị mất. Không biết tại sao. Hy vọng điều này sẽ giúp được ai đó.


1
Tôi đã có một cài đặt tùy chỉnh, mà tôi đã gỡ bỏ. Sau khi gỡ bỏ và cài đặt lại qua cygwin setup.exe, tôi gặp vấn đề này. Tôi không muốn áp dụng một dải băng bằng cách đặt các biến TATE cho một cái gì đó khác với những gì đang hoạt động trước tai nạn của tôi. Cài đặt lại terminfo (tôi không thể tìm thấy termcap) làm việc cho tôi. Cảm ơn!
Kelsin

tuyệt, làm việc, nhưng tại sao?!
Yordan Georgiev

5

Chỉnh sửa c: \ cygwin \ cygwin.bat

Đặt cái này: SET TERM=cygwin

trước: bash --login -i


1
Các sửa chữa đơn giản nhất cho đến nay. Hy vọng không có tác dụng phụ.
RomanSt

1

Khi bạn đặt loại TERM, bạn sẽ báo cho máy chủ biết TERMCAP sẽ sử dụng để vẽ trong cửa sổ terminal. Hầu hết các máy chủ * NIX không biết loại thuật ngữ 'cygwin' là gì nên họ không biết cách thực hiện các thao tác ký tự trên màn hình như chèn, xóa, cuộn, thay đổi phông chữ, v.v.

Nếu bạn thay đổi biến TERM trong CYGWIN trước khi telnet hoặc SSH thành máy chủ, bạn sẽ nhận được kết quả tốt hơn nhiều:

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

Bây giờ máy chủ lưu trữ biết bạn có loại thiết bị đầu cuối ANSI và nó có thể sử dụng tệp ANSI TERMCAP để cho nó biết cách giao tiếp.

Nếu bạn không thể làm cho nó hoạt động và hầu hết mọi thứ đều hoạt động chính xác ngoại trừ backspace, bạn có thể lập trình lại "getty" trên máy chủ mà bạn kết nối để nhận ra những gì bạn muốn, và đây là cách (đây là cách lâu đời nhất, phổ biến nhất và phổ biến nhất cách giải quyết vấn đề backspace / xóa):

Bạn ssh hoặc telnet đến máy chủ của bạn và trong máy chủ bạn chạy lệnh stty. Nếu bạn nhấn phím "BACKSPACE" và nó không bị lạc hậu bởi vì thiết bị đầu cuối có thể đang tìm kiếm một ký tự khác dựa trên loại TERM. Thay vì tìm hiểu tất cả những điều đó, bạn có thể đặt định nghĩa backspace theo cách thủ công tại CLI hoặc trong tệp .profile, .bashrc hoặc .bash-profile trong thư mục $ HOME của bạn như bạn mong muốn hoặc dựa trên hương vị của * NIX bạn sử dụng.

Vì vậy, nếu bạn nhấn ^ H (đó là KIỂM SOÁT-H) và phím của bạn sao lưu nhưng bạn nhấn phím BACKSPACE và nó không thử sử dụng stty như sau:

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

Hầu hết thời gian nó sẽ trông như thế này:

stty erase \^?[ENTER]

'\' Nói với nó rằng ký tự tiếp theo sẽ là ký tự điều khiển không in được và chấp nhận nó, không "diễn giải" nó.

Khi bạn nhấn [ENTER], bạn sẽ có thể nhấn phím [BACKSPACE] và xóa lùi / xóa bất cứ thứ gì bạn đã nhập.

Bạn có thể đặt cái này trong vỏ của bạn.

Bây giờ, nếu bạn vẫn sử dụng VI, đôi khi bản dịch không hoạt động và bạn phải thực sự gõ ^ H trong vi, nhưng không sao.

Bạn có thể nói:

xóa stty k [ENTER]

và theo nghĩa đen nó đã dịch 'k' thành ký tự xóa / xóa ..

-D


0

Ok, tôi đã có vấn đề này với việc cập nhật thủ công cài đặt Cygwin. Dù sao tôi đã tìm thấy bài đăng này , dẫn tôi đến giải pháp cho cài đặt của tôi.

Cygwin cũ hơn có một tệp /etc/terminfo/c/cygwin, nhưng trong cygwin mới hơn, nó mong đợi tệp đó /etc/terminfo/63/cygwin.

Khi tôi đã sao chép tệp "cygwin" vào vị trí này, phím backspace bash shell hoạt động tốt, cũng như tab và các thứ khác.


0

Thay đổi TERMbiến cygwinvà thêm SET TERM=cygwinvào .battệp không hoạt động với tôi, nhưng tôi đã sửa nó. Dưới đây là những gì tôi đã làm: Trong quản lý gói cài đặt do tôi lựa chọn để cài đặt xterm: X11 terminal emulator, sau khi cài đặt tôi đã thêm SET TERM=xtermvào .battập tin (như đề xuất ở trên), tung ra thiết bị đầu cuối và trong Tùy chọn -> ga menu đã chọn Type=xterm, sau đó khởi động lại thiết bị đầu cuối. Backspace bắt đầu hoạt động chính xác!

Lưu ý: nếu bạn đã cài đặt cygwin - chỉ cần chạy lại trình cài đặt và thêm gói xterm.

Tôi đang chạy:

  • HĐH = Windows 8 (x64)
  • Phiên bản Cygwin setup.exe = 2.850 (x64)
  • Phiên bản Mitty = 1.2-beta1 (x86_64-pc-cygwin)


0

Làm việc cho tôi: Trong dấu nhắc lệnh của Windows, gõ

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

Điều này sẽ thêm nó vào .bash_profile (không phải .bashrc, không hoạt động với tôi và với một ngắt dòng hàng đầu)


0

Sau khi dành 2 ngày thời gian để đọc công cụ trực tuyến. Tôi tìm thấy cái này làm việc cho tôi. Tôi không biết trường hợp này phù hợp với mọi người. Nhưng nó làm việc như một cơ duyên với tôi nhờ Yuksel

Vấn đề là với các tệp 'termInfo', Các bước anh ấy đã đề xuất

  1. xác nhận nếu sự cố liên quan đến thiết bị đầu cuối bằng cách nhập vào CygWin Terminal, điều này sẽ đưa ra (bỏ qua cảnh báo)

    less my_session.log

CẢNH BÁO: thiết bị đầu cuối không đầy đủ chức năng

  1. Nhận thông tin của 'TermCap' đến đường dẫn hoặc thư mục mà nó có liên quan đến bằng cách nhập mã bên dưới vào CygWin Terminal

    infocmp -C

bạn nên lấy

infocmp: không thể mở tệp terminfo / usr / share / terminfo / 63 / cygwin

Hoặc bạn cũng có thể nhận được một cái gì đó bắt đầu bằng văn bản như 'Tái tạo thông qua infocmp ...'

  1. Chạy mã dưới đây trong CygWin Terminal để chạy chẩn đoán để có thêm thông tin chi tiết về đường dẫn lưu tệp

    cygcheck -s

nó sẽ trả lời bạn tương tự như văn bản dưới đây

Chẩn đoán cấu hình Cygwin

...

C: / cygwin / hệ thống nhị phân, noacl

Hệ thống nhị phân C: / cygwin / bin / usr / bin, noacl

Hệ thống nhị phân C: / cygwin / lib / usr / lib, noacl

C: \ cygwin \ etc \ terminfo / usr / share / terminfo hệ thống nhị phân, noacl

tiền tố cygdrive / cygdrive người dùng nhị phân, noacl, posix = 0, auto

...

  1. kiểm tra dòng tương tự như

C: \ cygwin \ etc \ terminfo / usr / share / terminfo hệ thống nhị phân, noacl

từ đầu ra, bạn đã nhận được từ bước thứ 3. bây giờ sao chép tất cả các tệp và thư mục tồn tại bên trong / usr / share / terminfo vào thư mục C: \ cygwin \ etc \ terminfo - LƯU Ý: thư mục này có thể khác với thư mục của bạn tùy thuộc vào cài đặt


0

Hãy làm theo hình ảnh dưới đây nhập mô tả hình ảnh ở đây

  1. Nhấp chuột phải vào bất cứ nơi nào trong cửa sổ Cygwin
  2. Nhấp chuột options
  3. Nhấp vào Keystab
  4. Đánh dấu Backarrow sends ^H
  5. Nhấn áp dụng.

Đây là điều duy nhất hiệu quả với tôi, đặc biệt là nếu bạn phải SSH tới máy chủ (không phải tất cả các bản sửa lỗi đều hoạt động) Tôi đã sử dụng để thêm stty erase ^?vào .bashrc của mình nhưng điều này chỉ khắc phục được 80% thời gian.


-1

Chưa bao giờ gặp vấn đề của bạn. Hãy thử cài đặt Trình mô phỏng đầu cuối Mintty ( http://code.google.com.vn/p/mintty/ ).

Nó có sẵn thông qua trình cài đặt Cygwin. Thiết bị đầu cuối tốt nhất cho cygwin.


Điều này đã không giúp đỡ.
dùng620189

Ngay cả bị mắc kẹt trong cùng một vấn đề và từ minty cũng chức năng backspace không hoạt động. Tôi nhận được không gian khi tôi nhấn backspace trên cả thiết bị đầu cuối minty cũng như thiết bị đầu cuối cygwin
Rachel

@Rachel Bạn đã bao giờ giải quyết điều này? Tôi đang gặp vấn đề tương tự với bản cài đặt Cygwin mới. :(
Một sốCallMeTim

@SomeCallMeTim: Tôi đã có thể khắc phục vấn đề này bằng cách sử dụng Minty, cygwin hành xử theo cách rất khôn ngoan đôi khi.
Rachel

@Rachel Cảm ơn, mặc dù tôi phát hiện ra rằng vấn đề của tôi là cài đặt Cygwin đã bỏ lỡ một số tệp quan trọng (như / usr / lib / terminfo). Tôi không biết tại sao họ lại mất tích; tìm thấy một người khác với vấn đề đó, đã đi vào thiết lập và nói với terminfo và termcap để cài đặt lại, và mọi thứ đều hoạt động.
Một sốCallMeTim
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.