Quatro aliases zsh úteis para projetos Rails

Aqui está uma pequena função que uso como um alias em meu zhsrc:

ff () {
find
| xargs grep "$1" -sl | view - -c "/$1/";
}

Agora, este provavelmente não é o mais prático dos apelidos, uma vez que atravessa toda a árvore de diretórios, mas é bom para pequenos projetos. Para Rails, geralmente uso os outros quatro:

fa () {
find app
/models app/controllers | xargs grep "$1" -sl | view - -c "/$1/";
}
fs
() {
find features
/ spec/ | xargs grep "$1" -sl | view - -c "/$1/";
}
fd
() {
find db
/ | xargs grep "$1" -sl | view - -c "/$1/";
}
fv
() {
find app
/views/ | xargs grep "$1" -sl | view - -c "/$1/";
}

O que eles fazem? Vamos examiná-los passo a passo:

  • primeiro nós find– que mostra todos os arquivos no diretório atual, recursivamente
  • em seguida, canalizamos para xargs, que obtém a saída de find e, linha por linha, envia para o próximo comando, que em nosso caso é
  • grep "str"– estaremos procurando por uma string no arquivo que foi fornecido por xargs. Uma vez que todos os arquivos foram passados ​​linha por linha xargs, vamos procurar por “str” ​​em todos os arquivos, um por um
  • nós daremos grepa opção de exibir os dados como uma lista curta, (daí o ) para ter apenas os nomes de arquivos absolutos-sl
  • o resultado é uma lista de arquivos onde “str” ​​foi encontrado, então a próxima etapa seria passá-lo para o vim somente leitura (visualização) para mantê-lo em algum lugar. Anexamos um traço no final para fazer a leitura da visualização de stdin, de onde vem o tubo.

Portanto, temos uma visão de todos os arquivos que contêm “str”. Agora podemos ir para a linha que nos interessa e clicar gfpara abrir o arquivo no vim.

É isso aí!

Como vai funcionar? Tente ff somestringprocurar somestringem todos os arquivos e, em seguida, gfvá até o arquivo que lhe interessa. Da mesma forma, faolha através dos modelos e controladores, fsé para especificações, fdé para migrações (lembra quando você estava procurando pela migração que introduziu uma certa mudança?) E fvpara olhar nas visualizações.