工作好きな情報系の雑記

[Sublime Text 3]日本語の単語分割機能を強化するプラグインを作った

Sublime Text、もうめちゃくちゃ使いやすくて既に恋に落ちているエディタなんだけど、一つ使いづらい点がある。

それは日本語の分割機能が弱いこと。
ChromeとかWordとかだと、日本語の文章の上でダブルクリックすると日本語の単語が一つ選択される。
でもSublime Textだと文章全部選択されちゃう。場合によっては段落一つ丸々選択される。
一応分割単位をある程度小さくすることもできるけど、これでは不十分。

追記(2018/03/16):日本語の単語分割を強化するプラグインを作りました! こっちの方が単語の分割が正確に行えます。 完璧なプラグインではないですが、ぜひお試しください。日本語の単語をコピーしたいとき、単語をダブルクリックすると自動的に単語が選択状態になるってのがよくある挙動だけど、SublimeTextだとそうはいかない。 改行したところまでまるまる全部範囲選択される。 この辺はSublimeTextで改善してほしいところね。単語の範囲選択は無理だけど、句読点での区切りなら辛うじてできるみたいなので、その方法を紹介。>&gt...
[Sublime Text 3]日本語の区切り位置を細かくする - 工作好きな情報系の雑記

う~ん、これは非常にまずい。LaTeXで論文とか書く時は特に使いづらい。

じゃあどうするか。
そう、プラグインを作ってしまえばいい。

JapaneseWordSeparator

これを使うと、ダブルクリックで単語単位での選択が可能になる。

ドラッグで選択範囲を広げる事や、Ctrlを押しながら選択することで複数の選択範囲を持つこともできる。
単語の検出には、TinySegmenterをpython版に修正したものを用いている。

現在はPackage Controlに申請中なので、使いたい人はGitHubのリポジトリからクローンして使ってほしい。
(追記:2018/06/13)無事Package Controlに登録されました!
というわけで、普通にSublimeText内のPackage controlから探してもらえればこのプラグインが出てくるので、そっからインストールしてほしい。

もちろん、Githubのリポジトリを[Preferences]>[Browse Packages...]で出てきたフォルダにクローンしてもらっても全然OK。

JapaneseWordSeparator - ST3 plugin providing better word separator for Japanese.
ASHIJANKEN/JapaneseWordSeparator - GitHub

 

 

・・・正直に言うと、APIの制約の関係上、もともとの機能と遜色ないものは作れなかった。
Sublime TextのAPIでは、マウスクリックのリリースを検出できないし、ドラッグ時のマウスの軌跡を追う事もできない。
この制約の中でドラッグを用いるためには、on_hoverというメソッドを使うしかなかった。これはマウスがホバーした時に呼び出されるメソッド。だからドラッグして選択範囲を広げたとき、範囲が広がるまでに少しラグが生じている。

Called when the user's mouse hovers over a view for a short period.
API Reference – Sublime Text 3 Documentation

他にも色々、元々のダブルクリック時の挙動とはいろいろ異なる点が出てきてしまっている。
(詳しくはGitHubページのREADME.mdの「確認できている不具合など」を参照)

今の状態でも日本語環境においては大分使いやすくなっているが、まだまだ完璧とは言い難い。
もっとこのプラグインをブラッシュアップしていかねば。

もしこのプラグインを使ってみて何か指摘とかある場合は、ぜひ気軽にコメントください。

モバイルバージョンを終了