Làm cách nào để tôi thực hiện ⌘ ← và ⌘ → hoạt động cho kết hợp nhà / kết thúc cho Terminal?


21

Tại sao fn- - (hoặc những người khác) làm nhà / kết thúc trong Terminal nhưng a - hoạt động ở mọi nơi khác?

Vì vậy, để rõ ràng câu hỏi là làm thế nào để làm cho Terminal mất Command+ cho nhà và kết thúc?

Câu trả lời:


21

Tiện lợi như vậy, Terminal không thể dễ dàng cung cấp chức năng mà bạn yêu cầu.

Lý do là các chương trình chạy bên trong Terminal có các quy tắc khác nhau để di chuyển con trỏ đến đầu / cuối của dòng, ví dụ:

  • bash(và các vỏ khác) sử dụng CtrlACtrlE
  • visử dụng 0$/Shift4

Các chương trình khác có thể sử dụng các phím khác. Không có tổ hợp phím chung để định vị con trỏ ở đầu / cuối dòng.

Tất nhiên, Terminal có thể duy trì một danh sách các tổ hợp phím cho một số chương trình phổ biến, kiểm tra những gì đang chạy và gửi các khóa chính xác cho bạn hoặc nó có thể cung cấp một mục menu như Move Coder To Beginning Of Line Inside Shell ⌘ ← và sau đó gửi CtrlAđằng sau hậu trường. Nhưng tôi đoán các kỹ sư của Apple đã nghĩ rằng nếu bạn mạo hiểm trong lãnh thổ CLI, bạn sẽ biết những đặc điểm riêng của nó.

Là một lưu ý phụ, Terminal cung cấp OptionOptionhoạt động bashnhư bạn mong đợi và di chuyển con trỏ đến đầu của từ trước / từ tiếp theo. Đó là bởi vì các tổ hợp phím này được ánh xạ tới EscbEscb(xem man bashphần "Các lệnh để di chuyển" để biết thêm thông tin). Trong viví dụ, chỉ sau (loại) hoạt động (ở phần cuối của câu trả lời này tôi sẽ giới thiệu cách cấu hình viđể làm việc với OptionOption).

Nhưng nhờ có Automator, AppleScript và bash alias bạn có thể nhận làm việc với bash(và có thể các shell khác) và vi.

Bước đầu tiên là lập bản đồ đến CtrlACtrlE. Trong bước thứ hai, tôi sẽ chỉ cho bạn cách định cấu hình viđể tôn vinh CtrlACtrlE(kết quả là, sẽ vitương thích với ).

Bản đồ để CtrlACtrlE

  1. Trong Terminal, đi tới Tùy chọn ...> Cài đặt> [hồ sơ hoạt động của bạn]> Bàn phím: nhập mô tả hình ảnh ở đây

  2. Nhấn +, chọn "Con trỏ trái", "Control-Shift" làm công cụ sửa đổi và hành động "Gửi văn bản:". Sau đó nhấn CtrlA( \001sẽ xuất hiện trong trường văn bản) và xác nhận với OK: nhập mô tả hình ảnh ở đây

    (Trong phiên bản trước của câu trả lời này, tôi đã sử dụng "Shift" làm công cụ sửa đổi. Tôi nhận thấy rằng cài đặt này mâu thuẫn với shift, hiển thị tab Terminal trước đó, nếu bạn không bỏ qua ngay lập tức. Sử dụng "Control-Shift" sửa lỗi đó.)

  3. Bây giờ thêm một tổ hợp phím cho "Con trỏ phải", nhưng nhấn CtrlE( \005sẽ xuất hiện trong trường văn bản). Xác nhận với OK.

  4. Mở Automator (ví dụ: nhấn spaceđể hiển thị Spotlight và gõ Automator ), chọn File> New và chọn Service:

    nhập mô tả hình ảnh ở đây

  5. Kéo Run AppleScriptsang khung bên phải: nhập mô tả hình ảnh ở đây

  6. Nhập tập lệnh sau:

    on run {input, parameters}
        tell application "System Events"
            tell application process "Terminal"
                key code 123 using {shift down, control down}
            end tell
        end tell
    end run

    và lưu dưới dạng Move Cursor to Beginning of Line:

    nhập mô tả hình ảnh ở đây

  7. Lặp lại các bước 4. đến 6. với tập lệnh này:

    on run {input, parameters}
        tell application "System Events"
            tell application process "Terminal"
                key code 124 using {shift down, control down}
            end tell
        end tell
    end run

    và lưu dưới dạng Move Cursor to End of Line:

    nhập mô tả hình ảnh ở đây

  8. Đây là những gì Terminal> Services trông giống như bây giờ:

    nhập mô tả hình ảnh ở đây

Cấu hình viđể tôn vinh CtrlACtrlE

  1. Mở .bashrcbằng trình chỉnh sửa yêu thích của bạn và thêm dòng này:

    alias vi='vim -c "map <C-A> 0" -c "map <C-E> $" -c "map <Esc>b B" -c "map <Esc>f E"'

    Hai maplệnh đầu tiên cho biết vimđể giải thích ControlEControlAnhư $0, di chuyển con trỏ đến đầu hoặc cuối dòng tương ứng.

    Hai maplệnh cuối cùng vimsẽ di chuyển con trỏ từng từ một như bạn mong đợi khi nhấn optionOption.

Hãy cẩn thận

Bạn sẽ nhận thấy rằng có một độ trễ ngắn giữa thời điểm bạn nhấn hoặc thời điểm con trỏ thực sự di chuyển.

Hãy nhớ rằng nó sẽ chỉ hoạt động cho các chương trình tôn vinh CtrlA/ CtrlE, vì vậy bạn vẫn có thể muốn tìm hiểu các tổ hợp phím cụ thể của từng chương trình bạn sử dụng trong Terminal.

(Đã thử nghiệm trên macOS Sierra 10.12.4)


3
Cảm ơn câu trả lời chi tiết, có một kiến ​​nghị chỉ cần Apple bao gồm nút home / end trên thiết kế lại tiếp theo :-)
Jackie

Tôi rất vui vì tôi có thể giúp.
jaume

Wow .. tất cả điều này để có được một lối tắt kỳ dị
levesque

Đây là một câu trả lời tốt, nhưng nó có thể được cải thiện bằng cách loại trừ tất cả các thông tin không liên quan về viứng dụng hoàn toàn khác với thiết bị đầu cuối.
tiên đề

1
Đó là một mẹo hay. Tôi cũng đã quản lý để có được AppleScript chạy bằng cách gửi mã khóa cho "Trang chủ" và "Kết thúc": "mã khóa 115" và "mã khóa 119" "
Keymon

2

Tất nhiên là có thể.

Trước hết, bạn có thể sử dụng công cụ miễn phí "DoubleCommand" nếu bạn có bàn phím windows với các phím HOME / END để khiến chúng hoạt động như bình thường (đầu / cuối dòng).

Thứ hai, đối với thiết bị đầu cuối cụ thể, hãy chuyển đến tùy chọn, Bàn phím, chỉnh sửa biểu tượng / phím trông giống như một mũi tên hướng lên trên bên trái, chọn "gửi văn bản" và nhập ctrl + a. Làm xong!

Tương tự cho nút kết thúc ..

Nếu bạn không có bàn phím PC, bạn có thể làm tương tự với các tổ hợp phím khác.

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.