"Crie aliases e funções personalizadas" cabe numa linha do guia e ocupa um arquivo inteiro na prática. Aqui está esse arquivo, com a paleta Vesper atravessando as quatro ferramentas.
A referência de como o bat resolve tema, config e cache. Esta lição destila o caminho tmTheme → cache → escape ANSI, que é o que permite provar a cor em vez de supor.
O guia termina com uma frase curta e cheia de trabalho: "garanta que todas essas ferramentas estejam instaladas e configuradas no seu PATH. Crie aliases e funções personalizadas no Fish Shell". Instalar é brew install. Integrar é o resto desta lição.
Pense como… comprar quatro eletrodomésticos bons e deixá-los na caixa: ligados na tomada eles funcionam, mas só viram cozinha quando ficam no lugar certo, na altura certa.
ls só vira eza em sessão interativafd, que o guia não cita mas é o que torna o fzf rápido.A camada inteira mora em ~/.config/fish/conf.d/rocketseat.fish. Apagar o arquivo desfaz tudo — nenhuma linha do seu config.fish foi tocada.
Os aliases que o guia pede. catn existe para você manter o cat parecido com o original e ainda ter a versão completa quando quiser.
# eza — "moderniza a listagem de arquivos" alias ls 'eza --icons --group-directories-first' alias ll 'eza -l --icons --group-directories-first --git --time-style=long-iso' alias la 'eza -la --icons --group-directories-first --git --time-style=long-iso' alias lt 'eza --tree --level=2 --icons --group-directories-first' alias tree 'eza --tree --icons --group-directories-first' # bat — "versao aprimorada do cat que destaca a sintaxe" alias cat 'bat --style=plain' # igual ao cat, so que com sintaxe alias catn 'bat' # com numero de linha, header e diff set -gx MANPAGER "sh -c 'col -bx | bat -l man -p'"
Como chegar: bat ~/.config/fish/conf.d/rocketseat.fish · fish -n no arquivo checa a sintaxe sem executar.
if status is-interactive. Por quê?ls e cat globalmente muda o comportamento de scripts que fazem parsing dessas saídas. Dentro do guard, a sessão interativa ganha os ícones e a sintaxe, e todo script continua falando com os binários reais do sistema.O bat não vem com Vesper. Dá para escolher um tema parecido — ou compilar o Vesper de verdade, mapeando cada cor da paleta no escopo de sintaxe correspondente.
plutil -lint pega erro de XML antes de virar cache.Cada bloco liga um escopo de sintaxe a uma cor da paleta. #99FFE4 é o verde-menta do Vesper.
<dict>
<key>name</key><string>String</string>
<key>scope</key><string>string, string.quoted, punctuation.definition.string</string>
<key>settings</key>
<dict><key>foreground</key><string>#99FFE4</string></dict>
</dict>
<dict>
<key>name</key><string>Comment</string>
<key>scope</key><string>comment, punctuation.definition.comment</string>
<key>settings</key>
<dict>
<key>foreground</key><string>#8B8B8B</string>
<key>fontStyle</key><string>italic</string>
</dict>
</dict>
Como chegar: plutil -lint ~/.config/bat/themes/Vesper.tmTheme && bat cache --build
Vesper.tmTheme. É esta paleta que aparece nos escapes ANSI acima.Olhar a tela prova que alguma cor apareceu. Ler o escape prova qual. Como o bat cai em silêncio para o tema padrão quando o nome não casa ou o cache está velho, a diferença entre "funcionou" e "parece que funcionou" é exatamente essa: 38;2;153;255;228 é #99FFE4 e mais nada. O verify.sh faz essa checagem no bloco D6.
A mesma paleta do terminal, agora nos 13 slots de cor do fzf — e as prévias saem do bat e do eza.
set -gx FZF_DEFAULT_OPTS "\
--height=60% --layout=reverse --border=rounded --info=inline --prompt=' ' \
--pointer='▌' --marker='+' \
--color=fg:#ffffff,bg:-1,hl:#FFC799 \
--color=fg+:#ffffff,bg+:#232323,hl+:#FFC799 \
--color=info:#A0A0A0,prompt:#99FFE4,pointer:#FFC799 \
--color=marker:#90b99f,spinner:#aca1cf,header:#8B8B8B \
--color=border:#2A2A2A,gutter:-1"
set -gx FZF_DEFAULT_COMMAND 'fd --type f --hidden --follow --exclude .git'
set -gx FZF_CTRL_T_OPTS "--preview 'bat --color=always --style=numbers --line-range=:200 {}'"
set -gx FZF_ALT_C_OPTS "--preview 'eza --tree --level=2 --icons --color=always {}'"
Como chegar: Teste com Ctrl+T (arquivos) e Alt+C (diretórios) numa sessão fish.
eza com ícones e permissões coloridas, dentro de um pty real. Os ícones U+E5FF vieram da Nerd Font da lição 2.Aliases economizam tecla. Funções economizam passo: elas juntam duas ferramentas numa ação só.
ff = achar e abrir. fcd = achar e entrar. O test -n evita rodar o editor quando você aperta Esc.
function ff --description 'fuzzy find um arquivo e abre no EDITOR'
set -l file (fzf --preview 'bat --color=always --style=numbers --line-range=:300 {}')
test -n "$file"; and $EDITOR $file
end
function fcd --description 'fuzzy find um diretorio e entra nele'
set -l dir (fd --type d --hidden --follow --exclude .git | fzf --preview 'eza --tree --level=2 --icons --color=always {}')
test -n "$dir"; and cd $dir
end
Como chegar: Digite ff em qualquer diretório. functions ff mostra o corpo da função.
Três funções chegaram junto com os aliases:
ff — busca um arquivo e abre no seu editorfcd — busca um diretório e entra nelersdoctor — mostra o estado da stack inteiraFunções em conf.d/ ficam disponíveis imediatamente, sem autoload — diferente das que moram em functions/<nome>.fish, que o fish carrega sob demanda. Para três funções pequenas isso é irrelevante; para uma biblioteca grande, o autoload é o certo, porque cada arquivo de conf.d/ é lido em toda sessão, inclusive não-interativa.
rsdoctor em execução real. É o diagnóstico de um comando quando alguma coisa parar de aparecer.ls só vira eza em sessão interativa?38;2;153;255;228 é exatamente #99FFE4. Olhar a tela só prova que alguma cor apareceu.fd (ou o zoxide) alimenta; bat desenha a prévia de arquivo e eza --tree a de diretório.brew install bat zoxide eza fzf fd~/.config/fish/conf.d/rocketseat.fish com os aliases e as variáveis de cor do fzffish -n ~/.config/fish/conf.d/rocketseat.fishrsdoctorFZF_DEFAULT_OPTS pela paleta do seu tema — os 13 slots são fg, bg, hl, fg+, bg+, hl+, info, prompt, pointer, marker, spinner, header, border.ls mostre ícones sem quebrar seus scripts. Como?