新增 請問 neovim 有哪幾套主流的套件管理程式?
parent
24a0a88517
commit
b855d8f6e5
@ -0,0 +1,197 @@
|
|||||||
|
> 請問 neovim 有哪幾套主流的套件管理程式?
|
||||||
|
|
||||||
|
在 Neovim 中,有以下幾套主流的套件管理程式:
|
||||||
|
|
||||||
|
1. **[vim-plug](https://github.com/junegunn/vim-plug)**
|
||||||
|
- 簡單易用,支援延遲載入(lazy loading)。
|
||||||
|
- 你目前的設定檔中已經使用了 `vim-plug`。
|
||||||
|
|
||||||
|
2. **[packer.nvim](https://github.com/wbthomason/packer.nvim)**
|
||||||
|
- 專為 Neovim 設計,使用 Lua 編寫。
|
||||||
|
- 支援依賴管理、延遲載入、以及更高效的設定方式。
|
||||||
|
|
||||||
|
3. **[dein.vim](https://github.com/Shougo/dein.vim)**
|
||||||
|
- 高效能的 Vim/Neovim 套件管理工具。
|
||||||
|
- 支援延遲載入與增量安裝。
|
||||||
|
|
||||||
|
4. **[lazy.nvim](https://github.com/folke/lazy.nvim)**
|
||||||
|
- 新一代的 Neovim 套件管理器,專注於效能與延遲載入。
|
||||||
|
- 提供更簡潔的設定方式,並支援自動化的依賴管理。
|
||||||
|
|
||||||
|
5. **[Vundle](https://github.com/VundleVim/Vundle.vim)**
|
||||||
|
- 舊版的套件管理工具,功能較為基礎。
|
||||||
|
- 已逐漸被其他工具取代。
|
||||||
|
|
||||||
|
6. **[Pathogen](https://github.com/tpope/vim-pathogen)**
|
||||||
|
- 最早的套件管理工具之一。
|
||||||
|
- 需要手動管理插件目錄,現已不常用。
|
||||||
|
|
||||||
|
如果你正在考慮升級或切換套件管理工具,推薦使用 **packer.nvim** 或 **lazy.nvim**,因為它們是專為 Neovim 設計的,並且支援 Lua 配置,效能更佳。
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
> 我目前只有用過vim的經驗,之前試過nvim,感覺差異很大,尤其是多了lua語言,設定檔架構也彈性很多但也導致有點不知道要怎麼上手。
|
||||||
|
>
|
||||||
|
> 如果要無痛上手,當然會考慮vim-plug。但是想說既然打算把nvim當作重新開始,想直接試試最好用也是最主流的套件管理器(主要還是希望讓大部份的教學能照著做,因為光是重學nvim的負擔就不小,更何況還要對沒提供對應的套件管理程式額外做步驟上的轉換)。
|
||||||
|
|
||||||
|
如果你希望無痛上手 Neovim 並選擇最主流且高效的套件管理器,建議直接使用 **[packer.nvim](https://github.com/wbthomason/packer.nvim)**。它是目前 Neovim 社群中最受歡迎的套件管理工具之一,並且大多數教學與插件都支援它。
|
||||||
|
|
||||||
|
以下是使用 `packer.nvim` 的簡單上手步驟:
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1. 安裝 `packer.nvim`
|
||||||
|
在終端機中執行以下指令,將 `packer.nvim` 安裝到 Neovim 的插件目錄中:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone --depth 1 https://github.com/wbthomason/packer.nvim ~/.local/share/nvim/site/pack/packer/start/packer.nvim
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. 建立 Neovim 的設定檔
|
||||||
|
Neovim 的設定檔預設位於 `~/.config/nvim/init.lua`。如果你還沒有這個檔案,可以建立一個:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p ~/.config/nvim
|
||||||
|
touch ~/.config/nvim/init.lua
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. 初始化 `packer.nvim`
|
||||||
|
在 `init.lua` 中加入以下內容,這是 `packer.nvim` 的基本設定:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
-- 自動安裝 packer.nvim
|
||||||
|
local ensure_packer = function()
|
||||||
|
local fn = vim.fn
|
||||||
|
local install_path = fn.stdpath('data') .. '/site/pack/packer/start/packer.nvim'
|
||||||
|
if fn.empty(fn.glob(install_path)) > 0 then
|
||||||
|
fn.system({ 'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path })
|
||||||
|
vim.cmd([[packadd packer.nvim]])
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local packer_bootstrap = ensure_packer()
|
||||||
|
|
||||||
|
-- 初始化插件
|
||||||
|
require('packer').startup(function(use)
|
||||||
|
use 'wbthomason/packer.nvim' -- packer 自身
|
||||||
|
use 'nvim-lua/plenary.nvim' -- 常用的 Lua 函式庫
|
||||||
|
use 'nvim-telescope/telescope.nvim' -- 模糊搜尋工具
|
||||||
|
use 'nvim-treesitter/nvim-treesitter' -- 語法高亮與解析器
|
||||||
|
use 'neovim/nvim-lspconfig' -- LSP 支援
|
||||||
|
use 'hrsh7th/nvim-cmp' -- 自動補全引擎
|
||||||
|
use 'hrsh7th/cmp-nvim-lsp' -- LSP 的補全來源
|
||||||
|
use 'L3MON4D3/LuaSnip' -- Snippet 引擎
|
||||||
|
use 'saadparwaiz1/cmp_luasnip' -- LuaSnip 的補全來源
|
||||||
|
use 'nvim-lualine/lualine.nvim' -- 狀態列
|
||||||
|
use 'kyazdani42/nvim-web-devicons' -- 圖示支援
|
||||||
|
use 'kyazdani42/nvim-tree.lua' -- 檔案總管
|
||||||
|
|
||||||
|
-- 如果是第一次安裝 packer,則自動同步插件
|
||||||
|
if packer_bootstrap then
|
||||||
|
require('packer').sync()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. 安裝插件
|
||||||
|
啟動 Neovim,執行以下指令來安裝所有插件:
|
||||||
|
|
||||||
|
```vim
|
||||||
|
:PackerSync
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5. 開始使用
|
||||||
|
完成上述步驟後,你就可以開始使用 Neovim 了!`packer.nvim` 的設定檔是用 Lua 編寫的,這與 Neovim 的現代化設計相符,並且大多數教學都會提供對應的 `packer.nvim` 配置。
|
||||||
|
|
||||||
|
如果你需要進一步的教學或插件推薦,可以隨時詢問!
|
||||||
|
|
||||||
|
找到 1 種授權類型的類似代碼
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
> 因為我是nvim新手,其實還不太曉得lazy.nvim有什麼實質上的好處。
|
||||||
|
>
|
||||||
|
> 2. 配置方式:比較起來,我反而還比較習慣packer.nvim的語法,而且和我平常寫PHP, nodejs, python定義套件的時候語法比較接近。
|
||||||
|
> 3. 效能:因為我完全是nvim新手,所以對於lazy.nvim的效能優化還不太了解。
|
||||||
|
> 4. 社群支持:目前看起來lazy.nvim的社群支援好像偏少,反而vim.plug還比較多。而且我照著lazy.nvim官方教學一步步照做,都還會出錯。官方範例有 `{ import = "plugins" },` 卻沒提到還要建立空檔案,搞到我還要問AI和爬文才知道。
|
||||||
|
> 5. 適合的用戶:我還在評估中,要重新開始就直接碰lazy.nvim好?還是packer.nvim比較容易上手?有點擔心lazy.nvim會浪費太多學習時間,又擔心packer.nvim之後會不好轉換。
|
||||||
|
|
||||||
|
根據你的情況與疑問,以下是針對 **`lazy.nvim`** 和 **`packer.nvim`** 的進一步分析與建議:
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **1. 配置方式**
|
||||||
|
- **`lazy.nvim`** 的配置方式更現代化,專注於條件載入與效能優化,但對新手來說可能有點陌生,尤其是需要建立額外的檔案(如 `plugins` 資料夾)來進行插件管理。
|
||||||
|
- **`packer.nvim`** 的語法更接近傳統的插件管理器,對於熟悉 `vim-plug` 或其他語言(如 PHP、Node.js)的用戶來說更直觀。
|
||||||
|
|
||||||
|
**建議**:如果你更習慣類似 `packer.nvim` 的語法,可以先嘗試 `packer.nvim`,等熟悉 Neovim 的 Lua 配置後再考慮轉換到 `lazy.nvim`。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **2. 效能**
|
||||||
|
- **`lazy.nvim`** 的效能優化是其核心賣點,特別是啟動時間的減少。它內建了延遲載入(lazy loading)功能,並且可以根據事件、檔案類型、命令等條件載入插件。
|
||||||
|
- **`packer.nvim`** 雖然也支援延遲載入,但需要手動配置,且效能優化不如 `lazy.nvim` 自動化。
|
||||||
|
|
||||||
|
**建議**:如果效能是你的主要考量,`lazy.nvim` 是更好的選擇。但如果你目前對效能的需求不高,`packer.nvim` 也完全足夠。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **3. 社群支持**
|
||||||
|
- **`lazy.nvim`** 是 Neovim 社群中的新趨勢,越來越多的教學與配置範例採用它,但目前的資源仍然比不上 `packer.nvim` 或 `vim-plug`。
|
||||||
|
- **`packer.nvim`** 已經存在多年,穩定且成熟,大量現有的教學與插件配置仍然基於它。
|
||||||
|
|
||||||
|
**建議**:如果你希望有更多現成的教學與範例可以參考,`packer.nvim` 可能更適合你。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **4. 適合的用戶**
|
||||||
|
- **`lazy.nvim`** 適合希望從頭開始配置 Neovim,並追求效能最佳化的用戶。
|
||||||
|
- **`packer.nvim`** 適合從 Vim 過渡到 Neovim,或希望穩定且易於上手的用戶。
|
||||||
|
|
||||||
|
**建議**:如果你對學習曲線有顧慮,`packer.nvim` 是更穩妥的選擇。等你熟悉 Neovim 的 Lua 配置後,再考慮轉換到 `lazy.nvim`。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **5. 轉換的難度**
|
||||||
|
- **從 `packer.nvim` 轉換到 `lazy.nvim`** 並不困難,因為兩者的配置邏輯相似,只是語法略有不同。
|
||||||
|
- 如果你未來希望切換到 `lazy.nvim`,可以逐步將插件配置轉移,而不需要完全重寫。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **總結建議**
|
||||||
|
- 如果你希望快速上手,並且更習慣傳統的語法,選擇 **`packer.nvim`**。
|
||||||
|
- 如果你願意投入時間學習,並希望追求效能最佳化,選擇 **`lazy.nvim`**。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **補充:如何解決 `lazy.nvim` 的學習曲線問題**
|
||||||
|
如果你決定嘗試 `lazy.nvim`,以下是一些建議來降低學習曲線:
|
||||||
|
1. **建立必要的檔案結構**:
|
||||||
|
- 在 `~/.config/nvim/lua/plugins/` 資料夾中建立插件配置檔案,例如 `init.lua`。
|
||||||
|
- 例如:
|
||||||
|
```lua
|
||||||
|
-- filepath: ~/.config/nvim/lua/plugins/init.lua
|
||||||
|
return {
|
||||||
|
{ "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" },
|
||||||
|
{ "nvim-telescope/telescope.nvim", dependencies = { "nvim-lua/plenary.nvim" } },
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **參考官方文件與範例**:
|
||||||
|
- [lazy.nvim 官方文件](https://github.com/folke/lazy.nvim)
|
||||||
|
- [Neovim 社群配置範例](https://github.com/nvim-lua)
|
||||||
|
|
||||||
|
3. **逐步學習**:
|
||||||
|
- 從簡單的插件開始,逐步添加更多功能,避免一次配置過多插件。
|
||||||
|
|
||||||
|
如果你需要具體的配置範例或幫助,隨時可以詢問!
|
Loading…
x
Reference in New Issue
Block a user