Faça bash o mais próximo possível do peixe

3

Eu adoro o fish shell e usá-lo exclusivamente no MacOS, mas uso bash em qualquer outro lugar porque é a única coisa instalada. Tendo sentido a dor de manter os arquivos de configuração para as duas camadas, decidi parar de usar peixe e voltar a cair em vez disso. Para torná-lo o mais simples possível, quais opções de configuração / plugins / etc devo usar com o bash para torná-lo o mais próximo possível do peixe?

Coisas que mais sinto falta:

  • suporte à auto-conclusão: o fish lembra todos os meus comandos, conclui comandos parciais (às vezes enormes), parece entender todos os aplicativos de linha do cmd que eu uso e oferece conclusões sobre seus comandos, etc. escureceu a cor do comando que seria preenchido automaticamente se eu fosse clicar na aba.
  • git support: fish mostra se estou em um repositório do github, o nome da ramificação e se foi modificado ou está claro usando cores bonitas ao lado do meu nome de usuário @ hostname, adoraria ter isso no bash bem
por gnzlbg 31.07.2017 / 16:27

2 respostas

3

Existem muitas opções para configurar bash . Eu uso os seguintes comandos para facilitar o acesso ao histórico de comandos: -

bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

Estes ajustam as setas Up e Down para examinar o histórico de comandos para os comandos que começam com os caracteres antes do cursor na linha de comando (como o TCC faz no Windows).

Quanto ao prompt, você pode colocar comandos para serem executados toda vez que o prompt for gerado. Eu uso: -

PS1="\'curspos -n>/dev/tty\'\'[ \$BASH_LEVEL != 1 ]&&echo \"[\$BASH_LEVEL]\"\'\t[\w/]\\$ "

Isso chama dois comandos em cada prompt: -

  • curspos é um script que escrevi para verificar a posição do cursor e gerar uma nova linha, se não estiver na primeira coluna (fiquei irritado com linhas em branco desnecessárias).
  • As verificações BASH_LEVEL precedem o prompt com o nível entre colchetes, se não for 1, portanto fica imediatamente óbvio se você estiver em um shell filho (por exemplo, [2]15:55:32[~/]$ ).

Nenhuma delas responde diretamente às suas necessidades, mas elas ilustram o poder que você pode usar na string de prompt. No seu caso, você pode simplesmente preceder um script ou função (como gitcheck ) para executar antes do resto do seu prompt, e isso pode gerar qualquer informação que você queira ver no formato que você quer como parte do prompt.

Eu finalmente comentaria que fish está disponível em muitas distribuições Linux (por exemplo, no repositório do Ubuntu), então você precisa fazer estas bash customizações apenas se você for impedido de instalar pacotes.

    
por 31.07.2017 / 17:10
2

Em relação ao preenchimento automático, bash usa o GNU Readline para fornecer conclusão de tabulação e pesquisa de histórico & conclusão. A conclusão de tabulação funciona para nomes de comandos, arquivos e - para qualquer comando que tenha scripts de conclusão - opções e argumentos. Use Up ou Down para percorrer o histórico linearmente; ou, para procurar, digite Ctrl + R e qualquer parte do comando que você lembra. O Readline está instalado em quase todos os lugares que o bash é, especialmente para os sistemas operacionais modernos.

Para responder às suas preocupações com o Git, o próprio Git inclui scripts para colorir o prompt , e executar tab-completion para o shell bash e outros. Quando instalei o Git for Windows, o programa bash distribuído com ele foi pré-preparado para usá-los automaticamente.

Se você estiver familiarizado com o bash, provavelmente não será difícil adicionar um prompt git no Mac . O Bash gera seu prompt a partir do conteúdo da variável PS1 . Ele permite que você execute uma função arbitrária para gerar partes do prompt, o que permite que esses scripts inteligentes sejam executados. Como outros shells, bash confia no emulador de terminal subjacente para produzir cores. Ele simplesmente passa o texto que você definiu para o prompt no emulador de terminal. Basta adicionar os códigos ANSI corretos ao prompt PS1 e você obterá resultados em cores.

    
por 31.07.2017 / 17:46

Tags