Как настроить MacVim для выхода при выходе?
Когда я закрываю MacVim, используя стандартную команду vim :q
, окно MacVim закрывается, но программа все еще работает. Это вызывает проблемы, когда другие процессы пытаются порождать экземпляр MacVim, потому что, если он все еще работает, необходимо передать специальный флаг в MacVim, чтобы открыть новый экземпляр, но затем экземпляры накапливаются.
Есть ли способ с помощью vimscript убить процесс, а также закрыть окно при выходе?
2 ответа
Если в Dock постоянно появляются несколько значков MacVim, возможно, вы захотите проверить, как вы запускаете MacVim. В частности, :help macvim-start
говорит
НЕ вызывайте двоичный файл MacVim внутри пакета приложения, чтобы запустить MacVim.
Из командной строки вы обычно используете либо open -a MacVim filename
или же mvim filename
1 Из графического интерфейса вы можете связать MacVim с определенными расширениями, перетаскивать файлы в MacVim в Finder или Dock или в открытое окно MacVim или использовать меню "Службы" для запуска новых буферов с выборами из других приложений. Также есть mvim://
Обработчик URL (см. :help mvim://
).
Ни один из этих методов не требует каких-либо специальных флагов / опций, независимо от того, работает существующий экземпляр или нет, и никогда не должен создавать дополнительный значок MacVim в Dock.
1 mvim - это скрипт, который поставляется с MacVim; увидеть :help mvim
, После того, как он установлен в каталоге в вашей переменной PATH, вы можете использовать его для редактирования файлов в существующем экземпляре MacVim (или запустите его, если он еще не запущен).
"После закрытия последнего окна:" Выход из MacVim на вкладке " Общие " в настройках MacVim (⌘ или MacVim > " Настройки") может быть тем, что вам нужно.
Если вам действительно нужно что-то более конкретное, то вы можете использовать команду MacVim -custom :macaction terminate:
попросить все приложение MacVim выйти в любой момент сценария. Он должен быть эквивалентен ⌘Q и пункту меню MacVim > Выйти из MacVim (все они отправляют terminate:
действие для первого респондента приложения); если вы изменили буферы, он спросит вас, хотите ли вы "В любом случае выйти?".
Похоже, вы можете подключить его к событию VimLeave с помощью автокоманды:
autocmd VimLeave * macaction terminate:
Похоже, у пакета MacVim из macvim-dev нет сценария mvim. Я взял скрипт mvim из репозитория b4winckler, и он работает, как описано выше.