Có cách nào để chuyển đến phần trước của lệnh dòng lệnh trong Mac Terminal không?


9

Tôi thường thấy mình viết ra các lệnh dài trong bash shell - những thứ có nhiều đối số, địa chỉ web, tuyến đường, v.v. Mỗi lần như vậy, tôi sẽ nhận ra rằng tôi đã quên, nói, đặt "bó thực thi" của mình vào đầu lệnh hoặc viết sai chính tả hoặc quên dấu ngoặc kép. Hoặc một cái gì đó đơn giản như đặt "cd" thay vì "vim".

Do đó, bắt đầu quá trình tẻ nhạt của việc giữ phím mũi tên trái cho đến khi tôi quay trở lại điểm bắt đầu của lệnh.

Có cách nào để nhảy đến đầu dòng một lần nữa không?


2
Bạn có thể muốn thoát khỏi ứng dụng thiết bị đầu cuối mặc định và tải xuống iTerm
Clement Herreman

Tại sao? Tôi chỉ kiểm tra, và nó dường như cư xử khá giống nhau. (Bây giờ, phím home hoạt động, nhưng vì tôi có các phím khác không thực sự quan trọng). Nó cung cấp những gì sẽ làm cho nó đáng để làm lại tất cả các cài đặt và cấu hình và tác vụ của tôi và không có gì?
GlyphGryph

Đây có vẻ như là thứ bạn có thể thiết lập với .inputrc
Rob

Ngoài ra, để nhảy từng từ một, sử dụng ⌥B và ⌥F để nhảy qua lại tương ứng.
fideli

@fideli, nhưng chỉ khi bạn đã bật Tùy chọn sử dụng của Wikipedia làm khóa meta Lưu ý rằng kể từ Mac OS X Lion 10.7, bản đồ cài đặt bàn phím mặc định của Terminal tùy chọn Mũi tên trái / Mũi tên phải sang Esc-b / f nên không cần cấu hình.
Chris Trang

Câu trả lời:


12

Ngoài ^ A và ^ E, bạn có thể làm

  • Esc- bđể nhảy lại một từ
  • Esc- fđể nhảy về phía trước một từ
  • Ctrl- bđể di chuyển trở lại một nhân vật
  • Ctrl- fđể tiến về phía trước một nhân vật

Xem hướng dẫn bash cho các lệnh để di chuyển .


Một điều cần lưu ý - đây là từ Emacs, và bằng cách thêm emacstùy chọn vào shellopts của bạn, bạn có thể nhận được thêm một số thứ đó.
TC1

6

Bạn có thể sử dụng các lệnh Emacs, vd:

  • ctrl-A để đi đến đầu dòng lệnh
  • ctrl-E để đi đến cuối dòng lệnh

Đây là bash, không dành riêng cho Mac.


3
set -o vi

Sau đó Esctiếp theo

^bắt đầu dòng $cuối dòng bmột từ backword wmột từ chuyển tiếp


Tôi là một fan hâm mộ khá lớn của Vim, vì vậy nguyên tắc trả lời của bạn rất tuyệt đối với tôi, nhưng chỉnh sửa dòng lệnh phương thức có thể hơi khó hiểu với OP, đặc biệt là không có bất kỳ đề cập nào về cách quay lại để có thể gõ! Quay trở lại chế độ chèn bằng cách sử dụng i(insert) để gõ trước con trỏ hoặc a(chắp thêm) để gõ sau con trỏ.
Cascabel

Tôi đã sử dụng vi làm trình soạn thảo văn bản chính của mình trong nhiều thập kỷ, nhưng tôi vẫn thích các ràng buộc chính của emacs cho trình bao của mình.
Keith Thompson

Trên thực tế, OP sử dụng vim cho tất cả các chỉnh sửa văn bản, vì vậy biết rằng bạn có thể đặt tiêu chuẩn vi là hữu ích đáng kinh ngạc. Cảm ơn rất nhiều!
GlyphGryph

@Kieth Thompson: Tôi đã từng nghĩ như vậy. Tôi chỉ nghĩ shell không kết hợp tốt với công cụ chuyển đổi chế độ này (như vphím gây khó chịu trong chế độ vi). Nhưng sau một thời gian tôi mới bị nhiễm vim nên tôi khuyên bạn nên dùng thử: P
kizzx2

1

Điều này không trả lời câu hỏi của bạn nhưng nó có thể giải quyết vấn đề của bạn trong một số trường hợp.

Trong bashcác !!thẻ được thay thế bằng lệnh trước đó của bạn. Vì vậy, nếu bạn quên thêm một cái gì đó vào đầu một lệnh (như sudo), bạn có thể làm một cái gì đó như thế này

# ./super_secret_command --with-args
=> ACCESS DENIED

# sudo !!
sudo ./super_secret_command --with-args
=> ACCESS GRANTED

0

Bạn có thể định cấu hình các Ctrl/Opt+Left/Rightphím tắt thông thường để sử dụng trong Terminal. Bằng cách đó, bạn không phải học lại mọi thứ khi bạn đang sử dụng Terminal.

Mở Terminal »Preferences Tùy chọn» Cài đặt »(chọn cấu hình)» Bàn phím .

Ở đó, gán các phím tắt sau:

  • Control + Cursor Left: Gửi chuỗi \033[1~tới shell
  • Control + Cursor Right: Gửi chuỗi \033[4~tới shell
  • Option + Cursor Left: Gửi chuỗi \033[5Dtới shell
  • Option + Cursor Right: Gửi chuỗi \033[5Ctới shell

Tôi cũng thích những điều sau đây ( Fn + Left/Right):

  • Home: Gửi chuỗi \033[1~tới shell
  • End: Gửi chuỗi \033[4~tới shell

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


Trên Lion ← và ⌥ → được ràng buộc M-bM-ftheo mặc định. Và ⌃ ← và ⌃ → là các phím tắt mặc định để thay đổi không gian.
Lri

0

Tôi cần điều này ở Cygwin, không phải Mac, nhưng thêm vào những điều sau đây ~/.inputrccũng có thể giúp ích:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

0

Tôi không phải là người dùng Mac nhưng còn Homechìa khóa thì sao? Điều đó hoạt động tốt trên một thiết bị đầu cuối Linux.


1
Không, cuộn đến đầu cửa sổ terminal.
GlyphGryph

Theo mặc định, Home và End cuộn chế độ xem, đó là hành vi chuẩn của Mac. Theo mặc định, Shift-Home và Shift-End gửi lần lượt ESC ESC [H và và ESC ESC [F, tương ứng. Tất cả đều có thể tùy chỉnh trong Terminal> Preferences> Settings> [profile]> Bàn phím .
Chris Trang

0

Cách tốt nhất để di chuyển xung quanh dòng lệnh trong Mac Os X là sử dụng hồ sơ của tôi: https://github.com/lingtalfi/mac-terminal-shortype

Nó cung cấp các phím tắt (trực quan) sau:

ALT-left: move one word backward
ALT-right: move one word forward
CTRL-left: move to the beginning of the line
CTRL-right: move to the end of the line
ALT-backspace: kill one word backward
ALT-del: kill one word forward
ALT-up: set word after cursor to uppercase
ALT-down: set word after cursor to lowercase
home: move to the beginning of the line
end: move to the end of the line    
CTRL-backspace: Same as ALT-backspace
CTRL-del: Same as ALT-del
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.