簡介
這篇指南將帶你通過一系列步驟,如何在 macOS 上優化 Vim,使其具備 代碼補全、語法高亮、代碼格式化、代碼片段管理、目錄樹等功能。此外,我們還會解決在安裝過程中可能遇到的常見錯誤。
1. 安裝必備工具
在開始 Vim 配置之前,我們需要確保你的 macOS 系統中安裝了以下工具:
安裝 Homebrew(如果未安裝)
Homebrew 是 macOS 上的包管理器,它幫助我們安裝各種軟件包。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安裝 Vim
通過 Homebrew 安裝最新版本的 Vim:
brew install vim
安裝其他依賴工具
我們還需要安裝一些額外的工具,例如 Node.js 和 npm(用于插件 coc.nvim
和 prettier
),以及其他必要工具:
brew install node
brew install dos2unix
brew install fzf
2. 安裝插件管理器 - vim-plug
我們將使用 vim-plug 來管理 Vim 插件。通過以下命令來安裝 vim-plug 插件管理器:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
3. 配置 ~/.vimrc
文件
如果不支持 Python 3,那么就不能安裝UltiSnips 插件。檢查 Vim 是否支持 Python 3:
vim --version | grep python
使用 Vim 打開配置文件:
vim ~/.vimrc
然后,粘貼以下配置到 ~/.vimrc
:
" 🔹 自動安裝 vim-plug(如果未安裝)
if empty(glob('~/.vim/autoload/plug.vim'))silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vimautocmd VimEnter * PlugInstall | source $MYVIMRC
endif" 📌 基礎配置
set number
set relativenumber
set cursorline
set mouse=a
set clipboard=unnamedplus" 📝 代碼縮進
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent
set smartindent" 🔍 搜索優化
set ignorecase
set smartcase
set incsearch
set hlsearch" 🚀 啟動優化
set lazyredraw
set updatetime=300" 🔗 啟用文件類型檢測 & 插件支持
filetype plugin indent on" 📌 插件管理
call plug#begin('~/.vim/plugged')" 代碼補全(Coc.nvim,仍然嘗試保留)
Plug 'neoclide/coc.nvim', {'branch': 'release'}" 代碼片段(改用 vim-vsnip,避免 UltiSnips 依賴 Python)
Plug 'hrsh7th/vim-vsnip'
Plug 'hrsh7th/vim-vsnip-integ'" 目錄樹(文件管理)
Plug 'preservim/nerdtree'" 狀態欄美化(更清晰的狀態欄)
Plug 'vim-airline/vim-airline'" 代碼格式化(僅保留 Prettier)
Plug 'prettier/vim-prettier', { 'do': 'npm install' }call plug#end()" 🚀 綁定快捷鍵
nnoremap <leader>n :NERDTreeToggle<CR>
nnoremap <leader>f :Files<CR>" 代碼補全(Coc.nvim)
inoremap <silent><expr> <TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
nnoremap <silent> gd <Plug>(coc-definition)
nnoremap <silent> K :call CocActionAsync('doHover')<CR>
nnoremap <leader>f :CocFix<CR>" 代碼格式化(只保留 Prettier)
nnoremap <leader>p :Prettier<CR>
上面是使用 macOS 自帶 vim 需要的插件。如果你的 vim 支持 Python 3,那么可以安裝下面的配置:
" 🔹 自動安裝 vim-plug(如果未安裝)
if empty(glob('~/.vim/autoload/plug.vim'))silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vimautocmd VimEnter * PlugInstall | source $MYVIMRC
endif" 📌 基礎配置
set number " 顯示行號
set relativenumber " 相對行號
set cursorline " 高亮當前行
set mouse=a " 允許鼠標操作
set clipboard=unnamedplus " 復制同步到系統剪貼板" 📝 代碼縮進
set tabstop=4
set shiftwidth=4
set expandtab " 用空格替代 Tab
set autoindent
set smartindent" 🔍 搜索優化
set ignorecase " 忽略大小寫
set smartcase " 智能區分大小寫
set incsearch " 增量搜索
set hlsearch " 高亮搜索結果" 🚀 啟動優化
set lazyredraw " 需要時才重繪,提高性能
set updatetime=300 " 降低 CursorHold 觸發時間" 🔗 啟用文件類型檢測 & 插件支持
filetype plugin indent on" 📌 插件管理
call plug#begin('~/.vim/plugged')" 代碼補全 & 語法檢查(必裝)
Plug 'neoclide/coc.nvim', {'branch': 'release'}" 語法解析 & 高亮(推薦)
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}" 代碼片段
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'" 代碼格式化(Python & JS)
Plug 'psf/black', { 'for': 'python' }
Plug 'prettier/vim-prettier', { 'do': 'npm install' }" 目錄樹(文件管理)
Plug 'preservim/nerdtree'" 狀態欄美化(更清晰的狀態欄)
Plug 'vim-airline/vim-airline'call plug#end()" 🚀 綁定快捷鍵
nnoremap <leader>n :NERDTreeToggle<CR> " <leader>n 打開/關閉目錄樹
nnoremap <leader>f :Files<CR> " <leader>f 搜索文件(需要 fzf)" 代碼補全(Coc.nvim)
inoremap <silent><expr> <TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
nnoremap <silent> gd <Plug>(coc-definition) " 跳轉到定義
nnoremap <silent> K :call CocActionAsync('doHover')<CR> " 顯示文檔
nnoremap <leader>f :CocFix<CR> " 自動修復代碼" 代碼格式化
nnoremap <leader>b :Black<CR> " Python 代碼格式化
nnoremap <leader>p :Prettier<CR> " JS/TS/HTML 代碼格式化
保存并退出:
:wq
4. 安裝插件
打開 Vim 后,運行以下命令安裝所有插件:
:PlugInstall
5. 安裝 LSP(Coc.nvim)
安裝需要的語言服務器,如 Python、C/C++、JavaScript:
:CocInstall coc-python coc-clangd coc-tsserver
6. 目錄樹(NERDTree)
使用快捷鍵打開或關閉 目錄樹:
<leader>n
(如果 leader
是 \
,那么 \n
將打開/關閉 NERDTree。)
7. 代碼格式化(Prettier & Black)
\b " 格式化 Python 代碼
\p " 格式化 JS/TS/HTML 代碼
8. 語法解析 + 代碼高亮(nvim-treesitter)
安裝語法解析器(Python、JavaScript、C/C++ 等):
:TSInstall python javascript c cpp html css json
然后在 ~/.vimrc
文件中添加:
lua << EOF
require'nvim-treesitter.configs'.setup {ensure_installed = "all",highlight = { enable = true },indent = { enable = true },
}
EOF
9. 終極優化
通過以下快捷鍵更快速地切換窗口:
nnoremap <C-h> <C-w>h
nnoremap <C-l> <C-w>l
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
常見錯誤及解決方案
錯誤 1: vim-prettier
Exit 狀態 1
問題: vim-prettier
更新失敗,出現 Exit status: 1
。
解決方案: 運行以下命令來解決依賴問題:
cd ~/.vim/plugged/vim-prettier
npm install --legacy-peer-deps
如果還是失敗,強制安裝:
npm install --force
然后返回 Vim,運行:
:PlugUpdate
錯誤 2: TSUpdate
不是編輯器命令
問題: 安裝 nvim-treesitter
時出現 E492: Not an editor command: TSUpdate
。
解決方案: 這是因為 Neovim 是必須的,Vim 不支持 nvim-treesitter
。你可以安裝 Neovim:
brew install neovim
然后使用 Neovim (nvim
而非 vim
) 打開配置文件并運行:
:TSInstall python javascript c cpp html css json
如果不想使用 Neovim,可以從 ~/.vimrc
刪除 nvim-treesitter
插件,然后重新運行:
:PlugClean
:PlugInstall
總結
通過上述步驟,你的 macOS 上的 Vim 已經優化完成,具備了:
- 代碼補全(Coc.nvim)
- 語法高亮(nvim-treesitter)
- 代碼格式化(Prettier 和 Black)
- 代碼片段管理(UltiSnips)
- 目錄管理(NERDTree)
- 狀態欄美化(Airline)
現在你可以享受一個 強大的 Vim 開發環境!🚀