JpFormat.vim - Vim日本語整形プラグイン

JpFormat.vimはVimで日本語の禁則処理に対応したフォーマット整形プラグインです。

単純にformatexprへ登録して日本語対応のgqコマンドとして使うことも可能ですが、本プラグインは入力を行いながら編集中の日本語文書を自動整形して原稿の整形結果を常に確認しながら編集を行うことを主な目的にしています。

Vim単体でもwrapmarginやtextwidthなどを使用して整形が行えますが、日本語の禁則処理は考慮されていませんしgqコマンドは空行のみを段落の区切りとみなして連結して改行を埋め込んでしまうので本来の構造が失われます。

JpFormat.vimでは空白行ではなく改行を段落として扱うので改行に意味のある文書でもきちんと整形できます。

JpFormat.vimの大きな特徴は疑似ソフトラップが行える事です。

疑似ソフトラップで折り返しを行う際には改行を埋め込みますが、表示上の改行をマーカーで管理するので原稿形式を何回変更しても元の構造は保持され、何度整形しても元の非整形状態に戻せるために安心して書きかけの原稿に整形を掛ける事が出来ます。

このため未完成原稿でも整形結果を確認しながら、挿入モードで入力する度に自動整形するような使い方もストレス無く実行出来ます。

未完成原稿ではマーカーを使用して整形し、最終原稿では全文連結コマンドかマーカー削除を実行するというのが主な使い方になります。

主な機能は以下の通りです。

  • 手動整形
  • 整形結果を常に確認しながらの編集と自動整形入力
  • 原稿枚数の計算
  • 外部ビューアとの連携

速度的には400字詰め原稿用紙換算で300枚の小説を42×17フォーマットに全文整形しても1秒程度(Core i5 3.4G)と実用的な速度が出ていて、1000枚オーバーでも問題なく処理可能です。

禁則処理では単純なぶら下げだけでなく、追い出しや分離禁止処理も行います。

インストール

(2019/07/08)

  • 追い出し文字数を追加しました。

ダウンロード

https://github.com/fuenor/JpFormat.vim/archive/master.zip

GitHub

https://github.com/fuenor/JpFormat.vim

zipファイルをを解凍してできたディレクトリにランタイムパスを通します。

GitHubからダウンロードしてきた場合は JpFormat.vim-masterというディレクトリが作成されているはずなので、.vimrcで次のようにランタイムパスを通します。

set runtimepath+=c:/temp/JpFormat.vim-master

この例は c:/tempに解凍した場合ですので、pathは環境に合わせて変更してください。

日本語対応gqコマンドとして使用する設定

JpFormat.vimには日本語の禁則処理に対応した整形プラグインjpfmt.vimが同梱されています。

jpfmt.vimを日本語対応のgqコマンドとして使用する場合はformatexprを設定してください。

" gqコマンドとして使用する
set formatexpr=jpfmt#formatexpr()

jpfmt#formatexpr()の動作は JpFormat.vimの設定に依存し、「ぶら下げ」処理も行いますが、「ぶら下げ」処理が不要な場合は jpvim#formatexpr()を使用してください。

gqコマンドとしてはjpvimのほうが違和感がないかもしれません。

" 「ぶら下げ」を行わないgqコマンドとして使用する
set formatexpr=jpvim#formatexpr()

日本語対応gqコマンドとしてしか使用しない場合はこれだけで動作します。

日本語文書への対応として行頭の (全角スペース)か 「 で始まった場合は段落開始とみなして処理を行います。

(このためgq8jのように複数行をまとめて処理しても全角スペースや 「 で始まる行は連結されません)

ユーザー指定の段落開始行は jpfmt_paragraph_regexp の正規表現で指定可能です。

" 段落開始とみなす正規表現
let jpfmt_paragraph_regexp = '^[ 「]'

次章以降は連結マーカーを利用した「擬似ソフトラップ」による日本語文書の自動整形についての解説になります。

単に日本語対応gqコマンドとしてしか使用しないけれども、禁則処理対象文字を変更したいなどの場合はTipsを参照してみてください。

コマンド一覧

いずれのコマンドもビジュアルモードやカウントで範囲を指定できます。

・ここで言う連結とは整形された分割部分を元に戻す事です。

・整形されていない行では連結を実行しても何もしないので、単純な連結には通常の行と同じく J を使用して下さい。

またパラグラフとは物理的な改行で区切られた1行を整形分割した全ての行のまとまりです。

手動整形

:JpFormatAll を実行すると指定範囲(デフォルトは全て)を規定の形式に整形します。

何か一行が長い日本語文書を用意して実行してみて下さい。

小説が一番わかりやすいので、適当なファイルがなければ青空文庫などから持ってくるのも良いかもしれません。

:JpFormatAll

整形結果を見るとわかりますが、長い文は「タブ記号+改行」で分割して禁則処理を行います。

このタブ記号は「連結マーカー」で、改行が実際の改行なのか、整形によって分割された改行なのかを示しています。

:JpJoinAll を実行すると分割行は連結されます。

デフォルトの「連結マーカー」にはタブ記号が使われていますが、何も設定しないと見えません。

タブ記号は .vimrc に以下の設定を行うと SpecialKey で強調表示されます。

set list
set listchars=tab:^\ ,trail:~

ノーマルモードで現在行を手動整形したい場合はJpFormatコマンドを使用するか、キーにマッピングして使用して下さい。

JpFormatやJpFormatAll はカウント指定やビジュアルモードの指定も有効です。

.vimrc でのキーマップ設定例

" 日本語の行の連結時には空白を入力しない。(jオプションはvim 7.4以降のみ有効)
set formatoptions+=mMj
" 現在行を整形
nnoremap <silent> gl :JpFormat<CR>
vnoremap <silent> gl :JpFormat<CR>
" 現在行が整形対象外でも強制的に整形
nnoremap <silent> gL :JpFormat!<CR>
vnoremap <silent> gL :JpFormat!<CR>
" 自動整形のON/OFF切替
" 30gC の様にカウント指定すると、現バッファのみ折り返し文字数を指定されたカウントに変更します。
nnoremap <silent> gC :JpFormatToggle<CR>
" カーソル位置の分割行をまとめてヤンク
nnoremap <silent> gY :JpYank<CR>
vnoremap <silent> gY :JpYank<CR>
" カーソル位置の分割行をまとめて連結
nnoremap <silent> gJ :JpJoin<CR>
vnoremap <silent> gJ :JpJoin<CR>
" 外部ビューアを起動する
nnoremap <silent> <F8> :JpExtViewer<CR>

この例だと gl で整形することになります。

コマンドは 3gl の用にカウント指定や、ビジュアルモードで範囲を指定可能です。

単純な連結は通常通り J で、分割された行(パラグラフ)は gJ でまとめて連結可能です。

作者が実際に使用してみた限りでは JpFormat と JpFormatToggleだけをマップする程度で十分使えます。

全文一括整形には :JpFormatAll を使用します。もちろん適当なキーにマップしてもかまいません。

formatoption は好みですが、J コマンドでの日本語を含む行の連結は空白を追加しない方がよいかと思います。

原稿が完成したら連結マーカーを削除するか、非整形状態に戻してます。

個人的には以下の様にマップして使用しています。

" 日本語の行の連結時には空白を入力しない。
set formatoptions+=mMj
" 現在行を整形
nnoremap <silent> gl :JpFormat<CR>
vnoremap <silent> gl :JpFormat<CR>
" 自動整形のON/OFF切替
" 30gC の様にカウント指定すると、現バッファのみ折り返し文字数を指定されたカウントに変更します。
nnoremap <silent> gc :JpFormatToggle<CR>
" 現バッファを整形
nnoremap <silent> g,rJ :JpFormatAll<CR>
" 原稿枚数カウント
nnoremap <silent> g,rc :JpCountPages!<CR>
" 外部ビューアを起動する
nnoremap <silent> <F8> :JpExtViewer<CR>

連結マーカーの削除

単に非整形状態に戻したいだけの場合は JpJoinAll を実行します。

:JpJoinAll

整形状態を保ったまま「連結マーカー」を削除したい場合、「連結マーカー」を使用しないで全文整形(コマンドに ! を付加して実行)します。

:JpFormatAll!

「連結マーカー」はただの文字(タブ記号)なので通常の削除や置換でも削除可能です。

:%s/\t$//g

再連結は JpJoinAll! です。

「連結マーカー」が削除されていても再連結は可能ですが、整形前の文書と異なる場合があります。

これは整形表示行の境界や「ぶら下げ」処理された次の行が、真の改行か整形されたことによる改行かの区別がつかない場合があるためです。

「連結マーカー」の削除は不可逆過程ですので最終処理としてバックアップを取った上で実行して下さい。

「連結マーカー」を使用しない連結の行判定には以下のオプションが使用されます。

" 連結マーカー非使用時のTOLキャラクター
let JpJoinTOL = '[\s 「・*]'
" 連結マーカー非使用時のEOLキャラクター
let JpJoinEOL = '[。」!?]]'

自動整形

基本的には JpFormat や JpFormatToggleを好みのキーにマッピングして、必要に応じて整形、連結を行います。

ただ一々手動で整形するのも面倒なので、自動整形させる事が可能です。

何か一行が長い文を含む日本語文書のファイルを用意して :JpFormatAll や :JpFormat コマンドで整形するか、キーマップした整形コマンドを実行して下さい。

長い行は整形され、そのあと挿入モードで適当に入力すると自動で整形が行われます。

自動整形の種類

自動整形は挿入モードで一文字入力する度に自動整形をするか、挿入モード終了時に自動整形するかを選択できます。

" 挿入モードでキー入力する度に自動整形を行う/行わない
let JpFormatCursorMovedI = 1

JpFormatCursorMovedI = 1 に設定すると挿入モードで一文字入力する度に自動整形され、JpFormatCursorMovedI = 0 なら挿入モードを抜ける時にまとめて整形を行います。

編集時の見やすさなども含めて好みの方を使用して下さい。

自動整形が有効になるのは以下の場合です。

  • バッファ内でJpFormat等のコマンドを実行した後
  • バッファ内でJpFormatToggleを実行して切替

また以下を .vimrcに追加すると、次回からはtxtファイルに「連結マーカー+改行」があれば自動整形モードが最初から有効になります。

.vimrc の設定例

" txtファイルで「連結マーカー+改行」が有ったら自動整形を有効にする
au BufRead *.txt JpSetAutoFormat

特定ファイルでは常に自動整形を有効にしたい場合は以下のように設定します。

" txtファイルで「連結マーカー+改行」の有無にかかわらず自動整形を有効にする
au BufRead *.txt JpSetAutoFormat!

コマンド実行後も常に自動整形をオフにしたい場合は以下のように設定します。

" 整形コマンドを使用したら自動整形もON
let JpAutoFormat = 0

内部的に挿入モードを呼び出すようなプラグインやスクリプトでは、プラグインやスクリプトの実行時にJpFormatが呼び出されてしまう事があります。

プラグインやスクリプトの実行前に JpFormatの自動整形をオフにしたいコマンドがある場合は、以下を参考に書き換えてください。

" gqコマンドを実行前に自動整形をオフにする
nnoremap <silent> <expr> gq JpFormat_cmd("gq")

整形オプション

原稿形式(折り返し文字数等)

原稿形式は以下のオプションで設定します。

" 原稿文字数(全角の折り返し文字数)
let JpCountChars = 40
" 原稿行数
let JpCountLines = 17
" 禁則処理の最大ぶら下がり字数(-1なら全てぶら下げ)
let JpCountOverChars = 1

(重要)

このオプション値はデフォルト指定で、実際に整形する時はb:のついたバッファローカルな変数が使用されます。

特定のバッファでデフォルト以外の値を使用したい場合は b: を付けて指定します。

一行あたりの文字数を変更したい場合は、コマンドモードから次のように指定します。

:let b:JpCountChars=30

通常 :JpFormatToggleは自動整形のON/OFFを切り替えるために使用しますが、カウント指定した場合はON/OFF切り替えではなく指定カウントをそのバッファの折り返し文字数に設定します。

:30JpFormatToggle

これは let b:JpCountChars=30を実行したのと同じ結果になります。

:JpFormatToggleをキーマップしておいて使用すると便利かもしれません。

.txtファイルだけは常に20文字、howmファイルは30文字で折り返したい時は.vimrcで次のように設定します。

" 拡張子howmの折り返し文字数は30文字
au BufRead,BufNewFile *.howm let b:JpCountChars=30 " 拡張子txtの折り返し文字数は20文字 au BufRead,BufNewFile *.txt let b:JpCountChars=20
" abc.txtの折り返し文字数は42文字
au BufRead,BufNewFile abc.txt let b:JpCountChars=42

textwidthから折り返し文字数を設定する事も出来ます。

" 折り返し文字数は textwidthから設定する
let JpCountChars_Use_textwidth = 1

1に設定すると b:JpCountCharsは textwidthの値(全角換算なので textwidth/2)を使用します。

現在の縦文字数や行数と異なる形式へ一時的に整形したい場合は、実行時に指定します。

JpFormatAll [折り返し文字数] [行数] {ぶら下がり文字数}

行数やぶら下がり文字数は省略可能です。

現在40×17フォーマットで整形していて、20×20フォーマットに変更したい場合は次のように実行します。

:JpFormatAll 20 20

特定の行を整形対象外にする

特定の行を整形対象外にする事も出来ます。

整形対象外にする条件は JpFormatExcludeで指定します。

このオプションはデフォルト指定で、実際に整形する時はバッファローカルな変数 b:JpFormatExclude が使用されます。

デフォルトでは空文字列(実際には'^$'に変換されます)が指定されているので全ての行が対象です。

以下のように設定すると半角文字だけの行なら整形しません。

" 整形対象外の正規表現(空文字 か'^$' を指定すると全ての行が整形対象になります)
" 半角だけの行は整形しない
let JpFormatExclude = '^[^\x00-\xff]\+$'
行頭が日本語以外は対象外にしたい場合は以下のようにします。
" 日本語以外で始まった場合は整形しない
let JpFormatExclude = '^[\x00-\xff]'

gq などの整形コマンドや他の整形プラグインを併用したい場合、使用したい行を対象外に設定して使用してください。

特定のファイルでだけ整形対象外の正規表現を変更することも出来ます。

b:を付けて .vimrcで指定して下さい。

au BufRead,BufNewFile *.howm let b:JpFormatExclude = '^[-+.*=|>";/[[:space:]]'

原稿枚数を計算する。

:JpCountPages を実行すると現在の原稿枚数を計算できます。

:JpCountPages

計算する際にはルビや制御用スクリプトを削除した、実際の原稿枚数を計算します。

" 原稿用紙換算計算時に削除するルビ等の正規表現
let JpCountDeleteReg = '\[.\{-}\]\|<.\{-}>\|《.\{-}》\|[.\{-}]\||'

現在の縦文字数や行数と異なるページ数をカウントしたい場合は、JpCountPages実行時に文字数と行数を指定します。

JpCountPages [折り返し文字数] [行数] {ぶら下がり文字数}

行数、ぶら下がり文字数は省略可能です。

現在40×17フォーマットで整形していて、20×20フォーマットのページ数を知りたい場合は次のように実行します。

:JpCountPages 20 20

原稿枚数計算のEasyモード

原稿枚数計算では内部的に全文整形を行っているので、長い文書ではそれなりに時間がかかります。

概算でかまわないような場合、整形済みの文書では簡易的に行数から原稿枚数計算を行う事が出来ます。

Easyモードではルビ等も通常の文字と見なされますが、ルビ等の制御記号を使用していなければ正確な枚数表示がなされます。

:JpCountPages Easy

文書内に連結マーカーが存在しない場合は通常通り JpCountPagesが実行されます。

適当なキーにマップしても良いかもしれません。

" 現在の原稿枚数計算(簡易)
noremap <silent> gc :JpCountPages Easy<CR>

リアルタイムに文字数を確認する

JpFormat.vimとは直接関係ありませんが、ステータス行に現バッファの文字数を表示することも出来ます。

https://github.com/fuenor/vim-wordcount

Tips

基本的な処理方法

  1. まず指定文字数に行を分割
  2. 次行の行頭禁則文字(JpKinsoku)を現在行へ移動
  3. 現在行の行末禁則文字(JpKinsokuE)を次行へ移動
  4. ぶら下がり文字数を超えてぶら下がっていたら追い出し(JpKinsokuO)
    1. (JpKinsokuOが未設定の場合はJpKinsokuで代用されます)

独自に禁則処理文字列を設定したい場合はjpformat.zip内のmisc/kinsoku.vimをpluginディレクトリにコピーして変更してみてください。

kinsoku.vim

kinsoku-cp932.vim (Windowsで内部エンコーディングがcp932の場合)

"っ" などの拗促音は行頭禁則和字ですが、行頭に有ってかまわないものとして処理されている場合も多いので、ぶら下げないように JpKinsokuから外しても良いかもしれません。

次のように JpKinsoku から削除すると、拗音や "…" 、 "―" もぶら下げないようになります。

let JpKinsoku = '[-!?}>-ー~!?゛゜ゝゞ)]。」、・゙゚ヽヾー々‐・:;.°′″、。,.,)\]}〕〉》」』】〟’”»‥]'

ただし "…" を行頭禁則から削除すると …… 等の分離不可文字でも分割されてしまうので追い出し処理を行うように設定可能です。

" ぶら下がり文字数を超えている時、JpKinsokuO以外の1文字を足して追い出す
 " 未設定時にはJpKinsokuで代用される。
let JpKinsokuO = '[-!?}>-ー~!?゛゜ゝゞ)]。」、・゙゚ヽヾー々‐・:;.°′″、。,.,)\]}〕〉》」』】〟’”»‥―…]'

実際問題としては "…" 等を行頭禁則として扱わない場合、分離不可としても扱わないことが多いようなので、JpKinsokuOを設定する必要はないかもしれません。

ぶら下がり文字数を0に設定すると常に追い出し処理を行います。

" 禁則処理の最大ぶら下がり字数
let JpCountOverChars = 0
" 禁則処理の最大追い出し字数 let JpCountOutChars = 2

JpFormat.vimを使用している場合、連結マーカーに対応させるため J や Ctrl-V など一部のコマンドをオーバーライドしています。

何か問題があって擬似ソフトラップを使用しているバッファでのみオーバーライドさせたい場合は以下を.vimrcに追加してください。

" J や <C-v>をバッファローカルにオーバーライド
let JpFormatBufLocalKey = 0

ただしこの場合はJpFormat.vimのコマンドを実行しないかぎり、コマンドのオーバーライドを行いません。

このためバッファを開いて最初にJコマンドを実行する場合、連結マーカー対応の連結を行わないことがあります。

(JpSetAutoFormatを実行している場合は問題ありません)

必要なら先になにかコマンドを実行するか、JpFormatBufLocalKeyを実行してください。

:JpFormatBufLocalKey

markdownでは改行が「行末の半角スペース2文字以上」ですが、連結マーカーをこれに合わせると便利かもしれません。

" 連結マーカー
let JpFormatMarker = "  "

txtファイルでは「」で囲まれた部分を強調表示するように設定するような場合、分割されて改行が挿入されても強調表示が行われるように region を使用すると良いかもしれません。

" 「」強調
syntax region txtDialog matchgroup=Normal start=+「+ end=+」+ contains=txtDialog
hi link txtDialog Special

個人的な使用方法としては QFixHowmと併用しているので、行頭に特殊記号のある行は整形しないようにしていて、howmファイルや txtファイルで連結マーカー+改行が存在する場合は自動整形を有効にしています。

howmファイルの時だけ整形対象の正規表現を変更しています。

(設定例)

augroup JpFormat
  au!
  au BufRead,BufNewFile *.howm JpSetAutoFormat
  au BufRead,BufNewFile *.howm let b:JpFormatExclude = '^[-+.*=|>";/[[:space:]]'
  au BufRead,BufNewFile *.txt  JpSetAutoFormat
  au BufRead,BufNewFile *.nvl let b:jpformat = 1
augroup END

タイプライタースクロール

主に日本語入力を行うような場合、カーソルを画面中央に固定する「タイプライタースクロール」という機能を持つエディタがあります。

Vimでもほぼ同等の設定が行なえます。

" タイプライタースクロール

set scrolloff=999

設定値が画面表示行数の1/2以上であればカーソルが画面中央に固定されます。

カーソル位置からの表示行数が画面の表示行数より多くないと効果はありません

scrolloffの設定はグローバルですが、特定のバッファのみJpFormatを利用した簡易的な「タイプライタースクロール」を使用することもできます。

JpFormatの「タイプライタースクロール」を使用したいバッファで、次のバッファローカル変数を設定してください。

:let b:typewriterscroll=1

有効にすると、挿入モード移行時にカーソル位置が画面中央に設定されます。

なお「自動整形」が有効でないと入力中にはカーソル位置の調整は行われません。

整形の内部処理方法について(gqモードと内部整形)

JpFormat.vimの「擬似ソフトラップ」における整形処理はJpFormat.vimの「内部整形」と|gq|を内部的に呼び出す「gq整形」との2種類から選択可能です。

「内部整形」は非常に高速ですがソースコードを認識してのコメント処理は行わないなど、英数字の処理はVimデフォルトの|gq|コマンドとは異なる処理になることがあります。

実際問題として「擬似ソフトラップ」は日本語文書専用という位置づけで使用することがほとんでしょうから問題になることは殆ど無いはずです。

ただしJpFormat.vimの整形処理が気に入らない場合は内部的に|gq|コマンドを呼び出して整形させることも可能です。

この場合の日本語の禁則処理等は|gq|コマンド(|formatexpr|)に依存することになります。

速度面では「gq整形」の方が遅くなります。

内部整形とgq整形は :JpFormatGqToggle でも切り替える事が出来ます。

内部整形

formatexprは使用せずにビルトインの禁則処理関数で整形していて高速に動作します。

" 整形に内部整形(ビルトイン)コマンドを呼び出し
let JpFormatGqMode = 0

gq整形

Vimのformatexprに登録されているgqコマンドを利用して整形することも可能です。

" gqを使用して整形を行う
let JpFormatGqMode = 1

すでに日本語対応のgqコマンドを使用している場合はこれだけで使用可能ですが、

Vimのデフォルトで使用されるgqコマンドは日本語に対応していないので、日本語の禁則処理を行うためには日本語対応のgqコマンドをformatexprに指定する必要があります。

「擬似ソフトラップ」で使用するコマンドを|gq|とは別に指定することも可能です。

" gqを使用して整形を行う
let JpFormatGqMode = 1
" 整形コマンドを指定する
let JpFormat_formatexpr = 'jpfmt#formatexpr()'
JpFormat_formatexprには formatexprで使用可能な式を設定します

たとえば|gq|では「ぶら下げ処理」を行いたくないのでjpvim#formatexpr()を使用して、「擬似ソフトラップ」のgq整形では「ぶら下げ処理」をするjpfmt#formatexpr()を使用するなどのように使います。

JpFormat_formatexprは|formatexpr|に登録可能な式であればJpFormat.vimに限らずなんでも使用可能です。

オプション一覧

独自に禁則処理文字列を設定したい場合はjpformat.zip内のkinsoku.vimを参考にしてみてください。

kinsoku.vim

kinsoku-cp932.vim (Windowsで内部エンコーディングがcp932の場合)

" 文字数指定を半角/全角単位にする
" 1:半角
" 2:全角
let JpFormatCountMode = 2
" 原稿(折り返し)全角文字数
let JpCountChars = 40
" 原稿行数
let JpCountLines = 17
" 禁則処理の最大ぶら下がり字数
let JpCountOverChars = 1
" 半角一文字分オーバーしても折り返し処理をする/しない
let JpFormatHankakuOver = 0
" 折り返し文字数(原稿用紙文字数)は textwidthから設定する
let JpCountChars_Use_textwidth = 0
" 挿入モードで一文字入力する度に自動整形を行う/行わない
let JpFormatCursorMovedI = 0
" 整形対象外行の正規表現
let JpFormatExclude = '^$'
" 原稿用紙換算計算時に削除するルビ等の正規表現
let JpCountDeleteReg = '\[.\{-}\]\|<.\{-}>\|《.\{-}》\|[.\{-}]\||'
" 整形コマンドを使用したら自動整形もON
let JpAutoFormat = 1
" 連結マーカー
let JpFormatMarker = "\t"
" 基本的な処理方法
" 1. まず指定文字数に行を分割
" 2. 次行の行頭禁則文字(JpKinsoku)を現在行へ移動
" 3. 現在行の行末禁則文字(JpKinsokuE)を次行へ移動
" 4. ぶら下がり文字数を超えてぶら下がっていたら追い出し(JpKinsokuO)
"    (JpKinsokuOが未設定の場合はJpKinsokuで代用されます)
" 行頭禁則
let JpKinsoku = '[-!?}>-ー~!?゛゜ゝゞ)]。」、・゙゚ヽヾー々‐・:;.°′″、。,.,)\]}〕〉》」』】〟’”»‥―…]'
" 行末禁則
let JpKinsokuE = '[0-9a-zA-Z([{<({〔〈《「『【〝‘“«]'
" 句点と閉じ括弧
let JpKutenParen = '[、。,.,)\]}〕〉》」』】〟’”»]'
" 句点と閉じ括弧で分離不可文字追い出し用
" 分離不可文字を追い出す時JpNoDivNがあったら、そこから追い出し。
" ですか?――<分割> があったら ?は残して――のみを追い出すための指定。
let JpNoDivN = '[、。,.,)\]}〕〉》」』】〟’”»!?!?]'
" 分離不可
let JpNoDiv = '[―…‥]'
" 連結マーカー非使用時のTOLキャラクター
let JpJoinTOL = '[\s 「・*]'
" 連結マーカー非使用時のEOLキャラクター
let JpJoinEOL = '[。」!?]]'
" 挿入モードへ移行したら自動連結
" 0 : なにもしない
" 1 : カーソル位置以降を自動連結
" 2 : パラグラフを自動連結
let JpAutoJoin = 1
" gqを使用して整形を行う
let JpFormatGqMode = 0
" gqを使用して整形する場合の整形コマンド
" 空文字列なら現在formatexprに設定しているコマンドが使用される
let JpFormat_formatexpr = ''