这是 Java 程序专用根本举动步伐所必需的。程序措辞是一种文化,C# 是 IDE 环境所必需的。
不要忘却,请利用 IntelliJ junto com 或 Java é muito bom!
Porém 是一个可以利用 trabalhar 措辞的可靠工具,可以利用 Neovim 的文本编辑器进行大略的措辞编辑。
您可以在代码编辑器和 IDE 的 com GUI 中测试插件和各种操作,也可以在 IDE 中进行映射。要利用 IDE 的所有待办事项,您须要配置与 Neovim 结合利用的所有映射任务,由于它具有与映射映射功能相同的功能。

为了利用 Neovim,请决定利用 Java 程序所需的最佳配置。
O que você vai precisarNeovim 0.7+jdtls(Eclipse 措辞做事器)Instalando 操作系统插件首先,您须要安装 Packer。利用 Lua 进行紧张配置:
git clone --depth 1 https://github.com/wbthomason/packer.nvim\ ~/.local/share/nvim/site/pack/packer/start/packer.nvim
Com o Packer 安装,vamos 安装primiiramente 操作系统插件。进行配置lua/plugins.lua并实行以下操作init.lua:
require("plugins")
不须要打包plugins.lua,您可以实例化 Packer 和 colocar,以声明配置 lsp 或 java 所需的插件。
-- instancia o Packerlocal status, packer = pcall(require, "packer")if (not status) then print("Packer is not installed") returnendvim.cmd [[packadd packer.nvim]]-- aqui eu declaro todos os meus pluginspacker.startup(function(use) use 'wbthomason/packer.nvim' -- necessário use 'nvim-treesitter/nvim-treesitter' -- syntax highlighting use 'neovim/nvim-lspconfig' -- provê configurações padrão de lsp use 'hrsh7th/cmp-nvim-lsp' -- auto complete use 'hrsh7th/nvim-cmp' -- auto complete use 'hrsh7th/cmp-buffer' -- auto complete use 'L3MON4D3/LuaSnip' -- provê snippets use 'onsails/lspkind.nvim' -- provê ícones para o lsp use 'mfussenegger/nvim-jdtls' -- plugin com todas as features do jdtlsend)
好的!
菲塔已宣告,将在阿尔基沃、尼奥维姆和罗达·科曼多身上进行演习:PackerSync。您可以安装和编译操作系统插件声明。
与干系操作干系的插件的配置部分。如果您须要一些必要的文件类型.java,请推举利用 neovim 的 FileType 插件。
这个插件是本地的,可以利用本地化的意大利面ftplugin和本地化的意大利init.lua面java.lua:
$ mkdir ftplugin$ cd ftplugin$ touch java.lua
Abra esse arquivo and iremos iniciar a configuração。
首先将其配置为自动完成字体。Nesse caso,iremos apenas invocar 作为默认功能实行cmp_nvim_lsppróprio lsp 客户端实行 neovim。
除关照外,主要的信息还有注册信息:didChangeWatchedFilese didChangeConfiguration。
local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities())capabilities.workspace = { configuration = true, didChangeWatchedFiles = { dynamicRegistration = true }, didChangeConfiguration = { dynamicRegistration = true }}
一个近似的配置是“保存格式”和键盘映射功能。请把稳附加功能的定义。
local on_attach = function(client, bufnr) -- Aqui define <Ctrl-x> + <Ctrl-o> para ativar o autocomplete, mas ele irá se ativar quando você digita também vim.api.nvim_buf_set_option(bufnr, 'omnifunc', "v:lua.vim.lsp.omnifunc") vim.api.nvim_create_autocmd("BufWritePre", { group = vim.api.nvim_create_augroup('Format', { clear = true }), buffer = bufnr, callback = function() vim.lsp.buf.format() end }) local bufopts = { noremap = true, silent = true, buffer = bufnr } local opts = { noremap = true, silent = true } vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) vim.keymap.set('n', '<space>K', vim.lsp.buf.signature_help, bufopts) vim.keymap.set('n', 'gt', vim.lsp.buf.type_definition, bufopts) vim.keymap.set('n', '<F2>', vim.lsp.buf.rename, bufopts) vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts) vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts) vim.keymap.set('n', '<space>f', vim.lsp.buf.format, bufopts) vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts) vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)end
与 LSP 的紧张配置干系的部分。
local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ':p:h:t')local workspace_dir = "/home/eronads/workspaces/" .. project_namelocal config = { flags = { allow_incremental_sync = true }, -- O comando para invocar o lsp. Eu recomendo seguir o caminho abaixo, através do executável em python cmd = { '/caminho/para/jdtls', -- Na pasta do jdtls terá algumas pastas com configurações específicas do OS. Indique este caminho de acordo com seu OS '-configuration', '/caminho/para/pasta-do-jtdls/config_SEU-OS', -- Para cada projeto, o lsp cria uma pasta com um workspace. Aqui você irá indicar onde irão ficar essas pastas. '-data', workspace_dir },-- A raiz do seu projeto root_dir = require("jdtls.setup").find_root({ 'gradlew', '.git', 'mvnw' }), on_attach = on_attach, capabilities = capabilities,-- Outras configurações, recomendável repetir settings = { java = { signatureHelp = { enabled = true }, contentProvider = { preferred = 'fernflower' }, completion = {-- Se precisar adicionar uma classe para import estático favoriteStaticMembers = { "org.hamcrest.MatcherAssert.assertThat", "org.hamcrest.Matchers.", "org.hamcrest.CoreMatchers.", "org.junit.jupiter.api.Assertions.", "java.util.Objects.requireNonNull", "java.util.Objects.requireNonNullElse", "org.mockito.Mockito." }, filteredTypes = { "com.sun.", "io.micrometer.shaded.", "java.awt.", "jdk.", "sun.", }, }, sources = { organizeImports = { starThreshold = 9999, staticStarThreshold = 9999, }, }, codeGeneration = { -- Instrução para geração de métodos populares toString = { template = "${object.className}{${member.name()}=${member.value}, ${otherMembers}}" }, hashCodeEquals = { useJava7Objects = true, }, useBlocks = true, }, configuration = {-- Indique aqui as versões de java e as pastas onde se encontram runtimes = { { name = "JavaSE-17", path = "/caminho/para/pasta/do/java/17.0.7-tem/", default = true }, } }, }, }}
重新配置 cmp、lsp 并实行 lsp,如下:
local cmp = require 'cmp';local lspkind = require 'lspkind'cmp.setup({ snippet = { expand = function(args) require('luasnip').lsp_expand(args.body) end }, mapping = cmp.mapping.preset.insert({ ['C-Space'] = cmp.mapping.complete(), ['<CR>'] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true }), }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, { name = 'buffer' }, }), formatting = { format = lspkind.cmp_format({ mode = 'symbol', -- show only symbol annotations maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) ellipsis_char = '...', -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first) -- The function below will be called before any actual modifications from lspkind -- so that you can provide more controls on popup customization. (See [#30](https://github.com/onsails/lspkind-nvim/pull/30)) before = function(entry, vim_item) return vim_item end }) }})require('jdtls').start_or_attach(config)
救救我吧。这是 Java 的一部分。
决赛结果做事启动:
自动完成功能:
我们供应了一些有助于识别类和接口的片段:
诊断:
代码操作(包括 os queridinhos dos javeiros):
配置完成
没有github 的完全配置。
对付 Java 的配置,可以这样配置:
打字稿;JavaScript;视图;反应;去;PHP。这是 Java 程序专用根本举动步伐所必需的。程序措辞是一种文化,C# 是 IDE 环境所必需的。
不要忘却,请利用 IntelliJ junto com 或 Java é muito bom!
Porém 是一个可以利用 trabalhar 措辞的可靠工具,可以利用 Neovim 的文本编辑器进行大略的措辞编辑。
您可以在代码编辑器和 IDE 的 com GUI 中测试插件和各种操作,也可以在 IDE 中进行映射。要利用 IDE 的所有待办事项,您须要配置与 Neovim 结合利用的所有映射任务,由于它具有与映射映射功能相同的功能。
为了利用 Neovim,请决定利用 Java 程序所需的最佳配置。
O que você vai precisarNeovim 0.7+jdtls(Eclipse 措辞做事器)Instalando 操作系统插件首先,您须要安装 Packer。利用 Lua 进行紧张配置:
git clone --depth 1 https://github.com/wbthomason/packer.nvim\ ~/.local/share/nvim/site/pack/packer/start/packer.nvim
Com o Packer 安装,vamos 安装primiiramente 操作系统插件。进行配置lua/plugins.lua并实行以下操作init.lua:
require("plugins")
不须要打包plugins.lua,您可以实例化 Packer 和 colocar,以声明配置 lsp 或 java 所需的插件。
-- instancia o Packerlocal status, packer = pcall(require, "packer")if (not status) then print("Packer is not installed") returnendvim.cmd [[packadd packer.nvim]]-- aqui eu declaro todos os meus pluginspacker.startup(function(use) use 'wbthomason/packer.nvim' -- necessário use 'nvim-treesitter/nvim-treesitter' -- syntax highlighting use 'neovim/nvim-lspconfig' -- provê configurações padrão de lsp use 'hrsh7th/cmp-nvim-lsp' -- auto complete use 'hrsh7th/nvim-cmp' -- auto complete use 'hrsh7th/cmp-buffer' -- auto complete use 'L3MON4D3/LuaSnip' -- provê snippets use 'onsails/lspkind.nvim' -- provê ícones para o lsp use 'mfussenegger/nvim-jdtls' -- plugin com todas as features do jdtlsend)
好的!
菲塔已宣告,将在阿尔基沃、尼奥维姆和罗达·科曼多身上进行演习:PackerSync。您可以安装和编译操作系统插件声明。
与干系操作干系的插件的配置部分。如果您须要一些必要的文件类型.java,请推举利用 neovim 的 FileType 插件。
这个插件是本地的,可以利用本地化的意大利面ftplugin和本地化的意大利init.lua面java.lua:
$ mkdir ftplugin$ cd ftplugin$ touch java.lua
Abra esse arquivo and iremos iniciar a configuração。
首先将其配置为自动完成字体。Nesse caso,iremos apenas invocar 作为默认功能实行cmp_nvim_lsppróprio lsp 客户端实行 neovim。
除关照外,主要的信息还有注册信息:didChangeWatchedFilese didChangeConfiguration。
local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities())capabilities.workspace = { configuration = true, didChangeWatchedFiles = { dynamicRegistration = true }, didChangeConfiguration = { dynamicRegistration = true }}
一个近似的配置是“保存格式”和键盘映射功能。请把稳附加功能的定义。
local on_attach = function(client, bufnr) -- Aqui define <Ctrl-x> + <Ctrl-o> para ativar o autocomplete, mas ele irá se ativar quando você digita também vim.api.nvim_buf_set_option(bufnr, 'omnifunc', "v:lua.vim.lsp.omnifunc") vim.api.nvim_create_autocmd("BufWritePre", { group = vim.api.nvim_create_augroup('Format', { clear = true }), buffer = bufnr, callback = function() vim.lsp.buf.format() end }) local bufopts = { noremap = true, silent = true, buffer = bufnr } local opts = { noremap = true, silent = true } vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) vim.keymap.set('n', '<space>K', vim.lsp.buf.signature_help, bufopts) vim.keymap.set('n', 'gt', vim.lsp.buf.type_definition, bufopts) vim.keymap.set('n', '<F2>', vim.lsp.buf.rename, bufopts) vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts) vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts) vim.keymap.set('n', '<space>f', vim.lsp.buf.format, bufopts) vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts) vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)end
与 LSP 的紧张配置干系的部分。
local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ':p:h:t')local workspace_dir = "/home/eronads/workspaces/" .. project_namelocal config = { flags = { allow_incremental_sync = true }, -- O comando para invocar o lsp. Eu recomendo seguir o caminho abaixo, através do executável em python cmd = { '/caminho/para/jdtls', -- Na pasta do jdtls terá algumas pastas com configurações específicas do OS. Indique este caminho de acordo com seu OS '-configuration', '/caminho/para/pasta-do-jtdls/config_SEU-OS', -- Para cada projeto, o lsp cria uma pasta com um workspace. Aqui você irá indicar onde irão ficar essas pastas. '-data', workspace_dir },-- A raiz do seu projeto root_dir = require("jdtls.setup").find_root({ 'gradlew', '.git', 'mvnw' }), on_attach = on_attach, capabilities = capabilities,-- Outras configurações, recomendável repetir settings = { java = { signatureHelp = { enabled = true }, contentProvider = { preferred = 'fernflower' }, completion = {-- Se precisar adicionar uma classe para import estático favoriteStaticMembers = { "org.hamcrest.MatcherAssert.assertThat", "org.hamcrest.Matchers.", "org.hamcrest.CoreMatchers.", "org.junit.jupiter.api.Assertions.", "java.util.Objects.requireNonNull", "java.util.Objects.requireNonNullElse", "org.mockito.Mockito." }, filteredTypes = { "com.sun.", "io.micrometer.shaded.", "java.awt.", "jdk.", "sun.", }, }, sources = { organizeImports = { starThreshold = 9999, staticStarThreshold = 9999, }, }, codeGeneration = { -- Instrução para geração de métodos populares toString = { template = "${object.className}{${member.name()}=${member.value}, ${otherMembers}}" }, hashCodeEquals = { useJava7Objects = true, }, useBlocks = true, }, configuration = {-- Indique aqui as versões de java e as pastas onde se encontram runtimes = { { name = "JavaSE-17", path = "/caminho/para/pasta/do/java/17.0.7-tem/", default = true }, } }, }, }}
重新配置 cmp、lsp 并实行 lsp,如下:
local cmp = require 'cmp';local lspkind = require 'lspkind'cmp.setup({ snippet = { expand = function(args) require('luasnip').lsp_expand(args.body) end }, mapping = cmp.mapping.preset.insert({ ['C-Space'] = cmp.mapping.complete(), ['<CR>'] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true }), }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, { name = 'buffer' }, }), formatting = { format = lspkind.cmp_format({ mode = 'symbol', -- show only symbol annotations maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) ellipsis_char = '...', -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first) -- The function below will be called before any actual modifications from lspkind -- so that you can provide more controls on popup customization. (See [#30](https://github.com/onsails/lspkind-nvim/pull/30)) before = function(entry, vim_item) return vim_item end }) }})require('jdtls').start_or_attach(config)
救救我吧。这是 Java 的一部分。
决赛结果做事启动:
自动完成功能:
我们供应了一些有助于识别类和接口的片段:
诊断:
代码操作(包括 os queridinhos dos javeiros):
配置完成
没有github 的完全配置。
对付 Java 的配置,可以这样配置:
打字稿;JavaScript;视图;反应;去;PHP。关注并回答1领取Java学习资料大礼包!