Làm thế nào để bỏ qua các từ trong thiết bị đầu cuối OS X?


11

Giả sử tôi đã viết một lệnh dài trong thiết bị đầu cuối Mac OSX, tức là

say "Hello, how are you? I am good thank you. How is it going with you? Fine, thanks"

và bây giờ tôi muốn đổi từ Hellothành Hi.

Để làm điều đó, ngay bây giờ tôi phải tiếp tục nhấn (hoặc giữ) phím bàn phím bên trái cho đến khi "con trỏ" đến cuối từ Hello, sau đó xóa nó. Kỹ thuật 'giữ tùy chọn' thông thường không hoạt động như trong hầu hết các ứng dụng OS X khác.

Có cách nào để bỏ qua một từ tại một thời điểm thay thế (hoặc bất kỳ cách nào ngắn hơn để có được con trỏ ở đó)?

Câu trả lời:


19

Chỉnh sửa dòng lệnh là một chức năng của trình bao của bạn, không phải của Terminal . Có lẽ shell của bạn là bash và có lẽ phong cách chỉnh sửa dòng lệnh của nó được đặt thành.

Dưới đây là một số tổ hợp phím kiểu Emacs mà bạn có thể thấy tiện dụng:

  • Ca: beginning-of-line
  • Ce: end-of-line
  • Mf: forward-word
  • Mb: backward-word
  • CD: delete-char
  • Md: kill-word(xóa 'từ' tiếp theo)
  • M-DEL: backward-kill-word

C- x có nghĩa là Control+ x, vì vậy Ca là Control+ a.

M- x có nghĩa là Meta+ x, nhưng có lẽ không có phím Meta trên bàn phím của bạn. Vì vậy, thay vào đó, bạn có thể sử dụng ESC x (tức là Escapesau đó x). Terminal có một cài đặt để tự động gửi ESC trước khi nhấn và Optiongiữ phím. Việc sử dụng tính năng này sẽ vô hiệu hóa việc xử lý ký tự mở rộng mà Mac OS X thường cung cấp khi sử dụng công cụ sửa đổi Tùy chọn. Vì vậy, nếu bạn sử dụng một vài ký tự mở rộng và muốn có Option+ xgửi ESC x , thì bạn có thể bật tùy chọn Terminal này .

Trong ví dụ của bạn có rất nhiều cách để di chuyển

  • Tìm kiếm trên Hello Hello: Cr H ello Cj (hoặc ESC)
    • Trong Emacs bình thường, bạn chỉ cần sử dụng RET ( Return) để kết thúc tìm kiếm tại vị trí hiện tại và quay lại chỉnh sửa. Nhưng trong bash , các ràng buộc mặc định khiến RET (tức là Cm) luôn thực thi dòng hiện tại, ngay cả khi tìm kiếm gia tăng được kích hoạt. Vì vậy, phần Cj / ESC là độ lệch so với Emacs bình thường.
  • Nhảy đến đầu dòng và tiến về phía trước: Ca Mf Cf (hoặc )
  • Nhảy đến đầu dòng, sau đó di chuyển bằng từ: Ca Mf Mf Mb
  • Sử dụng Mb rất nhiều (chỉ thực sự khả thi nếu bạn ánh xạ Tùy chọn sang Meta).

Cũng có một số cách để thực hiện thay thế mong muốn của bạn:

  • xóa từ và thay thế nó: Md H i
  • xóa các ký tự và thay thế chúng: Cd Cd Cd Cd H i
  • di chuyển qua (trước đây) và xóa công việc sau, thay thế nó: Cf Md i
  • di chuyển qua Tử vi và xóa các ký tự còn lại, thay thế chúng: Cf Cd Cd Cd Cd i

Nếu bạn dừng lại ở cuối từ (có thể thông qua Ca Mf Mf), bạn có thể sử dụng M-DEL H i.

Bạn có thể làm một cái gì đó như bind -P | lessđể tìm các ràng buộc thú vị khác. Tham khảo readline phần của bash trang người đàn ông (hoặc phụ tùng readline của bash trang thông tin ) để biết chi tiết.


Ok, điều này không thực sự liên quan đến câu hỏi, nhưng làm thế nào để bạn đặt các từ trông giống như các phím bàn phím trong đó?
Wuffers

1
@Ông. Người đàn ông: Sử dụng <kbd>các yếu tố. Một tập hợp con của HTML được cho phép trong đánh dấu ở đây . Sự xuất hiện là do kiểu dáng địa phương của thẻ (nền, màu đường viền, kiểu đường viền, chiều rộng đường viền, v.v.). Bạn có thể xem lại cách đánh dấu nguồn của bài đăng của tôi (xem lượt xem nguồn trên trang này ). Xem meta.stackexchange.com/questions/5527 mặc dù kiểu ưa thích bị tắt trên MSO: meta.stackexchange.com/questions/1939/#23571
Chris Johnsen

Tôi không chắc điều này có rõ ràng hay không, tôi mất một phút để tìm ra nó, nhưng tôi đang ở MBP mà không có khóa meta và tôi đang sử dụng cấu hình Terminal mặc định. Để tiến lên và lùi lại các từ tôi có thể nhấn Esc và sau đó là F, hoặc Esc và sau đó B. Chỉ muốn đề cập đến điều đó bởi vì cách nó được giải thích ở trên là khiến tôi thử và nhấn Esc + x và sau đó f hoặc b ...
cwd

Có cách nào để thay đổi môi trường hoặc shell để tôi có thể thực hiện các phím mũi tên ctrl hoặc fn + để khớp với IDE của mình không?
codecowboy

1
Bạn cũng có thể sử dụng các ràng buộc vi bằng cách thêm set -o vivào .bashrc của bạn! gnu.org/software/bash/manual/html_node/ từ
Will Munn

2

Ràng buộc đường đọc mặc định cho forward-wordlà Meta-F ( bash(1)trang man, phần READLINE , Lệnh cho di chuyển tiểu mục). Tôi không chắc những gì Meta dịch sang OS X mặc dù. Lựa chọn, có lẽ.


+1 - bạn thực sự đúng. cái này hoạt động trong bash trên OSX
Yuval
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.