Que diriez-vous d'ajouter un autocmd
à votre ~/.vimrc
-file, en créant un mappage:
autocmd FileType python map <buffer> <F9> :w<CR>:exec '!python3' shellescape(@%, 1)<CR>
autocmd FileType python imap <buffer> <F9> <esc>:w<CR>:exec '!python3' shellescape(@%, 1)<CR>
alors vous pouvez appuyer sur <F9>
pour exécuter le tampon actuel avecpython
Explication:
autocmd
: commande sur laquelle Vim s'exécutera automatiquement {event}
(ici: si vous ouvrez un fichier python)
[i]map
: crée un raccourci clavier <F9>
en mode insertion / normal
<buffer>
: Si plusieurs tampons / fichiers sont ouverts: utilisez simplement celui actif
<esc>
: quitter le mode insertion
:w<CR>
: enregistre votre fichier
!
: exécute la commande suivante dans votre shell (essayez :!ls
)
%
: est remplacé par le nom de fichier de votre tampon actif. Mais comme il peut contenir des éléments comme des espaces et d'autres "mauvais" trucs, il vaut mieux ne pas écrire :python %
, mais utiliser:
shellescape
: échapper aux caractères spéciaux. Les 1
moyens avec une barre oblique inverse
TL; DR: La première ligne fonctionnera en mode normal et une fois que vous appuyez <F9>
dessus, vous enregistrez d'abord votre fichier, puis exécutez le fichier avec python. Le second fait la même chose, mais laisse d'abord le mode insertion
autocmd FileType python nnoremap <buffer> ....
nnoremap <buffer> <F9> :!python %<cr>
semble fonctionner dans Vim 7.4.1689. À quoi sert le shellescape?Passez simplement en mode normal en appuyant sur
<esc>
et tapez:la source
J'ai ceci dans mon fichier .vimrc:
Lorsque j'ai fini de modifier un script Python, j'appuie simplement sur
<F5>
. Le script est enregistré puis exécuté dans un écran vide.la source
m
touche plus,
touche au lieu deF5
touche?Insert
mode. Pour une exécution enNormal
mode, utilisez à lanmap
place deimap
.Je préfère la sortie Python redirigée vers une nouvelle fenêtre Vim (et si cette fenêtre est laissée ouverte, mettez à jour son contenu la prochaine fois que vous exécuterez du code Python avec cette fonction):
la source
.vimrc
? Sinon, comment dois-je donner ce script à vim? (Noob here)En vous basant sur les réponses précédentes, si vous aimez voir le code tout en regardant sa sortie, vous pourriez trouver la commande
:ter
(:terminal
) utile.En utilisant
vert
de la deuxième ligne exécute le code en division verticale au lieu d'horizontale.Le point négatif est que si vous ne fermez pas la fenêtre fractionnée où le code a été exécuté, vous aurez beaucoup de fractionnements après plusieurs exécutions (ce qui ne se produit pas dans Python IDLE d'origine où la même fenêtre de sortie est réutilisée).
(Je garde ces lignes à l'intérieur
/home/user/.vimrc
)la source
Gardez à l'esprit que vous pouvez répéter la dernière commande utilisée avec
@:
, donc c'est tout ce que vous devez répéter sont ces deux caractères.Ou vous pouvez enregistrer la chaîne
w !python
dans l'un des registres (comme"a
par exemple), puis appuyez sur:<C-R>a<CR>
pour insérer le contenu du registrea
dans la ligne de commande et l'exécuter.Ou vous pouvez faire ce que je fais et carte
<leader>z
pour:!python %<CR>
exécuter le fichier en cours.la source
Si vous ne voulez pas voir "
:exec python file.py
" imprimé à chaque fois, utilisez ceci:Cela n'a pas non plus gâché ma barre d'état Powerline / Vim-Airlines.
la source
Module d'extension : jupyter-vim
Vous pouvez donc envoyer des lignes (
<leader>E
), une sélection visuelle (<leader>e
) à un courantjupyter-client
(le remplacement deipython
)Je préfère séparer l'éditeur et l'interpréteur (chacun dans sa coquille). Imaginez que vous envoyez une mauvaise commande de lecture d'entrée ...
la source
Pour une utilisation générique (exécutez python / haskell / ruby / C ++ ... à partir de vim basé sur le
filetype
), il existe un joli plugin appelé vim-quickrun . Il prend en charge de nombreux langages de programmation par défaut. Il est également facilement configurable, donc on peut définir des comportements préférés pour n'importe quel type de fichier si nécessaire. Le repo github n'a pas de fichier readme sophistiqué, mais il est bien documenté avec le fichier doc.la source
La réponse acceptée fonctionne pour moi (sous Linux), mais je voulais que cette commande enregistre également le tampon avant de l'exécuter, alors je l'ai légèrement modifiée:
Le
:w <bar>
sauvegarde le tampon PUIS exécute le code qu'il contient.la source
Une méthode simple serait de taper
:
en mode normal, puis appuyez sur la touche fléchée vers le haut du clavier et appuyez sur Entrée. Cela répétera les dernières commandes tapées sur VIM.la source
Si vous voulez revenir rapidement à travers vos
:w
commandes, une chose intéressante est de taper:w
puis d'appuyer sur la flèche vers le haut. Il ne parcourra que les commandes commençant parw
.la source
J'ai ceci sur mon .vimrc:
qui sauvegarde le tampon courant et exécute le code en appuyant uniquement sur Esc + F9
la source
Vous pouvez également utiliser skywind3000 / asyncrun.vim . C'est similaire à ce que @FocusedWolf a répertorié.
la source
Vous pouvez étendre pour n'importe quelle langue avec 1 combinaison de touches avec la commande augroup, par exemple:
la source
Pensez à utiliser la ligne shebang, vous pourrez donc l'utiliser avec toujours n'importe quel langage, pas seulement Python.
Ajout de shebang:
Ajoutez ceci à la première ligne de votre script:
ou ceci, si vous utilisez Python 2:
Keymap Vim:
Ajoutez ceci à votre
~/.vimrc
:Rendre le fichier exécutable:
Tapez Vim:
ou dans le terminal:
Explication:
Lorsque F7 est pressé en mode normal, Vim essaiera d'exécuter le fichier courant en tant que script bash. Ensuite, l'interpréteur bash verra la ligne shebang et comprendra que ce fichier doit être passé à Python (ou à tout autre programme si nécessaire).
Vous pourrez également exécuter votre script à partir du terminal en utilisant son nom:
au lieu de cette façon (cela fonctionnera aussi):
la source
Ce mappage .vimrc nécessite Conque Shell , mais il réplique le comportement de Geany (et d'autres éditeurs X):
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; \" "')
la source
Placez votre curseur quelque part dans le code. Faites un clic droit et choisissez l'un des choix "Sélectionner" pour mettre en évidence votre code. Appuyez ensuite sur Ctrl: et vous verrez la nouvelle invite '<,>'
Maintenant, tapez! Python et voyez si cela fonctionne.
Je passe juste des jours à essayer de résoudre le même problème !!! J'ai utilisé le codage:
Après avoir tiré tous mes cheveux, j'ai enfin réussi!
la source
:% !python
.%
signifie simplement toutes les lignes.Au lieu de mettre le mappage de commande dans votre
.vimrc
, placez le mappage dans votre~/.vim/ftplugin/python.vim
fichier (Windows$HOME\vimfiles\ftplugin\python.vim
). Si vous n'avez pas ce fichier ou ces répertoires, créez-les simplement. De cette façon, la clé n'est mappée que lorsque vous ouvrez un.py
fichier ou tout autre fichier avecfiletype=python
, car vous n'exécuterez cette commande que sur des scripts Python.Pour le mappage proprement dit, j'aime pouvoir éditer dans Vim pendant que le script s'exécute. En partant de la réponse de @cazyas, j'ai ce qui suit dans mon
ftplugin\python.vim
(Windows):Cela exécutera le script Python actuel en arrière-plan. Pour Linux, changez-le simplement en ceci:
la source
la source