New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

端末機能で起動したzshにクリップボードから貼り付けると~が入ったり最後の文字が大文字になったりする #1117

Closed
itchyny opened this Issue Nov 14, 2017 · 8 comments

Comments

Projects
None yet
3 participants
@itchyny

itchyny commented Nov 14, 2017

質問・報告の内容

  • echo hello をクリップボードに入れておく
  • :terminalzsh を起動
  • クリップボード貼り付け
  • echo hello~ となる
  • bindkey -v とする
  • クリップボード貼り付け
  • echo hellO となる

Vimのバージョン

8.0.1290

( :version で確認できます)

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

  • macOS Sierra
  • zsh 5.4.2
  • zshrcは空です
  • Terminal.app (iTerm2でも再現する)

使用している or 関係していそうなプラグイン

なし

その他

  • 貼り付けてすぐにenterを押すとhelloと表示されます (正常に見える)
  • :terminal bash on Vim on zsh on Terminal.app では再現しません。zshと相性が悪い?
@hattya

This comment has been minimized.

Show comment
Hide comment
@hattya

hattya Nov 14, 2017

Member

~ が入るのは Bracketed Paste Mode に対応した端末エミュレーターならどれでも再現できそうです。

RLogin で Linux に SSH 接続して試してみたら再現しました。

Member

hattya commented Nov 14, 2017

~ が入るのは Bracketed Paste Mode に対応した端末エミュレーターならどれでも再現できそうです。

RLogin で Linux に SSH 接続して試してみたら再現しました。

@hattya

This comment has been minimized.

Show comment
Hide comment
@hattya

hattya Nov 14, 2017

Member

:terminal zsh で起動後、unset zle_bracketed_paste とすれば ~ は入らなくなりますが…。

Member

hattya commented Nov 14, 2017

:terminal zsh で起動後、unset zle_bracketed_paste とすれば ~ は入らなくなりますが…。

@itchyny

This comment has been minimized.

Show comment
Hide comment
@itchyny

itchyny Nov 15, 2017

再現確認ありがとうございます。以下の設定でひとまず運用しようと思います。

if ! [ -z "$VIM" ]; then
  unset zle_bracketed_paste
fi

itchyny commented Nov 15, 2017

再現確認ありがとうございます。以下の設定でひとまず運用しようと思います。

if ! [ -z "$VIM" ]; then
  unset zle_bracketed_paste
fi
@ichizok

This comment has been minimized.

Show comment
Hide comment
@ichizok

ichizok Nov 15, 2017

Member

CSI [201~ の送信タイミングがおかしいようです。
ペースト内容の最後に付加されるべきところ、ペースト後のユーザ入力と一緒に送信され、echo back で分断されて単なる ~ になっていました。

in << CSI [200~ echo hello
out>> echo hello
in << CSI [201~
out>> ~

https://github.com/vim/vim/compare/master...ichizok:fix/terminal-bracketed-paste.diff

Member

ichizok commented Nov 15, 2017

CSI [201~ の送信タイミングがおかしいようです。
ペースト内容の最後に付加されるべきところ、ペースト後のユーザ入力と一緒に送信され、echo back で分断されて単なる ~ になっていました。

in << CSI [200~ echo hello
out>> echo hello
in << CSI [201~
out>> ~

https://github.com/vim/vim/compare/master...ichizok:fix/terminal-bracketed-paste.diff

@itchyny

This comment has been minimized.

Show comment
Hide comment
@itchyny

itchyny Nov 15, 2017

ありがとうございます。パッチをあてて問題直っていることを確認しました。すごい。

itchyny commented Nov 15, 2017

ありがとうございます。パッチをあてて問題直っていることを確認しました。すごい。

@ichizok

This comment has been minimized.

Show comment
Hide comment
@ichizok

ichizok Nov 16, 2017

Member

vim/vim#2341
投げました。

Member

ichizok commented Nov 16, 2017

vim/vim#2341
投げました。

@ichizok

This comment has been minimized.

Show comment
Hide comment
@ichizok
Member

ichizok commented Nov 16, 2017

8.0.1299
vim/vim@a42ad57

@ichizok ichizok closed this Nov 16, 2017

@ichizok ichizok added the xlose/fixed label Nov 16, 2017

@itchyny

This comment has been minimized.

Show comment
Hide comment
@itchyny

itchyny Nov 16, 2017

ありがとうございました!

itchyny commented Nov 16, 2017

ありがとうございました!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment