LINUX.ORG.RU

Vim: Объяснение настройки nowritebackup

 


1

1

Объясните, пожалста, что означает настройка set nowritebackup. По дефолту, Vim создает в рабочей директории всякие разные служебные файлы. Если они не нравятся, от них можно избавиться через настройки nobackup, noswapfile и noundofile. Но что делает nowritebackup?

" Настройки        " За какой файл каждая из них отвечает
" ---------------- " ------------------------------------------------
set nobackup       " Foo.ext~, создаваемый при сохранении Foo.ext
set nowritebackup  " ?
set noswapfile     " .Foo.ext.swp, создаваемый при открытии Foo.ext
set noundofile     " .Foo.ext.un~, создаваемый при сохранении Foo.ext

:help writebackup я конечно читал, но не понял.

Deleted

При попытке записи:
С writebackup:

mv current_file_name backup
write buffer into current_file_name
if write success {
    rm backup
} else {
    mv backup current_file_name
}
С nowritebackup:
rm current_file_name
write buffer into current_file_name
Что произойдёт, во втором случае, если буфер не запишется, объяснять?

anonymous ()
Ответ на: комментарий от anonymous

Не понимаю. Можешь проще? Считай что я тупой.

Вот здесь (If backup is off and writebackup is on...) пишут что, типа, nowritebackup предотвращает от создания какого-то файла. Но у меня даже с такими настройками:

set nobackup
set writebackup " Включено. Остальное как видишь выключено
set noswapfile
set noundofile

никаких служебных файлов не создается.

Deleted ()
Последнее исправление: myLogin (всего исправлений: 4)
Ответ на: комментарий от Deleted
If backup is off and writebackup is on, Vim creates a backup
file for the duration of the edit session and deletes the
backup afterward.

Вот только в документации не так:

Make a backup before overwriting a file.  The backup is removed after
the file was successfully written, unless the 'backup' option is
also on.

При set nobackup writebackup Vim создаёт файл перед записью и удаляет его после записи, т.е. существует он очень короткий промежуток времени. Можно попробовать увидеть это в inotifywatch на каталоге.

xaizek ★★★★★ ()
Ответ на: комментарий от xaizek

Спасибо.

inotifywatch пользоватся не умею — я вообще тестировал с Виндуса.

Но проверил на директории Program Files. В ней нельзя «вот так просто» создать файл — защита со стороны системы.

Поэтому составил такой vimrc:

"set backupdir=C:/Program\ Files " Ошибка 510 при сохранении
"set backupdir=C:/Backup\ Test   " Ошибки нет

set nobackup
set writebackup
set noswapfile
set noundofile

Открыл файл test.txt на рабочем столе, внес измения, попытался сохранить. Результат уже показан в комментариях в коде выше.

Т.е. похоже все как ты говоришь.

Deleted ()
Последнее исправление: myLogin (всего исправлений: 1)