1行の文字列が、折り返しで2行になっているときのカーソル移動

  1. 例えば
    0123456789
    という文字列があって、折り返し表示によって
    01234
    56789
    と、見た目が2行になっているときに問題が発生します

    カーソルが2行目の先頭、つまり5の前にあるときにカーソルを左に移動すると、1行目の4の後ろに移動します
    折り返しで2行に表示されているだけなので、本来なら4の前にカーソルが移動しなければならないはずです
    その為、範囲選択で45を選択しようとすると、本来ならカーソル移動は2回で済むはずなのに、3回移動しなければなりません

    カーソルを2行目の先頭に置き、バックスペースで削除すると4が消えます
    つまり、上記動作と異なる挙動をします

     |  かずら  |  返信
  2. そうですね、これは仕様です。

    01234
    56789

    確かに 4 の右側へのカーソル移動ができるエディターは少ないですね。

    折り返しを挟んだ行末 (4 の直後) と行頭 (5 の直前) は座標としては同じなので、1 行目の行末と 2 行目の行頭を別々に移動するのは実装が難しいと言われます。(秀〇エディタさんはマウスを使えば移動できましたが、キーボードでは無理でした)

    > 折り返しで2行に表示されているだけなので、本来なら4の前にカーソルが移動しなければならないはずです

    そうでもなくて、例えば良くあるシーンで 4 の直後に改行を入れたい場合に 4 の右側にカーソルが移動できないと困りませんか?

    一応、5 の左側で改行を入れれば良いわけですが、これは直観的には分かりづらいですよね。

    他にも、例えば禁則処理を挟んだ折り返しの場合です。

    4 の右側 (折り返しを挟んだ行末) にカーソルが来れないエディターですと、折り返しを挟んだ行頭 (5 の左側) で禁則 (ぶら下げ) 文字を入力したときに、入力した文字は 4 の右側に入力されつつ、カーソルは 5 の左側に残ったまま、という状況が発生するので美しくありません。

    あいうえおあいうえおあいうえお
    |あいうえおあいうえおあいうえお

    ↑ 右端で折り返しとして、| がカーソル位置、ここで "。" を入力します。

    あいうえおあいうえおあいうえお。
    |あいうえおあいうえおあいうえお

    ↑ 折り返しを挟んだ行末にカーソルが移動できないエディターは、カーソル位置がそのままで前の行に "。" が入力されるので「ほへ?」ってなります。

    あいうえおあいうえおあいうえお。|
    あいうえおあいうえおあいうえお

    ↑ Mery は直前の行の末尾にカーソルが移動されるので分かりやすいと思います。

    こんな感じで、テキストの編集においてはカーソルが移動できないよりは移動できたほうがメリットのほうが多いと思います。

    まぁ、一般的な仕様を採用するって言ってたやろ!と言われると弱いので、ご要望が多ければ仕様変更も検討してみたいと思います。

     |  Kuro  |  返信
  3. > そうでもなくて、例えば良くあるシーンで 4 の直後に改行を入れたい場合に 4 の右側にカーソルが移動できないと困りませんか?

    いえ、まったく

    > 一応、5 の左側で改行を入れれば良いわけですが、これは直観的には分かりづらいですよね。

    現状の方が直感的に分かりづらいです
    仮に分かりにくかったとしても、そんな限定的な場面に出くわす確率で考えれば、些細な問題でしょう

    > まぁ、一般的な仕様を採用するって言ってたやろ!

    一般的な仕様がなにを示すのかは分かりません
    客観的に見て不具合だと思ったので、報告したまでです
    作者が「仕様だ」というならば、ユーザーは受け入れるしかないので、問題ありません
    元フリーアプリ制作者なので、その辺は割り切れます

     |  かずら  |  返信
  4. Ver.3.2.3にて
    カーソル移動の件、確認しました
    対応ありがとうございました
    これで「一文字足りない!」が解消されました

     |  かずら  |  返信
スポンサーリンク