Как настроить 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, и он работает, как описано выше.

Другие вопросы по тегам