Organize vim config

master
Hektor Misplon 2020-09-19 22:07:29 +02:00
parent 287eef47a0
commit 89d02f8fc4
1 changed files with 83 additions and 46 deletions

129
.vimrc
View File

@ -1,4 +1,4 @@
" general config _______________________ " General config _______________________
set nocompatible set nocompatible
@ -25,42 +25,52 @@ set novisualbell
set conceallevel=1 set conceallevel=1
set clipboard=unnamedplus set clipboard=unnamedplus
" functions ____________________________ " Functions ____________________________
" Function: Toggle line numbers
func! ToggleRnu() " toggle: no numbers - relative nummbers func! ToggleRnu() " toggle: no numbers - relative nummbers
if(&nu) | set nonu nornu | else | set nu rnu | endif if(&nu) | set nonu nornu | else | set nu rnu | endif
endfunc endfunc
" keybindings __________________________ " Keybindings __________________________
" Keybindings: leader keys
nnoremap <space> <nop> nnoremap <space> <nop>
let mapleader = " " let mapleader = " "
let maplocalleader = ";" let maplocalleader = ";"
" split " Keybindings: splits
" Split horizontal & vertical
nmap ss :sp<Return><c-w>w nmap ss :sp<Return><c-w>w
nmap sv :vs<Return><c-w>w nmap sv :vs<Return><c-w>w
" split navigate " Navigate splits
nnoremap sw <c-w>w nnoremap sw <c-w>w
nnoremap sh <c-w>h nnoremap sh <c-w>h
nnoremap sj <c-w>j nnoremap sj <c-w>j
nnoremap sk <c-w>k nnoremap sk <c-w>k
nnoremap sl <c-w>l nnoremap sl <c-w>l
" split resize " Resize splits
nnoremap sH <C-w>8< nnoremap sH <C-w>8<
nnoremap sJ <C-w>8- nnoremap sJ <C-w>8-
nnoremap sK <C-w>8+ nnoremap sK <C-w>8+
nnoremap sL <C-w>8> nnoremap sL <C-w>8>
" file tree " Keybindings: file tree
nnoremap sb :Lex<cr> nnoremap sb :Lex<cr>
" terminal
" Keybindings: terminal
nnoremap <leader>t :term<cr> nnoremap <leader>t :term<cr>
" hard mode " Keybindings: hard mode
nnoremap <left> <nop> nnoremap <left> <nop>
nnoremap <down> <nop> nnoremap <down> <nop>
nnoremap <up> <nop> nnoremap <up> <nop>
@ -70,47 +80,53 @@ inoremap <down> <nop>
inoremap <up> <nop> inoremap <up> <nop>
inoremap <right> <nop> inoremap <right> <nop>
" quick quit " Keybindings: quick quit
nnoremap <leader>w :w<cr> nnoremap <leader>w :w<cr>
nnoremap <leader>W :wq<cr> nnoremap <leader>W :wq<cr>
nnoremap <leader>q :q<cr> nnoremap <leader>q :q<cr>
nnoremap <leader>Q :q!<cr> nnoremap <leader>Q :q!<cr>
" quick exit insert " Keybindings: exit insert mode
inoremap jj <esc> inoremap jj <esc>
" clear search highlight " Keybindings: search
nnoremap <leader><space> :noh<cr> nnoremap <leader><space> :noh<cr>
" silver search " Silver search
nnoremap <leader>A :Ag <cr> nnoremap <leader>A :Ag <cr>
" toggle numbers " Keybindings: line numbers
nnoremap <leader>n :call ToggleRnu()<cr> nnoremap <leader>n :call ToggleRnu()<cr>
" edit vim config " Keybindings: config
nnoremap <leader>ec :split $MYVIMRC<cr>
" source current file nnoremap <leader>ec :split $MYVIMRC<cr>
nnoremap <leader>so :so %<cr> nnoremap <leader>so :so %<cr>
" plugins ______________________________ " Plugins ______________________________
call plug#begin() call plug#begin()
" Plugins: General
Plug 'preservim/nerdcommenter' Plug 'preservim/nerdcommenter'
Plug 'takac/vim-hardtime'
Plug 'machakann/vim-sandwich'
Plug 'junegunn/fzf', { 'do': './install --bin' } Plug 'junegunn/fzf', { 'do': './install --bin' }
Plug 'junegunn/fzf.vim' Plug 'junegunn/fzf.vim'
Plug 'vimwiki/vimwiki', {'branch': 'dev'} Plug 'vimwiki/vimwiki', {'branch': 'dev'}
Plug 'axvr/zepl.vim' Plug 'axvr/zepl.vim'
Plug 'takac/vim-hardtime'
Plug 'machakann/vim-sandwich' " Plugins: Languages
Plug 'pangloss/vim-javascript', { 'for': ['javascript', 'javascript.jsx'] } Plug 'pangloss/vim-javascript', { 'for': ['javascript', 'javascript.jsx'] }
Plug 'leafgarland/typescript-vim', { 'for': ['typescript', 'typescript.tsx'] } Plug 'leafgarland/typescript-vim', { 'for': ['typescript', 'typescript.tsx'] }
Plug 'peitalin/vim-jsx-typescript', { 'for': ['typescript.tsx'] } Plug 'peitalin/vim-jsx-typescript', { 'for': ['typescript.tsx'] }
Plug 'evanleck/vim-svelte', {'branch': 'main'} Plug 'evanleck/vim-svelte', {'branch': 'main'}
Plug 'neoclide/coc.nvim', {'branch': 'release'} Plug 'neoclide/coc.nvim', {'branch': 'release'}
let g:coc_global_extensions = [ let g:coc_global_extensions = [
\'coc-eslint', \'coc-eslint',
@ -128,14 +144,17 @@ let g:coc_global_extensions = [
\'coc-snippets' \'coc-snippets'
\] \]
" Plugin: TidalCycles
Plug 'supercollider/scvim' Plug 'supercollider/scvim'
Plug 'tidalcycles/vim-tidal' Plug 'tidalcycles/vim-tidal'
call plug#end() call plug#end()
" plugin config ________________________ " Plugin config ________________________
" Plugin: NERDCommenter
" NERDCommenter
let g:NERDSpaceDelims = 1 let g:NERDSpaceDelims = 1
let g:NERDCompactSexyComs = 1 let g:NERDCompactSexyComs = 1
let NERDAltDelims_haskell = 1 let NERDAltDelims_haskell = 1
@ -143,15 +162,20 @@ let g:NERDCustomDelimiters = { 'tidal': { 'left': '{-','right': '-}' } }
let g:NERDCustomDelimiters = { 'tidal': { 'left': '--','right': '' } } let g:NERDCustomDelimiters = { 'tidal': { 'left': '--','right': '' } }
let g:NERDCommentEmptyLines = 1 let g:NERDCommentEmptyLines = 1
" fzf popup " Plugin: fzf
" Popup
let g:fzf_layout = {'window': { 'width': 0.62, 'height': 0.62}} let g:fzf_layout = {'window': { 'width': 0.62, 'height': 0.62}}
" fzf - use silversearcher-ag to respect .gitignore " Use silversearcher-ag to respect .gitignore
let $FZF_DEFAULT_COMMAND = 'ag --hidden --ignore .git -g ""' let $FZF_DEFAULT_COMMAND = 'ag --hidden --ignore .git -g ""'
let g:ag_working_path_mode="r" let g:ag_working_path_mode="r"
set wildignore+=*/node_modules/*,*/tmp/*,*.so,*.swp,*.zip " fzf ignore set wildignore+=*/node_modules/*,*/tmp/*,*.so,*.swp,*.zip " fzf ignore
" vimwiki " Plugin: VimWiki
let g:vimwiki_list = [{'path': '~/.vimwiki/', let g:vimwiki_list = [{'path': '~/.vimwiki/',
\ 'template_path': '~/.vimwiki/templates/', \ 'template_path': '~/.vimwiki/templates/',
\ 'template_default': 'default', \ 'template_default': 'default',
@ -160,43 +184,37 @@ let g:vimwiki_list = [{'path': '~/.vimwiki/',
\ 'html_filename_parameterization': 1, \ 'html_filename_parameterization': 1,
\ 'template_ext': '.tpl'}] \ 'template_ext': '.tpl'}]
" js & ts " Pugin: JS & TypeScript
let g:javascript_plugin_jsdoc = 1 " jsdoc syntax highlighting let g:javascript_plugin_jsdoc = 1 " jsdoc syntax highlighting
let g:javascript_plugin_flow = 1 " flow syntax highlighting let g:javascript_plugin_flow = 1 " flow syntax highlighting
let g:javascript_conceal_function = "ƒ" let g:javascript_conceal_function = "ƒ"
let g:javascript_conceal_return = "⇖" let g:javascript_conceal_return = "⇖"
" svelte " Plugin: Svelte
let g:svelte_indent_script = 0 let g:svelte_indent_script = 0
let g:svelte_indent_style = 0 let g:svelte_indent_style = 0
" Plugin: TidalCycles
" SuperCollider " SuperCollider
au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc,*.scd set filetype=supercollider au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc,*.scd set filetype=supercollider
au Filetype supercollider packadd scvim au Filetype supercollider packadd scvim
" tidalvim " TidalVim
let g:tidal_default_config = {"socket_name": "default", "target_pane": "tidal:1.1"} let g:tidal_default_config = {"socket_name": "default", "target_pane": "tidal:1.1"}
" hard time " Plugin: Hardtime
let g:hardtime_default_on = 1 let g:hardtime_default_on = 1
let g:hardtime_maxcount = 4 let g:hardtime_maxcount = 4
" plugin keybindings ___________________ " Plugin keybindings ___________________
" coc autocompletion
inoremap <silent><expr><C-j> pumvisible() ? "\<C-n>" :
\ coc#refresh()
inoremap <expr><C-k> pumvisible() ? "\<C-p>" : "k"
inoremap <expr><cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>"
" code action on cursor position
nmap <leader>do <Plug>(coc-codeaction)
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
" :Prettier command to prettify file
command! -nargs=0 Prettier :CocCommand prettier.formatFile
" Plugin: fzf
nnoremap <c-p> :FZF<cr> nnoremap <c-p> :FZF<cr>
nnoremap <leader>p :FZF<cr> nnoremap <leader>p :FZF<cr>
nnoremap <leader>b :Buffers<cr> nnoremap <leader>b :Buffers<cr>
@ -207,7 +225,26 @@ let g:fzf_action = {
\ 'ctrl-v': 'vsplit' \ 'ctrl-v': 'vsplit'
\} \}
" theme ________________________________ " Plugin: coc
" Autocompletion
inoremap <silent><expr><C-j> pumvisible() ? "\<C-n>" :
\ coc#refresh()
inoremap <expr><C-k> pumvisible() ? "\<C-p>" : "k"
inoremap <expr><cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>"
" Code action on cursor position
nmap <leader>do <Plug>(coc-codeaction)
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
" :Prettier command to prettify file
command! -nargs=0 Prettier :CocCommand prettier.formatFile
" Theme ________________________________
colorscheme simple-dark colorscheme simple-dark