Уважаемые пользователи этого плагина! Извините, но я его больше не поддерживаю! Если кто-то из вас заинтересован в его поддержании, пожалуйста, свяжитесь со мной, и я добавлю вас в список участников.
Автосохранение — автоматически сохраняет изменения на диск без необходимости использования :w
(или какой-либо привязки к нему) каждый раз, когда буфер был изменен или на основе ваших предпочтительных событий.
Вдохновлен той же функцией текстового редактора RubyMine.
По умолчанию автосохранение сохраняет каждый раз, когда что-то изменяется в обычном режиме и когда пользователь выходит из режима вставки. Эта конфигурация представляет собой смесь между «сохранять как можно чаще» и «стараться не нарушать работу других плагинов, которые зависят от событий записи файлов».
Используйте vundle или загрузите упакованную версию с vim.org.
Автосохранение отключено по умолчанию, запустите :AutoSaveToggle
, чтобы включить/отключить его.
Если вы хотите, чтобы плагин включался при запуске, используйте опцию g:auto_save
.
" .vimrc
let g: auto_save = 1 " enable AutoSave on Vim startup
Также возможно переопределить глобальное значение g:auto_save
индивидуально для каждого буфера или окна. Например, если у вас включено автоматическое сохранение во всем мире, вы можете отказаться от некоторых файлов. И наоборот, включите некоторые файлы, если у вас глобально отключено автоматическое сохранение.
let g: auto_save = 0
augroup ft_markdown
au !
au FileType markdown let b: auto_save = 1
augroup END
По умолчанию автосохранение отображается в строке состояния при каждом автосохранении:
(AutoSave) saved at 08:40:55
Вы можете отключить дисплей с помощью опции g:auto_save_silent
:
" .vimrc
let g: auto_save_silent = 1 " do not display the auto-save notification
События, при которых AutoSave будет выполнять сохранение, можно настроить с помощью параметра g:auto_save_events
. Использование только InsertLeave
и TextChanged
(по умолчанию) будет сохранять каждое изменение в обычном режиме и каждый раз, когда вы выходите из режима вставки.
" .vimrc
let g: auto_save_events = [ " InsertLeave " , " TextChanged " ]
Другие события, которые вы можете использовать:
TextChangedI
сохранит после внесения изменений в текст в текущем буфере в режиме вставки.CursorHold
сохранит каждое количество миллисекунд, определенное в опции updatetime
в обычном режиме.CursorHoldI
сделаю то же самое в режиме вставки.CompleteDone
также будет запускать сохранение после каждого события завершения. Некоторые из этих команд могут быть недоступны в зависимости от вашей установки Vim. Полный список см. в обзоре автокоманд ( :h autocommand-events
).
Предупреждение! Будьте осторожны с параметром updatetime
, поскольку его слишком маленькое значение вызывает проблемы. 200 уже кажется слишком маленьким для работы с некоторыми другими плагинами. Используйте 1000 для более консервативных настроек.
Если вам нужен хук автосохранения (например, создание тегов после сохранения или отмена сохранения ранее), используйте параметры g:auto_save_postsave_hook
или g:auto_save_presave_hook
:
" .vimrc
" This will run :TagsGenerate after each save
let g: auto_save_postsave_hook = ' TagsGenerate '
" This will run AbortIfNotGitDirectory function before each save
let g: auto_save_presave_hook = ' call AbortIfNotGitDirectory() '
" Example hook from vim-auto-save-git-hook plugin
function ! AbortIfNotGitDirectory ()
if ...
let g: auto_save_abort = 0
else
let g: auto_save_abort = 1
endif
endfunction
По умолчанию записывается только текущий буфер (например :w
). Вы можете выбрать, чтобы все буферы записывались при автосохранении, используя опцию g:auto_save_write_all_buffers
(например :wa
).
" .vimrc
let g: auto_save_write_all_buffers = 1 " write all open buffers as if you would use :wa
doc/auto-save.txt
— это преобразованная версия README.md
. Не редактируйте его напрямую. Вместо этого установите md2vim и запустите сценарий update_doc_from_readme.sh
.
Разработка ведется в репозитории 907th/vim-auto-save. Пожалуйста, сообщайте туда о любых ошибках и/или предложениях. Любой вклад приветствуется!
Распространяется по лицензии MIT (см. LICENSE.txt).
Copyright (c) 2013-2021 Алексей Черненков