vim

2024-10-14

image.png

安装vim-plug

curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

安装nodejs npm

pacman -S nodejs npm

配置文件

" === 插件管理 ===
call plug#begin()

" 状态行插件
Plug 'vim-airline/vim-airline'

" 彩虹括号
Plug 'frazrepo/vim-rainbow'

" 主题
Plug 'morhetz/gruvbox'

" 快速跳转
Plug 'easymotion/vim-easymotion'

" markdown
Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && npx --yes yarn install' }

call plug#end()

" === 主题设置 ===
if has("termguicolors")
    set termguicolors
endif

" 主题配色方案
colorscheme gruvbox
set bg=dark

" === 基本编辑器设置 ===
set laststatus=2
set scrolloff=10  " 提高 scrolloff,避免光标过于贴近边界
set encoding=utf-8
syntax on
syntax enable
set tabstop=2
set shiftwidth=2
set softtabstop=2
set number
set relativenumber
set foldmethod=indent
set showcmd
set hlsearch
set incsearch
set wildmenu
set clipboard=unnamedplus
set undofile  " 启用撤销文件
set autoindent  " 自动缩进
set smartindent " 智能缩进
set backspace=indent,eol,start
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif

" 保存时自动删除尾部空格
autocmd BufWritePre * :%s/\s\+$//e

" === 文件类型设置 ===
filetype indent on

" === 键映射 ===
inoremap jk <Esc>

let mapleader = " "  " 设置 leader 键为 空格
map <leader>q :q<CR>
map <leader>wq :wq<CR>

" 分屏
map <leader>sl :set splitright<CR>:vsplit<CR>
map <leader>sh :set nosplitright<CR>:vsplit<CR>
map <leader>sk :set nosplitbelow<CR>:split<CR>
map <leader>sj :set splitbelow<CR>:split<CR>

map <up> :res +5<CR>
map <down> :res -5<CR>
map <left> :vertical resize-5<CR>
map <right> :vertical resize+5<CR>


" === 特殊功能 ===
let g:rainbow_active = 1  " 启用彩虹括号
let g:airline_theme = 'gruvbox'  " 设置 vim-airline 的主题
let g:airline_powerline_fonts=1
let g:airline#extensions#tabline#enabled = 1

" Easymotion 快速跳转配置
let g:EasyMotion_smartcase = 1
"map <Leader>h <Plug>(easymotion-linebackward)
"map <Leader>j <Plug>(easymotion-j)
"map <Leader>k <Plug>(easymotion-k)
"map <Leader>l <Plug>(easymotion-lineforward)
"map <Leader>. <Plug>(easymotion-repeat)
nmap <Leader>f <Plug>(easymotion-overwin-f)

最在vim命令模式执行PlugInstall