単語のつづりを間違えたときに、端末のベルをvimで鳴らすにはどうすればよいですか?


17

画面を見ずに100回以上wpmで入力する大量の文字起こしを行います。スペルチェッカーが最後の単語をマークしただけで、vimが何らかの可聴キューを与えてくれると便利だと思います(タイプミスをして、書いたものを再確認する必要があることを示す可能性があります)。

スペルチェッカーは、スペースバーを押すとすぐにスペルミスの単語を構文強調表示することができます。これはどのように作動しますか?ある種のコマンドを同時に実行する方法はありますか?

ターミナルでは常にvimを使用しています。現在、端末のベルの音は設定していませんが、それが最も簡単な方法であれば、おそらく動作させることができます。


質問自体はさておき、単語を修正するために入力を中断したいのですか?最初に書き込みを完了してから、たとえば「次のスペルミスの単語にジャンプ」コマンドを使用してエラーを処理すると、速くなりませんか?
シャーバズ

私の動機は次のようになります:通常の入力方法では、単語を正しく正しく入力したことがわかりますが、単語を入力して少し間違えたことを知っているが、まだチャンスがあるそれは正しい。ビープ音が鳴らない場合は、正しいことを知っているので、心配することなく続行できます。それ以外の場合は、^ Wでもう一度やり直してください。ただし、これは完全に公正な質問です。おそらく、いくつかの異なるアプローチをタイミングを計り、何が起こるかを見る価値があります。
Soren Bjornstad

2
わかりました、あなたがそれをする方法、それはおそらくより効率的でしょう。ビープ音が「見た目」になった場合、おそらくあなたは遅くなりますが、画面を見なくても自動^ Wでビープ音に応答した場合、それは同じくらい速いはずです。ただし、次の単語の入力を開始した後に脳がビープ音を感知すると、^ Wが間違った単語を削除することに注意してください。そのような場合、^ Wが押されるまでビープ音の後に挿入されたすべての文字を捨てることを考えるかもしれません。したがって、^ Wがスペルミスの単語を削除し、そこから続行する必要があることを安全に知ることができます。
シャーバズ

回答:


15

最後のスペルミスの単語には直接アクセスできず、強調表示を照会することもできません。自分でカーソルの前の単語を取得し、その単語を個別にスペルチェックする必要があります。幸いなことに、そのようなspellbadword()機能があります。以下は、最後の単語をチェックする挿入されたキーごとにトリガーを設定します。

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

(を介して:normal! <Esc>)ビープ音system()を鳴らす代わりに、短い音を再生する外部ツールを呼び出すこともできます。これにより<Esc>、カーソル移動の停止に関する問題も回避できます。


これは完璧です!スペースバーを押すと(単語の後に)非常にわずかな遅延が追加されますが、大したことでは十分ではなく、もちろんスペルチェックが有効になっている場合にのみ発生します。ビープ音については、実行するスクリプトを作成し、それをmplayer -really-quiet $SOUNDFILE >/dev/null 2>&1 &アクションとして配置しました。
ソレンBjornstad

ありがとう!if &spell && spellbadword(...)スペルチェックがオフの場合は、単語の検索を無効にするために追加することもできます。
インゴカルカット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.