Vim: сохранение в FocusLost и выполнение автокоманды - PullRequest
2 голосов
/ 20 декабря 2011

Я настроил свой редактор vim (я использую MacVim) для автоматического сохранения файлов при потере фокуса:

autocmd FocusLost * silent! wall

Я также автоматически удаляю конечные пробелы из файлов python с помощью этой автоматической команды:

autocmd BufWritePre *.py :%s/\s\+$//e

Эта автоматическая команда отлично работает, когда я сохраняю файл вручную (набирая : w или нажимая ⌘s ), но она не выполняется (т.е.пробелы не удаляются), когда я переключаюсь на другое приложение, и буфер автоматически записывается.

Как изменить эти автоматические команды, чтобы они работали вместе?

Ответы [ 2 ]

3 голосов
/ 06 марта 2013

Вам нужно изменить автокоманду FocusLost на:

autocmd FocusLost * nested silent! wall

Подробнее см. :h autocmd-nested.

1 голос
/ 20 декабря 2011

Я не могу проверить это в графическом Vim, но вы можете попробовать несколько вариантов:

  • Присоединиться к некоторым событиям в одной и той же автокоманде autocmd BufWritePre,FocusLost *.py ...
  • Выполнить автокоманду из события, что-то вроде:
    autocmd BufWritePre *.py :execute "%s/\s\+$//e" | doautocmd FocusLost %
...