11898


3つにウィンドウを分割してそれぞれ異なるバッファを作成したかったのですが、1番目と2番目のウィンドウのバッファ番号が同じでした。

[code]

    :split enew
    :split enew
    :echo bufnr('%') " 2
    :wincmd w
    :echo bufnr('%') " 2
    :wincmd w:
    :echo bufnr('%') " 1
    
[/code]

splitとenewを分けて書けばそれぞれ異なるバッファ番号になりました。

[code]

    :split
    :enew
    :split
    :enew
    :echo bufnr('%') " 3
    :wincmd w
    :echo bufnr('%') " 2
    :wincmd w:
    :echo bufnr('%') " 1
    
[/code]

何故、前者のコードでは重複したバッファ番号が存在するのでしょうか？


CC BY-SA 3.0
2015-06-30T10:01:48.417
11889
2015-06-30T14:12:40.707
10022
question
vim
ウィンドウを分割して新しくバッファを作るときにバッファ番号が被る


`:enew` は新しいバッファを作成するコマンドです。また `:split`
は引数で与えられたバッファをウィンドウを分割して開くコマンドであり、引数に与えたコマンドを実行するコマンドではありません。

そのために前者の例では、ウィンドウを分割して `enew` という名前のバッファを開いていることになります。また2回めの `:split enew`
は、1回めで作成済みの `enew` という名前のバッファを別ウィンドウで開いてることになります。当然バッファ番号は同じものになります。

対して後者の例では、まずウィンドウを分割しそれから `:enew` で新しいバッファを作成しています。それを2回繰り返すのですから、別のバッファとなります。


CC BY-SA 3.0
2015-06-30T13:42:09.100
11898
2015-06-30T13:42:09.100
208
11889
answer


brasizyさんが実行したいコマンドは `:new` なのではないでしょうか？


CC BY-SA 3.0
2015-06-30T14:12:40.707
11900
2015-06-30T14:12:40.707
2687
11889
answer