Alt-Left để bỏ qua các từ không hoạt động trong trình giả lập thiết bị đầu cuối


16

Trên máy Debian Wheezy ở công việc trước, tôi đã quen với Alt + Left và Alt + Right để bỏ qua giữa các từ trên dòng lệnh hoạt động (trong bash).

Tuy nhiên, vì ở nhà, tôi đã nâng cấp lên Jessie (Debian 8.0, nhánh thử nghiệm), điều này không còn hoạt động nữa: thay vì bỏ qua từ trước đó, Alt-Left in một cái gì đó như Dhoặc [D. OTOH, nếu tôi mở ssh và kết nối với Debian Wheezy không đầu của tôi, nó hoạt động hoàn hảo.

Hơn nữa, tôi vừa cài đặt Fedora 20 trong công việc mới của mình và ở đây hành vi cũng vậy. Điều này áp dụng cho bash, csh và ksh (bắt đầu dưới env -i), cũng như rxvt-unicode và xfce4-terminal, vì vậy nó phải là một cái gì đó nằm ngoài các cấp độ này.

Tôi nên tìm nơi khác trong ngăn xếp để tìm sự khác biệt?


4
Tôi sẽ đề nghị thử alt-b và alt-f (cũng như phần còn lại của các phím đọc), vì chúng phổ biến hơn, và khá nhiều chương trình dòng lệnh tôn vinh các ràng buộc về đường đọc.
hủy bỏ

Câu trả lời:


21

Bạn có thể có một tệp cục bộ ~/.inputrchoặc toàn cầu /etc/inputrcđược xác định đã bị mất khi nâng cấp. Một sửa chữa dễ dàng là tạo một ~/.inputrctệp với các dòng sau:

## enable Alt-arrows 
"\e[1;3D": backward-word ### Alt left
"\e[1;3C": forward-word ### Alt right

Chúng sẽ hoạt động với xtermterminatorgnome-terminalcó thể cần phải điều chỉnh cho các thiết bị đầu cuối khác. Thật không may, mỗi trình giả lập thiết bị đầu cuối có thể sử dụng một cú pháp khác nhau. Để biết thêm chi tiết, xem câu trả lời của tôi ở đây .


Tôi thực sự có nghĩa là Alt, và nó vẫn hoạt động trên máy từ xa. Ctrl + Trái / Phải đã được thực hiện trong Rxvt để di chuyển tab sang trái và phải (Shift + Trái / Phải chuyển đổi các tab và Shift + Xuống mở một cái mới).
Alois Mahdal

1
Nhân tiện, trong khi Ctrl + Trái / Phải là phổ biến trong các trình soạn thảo GUI, các thiết bị đầu cuối hoàn toàn khác với thế giới mà tôi chưa thấy sự kết hợp đó.
Alois Mahdal

10

terdon đặt tôi theo đúng hướng: tập tin inputrc .

Thủ phạm là khá không trực quan, readline6 thực sự sử dụng ~ / .inputrc thay vì / etc / inputrc, mà readline (3) không nhấn mạnh cũng không phản bác:

Tên của tệp này được lấy từ giá trị của biến môi trường INPUTRC. Nếu biến đó không được đặt, mặc định là ~ / .inputrc. Nếu tệp đó không tồn tại hoặc không thể đọc được, mặc định cuối cùng là / etc / inputrc.

Vì vậy, trong khi trên cả hai máy Debian / etc / inputrc giống hệt với gói libreadline6 được cung cấp (phiên bản cũng giống như vậy), trên máy mới hơn ~ / .inputrc tồn tại với một dòng : set bell-style none. Khi tập tin này bị xóa, tất cả đều hoạt động tốt (xem ghi chú bên dưới).

Tôi không thể kiểm tra Fedora cho đến ngày mai nhưng tôi đoán đó là vấn đề tương tự. Cập nhật: Trên Fedora, ~ / .inputrc không tồn tại, ở đây / etc / inputrc đơn giản là khác nhau nên có thể không xác định điều này. Là một hotfix, tôi chỉ cần lưu inputrc của Debian dưới dạng ~ / .inputrc.


Ghi chú:

Bí ẩn về cách nó được thay đổi trong quá trình nâng cấp 7> 8 vẫn chưa được giải quyết, nhưng một phần có thể được tính vào bộ nhớ xấu của tôi và một số trò tung hứng của các dotfiles không chủ ý. (BTW không phải là nâng cấp APT mà là cài đặt lại và di chuyển dotfile thủ công để có thể ~ .inputrc cản trở bạn.)

Ngoài ra, khi tôi nói OK, ý tôi là nó hoạt động với Ctrl ở mọi nơi trừ Rxvt (OK, tôi chỉ kiểm tra xfce4-terminal nhưng chúng tôi biết Rxvt là kẻ nổi loạn thông thường), trong đó điều này được ánh xạ vào Alt, rõ ràng là do Ctrl được Rxvt lấy chức năng cụ thể - di chuyển tab hoạt động trong danh sách.

Như manpage đề cập, với bash, bạn có thể sử dụng lệnh liên kết tích hợp để điều tra những gì bạn hiện có.


Bắt đẹp, +1. Trên thực tế, nó trực quan hơn bạn nghĩ. Hành vi mặc định là dành cho các dotfiles dành riêng cho người dùng được ưu tiên hơn các mặc định trên toàn hệ thống. Nếu không, người dùng sẽ không thể thay đổi cài đặt của họ.
terdon

Xem câu trả lời cập nhật để biết cách bật cụ thể mũi tên Alt +.
terdon

2
Điều này là bình thường, bạn cần $include /etc/inputrcở đầu ~/.inputrcnếu bạn cũng muốn đọc nó.
Chris Xuống

@terdon hoàn toàn hợp lý khi thích cài đặt người dùng trước toàn hệ thống, nhưng điều tôi thấy trực quan hơn sẽ là ~ / .initrc sẽ được "hợp nhất" thành / etc / initrc (tức là / etc / initrc sẽ là $included theo mặc định).
Alois Mahdal

1
Xem: 1. tùy chọn được mã hóa cứng, 2. / etc / initrc, 3. ~ / .initrc --vs-- 1. tùy chọn được mã hóa cứng 2. / etc / initrc OR ~ / .initrc. Cách đầu tiên linh hoạt hơn nhiều vì nó có thể dễ dàng được mở rộng đến cấp thấp hơn (ví dụ: mỗi dự án, tôi thừa nhận ví dụ này không có ý nghĩa nhiều với đường đọc nhưng bạn hiểu rõ).
Alois Mahdal
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.