Cela fait un moment que j'ai écrit cet article avant. Pourtant, parfois de bonnes choses volent, et avec un sentiment de gratitude, Le vimrc a considérablement changé depuis le moment où l'article a été créé, et je suis désolé que le contenu soit encore ancien, alors je l'ai ajouté. Je vous serais reconnaissant si vous pouviez vous référer aux paramètres de chaque plug-in. Si vous configurez tout cela, ce sera comme ça.
Après avoir rejoint l'entreprise, j'ai réécrit tous les paramètres de vim pour neovim. ~~ Si vous voulez créer un environnement maintenant, faisons-le avec neovim qui se déplace en douceur. ~~ Le statut de prise en charge du plug-in de vim8 a changé et il fonctionne avec vim8 sauf pour deoplete. Mais je suis néovim parce que je veux utiliser deoplete.
Consultez les articles précédents pour l'installation de neovim.
Je l'ai écrit pour Ubuntu, mais c'est presque la même chose pour mac. Vous devriez pouvoir y aller en remplaçant ʻapt-getpar
brew`
Préférences pour zsh + neovim sur Ubuntu
Si vous souhaitez écrire Python en vim, certains plugins sont indispensables. Les Pragins introduits cette fois sont les suivants.
dein.vim Shougo/dein.vim
Un gestionnaire de plug-ins qui facilite l'installation et la mise à jour des plug-ins est essentiel pour gérer de nombreux plug-ins.
J'utilisais neobundle
, le prédécesseur de dein.vim
, mais j'ai changé de travail. Maintenant que vous pouvez créer des fichiers de configuration avec * .toml
, les dépendances de plugins et les paramètres de chargement différé sont beaucoup plus faciles à lire qu'à l'ère du neobundle
.
Dark Mimuou est le Vimmer auquel je suis le plus redevable. Je ne suis pas le seul à le penser.
let s:dein_dir = expand('$CACHE/dein')
if dein#load_state(s:dein_dir)
call dein#begin(s:dein_dir)
call dein#load_toml('~/.vim/rc/dein.toml', {'lazy': 0})
call dein#load_toml('~/.vim/rc/dein_lazy.toml', {'lazy': 1})
call dein#load_toml('~/.vim/rc/dein_neo.toml', {'lazy': 1})
call dein#load_toml('~/.vim/rc/dein_python.toml', {'lazy': 1})
call dein#load_toml('~/.vim/rc/dein_go.toml', {'lazy': 1})
call dein#load_toml('~/.vim/rc/dein_frontend.toml', {'lazy': 1})
call dein#end()
call dein#save_state()
endif
En plus des paramètres dein gonflés, les paramètres du plug-in sont gérés par toml.
Dein.toml
sans chargement paresseux
Dein_lazy.toml
qui est lié à plusieurs types de fichiers et à une charge différée
Dein_ {filetype} .toml
pour le chargement différé associé à un seul type de fichier
C'est dit.
denite.nvim
Principalement utilisé comme lanceur de fichiers. Mais ce n'est pas tout. denite
est une plate-forme intégrée pour répertorier, filtrer et manipuler tout.
Dans mon cas, l'essentiel est d'afficher la liste des fichiers dans le projet → affiner → ouvrir, ~~ Grep recherche la chaîne de caractères dans le fichier ~~ (Étant donné que le contenu de la commande système grep est sorti vers QuickFix, je l'utilise actuellement. Ne pas). Sous-utilisations telles que l'affichage d'une liste de fonctions.
Il est très polyvalent car il peut gérer non seulement des fichiers, mais aussi tout. Il y a beaucoup de personnalisation telles que l'ordre de tri, le changement de moteur de recherche et la commande Grep, le fonctionnement de la cible sélectionnée.
Non seulement l'unité principale fonctionne à grande vitesse, mais le flux de `denite start → rétrécir → ouvrir 'permet de sauter des fichiers et des lignes comme s'il reflétait vos propres pensées. Il ne fait aucun doute que la vitesse d'édition s'accélérera si vous la maîtrisez.
D'un autre côté, «denite» a tendance à être compliqué à mettre en place. Vous devrez le personnaliser pour votre corps tout en lisant l'aide. Il ne sera pas explosif immédiatement après l'insco.
"Préfixe pour Denite
nmap [denite] <Nop>
map <C-j> [denite]
"Recherche de fichiers dans le projet
nmap <silent> [denite]<C-P> :<C-u>Denite file_rec -highlight-mode-insert=Search<CR>
"Rechercher les fichiers en cours de développement dans le tampon
nmap <silent> [denite]<C-B> :<C-u>Denite buffer -highlight-mode-insert=Search<CR>
"Fonctions dans le fichier/Rechercher des cours, etc.
nmap <silent> [denite]<C-O> :<C-u>Denite outline -highlight-mode-insert=Search<CR>
"fichier sous dotfiles_début de rec
nmap <silent> [denite]<C-V> :<C-u>call denite#start([{'name': 'file_rec', 'args': ['~/.dotfiles']}]) -highlight-mode-insert=Search=Search<CR>
"Monter et descendre<C-N>, <C-P>
call denite#custom#map('normal', '<C-N>', '<denite:move_to_next_line>')
call denite#custom#map('normal', '<C-P>', '<denite:move_to_previous_line>')
call denite#custom#map('insert', '<C-N>', '<denite:move_to_next_line>')
call denite#custom#map('insert', '<C-P>', '<denite:move_to_previous_line>')
"Déplacer l'historique des entrées<C-J>, <C-K>
call denite#custom#map('insert', '<C-J>', '<denite:assign_next_text>')
call denite#custom#map('insert', '<C-K>', '<denite:assign_previous_text>')
"Ouverture horizontale`<C-S>`
call denite#custom#map('insert', '<C-S>', '<denite:do_action:split>')
"Ouverture verticale`<C-I>`
call denite#custom#map('insert', '<C-I>', '<denite:do_action:vsplit>')
"Onglet ouvert`<C-O>`
call denite#custom#map('insert', '<C-O>', '<denite:do_action:tabopen>')
" file_Activer la correspondance floue lors de la recherche de rec et exclure les fichiers spécifiés de la cible de recherche
call denite#custom#source(
\ 'file_rec', 'matchers', ['matcher_fuzzy', 'matcher_project_files', 'matcher_ignore_globs'])
"Spécification des fichiers qui ne sont pas recherchés
call denite#custom#filter('matcher_ignore_globs', 'ignore_globs',
\ [ '.git/', '.ropeproject/', '__pycache__/',
\ 'venv/', 'images/', '*.min.*', 'img/', 'fonts/'])
Étant donné que denite a le taux d'utilisation le plus élevé de tous les plug-ins, il utilise des raccourcis clavier qui peuvent être atteints le plus rapidement possible. En conséquence, je me suis installé sur <C-J> <C - *>
.
Je pense que monter et descendre lors de la recherche de denite est complètement une question de goût.
deoplete.nvim
C'est un plug-in de complétion automatique. Et encore une fois, c'est le pouvoir sombre du Dark Bimuou. J'ai mentionné le système d'auto-complément dans ma tête car ce plug-in le distingue des autres plug-ins d'auto-complétion.
Par exemple, il existe un plug-in appelé jedi-vim
pour le plug-in d'auto-complétion de Python, mais il s'agit d'un plug-in qui implémente uniquement l'auto-complétion de Python.
En revanche, «deoplete» ne fournit que la base de la fonctionnalité de complétion, et la propre complétion de chaque langue ajoute la complétion en utilisant un plug-in externe «source» (on dit qu'il est appelé) qui suit l'interface de «deoplete». Ce sera sous la forme de.
Notez que l'auto-complétion Python est ajoutée avec deoplete-jedi
décrit plus tard.
Quand je l'écris de cette façon, je pense que ce que fait Dark Mimuou n'est pas un plug-in mais un écosystème.
Actuellement en construction
vim-airline
Cela vous fait paraître à la mode en jouant avec la barre d'état. Lorsqu'on lui a demandé si cela aurait un grand impact sur l'édition, ce n'est pas tant que ça. Cependant, pour augmenter la tension du montage, vous avez besoin de quelque chose de cool comme "Je suis en train de monter avec un éditeur cool".
Il change les couleurs dans les modes Normal, Insertion et Visuel, affiche la branche Git en cours de modification, affiche virtualenv dans env et affiche d'autres informations sur la position du curseur. À la mode.
"Définir le nom d'affichage du mode(La valeur par défaut est abrégée car elle est longue et réduit la largeur.)
let g:airline_mode_map = {
\ '__' : '-',
\ 'n' : 'N',
\ 'i' : 'I',
\ 'R' : 'R',
\ 'c' : 'C',
\ 'v' : 'V',
\ 'V' : 'V',
\ '' : 'V',
\ 's' : 'S',
\ 'S' : 'S',
\ '' : 'S',
\ }
"Cool avec la ligne électrique
let g:airline_powerline_fonts = 1
"Cool en spécifiant un thème de couleur
let g:airline_theme = 'badwolf'
"La barre d'onglets est cool
let g:airline#extensions#tabline#enabled = 1
"Affichage matriciel de sélection personnalisé(La valeur par défaut est longue et réduit la largeur, alors réduisez-la)
let g:airline_section_z = airline#section#create(['windowswap', '%3p%% ', 'linenr', ':%3v'])
"Afficher le virtualenv actuellement activé pour voir s'il reconnaît le virtulenv(vim-extension de virtualenv)
let g:airline#extensions#virtualenv#enabled = 1
"De la ligne modifiée depuis git HEAD+-Cacher(vim-extension gitgutter)
let g:airline#extensions#hunks#enabled = 0
"Afficher les erreurs et les avertissements de l'outil Lint(Extension ALE)
let g:airline#extensions#ale#enabled = 1
let g:airline#extensions#ale#error_symbol = 'E:'
let g:airline#extensions#ale#warning_symbol = 'W:'
Je l'ai essentiellement écrit pour être cool. Cependant, comme le nom du fichier ne peut pas être vu, les choses qui exercent une pression sur la largeur sont exclues autant que possible.
nerdtree
C'est un explorateur qui est souvent attaché à la gauche de l'EDI.
Je pensais que je n'aurais pas besoin d'un explorateur de fichiers si j'avais denite
. Les humains ne se souviennent pas de beaucoup de choses, et il arrive souvent que vous souhaitiez voir des fichiers dans une structure hiérarchique.
Si vous ne trouvez pas le nom du fichier à taper denite
tout de suite, ouvrez nerdtree
et vous trouverez une liste de fichiers sûrs.
Si vous utilisez nerdtree-git-plugin et fugitive
décrit plus tard. Le statut d'édition du fichier est affiché sur nerdtree
.
Ne dites pas: "Si c'est un Atom ou un VsCode, je vais le prendre depuis le début." Mon cœur se brise.
vim-fugitive
Fondamentalement, je ne suis pas une personne qui se sent mal à l'aise si je ne suis pas tout le temps dans vim, mais je fais généralement des va-et-vient entre le terminal et vim avec Ctrl + z, alors est-ce nécessaire? Je pensais. Cependant, il y a un avantage écrasant par rapport à son fonctionnement dans le terminal, qui est les commandes «: Gdiff» et «: Gblame» de «fugitif».
: Gdiff
est utilisé lorsque vous pensez que c'était mieux avant l'édition.
Dans un tel cas, je fais l'opération d'affichage du git diff et j'en tire le code d'origine.
Retour au terminal → Afficher diff → Copier → Revenir à vim et coller Mais Exécutez "": Gdiff "→ Yank → Paste
Sera. Amélioration significative de la vitesse.
Quant à : Gblame
, tout en regardant le code, vous pouvez voir ce qui s'est passé comme ça sur place avec un seul: Glame
et vous pouvez également vous référer aux informations du journal.
Et la même chose est vraie pour : Gdiff
, avec la coloration syntaxique de vim appliquée. vite.
nmap [figitive] <Nop>
map <Leader>g [figitive]
nmap <silent> [figitive]s :<C-u>Gstatus<CR>
nmap <silent> [figitive]d :<C-u>Gdiff<CR>
nmap <silent> [figitive]b :<C-u>Gblame<CR>
nmap <silent> [figitive]l :<C-u>Glog<CR>
Je n'utilise pas de commandes autres que celles ci-dessus car elles sont exploitées par tig.
vim-gitgutter
Les ajouts, suppressions et modifications de code à partir de HEAD de git sont affichés dans l'espace le plus à gauche (gitter). J'avais l'habitude de penser que c'était un obstacle, mais une fois que je l'ai utilisé, je ne pouvais pas m'en débarrasser.
deoplete-jedi
Ajoutez l'auto-complétion Python au deoplete
mentionné ci-dessus.
Dans les coulisses, il semble utiliser la bibliothèque d'analyse statique de Python jedi
(non liée à Star Wars?) Pour transmettre les résultats de l'analyse à deoplete
.
Actuellement en construction
vim-quickrun
Vous pouvez exécuter des programmes Python sur vim.
Mon utilisation est de sortir vers Buffer s'il n'y a pas d'erreur dans le résultat de l'exécution, de l'afficher dans QuickFix s'il y a une erreur et de sauter le code tel quel.
Notez que l'exécution asynchrone ne peut pas être prise en charge par elle-même, vous devez donc ajouter vimproc.vim et le définir avec vim-quickrun
.
Il existe un plugin similaire qui effectue une exécution asynchrone appelée asyncrun avec la fonction de vim lui-même au lieu de vimproc, mais il semble qu'il lit bien le chemin. Je viens de l'installer et je ne l'ai pas utilisé parce que cela ne m'a pas donné.
"Exécution asynchrone avec vimproc
"Affichage avec tampon en cas de succès et QuickFix en cas d'échec
"Ajuster la taille de l'affichage des résultats, etc.
let g:quickrun_config = {
\ '_' : {
\ 'runner' : 'vimproc',
\ 'runner/vimproc/updatetime' : 40,
\ 'outputter' : 'error',
\ 'outputter/error/success' : 'buffer',
\ 'outputter/error/error' : 'quickfix',
\ 'outputter/buffer/split' : ':botright 8sp',
\ }
\}
"Fermer le contenu de l'affichage précédent au moment de l'exécution&Enregistrez puis exécutez
let g:quickrun_no_default_key_mappings = 1
nmap <Leader>r :cclose<CR>:write<CR>:QuickRun -mode n<CR>
Il est pratique d'ajouter la fermeture du résultat de l'exécution existante et l'enregistrement du fichier à la liaison de clé. Sans parler de vimproc.
~~neomake~~
Python a une règle de syntaxe appelée pep8
, et une commande d'analyse statique appelée linter pour la détecter automatiquement. neomake
exécute le linter de manière asynchrone et affiche le résultat de l'exécution comme un marqueur sur vim.
Dans mon cas, j'utilise «flake8», qui détecte «pylint» en plus de «pep8».
A l'origine, j'ai utilisé un plugin similaire syntastic, mais comme il ne supporte pas l'exécution asynchrone, je suis passé à neomake
. J'ai fait.
ALE
J'utilise neomake depuis un moment, mais lorsque je travaille sur un grand projet, je constate souvent un décalage considérable (quelques secondes) dans la réflexion du linter. Par conséquent, lorsque j'ai essayé ALE, auquel j'avais prêté attention pendant longtemps, je suis passé à ALE en raison de sa vitesse élevée, de son apparence bâclée, de ses fonctions abondantes et de ses démangeaisons, et README était poli.
"Marque à afficher sur la ligne d'erreur
let g:ale_sign_error = '⨉'
let g:ale_sign_warning = '⚠'
"Format de message affiché lorsque le curseur est placé sur la ligne d'erreur
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
"Toujours afficher la colonne d'affichage des erreurs
let g:ale_sign_column_always = 1
"Exécutez la charpie lors de l'ouverture du fichier
let g:ale_lint_on_enter = 1
"Exécutez la charpie lors de l'enregistrement du fichier
let g:ale_lint_on_save = 1
"Ne pas pelucher
let g:ale_lint_on_text_changed = 'never'
"charpie Ne pas afficher les résultats dans la liste des emplacements et QuickFix
"C'est assez ennuyeux quand il est sorti, et c'est un problème de pouvoir réécrire QuickFix
let g:ale_set_loclist = 0
let g:ale_set_quickfix = 0
let g:ale_open_list = 0
let g:ale_keep_list_window_open = 0
"Activer le linter
let g:ale_linters = {
\ 'python': ['flake8'],
\}
"Préfixe ALE
nmap [ale] <Nop>
map <C-k> [ale]
"Aller à la ligne d'erreur
nmap <silent> [ale]<C-P> <Plug>(ale_previous)
nmap <silent> [ale]<C-N> <Plug>(ale_next)
Pour être honnête, si vous regardez le READ ME, il est principalement écrit, mais je le posterai pour le moment.
vim-virtualenv
Si vous développez en Python, il existe de nombreuses scènes dans lesquelles vous utilisez virtualenv. Dans ce cas, vous devrez vous référer à la bibliothèque etc. installée uniquement par virtualenv sur vim. Ce plugin est pour une telle situation. Si vous activez virtualenv et démarrez vim, vim démarrera avec la bibliothèque virtualenv chargée.
vim-python-pep8-indent
l'autoindent de vim n'est pas conforme aux conventions pep8. Si vous installez ce plug-in, il effectuera automatiquement des sauts de ligne conformes à pep8 au moment des sauts de ligne. Pratique.
#Auto-identification ordinaire
format_str = format('En quelque sorte:{}Kanya:',
a, b)
#Auto-identification compatible pep8
format_str = format('En quelque sorte:{}Kanya:',
a, b)
jedi-vim
C'est un plug-in qui fait diverses choses en utilisant Jedi. Au début de la construction de l'environnement Python, je ne l'ai pas utilisé car la complétion automatique était faite avec deoplete-jedi. Cependant, lors de l'exécution d'un saut de balise avec le même sort tout en effectuant un saut de balise à l'aide de ctags, il était difficile de sélectionner la cible à partir du saut de balise, donc je l'ai introduit pour référence de code. Par conséquent, la plupart des fonctions sont écrasées et il ne reste que la référence de code. Après tout, il est pratique de pouvoir voler vers la source de référence d'un seul coup. Cependant, je pense que vim devient plus lourd à cause de cela, alors je cherche s'il existe un meilleur moyen.
"Je ferai les réglages de liaison des clés et la complétion automatique sans permission, alors écrasez
let g:jedi#auto_initialization = 0
let g:jedi#auto_vim_configuration = 0
let g:jedi#smart_auto_mappings = 0
let g:jedi#completions_enabled = 0
"Enregistrer les raccourcis clavier pour les références de code
let g:jedi#goto_command = "<Leader>d"
gen_tags.vim
Il existe différents plug-ins de génération automatique pour les ctags, mais l'un d'eux est hors de question car il prend en charge l'exécution asynchrone par job et gtags. Si vous ne connaissez pas les ctags, veuillez rechercher divers articles d'introduction.
let g:gen_tags#ctags_auto_gen = 1
let g:gen_tags#gtags_auto_gen = 1
Activez simplement la sauvegarde automatique. Facile.
vim-test + vim-dispatch
anko-m/vim-test tpope/vim-dispatch
Un plug-in de test est installé séparément de QuickRun. Veuillez vous référer à l'article suivant pour plus de détails. Préparez très sérieusement l'environnement de test Vim (pour Python)
gtags.vim + vim-qfreplace
vim-scripts/gtags.vim thinca/vim-qfreplace
Dans les ctags, GNU global est adopté séparément car la destination de référence ne peut pas être obtenue même si la source de la déclaration peut être obtenue. Obtenez une référence dans gtags.vim et remplacez-la par qfreplace. Bref, c'est un outil de refactoring.
Veuillez vous référer à l'article suivant pour la recherche par GNU global. Essayez le saut de code vim avec gtags
.vimrc
~~ Je veux vraiment lister l'extrait de vimrc pour chaque plugin, mais je suis épuisé donc je le mettrai à jour quand j'aurai encore le temps. ~~ Voir ci-dessous pour vimrc. lighttiger2505/.dotfiles
Cela fait un mois que je travaille chez ~~ vim, et maintenant j'ai un environnement beaucoup plus pratique que mon niveau de passe-temps, alors j'aimerais profiter de l'occasion pour le présenter. ~~ Je travaille sur vim depuis six mois, mais c'est encore loin. Je vais me consacrer. Si vous lisez cet article, je suis un meilleur vim. Je suis sûr qu'il y a des gens qui disent ça, alors je serais heureux si vous pouviez me le dire.
Recommended Posts