#author("2026-09-01T16:56:50+09:00","","")
#author("2026-09-01T17:19:59+09:00","","")
* motion webs [#fbad9216]

** motion webs 仕様2 [#v275b54b]

- motion command "W|E|B|(|)"を置き換える

***"(|)" [#m19dc37b]

- カーソル位置の文字種類によらず文の先頭で止まる
-- ただし空行があれば空行で止まる: vimの動き
- ".|!|?" + white space(1個以上の繰り返し)が文の終端
- sentense_set + white space(0個以上の繰り返し)が文の終端
-- sentense_setはsetupで変更可能
-- sentense_setの省略値は"。.!?។"
-- "។"はKhmer語の句点
- white spaceにはU+3000(IDEOGRAPHIC SPACE)を含む(以下同様)

*** "W|E|B" [#fcd7645f]

"W|E|B"はカーソル位置の文字種類によって動作が変わる
- カーソル位置がword_chars以外(word_chars:CJK, Khmer, ...)
-- 通常のvimのコマンドと同じ動きをする(white spaceの次)
-- ただし、word_charsとの境界で止まる

 "abc日本語" で先頭にカーソルがある場合: "W"で"日"へ、"E"で"c"へ


- カーソル位置がword_charsの場合
-- wordlength+1以内にword_chars以外(または" ")があればword_chars以外で止まる
-- ("W"の場合word_cahrs以外で止まり、"E"の場合word_charsで止まる)
-- wordlength+1以内にword_chars以外がなければwordlength+1で止まる
-- ただし、white spaceは飛ばしてwhite space以外の文字で止まる
-- wordlengthはsetupで変更可能
-- wordlengthの省略値は"5"
-- Eの場合はWと同じだが一つ手前で止まる
-- 空行があれば空行で必ず止まる
-- white spaceは飛ばしてwhite spaceでは止まらない

** motion webs 仕様 [#v275b54b]

- motion command "W|E|B|(|)"を置き換える
- "(|)" の場合
-- カーソル位置の文字種類によらず次の動作をする
-- ".|!|?" + white space を探してその次の文字で止まる: vimの動き
-- 空行があれば空行で止まる: vimの動き
-- sentense_setの文字と一致すればその次で止まる
-- sentense_setはsetupで変更可能
-- sentense_setの省略値は"。.!?។"(文の終端記号)
-- "។"はKhmer語の句点ですが、他に登録するものはありますか。"¿"とか?
- "W|E|B"はカーソル位置の文字種類によって動作が変わる
- カーソル位置がword_chars以外(word_chars:CJK, Khmer, ...)
-- 通常のvimのコマンドと同じ動きをする(white spaceの次)
-- ただし、word_charsとの境界で止まる("日本語English”の場合"W"なら"E","E"なら"語"で止まる)
- カーソル位置がword_charsの場合
-- wordlength+1以内にword_chars以外(または" ")があればword_chars以外で止まる
-- ("W"の場合word_cahrs以外で止まり、"E"の場合word_charsで止まる)
-- wordlength+1以内にword_chars以外がなければwordlength+1で止まる
-- ただし、white spaceは飛ばしてwhite space以外の文字で止まる
-- wordlengthはsetupで変更可能
-- wordlengthの省略値は"5"
-- Eの場合はWと同じだが一つ手前で止まる
-- 空行があれば空行で必ず止まる
-- white spaceは飛ばしてwhite spaceでは止まらない

** 現状 [#l81f4391]

日本語を書いている時にはmotion WEB()はほとんど役に立たない

日本語にカーソルがある時はWEB()の働きを変えたらどうか?

|key|en|jp|
|w|next word first|o|
|W|next not-blank first|x|
|b|prev word first|o|
|B|prev not-blank first|x|
|e|next word end|o|
|E|next not-blank end|x|
|)|next .|x|
|(|prev .|x|

- [[jasegment.vim:https://gist.github.com/deton/5138905?utm_source=chatgpt.com]]
- [[motion_ja.vim:https://gist.github.com/deton/motion_ja.vim]]
- digraphs <C-K>wo, <C-K>._, <C-K>,_, <C-K>a5

** 現状の")", "(" [#c8420675]

- ".!?"の後に行末、空白・タブ

** 目標 [#v96f5c34]
- hl: 細かく動かす
- web: 少し大きく動かす
- - WEB: ちょっと大きく動かす
-- 次の記号(漢字、ひらがな、カタカナ以外)
-- n(=7)文字以内に記号がなければn, n+1
- (): 前後の文に移動する:
-- 。!?改行(ただし"、|,"で終わるのはだめ)
- []:前後の段落に移動する

Front page   Edit Diff History Attach Copy Rename Reload   New Page list Search Recent changes   Help   RSS of recent changes