*tcvime.jax* 漢字直接入力の補助機能プラグイン tcvime説明書 漢字直接入力の補助機能プラグイン *tcvime* 1. 概要 |tcvime-overview| 2. 準備 |tcvime-setup| 3. 操作法 |tcvime-usage| 4. オプション |tcvime-option| 5. コマンド |tcvime-command| 6. 辞書ファイル |tcvime-file| 7. 設定例 |tcvime-setting| 8. keymapのカスタマイズ |tcvime-keymapcustom| 9. 問題点 |tcvime-problem| {Vi does not have any of these features} ============================================================================== 1. 概要 *tcvime-overview* tcode,tutcode等の漢字直接入力keymap用の入力補助機能を提供するプラグインです。 以下の機能を提供します: |tcvime-mazegaki| 交ぜ書き変換 |tcvime-bushu| 部首合成変換 |tcvime-katakana| カタカナ変換 |tcvime-seq2kanji| 入力シーケンス→漢字変換 |tcvime-kanji2seq| 漢字→入力シーケンス変換 |tcvime-withoutctrl| コントロールキーを伴わないモード切り替え |tcvime-help| 文字ヘルプ表表示 |tcvime-normal-kanjitable| 漢字表からの漢字挿入 交ぜ書き変換 *tcvime-mazegaki* ------------ |tcvime-insert-mazegaki| Insert modeでの交ぜ書き変換 |tcvime-insert-mazegaki-katuyo| Insert modeでの交ぜ書き変換(活用する語) |tcvime-insert-mazegaki-postfix| Insert modeでの後置型交ぜ書き変換 |tcvime-normal-mazegaki| Normal modeでの交ぜ書き変換 |tcvime-normal-mazegaki-katuyo| Normal modeでの交ぜ書き変換(活用する語) |tcvime-visual-mazegaki| Visual modeでの交ぜ書き変換 |tcvime-visual-mazegaki-katuyo| Visual modeでの交ぜ書き変換(活用する語) 交ぜ書き変換で確定した候補はデフォルトでは学習しません。 学習(候補リスト内の位置を移動)するには、 |'tcvime_movecandto'|オプションを0以上に設定してください。 また、新規単語の登録用に、交ぜ書き変換辞書ファイルを開く |:TcvimeEditMazegaki|コマンドを用意しています。 候補が無い場合に単語登録(辞書編集)を開始したい場合は、 |'tcvime_mazegaki_edit_nocand'|オプションを1に設定してください。 交ぜ書き変換辞書の形式や編集に関しては、|tcvime-file-mazegaki|参照。 部首合成変換 *tcvime-bushu* ------------ |tcvime-insert-bushu| Insert modeでの部首合成変換 |tcvime-normal-bushu| Normal modeでの部首合成変換 ユーザ用部首合成辞書(~/.vim/bushu.help)ファイルがあれば、 優先して部首合成に使用します。 部首合成変換辞書の形式に関しては、|tcvime-file-bushu|参照。 カタカナ変換 *tcvime-katakana* ------------ |'TcvimeNKatakana'| Normal modeでのカタカナ変換 |'TcvimeNKataHira'| Normal modeでのカタカナ変換(ひらがなを指定文字数残す) |'TcvimeVKatakana'| Visual modeでのカタカナ変換 |'TcvimeNHiragana'| Normal modeでのひらがな変換 |'TcvimeVHiragana'| Visual modeでのひらがな変換 Insert mode用には、lmap用の後置型カタカナ変換関数を用意しています。 |tcvime-setting| 例: " 後置型カタカナ変換: 指定文字数をカタカナ変換。0:ひらがなが続く間 lmap k0 =tcvime#InputConvertKatakana(0) lmap k1 =tcvime#InputConvertKatakana(1) " 後置型カタカナ変換: 指定文字数のひらがなを残してカタカナ変換 lmap j1 =tcvime#InputConvertKatakana(-1) " 直前のカタカナ変換を縮める lmap l1 =tcvime#InputConvertKatakanaShrink(1) " 後置型でカタカナ文字列を伸ばす lmap h1 =tcvime#InputConvertKatakanaExtend(1) " 後置型ひらがな変換: 指定文字数をひらがな変換。0:カタカナが続く間 lmap i0 =tcvime#InputConvertHiragana(0) カタカナモード切り替えは例えばkeymap/tutcodek.vimを参照してください。 'でひらがな/カタカナモード切り替えができるようにしたtutcodeのkeymapです。 ただし、r,f,t等でひらがな使用不可(=を使っているため。 loadkeymapでなく、|:map-|を使ってlmap で登録する形にすれば おそらく可能) 入力シーケンス→漢字変換 *tcvime-seq2kanji* ------------------------ keymapが有効になっていない時に入力したシーケンスを漢字に変換する機能です。 |'TcvimeVSeq2Kanji'| Visual modeでの入力シーケンス→漢字変換 Insert mode用には、lmap用の後置型入力シーケンス→漢字変換関数を用意しています。 |tcvime-setting| 例: lmap z0 =tcvime#InputConvertSeq2Kanji(0) 漢字→入力シーケンス変換 *tcvime-kanji2seq* ------------------------ keymap有効のままでアルファベットを入力すると、入力したシーケンスに対応する 漢字になりますが、元のアルファベットに戻したい場合に使うための機能です。 |'TcvimeVKanji2Seq'| Visual modeでの漢字→入力シーケンス変換 keymap有効のままで英単語を入力して、後置型で英字に変換する使い方もあります。 (keymapのオンオフを切り替えるのが面倒な場合向け) 文字数を指定しない場合、英単語入力前にスペースを入力しておくと、 スペース以降の文字を英字に変換して、区切り用に入力したスペースを削除。 例:" code "と打鍵すると" 演各 "と表示され、開始キーで、"code"に変換。 あるいは、読みの始まりをマークしておくと、それ以降を対象に英字に変換。 Insert mode用には、lmap用の後置型漢字→入力シーケンス変換関数を用意しています。 |tcvime-setting| 例: " 後置型漢字→入力シーケンス変換(現位置からスペースまで) lmap ;0 =tcvime#InputConvertKanji2Seq(0) " 後置型漢字→入力シーケンス変換(現位置からInsert mode開始位置または行頭まで) lmap ;9 =tcvime#InputConvertKanji2SeqAll() なお、シーケンスがずれて意味不明な漢字文字列になったものを修復するには、 以下のキーを用意しています。 |'TcvimeVShiftSeq'| Visual modeでの漢字→入力シーケンスシフト→漢字変換 使用例: 「電地給月分動田新同 」→「うかもしれません。」 コントロールキーを伴わないモード切り替え *tcvime-withoutctrl* ---------------------------------------- 行頭または空白直後に','キーを入力した時にlmapをオンにするには、 以下のimapを登録してください。なお、tcvime#EnableKeymapOrInsertChar()の 2番目の引数を0にすると、直前の空白を削除しません。 " コントロールキーを伴わないモード切り替え: ,でオンにする imap , u=tcvime#EnableKeymapOrInsertChar(',',1) コントロールキー無しでlmapオフにするには、以下のようなlmapを登録してください。 function TcvimeCustomKeymap() " lmapオフ lmap a9 uTcvimeIDisableKeymap " ... endfunction 文字ヘルプ表表示 *tcvime-help* ---------------- |tcvime-normal-help| 文字ヘルプ表表示(Normal mode) |tcvime-visual-help| 文字ヘルプ表表示(Visual mode) ユーザ用部首合成辞書(~/.vim/bushu.help)ファイルがあれば、 優先して部首合成ヘルプ表示に使用します。 ============================================================================== 2. 準備 *tcvime-setup* ~/.vimrcの設定(詳細な設定例はdoc/tcvime.jax参照): tcvime_keymapオプションの設定を入れてください。 let tcvime_keymap = 'tutcodep' 後置型変換を使う場合は、 TcvimeCustomKeymap()関数を定義して、 後置型変換に使うシーケンスのlmapを記述した上で、 function TcvimeCustomKeymap() lmap ala uTcvimeIBushu " ... endfunction TcvimeCustomKeymap()が呼ばれるように、 TcvimeIEnableKeymapを使ってkeymapを有効化するようにしてください。 imap TcvimeIEnableKeymap ============================================================================== 3. 操作法 *tcvime-usage* tcvimeの機能は'mapleader'で指定されたキーの後に'q'などのキーを入力することで 実行されます。tcvimeでは'mapleader'のデフォルトはCTRL-K(CTRLキーを押しながらk) です。説明中のという文字列はmapleaderを表しています。つまり、 mapleaderがCTRL-Kの場合、q は CTRL-Kの後にqを入力する、ということです。 なお、Insert modeの場合は、keymapのset後にlmapで機能の割り当てが可能です。 |tcvime-setting| 例: " 後置型部首合成変換 lmap ala TcvimeIBushu " 前置型交ぜ書き変換の読み入力開始 lmap alj TcvimeIStart " 前置型交ぜ書き変換 lmap al TcvimeIConvOrStart |tcvime-insert-mazegaki| Insert modeでの交ぜ書き変換 |tcvime-insert-mazegaki-katuyo| Insert modeでの交ぜ書き変換(活用する語) |tcvime-insert-mazegaki-postfix| Insert modeでの後置型交ぜ書き変換 |tcvime-insert-bushu| Insert modeでの部首合成変換 |tcvime-normal-mazegaki| Normal modeでの交ぜ書き変換 |tcvime-normal-mazegaki-katuyo| Normal modeでの交ぜ書き変換(活用する語) |tcvime-normal-bushu| Normal modeでの部首合成変換 |tcvime-visual-mazegaki| Visual modeでの交ぜ書き変換 |tcvime-visual-mazegaki-katuyo| Visual modeでの交ぜ書き変換(活用する語) |tcvime-normal-help| 文字ヘルプ表表示(Normal mode) |tcvime-visual-help| 文字ヘルプ表表示(Visual mode) |tcvime-normal-kanjitable| 漢字テーブルファイル表示(Normal mode) Insert modeでの交ぜ書き変換 *tcvime-insert-mazegaki* --------------------------- q 読みの始まりをマークします。 確定直後など、何もマークされていない場合は、 でもマークできます。 交ぜ書き変換を行います。 q でマークした位置から現在のカーソル位置の間にある 文字列を読みとして交ぜ書き変換辞書を検索します。 候補が一つしかない場合は読みを置き換えます。 候補が複数ある場合は、|complete()|を使って 補完候補としてポップアップメニーで表示します。 普通の補完と同様に、CTRL-NやCTRL-Pで候補を選択して、 CTRL-Yで確定、CTRL-Eでキャンセルできます。 例: "qあい"と打つと、 候補がポップアップメニューで表示されます。 CTRL-Nを打って"哀"を選択してCTRL-Yを打つと、 "あい"が"哀"に置き換えられます。 Insert modeでの交ぜ書き変換(活用する語) *tcvime-insert-mazegaki-katuyo* --------------------------------------- 基本的には活用しない語の交ぜ書き変換と同じです。 活用しない部分まで入力してから、o で変換します。 候補の確定はCTRL-Yです。 o q でマークした位置から現在のカーソル位置の間の文字列に "―"を付加した文字列を読みとして交ぜ書き変換辞書から検索します。 例: "qあおo"と打つと、ポップアップメニューで"仰"等の候補が 表示されます。CTRL-Yを打つと、"あお"が"仰"に置き換えられます。 Insert modeでの後置型交ぜ書き変換 *tcvime-insert-mazegaki-postfix* --------------------------------- 読みの文字数を指定して後置型で交ぜ書き変換を開始することもできます。 例えば、tc2と同様に、18,28,38,48と打った際にそれぞれ読みの文字数として、 1,2,3,4文字を指定した交ぜ書き変換を開始したい場合は、 keymapのset後に以下のlmapを行うことで可能です。 " 活用しない語 lmap 18 =tcvime#InputPostConvert(1, 0) lmap 28 =tcvime#InputPostConvert(2, 0) lmap 38 =tcvime#InputPostConvert(3, 0) lmap 48 =tcvime#InputPostConvert(4, 0) " 活用する語(ただしtc2と違って、読みの文字数には活用語尾は含まない) lmap 29 =tcvime#InputPostConvert(2, 1) lmap 39 =tcvime#InputPostConvert(3, 1) lmap 49 =tcvime#InputPostConvert(4, 1) lmap 59 =tcvime#InputPostConvert(5, 1) 読みの文字数を指定しないで、後置型交ぜ書き変換を開始することもできます。 設定例(m0を入力した際に後置型交ぜ書き変換を開始する場合): lmap m0 =tcvime#InputPostConvertStart(0) 読みを縮めるには、候補選択ポップアップメニュー表示中に>キーを押すか、 確定後(候補数1個の場合は自動確定されます)に、 TcvimeIShrinkにマップしたキーシーケンスを入力してください。 設定例(m>を入力した際に直前の交ぜ書き変換を縮める場合): lmap m> TcvimeIShrink Insert modeでの部首合成変換 *tcvime-insert-bushu* --------------------------- b カーソル位置の直前の2文字の部首合成変換を行います。 例: "木口b"と打つと、"木口"が"杏"に置き換えられます。 Normal modeでの交ぜ書き変換 *tcvime-normal-mazegaki* --------------------------- [count] カーソル位置以前の[count]文字の交ぜ書き変換を行います。 例: "あい"と表示されているとき、"い"の上にカーソルを置いて "2"と打つと、__TcvimeCand__というバッファが開いて、 候補が各行に表示されます。通常の行移動操作で候補を選択後、 リターンキーやCTRL-Yを打つと、"あい"が選択した候補に置き換えられます。 Normal modeでの交ぜ書き変換(活用する語) *tcvime-normal-mazegaki-katuyo* ----------------------------------------- [count]o カーソル位置以前の[count]文字に"―"を付加した文字列を 読みとして交ぜ書き変換辞書から検索します。 例: "あお"と表示されているとき、"お"の上にカーソルを置いて "2o"と打つと、__TcvimeCand__というバッファが開いて、 候補が各行に表示されます。通常の行移動操作で候補を選択後、 リターンキーやCTRL-Yを打つと、"あお"が選択した候補に置き換えられます。 Normal modeでの部首合成変換 *tcvime-normal-bushu* --------------------------- b カーソル位置以前の2文字の部首合成変換を行います。 例: "木口"と表示されているとき、"口"の上にカーソルを置いて "b"と打つと、"木口"が"杏"に置き換えられます。 Visual modeでの交ぜ書き変換 *tcvime-visual-mazegaki* --------------------------- Visual modeで選択した文字列の交ぜ書き変換を行います。 Visual modeでの交ぜ書き変換(活用する語) *tcvime-visual-mazegaki-katuyo* ----------------------------------------- o Visual modeで選択した文字列"―"を付加した文字列を 読みとして交ぜ書き変換辞書から検索します。 文字ヘルプ表表示(Normal mode) *tcvime-normal-help* ----------------------------- ? カーソル位置の文字のヘルプ表を表示します。使用中のkeymapで 直接入力できない文字の場合は、部首合成変換辞書を検索して、 指定された文字が含まれる行を表示します。 例: "鍵"という文字の上にカーソルを置いて"?"と打つと、 "__TcvimeHelp__"というバッファが開いて次のように表示されます (keymapがtutcodeの場合)。 桟頃 篇猿析|$△・・・・ 尉軟 辰祖彫| ・・・・・ 砦闇^鍵渓抄< ・・・・・ '^'や'$'を非表示にして、構文ハイライトだけで、 第1打鍵や最終打鍵の位置を示すには、構文ハイライトを有効にして、 |'tcvime_hide_helptbl_mark'|を1に設定してください。 また、指定した文字のみの打ち方を表示したい場合は、 |'tcvime_use_helptbl'|を0に設定しておくと、次のように表示されます。 ・・・・ 3 ・・・・ ・・・・ ・・・・ ・・1 2 ・・・・ 鍵 文字ヘルプ表表示(Visual mode) *tcvime-visual-help* ----------------------------- ? Visual modeで選択中の(複数)文字のヘルプ表を表示します。 漢字テーブルファイル表示(Normal mode) *tcvime-normal-kanjitable* ------------------------------------- t 漢字テーブルファイルを表示します。 漢字テーブルファイルバッファで、入力したい文字の上にカーソルを 移動してキーを押すと、元のバッファにその文字がコピーされま す。漢字テーブルファイルバッファは通常の方法(:q等)以外にqキー でも閉じます。 漢字テーブルファイルの形式に関しては、|tcvime-file-kanjitable|参照。 ============================================================================== 4. オプション *tcvime-option* 'tcvime_keymap' *'tcvime_keymap'* 使用するkeymap。|TcvimeIEnableKeymap|から参照される。 設定例: let tcvime_keymap = 'tutcode' 'tcvime_keyboard' *'tcvime_keyboard'* 文字ヘルプ表用のキーボード配列を表す文字列。 キーの後にスペース、を2回ずつ記述します。 例: let tcvime_keyboard = "1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 0 0 \q q w w e e r r t t y y u u i i o o p p \a a s s d d f f g g h h j j k k l l ; ; \z z x x c c v v b b n n m m , , . . / / " 'tcvime_keymap_for_help' *'tcvime_keymap_for_help'* このオプションは、|'tcvime_keymap'|に変更になりました。 文字ヘルプ表示に使うkeymap。現在のバッファで&keymapが未設定の場合に使用。 設定例: let tcvime_keymap_for_help = 'tutcode' 'tcvime_use_helptbl' *'tcvime_use_helptbl'* 文字ヘルプ表示時に、該当文字の打ち方だけでなく、 第1打鍵以外の打ち方が共通する文字のテーブル(文字表)を表示するかどうか。 なお、文字表のデータは、autoload/tcvime/helptbl_tutcode.vim等を読み込むので、 該当ファイルが存在しない場合は文字表表示はオフになります。 また、keymap変更時は、文字表データファイルも合わせて変更しておく必要が あります。keymapから文字表データファイル作成補助用に、 autoload/tcvime/mkhelptbl.vimを用意しています。 省略値: 1 設定例: let tcvime_use_helptbl = 0 'tcvime_hide_helptbl_mark' *'tcvime_hide_helptbl_mark'* |'tcvime_use_helptbl'|が1で、syntax enableの場合、文字表内の'^','$','+',' 'を 非表示(conceal)にするかどうか。 '^'や'$'のせいで表が間延びするのを嫌う場合用。 構文ハイライトだけで、第1打鍵や最終打鍵の位置を見分けることになります。 省略値: 0 設定例: let tcvime_hide_helptbl_mark = 1 'tcvime_movecandto' *'tcvime_movecandto'* 交ぜ書き変換で確定した候補の、 候補リスト内の移動先位置(先頭は0。移動させない場合は-1)。 ただし、確定した候補が、指定位置以前にある場合は移動しない。 つまり、指定位置より前にある候補の順番は固定。 省略値: -1 設定例(tc2と同様に5番目に移動。先頭4個の順番は固定): let tcvime_movecandto = 4 (なお、確定・候補移動のたびに交ぜ書き変換辞書を保存するため(複数Vim 使用時の排他処理を省くため)、辞書が大きい場合は時間がかかる。) 'tcvime_mazegaki_edit_nocand' *'tcvime_mazegaki_edit_nocand'* 交ぜ書き変換で候補が無い場合に辞書編集を開始するかどうか。 省略値: 0 設定例: let tcvime_mazegaki_edit_nocand = 1 交ぜ書き変換辞書編集に関しては、|tcvime-file-mazegaki-edit|参照。 OnTcvimeEnableKeymap() *OnTcvimeEnableKeymap()* |TcvimeIEnableKeymap|実行時にコールバックされる関数 (ただし、TcvimeIEnableKeymap実行時に既にlmapオンの場合は呼ばれません)。 設定例は|tcvime-setting|参照。 OnTcvimeDisableKeymap() *OnTcvimeDisableKeymap()* |TcvimeIDisableKeymap|実行時にコールバックされる関数 (ただし、TcvimeIDisableKeymap実行時に既にlmapオフの場合は呼ばれません)。 設定例は|tcvime-setting|参照。 TcvimeCustomKeymap() *TcvimeCustomKeymap()* lmapのカスタマイズ用の関数。 |TcvimeIEnableKeymap|実行中にtcvime#SetKeymap()からコールバックされる。 (lmapのロード時に1回のみ実行されるようにするため、 OnTcvimeEnableKeymap()と別関数) 設定例は|tcvime-setting|参照。 'g:tcvime#selectkeys' *'g:tcvime#selectkeys'* 交ぜ書き変換候補選択用キーのList。 候補を選ぶ際に、CTRL-Nを何回か押した後CTRL-Yで確定するかわりに、 このList内のキーを押すだけで候補を確定できるようになります。 省略値: [] 設定例: let g:tcvime#selectkeys = ['1','2','3','4','5','6','7','8','9','0'] 注: Insert modeでの候補選択の場合、 このキーで始まるlmapやimapがある場合は、|'timeoutlen'|待ちが発生。 'tcvime_no_default_key_mappings' *'tcvime_no_default_key_mappings'* デフォルトのキーマッピング(q等)を登録したくない場合 (自分で他のキーにmapしたい場合)は1に設定してください。 let tcvime_no_default_key_mappings = 1 'mapleader' キーマッピングのプレフィックス。|mapleader|を参照。省略値: CTRL-K CTRL-Kを指定する場合の例: let mapleader = "\" 'plugin_tcvime_disable' このプラグインを読み込みたくない場合に次のように設定します。 let plugin_tcvime_disable = 1 キー設定オプション(Insert mode) ------------------------------- 'TcvimeIEnableKeymap' *'TcvimeIEnableKeymap'* lmapをオンにする。|i_CTRL-^|のようなトグルでなくオンにするためのキーです。 |OnTcvimeEnableKeymap()|を呼び出します。 |'tcvime_keymap'|を設定しておいてください。 'TcvimeIDisableKeymap' *'TcvimeIDisableKeymap'* lmapをオフにする。|i_CTRL-^|のようなトグルでなくオフにするためのキーです。 |OnTcvimeDisableKeymap()|を呼び出します。 'TcvimeIStart' *'TcvimeIStart'* 交ぜ書き変換: 読みの開始位置の印を付けるキー。省略値: q 例(aljを指定する場合): lmap alj TcvimeIStart 'TcvimeIAsciiStart' *'TcvimeIAsciiStart'* 交ぜ書き変換: 英字変換用の読みの開始位置の印を付けるキー。 keymapをオフにする。 省略値: (無し: 未割当て) 例(/を指定する場合): imap / TcvimeIAsciiStart 例(lmapのalsを指定する場合): lmap als TcvimeIAsciiStart 'TcvimeIConvOrStart' *'TcvimeIConvOrStart'* 交ぜ書き変換: 変換実行キー。 読みの開始位置の印が付けられていれば、 開始位置と現在位置の間の文字列を、交ぜ書き変換の読みとして変換を実行。 印が付けられていなければ、現状位置を読みの開始位置として印を付ける。 省略値: 例(alを指定する場合): lmap al TcvimeIConvOrStart 'TcvimeIConvOrSpace' *'TcvimeIConvOrSpace'* 交ぜ書き変換: 変換実行キー。 読みの開始位置の印が付けられていれば、 開始位置と現在位置の間の文字列を、交ぜ書き変換の読みとして変換を実行。 印が付けられていなければ、' 'を挿入。 省略値: (無し: 未割当て) 例(を指定する場合): imap TcvimeIConvOrSpace Note: lmapにすると、lmap有効時にfやtやrの後のが使用不可(=なので) 'TcvimeIKatuyo' *'TcvimeIKatuyo'* 交ぜ書き変換: 活用する語の変換実行キー。省略値: o 例(aliを指定する場合): lmap ali TcvimeIKatuyo 'TcvimeIShrink' *'TcvimeIShrink'* 交ぜ書き変換: 直前の後置型交ぜ書き変換を縮めるキー。省略値: (無し: 未割当て) 例(m>を指定する場合): lmap m> TcvimeIShrink 'TcvimeIBushu' *'TcvimeIBushu'* 部首合成変換: 直前の2文字の部首合成変換実行キー。省略値: b 例(alaを指定する場合): lmap ala TcvimeIBushu キー設定オプション(Normal mode) ------------------------------- 'TcvimeNConvert' *'TcvimeNConvert'* 交ぜ書き変換: カーソル位置以前の[count]文字の変換を行うキー。 省略値: を指定する場合の例: nmap TcvimeNConvert 'TcvimeNOpConvert' *'TcvimeNOpConvert'* 交ぜ書き変換: このキーを押した後の{motion}で指定される文字列を変換。 注意: キーを押した際に|'operatorfunc'|を上書きします。 省略値: (無し: 未割当て) nを指定する場合の例: nmap n TcvimeNOpConvert 'TcvimeNKatuyo' *'TcvimeNKatuyo'* 交ぜ書き変換: [count]文字の活用する語の変換を行うキー。 省略値: o 'TcvimeNOpKatuyo' *'TcvimeNOpKatuyo'* 交ぜ書き変換: このキーを押した後の{motion}で指定される文字列を 活用する語として変換。 注意: キーを押した際に|'operatorfunc'|を上書きします。 省略値: (無し: 未割当て) 'TcvimeNBushu' *'TcvimeNBushu'* 部首合成変換: カーソル位置以前の2文字の部首合成変換を行うキー。 省略値: b 'TcvimeNKatakana' *'TcvimeNKatakana'* カタカナ変換: カーソル位置以前の[count]文字のカタカナへの変換を行うキー。 [count]が指定されない場合は、連続するひらがなと「ー」を対象とする。 省略値: (無し: 未割当て) 'TcvimeNKataHira' *'TcvimeNKataHira'* カタカナ変換: カーソル位置以前でひらがなや「ー」が続く間カタカナに変換。 [count]で指定した文字数はひらがなとして残す。 省略値: (無し: 未割当て) 'TcvimeNHiragana' *'TcvimeNHiragana'* ひらがな変換: カーソル位置以前の[count]文字のひらがなへの変換を行うキー。 [count]が指定されない場合は、カタカナと「ー」が続く間を対象とする。 省略値: (無し: 未割当て) 'TcvimeNOpKatakana' *'TcvimeNOpKatakana'* カタカナ変換: このキーを押した後の{motion}で指定される文字列をカタカナ変換。 注意: キーを押した際に|'operatorfunc'|を上書きします。 省略値: (無し: 未割当て) 'TcvimeNOpHiragana' *'TcvimeNOpHiragana'* ひらがな変換: このキーを押した後の{motion}で指定される文字列をひらがな変換。 注意: キーを押した際に|'operatorfunc'|を上書きします。 省略値: (無し: 未割当て) 'TcvimeNHelp' *'TcvimeNHelp'* 打鍵ヘルプ表示: カーソル位置の文字のヘルプ表を表示するキー。 省略値: ? 'TcvimeNKanjiTable' *'TcvimeNKanjiTable'* 漢字テーブルファイル表示を行うキー。省略値: t キー設定オプション(Visual mode) ------------------------------- 'TcvimeVHelp' *'TcvimeVHelp'* 打鍵ヘルプ表示: 選択中の(複数)文字のヘルプ表を表示するキー。 省略値: ? ? を指定する場合の例: vmap ? TcvimeVHelp 'TcvimeVConvert' *'TcvimeVConvert'* 交ぜ書き変換: 選択中の文字列の変換を行うキー。 省略値: 'TcvimeVKatuyo' *'TcvimeVKatuyo'* 交ぜ書き変換: 選択中の文字列を活用する語として変換を行うキー。 省略値: o 'TcvimeVKatakana' *'TcvimeVKatakana'* カタカナ変換: 選択中の文字列をカタカナに変換するキー。 省略値: (無し: 未割当て) 'TcvimeVHiragana' *'TcvimeVHiragana'* ひらがな変換: 選択中の文字列をひらがなに変換するキー。 省略値: (無し: 未割当て) 'TcvimeVKanji2Seq' *'TcvimeVKanji2Seq'* 漢字→シーケンス変換: 選択中の文字列を入力シーケンスに変換するキー。 省略値: (無し: 未割当て) 'TcvimeVSeq2Kanji' *'TcvimeVSeq2Kanji'* シーケンス→漢字変換: 選択中の文字列を入力シーケンスとみなして漢字に 変換するキー。 省略値: (無し: 未割当て) 'TcvimeVShiftSeq' *'TcvimeVShiftSeq'* 漢字→シーケンス→漢字変換: 選択中の文字列の入力シーケンスをずらして 漢字に変換するキー。 省略値: (無し: 未割当て) ============================================================================== 5. コマンド *tcvime-command* :TcvimeHelp {str} *:TcvimeHelp* 指定した文字列内の各文字のヘルプ表を表示する :TcvimeHelpB[ushu] {str} *:TcvimeHelpBushu* 指定した文字列内の各文字を含む行を部首合成変換辞書から検索して表示する :TcvimeSetKeymap {keymap} *:TcvimeSetKeymap* &keymapに{keymap}をsetする :TcvimeK[anjiTable] *:TcvimeKanjiTable* 漢字テーブルファイルを表示して、漢字を選んで入力 :TcvimeC[loseHelp] *:TcvimeCloseHelp* ヘルプ用バッファを閉じる :TcvimeE[ditMazegaki] *:TcvimeEditMazegaki* 交ぜ書き変換辞書への単語登録用コマンド。 交ぜ書き変換辞書を編集用に開いて直前に変換した読みを検索する。 読みが見つからない場合は、新たな行を追加して、 読みと候補文字列(読みと同じ)を挿入する。 交ぜ書き変換辞書編集に関しては、|tcvime-file-mazegaki-edit|参照。 ============================================================================== 6. 辞書ファイル *tcvime-file* |tcvime-file-mazegaki| 交ぜ書き変換辞書 |tcvime-file-mazegaki-edit| 交ぜ書き変換辞書の編集 |tcvime-file-bushu| 部首合成変換辞書 |tcvime-file-kanjitable| 漢字テーブルファイル 交ぜ書き変換辞書 *tcvime-file-mazegaki* ---------------- 交ぜ書き変換辞書はtc2と同じ形式です(SKKと同様の形式)。 交ぜ書き変換辞書の各行は以下の形式です。 読み /候補1/候補2/.../候補N/ 読みに漢字や英数字が含まれていてもかまいません。 活用する語は、活用しない部分(語幹)の後に"―"が付いた読みで登録されています。 読みでソートされている必要はありません。 あき /亜希/亜紀/明/秋/穐/龝/安岐/安芸/安藝/ あき― /厭き/飽き/ あ希 /亜希/ あ紀 /亜紀/ 亜き /亜希/亜紀/ ... 交ぜ書き変換辞書の編集 *tcvime-file-mazegaki-edit* ---------------------- |:TcvimeEditMazegaki|を実行すると、交ぜ書き変換辞書を編集用に開いて、 直前の交ぜ書き変換の読みを検索します。 読みが見つからない場合は、新たな行を追加して、 読みと候補文字列(読みと同じ)を挿入します。 |'tcvime_mazegaki_edit_nocand'|オプションを1に設定しておくと、 候補が無い場合に辞書編集が開始されます。 例えば、「こつ然」を変換しようとして、候補が無い場合、以下の行が挿入されます。 こつ然 /こつ然/ このとき(辞書編集開始直後)、読みを間違っていたなどの理由で、 辞書編集をキャンセルしたい場合、Normal modeでキーを押してください。 以下のように編集した後、元のバッファ上の読みを、 新たに登録した候補で置換するには、登録した候補上でキーを押してください。 こつ然 /忽然/ 部首合成変換辞書 *tcvime-file-bushu* ---------------- autoload/tcvime/bushudic.vim 部首合成変換用辞書 bushu.help ユーザ用部首合成辞書 ユーザ用部首合成辞書(bushu.help)ファイルがあれば、 優先して部首合成に使用します。 bushu.helpの例: "風"と"皇"や、"王"と"風"で"凰"を合成したい場合、以下の行を追加してください。 逆の順番("風"と"王")でも合成したい場合は、後ろに"*"を付けてください。 凰風皇 王風* 漢字テーブルファイル *tcvime-file-kanjitable* -------------------- 単なるテキストファイルなので、形式は自由です。 ============================================================================== 7. 設定例 *tcvime-setting* ~/.vimrcでの設定例です。 でtutcodepを有効にし、でtutcodepを無効にする設定の例です。 (でのトグル操作における、現在の状態を意識する負担を無くしたい場合用) if has('keymap') let tcvime_keymap = 'tutcodep' set iminsert=0 imsearch=0 imap TcvimeIEnableKeymap imap TcvimeIDisableKeymap imap :set imsearch=0 imap / TcvimeIAsciiStart " コントロールキーを伴わないモード切り替え: ,でオンにする imap , u=tcvime#EnableKeymapOrInsertChar(',',1) " ;で後置型英字変換 imap ; u=tcvime#InputPostConvertAscii(';') nmap k TcvimeNKatakana nmap h TcvimeNHiragana nmap TcvimeNConvert vmap k TcvimeVKatakana vmap h TcvimeVHiragana vmap ; TcvimeVKanji2Seq vmap z TcvimeVSeq2Kanji vmap , TcvimeVShiftSeq endif " TcvimeIEnableKeymap実行時にコールバックされる関数。 function OnTcvimeEnableKeymap() " で前置型交ぜ書き変換を開始するか、読みが無ければ' 'を挿入。 " (lmapにすると、lmap有効時にfやtやrの後のが使用不可。(=なので)) imap uTcvimeIConvOrSpace endfunction " TcvimeIDisableKeymap()実行時にコールバックされる関数。 function OnTcvimeDisableKeymap() silent! iunmap TcvimeCloseHelp endfunction " lmapのカスタマイズ用の関数。 " TcvimeEnableKeymap実行中にtcvime#SetKeymap()からコールバックされる。 " (lmapのロード時に1回のみ実行されるようにするため、 " OnTcvimeEnableKeymap()と別関数) function TcvimeCustomKeymap() " (TUT-Code用の例) " 後置型部首合成変換 lmap ala uTcvimeIBushu " lmapオフ lmap a9 uTcvimeIDisableKeymap " 前置型英字変換の読み入力開始 lmap a8 TcvimeIAsciiStart " 前置型交ぜ書き変換 lmap al uTcvimeIConvOrStart " 前置型交ぜ書き変換(活用する語として変換) lmap ali uTcvimeIKatuyo " 直前のカタカナ変換・交ぜ書き変換・部首合成変換の取り消し lmap alz u=tcvime#InputConvertUndo() " 直前の交ぜ書き変換を縮める lmap m> uTcvimeIShrink " 後置型ひらがな変換: 指定文字数をひらがな変換。0:カタカナが続く間 lmap i0 u=tcvime#InputConvertHiragana(0) " 後置型カタカナ変換: 指定文字数をカタカナ変換。0:ひらがなが続く間 lmap k0 u=tcvime#InputConvertKatakana(0) for i in range(1, 9) execute 'lmap k' . i "\u\=tcvime#InputConvertKatakana(" . i . ")\" " 後置型カタカナ変換: 指定文字数のひらがなを残してカタカナ変換 execute 'lmap j' . i "\u\=tcvime#InputConvertKatakana(-" . i . ")\" " 直前のカタカナ変換を縮める execute 'lmap l' . i "\u\=tcvime#InputConvertKatakanaShrink(" . i . ")\" " 後置型でカタカナ文字列を伸ばす: 文字数指定 execute 'lmap h' . i "\u\=tcvime#InputConvertKatakanaExtend(" . i . ")\" " 後置型交ぜ書き変換: 読みの文字数指定有り: 活用しない語 execute 'lmap m' . i "\u\=tcvime#InputPostConvert(" . i . ",0)\" " 後置型交ぜ書き変換: 読みの文字数指定有り: 活用する語 execute 'lmap n' . i "\u\=tcvime#InputPostConvert(" . i . ",1)\" " 後置型漢字→入力シーケンス変換(指定文字数) execute 'lmap ;' . i "\u\=tcvime#InputConvertKanji2Seq(" . i . ")\" " 後置型入力シーケンス→漢字変換(指定文字数) execute 'lmap z' . i "\u\=tcvime#InputConvertSeq2Kanji(" . i . ")\" endfor " 後置型でカタカナ文字列を伸ばす: カタカナより前でひらがなが続く間 lmap h0 u=tcvime#InputConvertKatakanaExtend(0) " 後置型交ぜ書き変換: 読みの文字数指定無し: 活用しない語 lmap m0 u=tcvime#InputPostConvertStart(0) " 後置型交ぜ書き変換: 読みの文字数指定無し: 活用する語 lmap n0 u=tcvime#InputPostConvertStart(1) " 後置型入力シーケンス→漢字変換 lmap z0 u=tcvime#InputConvertSeq2Kanji(0) " 後置型漢字→入力シーケンス変換(現位置からスペースまで) lmap ;0 u=tcvime#InputConvertKanji2Seq(0) " 後置型漢字→入力シーケンス変換(現位置からInsert mode開始位置または行頭まで) lmap ;9 u=tcvime#InputConvertKanji2SeqAll()TcvimeIDisableKeymap " tc2同様の後置型交ぜ書き変換を行うための設定: " " 活用しない語 " lmap 18 u=tcvime#InputPostConvert(1, 0) " lmap 28 u=tcvime#InputPostConvert(2, 0) " lmap 38 u=tcvime#InputPostConvert(3, 0) " lmap 48 u=tcvime#InputPostConvert(4, 0) " " 活用する語(ただしtc2と違って、読みの文字数には活用語尾は含まない) " lmap 29 u=tcvime#InputPostConvert(2, 1) " lmap 39 u=tcvime#InputPostConvert(3, 1) " lmap 49 u=tcvime#InputPostConvert(4, 1) " lmap 59 u=tcvime#InputPostConvert(5, 1) endfunction ============================================================================== 8. keymapのカスタマイズ *tcvime-keymapcustom* keymapファイルを変更する方法 ---------------------------- keymap/のtutcodep.vim等を変更してください。 変更した場合は、autoload/tcvime/内の2ファイルの更新も必要です。 helptbl_tutcodep.vim |'tcvime_use_helptbl'|用のヘルプ表 kanji2seq_tutcodep.vim 部首合成変換やヘルプ表示高速化のための漢字から 入力シーケンスへの変換用Dictionary それぞれのファイル作成補助用に、以下のファイルを用意しています。 mkhelptbl.vim kanji2seq.vim keymap/の既存ファイルを同名のまま変更すると、 変更前のtcvime側のファイルで上書きしてローカルの変更を無くしてしまうことがある ので、ファイル名を変えておいた方が良いです。 ~/.vimrcで一部のlmapを変更する方法 ---------------------------------- ~/.vimrcで|TcvimeCustomKeymap()|を定義して、そこでlmapを追加してください。 function TcvimeCustomKeymap() lnoremap a: a lnoremap b: b ... lnoremap t1 ぱ lnoremap t3 ぴ lnoremap t4 ぷ lnoremap t5 ぺ lnoremap t2 ぽ endfunction ただし、既存のkeymapファイル内で定義済のlmapに関しては、 この方法では新しいバッファを開いた時に上書き前のlmapが使われてしいます。 これを回避するには以下の方法を使ってください。 (keymapの上書きは、を付けないと上書きされないので、 別バッファを開くたびに上書きが必要。 手でlmapオンにする操作を行う場合は、 OnTcvimeEnableKeymap()で上書き処理を呼び出せばいいが、 lmapオンの状態で新しいバッファを開いた時に自動でlmapオンになるので、 その場合向けの対策が必要) - 一部lmapの上書き方法1 " 手でlmapオンにする操作を強制するためBufAddでiminsert=0しておいて、 " OnTcvimeEnableKeymap()からTcvimeOverwriteKeymap()を呼ぶ。 " XXX: 交ぜ書き変換で初回にmazegaki.dicが開かれた時にもオフになる問題あり " (特にInsert modeでの初回交ぜ書き変換時) augroup TcvimeOverwriteKeymap autocmd! autocmd BufAdd * setl iminsert=0 augroup END function OnTcvimeEnableKeymap() call TcvimeOverwriteKeymap() endfunction - 一部lmapの上書き方法2 " InsertEnter autocmdを登録。 " (BufEnterやBufWinEnter時にはlmap未ロードなので上書きできない) augroup TcvimeOverwriteKeymap autocmd! autocmd InsertEnter * call TcvimeOverwriteKeymap() augroup END - 一部lmapの上書き方法1と2に共通する関数 function TcvimeOverwriteKeymap() if get(b:, 'loaded_tcvime_overwrite_keymap', 0) return endif let b:loaded_tcvime_overwrite_keymap = 1 lnoremap w 〜 lnoremap s ― lnoremap k 〈 lnoremap l 〉 lnoremap x ■ lnoremap v ● endfunction ============================================================================== 9. 問題点 *tcvime-problem* - Insert modeの交ぜ書き変換の際、ポップアップメニューが無効で表示できない場合、 自動ヘルプの表示はできません。 - |'backspace'|オプションにstartが入っていない場合、Insertモードで部首合成 変換等を行ったときに、元の文字が消えないで残ってしまうことがあります。 で元の文字を消しているためです。 ============================================================================== vim:set ft=help: