7

Когда я закрываю MacVim с помощью стандартной команды vim :q , окно MacVim закрывается, но программа все еще работает. Это вызывает проблемы, когда другие процессы пытаются порождать экземпляр MacVim, потому что, если он все еще работает, необходимо передать специальный флаг в MacVim, чтобы открыть новый экземпляр, но затем экземпляры накапливаются.

Есть ли способ с помощью vimscript убить процесс, а также закрыть окно при выходе?

2 ответа2

17

Если в Dock последовательно появляются несколько значков MacVim, возможно, вы захотите проверить, как вы запускаете MacVim. Конкретно :help macvim-start говорит

НЕ вызывайте двоичный файл MacVim внутри пакета приложения, чтобы запустить MacVim.

Из командной строки вы обычно используете либо open -a MacVim filename либо mvim filename 1. Из графического интерфейса вы можете связать MacVim с определенными расширениями, перетаскивать файлы в MacVim в Finder или Dock или в открытое окно MacVim или использовать меню «Службы» для запуска новых буферов с выборами из других приложений. Также есть обработчик URL mvim:// (см . :help mvim://).

Ни один из этих методов не требует каких-либо специальных флагов / опций, независимо от того, работает существующий экземпляр или нет, и никогда не должен создавать дополнительный значок MacVim в Dock.

1 mvim - это скрипт, который поставляется с MacVim ; смотрите :help mvim . После того, как вы установили его в каталог в вашей переменной PATH, вы можете использовать его для редактирования файлов в существующем экземпляре MacVim (или запустите его, если он еще не запущен).


«После закрытия последнего окна:» Выход из MacVim на вкладке « Общие » в настройках MacVim (⌘ или MacVim > « Настройки») может быть тем, что вам нужно.

Если вам действительно нужно что-то более конкретное, то вы можете использовать команду MacVim -custom :macaction terminate: запросить завершение работы всего приложения MacVim в любой момент сценариев. Он должен быть эквивалентен ⌘Q и пункту меню MacVim > Quit MacVim (все они отправляют действие terminate: action первому респонденту приложения); если вы изменили буферы, он спросит вас, хотите ли вы «В любом случае выйти?».

Похоже, вы можете подключить его к событию VimLeave с помощью автокоманды:

autocmd VimLeave * macaction terminate:
0

Похоже, у пакета MacVim из macvim-dev нет сценария mvim. Я взял скрипт mvim из репозитория b4winckler, и он работает, как описано выше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .