mirror of
https://github.com/tomru/DotfilesOld.git
synced 2026-03-02 22:17:21 +01:00
update vim config yet again
This commit is contained in:
349
vim/.vimrc
349
vim/.vimrc
@@ -2,13 +2,19 @@
|
||||
" author: Thomas Ruoff
|
||||
|
||||
" Basics {{{
|
||||
set encoding=utf-8
|
||||
if has('vim_starting')
|
||||
set encoding=utf-8
|
||||
scriptencoding utf-8
|
||||
|
||||
set clipboard& clipboard^=unnamed,unnamedplus
|
||||
endif
|
||||
|
||||
set hidden
|
||||
|
||||
set ttyfast
|
||||
set lazyredraw
|
||||
set updatetime=300
|
||||
set synmaxcol=512
|
||||
set synmaxcol=2000
|
||||
|
||||
set modeline
|
||||
|
||||
@@ -20,23 +26,13 @@ set mousehide
|
||||
|
||||
set wildmode=list:longest,full
|
||||
set wildignore+=*.swp,*.bak,*.jpg,*.gif,*.png,*.git,
|
||||
set wildignore+=**/node_modules/**
|
||||
|
||||
set splitright
|
||||
set splitbelow
|
||||
|
||||
" Always show the status line
|
||||
set laststatus=2
|
||||
set cmdheight=2
|
||||
|
||||
set shortmess+=c
|
||||
|
||||
" yank delete change and put operations go by default in `"+` register
|
||||
" so in the systems clipboard accessable by CTRL-V on all OS types
|
||||
if has('mac')
|
||||
set clipboard^=unnamed
|
||||
else
|
||||
set clipboard^=unnamedplus
|
||||
endif
|
||||
|
||||
" set ignorecase
|
||||
set infercase
|
||||
@@ -65,162 +61,171 @@ set showmatch
|
||||
set spellcapcheck=
|
||||
set complete+=kspell
|
||||
|
||||
let mapleader=" "
|
||||
let maplocalleader=" "
|
||||
if has('vim_starting')
|
||||
let g:mapleader="\<Space>"
|
||||
let g:maplocalleader=";"
|
||||
|
||||
nnoremap <Space> <Nop>
|
||||
xnoremap <Space> <Nop>
|
||||
nnoremap , <Nop>
|
||||
xnoremap , <Nop>
|
||||
nnoremap ; <Nop>
|
||||
xnoremap ; <Nop>
|
||||
endif
|
||||
|
||||
" netrw
|
||||
let g:netrw_fastbrowse = 0
|
||||
let g:netrw_banner = 0
|
||||
let g:netrw_liststyle = 3
|
||||
let g:netrw_browse_split = 3
|
||||
" sort is affecting only: directories on the top, files below
|
||||
let g:netrw_sort_sequence = '[\/]$,*'
|
||||
|
||||
" }}}
|
||||
|
||||
" Plugins {{{
|
||||
call plug#begin('~/.vim/plugged')
|
||||
call plug#begin(has('nvim') ? stdpath('data') . '/plugged' : '~/.vim/plugged')
|
||||
|
||||
|
||||
Plug 'tpope/vim-sensible'
|
||||
Plug 'tpope/vim-unimpaired'
|
||||
Plug 'tpope/vim-surround'
|
||||
Plug 'tpope/vim-abolish'
|
||||
|
||||
Plug 'tpope/vim-vinegar'
|
||||
Plug 'tpope/vim-projectionist'
|
||||
Plug 'tpope/vim-fugitive'
|
||||
Plug 'tpope/vim-rhubarb'
|
||||
Plug 'airblade/vim-gitgutter'
|
||||
|
||||
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
|
||||
Plug 'junegunn/fzf.vim'
|
||||
nnoremap <leader>b :Buffers<cr>
|
||||
nnoremap <leader>f :GFiles<cr>
|
||||
nnoremap <leader>F :Files<cr>
|
||||
nnoremap <leader>c :Commits<cr>
|
||||
nnoremap <leader>w :Windows<cr>
|
||||
nnoremap <leader>m :Maps<cr>
|
||||
nnoremap <leader>h :Helptags<cr>
|
||||
nnoremap <leader>/ :Rg<cr>
|
||||
nnoremap <leader>* :Rg <C-r><C-a><cr>
|
||||
nnoremap <leader>C :Commands<cr>
|
||||
Plug 'andymass/vim-matchup'
|
||||
|
||||
Plug 'junegunn/vim-peekaboo'
|
||||
Plug 'machakann/vim-highlightedyank'
|
||||
|
||||
Plug 'editorconfig/editorconfig-vim'
|
||||
let g:EditorConfig_exclude_patterns = ['fugitive://.*', 'scp://.*']
|
||||
|
||||
Plug 'tpope/vim-projectionist'
|
||||
|
||||
Plug 'mbbill/undotree'
|
||||
nnoremap <leader>u :UndotreeToggle<cr>
|
||||
|
||||
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
||||
" Remap keys for gotos
|
||||
nmap <silent> gd <Plug>(coc-definition)
|
||||
nmap <silent> gy <Plug>(coc-type-definition)
|
||||
nmap <silent> gi <Plug>(coc-implementation)
|
||||
nmap <silent> gr <Plug>(coc-references)
|
||||
|
||||
" Use `[d` and `]d` to navigate diagnostics
|
||||
nmap <silent> [d <Plug>(coc-diagnostic-prev)
|
||||
nmap <silent> ]d <Plug>(coc-diagnostic-next)
|
||||
" Remap for rename current word
|
||||
nmap <leader>rn <Plug>(coc-rename)
|
||||
" Remap for do codeAction of current line
|
||||
nmap <leader>ac <Plug>(coc-codeaction)
|
||||
" Applying codeAction to the selected region.
|
||||
" Example: `<leader>aap` for current paragraph
|
||||
xmap <leader>a <Plug>(coc-codeaction-selected)
|
||||
nmap <leader>a <Plug>(coc-codeaction-selected)
|
||||
" Fix autofix problem of current line
|
||||
nmap <leader>qf <Plug>(coc-fix-current)
|
||||
" Use <c-space> to trigger completion.
|
||||
if has('nvim')
|
||||
inoremap <silent><expr> <c-space> coc#refresh()
|
||||
else
|
||||
inoremap <silent><expr> <c-@> coc#refresh()
|
||||
endif
|
||||
|
||||
" Make <CR> auto-select the first completion item and notify coc.nvim to
|
||||
" format on enter, <cr> could be remapped by other vim plugin
|
||||
inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm()
|
||||
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
|
||||
|
||||
" Use K to show documentation in preview window.
|
||||
nnoremap <silent> K :call <SID>show_documentation()<CR>
|
||||
|
||||
function! s:show_documentation()
|
||||
if (index(['vim','help'], &filetype) >= 0)
|
||||
execute 'h '.expand('<cword>')
|
||||
elseif (coc#rpc#ready())
|
||||
call CocActionAsync('doHover')
|
||||
else
|
||||
execute '!' . &keywordprg . " " . expand('<cword>')
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Formatting selected code.
|
||||
xmap <leader>cf <Plug>(coc-format-selected)
|
||||
nmap <leader>cf <Plug>(coc-format-selected)
|
||||
|
||||
Plug 'itchyny/lightline.vim'
|
||||
if filereadable(expand("~/.vim/lightline.vim"))
|
||||
source ~/.vim/lightline.vim
|
||||
endif
|
||||
|
||||
function! LightlineReload()
|
||||
call lightline#init()
|
||||
call lightline#colorscheme()
|
||||
call lightline#update()
|
||||
endfunction
|
||||
|
||||
Plug 'lifepillar/vim-gruvbox8'
|
||||
|
||||
" TODO snippets https://www.lunarvim.org/plugins/02-default-plugins.html#snippets
|
||||
Plug 'SirVer/ultisnips'
|
||||
let g:UltiSnipsExpandTrigger="<S-Tab>"
|
||||
let g:UltiSnipsJumpForwardTrigger="<c-k>"
|
||||
let g:UltiSnipsJumpBackwardTrigger="<c-j>"
|
||||
|
||||
Plug 'pangloss/vim-javascript'
|
||||
Plug 'MaxMEllon/vim-jsx-pretty'
|
||||
" Plug 'pangloss/vim-javascript'
|
||||
" Plug 'MaxMEllon/vim-jsx-pretty'
|
||||
|
||||
Plug 'sheerun/vim-polyglot'
|
||||
let g:polyglot_disabled = ['javascript', 'jsx', 'latex']
|
||||
" Plug 'sheerun/vim-polyglot'
|
||||
" let g:polyglot_disabled = ['javascript', 'jsx', 'latex']
|
||||
|
||||
Plug 'lervag/vimtex', { 'for': 'tex' }
|
||||
let g:vimtex_view_method = 'zathura'
|
||||
" Plug 'lervag/vimtex', { 'for': 'tex' }
|
||||
" let g:vimtex_view_method = 'zathura'
|
||||
|
||||
Plug 'wellle/targets.vim'
|
||||
|
||||
Plug 'janko-m/vim-test'
|
||||
nmap <silent> <leader>t :TestNearest<CR>
|
||||
nmap <silent> <leader>T :TestFile<CR>
|
||||
let test#strategy = "neovim"
|
||||
|
||||
" vim 8 plugins
|
||||
" if v:version >= 800
|
||||
" Plug 'ludovicchabant/vim-gutentags'
|
||||
" let g:gutentags_cache_dir="~/.tags"
|
||||
" let g:gutentags_file_list_command = {
|
||||
" \ 'markers': {
|
||||
" \ '.git': 'git ls-files',
|
||||
" \ '.hg': 'hg files',
|
||||
" \ },
|
||||
" \ }
|
||||
" endif
|
||||
|
||||
Plug 'preservim/nerdtree'
|
||||
nmap <silent> <leader>n :NERDTreeToggle<CR>
|
||||
nmap <silent> <leader>N :NERDTreeFind<CR>
|
||||
" Plug 'ludovicchabant/vim-gutentags'
|
||||
" let g:gutentags_cache_dir="~/.tags"
|
||||
" let g:gutentags_file_list_command = {
|
||||
" \ 'markers': {
|
||||
" \ '.git': 'git ls-files',
|
||||
" \ '.hg': 'hg files',
|
||||
" \ },
|
||||
" \ }
|
||||
|
||||
Plug 'ap/vim-css-color'
|
||||
|
||||
Plug 'godlygeek/tabular'
|
||||
Plug 'plasticboy/vim-markdown'
|
||||
Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install' }
|
||||
|
||||
" Lua Plugins
|
||||
Plug 'RRethy/nvim-base16'
|
||||
|
||||
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
|
||||
|
||||
Plug 'neovim/nvim-lspconfig'
|
||||
Plug 'jose-elias-alvarez/null-ls.nvim'
|
||||
Plug 'kabouzeid/nvim-lspinstall'
|
||||
"Plug 'tamago324/nlsp-settings.nvim'
|
||||
Plug 'folke/trouble.nvim'
|
||||
|
||||
Plug 'kyazdani42/nvim-web-devicons' " for file icons
|
||||
Plug 'kyazdani42/nvim-tree.lua'
|
||||
|
||||
Plug 'ahmedkhalf/project.nvim'
|
||||
|
||||
Plug 'nvim-lua/plenary.nvim'
|
||||
Plug 'nvim-telescope/telescope.nvim'
|
||||
nnoremap <leader>f :Telescope find_files<cr>
|
||||
|
||||
Plug 'lewis6991/gitsigns.nvim'
|
||||
Plug 'windwp/nvim-autopairs'
|
||||
|
||||
Plug 'folke/which-key.nvim'
|
||||
|
||||
" TODO compnletion https://github.com/hrsh7th/nvim-cmp
|
||||
|
||||
Plug 'hoob3rt/lualine.nvim'
|
||||
|
||||
|
||||
|
||||
" debug
|
||||
Plug 'tweekmonster/startuptime.vim'
|
||||
" Plug 'tweekmonster/startuptime.vim'
|
||||
|
||||
call plug#end()
|
||||
|
||||
lua << EOF
|
||||
require('nvim-treesitter.configs').setup{
|
||||
hightlight = { enabled = true },
|
||||
incremental_selection = { enable = false },
|
||||
ensure_installed = {'javascript'}
|
||||
}
|
||||
|
||||
require("null-ls").config({ })
|
||||
require("lspconfig")["null-ls"].setup({ })
|
||||
require('lspinstall').setup{}
|
||||
local servers = require('lspinstall').installed_servers()
|
||||
for _, server in pairs(servers) do
|
||||
require'lspconfig'[server].setup{}
|
||||
end
|
||||
|
||||
require("trouble").setup{}
|
||||
|
||||
require'nvim-web-devicons'.setup{}
|
||||
require('nvim-tree').setup{}
|
||||
|
||||
require('project_nvim').setup{}
|
||||
|
||||
require('telescope').setup{}
|
||||
-- require('telescope').load_extension('projects')
|
||||
|
||||
require('gitsigns').setup{}
|
||||
|
||||
require('nvim-autopairs').setup{}
|
||||
|
||||
local wk = require('which-key')
|
||||
wk.setup()
|
||||
wk.register({
|
||||
c = {"<cmd>bd<cr>", "close"},
|
||||
s = "save",
|
||||
h = "gitsigns",
|
||||
f ={
|
||||
name = "file",
|
||||
f = { "<cmd>Telescope find_files<cr>", "Find File" },
|
||||
r = { "<cmd>Telescope oldfiles<cr>", "Open Recent File" },
|
||||
c = { "<cmd>e $MYVIMRC<cr>", "Open config" },
|
||||
},
|
||||
g = {
|
||||
name = "git",
|
||||
g = {"<cmd>Git<cr>", "fugitive"}
|
||||
},
|
||||
t = {
|
||||
name = "test",
|
||||
n = {"<cmd>TestNearest<cr>", "Test Nearest"},
|
||||
f = {"<cmd>TestFile<cr>", "Test File"},
|
||||
l = {"<cmd>TestLast<cr>", "Test Last"},
|
||||
}
|
||||
}, { prefix = "<leader>"})
|
||||
|
||||
require('lualine').setup{ theme = 'gruvbox'}
|
||||
EOF
|
||||
|
||||
" }}}
|
||||
|
||||
" Local .vimrc {{{
|
||||
@@ -261,7 +266,7 @@ set diffopt+=iwhite
|
||||
" }}}
|
||||
|
||||
" {{{ Undo
|
||||
set undodir=~/.vim/undos,/tmp
|
||||
set undodir=$VIM_DATA_PATH/undos
|
||||
set undofile
|
||||
set undolevels=1000
|
||||
set undoreload=10000
|
||||
@@ -271,50 +276,17 @@ set undoreload=10000
|
||||
"
|
||||
set cursorline
|
||||
set background=dark
|
||||
colorscheme gruvbox8
|
||||
|
||||
colorscheme base16-gruvbox-dark-medium
|
||||
set number
|
||||
" }}}
|
||||
|
||||
" GUI Settings {{{
|
||||
if has("gui_running")
|
||||
"disable menu, toolsbar, scrollbar
|
||||
set guioptions -=m
|
||||
set guioptions -=T
|
||||
set guioptions -=r
|
||||
endif
|
||||
" }}}
|
||||
|
||||
" Key mappings {{{
|
||||
|
||||
"" fast escaping
|
||||
inoremap jk <ESC>
|
||||
|
||||
"" delete buffer (and keep split)
|
||||
noremap <leader>d :bp\|bd #<cr>
|
||||
|
||||
"" indent visual selected code without unselecting and going back to normal mode
|
||||
vnoremap > >gv
|
||||
vnoremap < <gv
|
||||
|
||||
"" Visually select the text that was last edited/pasted
|
||||
nnoremap gV `[v`]
|
||||
|
||||
"" session management (https://dockyard.com/blog/2018/06/01/simple-vim-session-management-part-1)
|
||||
let g:sessions_dir = '~/.vim/sessions'
|
||||
exec 'nnoremap <Leader>ss :mks! ' . g:sessions_dir . '/*.vim<C-D><BS><BS><BS><BS><BS>'
|
||||
exec 'nnoremap <Leader>sr :so ' . g:sessions_dir. '/*.vim<C-D><BS><BS><BS><BS><BS>'
|
||||
|
||||
"" fast editing of config
|
||||
nnoremap <silent> <leader>ev :e $MYVIMRC<cr>
|
||||
|
||||
"" cheatsheet
|
||||
nnoremap <silent> <leader>ec :e ~/.vim/cheatsheet.md<cr>
|
||||
|
||||
" debugging, use leader-DD to start, do a slow action, then leader-DQ to
|
||||
" finish. Your output will be in profile.log
|
||||
nnoremap <silent> <leader>DD :exe ":profile start profile.log"<cr>:exe ":profile func *"<cr>:exe ":profile file *"<cr>
|
||||
nnoremap <silent> <leader>DQ :exe ":profile pause"<cr>:noautocmd qall!<cr>
|
||||
"" toggle fold
|
||||
nnoremap <cr> za
|
||||
|
||||
"" abbreviations
|
||||
cnoreabbrev W! w!
|
||||
@@ -327,56 +299,7 @@ cnoreabbrev WQ wq
|
||||
cnoreabbrev W w
|
||||
cnoreabbrev Q q
|
||||
cnoreabbrev Qall qall
|
||||
|
||||
iab xnow <c-r>=strftime("%Y-%m-%d %H:%M")<cr>
|
||||
" }}}
|
||||
|
||||
" Autocmd Rules {{{
|
||||
|
||||
augroup general
|
||||
autocmd!
|
||||
"" do syntax highlight syncing from start
|
||||
autocmd BufEnter * :syntax sync fromstart
|
||||
augroup END
|
||||
|
||||
"" txt, mail, tex
|
||||
augroup text
|
||||
autocmd!
|
||||
autocmd FileType text,markdown,mail,tex set wrap wm=2 nocindent spell textwidth=79
|
||||
augroup END
|
||||
|
||||
augroup markdown
|
||||
autocmd!
|
||||
autocmd FileType markdown set wrap wm=2 nocindent spell textwidth=79
|
||||
augroup END
|
||||
|
||||
"" Web
|
||||
augroup web
|
||||
autocmd!
|
||||
autocmd FileType javascript map <leader>r <esc>:TernRename<CR>
|
||||
autocmd BufRead,BufNewFile *.template set filetype=html.mustache syntax=mustache
|
||||
autocmd BufRead,BufNewFile *.html set spell
|
||||
augroup END
|
||||
|
||||
"" Help
|
||||
augroup HelpInTabs
|
||||
autocmd!
|
||||
autocmd BufEnter *.txt call HelpInNewTab()
|
||||
augroup END
|
||||
|
||||
"Only apply to help files...
|
||||
function! HelpInNewTab ()
|
||||
if &buftype == 'help'
|
||||
"Convert the help window to a tab...
|
||||
execute "normal \<C-W>T"
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Reloading vim
|
||||
augroup VimReload
|
||||
autocmd!
|
||||
autocmd BufWritePost $MYVIMRC source $MYVIMRC | call LightlineReload()
|
||||
augroup END
|
||||
cnoreabbrev csfr csrf
|
||||
|
||||
" }}}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user