Aproximadamente 5 veces al día, escribo "vi" cuando quise decir "cd", y termino abriendo un directorio en vi. Me está volviendo loco. Parece que debería haber una forma de detectar cuando escribo "vi + directorio" y lo cambio automáticamente a "cd + directorio". Pensamientos?
bash
shell
alias
cd-command
Alex
fuente
fuente

Respuestas:
Suponiendo que llame
vicon el directorio como último argumento:fuente
rmarm -i, que es el valor por defecto en muchas distribuciones. En general, creo que la mejor manera de resolver problemas es resolver al usuario en lugar de solucionarlo.rmarm -ite puede haber salvado algunos problemas en el pasado, pero podría (y probablemente) se obtiene en muchos más problemas en el futuro ...vien la pregunta ...${!#}referencia indirecta al argumento final, ycommandsolo es necesario para evitar la recurrencia de funciones en esta instancia.Además de la respuesta @ChrisDown, aquí hay otro enfoque: omitir directorios
Con este enfoque, puedes:
e iniciará vi en todos los archivos en el directorio actual, incluso si contiene subdirs, omitiendo esos subdirs
Este solo hace vi, en cualquier argumento que no sean directorios ... Por lo tanto, no le enseñará a usar "vi" para "cd";)
Y no llamará a vi si acaba de hacerlo: vi somedirectory (es decir, vi mal escrito en lugar de cd). Pero no se creará un CD allí automáticamente, por lo que aún recuerda que debe escribir cd ^^
Utilicé una forma "compatible" para cambiar las listas de argumentos, para que sea portátil en muchas plataformas.
fuente
command somethinginicia el comando "algo" (es decir, la primera aparición de "algo" encontrado usando $ PATH) en lugar de cualquier alias O función llamada "algo".\somethingsolo pasaría por alto el alias, pero seguiría siendo la función si existiera (y aquí, eso significaría que la función "vi" se llamaría a sí misma y bucle).Una solución es dejar de usar por
cdcompleto. Ponershopt -s autocden tu.bashrcosetopt autocden tu.zshrc. Luego, para cambiar a un directorio diferente, escriba el nombre del directorio, sin ningún comando.No olvides escribir
visi quieres editar un archivo.Si realmente desea que un solo comando cambie a un directorio o edite un archivo, puede hacerlo una función:
fuente
Utilice la función de alias en Unix. Una vez que alias cd to vi, el problema se resolverá.
fuente
visin anular manualmente el alias, lo que parece muy indeseable.vimen su lugar.vim. Si no está disponible, useviy espere el conjunto de funciones más limitado.