Tại sao tôi thấy ký tự unicode è khi tôi nhập Alt-h trong xterm của mình trên CentOS?


2

Tôi đang sshing vào một hộp centos từ một hộp ubfox. Tôi tiếp tục nhìn thấy èkhi tôi gõ alt+ h(aka M-h). Tôi muốn sử dụng tổ hợp phím này trong các ràng buộc tmux nhưng nó không hoạt động vì tmuxkhông nhận ra các ký tự utf8. Tôi không có vấn đề này trên hộp Ubuntu của tôi.

Suy đoán hoang dã của tôi là điều này bằng cách nào đó liên quan đến miền địa phương. Đây là đầu ra ngôn ngữ của tôi trên CentOS:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

Tôi đã nhận thấy rằng trên Ubuntu tôi có một LANGUAGE=en_US:endòng bổ sung trong đầu ra ngôn ngữ của tôi.

Bất kỳ đề xuất?


Chỉ cần tự hỏi ... việc nhấn Esctheo sau có Hkhiến cho cùng một ký tự được xuất ra không?
BenjiWiebe

@BenjiWiebe Esc H không sản xuất cùng một char
Eric Johnson

Hmmm ... BTW, Esc Hnên là tổ hợp chính bạn muốn, nếu Alt Hkhông hoạt động bạn có thể sử dụng Esc H. Nhưng tôi hiểu rằng bạn muốn biết TẠI SAO Alt Hkhông hoạt động. Và, nói thật, tôi cũng vậy +1
BenjiWiebe

Câu trả lời:


0
tput rmm

Có vẻ để giải quyết vấn đề của tôi. Chủ yếu. Nhưng tôi không hoàn toàn hiểu tại sao.

Khi tôi chạy infocmptrên hộp centos của mình, tôi thấy điều đó rmmsmmcó các giá trị nhưng chúng không có trên hộp ubfox của tôi. Từ terminfotrang man tôi đã học được rằng rmm"tắt chế độ meta" và smm"bật chế độ meta".

Ngoài ra, nó dường như không hoạt động để thêm tput rmmvào .bashrc của tôi. Tôi phải tự chạy nó từ vỏ centos của mình. Một lần nữa tôi không hiểu tại sao.


Cơ sở dữ liệu đầu cuối của Ubuntu trong quá khứ xa hơn so với CentOS (câu chuyện dài). Sự thay đổi ngược dòng được thực hiện vào năm 2006 , để phù hợp với xterm.
Thomas Dickey

0

Tắt chế độ meta là một phần của câu trả lời. xterm có nhiều hơn một tính năng cấu hình liên quan đến điều này. Câu hỏi thường gặp Các phím Alt không hoạt động trong bash cung cấp một số nền. Về cơ bản, có hai khái niệm về chế độ meta là gì:

  • xterm và cơ sở dữ liệu đầu cuối (terminfo) ghi lại việc sử dụng khóa meta như một loại công cụ sửa đổi thay đổi, thiết lập bit thứ tám của một byte đầu vào. Hướng dẫn của xterm có một số lưu ý về chủ đề trong phần dành cho tài nguyên támBitInput . Các nhãn hiệu terminfo là gọn gàng hơn:

Nếu thiết bị đầu cuối có "khóa meta" hoạt động như một phím shift, thiết lập bit thứ 8 của bất kỳ ký tự nào được truyền, thực tế này có thể được biểu thị bằng km . Mặt khác, phần mềm sẽ cho rằng bit thứ 8 là tương đương và nó thường sẽ bị xóa. Nếu các chuỗi tồn tại để bật và tắt "chế độ meta" này, chúng có thể được cung cấp dưới dạng smmrmm .

  • bash nói rằng nó mong đợi một ký tự thoát để thêm tiền tố vào ký tự mà khóa meta được áp dụng. (Không có hồ sơ nào về việc bash quyết định điều này như thế nào và đó là khóa meta , nhưng ít nhất nó đã quay trở lại đầu những năm 1990).

Vì vậy, vấn đề là xterm đã thực hiện một chuỗi điều khiển để bật / tắt chế độ meta và bash có một số kỳ vọng về việc phải làm gì với nó. Điều kỳ lạ là bất cứ điều gì bash terminal đã được chuẩn bị đều không được ghi nhận (chắc chắn đó không phải là xterm). Tuy nhiên, chỉ trong trường hợp bash từng thấy thiết bị đầu cuối đó một lần nữa, nó sẽ bật chế độ meta theo mặc định cho bất kỳ thiết bị đầu cuối nào thực hiện nó.

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.