sv_SE.UTF-8 Problemas com Bash e VIM em iTerm2

3

Dois problemas específicos, apesar de eu rodar o iconv -f iso-8859-15 em meus arquivos antigos ao converter de sv_SE.iso8859-15 para sv_SE.utf-8, ainda recebo caracteres distorcidos. E eu acredito que é por causa do Vim porque eu não consigo nem digitar os caracteres sueco do Vim por mais tempo.

O segundo problema está no Bash, ao abrir um novo shell ou iniciar uma nova linha, o primeiro tipo sueco åäö I não aparece, até que eu pressione qualquer segunda tecla que produza qualquer caractere.

Então, digitar å / no meu teclado só mostrará å no terminal. Digitar åäö mostrará åö e assim por diante. Ele sempre ignora o segundo caractere que eu digito depois de um deles e, em seguida, começa a mostrar no terceiro. É como ignorar o segundo byte ou ignorar o segundo byte no caractere multibyte.

Editar: esclarecimento, depois que eu digitei o primeiro caractere multibyte, outros mostram diretamente. Mas se eu digitar åååå quatro vezes, o primeiro é atrasado, e então aperte enter, e então typ exit o que sai é åexit. Como se salvasse o último byte do último caractere que eu digitei no buffer.

Aqui está a configuração do ambiente relevante, por favor, deixe-me saber se há mais necessário para resolver isso.

$ cat .inputrc
set show-all-if-ambiguous on
set mark-directories on
set mark-symlinked-directories on
set page-completions off
set visible-stats on
set completion-query-items 9001

set input-meta on
set output-meta on
set convert-meta off

"\e[A": history-search-backward
"\e[B": history-search-forward
"\C-w": backward-kill-word

"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[3~": delete-char

$ locale
LANG="sv_SE.UTF-8"
LC_COLLATE="sv_SE.UTF-8"
LC_CTYPE="sv_SE.UTF-8"
LC_MESSAGES="sv_SE.UTF-8"
LC_MONETARY="sv_SE.UTF-8"
LC_NUMERIC="sv_SE.UTF-8"
LC_TIME="sv_SE.UTF-8"
LC_ALL="sv_SE.UTF-8"

$ locale -a
sv_SE
sv_SE.ISO8859-1
sv_SE.ISO8859-15
sv_SE.UTF-8

Também tentei isso em .inputrc, aconselhado de um fórum mac sueco. Não ajudou com nenhum dos problemas acima. Mesmos sintomas em ambos Terminal.app e iTerm2.app, com a caixa de seleção "Escape caracteres não-ASCII" desmarcada no Terminal.app.

set meta-flag on
set input-meta off
set output-meta on
set convert-meta off

No Vim.

  • Idioma atual: "sv_SE.UTF-8 / sv_SE.UTF-8 / sv_SE.UTF-8 / C / sv_SE.UTF-8 / sv_SE.UTF-8"
  • definir codificação = UTF-8
  • set fileencoding = UTF-8

Estou executando a última atualização do Mac OS Lion com a última versão beta do iTerm2. Mesmo problema no Terminal.app, então espero que isso seja causado pelo meu ambiente.

    
por Stefan Midjich 18.11.2011 / 22:32

2 respostas

1

No que diz respeito aos problemas de terminal, eu tentaria usar um emulador de terminal que é conhecido por ter suporte a Unicode maduro, como uxterm . Isso ajuda se as variáveis de ambiente relacionadas ao código de idioma forem disponibilizadas para o executável do shell durante a inicialização, isto é, não definidas no script de inicialização do shell ~/.profile ou semelhante.

Não sei se isso ajudará você, mas corrigi meus problemas com Unicode relacionados ao Vim com a seguinte adição ao meu ~/.vimrc :

" Unicode options
if has("multi_byte")
    " set the display encoding
    " (default is "", or "utf-8" in the GUI)
    if &termencoding == ""
        " we're probably not using the GUI
        " note: :set won't allow &-replacement
        let &termencoding = &encoding
    endif
    " set the internal encoding
    set encoding=utf-8

    " &fileencoding (controls how characters in the internal encoding will
    " be written to the file) will be set according to &fileencodings
    " (default: "ucs-bom", "ucs-bom,utf-8,default,latin1" when 'encoding'
    "  is set to a Unicode value)
endif " has("multi_byte")
    
por 18.11.2011 / 23:16
0

Alterar um local de não baseado em UTF-8 requer mais do que apenas configurações de ambiente. Requer que os aplicativos usados sejam construídos com o suporte a caracteres amplos . Os sintomas que você descreve apontam para a falta de tal suporte - isso pode ser um problema com bibliotecas como slang ou ncurses por exemplo.

Tente procurar algo como "guia de migração UTF-8" para o OSX, que deve orientá-lo sobre como substituir alguns dos seus pacotes de software por versões habilitadas por caracteres amplos . Pode acontecer que alguns dos aplicativos que você usa atualmente (como o aplicativo terminal) simplesmente não tenham opções de suporte. Mas isso não é muito provável, já que a UTF se tornou mais e mais amplamente usada.

    
por 18.11.2011 / 23:18