¿Cómo puedo usar el corrector ortográfico de Vim con 'comillas inteligentes'

11

Existen las citas rectas "normales":
'"

Y tiene las "comillas inteligentes" anguladas:
'' "”

El corrector ortográfico de Vim funciona con comillas "directas", pero no entre comillas, así que esto se considera "incorrecto":
es ... Monty Python's

Aunque no lo sea.

Captura de pantalla, en caso de que su fuente no muestre la diferencia:

ingrese la descripción de la imagen aquí

¿Cómo puedo solucionar esto? Preferiría que funcione para ambas variantes (es y es).

Martin Tournoij
fuente

Respuestas:

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

El problema es que todas estas palabras con apóstrofes están realmente en su archivo de diccionario. Entonces, si está de acuerdo con modificar su diccionario de ortografía vim, hágalo:

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

Esta voluntad

  • greppara encontrar todas las palabras en su diccionario del sistema que contienen un apóstrofe ( ');
  • sedcambiar las comillas rectas por comillas inteligentes (es decir s/'/’/g, donde la primera cita es recta y la segunda es inteligente); y
  • añádalo a su diccionario de idiomas (reemplácelo con el idioma que sea).

Deberá volver a compilar esto en un .splarchivo, lo que puede hacer desde Vim:

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

Si desea usar los archivos de ortografía reales que Vim usa como punto de partida (en lugar del diccionario de su sistema), puede usar el :spelldumpcomando. La salida incluirá todas las palabras que Vim usa para la corriente spelllang, incluidas las que ya se agregaron del .addarchivo. Guarde el resultado :spelldumpen un archivo y elimine las dos primeras líneas (información del encabezado), luego use los mismos comandos que arriba. Es posible que también desee canalizarlo uniqpara eliminar entradas duplicadas. (No es necesario sort; la salida de :spelldumpya está ordenada).

wchargin
fuente
¿Por qué lo usas 'scomo patrón? ¿No es solo buscar lo 'correcto, también? Esto se perderá palabras que tienen un ' en un lugar diferente (como you'd, you've, etc.)
Martin Tournoij
Sí, tienes razón. He editado mi respuesta.
wchargin
Gracias :-) No estaba seguro de si lo hiciste con un motivo, por lo que dudaba editarlo yo mismo ...
Martin Tournoij
Si elige seguir la :mkspell!ruta, es posible que también desee filtrar las palabras destinadas a regiones irrelevantes.
Aaron Massey
1

A partir de ahora, simplemente puede descargar y compilar un nuevo archivo de hechizo para el VIM. Las citas de Unicode se agregaron a la versión actual del diccionario de inglés.

Pasos, basados ​​en este artículo :

  1. Crear directorio ~/.vim/spelly cambiar a él. (El camino es parte de VIM runtimepath).

  2. Para el idioma inglés, el diccionario se puede descargar aquí . (Alternativamente: desde el repositorio de LibreOffice , necesita ambos .dicy .affarchivos).

    Nota: para obtener mejores resultados, recomendaría obtener tanto en_US como en_GB. El diccionario en_GB se puede encontrar en el repositorio de LibreOffice.

  3. Descomprima el archivo:

    unzip -x hunspell-en_US-2017.01.22.zip
    

    El archivo debe contener al menos estos archivos: en_US.affy en_US.dic.

  4. Inicie VIM (en el ~/.vim/spelldirectorio) y en VIM ejecute el comando::mkspell! en en_US

    O si también ha descargado archivos en_GB: :mkspell! en en_US en_GB

  5. Salga de VIM y verifique los archivos en el directorio actual. Debe haber un archivo en.utf-8.splcreado.

  6. ¡Hecho!

Ahora, después de iniciar VIM y activar el corrector ortográfico para el idioma inglés, primero debe elegir el .splarchivo recién creado del ~/.vim/spellcual ya contiene soporte para las comillas Unicode. Al menos así fue como me funcionó.

Dummy00001
fuente