Cerca de 5 vezes por dia, digitei "vi" quando quis dizer "cd" e acabei abrindo um diretório no vi. Isso está me deixando louca. Parece que deve haver uma maneira de detectar quando digito "diretório vi +" e o altero automaticamente para "diretório cd +". Pensamentos?
bash
shell
alias
cd-command
Alex
fonte
fonte
Respostas:
Com a suposição de que você chama
vi
o diretório como o último argumento:fonte
rm
pararm -i
, que é o padrão em muitas distribuições. Geralmente, penso que a melhor maneira de resolver problemas é resolver o usuário, em vez de contorná-lo.rm
arm -i
poderia ter salvo-lhe alguns problemas no passado, mas pode (e provavelmente irá) fazê-lo em muito mais problemas no futuro ...vi
na pergunta ...${!#}
referencia indiretamente o argumento final ecommand
é necessário apenas para evitar a recursão da função nesse caso.Além da resposta @ Chrishrown, aqui está outra abordagem: ignorar diretórios
Com essa abordagem, você pode:
e iniciará o vi em todos os arquivos no diretório atual, mesmo que contenha subdiretórios, ignorando esses subdiretórios
Este apenas faz vi, em qualquer argumento que não seja um diretório ... Portanto, não ensinará você a usar "vi" para "cd";)
E não chamará vi se você acabou de fazer: vi algum diretório (ou seja, digitou errado vi em vez de cd). Mas ele não cdará automaticamente automaticamente, então você ainda se lembra de que precisa digitar cd ^^
Usei uma maneira "compatível" para alterar as listas de argumentos, de modo que seja portátil para muitas plataformas.
fonte
command something
inicia o comando "something" (ou seja, a primeira ocorrência de "something" encontrada usando $ PATH) em vez de qualquer função de alias OR chamada "something".\something
contornaria apenas o alias, mas ainda assim a função se ela existisse (e aqui, isso significaria que a função "vi" se chamaria e faria um loop).Uma solução é parar de usar
cd
completamente. Coloqueshopt -s autocd
no seu.bashrc
ousetopt autocd
no seu.zshrc
. Em seguida, para mudar para um diretório diferente, digite o nome do diretório, sem nenhum comando.Não esqueça de digitar
vi
se quiser editar um arquivo.Se você realmente deseja que um único comando mude para um diretório ou edite um arquivo, você pode torná-lo uma função:
fonte
Use o recurso de alias no Unix. Depois de usar o cd para vi, o problema será resolvido.
fonte
vi
sem substituir manualmente o alias, o que parece altamente indesejável.vim
.vim
. Se não estiver disponível, usevi
e espere o conjunto de recursos mais limitado.