Как отключить команду "Нажать ENTER или введите команду для продолжения" в Vim?

Есть ли способ отключить приглашение "Нажмите ENTER или введите команду для продолжения" после выполнения внешней команды?

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

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

Любые лучшие идеи?

Ответ 1

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

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

Ответ 2

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

:silent !<command>

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

Ответ 3

:help hit-enter

Ответ 4

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

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

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

:Silent top

Ответ 5

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

:set cmdheight=2

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

Ответ 6

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

Ответ 7

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

Ответ 8

Вот как я запускаю внешние команды в сложных сценариях, не имея "Нажмите ENTER". В отличие от :silent, я все еще могу видеть вывод команды.

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

:exe ":!<command>" | redraw

Script/function

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

Ответ 9

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

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

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

exe 'ls'  
redraw  
exe 'b4'

Ответ 10

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

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

Ответ 11

Это происходит со мной, если я сохраняю файл, который находится в каталоге, где у меня нет прав на запись в каталог. Я сделал chmod 777 в каталоге (у меня уже были права на запись в самом файле), и сообщение "Нажмите ENTER" больше не отображается.

Ответ 12

У меня есть аналогичная проблема, но когда я запускаю argdo для замены одной и той же строки в нескольких файлах, например,

 argdo %s/something/Something/eg|update

Мне постоянно приходилось нажимать страницу вниз.

Вы можете установить следующую опцию перед запуском script, чтобы вместо многих подсказок было только окончательное приглашение

:set nomore

Ответ 13

  • Если вы используете карту ключей, то ваша жизнь может быть намного проще, если добавить еще несколько в конец команды - но обычно 2 раза достаточно.
  • Но если вы выполняете команду из командной строки vim. Тогда это довольно сложно. Вы можете добавить ключевое слово silent перед вашей собственно командой. Он вернет вас в окно vim автоматически после выполнения команды. Но вам все равно нужно вручную выполнить redraw как некоторые окна, такие как NERD_Tree, должны быть перерисованы.

    • В этом случае попробуйте выполнить инструкции из справочного документа vim:

      Чтобы уменьшить количество запросов ввода-ввода:

      • Установите "cmdheight" на 2 или выше.
      • Добавьте флаги в "shortmess".
      • Сбросьте "showcmd" и/или "правитель".
    • Эта ссылка предоставляет другой выход. Поместите это в ваш файл vimrc

      command! -nargs=1 Silent
      \   execute 'silent !' . 
      \ | execute 'redraw!'
      

И тогда вы можете использовать :Silent command как обычная команда.

Ответ 14

Если ваша ошибка вызвана E303, то создание временного каталога в файле .vimrc может исправить это.

После открытия любого файла напишите и введите:

:messages

Если есть ошибки, он подскажет.

Если вы видите E303 (Ошибка 303) "Невозможно открыть файл подкачки для" {имя_файла} ", восстановление невозможно", это может означать, что в системе существует старая попытка восстановить файл подкачки (скорее всего, потерянный или не существующий),

Чтобы это исправить, создайте временный каталог в файле .vimrc.

Чтобы найти расположение файла .vimrc, введите и введите:

$ locate .vimrc
/root/.vimrc

Откройте файл $ vi.vimrc

Добавьте это в конец файла:

set directory=.,$TEMP

Сохранить и закрыть с помощью :wq

Наконец, перезагрузите профиль:

$ . /etc/profile

Попробуйте открыть любой файл с помощью VI. Проблема должна быть исправлена.

Ответ 15

На моей стороне решение было использовать silent чаще в командной цепочке.

В частности, ранее .vimrc имел:

nnoremap M :silent make\|redraw!\|cc<CR>

Это было изменено на:

nnoremap M :silent make\|silent redraw!\|silent cc<CR>

Раньше "Press ENTER" появлялся не всегда, но раздражающе часто. Дополнительное silent исправило это. (Похоже, что silent не требуется при redraw! :cc вызвало сообщение "Press ENTER".)

Недостаток этого изменения заключается в том, что он больше не отображает вывод :cc, поэтому вам нужно угадать, в чем ошибка. Небольшая настройка исправляет это:

nnoremap M :silent make\|redraw!\|cw\|silent cc<CR>

Это делает список ошибок QuickFix (вывод make) автоматически появляющимся (и, с помощью vim-magic, исчезающим, если ошибки нет).

FYI:

Мотивация этого M -mapping - просто нажать M в обычном режиме, чтобы:

  • сохраните редактирование (при использовании make все находится под git -control в любом случае)
  • вызвать make
  • и сразу перейти к первой ошибке или предупреждению

Мой Makefile обычно создается так, что это занимает доли секунды.

Немного подправив это можно применить и к рабочим нагрузкам типа non- C:

В .vimrc добавить

set efm+=#%t#%f#%l#%c#%m#

Это позволяет vim интерпретировать такие сообщения как :cc (ошибка отображения):

#E#file#line#column#message#
#W#file#line#column#message#
#I#file#line#column#message#

(E rrors, W редупреждения, I NFO, основанный на vim магии)

Пример, как использовать это для скриптов Python. (Извините, здесь нет копии, это другая история.)