Como posso usar a verificação ortográfica do Vim com 'aspas inteligentes'


11

Existem aspas retas "normais":
'"

E você tem as "aspas inteligentes" angulares:
'' "”

A verificação ortográfica de Vim funciona com aspas "retas", mas não com aspas angelicais, então isso é considerado "errado":
É ... Monty Python's

Mesmo que não seja.

Captura de tela, caso sua fonte não mostre a diferença:

insira a descrição da imagem aqui

Como faço para corrigir isso? Eu preferiria fazê-lo funcionar para ambas as variantes (é e é).

Respostas:


7
$ grep "'" /usr/share/dict/words | wc -l
26226
$ grep -i python /usr/share/dict/words
Python
Python's
python
python's
pythons

O problema é que todas essas palavras com apóstrofos estão realmente no seu arquivo de dicionário. Portanto, se você estiver bem com a modificação do seu dicionário de ortografia vim, faça o seguinte:

$ grep "'" /usr/share/dict/words | sed "s/'/’/g" >> ~/.vim/spell/en.utf-8.add

Isso vai

  • greppara encontrar todas as palavras no dicionário do sistema que contenham um apóstrofo ( ');
  • sedalterar as aspas retas para aspas inteligentes (ou seja s/'/’/g, onde a primeira cotação é reta e a segunda é inteligente); e
  • anexe-o ao seu dicionário de idiomas (substitua por qualquer que seja o seu idioma).

Você precisará recompilar isso em um .splarquivo, o que você pode fazer no Vim:

:mkspell! ~/.vim/spell/en.utf-8.add

Se você deseja usar os arquivos ortográficos reais que o Vim usa como ponto de partida (em vez do dicionário do sistema), você pode usar o :spelldumpcomando A saída incluirá todas as palavras que o Vim usa para a atual spelllang, incluindo as que já foram adicionadas a partir do .addarquivo. Salve o resultado de :spelldumpem um arquivo e remova as duas primeiras linhas (informações do cabeçalho) e use os mesmos comandos acima. Você também pode também canalizá-lo uniqpara remover entradas duplicadas. (Não é necessário sort; a saída de :spelldumpjá está classificada.)


Por que você usa 'scomo padrão? Não está apenas procurando o 'correto, também? Isto irá perder as palavras que têm um ' em um local diferente (como you'd, you've, etc.)
Martin Tournoij

Sim, você está certo. Eu editei minha resposta.
wchargin

Thanks :-) Eu não tinha certeza se você fez isso com uma razão, então estava hesitante para editá-lo eu mesmo ...
Martin Tournoij

Se você optar por seguir o :mkspell!caminho, também poderá filtrar as palavras destinadas a regiões irrelevantes.
Aaron Massey

1

A partir de agora, você pode simplesmente baixar e compilar um novo arquivo de ortografia para o VIM. As aspas Unicode foram adicionadas à versão atual do dicionário em inglês.

Etapas, com base neste artigo :

  1. Crie um diretório ~/.vim/spelle mude para ele. (O caminho faz parte do VIM runtimepath.)

  2. Para o idioma inglês, o dicionário pode ser baixado aqui . (Como alternativa: no repositório do LibreOffice - você precisa dos arquivos .dice dos .affarquivos.)

    NB Para obter melhores resultados, eu recomendaria obter en_US e en_GB. O dicionário en_GB pode ser encontrado no repositório do LibreOffice.

  3. Descompacte o arquivo:

    unzip -x hunspell-en_US-2017.01.22.zip
    

    O arquivo deve pelo menos conter esses arquivos: en_US.affe en_US.dic.

  4. Inicie o VIM (no ~/.vim/spelldiretório) e no VIM execute o comando::mkspell! en en_US

    Ou se você também baixou arquivos en_GB: :mkspell! en en_US en_GB

  5. Saia do VIM e verifique os arquivos no diretório atual. Deve haver arquivo en.utf-8.splcriado.

  6. Feito!

Agora, depois de iniciar o VIM e ativar a verificação ortográfica do idioma inglês, ele deve primeiro escolher o .splarquivo recém-criado a partir do ~/.vim/spellqual já contém suporte para as aspas Unicode. Pelo menos assim que funcionou para mim.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.