2011-03-15 23 views
27

私の通常のVimの作業の流れは次のとおりです。挿入モードでVimのスペルミスをより迅速に修正するにはどうすればよいですか?

  • 、何か間違ったことを綴ります。

    Vim spell

  • 押し^X sいくつかの提案を取得します。

    Vim screen

  • Escキーを押して最初のものを受け入れます。

これ以降、私は以前の場所の挿入モードではなく、行の途中でコマンドモードになります。私はAを使うことができましたが、これは行の最後に入力した場合にのみ機能します。別の方法がありますか?最適には、カーソルを動かさずに最初の提案に対する最後の間違いを訂正するコマンドが必要です。

答えて

20

これはかなりうまく機能:最後のスペルの間違いに

imap ^L <Esc>[s1z=`]a 

[s移動
1z=は、最初の提案にテキストを追加する。

+0

このマッピングはどのように呼び出されますか?挿入モードで '^ L 'を入力しようとしましたが、動作しません。 – yegle

+0

'^ L 'を使う特別な理由はありますか?伝統的に、スペルチェックは ''にマップされています。しかし、 'F10'はすでにgVimで使用されているようですので、Microsoftのスペルチェックバインディングの' 'を最終的に解決しました。 –

+0

@SergeStroobandt 'L'はホーム行にあります。また、Macではfn + f10をデフォルトでf10にする必要がありますが、簡単に変更できます。 –

8

「最適な」ソリューションを提供することはできません(方法はあると思われますが)。

しかし、あなたは私はあなたが最後にそれを残したファイルで場所で挿入モードに入るようにグラムを使用することができます。 (help giはこれをより雄弁に説明しています)。

+0

これは知りませんでした、ありがとう! – Tim

+0

挿入モードを終了するEscのように見えます。このように、 'gi'はこのケースでは助けにならないでしょう。 – Tim

+0

ああ、申し訳ありません...私は転記する前にそれを試していたはずです。あなたのマップは、とにかく(あなたが常に最初に示唆されたスペルを必要としていると仮定して)やっているようです。 –

2

Ctrl + Yを使用して、ポップアップメニューで要素を受け入れることができます。 :help complete_CTRL-Yを参照してください。

+0

それは私のカーソルを挿入モードにしますが、挿入された単語の直後、私がどこにいるのかはわかりません。 – Tim

2

私は.vimrcの次の再マップで修正しました。

imap <F2> <Esc>mti<C-X>s<Esc>`tla 

最後の間違いを修正して元の位置に戻すには、挿入モードでF2キーを押します。それはtマーカーを上書きします。

25

改善、最後のインサートポイント
aから
`]移動を選択しますPDugの答えに:挿入とは別にスペル修正を元に戻すことができるようにするには、これを使用してください:

imap <c-l> <c-g>u<Esc>[s1z=`]a<c-g>u 

<c-g>u残りの部分は同じである
アンドゥ・ブレークを挿入します。

この方法で、選択した補正が気に入​​らなければ、<Esc>uを使用して元に戻すことができます。元に戻すブレークがなければ、完全な挿入を元に戻します。マッピングの最後に取り消しブレークを行うと、修正後に追加されたテキストは、修正自体とは別に元に戻すことができます。

imap <c-f> <c-g>u<Esc>[s1z=`]a<c-g>u 
nmap <c-f> [s1z=<c-o> 

この方法で、あなたはすぐに行うことができます

また、私はCTRL + が便利にこれをマッピングするために、このようなインサートとノーマルモードの両方で(到達するのは簡単です)Fました最後のエラーを(カーソルに相対して)修正してください。

+0

ありがとうございます。 – tito11

関連する問題