การกำหนดค่า Neovim ขั้นต่ำที่เขียนด้วย lua
สารบัญ
Neovim เป็นผู้สืบทอดที่ยอดเยี่ยมของ Vim โดยมุ่งเน้นไปที่ความเข้ากันได้ในขณะที่เพิ่มฟังก์ชันปลั๊กอินแบบอะซิงโครนัสและพยายามล้างฐานโค้ด หลังจากเบื่อหน่ายกับทั้ง Sublime Text (2 และ 3) และ Atom หลายครั้ง และหลังจากตระหนักว่าฉันพัฒนา SSH ได้มากเพียงใด ก็ดูสมเหตุสมผลที่จะลองใช้ vim (หรือ nvim ในกรณีนี้) เป็น IDE ของฉัน ข้อดีโดยพื้นฐานแล้วอยู่ที่:
ดังนั้นฉันจึงตัดสินใจสร้างที่เก็บนี้ มีหลายเวอร์ชัน โปรดดูที่ CHANGELOG
การกำหนดค่านี้มีไว้เพื่อเป็นจุดเริ่มต้นและตรงกับความต้องการของฉันเท่านั้น หากต้องการปรับแต่ง ให้ข้ามไปที่ 6. การปรับแต่ง
mv ~ /.config/nvim ~ /.config/nvim.bak
ระบบปฏิบัติการ | เส้นทาง |
---|---|
ลินุกซ์, แมคโอเอส | $XDG_CONFIG_HOME/nvim , ~/.config/nvim |
หน้าต่าง (cmd) | %localappdata%nvim |
วินโดวส์ (พาวเวอร์เชลล์) | $env:LOCALAPPDATAnvim |
หมายเหตุ URL ของส้อมของคุณจะเป็นดังนี้:
https://github.com/<your_github_username>/neovim-config.git
หมายเหตุ หากทำตามขั้นตอนที่แนะนำด้านบน (เช่น การฟอร์ก repo) ให้แทนที่
ntk148v
ด้วย<your_github_username>
ในคำสั่งด้านล่าง
git clone https://github.com/ntk148v/neovim-config.git " ${XDG_CONFIG_HOME :- $HOME / .config} " /nvim
หากคุณใช้ cmd.exe
:
git clone https://github.com/ntk148v/neovim-config.git " %localappdata%nvim "
หากคุณใช้ powershell.exe
git clone https://github.com/ntk148v/neovim-config.git " ${env : LOCALAPPDATA} nvim "
nvim
git pull
ไฟล์ภายใต้การกำหนดค่าจะถูกโหลดโดยอัตโนมัติในเวลาที่เหมาะสม ดังนั้นคุณไม่จำเป็นต้องเรียกไฟล์เหล่านั้นด้วยตนเอง
tree ~ /.config/nvim
├── init.lua
├── lazy-lock.json
└── lua
├── autocmds.lua
├── custom.lua
├── mappings.lua
├── options.lua
├── plugins
│ ├── configs
│ │ ├── cmp.lua
│ │ ├── gitsigns.lua
│ │ ├── lspconfig.lua
│ │ ├── lualine.lua
│ │ ├── luasnip.lua
│ │ ├── mason.lua
│ │ ├── null-ls.lua
│ │ ├── telescope.lua
│ │ ├── tree.lua
│ │ └── treesitter.lua
│ └── init.lua
└── sample_custom.lua
ปลั๊กอิน | คำอธิบาย |
---|---|
ขี้เกียจ.nvim | ตัวจัดการปลั๊กอินที่ทันสมัยสำหรับ Neovim |
mason.nvim | ตัวจัดการแพ็คเกจแบบพกพาสำหรับ Neovim ที่ทำงานได้ทุกที่ที่ Neovim ทำงาน ติดตั้งและจัดการเซิร์ฟเวอร์ LSP, เซิร์ฟเวอร์ DAP, ลินเตอร์ และฟอร์แมตเตอร์ได้อย่างง่ายดาย |
nvim-lspconfig.php | ชุดของการกำหนดค่าทั่วไปสำหรับไคลเอนต์เซิร์ฟเวอร์ภาษาในตัวของ Neovim |
gitsigns | การตกแต่งคอมไพล์ที่เร็วสุด ๆ นำมาใช้ใน lua/teal เท่านั้น |
nvim-treesitter | การกำหนดค่า Nvim Treesitter และเลเยอร์นามธรรม |
nvim-cmp | ปลั๊กอินเติมข้อความอัตโนมัติ |
ลัวสนิป | Snippet Engine สำหรับ Neovim เขียนด้วยภาษา Lua |
nvim-tree.lua - | File Explorer เขียนด้วยภาษา Lua |
nvim-autopairs | การจับคู่อัตโนมัติที่ทรงพลังเป็นพิเศษสำหรับ Neovim |
nvim-เว็บ-devicons | Lua fork ของ vim-web-devicons สำหรับ neovim |
lualine.nvim | ปลั๊กอินสถานะ neovim ที่รวดเร็วและง่ายดายในการกำหนดค่าที่เขียนด้วย lua ล้วนๆ |
norcalli/nvim-colorizer.lua | เครื่องเปลี่ยนสี Neovim ที่เร็วที่สุด |
nvim-กล้องโทรทรรศน์/telescope.nvim | ค้นหา กรอง ดูตัวอย่าง เลือก ลัวะทั้งหมดตลอดเวลา |
ดอกกุหลาบสน | Soho รู้สึกได้ถึง Neovim |
nvimtools/ไม่มี-ls.nvim | โหลด null-ls.nvim อีกครั้ง / ใช้ Neovim เป็นเซิร์ฟเวอร์ภาษาเพื่อแทรกการวินิจฉัย LSP การดำเนินการโค้ด และอื่นๆ ผ่าน Lua |
Folke/ซึ่ง-key.nvim | สร้างการผูกคีย์ที่ติด whichKey ช่วยให้คุณจดจำคีย์แมป Neovim ของคุณ โดยแสดงการผูกคีย์ที่มีอยู่ในป๊อปอัปขณะที่คุณพิมพ์ |
ตามค่าเริ่มต้น เซิร์ฟเวอร์ LSP ต่อไปนี้จะถูกติดตั้งและกำหนดค่า:
นอกจากนี้ มันยังทำงานร่วมกับ nvim-treesitter เพื่อให้การเน้นไวยากรณ์ที่หลากหลายและเวทย์มนตร์ในการแยกวิเคราะห์ภาษาอื่นๆ
หากภาษาของคุณไม่รองรับ โปรดปฏิบัติตามนี้:
:LspInstall ` <your_language_server> `
:TSInstall ` <language_to_install> `
คุณสามารถเพิ่มเซิร์ฟเวอร์ LSP และการเน้นไวยากรณ์ภาษาเพิ่มเติมได้โดยการแก้ไขไฟล์ที่กำหนดเอง
นี่คือคีย์แมปเริ่มต้น ในทางลัดต่อไปนี้ ปุ่ม <leader>
+` ได้รับการตั้งค่าเป็นอักขระ `` (เว้นวรรค) ตรวจสอบ: keymaps.lua
ทางลัด | โหมด | คำอธิบาย |
---|---|---|
โอเค | แทรก | Esc กับ kk |
<leader> + ร | ปกติ | โหลดไฟล์การกำหนดค่าอีกครั้ง |
<leader> + ส | ปกติ | บันทึกไฟล์ |
<leader> + ถาม | ปกติ | บันทึก (ปิดหน้าต่างทั้งหมด) และออกจาก Neovim |
<leader> + น | ปกติ | เปิด NvimTree |
<leader> + หมายเลข | ปกติ | รีเฟรช NvimTree |
<leader> + nf | ปกติ | ค้นหาไฟล์ใน NvimTree |
<leader> + ff | ปกติ | เปิด Telescope เพื่อค้นหาไฟล์ |
<leader> + fg | ปกติ | เปิด Telescope เพื่อทำ grep แบบสด |
<leader> + fb | ปกติ | เปิด Telescope เพื่อแสดงรายการบัฟเฟอร์ |
<leader> + ฉ | ปกติ | เปิดกล้องโทรทรรศน์เพื่อแสดงความช่วยเหลือ |
<leader> + สำหรับ | ปกติ | เปิด Telescope เพื่อแสดงไฟล์ที่เปิดล่าสุด |
<leader> + ซม | ปกติ | เปิด Telescope เพื่อแสดงรายการคอมไพล์คอมมิต |
<leader> + wh/j/k/l | ปกติ | ย้ายไปรอบ ๆ แยก |
มม | ปกติ | บรรทัดแสดงความคิดเห็น/ไม่แสดงความคิดเห็น |
มีคีย์แมปเริ่มต้นหลายรายการ คุณสามารถตรวจสอบได้โดยใช้คำสั่ง :map
นอกจากนี้ยังมีตัวแปรอื่น ๆ :
:nmap
สำหรับการแมปโหมดปกติ:vmap
สำหรับการแมปโหมดภาพ:imap
สำหรับการแมปโหมดแทรก รายการข้างต้นไม่สมบูรณ์ การพิมพ์ :help map
ใน Vim จะให้ข้อมูลเพิ่มเติมแก่คุณ
คุณสามารถปรับแต่งการกำหนดค่านี้ได้โดยการสร้างโมดูล custom
คุณสามารถเลือกได้สองวิธี:
${XDG_CONFIG_HOME:-$HOME/.config}/nvim/lua/custom.lua
${XDG_CONFIG_HOME:-$HOME/.config}/nvim/lua/custom/
หากการกำหนดค่าแบบกำหนดเองของคุณยาวเกินไป และคุณต้องการแยกออกเป็นหลายไฟล์ชำระเงินไฟล์ที่กำหนดเองตัวอย่างสำหรับจุดเริ่มต้น ตรรกะนี้นำมาจาก CyberNvim มีส่วนที่กำหนดไว้หลายส่วนในการกำหนดค่า:
M.setup_sources
ใช้เพื่อเพิ่มแหล่งพิเศษเพื่อเชื่อมต่อกับ Null-ls คุณสามารถดูรายการแหล่งที่มาได้ที่นี่ พารามิเตอร์ b เป็นเพียงคำย่อสำหรับ null_ls.builtinsM.ensure_installed
ใช้เพื่อเพิ่มปากกาเน้นข้อความ Treesitter พิเศษM.plugins
เป็นที่ที่คุณจะเพิ่มคำจำกัดความปลั๊กอินของคุณเองM.configs
เป็นส่วนที่สำคัญที่สุดในการกำหนดค่าของคุณเอง นี่คือที่ที่คุณสามารถกำหนดคำสั่งอัตโนมัติ ต้องการไฟล์ใดๆ หรือย้ายการกำหนดค่าปัจจุบันของคุณโดยสมบูรณ์M.formatting_servers
ใช้เพื่อตั้งค่ากฎการจัดรูปแบบอัตโนมัติ คุณต้องเลือกเซิร์ฟเวอร์ภาษาที่จะให้ความสามารถในการจัดรูปแบบอัตโนมัติ อย่าลังเลที่จะแจ้งปัญหาหรือเปิดคำขอดึง ด้วยความยินดี!