En bash, el autocompletado de rutas ha dejado de funcionar recientemente al emitir vimcomandos donde la ruta es más profunda que dos directorios (continúa funcionando como se esperaba con otros comandos, como lsy cd).
Por ejemplo, si escribo ls .config/btsync/bty luego presiono TAB, se expande a ls .config/btsync/btsync.conf.
Si escribo vim .config/bty luego presiono TAB, se expande a vim .config/btsync/.
Sin embargo, si escribo vim .config/btsync/bty luego presiono TAB, no sucede nada (esperaría que se expanda vim .config/btsync/btsync.conf, como en el lsejemplo anterior).
Tengo el mismo problema cuando ejecuto como mi propio usuario y cuando ejecuto como su.
Leí esta publicación que mencionaba un problema con versiones anteriores de bash-complete pero estoy ejecutando 2.1-5.
ACTUALIZACIÓN: Después de algunas pruebas adicionales, descubrí que el problema raíz es que bash solo completará los nombres de directorio, no los nombres de archivo.
ACTUALIZACIÓN: Resulta que esa bash-completionfue la causa general. Vea mi segundo comentario sobre la respuesta aceptada.
¡Cualquier sugerencia sobre la posible causa de este comportamiento sería recibida con gratitud!
fuente

.bashrc!.bashrcpublicado, según lo exigido.Respuestas:
Investigué un poco más para usted y esto es lo que encontré: la clave para el autocompletado es el
bashcomandocomplete. Puede imprimir las reglas paravimusar:Del mismo modo, puede eliminar estas reglas específicas con:
Este comando lo restablece a los valores predeterminados: las rutas habituales y la finalización de los nombres de archivo sin ninguna lógica adicional. Eso es probablemente lo que quieres.
Para obtener más información, consulte
help completeoman bashbusque la sección sobre elcompletecomando (es un bash incorporado, por lo tanto, está documentado en la página de manual de bash).Un último punto: los cambios anteriores solo afectan a la
bashsesión actual , si desea eliminar las reglas vim después de cada inicio de sesión, coloque elcomplete -r vimen su~/.bashrc.Espero que ayude :)
fuente
complete -p vimcomando regresócomplete -F _filedir_xspec vimque fue eliminado por elcomplete -r vimcomando, resolviendo el problema. Voy a leer un poco sobre elcompletecomando y la información devuelta por el modificador -p. Ligeramente desconcertado por qué este comportamiento cambió, también lo investigará._filedir_xspecfunción/usr/share/bash-completion/bash_completionsolo completa directorios. Desinstalébash-completion, eliminé lacomplete -r vimlínea.bashrcy reinicié yvimahora se comporta como se esperaba.Bash por defecto autocompleta solo la ruta y los nombres de archivo. Sin embargo, el mecanismo es extensible y se puede enseñar a bash a realizar diferentes autocompletados para diferentes programas. Por ejemplo
git, puede completar automáticamente los nombres de los subcomandos (clonar, confirmar) y revisiones en lugar de solo nombres de ruta. A veces es útil, a veces bastante molesto, por ejemplo, cuando segzip -dniega a completar automáticamente los nombres de archivo que no tienen la.gzextensión.La finalización de Bash generalmente se configura en
/etc/bash_completion.d: probablemente encontrará un archivo llamadovimallí. Ese es el archivo que contiene las reglas de autocompletado para lavimlínea de comandos.Ahora tienes dos opciones:
vimreglas especiales y solo realice el autocompletado de ruta predeterminado.Y, por supuesto, presente un informe de error que describa el problema para que se solucione en las futuras versiones :)
fuente
/etc/bash_completion.dy solo hay unhgarchivo presente (para Mercurial). Muy extraño./usr/share/bash-completion/o enumere todos los archivos delvimpaquete o desdebashobash-completionpaquetes (no estoy seguro de cómo se llama en ArchLinux). Estará allí en alguna parte.bash-completionpaquete muestra/usr/share/bash-completion/completionscontiene reglas para muchos programas, pero novim. La lista de archivos instalados con elvimpaquete no muestra ningún archivo relacionado con la finalización y la búsqueda en todo el sistema usandofind / -name vimtampoco muestra ningún archivo relacionado con la finalización.Quizás podría reinstalar bash-complete:
apt-get install --reinstall bash-completionY eche un vistazo al archivo /etc/bash.bashrc:
nano /etc/bash.bashrcY verifique que la siguiente línea no esté bien comentada:
Luego, reinicie su sesión de terminal
fuente
bash-completion, probar elvimcomportamiento y luego reinstalarbash-completiony probar, pero aún tuve el mismo problema en ambas circunstancias. Las líneas que ha enumerado no están presentes/etc/bash.bashrc. Esta línea es, sin embargo[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion