2

より正確に質問すると、のように機能するが、winnr()ウィンドウごとに変更されていない値を返す関数はありますか?

ホットキーを使用してvimのバッファを切り替えようとしています。それはすべてうまくいきました。しかし、カーソルをNERDTreeのような別のウィンドウに置いてホットキーを押すと、NERDTreeが消えて、そのウィンドウが別のバッファーに切り替わります。これを修正するには、vimで開いた最初のウィンドウにカーソルがある場合にのみ、ホットキーを有効にする必要があると思います。vimスクリプトのような機能はありis_first_window()ますか?</ p>

ありがとうございました。

4

1 に答える 1

1

ウィンドウはいつでも任意のバッファを表示できます。バッファは(永続的に)特定のウィンドウに接続されていないため、そのような一意のIDはありません。

必要なのは、特別なウィンドウ(NERDTreeを表示しているウィンドウなど)を通常のバッファーと区別する方法です。bufname('%')これを行う方法は、romainlが提案しているように、を介して取得されるバッファ名を使用することです。マッピングには、特殊なバッファ(などNERD_tree_1)の既知の名前のリストを含めることができます。または、ほとんどの場合にあるように、特殊なウィンドウを一般的にチェックすることもできます&buftype == 'nofile'。多くのプラグインには独自の特別なマーカー変数もあります。たとえば、NERDTreeでは次のようにウィンドウをチェックできます。

echo exists("t:NERDTreeBufName") && bufwinnr(t:NERDTreeBufName) == winnr()
于 2012-12-27T00:52:21.277 に答える