swap default vimrc to minimal one
This commit is contained in:
parent
b86349a8ae
commit
36dea09be6
@ -1,577 +1,65 @@
|
|||||||
"__ _(_)_ __ ___ _ __ ___ "
|
"
|
||||||
"\ \ / / | '_ ` _ \| '__/ __|"
|
" minimal vimrc with no (extra) plugins
|
||||||
" \ V /| | | | | | | | | (__ "
|
"
|
||||||
" \_/ |_|_| |_| |_|_| \___|"
|
|
||||||
|
|
||||||
"================
|
"load system defaults
|
||||||
"General Settings
|
|
||||||
"================
|
|
||||||
"{{{
|
|
||||||
"source system defaults
|
|
||||||
if filereadable(expand('$VIMRUNTIME/defaults.vim'))
|
if filereadable(expand('$VIMRUNTIME/defaults.vim'))
|
||||||
unlet! g:skip_defaults_vim
|
unlet! g:skip_defaults_vim
|
||||||
source $VIMRUNTIME/defaults.vim
|
source $VIMRUNTIME/defaults.vim
|
||||||
endif
|
endif
|
||||||
|
|
||||||
"encoding/format
|
"regular settings
|
||||||
|
"----------------
|
||||||
|
" ui
|
||||||
|
set number
|
||||||
|
set ruler
|
||||||
|
set wildmenu
|
||||||
|
set showcmd
|
||||||
|
set showmatch
|
||||||
|
|
||||||
|
" encoding/format
|
||||||
set encoding=utf-8
|
set encoding=utf-8
|
||||||
set fileformats=unix,dos,mac
|
set fileformats=unix,dos,mac
|
||||||
|
|
||||||
"tab/indent
|
" searching
|
||||||
set tabstop=4
|
|
||||||
set softtabstop=4
|
|
||||||
set shiftwidth=4
|
|
||||||
set expandtab
|
|
||||||
set autoindent
|
|
||||||
|
|
||||||
"status bar
|
|
||||||
set showcmd
|
|
||||||
set wildmenu
|
|
||||||
set ruler
|
|
||||||
set laststatus=2
|
|
||||||
|
|
||||||
"search
|
|
||||||
set incsearch
|
|
||||||
set hlsearch
|
set hlsearch
|
||||||
|
set incsearch
|
||||||
set ignorecase
|
set ignorecase
|
||||||
set smartcase
|
set smartcase
|
||||||
|
|
||||||
"file/buffer
|
" indent
|
||||||
set autoread
|
set shiftwidth=4
|
||||||
set autowrite
|
set tabstop=4
|
||||||
set confirm
|
set softtabstop=4
|
||||||
|
set autoindent
|
||||||
|
|
||||||
"cursor behaviour
|
" key timeout values
|
||||||
set virtualedit=block
|
|
||||||
set backspace=indent,eol,start
|
|
||||||
set scrolloff=2
|
|
||||||
set sidescrolloff=4
|
|
||||||
|
|
||||||
"window behaviour (ltr)
|
|
||||||
set splitbelow
|
|
||||||
set splitright
|
|
||||||
|
|
||||||
"input/timeout
|
|
||||||
set esckeys
|
set esckeys
|
||||||
set timeoutlen=1000 "for mappings
|
set ttimeoutlen=20
|
||||||
set ttimeoutlen=20 "for keycodes
|
set timeoutlen=1000
|
||||||
|
|
||||||
"drawing
|
" allow syntax and filetype plugins
|
||||||
set lazyredraw
|
syntax enable
|
||||||
set regexpengine=1
|
|
||||||
set redrawtime=10000
|
|
||||||
|
|
||||||
"display
|
|
||||||
set background=dark
|
|
||||||
set number
|
|
||||||
set wrap
|
|
||||||
set foldmethod=marker
|
|
||||||
set listchars=tab:→\ ,extends:›,precedes:‹,nbsp:·,space:·,trail:·,eol:¬
|
|
||||||
" set list
|
|
||||||
|
|
||||||
"syntax/filetype/matchit
|
|
||||||
syntax on
|
|
||||||
filetype plugin indent on
|
filetype plugin indent on
|
||||||
runtime macros/matchit.vim
|
runtime macros/matchit.vim
|
||||||
|
|
||||||
"os/gui dependent settings
|
" autocmds
|
||||||
"---------------
|
"---------
|
||||||
if has('win32')
|
augroup general
|
||||||
let &runtimepath.=",$HOME/.vim"
|
|
||||||
endif
|
|
||||||
|
|
||||||
if has("gui_running")
|
|
||||||
set guioptions -=m
|
|
||||||
set guioptions -=T
|
|
||||||
if has("gui_gtk2")
|
|
||||||
set guifont=Inconsolata\ 12
|
|
||||||
elseif has("gui_macvim")
|
|
||||||
set guifont=Menlo\ Regular:h14
|
|
||||||
elseif has("gui_win32")
|
|
||||||
set guifont=Consolas:h10
|
|
||||||
" set guifont=Cascadia\ Code:h10
|
|
||||||
|
|
||||||
"start full-screened
|
|
||||||
augroup WINGUI
|
|
||||||
autocmd! GUIEnter * simalt ~x
|
|
||||||
augroup END
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
"file cleanup
|
|
||||||
"------------
|
|
||||||
"swap
|
|
||||||
let mySwapDir = expand("$HOME/.vim/.swap")
|
|
||||||
if !isdirectory(mySwapDir)
|
|
||||||
silent! call mkdir(mySwapDir, "p")
|
|
||||||
endif
|
|
||||||
let &directory=mySwapDir
|
|
||||||
|
|
||||||
"undo
|
|
||||||
if has('persistent_undo')
|
|
||||||
let myUndoDir = expand("$HOME/.vim/.undo")
|
|
||||||
if !isdirectory(myUndoDir)
|
|
||||||
silent! call mkdir(myUndoDir, "p")
|
|
||||||
endif
|
|
||||||
let &undodir=myUndoDir
|
|
||||||
set undofile
|
|
||||||
endif
|
|
||||||
|
|
||||||
"backup
|
|
||||||
if has('writebackup')
|
|
||||||
let myBackupDir = expand("$HOME/.vim/.backup")
|
|
||||||
if !isdirectory(myBackupDir)
|
|
||||||
silent! call mkdir(myBackupDir, "p")
|
|
||||||
endif
|
|
||||||
let &backupdir=myBackupDir
|
|
||||||
set backup
|
|
||||||
endif
|
|
||||||
"}}}
|
|
||||||
|
|
||||||
"========
|
|
||||||
"Keybinds
|
|
||||||
"========
|
|
||||||
"{{{
|
|
||||||
"leader key
|
|
||||||
let mapleader=' '
|
|
||||||
|
|
||||||
"----------------
|
|
||||||
"regular keybinds
|
|
||||||
"----------------
|
|
||||||
|
|
||||||
"paste and search
|
|
||||||
nnoremap <silent><leader><space> :noh <BAR> :let @/ = ""<CR>
|
|
||||||
nnoremap <leader>i :set invpaste<CR>
|
|
||||||
|
|
||||||
"toggles
|
|
||||||
nnoremap <silent><leader>lb :call ToggleLineBreak()<CR>
|
|
||||||
nnoremap <silent><leader>wr :call ToggleWrap()<CR>
|
|
||||||
nnoremap <silent><leader>cc :call ToggleColorColumn()<CR>
|
|
||||||
|
|
||||||
"dates
|
|
||||||
nnoremap <leader>ts "=strftime("%F %T%z")<CR>
|
|
||||||
nnoremap <leader>dt :r !date<CR>
|
|
||||||
|
|
||||||
"rc files
|
|
||||||
nnoremap <leader>rc :vsplit $MYVIMRC<CR>
|
|
||||||
nnoremap <leader>so :source $MYVIMRC<CR>
|
|
||||||
nnoremap <leader>rcl :vsplit ~/.config/vimrc<CR>
|
|
||||||
nnoremap <leader>rcft :vsplit $HOME/.vim/after/ftplugin/<CR>
|
|
||||||
|
|
||||||
"windows
|
|
||||||
nnoremap <leader>cl :close<CR>
|
|
||||||
|
|
||||||
"formatting tools
|
|
||||||
nnoremap =j :%!python -m json.tool<CR>
|
|
||||||
|
|
||||||
"abbrevations
|
|
||||||
inoreabbrev <expr> #!! "#!/usr/bin/env"
|
|
||||||
|
|
||||||
"---------------
|
|
||||||
"plugin keybinds
|
|
||||||
"---------------
|
|
||||||
|
|
||||||
"netrw
|
|
||||||
nnoremap <silent><leader>e :call ToggleNetrw()<CR>
|
|
||||||
|
|
||||||
"vim-plug
|
|
||||||
nnoremap <leader>pi :source $MYVIMRC <BAR> :PlugInstall<CR>
|
|
||||||
nnoremap <leader>pu :source $MYVIMRC <BAR> :PlugUpdate<CR>
|
|
||||||
nnoremap <leader>pc :source $MYVIMRC <BAR> :PlugClean<CR>
|
|
||||||
|
|
||||||
"openbrowser
|
|
||||||
nnoremap <leader>ob :OpenBrowser
|
|
||||||
nnoremap <leader>obs :OpenBrowserSearch
|
|
||||||
nmap gx <Plug>(openbrowser-smart-search)
|
|
||||||
vmap gx <Plug>(openbrowser-smart-search)
|
|
||||||
|
|
||||||
"ale
|
|
||||||
nnoremap <leader>at :ALEToggle<CR>
|
|
||||||
nmap <leader>af <Plug>(ale_fix)
|
|
||||||
nmap <leader>aK <Plug>(ale_hover)
|
|
||||||
nmap <leader>an <Plug>(ale_next_wrap)
|
|
||||||
nmap <leader>ap <Plug>(ale_previous_wrap)
|
|
||||||
|
|
||||||
"lsp
|
|
||||||
function! s:on_lsp_buffer_enabled() abort
|
|
||||||
setlocal omnifunc=lsp#complete
|
|
||||||
setlocal signcolumn=yes
|
|
||||||
if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif
|
|
||||||
nmap <buffer> gd <plug>(lsp-definition)
|
|
||||||
nmap <buffer> gs <plug>(lsp-document-symbol-search)
|
|
||||||
nmap <buffer> gS <plug>(lsp-workspace-symbol-search)
|
|
||||||
nmap <buffer> gr <plug>(lsp-references)
|
|
||||||
nmap <buffer> gi <plug>(lsp-implementation)
|
|
||||||
nmap <buffer> gt <plug>(lsp-type-definition)
|
|
||||||
nmap <buffer> [g <plug>(lsp-previous-diagnostic)
|
|
||||||
nmap <buffer> ]g <plug>(lsp-next-diagnostic)
|
|
||||||
nmap <buffer> gp <plug>(lsp-previous-diagnostic)
|
|
||||||
nmap <buffer> gn <plug>(lsp-next-diagnostic)
|
|
||||||
nmap <buffer> K <plug>(lsp-hover)
|
|
||||||
|
|
||||||
nmap <buffer> <leader>pdf <plug>(lsp-peek-definition)
|
|
||||||
nmap <buffer> <leader>pdc <plug>(lsp-peek-declaration)
|
|
||||||
nmap <buffer> <leader>pdi <plug>(lsp-peek-implementation)
|
|
||||||
nmap <buffer> <leader>ca <plug>(lsp-code-action)
|
|
||||||
nmap <buffer> <leader>cl <plug>(lsp-code-lens)
|
|
||||||
nmap <buffer> <leader>rn <plug>(lsp-rename)
|
|
||||||
nmap <buffer> <leader>ls <plug>(lsp-status)
|
|
||||||
nmap <buffer> <leader>lt <plug>(lsp-stop-server)
|
|
||||||
nmap <buffer> <leader>di <plug>(lsp-document-diagnostics)
|
|
||||||
nmap <buffer> <leader>df <plug>(lsp-document-format)
|
|
||||||
|
|
||||||
inoremap <buffer> <expr><c-f> lsp#scroll(+4)
|
|
||||||
inoremap <buffer> <expr><c-d> lsp#scroll(-4)
|
|
||||||
|
|
||||||
" highlight lspReference ctermfg=red guifg=red ctermbg=green guibg=green
|
|
||||||
|
|
||||||
" refer to doc to add more commands
|
|
||||||
" https://github.com/prabirshrestha/vim-lsp#supported-commands
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
||||||
"vim-emmet
|
|
||||||
let g:user_emmet_leader_key = '<C-I>'
|
|
||||||
|
|
||||||
"git-gutter
|
|
||||||
nnoremap <leader>ggt :GitGutterToggle<CR>
|
|
||||||
|
|
||||||
"vim-fugitive
|
|
||||||
nnoremap <leader>gw :Gwrite<CR>
|
|
||||||
nnoremap <leader>gl :Glog<CR>
|
|
||||||
nnoremap <leader>gs :Git<CR>
|
|
||||||
nnoremap <leader>gd :Gdiffsplit<CR>
|
|
||||||
nnoremap <leader>gp :Gpush<CR>
|
|
||||||
nnoremap <leader>ga :Git add %<CR>
|
|
||||||
nnoremap <leader>ga. :Git add .<CR>
|
|
||||||
nnoremap <leader>gc :Git commit<CR>
|
|
||||||
|
|
||||||
"fzf
|
|
||||||
nnoremap <leader>f :GitFiles<CR>
|
|
||||||
nnoremap <leader>F :Files<CR>
|
|
||||||
nnoremap <leader>c :Commands<CR>
|
|
||||||
nnoremap <leader>b :Buffers<CR>
|
|
||||||
nnoremap <leader>h :Helptags<CR>
|
|
||||||
nnoremap <leader>m :Maps<CR>
|
|
||||||
nnoremap <leader>rg :Rg<CR>
|
|
||||||
"}}}
|
|
||||||
|
|
||||||
"==================
|
|
||||||
"Plugins (vim-plug)
|
|
||||||
"==================
|
|
||||||
"{{{
|
|
||||||
"vim-plug paths
|
|
||||||
let plugDir = expand("$HOME/.vim/autoload/plug.vim")
|
|
||||||
let pluginDir = expand("$HOME/.vim/plugged")
|
|
||||||
let plugRemote = "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"
|
|
||||||
|
|
||||||
"ensure vim-plug is installed on VimEnter
|
|
||||||
if empty(glob(plugDir))
|
|
||||||
silent execute "!curl -fLo " . shellescape(expand(plugDir)) . " --create-dirs " . shellescape(plugRemote)
|
|
||||||
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
|
|
||||||
endif
|
|
||||||
|
|
||||||
"pre plugin settings
|
|
||||||
"-------------------
|
|
||||||
"(none for now)
|
|
||||||
|
|
||||||
"load plugins
|
|
||||||
"------------
|
|
||||||
call plug#begin(pluginDir)
|
|
||||||
Plug 'junegunn/vim-plug'
|
|
||||||
|
|
||||||
" ==== quality of life ====
|
|
||||||
"normal mode keybinds
|
|
||||||
Plug 'tpope/vim-commentary'
|
|
||||||
Plug 'tpope/vim-surround'
|
|
||||||
Plug 'tpope/vim-unimpaired'
|
|
||||||
"command mode keybinds
|
|
||||||
Plug 'tpope/vim-rsi'
|
|
||||||
Plug 'tpope/vim-eunuch'
|
|
||||||
Plug 'tpope/vim-repeat'
|
|
||||||
|
|
||||||
" ==== external tools ====
|
|
||||||
"git
|
|
||||||
Plug 'tpope/vim-fugitive'
|
|
||||||
Plug 'tpope/vim-rhubarb'
|
|
||||||
Plug 'tpope/vim-dispatch'
|
|
||||||
Plug 'airblade/vim-gitgutter'
|
|
||||||
"fzf
|
|
||||||
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
|
|
||||||
Plug 'junegunn/fzf.vim'
|
|
||||||
"browser plugins
|
|
||||||
Plug 'tyru/open-browser.vim'
|
|
||||||
Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']}
|
|
||||||
"REPLs
|
|
||||||
" Plug 'jpalardy/vim-slime'
|
|
||||||
|
|
||||||
" ==== specific language support ====
|
|
||||||
"go
|
|
||||||
Plug 'fatih/vim-go'
|
|
||||||
"ruby
|
|
||||||
Plug 'vim-ruby/vim-ruby'
|
|
||||||
"html
|
|
||||||
Plug 'mattn/emmet-vim'
|
|
||||||
"markdown
|
|
||||||
Plug 'plasticboy/vim-markdown'
|
|
||||||
Plug 'godlygeek/tabular'
|
|
||||||
"toml
|
|
||||||
Plug 'cespare/vim-toml'
|
|
||||||
"sol
|
|
||||||
Plug 'tomlion/vim-solidity'
|
|
||||||
|
|
||||||
" ==== general language support ====
|
|
||||||
"linting and lsp
|
|
||||||
Plug 'dense-analysis/ale'
|
|
||||||
Plug 'prabirshrestha/vim-lsp'
|
|
||||||
Plug 'mattn/vim-lsp-settings'
|
|
||||||
|
|
||||||
" ==== misc editor plugins ====
|
|
||||||
Plug 'editorconfig/editorconfig-vim'
|
|
||||||
Plug 'flazz/vim-colorschemes'
|
|
||||||
call plug#end()
|
|
||||||
|
|
||||||
"post plugin settings
|
|
||||||
"--------------------
|
|
||||||
"netrw
|
|
||||||
let g:netrw_banner = 0
|
|
||||||
let g:netrw_winsize = 24
|
|
||||||
let g:netrw_liststyle = 3
|
|
||||||
let g:netrw_preview = 1
|
|
||||||
let g:netrw_alto = 0
|
|
||||||
let g:netrw_usetab = 1
|
|
||||||
let g:netrw_browsex_viewer = "xdg-open"
|
|
||||||
let g:NetrwIsOpen = 0 "for toggle function
|
|
||||||
let g:netrw_nogx = 1
|
|
||||||
|
|
||||||
"ale
|
|
||||||
let g:ale_linters = {
|
|
||||||
\ 'python': ['flake8', 'pylint'],
|
|
||||||
\ 'javascript': ['eslint'],
|
|
||||||
\ 'ruby': ['rubocop'],
|
|
||||||
\ 'markdown': ['mdl', 'write-good']
|
|
||||||
\}
|
|
||||||
|
|
||||||
let g:ale_fixers = {
|
|
||||||
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
|
|
||||||
\ 'python': ['yapf', 'black'],
|
|
||||||
\ 'javascript': ['prettier', 'eslint'],
|
|
||||||
\ 'ruby': ['rubocop'],
|
|
||||||
\ 'css': ['prettier'],
|
|
||||||
\ 'scss': ['prettier'],
|
|
||||||
\ 'html': ['prettier'],
|
|
||||||
\ 'markdown': ['prettier'],
|
|
||||||
\ 'yaml': ['prettier'],
|
|
||||||
\ 'json': ['prettier']
|
|
||||||
\}
|
|
||||||
|
|
||||||
let g:ale_sign_error = 'W>'
|
|
||||||
let g:ale_sign_warning = 'E>'
|
|
||||||
let g:ale_lint_on_save = 1
|
|
||||||
let g:ale_fix_on_save_ignore = 1
|
|
||||||
highlight clear SignColumn
|
|
||||||
|
|
||||||
"vim-lsp
|
|
||||||
let g:lsp_format_sync_timeout = 1000
|
|
||||||
let g:lsp_diagnostics_enabled = 0
|
|
||||||
let g:lsp_document_highlight_enabled = 0
|
|
||||||
let g:lsp_settings_enable_suggestions = 0
|
|
||||||
|
|
||||||
"vim-lsp-settings specific configs
|
|
||||||
" let g:lsp_settings = {
|
|
||||||
" \ 'pyls-all': {
|
|
||||||
" \ 'workspace_config': {
|
|
||||||
" \ 'pyls': {
|
|
||||||
" \ 'configurationSources': ['flake8']
|
|
||||||
" \ }
|
|
||||||
" \ }
|
|
||||||
" \ }
|
|
||||||
" \}
|
|
||||||
|
|
||||||
" let g:lsp_settings_filetype_python = ['pyls-all', 'pyright-langserver', 'jedi-language-server']
|
|
||||||
|
|
||||||
"vim-markdown
|
|
||||||
let g:vim_markdown_folding_disabled = 1
|
|
||||||
let g:vim_markdown_toc_autofit = 1
|
|
||||||
let g:vim_markdown_conceal = 0
|
|
||||||
let g:vim_markdown_frontmatter = 1
|
|
||||||
|
|
||||||
|
|
||||||
"vim-slime
|
|
||||||
let g:slime_target = "tmux"
|
|
||||||
let g:slime_default_config = {"socket_name": get(split($TMUX, ","), 0), "target_pane": ":.1"}
|
|
||||||
" let g:slime_default_config = {"socket_name": "default", "target_pane": "{last}"}
|
|
||||||
|
|
||||||
"}}}
|
|
||||||
|
|
||||||
"========
|
|
||||||
"Commands
|
|
||||||
"========
|
|
||||||
"{{{
|
|
||||||
"common typos and abbreviations
|
|
||||||
cnoremap w!! w !sudo tee % > /dev/null
|
|
||||||
command! W w !sudo tee % > /dev/null
|
|
||||||
command! Q q
|
|
||||||
command! WQ wq
|
|
||||||
command! Q1 q!
|
|
||||||
|
|
||||||
"useful shortcut commands
|
|
||||||
command! Trim %s/\s\+$//
|
|
||||||
"}}}
|
|
||||||
|
|
||||||
"=========
|
|
||||||
"Functions
|
|
||||||
"=========
|
|
||||||
"{{{
|
|
||||||
"toggle functions
|
|
||||||
"----------------
|
|
||||||
function! ToggleColorColumn()
|
|
||||||
if &cc == ''
|
|
||||||
set cc=80
|
|
||||||
else
|
|
||||||
set cc=
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ToggleLineBreak()
|
|
||||||
if &lbr == ''
|
|
||||||
set fo+=t "Autowraps text with textwidth
|
|
||||||
set fo-=l "Wraps long lines in --insert-- mode
|
|
||||||
set lbr
|
|
||||||
else
|
|
||||||
set fo-=t
|
|
||||||
set fo+=l
|
|
||||||
set lbr!
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ToggleWrap()
|
|
||||||
if &wrap == ''
|
|
||||||
set wrap
|
|
||||||
else
|
|
||||||
set nowrap
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ToggleNetrw() "make netrw toggleable <https://vi.stackexchange.com/questions/10988/toggle-explorer-window>
|
|
||||||
if g:NetrwIsOpen
|
|
||||||
let i = bufnr("$")
|
|
||||||
while (i >= 1)
|
|
||||||
if (getbufvar(i, "&filetype") == "netrw")
|
|
||||||
silent exe "bwipeout " . i
|
|
||||||
endif
|
|
||||||
let i-=1
|
|
||||||
endwhile
|
|
||||||
let g:NetrwIsOpen=0
|
|
||||||
else
|
|
||||||
let g:NetrwIsOpen=1
|
|
||||||
silent Lexplore
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
"}}}
|
|
||||||
|
|
||||||
"============
|
|
||||||
"Autocommands
|
|
||||||
"============
|
|
||||||
"{{{
|
|
||||||
if has("autocmd")
|
|
||||||
"language specific filetype functions (run by autocmds)
|
|
||||||
"------------------
|
|
||||||
function FT_python()
|
|
||||||
setlocal autoindent
|
|
||||||
setlocal formatprg=yapf
|
|
||||||
iabbr false False
|
|
||||||
iabbr true True
|
|
||||||
|
|
||||||
xnoremap <leader>r <esc>:'<,'>:w !python3<CR>
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function FT_ruby()
|
|
||||||
setlocal autoindent
|
|
||||||
setlocal formatprg=rubocop
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function FT_go()
|
|
||||||
set noexpandtab
|
|
||||||
setlocal formatprg=gofmt
|
|
||||||
let g:go_auto_type_info = 1
|
|
||||||
let g:go_imports_autosave = 1
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function FT_html()
|
|
||||||
syntax sync fromstart
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function FT_markdown()
|
|
||||||
setlocal spell
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function FT_halftab()
|
|
||||||
setlocal tabstop=2 softtabstop=2 shiftwidth=2 expandtab
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
"language specific autocmds
|
|
||||||
"--------------------------
|
|
||||||
augroup language_ft_group
|
|
||||||
autocmd!
|
|
||||||
autocmd FileType python call FT_python()
|
|
||||||
autocmd FileType ruby,eruby call FT_ruby()
|
|
||||||
autocmd FileType go call FT_go()
|
|
||||||
autocmd FileType html call FT_html()
|
|
||||||
autocmd FileType markdown call FT_markdown()
|
|
||||||
autocmd FileType sh,ruby,bash,html,css,scss,javascript,json,toml,yaml call FT_halftab()
|
|
||||||
autocmd BufNewFile,BufRead *html*,*css*,*js* EmmetInstall
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
"lsp autocmds
|
|
||||||
"------------
|
|
||||||
augroup lsp_install
|
|
||||||
autocmd!
|
|
||||||
autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
augroup lsp_ft_group
|
|
||||||
autocmd!
|
|
||||||
" autoformat with LSP
|
|
||||||
" autocmd BufWritePre *.rs call execute('LspDocumentFormatSync')
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
"global autocmds
|
|
||||||
"-----------------
|
|
||||||
augroup global
|
|
||||||
autocmd!
|
autocmd!
|
||||||
"keep equal proportions when windows resized
|
"keep equal proportions when windows resized
|
||||||
autocmd VimResized * wincmd =
|
autocmd VimResized * wincmd =
|
||||||
"save cursor position in a file
|
"save cursor position in a file
|
||||||
autocmd BufReadPost * if line("'\"") > 1 && line("'\"")
|
autocmd BufReadPost * if line("'\"") > 1 && line("'\"")
|
||||||
\ <= line("$") | exe "normal! g'\"" | endif
|
\ <= line("$") | exe "normal! g'\"" | endif
|
||||||
augroup END
|
augroup END
|
||||||
endif
|
|
||||||
"}}}
|
|
||||||
|
|
||||||
"==============
|
augroup languages
|
||||||
"Local settings
|
autocmd!
|
||||||
"==============
|
autocmd BufNewFile,BufRead *.bash set syntax=sh
|
||||||
"{{{
|
autocmd FileType python xnoremap <leader>r <esc>:'<,'>:w !python3<CR>
|
||||||
"source local vimrc
|
autocmd FileType go set noexpandtab
|
||||||
if filereadable(expand("~/.config/vimrc"))
|
autocmd FileType html :syntax sync fromstart
|
||||||
source ~/.config/vimrc
|
autocmd FileType html,javascript,css,json,yaml,sh
|
||||||
endif
|
\ setlocal ts=2 sts=2 sw=2 expandtab
|
||||||
"}}}
|
augroup END
|
||||||
|
|
||||||
"colorschemes
|
|
||||||
" {{{
|
|
||||||
" colorscheme 1989
|
|
||||||
" colorscheme PaperColor
|
|
||||||
" colorscheme gruvbox
|
|
||||||
" colorscheme jellybeans
|
|
||||||
" colorscheme molokai
|
|
||||||
" colorscheme Benokai
|
|
||||||
" colorscheme Monokai
|
|
||||||
" colorscheme badwolf
|
|
||||||
" colorscheme wombat256
|
|
||||||
" colorscheme yuejiu
|
|
||||||
" colorscheme wargrey
|
|
||||||
" colorscheme Tomorrow-Night-Bright
|
|
||||||
" colorscheme monokai-phoenix
|
|
||||||
" }}}
|
|
||||||
|
|||||||
@ -1,65 +0,0 @@
|
|||||||
"
|
|
||||||
" minimal vimrc with no (extra) plugins
|
|
||||||
"
|
|
||||||
|
|
||||||
"load system defaults
|
|
||||||
if filereadable(expand('$VIMRUNTIME/defaults.vim'))
|
|
||||||
unlet! g:skip_defaults_vim
|
|
||||||
source $VIMRUNTIME/defaults.vim
|
|
||||||
endif
|
|
||||||
|
|
||||||
"regular settings
|
|
||||||
"----------------
|
|
||||||
" ui
|
|
||||||
set number
|
|
||||||
set ruler
|
|
||||||
set wildmenu
|
|
||||||
set showcmd
|
|
||||||
set showmatch
|
|
||||||
|
|
||||||
" encoding/format
|
|
||||||
set encoding=utf-8
|
|
||||||
set fileformats=unix,dos,mac
|
|
||||||
|
|
||||||
" searching
|
|
||||||
set hlsearch
|
|
||||||
set incsearch
|
|
||||||
set ignorecase
|
|
||||||
set smartcase
|
|
||||||
|
|
||||||
" indent
|
|
||||||
set shiftwidth=4
|
|
||||||
set tabstop=4
|
|
||||||
set softtabstop=4
|
|
||||||
set autoindent
|
|
||||||
|
|
||||||
" key timeout values
|
|
||||||
set esckeys
|
|
||||||
set ttimeoutlen=20
|
|
||||||
set timeoutlen=1000
|
|
||||||
|
|
||||||
" allow syntax and filetype plugins
|
|
||||||
syntax enable
|
|
||||||
filetype plugin indent on
|
|
||||||
runtime macros/matchit.vim
|
|
||||||
|
|
||||||
" autocmds
|
|
||||||
"---------
|
|
||||||
augroup general
|
|
||||||
autocmd!
|
|
||||||
"keep equal proportions when windows resized
|
|
||||||
autocmd VimResized * wincmd =
|
|
||||||
"save cursor position in a file
|
|
||||||
autocmd BufReadPost * if line("'\"") > 1 && line("'\"")
|
|
||||||
\ <= line("$") | exe "normal! g'\"" | endif
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
augroup languages
|
|
||||||
autocmd!
|
|
||||||
autocmd BufNewFile,BufRead *.bash set syntax=sh
|
|
||||||
autocmd FileType python xnoremap <leader>r <esc>:'<,'>:w !python3<CR>
|
|
||||||
autocmd FileType go set noexpandtab
|
|
||||||
autocmd FileType html :syntax sync fromstart
|
|
||||||
autocmd FileType html,javascript,css,json,yaml,sh
|
|
||||||
\ setlocal ts=2 sts=2 sw=2 expandtab
|
|
||||||
augroup END
|
|
||||||
577
config/vim/.vim/vimrc.plugins
Normal file
577
config/vim/.vim/vimrc.plugins
Normal file
@ -0,0 +1,577 @@
|
|||||||
|
"__ _(_)_ __ ___ _ __ ___ "
|
||||||
|
"\ \ / / | '_ ` _ \| '__/ __|"
|
||||||
|
" \ V /| | | | | | | | | (__ "
|
||||||
|
" \_/ |_|_| |_| |_|_| \___|"
|
||||||
|
|
||||||
|
"================
|
||||||
|
"General Settings
|
||||||
|
"================
|
||||||
|
"{{{
|
||||||
|
"source system defaults
|
||||||
|
if filereadable(expand('$VIMRUNTIME/defaults.vim'))
|
||||||
|
unlet! g:skip_defaults_vim
|
||||||
|
source $VIMRUNTIME/defaults.vim
|
||||||
|
endif
|
||||||
|
|
||||||
|
"encoding/format
|
||||||
|
set encoding=utf-8
|
||||||
|
set fileformats=unix,dos,mac
|
||||||
|
|
||||||
|
"tab/indent
|
||||||
|
set tabstop=4
|
||||||
|
set softtabstop=4
|
||||||
|
set shiftwidth=4
|
||||||
|
set expandtab
|
||||||
|
set autoindent
|
||||||
|
|
||||||
|
"status bar
|
||||||
|
set showcmd
|
||||||
|
set wildmenu
|
||||||
|
set ruler
|
||||||
|
set laststatus=2
|
||||||
|
|
||||||
|
"search
|
||||||
|
set incsearch
|
||||||
|
set hlsearch
|
||||||
|
set ignorecase
|
||||||
|
set smartcase
|
||||||
|
|
||||||
|
"file/buffer
|
||||||
|
set autoread
|
||||||
|
set autowrite
|
||||||
|
set confirm
|
||||||
|
|
||||||
|
"cursor behaviour
|
||||||
|
set virtualedit=block
|
||||||
|
set backspace=indent,eol,start
|
||||||
|
set scrolloff=2
|
||||||
|
set sidescrolloff=4
|
||||||
|
|
||||||
|
"window behaviour (ltr)
|
||||||
|
set splitbelow
|
||||||
|
set splitright
|
||||||
|
|
||||||
|
"input/timeout
|
||||||
|
set esckeys
|
||||||
|
set timeoutlen=1000 "for mappings
|
||||||
|
set ttimeoutlen=20 "for keycodes
|
||||||
|
|
||||||
|
"drawing
|
||||||
|
set lazyredraw
|
||||||
|
set regexpengine=1
|
||||||
|
set redrawtime=10000
|
||||||
|
|
||||||
|
"display
|
||||||
|
set background=dark
|
||||||
|
set number
|
||||||
|
set wrap
|
||||||
|
set foldmethod=marker
|
||||||
|
set listchars=tab:→\ ,extends:›,precedes:‹,nbsp:·,space:·,trail:·,eol:¬
|
||||||
|
" set list
|
||||||
|
|
||||||
|
"syntax/filetype/matchit
|
||||||
|
syntax on
|
||||||
|
filetype plugin indent on
|
||||||
|
runtime macros/matchit.vim
|
||||||
|
|
||||||
|
"os/gui dependent settings
|
||||||
|
"---------------
|
||||||
|
if has('win32')
|
||||||
|
let &runtimepath.=",$HOME/.vim"
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has("gui_running")
|
||||||
|
set guioptions -=m
|
||||||
|
set guioptions -=T
|
||||||
|
if has("gui_gtk2")
|
||||||
|
set guifont=Inconsolata\ 12
|
||||||
|
elseif has("gui_macvim")
|
||||||
|
set guifont=Menlo\ Regular:h14
|
||||||
|
elseif has("gui_win32")
|
||||||
|
set guifont=Consolas:h10
|
||||||
|
" set guifont=Cascadia\ Code:h10
|
||||||
|
|
||||||
|
"start full-screened
|
||||||
|
augroup WINGUI
|
||||||
|
autocmd! GUIEnter * simalt ~x
|
||||||
|
augroup END
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
"file cleanup
|
||||||
|
"------------
|
||||||
|
"swap
|
||||||
|
let mySwapDir = expand("$HOME/.vim/.swap")
|
||||||
|
if !isdirectory(mySwapDir)
|
||||||
|
silent! call mkdir(mySwapDir, "p")
|
||||||
|
endif
|
||||||
|
let &directory=mySwapDir
|
||||||
|
|
||||||
|
"undo
|
||||||
|
if has('persistent_undo')
|
||||||
|
let myUndoDir = expand("$HOME/.vim/.undo")
|
||||||
|
if !isdirectory(myUndoDir)
|
||||||
|
silent! call mkdir(myUndoDir, "p")
|
||||||
|
endif
|
||||||
|
let &undodir=myUndoDir
|
||||||
|
set undofile
|
||||||
|
endif
|
||||||
|
|
||||||
|
"backup
|
||||||
|
if has('writebackup')
|
||||||
|
let myBackupDir = expand("$HOME/.vim/.backup")
|
||||||
|
if !isdirectory(myBackupDir)
|
||||||
|
silent! call mkdir(myBackupDir, "p")
|
||||||
|
endif
|
||||||
|
let &backupdir=myBackupDir
|
||||||
|
set backup
|
||||||
|
endif
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
"========
|
||||||
|
"Keybinds
|
||||||
|
"========
|
||||||
|
"{{{
|
||||||
|
"leader key
|
||||||
|
let mapleader=' '
|
||||||
|
|
||||||
|
"----------------
|
||||||
|
"regular keybinds
|
||||||
|
"----------------
|
||||||
|
|
||||||
|
"paste and search
|
||||||
|
nnoremap <silent><leader><space> :noh <BAR> :let @/ = ""<CR>
|
||||||
|
nnoremap <leader>i :set invpaste<CR>
|
||||||
|
|
||||||
|
"toggles
|
||||||
|
nnoremap <silent><leader>lb :call ToggleLineBreak()<CR>
|
||||||
|
nnoremap <silent><leader>wr :call ToggleWrap()<CR>
|
||||||
|
nnoremap <silent><leader>cc :call ToggleColorColumn()<CR>
|
||||||
|
|
||||||
|
"dates
|
||||||
|
nnoremap <leader>ts "=strftime("%F %T%z")<CR>
|
||||||
|
nnoremap <leader>dt :r !date<CR>
|
||||||
|
|
||||||
|
"rc files
|
||||||
|
nnoremap <leader>rc :vsplit $MYVIMRC<CR>
|
||||||
|
nnoremap <leader>so :source $MYVIMRC<CR>
|
||||||
|
nnoremap <leader>rcl :vsplit ~/.config/vimrc<CR>
|
||||||
|
nnoremap <leader>rcft :vsplit $HOME/.vim/after/ftplugin/<CR>
|
||||||
|
|
||||||
|
"windows
|
||||||
|
nnoremap <leader>cl :close<CR>
|
||||||
|
|
||||||
|
"formatting tools
|
||||||
|
nnoremap =j :%!python -m json.tool<CR>
|
||||||
|
|
||||||
|
"abbrevations
|
||||||
|
inoreabbrev <expr> #!! "#!/usr/bin/env"
|
||||||
|
|
||||||
|
"---------------
|
||||||
|
"plugin keybinds
|
||||||
|
"---------------
|
||||||
|
|
||||||
|
"netrw
|
||||||
|
nnoremap <silent><leader>e :call ToggleNetrw()<CR>
|
||||||
|
|
||||||
|
"vim-plug
|
||||||
|
nnoremap <leader>pi :source $MYVIMRC <BAR> :PlugInstall<CR>
|
||||||
|
nnoremap <leader>pu :source $MYVIMRC <BAR> :PlugUpdate<CR>
|
||||||
|
nnoremap <leader>pc :source $MYVIMRC <BAR> :PlugClean<CR>
|
||||||
|
|
||||||
|
"openbrowser
|
||||||
|
nnoremap <leader>ob :OpenBrowser
|
||||||
|
nnoremap <leader>obs :OpenBrowserSearch
|
||||||
|
nmap gx <Plug>(openbrowser-smart-search)
|
||||||
|
vmap gx <Plug>(openbrowser-smart-search)
|
||||||
|
|
||||||
|
"ale
|
||||||
|
nnoremap <leader>at :ALEToggle<CR>
|
||||||
|
nmap <leader>af <Plug>(ale_fix)
|
||||||
|
nmap <leader>aK <Plug>(ale_hover)
|
||||||
|
nmap <leader>an <Plug>(ale_next_wrap)
|
||||||
|
nmap <leader>ap <Plug>(ale_previous_wrap)
|
||||||
|
|
||||||
|
"lsp
|
||||||
|
function! s:on_lsp_buffer_enabled() abort
|
||||||
|
setlocal omnifunc=lsp#complete
|
||||||
|
setlocal signcolumn=yes
|
||||||
|
if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif
|
||||||
|
nmap <buffer> gd <plug>(lsp-definition)
|
||||||
|
nmap <buffer> gs <plug>(lsp-document-symbol-search)
|
||||||
|
nmap <buffer> gS <plug>(lsp-workspace-symbol-search)
|
||||||
|
nmap <buffer> gr <plug>(lsp-references)
|
||||||
|
nmap <buffer> gi <plug>(lsp-implementation)
|
||||||
|
nmap <buffer> gt <plug>(lsp-type-definition)
|
||||||
|
nmap <buffer> [g <plug>(lsp-previous-diagnostic)
|
||||||
|
nmap <buffer> ]g <plug>(lsp-next-diagnostic)
|
||||||
|
nmap <buffer> gp <plug>(lsp-previous-diagnostic)
|
||||||
|
nmap <buffer> gn <plug>(lsp-next-diagnostic)
|
||||||
|
nmap <buffer> K <plug>(lsp-hover)
|
||||||
|
|
||||||
|
nmap <buffer> <leader>pdf <plug>(lsp-peek-definition)
|
||||||
|
nmap <buffer> <leader>pdc <plug>(lsp-peek-declaration)
|
||||||
|
nmap <buffer> <leader>pdi <plug>(lsp-peek-implementation)
|
||||||
|
nmap <buffer> <leader>ca <plug>(lsp-code-action)
|
||||||
|
nmap <buffer> <leader>cl <plug>(lsp-code-lens)
|
||||||
|
nmap <buffer> <leader>rn <plug>(lsp-rename)
|
||||||
|
nmap <buffer> <leader>ls <plug>(lsp-status)
|
||||||
|
nmap <buffer> <leader>lt <plug>(lsp-stop-server)
|
||||||
|
nmap <buffer> <leader>di <plug>(lsp-document-diagnostics)
|
||||||
|
nmap <buffer> <leader>df <plug>(lsp-document-format)
|
||||||
|
|
||||||
|
inoremap <buffer> <expr><c-f> lsp#scroll(+4)
|
||||||
|
inoremap <buffer> <expr><c-d> lsp#scroll(-4)
|
||||||
|
|
||||||
|
" highlight lspReference ctermfg=red guifg=red ctermbg=green guibg=green
|
||||||
|
|
||||||
|
" refer to doc to add more commands
|
||||||
|
" https://github.com/prabirshrestha/vim-lsp#supported-commands
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
"vim-emmet
|
||||||
|
let g:user_emmet_leader_key = '<C-I>'
|
||||||
|
|
||||||
|
"git-gutter
|
||||||
|
nnoremap <leader>ggt :GitGutterToggle<CR>
|
||||||
|
|
||||||
|
"vim-fugitive
|
||||||
|
nnoremap <leader>gw :Gwrite<CR>
|
||||||
|
nnoremap <leader>gl :Glog<CR>
|
||||||
|
nnoremap <leader>gs :Git<CR>
|
||||||
|
nnoremap <leader>gd :Gdiffsplit<CR>
|
||||||
|
nnoremap <leader>gp :Gpush<CR>
|
||||||
|
nnoremap <leader>ga :Git add %<CR>
|
||||||
|
nnoremap <leader>ga. :Git add .<CR>
|
||||||
|
nnoremap <leader>gc :Git commit<CR>
|
||||||
|
|
||||||
|
"fzf
|
||||||
|
nnoremap <leader>f :GitFiles<CR>
|
||||||
|
nnoremap <leader>F :Files<CR>
|
||||||
|
nnoremap <leader>c :Commands<CR>
|
||||||
|
nnoremap <leader>b :Buffers<CR>
|
||||||
|
nnoremap <leader>h :Helptags<CR>
|
||||||
|
nnoremap <leader>m :Maps<CR>
|
||||||
|
nnoremap <leader>rg :Rg<CR>
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
"==================
|
||||||
|
"Plugins (vim-plug)
|
||||||
|
"==================
|
||||||
|
"{{{
|
||||||
|
"vim-plug paths
|
||||||
|
let plugDir = expand("$HOME/.vim/autoload/plug.vim")
|
||||||
|
let pluginDir = expand("$HOME/.vim/plugged")
|
||||||
|
let plugRemote = "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"
|
||||||
|
|
||||||
|
"ensure vim-plug is installed on VimEnter
|
||||||
|
if empty(glob(plugDir))
|
||||||
|
silent execute "!curl -fLo " . shellescape(expand(plugDir)) . " --create-dirs " . shellescape(plugRemote)
|
||||||
|
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
|
||||||
|
endif
|
||||||
|
|
||||||
|
"pre plugin settings
|
||||||
|
"-------------------
|
||||||
|
"(none for now)
|
||||||
|
|
||||||
|
"load plugins
|
||||||
|
"------------
|
||||||
|
call plug#begin(pluginDir)
|
||||||
|
Plug 'junegunn/vim-plug'
|
||||||
|
|
||||||
|
" ==== quality of life ====
|
||||||
|
"normal mode keybinds
|
||||||
|
Plug 'tpope/vim-commentary'
|
||||||
|
Plug 'tpope/vim-surround'
|
||||||
|
Plug 'tpope/vim-unimpaired'
|
||||||
|
"command mode keybinds
|
||||||
|
Plug 'tpope/vim-rsi'
|
||||||
|
Plug 'tpope/vim-eunuch'
|
||||||
|
Plug 'tpope/vim-repeat'
|
||||||
|
|
||||||
|
" ==== external tools ====
|
||||||
|
"git
|
||||||
|
Plug 'tpope/vim-fugitive'
|
||||||
|
Plug 'tpope/vim-rhubarb'
|
||||||
|
Plug 'tpope/vim-dispatch'
|
||||||
|
Plug 'airblade/vim-gitgutter'
|
||||||
|
"fzf
|
||||||
|
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
|
||||||
|
Plug 'junegunn/fzf.vim'
|
||||||
|
"browser plugins
|
||||||
|
Plug 'tyru/open-browser.vim'
|
||||||
|
Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']}
|
||||||
|
"REPLs
|
||||||
|
" Plug 'jpalardy/vim-slime'
|
||||||
|
|
||||||
|
" ==== specific language support ====
|
||||||
|
"go
|
||||||
|
Plug 'fatih/vim-go'
|
||||||
|
"ruby
|
||||||
|
Plug 'vim-ruby/vim-ruby'
|
||||||
|
"html
|
||||||
|
Plug 'mattn/emmet-vim'
|
||||||
|
"markdown
|
||||||
|
Plug 'plasticboy/vim-markdown'
|
||||||
|
Plug 'godlygeek/tabular'
|
||||||
|
"toml
|
||||||
|
Plug 'cespare/vim-toml'
|
||||||
|
"sol
|
||||||
|
Plug 'tomlion/vim-solidity'
|
||||||
|
|
||||||
|
" ==== general language support ====
|
||||||
|
"linting and lsp
|
||||||
|
Plug 'dense-analysis/ale'
|
||||||
|
Plug 'prabirshrestha/vim-lsp'
|
||||||
|
Plug 'mattn/vim-lsp-settings'
|
||||||
|
|
||||||
|
" ==== misc editor plugins ====
|
||||||
|
Plug 'editorconfig/editorconfig-vim'
|
||||||
|
Plug 'flazz/vim-colorschemes'
|
||||||
|
call plug#end()
|
||||||
|
|
||||||
|
"post plugin settings
|
||||||
|
"--------------------
|
||||||
|
"netrw
|
||||||
|
let g:netrw_banner = 0
|
||||||
|
let g:netrw_winsize = 24
|
||||||
|
let g:netrw_liststyle = 3
|
||||||
|
let g:netrw_preview = 1
|
||||||
|
let g:netrw_alto = 0
|
||||||
|
let g:netrw_usetab = 1
|
||||||
|
let g:netrw_browsex_viewer = "xdg-open"
|
||||||
|
let g:NetrwIsOpen = 0 "for toggle function
|
||||||
|
let g:netrw_nogx = 1
|
||||||
|
|
||||||
|
"ale
|
||||||
|
let g:ale_linters = {
|
||||||
|
\ 'python': ['flake8', 'pylint'],
|
||||||
|
\ 'javascript': ['eslint'],
|
||||||
|
\ 'ruby': ['rubocop'],
|
||||||
|
\ 'markdown': ['mdl', 'write-good']
|
||||||
|
\}
|
||||||
|
|
||||||
|
let g:ale_fixers = {
|
||||||
|
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
|
||||||
|
\ 'python': ['yapf', 'black'],
|
||||||
|
\ 'javascript': ['prettier', 'eslint'],
|
||||||
|
\ 'ruby': ['rubocop'],
|
||||||
|
\ 'css': ['prettier'],
|
||||||
|
\ 'scss': ['prettier'],
|
||||||
|
\ 'html': ['prettier'],
|
||||||
|
\ 'markdown': ['prettier'],
|
||||||
|
\ 'yaml': ['prettier'],
|
||||||
|
\ 'json': ['prettier']
|
||||||
|
\}
|
||||||
|
|
||||||
|
let g:ale_sign_error = 'W>'
|
||||||
|
let g:ale_sign_warning = 'E>'
|
||||||
|
let g:ale_lint_on_save = 1
|
||||||
|
let g:ale_fix_on_save_ignore = 1
|
||||||
|
highlight clear SignColumn
|
||||||
|
|
||||||
|
"vim-lsp
|
||||||
|
let g:lsp_format_sync_timeout = 1000
|
||||||
|
let g:lsp_diagnostics_enabled = 0
|
||||||
|
let g:lsp_document_highlight_enabled = 0
|
||||||
|
let g:lsp_settings_enable_suggestions = 0
|
||||||
|
|
||||||
|
"vim-lsp-settings specific configs
|
||||||
|
" let g:lsp_settings = {
|
||||||
|
" \ 'pyls-all': {
|
||||||
|
" \ 'workspace_config': {
|
||||||
|
" \ 'pyls': {
|
||||||
|
" \ 'configurationSources': ['flake8']
|
||||||
|
" \ }
|
||||||
|
" \ }
|
||||||
|
" \ }
|
||||||
|
" \}
|
||||||
|
|
||||||
|
" let g:lsp_settings_filetype_python = ['pyls-all', 'pyright-langserver', 'jedi-language-server']
|
||||||
|
|
||||||
|
"vim-markdown
|
||||||
|
let g:vim_markdown_folding_disabled = 1
|
||||||
|
let g:vim_markdown_toc_autofit = 1
|
||||||
|
let g:vim_markdown_conceal = 0
|
||||||
|
let g:vim_markdown_frontmatter = 1
|
||||||
|
|
||||||
|
|
||||||
|
"vim-slime
|
||||||
|
let g:slime_target = "tmux"
|
||||||
|
let g:slime_default_config = {"socket_name": get(split($TMUX, ","), 0), "target_pane": ":.1"}
|
||||||
|
" let g:slime_default_config = {"socket_name": "default", "target_pane": "{last}"}
|
||||||
|
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
"========
|
||||||
|
"Commands
|
||||||
|
"========
|
||||||
|
"{{{
|
||||||
|
"common typos and abbreviations
|
||||||
|
cnoremap w!! w !sudo tee % > /dev/null
|
||||||
|
command! W w !sudo tee % > /dev/null
|
||||||
|
command! Q q
|
||||||
|
command! WQ wq
|
||||||
|
command! Q1 q!
|
||||||
|
|
||||||
|
"useful shortcut commands
|
||||||
|
command! Trim %s/\s\+$//
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
"=========
|
||||||
|
"Functions
|
||||||
|
"=========
|
||||||
|
"{{{
|
||||||
|
"toggle functions
|
||||||
|
"----------------
|
||||||
|
function! ToggleColorColumn()
|
||||||
|
if &cc == ''
|
||||||
|
set cc=80
|
||||||
|
else
|
||||||
|
set cc=
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ToggleLineBreak()
|
||||||
|
if &lbr == ''
|
||||||
|
set fo+=t "Autowraps text with textwidth
|
||||||
|
set fo-=l "Wraps long lines in --insert-- mode
|
||||||
|
set lbr
|
||||||
|
else
|
||||||
|
set fo-=t
|
||||||
|
set fo+=l
|
||||||
|
set lbr!
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ToggleWrap()
|
||||||
|
if &wrap == ''
|
||||||
|
set wrap
|
||||||
|
else
|
||||||
|
set nowrap
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ToggleNetrw() "make netrw toggleable <https://vi.stackexchange.com/questions/10988/toggle-explorer-window>
|
||||||
|
if g:NetrwIsOpen
|
||||||
|
let i = bufnr("$")
|
||||||
|
while (i >= 1)
|
||||||
|
if (getbufvar(i, "&filetype") == "netrw")
|
||||||
|
silent exe "bwipeout " . i
|
||||||
|
endif
|
||||||
|
let i-=1
|
||||||
|
endwhile
|
||||||
|
let g:NetrwIsOpen=0
|
||||||
|
else
|
||||||
|
let g:NetrwIsOpen=1
|
||||||
|
silent Lexplore
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
"============
|
||||||
|
"Autocommands
|
||||||
|
"============
|
||||||
|
"{{{
|
||||||
|
if has("autocmd")
|
||||||
|
"language specific filetype functions (run by autocmds)
|
||||||
|
"------------------
|
||||||
|
function FT_python()
|
||||||
|
setlocal autoindent
|
||||||
|
setlocal formatprg=yapf
|
||||||
|
iabbr false False
|
||||||
|
iabbr true True
|
||||||
|
|
||||||
|
xnoremap <leader>r <esc>:'<,'>:w !python3<CR>
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function FT_ruby()
|
||||||
|
setlocal autoindent
|
||||||
|
setlocal formatprg=rubocop
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function FT_go()
|
||||||
|
set noexpandtab
|
||||||
|
setlocal formatprg=gofmt
|
||||||
|
let g:go_auto_type_info = 1
|
||||||
|
let g:go_imports_autosave = 1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function FT_html()
|
||||||
|
syntax sync fromstart
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function FT_markdown()
|
||||||
|
setlocal spell
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function FT_halftab()
|
||||||
|
setlocal tabstop=2 softtabstop=2 shiftwidth=2 expandtab
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
"language specific autocmds
|
||||||
|
"--------------------------
|
||||||
|
augroup language_ft_group
|
||||||
|
autocmd!
|
||||||
|
autocmd FileType python call FT_python()
|
||||||
|
autocmd FileType ruby,eruby call FT_ruby()
|
||||||
|
autocmd FileType go call FT_go()
|
||||||
|
autocmd FileType html call FT_html()
|
||||||
|
autocmd FileType markdown call FT_markdown()
|
||||||
|
autocmd FileType sh,ruby,bash,html,css,scss,javascript,json,toml,yaml call FT_halftab()
|
||||||
|
autocmd BufNewFile,BufRead *html*,*css*,*js* EmmetInstall
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
"lsp autocmds
|
||||||
|
"------------
|
||||||
|
augroup lsp_install
|
||||||
|
autocmd!
|
||||||
|
autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
augroup lsp_ft_group
|
||||||
|
autocmd!
|
||||||
|
" autoformat with LSP
|
||||||
|
" autocmd BufWritePre *.rs call execute('LspDocumentFormatSync')
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
"global autocmds
|
||||||
|
"-----------------
|
||||||
|
augroup global
|
||||||
|
autocmd!
|
||||||
|
"keep equal proportions when windows resized
|
||||||
|
autocmd VimResized * wincmd =
|
||||||
|
"save cursor position in a file
|
||||||
|
autocmd BufReadPost * if line("'\"") > 1 && line("'\"")
|
||||||
|
\ <= line("$") | exe "normal! g'\"" | endif
|
||||||
|
augroup END
|
||||||
|
endif
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
"==============
|
||||||
|
"Local settings
|
||||||
|
"==============
|
||||||
|
"{{{
|
||||||
|
"source local vimrc
|
||||||
|
if filereadable(expand("~/.config/vimrc"))
|
||||||
|
source ~/.config/vimrc
|
||||||
|
endif
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
"colorschemes
|
||||||
|
" {{{
|
||||||
|
" colorscheme 1989
|
||||||
|
" colorscheme PaperColor
|
||||||
|
" colorscheme gruvbox
|
||||||
|
" colorscheme jellybeans
|
||||||
|
" colorscheme molokai
|
||||||
|
" colorscheme Benokai
|
||||||
|
" colorscheme Monokai
|
||||||
|
" colorscheme badwolf
|
||||||
|
" colorscheme wombat256
|
||||||
|
" colorscheme yuejiu
|
||||||
|
" colorscheme wargrey
|
||||||
|
" colorscheme Tomorrow-Night-Bright
|
||||||
|
" colorscheme monokai-phoenix
|
||||||
|
" }}}
|
||||||
Loading…
x
Reference in New Issue
Block a user