y コマンドの設定する編集末尾位置マーク '] に一貫性がない #963

Closed
machakann opened this Issue Oct 4, 2016 · 5 comments

Projects

None yet

3 participants

@machakann
machakann commented Oct 4, 2016 edited

質問・報告の内容

例えば次のようなバッファの a の上にカーソルがあるとき、yw とすると '] マークは [0, 1, 5, 0] の位置になりますが、これより一文字短いだけのはずの ye を使うと '] マークは [0, 1, 3, 0] の位置になります。

abc def

ye コマンドに期待したのは [0, 1, 4, 0] だったのですが、 '] マークの扱いはモーションによって違うものなのでしょうか?

Vimのバージョン

8.0.21

OSの種類/ディストリ/バージョン

  • Windows 10 Pro 64bit
@h-east
Member
h-east commented Oct 4, 2016

yeの時は[0, 1, 3, 0]であっていると思います。
vwveすると分かりやすいかと。

@machakann

モーションが inclusive か exclusive かは考慮されないということでしょうか?

@machakann
machakann commented Oct 4, 2016 edited

すいません、言葉がたりなかったかもしれません。'[ および '] マークはヤンクした箇所の先頭および末尾位置とヘルプにあるのですが、yw の場合は abc<space> の四文字ヤンクして末尾位置が [0, 1, 5, 0] なのに yeabc の三文字ヤンクして末尾位置が [0, 1, 3, 0] になるのが変な感じがしたのでお聞きしようかと思いました。

@h-east
Member
h-east commented Oct 4, 2016 edited

詳細な説明ありがとうございます。
ヘルプの記述と現状の動作で無理やりつじつま合わせて説明してみます😊

wコマンドは exclusive。ywは最後の位置がdでそれをオペレータの対象に含めない。
対象はabc(cの後ろはスペース)なので最後のヤンク位置は[0, 1, 4, 0]だけど、exclusiveだからその隣の[0, 1, 5, 0]に移動。

eコマンドはinclusive。ywは最後の位置がcでそれをオペレータの対象に含める。
対象はabcなので最後のヤンク位置は[0, 1, 3, 0]でinclusiveなのでそのまま[0, 1, 3, 0]に移動。

つまり']がinclusive かexclusive かを考慮するのが正しいとすれば現状の挙動はおかしくはないのかな。って思いました。
加えて、']は変更 or ヤンクのコマンドを打った直後のカーソル位置に移動したほうが整合が取れている気がします。

@machakann

ありがとうございます、そういうもののような気がしてきました。閉じます。

@machakann machakann closed this Oct 4, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment