Comment puis-je demander à vim de sonner la cloche du terminal lorsque j'épelle un mot?

17

Je fais une bonne quantité de transcription dans laquelle je tape à 100+ wpm sans regarder l'écran. Je pense qu'il serait utile que vim puisse me donner une sorte de signal sonore si le vérificateur d'orthographe vient de marquer le dernier mot (indiquant probablement que j'ai fait une faute de frappe et que je devrais vérifier ce que j'ai écrit).

Le correcteur orthographique peut définitivement mettre en évidence la syntaxe des mots mal orthographiés dès que je frappe la barre d'espace. Comment cela marche-t-il? Existe-t-il un moyen d'exécuter une sorte de commande en même temps?

J'utilise toujours vim dans le terminal; Je n'ai pas encore configuré le son de la cloche du terminal, mais si c'est la façon la plus simple de le faire, je peux probablement le faire fonctionner.

Soren Bjornstad
la source
La question elle-même mise à part, voulez-vous vraiment que votre frappe soit interrompue pour corriger un mot? Ne seriez-vous pas plus rapide si vous terminez d'abord l'écriture, puis parcourez les erreurs, par exemple avec une commande "passer au mot suivant mal orthographié"?
Shahbaz
Ma motivation ressemble plus à ceci: la façon dont je tape habituellement, je peux dire quand j'ai clairement tapé un mot correctement, mais parfois je tape un mot et je sais que je l'ai échappé un peu, mais il y a encore une chance que j'aie c'est bien. Si ce n'est pas le bip, alors je sais que j'ai bien compris et je peux continuer sans m'en soucier; sinon, je ^ je le passe en revue et réessaye. C'est une question parfaitement juste, cependant - cela vaut probablement la peine de planifier quelques approches différentes et de voir ce qui se passe.
Soren Bjornstad
2
Ok, la façon dont vous le faites, ce serait probablement plus efficace. Si le bip "vous faisait regarder", cela vous aurait probablement ralenti, mais si vous répondiez à un bip avec un ^ W automatique, sans même regarder l'écran, cela devrait être aussi rapide. Attention cependant, si votre cerveau perçoit le bip sonore après avoir commencé à taper le mot suivant, ^ W supprimerait le mauvais mot. Dans un tel cas, vous pouvez même penser à jeter tous les caractères insérés après un bip jusqu'à ce que vous appuyez sur ^ W, afin de savoir en toute sécurité que ^ W a supprimé le mot mal orthographié et vous devez continuer à partir de là.
Shahbaz

Réponses:

15

Le dernier mot mal orthographié n'est pas directement accessible, et la surbrillance ne peut pas être interrogée. Vous devez récupérer le mot avant le curseur vous-même et vérifier l'orthographe séparément. Heureusement, il existe une telle spellbadword()fonction. Ce qui suit configure un déclencheur sur chaque clé insérée qui vérifie le dernier mot:

autocmd CursorMovedI * if &spell && spellbadword(matchstr(strpart(getline('.'), 0, col('.') - 1), '\S\+\s$') )[1] ==# 'bad' | execute "normal! \<C-\>\<C-n>\<Esc>" | endif

Au lieu d'émettre un bip (via le :normal! <Esc>), vous pouvez également invoquer un outil externe via system()qui émet un bref son. Cela éviterait également des problèmes d' <Esc>arrêt du déplacement du curseur, ce que j'ai vu parfois.

Ingo Karkat
la source
C'est parfait! Cela ajoute un très léger retard sur la pression de la barre d'espace (quand après un mot), mais ce n'est pas suffisant pour être un gros problème, et bien sûr cela ne se produit que lorsque la vérification orthographique est activée. Pour le bip, j'ai créé un script qui s'exécute mplayer -really-quiet $SOUNDFILE >/dev/null 2>&1 &et que je mets en action.
Soren Bjornstad
1
Merci! Vous pouvez ajouter des informations supplémentaires if &spell && spellbadword(...)pour désactiver même la récupération de mots au cas où la vérification orthographique est désactivée.
Ingo Karkat