6

" " モードには、挿入モードから+で(insert) VISUAL入ることができます。これはビジュアルモードに入りますが、vim 内からは " "と表示され、このモードから を押すと、通常モードではなく挿入モードに戻ります。" " モードには、挿入モードから矢印キーをシフトしても入ります。CTRLOv(insert) VISUALEsc(insert) VISUAL

関連する 2 つの質問:

  1. この特別なモードに関するドキュメントはあまりないようです。それに関する情報を簡単に検索する方法はありますか? CTRL(編集: +が通常何をするかは知ってOいます。ビジュアル モードとの相互作用は特別なようです。最初の段落は、このモードが何であるかを最初に参照する最も簡単な方法でした。検索可能な名前です。)

  2. vmapマッピングを確実に記述するにはどうすればよいですか? つまり、ビジュアル モードを終了して通常モードに移行する一貫した方法はありますか? または、一貫して挿入モードになりますか?

4

4 に答える 4

14

挿入モードでは、挿入モードを終了せずに通常<C-o>モードのコマンドを実行できます。Vim は新しい状態を で示そうとします。一時的に通常モードになっているので、 を押すとビジュアルモードになり、Vim は再び で新しい状態を示しようとします。Vim がこの状態になっているのは、実行した一連のコマンドが原因であり、の人が指摘したように、その動作は文書化されています。この時点で、元のモードであるため、挿入モードに戻るのは正常であり、予想されます。(insert)v(insert) VISUAL<Esc>

私よりも Vim を深く理解している人なら、normalfrom insert-> (normal)->visualにたどり着く信頼できる方法があるかどうかを教えてくれるかもしれませんが、全体のアイデアは怪しいと思います。

適切な使用法は次のとおりです。

  1. 通常モードで何かをする
  2. 挿入モードに入り、何かを「挿入」します
  3. 挿入モードを終了して通常モードに戻る
  4. 通常モードでより多くのことを行う
  5. ビジュアルモードに入る
  6. ビジュアルモードで何かをする
  7. ビジュアルモードを終了して通常モードに戻る

基本的に、通常モードから1 つ以上<Esc>離れる必要はありません。

vafterの使用が意味を成すシナリオは想像できません<C-o>

Vim を使用する最善かつ好ましい方法は、可能な限り挿入モードを使用しないことです。を使用して挿入<C-o>モードを終了しないようにすることは、非常に貧弱な戦略です。それがあなたのすることかどうかはわかりませんが、もしそうなら、できるだけ早くそのアプローチを再考する必要があります.

しかし、あなたは何か別のことをしようとしているのではないかと思います。

于 2013-04-25T05:30:22.720 に答える
6

2 番目の質問について: を使用して、他のどのモードからも通常モードに切り替えることができます<C-\><C-n>。この方法でビジュアル モードまたは挿入モードに確実に切り替えるためのコマンドはありませんが、ビジュアル モードの後に​​常に通常モードに切り替えるだけで十分な場合は、それで十分です。ほとんどのビジュアル モード マッピングは、i<C-o>v変更なしで特別なモードで動作していることに注意してください。

于 2013-04-25T04:12:39.787 に答える
1

:h Operator-pendingとそのすぐ下の に文書化されてい:h mode-switchingます。ビジュアル モードのマッピングは、(挿入) ビジュアル モードでも機能します。:h map-modesモード マッピングのレビューについては、を参照してください。vmapは、ビジュアル モードと選択モードの両方にマップされ、ビジュアル モードxmapのみにマップされ、選択モードにはマップされません。また、選択モードのみにマップされますが、ビジュアル モードにはマップされsmapません。一般に、noremap予期しない動作を避けるために、これらのマッピング コマンドのバージョンを使用する必要があります。

于 2013-04-25T03:59:53.580 に答える
0

最初の質問について。

CTRL+O挿入モードで 1 つのコマンドを実行してから、終了して挿入モードに戻ります。を参照してください:h i_CTRL-O

2番目の質問について。

あるモードまたは別のモードに終了するための信頼できる方法があるとは思いません。私が考える最も信頼できる方法は、終了したいモードで開始することです。

于 2013-04-25T00:33:01.347 に答える