Dự định sử dụng ctrl + T trong bash?


47

Tôi nhận thấy bash có một đoạn cắt ngắn cho ctrl+ thay Tđổi hai ký tự cuối cùng trước con trỏ.

Tôi tự hỏi tại sao các kỹ sư quyết định bao gồm điều này.

  • Có phải nó được thừa hưởng từ một quy ước trước?
  • Hoặc có một mục đích thực tế mà điều này thường được sử dụng cho?

13
Không phải là một câu trả lời, nhưng đây không phải bashlà như vậy, nhưng readline(bash sử dụng cho đầu vào tại dấu nhắc). Bash của bạn đang sử dụng emacscác ràng buộc chính; bạn có thể thay đổi để vi key-bindings nếu bạn một cuộc chiến tranh biên tập viên đảng phái;) sanctum.geek.nz/arabesque/vi-mode-in-bash Có một vài "lừa-tờ" cho readlineở đây: readline.kablamo.org/emacs .htmlreadline.kablamo.org/vi.html .
John N

13
Trong lịch sử, Emacs kiểu dòng lệnh tính năng chỉnh sửa được ban đầu được phát triển trong Bash, và sau đó biến thành một thư viện riêng - nhưng điều đó đã xảy ra trước khi phiên bản đầu tiên vào năm 1989. Mục đầu tiên trong nhữngreadline ChangeLog gợi ý tại đây. Vì vậy, ban đầu lối tắt đã được xử lý trong chính Bash, mặc dù ngắn gọn, trước khi được rút ra readline- nhưng lối tắt đã đến với Bash từ Emacs (tôi không biết liệu nó được phát minh ra ở Emacs hay đến từ nơi khác).
Stephen Kitt

Câu trả lời:



63

Nó rất hữu ích để nhanh chóng sửa lỗi chính tả:

sl

trở thành

ls

với một đĩa đơn CtrlT.

Bạn cũng có thể sử dụng AltTđể hoán đổi các từ ( ví dụ: khi chuyển đổi giữa servicesystemctl...).

Trong lịch sử nói, CtrlTtính năng này đến với Bash từ Emacs trong tất cả khả năng. Có lẽ nó đã được sao chép sang Emacs từ một số biên tập viên khác; nó đã có mặt trong biên tập viên E của Stanford (xem Essential E trang 13) vào năm 1980 và E có tác động mạnh mẽ đến Richard Stallman (như được mô tả trong Free as in Freedom ). Nó được thực hiện trong các phiên bản đầu tiên của Bash, trước khi phát hành lần đầu tiên vào năm 1989, khi nó được đưa vào readlinethư viện nơi nó sống ngày nay (mục đầu tiên trong readline ChangeLoggợi ý về điều này).


2
Trao đổi từ là một cái gì đó mới và rất hữu ích
Mongrel

Việc cung cấp một đối số số cho Alt + T chuyển từ tại (hoặc trước) con trỏ với từ thứ n trước từ đó. ví dụ: Alt + 2 Alt + T sẽ sửa đổi word1 word2 word3thành word3 word2 word1nếu được thực hiện tại word3.
crw

@crw sẽ rất tuyệt nhưng alt + T không hoán đổi từ trên thiết bị đầu cuối của tôi. Tôi chỉ mở mục menu 'đặt tiêu đề'.
Philip Kirkbride

@PhilipKirkbride thật đáng xấu hổ, trình giả lập thiết bị đầu cuối của bạn đang tước đi một lối tắt rất hữu ích ...
Stephen Kitt

@PhilipKirkbride nên có một tùy chọn của trình giả lập thiết bị đầu cuối để vô hiệu hóa các phím truy cập menu
Joril

15

Tổ hợp phím này, một ràng buộc được kế thừa từ emacstrình chỉnh sửa, khiến 2 ký tự cuối cùng được gõ bị tráo đổi ở cuối dòng, được sử dụng ở giữa một dòng, nó hoán đổi ký tự ở bên trái con trỏ và ký tự bên dưới con trỏ.

Có vẻ như vô ích khi có một ràng buộc cho một tính năng hiếm khi được sử dụng mà có thể dễ dàng đạt được với một vài nét chính. Các bộ tính giờ cũ như tôi sử dụng nó khá thường xuyên và nó được sử dụng để tiết kiệm thời gian truyền trở lại vào thời của 300 modem baud, vào cuối những năm 70, đặc biệt là ở giữa các hàng dài.

Một lệnh tương tự và hữu ích hơn, ràng buộc với Alt+ T, hoán chuyển các từ ở bên trái và bên phải của con trỏ.

Tđã được chọn bởi vì nó là chữ cái đầu tiên của chuyển vị . Các ràng buộc khác có nguồn gốc tương tự bao gồm:

  • Ctrl+ B, để lùi lại , di chuyển con trỏ sang trái một vị trí,
    • Alt+ Bdi chuyển con trỏ sang trái một từ,
  • Ctrl+ F, để chuyển tiếp , di chuyển con trỏ sang phải một vị trí,
    • Alt+ Fdi chuyển con trỏ sang phải một từ,
  • Ctrl+ A, đối với An Phường hoặc ante , di chuyển con trỏ đến đầu dòng,
  • Ctrl+ E, cuối cùng , di chuyển con trỏ đến cuối dòng,
  • Ctrl+ N, cho tiếp theo , lấy dòng tiếp theo,
  • Ctrl+ P, trước đó , lấy dòng tiếp theo,
  • Ctrl+ D, để xóa , xóa ký tự dưới con trỏ,
    • Alt+ Dxóa từ dưới con trỏ,
  • Ctrl+ K, để giết , cắt cuối dòng,
  • Ctrl+ Y, đối với yank , dán nội dung của bảng tạm,

Do đó, các ràng buộc này, được triển khai trong gói đọc GNU, có sẵn trong tất cả các chương trình sử dụng nó cho đầu vào của người dùng, chẳng hạn như bash , nhưng cũng có gdb , bc , ...

Một số cũng có sẵn trong các môi trường khác: Dòng đầu vào URL Firefox, các trường nhập văn bản trong giao diện đồ họa OS / X và nhiều trình quản lý cửa sổ dựa trên X.

Người dùng vim có thể chọn các ràng buộc tương ứng thông qua một biến môi trường.


Vâng, thật tuyệt vời cho những người như chúng tôi đôi khi quên rằng chúng tôi đang gõ vào một thiết bị đầu cuối chứ không phải là một Emacs; Tôi vẫn bị bắt gặp khi sử dụng các widget văn bản của Firefox (như cái này bây giờ), cái mà thiếu các ràng buộc quan trọng này. :-(
Toby Speight

Có cách nào bạn có thể ghép nối các phiên bản ký tự và từ của các lệnh liên quan trong mô tả của bạn không? Nó thực sự giúp ích cho bộ nhớ khi bạn nhận ra rằng AltCtrlcác phiên bản của các tổ hợp phím đó có liên quan theo một cách nhất quán.
Toby Speight

@TobySpeight GTK + hỗ trợ một chủ đề liên kết phím kiểu Emacs thay thế để bạn có thể sử dụng một số các phím bấm này trong Firefox. C-tTuy nhiên dường như không làm gì cả. wiki.archlinux.org/index.php/GTK%2B#Emacs_keybindings
Candy Gumdrop

@TobySpeight bạn đã bao giờ thử It All Text! ? Nó cho phép bạn chỉnh sửa nội dung của textareas trong trình chỉnh sửa bạn chọn.
Stephen Kitt

Cảm ơn @Stephen - Tôi đã nghe nói về nó, nhưng chưa thử nó (chưa). Tôi sẽ theo dõi nó ...
Toby Speight

10

Đó là vrey useufl cho việc chỉnh sửa tpyos wehre yuo haev vô tình trasnposed trụ của rau diếp.

(Có chỉ số RSI nghiêm trọng ở cả hai cổ tay, cuối cùng tôi cũng sử dụng nó rất nhiều ...)


2
Mắt tôi đang chảy máu
Basic

4

Một lỗi rất nhanh sửa lỗi chính tả. tác động đến khối chỉnh sửa 2 ngay lập tức trước bộ đổ.

Nếu bạn đã nhập ls-và bạn muốn có khoảng trắng giữa ls& dấu gạch ngang thì bạn có thể sử dụng Ctrl+T

Điều này hoạt động nếu bạn có một khoảng trắng sau dấu gạch nối & sau đó làm Ctrl+T

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.