vim-jp / issues

有志で既知のバグや要望を検討・管理し、オフィシャルへの還元をしていきます。
https://vim-jp.org/
341 stars 11 forks source link

ターミナル・ウィンドウからコマンドラインに移動したときのmode(1)の返り値 #1425

Closed iranoan closed 1 year ago

iranoan commented 1 year ago

質問の内容

同じコマンドラインモードでも通常のウィンドウからとターミナルウィンドウからの移動で、mode(1) の返り値が変わります これは仕様なのでしょうか?

具体的な再現方法としては、

vim -u NONE +'cnoremap <expr> : mode(1)' +terminal

などで適当なキーにマップすると、通常のウィンドウからの時は 'c' に、ターミナルウィンドウからの時は 't' に成ります

Vimのバージョン

$ vim --version VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Aug 22 2023 20:05:48) 適用済パッチ: 1-1778 Compiled by xxx@xxx Huge 版 with GTK3 GUI. 機能の一覧 有効(+)/無効(-)

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

$ cat /etc/os-release PRETTY_NAME="Ubuntu 23.04" NAME="Ubuntu" VERSION_ID="23.04" VERSION="23.04 (Lunar Lobster)" VERSION_CODENAME=lunar ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=lunar LOGO=ubuntu-logo $ uname -a Linux xxx 6.2.0-27-generic #28-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 12 22:39:51 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

h-east commented 1 year ago

ご存じだと思いますが、ターミナルモードは Terminal-Jobモードと Terminal-Normalモードの2つあります。 :terminalを実行した直後はTerminal-Jobモードです。キーはjobに送られます。 Terminal-Jobモードで<C-W>Nすると、Terminal-Normalモードに移行します。(mode(1)はnt) Terminal-Normalモードで a 等を入力すると、Terminal-Jobモードに移行します。(mode(1)はt)

Terminal-Jobモードで<C-W>:するとmode(1)はtを返しますね。 Terminal-Normalモードで:するとmode(1)はcを返しますね。

Terminal-Jobモードで<C-W>:した時はmode(1)はctを返すようにした方がいいのでしょうかね?

h-east commented 1 year ago

Terminal-Jobモードで:した時はmode(1)はctを返すようにした方がいいのでしょうかね?

でもそうなると、mode()は c を返すようにしないといけなくなりますね。

iranoan commented 1 year ago

Terminal-Normalモードで確認していませんでした

でもそうなると、mode()は c を返すようにしないといけなくなりますね。

やれることの基本はコマンドラインモードなので、それが自然に感じるのですが、既存のプラグインのことお考えると良くないのかな?

mode(1)の時 tc を返すなら、影響も少ないのかな?

h-east commented 1 year ago

testコードを見てみたんですが、terminal-*中のコマンドライン中のテストはしていないようです。 あろ、本家のIssueを検索したけど関連するものは見つからなかったです。

なので誰もこのシチュエーションでmode()を使っていないのでは? と言うことで、 Terminal-Jobモードで<C-W>:した時、

という変更を提案するのはアリだと思います。

@iranoan さんが本家にIssue建ててみます?

iranoan commented 1 year ago

修正されたので閉じます h-eastさん、本家でもフォローしていただき有難うございました