153 votes

Faire fonctionner du code Python dans Vim

Je suis en train d'écrire du code Python en utilisant Vim, et à chaque fois que je veux exécuter mon code, je tape ceci à l'intérieur de Vim:

:w !python

Cela devient frustrant, donc je cherchais une méthode plus rapide pour exécuter du code Python à l'intérieur de Vim. Exécuter des scripts Python depuis un terminal peut-être? Je suis sous Linux.

1voto

scififlamingo Points 121

Avez-vous essayé d'utiliser simplement :

:!python nameofyourfile.py

exemple : https://www.youtube.com/watch?v=mjUxEX4OssM

Cela pourrait être simplement une question de syntaxe, ou il se pourrait que vous manquiez des plugins ou des packages utilisés par d'autres. Utilisez-vous simplement le terminal, ou quelque chose comme MobaXterm ? Le code ci-dessus fonctionne pour exécuter un script python en utilisant le terminal à l'intérieur de vim (la sortie s'affichera à l'intérieur de la session vim).

1voto

ephemerr Points 756

Je recommande d'utiliser le plugin Vim-Slime pour l'envoi de code Python "par bloc" de vim vers la console Python.

https://github.com/jpalardy/vim-slime

1voto

Moshe D Points 648

:!./% exécute le script Python actuel, cela ne fonctionnera qu'avec le Shebang

Vous pouvez également l'exécuter avec des arguments comme ceci :

:!./% ARG1 ARG2

0voto

user2587717 Points 31

Ce mappage du .vimrc nécessite Conque Shell, mais il reproduit le comportement de Geany (et d'autres éditeurs X):

  • Appuyez sur une touche pour exécuter
  • Exécute dans gnome-terminal
  • Attend une confirmation pour quitter
  • La fenêtre se ferme automatiquement à la sortie

    :let dummy = conque_term#subprocess('gnome-terminal -e "bash -c \"python ' . expand("%") . '; answer=\\\"z\\\"; while [ $answer != \\\"q\\\" ]; do printf \\\"\nexited with code $?, press (q) to quit: \\\"; read -n 1 answer; done; \" "')

0voto

Neo Mosaid Points 91
" exécutez le fichier python actuel dans un nouveau tampon
fonction! RunPython()
    laisser s:current_file = expand("%")
    enew|silent execute ".!python " . shellescape(s:current_file, 1)
    setlocal buftype=nofile bufhidden=wipe noswapfile nowrap
    setlocal nobuflisted
finfonction
autocmd FileType python nnoremap c :call RunPython()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X