Câu trả lời:
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 CtrlAvàCtrlEvi
sử dụng 0và $/Shift4Cá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 Option←và Option→hoạt động bash
như 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 Escbvà Escb(xem man bash
phần "Các lệnh để di chuyển" để biết thêm thông tin). Trong vi
ví 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 Option←và Option→).
Nhưng nhờ có Automator, AppleScript và bash alias bạn có thể nhận ⌘←và ⌘→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 đồ ⌘←và ⌘→đến CtrlAvà CtrlE. Trong bước thứ hai, tôi sẽ chỉ cho bạn cách định cấu hình vi
để tôn vinh CtrlAvà CtrlE(kết quả là, sẽ vi
tương thích với ⌘←và ⌘→).
Bản đồ ⌘←và ⌘→để CtrlAvàCtrlE
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ấ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( \001
sẽ xuất hiện trong trường văn bản) và xác nhận với OK:
(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 đó.)
Bây giờ thêm một tổ hợp phím cho "Con trỏ phải", nhưng nhấn CtrlE( \005
sẽ xuất hiện trong trường văn bản). Xác nhận với OK.
Mở Automator (ví dụ: nhấn ⌘spaceđể hiển thị Spotlight và gõ Automator ), chọn File> New và chọn Service
:
Kéo Run AppleScript
sang khung bên phải:
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
:
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
:
Đây là những gì Terminal> Services trông giống như bây giờ:
Cấu hình vi
để tôn vinh CtrlAvàCtrlE
Mở .bashrc
bằ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 map
lệnh đầu tiên cho biết vim
để giải thích ControlEvà ControlAnhư $và 0, di chuyển con trỏ đến đầu hoặc cuối dòng tương ứng.
Hai map
lệnh cuối cùng vim
sẽ di chuyển con trỏ từng từ một như bạn mong đợi khi nhấn option←và Option→.
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)
⌘
lối tắt kỳ dị
vi
ứng dụng hoàn toàn khác với thiết bị đầu cuối.
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.