Skip to content

woodmix/JapanWordStop

Repository files navigation

This is a plugin to make sublime work properly with Word Jump (ctrl+right, etc.) for Japanese strings.
README in English is here

JapanWordStop

ctrl+right などで単語ジャンプする時、Sublime標準では日本語文字列などは漢字も平仮名もすべてまとめてジャンプされます。
このプラグインは文字種が変わる位置で止まるように動作を変更します。

特徴

  • 単純に文字種のみで判断しているのでストップ位置の予測が出来ます。
  • 標準コマンドをインターセプトする形で動作しているのでショートカットキーを設定する必要がありません(設定可能)。
  • そのためダブルクリック時のSublimeの例外的動作を阻害しません。
  • subtractive オプションにも対応しています。
  • Ctrl+D による単語選択にも対応。
  • ascii文字列における単語ジャンプは、基本的にSublime標準のものに準拠しており、Sublime設定 "word_separators" も反映されます。
    ただ、記号文字(特にカンマ)が絡むストップ位置は変更されます(後述)。

ストップ位置の例

"|" で示している位置に止まります。
※平仮名を、直前文字とセットになっている送り仮名として扱います。ascii文字列におけるスペース文字のような扱いです。

|吾輩|《わがはい|》は|猫である|。|名前はまだ|無い|。|
|どこで|生れたかとんと|見当|《けんとう|》がつかぬ|。|何でも|薄暗いじめじめした|所で|ニャーニャー|泣いていた|事だけは|記憶している|。|
|吾輩はここで|始めて|人間というものを|見た|。|しかもあとで|聞くとそれは|書生という|人間中で|一番獰悪|《どうあく|》な|種族であったそうだ|。|

サブワードジャンプ(alt+right, alt+left)を行った場合は平仮名を飛ばさなくなります。

吾輩|《|わがはい|》|は|猫|である|。|名前|はまだ|無|い|。|
|どこで|生|れたかとんと|見当|《|けんとう|》|がつかぬ|。|何|でも|薄暗|いじめじめした|所|で|ニャーニャー|泣|いていた|事|だけは|記憶|している|。|
|吾輩|はここで|始|めて|人間|というものを|見|た|。|しかもあとで|聞|くとそれは|書生|という|人間中|で|一番獰悪|《|どうあく|》|な|種族|であったそうだ|。|

ascii文字列におけるSublime標準との違い

次のような文字列を例にすると...

loving_word ENUM('hello', 'world', 'sublime') NOT NULL

Sublime標準では ctrl+right では次の位置で止まります。カンマを強く意識していることが分かります。

loving_word| ENUM|('hello|'|,| 'world|'|,| 'sublime|'|)| NOT| NULL|

一方 ctrl+left では次の位置で止まります。カンマに対する意識が変化しています。

|loving_word |ENUM|(|'|hello', |'|world', |'|sublime') |NOT |NULL

このプラグイン導入後は、ctrl+right では次の位置で止まるようになります。
カンマが特別扱いされず、単純に単語終端と記号終端で止まります。

loving_word| ENUM|('|hello|',| '|world|',| '|sublime|')| NOT| NULL|

ctrl+left も同様です。単純に単語始端と記号始端で止まります。

|loving_word |ENUM|('|hello|', |'|world|', |'|sublime|') |NOT |NULL

Sublime標準挙動もいまいち一貫性がないので敢えて再現には努めませんでした。

マウスドラッグについての注記

Sublimeは標準で、ダブルクリック後にマウスボタンを離さずにそのままドラッグすると単語単位で選択範囲を拡張します。
このプラグインでは、ダブルクリック時に日本語文字列を単語単位で選択する挙動は実装しましたが、そのままドラッグした場合の挙動はSublime標準のままとしました。つまり、日本語文字列はまとめて選択されるままです。
これはSublimeの on_hover() イベントにとても大きな遅延があるため、修正しようとするとascii文字列上でのドラッグで使用感が悪化するためです。

サブワードジャンプの豆知識

アンダースコア "_" でストップするサブワードジャンプですが、両側に存在する文字が大文字か小文字かで挙動が異なります。
例えば "AUTO_INCREMENT" と "auto_increment" で左端から alt+right で右側へサブワードジャンプすると次の位置で止まります。

AUTO|_|INCREMENT|
auto|_increment|

これはSublimeの標準に由来するもので、このプラグインに由来するものではありません。

About

Sublime Text plugin that provides word jumps in Japanese

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages