Pour rappel, Vim est un éditeur de texte libre et open source pour le terminal sous GNU/Linux. Sa stabilité est reconnue et l'outil ne cesse de progresser en termes d'améliorations. Il est un éditeur de texte extrêmement personnalisable, que ce soit par l'ajout d'extensions, ou par la modification de ses fichiers de configuration qui sont tous écrits dans son propre langage en l'occurrence le Vim script. VIM est également considéré comme un outil très puissant et n'aurait rien à envier aux éditeurs graphiques comme GEdit, Kate ou Mousepad. En effet, il intègre plusieurs fonctions que beaucoup de développeurs apprécient, ce qui fait de lui un très bon EDI (coloration syntaxique de 200 langages, complétion automatique, comparaison de fichiers, recherche avancée, etc.).
Dans son billet, SpaceVim présente les différents plugins qui sont mis à la portée des développeurs Java afin de faire de VIM leur EDI. Ces derniers sont regroupés en trois catégories en fonction de leur utilisation, il s'agit de :
- la gestion de projet ;
- le formatage des codes ;
- la complétion des codes ;
- le fonctionnement asynchrone des programmes.
La gestion de projets
Pour la gestion de projets Java, SpaceVim présente les trois extensions ci-après.
- unite ou unite.vim
Le plugin unite encore appelé unite.vim permet de rechercher et d'afficher des informations provenant de sources arbitraires comme les fichiers, la mémoire tampon, les fichiers récemment utilisés ou enregistrés. Les développeurs vont pouvoir exécuter plusieurs actions prédéfinies sur une cible et affichées dans la fenêtre du plugin unite.
La différence entre unite et les plugins similaires comme fuzzyfinder, ctrl-p ou ku réside du fait que le plugin unite fournit une interface d'intégration pour plusieurs sources, et permet aussi aux développeurs de créer de nouvelles interfaces.
SpaceVim affirme également que dans unite, il est possible d'utiliser l'outil dénommé ag afin de faire des recherches plus rapides. Le code qui permet de configurer ag ou tout autre outil supporté par unite se présente comme suit :Code : Sélectionner tout 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46if executable('hw') " Use hw (highway) " https://github.com/tkengo/highway let g:unite_source_grep_command = 'hw' let g:unite_source_grep_default_opts = '--no-group --no-color' let g:unite_source_grep_recursive_opt = '' elseif executable('ag') " Use ag (the silver searcher) " https://github.com/ggreer/the_silver_searcher let g:unite_source_grep_command = 'ag' let g:unite_source_grep_default_opts = \ '-i --line-numbers --nocolor ' . \ '--nogroup --hidden --ignore ' . \ '''.hg'' --ignore ''.svn'' --ignore' . \ ' ''.git'' --ignore ''.bzr''' let g:unite_source_grep_recursive_opt = '' elseif executable('pt') " Use pt (the platinum searcher) " https://github.com/monochromegane/the_platinum_searcher let g:unite_source_grep_command = 'pt' let g:unite_source_grep_default_opts = '--nogroup --nocolor' let g:unite_source_grep_recursive_opt = '' elseif executable('ack-grep') " Use ack " http://beyondgrep.com/ let g:unite_source_grep_command = 'ack-grep' let g:unite_source_grep_default_opts = \ '-i --no-heading --no-color -k -H' let g:unite_source_grep_recursive_opt = '' elseif executable('ack') let g:unite_source_grep_command = 'ack' let g:unite_source_grep_default_opts = '-i --no-heading' . \ ' --no-color -k -H' let g:unite_source_grep_recursive_opt = '' elseif executable('jvgrep') " Use jvgrep " https://github.com/mattn/jvgrep let g:unite_source_grep_command = 'jvgrep' let g:unite_source_grep_default_opts = \ '-i --exclude ''\.(git|svn|hg|bzr)''' let g:unite_source_grep_recursive_opt = '-R' elseif executable('beagrep') " Use beagrep " https://github.com/baohaojun/beagrep let g:unite_source_grep_command = 'beagrep' endif
- vimfiler
SpaceVim soutient que vimfiler est un explorateur de fichiers très puissant qui est intégré dans le langage Vim script. Rappelons que ce dernier est le langage de script pour l'éditeur Vim. Le plugin vimfiler peut être défini comme explorateur de fichiers par défaut, pour cela il faut exécuter le code ci-après :
Code : Sélectionner tout 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18let g:vimfiler_as_default_explorer = 1 call vimfiler#custom#profile('default', 'context', { \ 'explorer' : 1, \ 'winwidth' : 30, \ 'winminwidth' : 30, \ 'toggle' : 1, \ 'columns' : 'type', \ 'auto_expand': 1, \ 'direction' : 'rightbelow', \ 'parent': 0, \ 'explorer_columns' : 'type', \ 'status' : 1, \ 'safe' : 0, \ 'split' : 1, \ 'hidden': 1, \ 'no_quit' : 1, \ 'force_hide' : 0, \ })
- tagbar
Ce plugin permet d'afficher toutes les balises dans une fenêtre de navigation. Par définition, Tagbar est un plugin Vim qui fournit un moyen facile de parcourir les tags du fichier en cours et d'obtenir un aperçu de sa structure. Elle le fait en créant une barre latérale qui affiche l'ensemble des balises se trouvant dans le fichier en cours.
Le formatage des codes
Pour le formatage des codes dans l'éditeur Vim, le plugin à utiliser est dénommé neoformat. Toutefois, pour formater du code Java, les développeurs devront intégrer les plugins uncrustify ou astyle dans le PATH. Ce plugin permet d'indenter et de formater les codes écrits avec les langages de programmations que sont C, C++, C++/CLI, Objective‑C, C# et Java.
L'outil de Google qui permet de formater du code Java peut également fonctionner avec neoformat.
La complétion des codes
- javacomplete2
L'équipe de SpaceVim soutient que javacomplete2, le plugin dédié à la complétion des codes Java sous Vim, a été mis à jour.Démo
Démo générique
- deoplete.nvim
deoplete.nvim est un framework d'auto complétion pour neovim. Il convient de noter que deoplete est l'abréviation de « dark powered neo-completion ». Toutefois, il faut s'assurer de disposer de la dernière version de Neovim, et bien vérifier que Python 3 est activé dans ladite version. - neocomplete.vim
neocomplete.vim est la nouvelle génération de framework d'autocomplétion après neocomplcache.
Fonctionnement asynchrone des programmes
Neomake est un plugin qui permet de faire fonctionner de manière asynchrone des programmes utilisant des fonctionnalités de Neovim ou Vim.
Source : SpaceVim
Qu'en pensez-vous ?
Selon vous, quel est l'intérêt d'utiliser Vim comme EDI Java en lieu et place d'Eclipse ou intelliJ ?