Created
April 22, 2020 18:04
-
-
Save bouyagas/7941faa68517ed279bac552fe3133810 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
scriptencoding utf-5 | |
source ~/.config/nvim/plugins.vim | |
" ============================================================================ " | |
" === EDITING OPTIONS === " | |
" ============================================================================ " | |
" Remap leader key to space | |
let mapleader = ' ' | |
" Disable line numbers | |
set nonumber | |
" Don't show last command | |
set noshowcmd | |
" Yank and paste with the system clipboard | |
set clipboard=unnamed | |
" Hides buffers instead of closing them | |
set hidden | |
" === TAB/Space settings === " | |
" Insert spaces when TAB is pressed. | |
set expandtab | |
" Change number of spaces that a <Tab> counts for during editing ops | |
set softtabstop=2 | |
" Indentation amount for < and > commands. | |
set shiftwidth=2 | |
" do not wrap long lines by default | |
set nowrap | |
" Don't highlight current cursor line | |
set nocursorline | |
" Disable line/column number in status line | |
" Shows up in preview window when airline is disabled if not | |
set noruler | |
" Only one line for command line | |
set cmdheight=1 | |
" === Completion Settings === " | |
" Don't give completion messages like 'match 1 of 2' | |
" or 'The only match' | |
set shortmess+=c | |
set backspace=indent,eol,start | |
" Spell check | |
set spell | |
" ============================================================================ " | |
" === PLUGIN SETUP === " | |
" ============================================================================ " | |
" Wrap in try/catch to avoid errors on initial install before plugin is available | |
try | |
" === Denite setup ===" | |
" Use ripgrep for searching current directory for files | |
" By default, ripgrep will respect rules in .gitignore | |
" --files: Print each file that would be searched (but don't search) | |
" --glob: Include or exclues files for searching that match the given glob | |
" (aka ignore .git files) | |
" | |
call denite#custom#var('file/rec', 'command', ['rg', '--files', '--glob', '!.git']) | |
" Use ripgrep in place of "grep" | |
call denite#custom#var('grep', 'command', ['rg']) | |
" Custom options for ripgrep | |
" --vimgrep: Show results with every match on it's own line | |
" --hidden: Search hidden directories and files | |
" --heading: Show the file name above clusters of matches from each file | |
" --S: Search case insensitively if the pattern is all lowercase | |
call denite#custom#var('grep', 'default_opts', ['--hidden', '--vimgrep', '--heading', '-S']) | |
" Recommended defaults for ripgrep via Denite docs | |
call denite#custom#var('grep', 'recursive_opts', []) | |
call denite#custom#var('grep', 'pattern_opt', ['--regexp']) | |
call denite#custom#var('grep', 'separator', ['--']) | |
call denite#custom#var('grep', 'final_opts', []) | |
" Remove date from buffer list | |
call denite#custom#var('buffer', 'date_format', '') | |
" Custom options for Denite | |
" auto_resize - Auto resize the Denite window height automatically. | |
" prompt - Customize denite prompt | |
" direction - Specify Denite window direction as directly below current pane | |
" winminheight - Specify min height for Denite window | |
" highlight_mode_insert - Specify h1-CursorLine in insert mode | |
" prompt_highlight - Specify color of prompt | |
" highlight_matched_char - Matched characters highlight | |
" highlight_matched_range - matched range highlight | |
let s:denite_options = {'default' : { | |
\ 'split': 'floating', | |
\ 'start_filter': 1, | |
\ 'auto_resize': 1, | |
\ 'source_names': 'short', | |
\ 'prompt': 'λ ', | |
\ 'highlight_matched_char': 'QuickFixLine', | |
\ 'highlight_matched_range': 'Visual', | |
\ 'highlight_window_background': 'Visual', | |
\ 'highlight_filter_background': 'DiffAdd', | |
\ 'winrow': 1, | |
\ 'vertical_preview': 1 | |
\ }} | |
" Loop through denite options and enable them | |
function! s:profile(opts) abort | |
for l:fname in keys(a:opts) | |
for l:dopt in keys(a:opts[l:fname]) | |
call denite#custom#option(l:fname, l:dopt, a:opts[l:fname][l:dopt]) | |
endfor | |
endfor | |
endfunction | |
call s:profile(s:denite_options) | |
catch | |
echo 'Denite not installed. It should work after running :PlugInstall' | |
endtry | |
" === Coc.nvim === " | |
" use <tab> for trigger completion and navigate to next complete item | |
function! s:check_back_space() abort | |
let col = col('.') - 1 | |
return !col || getline('.')[col - 1] =~ '\s' | |
endfunction | |
inoremap <silent><expr> <TAB> | |
\ pumvisible() ? "\<C-n>" : | |
\ <SID>check_back_space() ? "\<TAB>" : | |
\ coc#refresh() | |
"Close preview window when completion is done. | |
autocmd! CompleteDone * if pumvisible() == 0 | pclose | endif | |
" === NeoSnippet === " | |
" Map <C-k> as shortcut to activate snippet if available | |
imap <C-k> <Plug>(neosnippet_expand_or_jump) | |
smap <C-k> <Plug>(neosnippet_expand_or_jump) | |
xmap <C-k> <Plug>(neosnippet_expand_target) | |
" Load custom snippets from snippets folder | |
let g:neosnippet#snippets_directory='~/.config/nvim/snippets' | |
" Hide conceal markers | |
let g:neosnippet#enable_conceal_markers = 0 | |
" === NERDTree === " | |
" Show hidden files/directories | |
let g:NERDTreeShowHidden = 1 | |
" Remove bookmarks and help text from NERDTree | |
let g:NERDTreeMinimalUI = 1 | |
" Custom icons for expandable/expanded directories | |
let g:NERDTreeDirArrowExpandable = '⬏' | |
let g:NERDTreeDirArrowCollapsible = '⬎' | |
" Open the folder on the right window | |
let g:NERDTreeWinPos = "right" | |
" Hide certain files and directories from NERDTree | |
let g:NERDTreeIgnore = ['^\.DS_Store$', '^tags$', '\.git$[[dir]]', '\.idea$[[dir]]', '\.sass-cache$'] | |
" Wrap in try/catch to avoid errors on initial install before plugin is available | |
try | |
" === Vim airline ==== " | |
" Enable extensions | |
let g:airline_extensions = ['branch', 'hunks', 'coc'] | |
" Update section z to just have line number | |
let g:airline_section_z = airline#section#create(['linenr']) | |
" Do not draw separators for empty sections (only for the active window) > | |
let g:airline_skip_empty_sections = 1 | |
" Smartly uniquify buffers names with similar filename, suppressing common parts of paths. | |
let g:airline#extensions#tabline#formatter = 'unique_tail' | |
" Custom setup that removes filetype/whitespace from default vim airline bar | |
let g:airline#extensions#default#layout = [['a', 'b', 'c'], ['x', 'z', 'warning', 'error']] | |
" Customize vim airline per filetype | |
" 'nerdtree' - Hide nerdtree status line | |
" 'list' - Only show file type plus current line number out of total | |
let g:airline_filetype_overrides = { | |
\ 'nerdtree': [ get(g:, 'NERDTreeStatusline', ''), '' ], | |
\ 'list': [ '%y', '%l/%L'], | |
\ } | |
" Enable powerline fonts | |
let g:airline_powerline_fonts = 1 | |
" Enable caching of syntax highlighting groups | |
let g:airline_highlighting_cache = 1 | |
" Define custom airline symbols | |
if !exists('g:airline_symbols') | |
let g:airline_symbols = {} | |
endif | |
" Don't show git changes to current file in airline | |
let g:airline#extensions#hunks#enabled=0 | |
catch | |
echo 'Airline not installed. It should work after running :PlugInstall' | |
endtry | |
" === echodoc === " | |
" Enable echodoc on startup | |
let g:echodoc#enable_at_startup = 1 | |
" === vim-javascript === " | |
" Enable syntax highlighting for JSDoc | |
let g:javascript_plugin_jsdoc = 1 | |
" === vim-jsx === " | |
" Highlight jsx syntax even in non .jsx files | |
let g:jsx_ext_required = 0 | |
" === javascript-libraries-syntax === " | |
let g:used_javascript_libs = 'underscore,requirejs,chai,jquery' | |
" === Signify === " | |
let g:signify_sign_delete = '-' | |
" My aditional plugin setup | |
" NERD Commenter | |
" Add spaces after comment delimiters by default | |
let g:NERDSpaceDelims = 1 | |
" Use compact syntax for prettified multi-line comments | |
let g:NERDCompactSexyComs = 1 | |
" Align line-wise comment delimiters flush left instead of following code indentation | |
let g:NERDDefaultAlign = 'left' | |
" Set a language to use its alternate delimiters by default | |
let g:NERDAltDelims_java = 1 | |
" Add your own custom formats or override the defaults | |
let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } } | |
" Allow commenting and inverting empty lines (useful when commenting a region) | |
let g:NERDCommentEmptyLines = 1 | |
" Enable trimming of trailing whitespace when uncommenting | |
let g:NERDTrimTrailingWhitespace = 1 | |
" Enable NERDCommenterToggle to check all selected lins is commented or not | |
let g:NERDToggleCheckAllLines = 1 | |
" Enable just for html/css | |
let g:user_emmet_install_global = 0 | |
autocmd FileType html,css EmmetInstall | |
" Rust/Racer | |
augroup Racer | |
autocmd! | |
autocmd FileType rust nmap <buffer> gd <Plug>(rust-def) | |
autocmd FileType rust nmap <buffer> gs <Plug>(rust-def-split) | |
autocmd FileType rust nmap <buffer> gx <Plug>(rust-def-vertical) | |
autocmd FileType rust nmap <buffer> gt <Plug>(rust-def-tab) | |
autocmd FileType rust nmap <buffer> <leader>gd <Plug>(rust-doc) | |
augroup END | |
" racer + rust | |
" https://github.com/rust-lang/rust.vim/issues/192 | |
let g:rustfmt_autosave = 1 | |
let g:rustfmt_emit_files = 1 | |
let g:rustfmt_fail_silently = 0 | |
let g:rust_clip_command = 'pbcopy' | |
let g:racer_cmd = '/Users/mohamedbgassama/.cargo/bin/racer' | |
let g:racer_experimental_completer = 1 | |
let g:racer_insert_paren = 1 | |
"let g:racer_experimental_completer = 1 | |
let $RUST_SRC_PATH = systemlist('rustc --print sysroot')[0] . '/lib/rustlib/src/rust/src' | |
" Changing Wiki Syntax | |
"VimWiki currently ships with 3 syntaxes: VimWiki (default), Markdown (markdown), and MediaWiki (media) | |
"If you would prefer to use either Markdown or MediaWiki syntaxes, | |
let g:vimwiki_list = [{'path': '~/vimwiki/', | |
\ 'syntax': 'markdown', 'ext': '.md'}] | |
" If you have other plugins that you want to disable/enable, | |
" or if you want to change the default settings of Goyo window, | |
" you can set up custom routines to be triggered on GoyoEnter and GoyoLeave events. | |
function! s:goyo_enter() | |
if executable('tmux') || executable('nvim') && strlen($TMUX) | |
silent !tmux set status off | |
silent !tmux list-panes -F '\#F' | grep -q Z || tmux resize-pane -Z | |
endif | |
set noshowmode | |
set noshowcmd | |
set scrolloff=999 | |
Limelight | |
" ... | |
endfunction | |
function! s:goyo_leave() | |
if executable('tmux') || executable('nvim') && strlen($TMUX) | |
silent !tmux set status on | |
silent !tmux list-panes -F '\#F' | grep -q Z && tmux resize-pane -Z | |
endif | |
set showmode | |
set showcmd | |
set scrolloff=5 | |
Limelight! | |
" ... | |
endfunction | |
autocmd! user goyoenter nested call <sid>goyo_enter() | |
autocmd! user goyoleave nested call <sid>goyo_leave() | |
" limelight.vim | |
" color name (:help cterm-colors) or ansi code | |
let g:limelight_conceal_ctermfg = 'gray' | |
let g:limelight_conceal_ctermfg = 240 | |
" color name (:help gui-colors) or rgb color | |
let g:limelight_conceal_guifg = 'darkgray' | |
let g:limelight_conceal_guifg = '#777777' | |
" default: 0.5 | |
let g:limelight_default_coefficient = 0.7 | |
" number of preceding/following paragraphs to include (default: 0) | |
let g:limelight_paragraph_span = 1 | |
" beginning/end of paragraph | |
" when there's no empty line between the paragraphs | |
" and each paragraph starts with indentation | |
let g:limelight_bop = '^\s' | |
let g:limelight_eop = '\ze\n^\s' | |
" highlighting priority (default: 10) | |
" Set it to -1 not to overrule hlsearch | |
let g:limelight_priority = -1 | |
" UltiSnips | |
" Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe. | |
let g:UltiSnipsExpandTrigger="<c-l>" | |
let g:UltiSnipsJumpForwardTrigger="<c-b>" | |
let g:UltiSnipsJumpBackwardTrigger="<c-z>" | |
" If you want :UltiSnipsEdit to split your window. | |
let g:UltiSnipsEditSplit="vertical" | |
" Jupyter notebooks setup | |
autocmd Filetype ipynb nmap <silent><leader>B :VimpyterInsertPythonBlock<CR> | |
autocmd Filetype ipynb nmap <silent><leader>J :VimpyterStartJupyter<CR> | |
autocmd Filetype ipynb nmap <silent><leader>N :VimpyterStartNteract<CR> | |
" Nord theme setup | |
let g:nord_cursor_line_number_background = 1 | |
let g:nord_uniform_status_lines = 1 | |
let g:nord_bold_vertical_split_line = 1 | |
let g:nord_uniform_diff_background = 1 | |
let g:nord_italic_comments = 1 | |
" ============================================================================ " | |
" === UI === " | |
" ============================================================================ " | |
" Enable true color support | |
set termguicolors | |
" Vim airline theme | |
let g:airline_theme='lightline' | |
" Change vertical split character to be a space (essentially hide it) | |
set fillchars+=vert:. | |
" Set preview window to appear at bottom | |
set splitbelow | |
" Don't dispay mode in command line (airilne already shows it) | |
set noshowmode | |
" Set floating window to be slightly transparent | |
set winbl=10 | |
" ============================================================================ " | |
" === CUSTOM COLORSCHEME CHANGES === " | |
" ============================================================================ " | |
" | |
" Add custom highlights in method that is executed every time a colorscheme is sourced | |
" See https://gist.github.com/romainl/379904f91fa40533175dfaec4c833f2f for details | |
function! TrailingSpaceHighlights() abort | |
" Hightlight trailing whitespace | |
highlight Trail ctermbg=red guibg=red | |
call matchadd('Trail', '\s\+$', 100) | |
endfunction | |
function! s:custom_jarvis_colors() | |
" coc.nvim color changes | |
hi link CocErrorSign WarningMsg | |
hi link CocWarningSign Number | |
hi link CocInfoSign Type | |
" Make background transparent for many things | |
hi Normal ctermbg=NONE guibg=NONE | |
hi NonText ctermbg=NONE guibg=NONE | |
hi LineNr ctermfg=NONE guibg=NONE | |
hi SignColumn ctermfg=NONE guibg=NONE | |
hi StatusLine guifg=#16252b guibg=#6699CC | |
hi StatusLineNC guifg=#16252b guibg=#16252b | |
" Try to hide vertical spit and end of buffer symbol | |
hi VertSplit gui=NONE guifg=#17252c guibg=#17252c | |
hi EndOfBuffer ctermbg=NONE ctermfg=NONE guibg=#17252c guifg=#17252c | |
" Customize NERDTree directory | |
hi NERDTreeCWD guifg=#99c794 | |
" Make background color transparent for git changes | |
hi SignifySignAdd guibg=NONE | |
hi SignifySignDelete guibg=NONE | |
hi SignifySignChange guibg=NONE | |
" Highlight git change signs | |
hi SignifySignAdd guifg=#99c794 | |
hi SignifySignDelete guifg=#ec5f67 | |
hi SignifySignChange guifg=#c594c5 | |
endfunction | |
autocmd! ColorScheme * call TrailingSpaceHighlights() | |
autocmd! ColorScheme OceanicNext call s:custom_jarvis_colors() | |
" Call method on window enter | |
augroup WindowManagement | |
autocmd! | |
autocmd WinEnter * call Handle_Win_Enter() | |
augroup END | |
" Change highlight group of preview window when open | |
function! Handle_Win_Enter() | |
if &previewwindow | |
setlocal winhighlight=Normal:MarkdownError | |
endif | |
endfunction | |
" Editor theme | |
set background=dark | |
try | |
" colorscheme OceanicNext | |
" Nord Vim | |
colorscheme nord | |
catch | |
colorscheme slate | |
endtry | |
" ============================================================================ " | |
" === KEY MAPPINGS === " | |
" ============================================================================ " | |
" === Denite shorcuts === " | |
" ; - Browser currently open buffers | |
" <leader>t - Browse list of files in current directory | |
" <leader>g - Search current directory for occurences of given term and close window if no results | |
" <leader>j - Search current directory for occurences of word under cursor | |
nmap <leader>, :Denite buffer<CR> | |
nmap <leader>t :DeniteProjectDir file/rec<CR> | |
nnoremap <leader>g :<C-u>Denite grep:. -no-empty<CR> | |
nnoremap <leader>j :<C-u>DeniteCursorWord grep:.<CR> | |
" Define mappings while in 'filter' mode | |
" <C-o> - Switch to normal mode inside of search results | |
" <Esc> - Exit denite window in any mode | |
" <CR> - Open currently selected file in any mode | |
" <C-t> - Open currently selected file in a new tab | |
" <C-v> - Open currently selected file a vertical split | |
" <C-h> - Open currently selected file in a horizontal split | |
autocmd FileType denite-filter call s:denite_filter_my_settings() | |
function! s:denite_filter_my_settings() abort | |
imap <silent><buffer> <C-o> | |
\ <Plug>(denite_filter_quit) | |
inoremap <silent><buffer><expr> <Esc> | |
\ denite#do_map('quit') | |
nnoremap <silent><buffer><expr> <Esc> | |
\ denite#do_map('quit') | |
inoremap <silent><buffer><expr> <CR> | |
\ denite#do_map('do_action') | |
inoremap <silent><buffer><expr> <C-t> | |
\ denite#do_map('do_action', 'tabopen') | |
inoremap <silent><buffer><expr> <C-v> | |
\ denite#do_map('do_action', 'vsplit') | |
inoremap <silent><buffer><expr> <C-h> | |
\ denite#do_map('do_action', 'split') | |
endfunction | |
" Define mappings while in denite window | |
" <CR> - Opens currently selected file | |
" q or <Esc> - Quit Denite window | |
" d - Delete currenly selected file | |
" p - Preview currently selected file | |
" <C-o> or i - Switch to insert mode inside of filter prompt | |
" <C-t> - Open currently selected file in a new tab | |
" <C-v> - Open currently selected file a vertical split | |
" <C-h> - Open currently selected file in a horizontal split | |
autocmd FileType denite call s:denite_my_settings() | |
function! s:denite_my_settings() abort | |
nnoremap <silent><buffer><expr> <CR> | |
\ denite#do_map('do_action') | |
nnoremap <silent><buffer><expr> q | |
\ denite#do_map('quit') | |
nnoremap <silent><buffer><expr> <Esc> | |
\ denite#do_map('quit') | |
nnoremap <silent><buffer><expr> d | |
\ denite#do_map('do_action', 'delete') | |
nnoremap <silent><buffer><expr> p | |
\ denite#do_map('do_action', 'preview') | |
nnoremap <silent><buffer><expr> i | |
\ denite#do_map('open_filter_buffer') | |
nnoremap <silent><buffer><expr> <C-o> | |
\ denite#do_map('open_filter_buffer') | |
nnoremap <silent><buffer><expr> <C-t> | |
\ denite#do_map('do_action', 'tabopen') | |
nnoremap <silent><buffer><expr> <C-v> | |
\ denite#do_map('do_action', 'vsplit') | |
nnoremap <silent><buffer><expr> <C-h> | |
\ denite#do_map('do_action', 'split') | |
endfunction | |
" === Nerdtree shorcuts === " | |
" <leader>n - Toggle NERDTree on/off | |
" <leader>f - Opens current file location in NERDTree | |
nmap <leader>n :NERDTreeToggle<CR> | |
nmap <leader>f :NERDTreeFind<CR> | |
" <Space> - PageDown | |
" - - PageUp | |
noremap , <PageDown> | |
noremap - <PageUp> | |
" Quick window switching | |
nmap <C-h> <C-w>h | |
nmap <C-j> <C-w>j | |
nmap <C-k> <C-w>k | |
nmap <C-l> <C-w>l | |
" === coc.nvim === " | |
" <leader>dd - Jump to definition of current symbol | |
" <leader>dr - Jump to references of current symbol | |
" <leader>dj - Jump to implementation of current symbol | |
" <leader>ds - Fuzzy search current project symbols | |
nmap <silent> <leader>dd <Plug>(coc-definition) | |
nmap <silent> <leader>dr <Plug>(coc-references) | |
nmap <silent> <leader>dj <Plug>(coc-implementation) | |
nnoremap <silent> <leader>ds :<C-u>CocList -I -N --top symbols<CR> | |
" === vim-better-whitespace === " | |
" <leader>y - Automatically remove trailing whitespace | |
nmap <leader>y :StripWhitespace<CR> | |
" === Search shorcuts === " | |
" <leader>h - Find and replace | |
" <leader>/ - Claer highlighted search terms while preserving history | |
map <leader>c :%s///<left><left> | |
nmap <silent> <leader>/ :nohlsearch<CR> | |
" === Easy-motion shortcuts ===" | |
" <leader>w - Easy-motion highlights first word letters bi-directionally | |
map <leader>w <Plug>(easymotion-bd-w) | |
" Allows you to save files you opened without write permissions via sudo | |
cmap w!! w !sudo tee % | |
" === vim-jsdoc shortcuts ===" | |
" Generate jsdoc for function under cursor | |
nmap <leader>z :JsDoc<CR> | |
" Delete current visual selection and dump in black hole buffer before pasting | |
" Used when you want to paste over something without it getting copied to | |
" Vim's default buffer | |
vnoremap <leader>p "_dP | |
" My key mappings | |
" jk as Esc | |
inoremap jk <Esc> | |
vnoremap jk <Esc> | |
cnoremap jk <Esc> | |
" Quick-save | |
nmap <leader>s :w!<CR> | |
" Quick-save and quit | |
nmap <leader>q :wq!<CR> " Quit | |
nmap <leader>Q :q!<CR> | |
" No arrow keys --- force yourself to use the home row | |
nnoremap <up> <nop> | |
nnoremap <down> <nop> | |
noremap <up> <nop> | |
inoremap <down> <nop> | |
inoremap <left> <nop> | |
inoremap <right> <nop> | |
" Move by line | |
nnoremap j gj | |
nnoremap k gk | |
" <leader><leader> toggles between buffers | |
nnoremap <leader><leader> <c-^> | |
" Search results centered please | |
nnoremap <silent> n nzz | |
nnoremap <silent> N Nzz | |
nnoremap <silent> * *zz | |
nnoremap <silent> # #zz | |
nnoremap <silent> g* g*zz | |
" Very magic by default | |
nnoremap ? ?\v | |
nnoremap / /\v | |
cnoremap %s/ %sm/ | |
" Create Blank Newlines and stay in Normal mode | |
nnoremap <silent> zj o<Esc>k | |
nnoremap <silent> zk O<Esc>j | |
map <leader><Enter> o<ESC> | |
map <S-Enter> O<ESC> | |
" Insert space in a normal mode | |
nnoremap ss i<Space><ESC> | |
" Redo key binding | |
nnoremap r <C-r> | |
" Close the current buffer | |
map <leader>bd :Bclose<CR>:tabclose<CR>gT | |
" Close all the buffers | |
map <leader>ba :bufdo bd<CR> | |
" Move to the Next and previous buffer | |
map <leader>l :bnext<CR> | |
map <leader>h :bprevious<CR> | |
" Shortcuts using <leader> | |
map <leader>sn ]s | |
map <leader>sp [s | |
map <leader>sa zg | |
" Hit Enter to go to end of file. | |
nnoremap <Enter> G | |
" Hit Enter to go to end of file. | |
nnoremap <BS> gg | |
" Stop that stupid window from popping up | |
map q: :q | |
" Goyo Key mappings Distraction-free writing in Vim. | |
map <C-g> :Goyo<CR> | |
" Zooming vim window | |
nnoremap <leader>o :only<CR> | |
" ============================================================================ " | |
" === MISC. === " | |
" ============================================================================ " | |
" Automaticaly close nvim if NERDTree is only thing left open | |
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif | |
" === Search === " | |
" ignore case when searching | |
set ignorecase | |
" if the search string has an upper case letter in it, the search will be case sensitive | |
set smartcase | |
" Automatically re-read file if a change was detected outside of vim | |
set autoread | |
" Enable spellcheck for markdown files | |
autocmd BufRead,BufNewFile *.md setlocal spell | |
" Set backups | |
if has('persistent_undo') | |
set undofile | |
set undolevels=3000 | |
set undoreload=10000 | |
endif | |
set backupdir=~/.local/share/nvim/backup " Don't put backups in current dir | |
set backup | |
set noswapfile | |
" Reload icons after init source | |
if exists('g:loaded_webdevicons') | |
call webdevicons#refresh() | |
endif | |
" ============================================================================= | |
" # Autocommands | |
" ============================================================================= | |
" Jump to last edit position on opening file | |
if has("autocmd") | |
" https://stackoverflow.com/questions/31449496/vim-ignore-specifc-file-in-autocommand | |
au BufReadPost * if expand('%:p') !~# '\m/\.git/' && line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif | |
endif | |
" Follow Rust code style rules | |
au Filetype rust source ~/.config/nvim/scripts/spacetab.vim | |
au Filetype rust set colorcolumn=100 | |
" Help filetype detection | |
autocmd BufRead *.md set filetype=markdown | |
" Script plugins | |
autocmd Filetype html,xml,xsl,php source ~/.config/nvim/scripts/closetag.vim | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment