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ì.
stty
lệnh là gì?
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ì.
stty
lệnh là gì?
Câu trả lời:
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
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 .bashrc
và mọi thứ có thể hoạt động tốt!
TERM
đặt biến môi trường được đặt thành msys
thông qua cài đặt biến môi trường Windows như được đề xuất trên StackOverflow để giúp git
khắc phục các sự cố trên Windows. Đơn giản chỉ cần đặt lại cygwin
trong .bashrc
không giúp đỡ, nhưng loại bỏ các TERM
entry từ các cài đặt của Windows đã làm. Cảm ơn đã chỉ cho tôi đi đúng hướng!
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 termcap
và terminfo
. 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 đó.
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
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.
Thay đổi TERM
biến cygwin
và thêm SET TERM=cygwin
vào .bat
tệ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=xterm
vào .bat
tậ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:
Tôi đồng ý với tất cả các câu trả lời ở đây. Nhưng có một cách đơn giản hơn nhiều được tìm thấy ở đây: http://lifepluslinux.blogspot.in/2014/08/backspace-doesnt-work-in-vim-on-cygwin.html
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
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
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 ...'
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
...
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
Hãy làm theo hình ảnh dưới đây
options
Keys
tabBackarrow sends ^H
Đâ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.
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.