В ситуациях, когда вам нужно, чтобы vim полностью загрузился, как если бы вы запустили его вручную, это работает:
vim -c "autocmd! CursorHold * <commands to run>"
Например, я хотел перенаправить вывод :map
в файл из оболочки, но я хотел захватить отображение, которое vim-Airlines создает только после того, как оно отображает свою табулированную строку (строка вверху, показывающая все открытые имена буферов). это асинхронно, простое выполнение -c
перенаправления в файл не дает ему времени на сопоставления. Возможно, есть лучший способ, но это работает для меня, тем более, что я уже updatetime
установил 100
(0,1 секунды), который влияет на то, как долго будет происходить CursorHold
событие. По умолчанию vim устанавливает его на 4 секунды.
vim -c "autocmd! CursorHold * set nomore | redir! > mapNew | map | redir END | q"