Sử dụng tổ hợp phím Terminal với bash trên macOS


51

Tôi đã cố gắng học các phím tắt cho shell trên macOS, nhưng khi tôi thử sử dụng ALT+ B, nó không hoạt động.

Làm thế nào để bạn khám phá, cấu hình và sử dụng keybindings trong shell? Bất kỳ cheatheets sẽ hữu ích.


lặp lại: superuser.com/questions/113103/... ... không OSX cụ thể nhưng không cung cấp rất nhiều thông tin về ánh xạ chuẩn bàn phím bash, tùy readline và các mẹo vui bash khác.
quack quixote

6
đây không phải là một bản sao của câu hỏi trên đây là về cách để OSX không bắt các ràng buộc chính bị ràng buộc cho thiết bị đầu cuối
Arthur Ulfeldt

3
Vui lòng bỏ đánh dấu này là trùng lặp. Nó cần một câu trả lời chỉ ra 'tùy chọn sử dụng làm khóa meta' cho thiết bị đầu cuối OSX.
bentford

Câu trả lời:


12

Một cách để đối phó với các chuỗi khóa 'meta' không hoạt động trên thiết bị đầu cuối OS X là gán các chuỗi ký tự cụ thể cho các phím nhấn cụ thể. Đối với những người trong chúng ta có bàn phím không phải của Hoa Kỳ, đây thường là một giải pháp tốt hơn cài đặt "Sử dụng tùy chọn làm meta" được đề cập trong các nhận xét của các câu trả lời khác. (Nhiều bàn phím Mac quốc tế về cơ bản không thể sử dụng được cho công việc phát triển mà không có phím Tùy chọn / alt vì một số ký tự quan trọng nhất định không có sẵn. Chẳng hạn, không có #bàn phím Mac của Vương quốc Anh.)

Để làm cho từ trái và từ phải hoạt động cho bash, tôi đã sử dụng phần "Bàn phím" của Cài đặt trong Terminal. Bạn có thể yêu cầu nó tạo ra các chuỗi mã cụ thể khi nhấn phím cụ thể. Tôi đã cấu hình của tôi để alt+ tạo \033b(thực tế là hai ký tự: Esc, và sau đó là chữ thường b) và alt+ tạo \033f(nghĩa là Esc f). Điều này cho phép bạn sử dụng các phím mũi tên với phím tùy chọn được giữ để có được hành vi từ trái và phải.

Những gì tôi chưa làm được là làm thế nào để làm cho Escchìa khóa hoạt động - theo lý thuyết bạn sẽ có thể sử dụng nó cho các chuỗi 'meta' nhưng dường như nó không hoạt động. (Vì vậy, chỉ cần gõ Esc+ bnên quay lại một từ.)

Nếu bạn có bố cục bàn phím ở Hoa Kỳ hoặc một số bàn phím khác mà Apple thấy phù hợp để cung cấp tất cả các phím bạn thực sự cần, thì như những người khác đã đề xuất, "Sử dụng tùy chọn làm phím meta" (cũng trên phần Bàn phím trong cài đặt của Terminal) có lẽ là một lựa chọn tốt hơn bởi vì bạn sẽ có thể nhận được bất kỳ tổ hợp phím meta nào. Khi bật, Alt+ bhoạt động như mong đợi.


80

Thiết bị đầu cuối của Mac OS X là BASH, đây là một số phím tắt BASH:

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L    Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Lets you search through previously used commands
Ctrl + C    Kill whatever you are running
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T  Swap the last two words before the cursor
Alt + F  Move cursor forward one word on the current line
Alt + B  Move cursor backward one word on the current line
Tab      Auto-complete files and folder names

Một trong những bạn đang tìm kiếm là Ctrl+ H. (Điều này giống như nhấn phím xóa lùi)

Nếu bạn đang tìm kiếm một nhân vật thoát để quay lại một nhân vật, bạn đang tìm kiếm \b. Như trong:

$ echo -e "one two\b\b\b\b three" # Will echo "one three"

25
Để làm cho các liên kết của Alt Alt hoạt động, người dùng sẽ phải kích hoạt tùy chọn Sử dụng như là meta meta trong Terminal . Điều này sẽ thay thế các ký tự mở rộng dựa trên Tùy chọn thông thường và các phím chết.
Chris Johnsen

6
Sidenote: Sử dụng alt làm khóa meta làm cho nhiều ký tự cần thiết như @ [] | {} không thể truy cập được trên nhiều bố cục bàn phím quốc tế như tiếng Đức hoặc tiếng Áo. Bạn có thể nhảy tới hoặc lùi một từ bằng cách nhấn ESC-f và ESC-b tương ứng. Đối với các ký tự đơn, bạn có thể sử dụng các phím mũi tên trong hầu hết các trường hợp. Trong Terminal.app: Preferences> Settings [Advanced], bạn có thể đánh dấu vào ô "Xóa gửi Ctrl-H" để phím xóa của bạn hoạt động chính xác trong các ứng dụng như vim.
MacLemon

2
-1 Điều này không trả lời câu hỏi. Chris Johnsen đã trả lời đúng, nhưng trong một bình luận.
bentford

1
Các lệnh alt không hoạt động đối với tôi Alt + F và Alt + B không hoạt động. Tôi đang chạy bash
Shervin Asgari

@MacLemon, thú vị là Esc + fEsc + b hoạt động với tôi, nhưng tôi không thể giữ Esc xuống và nhấn f hoặc b nhiều lần; 'f' hoặc 'b' được chèn vào các lần nhấn tiếp theo.
Kenny Evitt

10

Trên máy Mac của tôi, ALT + con trỏ trái / phải quay lại / chuyển tiếp một từ. Hoàn toàn cần thiết.


6

Hãy thử SS64 . Trang web này chỉ tuyệt vời để tham khảo dòng lệnh.

Phím tắt OS X CLI được lấy từ trang SS64 này .

Bash Keyboard Shortcuts

Moving the cursor:
  Ctrl + a   Go to the beginning of the line (Home)
  Ctrl + e   Go to the End of the line (End)
  Ctrl + p   Previous command (Up arrow)
  Ctrl + n   Next command (Down arrow)
   Alt + b   Back (left) one word
   Alt + f   Forward (right) one word
  Ctrl + f   Forward one character
  Ctrl + b   Backward one character
  Ctrl + xx  Toggle between the start of line and current cursor position

Editing:
 Ctrl + L   Clear the Screen, similar to the clear command
 Ctrl + u   Cut/delete the line before the cursor position.
  Alt + Del Delete the Word before the cursor.
  Alt + d   Delete the Word after the cursor.
 Ctrl + d   Delete character under the cursor
 Ctrl + h   Delete character before the cursor (backspace)
 Ctrl + w   Cut the Word before the cursor to the clipboard.
 Ctrl + k   Cut the Line after the cursor to the clipboard.
  Alt + t   Swap current word with previous
 Ctrl + t   Swap the last two characters before the cursor (typo).
 Esc  + t   Swap the last two words before the cursor.
 Ctrl + y   Paste the last thing to be cut (yank)
  Alt + u   UPPER capitalize every character from the cursor to the end of the current word.
  Alt + l   Lower the case of every character from the cursor to the end of the current word.
  Alt + c   Capitalize the character under the cursor and move to the end of the word.
  Alt + r   Cancel the changes and put back the line as it was in the history (revert).
 Ctrl + _   Undo

 TAB        Tab completion for file/directory names
For example, to move to a directory 'sample1'; Type cd sam ; then press TAB and ENTER. 
type just enough characters to uniquely identify the directory you wish to open.

History:
  Ctrl + r   Recall the last command including the specified character(s)
             searches the command history as you type.
             Equivalent to : vim ~/.bash_history. 
  Ctrl + p   Previous command in history (i.e. walk back through the command history)
  Ctrl + n   Next command in history (i.e. walk forward through the command history)
   Alt + .   Use the last word of the previous command
  Ctrl + s   Go back to the next most recent command.
            (beware to not execute it from a terminal because this will also launch its XOFF).
  Ctrl + o   Execute the command found via Ctrl+r or Ctrl+s
  Ctrl + g   Escape from history searching mode

Process control:
 Ctrl + C   Interrupt/Kill whatever you are running (SIGINT)
 Ctrl + l   Clear the screen
 Ctrl + s   Stop output to the screen (for long running verbose commands)
 Ctrl + q   Allow output to the screen (if previously stopped using command above)
 Ctrl + D   Send an EOF marker, unless disabled by an option, this will close the current shell (EXIT)
 Ctrl + Z   Send the signal SIGTSTP to the current task, which suspends it.
            To return to it later enter fg 'process name' (foreground).

Emacs mode vs Vi Mode    
All the above assume that bash is running in the default Emacs setting, if you prefer this can be switched to Vi shortcuts instead.

Set Vi Mode in bash:
$ set -o vi

Set Emacs Mode in bash:    
$ set -o emacs

Lưu ý: Để sử dụng Phím tắt Alt >> Mở Tùy chọn thiết bị đầu cuối >> Tab Cài đặt >> Bàn phím >> Đánh dấu vào "Sử dụng tùy chọn làm phím meta"

Tùy chọn thiết bị đầu cuối


1
"Sử dụng tùy chọn làm khóa meta" làm cho nó hoạt động với tôi.
nhà sư mạng


1

Thực sự không cần ánh xạ optionkhóa tới meta, trong OS X Terminal, option+ left-arrow, option+ right-arrowthay thế Alt+ FAlt+ Btương ứng. Các phím tắt thường được sử dụng khác đều hoạt động như được thực hiện trên các nền tảng khác. esccó thể mô phỏng chức năng ban đầu của Altkhóa, nhưng có thể hơi khó chịu khi sử dụng esclàm công cụ sửa đổi, cộng với việc bạn không thể giữ escvà nhấn liên tục Bhoặc F, bạn cần phải bật lại và đẩy nó xuống mỗi lần.

TL; DR

option+ left-arrow= lùi một từ

option+ right-arrow= chuyển tiếp một từ


Các hợp âm tùy chọn không hoạt động trong OS X Terminal của tôi.
Kenny Evitt

0

Bạn có thể quan tâm đến hồ sơ của tôi: https://github.com/lingtalfi/mac-terminal-shortcut

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
CTRL-backspace: Same as ALT-backspace
CTRL-del: Same as ALT-del
home: move to the beginning of the line
end: move to the end of the line
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.