L'histoire de l'exécution de python et de l'affichage des résultats sans fermer vim

Chose que tu veux faire

  1. Exécutez python sans fermer vim
  2. Afficher le résultat de l'exécution dans un nouveau tampon

Ce qui a été fait

--Exécution en appuyant sur ` 'uniquement pour les fichiers python --Le résultat de l'exécution est affiché dans un nouveau tampon

vimpy.gif

endroit

Ce contenu a été écrit en vimrc . vimrc est

 :edit $MYVIMRC

Vous pouvez l'ouvrir avec. Si vous n'avez pas modifié les paramètres

:vnew $HOME/_vimrc

Vous pouvez également l'ouvrir ici. Vous pouvez vérifier les paramètres avec : version.

Aide pour vimrc: h dans vimrc`

Recommandation: Tous les fichiers de configuration de Vim doivent être placés dans le répertoire $ HOME / .vim / ($ HOME / vimfiles / sur MS-Windows). Cela facilite la copie du fichier de configuration sur un autre système.

Vous pouvez vérifier «$ HOME» avec «: echo $ HOME». Si vous créez «vimrc» sous «$ HOME / vimfiles», il est nommé «vimrc», mais sous «$ HOME». Si vous le mettez, il s'appellera _vimrc.

Ce que j'ai fait

Manière naïve

:!python %

La commande Ex :! Hoge exécutera cmd hoge. Affectez-la à<F5>.

autocmd BufRead,BufNewFile *.py inoremap <F5> <Esc>:w<CR>:! python %<CR>
autocmd BufRead,BufNewFile *.py nnoremap <F5> :w<CR>:! python %<CR>

Vous pouvez maintenant exécuter le fichier ouvert en appuyant sur «».

problème

Le résultat de l'exécution disparaît en appuyant sur ʻENTER`.

Comment ouvrir un nouveau tampon

Je l'ai configuré pour ouvrir un nouveau tampon pour résoudre le problème ci-dessus, mais à moins qu'il ne soit déjà ouvert, il se multipliera chaque fois que j'appuie sur <F5>, donc j'ai besoin de séparer les cas pour résoudre cela. Parce que c'est devenu long, j'ai créé une fonction appelée Pyexe (). À ce stade, puisque le :! Hoge utilisé précédemment est uniquement exécuté, le système (hoge) qui obtient la sortie sous forme de chaîne de caractères est utilisé.

"Définir la fonction
function Pyexe()
"Préparation du retour après avoir entré le résultat dans le tampon de sortie
    "Obtenir la position actuelle du curseur
    :let pos=getpos(".")
    "Obtenir l'identifiant de la fenêtre actuelle
    :let cwinid=win_getid()
    "Récupère le nom de fichier du tampon de fenêtre actuel
    :let fileName=expand('%')
"Réglage du tampon pour la sortie
    "Décidez du nom du fichier à afficher
    :let outFileName="~pyOut"
"Préparation pour vérifier si la fenêtre de sortie est déjà ouverte
    "Obtenez le numéro de tampon s'il existe un tampon pour la sortie.Si ça n'existe pas-1.
    :let bnr=bufnr(outFileName)
    "Obtenir l'ID de fenêtre du tampon pour la sortie(Format de liste).Liste vide si elle n'existe pas.
    :let wids=win_findbuf(bnr)
"S'il y a un tampon pour la sortie, changez l'ID de la fenêtre en outWindid.Faire si ça n'existe pas.
    if bnr == -1 || len(wids)==0
    "Si ça n'existe pas
        "Autoriser la fermeture du tampon de sortie en même temps lorsque le fichier python est fermé
        :autocmd QuitPre <buffer> exe(':bwipeout!') g:bnr
        "Divisez la fenêtre pour créer un tampon pour la sortie
        :exe 'vertical rightbelow new' outFileName
        "Définissez le type de tampon sur nofile car l'utilisateur n'écrit pas
        :set buftype=nofile
        "Réglez pour quitter en appuyant simplement sur q en mode normal.
        "<buffer>L'option doit être appliquée uniquement au tampon de sortie créé cette fois..
        :nmap <buffer> q <C-u>:bwipeout!<CR>
        "Ajuster la taille de la fenêtre
        :vertical resize 70
        "Obtenez le numéro de tampon de la mémoire tampon pour la sortie
        :let bnr=bufnr(outFileName)
    else
    "S'il y a
        "Récupère l'ID de fenêtre du tampon de sortie dans la liste
        :let outWinid=wids[0]
        "Passer à la fenêtre du tampon de sortie
      :call win_gotoid(outWinid)
    endif
"production
    "Aller à la fin du tampon de sortie
    :call setpos(bnr,"$")
    "Appelez cmd pour exécuter python
    :let @r=system('python '.fileName)
    "Mettre dans le tampon de sortie
    :put r
    "Re-représentation
    :redraw!
"Revenir à la position de départ
    "Aller à la fenêtre du fichier python
    :call win_gotoid(cwinid)
    "Déplacez le curseur sur la position de départ
    :call setpos(".",pos)
endfunction

Après cela, attribuez ceci à ` '' uniquement pour python.

"Uniquement pour les fichiers python<F5>Rendre possible l'exécution en appuyant sur une touche
autocmd BufRead,BufNewFile *.py inoremap <F5> <Esc>:w<CR>:call Pyexe()<CR>
autocmd BufRead,BufNewFile *.py nnoremap <F5> :w<CR>:call Pyexe() <CR>

Recommended Posts

L'histoire de l'exécution de python et de l'affichage des résultats sans fermer vim
L'histoire de Python sans opérateurs d'incrémentation et de décrémentation.
L'histoire de Python et l'histoire de NaN
Le processus d'installation d'Atom et de l'exécution de Python
L'histoire de la manipulation des variables globales Python
Principes de base pour exécuter NoxPlayer en Python
L'histoire d'essayer deep3d et de perdre
L'histoire du traitement A du blackjack (python)
L'histoire selon laquelle le coût d'apprentissage de Python est faible
Résumé des différences entre PHP et Python
La réponse de "1/2" est différente entre python2 et 3
Spécification de la plage des tableaux ruby et python
Comparez la vitesse d'ajout et de carte Python
Traitement d'image? L'histoire du démarrage de Python pour
L'histoire de la lecture des données HSPICE en Python
Prise en compte des forces et faiblesses de Python
Python - Explication et résumé de l'utilisation des 24 meilleurs packages
le zen de Python
Visualisez la gamme d'insertions internes et externes avec python
L'histoire de FileNotFound en Python open () mode = 'w'
L'histoire de sys.path.append ()
Référence et modification de la limite supérieure récursive Python
J'ai vérifié les versions de Blender et Python
L'histoire de la conversion automatique du langage de TypeScript / JavaScript / Python
L'histoire de la mise en œuvre du sujet Facebook Messenger Bot avec python
Visualisez les résultats des arbres de décision réalisés avec Python scikit-learn
Sakura L'histoire du fonctionnement de la bouteille Python sur Internet
L'histoire de l'affichage d'images avec OpenCV ou PIL (uniquement)
L'histoire du rubyiste aux prises avec Python :: Dict data with pycall
Le processus de création et d'amélioration du code Python orienté objet
Le websocket de toio (nodejs) et python / websocket ne se connecte pas.
Je veux connaître la nature de Python et pip
[Astuces] Problèmes et solutions dans le développement de python + kivy
[Python] Tensorflow 2.0 ne supportait pas Python 3.8, donc l'histoire de la rétrogradation de Python
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python
L'histoire de la construction de Zabbix 4.4
Vers la retraite de Python2
Réutiliser les résultats du clustering
À propos des fonctionnalités de Python
Installation source et installation de Python
Le pouvoir des pandas: Python
L'histoire du retour au front pour la première fois en 5 ans et de la refactorisation de Python Django
J'ai comparé la vitesse de Hash avec Topaz, Ruby et Python
L'histoire selon laquelle la version de python 3.7.7 n'était pas adaptée à Heroku
Remarque: obtenez les premier et dernier éléments de Python OrderedDict de manière non destructive
Python: Mettez à jour pyenv sans réfléchir et résolvez le phénomène "Où est Python?"
Le 14 mars est le jour du rapport de circonférence. L'histoire du calcul du ratio de circonférence avec python
[Introduction à Python] J'ai comparé les conventions de nommage de C # et Python.
[Python] Comment obtenir le premier et le dernier jour du mois
[Python] J'ai expliqué en détail la théorie et la mise en œuvre de la régression logistique
L'histoire de la création d'un pilote standard pour db avec python.
[Python] J'ai expliqué en détail la théorie et la mise en œuvre de l'arbre de décision
Obtenez et définissez la valeur du menu déroulant en utilisant Python et Selenium
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (Partie 1)
Convertissez le résultat de python optparse en dict et utilisez-le