Creo que bash tropieza con algunas anomalías en el tratamiento de los caracteres acentuados. Puede que quieras coger palomitas, porque esto se va a poner técnico un rato...
Unicode permite que algunos caracteres acentuados se representen de varias formas diferentes: como un "punto de código" que representa el carácter acentuado, o como una serie de puntos de código que representan la versión no acentuada del carácter, seguida del acento o acentos. Por ejemplo, la "ä" puede representarse precompuesta como U+00E4 (UTF-8 0xc3a4, letra minúscula latina 1 con diéresis) o descompuesta como U+0061 U+0308 (UTF-8 0x61cc88, letra minúscula latina a + diéresis combinada).
El sistema de archivos HFS+ de OS X requiere que todos los nombres de archivo se almacenen en la representación UTF-8 de su nombre. forma totalmente descompuesta . En un nombre de archivo HFS+, "ä" DEBE codificarse como 0x61cc88, y "ö" DEBE codificarse como 0x6fcc88.
Estoy bastante seguro de que lo que ocurre aquí es que cuando escribes "Näyttökuva.png" en la línea de comandos, se están "tecleando" los caracteres en forma precompuesta. Cuando se crea el archivo, el sistema de archivos descompone los caracteres para su almacenamiento. Hasta aquí todo va bien. Pero cuando intentas usar el tabulador que empieza por "Nä", creo que bash está fallando al descomponer la "ä" antes de buscar coincidencias, y por supuesto no encuentra ninguna.
Para ilustrar la diferencia, he aquí un ejemplo de la codificación que se utiliza cuando escribo "Näyttökuva.png" en la línea de comandos, frente a la que se utiliza cuando lo almaceno como nombre de archivo y utilizo el tabulador para rellenarlo:
$ printf Näyttökuva.png | xxd # This time I pasted the it in from this web page
0000000: 4ec3 a479 7474 c3b6 6b75 7661 2e70 6e67 N..ytt..kuva.png
$ touch Näyttökuva.png # Also pasted from the web
$ printf Näyttökuva.png | xxd # This time I tab-completed it after N
0000000: 4e61 cc88 7974 746f cc88 6b75 7661 2e70 Na..ytto..kuva.p
0000010: 6e67 ng
Ahora, en cuanto al asunto de los caracteres que se pierden al borrar y volver a completar, sospecho que está estrechamente relacionado. Específicamente, creo que bash está "borrando" un punto de código por cada pulsación de la tecla suprimir, pero borrando un carácter de la ventana Terminal por cada pulsación. Como uno de los caracteres borrados ("ö" esta vez) consistía en dos puntos de código, pero sólo un carácter, la pantalla de la Terminal se desincroniza. Pruebe a completar con tabulador todo el nombre de archivo, borrarlo de nuevo a "Näytt", y luego volver a completar con tabulador: bash parece pensar que sólo se borró la diéresis combinada, no la "ö" entera, así que vuelve a añadir la diéresis combinada, pero esta vez se une a la "t":
$ echo Näytẗkuva.png
Näyttökuva.png
Tenga en cuenta que cuando pulso return, bash realmente tiene el nombre de archivo completo allí; es sólo la pantalla de Terminal que se confundió.
TL;DR bash tiene algunos errores en el manejo de caracteres acentuados descomponibles.
EDIT: después de darle vueltas, creo que la única solución completa es arreglar bash (/esperar a que sus desarrolladores lo arreglen). También podría haber una manera de introducir caracteres en forma descompuesta, pero no tengo ni idea de lo que sería. Pero encontré algunas soluciones parciales:
-
Al arrastrar y soltar un archivo desde el Finder, se pega en su forma correcta. Como el Finder obtiene el nombre del archivo del sistema de archivos, ya está descompuesto, así que funciona sin más.
-
De hecho, puedes completar con tabulador el propio carácter acentuado. Por ejemplo, si escribes "Na" y luego tabulas, coincidirá con "Näyttökuva.png" porque la descomposición canónica de "ä" empieza por "a". Pero si tienes un archivo llamado "Narwal.gif" en el mismo directorio, eso no será muy útil...
-
No lo he probado, pero si vinculas tabulador a menú-completo en lugar de completo, debería permitirte tabular las posibles coincidencias para que puedas seleccionar la que quieras aunque no puedas escribir la siguiente letra. (O podrías vincularlo a una pulsación de tecla diferente, para poder usarlo sólo cuando lo necesites).
-
Para solucionar el problema de la desincronización de la pantalla del Terminal, puedes enlazar algo a redibujar-línea-actual -- no evitará que se produzca el problema, pero te dará una forma de resincronizar la pantalla.