Files
DotfilesOld/vim/.vimrc
2021-10-30 00:14:06 +02:00

306 lines
5.8 KiB
VimL

" vim: set fenc=utf-8 ft=vim fdm=marker fmr={{{,}}}:
" author: Thomas Ruoff
" Basics {{{
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=2000
set modeline
set nobackup
set noswapfile
set mouse=a
set mousehide
set wildmode=list:longest,full
set wildignore+=*.swp,*.bak,*.jpg,*.gif,*.png,*.git,
set wildignore+=**/node_modules/**
set splitright
set splitbelow
set shortmess+=c
" set ignorecase
set infercase
set smartcase
set ignorecase
set hlsearch
set gdefault
set number
" Always show the signcolumn, otherwise it would shift the text each time
" diagnostics appear/become resolved.
if has("patch-8.1.1564")
" Recently vim can merge signcolumn and number column into one
set signcolumn=number
else
set signcolumn=yes
endif
set report=0
set showcmd
set showmatch
set spellcapcheck=
set complete+=kspell
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
" sort is affecting only: directories on the top, files below
let g:netrw_sort_sequence = '[\/]$,*'
" }}}
" Plugins {{{
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 'andymass/vim-matchup'
Plug 'machakann/vim-highlightedyank'
Plug 'editorconfig/editorconfig-vim'
let g:EditorConfig_exclude_patterns = ['fugitive://.*', 'scp://.*']
Plug 'mbbill/undotree'
" TODO snippets https://www.lunarvim.org/plugins/02-default-plugins.html#snippets
Plug 'SirVer/ultisnips'
" Plug 'pangloss/vim-javascript'
" Plug 'MaxMEllon/vim-jsx-pretty'
" Plug 'sheerun/vim-polyglot'
" let g:polyglot_disabled = ['javascript', 'jsx', 'latex']
" Plug 'lervag/vimtex', { 'for': 'tex' }
" let g:vimtex_view_method = 'zathura'
Plug 'wellle/targets.vim'
Plug 'janko-m/vim-test'
let test#strategy = "neovim"
" 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'
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 {{{
set exrc
set secure
" }}}
" Text Formatting {{{
set list
if v:version > 800
set breakindent
endif
set showbreak=
set textwidth=0
set colorcolumn=+1
set nojoinspaces
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
" }}}
" Folding {{{
set foldmethod=indent
set foldlevelstart=1
set nofoldenable
" }}}
" Diff settings {{{
set fillchars+=diff:⣿
set diffopt=vertical
set diffopt+=filler
set diffopt+=iwhite
" }}}
" {{{ Undo
set undodir=$VIM_DATA_PATH/undos
set undofile
set undolevels=1000
set undoreload=10000
" }}}
" Visual Setting {{{
"
set cursorline
set background=dark
colorscheme base16-gruvbox-dark-medium
set number
" }}}
" Key mappings {{{
"" fast escaping
inoremap jk <ESC>
"" toggle fold
nnoremap <cr> za
"" abbreviations
cnoreabbrev W! w!
cnoreabbrev Q! q!
cnoreabbrev Qall! qall!
cnoreabbrev Wq wq
cnoreabbrev Wa wa
cnoreabbrev wQ wq
cnoreabbrev WQ wq
cnoreabbrev W w
cnoreabbrev Q q
cnoreabbrev Qall qall
cnoreabbrev csfr csrf
" }}}