thay đổi phím tắt bash như Ctrl-C?


18

Tôi đang sử dụng Kubfox 10.04. Tôi muốn thay đổi một số phím tắt tiêu chuẩn cho bash (terminal).

Dưới đây là các phím tắt tôi muốn thiết lập:

  • Ctrl - C để sao chép văn bản đã chọn trong thiết bị đầu cuối vào clipboard.

  • Ctrl - V để dán từ clipboard vào thiết bị đầu cuối.

  • Ctrl - Z để hoàn tác chỉnh sửa trên dòng hiện tại trong thiết bị đầu cuối.

  • Ctrl - Ca - C (hoặc thậm chí tốt hơn, siêu - C ) để chấm dứt lệnh.

  • Ctrl - Ca - Z (hoặc là siêu - Z ) để làm lệnh nền.

  • Ctrl - Ca - V (hoặc là siêu - V ) là lệnh chèn theo nghĩa đen (hoặc bất cứ điều gì Ctrl - z đã làm trước đó).

Làm thế nào để tôi thực hiện những thay đổi này?

BTW, tôi thích cách thiết bị đầu cuối hoạt động trên OS X. Việc sử dụng phím lệnh làm cho tất cả các lệnh sao chép / dán rất nhất quán (không giống như nhiều thứ khác trong OS X).

P.S. Tôi đọc trang bash man và nó không giúp được gì. Nó đã cho tôi ý tưởng, nhưng tôi cần các ví dụ cụ thể cho các kết hợp trên. Cảm ơn.


một số "phím tắt" này không thể được "triển khai" trong bash, nhưng phải được đặt trên thiết bị đầu cuối (xterm, gnome-terminal, konsole, v.v.) .. ví dụ: "văn bản được chọn", "clipboard"
akira

Câu trả lời:


10

Những tính năng không phải của bash, chúng là các tính năng của trình điều khiển thiết bị đầu cuối. Như vậy, chúng được chỉ định bởi stty(1).

$ stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

5
ĐƯỢC. Cảm ơn các đầu mối. Bây giờ, tôi vẫn muốn thực hiện mục tiêu của mình. Và tôi cũng biết rằng inputrc có thể ánh xạ lại Ctrl-C. Nhưng tôi thực sự không quan tâm đến cách tôi làm điều đó, tôi chỉ muốn biết cách ánh xạ lại các phím tắt này trong một thiết bị đầu cuối.
Paul

14
Đây là "fish": stty int \ ^ k (trong đó lệnh chấm dứt, trước đây Ctrl-C trở thành Ctrl-K, K có thể là bất kỳ khóa alpha nào) Không ai "đưa tôi con cá đó". Tôi đã làm việc chăm chỉ để tìm thấy nó một mình. Vì vậy, rao giảng với những câu tục ngữ làm cho bạn trông giống như một kẻ ngốc, IMO.
Paul

Làm thế nào bạn có thể ánh xạ lại nó vào Ctrl + Shift + C?
crypdick

7

Đây là hầu hết giải quyết hoàn toàn ngay bây giờ Một phần của giải pháp lần đầu tiên được MTK58 chú ý đến tại http://www.linuxquestions.org/questions/linux-software-2/change-bash-shortcut-keys-such-as-ctrl-c-818170/ . Ông đã chỉ ra một thực tế (khá rõ ràng, nhiều cho sự ngượng ngùng của tôi) rằng các phím tắt sao chép và dán có thể dễ dàng thay đổi bằng các cài đặt menu của konsole. Khi tôi thấy điều này, mất khoảng 1 phút để thiết lập Ctrl-C và Ctrl-V để sao chép và dán với thiết bị đầu cuối.

Phần khác của giải pháp lẽ ra đã rõ ràng từ trang stty man, nhưng nó không (với tôi). Tôi cuối cùng chỉ thử nghiệm dựa trên nhiều manh mối khác nhau, chẳng hạn như những điều được đăng ở trên.

Tôi đã quyết định khóa không số nào tôi muốn thay thế Ctrl-C làm lệnh kết thúc. (Tôi đã sử dụng "k"). Tôi chưa bao giờ tìm thấy bất kỳ thông tin nào về cách chuyển một công cụ sửa đổi ca sang stty, vì vậy tôi đã từ bỏ việc đó. Với quyết định đó, tất cả những gì tôi phải làm là nhập dòng lệnh sau:

stty xâm nhập \ ^ k

Tôi xác nhận rằng mọi thứ làm việc như mong muốn.

Bây giờ tôi chỉ cần đặt một lệnh ở trên (stty int \ ^ k) trong một kịch bản khởi động. Tôi không chắc cái nào là "đúng". Tôi muốn thay đổi này là toàn hệ thống và vĩnh viễn.

Bất kỳ đề xuất nào về kịch bản tôi nên đặt lệnh trong?

Và cuối cùng, như các câu trả lời rao giảng, chúng không cần thiết và không có ích.


4

Một số thứ có thể được đặt bằng cơ chế phím tắt KDE thông thường. Trong menu "Cài đặt" của Konsole, nhấp vào "Cấu hình lối tắt" và bạn sẽ nhận được hộp thoại mà bạn có thể sử dụng để thay đổi các ràng buộc chính cho các chức năng được KDE xử lý. Điều đó sẽ cho phép bạn ánh xạ lại Ctrl + C để sao chép và Ctrl + V để dán - nhưng hãy nhớ rằng một khi bạn làm điều đó, các chuỗi khóa đó sẽ không còn được chuyển qua thiết bị đầu cuối, vì vậy bạn sẽ không thể sử dụng Ctrl + C để làm gián đoạn một chương trình, ví dụ.

Các chức năng khác được kiểm soát bởi readline thư viện mà bạn có thể cấu hình bằng cách chỉnh sửa tệp ~/.inputrc. Để có được Ctrl + Z để hoàn nguyên mọi chỉnh sửa được thực hiện trên dòng hiện tại, bạn muốn thêm

C-z: revert-line

nhưng chuỗi khóa đó có thể đã bị bẫy bởi thiết bị đầu cuối, vì vậy bạn có thể phải sử dụng stty để hủy liên kết nó trước khi nó hoạt động. Đầu tiên tìm kiếm ^Z trong đầu ra của stty -a (như thể hiện trong câu trả lời của Ignacio) và sau đó, ví dụ, nếu nó xuất hiện trong susp = ^Z, chạy

stty susp ^-

để hủy liên kết ánh xạ khóa đó.

Những thay đổi khác mà bạn đang hỏi sẽ phải được thực hiện với stty như Ignacio nói, vì đó là những chức năng của thiết bị đầu cuối, nhưng tôi không chắc chính xác là như thế nào. Vấn đề là tôi không biết liệu thiết bị đầu cuối có nhận ra Shift hay không, nếu có, làm thế nào để truyền đạt thông tin đó đến stty.


3

Bash sử dụng emacs hoặc là vi chế độ trên dòng lệnh. Nó không có khái niệm về "lựa chọn" hoặc "clipboard". Nó sử dụng những thứ như "kill đệm" và "point", "mark", "word", "line", "kill" và "yank", v.v.

Cố gắng sử dụng chức năng theo phong cách GUI vào nó sẽ gây khó chịu nhất và sẽ không hoạt động đầy đủ. Bạn sẽ phải cố gắng kết hợp các chức năng của stty, readline và thiết bị đầu cuối của bạn (có lẽ Terminal.app cho bạn). Bạn sẽ cần phải ánh xạ lại các chức năng như intr, susp, lnext, v.v., vì vậy bạn vẫn có thể sử dụng các tính năng của chúng.

Tôi thực sự khuyên bạn nên chống lại những sửa đổi triệt để như vậy. Nó chỉ không được thiết kế để làm những gì bạn muốn.

Khi ở Rome ...


Dave, đối với một hệ thống hoạt động giống như OS X, tôi có thể đề nghị bạn sử dụng OS X không? Như Dennis gợi ý, ngay cả khi bạn có thể làm cho nó hoạt động, bạn sẽ khá bối rối khi bạn đăng nhập như bất cứ thứ gì trừ bạn trên máy của chính bạn.
msw
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.