local map = vim.api.nvim_set_keymap -- split navigation map('n', '', '', '', '', 's=', '=' {}) -- common -- -- 'Y' yank to the end of the line -- noremap Y y$ -- -- kj to exit insert mode map('i', 'kj', '', {}) -- -- remove visual mode keybinding -- noremap Q -- -- search with very magic -- nnoremap / /\v -- nnoremap ? ?\v -- -- move line up and down -- nnoremap _ ddkP -- nnoremap + ddp -- -- long move up/down -- nnoremap ( 10k -- nnoremap ) 10j -- -- tag nagigation -- nnoremap ] -- nnoremap t -- -- common change until -- nnoremap cu ct_ -- nnoremap cp ct) -- nnoremap c, ct, -- -- -- buffer navigation -- nnoremap bn :bn -- nnoremap bp :bp -- nnoremap :b# -- nnoremap bl :ls -- -- nnoremap sc :source $MYVIMRC -- source vimrc -- -- -- c -- -- create c function body from prototype -- nnoremap gcf A{}j -- -- -- initialise a school header file -- function PutHeaderBoilerPlate() -- let l:filename = join(split(toupper(expand('%:t')), '\.'), '_') -- -- echom l:filename -- call append(12, '#ifndef ' . l:filename) -- call append(13, '# define ' . l:filename) -- call append(15, '#endif') -- endfunction -- nnoremap gch :Stdheader:call PutHeaderBoilerPlate() -- -- -- put semicolon at the end of line -- nnoremap ; mqA;`q -- -- -- cpp -- -- Put Coplien Form boilerplate class -- function PutCoplienFormFunc(name) -- let l:default_constructor = a:name . '();\n' -- let l:copy_constructor = a:name . '(const ' . a:name . '& other);\n' -- let l:copy_operator = a:name . '& operator=(const ' . a:name . '& other);\n' -- let l:destructor = '~' . a:name . '();\n' -- -- execute 'normal iclass ' . a:name . '\n{\npublic:\n' . l:default_constructor . l:copy_constructor . l:copy_operator . l:destructor . '\nprivate:\n};\n' -- execute 'normal <2{' -- endfunction -- -- Put Coplien Form boilerplate according to filename -- command! PutCoplienFormFile call PutCoplienFormFunc(split(expand('%:t'), '\.')[0]) -- command! -nargs=1 PutCoplienForm call PutCoplienFormFunc(--") -- -- -- quickfix window toggle -- nnoremap q :call QuickfixToggle() -- nnoremap n :cnext -- nnoremap p :cprevious -- let g:quickfix_is_open = 0 -- function! QuickfixToggle() -- if g:quickfix_is_open -- cclose -- let g:quickfix_is_open = 0 -- else -- copen -- let g:quickfix_is_open = 1 -- endif -- endfunction -- -- function! CountScopeLines() -- normal! mq -- execute '/^}' -- let l:end_brace = line('.') -- execute '?^{' -- let l:start_brace = line('.') -- normal! k -- let l:scope_len = l:end_brace - l:start_brace - 1 -- let l:scope_name = substitute(getline('.'), '\t', ' ', 'g') -- echom l:scope_len . ' lines in |' . l:scope_name . '|' -- normal! `q -- endfunction -- command! CountScopeLines call CountScopeLines() -- -- -- make -- nnoremap m :make all -- -- augroup vimrc -- autocmd! -- augroup END -- -- -- hook -- -- remove trailing white space on save -- autocmd vimrc BufWritePre * %s/\s\+$//e -- -- dirty hack to disable this feature on markdown (autocmd! wouldn't work) -- autocmd vimrc BufReadPre *.md autocmd! BufWritePre -- -- -- filetype -- -- real tab in c file for school projects -- let g:c_syntax_for_h = 1 -- filetype=c in header files instead of filetype=cpp -- -- augroup vimrc_files -- autocmd! -- -- school c -- autocmd Filetype c setlocal noexpandtab -- autocmd Filetype c setlocal comments=s:/**,m:**,e:*/,s:/*,m:**,e:*/ -- -- std::cout << ... << std::endl; shortcut -- autocmd Filetype cpp nnoremap cout istd::cout << << std::endl;2Fp :CtrlPTag -- -- -- fzf.vim -- nnoremap :GFiles --exclude-standard --others --cached -- nnoremap p :Tags -- -- -- quick-scope -- -- let g:qs_highlight_on_keys = ['f', 'F', 't', 'T'] -- -- -- man-plugin -- -- runtime! ftplugin/man.vim -- -- let g:ft_man_open_mode = 'vert' " open in a vertical split -- -- let g:ft_man_no_sect_fallback = 2 " if page specified fallback to page 2 (syscall pages) -- -- autocmd Filetype man unmap q: hmmmm?? -- -- -- eazy-align -- xmap ga (EasyAlign) -- nmap ga (EasyAlign) -- -- vnoremap c y:call system(--xclip -selection clipboard", getreg("\"")) -- nnoremap v :call setreg(--\"", system("xclip -selection clipboard -o"))p -- -- let g:c_formatter_42_format_on_save = 0 -- -- let g:gutentags_ctags_exclude = ['doc/*', 'docs/*', 'Makefile', '.mypy_cache', '.pytest_cache', '.tox', 'build/*', 'dist/*'] -- -- let g:gutentags_ctags_exclude_wildignore = 1 -- -- let g:goyo_height = 90 -- let g:goyo_width = 100 -- -- vim.opt.viminfo+=n$XDG_CACHE_HOME/vim/viminfo -- -- let g:python_highlight_all = 1 -- -- nnoremap l :SidewaysRight -- nnoremap h :SidewaysLeft -- nnoremap w :ArgWrap -- nnoremap ss :setlocal spell!