Как автоматически сохранять в Vim 7 при потере фокуса из окна? - PullRequest
6 голосов
/ 01 февраля 2012

В своем .vimrc я пробовал следующее:

:au FocusLost * silent! wa
autocmd BufLeave,FocusLost silent! wall

А также попробовал:

Как настроить автоматическое сохранение файлов Vim при потере фокуса?

но не могу заставить его работать, когда я нажимаю Ctrl + Z или переключаюсь на другую вкладку в Терминале (mac), он все равно не сохраняет автоматически.

Ответы [ 2 ]

11 голосов
/ 01 февраля 2012

BufLeave срабатывает при переходе в другой буфер. Ни <C-z>, ни переключение на другую вкладку Terminal.app не вызовут этого, потому что вы используете CLI Vim, который вообще не заботится о графическом интерфейсе или среде эмулятора терминала и ... вы не покидаете свой буфер.

То же самое относится и к FocusLost (более или менее док говорит, что это только графический интерфейс, но может работать в некоторых терминалах, не сообщая, какой из них).

Таким образом, эти настройки, вероятно, будут работать в MacVim, но определенно не в CLI Vim.

На самом деле, поскольку Vim не знает о вкладках эмулятора терминала или о том, что он находится в фоновом режиме, я сомневаюсь, что вы можете достичь своей цели в CLI Vim.

В моем ~/.vimrc есть autocmd FocusLost * :wa, но я поместил его в условное if has("gui_running"), а также inoremap <Esc> <Esc>:w<CR>, чтобы сэкономить на ESC. Надеюсь, это поможет.

1 голос
/ 12 января 2015

В OS X и Vim CLI я использую этот плагин http://www.vim.org/scripts/script.php?script_id=4521

Автосохранение - автоматически сохранять изменения на диск без необходимости использовать :w (или любую привязку к нему) каждый раз, когдабуфер был изменен.Автосохранение отключено по умолчанию, запустите :AutoSaveToggle, чтобы включить / отключить автосохранение.Если вы хотите, чтобы плагин был всегда включен, это можно сделать с помощью опции g:auto_save (поместите 'let g:auto_save = 1' в вашем .vimrc).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...