Как отключить приглашение" нажмите ENTER или введите команду для продолжения " в Vim?
есть ли способ отключить приглашение" нажмите ENTER или введите команду для продолжения", которое появляется после выполнения внешней команды?
изменить: найдено обходное решение: добавить дополнительный <CR> ярлыков в мой .lvimrc.
map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
идеи получше?
14 ответов:
Я не уверен, как сделать это глобально, хотя для одной команды:
:silent !<command>обязательно включите пробел после
silent
нашел один обходной путь: добавить дополнительный
<CR>на командной карте.map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
вот как я справился с проблемой, что запуск внешней программы через silent портит экран в текстовом режиме vim (по моему опыту, gvim не страдает от этой проблемы):
command! -nargs=1 Silent \ | execute ':silent !'.<q-args> \ | execute ':redraw!'используйте его вместо обычной команды silent:
:Silent top
установить
cmdheightдо 2, в моем vimrc (:e $MYVIMRC)::set cmdheight=2Подробнее здесь.
ответ Энтони привел меня в нужное место, и я смог настроить 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 вызывает эту ошибку создание временного каталога в
.vimrcfile может это исправить.после открытия любого файла, типа:
:messagesесли есть ошибки, он подскажет.
если вы видите E303 (Error303) "невозможно открыть файл подкачки для "{filename}", восстановление невозможно", это может означать, что в системе есть старая попытка восстановить файл подкачки (скорее всего, потерянный или несуществующий).
исправить это, создайте временный каталог в .
найти тип файла
$ locate .vimrc /root/.vimrcоткрыть файл
$ vi .vimrcдобавьте это в конец файла:
set directory=.,$TEMPсохранить и закрыть с
:wqнаконец, перезагрузите профиль с помощью:
$ . /etc/profileпопытке открыть любой файл с VI. Проблема должна быть исправлена.
Comments