Używanie skrótów klawiszowych terminalu z bash na macOS

51

Próbowałem nauczyć się skrótów klawiaturowych dla powłoki na macOS, ale kiedy próbowałem użyć ALT+ B, to nie działało.

Jak odkrywasz, konfigurujesz i używasz skrótów klawiszowych w powłoce? Pomocne będą wszelkie ściągawki.

Otwórz drogę
źródło
duplikat: superuser.com/questions/113103/ ... ... nie jest specyficzny dla OSX, ale zawiera wiele informacji na temat standardowych mapowań klawiatury bash, dostosowywania readline i innych zabawnych sztuczek bash.
szarlatan
6
nie jest to duplikat powyższego pytania. ten dotyczy tego, jak sprawić, by OSX nie przechwytywał przypisań klawiszy związanych z terminalem
Arthur Ulfeldt
3
Odznacz to jako duplikat. Potrzebuje odpowiedzi wskazującej „użyj opcji jako meta-klucza” dla terminala OSX.
Bentford,

Odpowiedzi:

12

Jednym ze sposobów radzenia sobie z sekwencjami klawiszy „meta”, które nie działają na terminalu OS X, jest przypisywanie określonych sekwencji znaków do poszczególnych naciśnięć klawiszy. Dla osób z klawiaturami spoza USA jest to często lepsze rozwiązanie niż ustawienie „Użyj opcji jako meta” wspomniane w komentarzach do innych odpowiedzi. (Wiele międzynarodowych klawiatur Mac jest zasadniczo bezużytecznych do prac programistycznych bez klawisza Option / alt, ponieważ niektóre krytyczne znaki są w przeciwnym razie niedostępne. Na przykład nie ma #klawiatury brytyjskiej Mac.)

Aby słowo-lewo i słowo-prawo działało w trybie bash, użyłem sekcji „Klawiatura” w Ustawieniach w Terminalu. Możesz nakazać mu generowanie określonych sekwencji kodu, gdy zostaną wykonane określone naciśnięcia klawiszy. Skonfigurowałem mój tak, że alt+ generuje \033b(tak naprawdę dwa znaki: Esc, a następnie mała litera b) i alt+ generuje \033f(tj Esc f.). Pozwala to używać klawiszy strzałek z wciśniętym klawiszem opcji, aby uzyskać zachowanie słowa lewo i prawo.

To, czego jeszcze nie opracowałem, to jak zdobyć Escklucz do pracy - teoretycznie powinieneś być w stanie użyć go do sekwencji „meta”, ale wydaje się, że nie działa. (Więc wpisanie Esc+ bpowinno cofnąć się o jedno słowo.)

Jeśli masz układ klawiatury w USA lub inną klawiaturę, w której Apple uznał za stosowne, aby zapewnić wszystkie klawisze, których faktycznie potrzebujesz, to jak sugerują inni, „Użyj opcji jako klawisza meta” (także w sekcji Klawiatura w ustawieniach terminalu) jest prawdopodobnie lepszym wyborem, ponieważ będziesz mógł uzyskać dostęp do dowolnej kombinacji klawiszy meta. Po włączeniu Alt+ bdziała zgodnie z oczekiwaniami.

Ian Griffiths
źródło
80

Terminalem Mac OS X jest BASH, oto kilka skrótów 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

Ten, którego szukasz, to Ctrl+ H. (Jest to to samo, co naciśnięcie klawisza Backspace)

Jeśli szukasz postaci ucieczki, aby cofnąć się o jedną postać, szukasz \b. Jak w:

$ echo -e "one two\b\b\b\b three" # Will echo "one three"
Arko
źródło
25
Aby powiązania „Alt” działały, użytkownik będzie musiał włączyć opcję „Użyj opcji jako meta” w Terminalu . Zastąpi to zwykłe rozszerzone znaki i martwe klawisze oparte na Opcjach.
Chris Johnsen
6
Sidenote: Użycie alt jako klawisza meta powoduje, że wiele potrzebnych znaków, takich jak @ [] | {}, jest niedostępnych na wielu międzynarodowych układach klawiatury, takich jak niemiecki lub austriacki. Możesz przeskoczyć słowo do przodu lub do tyłu, naciskając odpowiednio ESC-f i ESC-b. W przypadku pojedynczych znaków w większości przypadków można użyć klawiszy strzałek. W Terminal.app: Preferencje> Ustawienia [Zaawansowane] możesz zaznaczyć pole „Usuń wysyła Ctrl-H”, aby klawisz usuwania działał poprawnie w aplikacjach takich jak vim.
MacLemon
2
-1 To nie odpowiada na pytanie. Chris Johnsen odpowiedział poprawnie, ale w komentarzu.
Bentford,
1
Polecenia alt nie działają dla mnie Alt + F, a Alt + B nie działa. Prowadzę bash
Shervin Asgari,
@MacLemon, co ciekawe, Esc + f i Esc + b działają dla mnie, ale nie mogę przytrzymać Esc i naciskać f lub b wiele razy; Na kolejnych prasach dodaje się „f” lub „b”.
Kenny Evitt
10

Na moim brytyjskim komputerze Mac, ALT + kursor w lewo / w prawo przewija o jedno słowo do tyłu / do przodu. Absolutnie niezbędna.

jmoz
źródło
6

Wypróbuj SS64 . Ta strona jest idealna do odniesienia do wiersza poleceń.

Skróty klawiaturowe CLI w systemie OS X zaczerpnięte z tej strony SS64 .

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

Uwaga: Aby użyć skrótów klawisza Alt >> Otwórz Preferencje terminala >> Karta Ustawienia >> Klawiatura >> Zaznacz „Użyj opcji jako klawisza meta”

Preferencje terminala

Rahul Thakur
źródło
1
„Użyj opcji jako klucza meta” sprawiło, że zadziałało to dla mnie.
cyber-mnich
2

Chcesz sekcji READLINE strony bash(1)man:

man 1 bash
/^READLINE
Ignacio Vazquez-Abrams
źródło
1

Naprawdę nie ma potrzeby mapowania optionklucza na meta w terminalu OS X option+ left-arrow, option+ , + right-arrowzastępuje odpowiednio Alt+ Fi Alt+ B. Inne powszechnie używane skróty działają tak, jak zostały zaimplementowane na innych platformach. escmoże emulować oryginalną funkcjonalność Altklawisza, ale może być trochę niewygodne, escgdy używa się go jako modyfikatora, a ponadto nie można przytrzymywać esci wielokrotnie naciskać Blub F, trzeba go puścić i za każdym razem z powrotem naciskać.

TL; DR

option+ left-arrow= cofnij jedno słowo

option+ right-arrow= przewiń jedno słowo

Dan Robson
źródło
W opcji akordy nie działa w moim OS X terminali.
Kenny Evitt
0

Możesz być zainteresowany moim profilem: https://github.com/lingtalfi/mac-terminal-shortcuts

Zapewnia następujące (intuicyjne) skróty:

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
molwa
źródło