Skip to content

Neovim and its Plugin Manager (Lazy)

Vim-fork focused on extensibility and usability

วิธีติดตั้ง Neovim

ดูวิธีติดตั้งได้ที่ neovim/INSTALL.md

คำสั่งต่าง ๆ จะเหมือน Vim หมด แล้วก็เวลาเปิดไฟล์จะใช้คำสั่ง nvim แทน ตามนี้

nvim <file_name>

ใช้ Alias เรียก vim เพื่อเปิด Neovim

เราสามารถตั้ง alias เพื่อเปิด Neovim เวลาที่เราสั่ง vim โดยการใส่บรรทัดด้านล่างนี้ไว้ใน ~/.zshrc หรือไฟล์ rc อื่น ๆ

alias vim="nvim"

Plugin ใน Neovim มีหลายตัวให้เลือกใช้ สำหรับเวิร์คชอปนี้เราจะใช้ lazy.nvim กัน

วิธีติดตั้ง Lazy

เราจะทำตาม Installation | lazy.nvim เลย แบบ Single File Setup (เดี๋ยวเราค่อยปรับเป็นแบบ Structured Setup ในหัวข้อถัด ๆ ไป)

Note

สังเกตว่า configuration ของ Neovim จะเขียนด้วยภาษา Lua

โดยที่ไฟล์ init.lua คือไฟล์แรกที่ Neovim จะเข้ามาอ่านทุกครั้งที่เราเปิด Neovim

ติดตั้ง Plugin ผ่าน Lazy

Plugin แรกที่เราจะลองติดตั้งคือ Catppuccin for (Neo)vim ซึ่งเป็น theme ของ Neovim เติมความสวยงามน่าใช้ให้กับ Neovim ของเรา

ที่ไฟล์ ~/.config/nvim/init.lua เราจะเติมโค้ดด้านล่างนี้

{ "catppuccin/nvim", name = "catppuccin", priority = 1000 }

เข้าไปที่ส่วน spec ใน require("lazy").setup พร้อมกับเติมบรรทัดด้านล่างนี้เพื่อใช้งาน

vim.cmd.colorscheme "catppuccin"

สุดท้ายเราจะได้โค้ดตามนี้

-- Setup lazy.nvim
require("lazy").setup({
  spec = {
    { "catppuccin/nvim", name = "catppuccin", priority = 1000 }
  },
  -- Configure any other settings here. See the documentation for more details.
  -- colorscheme that will be used when installing plugins.
  install = { colorscheme = { "habamax" } },
  -- automatically check for plugin updates
  checker = { enabled = true },
})

vim.cmd.colorscheme "catppuccin"

หลังจากนั้นพอเราเปิด Neovim ขึ้นมา Catppuccin ก็จะถูกติดตั้งโดยอัตโมมัติ

Tip

เรื่องฟอนต์แนะนำให้โหลด Nerd Fonts มาใช้งาน ฟอนต์สวย ๆ อย่างเช่น CaskaydiaCove (Cascadia Code) ก็น่าใช้ดีนะ 😉

ทีนี้เวลาที่เราอยากเพิ่ม plugin เราก็แค่ไปเพิ่มตรงส่วน spec ใน require("lazy").setup เราก็สามารถใช้ plugin ใหม่นั้น ๆ ได้แล้ว

การจัดโครงสร้างโฟลเดอร์ Neovim Configuration

เราจะมาจัดโครงสร้างโฟลเดอร์ของ Neovim configuration และ plugins กัน หน้าตาโครงสร้างที่เราจะมาวางกันจะมีหน้าตาแบบนี้

~/.config/nvim
├── init.lua
└── lua
    ├── config
    │   ├── globals.lua
    │   ├── keymaps.lua
    │   ├── lazy.lua
    │   └── options.lua
    └── plugins
        ├── catppuccin.lua
        ├── comment.lua
        ├── indent-blankline.lua
        ├── neo-tree.lua
        ├── telescope.lua
        ├── treesitter.lua
        └── which-key.lua

Plugins ที่แนะนำให้ใช้ก็จะมีตามที่ใส่ไว้ในโฟลเดอร์ plugins ด้านบนเลย

ดูไฟล์ configuration ต่าง ๆ แต่ละไฟล์ได้ที่ zkan/nvim