Sử dụng các phím mũi tên ctrl với PuTTY và màn hình


33

Tôi đã tìm kiếm và không thể tìm thấy một giải pháp cho điều này ở bất cứ đâu. Tôi đang sử dụng PuTTY từ Windows để kết nối với nhiều máy chủ khác nhau nơi tôi chạy bash và màn hình. Có vẻ như bash hoạt động tốt với các phím mũi tên ctrl để chuyển từng từ trên dòng lệnh nhưng trong màn hình thì nó không hoạt động. Không có trong màn hình, ctrl-left gửi "^ [OC và ctrl-right là" ^ [OD ". Trong màn hình tôi thay vào đó là" ^ [[C "và" ^ [[D ", dường như là mã cho chỉ Các phím mũi tên trái / phải. Có cách nào để màn hình nhận ra các phím mũi tên ctrl khi sử dụng PuTTY không? (FYI, tôi không nhớ có vấn đề này khi sử dụng gnu-terminal trong linux thay vì PuTTY).

CẬP NHẬT: Có vẻ như PuTTY là vấn đề vì nó không gửi mã thoát cần thiết để làm việc này. Hiện tại tôi đang từ bỏ và sử dụng Cygwin + mintty.


Wow, mintty là tuyệt vời - đã tìm kiếm một trình giả lập thiết bị đầu cuối phong nha cho Windows một thời gian. Cảm ơn vì điều đó.
xanh

Tuy nhiên, tôi đang nhận được ^[[1;5ACtrl-Up, có vẻ đúng hơn, theo code.google.com/p/mintty/wiki/Keycodes#Coder_keys
blueyed

Câu trả lời:


13

Chỉnh sửa:

Đây là những gì làm việc cho tôi:

  • Các ~/.bashrcbộ của tôi TERM=xterm(của tôi tình TERM=xterm-256colorscờ) ghi đè lên màn hìnhTERM=screen
  • Tôi đặt PuTTY> Terminal> Tính năng> Tắt chế độ phím con trỏ ứng dụng để kiểm tra
  • Tôi nhập tput smkxtại dấu nhắc Bash
  • Bây giờ các phím Ctrl-Mũi tên nhảy từng chữ

  • Đối với mục đích thông tin, nếu tôi làm:
    tput smkx | hexdump -c
    tôi nhận
    0000000 033 [ ? 1 h 033 =

    tput rmkx | hexdump -c
    đưa cho tôi
    0000000 033 [ ? 1 l 033 >

Tôi nghĩ rằng có một cách để làm lại điều này thành một cái gì đó tốt hơn một chút, nhưng đó là những gì tôi đã có cho đến nay và nó dường như hoạt động.

Câu trả lời gốc:

Từ info screen:

Mỗi cửa sổ trong phiên `màn hình 'mô phỏng thiết bị đầu cuối VT100, với một số chức năng bổ sung được thêm vào. Trình giả lập VT100 được mã hóa cứng, không có loại thiết bị đầu cuối nào khác có thể được mô phỏng.

Và VT100 không có mã phím Ctrl-Arrow.


set -o vi(nếu bạn là kiểu người đó :)
MikeyB

1
@MikeyB: Làm thế nào để giúp đỡ (nhân tiện, nó không)?
Tạm dừng cho đến khi có thông báo mới.

Cảm ơn. Không phải là câu trả lời tôi đã hy vọng nhưng bây giờ tôi có thể tiếp tục và sống với giới hạn này hoặc sử dụng một ràng buộc quan trọng khác.
kbosak

1
@Dennis: Chà, nó cung cấp cho bạn một cách xử lý tiến / lùi khác nếu bạn là người đánh máy có thể quấn đầu quanh nó. set -o vibật chế độ dòng lệnh vi để bạn có thể nhấn ESCvà sử dụng các phím vi để di chuyển và chỉnh sửa dòng lệnh của mình.
MikeyB

1
@kbosak: Tôi cũng không hài lòng với câu trả lời đó. Đó là lý do tại sao tôi sửa nó . :-)
Tạm dừng cho đến khi có thông báo mới.

23

Như đã đề cập ở đây , bạn có thể đặt ~ / .inputrc:

"\eOD": backward-word
"\eOC": forward-word

Nó làm việc cho tôi.


5
Điều này làm việc cho tôi và dễ dàng hơn nhiều so với câu trả lời được chấp nhận.
Petrus Theron

Điều này cũng có hiệu quả với tôi, trong khi câu trả lời được chấp nhận thì không
Schiavini

+1 Câu trả lời ngắn gọn mà chỉ hoạt động.
Adam Caviness

3
Đảm bảo có $include /etc/inputrcở đầu .inputrctệp của bạn , nếu không thì đường đọc sẽ không đọc các ràng buộc trên toàn hệ thống và các khóa như Home và End sẽ bị hỏng.
James

1
Đây phải là câu trả lời được chấp nhận!
Shailen

4

Tôi hơi ngạc nhiên khi bạn yêu cầu Putty gửi chính xác các mũi tên ctrl ngay cả khi không sử dụng màn hình, vì điều đó chưa bao giờ hiệu quả với tôi. Giải pháp của tôi là chuyển sang sử dụng alt-arrowkey (meta-arrowkey), mà tôi tin rằng có cùng ràng buộc từ chuyển tiếp / từ lùi trong bash theo mặc định, mặc dù tôi đã phải đưa ra một vài lệnh bổ sung cho zsh để nhận ra chúng:

bindkey "^ [^ [[C" chuyển tiếp từ # Meta-RightArrow
bindkey "^ [^ [[D" backward-word # Meta-LeftArrow

Tôi có thể đi tuyến đường này là tốt. Phím ctrl bên trái rất dễ bấm hơn phím meta hoặc alt (ít nhất là trên bàn phím của tôi). Ồ tốt
kbosak

4

Trong trường hợp những người khác tìm thấy câu hỏi cũ này như tôi đã làm, một giải pháp gần đây hơn:

Phím Ctrl và phím mũi tên không hoạt động trong putty! Tôi làm gì?

putty đảo ngược ý nghĩa của chế độ phím con trỏ trên ctrl, điều này hơi khó để tmux phát hiện đúng. Để có được các phím ctrl đúng, hãy thay đổi cài đặt terminfo để kUP5 (Ctrl-Up, v.v.) là các phiên bản được điều chỉnh và tắt smkx / rmkx để tmux không thay đổi chế độ. Ví dụ: với dòng này trong .tmux.conf (giả sử bạn đã đặt TERM thành xterm):

đặt -g thiết bị đầu cuối ghi đè "xterm *: kLFT5 = \ eOD: kRIT5 = \ eOC: kUP5 = \ eOA: kDN5 = \ eOB: smkx @: rmkx @"

Lưu ý rằng điều này sẽ chỉ hoạt động trong tmux 1.2 trở lên.

http: // ware.mit.edu/afs/athena/project/bsd/src/tmux-1.3/FAQ


0

Bạn nên xem tài liệu của terminfo, ncurses, screen và putty nếu bạn muốn gỡ lỗi / cấu hình đúng cách. Ngoài ra các phím tắt bash có thể được cấu hình với inputrc. Nhìn vào các trang man của bash và tìm kiếm inputrc.


Tôi không nghĩ rằng thăm dò là những gì trong inputrc. Tôi đã thử một số giải pháp có thể liên quan đến việc đưa các mục vào inputrc nhưng không thành công. Một lần nữa, có vẻ như mã không chính xác đang được gửi đến màn hình cho các phím mũi tên ctrl. Tôi cũng không muốn dành nhiều thời gian hơn cho việc này vì tôi thực sự chỉ là một bất tiện nhỏ.
kbosak

0

Bạn có mã hóa ký tự đúng trong Putty không? Nếu bạn kết nối với một máy chủ trong UTF-8 và putty của bạn nằm trong bộ ký tự chuẩn, trong vim, các phím mũi tên được viết. Nếu Putty ở UTF-8, bạn có thể di chuyển con trỏ. Có lẽ nó giống nhau trong trường hợp của bạn ...


Đây hoàn toàn không phải là vấn đề vi / vim và tôi chỉ thấy một tùy chọn trong PuTTY cho bộ ký tự, không giúp được gì.
kbosak

Hãy thử các tùy chọn khác nhau trong Terminal-> Bàn phím-> Phím chức năng và bàn phím. Đối với tôi, Ctrl-Arrow cũng không hoạt động trong bash, nó cũng hoạt động giống như không nhấn Ctrl.
Giáo sư Moriarty

Vâng, tôi đã thử bao nhiêu tùy chọn và kết hợp các tùy chọn mà không gặp may mắn. FYI, có một số mục bạn có thể nhập inputrc để trợ giúp với các phím mũi tên ctrl trong bash, nhưng chúng không giúp ích khi sử dụng màn hình.
kbosak

0

Trong cấu hình putty của bạn trong Terminal -> Tính năng, có một vài hộp kiểm "vô hiệu hóa". Bạn có thể muốn thử tắt các phím con trỏ ứng dụng hoặc chế độ bàn phím ứng dụng - đôi khi putty cố gắng "quá thông minh" và gửi các ký tự điều khiển không tương thích với máy chủ.


0

Tôi đang sử dụng Terminal> Bàn phím> Phím chức năng> Xterm R6 Điều đó giúp các phím chức năng htop (tìm kiếm f4, v.v.) hoạt động như mong đợi.

Những gì tôi đã phát hiện ra là, thay vì sử dụng mũi tên CTRL +, ALT + mũi tên lại nhảy các từ thay thế.

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.