Відповіді:
Це трапляється, тому що зазвичай Vim переходить на альтернативний екран і працює там. Після виходу Vim переключиться назад, і тому ви не побачите нічого від вашого Vim сеансу, але результат команди, виконаної ще до запуску Vim.
Ця функція пояснюється на :h xterm-screens
(посилання)
Отже, ви в основному цього не бажаєте, і тому хочете відключити це. Це можна зробити, встановивши :set t_ti= t_te=
термінальні коди, які виконують це, на порожнє.
Збираючи все це разом, ви хочете запустити Vim так:
vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
Ми скидаємо цей 'more'
параметр, щоб ви не бачили підказки про введення-введення.
less
. Просто перекладіть його на менш подібне vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!' | less
. Макет, можливо, спочатку накрутився (це в моєму терміналі), але після натискання клавіші <CL> все приємно і денді.
vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
, є лише "швидкий спалах", вихід команди з кодом 0, вихід немає. Я щось пропускаю?
Я вдячний за відповідь, яку надав Крістіан Брабандт, але думаю, що кращою відповіддю було б відокремити команду quit, використовуючи іншу -c команду на зразок:
vim -c ':set t_ti= t_te= nomore' -c 'scriptnames' -c 'q!'
Використання цього методу означає, що ви можете об'єднати кілька різних команд разом, а потім використати заключний 'q!' вийти з vim.
У ситуаціях, коли потрібно, щоб vim повністю завантажився так, як якщо б ви його запустили вручну, це працює:
vim -c "autocmd! CursorHold * <commands to run>"
Наприклад, я хотів переспрямувати вихід :map
файлу з оболонки, але хотів зафіксувати відображення, яке створює vim-airline, тільки після того, як воно відобразить його табличний рядок (рядок вгорі показує всі відкриті імена буферів). це асинхронно, просто запуск -c
переадресації на файл не давав йому часу робити відображення. Може бути і кращий спосіб, але це працює для мене, тим більше, що я вже updatetime
встановив 100
(0,1 секунди), що впливає на те, як довго триватиме CursorHold
подія. За замовчуванням vim встановлює його на 4 секунди.
vim -c "autocmd! CursorHold * set nomore | redir! > mapNew | map | redir END | q"