.config/nvim/init.vim (view raw)
1" la-ninpre init.vim "
2
3" use space as leader key
4let mapleader=" "
5
6" enter new era :D
7set nocompatible
8set encoding=utf-8
9
10" enable 24-bit colors
11set termguicolors
12
13" enable hybrid numbers
14set nu rnu
15
16" mouse is bad, but sometimes is useful
17set mouse=a
18
19" this is for better file searching
20set path+=**
21set wildmenu
22
23" more intuitive splits
24set splitbelow splitright
25
26" don't highlight everything when search and move cursor to the searched word
27set nohlsearch incsearch
28
29" expand tabs to spaces
30set tabstop=4 softtabstop=4
31set shiftwidth=4
32set expandtab
33
34" use autoindents
35set smartindent
36
37" replace default behaviour with undotree plugin
38set noswapfile nobackup
39set undodir=~/.local/share/nvim/undodir
40set undofile
41
42" actually, i don't remember what is this...
43set hidden
44
45" fix update time
46set updatetime=50
47
48" remind yourself about 80 column rule
49set colorcolumn=81
50
51" disable coloured column when editing plain text files and git commit msgs
52autocmd BufRead,BufNewFile *.md,*.txt,*/.git/COMMIT_EDITMSG set cc=
53" enable insert mode when entering git commit message
54autocmd VimEnter */.git/COMMIT_EDITMSG startinsert
55
56" this could be used to show unprintable characters
57set listchars=tab:>-,eol:$,space:•,trail:~
58
59" vim plug plugins
60call plug#begin('~/.local/share/nvim/plugged')
61Plug 'morhetz/gruvbox'
62Plug 'junegunn/goyo.vim'
63Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
64Plug 'junegunn/fzf.vim'
65Plug 'mattn/emmet-vim'
66Plug 'ap/vim-css-color'
67Plug 'preservim/nerdcommenter'
68Plug 'tpope/vim-surround'
69Plug 'mbbill/undotree'
70call plug#end()
71filetype plugin indent on
72
73" colorscheme tweaks
74let g:gruvbox_contrast_dark = 'hard'
75if exists('+termguicolors')
76 let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
77 let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
78endif
79let g:gruvbox_invert_selection='0'
80colorscheme gruvbox
81set background=dark
82
83"
84" mappings
85"
86
87" easier navigation in splits
88map <C-H> <C-W><C-H>
89map <C-L> <C-W><C-L>
90map <C-J> <C-W><C-J>
91map <C-K> <C-W><C-K>
92
93" replace all occurencies of the word under the cursor
94nnoremap <leader>su :%s/\<<C-r><C-w>\>/
95
96" show or hide undo tree
97nnoremap <leader>u :UndotreeToggle<CR>
98
99" open helptags
100nnoremap <leader>h :Helptags<CR>
101
102" open file with fzf
103nnoremap <leader>o :Files<CR>
104
105" easy source init.vim
106nnoremap <leader><CR> :so ~/.config/nvim/init.vim<CR>
107" easy open init.vim
108nnoremap <leader>vc :e ~/.config/nvim/init.vim<CR>
109
110" show or hide unprintable characters
111nnoremap <leader>sl :set list<CR>
112nnoremap <leader>sn :set nolist<CR>
113nnoremap <leader>go :Goyo<CR>
114
115" actually magick!
116" this moves higlighted block up or down
117vnoremap J :m '>+1<CR>gv=gv
118vnoremap K :m '<-2<CR>gv=gv
119
120" alias for capturing group in command mode (for use with regexps)
121cmap ;( \(\)<Left><Left>
122
123" highlight yanked text
124" i consider this as transition from visually selecting stuff and yanking it
125" to just yank text object without selecting it
126augroup highlight_yank
127 autocmd!
128 autocmd TextYankPost * silent! lua require'vim.highlight'.on_yank({timeout = 40})
129augroup END