86 lines
2.4 KiB
VimL
86 lines
2.4 KiB
VimL
" install vim-plug
|
|
let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim'
|
|
if empty(glob(data_dir . '/autoload/plug.vim'))
|
|
silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
|
|
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
|
|
endif
|
|
|
|
" setup plugins
|
|
call plug#begin()
|
|
Plug 'preservim/nerdtree'
|
|
Plug 'ryanoasis/vim-devicons'
|
|
Plug 'vim-airline/vim-airline'
|
|
Plug 'vim-airline/vim-airline-themes'
|
|
Plug 'prabirshrestha/vim-lsp'
|
|
Plug 'mattn/vim-lsp-settings'
|
|
Plug 'prabirshrestha/asyncomplete.vim'
|
|
Plug 'prabirshrestha/asyncomplete-lsp.vim'
|
|
call plug#end()
|
|
|
|
" general settings
|
|
syntax on
|
|
set tabstop=4
|
|
set shiftwidth=4
|
|
set expandtab
|
|
set number relativenumber
|
|
|
|
" required for vim-devicons to work properly
|
|
set encoding=UTF-8
|
|
|
|
" vim-airline settings
|
|
let g:airline_theme='papercolor'
|
|
|
|
" NERDTree settings
|
|
let g:NERDTreeShowHidden=1
|
|
nnoremap <C-t> :NERDTreeToggle<CR>
|
|
|
|
" set up vim-lsp
|
|
let g:lsp_diagnostics_echo_cursor = 1
|
|
|
|
" set up vim-lsp-settings
|
|
let g:lsp_settings= {
|
|
\ 'clangd': {
|
|
\ 'cmd': ['/opt/homebrew/Cellar/llvm/19.1.6/bin/clangd'],
|
|
\ }
|
|
\}
|
|
|
|
" set up autocomplete tabing
|
|
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
|
|
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
|
|
inoremap <expr> <cr> pumvisible() ? asyncomplete#close_popup() : "\<cr>"
|
|
|
|
" set up automatic braces
|
|
inoremap { {<CR>}<Esc>ko
|
|
inoremap ( ()<Esc>i
|
|
inoremap [ []<Esc>i
|
|
inoremap " ""<Esc>i
|
|
|
|
" set up bracketed paste
|
|
if !has('gui_running') && &term =~ '^\%(screen\|tmux\)'
|
|
" Better mouse support, see :help 'ttymouse'
|
|
set ttymouse=sgr
|
|
|
|
" Enable true colors, see :help xterm-true-color
|
|
let &termguicolors = v:true
|
|
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
|
|
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
|
|
|
|
" Enable bracketed paste mode, see :help xterm-bracketed-paste
|
|
let &t_BE = "\<Esc>[?2004h"
|
|
let &t_BD = "\<Esc>[?2004l"
|
|
let &t_PS = "\<Esc>[200~"
|
|
let &t_PE = "\<Esc>[201~"
|
|
|
|
" Enable focus event tracking, see :help xterm-focus-event
|
|
let &t_fe = "\<Esc>[?1004h"
|
|
let &t_fd = "\<Esc>[?1004l"
|
|
execute "set <FocusGained>=\<Esc>[I"
|
|
execute "set <FocusLost>=\<Esc>[O"
|
|
|
|
" Enable modified arrow keys, see :help arrow_modifiers
|
|
execute "silent! set <xUp>=\<Esc>[@;*A"
|
|
execute "silent! set <xDown>=\<Esc>[@;*B"
|
|
execute "silent! set <xRight>=\<Esc>[@;*C"
|
|
execute "silent! set <xLeft>=\<Esc>[@;*D"
|
|
endif
|