Skip to content

Neovim の Word motion を日本語の単語単位で動かすためのプラグイン

License

Notifications You must be signed in to change notification settings

s-show/extend_word_motion.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

extend_word_motion.nvim

概要

日本語の分かち書きを実現する Neovim のプラグインである TinySegmenter.nvim を使って Word Motion を拡張し、日本語の文章で単語単位の移動を実現する Neovim のプラグインです。

具体的な説明

日本語の文章を対象にして Neovim の本来の Word Motion を実行すると、「漢字・ひらがな・カタカナ」が移動の区切りとなるため、英語の文章を対象にしたときのような単語単位での移動にはなりません。例えば、以下の例文で Word Motion を実行した時の移動は次のとおりです。一行目が例文、二行目がカーソルの移動場所を | で示したものです。

今回は、2020年のアドベントカレンダーの記事で「設計中です」としていたキーボードについて、やっと自分なりに満足できる形になってきましたので、このキーボードの設計の意図なんかを書いていきます
今回|は|、|2020|年|の|アドベントカレンダー|の|記事|で|「|設計中|です|」|としていた|キーボード|について|、|やっと|自分|なりに|満足|できる|形|になってきましたので|、|この|キーボード|の|設計|の|意図|なんかを|書|いていきます

一方、TinySegmenter.nvim で同じ文章を分かち書きすると、以下のとおり分割できます。

{ "今回", "は", "、", "2", "0", "2", "0", "年", "の", "アドベントカレンダー", "の", "記事", "で", "「", "設計", "中", "です", "」", "と", "し", "て", "い", "た", "キーボード", "について", "、", "やっと", "自分", "なり", "に", "満足", "できる", "形", "に", "なっ", "て", "き", "まし", "た", "の", "で", "、", "この", "キーボード", "の", "設計", "の", "意図", "なんか", "を", "書い", "て", "いき", "ます" }

この分割結果に基づく移動を実現するのがこのプラグインの役目です。このプラグインを使って移動すると、以下のように単語単位でカーソルを移動できます。

今回|は|、|2|0|2|0|年|の|アドベントカレンダー|の|記事|で|「|設計|中|です|」|と|し|て|い|た|キーボード|について|、|やっと|自分|なり|に|満足|できる|形|に|なっ|て|き|まし|た|の|で|、|この|キーボード|の|設計|の|意図|なんか|を|書い|て|いき|ます

インストール方法

lazy.nvim を使う場合、~/.config/nvim/lua/plugins/extend_word_motion.lua を作成して以下のとおり設定します。その他のプラグインマネージャーを使っている場合、それぞれのマネージャーの手順に沿ってインストールしてください。

return {
  's-show/extend_word_motion.nvim',
  opts = {},
  dependencies = {
    'sirasagi62/tinysegmenter.nvim'
  },
}

上記の opts.extend_word_motions には、拡張したい Motion を指定します。何も設定しない場合、デフォルトで w, b, e, ge が指定されます。

option

拡張する Word motion を一部の Motion に限定できます。その場合 ~/.config/nvim/lua/plugins/extend_word_motion.luaopts に拡張したい Motion を指定します。

return {
  's-show/extend_word_motion.nvim',
  opts = {
    -- 拡張する Motion を `w`, `b`, `e` に限定
    extend_word_motions = { 'w', 'b', 'e' }
  },
  dependencies = {
    'sirasagi62/tinysegmenter.nvim'
  },
}

About

Neovim の Word motion を日本語の単語単位で動かすためのプラグイン

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published