今回も、バッファについて学習。
前回、:newや、:bd、:bwを使いながらバッファの理解を試みましたが、基本が分かってないので、どうにもこうにも理解が進みません。ってことで、基礎から勉強することにしました。
バッファとは何か。ヘルプに書いてあります。
:h window
1. Introduction *windows-intro* *window* Summary: A buffer is the in-memory text of a file. A window is a viewport on a buffer. A tab page is a collection of windows. A window is a viewport onto a buffer. You can use multiple windows on one buffer, or several windows on different buffers. A buffer is a file loaded into memory for editing. The original file remains unchanged until you write the buffer to the file. A buffer can be in one of three states:
ふむふむ。つまりこういうことなんでしょう。
ファイル(file)があります。
バッファ(buffer)は、ファイルのテキストのこと(in-memory)
そして、ウィンドウ(window)は、バッファを覗くための窓のこと。
windowは、一つのバッファに幾つあっても良いですね。
buffer/file +--------+ | | +----------+ || || window +----------+ | | | | | | +----------+ || || window +----------+ | | | | +--------+
でも、バッファとファイルの関係は、一対一ですね。
では確認。Vimを起動します。
~/tmp $ vim
起動後、新規ファイル名を指定してバッファを開きます。
:e file1.txt
この時点のバッファを確認。
:ls
新規ファイル名を指定してバッファを開きます。
:new file2.txt :ls
各バッファにHELLOって書き込みます。
:windo norm 0iHELLO
両方のバッファにHELLOと書かれました。
次に2番のバッファをdeleteします。
HELLOを書き込んでからファイルへ保存してないので、!をつけないとエラー出ます。
:bd! 2 :ls
file1.txtしか、もうバッファは残っていないように見えます。
しかし、bufexistsで確認すれば分かりますが、2番は存在するんですよね。
:echo bufexists(2)
ということで、思い切って、2番を指定してバッファを開いてみます。
:sb 2 :ls
なんと! 上の画面に、file2.txtというファイル名でバッファが現れました。
コメント