218 lines
4.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 设置错误时立即退出
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 安装依赖
install_dependencies() {
log_info "安装Neovim依赖..."
apt-get install -y \
ninja-build \
gettext \
cmake \
unzip \
curl \
git \
nodejs \
npm \
python3-pip \
python3-venv \
ripgrep \
fd-find \
bat \
exa \
delta \
tree
}
# 安装Neovim
install_neovim() {
log_info "安装Neovim..."
# 添加Neovim仓库
add-apt-repository -y ppa:neovim-ppa/unstable
apt-get update
# 安装Neovim
apt-get install -y neovim
# 创建配置目录
mkdir -p ~/.config/nvim
}
# 安装Python包
install_python_packages() {
log_info "安装Python包..."
# 创建虚拟环境
python3 -m venv ~/.local/share/nvim/venv
# 激活虚拟环境并安装包
source ~/.local/share/nvim/venv/bin/activate
pip install pynvim
pip install black
pip install isort
pip install flake8
pip install mypy
pip install jedi
deactivate
}
# 安装Node.js包
install_node_packages() {
log_info "安装Node.js包..."
# 安装全局npm包
npm install -g neovim
npm install -g typescript
npm install -g ts-node
npm install -g prettier
npm install -g eslint
}
# 配置Neovim
configure_neovim() {
log_info "配置Neovim..."
# 创建基本配置
cat > ~/.config/nvim/init.vim << EOF
" 基本设置
set number
set relativenumber
set expandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4
set smartindent
set nowrap
set noswapfile
set nobackup
set undodir=~/.vim/undodir
set undofile
set incsearch
set nohlsearch
set ignorecase
set smartcase
set termguicolors
set scrolloff=8
set signcolumn=yes
set updatetime=50
set colorcolumn=80
set splitright
set splitbelow
" 设置leader键
let mapleader = " "
" 设置文件类型检测
filetype plugin indent on
" 设置语法高亮
syntax enable
" 设置编码
set encoding=utf-8
set fileencoding=utf-8
set termencoding=utf-8
" 设置状态栏
set laststatus=2
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
" 设置命令模式补全
set wildmenu
set wildmode=list:longest,full
" 设置历史记录
set history=1000
set undolevels=1000
" 设置鼠标支持
set mouse=a
" 设置剪贴板
set clipboard=unnamedplus
" 设置自动补全
set completeopt=menu,menuone,noselect
" 设置终端颜色
set t_Co=256
set background=dark
EOF
}
# 安装语言服务器
install_language_servers() {
log_info "安装语言服务器..."
# 安装各种语言的LSP服务器
npm install -g typescript-language-server
npm install -g vscode-langservers-extracted
npm install -g @tailwindcss/language-server
npm install -g @prisma/language-server
npm install -g graphql-language-service-cli
npm install -g vscode-html-languageserver-bin
npm install -g vscode-css-languageserver-bin
npm install -g vscode-json-languageserver-bin
npm install -g vscode-eslint-language-server
npm install -g @typescript-eslint/parser
npm install -g @typescript-eslint/eslint-plugin
npm install -g eslint_d
npm install -g prettier
npm install -g stylelint
npm install -g markdownlint-cli
npm install -g yaml-language-server
npm install -g dockerfile-language-server-nodejs
npm install -g bash-language-server
npm install -g vscode-langservers-extracted
}
# 主函数
main() {
log_info "开始安装Neovim..."
# 安装依赖
install_dependencies
# 安装Neovim
install_neovim
# 安装Python包
install_python_packages
# 安装Node.js包
install_node_packages
# 配置Neovim
configure_neovim
# 安装语言服务器
install_language_servers
log_info "Neovim安装完成"
log_info "请运行 nvim 来启动编辑器。"
log_info "首次启动时会自动安装插件。"
}
# 执行主函数
main