Как отключить запрос «Нажмите клавишу ВВОД или введите команду для продолжения» в Vim? - PullRequest
93 голосов
/ 21 мая 2009

Есть ли способ отключить запрос «Нажмите клавишу ВВОД или введите команду для продолжения», который появляется после выполнения внешней команды?

РЕДАКТИРОВАТЬ: Найден обходной путь: добавьте дополнительные <CR> к ярлыку в моем .lvimrc.

map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>

Есть идеи получше?

Ответы [ 15 ]

63 голосов
/ 21 мая 2009

Я не уверен, как это сделать глобально, хотя для одной команды:

:silent !<command>

Обязательно укажите пробел после silent

48 голосов
/ 21 мая 2009

Обнаружен один обходной путь: добавьте дополнительный <CR> к команде карты.

map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
28 голосов
/ 21 мая 2009
:help hit-enter
17 голосов
/ 10 мая 2010

Вот как я справился с проблемой, заключающейся в том, что запуск внешней программы с помощью без вывода сообщений портит экран в текстовом режиме vim (по моему опыту, gvim не страдает от этой проблемы):

command! -nargs=1 Silent
\ | execute ':silent !'.<q-args>
\ | execute ':redraw!'

Используйте его вместо обычной тихой команды:

:Silent top
12 голосов
/ 27 марта 2013

Установите cmdheight в 2, в моем vimrc (:e $MYVIMRC):

:set cmdheight=2

Подробнее здесь .

11 голосов
/ 25 марта 2013

Возможно, это синтаксическая ошибка в vimrc file

7 голосов
/ 16 апреля 2013

Ответ от Энтони привел меня в нужное место, и я смог настроить gvim, чтобы не останавливаться на большом количестве сообщений.
Я добавил set shortmess=aoOtI в мой файл gvimrc.
Это объясняется на странице справки, предоставленной вам :help shortmess.
Буквы означают классы сообщений, которые вы не хотите видеть или хотели бы, чтобы vim обрезал их, чтобы избежать нажатия , ввода , остановки.
Я справился с этим раньше, установив широкое начальное окно с columns=130 в gvimrc, чтобы немногие сообщения переполняли его и требовали назойливой, изнурительной необходимости нажимать ввод.

4 голосов
/ 29 апреля 2015

Так я запускаю внешние команды в сложных ситуациях, не нажимая «ENTER». В отличие от :silent, я все еще вижу вывод команды.

Командная строка

:exe ":!<command>" | redraw

Скрипт / функция

exe ':!<command>' 
redraw

Отображение с <expr>

map <expr> <F5> ":exe ':!<command>'\n:redraw\<CR>"

Сопоставление с <expr>, вызывающим функцию

map <expr> <F5> MyFoo()
fu! MyFoo()
    return ":exe ':!<command>' | redraw\<CR>"
endf
3 голосов
/ 02 апреля 2012

Помещение перерисовки перед очисткой экрана тоже работает. Вот что у меня было:

exe 'ls'  
exe 'b4'  "This redraws, so the Prompt is triggered

Но это не вызовет подсказку:

exe 'ls'  
redraw  
exe 'b4'
2 голосов
/ 08 сентября 2015

Вы можете использовать:

call feedkeys(" ")

Например:

function! Interactive_Questions()
    echo "Question 1:"
    let response1 = getchar()
    echo "Question 2:"
    let response2 = getchar()

    " Do something

    " Without the next line, you would have to hit ENTER,
    " even if what is written (the questions) has no interest:
    call feedkeys(" ")
endf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...