VIM 配置
基础配置
vimrc配置
| source ~/.vim/config/basic |
| source ~/.vim/config/plugin |
| source ~/.vim/config/vim-lsp |
| source ~/.vim/config/bash-lsp |
| source ~/.vim/config/go-lsp |
basic配置
| " ~/.vim/config/basic |
| set laststatus=2 |
| set statusline=%1*\%<%.50F |
| set statusline+=%=%2*\%y%m%r%h%w\ %* |
| set statusline+=%3*\%{&ff}\[%{&fenc}]\ %* |
| set statusline+=%4*\ row:%l/%L,column:%c\ %* |
| set statusline+=%5*\%3p%%\%* |
| hi User1 cterm=none ctermfg=30 ctermbg=none |
| hi User2 cterm=none ctermfg=208 ctermbg=none |
| hi User3 cterm=none ctermfg=169 ctermbg=none |
| hi User4 cterm=none ctermfg=102 ctermbg=none |
| hi User5 cterm=none ctermfg=green ctermbg=none" |
| syntax on |
| set backspace=2 |
| set wrap |
| set number |
| set relativenumber |
| set nocompatible |
| set nobackup |
| set noswapfile |
| set splitbelow |
| set splitright |
| set showcmd |
| set wildmenu |
| set hlsearch |
| set incsearch |
| " map <LEADER> :retab!<CR> |
| set smartcase |
| set tabstop=4 |
| set shiftwidth=4 |
| set softtabstop=4 |
| set expandtab |
| set autoindent |
| autocmd InsertLeave,WinEnter * set cursorline |
| autocmd InsertEnter,WinLeave * set nocursorline |
| highlight CursorLine cterm=none ctermbg=none ctermfg=180 guibg=NONE guifg=NONE |
| autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif |
| autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab" |
插件配置
| curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ |
| https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |
配置插件管理器
| " ~/.vim/config/plugin |
| call plug#begin('~/.vim/plugged') |
| Plug 'fatih/vim-go' |
| Plug 'Yggdroot/indentLine' |
| Plug 'prabirshrestha/vim-lsp' |
| Plug 'prabirshrestha/asyncomplete.vim' |
| Plug 'prabirshrestha/asyncomplete-lsp.vim' |
| call plug#end() |
配置 vim-lsp
| " ~/.vim/config/vim-lsp |
| " Tab completion |
| function! CleverTab() |
| if strpart(getline('.'), 0, col('.')-1) =~ '^\s*$' |
| return "\<Tab>" |
| else |
| return "\<C-N>" |
| endif |
| endfunction |
| inoremap <Tab> <C-R>=CleverTab()<CR> |
配置 bash-lsp
| npm i -g bash-language-server |
bash-lsp 配置
| " ~/.vim/config/bash-lsp |
| if executable('bash-language-server') |
| au User lsp_setup call lsp#register_server({ |
| \ 'name': 'bash-language-server', |
| \ 'cmd': {server_info->[&shell, &shellcmdflag, 'bash-language-server start']}, |
| \ 'allowlist': ['sh', 'bash'], |
| \ }) |
| endif |
| |
| autocmd BufNewFile *.sh exec ":call SetTitle()" |
| func SetTitle() |
| if expand("%:e") == 'sh' |
| call append(0,"\#!/usr/bin/env bash") |
| call append(1,"\# author: liy") |
| call append(2,"\#") |
| call append(3,"export PS4='\\[\\e[35m\\]+ $(basename $0):${FUNCNAME}:$LINENO: \\[\\e[0m\\]'") |
| call append(4,"") |
| endif |
| endfunc" |
| |
| |
| autocmd BufWrite *.sh call SetLastModifiedTimes() |
| function SetLastModifiedTimes() |
| let pos = getpos('.') |
| let line = getline(6) |
| let newtime = "# updated: ".strftime("%Y-%m-%d %H:%M:%S") |
| let repl = substitute(line,".*$",newtime,"g") |
| let res = search("# updated","w") |
| if res |
| call setline(6,repl) |
| endif |
| call setpos(".",pos) |
| endfunction |
| " ~/.vim/config/go-lsp |
| let g:go_def_mode='gopls' |
| set completeopt=menu,menuone,noselect |
| "au BufEnter *.go call go#config#_init() |
| au FileType go command! -buffer GoImports :silent !goimports % | edit |
| au FileType go command! -buffer GoFmt :silent !gofmt -w % |
| au FileType go nmap <Leader>r :call go#name#Run() <CR> |
| |
| au User lsp_setup call lsp#register_server({ |
| \ 'name': 'gopls', |
| \ 'cmd': {server_info->['gopls']}, |
| \ 'whitelist': ['go'], |
| \ }) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)