218 lines
4.2 KiB
Bash
218 lines
4.2 KiB
Bash
#!/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 |