Archived
1
0
This repository has been archived on 2021-03-24. You can view files and clone it, but cannot push or open issues or pull requests.
hexagons/.config/nvim/init.vim

435 lines
12 KiB
VimL
Raw Normal View History

2017-12-28 13:49:45 +00:00
" Important stuff {{{
let g:python_host_prog = '/usr/bin/python2'
let g:python3_host_prog = '/usr/bin/python3'
let g:tagbar_ctags_bin = '/usr/bin/ctags'
" Plug updates itself automatically
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
" }}}
" Install any new/recently added plugins {{{
autocmd VimEnter *
\ if len(filter(values(g:plugs), '!isdirectory(v:val.dir)'))
\| PlugInstall --sync | q
\| endif
" These are the ones i use, managed with Plug
call plug#begin('~/.config/nvim/plugged')
Plug 'junegunn/vim-plug'
Plug 'flazz/vim-colorschemes'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'hecal3/vim-leader-guide'
Plug 'christoomey/vim-tmux-navigator'
Plug 'Shougo/vinarise.vim'
Plug 'lervag/vimtex', { 'for': 'tex' }
Plug 'xuhdev/vim-latex-live-preview', { 'for': 'tex' }
" Initialize plugin system
call plug#end()
" Show vim-plug above instead of to the left
let g:plug_window = 'rightbelow topleft new'
" }}}
" Basic config stuff {{{
" Search down into subfolders
" Provides tab-completion for all file-related tasks
" - :b lets you autocomplete any open buffer
set path+=**
" Options
if (has("termguicolors"))
set termguicolors
endif
set shortmess+=I
set nocompatible
filetype plugin on
filetype indent on
syntax on
let mapleader="\<SPACE>"
set ttimeout
set timeoutlen=300
set ttimeoutlen=100
set cursorline
set hidden
set lazyredraw
set number
set title
set titleold="Terminal"
set titlestring=%F
set showmatch
set noswapfile
set nobackup
set nowritebackup
set showcmd
set ruler
set visualbell
set slm=mouse
set tabstop=4
set softtabstop=4
set shiftwidth=4
set fcl=all
set smartindent
set ttyfast
set noshowmode
set laststatus=2
set splitright
set splitbelow
set undofile
set undolevels=1000
set undoreload=10000
set undodir=$HOME/.config/nvim/undo
set hlsearch
set incsearch
set ignorecase
set smartcase
set complete-=i
set smarttab
set display+=lastline
set termguicolors
set nostartofline
set foldenable
set foldlevelstart=10
set foldnestmax=10
set foldmethod=indent
set modeline
set scrolloff=7
" Display all matching files when we tab complete
set wildmenu
set wildignore+=.git,.hg,.svn
set wildignore+=*.aux,*.out,*.toc
set wildignore+=*.o,*.obj,*.exe,*.dll,*.manifest,*.rbc,*.class
set wildignore+=*.ai,*.bmp,*.gif,*.ico,*.jpg,*.jpeg,*.png,*.psd,*.webp
set wildignore+=*.avi,*.divx,*.mp4,*.webm,*.mov,*.m2ts,*.mkv,*.vob,*.mpg,*.mpeg
set wildignore+=*.mp3,*.oga,*.ogg,*.wav,*.flac
set wildignore+=*.eot,*.otf,*.ttf,*.woff
set wildignore+=*.doc,*.pdf,*.cbr,*.cbz
set wildignore+=*.zip,*.tar.gz,*.tar.bz2,*.rar,*.tar.xz,*.kgb
set wildignore+=*.swp,.lock,.DS_Store,._*
set wildmode=longest:list,full
set formatoptions+=w
function! MyLineNumber()
return substitute(line('.'), '\d\@<=\(\(\d\{3\}\)\+\)$', ',&', 'g'). ' | '.
\ substitute(line('$'), '\d\@<=\(\(\d\{3\}\)\+\)$', ',&', 'g')
endfunction
" }}}
" Tweaks for browsing {{{
" - :edit a folder to open a file browser
" - <CR>/v/t to open in an h-split/v-split/tab
let g:netrw_banner=0 " disable annoying banner
let g:netrw_browse_split=4 " open in prior window
let g:netrw_altv=1 " open splits to the right
let g:netrw_liststyle=3 " tree view
let g:netrw_list_hide=netrw_gitignore#Hide()
let g:netrw_list_hide.=',\(^\|\s\s\)\zs\.\S\+'
let g:netrw_winsize=25
" }}}
" Airline {{{
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
let g:airline_powerline_fonts = 1
let g:airline_theme='deus'
let g:airline_detect_paste = 1
let g:airline_skip_empty_sections = 1
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#show_buffers = 1
let g:airline#extensions#tabline#buffer_min_count = 0
let g:airline#extensions#tabline#show_tabs = 1
let g:airline#extensions#tabline#tab_min_count = 0
let g:airline#extensions#tabline#exclude_preview = 1
let g:airline#extensions#tabline#tab_nr_type = 1
let g:airline#extensions#tabline#show_tab_nr = 1
let g:airline#extensions#tabline#show_tab_type = 0
let g:airline#extensions#tabline#buffer_idx_mode = 0
let g:airline#extensions#tabline#fnamecollapse = 0
let g:airline#extensions#tabline#show_close_button = 0
let g:airline#extensions#tabline#enabled = 1
2017-10-03 23:43:27 +00:00
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'
2017-12-28 13:49:45 +00:00
let g:airline_left_sep = ' '
let g:airline_left_alt_sep = '|'
let g:airline_right_sep = ' '
let g:airline_right_alt_sep = '|'
let g:airline_symbols.branch = ''
let g:airline_symbols.readonly = ''
let g:airline_symbols.linenr = ''
2017-10-03 23:43:27 +00:00
function! Render_Only_File(...)
let builder = a:1
let context = a:2
call builder.add_section('file', '!! %F')
return 0 " the default: draw the rest of the statusline
return -1 " do not modify the statusline
return 1 " modify the statusline with the current contents of the builder
endfunction
call airline#add_inactive_statusline_func('Render_Only_File')
2017-12-28 13:49:45 +00:00
" }}}
" NerdTree {{{
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
let NERDTreeNaturalSort = 1
let NERDTreeShowHidden=1
let NERDTreeWinPos=1
let NERDTreeRespectWildIgnore = 1
let NERDTreeMinimalUI=1
let NERDTreeDirArrows = 1
let NERDTreeCascadeSingleChildDir=1
let NERDTreeCascadeOpenSingleChildDir=1
let NERDTreeQuitOnOpen = 1
let NERDTreeHijackNetrw = 0
let NERDTreeAutoCenter = 1
" }}}
" Tmux navigator {{{
let g:tmux_navigator_no_mappings = 1
let g:tmux_navigator_save_on_switch = 1
nnoremap <silent> M-left :TmuxNavigateLeft<cr>
nnoremap <silent> M-Down :TmuxNavigateDown<cr>
nnoremap <silent> M-Up :TmuxNavigateUp<cr>
nnoremap <silent> M-Right :TmuxNavigateRight<cr>
nnoremap <silent> M-Tab :TmuxNavigatePrevious<cr>
" }}}
" Leader guide {{{
let g:lmap = get(g:, 'lmap', {})
let g:lmap.a = { 'name': 'applications' }
let g:lmap.f = { 'name': 'files' }
let g:lmap.t = { 'name': 'terminal' }
let g:lmap.w = { 'name': 'windows' }
let g:lmap.b = { 'name': 'buffers' }
let s:value_lookup = {
\ '<SID>nerdtree-toggle': 'NERDTree',
\ '<SID>live-preview': 'LaTeX Live Preview',
\ '<SID>quit': 'exit nvim',
\ '<SID>open-vimrc': 'open init.vim',
\ '<SID>source': 'source file',
\ '<SID>save': 'save file',
\ '<SID>open-term': 'open terminal',
\ '<SID>term-down': 'move down',
\ '<SID>term-up': 'move up',
\ '<SID>term-right': 'move right',
\ '<SID>term-left': 'move left',
\ '<SID>split': 'split down',
\ '<SID>vert-split': 'split right',
\ '<SID>new': 'new window down',
\ '<SID>vert-new': 'new window right',
\ '<SID>close': 'close window',
\ '<SID>move-down': 'move down',
\ '<SID>move-up': 'move up',
\ '<SID>move-right': 'move right',
\ '<SID>move-left': 'move left',
\ '<SID>prev': 'last used window',
\ '<SID>next-buffer': 'next buffer',
\ '<SID>prev-buffer': 'previous buffer',
\ '<SID>list-buffer': 'list current buffers',
\ '<SID>copy-buffer': 'copy buffer content',
\ }
function! s:my_displayfunc()
let g:leaderGuide#displayname =
\get(s:value_lookup, g:leaderGuide#displayname,
\g:leaderGuide#displayname)
endfunction
let g:leaderGuide_displayfunc = [function("s:my_displayfunc")]
" Applications
nnoremap <SID>nerdtree-toggle :NERDTreeToggle<CR>
nmap <leader>at <SID>nerdtree-toggle
nnoremap <SID>live-preview :LLPStartPreview<CR>
nmap <leader>ap <SID>live-preview
nnoremap <SID>quit :q<CR>
nmap <leader>aq <SID>quit
" Files
nnoremap <SID>open-vimrc :e $MYVIMRC<CR>
nmap <leader>fi <SID>open-vimrc
nnoremap <SID>source :so %<CR>
nmap <leader>fr <SID>source
nnoremap <SID>save :w!<CR>
nmap <leader>fs <SID>save
" Terminal
nnoremap <SID>open-term :terminal<CR>
nmap <leader>tt <SID>open-term
tnoremap <SID>term-down <C-\><C-n><C-w>j
nmap <leader>td <SID>term-down
tnoremap <SID>term-up <C-\><C-n><C-w>k
nmap <leader>tu <SID>term-up
tnoremap <SID>term-right <C-\><C-n><C-w>l
nmap <leader>tr <SID>term-right
tnoremap <SID>term-left <C-\><C-n><C-w>h
nmap <leader>tl <SID>term-left
" Windows
nnoremap <SID>split :split<CR>
nmap <leader>ws <SID>split
nnoremap <SID>vert-split :vsplit<CR>
nmap <leader>wv <SID>vert-split
nnoremap <SID>new :new<CR>
nmap <leader>wn <SID>new
nnoremap <SID>vert-new :vnew<CR>
nmap <leader>wv <SID>vert-new
nnoremap <SID>close <C-W><C-Q>
nmap <leader>wq <SID>close
nnoremap <SID>move-down <C-W><C-J>
nmap <leader>wd <SID>move-down
nnoremap <SID>move-up <C-W><C-K>
nmap <leader>wu <SID>move-up
nnoremap <SID>move-right <C-W><C-L>
nmap <leader>wr <SID>move-right
nnoremap <SID>move-left <C-W><C-H>
nmap <leader>wl <SID>move-left
nnoremap <SID>prev <C-W><C-P>
nmap <leader>wp <SID>prev
" Buffers
nnoremap <SID>next-buffer :bnext!<CR>
nmap <leader>bn <SID>next-buffer
nnoremap <SID>prev-buffer :bprevious!<CR>
nmap <leader>bp <SID>prev-buffer
nnoremap <SID>list-buffer :ls<CR>
nmap <leader>bl <SID>list-buffer
vnoremap <SID>copy-buffer "*y
nmap <leader>bc <SID>copy-buffer
call leaderGuide#register_prefix_descriptions("<Space>", "g:lmap")
nnoremap <silent> <leader> :<c-u>LeaderGuide '<Space>'<CR>
vnoremap <silent> <leader> :<c-u>LeaderGuideVisual '<Space>'<CR>
let g:leaderGuide_max_size = 5
let g:leaderGuide_submode_mappings = { '<C-F>': 'page_down', '<C-B>': 'page_up'}
" }}}
" LaTeX {{{
let g:livepreview_previewer = 'mupdf'
let g:vimtex_view_method = 'zathura'
" }}}
" Mappings {{{
map <F5> :!w<Enter>:!pdflatex <C-r>%<Enter>
map <F6> :setlocal spell! spelllang=es_ar<CR>
map <F7> :setlocal spell! spelllang=en_us<CR>
" What about the Q
nnoremap Q <nop>
map q <nop>
" Move vertically by visual line
nnoremap j gj
nnoremap k gk
" New tab
nnoremap <C-t> :tabnew<CR>
" Buffer navigation using tab and shift+tab
nnoremap <Tab> :bnext!<CR>
nnoremap <S-Tab> :bprev!<CR><Paste>
" Switch between windows with Alt
nnoremap <M-j> <C-W><C-J>
nnoremap <M-k> <C-W><C-K>
nnoremap <M-l> <C-W><C-L>
nnoremap <M-h> <C-W><C-H>
" Use <Esc> to escape terminal insert mode
tnoremap <Esc> <C-\><C-n>
" Make terminal split moving behave like normal neovim
tnoremap <M-h> <C-\><C-n><C-w>h
tnoremap <M-j> <C-\><C-n><C-w>j
tnoremap <M-k> <C-\><C-n><C-w>k
tnoremap <M-l> <C-\><C-n><C-w>l
" }}}
" Random stuff {{{
" Auto remove all trailing whitespace on :w
autocmd BufWritePre * :%s/\s\+$//e
" Autosave files when focus is lost
:au FocusLost * :wa
" Wrap text in terminal
:au TermOpen * setlocal wrap
" Source init.vim as it's saved
autocmd bufwritepost init.vim source $MYVIMRC
" Automatic syntax highlighting for files
au BufRead,BufNewFile *.txt set filetype=markdown
au BufRead,BufNewFile *.conf set filetype=dosini
au BufRead,BufNewFile *.bash* set filetype=sh
au BufRead,BufNewFile todo* set filetype=todo
" Make calcurse notes markdown compatible:
autocmd BufRead,BufNewFile /tmp/calcurse* set filetype=markdown
autocmd BufRead,BufNewFile ~/.calcurse/notes/* set filetype=markdown
"}}}
" Status line without any plugins {{{
" function! InsertStatuslineColor(mode)
" if a:mode == 'i'
" hi statusline guibg=#95b9de guifg=#171717
" elseif a:mode == 'r'
" hi statusline guibg=Cyan guifg=#171717
" else
" hi statusline guibg=Red guifg=#171717
" endif
" endfunction
" au InsertEnter * call InsertStatuslineColor(v:insertmode)
" au InsertLeave * hi statusline guibg=White guifg=#171717
" hi statusline guibg=White guifg=#171717
" Formats the statusline
" set statusline=\%n\
" set statusline+=%f\
" set statusline+=%H\
" set statusline+=%M\
" set statusline+=%R\
" set statusline+=%W\
" set statusline+=\ %=
" set statusline+=%{&ff}\ %{''.(&fenc!=''?&fenc:enc).''}\
" set statusline+=%l:%c\
" }}}
colorscheme luna
2017-12-28 13:49:45 +00:00
" vim:foldmethod=marker:foldlevel=0