2009-05-20 22 views
78

¿Hay alguna forma de deshabilitar el mensaje "Presione INTRO o escriba el comando para continuar" que aparece después de ejecutar un comando externo?¿Cómo desactivo el aviso "Presione ENTER o escriba el comando para continuar" en Vim?

EDIT: Encontré una solución: Agregue <CR> al atajo en mi .lvimrc.

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

¿Alguna idea mejor?

+9

En Windows 7, aparecerá este aviso a menudo debido a errores "no se puede abrir el archivo de intercambio" que se han impreso pero no se ven, lo que provoca la solicitud. La solución es poner 'set dir = $ TEMP' en tu vimrc. Esto le dice a vim que use la carpeta temporal correcta para sus archivos temporales. Esto, a su vez, corrige los errores y elimina las indicaciones de "presionar enter". – Lucas

Respuesta

42

encontrado a cabo una solución: añadir un extra de <CR> al comando de mapa.

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

Nunca hubiera pensado en esto. ¡Absolutamente brillante! –

+0

Sí, agregando el extra a mi comando también funcionó. –

+1

Increíblemente simple. ¡Es súper efectivo! –

53

no estoy seguro de cómo hacerlo a nivel mundial, aunque para un solo comando:

:silent !<command> 

Asegúrese de incluir un espacio después silent

+2

Lamentablemente no es muy útil para mí, daña la pantalla y tengo que presionar Ctrl-L ... que es aún más molesto que presionar espacio. –

+1

¡Aunque funcionó para mi script grep! –

+4

En línea con el comentarista a continuación (que sugirió agregar al final del comando), al usar silencioso, puede agregar , para que no tenga que presionarlo manualmente. Funciona bien con la pantalla, entonces. –

25
:help hit-enter 
+1

Tengo curiosidad por saber por qué alguien votó esta respuesta, ya que ': help hit-enter' proporciona información de fondo bastante útil en el mensaje" Presione ENTER ... ". ¿Le importaria explicar? –

+24

¿Qué información de ': help hit-enter' responde a la pregunta? No puedo encontrarlo –

+1

Es posible que pueda obtener un mensaje "Presione ENTER" desde el comando de escribir todo antes de pagar. La información de shortmess a la que se vincula hit-enter es válida en ese caso. Sin embargo, el mensaje que está recibiendo proviene del bombardeo, por lo que la sugerencia de Wergan es la correcta. Como se indica en :help :silent "Cuando se utiliza esto para un comando externo, esto puede causar que la pantalla se arruine. Use | CTRL-L | para limpiarla". Puede agregar: redibujar o Ctrl-L a su comando para arreglar eso. O simplemente haz las dos declaraciones que ya estás haciendo. –

15

Esta es la forma en que tratamos con el problema de que la ejecución de un programa externo a través líos silenciosas la pantalla en vim en modo texto (en mi experiencia, gvim no sufre de este problema):

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

usarlo en lugar del comando regular de silencio:

:Silent top 
3

Poner un redibujado antes de la pantalla clara también funciona. Aquí es lo que tenía:

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

Pero esto no va a desencadenar mensaje:

exe 'ls' 
redraw 
exe 'b4' 
+0

Esto me ayudó, ya que me limité a deshabilitar programáticamente el mensaje en cierto lugar dentro de una función. Solo emitir un 'redraw' lo resolvió. La otra solución no encajaba, ya que quería aceptar la entrada del usuario entre el mensaje original y la desaparición del aviso. –

8

Es posiblemente un error de sintaxis en vimrc archivo

+4

Esto. Había usado 'set number' y luego' set syntax' justo debajo en mi archivo .vimrc. Una vez que eliminé 'set syntax', Vim ya no me lo pidió. – piperchester

+1

@piperchester * esto * funcionó! Intenté toneladas de sugerencias y solo esto funcionó. Gracias :) –

11

Ajuste el cmdheight a 2, en my vimrc (:e $MYVIMRC):

:set cmdheight=2 

Más información here.

+0

Esto es perfecto para consultas de búsqueda realmente largas –

6

La respuesta de anthony me llevó al lugar correcto y pude configurar gvim para que no se detuviera en muchos mensajes.
He agregado el conjunto shortmess=aoOtI a mi archivo gvimrc.
Se explica en la página de ayuda presentada por :help shortmess.
Las letras indican las clases de mensajes que no desea ver, o le gustaría que vim trunque para evitar el , pulse intro detener.
Lo logré antes estableciendo una ventana inicial amplia con columns=130 en gvimrc, por lo que pocos mensajes se desbordarían y requeriría la molesta y agotadora necesidad de presionar enter.

2

Así es como ejecuto comandos externos en escenarios difíciles sin tener "Presione ENTER". A diferencia de :silent, aún puedo ver el resultado del comando.

línea de comandos

:exe ":!<command>" | redraw 

script/función

exe ':!<command>' 
redraw 

Mapeo con <expr>

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

Mapeo con <expr> que llama a una función

map <expr> <F5> MyFoo() 
fu! MyFoo() 
    return ":exe ':!<command>' | redraw\<CR>" 
endf 
1

Se puede utilizar:

call feedkeys(" ") 

Por ejemplo:

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 
0

Esto me pasa si yo estoy ahorrando un archivo que está en un directorio donde no tengo permisos de escritura para el directorio. Hice un chmod 777 en el directorio (ya tenía permisos de escritura en el archivo) y el mensaje "Presione ENTER" ya no aparece.

0

que tienen un problema similar, pero cuando corro un argdo para sustituir a la misma cadena en varios archivos por ejemplo,

argdo %s/something/Something/eg|update 

yo estaba constantemente tener que pulsar la página hacia abajo.

Puede configurar la opción siguiente antes de ejecutar la secuencia de comandos de modo que sólo hay el símbolo del último lugar de muchos avisos

:set nomore 
0
  • Si está utilizando un mapa de teclado, entonces su vida puede ser mucho más fácil agregando varios más al final de su comando, pero generalmente 2 veces es lo suficientemente bueno.
  • Pero si está ejecutando un comando desde la línea de comando vim. Entonces es un poco complicado. Puede agregar la palabra clave silent antes de su comando en realidad. Te devolverá a la ventana de vim automáticamente después de que se haya ejecutado el comando. Pero aún necesita ejecutar manualmente redraw ya que algunas de las ventanas como NERD_Tree necesitan volver a dibujarse.

    • Para este caso, tratar de seguir las instrucciones del vim ayuda doc:

      Para reducir el número de golpe a entrar indicaciones:

      • Set 'cmdheight' a 2 o mas alto.
      • Agregue banderas a 'shortmess'.
      • Restablecer 'showcmd' y/o 'regla'.
    • This link proporciona otra salida.Poner esto en su archivo vimrc

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

Y entonces puede usar :Silent command como una orden regular.

Cuestiones relacionadas