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
vi
con el directorio como último argumento:fuente
rm
arm -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.rm
arm -i
te puede haber salvado algunos problemas en el pasado, pero podría (y probablemente) se obtiene en muchos más problemas en el futuro ...vi
en la pregunta ...${!#}
referencia indirecta al argumento final, ycommand
solo 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 something
inicia el comando "algo" (es decir, la primera aparición de "algo" encontrado usando $ PATH) en lugar de cualquier alias O función llamada "algo".\something
solo 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
cd
completo. Ponershopt -s autocd
en tu.bashrc
osetopt autocd
en tu.zshrc
. Luego, para cambiar a un directorio diferente, escriba el nombre del directorio, sin ningún comando.No olvides escribir
vi
si 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
vi
sin anular manualmente el alias, lo que parece muy indeseable.vim
en su lugar.vim
. Si no está disponible, usevi
y espere el conjunto de funciones más limitado.