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 @ 2023-07-15 22:49  liy36  阅读(46)  评论(0)    收藏  举报