Estoy usando la distribución del teclado finlandés que asigna AltGr+ Spaceal espacio sin interrupciones (NBSP, U + 00A0). Estoy contento con esto en general, pero encuentro que a menudo escribo accidentalmente NBSP en lugar del espacio normal después del |
símbolo " " (escrito con AltGr+ <con diseño de teclado finlandés) mientras uso la línea de comando bash. Supongo que esto se debe al hecho de que necesito sostenerlo AltGrmientras escribo la tubería y liberarla antes de tocar el espacio. Y cuando tengo un mal momento para el lanzamiento AltGr, termino con un error tipográfico invisible en la línea de comando y mensajes de error como
grep: command not found
que se parece bastante a
grep: command not found
lo que hace que este problema sea un poco difícil de notar la primera vez.
Sé que puedo deshabilitar NBSP pero preferiría deshabilitarlo (tener AltGr+ Spacepara producir espacio regular) solo después del carácter de canalización, o si eso no es posible, siempre en la línea o readline
nivel de comando bash . ¿Hay alguna manera simple de hacer esto sin modificar el código fuente de bash readline
o mi emulador de terminal ( gnome-terminal
)?
Otra buena solución sería configurar NBSP para que sea visible de alguna manera en la línea de comando, por ejemplo, reemplazado con otro carácter (digamos U + 2423 ␣
) para renderizar solamente.
fuente
" ":␣
suficiente? Que más necesitas?echo a␣b
pero la línea de salida resultante estabaecho a b
con NBSP real en la salida. Como tal, creo que debe hacerse en el nivel de línea de lectura (es decir, el editor de línea de comandos siempre muestra caracteres visibles, pero el emulador de terminal no puede saber la diferencia entre la visualización del editor y la pantalla de salida y, por lo tanto, el emulador de terminal no puede hacer el reemplazo visual de la representación )Respuestas:
Esto se puede hacer en el
readline
nivel de dos maneras diferentes.Método 1
Ponga lo siguiente en
.inputrc
(el archivo de configuración parareadline
):Si Markdown arruina lo anterior, debe poner NBSP entre comillas en el lado izquierdo del colon como se explica en el comentario. Esto asignará cualquier ocurrencia de NBSP en la secuencia de entrada con un espacio regular.
Método 2
Ponga lo siguiente en
.inputrc
:La idea es mapear la secuencia de teclas {tubería seguida de NBSP} a {tubería seguida de espacio}. Esto funciona si escribe la secuencia dentro de 250 ms (configurable arriba). Sin embargo, hasta que se agote el tiempo de espera, escribir solo el símbolo de tubería no generará nada. Y si escribe la secuencia demasiado lenta, la corrección no se aplicará. También tenga en cuenta que el tiempo de espera es global, por lo que si tiene la intención de usar cualquier otra secuencia, debe establecer el tiempo de espera el tiempo suficiente para poder escribir la secuencia más larga. (La biblioteca readline no es lo suficientemente inteligente como para permitir escribir los caracteres y luego reemplazar los caracteres ya visibles después de que la secuencia de caracteres coincida con la configuración).
fuente
Hay un excelente artículo que trata este problema:
He estado tratando de abordar la preocupación principal con
grep
mensajes de error y cambiando NBSP a algo más visible usando elexec
comando. Sin embargo, todavía no tengo la sintaxis abajo:La idea es tener este comando
~/.bashrc
para que se cargue automáticamente con lagnome-terminal
apertura. Pero como dije aún no funciona ...fuente
perl -i -npe 's/MARKER/4 KB/'
y accidentalmente deslizo un NBSP entre el4
yK
. Vaya, el problema se almacena en un archivo pero no recibo ningún error y la línea de comando que escribí se ve perfecta.