Environ 5 fois par jour, je tape "vi" quand je voulais dire "cd", et finis par ouvrir un répertoire dans vi. Ça me fait des noix. Il semble qu'il devrait y avoir un moyen de détecter quand je tape "répertoire vi +" et de le changer automatiquement en "répertoire cd +". Pensées?
bash
shell
alias
cd-command
Alex
la source
la source
Réponses:
Avec l'hypothèse que vous appelez
vi
avec le répertoire comme dernier argument:la source
rm
àrm -i
, qui est la valeur par défaut dans de nombreuses distributions. Je pense généralement que la meilleure façon de résoudre les problèmes est de résoudre l'utilisateur plutôt que de les contourner.rm
pourrm -i
aurait pu vous sauver quelques problèmes dans le passé , mais pourrait (et sera probablement) , vous obtenez dans beaucoup plus de mal à l'avenir ...vi
dans la question ...${!#}
indirectement référence à l'argument final etcommand
n'est nécessaire que pour éviter la récursivité des fonctions dans cette instance.Outre la réponse @ChrisDown, voici une autre approche: contourner les répertoires
Avec cette approche, vous pouvez:
et il démarrera vi sur tous les fichiers du répertoire courant même s'il contient des sous-répertoires, en contournant ces sous-répertoires
Celui-ci ne fait que vi, sur tout argument qui ne sont pas des répertoires ... Par conséquent, il ne vous apprendra pas à utiliser "vi" pour "cd";)
Et il n'appellera pas vi si vous venez de le faire: vi un répertoire (c'est-à-dire, un typage erroné au lieu de cd). Mais il n'y sera pas automatiquement alors, vous vous souvenez donc que vous devez taper cd ^^
J'ai utilisé un moyen "compatible" pour modifier les listes d'arguments, afin qu'il soit portable sur de nombreuses plates-formes.
la source
command something
démarre la commande "quelque chose" (c'est-à-dire la première occurrence de "quelque chose" trouvé en utilisant $ PATH) au lieu de toute fonction d'alias OU nommée "quelque chose".\something
ne contournerait que l'alias, mais conserverait la fonction si elle existait (et ici, cela signifierait que la fonction "vi" s'appellerait elle-même et ferait une boucle).Une solution consiste à cesser
cd
complètement d' utiliser . Mettezshopt -s autocd
dans votre.bashrc
ousetopt autocd
dans votre.zshrc
. Ensuite, pour passer à un autre répertoire, tapez le nom du répertoire, sans aucune commande.N'oubliez pas de taper
vi
si vous souhaitez modifier un fichier.Si vous voulez vraiment qu'une seule commande change dans un répertoire ou édite un fichier, vous pouvez en faire une fonction:
la source
Utilisez la fonction d'alias sous Unix. Une fois que vous avez alias cd en vi, le problème sera résolu.
la source
vi
sans remplacer manuellement l'alias, ce qui semble hautement indésirable.vim
place.vim
. S'il n'est pas disponible, utilisezvi
et attendez-vous à l'ensemble de fonctionnalités plus limité.