Thông thường, bạn không thực sự chỉnh sửa tệp trong vim. Nếu bạn chạy vim foo
, chỉnh sửa, viết và thoát, vim unlinks foo
và tạo tệp mới và liên kết mới có tên foo
. Tuy nhiên, nếu tệp có nhiều liên kết thì vim
thực sự sửa đổi tệp. Ví dụ:Chỉnh sửa tệp tại chỗ trong vim
$ ls -i foo
19428852 foo
$ vi foo
$ ls -i foo
19428857 foo
$ ln foo bar
$ vi bar
$ ls -i bar
19428857 bar
Tôi đã tìm kiếm một cách để thực sự chỉnh sửa tệp và có vẻ như có hai lựa chọn. Sử dụng ed
hoặc sử dụng vim
nhưng đảm bảo rằng có ít nhất hai liên kết đến tệp trước khi tôi chỉnh sửa. Tôi cho rằng câu hỏi là học thuật, vì nó không thực sự quan trọng mà vim tạo ra một tập tin mới nếu chỉ có một liên kết, và vim dường như làm điều đúng nếu liên kết được tạo ra trong khi chỉnh sửa đang được tiến hành, nhưng tôi tò mò :
có thể làm cho vim luôn chỉnh sửa tệp và không tạo tệp mới không?
Một số lý do tại sao nó tạo sự khác biệt ... lợi thế của việc tạo tệp mới và trao đổi liên kết: ngăn các chương trình khác nhìn thấy tệp được viết một phần. Lợi thế của việc ghi tập tin tại chỗ: chương trình fileschanged (sử dụng fam) dường như thấy sự thay đổi sớm hơn (ngay lập tức, so với 6 giây hoặc lâu hơn khi tập tin bị xóa và liên kết hoán đổi, vì lý do nào đó ... một tính không đồng nhất trong fam hoặc fileschanged) –