私はVim 8.2を使用してUbuntu 18.04でファイルを編集します。ファイルを開いて一部の内容を変更した後、Vimを使用して終了すると、ファイルのinode番号が変更されます。
私が理解したところ、これは私のVimでバックアップメカニズムが有効になっているため、各バージョンが古いファイルを.swp
置き換える新しいファイルを作成するためです。新しいファイルには新しい inode 番号があります。それはすべてです。
ところで何か変なことを発見しました。
以下のように最初の後にvim 11.cpp
inode が変更409980
されています409978
。ただし、ファイルへのハードリンクを作成した後、Vimを使用してファイルを変更し11.cpp
たとしても、そのファイルのinode番号は決して変更されません。11.cpp
ハードリンクを削除すると、xxx
Vimのバージョンが変わるたびにそのリンクのinode番号が再び変更されます。
本当に混乱しています。
$ ll -i ./11.cpp
409980 -rw-rw-r-- 1 zyh zyh 504 Dec 22 17:23 ./11.cpp
$ vim 11.cpp # append a string "abc" to the file 11.cpp
$ ll -i ./11.cpp
409978 -rw-rw-r-- 1 zyh zyh 508 Dec 22 17:25 ./11.cpp
$ vim ./11.cpp # remove the appended "abc"
$ ll -i ./11.cpp
409980 -rw-rw-r-- 1 zyh zyh 504 Dec 22 17:26 ./11.cpp
$ ln ./11.cpp ./xxx # create a hard link
$ ll -i ./11.cpp
409980 -rw-rw-r-- 2 zyh zyh 504 Dec 22 17:26 ./11.cpp
$ vim 11.cpp # append a string "abc" to the file 11.cpp
$ ll -i ./11.cpp
409980 -rw-rw-r-- 2 zyh zyh 508 Dec 22 17:26 ./11.cpp
$ vim 11.cpp # remove the appended "abc"
$ ll -i ./11.cpp
409980 -rw-rw-r-- 2 zyh zyh 504 Dec 22 17:26 ./11.cpp
ベストアンサー1
設定だと思います。backupcopy
はいauto
(:set backupcopy?
確認するにはVimで実行してください)
主な値は次のとおりです。
yes
ファイルのコピーを作成し、元のファイルを上書きし、ファイル名を変更し、
no
最も適切な古いファイルの上に新しいファイルを書き込みます。
auto
[… ]
この
auto
値は中間値です。 Vimが副作用なしにファイル名を変更できると判断するときに使用されます(属性は渡され、ファイルはリンクではありません)。問題が予想されると、コピーが作成されます。
明確でない場合:(yes
コピーと上書き)はinode番号を変更しませんがno
(名前の変更と書き換え)は変更します。
あなたの場合、最初は、auto
と同じですno
。ln ./11.cpp ./xxx
Vimの後気づくauto
同様に機能する別のリンクがありますyes
。