Vimスクリプト(window)

今回も、バッファについて学習。
前回、: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というファイル名でバッファが現れました。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA