Définissez un affichage contextuel pour le langage Java avec vim.

Tout d'abord, je suis intérimaire. Par conséquent, le personnel de vente sera présent au moment de l'entretien avec la destination d'expédition. Étant donné que le vendeur ignore mon opinion et procède sans autorisation, la destination d'expédition peut être décidée quelle que soit la situation. Depuis que je suis devenu intérimaire, j'ai abandonné les humains, mais j'aimerais que vous me pardonniez un instant.

Cela dit, le prochain peut être un projet en langage Java. Cela signifiait que je devais réétudier le langage Java. Cependant, je pensais que je n'utiliserais pas de livres liés au langage Java, alors je les ai laissés chez mes parents. Je ne pouvais pas m'en empêcher, alors j'ai décidé d'acheter plus du premier livre scolaire. Combien de livres et combien de types de livres d'école élémentaire devrais-je acheter ... Je prévois d'acheter un livre Kindle si possible, mais c'est difficile à voir, donc c'est définitivement un livre papier. Il n'y aura pas de bonnes mesures.

Sujet principal

Si vous programmez pour des débutants, vous n'avez certainement pas besoin d'un grand IDE. Si j'ai le temps de construire un tel environnement, j'aimerais consacrer ne serait-ce qu'un peu de temps à étudier. Comment c'est? Parce que je ne pouvais pas maîtriser Vim, je ne pouvais toujours pas le construire comme un IDE. Profitant de cette opportunité, je voudrais vous présenter Language Server Protocol (abréviation: LSP).

Qu'est-ce que LSP?

Je pense que c'est une fonction qui complète le processus de saisie avec une complétion automatique. Dans cet esprit, j'ai décidé de l'introduire.

Je ne veux pas être difficile

Il est difficile de préparer un environnement IDE, donc j'aimerais créer un environnement avec juste une petite modification du Vim déjà installé. Par conséquent, je ne veux pas être difficile ou prendre du temps. J'ai donc décidé d'utiliser le [Plug-in pour réduire les coûts d'installation] de mattn (https://qiita.com/mattn/items/e62b9f16bc487a271a7f).

Introduction réelle du LSP

Comme c'est facile à faire, j'ai décidé de procéder comme expliqué par M. mattn.

supposition

La gestion des plug-ins utilise minpac.

Introduction au plug-in

J'ai pensé qu'il serait facile d'introduire, pour le moment, si une ligne suffirait ou si deux lignes seraient nécessaires.

vimrc


call minpac#add('prabirshrestha/vim-lsp')
call minpac#add('mattn/vim-lsp-settings')

Ensuite, sur la ligne de commande ex,

commander


call minpac#update()

Tapez. Ce faisant, le plug-in sera introduit. Cela seul le rend très pratique.

Réécriture du fichier de paramètres

Vous devez également écrire dans vimrc.

vimrc


"Possibilité d'afficher les erreurs en temps réel à mesure que les fichiers changent
let g:lsp_diagnostics_enabled = 1
let g:lsp_diagnostics_echo_cursor = 1

"Réglage pour afficher automatiquement la fenêtre contextuelle de fin d'entrée
let g:asyncomplete_auto_popup = 1
let g:asyncomplete_auto_completeopt = 1

"Délai avant l'affichage de la fenêtre contextuelle
let g:asyncomplete_popup_delay = 200

"Paramètre pour activer textEdit, qui est une spécification LSP
let g:lsp_text_edit_enabled = 1

let g:lsp_signs_enabled = 1
let g:lsp_diagnostics_echo_cursor = 1

mattn semble avoir [divisé] le fichier de configuration (https://mattn.kaoriya.net/software/vim/20191231001537.htm), mais je ne l'ai pas fait. Par conséquent, j'écris à vimrc, mais je pense qu'il n'y a pas de problème.

Le bateau-mère est également important

vim-lsp semble être le vaisseau mère, et si vous ne l'incluez pas, vous obtiendrez une erreur.

Erreur


Error detected while processing User Autocommands for "lsp_setup":
E117: Unknown function: lsp#register_server

vim-lsp_Err.jpg

Je veux éviter les erreurs

J'ai eu une erreur car j'ai continué le travail sans installer le plug-in du vaisseau mère.

Erreur


BufRead Autocommands for "*.java"..FileType Autocommands for "java"..function <SNR>8_vim_lsp_load_or_suggest[105]..
User Autocommands for "lsp_setup"Une erreur a été détectée lors du traitement de:
E117:Fonction inconnue: lsp#register_server

lsp-setup-filetype_Err.jpg

Assurez-vous de lire correctement l'explication.

Autre

minpac-update_err.jpg

J'obtiens une erreur dans un plugin pour la gestion des plugins, qui semble avoir déjà été corrigé.

Ouvrez le fichier Java

Ouvrez un fichier avec l'extension * .java. Et

Commande Ex


LspInstallServer

installj-eclipse-jdt-ls.jpg

Puisque le mécanisme est tel que le fichier correspondant au fichier de programmation est installé, vous pouvez appuyer sur «Oui» et attendre que l'installation soit terminée.

java-installer-jdtls.jpg

Terminé.

Personnellement, le code du caractère est étrange ... mais je vais le revoir à un autre moment. Cela aurait dû être UTF-8 ...

Non compatible avec le langage C ++

Je ne suis pas sûr, mais il semble que certains fichiers de programmation ne puissent pas être installés.

Extension .cpp

Ouvrir le fichier de langage C ++

cpp-ls-clangd.jpg

Je l'ai suivi docilement car il pouvait être introduit.

install-clangd.jpg

Bien sûr que oui.

unxz-command-not-found.jpg

Cependant, l'installation a échoué. Cela semble être dû au fait que la commande requise n'a pas été trouvée. Par conséquent, il peut y avoir un problème avec mon environnement, mais maintenant je n'ai plus qu'à préparer l'environnement Java, donc je le reporte.

Ne profitez pas des avantages réels.

Étrange. La saisie semi-automatique ne fonctionne pas du tout.

Popup ne s'affiche pas du tout.

Étrange.

Pour les réglages de mattn,

vimrc


if empty(globpath(&rtp, 'autoload/lsp.vim'))
・
・
・

function! s:on_lsp_buffer_enabled() abort
・
・
・

augroup lsp_install
・
・
・

A été écrit, mais est-ce là? En décrivant cela, le fichier de configuration a été détruit ...

Solution (affichage contextuel)

J'avais besoin d'un plug-in séparé.

asyncomplete.vim La description est en anglais, donc je ne pensais pas que c'était le [plug] requis (https://github.com/mattn/vim-lsp-settings#asyncompletevim).

vimrc


"Affichage du menu contextuel automatique
call minpac#add('prabirshrestha/asyncomplete.vim')
"Source de saisie semi-automatique
call minpac#add('prabirshrestha/asyncomplete-lsp.vim')

Il semble que ces deux types soient nécessaires.

asyncomplete.jpg

C'est un peu inconfortable avec un affichage contextuel involontaire. Dans cet exemple, je voudrais entrer "System", mais quand ** S ** est entré, "Saf ~ Nanchara" est automatiquement entré. Un inconvénient déraisonnable. Ce que je veux faire, c'est que lorsque j'entre "S", rien n'est entré et je veux que les candidats apparaissent. J'ai des problèmes.

asyncomplete.vim Quant à la méthode d'affichage, nvim semble être meilleure. Je ne changerai pas le corps principal maintenant.

Terminé pour le moment

Bien que j'aie les plaintes ci-dessus, je dirai que je l'ai défini pour le moment. Il est encore loin d'avoir terminé l'étude du langage Java avec seulement vim lui-même, mais cet article se termine par ceci. Finalement, je veux pouvoir exécuter et déboguer.

c'est tout.

Recommended Posts

Définissez un affichage contextuel pour le langage Java avec vim.
[Pour les débutants] Exemple minimum pour afficher RecyclerView en Java
Les débutants jouent à des jeux Janken en Java
Afficher les données Firestore dans RecyclerView [Java]
[Pour les débutants] Exécutez Selenium sur Java
processus thread-safe en java
Paramètres de débogage SSL dans Java
Gérer la logique métier pour un ensemble d'entités dans une classe Java
Qu'est-ce qu'une classe en langage Java (3 /?)
Premiers pas pour l'apprentissage profond en Java
Points clés pour l'introduction de gRPC en Java
Qu'est-ce qu'une classe en langage Java (1 /?)
[Java] Définir AdoptOpen JDK dans STS (Eclipse)
Qu'est-ce qu'une classe en langage Java (2 /?)
Afficher la boîte de dialogue de message avec java (mémo personnel)
Vérifiez les options définies pour le processus Java en cours d'exécution
ChatWork4j pour l'utilisation de l'API ChatWork en Java
Techniques de lecture du code source Java dans Eclipse
Comment afficher une page Web en Java
Définir le délai d'attente HTTP Keep Alive dans le client HTTP Java
Afficher le texte en tant qu'art ASCII en Java (jfiglet)
[Java] (pour MacOS) Méthode de définition du chemin de classe
Afficher "Hello World" dans le navigateur à l'aide de Java
Afficher "Hello World" dans le navigateur à l'aide de Java
Présentation de NLP4J- [000] Natural Language Processing Index en Java
Comparez la sortie PDF en Java pour les tests d'instantanés
Activer / désactiver SNI en Java pour chaque communication
Points à connaître avec Java Equals
Pour l'apprentissage JAVA (2018-03-16-01)
Partition en Java
Changements dans Java 11
IDE 2017 pour Java
Taux circonférentiel à Java
Java pour instruction
FizzBuzz en Java
Comment régler l'heure d'affichage sur l'heure japonaise dans les rails
Définissez JAVA_HOME pour l'utilisateur root dans le serveur AWS Ubuntu16.04
Points à surveiller dans le développement futur de Java
Remarque sur l'initialisation des champs dans le didacticiel Java
Obtention des objets Locale pour tous les paramètres régionaux disponibles en Java
Introduction à Java pour les débutants Connaissance de base du langage Java ①
Ceci et cela pour éditer ini en Java. : inieditor-java
[Java] explique ConcurrentModificationException qui se produit dans java.util.ArrayList pour les nouveaux arrivants
J'ai essayé d'utiliser l'instruction Extended for en Java
[mémo] Générer une paire de clés RSA pour SSH en Java
«Le serveur de prise en charge des langues pour Java a planté 5 fois au cours des 3 dernières minutes. Le serveur ne sera pas redémarré.»