Come posso usare il controllo ortografico di Vim con "virgolette intelligenti"


11

Ci sono le virgolette "normali":
'"

E hai le "virgolette intelligenti" angolate:
'' “”

Il controllo ortografico di Vim funziona con virgolette "diritte", ma non con virgolette, quindi questo è considerato "sbagliato":
è ... Monty Python

Anche se non lo è.

Schermata, nel caso in cui il font non mostri la differenza:

inserisci qui la descrizione dell'immagine

Come posso risolvere questo problema? Preferirei farlo funzionare per entrambe le varianti (è ed è).

Risposte:


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

Il problema è che tutte queste parole con apostrofi sono effettivamente nel file del dizionario. Quindi, se stai bene modificando il dizionario ortografico di Vim, allora fallo:

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

Questo sarà

  • grepper trovare tutte le parole nel dizionario di sistema che contengono un apostrofo ( ');
  • sedper cambiare le virgolette dritte in virgolette intelligenti (è qui che s/'/’/gla prima virgoletta è diritta e la seconda è intelligente); e
  • aggiungilo al dizionario della tua lingua (sostituiscilo con qualunque sia la tua lingua).

Dovrai ricompilarlo in un .splfile, cosa che puoi fare da Vim:

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

Se vuoi usare i file degli incantesimi che Vim usa come punto di partenza (invece del tuo dizionario di sistema), puoi usare il :spelldumpcomando. L'output includerà tutte le parole che Vim usa per l'attuale spelllang, comprese quelle già aggiunte dal .addfile. Salvare il risultato :spelldumpin un file e rimuovere le prime due righe (informazioni sull'intestazione), quindi utilizzare gli stessi comandi di cui sopra. Potresti anche voler reindirizzare, uniqanche per rimuovere voci duplicate. (Non è necessario sort; l'output di :spelldumpè già ordinato.)


Perché usi 'scome modello? Non stai solo cercando il 'corretto, anche bene? Questo mancherà parole che hanno un ' in un luogo diverso (ad esempio you'd, you'vee così via)
Martin Tournoij

Sì, hai ragione. Ho modificato la mia risposta.
mercoledì

Grazie :-) Non ero sicuro di averlo fatto per un motivo, quindi ero restio a modificarlo da solo ...
Martin Tournoij,

Se scegli di seguire il :mkspell!percorso, potresti anche voler filtrare le parole destinate a regioni non pertinenti.
Aaron Massey,

1

A partire da ora, puoi semplicemente scaricare e compilare un nuovo file ortografico per VIM. Le citazioni Unicode sono state aggiunte alla versione corrente del dizionario inglese.

Passaggi, basati su questo articolo :

  1. Crea una directory ~/.vim/spelle modificala. (Il percorso fa parte di VIM runtimepath.)

  2. Per la lingua inglese, il dizionario può essere scaricato qui . (In alternativa: dal repository LibreOffice - sono necessari sia i file .dicche i .afffile.)

    NB Per risultati migliori, consiglierei di ottenere sia en_US che en_GB. Il dizionario en_GB potrebbe essere trovato nel repository LibreOffice.

  3. Decomprimi il file:

    unzip -x hunspell-en_US-2017.01.22.zip
    

    L'archivio deve contenere almeno questi file: en_US.affe en_US.dic.

  4. Avviare VIM (nella ~/.vim/spelldirectory) e in VIM eseguire il comando::mkspell! en en_US

    Oppure se hai scaricato anche file en_GB: :mkspell! en en_US en_GB

  5. Esci da VIM e controlla i file nella directory corrente. Dovrebbe essere en.utf-8.splcreato il file .

  6. Fatto!

Ora, dopo aver avviato VIM e attivato il controllo ortografico per la lingua inglese, dovrebbe prima scegliere il .splfile appena creato dal ~/.vim/spellquale contiene già il supporto per le virgolette Unicode. Almeno così ha funzionato per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.