vim配置

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

安装 bash 语言服务器

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-go

" ~/.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'],
\ })
posted @   liy36  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示