nvim-lspconfig เป็น repo "ข้อมูลเท่านั้น" ที่ให้การกำหนดค่าไคลเอ็นต์ Nvim LSP พื้นฐานที่เป็นค่าเริ่มต้นสำหรับเซิร์ฟเวอร์ LSP ต่างๆ
ดูเอกสารประกอบสำหรับการกำหนดค่าทั้งหมดหรือ :help lspconfig-all
จาก Nvim
:help lsp
) ให้รายงานจุดบกพร่องนั้นไปยัง Neovim core git clone https://github.com/neovim/nvim-lspconfig ~/.config/nvim/pack/nvim/start/nvim-lspconfig
npm i -g pyright
require ' lspconfig ' . pyright . setup {}
:help lspconfig-all
nvim main.py
:checkhealth lsp
เพื่อดูสถานะหรือแก้ไขปัญหา อ่าน :help lspconfig
เพื่อดูรายละเอียด อ่าน :help lspconfig-all
สำหรับรายการรายละเอียดเฉพาะเซิร์ฟเวอร์ทั้งหมด สำหรับเซิร์ฟเวอร์ที่ไม่ได้อยู่ใน $PATH
ของคุณ (เช่น jdtls
, elixirls
) คุณต้องตั้งค่าพารามิเตอร์ cmd
ด้วยตนเองเมื่อเรียก setup()
Nvim ตั้งค่าตัวเลือกเริ่มต้นและการแมปเมื่อบัฟเฟอร์แนบกับ LSP (ดู :help lsp-config
) โดยเฉพาะ:
'tagfunc'
และคำสั่งแท็กอื่นๆ'omnifunc'
ในโหมดแทรก สำหรับการเติม ข้อความอัตโนมัติ จำเป็นต้องมีปลั๊กอินเติมข้อความอัตโนมัติ'formatexpr'
gq
K
แมปกับ vim.lsp.buf.hover()
ในโหมดปกติ[d
และ ]d
แมปกับ vim.diagnostic.goto_prev()
และ vim.diagnostic.goto_next()
ตามลำดับd
แผนที่ไปยัง vim.diagnostic.open_float()
การปรับแต่งเพิ่มเติมสามารถทำได้โดยใช้เหตุการณ์คำสั่งอัตโนมัติ LspAttach
เหตุการณ์คำสั่งอัตโนมัติ LspDetach
สามารถใช้ในการแมป "ล้างข้อมูล" หากบัฟเฟอร์ถูกแยกออกจากเซิร์ฟเวอร์ LSP ดู :h LspAttach
และ :h LspDetach
สำหรับรายละเอียดและตัวอย่าง ดู :h lsp-buf
สำหรับรายละเอียดเกี่ยวกับฟังก์ชัน LSP อื่นๆ
สามารถจัดเตรียมตัวเลือกการกำหนดค่าเพิ่มเติมสำหรับเซิร์ฟเวอร์ LSP แต่ละตัวได้โดยส่งอาร์กิวเมนต์ไปยังฟังก์ชัน setup
ดู :h lspconfig-setup
สำหรับรายละเอียด ตัวอย่าง:
local lspconfig = require ( ' lspconfig ' )
lspconfig . rust_analyzer . setup {
-- Server-specific settings. See `:help lspconfig-setup`
settings = {
[ ' rust-analyzer ' ] = {},
},
}
สาเหตุที่พบบ่อยที่สุดที่เซิร์ฟเวอร์ภาษาไม่เริ่มทำงานหรือแนบมาคือ:
cmd
ที่กำหนดในโมดูล Lua ของแต่ละเซิร์ฟเวอร์ได้จากบรรทัดคำสั่งและดูว่าเซิร์ฟเวอร์ภาษาเริ่มทำงาน หาก cmd
เป็นชื่อที่เรียกใช้งานได้แทนที่จะเป็นเส้นทางที่แน่นอนไปยังไฟล์ที่เรียกใช้งานได้ ให้ตรวจสอบให้แน่ใจว่าชื่อนั้นอยู่บนเส้นทางของคุณ:set ft?
แสดงประเภทไฟล์และไม่ใช่ค่าว่าง.git
แต่แต่ละเซิร์ฟเวอร์จะกำหนดการกำหนดค่ารูทในไฟล์ lua ดู doc/configs.md หรือแหล่งที่มาสำหรับรายการไดเรกทอรีรากcapabilities
สำหรับการตั้งค่า แต่ละ setup {}
หากคุณต้องการให้สิ่งเหล่านี้มีผลsetup {}
สองครั้งสำหรับเซิร์ฟเวอร์เดียวกัน การเรียกครั้งที่สองเพื่อ setup {}
จะเขียนทับการเรียกครั้งแรก หากคุณพบข้อบกพร่องเกี่ยวกับฟังก์ชัน LSP ให้รายงานไปยัง Neovim core
ก่อนที่จะรายงานจุดบกพร่อง ให้ตรวจสอบบันทึกและผลลัพธ์ของ :LspInfo
เพิ่มสิ่งต่อไปนี้ใน init.vim ของคุณเพื่อเปิดใช้งานการบันทึก:
vim . lsp . set_log_level ( " debug " )
พยายามเรียกใช้เซิร์ฟเวอร์ภาษา และเปิดบันทึกด้วย:
:LspLog
โดยส่วนใหญ่ สาเหตุของความล้มเหลวจะแสดงอยู่ในบันทึก
:LspInfo
(นามแฝงที่เลิกใช้แล้ว :che lspconfig
) แสดงสถานะของเซิร์ฟเวอร์ภาษาที่ใช้งานอยู่และกำหนดค่าไว้:LspStart
เริ่มต้นชื่อเซิร์ฟเวอร์ที่ร้องขอ จะเริ่มทำงานได้สำเร็จก็ต่อเมื่อคำสั่งตรวจพบไดเรกทอรีรากที่ตรงกับการกำหนดค่าปัจจุบัน ส่งผ่าน autostart = false
ไปยังการเรียก .setup{}
สำหรับเซิร์ฟเวอร์ภาษาของคุณ หากคุณต้องการเปิดใช้ไคลเอ็นต์ด้วยคำสั่งนี้เพียงอย่างเดียว ตั้งค่าเริ่มต้นให้กับเซิร์ฟเวอร์ทั้งหมดที่ตรงกับประเภทไฟล์บัฟเฟอร์ปัจจุบัน:LspStop
ค่าเริ่มต้นคือการหยุดบัฟเฟอร์ไคลเอ็นต์ทั้งหมด:LspRestart
ค่าเริ่มต้นในการรีสตาร์ทไคลเอ็นต์บัฟเฟอร์ทั้งหมด หากเซิร์ฟเวอร์ภาษาหายไปจาก configs.md การสนับสนุนการกำหนดค่าใหม่จะช่วยให้ผู้อื่น โดยเฉพาะอย่างยิ่งหากเซิร์ฟเวอร์ต้องการการตั้งค่าพิเศษ ทำตามขั้นตอนเหล่านี้:
lua/lspconfig/configs/SERVER_NAME.lua
หากต้องการเผยแพร่รุ่น:
ลิขสิทธิ์ของผู้มีส่วนร่วม Neovim สงวนลิขสิทธิ์.
nvim-lspconfig ได้รับอนุญาตภายใต้เงื่อนไขของใบอนุญาต Apache 2.0
ดู LICENSE.md