web-dev-qa-db-fra.com

Comment puis-je désactiver l'invite "Appuyez sur ENTRÉE ou tapez la commande pour continuer" dans Vim?

Existe-t-il un moyen de désactiver l'invite "Appuyez sur ENTRÉE ou tapez la commande pour continuer" qui apparaît après l'exécution d'une commande externe?

EDIT: trouvé une solution de contournement: ajoutez un <CR> supplémentaire au raccourci dans mon fichier .lvimrc.

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

De meilleures idées?

86
Johan Kotlinski

Vous avez découvert une solution: ajoutez un <CR>.__ supplémentaire. à la commande map.

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

Je ne sais pas comment le faire globalement pour une seule commande:

:silent !<command>

Assurez-vous d'inclure un espace après silent

58
Tabitha
:help hit-enter
27
anthony

Voici comment j'ai résolu le problème suivant: exécuter un programme externe en mode silencieux perturbe l'écran en mode texte vim (d'après mon expérience, gvim ne souffre pas de ce problème):

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

Utilisez-le à la place de la commande silencieuse habituelle:

:Silent top
17
emil.p.stanchev

Définissez la cmdheight sur 2 dans mon vimrc (:e $MYVIMRC):

:set cmdheight=2

Plus d'infos ici .

12
TankorSmash

Il s’agit peut-être d’une erreur de syntaxe dans vimrc file 

10
8.8.8.8

La réponse d'Anthony m'a emmenée au bon endroit et j'ai pu configurer gvim pour qu'il ne se limite pas à beaucoup de messages.
J'ai ajouté set shortmess=aoOtI à mon fichier gvimrc.
Il est expliqué dans la page d’aide qui vous est présentée par :help shortmess.
Les lettres désignent des classes de messages que vous ne voulez pas voir ou que vous souhaitez que vim tronque pour éviter la frappe appuyez sur enter stop.
J’avais déjà réussi à le faire auparavant en définissant une grande fenêtre initiale avec columns=130 dans gvimrc, de sorte que peu de messages la surchargeraient et nécessiteraient l’ennuyeux, épuisant, le besoin d’appuyer sur Entrée. 

7
Juan Lanus

C’est ainsi que j’exécute des commandes externes dans des scénarios difficiles sans avoir "Appuyez sur Entrée". Contrairement à :silent, je peux toujours voir le résultat de la commande.

Ligne de commande

:exe ":!<command>" | redraw

Script/fonction

exe ':!<command>' 
redraw

Mappage avec <expr>

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

Mappage avec <expr> qui appelle une fonction

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

Mettre un redessin avant que l’écran efface fonctionne aussi .. .. Voici ce que j’avais:

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

Mais cela ne déclenchera pas Invite:

exe 'ls'  
redraw  
exe 'b4'
3
Liang Li

Vous pouvez utiliser:

call feedkeys(" ")

Par exemple:

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
1
yolenoyer

Si votre erreur est provoquée par E303, alors la création d'un répertoire temporaire dans le fichier .vimrcpeut le réparer.

Après avoir ouvert n’importe quel fichier, écrivez et entrez:

:messages

S'il y a des erreurs, il sera invité.

Si vous voyez E303 (Error303) "Impossible d'ouvrir le fichier d'échange pour" {nom_fichier} ", récupération impossible", cela peut indiquer une ancienne tentative de récupération d'un fichier d'échange (très probablement perdu ou inexistant) dans le système. .

Pour résoudre ce problème, créez un répertoire temporaire dans le fichier .vimrc.

Pour trouver l'emplacement du fichier .vimrc, tapez et entrez ceci:

$ locate .vimrc
/root/.vimrc

Ouvrez le fichier $ vi .vimrc

Ajoutez ceci à la fin du fichier:

set directory=.,$TEMP

Sauvegarder et fermer avec :wq

Enfin, rechargez le profil avec:

$ . /etc/profile

Essayez d'ouvrir n'importe quel fichier avec VI. Le problème doit être résolu.

0
Rafael Vidal

J'ai un problème similaire, mais lorsque je lance un argument pour remplacer la même chaîne dans plusieurs fichiers, par exemple,

 argdo %s/something/Something/eg|update

Je devais constamment appuyer sur la page.

Vous pouvez définir l'option suivante avant d'exécuter le script afin qu'il n'y ait que l'invite finale au lieu de plusieurs invites.

:set nomore
0
Matt Vukomanovic

Cela m’arrive si j’enregistre un fichier qui se trouve dans un répertoire dans lequel je n’ai pas d’autorisation d’écriture. J'ai fait un chmod 777 sur le répertoire (j'avais déjà des droits d'écriture sur le fichier lui-même) et le message "Appuyez sur Entrée" n'apparaît plus.

0
jayemar
  • Si vous utilisez une carte de clés, votre vie peut être beaucoup plus facile en ajoutant plusieurs autres à la fin de votre commande - mais deux fois suffisent généralement. 
  • Mais si vous exécutez une commande à partir de la ligne de commande vim. Alors c'est un peu délicat. Vous pouvez ajouter le mot clé silent avant votre commande. Cela vous ramènera automatiquement à la fenêtre vim après l'exécution de la commande. Mais vous devez toujours exécuter manuellement redraw car certaines des fenêtres telles que NERD_Tree doivent être redessinées.

    • Dans ce cas, essayez de suivre les instructions de la documentation d'aide de vim:

      Pour réduire le nombre d'invites à accès direct:

      • Définissez 'cmdheight' sur 2 ou plus.
      • Ajouter des drapeaux à 'shortmess'.
      • Réinitialisez 'showcmd' et/ou 'règle'.
    • Ce lien fournit un autre moyen de sortir. Mettez ceci dans votre fichier vimrc 

      commander! -nargs = 1 Silent 
      \execute 'silent!' . 
      \| exécutez 'redessiner!' 
      

Et ensuite, vous pouvez utiliser :Silent command comme une commande normale.

0
huangzonghao

À mes côtés, la solution était d'utiliser silent plus fréquemment dans une chaîne de commande .

Plus précisément auparavant, .vimrc avait:

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

Cela a été changé pour:

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

Auparavant, la "Presse ENTRÉE" n'était pas toujours présente, mais souvent ennuyeuse. Le silents supplémentaire a résolu ce problème. (Il semble que silent ne soit pas nécessaire sur redraw!, car :cc a provoqué le message "Appuyez sur Entrée".)

Cette modification a pour inconvénient de ne plus afficher la sortie de :cc, vous devez donc deviner quelle est l'erreur. Un petit Tweak corrige ceci:

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

Cela fait apparaître automatiquement la liste des erreurs QuickFix (sortie de make) (et, par vim-magic, disparaître s'il n'y a pas d'erreur).

FYI:

La motivation de cette correspondance M- consiste simplement à appuyer sur M en mode normal pour:

  • sauvegarder l'édition (quand on utilise make tout est sous contrôle git- quand même)
  • invoquer make
  • et passer directement à la première erreur ou avertissement

Mes Makefiles sont généralement construits de telle sorte que cela ne prend qu'une fraction de seconde.

Avec un peu de peaufinage, cela peut également s'appliquer aux charges de travail de type non -C:

Dans .vimrc add

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

Ceci permet à vim d’interpréter les messages comme suit pour :cc (erreur d’affichage):

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

(Errors, Wnings, Info, basé sur la magie vim)

Exemple d'utilisation de ceci pour Python scripts . (Désolé, pas de copie ici, c'est une autre histoire.)

0
Tino