Normalmente, pode-se pressionar a tecla tab após inserir os primeiros caracteres de um nome de arquivo e obter o nome completo do arquivo (ou sugestões caso haja muitos com os mesmos caracteres iniciais).
No entanto, para nomes de arquivos com caracteres peculiares, isso não parece funcionar. Especificamente, estou no ~/.vim/view
diretório - que contém arquivos com detalhes como locais de dobra (números de linha) para todos os arquivos abertos com o vim. Esses são os arquivos que o vim usa para restaurar a mesma "visualização" com as dobras apropriadas, etc. quando se reabre um arquivo usado anteriormente. Agora (pelo menos na minha caixa) esses arquivos muito úteis parecem ter os nomes de arquivos mais curiosos, por exemplo ~=+temp=+test.sh=
, ou =+temp=+test.sh=
Esses arquivos têm informações sobre a última "visualização" dos arquivos ~/temp/test.sh
e /temp/test.sh
respectivamente.
Quando eu entro neste diretório e faço algo como um ls -l ~=+tem
e, em seguida, pressiono a guia, normalmente espero que ele seja concluído automaticamente para~=+temp=+test.sh=
Mas isso não acontece. Por quê? E como (se for o caso) posso fazer isso acontecer?
Estou usando o Bash no FreeBSD. Para o registro, eu tentei isso em zsh, csh, tcsh e sh (mesmo sistema operacional). Não adicionei nenhuma question tag para shells específicos, mas sinta-se à vontade para fazê-lo se achar que deve ser feito.
Parece-me que o Bash ignora o
=
e a parte antes dele ao completar um nome de arquivo, provavelmente para suportar opções longas no estilo GNU, como .--some-file=<filename>
Por exemplo, se os arquivos
foofoo
efoobar
existirem, digitar , preencherá automaticamente o prefixo e listará os dois nomes de arquivo.echo asdf=f<tab>
foo
Com um arquivo chamado
asdf=xyz
, ele será autocompletar feliz na parte após o , dando .echo asdf=a<tab>
=
echo asdf=asdf\=xyz
Então, sim, você precisa escapar do
=
Bash ao preencher automaticamente os nomes dos arquivos . Não é um problema para o comando resultante, no entanto, não tem nenhum significado especial para o shell nesse sentido.Por outro lado, o til nos nomes dos arquivos provavelmente não é um problema. A menos que você tenha um usuário chamado
=+temp=+test.sh=
, ele deve ser deixado como está.