autocmd! bufwritepost .vimrc source % call plug#begin('~/.vim/plugged') Plug 'rust-lang/rust.vim' Plug 'nvim-lua/plenary.nvim' Plug 'lewis6991/gitsigns.nvim' "Plug 'vim-airline/vim-airline' Plug 'shadmansaleh/lualine.nvim' Plug 'junegunn/fzf', {'dir': '~/.fzf', 'do': './install --all'} | Plug 'junegunn/fzf.vim' " fuzzy finder Plug 'luochen1990/rainbow' " color parentheses Plug 'dense-analysis/ale' " checker syntax Plug 'posva/vim-vue' Plug 'terryma/vim-multiple-cursors' Plug 'tpope/vim-fugitive' " git extension for commit logs and etc. Plug 'editorconfig/editorconfig-vim' Plug 'ap/vim-css-color' Plug 'Yggdroot/indentLine' Plug 'jmcantrell/vim-virtualenv' Plug 'ryanoasis/vim-devicons' Plug 'google/vim-searchindex' Plug 'rktjmp/lush.nvim' Plug 'ellisonleao/gruvbox.nvim' " LSP Plug 'neovim/nvim-lspconfig' Plug 'nvim-lua/lsp_extensions.nvim' Plug 'nvim-lua/completion-nvim' call plug#end() " required syntax on set runtimepath+=~/.vim-plugins/LanguageClient-neovim set clipboard=unnamed set mouse=a " click with mouse set wildmenu set wildmode=longest,list:full set wildignore=*~,*.png,*.jpg,*.gif,Thumbs.db,*.min.js,*.swp,*.o,vendor set number " number of the current line set relativenumber " relative number, ..-2 -1 x 1 2, where x is current line set textwidth=80 set colorcolumn=80 set nowrap set fo-=t set tabstop=4 set shiftwidth=4 set expandtab " convert tabs in spaces set ai " auto indent set autoread set encoding=UTF-8 set history=1000 set wildignore+=*.pyc set hlsearch " highlight search set incsearch set nowritebackup set laststatus=2 set cursorline set list " spaces as characters set listchars=eol:⏎,tab:»·,trail:ˑ,nbsp:⎵ set foldmethod=indent set splitright " split on right side set lazyredraw set ttyfast " rust let g:rustfmt_autosave = 1 let g:rustfmt_emit_files = 1 let g:rustfmt_fail_silently = 0 let g:rust_clip_command = 'xclip -selection clipboard' let g:fzf_preview_window = 'right:70%' let g:ale_disable_lsp = 1 let g:ale_fix_on_save = 1 let g:ale_sign_error = '🛑' let g:ale_sign_warning = '⚠️' let g:ale_sign_info = '💭' let g:ale_echo_msg_error_str = 'E' let g:ale_echo_msg_warning_str = 'W' let g:ale_echo_msg_format = '[%severity%] [%linter%] %s' let g:ale_open_list = 1 let g:ale_keep_list_window_open = 0 let g:ale_list_window_size = 3 let b:ale_linters = { \ 'python': ['flake8', 'pylint', 'mypy'], \ 'cpp': ['clang'], \ 'c': ['clang'], \} let b:ale_fixers = { \ 'python': ['black', 'isort'], \ 'javascript': ['prettier'], \ 'typescript': ['prettier'], \ 'vue': ['prettier'], \ 'html': ['prettier'], \ 'cpp': ['clang-format'], \ 'c': ['clang-format'], \} if has('nvim') lua require('evil_lualine') lua require('git') colorscheme gruvbox else colorscheme miramare endif let g:indentLine_char = '¦' let g:vue_pre_processors = ['pug', 'scss'] let g:netrw_liststyle=1 filetype plugin indent on set nocompatible set showcmd " show commands at bottom augroup remember_folds autocmd! autocmd BufWinLeave * mkview autocmd BufWinEnter * silent! loadview augroup END " ------------ " MAPS " ----------- let mapleader = "," nnoremap j gj nnoremap k gk nnoremap tn :tabnew nnoremap :ve :Vexplore nnoremap :rt :RainbowToggle " buffers nnoremap ]b :bnext nnoremap [b :bprev nnoremap ,b :Buffers " tabs nnoremap ]t :tabn nnoremap [t :tabp nnoremap ,t :tabs " only one window nnoremap ,o :only " mapping fzf commands " ff = open files explorer " co = open commits explorer " gf = open git ls-files " gs = open git status nnoremap ff :Files . nnoremap co :Commits nnoremap :gf :GFiles nnoremap :gs :GFiles? nnoremap :gd :Git diff nnoremap pa :set paste nnoremap npa :set nopaste nmap cr :!command cargo r nmap :EditorConfigReload " Use `[g` and `]g` to navigate diagnostics nmap [g (coc-diagnostic-prev) nmap ]g (coc-diagnostic-next) " GoTo code navigation. nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) " LSP configuration lua << EOF local nvim_lsp = require('lspconfig') -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer local on_attach = function(client, bufnr) local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end -- Enable completion triggered by buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') -- Mappings. local opts = { noremap=true, silent=true } -- See `:help vim.lsp.*` for documentation on any of the below functions buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) buf_set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) -- Forward to other plugins require'completion'.on_attach(client) end -- Use a loop to conveniently call 'setup' on multiple servers and -- map buffer local keybindings when the language server attaches local servers = { 'pyright', 'rust_analyzer' } for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup { on_attach = on_attach, flags = { debounce_text_changes = 150, } } end EOF if &diff "Get from remote nnoremap dr :diffgetRE "Get from base nnoremap db :diffgetBA "Get from local nnoremap dl :diffgetLO endif