当前位置: 首页 > article >正文

在 macOS 上优化 Vim 用于开发

简介

这篇指南将带你通过一系列步骤,如何在 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.nvimprettier),以及其他必要工具:

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.vim
  autocmd 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.vim
  autocmd 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 开发环境!🚀


http://www.kler.cn/a/588984.html

相关文章:

  • 论文阅读笔记——ADALORA: ADAPTIVE BUDGET ALLOCATION FOR PARAMETER-EFFICIENT FINE-TUNING
  • 五种最新优化算法(ALA、AE、DOA、GOA、OX)求解多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码
  • SpringBoot中的定时任务实现方式有哪些?
  • Flutter:签名板封装
  • 沐数科技数据开发岗笔试题2025
  • 《C#上位机开发从门外到门内》3-2::Modbus数据采集系统
  • HTTP+DNS综合实验
  • 谷粒商城:性能压测JVM堆区
  • C# Winform 实现换肤,并自定义皮肤功能
  • C#—闭包详解
  • 群体智能优化算法-旗鱼优化算法 (Sailfish Optimizer, SFO,含Matlab源代码)
  • SQL Server表数据变更捕获的5种方法及实战对比
  • C++(初阶)(五)——类和对象(下)
  • 【极光 Orbit·STC8x】05. GPIO库函数驱动LED流动
  • 【区块链+乡村振兴】四川云龙肉牛产业数字化平台 | FISCO BCOS 应用案例
  • 操作系统八股文整理(一)
  • Celery在Django中的作用
  • day05_Java高级
  • 深度学习正则化技术之权重衰减法、暂退法(通俗易懂版)
  • 一款基于Python的从常规文档里提取图片的简单工具开发方案