Emacsのauto-fill-modeのようなことをVimでしたい

Emacsはauto-fill-modeにすると一行が指定した文字数に達した時点で適切に改行を加えてくれる。Vimで同じことをしたい場合にはどうすればいいのだろうか。以下調べて分かったこと。

  • このような機能はVimでは「自動折り返し」"automatic formatting"と呼ばれるらしい。ドキュメントはchange.txtのformattingあたりにある。
  • 有効にするためには、デフォルト設定だとtextwidth変数に折り返したい一行の長さを設定するだけでよい。
  • 挙動の設定はformatoptions変数で行うことができる。
  • 日本語は分かち書きしないためデフォルト設定ではうまく改行されないので、formatoptionsにmMを加えるとよい。mはマルチバイト文字の間で改行させる設定、Mは行を連結する時にマルチバイト文字の間に空白文字を入れない設定である。
  • 手動でformattingするにはgq{motion}なりビジュアルモードで選択してgqなり。