Existe alguma maneira de desativar o prompt "Pressione ENTER ou digite o comando para continuar" que aparece após a execução de um comando externo?
EDIT: Encontrou uma solução alternativa: Adicione um extra <CR>
ao atalho no meu .lvimrc.
map <F5> :wall!<CR>:!sbcl --load foo.cl<CR><CR>
Alguma ideia melhor?
set dir=$TEMP
no seu vimrc. Isso diz ao vim para usar a pasta temporária correta para seus arquivos temporários. Isso, por sua vez, corrige os erros e remove os prompts "pressione enter".Respostas:
Não tenho certeza de como fazer isso globalmente para um comando:
Certifique-se de incluir um espaço após
silent
fonte
:redraw!
opção resolve isso. O duplo<cr>
é provavelmente semelhante. e menos complicadoDescobriu uma solução alternativa: Adicionar um extra
<CR>
ao comando map.fonte
fonte
:help hit-enter
fornece algumas informações básicas bastante úteis no prompt "Pressione ENTER ...". Importa-se de explicar?set hl
(:highlight
) eu usei erroneamente como um atalho parahlsearch
quem é o verdadeiro atalhohls
. O que és
importante :)set nomore
Defina o
cmdheight
como 2, no meu vimrc (:e $MYVIMRC
):Mais informações aqui .
fonte
Foi assim que lidei com o problema de que a execução de um programa externo por meio do silencioso bagunça a tela no vim em modo texto (em minha experiência, o gvim não sofre desse problema):
Use-o em vez do comando silencioso regular:
fonte
É possivelmente um erro de sintaxe no arquivo vimrc
fonte
set number
eset syntax
logo abaixo no meu arquivo .vimrc. Uma vez que eu removi oset syntax
Vim não me solicitou mais.:message
para descobrir o que está errado.set syntax
. Substituído porset syntax=on
e ele corrige o problema.A resposta de anthony me levou ao lugar certo e consegui configurar o gvim para não parar em muitas mensagens.
Eu adicionei set
shortmess=aoOtI
ao meu arquivo gvimrc.Isso é explicado na página de ajuda fornecida a você por
:help shortmess
.As letras significam classes de mensagens que você não deseja ver ou gostaria que o vim truncar para evitar a tecla Enter stop.
Eu consegui isso antes definindo uma ampla janela inicial com
columns=130
no gvimrc para que poucas mensagens transbordassem e exigissem a necessidade irritante e exaustiva de pressionar Enter.fonte
É assim que executo comandos externos em cenários complicados sem ter de "Pressionar ENTER". Ao contrário
:silent
, ainda posso ver a saída do comando.Linha de comando
Script / função
Mapeando com
<expr>
O mapeamento com
<expr>
isso chama uma funçãofonte
<command>
<command>
deve ser substituído por um comando externo real, por exemplo,map <expr> <F5> ":exe ':!gdb'\n:redraw\<CR>"
Você pode usar:
Por exemplo:
fonte
Redesenhar antes de limpar a tela também funciona. Aqui está o que eu tinha:
Mas isso não acionará o prompt:
fonte
redraw
resolveu. A outra solução não se encaixou, pois eu queria aceitar a entrada do usuário entre a mensagem original e o desaparecimento do prompt.Eu tenho um problema semelhante, mas quando executo um argdo para substituir a mesma string em vários arquivos, por exemplo,
Eu estava constantemente tendo que pressionar a página para baixo.
Você pode definir a seguinte opção antes de executar o script para que haja apenas o prompt final em vez de muitos prompts
fonte
:set nomore
:, bad lick ainda está no final. Também é:h help hit-enter
de @anthonyMeu caso (um autocommand)
set shortmess+=F
funcionou.fonte
Isso acontece comigo se estou salvando um arquivo que está em um diretório onde não tenho permissões de gravação no diretório. Fiz um chmod 777 no diretório (já tinha permissão de gravação no próprio arquivo) e a mensagem "Pressione ENTER" não aparece mais.
fonte
Mas se você estiver executando um comando a partir da linha de comando do vim. Então é meio complicado. Você pode adicionar uma palavra-chave
silent
antes do seu comando real. Isso o trará de volta à janela do vim automaticamente após a execução do comando. Mas você ainda precisa executar manualmente,redraw
pois algumas das janelas como NERD_Tree precisam ser redesenhadas.Para este caso, tente seguir as instruções do documento de ajuda do vim:
Este link fornece outra saída. Coloque isso em seu arquivo vimrc
E então você pode usar
:Silent command
como um comando normal.fonte
Ao meu lado, a solução foi usar com
silent
mais frequência em uma cadeia de comando .Especificamente antes,
.vimrc
tinha:Isso foi alterado para:
Antes, o "Pressione ENTER" nem sempre aparecia, mas irritantemente com frequência. Os
silent
s adicionais corrigiram isso. (Parece quesilent
não é necessário,redraw!
pois:cc
causou a mensagem "Pressione ENTER".)PARA SUA INFORMAÇÃO:
A motivação deste
M
mapeamento é apenas pressionarM
no modo normal para:make
tudo está sobgit
controle de qualquer maneira)make
Meus
Makefile
s são geralmente construídos de tal forma que isso leva apenas uma fração de segundo.Com um pouco de ajuste, isso também pode ser aplicado a
C
cargas de trabalho diferentes:Em
.vimrc
adicionarIsso permite
vim
interpretar mensagens como a seguir para:cc
(erro de exibição):(
E
rrors, arnings,W
nfoI
, baseado emvim
magia)Exemplo de como usar isso para scripts Python . (Desculpe, nenhuma cópia aqui, é uma história diferente.)
fonte
Se o erro for causado pelo E303, criar um diretório temporário no
.vimrc
arquivo pode corrigi-lo.Depois de abrir qualquer arquivo, escreva e digite:
Se houver erros, ele aparecerá.
Se você vir E303 (Erro303) "Não foi possível abrir o arquivo de troca para" {nome do arquivo} ", recuperação impossível", pode indicar que há uma tentativa antiga de recuperar um arquivo de troca (provavelmente perdido ou inexistente) no sistema .
Para corrigir isso, atribua um diretório temporário no
.vimrc
arquivo.Para encontrar a localização do
.vimrc
arquivo, digite e insira o seguinte:Abra o arquivo
$ vi .vimrc
Anexe isso ao final do arquivo:
Salve e feche com
:wq
Por fim, recarregue o perfil com:
Tente abrir qualquer arquivo com VI. O problema deve ser corrigido.
fonte
No
gvim
, se você tiver definidoguioptions+=!
(Adicionado!
emguioptions
), este é por causa disso. Esta opção (!
) fazgvim
executar alguns comandos no terminal externo (que suportam mais recursos, como cores e tantos outros).Você pode experimentar usando
:set guioptions-=i
e ver se funciona para você.fonte