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



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



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



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


идеи получше?

826   14  
vim

14 ответов:

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

:silent !<command>

обязательно включите пробел после silent

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

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

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

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

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

:Silent top

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

:set cmdheight=2

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

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

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

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

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

но это не вызовет запрос:

exe 'ls'  
redraw  
exe 'b4'

вот как я запускаю внешние команды в сложных сценариях, не имея "нажмите 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

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

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

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

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

 argdo %s/something/Something/eg|update

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

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

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

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

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

      • установите 'cmdheight' в 2 или выше.
      • добавить флаги 'shortmess'.
      • сброс 'и правитель/или''.
  • этой ссылке предоставляет другой выход. Положите это в ваш vimrc файл

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

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

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

после открытия любого файла, типа:

:messages

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

если вы видите E303 (Error303) "невозможно открыть файл подкачки для "{filename}", восстановление невозможно", это может означать, что в системе есть старая попытка восстановить файл подкачки (скорее всего, потерянный или несуществующий).

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

найти тип файла

$ locate .vimrc
/root/.vimrc

открыть файл $ vi .vimrc

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

set directory=.,$TEMP

сохранить и закрыть с :wq

наконец, перезагрузите профиль с помощью:

$ . /etc/profile

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

Comments

    Ничего не найдено.