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

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

詳細はこちら
Vim

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

解決済

2回答

1566閲覧

vimプラグインのnerdtreeを用いてdropbox上でエクスプローラ起動によるスワップファイル生成を抑止したい。

chesscommands

総合スコア26

Vim

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

0グッド

0クリップ

投稿2021/03/21 14:41

編集2021/04/22 03:05

前提・実現したいこと

プラグイン"scrooloose/nerdtree"を導入し、:NERDTreeToggleを実行することで、左ペインにエクスプローラが起動する。

このとき、開いたファイルがDropbox上でエクスプローラを起動した場合、.NERD_tree_1.swpと言うスワップファイルが生成され、エクスプローラを閉じても削除されず、残ったままになる。
この状態で再度エクスプローラを起動した場合、すでにスワップファイルが存在する警告が表示され、.NERD_tree_1.swoが新たに作られ、そしてエクスプローラを終了しても削除されずに残ったままになる。
※エディタを閉じても削除されない。

これを解決したい。

問題の延長

今回のプラグインにより、エクスプローラが起動し、ふとしたときにエクスプローラが閉じず、もう一つエクスプローラが起動してしまい、.NERD_tree_2.swpが生成されることがある。
これもどのような条件で2つのエクスプローラが起動するのかわからない。

別問題?

また、dropbox上での話の延長として、.VS.Vim.Buffer% 1% VS.Vim.Buffer.Default.swpというスワップファイルが生成されることもあり、これは再現性がなく、いつ作られるのか全く不明である(そして消えない)。
これも抑止したい。
これは、どのプラグインが出しているかも突き止められないでいる。

前提

ファイルをDropbox以外に移動させての変更は考えていない。
また、スワップファイルの生成を止めることも考えていない。
その理由は、Dropboxをファイルサーバの感覚で使っているため、ファイルを開いた場合、異なる端末ではすでに開かれている警告を出したいため。

条件

Windows限定のような気がする。

試したこと

※他のプラグインを削除し、これだけにしたが駄目だった(k-takata/minpacだけは残している)。

解決策として2つある。

  1. このプラグインを使わない。
  2. Dropbox上でファイルを開いたときに、(このプラグインを使った)エクスプローラを起動しない。

しかし、どちらも根本的な解決になっておらず、原因は他にあると思っているが、見つけられないでいる。
この現象は他の人に見られないようで、探しても出てこなかった。

普通のデスクトップ上のファイルではこの現象が発生しなかった。

補足情報(FW/ツールのバージョンなど)

vim8.2(2019 Dec 12)
プラグイン:https://github.com/preservim/nerdtree/commit/f63fb6984f9cd07cf723c3e2e20f6ccc0aad48c2
WindowsOS10
Dropbox v118.4.460

バッファ切り替えのスワップファイル

set switchbuf=usetabを設定してますが、バッファを切り替えたときに、スワップファイルも切り替わってしまう。
私の予想では、バッファになったとしてもずっと存在している想定だった。
私の設定に問題があるのだろうか(ファイルサーバでの作業で困る)。
これは解決しなくてもいいのだが、とにかく、プラグインに引きずられて普通にファイルを開けないのは解決したい。
helpの日本語説明を読解できないのも問題かもしれないが・・・。

解決に向けての試行錯誤

Millyさんからいただいた返答を元に、
:noswapfile NERDTreeToggle
をvimrcに設定後、導入済みのプラグインの組み合わせで、ゴミスワップファイル生成の条件を確認した。

個別のスワップファイル生成条件

複数あるプラグインの一つとして、mattn/vim-findrootを導入したところ、スワップファイルが生成されるようになった。
他のプラグイン(ほぼ)単体での導入では、ゴミスワップファイル生成をしなかった。
このプラグインに問題があるとは言えず、このプラグインを導入せず、他のプラグインを一斉に導入した場合に、ゴミスワップファイル生成する。
個別の時は生成しないのに、まとめて導入した場合、生成するようになる。
なぜだ。

仕方ないので、諦めた。

以上。

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

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

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

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

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

guest

回答2

0

自己解決

「Dropbox上で動かさないこと」
もしくは、
「対象プラグインの利用を諦める。」

気づけば、解決されていた。

プラグイン更新で、現象を解消できるようだ。

現時点でのNERDTreeのバージョンは、6.10だった。

以上。

投稿2021/05/22 01:42

編集2021/07/02 07:40
chesscommands

総合スコア26

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

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

0

:noswapfile を利用してはどうでしょうか。

:nos[wapfile] {command} :nos :noswapfile
{command} を実行する。それが新しいバッファを読み込むコマンドを
含んでいる場合は、スワップファイルは作成されずに読み込まれ、
'swapfile' オプションはリセットされる。バッファが既にスワップ
ファイルを持っていた場合は、スワップファイルは削除されず、
'swapfile' はリセットされない。

例:

vim

1" 直接実行する 2:noswapfile NERDTreeToggle 3 4" コマンドを作る 5command! -n=? -complete=dir -bar NERDTreeToggleNS :noswapfile NERDTreeToggle <args>

NERDTree のバッファでは swap は不要のため、バッファが作られたsetlocal noswapfile が実行されています。
しかし、バッファが作られた時点ですでに swap ファイルが生成されているため、Dropbox に送信されてしまっている(削除までの時間が短すぎて削除のほうは認識されていない?)のではないでしょうか。

投稿2021/04/20 05:12

Milly

総合スコア167

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

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

chesscommands

2021/04/21 06:52

ありがとうございました。 個別に作らない方法があったのですね。 ヘルプからは読み取れず凹んでいますが・・・。 結論は、駄目でした。 原因は、他のプラグインが干渉していたからでした。 しかも、組み合わせがあるのか、1方を有効にして、もう片方を無効にして、今回のプラグインを有効にして・・・などなど試したのですが、作られるときと作られないときのタイミングが異なっているようで、旨く検証できず、断念しました。 導入のプラグイン数も多く、外すわけにもいかない環境になっており、諦めました。 そもそも他の人が発生していないからこそ放置されていると思っています。 逆に言えば、他の人が発生していない以上、私も発生させない方法があるはずなので、今後は細々検証して突き止めようと思います。
Milly

2021/04/22 03:53

他の人がみんな「問題が発生することをあきらめたり」「プラグインの利用をあきらめたり」して issue になってない可能性も往々にしてあります。 上手く解決出来たらどこかで発表したりプラグインにPRしたりでみんなが幸せになるといいですね。 とりあえずここで報告があれば未来の誰かのためになります。
chesscommands

2021/05/22 01:41

プラグインの組み合わせ次第で発生有無があるのは分かりましたが、その組み合わせを洗い出せずに困ったままです。 その洗い出しに挫折して諦めた人間の一人です。 どうにかして解決する方法は、「Dropbox上で動かさないこと」です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問