Estou usando o layout de teclado finlandês que mapeia AltGr+ Spacepara o espaço sem quebra (NBSP, U + 00A0). Estou feliz com isso em geral, mas acho que escrevo acidentalmente NBSP em vez de espaço " |
" normal após o símbolo " pipe" (escrito com AltGr+ <com layout de teclado finlandês) enquanto uso a linha de comando do bash. Eu acho que isso é causado pelo fato de que eu preciso segurar AltGrenquanto digito o cano e soltá-lo antes de atingir o espaço. E quando tenho um tempo ruim para o lançamento, AltGracabo com erros de digitação invisíveis na linha de comando e mensagens de erro como
grep: command not found
que se parece bastante com
grep: command not found
o que dificulta a observação do problema na primeira vez.
Eu sei que posso desabilitar o NBSP, mas eu preferiria desabilitá-lo (tendo AltGr+ Spacepara produzir espaço regular) somente após o caractere de pipe, ou se isso não for possível, sempre na linha de comando ou readline
nível do bash . Existe alguma maneira simples de fazer isso sem modificar o código fonte do bash readline
ou o meu emulador de terminal ( gnome-terminal
)?
Outra boa solução seria configurar o NBSP para ficar de alguma forma visível na linha de comando, por exemplo, substituído por outro caractere (por exemplo, U + 2423 ␣
) apenas para renderização.
fonte
" ":␣
suficiente? O que mais você precisa?echo a␣b
mas a linha de saída resultante estavaecho a b
com NBSP real na saída. Como tal, acho que isso deve ser feito no nível da linha de leitura (ou seja, o editor de linha de comando sempre exibe caracteres visíveis, mas o emulador de terminal não pode saber a diferença entre a exibição do editor e a exibição de saída e, portanto, o emulador de terminal não pode fazer a substituição visual da renderização )Respostas:
Isso pode ser feito no
readline
nível de duas maneiras diferentes.Método 1
Coloque o seguinte em
.inputrc
(o arquivo de configuração parareadline
):Se a marcação desarrumar o acima, você deve colocar o NBSP entre aspas no lado esquerdo dos dois pontos, conforme explicado no comentário. Isso mapeará qualquer ocorrência de NBSP no fluxo de entrada com um espaço regular.
Método 2
Coloque o seguinte em
.inputrc
:A idéia é mapear a sequência de teclas {pipe seguido por NBSP} para {pipe seguido pelo espaço}. Isso funciona se você digitar a sequência dentro de 250 ms (configurável acima). No entanto, até que o tempo limite acabe, a digitação do símbolo do pipe por si só não produzirá nada. E se você digitar a sequência muito lentamente, a correção não será aplicada. Observe também que o tempo limite é global; portanto, se você pretende usar outras seqüências, defina o tempo limite o suficiente para poder digitar a seqüência mais longa. (A biblioteca readline não é inteligente o suficiente para permitir a digitação dos caracteres e, posteriormente, substituir caracteres já visíveis após a sequência de caracteres corresponder à configuração.)
fonte
Há um excelente artigo que lida com esse problema:
Eu tenho tentado abordar a principal preocupação com
grep
mensagens de erro e alterando o NBSP para algo mais visível usando oexec
comando Ainda não tenho a sintaxe para baixo:A idéia é ter esse comando
~/.bashrc
para que ele seja carregado automaticamente com agnome-terminal
abertura. Mas como eu disse, ainda não está funcionando ...fonte
perl -i -npe 's/MARKER/4 KB/'
e acidentalmente deslizo um NBSP entre4
eK
. Ops, o problema é armazenado em um arquivo, mas não recebo nenhum erro e a linha de comando que escrevi parece perfeita.