Phím home không hoạt động trong terminal


13

Tôi đang sử dụng Gnome Terminal 2.7.3 và zsh 4.3.9 (x86_64-unknown-linux-gnu)

HomeEndkhông hoạt động. Không có gì xảy ra và không có gì được hiển thị khi tôi nhấn chúng. nhưng chúng hoạt động khi tôi nhấn shift + Home(Cuộn đến đầu ra của vỏ.) và cũng hoạt động trong các chương trình GUI khác. Tôi googled và thử sau đây. Không thay đổi :(

  885  bindkey "\e[1~" beginning-of-line
  886  bindkey "\e[H" beginning-of-line
  887  bindkey "\e1~" beginning-of-line
  888  bindkey "\eH" beginning-of-line
  889  bindkey "\e[0H" beginning-of-line

PS: Khi tôi ở tab cuối cùng và nhấn Ctrl + pagedowntôi sẽ được ;5~in trên màn hình. Điều đó có cho manh mối nào không?


Bạn có một .inputrctrong thư mục nhà của bạn? Điều này xảy ra với một người dùng mới được tạo ra? Điều này luôn xảy ra, hay nó đã bắt đầu một ngày?
bahamat

Không, tôi không có .inputrc. Tôi không được phép tạo người dùng mới. Điều này luôn luôn như vậy. Tôi đang sống với ctrl +actrl+e.
balki

1
Tôi đoán trong trường hợp đó tôi sẽ không đề xuất ctrl+a& ctrl+e;-)
bahamat

Câu trả lời:


3

Tôi đang trên fedora nay nhưng tôi đề nghị bạn đọc wiki Archlinux của một cách cẩn thận , tất cả của nó: Home và End phím không làm việc .

Tôi đã làm gì để sửa nó:

  1. Nhấn Ctrl-V Home, trình tự thoát cho phím Home được in. Nó không phải \e[4~\e[1~như tôi mong đợi bằng cách nhìn vào /etc/inputrc. Nó đã [H[F

  2. Trích xuất thông tin đầu cuối infocmp $TERM >terminfo.src

  3. Mở tệp đó để chỉnh sửa, chẳng hạn như vim terminfo.src, tìm kiếm khomekendnó được gán cho một cái gì đó, giả sử khome=\E[1~kend=\E[4~không hoạt động trong trường hợp này. xóa nó và thay thế nó bằng chuỗi bạn tìm thấy ở bước # 1, vì vậy đối với tôi, sau khi chỉnh sửa nó là: khome=\E[Hkend=\E[F.

  4. Nếu bạn muốn chơi an toàn, hãy đảm bảo [F[H(hoặc bất kỳ chuỗi nào bạn vừa sử dụng) không được gán cho thứ khác hoặc mọi thứ sẽ bị rối tung!

  5. chạy tic terminfo.srcmà tạo ~/.terminfothư mục.

  6. Trên đầu trang .zshrctrước bất kỳ và tất cả các lệnh khác, đặt:export TERMINFO=~/.terminfo

Mở một cửa sổ thiết bị đầu cuối mới và bạn sẽ ổn, nhà và kết thúc phải làm việc ngay bây giờ.

PS: Phương pháp bindkey về mặt lý thuyết sẽ hoạt động và dễ dàng hơn, nhưng nó không phù hợp với tôi.


6

Chuỗi thoát được gửi bởi chức năng và phím con trỏ bao gồm một ký tự thoát theo sau là các ký tự có thể in được. Nhấn Ctrl+ Vrồi Home. Điều này sẽ chèn chuỗi thoát theo nghĩa đen. Sau đó thêm một bindkeyhướng dẫn cho của bạn ~/.zshrc.

Hướng dẫn có khả năng là (lưu ý O, không 0):

bindkey '\e[OH' beginning-of-line
bindkey '\e[OF' end-of-line

không có gì được in khi tôi nhấn Ctrl rồi Home. Chẳng có gì xảy ra. Đã thử thay đổi 0 thành O là tốt.
balki

@balki Đó là Ctrl + V, không phải Ctrl. Tôi chỉ nhận ra có một vấn đề định dạng trong câu trả lời của tôi.
Gilles 'SO- ngừng trở nên xấu xa'

Cảm ơn! :) Bây giờ tôi đã quen với ctrl + actrl +echế độ vi
balki

5

Tôi tìm thấy tôi phải nhấn CTRL-v, buông bỏ, thì Homehoặc Endchìa khóa để có được những trình tự ^[[H^[[Fcho HomeEndtương ứng. Thêm các dòng sau vào .zshrctệp đã giải quyết vấn đề cho tôi:

bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line

2

Thêm các dòng này /etc/zshrcvà sau đó thực hiện source /etc/zshrc(lấy từ đây )

bindkey '\e[1~'   beginning-of-line  # Linux console
bindkey '\e[H'    beginning-of-line  # xterm
bindkey '\eOH'    beginning-of-line  # gnome-terminal
bindkey '\e[2~'   overwrite-mode     # Linux console, xterm, gnome-terminal
bindkey '\e[3~'   delete-char        # Linux console, xterm, gnome-terminal
bindkey '\e[4~'   end-of-line        # Linux console
bindkey '\e[F'    end-of-line        # xterm
bindkey '\eOF'    end-of-line        # gnome-terminal

2

Câu trả lời này giải thích vấn đề của tôi thực sự tốt và khắc phục nó.

/programming//a/686458/5472892

TL; DR: Thay đổi loại thiết bị đầu cuối PuTTY của bạn từ mặc định xtermthành linux.

Có lẽ ai đó cũng có thể sử dụng 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.