Publions d'abord une photo :
Pour certains petits projets Python, utiliser vim est un bon choix. Le contenu de cet article est compilé à partir de mes réponses sur Zhihu. Quelle est la meilleure pratique pour écrire Python dans Vim ? , le contenu suivant est un complément aux anciennes réponses de Zhihu, en particulier celles qui sont principalement axées sur vim8. Si vous souhaitez plus de contenu, vous pouvez consulter certaines des réponses de Zhihu à cette question.
Si vous utilisez vim8, vous pouvez utiliser la détection asynchrone w0rp/ale au lieu de la syntaxe. Vous n'avez plus à envier le flycheck, ni à rester bloqué à cause de la vérification de la syntaxe. .
Concernant la configuration personnalisée d'ale, elle est en fait un peu "pointilleuse". Généralement, utiliser celle par défaut devrait suffire, mais j'aime les choses sophistiquées, alors j'ai essayé. Les éléments impliqués peuvent être assez détaillés. Vous pouvez directement consulter space-vim: syntax-checking pour comprendre la configuration générale. L'objectif principal est de réextraire et d'afficher le contenu de la ligne d'état fourni par ale. S'il n'y a pas d'erreur de syntaxe, elle ne sera pas affichée dans la ligne d'état. S'il y a un avertissement ou une erreur, elle peut être distinguée par différentes couleurs.
Quant au signe d'avertissement ou d'erreur sur le côté, j'aime qu'il soit plus propre et j'utilise juste la couleur de premier plan pour le distinguer. Parfois, cela ressemble à des taches dessus. , je ne pense pas que ça ait l'air bien.
la mise en évidence intégrée de vim pour python est un peu faible, même self n'est pas mis en évidence pour me Up, cela peut être amélioré via python-mode/python-mode :
hi pythonSelf ctermfg=174 guifg=#6094DB cterm=bold gui=bold
Pour plus de détails, vous pouvez voir space-vim ici : python layer
dans la syntaxe/python de python -mode Dans .vim, vous pouvez voir un groupe de surbrillance plus détaillé que la syntaxe/python.vim fournie avec vim. Il ne devrait pas être difficile de comprendre chaque contenu. Modifiez simplement le style de surbrillance en fonction de la table des couleurs. Il s'agit du tableau de comparaison des couleurs du terminal 256. 256 couleurs du terminal et leur équivalent 24 bits (ou similaire), il s'agit du tableau de comparaison des couleurs de l'interface graphique. Tableau de couleurs HTML complet.
L'avantage est que l'effet souhaité est entièrement personnalisable, mais il présente également des inconvénients car il peut ne pas convenir à tous les thèmes vim. Lorsque vous changez de thème, ces surlignages personnalisés par Python peuvent ne pas correspondre un peu. Même si nous ne comptons que les thèmes vim populaires, il y a probablement deux chiffres. Certains sont des tons froids, certains sont des tons chauds, certains sont principalement bleus et certains sont principalement rouges. Il ne devrait pas être facile de trouver des couleurs polyvalentes. Cependant, il se peut qu'il n'y ait que quelques thèmes que tout le monde aime, alors choisissez vous-même...
En fait, le mode python est un peu un chef-d'œuvre, comprenant de nombreuses fonctions d'utilisation de vim pour écrire du python, si vous êtes intéressé Vous pouvez essayer de l'utiliser pour "conquérir le monde d'un seul coup". Cependant, pour l'instant, je n'aime que cette partie.
Cela peut être effectué via google/yapf. Après avoir installé yapf, <LocalLeader>=
peut formater le fichier actuel comme suit :
autocmd FileType python nnoremap <LocalLeader>= :0,$!yapf<CR>
C'est parce que j'utilise principalement vim, donc j'utilise YouCompleteMe. Le backend actuel utilise le jedi-vim déjà mentionné. Si vous n'aimez pas ycmd, vous pouvez essayer neovim. >
import pour trier diverses importations Cela ne semble-t-il pas un peu compliqué ? Utilisez timothycrosley/isort pour l'organiser :autocmd FileType python nnoremap <LocalLeader>i :!isort %<CR><CR>
précédent par !
Dans en fait, il y a encore quelques petits points à noter : AsyncRun!
... exec "!g++ % -o %<" exec "!time ./%<" ...
par !
? La réponse est non. Si vous souhaitez obtenir l'effet précédent, cela devrait être comme ceci : AsyncRun!
exec "AsyncRun! g++ -stdc++11 % -o %<; time ./%<"