2012-01-08 36 views
14

私はプログラミングにvimを使用しています。 1日の始まりにファイルを開き、いくつかのウィンドウ分割を行い、ファイルをバッファに開いてすぐに利用できるようにします。非常に最近までこれはちょうど働いた。ウィンドウ分割が強制的に読み取り専用になっているのはなぜですか?

最後の1週間ほどで何か変更されました。私の書き込み可能なバッファの1つが読み込み専用に切り替えられているのですが、理由はわかりません。 fileA.h

  • SP ./
  • を含むウィンドウに切り替えるには

    1. オープンfileA.h
    2. vsplit ./
    3. オープンfileA.cpp
    4. CwのCwを:ここでは一連のコマンドです

    手順1〜4では、すべてのウィンドウを編集できます。ステップ5を実行すると、新しいファイルブラウジングウィンドウが(期待通りに)読み込まれますが、fileA.cppを保持するウィンドウは読み取り専用としてマークされます。 fileA.hは編集可能です。なぜこうなった?

    ステップ4を実行しなければ問題はありません(fileA.hの代わりにfileA.cppを保持するウィンドウを分割するなど)。また、最初にファイルブラウザに分割するのではなく、手順5で 'sp fileB.h'を実行すると問題はありません。

    +2

    使用しているプラ​​グインは何ですか?一般に、干渉するプラグインを排除しようとします。私の推測では、あなたはNERDTreeのようなものを使用しており、他のプラグインのマッピングと干渉しています – sehe

    +0

    'vim -u NONE'でもまだ起こっていますか?そうでなければ、おそらく@seheは正しいでしょう。 – ephemient

    答えて

    34

    これはnetrwプラグインのバグかもしれません。

    • V140(MacPortsのvimに含ま:7.3から353)
      私は(MacPortsのvim 7.3から353、およびMacPortsのMacVim「snapshot64」7.3から390)はVim 7.3のビルド2でnetrwのいくつかのバージョンでテスト MacPorts vimビルドでのみテストされています。 (MacPortsのMacVimに含ま:7.3から390)
    • V142(vim.org/scripts netrw pageから)(vim.org/scripts netrwのページから)
    • V141
    • v143のみMacPortsのMacVimを構築してテストさ
    • v144b(netrw author’s Vim pageからプレリリース)

    あなたは:let g:loaded_netrwPluginとあなたのアクティブなnetrwのバージョンを確認することができます。あなたのシナリオを再生する際V142を通じて

    V140すべてが合理的な行動を持っていた:

    • のみ(sp .から、右側、上側のウィンドウ)netrwのバッファが読み取り専用です。
      左側のウィンドウにあるfileA.cppバッファは、読み取り専用ではありません。私はあなたの行動を再現することができましたv143とv144bで

    • netrwのバッファ(右側、上側のウィンドウ)とfileA.cppバッファ(左側)の両方が読み取り専用になります。さらに、(すなわち、OPによって報告されていないが、一見関連している)、左側のfileA.cppウィンドウがアクティブウィンドウになります。
      通常、右側の上部ウィンドウ(sp .のもの)がアクティブである必要があります。

    fileA.cppウィンドウはもともとnetrwウィンドウ(vsp .)です。私の推測では、v143とv144bの何かが何らかの理由で古いウィンドウをリセットするのに少し冗長である(おそらくそのウィンドウに触れてはならない)。 sp fileB.hは、netrwを呼び出さないようにして問題を回避します(つまり、問題はウィンドウの分割ではなく、ディレクトリリストバッファを作成するときにnetrwが行うことと同じです)。


    あなたの問題はnetrwのから来ている場合は(つまりは、あなたの行動は私の記述に一致し、ディレクトリリストのバッファが第二のテキストNetrw Directory Listingと(例えば)(netrw v143)持っているあなたはnetrwのバナーを無効にしていないラインを-と仮定した場合)古い(?)バージョンのnetrw(つまりv142)をインストールして修正することができます。

    netrwは "vimballアーカイブ"としてパッケージ化されています。 vimballプラグインにはVim 7.0以降が付属しています。 vimballファイルをソースして、runtimepath(通常は~/.vim)の最初のディレクトリにインストールするだけです。あなたがVimのプラグイン(!強く推奨)を単離するpathogenを使用している場合は、代わりにバンドルディレクトリにインストールすることができます

    :e /path/to/netrw.vba.gz 
    :so % 
    :q 
    

    :e /path/to/netrw.vba.gz 
    :UseVimball ~/.vim/bundle/netrw 
    :q 
    
    +2

    これはいくつかの分析作業です。+1 – sehe

    +0

    恐ろしい反応です!私はnetrwのv143を持っているようだ。あなたの指示に従って、私は142に格下げしました。 FYI、fileA.cppがフォーカスを取得する動作を確認しました。その詳細を記録するのを忘れてしまった。 – ryan0270

    +0

    すばらしい答えをChrisにありがとう。診断のヘルプと詳細なソリューション - 非常に便利です。 –

    関連する問題