197 lines
6.6 KiB
VimL
197 lines
6.6 KiB
VimL
call plug#begin()
|
|
|
|
" NERDTree stuff
|
|
Plug 'kyazdani42/nvim-web-devicons' " optional, for file icons
|
|
Plug 'kyazdani42/nvim-tree.lua'
|
|
|
|
Plug 'vim-perl/vim-perl', { 'for': 'perl', 'do': 'make clean carp dancer highlight-all-pragmas moose test-more try-tiny' }
|
|
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
|
Plug 'preservim/nerdcommenter'
|
|
Plug 'mhinz/vim-startify'
|
|
Plug 'rmagatti/auto-session'
|
|
Plug 'tpope/vim-fugitive'
|
|
Plug 'Glench/Vim-Jinja2-Syntax'
|
|
Plug 'vmware-archive/salt-vim'
|
|
Plug 'vim-airline/vim-airline'
|
|
Plug 'vim-airline/vim-airline-themes'
|
|
Plug 'honza/vim-snippets'
|
|
Plug 'itchyny/vim-cursorword'
|
|
Plug 'sheerun/vim-polyglot'
|
|
|
|
" themes
|
|
Plug 'navarasu/onedark.nvim'
|
|
Plug 'ellisonleao/gruvbox.nvim'
|
|
Plug 'dracula/vim'
|
|
Plug 'vigoux/oak'
|
|
Plug 'NLKNguyen/papercolor-theme'
|
|
Plug 'bluz71/vim-moonfly-colors'
|
|
|
|
"Fuzzy search by Telescope and its dependencies:
|
|
Plug 'nvim-lua/plenary.nvim'
|
|
Plug 'nvim-telescope/telescope.nvim', { 'branch': '0.1.x' }
|
|
Plug 'BurntSushi/ripgrep'
|
|
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
|
|
|
|
call plug#end()
|
|
|
|
" load main lua file with additional configs
|
|
lua require("general")
|
|
|
|
"autocmd BufEnter *.sls :setlocal filetype=yaml
|
|
|
|
"inoremap: maps the key in insert mode
|
|
"nnoremap: maps the key in normal mode
|
|
"vnoremap: maps the key in visual mode
|
|
"<C> : represents Control key
|
|
"<A> : Alt key
|
|
|
|
"nerdtree bindings
|
|
nnoremap <leader>n :NvimTreeFocus<CR>
|
|
nnoremap <C-t> :NvimTreeToggle<CR>
|
|
nnoremap <C-e> :NvimTreeFindFile<CR>
|
|
|
|
" nerdcommenter custom bindings
|
|
nmap <C-_> <plug>NERDCommenterToggle
|
|
vmap <C-_> <plug>NERDCommenterToggle
|
|
|
|
" saving with Ctrl+s
|
|
nnoremap <silent><C-s> :update<cr>
|
|
inoremap <silent><C-s> <c-o>:update<cr>
|
|
vnoremap <silent><c-s> <c-c>:update<cr>gv " gv to preserve visual selection
|
|
" show uncommited git changes in current part of the code
|
|
nnoremap <C-g> :CocCommand git.chunkInfo<CR>
|
|
|
|
"theme configuration
|
|
syntax enable
|
|
set termguicolors
|
|
let g:onedark_config = {
|
|
\ 'style': 'darker',
|
|
\}
|
|
let g:PaperColor_Theme_Options = {
|
|
\ 'language': {
|
|
\ 'python': {
|
|
\ 'highlight_builtins' : 1
|
|
\ },
|
|
\ 'cpp': {
|
|
\ 'highlight_standard_library': 1
|
|
\ },
|
|
\ 'c': {
|
|
\ 'highlight_builtins' : 1
|
|
\ }
|
|
\ }
|
|
\ }
|
|
colorscheme moonfly
|
|
let g:airline_theme='dark'
|
|
|
|
set splitright
|
|
set splitbelow
|
|
|
|
|
|
" indent/unindent with tab/shift-tab
|
|
nmap <Tab> >>
|
|
nmap <S-tab> <<
|
|
imap <S-Tab> <Esc><<i
|
|
vmap <Tab> >gv
|
|
vmap <S-Tab> <gv
|
|
|
|
" Remap <C-f> and <C-b> for scroll float windows/popups.
|
|
if has('nvim-0.4.0') || has('patch-8.2.0750')
|
|
nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
|
|
nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
|
|
inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
|
|
inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
|
|
vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
|
|
vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
|
|
endif
|
|
|
|
|
|
" Find files using Telescope command-line sugar.
|
|
nnoremap <leader>ff <cmd>Telescope find_files<cr>
|
|
nnoremap <leader>fg <cmd>Telescope live_grep<cr>
|
|
nnoremap <leader>fb <cmd>Telescope buffers<cr>
|
|
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
|
|
|
|
" config for coc#pum#visible
|
|
|
|
" Some servers have issues with backup files, see #649.
|
|
set nobackup
|
|
set nowritebackup
|
|
|
|
" Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable
|
|
" delays and poor user experience.
|
|
set updatetime=300
|
|
|
|
" Always show the signcolumn, otherwise it would shift the text each time
|
|
" diagnostics appear/become resolved.
|
|
set signcolumn=yes
|
|
|
|
|
|
" Symbol renaming.
|
|
nmap <leader>rn <Plug>(coc-rename)
|
|
|
|
" Formatting selected code.
|
|
xmap <leader>ft <Plug>(coc-format-selected)
|
|
nmap <leader>ft <Plug>(coc-format-selected)
|
|
|
|
" GoTo code navigation.
|
|
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 tab for trigger completion with characters ahead and navigate.
|
|
" NOTE: There's always complete item selected by default, you may want to enable
|
|
" no select by `"suggest.noselect": true` in your configuration file.
|
|
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
|
|
" other plugin before putting this into your config.
|
|
inoremap <silent><expr> <TAB>
|
|
\ coc#pum#visible() ? coc#pum#next(1) :
|
|
\ CheckBackspace() ? "\<Tab>" :
|
|
\ coc#refresh()
|
|
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
|
|
|
|
" Make <CR> to accept selected completion item or notify coc.nvim to format
|
|
" <C-g>u breaks current undo, please make your own choice.
|
|
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
|
|
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
|
|
|
|
function! CheckBackspace() abort
|
|
let col = col('.') - 1
|
|
return !col || getline('.')[col - 1] =~# '\s'
|
|
endfunction
|
|
|
|
" Use <c-space> to trigger completion.
|
|
if has('nvim')
|
|
inoremap <silent><expr> <c-space> coc#refresh()
|
|
else
|
|
inoremap <silent><expr> <c-@> coc#refresh()
|
|
endif
|
|
|
|
" general configs
|
|
set modeline
|
|
let g:sls_use_jinja_syntax = 1
|
|
set encoding=UTF-8
|
|
set showmatch " show matching
|
|
set ignorecase " case insensitive
|
|
set mouse=v " middle-click paste with
|
|
set hlsearch " highlight search
|
|
set incsearch " incremental search
|
|
set tabstop=4 " number of columns occupied by a tab
|
|
set softtabstop=4 " see multiple spaces as tabstops so <BS> does the right thing
|
|
set expandtab " converts tabs to white space
|
|
set shiftwidth=4 " width for autoindents
|
|
set autoindent " indent a new line the same amount as the line just typed
|
|
set number " add line numbers
|
|
set relativenumber " add relative line numbers
|
|
set wildmode=longest,list " get bash-like tab completions
|
|
set cc=80 " set an 80 column border for good coding style
|
|
filetype plugin indent on "allow auto-indenting depending on file type
|
|
syntax on " syntax highlighting
|
|
"set mouse=a " enable mouse click
|
|
set clipboard+=unnamedplus " using system clipboard
|
|
filetype plugin on
|
|
set cursorline " highlight current cursorline
|
|
set ttyfast " Speed up scrolling in Vim
|
|
" set spell " enable spell check (may need to download language package)
|
|
set noswapfile " disable creating swap file
|
|
" set backupdir=~/.cache/vim " Directory to store backup files.
|