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

:terminal 経由でインタラクティブな操作をするツールで enter が効かない #1103

Closed
heavenshell opened this Issue Sep 29, 2017 · 23 comments

Comments

Projects
None yet
7 participants
@heavenshell
Member

heavenshell commented Sep 29, 2017

質問・報告の内容

  1. Vim で terminal を起動
vim --clean
:terminal
  1. gof, peco, fzf などのツールを起動
$ ls | gof
  1. ファイル一覧の中から適当に選択し(選択候補が複数ある最初の位置が望ましい) enter キーをヒット
  2. カーソルが下に移動する(期待する動作はファイルが選択され、プロンプトに表示される)

注: 当然 Vim の :terminal 経由でないターミナルでは正常に動作します。

Vimのバージョン

Linux 8.01149
Mac 8.01098

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

  • Linux Ubuntu 16.04
  • macOS Sierra

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

(関係していそうなプラグインなどがあればココに書いてください)

その他

Vim の :terminal の問題なのか、インタラクティブな操作を行うツールの問題なのか切り分けができてないです。

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Sep 29, 2017

Member

これかな? vim/vim#1998

Member

k-takata commented Sep 29, 2017

これかな? vim/vim#1998

@heavenshell

This comment has been minimized.

Show comment
Hide comment
@heavenshell

heavenshell Sep 30, 2017

Member

おお、ありがとうございます!

発見した経緯としては vim-fz で MacVim(Terminal.app 経由)で Enter が効かない(Ubuntu では OK)ので :terminal 経由で gof を動かしたらどうなるんだ?というので発見したんですが、既知な問題なのですね…。
(vim-fz の問題はまた別かとは思いますが)

既知ということで閉じたほうがいいでしょうか?

Member

heavenshell commented Sep 30, 2017

おお、ありがとうございます!

発見した経緯としては vim-fz で MacVim(Terminal.app 経由)で Enter が効かない(Ubuntu では OK)ので :terminal 経由で gof を動かしたらどうなるんだ?というので発見したんですが、既知な問題なのですね…。
(vim-fz の問題はまた別かとは思いますが)

既知ということで閉じたほうがいいでしょうか?

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Sep 30, 2017

Member

直ってないですし、openのままでいいと思います。

Member

k-takata commented Sep 30, 2017

直ってないですし、openのままでいいと思います。

@k-takata k-takata added the kind/bug label Sep 30, 2017

@ichizok

This comment has been minimized.

Show comment
Hide comment
@ichizok

ichizok Oct 16, 2017

Member

https://github.com/vim/vim/blob/6daeef1933be68055aabe1d55f8467d46a707753/src/terminal.c#L1550-L1556

	    /* Get the current backspace and enter characters of the pty. */
	    if (get_tty_info(fd, &info) == OK)
	    {
		term_backspace_char = info.backspace;
		term_enter_char = info.enter;
		term_nl_does_cr = info.nl_does_cr;
	    }

https://github.com/vim/vim/blob/6daeef1933be68055aabe1d55f8467d46a707753/src/terminal.c#L756

	case CAR:		c = term_enter_char; break;

ここ、ICRNL (と ONLCR) の変換を Vim 側で処置する必要ないように思うんですが...
これ消せば直るんじゃないでしょうか?

https://github.com/vim/vim/compare/master...ichizok:fix/term-enter-key.diff

Member

ichizok commented Oct 16, 2017

https://github.com/vim/vim/blob/6daeef1933be68055aabe1d55f8467d46a707753/src/terminal.c#L1550-L1556

	    /* Get the current backspace and enter characters of the pty. */
	    if (get_tty_info(fd, &info) == OK)
	    {
		term_backspace_char = info.backspace;
		term_enter_char = info.enter;
		term_nl_does_cr = info.nl_does_cr;
	    }

https://github.com/vim/vim/blob/6daeef1933be68055aabe1d55f8467d46a707753/src/terminal.c#L756

	case CAR:		c = term_enter_char; break;

ここ、ICRNL (と ONLCR) の変換を Vim 側で処置する必要ないように思うんですが...
これ消せば直るんじゃないでしょうか?

https://github.com/vim/vim/compare/master...ichizok:fix/term-enter-key.diff

@rhysd

This comment has been minimized.

Show comment
Hide comment
@rhysd

rhysd Oct 16, 2017

Member

同根か分からないですが,MacVim の :terminal で,zsh 上で Enter を押すと zshrc で Ctrl+j に割り当てているキーバインドが発動してしまう症状を確認しています.カーソルが下に移動するのは Ctrl+j と扱われているからなのかも…?上の @ichizok さんのパッチはちょっと時間ある時に試してみようと思います.

Member

rhysd commented Oct 16, 2017

同根か分からないですが,MacVim の :terminal で,zsh 上で Enter を押すと zshrc で Ctrl+j に割り当てているキーバインドが発動してしまう症状を確認しています.カーソルが下に移動するのは Ctrl+j と扱われているからなのかも…?上の @ichizok さんのパッチはちょっと時間ある時に試してみようと思います.

@tyru

This comment has been minimized.

Show comment
Hide comment
@tyru

tyru Oct 16, 2017

Member

自分もこれと類似した事象に出くわしました。
vim の :terminal 内で git commit して起動した vim 内で :wq<CR> とタイプしても、:wq のままエンターが認識されませんでした (しょうがないので <Esc>ZZ して保存・終了させました)。
vim ならコマンドラインで <CR> が来ても <C-j> が来ても :wq が実行されるはずなので、何か違う原因による事象のような気もしますが、よろしくお願いします。

Member

tyru commented Oct 16, 2017

自分もこれと類似した事象に出くわしました。
vim の :terminal 内で git commit して起動した vim 内で :wq<CR> とタイプしても、:wq のままエンターが認識されませんでした (しょうがないので <Esc>ZZ して保存・終了させました)。
vim ならコマンドラインで <CR> が来ても <C-j> が来ても :wq が実行されるはずなので、何か違う原因による事象のような気もしますが、よろしくお願いします。

@tyru tyru closed this Oct 16, 2017

@tyru tyru reopened this Oct 16, 2017

@tyru

This comment has been minimized.

Show comment
Hide comment
@tyru

tyru Oct 16, 2017

Member

すみません、間違えて閉じちゃいました…

Member

tyru commented Oct 16, 2017

すみません、間違えて閉じちゃいました…

@tyru

This comment has been minimized.

Show comment
Hide comment
@tyru

tyru Oct 16, 2017

Member

ちなみに 100% 再現する訳ではありませんでした。
再現する場合としない場合で操作が違った可能性もあるので今度再現したらまた報告します。

Member

tyru commented Oct 16, 2017

ちなみに 100% 再現する訳ではありませんでした。
再現する場合としない場合で操作が違った可能性もあるので今度再現したらまた報告します。

@heavenshell

This comment has been minimized.

Show comment
Hide comment
@heavenshell

heavenshell Oct 17, 2017

Member

普段使いが zsh なんですが、bash にして Vim(MacVim) を Terminal.app で起動し、:terminal bash すると、Enter で カーソルが下に移動しないですね。

zsh から MacVim を起動して同様の動作をしたんですが、再現する場合と再現しない場合があってよく分からない…。

@ichizok さんのパッチは時間が出来た時に試してみます。

Member

heavenshell commented Oct 17, 2017

普段使いが zsh なんですが、bash にして Vim(MacVim) を Terminal.app で起動し、:terminal bash すると、Enter で カーソルが下に移動しないですね。

zsh から MacVim を起動して同様の動作をしたんですが、再現する場合と再現しない場合があってよく分からない…。

@ichizok さんのパッチは時間が出来た時に試してみます。

@ichizok

This comment has been minimized.

Show comment
Hide comment
@ichizok

ichizok Oct 17, 2017

Member

@tyru cmap <C-j> で何か設定されてませんか?

Member

ichizok commented Oct 17, 2017

@tyru cmap <C-j> で何か設定されてませんか?

@tyru

This comment has been minimized.

Show comment
Hide comment
@tyru

tyru Oct 17, 2017

Member

あ!すみません、lmap <C-j> に eskk.vim のマッピングがしてあります。

Member

tyru commented Oct 17, 2017

あ!すみません、lmap <C-j> に eskk.vim のマッピングがしてあります。

@tyru

This comment has been minimized.

Show comment
Hide comment
@tyru

tyru Oct 19, 2017

Member

あー lmap だけじゃなく cmap もありますね。
<C-j> が送られてたら上記のような動作になりますね。

Member

tyru commented Oct 19, 2017

あー lmap だけじゃなく cmap もありますね。
<C-j> が送られてたら上記のような動作になりますね。

@k-takata

This comment has been minimized.

Show comment
Hide comment
@k-takata

k-takata Oct 30, 2017

Member

ここ、ICRNL (と ONLCR) の変換を Vim 側で処置する必要ないように思うんですが...
これ消せば直るんじゃないでしょうか?

vim_devに投げちゃって様子を見てはどうでしょうか。問題報告が複数上がっているようですし。

Member

k-takata commented Oct 30, 2017

ここ、ICRNL (と ONLCR) の変換を Vim 側で処置する必要ないように思うんですが...
これ消せば直るんじゃないでしょうか?

vim_devに投げちゃって様子を見てはどうでしょうか。問題報告が複数上がっているようですし。

@heavenshell

This comment has been minimized.

Show comment
Hide comment
@heavenshell

heavenshell Nov 1, 2017

Member

遅くなってすみません。パッチを試してみました。
@ichizok さんに書いていただいたパッチでいけそうです。

パッチ適応前
none_patch

パッチ適応後
patch

Member

heavenshell commented Nov 1, 2017

遅くなってすみません。パッチを試してみました。
@ichizok さんに書いていただいたパッチでいけそうです。

パッチ適応前
none_patch

パッチ適応後
patch

@ichizok

This comment has been minimized.

Show comment
Hide comment
@ichizok

ichizok Nov 2, 2017

Member

投げてみました。
vim/vim#2278

Member

ichizok commented Nov 2, 2017

投げてみました。
vim/vim#2278

@heavenshell

This comment has been minimized.

Show comment
Hide comment
@heavenshell

heavenshell Nov 3, 2017

Member

ありがとうございます!!!

Member

heavenshell commented Nov 3, 2017

ありがとうございます!!!

@rhysd

This comment has been minimized.

Show comment
Hide comment
@rhysd

rhysd Nov 4, 2017

Member

遅くなってしまってすみませんが, @ichizok さんのパッチを試してみたところ私の zsh で Enter が C-j と認識されている問題も起きなくなることを確認しました.

Member

rhysd commented Nov 4, 2017

遅くなってしまってすみませんが, @ichizok さんのパッチを試してみたところ私の zsh で Enter が C-j と認識されている問題も起きなくなることを確認しました.

@h-east

This comment has been minimized.

Show comment
Hide comment
@h-east

h-east Nov 5, 2017

Member

Bram氏が ichizok さんのとは違うソリューションのpatchを書きました。こちらで確認をお願いします。

8.0.1261
vim/vim@1232624

追記: :term tig statusで試したら直ってますね👍

Member

h-east commented Nov 5, 2017

Bram氏が ichizok さんのとは違うソリューションのpatchを書きました。こちらで確認をお願いします。

8.0.1261
vim/vim@1232624

追記: :term tig statusで試したら直ってますね👍

@rhysd

This comment has been minimized.

Show comment
Hide comment
@rhysd

rhysd Nov 5, 2017

Member

8.0.1267 で試してみたのですが,zsh の問題は解決していませんでした.Enter や C-m が C-j だと認識されてしまいます.

Member

rhysd commented Nov 5, 2017

8.0.1267 で試してみたのですが,zsh の問題は解決していませんでした.Enter や C-m が C-j だと認識されてしまいます.

@k-takata

This comment has been minimized.

Show comment
Hide comment

@k-takata k-takata closed this Nov 9, 2017

@k-takata k-takata added the xlose/fixed label Nov 9, 2017

@mattn

This comment has been minimized.

Show comment
Hide comment
@mattn

mattn Nov 10, 2017

Member

やったー

Member

mattn commented Nov 10, 2017

やったー

@heavenshell

This comment has been minimized.

Show comment
Hide comment
@heavenshell

heavenshell Nov 10, 2017

Member

わーい! @ichizok さんありがとうございます!!

Member

heavenshell commented Nov 10, 2017

わーい! @ichizok さんありがとうございます!!

@h-east

This comment has been minimized.

Show comment
Hide comment
@h-east

h-east Nov 10, 2017

Member

@heavenshell さん報告の件は Vim 8.0.1261 でfixされていますよ。

Member

h-east commented Nov 10, 2017

@heavenshell さん報告の件は Vim 8.0.1261 でfixされていますよ。

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