Làm cách nào để làm cho các phím mũi tên ctrl di chuyển tiến / lùi một từ tại một thời điểm trong Cygwin bash?


97

Trong cài đặt Cygwin mặc định, sử dụng CTRL-LEFTARWAY hoặc CTRL-RIGHTARWAY chỉ cần in 5C hoặc 5D thay vì bỏ qua một từ tại một thời điểm như mong đợi.

Phím Home / End hoạt động chính xác, do đó nên ánh xạ lại.


Lưu ý rằng câu hỏi này giải quyết Cygwin, nhưng có thể có ứng dụng chung cho các hệ thống Unix / Linux. Nếu bạn đang sử dụng PuTTY và thấy rằng các giải pháp ở đây không phù hợp với bạn, hãy xem một câu hỏi cụ thể về việc sử dụng mã nào cho PuTTY .
palswim

Điều này cũng xảy ra với tôi dưới một linux đầy đủ; trên một số lời khuyên trực tuyến, tôi đã thêm một ~/.inputrctệp - hủy bỏ tất cả các mặc định của Linux mint. Bạn có thể lấy lại chúng bằng cách thêm $include /etc/inputrcvào đầu ~ / .inputrc của bạn (giả sử rằng / etc / inputrc là inputrc toàn hệ thống của bạn, có trên Linux Mint)
user208769

Câu trả lời:


134

Tìm thấy một giải pháp , đăng nó ở đây cho hậu thế.

Thêm các dòng sau vào ~/.inputrc( C:\cygwin\home\<username>\.inputrc):

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Khi hoàn tất, bạn có thể nhấn C-x C-rđể đọc lại .inputrctệp cho phiên hiện tại.

Những điều cần lưu ý nếu bạn muốn các tùy chỉnh tương tự khác: Sử dụng 5A5Bcho mũi tên lên và xuống, và 2xcho các phiên bản thay đổi.

Ánh xạ khóa "chính thức" được mô tả trong Hướng dẫn tham khảo Bash , nhưng để biết cách nhanh chóng để tìm ánh xạ khóa, trong bash:

  1. loại Ctrl+V
  2. nhập chuỗi khóa bạn quan tâm (ví dụ: Alt+ ). Điều này sẽ in^[[1;3C
  3. loại bỏ hàng đầu ^[và thay thế nó \eđể thực hiện\e[1;3C
  4. đặt giá trị này trong .inputrctập tin của bạn .

Một số mã bàn phím hoàn toàn không hiển thị như <kbd> Shift </ kbd> + <kbd> Enter </ kbd>. Làm cách nào để tìm các mã bàn phím này qua Mintty / Windows / Cygwin?
CMCDragonkai

14

Bạn có thể tải lại tệp .inputrc qua:

bind -f ~/.inputrc

Nguồn


2
Điều này rất hữu ích, nhưng không thực sự là một câu trả lời cho câu hỏi - có lẽ nó sẽ tốt hơn khi bình luận cho một câu trả lời khác?
Martin Thompson

Đã thêm vào câu trả lời của @ Tom ở trên
dovetalk

7

Trong trường hợp bạn muốn một cái gì đó sẽ hoạt động mà không có cài đặt môi trường tùy chỉnh, ví dụ như khi làm việc trên tài khoản dùng chung trên máy chủ hoặc chỉ để giới hạn số lượng cấu hình tùy chỉnh đang được sử dụng, Bash đã tích hợp sẵn tính năng này hoạt động trong Cygwin.

Cụ thể là Alt+ fđể tiến lên và Alt+ bđể di chuyển lùi.

http://www.gnu.org/software/bash/manual/html_node/Commands-For-Moving.html


4
Cảm ơn, mặc dù tôi biết những phím đó và sử dụng chúng. Tôi cũng chỉ sử dụng các phím mũi tên khi thuận tiện và không muốn chúng nhổ mã thoát thay vì làm điều lành mạnh và di chuyển con trỏ.
Tom

0

Khi sử dụng rxvt với cygwin, tôi thấy giải pháp tại liên kết này có hiệu quả với tôi: control_arrow_keys_in_rxvt .

Thêm các dòng sau vào ~/.inputrc:

"\eOd": backward-word
"\eOc": forward-word

Đó là khi một lớp bổ sung đang thay đổi các phím được truyền (nhưng nó không trả lời câu hỏi được hỏi).
Nikana Reklawyks

0

Giải pháp này cũng hoạt động trong msys2bảng điều khiển:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Chỉ cần đặt các tổ hợp phím này trong .inputrctập tin.

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.