Respostas:
Por mais conveniente que fosse, o Terminal não pode fornecer facilmente as funcionalidades solicitadas.
O motivo é que os programas executados dentro do Terminal possuem regras diferentes para mover o cursor para o início / fim da linha, por exemplo:
bash
(e outras conchas) usam CtrlAeCtrlEvi
usos 0e $/Shift4Outros programas podem usar outras teclas. Não existe uma combinação de teclas universal para posicionar o cursor no início / final da linha.
Obviamente, o Terminal poderia manter uma lista de combinações de teclas para vários programas comuns, verificar o que está sendo executado e enviar as chaves corretas para você, ou fornecer um item de menu como Mover cursor para o início da linha dentro do shell ⌘ ← e enviar CtrlAPor trás das cenas. Mas acho que os engenheiros da Apple pensaram que, se você se aventurar no território da CLI, conhece suas idiossincrasias.
Como observação lateral, o Terminal fornece Option←e Option→qual se comporta bash
conforme o esperado e move o cursor para o início da palavra anterior / seguinte. Isso ocorre porque essas combinações de teclas são mapeadas para Escbe Escb(consulte a man bash
seção "Comandos para mover" para obter mais informações). Por vi
exemplo, apenas o último (tipo de) funciona (no final desta resposta, mostrarei como configurar vi
para trabalhar com Option←e Option→).
Mas, graças ao Automator, AppleScript e aliases do bash, você pode obter ⌘←e ⌘→trabalhar com bash
(e possivelmente outros shells) e vi
.
O primeiro passo é mapear ⌘←e ⌘→para CtrlAe CtrlE. Em uma segunda etapa, mostrarei como configurar vi
para honrar CtrlAe CtrlE(que, como resultado, será vi
compatível com ⌘←e ⌘→).
Mapa ⌘←e ⌘→para CtrlAeCtrlE
No Terminal, vá para Preferências ...> Configurações> [seu perfil ativo]> Teclado:
Pressione +, selecione "Cursor para a esquerda", "Control-Shift" como modificador e a ação "Enviar texto:". Em seguida, pressione CtrlA( \001
aparecerá no campo de texto) e confirme com OK:
(Em uma versão anterior desta resposta, usei "Shift" como modificador. Percebi que essa configuração entra em conflito com ⌘shift←, o que mostra a guia Terminal anterior, se você não soltar ⌘imediatamente. Usando "Control-Shift" corrige isso.)
Agora adicione uma combinação de teclas para "Cursor Right", mas pressione CtrlE( \005
aparecerá no campo de texto). Confirme com OK.
Abra o Automator (por exemplo, pressione ⌘spacepara exibir o Spotlight e digite Automator ), selecione Arquivo> Novo e escolha Service
:
Arraste Run AppleScript
para o painel direito:
Digite o seguinte script:
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
e salve como Move Cursor to Beginning of Line
:
Repita as etapas 4. a 6. com este script:
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
e salve como Move Cursor to End of Line
:
É assim que o Terminal> Serviços se parece agora:
Configure vi
para honrar CtrlAeCtrlE
Abra .bashrc
com seu editor favorito e adicione esta linha:
alias vi='vim -c "map <C-A> 0" -c "map <C-E> $" -c "map <Esc>b B" -c "map <Esc>f E"'
Os dois primeiros map
comandos dizem vim
para interpretar ControlEe ControlAcomo $e 0, que movem o cursor para o início ou o fim da linha, respectivamente.
Os dois últimos map
comandos dizem vim
para mover o cursor uma palavra por vez, como seria de esperar ao pressionar option←e Option→.
Ressalvas
Você notará que existe um pequeno atraso entre o momento em que você pressiona ⌘←ou ⌘→e o momento em que o cursor realmente se move.
Lembre-se de que ele só funcionará para programas que respeitem CtrlA/ CtrlE, portanto, você ainda pode querer aprender as combinações de teclas específicas de cada programa usado no Terminal.
(Testado no macOS Sierra 10.12.4)
⌘
de atalho
vi
qual é uma aplicação completamente diferente da do terminal.
Claro que é possível.
Primeiro, você pode usar a ferramenta gratuita "DoubleCommand" se tiver um teclado do Windows com as teclas HOME / END para fazer com que eles se comportem como deveriam (início / fim da linha).
Em segundo lugar, para o terminal especificamente, vá para as preferências Teclado, edite o ícone / tecla que se parece com uma seta apontando para a esquerda, selecione "enviar texto" e digite ctrl + a. Feito!
O mesmo para o botão final.
Se você não possui um teclado para PC, pode fazer o mesmo com outras combinações de teclas.