Adicione abreviaturas na configuração fish

7

Gostaria de usar o recurso abreviaturas do fish shell, especialmente para a variável bash conhecida !! ou aliases para comandos comuns do git. Eu sei que abreviações podem ser adicionadas como no trecho a seguir:

abbr -a gco git checkout

Eu também sei que essa configuração é persistente em um arquivo localizado em .config/fish/fishd.host , mas este arquivo também está dizendo que ele não deve ser editado, já que as alterações podem ser perdidas (porque o arquivo é gerado automaticamente).

Então, minha pergunta é como adicionar essas abreviações em um arquivo de configuração, porque eu quero colocar meus dotfiles em um repositório git. E se eu usar esses dotfiles em uma máquina separada, não quero executar todos esses abbr novamente.

    
por Daniel Rotter 06.03.2016 / 14:21

4 respostas

0

Eu tentei pescar novamente e encontrei uma solução que está funcionando para mim agora. Também é descrito dessa forma na documentação do peixe .

Eles simplesmente sugerem para redefinir fish_user_abbreviations e chamar cada abbr de novo e de novo. (Eu nem usei o if no meu caso, também funciona bem)

if status --is-interactive
    set -g fish_user_abbreviations
    abbr --add first 'echo my first abbreviation'
    abbr --add second 'echo my second abbreviation'
    # etcetera
end

É realmente semelhante ao que MJV sugeriu , mas sem a desvantagem de estar em cache. A desvantagem é que a inicialização é um pouco mais lenta, mas vou ficar de olho nisso. Eu estou indo com essa variante, uma vez que também é mencionado na documentação.

    
por 30.12.2017 / 13:29
11

Desculpe, não tenho certeza se entendi o que você está perguntando. Mas se sua pergunta é como definir suas definições de abbr na inicialização (e em um arquivo que você pode armazenar em um repositório e compartilhar entre máquinas), você deve usar o arquivo ~/.config/fish/config.fish que é equivalente a Fish .bashrc em Bash.

Como as abreviações são armazenadas em variáveis globais / universais, elas não precisam ser redefinidas toda vez que você abre uma janela de terminal, portanto, você pode salvaguardar esse arquivo de configuração para evitar redefini-las todas as vezes bit), como explicado aqui: link

Por exemplo meu config.fish se parece com isso (para comandos do Git):

if not set -q abbrs_initialized
  set -U abbrs_initialized
  echo -n Setting abbreviations... 

  abbr g 'git'
  abbr ga 'git add'
  abbr gb 'git branch'
  abbr gbl 'git blame'
  abbr gc 'git commit -m'
  abbr gco 'git checkout'
  abbr gcp 'git cherry-pick'
  abbr gd 'git diff'
  abbr gf 'git fetch'
  abbr gl 'git log'
  abbr gm 'git merge'
  abbr gp 'git push'
  abbr gpl 'git pull'
  abbr gr 'git remote'
  abbr gs 'git status'
  abbr gst 'git stash'

  echo 'Done'
end
    
por 14.12.2016 / 11:20
1

Corrigido isso! O que acabei fazendo é apenas fazer a saída de abbr -s em um script Fish. Então, em resumo:

abbr -s > abbr.fish
(edit abbr.fish, add the following line to the top:) #! /usr/bin/fish
chmod +x abbr.fish

E pronto!

Tudo o que você precisa fazer agora é executar abbr.fish em qualquer máquina Fish na qual queira suas abreviações e pronto.

    
por 25.04.2016 / 13:30
0

Abreviações são armazenadas como variáveis universais em peixes, então, na minha opinião, elas são mais adequadas para serem usadas interativamente como um rápido & maneira suja ™ de persistir suas expansões favoritas.

Se você quiser que essa configuração esteja disponível em outras caixas e sincronize-as com seus dotfiles, recomendamos criar uma função como gco.fish , etc., para cada abreviação.

  • gco.fish

    function gco
        command git checkout $argv
    end
    

As funções são carregadas com preguiça em peixes e sempre funcionarão melhor do que executar abbr (que também é não um peixe embutido, mas uma função regular com uma definição type abbr ) para cada abreviação em seu config.fish .

    
por 08.03.2016 / 02:46

Tags