🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

Q&A

解決済

2回答

889閲覧

vim 開いたウィンドウが正常に閉じない

mochmoch

総合スコア39

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

0グッド

0クリップ

投稿2021/03/11 06:28

編集2021/03/18 11:44

開いたウィンドウが正常に閉じない

vimの:termなどで新しいウィンドウを開いた後、閉じようとすると正常にウィンドウが消えない問題が発生しています。
以下のgifのような状態です。(画像が小さかったらごめんなさい)
発生状況

以下のことがわかっています。

  • .pyファイルを開いた時、:splitなどで分割したウィンドウで開いたターミナルが正常に閉じない
    • .rbファイルなどの他の拡張子では発生しません。
    • 閉じられないウィンドウはctrl cで消すことができます。
    • ターミナル以外も分割をするプラグイン全般も同じく閉じられません。
    • 単にsplitしたウィンドウ(:termをしていない)は正常に閉じられます。
      • vimの範囲を超えた動作(terminalなど)をしたウィンドウが閉じられないと考えています。

 

  • dotfilesでシェルの設定を同期している他マシンでは発生しません。

いろいろ調べてみましたが完全にお手上げ状態なので詳しい方のお力をお借りしたいです。

試してみたこと

  • vimの設定を退避した
    • プラグインや設定の問題かと思いましたが素のvimでも同様の問題が発生しました。
  • vimを入れ直した
    • # pacman -S vimで入れたvimも$ yay -S gvimで入れたvimでも同様に発生します。
    • 他マシンとvimのバージョンを合わせましたが改善しませんでした。
  • termで起動するシェルの変更
    • fishがbashrcの末尾のexec fishで呼び出しているので:set zshで呼び出すシェルをbashを経由しないzshに変えましたが同じく閉じられませんでした。

バージョン

VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Feb 09 2021 23:51:55)
適用済パッチ: 1-2489
Compiled by Arch Linux
Huge 版 without GUI.

os: manjaro linux x86_64
pc: thinkpad x270

追記

色々ためした結果わかってきたことを追記します

  • .pyだけでなく*.pywなどでも問題が発生する

filetype.vimsetf pythonとなっているものはすべてこの問題が発生するようです。

  • :set filetype=pythonとすると.rbなどでも問題が発生する

filetype.vim内でのpythonに関する部分の抜粋を添付します。

filetype.vim

au BufNewFile,BufRead *.cpy \ if getline(1) =~ '^##' | \ setf python | \ else | \ setf cobol | \ endif ~~~ au BufNewFile,BufRead *.py,*.pyw,.pythonstartup,.pythonrc setf python au BufNewFile,BufRead *.ptl,*.pyi,SConstruct setf python

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

正直なところ原因については何も見当がつかないのですが、問題切り分けのヒントになるかもしれないことを回答してみます。

vimの設定を退避した

とありますが、完全に退避すると defaults.vim が読み込まれ、調査を阻害する可能性があります。完全に設定なしで起動するために、vim -u NONE -i NONE -N を使ってみてください。これは設定やプラグインを読み込まずに Vim を起動するものなので、設定の退避は不要です。

もしこれで発生しなくなった場合、.py ファイルを開いた時のみ発生する、とのことなので、filetype プラグインが悪さをしている可能性があります。その場合、vimrc に filetype plugin indent on を記述すると再現するかもしれません。そうであった場合はほぼ確定なので、Python の filetype プラグインが何かしていないかを調べていくと良さそうです。

投稿2021/03/17 21:33

thinca

総合スコア1864

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mochmoch

2021/03/18 11:44 編集

> 完全に設定なしで起動するために、vim -u NONE -i NONE -N を使ってみてください このコマンドで`foo.py`を開くと正常にターミナルが閉じられました。 また、この状態で`:set filetype=python`をしてもターミナルは閉じられます。 > その場合、vimrc に filetype plugin indent on を記述すると再現するかもしれません 私の理解力が足りなくて申し訳ないのですが、ここでのvimrcは 1, 問題が発生しているPCでのvimrc(既に書き込んである) 2. 〃(元のvimrcを退避したあとに作った空のvimrc) 3. 問題が発生していない別のPCのvimrc のどれを意味しているのでしょうか?
thinca

2021/03/19 04:27

2 番です。わかりづらくてすみません。 あるいは、完全に設定なしで起動した後、コマンドラインから :filetype plugin indent on を実行し、その後 :e xxx.py でファイルを開くのでも大丈夫です。
mochmoch

2021/03/19 10:15

`vim -u NONE -i NONE -N`で起動したvimで`:filetype plugin indent on`を実行し`:e foo.py`を開いたところ問題は発生しませんでした `~/.vimrc`に`filetype plugin indent on`のみを書き、`vim foo.py`をしたところ問題が発生しました。 もしかしてと思い`~/.vim`を退避させたところ問題が発生しませんでした。 なので、`~/.vim`内のファイルで他マシンと同期していない何かが悪さをしているのだと思います。 もう少し調査をしてみてわからなければ追記します。 ありがとうございました。
guest

0

自己解決

原因は過去に入れたKiteのプラグインだと思われます。
アプリケーションのKiteを消した(多分消し方がよくなかったのかもしれません)後も.vim内に.vim/packとして残っていてそれが悪さをしてウィンドウが消えなくなっていたみたいです(具体的にkiteの中のどれが原因だったかはよくわかってません)
mv ~/.vim/pack ~/pack.orgなどで退避し問題が解消することの確認、退避したものを戻したところ再現できたので間違いないかと思います。

投稿2021/03/19 10:37

mochmoch

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問